存储层次(Memory hierarchy)、寄存器(Register)、缓存(Cache)

随着CPU速度的不断提高和软件规模的不断扩大,人们当然希望存储器能同时满足速度快、容量大、价格低的要求。但实际上这一点很难办到,解决这一问题的较好方法是设计一个快慢搭配、具有层次结构的存储系统。

存储层次(Memory hierarchy)

下图显示了新型微机系统中的存储器组织。它呈金字塔形结构,越往上存储器件的速度越快,CPU的访问频度越高;同时,每位存储容量的价格也越高,系统的拥有量也越小。图中可以看到,CPU中的寄存器位于该塔的顶端,它有最快的存取速度,但数量极为有限;向下依次是CPU内的Cache(高速缓冲存储器,不一定只有两级)、主存储器(RAM)、外部辅助存储器和远程二级存储器;位于塔底的存储设备,容量最大,每位存储容量的价格最低,但速度可能也是较慢或最慢的。在这种存储器分层结构中,上面一层的存储器作为下一层存储器的高速缓存。需要注意的是这里只强调存储层次,而不是说在一个实际计算机系统中每一个层次都必须存在。

寄存器(register)

register位于整个存储层次的最顶端,是与CPU运算器直接交互的层级,作为CPU运算的第一级缓存所以速度得跟的上CPU的速度。

缓存(cache)

cache不是必须的

在早期的计算机及现在的一些微处理器中,CPU是直接访问主存。但随着CPU速度的不断提高,大容量DDR主存的使用,CPU直接读写主存所要等待的时间越来越不可接受,高速缓存cache就应运而生,设计cache的目的就是协调两个硬件的速度差异。

cache 通常采用SRAM

相比DDR主存,SRAM(Static RAM)不需动态刷新,速度快;但结构电路相对复杂,容量较小。

CPU内部的cache多选用哈佛结构

指令cache与数据cache分开,效率高。

多级缓存(Multi-level caches)

介于处理器和内存二者之间的缓存有两个天然冲突的性能指标:速度和容积。如果只向处理器看齐而追求速度,则必然要靠减少容积来换取访问时间;如果只向内存看齐而追求容积,则必然以增加处理器的访问时间为牺牲。这种矛盾促使人们考虑使用多级缓存。

cache读写策略(Read/Write Cache Strategy)

CPU在请求某个数据时,现在cache里找,如果找到,也称为命中(cache hit),则直接从cache返回数据;如果未命中(cache miss),相关请求数据则需从下一级传递上来,需要注意的是每次以行(cache line)为单位更新。如果cache full,会采用一定的置换策略去replace旧的条目。
    为了和下级存储(如内存)保持数据一致性,就必须把数据更新适时传播下去。这种传播通过回写来完成。一般有两种回写策略:写回(Write back)和写通(Write through)。Write back是指写入cache的数据不立即更新到下级存储,只是标记为dirty,当所在的cache line需要被置换时,才写入下级存储,这样可以减少向下写的次数,效率高;write through 是写到cache的同时写入下级存储,结构简单,易于实现。
References

1. CPU缓存

Copyright (C) 2016 archiexie@cnblogs. All Rights Reserved.

相关推荐