欢迎光临
我们一直在努力

408 计算机组成原理 知识点记忆(3)存储系统

408 计算机组成原理 知识点记忆(3)存储系统

前言

本文基于王道考研《计算机组成原理考研复习指导》、竟成《计算机组成原理考研复习指导》与唐朔飞《计算机组成原理》(第2版)、袁春风《计算机组成与系统结构》教材内容,结合 408 考研大纲,系统梳理存储系统的核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。

本章围绕"速度—容量—成本"这个不可能三角展开,层次化存储结构是主线,Cache 与主存、主存与外存的两级映射是考点密集区。

核心知识记忆点+理解性说明

第三章 存储系统

1. 存储器的分类

作用层次:主存储器、辅助存储器、高速缓冲存储器
存储介质:磁表面(磁带、磁盘)磁芯存储器,半导体存储器(MOS型存储器(SRAM、DRAM)、双极型存储器)和光存储器(光盘)。
存取方式:随机存储器(RAM),只读存储器(ROM 多用于系统程序BIOS,字符发生器和微程序控制器中的控制存储器),串行访问存储器:顺序存取(磁带)、DMA直接存取存储器(磁盘、光盘)兼有随机访问和顺序访问的特点 可直接选取所需信息所在区域,然后按顺序方式存取
按内容检索到存储位置,按内容访问存储器或相联存储器
信息可保持性:断电后,存储信息即消失的存储器,称为易失性存储器,如磁芯存储器和RAM。断电后信息仍然保持的存储器,称为非易失性存储器,如ROM、磁表面存储器和光存储器。
若某个存储单元所存储的信息被读出时,原存储信息被破坏,则称为破坏性读出;若读出时,被读单元原存储信息不被破坏,则称为非破坏性读出。具有破坏性读出性能的存储器,每次读出操作后,必须紧接一个再生的操作,以便恢复被破坏的信息。

存储容量=存储字数×字长(如1Mx8位)。单位换算:1B(Byte,字节)=8b(bit,位)。存储字数表示存储器的地址空间大小,字长表示一次存取操作的数据量。单位成本:位价=总成本/总容量。
存储速度:数据传输速率(每秒传送信息的位数)=数据的宽度/存取周期。

存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
存取周期™:存取周期是指存储器进行一次完整的读/写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。
主存带宽 (Bm)(B_{m})(Bm):也称数据传输速率,表示每秒从主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。存取时间不等于存取周期,通常存取周期大于存取时间。这是因为对任何一种存储器,在读/写操作之后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,甚至可达 Tm=2TaT_{m}=2TaTm=2Ta,因为存储器中的信息读出后需要马上进行再生。

2. 层次化存储器的基本结构

在这里插入图片描述

在这里插入图片描述

Cache-主存层主要解决CPU和主存速度不匹配的问题,主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的。主存-辅存层主要解决存储系统的容量问题,主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员是透明的。

3. 半导体随机存储器(RAM) SRAM、DRAM、Flash 存储器

在这里插入图片描述

内存主要 DRAM 动态存储器 易失性栅极电容 单晶体管
cache SRAM 双稳态触发器 非破坏性读出
刷新通过对存储单元进行了“读但不输出数据”、“假读”操作实现
刷新方式:对cpu透明,DRAM刷新单位为行,刷新无需选片

刷新时只给各芯片送行地址和RAS信号,芯片中某一行的所有位元被选中并进行读操作,每次读后再生,即某位元读出是0则充分放电,读出是1则进行充电。
芯片内部有一个行地址生成器(也称刷新计数器),由它自动生成刷新行地址,因而刷新计数器的位数与行地址位数相同。

集中刷新:在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行进行逐一再生,在此期间停止对存储器的读/写操作,称为死时间,也称访存死区。优点是读/写操作期间不受刷新操作的影响;缺点是在集中刷新期间(死区)不能访问存储器。

在这里插入图片描述

如图为16行的DRAM,每刷新一行用时 0.5μ s0.5\\mu\\,s0.5μs,而每次集中刷新相隔2ms。所以2ms内有 2ms/0.5μ s=40002ms/0.5\\mu\\,s=40002ms/0.5μs=4000 个正常的读写周期,其后16个周期被用于给16行每行刷新一次,此时CPU无法对DRAM进行读写操作。前 4000−16=39844000-16=3984400016=3984 个周期作为存储周期,用于CPU对DRAM的正常读写操作。故死时间长度为
16×0.5μ s=8μ s16 \\times 0.5\\mu\\,s=8\\mu\\,s16×0.5μs=8μs,死时间率为 8/(2×103)=0.4%8/(2 \\times 10^{3})=0.4\\%8/(2×103)=0.4%

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

分散刷新:将一个存储器系统的工作周期分为两部分:前半部分用于正常的读/写操作;后半部分用于刷新。这种刷新方式增加了系统的存取周期,如存储芯片的存取周期为0.5μs,则系统的存取周期为1μs。优点是没有死区;缺点是加长了系统的存取周期。

假设新的存储周期为1μs,而DRAM一共有16行,那么只用了16μs就完整地刷新了一次DRAM,刷新过于频繁。

异步刷新:结合了前两种方法,使得在一个刷新周期内每一行仅刷新一次。具体做法是将刷新周期除以行数,得到相邻两行之间刷新的时间间隔t,每隔时间t产生一次刷新请求。这样就使“死时间”的分布更加分散,避免让CPU连续等待过长的时间。

在这里插入图片描述

假设每刷新一行为 0.5μ s0.5\\mu\\,s0.5μs,一共有16行,则每隔 2/16=0.125ms2/16=0.125ms2/16=0.125ms 就刷新下一行的DRAM存储单元(若已到最后一行则回归第0行进行刷新操作)。这样并没有降低死时间占总体时间的占比,但是死时间不再聚集分布,因此死时间可以认为是 0.5μ s0.5\\mu\\,s0.5μs,与上例中集中刷新下的 8μ s8\\mu\\,s8μs 相比有很大的进步。

DRAM芯片容量较大,地址位数较多,为了减少芯片的地址引脚数,通常采用地址引脚复用技术,行地址和列地址通过相同的引脚分先后两次输入,这样地址引脚数可减少一半。
芯片内部有一个行缓冲器,用来缓存指定行中每列的数据,其大小为列数×存储元的位数,常用SRAM实现。选中某行后,该行的所有数据都被送到行缓冲器,以后每个时钟都可以连续地从DRAM中输出一个数据,因此可支持突发传输(突发传输方式是指在寻址阶段给出数据的首地址,在传输阶段可传送多个连续存储单元的数据)。

SDRAM(同步DRAM)芯片,与传统的异步DRAM不同,SDRAM与CPU的数据交换同步于系统的时钟信号,并且以CPU-主存总线的最高速度运行,而不需要插入等待状态。
在传统DRAM中,CPU将地址和控制信号送至存储器后,需经过一段延迟时间,数据才读出或写入。在此期间,CPU不断采样DRAM的完成信号,在读写完成之前,CPU不能做其他工作,降低了CPU的执行速度。
而SDRAM在系统时钟的控制下进行数据的读出和写入,它将CPU发出的地址和控制信号锁存起来,经过指定的时钟周期数后再响应,此时CPU可执行其他操作。
包括DDRSDRAM,DDR2SDRAM,DDR3SDRAM等
DDRSDRAM:通过芯片内部中数据的两位预取功能,利用存储器总线上时钟信号的上升沿与下降沿进行两次传送,以实现一个时钟周期内传送两次数据的功能
DDR2 4位预取
DDR3 8位预取
内存条插槽即是存储器总线

在这里插入图片描述

在这里插入图片描述

存储器芯片由存储体、I/O写电路、地址译码器和控制电路等部分组成。
线选法 通过n个地址引脚可定义一个大小为 2n2^{n}2n 字的地址空间
双译码

地址译码器。地址译码有一维译码和二维译码两种方式。
一维方式也称为线选法或单译码法,适用于小容量的静态存储器;
二维方式也称为重合法或双译码法,适用于容量较大的动态存储器。
在单译码方式下,只有一个行译码器,同一行中所有存储单元的字线连在一起,接到地址译码器的输出端,这样,被选中行中的各单元构成一个字,被同时读出或写入,这种结构的存储器芯片被称为字片式芯片。

驱动器。在双译码结构中,一条X方向的选择线要控制在其上的各个存储单元的字选择线,所以负载较大,因此需要在译码器输出后加驱动器。

ROM中所有带E的种类均可再次写入。

掩模式只读存储器
MROM 的内容由半导体制造厂商按用户提出的要求在芯片的生产过程中直接写入,写入以后任何人都无法改变其内容。优点是可靠性高、集成度高、价格便宜;缺点是灵活性差。

一次可编程只读存储器
PROM是可以实现一次性编程的只读存储器,允许用户利用专门的设备(编程器)写入自己的程序,一旦写入,内容就无法改变。

可擦除可编程只读存储器
EPROM不仅可以由用户利用编程器写入信息,而且可以对其内容进行多次改写。EPROM虽然既可读又可写,但它不能取代RAM,因为EPROM的编程次数有限,且写入时间过长。

Flash 存储器
Flash 存储器是在EPROM的基础上发展起来的,它兼有ROM和RAM的优点,可在不加电的情况下长期保存信息,又能在线进行快速擦除与重写。Flash存储器既有EPROM价格便宜、集成度高的优点,又有E2PROM电可擦除重写的特点,且擦除重写的速度快。闪存有3种基本操作:编程(充电)、擦除(放电)、读取。
写的过程实际上是先全部擦除,使全都变成1状态后再在需要的地方改写为0,即先全部放电,再在写0的地方充电。
Flash存储器的读操作速度和写操作速度相差很大,其读取速度与半导体RAM芯片相当,而写数据(擦除-编程)的速度则比RAM芯片慢很多。

固态硬盘(Solid State Drive,SSD)
基于闪存的固态硬盘是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(Flash芯片)组成。保留了Flash 存储器长期保存信息、快速擦除与重写的特性。对比传统硬盘也具有读/写速度快、低功耗的特性,缺点是价格较高。

4. 主存储器

A. DRAM芯片和内存条

位扩展法
位扩展是指对字长进行扩展(增加存储字长)。当CPU的系统数据线数多于存储芯片的数据位数时,必须对存储芯片扩位,使其数据位数与CPU的数据线数相等。
位扩展的连接方式:各芯片的地址线、片选控制线和读/写控制线与系统总线相应并联;各芯片的数据线单独引出,分别连接系统数据线。各芯片同时工作。

字扩展法
字扩展是指对存储字的数量进行扩展,而存储字的位数满足系统要求。系统数据线位数等于芯片数据线位数,系统地址线位数多于芯片地址线位数。
字扩展的连接方式:各芯片的地址线与系统地址线的低位对应相连;芯片的数据线和读/写控制线与系统总线相应并联;由系统地址线的高位译码得到各芯片的片选信号。各芯片分时工作。

字位同时扩展法
字位同时扩展是前两种扩展的组合,这种方式既增加存储字的数量,又增加存储字长。
将进行位扩展的芯片作为一组,各组的连接方式与位扩展的相同;由系统地址线高位译码产生若干片选信号,分别接到各组芯片的片选控制线。

线选法 片选地址每次只能一位有效,不允许同时多位有效,保证每次只选中一个芯片(芯片组)译码片选法 先传送行地址,再传送列地址

CPU地址线低位与存储芯片地址线相连,以选中芯片中某一单元(字选),这部分的译码由芯片的片内逻辑完成CPU地址线高位在扩充存储芯片,选择存储芯片(片选),这部分译码由外接译码器逻辑完成

B. 多模块存储器

单体多字存储器
在单体多字系统中,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字。在一个存取周期内,从同一地址取出m条指令,然后将指令逐条送至CPU执行,即每隔 1/m1/m1/m 存取周期,CPU向主存取一条指令。

多体并行存储器
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读/写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。多体并行存储器分为高位交叉编址和低位交叉编址两种。

高位交叉编址(顺序方式)
高位地址表示模块号(或体号),低位地址为模块内地址(或体内地址)。

低位交叉编址(交叉方式)
在低位交叉方式下,总是把高位的体内地址送到由低位体号所确定的模块内进行译码。程序连续存放在相邻模块中,因此称采用此编址方式的存储器为交叉存储器。交叉存储器可以采用轮流启动或同时启动两种方式。

轮流启动方式
若每个模块一次读/写的位数正好等于数据总线位数,模块的存取周期为T,总线周期为r,为实现轮流启动方式,存储器交叉模块数应大于或等于 m=T/rm = T/rm=T/r
在理想情况下,m体交叉存储器每隔 1/m1/m1/m 存取周期可读/写一个数据,若相邻的m次访问的访存地址出现在同一个模块内,则会发生访存冲突,此时需延迟发生冲突的访问请求。

同时启动方式
若所有模块一次并行读/写的总位数正好等于数据总线位数,则可以同时启动所有模块进行读/写。

C. 主存储器和CPU之间的连接

在这里插入图片描述

若是写操作,则CPU同时将要写的信息送到MDR中,在读/写控制电路的控制下,经数据线将信号写入选中的单元;若是读操作,则主存读出选中单元的内容送至数据线,然后被送到MDR中。

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

5. 外部存储器

1. 磁盘存储器

磁盘设备的组成
磁盘存储器组成:磁盘驱动器、磁盘控制器、盘片
● 磁盘驱动器。驱动磁盘转动并在盘面上通过磁头进行读/写操作的装置。
● 磁盘控制器。磁盘驱动器与主机的接口,负责接收并解释CPU发来的命令,向磁盘驱动器发出各种控制信号,并负责检测磁盘驱动器的状态。

在写磁盘时,总是在一个柱面的所有磁道上写完后,再移到下一个柱面的各磁道上写信息。磁道从外向里编址,最外面的为磁道0。

在这里插入图片描述

存储区域。一个磁盘含有若干记录面,每个记录面划分为若干圆形的磁道,而每条磁道又划分为若干扇区,扇区(也称块)是磁盘读/写的最小单位,即磁盘按块存取。
● 磁头数(Heads):即记录面数,表示磁盘共有多少个磁头,磁头用于读取盘片上记录面的信息和写入信息,一个记录面对应一个磁头。● 柱面数(Cylinders):表示磁盘每面盘片上有多少条磁道。在一个盘组中,不同记录面的相同编号(位置)的诸磁道构成一个圆柱面。● 扇区数(Sectors):表示每条磁道上有多少个扇区。
相邻磁道及相邻扇区间通过一定的间隙分隔开,以避免精度错误。扇区按固定圆心角度划分,因此位密度从最外道向里道增加,磁盘的存储能力受限于最内道的最大记录密度。
磁盘高速缓存(Disk Cache)。在内存中开辟一部分区域,用于缓冲将被送到磁盘上的数据。优点:写磁盘时是按“簇”进行的,可以避免频繁地用小块数据写盘;有些中间结果数据在写回磁盘之前可被快速地再次使用。

磁记录原理
原理:磁头和磁性记录介质相对运动时,通过电磁转换完成读/写操作。
编码方法:按某种方案(规律),把一连串的二进制数据变换成存储介质磁层中一个磁化翻转状态的序列,并使读/写控制电路容易、可靠地实现转换。
磁记录方式:通常采用调频制(FM)和改进型调频制(MFM)的记录方式。

记录密度。记录密度是指盘片单位面积上记录的二进制数据量,通常以道密度、位密度和面密度表示。道密度是沿磁盘半径方向单位长度上的磁道数,位密度是磁道单位长度上能记录的二进制代码位数,面密度是位密度和道密度的乘积。
低密度存储方式下,所有磁道上的扇区数相同,因此每个磁道上的位数相同,因而内道上的位密度比外道位密度高;
高密度存储方式下,每个磁道上的位密度相同,因此外道上的扇区数比内道上扇区数多,因而整个磁盘的容量比低密度盘高得多。

磁盘的容量。磁盘容量有非格式化容量和格式化容量之分。
格式化后的容量比非格式化容量要小。
磁盘的未格式化容量是指按道密度和位密度计算出来的容量。
对于低密度存储方式:磁盘总容量=记录面数×理论柱面数×内圆周长×最内道位密度
格式化后的实际容量只包含数据区。通常,记录面数约为盘片数的两倍。假定按每个扇区512字节算,则磁盘实际数据容量(也称格式化容量)的计算公式为 磁盘实际数据容量=2×盘片数×磁道数/面×扇区数/磁道×512B/扇区

存取时间。存取时间由寻道时间(磁头移动到目的磁道的时间)、旋转延迟时间(磁头定位到要读/写扇区的时间)和传输时间(传输数据所花费的时间)三部分构成。
因为寻道和找扇区的距离远近不一,所以寻道时间和旋转延迟时间通常取平均值(平均寻道时间取从最外道移动到最内道时间的一半,平均旋转延迟时间取旋转半周的时间)。
因为数据传输时间相对于寻道时间和等待时间来说非常短,所以,磁盘的平均存取时间通常近似等于平均寻道时间和平均等待时间之和。而且,磁盘第一位数据的读写延时非常长,相当于平均存取时间,而以后各位数据的读写则几乎没有延迟。

数据传输速率。磁盘存储器在单位时间内向主机传送数据的字节数,称为数据传输速率。假设磁盘转数为r转/秒,每条磁道容量为N字节,则数据传输速率为 Dr=rNDr= rNDr=rN

磁盘地址
磁盘组号 柱面(磁道)号 盘面(磁头)号 扇区号
磁盘的主要操作是寻址、读盘、写盘。
每个操作都对应一个控制字,磁盘工作时,第一步是取控制字,第二步是执行控制字。磁盘属于机械式部件,其读/写操作是串行的,不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据。

数据在磁盘上的记录格式分定长记录格式和不定长记录格式两种。目前大多采用定长记录格式。

在这里插入图片描述

每个磁道由若干扇区(也称扇段)组成,每个扇区记录一个数据块,每个扇区有头空(间隙1)、ID域、间隙2、数据域和尾空(间隙3)组成。头空占17字节,不记录数据,用全1表示,磁盘转过该区域的时间是留给磁盘控制器作准备用的;ID域有同步字节、磁道号、磁头号、扇段号和相应的CRC码组成;数据域占515字节,有同步字节、数据和相应的CRC码组成,其中真正的数据区占512字节;尾空是在数据块的CRC码后的区域,占20字节,也用全1表示。

在RAID1~RAID5几种方案中,无论何时有磁盘损坏,都可随时拔出受损的磁盘再插入好的磁盘,而数据不会损坏,提升了系统的可靠性。RAID0:无冗余和无校验的磁盘阵列。把连续多个数据块交替存放在不同物理磁盘地址,几个磁盘交叉并行读/写,条带化技术。RAID1:镜像磁盘阵列。两个磁盘同时读/写,互为备份。
RAID2:采用纠错的海明码的磁盘阵列。
RAID3:位交叉奇偶校验的磁盘阵列。
RAID4:块交叉奇偶校验的磁盘阵列。
RAID5:无独立校验的奇偶校验磁盘阵列。

为了判断一种码制的冗余程度,并评估它的查错和纠错能力,引入了“码距”的概念。由若干位代码组成的一个字叫“码字”,将两个码字逐位比较,具有不同位的个数叫作这两个码字间的“距离”。一种码制可能有若干码字,各码字间的最小距离称为“码距”。

当码距 1<d≤41<d \\le 41<d4 时,关系如下。

  • 如果码距d为奇数,则能发现 d−1d-1d1 位错,或者能纠正(d-1)/2位错。(2)如果码距d为偶数,则能发现 d/2d/2d/2 位错,并能纠正(d/2-1)位错。
  • 若采用奇校验位,则 P=Mn−1⊕Mn−2⊕⋯⊕M1⊕M0⊕1P=M_{n-1} \\oplus M_{n-2} \\oplus \\cdots \\oplus M1 \\oplus M0 \\oplus 1P=Mn1Mn2M1M01。即当M有奇数个1时P取0,否则,P取1。
    若采用偶校验位,则 P=Mn−1⊕Mn−2⊕⋯⊕M1⊕M0P=M_{n-1} \\oplus M_{n-2} \\oplus \\cdots \\oplus M1 \\oplus M0P=Mn1Mn2M1M0

  • 校验位的位数的确定
    假定被校验数据的位数为n,校验位为k位,则故障字的位数也为k位。k位的故障字所能表示的状态最多是2种,每种状态可用来说明一种出错情况。对于最多只有一位错的情况,其结果可能是无错或n位数据中某一位出错或k位校验码中某一位出错。因此,共有1+n+k种情况。综上可知,要能对一位错的所有结果进行正确表示,则n和k必须满足下列关系:
    2k≥1+n+k2^{k} \\ge 1+n+k2k1+n+k,即 2k−1≥n+k2^{k}-1 \\ge n+k2k1n+k

  • 分组方式的确定
    数据位和校验位按某种方式排列为一个n+k位的码字,将该码字中每一位的出错位置与故障字的数值建立关系,就可通过故障字的值确定该码字中哪一位发生了错误,从而将其取反来进行纠正。
    根据上述基本思想,可以按以下规则来解释各故障字的值。

  • 如果故障字各位全部是0,则表示没有发生错误。

  • 如果故障字中有且仅有一位为1,则表示校验位中有一位出错,不需要纠正。

  • 如果故障字中多位为1,则表示有一个数据位出错,其在码字中的出错位置由故障字的数值来确定。纠正时只要将出错位取反即可。这里以8位数据进行单个位的检错/纠错为例说明。假定一个8位数据 M=M8M = M8M=M8 M7 M6 M5 M4 M3 M2 M1,其相应的4位校验位为 P=P4P3P2P1P=P4P3P2P1P=P4P3P2P1。根据上述规则将数据M和校验位P按照一定的规律排到一个12位的码字中。根据上述第一个规则,故障字为0000时,表示无错,因此没有和位置号0000对应的出错情况,所以位置号从0001开始。根据第二个规则,校验位中有一位出错时的故障字只可能是0001、0010、0100、1000,分别代表校验位P1、P2、P3、P4发生错误,因此,P1、P2、P3、P4分别位于码字第0001(1)、0010(2)、
    0100(4)、1000(8)位。根据最后一个规则,将其他多位为1的故障字依次表示数据位M1M8发生错误的情况,即数据位M1M8。分别位于码字的第0011(3)、0101(5)、0110(6)、0111(7)、1001(9)、1010(10)、1011(11)、1100(12)位(从左往右数)。综上所述,得到码字的排列如下: M8 M7 M6 M5 P4 M4 M3 M2 P3 M1 P2 P1
    通过对各种出错情况的分析,可以得到故障字 S=S4S3S2S1S=S4S3S2S1S=S4S3S2S1 的各个状态和出错情况的对应关系。因为故障字的值决定了哪位出错,所以,某位出错一定会影响与之相对应的故障字中为1的位所在组的奇偶性。例如,若位于码字第3位的M1出错,则对应故障字 S1S3S2S1=0011S1S3S2S1=0011S1S3S2S1=0011,因此一定会改变S1和S2所在分组的奇偶性,故M1应同时被分到与S1对应的第1组和与S2对应的第2组。同理,P1对应故障字0001,故P1应被分到与S1对应的第1组;M8对应故障字1100,故应分到与S3对应的第3组和与S1对应的第4组。第i组中有一个对应的奇偶校验位 PiP_{i}Pi

  • 在这里插入图片描述

  • 校验位的生成和检错、纠错
    分组完成后,就可对每组采用相应的奇(偶)校验,以得到相应的一个校验位。假定有10个数据位,即 M=M10M= M10M=M10 M9 M8 M7 M6 M5 M4M3 M2 M1,采用偶校验,则4个校验位与10个数据位之间存在如下关系:
    P1=M1⊕M2⊕M4⊕M5⊕M7⊕M9P1=M1 \\oplus M2 \\oplus M4 \\oplus M5 \\oplus M7 \\oplus M9P1=M1M2M4M5M7M9
    P2=M1⊕M3⊕M4⊕M6⊕M7⊕M10P2=M1 \\oplus M3 \\oplus M4 \\oplus M6 \\oplus M7 \\oplus M10P2=M1M3M4M6M7M10
    P3=M2⊕M3⊕M4⊕M8⊕M9⊕M10P3=M2 \\oplus M3 \\oplus M4 \\oplus M8 \\oplus M9 \\oplus M10P3=M2M3M4M8M9M10
    P4=M5⊕M6⊕M7⊕M8⊕M9⊕M10P4=M5 \\oplus M6 \\oplus M7 \\oplus M8 \\oplus M9 \\oplus M10P4=M5M6M7M8M9M10
    根据上面的公式,可以求出每一组对应的校验位 Pi(i=1,2,3,4)P_{i}(i=1,2,3,4)Pi(i=1,2,3,4)。数据M和校验位P一起被存储。读出后的数据M’通过上述同样的公式生成得到新的校验位P’,然后将读出后的校验位P’与新生成的校验位P’按位进行异或操作,得到故障字 S=S4S=S4S=S4 S3 S2 S1,根据S的值可以确定是否发生了错误,并且在发生错误时能确定是校验位发生错误还是哪个数据位发生了错误。
  • 在这里插入图片描述

    从上述数据位数 n=8n=8n=8、校验位数 k=4k=4k=4 的分组情况来看,如果两个数据有一位不同,那么由于该位至少要参与两组校验位的生成,因而至少会引起两个校验位的不同,再加上数据位本身一位的不同,所以其码距 d=3d=3d=3。根据码距与检错、纠错能力的关系可知,这种码制只能对单个位出错情况进行定位和纠错,因此被称为单纠错码(SEC)。
    若校验码同时具有发现两位错和纠正一位错的能力,则称为单纠错和双检错码(SEC-DED),简称“纠一检二”码。若要使上述介绍的单纠错码成为SEC-DED码,则码距需扩大到 d=4d=4d=4

    2. 固态硬盘(SSD)

    在这里插入图片描述

    固态硬盘SSD
    一个SSD由一个或多个闪存芯片和闪存翻译层组成。闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存翻译层将来自CPU的逻辑块读/写请求翻译成对底层物理设备的读/写控制信号,因此,这个闪存翻译层相当于代替了磁盘控制器的角色。
    数据以页为单位读/写,以块为单位擦除,只有一页所属块整个被系统擦除后,才能重写该页随机写很慢,擦除块慢;修改页时,所含块中页复制到新(擦除过)块中

    SSD有三个限制:

  • 对某页写信息之前,必须先擦除该页所在的整个区块;2. 擦除后区块内的页必须按顺序写入信息;
  • 只有有限的擦除/编程次数。
  • 动态磨损均衡。写入数据时,优先选择擦除次数少的新闪存块,老的闪存块先歇一歇。
    静态磨损均衡。这种技术更为先进,就算没有数据写入,SSD也会监测并自动进行数据分配,让老的闪存块承担以读为主的存储任务。同时让较新的闪存块腾出空间,以承担更多以写为主的存储任务。

    CF-LRU算法 该算法兼顾了命中率和缓存替换给闪存带来的开销。dirty页面是指被修改过,即内容与外存数据不一致的页面;clean页面是指没有被修改过,即内容与外存数据一致的页面。

  • 该算法将缓存链表分为 working区和clean-first区两部分。设w 为窗口大小,则靠近LRU端的w个页面属于clean-first区,其余页面属于working区。
  • 命中的页面会被从链表中取出,放在链表的第一位,即图中的MRU端;若未命中,则需要淘汰页面。
  • 在选择淘汰页面时,算法优先选择clean-first区靠近LRU端的clean页面换出。
  • 若clean-first区没有clean页面,则选择clean-first区靠近LRU端的dirty页面换出,并将页面内容写回SSD。
  • 在这里插入图片描述

    根据SSD的CF-LRU算法,回答以下问题:

  • 假设采用CF-LRU算法且窗口大小为3,内存中最多容纳6个页面。若链表的初始状态为 2D→3C→1D→7D→8C→4D2D \\to 3C \\to 1D \\to 7D \\to 8C \\to 4D2D3C1D7D8C4D,访问序列为P3(读)P9(读)P10(读写)P3(读)P4(读) P11(读写)P9(读)P3(读),请回答总共的写回次数和命中次数。(2)若将(1)中的窗口大小从3改成4,总共的写回次数和命中次数如何?
  • 注意到(2)中的写回次数比(1)中的少,窗口增大有利于减少写回次数。但是窗口是否越大越好,为什么?
  • 在这里插入图片描述

  • 写回三次,命中三次
  • 在这里插入图片描述

  • 写回两次,命中两次

  • 窗口增大确实会减少写回次数,但是也会减小命虫率。CF-LRU算法本质上是用降低命中率为代价来减少写回次数。

  • 6. 高速缓冲存储器(Cache)

    A. Cache的基本原理

    时间局部性、空间局部性
    空间局部性对单个变量来说没有意义。不过,通常编译器都将其分配在寄存器中,循环执行时只要取寄存器的内容进行运算,最后再把寄存器的内容写回到存储单元中。

    当CPU发出读请求时,若访存地址在Cache中命中(也称Cache命中),就将此地址转换成Cache地址,直接对Cache进行读操作,与主存无关;若Cache不命中,则仍需访问主存,并把此字所在的块一次性地从主存调入Cache。若此时Cache已满,则需根据某种替换算法,用这个块替换Cache中原来的某块信息。这些工作要求在一条指令执行过程中完成,因而只能由硬件来实现。整个过程全部由硬件实现。CPU与Cache之间的数据交换以字为单位,Cache与主存之间的数据交换则以Cache块为单位。

    有了有效位,就可通过将有效位清零来淘汰某cache行中的主存块,称为冲刷(flush),装入一个新主存块时,再使有效位置1。

    把从主存读入一个主存块到cache的时间称为缺失损失(miss penalty)。

    实现Cache时需解决以下关键问题:

  • 数据查找。如何快速判断数据是否在Cache中。
  • 地址映射。主存块如何存放在Cache中,如何将主存地址转换为Cache地址。3)替换策略。Cache满后,使用何种策略对Cache块进行替换或淘汰。4)写入策略。如何既保证主存块和Cache块的数据一致性,又尽量提升效率。
  • 在cache行数不变的情况下,块太小使得映射到同一个cache行的主存块数增加,发生冲突的概率增大,引起频繁信息交换。

    从主存读一块数据到cache,一般包含以下3个阶段。(1)发送地址和读命令到主存:假定用1个时钟周期。(2)主存准备好一个数据:假定用10个时钟周期。(3)从总线传送一个数据:假定用1个时钟周期。

    主存、总线和cache之间可以有3种连接方式:

  • 窄形结构,每次按一个字的宽度进行传送;
  • 宽形结构,每次传送多个字;
  • 多模块交叉存取结构,轮流启动多个存储模块进行读写,按一个字的宽度进行传送。
  • B. Cache和主存之间的映射方式

    地址映射是指把主存地址空间映射到Cache地址空间,即把存放在主存中的信息按照某种规则装入Cache。地址映射的方法有以下3种。

  • 直接映射
    Cache 行号=主存块号 mod Cache 总行数
    标记 Cache行号 块内地址
  • 全相联映射
    标记 块内地址 相联存储器
  • 级相联映射
    Cache组号=主存块号  mod Cache\\bmod CachemodCache 组数
    标记 组号 块内地址
  • 比较器个数是分组中cache行数,位数为tag标记位数

    对于一个主存块来说,3种映射方式下对应cache行的个数不同。直接映射是唯一映射,每个主存块只有一个固定行与之对应;全相联映射是任意映射,每个行都可对应;N路组相联映射有N行对应。这种特性可用“关联度”来度量,即关联度指一个主存块映射到cache中时可能存放的位置个数。因此,直接映射的关联度最低,为1;全相联映射的关联度最高,为cache的总行数;N路组相联映射的关联度居中,为N。当cache大小、主存块大小一定时,关联度和命中率、命中时间、标记所占额外开销等有如下关系。

  • 关联度越低,命中率越低。因此直接映射命中率最低,全相联映射命中率最高。
  • 关联度越低,判断是否命中的开销越小,命中时间越短。因此,直接映射的命中时间最短,全相联映射的命中时间最长。(3)关联度越低,标记所占额外空间开销越少。因此,直接映射额外空间开销最少,全相联映射额外空间开销最大。
  • C. Cache中主存块的替换算法

    替换算法 随机算法 先进先出算法 近期最少使用算法 最不经常使用算法(替换掉cache中引用次数最少的块)

    在小组中命中时在大组中肯定命中,通常把满足这种特性的算法称为栈算法。因此,LRU算法是栈算法。
    当程序中的局部化范围(即某段时间集中访问的存储区)超过cache组大小时,命中率可能变得很低。这种现象称为颠簸(pingpong)或抖动(thrashing)。

    淘汰时,只要将被淘汰行的有效位清零即可。

    为简化上述LRU位计数的硬件实现,通常采用一种近似的LRU位计数方式来实现LRU算法。近似LRU计数方法仅区分哪些是新调入的主存块,哪些是较长时间未用的主存块,然后,在较长时间未用的块中选择一个被替换出去。

    4. Cache写策略

    cache中的内容是主存块副本,当对cache中的内容进行更新时,就存在cache和主存如何保持一致的问题。除此之外,以下情况也会出现cache一致性问题。

  • 当多个设备都允许访问主存时。例如,像磁盘这类高速I/O设备可通过DMA方式直接读写主存,如果cache中的内容被CPU修改而主存块没有更新的话,则从主存传送到I/O设备的内容就无效;若I/O设备修改了主存块的内容,则对应cache行中的内容就无效。(2)当多个CPU都带有各自的cache而共享主存时。在多CPU系统中,若某个CPU修改了自身cache中的内容,则对应的主存块和其他CPU中对应的cache行的内容都变为无效。
  • 命中Cache情况下
    全写法 写缓存,为减少全写法直接写入贮存的时间损耗,在Cache与主存之间加一个写缓存
    CPU同时写数据到Cache和写缓存中,写缓存再将内容写入主存 如果写操作频繁发生,则会使写缓冲饱和而发生阻塞。图
    回写法 修改位(脏位) 需要其他的同步机制保证数据的一致性。
    对于Cache写操作不命中
    写分配法 更新主存单元,然后把主存块调入Cache
    非写分配法 只更新主存单元,而不把主存块调入Cache
    指令Cache和数据Cahce分离
    多级Cache 近CPU 全写法 远CPU 回写法

    当发生cache缺失时,需要等待主存访问,此时,CPU处于阻塞状态。因此,CPU时间的计算公式如下:
    CPU时间=(CPU执行时钟数+cache缺失引起阻塞的时钟数)X时钟周期
    cache 缺失引起阻塞的时钟数=读操作阻塞时钟数+写操作阻塞时钟数
    对于写操作,不同写策略下阻塞时钟数的计算方式不同。回写方式下,替换时需要一次性写回一个块,故会产生一些附加写回阻塞;全写方式下,包括写缺失阻塞和写缓冲阻塞两部分。
    假定写回阻塞和写缓冲阻塞忽略不计,则可将读操作和写操作综合考虑,得到如下公式:
    cache缺失引起阻塞的时钟数=程序中访存次数×缺失率×缺失损失
    =程序的指令条数×(缺失数/指令)X缺失损失

    CPI越小,cache缺失引起的阻塞对系统总体性能的影响越大。CPU时钟频率越高,cache缺失损失就越大。

    在这里插入图片描述

    7. 虚拟存储器

    A. 虚拟存储器的基本概念

    实地址 主存页号 页内块地址
    虚 虚
    辅存地址 磁盘号 盘面号 磁道号 扇区号

    虚拟存储器通常只能采用回写法

    CPU通过存储器管理部件(memory management unit,MMU,MMU包含在CPU芯片中)将指令中的逻辑地址(也称虚拟地址或虚地址,简写为VA)转换为主存的物理地址(也称主存地址或实地址,简写为PA)。
    在地址转换过程中,MMU会检查是否发生了访问信息不在主存或地址越界、访问越权或越级等存储保护错。

    在这里插入图片描述

    虚拟内存有3个好处:

  • 每个进程具有一致的虚拟地址空间,从而可以简化存储管理;2. 它把主存看成是外存的一个缓存,在主存中仅保存当前活动的程序段和数据区,并根据需要在外存和主存之间进行信息交换,通过这种方式,使有限的主存空间得到了有效利用;
  • 每个进程的虚拟地址空间是私有的、独立的,因此,可以保护各自进程不被其他进程破坏。
    整个虚拟地址空间分为两大部分:内核空间和用户空间。所有进程的虚拟地址空间划分是一致的,只是在相应的只读区域和可读写数据区域中映射的信息不同而已,分别映射到对应可执行目标文件中的只读代码段和可读写数据段。
    用户空间用来映射到用户进程的代码、数据、堆和栈等用户级上下文信息。每个区域都有相应的起始位置,堆区和栈区相向生长,其中,栈从高地址往低地址生长。
  • B. 页式虚拟存储器:基本原理、页表、地址转换、TLB(快表)

    页式虚拟存储器
    虚拟地址空间中有一些“空洞”的没有内容的页面。堆区和栈区都是动态生长的,因而在栈和共享库映射区之间、堆和共享库映射区之间都可能没有内容存在,这些没有和任何内容相关联的页称为“未分配页”;对于代码和数据等有内容的区域所关联的页面,称为“已分配页”。在已分配页中又有两类:已调入主存而被缓存在DRAM中的页面称为“缓存页”;未调入主存而存在外存上的页称为“未缓存页”。因此,任何时刻一个进程中的所有页面都被划分成3个不相交的页面集合:未分配页集合、缓存页集合和未缓存页集合。

    进程中的每个虚拟页在页表中都有一个对应的表项,称为页表项。页表项内容包括该虚拟页的存放位置、装入位(valid)、修改位(dirty)、使用位、访问权限位和禁止缓存位等。
    装入位也称为有效位或存在位,若为1,表示该虚拟页已从外存调入主存,是一个“缓存页”,此时,存放位置字段指向主存物理页号(即页框号或实页号);若为0,则表示没有被调入主存,此时,若存放位置字段为null,则说明是一个“未分配页”,否则是一个“未缓存页”,其存放位置字段给出该虚拟页在磁盘上的起始地址。修改位(也称脏位)用来说明页面是否被修改过,虚存机制中采用回写策略,利用修改位可判断替换时是否需写回磁盘。使用位用来说明页面的使用情况,配合替换策略来设置,因此也称替换控制位,例如,是否最先调入(FIFO)位),是否最近最少用(LRU位)等。访问权限位用来说明页面是可读可写、只读还是只可执行等,用于存储保护。禁止缓存位用来说明页面是否可以装入cache,通过正确设置该位,可以保证磁盘、主存和cache数据的一致性。

    页表属于进程控制信息,位于虚拟地址空间的内核空间,页表在主存的首地址记录在页表基址寄存器中。

    首先根据页表基址寄存器的内容,找到主存中对应的页表起始位置(即页表基地址),然后将虚拟地址高位字段中的虚页号作为索引,找到对应的页表项,若装入位为1,则取出物理页号,和虚拟地址中的页内地址拼接,形成访问主存时实际的物理地址;若装入位为0,则说明缺页,需要操作系统进行缺页处理。

    为降低替换算法开销,TLB常采用随机替换策略。

    快表用SRAM实现,其工作原理类似于Cache,通常采用全相联或组相联映射方式。TLB表项由页表表项内容和TLB标记组成。全相联映射下,TLB标记就是对应页表项的虚拟页号;组相联方式下,TLB标记则是对应虚拟页号的高位部分,而虚拟页号的低位部分作为TLB组的组号。

    在这里插入图片描述

    最好的情况是第1种组合,此时,无须访问主存;第2种和第3种两种组合都需要访问一次主存;第4种组合要访问两次主存;第5种组合会发生“缺页”异常,需访问磁盘,并至少访问主存2次。

    C. 段式虚拟存储器的基本原理;段页式虚拟存储器的基本原理

    每个进程有一个段表,每个段在段表中有一个段表项。

    取数可能无需访问Cache,直写方式需要把数据同时写入内存和Cache

    段页式

    一行TLB内容

    在这里插入图片描述

    TLB和Cache多级存储系统

    TLB缺失既可以用硬件,又可以用软件Cache缺失硬件
    缺页处理 软件处理

    Cache中存放的是数据,目的是为了提高访问速率;TLB中存放地址转换条目,目的是提高查找效率。

    Cache块内的数据既有空间局部性,又有时间局部性;而TLB中的页表数据只有时间局部性。

    CPU———>虚拟地址———>物理地址———>数据———>CPU快表、页表 Cache、内存

    从虚拟内存到主存数据
    从CPU给出一个虚拟地址开始,需要经历虚拟地址转换成物理地址和根据物理地址访问信息这两个过程,分别对应了虚拟存储器和Cache的工作流程。
    首先进行将虚拟地址转换成物理地址的地址翻译过程。将虚拟地址划分成虚页号(虚拟页号)和页内地址两部分,再根据TLB的映射方式,从虚页号中取出TLB标记,以此在TLB中查找是否存在存有该虚页号的TLB行。

  • 若存在,则为TLB命中,取出该TLB行中的实页号(物理页号)。
  • 若不存在,则为TLB未命中,直接在位于主存中的页表中查找。根据页表访问情况再做具体处理。
  • 若页表中存有该页表项且有效位为1,则直接取出该页表项中的实页号。
  • 若页表中存在该页表项但有效位为0,或者页表中不存在该页表项,则进行缺页处理,从外存读出一页到主存,并更新页表和TLB。将上述步骤中找到的实页号与页内地址拼接,形成访问内存所需的物理地址。接着需要根据物理地址在主存中访问信息。先将物理地址根据Cache的映射方式进行划分,取出标记位,在Cache对应行里查找标记位是否一致。
  • 若一致且有效,则直接取出该行数据块内容,按块内地址找到需要的信息。
  • 若不一致或有效位不为1,则表明不在Cache中,需要在主存中找到该物理地址的信息,并通过替换将块写入Cache中。替换时,若Cache中能够存放该地址的Cache行空闲,则直接写入Cache中,否则需要替换现有内容。
  • 从虚拟内存到主存数据
    从CPU给出一个虚拟地址开始,需要经历虚拟地址转换成物理地址和根据物理地址访问信息这两个过程,分别对应了虚拟存储器和Cache的工作流程。
    首先进行将虚拟地址转换成物理地址的地址翻译过程。将虚拟地址划分成虚页号(虚拟页号)和页内地址两部分,再根据TLB的映射方式,从虚页号中取出TLB标记,以此在TLB中查找是否存在存有该虚页号的TLB行。

  • 若存在,则为TLB命中,取出该TLB行中的实页号(物理页号)。
  • 若不存在,则为TLB未命中,直接在位于主存中的页表中查找。根据页表访问情况再做具体处理。
  • 若页表中存有该页表项且有效位为1,则直接取出该页表项中的实页号。
  • 若页表中存在该页表项但有效位为0,或者页表中不存在该页表项,则进行缺页处理,从外存读出一页到主存,并更新页表和TLB。将上述步骤中找到的实页号与页内地址拼接,形成访问内存所需的物理地址。接着需要根据物理地址在主存中访问信息。先将物理地址根据Cache的映射方式进行划分,取出标记位,在Cache对应行里查找标记位是否一致。
  • 若一致且有效,则直接取出该行数据块内容,按块内地址找到需要的信息。
  • 若不一致或有效位不为1,则表明不在Cache中,需要在主存中找到该物理地址的信息,并通过替换将块写入Cache中。替换时,若Cache中能够存放该地址的Cache行空闲,则直接写入Cache中,否则需要替换现有内容。
  • CPU访存实例
    某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为16MB,主存(物理)地址空间大小为1MB,页面大小为4KB;Cache采用4路组相联映射方式,共4组;主存与Cache之间交换的块大小为32B;TLB采用2路组相联映射方式,共4组。

  • “存储器按字节编址”,即一个地址元能存放1B的信息,后续计算地址长度时,应把地址空间大小除以1B,得出需要的地址单元数量。(2)“虚拟(逻辑)地址空间大小为16MB”,则虚拟地址长度应能存放 16MB/1B=16M16MB/1B=16M16MB/1B=16M 个单元,组成16M个单元需要 l0g2(16M)=24l0g2(16M)=24l0g2(16M)=24 位,所以虚拟地址长度为24位。
  • “主存(物理)地址空间大小为1MB”,方法同2),物理地址长度为 log2(1M)=20log2(1M)=20log2(1M)=20 位。
  • “页面大小为4KB”,因按字节编址,所以页内地址长度为 10g2(4K)=1210g2(4K)=1210g2(4K)=12 位。
  • “Cache采用4路组相联映射方式”,根据映射方式,物理地址可以划分为Cache标记、组号、块内地址3部分。“共4组”,则组号长度为 log24=2log24=2log24=2 位,并可得出Cache一共有 4×4=164 \\times 4=164×4=16 行。
  • “主存与Cache之间交换的块大小为32B”,即一个Cache块大小为32B,因按字节编址,一块存放 32B/1B=3232B/1B=3232B/1B=32 个单元的信息,故块内地址长度为 10g2(32)=510g2(32)=510g2(32)=5 位。
  • “TLB采用2路组相联映射方式,共4组”,根据映射方式,虚拟页号可以划分为TLB标记、组号2部分。“共4组”,则组号长度为 log24=2log24=2log24=2 位,并且还可得出TLB一共有 2×4=82 \\times 4=82×4=8 行。
  • 虚拟地址划分为虚页号和页内地址两部分,求出页内地址长度和虚拟地址长度,相减便能得出虚页号长度为 24−12=1224-12=122412=12 位。(9)Cache 标记位长度为20位物理地址-2位组号-5位块内地址=13位。TLB标记位长度为12位虚拟页号-2位组号=10位。(10)信息中涉及到了TLB和Cache,表明在虚实转换过程中要先访问TLB,在物理寻址过程中要先访问Cache。
  • 总结(本章速记)

    本章知识骨架:

    • 存储器的分类
    • 层次化存储器的基本结构
    • 半导体随机存储器(RAM) SRAM、DRAM、Flash 存储器
    • 主存储器
      • A. DRAM芯片和内存条
      • B. 多模块存储器
      • C. 主存储器和CPU之间的连接
    • 外部存储器
      • 磁盘存储器
      • 固态硬盘(SSD)
    • 高速缓冲存储器(Cache)
      • A. Cache的基本原理
      • B. Cache和主存之间的映射方式
      • C. Cache中主存块的替换算法
      • Cache写策略
    • 虚拟存储器
      • A. 虚拟存储器的基本概念
      • B. 页式虚拟存储器:基本原理、页表、地址转换、TLB(快表)
      • C. 段式虚拟存储器的基本原理;段页式虚拟存储器的基本原理

    关键速记清单:

    • 作用层次:主存储器、辅助存储器、高速缓冲存储器
    • 按内容检索到存储位置,按内容访问存储器或相联存储器
    • 存储速度:数据传输速率(每秒传送信息的位数)=数据的宽度/存取周期。
    • 内存主要 DRAM 动态存储器 易失性栅极电容 单晶体管
    • cache SRAM 双稳态触发器 非破坏性读出
    • 刷新通过对存储单元进行了“读但不输出数据”、“假读”操作实现
    • 刷新方式:对cpu透明,DRAM刷新单位为行,刷新无需选片
    • 16×0.5μ s=8μ s16 \\times 0.5\\mu\\,s=8\\mu\\,s16×0.5μs=8μs,死时间率为 8/(2×103)=0.4%8/(2 \\times 10^{3})=0.4\\%8/(2×103)=0.4%
    • 包括DDRSDRAM,DDR2SDRAM,DDR3SDRAM等
    • DDR2 4位预取
    • DDR3 8位预取
    • 内存条插槽即是存储器总线
    • 存储器芯片由存储体、I/O写电路、地址译码器和控制电路等部分组成。
    • 线选法 通过n个地址引脚可定义一个大小为 2n2^{n}2n 字的地址空间
    • 地址译码器。地址译码有一维译码和二维译码两种方式。
    • 一维方式也称为线选法或单译码法,适用于小容量的静态存储器;
    • 二维方式也称为重合法或双译码法,适用于容量较大的动态存储器。
    • ROM中所有带E的种类均可再次写入。
    • 掩模式只读存储器
    • 一次可编程只读存储器
    • 可擦除可编程只读存储器
    • Flash 存储器
    • 固态硬盘(Solid State Drive,SSD)
    • 位扩展法
    • 字扩展法
    • 字位同时扩展法
    • 单体多字存储器
    • 多体并行存储器
    • 高位交叉编址(顺序方式)
    • 高位地址表示模块号(或体号),低位地址为模块内地址(或体内地址)。
    • 低位交叉编址(交叉方式)
    • 轮流启动方式
    • 同时启动方式
    • 控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻。
    • 磁盘设备的组成
    • 磁盘存储器组成:磁盘驱动器、磁盘控制器、盘片
    • ● 磁盘驱动器。驱动磁盘转动并在盘面上通过磁头进行读/写操作的装置。
    • 磁记录原理
    • 原理:磁头和磁性记录介质相对运动时,通过电磁转换完成读/写操作。
    • 磁盘的容量。磁盘容量有非格式化容量和格式化容量之分。
    • 格式化后的容量比非格式化容量要小。
    • 磁盘的未格式化容量是指按道密度和位密度计算出来的容量。
    • 磁盘地址
    • 磁盘组号 柱面(磁道)号 盘面(磁头)号 扇区号
    • 磁盘的主要操作是寻址、读盘、写盘。
    • RAID2:采用纠错的海明码的磁盘阵列。
    • RAID3:位交叉奇偶校验的磁盘阵列。
    • RAID4:块交叉奇偶校验的磁盘阵列。
    • RAID5:无独立校验的奇偶校验磁盘阵列。
    • 当码距 1<d≤41<d \\le 41<d4 时,关系如下。
    • 若采用偶校验位,则 P=Mn−1⊕Mn−2⊕⋯⊕M1⊕M0P=M_{n-1} \\oplus M_{n-2} \\oplus \\cdots \\oplus M1 \\oplus M0P=Mn1Mn2M1M0
    • 校验位的位数的确定
    • 2k≥1+n+k2^{k} \\ge 1+n+k2k1+n+k,即 2k−1≥n+k2^{k}-1 \\ge n+k2k1n+k
    • 分组方式的确定
    • 根据上述基本思想,可以按以下规则来解释各故障字的值。
    • 如果故障字各位全部是0,则表示没有发生错误。
    • 如果故障字中有且仅有一位为1,则表示校验位中有一位出错,不需要纠正。
    • 校验位的生成和检错、纠错
    • P1=M1⊕M2⊕M4⊕M5⊕M7⊕M9P1=M1 \\oplus M2 \\oplus M4 \\oplus M5 \\oplus M7 \\oplus M9P1=M1M2M4M5M7M9
    • P2=M1⊕M3⊕M4⊕M6⊕M7⊕M10P2=M1 \\oplus M3 \\oplus M4 \\oplus M6 \\oplus M7 \\oplus M10P2=M1M3M4M6M7M10

    结语

    存储系统的整章逻辑,可以浓缩成一句话:用局部性原理去对冲速度、容量与成本之间的矛盾。程序的空间局部性成就了 Cache 的块,时间局部性成就了 Cache 的命中;页表与 TLB 是这套思路在"主存—外存"层的第二次应用;而多模块存储器与地址 interleaving,则是把并行思想引入存储访问的又一次尝试。复习时建议抓住三条主线:映射方式决定"放哪",替换算法决定"换谁",写策略决定"何时同步"。把这三点吃透,Cache 相关的大题便迎刃而解。

    参考资料

  • 王道考研《计算机组成原理考研复习指导》
  • 竟成《计算机组成原理考研复习指导》
  • 唐朔飞.计算机组成原理(第2版).
  • 袁春风.计算机组成与系统结构.
  • 赞(0)
    未经允许不得转载:171主机测评 » 408 计算机组成原理 知识点记忆(3)存储系统
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址