首页 理论教育 IntelX86处理器的Cache

IntelX86处理器的Cache

时间:2023-11-03 理论教育 版权反馈
【摘要】:随后,In-tel将8 KB Cache成功地放到了80486处理器核心之中,使X86系列处理器第一次有了片上Cache。后来Intel也接受了写回策略,在Pentium及以后的处理器的Cache设计中使用了写回策略。Pentium处理器是第一款将指令与数据分别缓存的X86系列处理器。Pentium 4及其后代处理器产品也延续了这种架构,并且在Cache的规模上进行了进一步的提升。

IntelX86处理器的Cache

在80386处理器之前的X86系列处理器中是找不到Cache的影子的,原因很简单,那时的处理器速度太慢,以DRAM组成的主存储器完全可以跟上处理器的速度,甚至比处理器的速度更快,自然不需要Cache来填补处理器与主存储器之间的速度差距了。Cache最早出现在X86系列微处理器中是在基于80386处理器的微机系统的主板上,在主板上安装32 KB~64 KB的SRAM作为处理器和主存储器之间的缓冲,用以提升系统的整体性能。随后,In-tel将8 KB Cache成功地放到了80486处理器核心之中,使X86系列处理器第一次有了片上Cache(On-chip Cache)。但是由于当时的技术限制,片上Cache的容量通常不太大,所以还需要在主板上设置二级Cache。二级Cache一直到1999年的Pentium Ⅲ处理器才真正地被成功地集成到处理器芯片之中,而这距离推出80486处理器的1989年已经过去了整整十年。

80486处理器的Cache采用的是Write through写策略,第一次在X86处理器中使用Write back写策略的是当时Intel主要的竞争对手之一的Cyrix公司。在Cyrix的486处理器中第一次出现了写回策略,打破了Intel一直使用的写通过策略一家独大的局面,减小了对存储器带宽的占用,提高了存储系统的效率。后来Intel也接受了写回策略,在Pentium及以后的处理器的Cache设计中使用了写回策略。

Pentium处理器是第一款将指令与数据分别缓存的X86系列处理器。在Pentium处理器中,Intel内置了8 KB的指令Cache(I-Cache)和8 KB的数据Cache(D-Cache),分别用来缓冲处理器所需要的指令和数据。分离的I-Cache和D-Cache可以同时被访问,减少Cache访问上的冲突,提高了处理器的性能。同时,在Pentium的Cache控制电路里面第一次内置了MESI协议,为确保多处理器环境下的数据一致性提供了保证。

在内置一级Cache的同时,为了进一步提高存储系统的性能,支持Pentium处理器的主板经常在主板上由SRAM组成一定规模的板上二级Cache,借以弥补Pentium处理器片上Cache规模较小的遗憾。

在Pentium Pro和其后的Pentium Ⅱ处理器中,Intel开始了将二级Cache(L2-Cache)内置到处理器芯片中的努力。但是由于微电子技术本身的限制,将L2-Cache和处理器核心放在一个芯片内部的努力还是失败了,于是Intel另辟蹊径,将L2-Cache和处理器核心分别放在两个芯片中,并将这两个芯片封装在同一个封装里面,借此提高Cache的访问速度,使得Cache能够与处理器核心同步运行,从而获得更好的存储系统性能。但是Pentium Pro的这种设计也使Intel吃到了苦头。一方面这种封装形式带来了芯片封装成本上的增加,另一方面两个不同功能的芯片只有放在一起联结后才能最后测试其性能的完整性,而当其中有一个有缺陷时,两个芯片都被报废,废品率也更高。最终,Pentium Pro由于其高价格和并不出色的16位处理性能而未能得到Intel所期待的成功。(www.xing528.com)

在随后的Pentium Ⅱ芯片中,Intel不再将L2 Cache和处理器核心封装在一个封装之内,而是将其与处理器核心通过专用64位高速缓存总线相联,与其他元器件共同组装在同一基板上,形成所谓的“单边接触盒”,即当时所称的Slot 1封装。通过基板连接处理器核心和二级Cache既能够保证二级Cache的性能,又能够避免Pentium Pro那种单一封装带来的高成本,在一定程度上调和了L2 Cache的高性能和高封装成本之间的矛盾,为Pentium Ⅱ在市场上的成功打下了基础。

二级Cache真正被集成到处理器芯片上是在1999年Intel推出的Pentium Ⅲ处理器之中。由于Pentium Ⅱ的单边式Slot 1封装在封装成本上实在难以控制,所以Pentium Ⅲ处理器很快就又回到了传统的socket封装,不断发展的半导体芯片工艺也使得二级Cache被真正地和处理器核心集成到了同一个芯片之中,从而为Pentium Ⅲ处理器带来了更好的存储系统性能。Pentium 4及其后代处理器产品也延续了这种架构,并且在Cache的规模上进行了进一步的提升。同时,Pentium 4处理器还用踪迹Cache(Trace Cache)代替了传统的I-Cache,借以提高I-Cache的命中率和降低I-Cache的访问时延。在现代的多核处理器中,更是针对每一个处理器核心设置一组一级Cache(包括I-Cache和D-Cache),再由多个核心共享一个规模比较大(一般在1 MB以上,甚至更多)的二级Cache,在需要的时候还可以在主板上增加规模更大的三级Cache,从而更好地解决了处理器和主存储器之间速度不匹配的问题。

自从Cache出现在80386处理器的主板上开始的短短十几年里,伴随着主频几百倍的提高,X86系列处理器的Cache从80486的8 KB片上Cache发展到了现在的超过几百KB一级Cache加上数MB的二级Cache。同时,诸如数据预取指令、内存流优化指令等用来控制Cache的指令也被加入到Intel Pentium Ⅲ、AMD K6-2及其后多款处理器的指令集之中,提供了一种通过软件对Cache的使用进行控制的手段,进而提高Cache的命中率,提高存储系统的整体性能。这些举措在主存储器的速度没有革命性提升的情况下有力地保证了存储系统对处理器的指令与数据的供应,保证了整个系统性能的提高。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈