制约计算机存储器设计的问题归纳起来有三个:容量多大?速度多快?价格多贵?
容量多大的问题似乎没有限制,不管容量多大,总要开发出应用来使用它.速度多快的问题在某种意义上更容易回答.为了获得多大的性能,存储器速度必须能够跟上处理器的速度,即当处理器执行指令时,我们不想使它停下来等待指令或操作数.最后一个问题也必须考虑,对于实用的系统,存储器的价格相对于其他部件必须是合理的.
正如人们所预料的,在存储器的3个关键特性即价格、容量和存取时间之间需要进行权衡.任何时候,都有各种技术可用来实现存储系统.在这个技术领域中,存在如下关系:
存取时间越短,每位的价格就越高;
容量越大,每位的价格就越低;
容量越大,存取时间就越长;
很显然,摆在设计者面前的难题是,不仅需要大容量,而且需要低的每位价格,因此希望采用提供大容量存储器的技术.但为了满足性能需求,设计者又必须使用昂贵、容量较小和存取时间快的存储器.
解决这个难题的方法是采用存储器层次结构,而不只是依赖单一的存储部件或技术.下图给出了一个通用存储层次结构,图中从上到下,出现下列情况:
每位价格降低;
容量增大;
存取时间增大;
处理器访问存储器的频度降低;
因此,容量较小、价格较贵、速度较快的存储器可作为容量较大、速度较慢的存储器的补充.这种组织方式成功的关键是最后一项,即处理器访问存储器的频度降低.
条件四有效的基础是访问局部性原理.在程序执行的过程中,处理器访问存储器中的指令和数据倾向于成簇(块).程序通常通常包含很多迭代循环和子程序,一旦进入了一个循环和子程序,则需重复访问一小组指令.同样,对于表和数组的操作,包含存取一簇簇的数据.在一长段时间内,使用的簇是变动的;而在一小段时间内,处理器主要访问存储器中的固定簇.
因此,通过分层结构组织数据,有可能使存取较低层的百分比低于存取高层存储器的百分比.考虑刚才给出的二级存储器的例子,让第二级的存储器包含所有程序的指令和数据,当前的簇临时放在第一级,第一级的某些簇会不时地交换回第二级,为将要进入第一级的簇腾出空间.然而,平均来说,多数的访问是对第一级中的指令和数据.
这个原则可以应用到二级以上的存储器.考察图所示的分层结构,速度较快、容量较小且价格最贵的存储器是处理器的内部寄存器.下跳两层是主存储器,它是计算机中主要的内存系统.主存储器常用速度更快,容量更小的高速缓存来扩充.
(很多体系结构或组成原理相关的书籍上都有的.回答比较粗糙,建议你参考William Stalling的计算机组织与体系结构,这本书上有对该问题的完整的论述.)