文档库 最新最全的文档下载
当前位置:文档库 › 存储系统的组成

存储系统的组成

、存储系统的组成
1.1、存储器的分类
按存储器在计算机系统中的作用分类:
高速缓冲存储器:高速缓冲存储器(Cache)位于主存和CPU之间,用于存放正在执行的程序段和数据,以便CPU能高速地使用它们。Cache的存储速度与CPU的速度相匹配,但存储量较小,价格较高,一般制作在CPU芯片中
主存储器:主存用来存放计算机运行期间所需要的程序和数据,CPU可直接随机地进行读写访问。主存有一定容量,存储速度较高。由于CPU要频繁地访问主存,所以主存的性能在很大程度上影响了整个计算机系统的性能
辅助存储器:辅助存储器又称为外部存储器或后援存储器,用于存放当前暂不参与运行的程序和数据以及一些需要永久性保存的信息。辅存设在主机外部,容量极大且成本很低,但存储速度较低,而且CPU不能直接访问它。辅存中的信息必须通过专门的程序调入主存后,CPU才能使用
1.2、存储系统的层次结构
为了解决容量、存储速度和价格之间的矛盾,通常把各种不同的存储容量、不同存储速度的存储器,按一定的体系结构组织起来,形成一个统一整体的存储系统
由高速缓冲存储器、主存储器、辅助存储器构成的三级存储系统可以分为两个层次,其中高速缓存和主存之间称为Cache-主存存储层次(cache存储系统),主存-辅助存储层次(虚拟存储系统)
Cache存储系统是为解决主存速度不足而提出来的。在Cache和主存之间,增加辅助硬件,让它构成一个整体。从CPU看,速度接近Cache的速度,容量是主存的容量。Cache存储系统全部用硬件来调度,对应用程序员和系统程序员都是透明的
虚拟存储系统是为解决主存容量不足而提出来的。在主存和辅存之间,增加辅助的软硬件,让它们构成一个整体。从CPU看,速度接近主存的速度,容量是虚拟的地址空间。虚拟存储系统需要通过操作系统来调度,对系统程序员是不透明的,但对应用程序员是透明的
2、主存储器的组织
2.1、主存储器的基本结构
主存通常由存储体、地址译码驱动电路、I/O和读写电路组成
存储体是主存储器的核心,程序和数据都存放在存储体中
地址译码驱动电路实际上包含译码器和驱动器两部分。译码器将地址总线输入的地址转换成与之对应的译码输出线上的有效电平,以表示选中了某一存储单元。然后由驱动器提供驱动电流去驱动相应的读写电路。完成对选中存储单元的读写操作
I/O和读写电路包括读出放大器、写入电路和读写控制电路,用以完成被选中存储单元中各位的读出和写入操作
主存的读写操作是在控制器的控制下进行的,半导体存储芯片中的I/O和读写

电路必须在接收到来自控制器的读写命令后,才能实现正确的操作
2.2、数据在主存中的存放
边界对齐法:假设数据字长32位,存储字长(一个存储周期最多能够从主存读写的数据位数)64位。双子数据的起始地址的最末三个二进制位必须是000,单字数据的起始地址的最末两位必须为00,半字数据的起始地址的最末位必须为0。这种存储方式能保证无论访问双字、单字、半字或字节,都能在一个存储周期完成。
3、半导体随机存储器和只读存储器
主存储器通常分为RAM和ROM两部分。RAM可读可写,ROM只能读不能写
RAM芯片:RAM芯片通过地址线、数据线和控制线与外部连接,地址线是单向输入的,其数目与芯片容量有关。数据线是双向的,即可输入,也可输出,其数目与数据位数有关。控制线主要有读写控制线和片选线两种,读写控制线用来控制芯片是进行读操作还是写操作,片选线用来决定该芯片是否被选中
地址译码方式:RAM芯片中的地址译码电路能够把地址线送来的地址信号翻译成对应存储单元的选择信号。地址译码方式分为单译码和双译码两种
4、主存储器的连接与控制
4.1、主存容量的扩展
由于存储芯片的容量有限,主存储器往往要是由一定数量的芯片构成的
位扩展:位扩展是指只在位数方面扩展(加大字长),而芯片的字数和存储器的字数。位扩展的连接方式是将各存储芯片的地址线、片选线和读写线相应地并联起来,而将各芯片的数据线单独列出
字扩展:字扩展是指仅在字数方面扩展,而位数不变。字扩展将芯片的地址线、数据线、读写控制线并联,而片选信号来区分各个芯片
字和位同时扩展:当构成一个容量较大的容器时,往往需要在字数方向和位数方向上同时扩展
4.2、存储芯片的片选
CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后再从选中的芯片中依地址码选择出相应的存储单元,以进行数据的存取,这称为字选。片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端,而存储芯片的片选信号则大多是通过高位地址译码后产生的
线选法:线选法就是用除片内寻址外的高位地址线直接分别接至各个存储芯片的片选端,当某地址线信息为0时,就选中与之对应的存储芯片。这些片选地址线每次寻址时只能有一位有效,不允许同时有多位有效,这样才能保证每次只选中一个芯片。线选法不能充分利用系统的存储器空间,把地址空间分成了相互隔离的区域,给编程带来了一定困难
全译码法:全译码法将除片内寻址外的全部高位地址线都作为地址译码

器的输入,译码器的输出作为各芯片的片选信号,将它们分别接到存储芯片的片选端,以实现对存储芯片的选择。全译码法的优点是每片芯片的地址范围是唯一确定的,而且是连续的,也便于扩展,不会产生地址重叠的存储区,但全译码法对译码电路要求较高
部分译码法:所谓部分译码法即用除片内寻址外的高位地址的一部分来译码产生片选信号,部分译码法会产生地址重叠
4.3、CPU与主存储器的连接
主存与CPU之间的硬连接:主存与CPU的硬连接有三组连线:地址总线(AB)、数据总线(DB)和控制总线(CB)。把主存看作一个黑盒子,存储器地址寄存器(MAR)和存储器数据寄存器(MDR)是主存和CPU之间的接口。MAR可以接收由程序计数器(PC)的指令地址或来自运算器的操作数的地址,以确定要访问的单元。MDR是向主存写入数据或从主存读出数据的缓冲部件。MAR和MDR从功能上看属于主存,但通常放在CPU内
CPU对主存的基本操作:CPU对主存进行读写操作时,首先CPU在地址总线上给出地址信号,然后发出相应的读写命令,并在数据总线上交换信息。读写基本操作如下:
读:读操作是指从CPU送来的地址所指定的存储单元中取出信息,再送给CPU,其操作过程如下:
地址——>MAR——AB CPU将地址信号送至地址总线
Read CPU发读命令
Wait For MFC 等待存储器工作完成信号
M(MAR)——>DB——>MDR 读出信息经数据总线至CPU
写:写操作是指将要写入的信息存入CPU所指定的存储单元中,其操作过程是:
地址——>MAR——>AB CPU将地址信号送至地址总线
数据——>MDR——>DB CPU将要写入的数据送至数据总线
Write CPU发写命令
Wait For MFC 等待存储器工作完成信号
CPU与主存之间的速度匹配:同步存储器读取和异步存储器读取
异步存储器读取:CPU和主存间没有统一的时钟,由主存工作完成信号(MFC)通知CPU“主存工作已完成”
同步存储器读取:CPU和主存采用统一时钟,同步工作,因为主存速度较慢,所以CPU与之配合必须放慢速度,在这种存储器中,不需要主存工作完成信号
4.4、PC系列机的存储器接口
8088、8086、80386、Pentium微处理器的外部数据总线分别是8、16、32、64位
5、提高存储系统性能的技术
5.1、高速缓冲存储器
程序的局部性原理:程序的局部性原理有两个方面的含义:时间局部性和空间局部性。时间局部性是指如果一个存储单元被访问,则可能该单元会很快被再次访问。这是因为程序存在着循环。空间局部性是如果一个存储单元被访问,则该单元附近的单元也可能很快被访问。这是因为程序中大部分指令是顺序存储、顺序执行的,数据

一般也是以向量、数组、数、表等形式簇聚地存储在一起的
高速缓冲技术就是利用程序的局部性原理,把程序中正在使用的部分存放在一个高速的容量较小的Cache中,使CPU的访存速度操作大多数针对Cache进行,从而使程序的执行速度大大提高
Cache的读写操作:
Cache的读操作:当CPU发出读请求时,如果Cache命中,就直接对Cache进行读操作,与主存无关;如果Cache不命中,则需要访问主存,并把该块信息一次从主存调入Cache内,若此时Cache已满,则需根据替换算法,用这个块替换掉Cache中原来的某块信息
Cache的写操作:由于Cache中保存的只是主存的部分副本,这些副本与主存中的内容能否保持一致,是Cache能否可靠工作的一个关键问题。当CPU发出写请求时,如果Cache命中,有可能会遇到Cache与主存的内容不一致的问题,所以如果Cache命中,需要进行一定的写处理,处理的方法有写直达法和写回法
地址映像:在Cache中,地址映像是指把主存地址空间映射到Cache地址空间,也就是把存放在主存中程序按照某种规则装入Cache中,地址映像的方法有三种:全相联映像、直接映像和组相联映像
替换算法:在采用全相联和组相联映像的方式从主存向Cache传送一个新块,而Cache中的空间已被占满时,就需要把原来的存储的一块替换掉
PC机中Cache技术的实现:
单一缓存和多级缓存:片内Cache、二级Cache
统一缓存和分开缓存:统一缓存是指指令和数据都存放在同一个Cache中,分开缓存是指指令和数据分别存放在两个Cache中,一个叫指令Cache,一个叫数据Cache。将指令和数据Cache分开,可以满足指令预取和指令执行并行的需要,否则可能出现取指和执行过程对统一缓存的争用
5.2、虚拟存储器
虚拟存储器由主存储器和联机工作的辅助存储器共同组成,这两个存储器在硬件和系统软件的共同管理下工作,对于应用程序员,可以把它们看做是一个单一的存储器
虚拟存储器的基本概念:
虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的存储空间,在这个大空间里,用户可以自由编程,完全不必考虑程序在主存中是否装得下以及这些程序将来在主存中的实际存放位置
用户编程的地址成为逻辑地址,实际的主存单元的地址称为物理地址,虚地址空间要比实地址空间大得多
在实际的物理存储层次上,所编程序和数据在操作系统管理下,先送入磁盘,然后操作系统将当前运行所需要的部分调入主存,供CPU使用,其余暂不运行部分留在磁盘中
程序运行时,CPU以虚地址来访问主存,由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址指

示的存储单元内容是否已装入主存。如果已在主存中,则通过地址变换,CPU可直接访问主存的实际单元;如果不在主存中,则把包干这个字的一页或一个程序段调入主存后再由CPU访问。如果主存已满,则由替换算法从主存中将暂不运行的一块调回辅存,再从辅存调入新的一块到主存。
页式虚拟存储器:
以页为基本单位的虚拟存储器叫页式虚拟存储器。主存空间和辅存空间都划分为若干大小相等的页,主存即实存的页称为实页,虚存的页称为虚页。
程序虚地址分为两个字段:高位字段为虚页号,低位字段为页内地址。虚地址到实地址之间的变换是由页表来实现的。页表是一张存放在主存中的虚页号和实页号的对照表,记录着程序的虚页调入主存时被安排在主存中的位置,若计算机采用多道程序工作方式,则可为每个用户作业建立一个页表,硬件中设置一个页表基址寄存器,存放当前所运行程序的页表的起始地址
页表中的每一行记录了与某个虚页对应的若干信息,包括虚页号、装入位和实页号等。页表基址寄存器和虚页号拼接成页表索引地址。根据这个地址可读到一个页表信息字,然后检测页表信息字中装入位的状态。若装入位为1,表示该页在主存中,则对应的实页号与虚地址中的页内地址相拼接就得到了完整的地址;若装入位为0,表示该页面不在主存中,于是要启动I/O系统,把该页从辅存中调入主存后再供CPU使用。
段式虚拟存储器:
段式虚拟存储器中的段是按照程序的逻辑结构划分的,各个段的长度因程序而异。为了把程序虚地址变换成主存实地址,需要一个段表。段表中的每一行记录了某个段对应的若干信息,包括段号、装入位、段起点和段长等。段表一般驻留在内存中。这里段号是指虚拟段号,装入位为1,表示该段已调入主存;装入位为0,则表示该段不在主存中。由于段的大小可变,所以在段表中要给出各段的起始地址与段的长度。段表实际上是程序的逻辑结构段与其在主存中所存放的位置之间的关系对照表
编程使用的虚地址包含两部分:高位是段号,低位是段内地址。CPU根据虚地址访存时,首先将段号与段表的起始地址相拼接,形成访问段表对应行的地址,然后根据段表内装入位判断该段是否已调入主存。若已调入主存,从段表读出该段在主存中的起始地址,与段内地址相加,得到对应的主存实地址
段页式虚拟存储器:
将程序按其逻辑结构分段,每段再划分为若干大小相等的页;主存空间也划分为若干同样大小的页。虚存和主存之间以页为基本的传送单位,每个程序对应一个段表,每段对应一个页表。

CPU访问主存时,虚地址包含段号、段内页号、页内地址三部分。首先将段表起始地址与段号合成,得到段表地址;然后从段表中取出该段的页表起始地址,与段内页号合成,得到页表地址;最后从页表中取出实页号,与页内地址拼接形成主存实地址。
段页式虚拟存储器将存储空间按逻辑模块划分为段,每段又分成若干个页,访存通过一个段表和若干个页表进行[size=small]

相关文档