计算机组成原理—3—各类储存器介绍
注:这一章主要介绍了SRAM与DRAM、ROM与FLASH、并行存储器、cache存储器、虚拟存储器的概念,其中cache存储器和虚拟存储器是重点内容。
1、SRAM与DRAM
目前采用最广泛的内部存储器是半导体存储器。其根据信息存储的机理,又分为静态存储器(SRAM)和动态存储器(DRAM)。SRAM的优点是存取速度快,但存储量不如DRAM大。
动态MOS随机读写存储器DRAM的存储量极大,通常用作计算机的主存储器。
SRAM存储器的存储单元是一个触发器,具有两个稳定的状态。而DRAM存储器的储存元是由一个MOS晶体管和电容器组成的记忆电路,其中MOS管作为开关使用,而所存储的信息1和0则是由电容器上的电荷量来体现——当电容器充满电荷时。代表存储了1,当电容器放电没有电荷时,代表存储了0。
DRAM的刷新周期:DRAM存储位元是基于电容器上的电荷量存储,这个电荷量随之的时间和温度而减少,因此必须定期地刷新,从而保存原来的存储信息。一般典型器件的刷新周期是8ms到16ms,某些器件的刷新周期可以大于100ms。
一次读写操作会自动地刷新选中行中的所有存储单元。于此同时必须对DRAM进行定时刷新。
刷新操作有集中式刷新和分散式刷新两种方式:
集中式刷新,DRAM的所有行在每一个刷新周期中都将被刷新。
分布式刷新,每一行的刷新插入到正常的读写周期之中。
SRAM和DRAM都是随机读写存储器。
2、ROM与FLASH
只读存储器ROM:顾名思义,只读的意思是在它工作时只能读出,不能写入。其工作可靠性高,保密性强,被广泛应用。ROM分为掩模ROM和可编程ROM两类。掩模ROM实际是一个存储内容固定的ROM。后者又分为一次性编程的PROM和多次编程的EPROM和E²PROM。前者是鼻祖,后者是继承创新的产物。
闪速存储器FLASH:是高密度非易失性的读写存储器。高密度意味着它具有巨大比特数目的存储容量。非易失性意味着存放的数据可在没有电源的情况下可以长期保存。
3、并行存储器
由于CPU和主存储器之间在速度上是不匹配的,为了提高CPU和主存之间的数据传输率,除了采用更高速的技术来缩短读出时间外,还可以采用并行技术的存储器。
双端口存储器:
双端口存储器由于同一个存储器具有两个互相独立的读写电路而得名。由于并行的独立操作,因而是一种高速工作的存储器,在科研和工程中非常有用。
双端口存储器提供两个相互独立的端口来进行读写功能。当两个端口的地址不相同时,在两个端口上进行读写操作,一定不会发生冲突。当两个端口同时存取存储器同一单元时,便发生读写冲突。
多模块交叉存储器:
一个若干模块组成的主存储器是线性编址的。这些地址在各模块中的安排方式有两种:顺序方式和交叉方式。
常规的主存储器访问地址采用顺序方式。在顺序方式中某个模块进行存储时,其他模块不工作。所以某一模块出现故障时,其他模块照常工作,另外通过增添模块来扩充存储器容量比较方便。但是顺序存方式的缺点是各模块一个接一个串行工作,因此储存器的带宽受到限制。
而寻址访问方式为交叉方式的多模块存储器(多模块交叉存储器),从定性上分析,对连续字的成块传送,多模块交叉存储器可以实现模块流水式并行存取,大大提高存储器的带宽。
4、cache存储器
4.1 基本功能
cache存储器是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项技术。其原理是基于程序运行中具有控件局部性和时间局部性特征。从功能上看,它是主存的缓冲存储器,由高速的SRAM组成。为追求高速,包括管理在内的全部功能由硬件实现,因而对程序员是透明的。目前大部分计算机的cache存储器位于CPU中,工作速度接近CPU的速度。
4.2 基本原理
cache除了包括SRAM外,还要有控制逻辑。若cache在CPU芯片外,它的控制逻辑一般与主存逻辑合在一起,称为主存/cache控制器;若cache在CPU内,则由CPU提供它的控制逻辑。
CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块由若干字组成,是定长的。当CPU读取主存中的一个字时,遍发出此字的内存地址到cache和主存。此时cache控制逻辑依据地址判断此字当前是否在cache中:若在,此字立即传送给CPU;若不在,则用主存读周期把此字从主存读出送到CPU,于此同时,把含有这个字的整个数据块从主存读出送到cache中。
4.3 命中率
cache从CPU来看,增加一个cache的目的,就是在性能上使主存的平均读出时间尽可能接近cache的读出时间。为了达到这个目的,在所有的存储器访问中由cache满足CPU的部分应占很高的比例,即cache的命中率应接近于1。
4.4 主存与cache的地址映射
与主存容量相比,cache容量很小,它保存的内容只是主存内容的一个子集,且cache与主存的数据交换是以块为单位。为了把主存块存放到cache中,必须应用某种方法把主存地址定位到cache中,称为地址映射。这个地址转换非常快,软件人员丝毫感觉不到cache的存在,这种特性称为cache的透明性。
地址映射方式有全相联方式、直接方式和组相联方式三种。
在全相联映射中,将主存中一个块的地址(块号)与块的内容(字)一起存于cache的行中,其中块地址存于cache行的标记部分中。
直接映射方式,也是一种多对1的映射方式,但一个主存块只能拷贝到cache的一个特定的位置上去。
组相联映射方式,全相联映射和直接映射两种方式的优缺点正好相反。从存放位置的灵活性和命中率来看,前者为优;从比较器电路简单及硬件投资来说,后者为佳。
而组相联映射方式是前两种方式的折衷,其兼顾二者的优点又避免二者的缺点,因而被普遍采用。这种方式将cache分为u组,每组v行。主存存放到哪个组是固定的,至于存放到该组的哪一行是灵活的。
4.5 替换策略
cache工作原理要求它尽量保存最新数据。当一个新的主存块需要拷贝到cache,而允许存放此块的行位置都被其他主存放块占满时,就要产生替换。
硬件实现的常用算法主要有:(1)最不经常使用(LFU)算法;(2)近期最少使用(LRU)算法;(3)随机替换。
4.6 使用多级cache减少缺失损失
当CPU访问一级cache缺失时就会访问二级cache。
5、虚拟存储机
5.1 实地址与虚地址
因为在程序需设计时,在程序所需的存储容量与计算机系统的实际配备的主存储器容量之间往往存在着矛盾。因此在编程时不考虑程序是否能在物理存储器中存放得下,也不考虑程序应该存放在什么物理位置。而在程序运行时,则分配给每个程序一定的运行空间,由地址转换部件(硬件或软件)将编程时的地址转换成实际内存的物理地址。如果分配的内存不够,则只调入当前正在运行的或将要运行的程序块(数据块),其余部分暂时驻留在辅存中。
用户编址程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而 计算机物理内存的访问地址则称为实地址或物理地址,而对应的存储空间称为物理存储空间或主存储空间。
程序进行虚地址到实地址转换的过程称为程序的再定位。
5.2 虚存的访问过程
虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。
每次访存时,首先判断该虚地址所对应的部分是否在实存中,如果是,则进行地址转换并访问内存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问内存。
虚存是在主存和辅存之外附加一些硬件和软件实现的。由于软件的接借入,使虚存对设计存储管理软件的系统程序员而言是不透明的,但对应用程序员而言仍是透明的。
5.3 cache与虚存的异同
从虚存的概率上看,主存-辅存的访问机制与cache-主存的访问机制是类似的。这是由cache存储器、主存和辅存构成的三级存储体系中的两个层次。
cache和主存以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。cache和主存构成了系统的内存,而主存和辅存依靠辅助软硬件的支持构成了虚拟存储器。
二个存储层次有许多的相同点;
(1)出发点相同:二者都是为了提高存储系统的性价比。
(2)原理相同:都是利用了程序运行时的局部性原理把最近常用的信息块从相对较慢而大容量的存储器调入相对高速而小容量的存储器。
(3)则重点不同:cache主要解决主存与CPU的速度差异问题;而就性价比的提高而言,虚存主要是解决存储容量问题,另外还包括存储管理、主存分配和存储保护等方面。
(4)数据通路不同:CPU与cache和主存之间均有直接的通路,cache不命中时可直接访问主存;而虚存所依赖的辅存与CPU之间不存在数据通路,当主存不命中是只能通过调页解决,CPU最终还是要访问主存。
(5)透明性不同:cache的管理完全由硬件完成,对系统程序员和应用程序员均透明;虚存管理由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储器的管理系统程序员不透明,而只对应用程序员透明(段式和段页式管理对应用程序员“半透明”)。
(6) 未命中时的损失不同:由于主存的存取时间是cache的存取时间的5-10倍,而主存的存取速度通常比辅存的存取速度快上千倍,故主存未命中时系统的性能损失要远大于cache未命中时的损失。
5.4 虚拟机制要解决的关键问题
(1) 调度问题:解决哪些程序和数据应用被调入主存。
(2)地址映射问题:在访问主存时把虚拟地址变为主存物理地址(这一过程称为内地址变换);在访问辅存时把虚地址变成辅存的物理地址(这一过程称为外地址变换),以便换页。此外还要解决主存分配、存储保护与程序再定位等问题。
(3)替换问题:决定哪些程序和数据应被调换出主存。
(4)更新问题:确保主存和辅存的一致性。
5.5 虚拟存储器的分类
根据虚拟存储器中每次调换数据的形式,将虚拟存储器分为也三类 :1、虚拟地址空间被分为等长大小的页的虚拟存储器,称为页式虚拟存储器。2、虚拟空间地址按照程序的自然分界分割成长度不一的段的虚拟存储器称为段式存储器。3、段页式虚拟存储器是段式虚拟存储器和页式虚拟存储器的结合。实存被等分成页。每个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操作,可按段进行编程、保护和共享。
5.6 虚存的替换算法
虚拟存储器的替换算法与cache的替换算法类似,有最不经常使用算法(FIFO),近期最少使用算法(LRU)和最久未被使用算法(LFU)。
而虚拟存储器的替换算法与cache的替换算法不同的是:
(1)cache的替换全部靠硬件实现,而虚拟存储器的替换有操作系统支持。
(2)虚存缺页对系统性能的影响比cache未命中要大得多,因为调页需要访问辅存,并要进行任务切换。
(3)虚存页面替换的选择余地很大,属于一个进程的页面都可替换。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
