1、,系 统 总 线,存储器,运算器,控制器,接口与通信,输入/输出设备,林楠办公室:211办公电话:0371-63888959电子邮件:, 计算机组成原理 ,第四章 存储系统,第四章 存储器,辅助存储器,第四章 存储器,虚拟存储器,虚拟存储器是指主存- 辅存层次存取系统,借助于硬磁盘等辅助存储器来扩大主存容量,因为CPU只能执行调入主存的程序,所以称“虚拟存储器”。虚拟存储器是一个大容量的存储逻辑模型,不是实际的物理存储器。物理地址:由CPU地址引脚送出的,用于访问主存的地址。逻辑地址:由编译程序生成,是访问程序的逻辑地址,其地址空间大小受到辅助存储器容量的限制。Cache - 主存层次 与 主
2、存 - 辅存层次 的 地址变换映射方式和替换策略都相同,都是基于程序局部性原理。,5.1、虚拟存储器的基本概念,两个存储层次的区别是:1)主存-Cache主要用来弥补主存和CPU之间的速度差距,主存-辅存主要用来弥补主存的容量不足。2)主存的读写时间是Cache读写时间的5-10倍,而硬磁盘的读写时间是主存的千倍,所以主存未命中,系统相对性能损失大。3)CPU与主存、Cache之间有直接访问通路,与辅存没有。4)主存-Cache之间地址变换、数据替换全部由硬件实现,对程序员完全透明。主存-辅存之间地址变换、数据替换由操作系统中的存储管理软件辅助一些硬件共同实现,对系统程序员可见。(所以,这部分
3、内容也放在操作系统中讲。),两个存储层次遵循的共同原则是: 把程序最近、最常用的部分留在高速存储器中,变得不常用了,再送 回到低速存储器中,使存储系统的性能接近高速,价格接近低速。,5.1、虚拟存储器的基本概念,主存 - 辅存层次的基本数据传送单位可采用几种不同的方案:段、页、段页。,CPU,CacheSRAM,主存DRAM,主存字地址,字,块,字,辅存虚拟 存储器(硬磁盘),段,页,读取时间短, 传送的数据少,读取时间长, 传送的数据多,5.1、虚拟存储器的基本概念,第四章 存储器,虚拟存储器,页式虚拟存储器:以页为基本单位与主存交换数据。主存空间也分成同样大小的页。 主存分成的页为实页,虚
4、拟存储器分成的页为虚页,程序虚地址分为两个字段:高位字段为虚页号,低位字段为页内地址。程序实地址分为两个字段:高位字段为实页号,低位字段为页内地址。由于虚页与实页大小一样,所以页内地址是相等的。虚页号与实页号之间的变换是通过查找 主存中的页表来实现的。,5.2、页式虚拟存储器,虚页号,页内地址,实页号,页内地址,优点:页面的起点和终点地址是固定的,方便造页表,新页调入主存也很容易掌握,页外空间浪费少。 缺点:处理、保护、共享都不方便。,5.2、页式虚拟存储器,页面大小一样,页表在主存中,增加了访问主存次数,即使命中也要先访问主存中的页表,再访问主存单元,所以把页表最活跃部分放在Cache中组成
5、 快表。快表由硬件构成,减少了访问主存的时间开销。,5.2、页式虚拟存储器,实页号+页内地址 拼接得内存实地址。,页内地址,实页号,页内地址,装入标志,1,1,1,虚地址,实地址,页表基址寄存器,0 1 2,实页号,2,6,7,页表地址(主存中),虚页号,页表起始地址,虚页号,页表起始地址,按照页表起始地址 +虚页号查找页表, 得到实页号。,例1:在一个采用页式管理的虚拟存储器中,假设程序的地址空间由4个页面组成,请画出它们之间的映像方式。第0页映象到第2个主存页中,第1页映象到第6个主存页中,第2页映象到第7个主存页中,第3页映象到辅存。,0,1,2,3,4,5,6,7,0,1,2,3,内存
6、页地址空间,程序页地址空间,5.2、页式虚拟存储器,页内地址,实页号,页内地址,装入标志,1,1,1,虚地址,实地址,页表基址寄存器,0 1 2,实页号,2,6,7,页表地址(主存中),虚页号,页表起始地址,虚页号,页表起始地址,5.2、页式虚拟存储器,例1:在一个采用页式管理的虚拟存储器中,假设程序的地址空间由4个页面组成,请画出它们之间的映像方式。第0页映象到第2个主存页中,第1页映象到第6个主存页中,第2页映象到第7个主存页中,第3页映象到辅存。,例2、一个存储系统有32位程序地址空间(虚地址),一页容量为1KB,主存容量为 8MB,问:1)虚页号字段多少位?页表将有多少行?2)页表每行
7、多少位?页表的容量为多少字节?解: 1) 页容量为 1KB=210 B,所以页内地址为10位,虚页号为 32-10=22位,页表长度为 222 = 4M 行。2)主存容量为 8MB=223B,主存中的页数有:223/210 = 213个。即主存中实页号为13位,再加上装入位和访问控制等信号,假如页表的每一记录为16位,页表容量为 4M*2B=8MB。,页表(主存中),装入位,主存页号,虚页号,页内地址,虚地址,10,22,4M,实页号,页内地址,实地址,10,13,16,5.2、页式虚拟存储器,13位,00000111,1111100000,0011,页表(主存中),11 00,装入标志,1,
8、1,0,0011,页表 访问 地址,虚地址,实地址,页表基址寄存器,305H 307H,实页号,0001,1100,0000 0111,11 1110 0000,5.2、页式虚拟存储器,虚页号,页内地址,实页号,页内地址,例3、采用页式虚拟存储器,页表索引地址由页表基址寄存器和虚页号拼接而成,已知某程序中一条指令的虚地址是00 0001 1111 1110 0000,页表起始地址为0011,页面大小1K,页表中相关单元最后4位(实页号)为:,33E0H,300H,3FFH,例4、在一个页式管理虚拟存储器中,虚拟存储器有8页,主存有4页。1)假设程序的第0个页面映象到主存的第3页,程序的第2个页
9、面映象到主存的第1页,程序的第3个页面映象到主存的第0页,程序的第6个页面映象到主存的第2页。试画出地址映象方式。,5.2、页式虚拟存储器,2)如果要访问的程序第4个页面映象到外存,那么如果将第4个页面调入主存,如何改变页表供CPU访问呢?解:根据最近最少使用算法 LRU算法,假如主存的第3个页框架是近期最少使用的,则第3个页框分配给第4个页面,在缺页中断下,启动输入输出系统,将虚地址指示的虚页整页调入主存,同时将页表内容改动如下:,5.2、页式虚拟存储器,调出,调入,第四章 存储器,虚拟存储器,由于程序都具有一定的模块性,一个复杂的大程序可划分成多个逻辑上相对独立的模块,模块之间的界面和调用
10、关系是可以清楚定义的。这些模块可以是子程序、过程、也可以是某类元素的集合。在段式虚拟存储器中,段是按照程序的逻辑结构划分的,各段的长度因程序各异而不同。(因此,分段管理是按用户的要求提出来的。)编程使用的虚地址包含两部分:高位是段号,低位是段内地址。为了把虚地址变换成主存实地址,需要一个段表;段表也是一个段,驻留在主存中。段表指明各段在主存中的位置:每段的名称、段起点、段长度等。,5.3、段式虚拟存储器,段号,段内地址,虚地址,段式管理,5.3、段式虚拟存储器,段大小不一样,0,0,0,段起始地址,段起始地址,段起始地址,段号,段表起始地址,段表(主存中),主存地址,装入标志,段表起始地址,段
11、表访问 地址,虚地址,实地址,段表基址寄存器,段号,不能拼接只能相加。因段大小不一样。 段内地址位数不定。,CPU根据虚地址访问,段表的起始地址+段号,形成访问段表对应存储单元的地址,然后根据表内装入位判断该段是否已经调入主存,如果已经调入,从段表中读出该段在主存中的起始地址,与段内地址相加,得到对应的主存实地址。,5.3、段式虚拟存储器,+,段内地址,段基址 寄存器,段表(主存中),段表起始地址,虚地址,段表基址寄存器,2,内存实地址,20K,75K,200K,0K,5K,1019K,213K,实地址= 200K+13K,+,213K,-,40-13 判断越界中断,5.3、段式虚拟存储器(实
12、例),2,13K,段表起始地址,0K,40K,0K,段式管理优点:段的分界与程序的自然分界相对应,所以具有逻辑独立性,易于程序的编译、管理、修改和保护,也便于多道程序共享。某些类型的段具有动态可变长度,允许自由调度以便有效利用主存空间。缺点:因为段的长度各不同,起点和终点不定,给主存空间分配带来麻烦,容易在段间留下许多零碎的存储空余空间,造成浪费。,5.3、段式虚拟存储器,页式存储器,碎片存在页内。(一个大程序可能分4.6个页面) 段式存储器,碎片存在段外。(一个大程序分不同大小的段)段外的碎片操作系统可以收集,页内碎片不好收集。,第四章 存储器,虚拟存储器,段页式管理:结合分段和分页方法。在
13、分段管理方法中,存储器与硬盘交换数据是以可变长的段为单位。对于容量比较大的段来讲,一次分配整个一段的主存空间不太灵活, 因为这一大段程序中(现在执行的和没有执行的)都调入内存。因此我们可以把程序按模块分段,段内再分页,进入主存以页为单位。用段表和页表进行两级定位管理。虚拟存储器地址分成3部分:段号,页号,页内地址。,段号,页内地址,页号,5.4、段页式虚拟存储器,页0,页1,页0,页1,页2,页3,页0,页1,段0,段1,段2,段表(主存中),装入,段表地址,虚地址,段表基址寄存器,段起始地址,+,装入,实页号,页表(主存中),页内地址,实地址,实页号,5.4、段页式虚拟存储器,页0,页1,页
14、0,页1,页2,页3,页0,页1,52H,54H,40H,内存实地址,页内地址,段表起始地址,虚页号,段号,段基址 寄存器,段表起始地址,段号,本章小结:第四章 存储器,辅助存储器,本章小结:存储器的基本结构 ( 功能 结构 ),存储器功能:存放程序和数据装置,并满足计算机在执行过程中能够随机访问这些程序和数据。 设计思路:,存放,数据(一个一个的存取),程序(一条一条的存取),将每个存储单元赋予编码(单元地址),地址放哪?,设置 地址寄存器 MAR,按地址访问,在地址寄存器和存储体之间是否加 地址译码器?,决定于地址给出方式:直接给出 / 编码给出,编码给出(加地址译码器),存(写入),取(
15、读出),访问,设置一个存储体,并将存储体分成若干个存储单元。,存,取,存在两个问题,数据存放,为读出和写入的数据设置数据缓冲寄存器,操作区分,加读写控制线路(R/W控制),存储器基本结构:存储体 地址寄存器 地址译码器 数据缓冲寄存器 读写控制线路,设计思路:,本章小结:存储器的基本结构,存储体,驱动器,译码器,地址寄存器MAR,控制电路,读 写 电 路,数据 缓冲 寄存器 MDR,地址总线,数据总线,读,写,本章小结:存储器的基本结构 P72,先送地址 后读写数据,存储器基本结构:存储体 地址寄存器 地址译码器 数据缓冲寄存器 读写控制线路,本章小结:存储器的分类,(磁盘、磁带、光盘),高速
16、缓冲存储器(Cache),存 储 器,MROM(掩膜ROM) PROM(一次可编程ROM) EPROM(可擦除可编程ROM) VERPROM(紫外线擦除)EEPROM(电擦除) FLASH Memory 闪速存储器,本章小结:存储器的层次结构,缓存,CPU,主存,辅存,缓存 主存 层次,(速度),(容量),主存 辅存 层次,容量大、速度快、成本低,3.1、主存储器概述 3.2、主存储器构成3.2.1、位单元构成(SRAM/DRAM、ROM)3.2.2、地址译码(单向,双向)3.2.3、主存储器组成(芯片封装) 3.3、主存储器扩展3.3.1、位扩展(数据线扩充) 3.3.2、字扩展(地址线扩充
17、)3.3.3、位字扩展(先位后字) 3.4、主存储器与CPU的连接3.4.1、存储芯片与CPU接口特性(地址信号、数据信号、控制信号) 3.4.2、存储芯片与CPU连接举例(重点画片选信号与3-8译码器) 3.4.3、存储器读写周期与CPU的配合(读写过程中其他信号不变) 3.4.4、动态存储器DRAM刷新(2ms内整个主存刷新一次) 3.5、提高主存储器性能的技术3.5.1、提高主存的制造技术(硬部件技术的提高)3.5.2、单体双端口存储器(采用并行的存储体系结构)3.5.3、单体并行多字存储器(采用并行的存储体系结构)3.5.4、多体并行交叉存储器(采用并行的存储体系结构),本章小结:主存储器,本章小结:存储系统,