计算机组成原理笔记(三)

计算机组成原理笔记——存储系统

1、第三章:存储系统

通过下面的思维导图来依次分享「存储系统」里面重要知识点的笔记。

 

2、第一节:存储器的结构

1.  主存储器:简称主存,又称内存储器(内存),用来存放计算机运行期间所需的大量程序和数据,CPU可以直接随机地对其访问,也可以和高速缓冲存储器(Cache)以及辅助存储器交换数据。其特点是容量较小、存储速度较快、每位价格高。

2.  辅助存储器:简称辅存,又称外存储器(外存),是主存储器的后援存储器,用来存放当前暂时不用的数据和程序,以及一些需要永久性保存的信息,它不与CPU直接交换信息,其特点是容量极大、存储速度较慢、单位成本低。

3.  高速缓冲存储器:简称Cache,位于主存和CPU之间,用来存放正在执行的程序段和数据,以便CPU能够高速地使用它们。Cache的存储速度可以与CPU的存储速度相匹配,但存储容量小,价格高。

4.  随机存储器(RAM):存储器的任何一个存储单元的内容都可以随机存取,而且存取时间与存储单元的物理位置无关。同时RAM也是易失性存储器,即断电后存储信息即消失的存储器。其优点是读写方便、使用灵活,主要用作主存和高速缓冲存储器。

5.  只读存储器(ROM):存储器的内容只能随机读出而不能写入。信息一旦写入存储器就固定不变了,即使断电,内容也不会丢失。同时ROM也是非易失性存储器,即断电后信息仍保持的存储器。因此,通常用它存放固定不变的程序、常数和汉字字库,甚至用于操作系统的固化。它与随机存储器可共同作为主存的一部分,统一构成主存的地址域。

6.  串行访问存储器:对存储单元进行读/写操作时,需按其物理位置的先后顺序寻址,包括顺序存取存储器(如磁带)与直接存取存储器(如磁盘)。

7.  多级存储系统:主存与CPU直接相连,辅存与主存直接相连,同时Cache介于CPU与主存之间,分别于CPU和主存相连。其中“Cache—主存”层次主要是解决CPU与主存速度不匹配问题,“主存—辅存”层次主要的解决存储系统的容量的问题。在存储系统中,Cache、主存能与CPU直接交换信息,辅存则要通过主存与CPU交换信息。

补充:主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的(即不可见的),而主存和辅存之间的数据调动则是由硬件和操作系统共同完成的,对应用程序员的透明的(即不可见的)。

3、第二节:半导体随机存储器

1.  半导体存储芯片的基本结构如下:

①存储矩阵:由大量相同的位存储单元阵列构成。

②译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号再读写电路的配合下完成对被选中单元的读/写操作。

③读写电路:包括读出放大器和写入电路,用来完成读/写操作。

④读/写控制线:决定芯片进行读/写操作。

⑤片选线:确定哪个存储芯片被选中。

⑥地址线:是单向输入的,其位数与存储字的个数有关。

⑦数据线:是双向的,其位数与读出或写入的数据位数有关,数据线数与地址线数共同反映存储芯片容量的大小。

2.  存储体的构成:把存放一个二进制的物理器件称为存储元,它是存储器的最基本构件;地址码相同的多个存储元构成一个存储单元,由若干存储单元的集合构成存储体。

3.  静态随机存储器(SRAM):其存储元是用双稳态触发器(六管MOS)来记忆信息的,因此即使信息被读出后,它仍保持其原状态而不需要再生(非破坏性读出)。但是只要电源被切断,原来保存的信息便会消失,故属于易失性半导体存储器。

SRAM的存取速度快,但集成度低,功耗较大,所以一般用来组成高速缓冲存储器。

4.  动态随机存储器(DRAM):是利用存储元电路中栅极电容上的电荷来存储信息的;DRAM采用地址复用技术,地址线是原来的1/2,且地址信号分行、列两次传递;DRAM电容上的电荷一般只能维持1~2ms,因此即使电源不掉电,信息也会自动消失,为此,每隔一定时间必须刷新,通常取2ms,这个时间称为刷新周期。

相对于SRAM来说,DRAM具有容易集成、价位低、容量大和功耗低等优点,但是DRAM的存取速度比SRAM慢,一般用来组成大容量主存系统。

5.  只读存储器(ROM):ROM和RAM都是支持随机存取的存储器,其中SRAM和DRAM均为易失性存储器,而ROM中一旦有了信息,就不能轻易改变,即使掉电也不会丢失,它在计算机系统中是只供读出的存储器。其优点为结构简单,所以位密度比可读写存储器高,具有非易失性,所以可靠性高。

6.  ROM的类型:根据制造工艺的不同,ROM可分为掩膜式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、闪速存储器(Flash Memory)和固态硬盘(Solid State Drives)。

  

4、第三节:主存储器与CPU的连接

1.  主存储器与CPU的连接图如下:

连接原理为:

①主存储器通过数据总线、地址总线和控制总线与CPU连接

②数据总线的位数与工作频率的乘积正比于数据传输速率。

③地址总线的位数决定了可寻址的最大内容空间。

④控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻。

2.  主存的扩容方法:

①位扩展法:用多个存储器件对字长进行补充,增加存储字长,使其数据位数与CPU的数据线数相等。位扩展的连接方式是将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出。

②字扩展法:增加存储器中字的数量,而位数不变。字扩展将芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围。

③字位同时扩展法:指既增加存储字的数量,又增加存储字长。

5、第四节:双口RAM和多模块存储器

1.  双端口RAM:指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元。

2.  多模块存储器:为提高访问速度,常采用多模块存储器,常用的有单体多字存储器和多体并行存储器。

①单体多字存储器:指存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字,地址必须顺序排列并处于同一存储单元。

②多体并行存储器:指由多体模块组成,每个模块都有相同的容量和存储速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。

6、第五节:高速缓冲存储器

1.  时间局部性指在最近的未来要用到的信息,很可能是现在正在使用的信息,这是因为程序存在循环。

2.  空间局部性:指在最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是临近的,这是因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组、表等形式簇聚地存储在一起的。

3.  高速缓冲技术:利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而使程序的执行速度大大提高。

4.  高速缓冲存储器(Cache)的工作原理:Cache位于存储器层次结构的顶层,通常由SRAM构成。Cache和主存被分成若干大小相等的快(Cache块又称为Cache行),每块由若干字节组成,块的长度称为长(Cache行长)。由于Cache的容量远小于主存的容量,所以Cache中的块数要远少于主存中的块数,它仅保存主存中最活跃的若干块的副本。故而Cache按照某种策略,预测CPU在未来一段时间内欲访存的数据,将其装入Cache。

当CPU发出读请求时,如果访存地址在Cache中命中,就将此地址转换成Cache地址,直接对Cache进行读操作,与主存无关;如果Cache不命中,则仍需访问主存,并把此字所在的块一次从主存调入Cache内。若此时Cache已满,则需根据某种替换算法,用这个快替换掉Cache中原来的某块信息。(注意:CPU与Cache之间的数据交换以字为单位,而Cache与主存之间的数据交换则是以Cache块为单位。)

5.  Cache和主存的映射:指把主存地址空间映射到Cache地址空间,也就是把存放在主存中的程序按照某种规则装入Cache中。Cache和主存的映射方式有:

①直接映射:主存数据块只能装入Cache中的唯一位置。若这个位置已有内容,则产生冲突,原来的块将无条件地替换出去(无需使用替换算法)。直接映射实现简单,但不够灵活,直接映射的块冲突概率最高,空间利用率最低。

②全相联映射:可以把主存数据块装入Cache中的任何位置。全相联映射方式的优点是比较灵活,Cache块的冲突概率低,空间利用率高,命中率也高;缺点是地址变换速度慢,实现成本高。

③组相联映射:将Cache空间分成大小相同的组,主存的一个数据块可以装入到一组内的任何一个位置,即组间采用直接映射,而组内采用全相联映射。它是对直接映射和全相联映射的一种折中。

6.  Cache中主存块的替换算法:在采用全相联映射和组相联映射方式时,从主存向Cache传送一个新快,当Cache中的空间已被占满时,就需要使用替换算法置换Cache行。替换算法有:

①随机算法(RAND):随机地确定替换的Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低。

②先进先出(FIFO)算法:选择最早调入的行进行替换。但也没有依据程序访问的局部性原理,可能会把一些经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉。

③近期最少使用(LRU)算法:依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FIFO要高,是堆栈类的算法。

LFU算法对每行设置一个计数器,Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。

④最不经常使用(LFU)算法:将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出

7.  Cache写策略:因Cache中的内容是主存块副本,当对Cache中的内容进行更新时,就需选用写操作策略使Cache内容和主存内容保持一致。此时有两种情况:

对于Cache写命中:

①全写法(也称写直通法、write-through):

当CPU对Cache写命中时,必须把数据同时写入Cache和主存。当某一块需要替换时,不必把这一块写回主存,将新调入的块直接覆盖即可。该方法实现简单,能随时保持主存数据的正确性。缺点是增加了访存次数,降低了Cache的效率。

②写回法(write-back):

当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。采用这种策略时,每个Cache行必须设置一个标志位(脏位),以反映此块是否被CPU修改过。

对于Cache写不命中:

①写分配法(write-allocate):加载主存中的块到Cache中,然后更新这个Cache块,它试图利用程序的空间局部性,但缺点是每次不命中都需要从主存中读取一块。

②非写分配法(not-write-allocate):只写入主存,不进行调块。

说明:非写分配法通常与全写法合用;写分配法通常和写回法合用。

7、第六节:虚拟存储器

1.  虚拟存储器:主存和联机工作的辅存共同构成了虚拟存储器,二者在硬件和系统软件的共同管理下工作。对于应用程序员而言,虚拟存储器是透明的。虚拟存储器具有主存的速度和辅存的容量,提高了存储器的性能价格比。

2.  虚拟存储器的特点:虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,在这个空间内,用户可以自由编程,而不必在乎实际的主存容量和程序在主存中实际的存放位置。用户编程允许涉及的地址称为虚地址或者逻辑地址,虚地址对于的存储空间称为虚拟空间或程序空间。实际的主存单元地址称为实地址或者物理地址,实地址对应的是主存地址空间,也称为实地址空间。虚地址比实地址要大很多。

3.  页式虚拟存储器:以页为基本单位的虚拟存储器称为页式虚拟存储器。虚拟空间与主存空间都被划分成同样大小的页,主存的页称为实页,虚存的页称为虚页。把虚拟地址分为两个字段:虚页号和页内地址。虚地址到实地址之间的变换是由页表来实现的。页表是一张存放在主存中的虚页号和实页号的对照表,记录着程序的虚页调入主存时被安排在主存中的位置。页表一般长久地保存在内存中。

4.  段式虚拟存储器:段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。把虚拟地址分为两部分:段号和段内地址。虚拟地址到实地址之间的变换是由段表来实现的。段表是程序的逻辑段和在主存中存放位置的对照表。段表的每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。

5.  段页式虚拟存储器:

把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位,这样的虚拟存储器称为段页式虚拟存储器。在段页式虚拟存储器中,每个程序对应一个段表,每段对应一个页表,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

此时虚地址分为段号、段内页号、页内地址三部分。CPU根据虚地址访存时,首先根据段号得到段表地址:然后从段表中取出该段的页表起始地址,与虚地址段内页号合成, 得到页表地址:最后从页表中取出实页号,与页内地址拼接形成主存实地址。

将自己的学习笔记通过本博客展现出来,也是对自己学习的一种记录。

             扫一扫,关注公众号

猜你喜欢

转载自blog.csdn.net/ziyu_one/article/details/86654725