第四章 存储器系统1.docx
- 文档编号:11734431
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:28
- 大小:218.36KB
第四章 存储器系统1.docx
《第四章 存储器系统1.docx》由会员分享,可在线阅读,更多相关《第四章 存储器系统1.docx(28页珍藏版)》请在冰豆网上搜索。
第四章存储器系统1
第一讲:
第四章存储器系统
回顾:
微型计算机系统的硬件组成,存储器在微机系统中的功能和作用。
本讲重点:
微机存储器系统的基本概况,存储器的分类,内部存储器的系统结
构,动、静态读写存储器RAM的基本存储单元与芯片。
讲授内容:
4.1概述
存储器是计算机中的记忆部件,用来存储程序和数据,是计算机的基本组成部分。
人们把计算机之所以称为电脑,就是因为计算机中的存储器具有存储能力,能实现程序存储、程序控制,使计算机能自动高速地进行各种复杂运算。
在计算机所有组成部件中,惟有存储器种类最多,原因就在于各种存储部件具有不同的存储特点,到目前为止,还没有找到一种在性能(速度)、容量、价格上都能满足需要的存储器件,所以,现在计算机的存储部件是由各种性能的存储器件构成的存储器系统,综合满足存储需要。
所以要了解存储器系统的性能,必须从每种存储器部件研究开始。
4.1.1存储器分类及特点
存储器种类很多,每种具有各自不同的存储特点。
1.按构成存储器的器件和存储介质分类
可分为:
磁芯存储器、半导体存储器、光电存储器、磁膜、磁泡和其它磁表面存储器以及光盘存储器等。
2.按存取方式分类
可将存储器分为随机存取存储器、只读存储器两种形式。
(1)随机存储器RAM(RandomAccessMemory)
又称读写存储器,指能够通过指令随机地、个别地对其中各个单元进行读/写操作的一类存储器,随机存储器读写快慢与信息存储位置无关。
按照存放信息原理的不同,随机存储器又可分为静态和动态两种。
静态RAM即SRAM,是以双稳态元件作为基本的存储单元来保存信息的,因此,其保存的信息在不断电的情况下,是不会被自动破坏的;而动态RAM(DRAM)是靠电容的充、放电原理来存放信息的,由于保存在电容上的电荷,会随着时间而泄露,因而会使得这种器件中存放的信息丢失,必须定时进行刷新。
(2)只读存储器ROM(Read-OnlyMemory)
在微机系统的在线运行过程中,只能对其进行读操作,而不能进行写操作的一类存储器。
ROM通常用来存放固定不变的程序、汉字字型库、字符及图形符号等。
随着半导体技术的发展,只读存储器也出现了不同的种类,如可编程的只读存储器PROM(ProgrammableROM),可擦除的可编程的只读存储器EPROM(ErasibleProgrammableROM)和EEPROM(ElectricErasibleProgrammableROM)以及掩膜型只读存储器MROM(MaskedROM)等,近年来发展起来的快擦型存储器(F1ashMemory)具有EEPROM的特点。
3.按在微机系统中位置分类
分为主存储器(内存)、辅助存储器(外存)、缓冲存储器等。
主存储器又称为系统的主存或者内存,位于系统主机的内部,CPU可以直接对其中的单元进行读/写操作;辅存存储器又称外存,位于系统主机的外部,CPU对其进行的存/取操作,必须通过内存才能进行;缓冲存储器位于主存与CPU之间,其存取速度非常快,但存储容量更小,可用来解决存取速度与存储容量之间的矛盾,提高整个系统的运行速度。
另外,还可根据所存信息是否容易丢失,而把存储器分成易失性存储器和非易失性存储器。
如半导体存储器(DRAM,SRAM),停电后信息会丢失,属易失性;而磁带和磁盘等磁表面存储器,属非易失性存储器。
存储器分类表如下所示(P87):
双极型半导体存储器
随机存储器(RAM)
MOS存储器(静态、动态)
主存储器可编程只读存储器PROM
只读存储器(ROM)可擦除可编程只读存储器EPROM,EEPROM
掩膜型只读存储器MROM
快擦型存储器
存储器磁盘(软盘、硬盘、盘组)存储器
辅助存储器磁带存储器
光盘存储器
缓冲存储器
图4-1存储器分类图
4.1.2存储器的组成结构
一般情况下,一个存储器系统由以下几部分组成。
1.基本存储单元
一个基本存储单元可以存放一位二进制信息,其内部具有两个稳定的且相互对立的状态,并能够在外部对其状态进行识别和改变。
不同类型的基本存储单元,决定了由其所组成的存储器件的类型不同。
2.存储体
一个基本存储单元只能保存一位二进制信息,若要存放M×N个二进制信息,就需要用M×N个基本存储单元,它们按一定的规则排列起来,由这些基本存储单元所构成的阵列称为存储体或存储矩阵。
3.地址译码器
由于存储器系统是由许多存储单元构成的,每个存储单元一般存放8位二进制信息,为了加以区分,我们必须首先为这些存储单元编号,即分配给这些存储单元不同的地址。
地址译码器的作用就是用来接受CPU送来的地址信号并对它进行译码,选择与此地址码相对应的存储单元,以便对该单元进行读/写操作。
4.片选与读/写控制电路
片选信号用以实现芯片的选择。
对于一个芯片来讲,只有当片选信号有效时,才能对其进行读/写操作。
片选信号一般由地址译码器的输出及一些控制信号来形成,而读/写控制电路则用来控制对芯片的读/写操作。
5.I/O电路
I/O电路位于系统数据总线与被选中的存储单元之间,用来控制信息的读出与写入,必要时,还可包含对I/O信号的驱动及放大处理功能。
6.集电极开路或三态输出缓冲器
为了扩充存储器系统的容量,常常需要将几片RAM芯片的数据线并联使用或与双向的数据线相连,这就要用到集电极开路或三态输出缓冲器。
7.其它外围电路
对不同类型的存储器系统,有时,还专门需要一些特殊的外围电路,如动态RAM中的预充电及刷新操作控制电路等,这也是存储器系统的重要组成部分。
4.1.3存储器的操作
存储器的操作主要由CPU控制完成,CPU对存储器的操作分为读操作和写操作。
对于动态存储器DRAM还有刷新操作。
读操作:
CPU发出要访问存储单元的地址码和读控制信号,把选中单元的数据取出来通过系统总线的数据线读到CPU内寄存器的过程。
写操作:
CPU发出要访问存储单元的地址码、写控制信号和要写入的数据,通过系统总线把要写入的数据写到选中单元中去的过程。
刷新操作:
对于动态存储器DRAM,由于电容放电现象,需要定期把其内容读出再写入的过程。
4.2存储器系统
存储器元件种类繁多,每种都有各自的特点,由于但到目前为止还没找到一个在”速度、性能、价格“三方面都能满足人类不同需要的存储器,所以,为了满足人类不同需要,就将这些存储器组织起来,综合发挥各自性能,这就构成了存储器系统。
存储器系统由将两个或两个以上速度、容量和价格各不相同的存储器用硬件、软件或软硬件相结合的方法组织起来,充分发挥各存储器在速度、容量、成本上的不同优势,而从总体上满足我们对存储器的大容量、快速、低成本的要求。
4.2.1存储器系统的组成
计算机中存储器系统的构成见图4-2.
图4-2存储器系统层次结构图
计算机多级存储体系中,主要有2级:
“Cache—主存”存储器级和“主存--辅助存储器”构成的虚拟存储器级。
4.2.1存储器系统的特点
•系统的存储速度接近最快的存储器;
•容量接近最大的存储器。
•整个系统性能提高很大,价格增加不多,系统性能价格比很高。
4.3高速缓冲存储器Cache
4.3.1问题的提出
微机系统中的内部存储器通常采用动态RAM构成,具有价格低,容量大的特点,但由于动态RAM采用MOS管电容的充放电原理来表示与存储信息,其存取速度相对于CPU的信息处理速度来说较低。
这就导致了两者速度的不匹配,也就是说,慢速的存储器限制了高速CPU的性能,影响了微机系统的运行速度,并限制了计算机性能的进一步发挥和提高。
高速缓冲存储器就是在这种情况下产生的。
4.3.2存储器访问的局部性
微机系统进行信息处理的过程就是执行程序的过程,这时,CPU需要频繁地与内存进行数据交换,包括取指令代码及数据的读写操作。
通过对大量典型程序的运行情况分析结果表明,在一个较短的时间内,取指令代码的操作往往集中在存储器逻辑地址空间的很小范围内(因为在多数情况下,指令是顺序执行的,因此指令代码地址的分布就是连续的,再加上循环程序段和子程序段都需要重复执行多次,因此对这些局部存储单元的访问就自然具有时间上集中分布的倾向);数据读写操作的这种集中性倾向虽不如取指令代码那么明显,但对数组的存储和访问以及工作单元的选择也可以使存储器单元相对集中。
这种对局部范围的存储器单元的防问比较频繁,而对此范围以外的存储单元访问相对甚少的现象,称为程序访问的局部性。
4.3.3“Cache-主存”存储结构及其实现
为了解决存储器系统的容量、存取速度及单位成本之间的矛盾,可以采用Cache--主存存储结构,即在主存和CPU之间设置高速缓冲存储器Cache,把正在执行的指令代码单元附近的一部分指令代码或数据从主存装入Cache中,供CPU在一段时间内使用,由于存储器访问的局部性,在一定容量Cache的条件下,我们可以做到使CPU大部分取指令代码及进行数据读写的操作都只要通过访问Cache,而不是访问主存而实现。
由于Cache的读写速度几乎能够与CPU匹配,所以“Cache-主存”存储结构使微机系统的存取速度可以大大提高;另外,Cache的容量相对主存来说并不是太大,所以整个存储器系统的成本并没有上升很多。
采用了Cache-主存存储结构以后,整个存储器系统的容量及单位成本能够主存相当,而存取速度可以与Cache的读写速度相当,这就很好地解决了存储器系统的上述三个方面性能之间的矛盾。
图4-3Cache-主存结构示意图
如图4-3所示,在主存和CPU之间增加了一个容量相对较小的双极型静态RAM作为高速缓冲存储器Cache,为了实现Cache与主存之间的数据交换,系统中还相应地增加了辅助的硬件电路。
管理这两级存储器的部件为Cache控制器,CPU与主存之间的数据传输必须由Cache控制器控制进行,Cache控制器将来自CPU的数据读写请求,转向Cache存储器,如果数据在Cache中,则CPU对Cache进行读写操作,称为一次命中。
命中时,CPU从Cache中读(写)数据。
由于Cache速度与CPU速度相匹配,因此不需要插入等待状态,故CPU处于零等待状态,也就是说也就是说CPU与Cache达到了同步;若数据不在Cache中,则CPU对主存操作,称为一次失败。
失败时,CPU必须在其总线周期中插入等待周期TW。
图4-4Cache存储系统基本结构
在主存—Cache存储体系中,所有的程序代码和数据仍然都存放在主存中,Cache存储器只是在系统运行过程中,动态地存放了主存中的一部分程序块和数据块的副本,这是一种以块为单位的存储方式。
块的大小称为“块长”,块长一般取一个主存周期所能调出的信息长度。
假设主存的地址码为n位,则其共有2n个单元,将主存分块(block),每块有B个字节,则一共可以分成2n/B块。
Cache也由同样大小的块组成,由于其容量小,所以块的数目小得多,也就是说,主存中只有一小部分块的内容可存放在Cache中。
在Cache中,每一块外加有一个标记,指明它是主存中哪一块的副本,所以该标记的内容相当于主存中块的编号。
假定主存地址为n=M+b位,其中M称为主存的块地址,而b则称为主存的块内地址,即:
主存的块数为2M,块内字节数为2b;同样,假定Cache地址n=N十b位,其中N称为Cache块地址,而b为Cache的块内地址,即Cache的块数为2N,块内字节数为2b,通常使主存与Cache的块内地址码数量相同,即b=b,即Cache的块内字节数与主存的块内字节数相同。
当CPU发出读请求时,将主存地址M位(或M位中的一部分)与Cache某块的标记相比较,根据其比较结果是否相等而区分出两种情况:
当比较结果相等时,说明需要的数据已在Cache中,那么直接访问Cache就行了,在CPU与Cache之间,通常一次传送一个字;当比较结果不相等时,说明需要的数据尚未调入Cache,那么就要把该数据所在的整个字块从主存一次调进来。
4.3.4Cache-主存存储结构的命中率
命中率指CPU所要访问的信息在Cache中的比率,相应地将所要访问的信息不在Cache中的比率称为失效率。
Cache的命中率除了与Cache的容量有关外,还与地址映象的方式有关。
目前,Cache存储器容量主要有256KB和512KB等。
这些大容量的Cache
存储器,使CPU访问Cache的命中率高达90%至99%,大大提高了CPU访问
数据的速度,提高了系统的性能。
4.3.5两级Cache-主存存储结构
CPU内部的Cache与主机板上的Cache就形成两级Cache结构。
CPU工作时,首先在第一级Cache(微处理器内的Cache)中查找数据,如果找不到,则在第二级Cache(主机板上的Cache)中查找,若数据在第二级Cache中,Cache控制器在传输据的同时,修改第一级Cache;如果数据既不在第一级Cache也不在第二级Cache中,Cache控制器则从主存中获取数据,同时将数据提供给CPU并修改两级Cache。
两级Cache结构,提高了命中率,加快了处理速度,使CPU对Cache的操作命中率高达98%以上。
图4-4给出了主板上Cache存储器系统的基本结构。
4.3.6Cache的基本操作
1.读操作
当CPU发出读操作命令时,要根据它产生的主存地址分两种情形:
一种是需要的数据已在Cache存储器中,那么只需直接访问Cache存储器,从对应单元中读取信息到数据总线;另一种是所需要的数据尚未装入Cache存储器,CPU在从主存读取信息的同时,由Cache替换部件把该地址所在的那块存储内容从主存拷贝到Cache中。
Cache存储器中保存的字块是主存相应字块的副本。
2.写操作
当CPU发出写操作命令时,也要根据它产生的主存地址分两种情形:
其一,命中时,不但要把新的内容写入Cache存储器中,必须同时写入主存,使主存和Cache内容同时修改,保证主存和副本内容一致,这种方法称写直达法或称通过式写(Write-through,简称通写法)。
其二,未命中时,许多微机系统只向主存写入信息,而不必同时把这个地址单元所在的主存中的整块内容调入Cache存储器。
4.3.7地址映象及其方式
我们知道,主存与Cache之间的信息交换,是以数据块的形式来进行的,为了把信息从主存调入Cache,必须应用某种函数把主存块映象到Cache块,称作地址映象。
当信息按这种映象关系装入Cache后,系统在执行程序时,应将主存地址变换为Cache地址,这个变换过程叫做地址变换(由于Cache的存储空间较小,因此,Cache中的一个存储块要与主存中的若干个存储块相对应,即若干个主存块将映象到同一个Cache块)。
根据不同的地址对应方法,地址映象的方式通常有直接映象、全相联映象和组相联映象三种。
1.直接映象
每个主存块映象到Cache中的一个指定块的方式称为直接映象。
在直接映象方式下,主存中某一特定存储块只可调入Cache中的一个指定位置,如果主存中另一个存储块也要调入该位置,则将发生冲突。
地址映象的方法:
将主存块地址对Cache的块号取模,即可得到Cache中的块地址,这相当于将主存的空间按Cache的大小进行分区,每区内相同的块号映象到Cache中相同
的块的位置。
一般来说,如果Cache被分成2N块,主存被分成同样大小的2M块,则主存与Cache中块的对应关系如图4-5所示。
直接映象函数可定义为:
j=imod2N
其中j是Cache中的块号;i是主存中的块号。
在这种映象方式中,主存的
第0块,第2N块,第2N+l块,…,只能映象到Cache的第0块,而主存的第1
块,第2N十l块,第2N+1十1块,…,只能映象到Cache的第1块,依次类推。
例如,一个Cache的大小为2K字,每个块为16字,这样Cache中共有128
个块。
假设主存的容量是256K字,则共有16384个块。
主存的地址码将有18
位。
在直接映象方式下,主存中的第1~128块映象到Cache中的第1~128块,
第129块则映象到Cache中的第1块,第130块映象到Cache中的第2块,依
次类推。
直接映象函数的优点是实现简单,缺点是不够灵活,尤其是当程序往返访问两个相互冲突的块中的数据时,Cache的命中率将急剧下降。
2.全相联映象
如图4-5所示,它允许主存中的每一个字块映象到Cache存储器的任何一个字块位置上,也允许从确实已被占满的Cache存储器中替换出任何一个旧字块当访问一个块中的数据时,块地址要与Cache块表中的所有地址标记进行比较以确定是否命中。
在数据块调入时,存在着一个比较复杂的替换策略问题,即决定将数据块调入Cache中什么位置,将Cache中哪一块数据调出到主存。
全相联方法块冲突的概率低,Cache的利用率高,是一种最理想的解决方案,但全相联Cache中块表查找的速度慢,由于Cache的速度要求高,因此全部比较和替换策略都要用硬件实现,控制复杂,实现起来也比较困难。
图4-5 直接映像示意图 图4-6全相联映像示意图
3.组相联映象
组相联映象方式是全相联映象和直接映象的一种折衷方案。
这种方法将存储空间分成若干组,各组之间是直接映象,而组内各块之间则是全相联映象。
如图4-7所示,在组相联映象方式下,主存中存储块的数据可调入Cache中一个指定组内的任意块中。
它是上述两种映象方式的一般形式,如果组的大小为1时就变成了直接映象;如果组的大小为整个Cache的大小时就变成了全相联映象。
图4-7 组相联映像示意图
例如,把Cache子块分成2C组,每组包含2R个字块,那么,主存字块MM(i)(0≤i≤2M-1)可以用下列映象函数映象到Cache字块MN(j)(0≤j≤2N-1)上:
j=(imod2C)×2R十k(0≤k≤2R-1)
例如,设C=3位,R=1位,考虑主存字块15可映象到Cache的哪一个字块中。
根据公式,可得:
j=(imod2C)×2R十k
=(15mod23)×21十k
=7×2十k
=14十k
又:
0≤k≤2R-1=21-1=1
即:
k=0或1
代入后得j=14(k=0)或15(k=1)。
所以主存模块15可映象到Cache字块14或15,在第7组。
同样可计算出主存字块17可映象到Cache的第0块或第1块,在第1组。
组相联映象方法在判断块命中以及替换算法上都要比全相联映象方法简单,块冲突的概率比直接映象方法的低,其命中率介于直接映象和全相联映象方法之间。
4.3.8替换策略
主存与Cache之间的信息交换,是以存储块的形式来进行的,主存的块长与Cache的块长相同,但由于Cache的存储空间较小,主存的存储空间较大,因此,Cache中的一个存储块要与主存中的若干个存储块相对应,若在调入主存中一个存储块时,Cache中相应的位置已被其它存储块占有,则必须去掉—个旧的字块,让位于一个新的字块。
这称为替换策略或替换算法。
常用的两种替换策略是:
先进先出(FIFO)策略和近期最少使用(LRU)策
略。
1.先进先出(FIFO)策略
FIFO(FirstInFirstOut)策略总是把一组中最先调入Cache存储器的字块替换出去,它不需要随时记录各个字块的使用情况,所以实现容易,开销小。
2.近期最少使用(LRU)策略
LRU(LeastRecentlyUsed)策略是把一组中近期最少使用的字块替换出去,
这种替换策略需随时记录Cache存储器中各个字块的使用情况,以便确定哪个
字块是近期最少使用的字块。
LRU替换策略的平均命中率比FIFO要高,并且
当分组容量加大时,能提高该替换策略的命中率。
图4-9 LRU算法替换登记表
LRU实现方法是:
把组中各块的使用情况记录在一张表上(如图4-9所示),并把最近使用过的块放在表的最上面,设组内有8个信息块,其地址编号为0,1,…,7。
当要求替换时,首先更新7号信息块的内容;如要访问7号信息块,则将7写到表的顶部,其它号向下顺移。
接着访问5号信息块,如果此时命中,不需要替换,也要将5移到表的顶部,其它号向下顺移。
6号数据块是以后要首先被替换的,……。
LRU策略的另一种实现方法是:
对Cache存储器中的每一个字块都附设一个计数器,记录其被使用的情况。
每当Cache中的一块信息被命中时,比命中块计数值低的信息块的计数器均加1,而命中块的计数器则清0。
显然,采用这种计数方法,各信息块的计数值总是不相同的。
一旦不命中的情况发生时,新信息块就要从主存调入Cache存储器,以替换计数值最大的那片存储区。
这时,新信息块的计数值为0,而其余信息块的计数值均加1,从而保证了那些活跃的信息块(即经常被命中或最近被命中的信息块)的计数值要小,而近来越不活跃的信息块的计数值越大。
这样,系统就可以根据信息块的计数值来决定先替换谁。
4.3.9P
中采用的Cache技术
为了提高CPU访问存储器的速度,在486和Pentium机中都设计了一定容量的数据Cache和指令Cache(L1),并且还可以使用处理器外部的第二级Cache(L2)。
PentiumPro在片内第一级Cache的设计方案中,也分别设置了指令Cache与数据Cache,指令Cache的容量为8kB,采用2路组相联映像方式。
数据Cache的容量也为8kB,但采用4路组相联映像方式。
它采用了内嵌式或称捆绑式L2Cache,大小为256kB或512kB。
此时的L2已经用线路直接连到CPU上,益处之一就是减少了对急剧增多L1Cache的需求。
L2Cache还能与CPU同步运行,即当L1Cache不命中时,立刻访问L2Cache,不产生附加延迟。
Pentium
是PentiumPro的改进型,同样有2级Cache,L1为32kB(指令和数据Cache各16kB)是PentiumPro的两倍,L2为512kB。
Pentium
与PentiumPro在L2Cache的不同是由于制作成本的原因。
此时,L2Cache已不在内嵌芯片上,而是与CPU通过专用64位高速缓存总线相联,与其它元器件共同被组装在同一基板上,即“单边接触盒”上。
Pentium
也是基于PentiumPro结构为核心,它具有32kB非锁定L1Cache和512kB非锁定L2Cache。
L2可扩充到1~2MB,具有更合理的内存管理,可以有效地对大于L2缓存的数据块进行处理,使CPU、Cache和主存存取更趋合理,提高了系统整体性能。
在执行视频回放和访问大型数据库时,高效率的高速缓存管理使P
避免了对L2Cache的不必要的存取。
由于消除了缓冲失败,多媒体和其它对时间敏感的操作性能更高了。
对于可缓存的内容,P
通过预先读取期望的数据到高速缓存里来提高速度,这一特色提高了高速缓存的命中率,减少了存取时间。
为进一步发挥Cache的作用,改进内存性能并使之与CPU发展同步来维护系统平衡,一些制造CPU的厂家增加了控制缓存的指令。
Intel公司也在Pentium
处理器中新增加了70条3D及多媒体的SSE指令集,其中有很重要的一组指令是缓存控制指令。
AMD公司在K6-2和K6-3中的3DNow多媒体指令中,也有从L1数据Cache中预取最新数据的数据预取指令(Prefetch)。
Pentium
处理器有两类缓存控制指令。
一类是数据据预存取(Prefetch)指令,能够增加从主存到缓存的数据流;另一类是内存流优化处理(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四章 存储器系统1 第四 存储器 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)