计算机系统结构第4章.ppt
《计算机系统结构第4章.ppt》由会员分享,可在线阅读,更多相关《计算机系统结构第4章.ppt(172页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 4 章 存 贮 体 系 第第 4 4 章章 存存 贮贮 体体 系系 4.1 存储体系的概念存储体系的概念 4.2 虚拟存储器虚拟存储器 4.3 高速缓冲存储器高速缓冲存储器 4.4 Cache主存主存辅存三级层次辅存三级层次 4.5 主存保护主存保护 第 4 章 存 贮 体 系 4.1 存贮体系的形成与性能存贮体系的形成与性能 4.1.14.1.1存储体系及其分支存储体系及其分支所谓存储体系,就是让构成存储系统的n种不同的存储器(M1Mn)之间,配上辅助软、硬件或辅助硬件,使之从应用程序员来看,它们在逻辑上是一个整体。让存储层次的等效访问速度是接近于M1的,容量是Mn的,每位价格是接近于M
2、n的。基本的两级存储体系是虚拟存储器和Cache存储器,这是存储体系的两个不同的分支。第 4 章 存 贮 体 系 图4-1主存-辅存存储层次 第 4 章 存 贮 体 系 虚拟存储器是从主存容量满足不了要求提出来的。在主存和辅存之间,增设辅助的软、硬件设备,让它们构成一个整体,所以也称为主存-辅存存储层次。如图4-1所示。从CPU看,速度是接近于主存的,容量是辅存的,每位价格是接近于辅存的。从CPU看,速度是接近于主存的,容量是辅存的,每位价格是接近于辅存的。从速度上看,主存的访问时间约为磁盘的访问时间的10-5,即快10万倍。从价格上看,主存的每位价格约为磁盘的每位价格的103,即贵1000倍
3、。如果存储层次能以接近辅存的每位价格去构成等于辅存容量的快速主存,就会大大提高存储器系统的性能价格比。第 4 章 存 贮 体 系 应用程序员可用机器指令的地址对整个程序统一编址,称该地址为虚地址(程序地址),而把实际主存地址称为实地址(实存地址)。当虚存空间(程序空间)远远大于实地址空间(实存空间)时,只需将程序空间分割成较小的段或页,由系统程序按需要调入物理主存,并用辅助映像表建立其虚、实地址空间的对应关系。在用虚地址访主存时,由系统硬件查看,这个虚地址所对应单元的内容是否已装入主存。如果在主存内,就变换成主存实地址去访问主存;如果不在主存内,就经辅助软、硬件将含所要访问的单元在内的那个段(
4、或页)的程序块由辅存调入主存,建立好映像关系,再进行访问。这样,不论是虚、实地址的变换还是程序由辅存调入主存都不必由应用程序员安排,即这些操作和辅助软、硬件对应用程序员来讲是透明的。事实上,只要是存储层次,这些都必须对应用程序员是透明的。第 4 章 存 贮 体 系 因主存速度满足不了要求而引出了Cache存储器。在CPU和主存之间增设高速、小容量、每位价格较高的Cache,用辅助硬件将Cache和主存构成整体,如图4-2所示,称之为Cache存储器(或称为Cache-主存存储层次)。从CPU看,有接近于Cache的速度、主存的容量,接近于主存的每位价格。由于CPU与主存的速度只差一个数量级,信
5、息在Cache与主存之间的传送就只能全部用辅助硬件实现,因此,Cache存储器不仅对应用程序员是透明的,而且对系统程序员也是透明的。第 4 章 存 贮 体 系 图4-2Cache-主存存储层次 第 4 章 存 贮 体 系 由二级存储层次可组合成如图4-3所示的多级存储层次。希望从CPU看是一个整体,有接近于最高层M1的速度、最低层Mn的容量,并有接近于最低层Mn的每位价格。第 4 章 存 贮 体 系 图4-3多级存储层次 第 4 章 存 贮 体 系 4.1.24.1.2存储体系的构成依据存储体系的构成依据为了使存储体系能有效地工作,当CPU要用到某个地址的内容时,总希望它已在速度最快的M1中,
6、这就要求未来被访问信息的地址能预知,这对存储体系的构成是非常关键的。这种预知的可能性是基于计算机程序具有局部性,它包括时间上的局部性和空间上的局部性。前者指的是在最近的未来要用到的信息很可能是现在正在使用的信息,这是因为程序存在循环。后者指的是在最近的未来要用到的信息很可能与现在正在使用的信息在程序空间上是邻近的,这是因为指令通常是顺序存放、顺序执行,数据通常是以向量、阵列、树形、表格等形式簇聚地存放的。所以,程序执行时所用到的指令和数据是相对簇聚成自然的块或页(存储器中较小的连续单元区)。第 4 章 存 贮 体 系 这样,层次的M1级不必存入整个程序,只需将近期用过的块或页(根据时间局部性)
7、存入即可。在从M2级取所要访问的字送M1时,一并把该字所在的块或页整个取来(根据空间的局部性),就能使要用的信息已在M1的概率显著增大。这是存储层次构成的主要依据。预知的准确性是存储层次设计好坏的主要标志,很大程度取决于所用算法和地址映像变换的方式。一旦出现被访问信息不在M1中时,原先申请访存的程序就暂停执行或被挂起,直到所需信息被调到M1为止。然而这是指的虚拟存储器。若M1为Cache,则不将程序挂起,只是暂停执行,等待信息调入M1。同时为缩短CPU空等时间,还让CPU不只与Cache,也和主存有直接通路。就是说,虚拟存储器只能适用于多道程序(多用户)环境,而Cache存储器既可以是单用户环
8、境也可以是多用户环境。第 4 章 存 贮 体 系 4.1.3存储体系的性能参数存储体系的性能参数为简单起见,以图4-4的二级体系(M1,M2)为例来分析。设ci为Mi的每位价格,SMi为Mi的以位计算的存储容量,TAi为CPU访问到Mi中的信息所需的时间。为评价存储层次性能,引入存储层次的每位价格c、命中率H和等效访问时间TA。存储层次的每位价格 第 4 章 存 贮 体 系 图4-4二级存储体系的评价第 4 章 存 贮 体 系 总希望存储层次的每位价格能接近于c2,为此应使。同时,上式中并未把采用存储体系所增加的辅助软、硬件价格计算在内,所以要使c接近于c2,还应限制所增加的这部分辅助软、硬件
9、价格只能是总价格中一个很小的部分,否则将显著降低存储体系的性能价格比。第 4 章 存 贮 体 系 命中率H定义为CPU产生的逻辑地址能在M1中访问到(命中到)的概率。命中率可用实验或模拟方法求得,即执行或模拟一组有代表性的程序,若逻辑地址流的信息能在M1中访问到的次数为R1,当时在M2中还未调到M1的次数为R2,则命中率H=R1/(R1+R2)。显然命中率H与程序的地址流,所采用的地址预判算法及M1的容量都有很大关系。我们总希望H愈大愈好,即H越接近于1越好。相应的,不命中率或失效率是指由CPU产生的逻辑地址在M1中访问不到的概率。对二级存储层次,失效率为1-H。存储层次的等效访问时间TA=H
10、TA1+(1-H)TA2。希望TA越接近于TA1,即存储层次的访问效率e=TA1/TA越接近于1越好。第 4 章 存 贮 体 系 设CPU对存储层次相邻二级的访问时间比r=TA2/TA1,则 据此,可得e=f(r,H)的关系如图4-5所示。第 4 章 存 贮 体 系 由图4-5可知,要使访问效率e趋于1,在r值越大时,就要求命中率H越高。例如,r=100时,为使e0.9,必须使H0.998;而当r=2时,只需H0.889即可。像主-辅层次,速度差达105,要求H极高才能有高的访问效率,但H很难极高。为了降低对H的要求,可以减少相邻二级的访问速度差,减少相邻二级存储器的容量差也能提高H,但与为降
11、低每位平均价格要求容量差要大相矛盾。因此,在主、辅存之间增加一级电子磁盘,使级间r值不会过大,有利于降低对H的要求,以获得同样的e。所以要想使存储层次的访问效率e趋于1,就要在选择具有高命中率的算法、相邻二级的容量差和速度差及增加的辅助软、硬件的代价等因素间综合权衡,进行优化设计。第 4 章 存 贮 体 系 图4-5对于不同的r,命中率与访问效率e的关系第 4 章 存 贮 体 系 4.2虚拟存储器虚拟存储器 4.2.14.2.1虚拟存储器的管理方式虚拟存储器的管理方式1.1.段式管理段式管理程序都有模块性,一个复杂的大程序总可以分解成多个在逻辑上相对独立的模块。这些模块可以是主程序、子程序或过
12、程,也可以是数据块。模块的大小各不相同,有的甚至事先无法确定。每个模块都是一个单独的段,都以该段的起点为0相对编址。当某个段由辅存调入主存时,只要系统赋予该段一个基址(即该段存放在主存中的起始地址),就可以由此基址和单元在段内的相对位移形成单元在主存中的实际地址。将主存按段分配的存储管理方式称为段式管理。第 4 章 存 贮 体 系 为了进行段式管理,每道程序在系统中都有一个段(映像)表来存放该道程序各段装入主存的状况信息。参看图4-6,段表中的每一项(对应表中的每一行)描述该道程序一个段的基本状况,由若干个字段提供。段名字段用于存放段的名称,段名一般是有其逻辑意义的,也可以转换成用段号指明。由
13、于段号从0开始顺序编号,正好与段表中的行号对应,如2段必是段表中的第3行,这样,段表中就可不设段号(名)字段。装入位字段用来指示该段是否已经调入主存,“1”表示已装入,“0”表示未装入。在程序的执行过程中,各段的装入位随该段是否活跃而动态变化。第 4 章 存 贮 体 系 当装入位为“1”时,地址字段用于表示该段装入主存中的起始(绝对)地址,当装入位为“0”时,则无效(有的机器用它表示该段在辅存中的起始地址)。段长字段指明该段的大小,一般以字数或字节数为单位,取决于所用的编址方式。段长字段是用来判断所访问的地址是否越出段界的界限保护检查用的。访问方式字段用来标记该段允许的访问方式,如只读、可写、
14、只能执行等,以提供段的访问方式保护。除此之外,段表中还可以根据需要设置其他的字段。段表本身也是一个段,一般常驻在主存中,也可以存在辅存中,需要时再调入主存。第 4 章 存 贮 体 系 假设系统在主存中最多可同时有N道程序,可设N个段表基址寄存器。对应于每道程序,由基号(程序号)指明使用哪个段表基址寄存器。段表基址寄存器中的段表基地址字段指向该道程序的段表在主存中的起始地址。段表长度字段指明该道程序所用段表的行数,即程序的段数。由系统赋予某道程序(用户、进程)一个基号,并在调入/调出过程中对有关段表基址寄存器和段表的内容进行记录和修改,所有这些都不用用户程序员来管。某道活跃的程序在执行过程中产生
15、的指令或操作数地址只要与基号组合成系统的程序地址,即可通过查表自动转换成主存的物理地址。图4-6示意性地表示了这一地址变换的过程。第 4 章 存 贮 体 系 图4-6段式管理的定位映像机构及地址的变换过程 第 4 章 存 贮 体 系 分段方法能使大程序分模块编制,从而可以多个程序员并行编程,缩短编程时间,在执行或编译过程中对不断变化的可变长段也便于处理。各个段的修改、增添并不影响其他各段的编制,各用户以段的连接形成的程序空间可以与主存的实际容量无关。分段还便于几道程序共用已在主存内的程序和数据,如编译程序、各种子程序、各种数据和装入程序等。不必在主存中重复存储,只需把它们按段存储,并在几道程序
16、的段表中有公用段的名称及同样的基址值即可。第 4 章 存 贮 体 系 由于各段是按其逻辑特点组合的,容易以段为单位实现存储保护。例如,可以安排成常数段只能读不能写;操作数段只能读或写,不能作为指令执行;子程序段只能执行,不能修改;有的过程段只能执行,不能读也不能写,如此等等。一旦违反规定就中断,这对发现程序设计错误和非法使用是很有用的。第 4 章 存 贮 体 系 段式管理的虚拟存储器由于各个段的长度完全取决于段自身,当然不会恰好如图4-6所示的那样是1K的整数倍,段在主存中的起点也会是随意的,这就给高效地为调入段分配主存区域带来困难。为了进行段式管理,除了系统需要为每道程序分别设置段映像表外,
17、还得由操作系统为整个主存系统建立一个实主存管理表,它包括占用区域表和可用区域表两部分。占用区域表的每一项(行)用来指明主存中哪些区域已被占用,被哪道程序的哪个段占用以及该段在主存的起点和长度。第 4 章 存 贮 体 系 此外,还可以设置诸如该段是否进入主存后被改写过的字段,以便该段由主存中释放时,决定是否还要将其写回到辅存中原先的位置来减少辅助操作。可用区域表的每一项(行)则指明每一个未被占用区的基地址和区域大小。当一个段从辅存装入主存时,操作系统就在占用区域表中增加一项,并修改可用区域表。而当一个段从主存中退出时,就将其在占用区域表的项(行)移入可用区域表中,并进行有关它是否可与其他可用区归
18、并的处理,修改可用区域表。当某道程序全部执行结束或者是被优先级更高的程序所取代时,也应将该道程序的全部段的项从占用区域表移入可用区域表并作相应的处理。第 4 章 存 贮 体 系 2.2.页式管理页式管理段式存储中各段装入主存的起点是随意的,段表中的地址字段很长,必须能表示出主存中任意一个绝对地址,加上各段长度也是随意的,段长字段也很长。这既增加了辅助硬件开销,降低了查表速度,也使主存管理麻烦。段式管理和存储还会带来大的段间零头浪费。例如,主存中已有A、B、C三个程序,其大小和位置如图4-7所示,现有一长度为12KB的D道程序想要调入。段式管理时尽管D道程序长度小于主存所有可用区零头总和16KB
19、,但没有哪一个零头能装得下它,所以无法装入。于是提出了页式存储。第 4 章 存 贮 体 系 图4-7采用页式存储后D道程序仍可装入 第 4 章 存 贮 体 系 页式存储是把主存空间和程序空间都机械等分成固定大小的页(页面大小随机器而异,一般在512B到几,按页顺序编号。这样,任一主存单元的地址np就由实页号nv和页内位移nr两个字段组成。每个独立的程序也有自己的虚页号顺序。如此例中,若页面大小取4KB,则独立编址的D程序就有三页长,页号02。如果让虚存中的每一页均可装入主存中任意的实页位置,如图4-7那样,D程序中各页仍可分别装入主存的第2、6、7三个实页位置上,只要系统设置相应的页(映像)表
20、,保存好虚页装入实页时的页面对应关系,就可由给定的程序(虚)地址查页表变换成相应的实(主)存地址访存。第 4 章 存 贮 体 系 由于页式存储中程序的起点必处于一个页面的起点,用户程序中每一个虚地址就由虚页号字段Nv和页内位移字段Nr组成。而虚存和实(主)存的页面大小又一样,所以页表中只需记录出虚页号Nv和实(主)存页号nv的对应关系,不用保存页内位移。而虚页号与页表的行号是对应的,如虚页号2必对应于页表中第3行,所以不用专设虚页号字段。页面大小固定,页长字段也省了。所有这些都简化了映像表硬件,也利于加快查表。当然与段表类似,页表也必须设置装入位字段以表示该页是否已装入主存。第 4 章 存 贮
21、 体 系 当装入位为“1”时,实页号字段中的内容才是有效的,否则无效。为便于存储保护,页表中也可相应设置访问方式字段等。可以看出,由虚地址查表变换成实地址过程,段式管理需要较长的加法器进行将段起始地址加上段内位移的操作,而页式管理只需将主存实页号与页内位移拼装在一起,可大大加快地址变换的速度,也利于提高形成实地址的可靠性。第 4 章 存 贮 体 系 与段式一样,机器是采用多道程序方式工作的。若系统内最多可在主存中容纳N道程序,对每道程序都将有一个页表。由用户号u指明该道程序使用哪个页表基址寄存器,从而可以找到该道程序的页表在主存中的起点。就整个多用户虚拟存储器的虚存空间来说,其虚地址应有用户(
22、进程、程序)标识号u、虚页号Nv和页内位移Nr三个字段。如同段式管理一样,在程序装入和运行过程中,页表基址寄存器和页表的内容全部由存储层次来完成置定和修改,对用户完全是透明的。图4-8示意出页式管理的定位映像机构及其虚、实地址的变换过程。第 4 章 存 贮 体 系 图4-8页式管理的定位映像机构及其地址的变换过程 第 4 章 存 贮 体 系 3.3.段页式管理段页式管理页式对应用程序员完全透明,所需映像表硬件较少,地址变换的速度快,调入操作简单等方面都优于段式。页式不能完全消除主存可用区的零头浪费,因为程序的大小不可能恰好就是页面大小的整数倍。产生的页内零头虽然无法利用,但其浪费比段式的要小得
23、多,所以在主存空间利用率上,页式的也优于段式的。因此,单纯用段式管理的虚拟存储器已很少见到。第 4 章 存 贮 体 系 然而,相比而言段式也具有页式所没有的若干优点,如:段式中每个段独立,有利于程序员灵活实现段的链接、段的扩大缩小和修改,而不影响到其他的段;每段只包含一种类型的对象,如过程或是数组、堆栈、标量等集合,易于针对其特定类型实现保护;把共享的程序或数据单独构成一个段,从而易于实现多个用户、进程对共用段的管理,等等。如果采用页式,做到这些就比较困难。因此,为取长补短,提出了将段式和页式相结合的段页式存储和管理。第 4 章 存 贮 体 系 段页式存储是把实存机械等分成固定大小的页,程序按
24、模块分段,每个段又分成与主存页面大小相同的页。每道程序通过一个段表和相应的一组页表进行定位。段表中的每一行对应一个段。其中,“装入位”表示该段的页表是否已装入主存。若未装入主存,则访问该段时将引起段失效故障,请求从辅存中调入页表。若已装入主存,则地址字段指出该段的页表在主存中的起始地址。“访问方式”字段指定对该段的控制保护信息。“段长”字段指定该段页表的行数。每一个段都有一个页表。页表中每一行用装入位指明此段该页是否已装入主存。若未装入主存,则访问该页时将引起页面失效故障,需从辅存调页。如果已装入主存,则用地址字段来指明该页在主存中的页号。此外,页表中还可以包含一些其他信息。段页式与纯段式的主
25、要差别是段的起点不再是任意的,必须是位于主存中页面的起点。第 4 章 存 贮 体 系 图4-9段页式管理的定位映像机构及其地址的变换过程 第 4 章 存 贮 体 系 对于多道程序来说,每道程序(用户或进程)都需要有一个用户标志号u(转换成基号b)以指明该道程序的段表起点存放在哪个基址寄存器中。这样,多用户虚地址就由用户号u、段号s、页号p、页内位移d四个字段组成。设系统中主存最多可容纳N道程序,图49表示采用段页式管理的定位映像机构及由多用户虚地址变换成主存实地址的过程。不少大、中型机都采用这种段页式存储。在虚拟存储器中每访问一次主存都要进行一次程序地址向实(主)存地址的转换。段页式的主要问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构
限制150内