Pentium II & Pentium III的流水线 (4)

Caches of the Pentium II &I III Processors

Pentium II & III处理器的片上高速缓存子系统由2个16K字节的4路组相联高速缓存组成,缓存行长度是32字节,使用了回写机制和一个伪最近最少使用替换算法来更新缓存行。数据缓存由8个在4字节边界上交错的bank构成。

二级缓存有128K字节或者更大,不在片上,但是位于同一个封装中。二级缓存的延迟在4到10个周期范围之间。二级缓存未命中会通过总线发起到存储器芯片的总线事务操作。这样的事务操作至少需要11个额外的总线周期,还得假设DRAM页命中。如果DRAM页未中,则还需要3个额外的总线周期。每个总线周期等于若干个处理器时钟周期,例如,对于100MHz的总线和400MHz的处理器,1个总线周期4个处理器时钟周期。总线的速度和二级缓存的大小依赖于处理器设计实现,需要检查系统设计文档来了解二级缓存的准确特征。

Store Buffers

Pentium II & III处理器12个存储缓冲区。这样处理器可以将对存储器的写操作临时存储一个缓冲区中。利用存储缓冲区可以提升处理器性能,因为处理器可以继续执行后续指令,而不用等待写存储器或高速缓存操作完成。它也可以将写操作延迟,从而更加高效的利用存储器访问总线周期。

存储在存储缓冲区中的写操作总是按照程序设计顺序写入到内存中。Pentium II & III处理器自身有排序机制保证程序设计中的存储器读写顺序与实际执行过程中的读写顺序的一致性。有了这种机制,读操作可以投机执行;按任何顺序,读操作可以越过缓冲的写操作;但是写操作永远按照程序设计顺序执行。

写命中不能越过写未中,因此关键的循环操作可以通过调度写存储器操作来提升性能。当发现可能会出现写未中时,将不超过12条的写指令调度成一组,在继续调度写指令之前安排一些其他的指令。

猜你喜欢

转载自blog.csdn.net/qq_43401808/article/details/85316567