上期我们讲了现代计算机体系结构通过处理器(cpu/gpu)和内存的交互来执行计算程序,处理输入数据,并输出结果。实际上,由于cpu是高速器件,而内存访问速度往往受限(如图所示,cpu和内存的性能差距从上个世纪80年代开始,不断拉大),为解决速度匹配的问题,在cpu和内存之间设置了高速缓冲存储器cache。
而且cache往往分几个层级,与内存以及其它外部存储器共同构成计算机系统的存储器层次结构(memory hierarchy),如下图所示,使得整个系统在性能,成本和制造工艺达到平衡。
我们可以看到,各个存储层次在访问时间上存在数量级别的差异,访问速度越快,单位制造成本越高,容量越小。在这里,我们并不打算讨论cache具体设计和实现,只是希望针对cache及其命中率对性能的影响有一个直观的认识。为了简化讨论问题的复杂性,我们这里做如下假设。
整个流水线分为5个阶段,分别为《1》取指、《2》译码、《3》运算执行、《4》访存读写 (可选)、《5》写回结果至寄存器。
这里只考虑一级cache,而且指令、数据共享l1 cache。cache命中的情况下,每个阶段都是1个时钟(cycle),而cache不命中的情况,阶段《1》,《5》各耗时100个时钟(cycles)。
访存指令占所有指令1/3。下面我们来分别计算3种情况下的cpi。
= 100 cycles + 3 * (1 cycle) + ((1 cycle * 2/3) + (100 cycles * 1/3))
= 137 cycles.
= (1 cycle * 0.9 + 100 cycles * (1 - 0.9)) + (3 cycles) + ((1 cycle * (2/3 + 0.9/3)) + (100cycles * (1 - 0.9) * 1/3))
= 18.2 cycles.
= (1 cycle * (0.99) + 100 cycles * (1 - 0.99)) + (3 cycles) + ((1 cycle * (2/3 + 0.99/3)) + (100 cycles * (1 - 0.99) * 1/3))
= 6.32 cycles.
cache完全缺失。
cpi = 《1》阶段的时钟+《2, 3, 5》阶段的时钟+《4》阶段的时钟
cache命中率达到90%。
cpi = 《1》阶段的时钟+《2, 3, 5》阶段的时钟+《4》阶段的时钟
cache命中率达到99%
cpi = 《1》阶段的时钟+《2, 3, 5》阶段的时钟+《4》阶段的时钟另外在上期文章里我们也提到同样32b数据的访问,dram的耗能是sram的百倍(640pj vs 5pj)。完全可见正确配置cache对高能效高性能计算的重要作用。
值得一提的是,由于cpu和gpu设计面向的差异,他们的memory hierarchy存在明显的区别,一个典型的对比如下图,可以看到gpu的memeory hierarchy设计的时候更注意带宽或者说throughput,而相比之下对latency就没有cpu重视, gpu cache容量也相对比较小。
那我们不禁要问,gpu的latency指标这么糟糕,按照我们先前的计算,cache不命中的后果是不是很严重?不过不要担心,cpu的cache不命中可能会导致叫停流水线的严重后果,而对gpu,只要计算任务量足够,它的硬件调度器(hardware scheduler)能够自动在不同的任务间无缝切换,来掩藏特定任务访问memory带来的延迟。关于gpu的latency hiding,值得大书特书,我们以后会详细讨论。
大陆芯片制造技术在三个领域取得突破
直流电表在UPS计量系统中的应用
安谋科技与Rokid达成战略合作协议,共同开发元宇宙终端芯片和生态
黑客列出8万脸书用户个人信息待售 脸书再陷争议
阿里巴巴云存储容量单位宣布开始正式公测
浅谈GPU: 衡量计算效能的正确姿势(3)
三大运营商正式公布了2019年8月份运营数据
浅谈LoRa与LoRaWAN 分析两者区别
苹果发布macOS Catalina开发者预览版,新添Sidecar功能
小米推出首款无线充电宝容量为10000mAh支持10W无线快充
中芯国际股价暴涨,H股一度暴涨16%!
使用运算放大器制作恒流源
薛晨阳“用芯感知”世界 入党20载不忘肩上使命
裸机开发遇到的问题
应对高速PCB设计的时序问题
基于高性能DSP芯片ADSP-BF561实现非编码矩阵键盘的设计
华为不再做超低端机:下半年将砍掉80%机型
自动化设备(非标)的基本调试技巧
iQOO 3配置再曝光,55W超快闪充进一步提升续航 告别电量焦虑
如何利用碳化硅打造下一代固态断路器