存储器有3个主要性能指标:速度、容量和每位价格(简称位价).
一般来说,速度越高,位价就越高;容量越大,位价就越低,而且容量越大,速度必越低.人们都想追求大容量、高速度、低位价的存储器,但这是很难达到的.图7.2形象地反映了上述三者的关系.图中由上至下,位价越来越低,速度越来越慢,容量越来越大,CPU访问的频度也越来越少.
最上层的寄存器通常都制作在CPU芯片内.寄存器中的数直接在CPU内部参与运算,CPU内可以有十几个、几十个寄存器,它们的速度最快,位价最高,容量最小.
主存用来存放正在运行或将要运行的程序和数据,其速度与CPU速度差距较大,为了使它们之间速度更好的匹配,在主存与CPU之间插入了一种比主存速度更快、容量更小的高速缓冲存储器Cache,显然其位价要高于主存.
以上三类存储器都是由速度不同、位价不等的半导体存储材料制成的,它们都设在主机内.现代计算机将部分Cache(片内Cache)也制作在CPU内.
磁盘、磁带属于辅助存储器,其容量比主存大得多,大都用来存放暂时未用到的程序和数据文件.
CPU不能直接访问辅存
,辅存只能与主存交换信息,因此辅存的速度可以比主存慢很多.
实际上,存储系统层次结构主要体现在缓存-主存和主存-辅存这两个存储层次上,如图7.3所示.显然,CPU和缓存、主存都能直接交换信息;缓存能直接和CPU、主存交换信息;主存可以和CPU、缓存、辅存交换信息.
缓存-主存层次主要解决CPU和主存速度不匹配的问题.由于缓存的速度比主存的速度快,只要将CPU近期要用的信息调入缓存,CPU便可以直接从缓存中获取信息,从而提高访存速度.但由于缓存的容量小,因此需不断地将主存的内容调入缓存,使缓存中原来的信息被换掉.主存和缓存之间的数据调动是由硬件自动完成的,对程序员是透明的
.
主存-辅存层次主要解决存储系统的容量问题.辅存的速度比主存的速度慢很多.而且不能和CPU直接交换信息,但它的容量比主存大得多,可以存放大量暂时未用到的信息.当CPU需要用到这些信息时,再将辅存的内容调入主存,供CPU直接访问.主存和辅存之间的数据调动是由硬件和操作系统共同完成的.
从CPU角度看,缓存-主存这一层次的速度接近于缓存,高于主存;其容量和位价却接近于主存,这就从速度和成本的矛盾中获得了理想的解决办法.主存-辅存这一层次,从整体分析,其速度接近于主存,容量接近于辅存,平均位价也接近于低速、廉价的辅存价格,这又解决了速度、容量、成本这三者的矛盾.现代的计算机系统几乎都具有这两个存储层次,构成了缓存、主存、辅存三级存储系统
.
从主存-辅存这一层次的不断发展中,逐渐形成了虚拟存储系统.在这个系统中,程序员编程的地址范围与虚拟存储器的地址空间相对应.
例如,机器指令地址范围为24位,则虚拟存储器存储单元的个数可达16M.可是这个数与主存的实际存储单元的个数相比要大得多,称这类指令地址码为虚地址(虚存地址、虚拟地址)或逻辑地址,而把主存的实际地址称为物理地址或实地址.
物理地址是程序在执行过程中能真正访问的地址,也是实实在在的主存地址.对具有虚拟存储器的计算机系统而言,其逻辑地址变换为物理地址的工作是由计算机系统的硬件和操作系统自动完成的,对程序员是透明的.当虚地址的内容在主存时,机器便可立即使用;若虚地址的内容不在主存,则必须先将此虚地址的内容传送到主存的合适单元后再为机器所用.
总结
- 寄存器 - 缓存 - 主存 - 磁盘 - 磁带