第 3 章 主存储器 .. 了解存储器的分类。 .. 理解存储器的层次化结构。 .. 理解 RAM 和 ROM 的特性和工作原理。 .. 理解多体模块存储器和双端口 RAM。 .. 掌握 Cache—主存系统。 3.1 本 章 导 学 3.1.1 考研解读 1. 命题规律和命题趋势 本章是本书的重点,也是难点。客观题和综合应用题都可能涉及本章内容。 综合应用题常涉及以下知识点: (1)Cache 的三种不同映射方式的相关计算。 (2)主存芯片与 CPU 的连接。 (3)虚拟存储系统中虚拟地址和物理地址的转换。 客观题常考点包括: (1)存储器的分类及工作原理。 (2)存储系统层次结构、程序访问的局部性原理。 (3)Cache 的工作原理、虚拟存储器的工作原理。 此外,本章知识与操作系统的考点也有相关性,例如正确理解虚拟存储器的工作原 理有利于正确解答操作系统的相关考题。 2. 应考策略 首先,要花时间去理解基本原理,熟记基本概念,包括存储器的分类以及各类半导 体存储器(SRAM、DRAM、ROM)的特点、双端口 RAM 和多体模块存储器的主要特 点、外存储器的特点作用,这样可以保证客观题的正确解答。 其次,对综合应用题,应该在理解原理的基础上逐一攻破典型题目,通过少而精的 练习达到巩固原理、灵活应用的目的,达到事半功倍的效果。 最后,要重点突破以下要点。 存储器层次结构 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 48 (1)主存芯片与 CPU 的连接:重点掌握存储器芯片的外特性,理解位扩充和字扩充 的思路和数据交换的过程。 (2)Cache 的工作原理:这是重要知识点之一,要掌握程序访问的局部性原理(时 间局部性和空间局部性)、Cache 的基本工作原理(命中率)、Cache 与主存地址的映射方 式、替换算法、一致性原则以及 Cache 写策略等基本原理,结合原理掌握 Cache 的不同 映射方式下主存地址和 Cache 地址格式以及映射关系。 (3)虚拟存储系统:理解页式虚拟存储器、段式虚拟存储器、段页式虚拟存储器、 TLB(快表)等基本概念。理解各类虚拟存储器的工作原理、实现方法和优缺点。掌握 虚拟存储系统中虚拟地址和物理地址的转换过程。 (4)存储器层次结构:要掌握在 CPU 和内存之间增加一层 Cache 的目的是为了 解决 CPU 和内存的速度匹配问题。而虚拟存储系统的设计是为了解决内存容量不足 的问题。 3.1.2 知识结构 本章知识结构如图 3-1 所示。 图 3-1 知识结构图 第 3 章 主存储器 49 3.2 知 识 讲 解 3.2.1 基本概念 .. 高速缓冲存储器(Cache):位于 CPU 和主存之间的一个高速小容量存储器,用 来存放主存中正在使用的程序和数据的部分副本,以提高CPU访问内存的速度。 在不同的资料中高速缓冲存储器和 Cache 具有相同的含义。 .. 主存储器:简称主存,是计算机的一个重要部件,其作用是存放正在运行的指 令和数据,主存储器具有较快的存取速度,由 CPU 直接随机存取。在不同的资 料中主存、内存和主存储器具有相同的含义。 .. 辅助存储器:也称为外存储器,简称外存或辅存,主要指那些容量比主存大、 读取速度较慢、常用来存放需要永久保存的或相对来说暂时不用的各种程序和 数据的存储器。目前常用的外存储器包括硬磁盘存储器和光盘存储器。 .. 随机存储器(Random Access Memory,RAM):存储器中的任何一个存储单元 的内容都能被随机存取,且存取时间相同,与存储单元的物理位置无关,主要 用作主存或者高速缓存,可以用存储周期来表示其工作速度。RAM 中通常存放 正在运行的程序和数据。 .. 只读存储器(Read Only Memory,ROM):存储器工作时只能读,不能写,通 常用来保存一些特别重要的信息。ROM 也采用随机存取方式,与 RAM 可共同 作为主存的一部分,一起构成主存的地址域。ROM 通常存放系统程序或者引导 程序等。 .. 顺序存取存储器(Sequence Access Memory,SAM):存储器中的存储内容只能 按顺序存取,其存取时间与存储单元的物理位置有关,如磁带。 .. 直接存取存储器(Direct Access Memory,DAM):介于随机存储方式和顺序存 储方式之间,典型的 DAM 是磁盘,磁盘寻址时,磁头定位磁道类似于随机存 储方式,在磁道内寻址类似于顺序存储方式。 .. 静态随机存储器(Static Random Access Memory,SRAM):利用双稳态触发器 的两个稳定状态来保存信息,只要不断电,信息就不会丢失。 .. 动态随机存储器(Dynamic Random Access Memory,DRAM):利用 MOS 电容 存储电荷来保存信息,使用时需不断给电容充电才能使信息保持。 3.2.2 存储器的分类 (1)按在计算机系统中的作用,存储器可分为如图 3-2 所示的几种。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 50 图 3-2 存储器分类 主存储器包括 RAM 和 ROM 两部分。 RAM 存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无 关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的 程序。按照存储信息的不同,RAM 又分为静态随机存储器(SRAM)和动态随机存储 器(DRAM)。 MROM 又称为掩膜式 ROM,在计算机的发展初期,BIOS 都存放在 MROM 中。 MROM 内部的资料是在 MROM 的制造工序中用特殊的方法烧录进去的,其中的内容只 能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。 如果发现资料有任何错误,则只有舍弃不用,重新定做一份。MROM 是在生产线上生产 的,由于成本高,一般只用在大批量应用的场合。但是随着科学技术的发展出现了可编 程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)和电可擦可编程只读存储器(Electrically Erasable Programmable ROM,EEPROM),这几种 ROM 都可以进行写入操作,但是我们在提到 ROM 时,依然把它们定义为只读存储器。 (2)按照信息的存取方式,存储器可以分为 RAM、ROM、SAM 和 DAM。 (3)按存储介质,存储器可分为半导体存储器、磁表面存储器、磁心存储器和光盘 存储器。 (4)按信息的可保存性,存储器可分为易失性存储器和非易失性存储器。 断电后存储信息立即消失的存储器称为易失性存储器;断电后存储信息仍然保存的 存储器称为非易失性存储器。典型的易失性存储器是半导体 RAM,ROM、磁表面存储 器、磁心存储器、光盘存储器则属于非易失性存储器。 如果某个存储单元所存储的信息被读出时,原有信息被破坏,称为破坏性读出,具 有破坏性读出的存储器,每当进行读出操作时,都需要立即再生原始数据,防止信息丢 失,典型的破坏性读出存储器是 DRAM;如果读出时被读存储单元的信息不被破坏,称 为非破坏性读出。 (5)按照用途分类,可分为 Cache、主存储器和辅助存储器。 在计算机技术发展过程中,主存储器存取速度一直比 CPU 操作速度慢得多,使得 CPU 的高速处理能力不能充分发挥,整个计算机系统的工作效率受到影响,Cache 可以 用来缓和 CPU 和主存储器之间速度不匹配的矛盾。 第 3 章 主存储器 51 Cache 的容量一般只有主存储器的几百分之一,但它的存取速度能与 CPU 相匹配。 根据程序局部性原理,正在使用的主存储器某一单元邻近的那些单元将被用到的可能性 很大。因此,当 CPU 存取主存储器某一单元时,计算机就自动地将包括该单元在内的那一组 单元内容调入 Cache,CPU 即将存取的主存储器单元很可能就在刚刚调入到 Cache 的那一组 单元内。于是,CPU 就可以直接对 Cache 进行存取。在整个处理过程中,如果 CPU 绝大多数 存取主存储器的操作能被存取 Cache 所代替,计算机系统的处理速度就能得到显著提高。 3.2.3 存储器的系统结构 存储器有 3 个重要的指标:速度、容量和每位价格,一般来说,速度越快,价格越 高;容量越大,价格越低,容量越大,速度就越低。 为了解决存储系统大容量、高速度和低成本之间的矛盾,现代计算机系统中使用多 种类型的存储器构成存储系统,使所存放的程序和数据按层次分布在各存储器中,在软、 硬件的配合下,形成一个统一整体。层次化的存储器主要有以下两个层次。 (1)主存—Cache 层次:通过硬件实现,对用户透明,旨在解决内存速度与 CPU 速 度不匹配的问题。 (2)主存—辅存层次:通过附加的硬件及操作系统中的存储管理软件来控制实现, 旨在解决内存容量不足的问题。 主存—辅存层次从整体分析,其速度接近于主存,容量接近于辅存,平均价位也接 近于低速的、廉价的存储价位,这就解决了速度、容量、成本三者之间的矛盾。 现代计算机系统几乎都具有这两个存储层次,构成了缓存、主存、辅存三级存储系统。 层次化结构如图 3-3 所示。 图 3-3 存储器的层次结构 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 52 3.2.4 半导体随机存储器和只读存储器 1. 半导体存储器分类 构成主存的半导体存储器分为 RAM 和 ROM。RAM 又分为 SRAM 和 DRAM。ROM 又分为 MROM、PROM、EPROM、EEPROM 和 FLASH 等。 2. 构成 RAM 的基本记忆电路 SRAM:6 管记忆单元,其核心是双稳态触发器。 DRAM:单管记忆单元,其存储核心是极间电容。 3. SRAM 的工作原理 SRAM 的存储单元是用双稳态触发器(六管 MOS)来记忆信息的,即一个存储单元 存储一位信息“0”或“1”。静态存储单元保存的信息比较稳定,其结构简单,可靠性高, 速度较快。信息被读出后仍然保持原有信息而不需要再生(非破坏性读出),不需要重写 (再生)。但其占用元件较多,占硅片面积大,且功耗大,集成度不高,同时 SRAM 是易 失性存储器,一旦断电,原来保存的信息就会丢失,通常被用来做 Cache。 4. DRAM 的工作原理 DRAM 通常用于主存储器,常见的 DRAM 存储单元有三管式和单管式两种,靠电 容存储电荷的原理来储存信息。若电容上存有足够的电荷则表示“1”,电容上无电荷则 表示“0”。与 SRAM 相比,DRAM 具有集成度更高、功耗低、价格便宜等特点。但是 读出是破坏性的,故读出后要立即对单元进行“重写”。即使不被读出,由于电容会漏电, 电容上的电荷一般只能维持 1~2ms,因此即使电源不掉电,电容上的电荷也会自动消失。 为保证信息不丢失,必须在 2ms 内就要对存储单元进行一次恢复操作,这个过程称为再 生或者刷新。 5. DRAM 刷新 DRAM 刷新只与行地址有关。 (1)集中刷新:在允许的最大刷新间隔内,按照存储芯片容量的大小集中安排若干 个刷新周期,刷新时停止读、写操作。 (2)分散刷新:分散刷新是指把刷新操作分散到每个存取周期内进行,这种方式是 把原来的存储周期加倍,前一部分时间进行读、写操作或保持,后一部分时间进行刷新 操作。一个系统存取周期内刷新存储矩阵中的一行。 (3)异步刷新:把刷新操作平均分配到整个最大刷新间隔时间内进行。 图 3-4~图 3-6 是对一个具有 1024 个记忆单元(排列成 32×32 矩阵)的存储芯片按 照不同刷新方案进行刷新的示意图,假设存取周期为 500ns(0.5μs)。 图 3-4 集中刷新时间分配示意图 第 3 章 主存储器 53 图 3-5 分散刷新时间分配示意图 图 3-6 异步刷新时间分配示意图 三种刷新方式中,对存储器的“死亡时间”是不一样的。所谓“死亡时间”,指的是 由于存储器芯片刷新,CPU 不能访问存储器的时间。假设存储器有 64 行,存储器的存 储周期是 0.5μs,每 2ms 需要对所有的行进行刷新。对于集中刷新方式,按照存储芯片 容量的大小集中安排若干个刷新周期,刷新 64 行,需要 64 个存储周期,在这 64 个存储 周期内,CPU 不能访问内存,所以对于每一行来说,“死亡时间”是 64 个存储周期。对 于分散刷新方式,由于存储周期加倍,所以不存在“死亡时间”,但是系统整体性能变差 了。对于异步刷新方式,每隔 2ms/ 64,即 15.6μs 刷新一行,对每一行而言,对应的“死 亡时间”是一个存储周期。与集中刷新相比,性能大大提高了,原因是集中刷新方式在 刷新每一行时,其他所有的行等待被刷新,也不能被访问,而异步刷新方式,在刷新一 行时,只是本行不能被访问,其他行依然可以被访问。 DRAM 刷新具有以下特点。 .. 刷新对 CPU 是透明的,即刷新不依赖于外部的访问。 .. DRAM 的刷新是按照行进行的,所以只需要读行地址就可以。 .. 刷新操作不需要选片,对整个存储器上的所有片进行刷新操作。 .. 电容的读出是一种破坏性读出,读出的同时又使该单元的存储信息自动得以恢 复,DRAM 采用“读出”方式进行刷新。 6. 只读存储器 DRAM 和 SRAM 均为可任意读、写的随机存储器,掉电时所存储的内容消失,是 易失性存储器。而只读存储器,即使停电存储内容也不丢失。 (1)只读存储器。 只读存储器(MROM)由芯片制造商在制造时写入内容,以后只能读不能写入,其 基本存储原理是以元件的“有”和“无”来表示存储信息的“1”或“0”,可以用二极管 或晶体管作为元件。 (2)可编程只读存储器。 可编程只读存储器(PROM)可由用户根据需要来确定 ROM 中的内容,常见的熔 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 54 丝式 PROM 是以熔丝的通和断开来表示所存信息的“1”或“0”。刚出厂的产品,其熔 丝是全部接通的,用户根据需要断开某些单元的熔丝(写入)。断开后的熔丝不能再接通, 所以 PROM 是一次性写入的存储器,掉电后不会影响所存储的内容。 (3)可擦可编程只读存储器。 可擦可编程只读存储器(EPROM)利用浮动栅 MOS 电路保存信息,信息用紫外线 照射即可擦除。 (4)可电擦可编程只读存储器。 可电擦可编程只读存储器(EEPROM)的编程原理与 EPROM 相同,但擦除原理完 全不同,重复改写次数有限制(因氧化层被磨损),一般为 10 万次。 其读、写操作可按位或字节进行,与 SRAM 类似,但每字节的写入周期需要几毫秒, 比 SRAM 长得多。EEPROM 每个存储单元采用 2 个晶体管,其栅极氧化层比 EPROM 薄, 因此具有电擦除功能。 (5)快速读写存储器。 快速读写存储器(Flash Memory)是在 EPROM 与 EEPROM 基础上发展起来的,其 读写过程和 EEPROM 不同。Flash Memory 的读写操作一般是以块为单位,具有价格便 宜、集成度高、电可擦洗重写等特点。Flash Memory 还具备 RAM 的部分功能,具备随 机访问的能力,但是 Flash Memory 仍然属于 ROM 的范畴。 7. 存储芯片的内部结构 存储芯片包括存储体、地址译码电路和读写控制逻辑。 8. 存储芯片的外部引脚 存储芯片的外部引脚包括:地址线、数据线、读写控制线、电源线、地线和片选信 号线。 9. SRAM 与 DRAM SRAM 与 DRAM 的比较见表 3-1。 表 3-1 SRAM 与 DRAM 的比较 对 比 项 目 SRAM DRAM 储存信息 触发器 电容 破坏性读出 否 是 需要刷新 否 是 行列地址 同时送 分两次 运行速度 快 慢 集成度 低 高 发热量 大 小 存储成本 高 低 第 3 章 主存储器 55 3.2.5 主存储器与 CPU 的连接与控制 1. 连接原理 主存储器与 CPU 的连接如图 3-7 所示。 图 3-7 主存储器与 CPU 的连接图 主存储器通过数据总线、地址总线和控制总线和 CPU 连接。数据总线的位数与工 作频率的乘积与数据传输率成正比。地址总线的位数决定了可寻址的最大内存空间。控 制总线(读、写)指出总线周期的类型和本次输入/输出操作完成的时刻。 2. 主存储器容量的扩展 当使用半导体存储器芯片构成主存储器时,由于存储芯片的容量有限,当单个存储 芯片的容量不能满足系统要求时,需要进行容量扩展。 1)位扩展 位扩展指加大字长,而芯片的字数和存储器的字数是一致的,存储器数据线位数多 于芯片数据线位数。与 CPU 连接要点如下。 (1)各存储芯片的地址线相连并连接到系统地址总线的对应位。 (2)各芯片的读、写线连接在一起,接 CPU 的读、写控制线。 (3)各芯片的片选线相同以保证组芯片中的同一单元要同时被选中。 (4)各芯片的数据线单独引出,分别连接系统数据线。 例如:用 64K×1 的 SRAM 芯片组成 64K×8 的存储器, 共需 8 个芯片。CPU 发出 的地址和控制信号同时传给各个芯片,选中每个芯片的同一单元,每个芯片分别读出 1 位送至数据总线的相应位,或将数据总线上的内容分别同时写入不同芯片的相应单元。 其连接情况如图 3-8 所示。 图 3-8 位扩展示意图 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 56 2)字扩展 字扩展是指单个芯片的存储单元数不足,需要增加存储器的存储单元数,而每个存 储单元的位数满足系统要求。 此时系统地址线的位数多于芯片地址线数,系统数据线位 数与芯片数据线位数相等。字扩展的连接要点如下。 (1)将各个芯片的地址线均连接于系统地址线的低位。 (2)芯片的数据线、读、写线均连接到系统数据线和读写控制线。 (3)各个芯片的片选信号不能同时有效,片选信号通常由高位地址译码得到。 例如,用 16K×8 的 SRAM 组成 64K×8 的存储器,需要 4 个芯片。当 CPU 访问该 存储器时,其发出的地址的低 14 位和读、写控制信号同时传给 4 个芯片,高位两位地址 经译码后选中 4 个芯片中一个,并选中该芯片的某一单元,该单元的片内地址由地址的 低 14 位决定,其单元的内容被读至数据总线上,或将数据总线上的内容写入相应单元。 其连接情况如图 3-9 所示。 图 3-9 字扩展 3)字、位同时扩展 字、位同时扩展是字扩展与位扩展的组合,连接要点如下。 将进行位扩展的芯片作为一组,组内各个芯片地址线、读写控制线、片选信号的连 接线均相连,数据线分别与系统数据线的若干位相连以实现位扩充。 由高位地址线译码产生各个片选信号分别对应到各组芯片的片选信号,进行容量 扩充。 例如,利用 16K×4 的 SRAM 组成 64K×8 的存储器,共需要 8 个芯片。8 个芯片分 成 4 组,每组两片。每组内两个芯片的片内地址线(A13~A0)与系统地址线的低位相连, 两个芯片的 4 位数据线分别接数据线的高 4 位和低 4 位,实现位扩展,各组芯片的片选信 号由高位地址 A14~A15 译码得到,以实现字扩展。其连接情况如图 3-10 所示。 第 3 章 主存储器 57 图 3-10 字位同时扩展 3. 片选信号的产生 片选信号的形成方案会影响主存地址的分配,存储芯片的片选信号一般由高位地址 译码或直接连接产生,可以分为线选法和译码片选法。 线选法用除片内寻址外的高位地址线直接(或经反相器)接至各个存储芯片的片选端, 当某地址线信息为“0”时,就选中与之对应的存储芯片。这些片选地址线每次寻址时只能 有一位有效,不允许同时有多位有效,这样才能保证每次只选中一个芯片(或芯片组)。 在考试中,扩展的考点主要有以下三个。 (1)计算芯片数量以及识别扩展类型。 对于芯片数量的计算,用主存储器的大小/芯片大小,就能得到芯片数量;对于识别 扩展类型,主要是看清地址数量和存储单元大小,当芯片的存储单元大小小于内存的存 储单元大小时,就是位扩展;当芯片的存储单元大小等于内存的存储单元大小,但是芯 片存储单元数量小于内存的存储单元数量时,就是字扩展;当芯片的存储单元大小小于 内存的存储单元大小,芯片存储单元数量小于内存的存储单元数量时,就是位字扩展, 这种情况下,是先扩展位,再扩展字。 (2)不同存储器芯片的引脚数量如表 3-2 所示。 表 3-2 SRAM 和 DRAM 芯片引脚的计算 线 类 型 SRAM DRAM 地址线 线选法 int(log2N) 重合法 int(log2N)/ 2 数据线 存储字长(MDR) 存储字长(MDR) 读/写命令线 读/写 1 根 读 1 根,写 1 根 片选线 log2M log2M 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 58 (3)地址芯片的地址空间的计算。 计算芯片地址空间时,一般是把地址空间化成二进制形式进行,在计算地址空间大 小时,不需要考虑存储单元大小(位扩展的问题)。 3.2.6 双端口 RAM 和多体模块存储器 采用双端口存储器、多体交叉存储器(多体并行存储器)以及高速缓充存储器可以 提高主存储器的访问速度。 1. 双端口 RAM 的工作原理 如图 3-11 所示,双端口 RAM 是在一个 SRAM 存储器上具有两套完全独立的数据 线、地址线和读、写控制线,具有左右两个端口,每个端口有自己的片选和输出允许信 号,并允许两个独立的系统同时对该存储器进行随机访问,由于同一个存储器具有两组 相互独立的读写控制线路,是一种高速工作的存储器。当两端口地址不同时,在两端口 上进行读写操作则不会发生冲突。当两个端口同时存取存储器的同一存储单元时,则发 生读写冲突。此时由判断逻辑来决定哪个端口进行读写操作。 图 3-11 双端口 RAM 双端口存储器发生读写冲突的情况是双端口存储器设计有两个端口,两套读写逻辑 电路。在同时操作同一单元时会生冲突,所以地址码相同时产生冲突。 2. 多体模块存储器 多体模块存储器分为单体多字存储器和多体低位交叉存储器(多体低位并行存储器)。 1)单体多字存储器 单体多字系统的特点是存储器中只有一个存储体,每个存储单元存储 m 个字,总线 宽度也为 m 个字。一次并行读出 m 个字,地址必须顺序排列并处于同一存储单元。 单体多字系统在一个存取周期内,从同一地址取出 m 条指令,然后逐条将指令送至 CPU 执行,即每隔 1/m 存取周期,CPU 向主存取一条指令。这样显然增大了存储器的带 宽,提高了单体存储器的工作速度。 单体多字存储器的缺点是指令和数据在主存内必须是连续存放的,一旦遇到转移指 令,或者操作数不能连续存放,这种方法的效果就不明显。 第 3 章 主存储器 59 2)多体交叉存储器 多体交叉存储器由多体模块组成,每个模块有相同的容量和存取速度,各模块有独 立的读写控制电路、地址寄存器和数据寄存器,它们既能并行工作,又能交叉工作。多 体并行存储器分为高位交叉编址(顺序方式)和低位交叉编址(交叉方式)两种。 (1)高位交叉编址:如图 3-12 所示,高位地址表示体号,低位地址表示体内地址。 图 3-12 高位交叉编址的多体存储器 (2)低位交叉编址:低位地址为体号,高位地址为体内地址,又称为交叉存储器。 多体模块结构的存储器采用低位交叉编址后,可以在不改变每个模块存取周期的前 提下,采用流水线的方式并行存取,提高存储器的带宽。 设模块字长等于数据总线宽度,模块存取一个字的存取周期为 T,总线传送周期为 r,为实现流水线方式存取,则存储器交叉模块数应大于等于 m: m=T/r 式中,m 称为交叉存取度。每经 r 时间延迟后启动下一个模块,交叉存储器要求其模块 数必须大于或等于 m,以保证启动某模块后经过 m×r 的时间后再次启动该模块时,其 上次存取操作已经完成(即流水线不间断)。这样连续存取 m 个字所需的时间为 t1=T+(m-1)r。而顺序方式连续读取 m 个字所需时间为 t2=mT,可知低位交叉存储器的带 宽大大提高了。 (3)低位交叉方式和高位交叉方式的工作过程。 设模块字长等于数据总线宽度,模块存取一个字的存取周期为 T,总线传送周期为 r,存储器的模块数为 m。 对于高位交叉方式,根据冯·诺依曼原理,也就是对于内存要按照地址访问,首先 是 CPU 通过相关总线把访存地址发送给内存,所需要的时间是总线传送周期 r,存储器 读取一个模块,消耗一个存储周期 T,之后按照顺序读取方式(单体多字方式)顺序读 取 m 个字,消耗的总时间是(m-1)×T,与此同时读取各个字的存储周期 T 中,可以通 过相关总线把读出的数据传输到 CPU。最后一个数据需要消耗一个传输周期 r,把它输 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 60 出到 CPU,因为这个数据后面不再读取内存。所以完成整个过程消耗的时间是 r+m× T+r。 对于低位交叉方式,根据冯·诺依曼原理,也就是对于内存要按照地址访问,CPU 通过相关总线把访存地址发送给内存,所需要的时间是总线传送周期 r,存储器读取一 个模块,消耗一个存储周期 T,同时 CPU 依次向其他 m-1 个存储体发送地址,各个存 储体可以并行读取。当满足 m=T/r 时,如图 3-13 所示,正好采用流水线模式进行读取, 连续存取 m 个字所需的时间为 t1=T+(m-1)×r。所以完成整个过程消耗的时间是 r+T+(m-1)×r +r。 图 3-13 多个存储体分时启动 对于高位交叉方式,针对单个存储体请求源而言,相当于顺序访问,但是同一时刻、 不同请求源请求不同存储体时,可以加快存储器的访问速度。对于低位交叉方式,同一 时刻、同一请求源访问不同存储体,通过流水线方式加快存储器的访问速度。 3.2.7 主存—Cache 系统 1. 存储器访问的局部性原理 时间局部性是指如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行; 如果某数据被访问过,则不久以后该数据可能再次被访问。产生时间局限性的典型原因 是在程序中存在着大量的循环操作。 空间局部性是指一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也 将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情 况便是程序的顺序执行。 2. 主存—Cache 系统概述 根据局部性原理,主存—Cache 系统是在主存和 CPU 之间设置一个高速的、容量相 对较小的存储器,正在使用的主存储器某一单元邻近的那些单元将被用到的可能性很大, 因此把正在使用的数据和指令放置到 Cache 中,CPU 就可以直接对 Cache 进行存取。在 第 3 章 主存储器 61 整个处理过程中,如果CPU绝大多数存取主存储器的操作能被存取 Cache 的操作所代替, CPU 的处理速度就能显著提高。 3. Cache 的工作原理 在设计主存—Cache 系统时,Cache 和主存都被分成若干个大小相等的块,每块由若 干字节组成。 Cache 的容量远小于主存的容量,所以 Cache 的块数要远少于主存的块数, Cache 保存的信息只是主存中最活跃的若干块的副本。把正在执行的指令代码单元及其 附近的一部分指令代码或数据从主存装入 Cache 中,由于存储器访问的局部性,在一段 时间内,CPU 需要访问的指令或者数据在 Cache 中的可能性较大,这样可以做到程序运 行时,CPU 大部分取指令代码及数据的读、写操作都只需访问 Cache,而不需访问主存, 从而提高程序的运行速度。 如图 3-14 所示,Cache 主要由 Cache 存储体、主存和 Cache 地址映射机构和 Cache 替换机构组成。 图 3-14 Cache 的基本结构原理框图 1)Cache 存储体 Cache 存储体以块为单位和主存交换信息,而且为了加快主存和 Cache 的数据交换, 设置 Cache 访存的优先级最高。 2)地址映射机构 地址映射机构将主存地址映射为 Cache 地址。地址映射机构按照一定的规则进行地 址映射。 3)替换机构 当 Cache 内容已满,无法接收来自主存块的信息时,就由 Cache 的替换机构按照一 定的替换规则来确定应该从 Cache 中移出哪个块,同时把新的主存块调入 Cache。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 62 4. Cache 的基本操作 当 CPU 发出读操作命令时,根据它产生的主存地址分为两种情况:一种是需要的数 据已在 Cache 存储器中,那么只需直接访问 Cache 存储器,从对应单元中读取信息到数 据总线;另一种是所需要的数据尚未装入 Cache 存储器,CPU 在从主存读取信息的同时, 由 Cache 替换部件把该地址所在的那块存储内容从主存复制到 Cache 中。当从主存调入 新的块到 Cache 时,如果遇到 Cache 中的相应位置已经被其他块占用,就需要按照一定 的替换算法替换掉旧的块。Cache 的读操作流程如图 3-15 所示。 图 3-15 Cache 的读操作流程 CPU 发出写请求时,如果 Cache 命中,有可能会遇到 Cache 与主存中的内容不一致 的问题。例如,由于 CPU 写 Cache,把 Cache 某单元中的内容从 X 修改成了 X',而主 存对应单元中的内容仍然是 X,没有改变。所以如果 Cache 命中,需要按照规定的写策 略处理,常见的处理方法有全写法和写回法。 CPU 欲访问的信息已在 Cache 中的比率称为 Cache 的命中率。设一个程序执行期间, Cache 的总命中次数为 Nc,访问主存的总次数为 Nm,则命中率 H 为 H=Nc/(Nc+Nm) 为提高访问效率,命中率 H 越接近 1 越好。设 Tc 为命中时的 Cache 访问时间, Tm 为未命中平均访问时间。1-H 表示未命中率,当 Cache 与主存同时访问时,Cache 主存系统的平均访问时间 Ta 为 Ta=H×Tc+(1-H)×Tm 当 Cache 与主存不同时访问时,Cache 主存系统的平均访问时间 Ta 为 Ta=Tc+(1-H)×Tm 主存—Cache 系统的系统效率为 Ta/Tc。 第 3 章 主存储器 63 【例 1】 假设 Cache 的速度是主存的 5 倍,且 Cache 的命中率为 95%,则采用 Cache 后,存储器性能提高多少(设 Cache 和主存同时被访问,若 Cache 命中则中断访问主存)? 解:设 Cache 的存取周期为 t,则主存的存取周期为 5t, Cache 和主存同时访问,不命中时访问时间为 5t, 故系统的平均访问时间为 Ta=0.95×t + 0.05×5t = 1.2t, 故性能为原来的 5t/1.2t≈4.17 倍,即提高了 3.17 倍。 5. Cache 和主存之间的映射方式 所谓地址映射是指主存信息块调入 Cache 时,被装入 Cache 的什么位置。由于 Cache 的存储空间较小,因此,Cache 中的一个存储块要与主存中的若干个存储块相对应。三 种映射方式的示意图如图 3-16 所示。 图 3-16 三种 Cache-主存地址映射方式 地址变换是指当以主存地址访问主存时,将主存地址变换为 Cache 地址,以便从 Cache 访问该数据,这个变换过程叫作地址变换。 (1)全相联映射方式。 全相联映射方式允许主存中的每一个字块映射到 Cache 存储器的任何一个字块位置 上,如图 3-16(a)所示。全相联方式冲突的概率低,Cache 的利用率高,但全相联映射 方式的 Cache 中硬件控制复杂,实现起来比较困难。 全相联映射方式的主存地址格式:主存标记+块内地址。 全相联映射方式的 Cache 的标记 Tag 内容:主存块号,因为全相联映射方式的某一 个 Cache 块的信息可能来自任意一个主存块,标记表明该 Cache 块来自主存的哪一块。 (2)直接映射方式。 直接映射方式相当于将主存的空间按 Cache 的大小进行分区,每区内相同的块号映 射到 Cache 中唯一的指定位置,这个唯一位置由映射关系决定。直接映射方式的优点是 实现简单,缺点是不够灵活,尤其是当程序往返访问两个相互冲突的块中的数据时,Cache 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 64 的命中率将急剧下降。 直接映射方式的每一个主存块和 Cache 块的映射关系是: i=j mod C 或者 i=j mod 2c 其中,i 是 Cache 块号;j 是主存块号;C 是 Cache 块数;c 是区内块号的位数。 如果 j 表示主存单元编号,直接映射方式每一个主存块和 Cache 块的映射关系是: i=(j DIV 2b)mod C 或者 i=(j DIV 2b)mod 2c 其中,i 是 Cache 块号;j 是主存块号;C 是 Cache 块数;c 是区内块号的位数;b 是块内 偏移。 直接映射方式的主存地址格式:主存标记+Cache 块号+块内偏移。 直接映射方式的 Cache 标记 Tag 的内容:映射到该位置的主存块的主存地址中的 区号。 (3)组相联映射方式。 组相联映射方式的映射规则是将存储空间分成若干组,各组之间是直接映射,而组 内各块之间则是全相联映射,如图 3-16(c)所示。组相联映射相当于将主存按照 Cache 的大小划分为区,区内分组,每组包括若干块,主存中存储块的数据可调入 Cache 中 一个指定组内的任意块中。组相联映射方式在判断块命中以及替换算法上都要比全相 联映射方式简单,冲突的概率比直接映射方式的概率低,其命中率介于直接映射和全 相联映射之间。 组相联映射方式的主存地址格式:主存标记+Cache 组号+块内偏移。 组相联映射方式每一个主存块和 Cache 组的映射关系是: i=j mod C 或者 i=j mod 2c 其中,i 是 Cache 组号;j 是主存块号;C 是 Cache 组数;c 是区内组号的位数。 如果 j 表示主存单元编号,组相联映射方式的每一个主存块和 Cache 块的映射关系是: i=(j DIV 2b)mod C 或者 i=(j DIV 2b)mod 2c 其中,i 是 Cache 组号;j 是主存块号;C 是 Cache 组数;c 是区内组号的位数;b 是块内 偏移。 如果是几路的标记同时比较,则可以加快访问速度,此时比较器的个数等于路数。 比较器的位数等于标记的位数。 对于组相联映射方式,具体实现时,有两种不同的映射方式,如图 3-17 所示,主存 块一共有 8 块,Cache 一共有 4 块,采用 2 路组相联方式,图 3-17(a)是唐朔飞老师教 材中的实现方式,图 3-17(b)是蒋本珊老师教材中的实现方式。 第 3 章 主存储器 65 图 3-17 组相联映射方式的实现方式 对于图 3-17(a)的映射方式,j = i mod N,其中 i 是主存块号,j 是 Cache 块号,N 是 Cache 块数。根据计算结果,运算结果是 0 和 1 为第一组, 2 和 3 为第二组。主存一 共有 8 块,Cache 有 4 块;主存块号 0 mod 4 = 0,组号是 0,主存块号 1 mod 4 = 1,组号是 0,主存块号 4 mod 4 =0,组号是 0,主存块号 5 mod 4 = 1,组号是 0;主存块号 2 mod 4 = 2,组号是 1,主存块号 3 mod 4 = 3,组号是 1,主存块号 6 mod 4=2,组号是 1,主存块 号 7 mod 4 =3,组号是 1。 对于图 3-17(b)的映射方式,j = i mod N,其中 i 是主存块号,j 是 Cache 组号,N 是 Cache 组数。根据计算结果,运算结果是 0 的为第一组,运算结果是 1 的为第二组。 主存一共有 8 块,Cache 有 4 块,分成两组;主存块号 0 mod 2 = 0,组号是 0,主存块 号 2 mod 2 = 0,组号是 0,主存块号 4 mod 2 =0,组号是 0,主存块号 6 mod 2 = 0,组号是 0;主存块号 1 mod 2 = 1,组号是 1,主存块号 3 mod 2 = 1,组号是 1,主存块号 5 mod 2 =1, 组号是 1,主存块号 7 mod 2 =1,组号是 1。 在以往的考试中,两种方式都出现过,当推荐教材使用唐朔飞老师的教材时,使用 图 3-17(a)中方式,推荐教材使用蒋本珊老师的教材时,使用图 3-17(b)中方式。如 果没有推荐,默认优先使用唐朔飞老师教材中的方式。 6. Cache 中主存块的替换策略 由于 Cache 的存储空间较小,主存的存储空间较大,因此 Cache 中的一个存储块要 与主存中的若干个存储块相对应,若在调入主存中一个存储块时,Cache 中相应的位置 已被其他存储块占有,则必须去掉—个旧的字块,让位于一个新的字块。这称为替换策 略或替换算法。常用的替换策略有以下几种。 (1)随机算法:随机地确定替换的 Cache 块,它的实现比较简单,但没有依据程序 访问的局部性原理,故命中率较低。 (2)先进先出算法:选择最早调入的行进行替换,比较容易实现,但也没有依据程 序访问的局部性原理,可能会把一些经常需要使用的程序块(如循环程序)也作为最早 进入 Cache 的块替换掉。 (3)近期最少使用算法:依据程序访问的局部性原理选择近期长时间未访问过的存 储行作为替换的行,平均命中率要比先进先出算法高,是堆栈类算法。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 66 此算法对每行设置一个计数器,Cache 每命中一次,命中行计数器清零,而其他各 行计数器均加 1,需要替换时比较各特定行的计数值,将计数值最大的行换出。 (4)最不经常使用算法:将一段时间内被访问次数最少的存储行换出。每行也设置 一个计数器,新行建立后从 0 开始计数,每访问一次,被访问的行计数器加 1,需要替 换时比较各特定行的计数值,将计数值最小的行换出。 7. Cache 写策略 Cache 命中时,有以下两种方法。 .. 写直达法:把新的内容写入 Cache 存储器的同时也写入主存,使主存和 Cache 中的内容同时被修改,保证主存和副本内容一致。 .. 回写法(标志交换方式):在 Cache 中设置一个更新位,当修改了 Cache 的内容 时,使更新位置 1,但并不立即写入主存。当 Cache 中的内容要被新的主存块 替换时,查看更新位,若更新位为 1,则 Cache 控制器把该块的内容写入主存 相应的位置,并把更新位清零,再作替换操作。 8. 主存地址结构计算以及 Cache 结构和大小计算 主存与 Cache 之间存在三种映射方式,分别是直接相联映射、全相联映射和组相联 映射。直接相联映射的主存结构如下。 主存标记 Cache 块号(行号) Cache(主存)块内地址 Cache 块内地址位数的计算方式是: Cache 块内地址位数=log2(Cache 块大小) 其中块大小可以按照字节编址,也可以按照字编址,默认是按照字节编址,例如 Cache 块大小是 64B,按照字节编址,Cache 块内地址位数是 log264=6 位。 Cache 块号位数的计算方式是: Cache 块号位数=log2(Cache 块数) 例如 Cache 块数是 32 块,那么 Cache 块号位数是 log232=5 位。 主存标记位数的计算方式是: 主存标记位数=主存总位数-Cache 块号位数-Cache 块内地址位数 其中主存总位数取决于主存大小和主存的编址方式,例如主存大小是 128MB,按照字节 编址,主存的总位数是 log2(128M)=27 位,于是主存标记是 27-5-6=16 位。 全相联映射的主存结构如下。 主存标记 Cache(主存)块内地址 Cache 块内地址位数的计算方式是: Cache 块内地址位数=log2(Cache 块大小) 第 3 章 主存储器 67 其中块大小可以按照字节编址,也可以按照字编址,默认是按照字节编址,例如 Cache 块大小是 64B,按照字节编址,那么 Cache 块内地址位数是 log264=6 位。 主存标记位数的计算方式是: 主存标记位数=主存总位数– Cache 块内地址位数 其中主存总位数取决于主存大小和主存的编址方式,例如主存大小是 128MB,按照字节 编址,主存的总位数是 log2(128M)=27 位,于是主存标记是 27-6=21 位。 组相联映射的主存结构如下。 主存标记 Cache组号 Cache(主存)块内地址 Cache 块内地址位数的计算方式是: Cache 块内地址位数=log2(Cache 块大小) 其中块大小可以按照字节编址,也可以按照字编址,默认是按照字节编址,例如 Cache 块大小是 64B,按照字节编址,Cache 块内地址位数是 log264=6 位。 Cache 组号位数的计算方式是: Cache 组号位数=log2(Cache 组数) Cache 组数=Cache 块数/ Cache 路数(每组包含的 Cache 块数) 例如 Cache 块数是 32 块,采用 4 路组相联方式,那么 Cache 组号位数是 log2(32/4)=3 位。 主存标记位数的计算方式是: 主存标记位数=主存总位数– Cache 组号位数– Cache 块内地址位数 其中主存总位数取决于主存大小和主存的编址方式,例如主存大小是 128MB,按照字节 编址,主存的总位数是 log2(128M)=27 位,主存标记位数=27-3-6=18 位。 Cache 的地址结构与主存地址结构不同,Cache 的地址结构如下。 Cache 标记 Cache块内地址 Cache 块内地址位数的计算与主存地址结构中 Cache 块内地址的计算相同。 Cache 标记包括四部分:主存标记位、有效位、脏位(一致性维护位)、替换算法位。 其中主存标记位是主存地址结构的主存标记;有效位 1 位,表示存放到 Cache 中的主存 块是否还有效;一致性维护位 1 位,表示主存块中的数据与对应 Cache 块中的数据是否 一致,在 Cache 更新算法中,回写法需要一致性维护位,而直写法不需要一致性维护位; 替换算法位用来表示替换算法的数量,位数=log2(替换算法的数量)。 在考试中,主存标记位和有效位是必需的,回写法需要一致性维护位,一般不考虑 替换算法位。因此,计算 Cache 大小的公式是: 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 68 Cache 大小=Cache 块数(行数)×(主存标记位数+有效位数 +脏位(一致性维护位)数+替换算法位数) 读者请思考,为什么 Cache 地址结构中没有 Cache 块号或者 Cache 组号? 9. 三种映射方式的查找过程 直接映射地址的变换过程如图 3-18 所示,CPU 给出需要访问的内存地址,根据主存 与 Cache 的映射关系,把主存地址分解为主存标记、Cache 块号、块内偏移(Cache 块内 地址);根据主存地址的 Cache 块号 s,在 Cache 中查找 Cache 块 s 所对应的表项,查看 该 Cache 块的标记是否与主存地址中主存标记部分相同;如有相同的块,且 Cache 的有 效位为 1,说明要访问的主存单元在 Cache 中,以块号 s+块内地址 t 访问 Cache,否则说 明请求的内容不在 Cache 中,需要从主存中访问数据,并把对应的主存块放入 Cache 中, 当 Cache 中已经存满时,根据对应的替换算法替换 Cache 块。从上述过程中可以看出, Cache 组织结构类似于数组,主存地址结构中 Cache 块号类似于数组的下标。 图 3-18 直接映射地址变换过程 组相联映射方式地址变换过程如图 3-19 所示,CPU 给出需要访问的内存地址,根据 主存与 Cache 的映射关系,把主存地址分解为主存标记、Cache 组号、块内偏移(Cache 块内地址);根据主存地址中的 Cache 组号找到 Cache 组;把主存地址中的主存标记与组 内各个 Cache 块的标记进行比较,有相等的,且对应 Cache 块的有效位为 1,说明要访 问的主存单元在 Cache 中,以组号 s+块内地址 t 访问 Cache,否则说明请求的内容不在 Cache 中,需要从主存中访问数据,并把对应的主存块放入 Cache 中,当 Cache 中已经 存满时,根据对应的替换算法替换 Cache 块。从上述过程中可以看出,Cache 组织结构 类似于数组,主存地址结构中 Cache 组号类似于数组的下标,与直接映射方式不同的是, 在比较标记时,需要让组内的各个 Cache 块的标记同时和主存标记进行比较。 第 3 章 主存储器 69 图 3-19 组相联映射方式地址变换过程 全相联映射方式地址变换过程如图 3-20 所示,CPU 给出需要访问的内存地址,根据 主存与 Cache 的映射关系,把主存地址分解为主存标记、块内偏移(Cache 块内地址); 根据主存地址中的 Cache 组号找到 Cache 组;把主存地址中的主存标记与所有 Cache 块 的标记进行比较,有相等的,且对应 Cache 块的有效位为 1,说明要访问的主存单元在 Cache 中,以块内地址 t 访问 Cache,否则说明请求的内容不在 Cache 中,需要从主存中 访问数据,并把对应的主存块放入 Cache 中,当 Cache 中已经存满时,根据对应的替换 算法替换 Cache 块。从上述过程中可以看出,全相联 Cache 没有编址方式,按照内容进 行比较,在比较标记时,需要让所有 Cache 块的标记同时和主存标记比较。 图 3-20 全相联映射方式地址变换过程 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 70 3.2.8 虚拟存储系统 1. 虚拟存储器概述 虚拟存储器由主存储器和辅助存储器共同组成,这两级存储器在硬件和软件系统的 共同管理下,在逻辑上形成一个统一的存储器,这个统一的存储器对使用者是透明的, 虚拟存储器涉及以下几个概念。 .. 虚存空间:程序空间对应地址是虚地址(逻辑地址、程序地址)。 .. 主存空间:对应地址为实地址(物理地址),其对应的存储容量为主存容量。 .. 辅存空间:对应地址为辅存地址(磁盘机号+盘面号+磁道号+扇区号)。 2. 虚拟存储器的工作原理 虚拟存储器将主存和辅存地址空间统一编址,形成一个庞大的存储空间,在这个大 空间里,用户可以自由编程,完全不必考虑程序在主存是否装得下,以及这些程序将来 在主存中的实际位置,用户编程的地址称为虚地址或逻辑地址,实际的主存单元地址称 为实地址或物理地址。在虚拟存储器系统中,虚地址要比实地址大得多。 在实际的物理存储层次上,在操作系统管理下,所编程序和数据先送入磁盘,然后 操作系统将当前运行所需要的部分调入主存,供 CPU 使用,其余暂不运行部分留在磁盘 中。程序运行时,CPU 以虚地址来访问主存,由辅助硬件找出虚地址和实地址之间的对 应关系,并判断这个虚地址指示的存储单元内容是否已装入主存。如果已在主存中,则 通过地址变换,CPU 可直接访问主存的实际单元;如果不在主存中,则把包含这个字的 一页或一个程序段调入主存后再由 CPU 访问。如果主存已满,则由替换算法从主存中将 暂不运行的一页或一段调回辅存,再从辅存调入新的一页或一段到主存。概括起来就是, 计算机系统存储管理软件和相应的硬件把欲访问单元所在的程序块从辅存调入主存,且 把程序虚地址变成实地址,然后再由 CPU 访问主存。 3. 虚拟存储器的实现方法 虚拟存储器按信息块的划分方案不同,可以分为页式虚拟存储器、段式虚拟存储器 和段页式虚拟存储器等几种形式。在组成原理考试范畴内,只需要掌握页式虚拟存储器 即可。 1)页式虚拟存储器 页式虚拟存储器是将一个进程的逻辑地址空间分成若干大小相等的片,称为页面或 页,并为各页编号,从 0 开始,如第 0 页、第 1 页等,把内存空间分成与页面相同大小 的若干个存储块,称为(物理)块或页框,也同样为它们编号,如 0#块、1#块等;各 虚拟页可装入主存中不同的实际块中。 页式虚拟存储器中,程序的逻辑地址由页号和页内地址两部分组成,内存地址(物 理地址)分为块号和块内地址两部分,由于页大小和块大小相等,所以页内地址和块内 地址是相同的。虚拟地址到物理地址的映射主要实现页号到块号的映射,这部分功能由 页表实现。页表是一张存放页号和块号对应关系的对照表,记录程序的页调入内存时被 第 3 章 主存储器 71 放置的主存的位置。页表是虚拟页号与物理页号的映射表。页式管理由操作系统进行, 对程序员是透明的。页式虚拟存储器的地址变换过程如图 3-21 所示。 图 3-21 页式虚拟存储地址变换过程 (1)程序执行时,从 PCB 中取出页表起始地址和页表长度,装入页表寄存器 PTR。 PCB 是进程控制块,包含程序在运行过程中的所有信息,页表寄存器是为了加快地址映 射而设置的寄存器。 (2)由分页地址变换机构将逻辑地址自动分成页号和页内地址。 (3)将页号与页表长度进行比较,若页号大于或等于页表长度,则表示本次访问的 地址已超越进程的地址空间,产生越界中断。 (4)将页表始址与页号和页表项长度的乘积相加,便得到该页表项在页表中的位置。 (5)取出页表项得到该页的物理块号,如果对应的有效位为 1,表示该页在内存中。 (6)将物理块号送入物理地址寄存器中,再将有效地址寄存器中的页内地址直接送 入物理地址寄存器的块内地址字段中,拼接得到实际的物理地址。 (7)取出页表项得到该页的物理块号,如果对应的有效位为 1,表示该页不在内存中, 此时对应的页仍在辅存中,需要操作系统进行缺页处理,把该页调入内存。 2)TLB(快表) 从上述地址变换过程可知,每次访存都要读页表,如果页存放在主存中,就意味着 访存时间至少是两次访问主存的时间,第一次用来查找页表,将操作数的逻辑地址变换 为物理地址,第二次完成真正的读写操作,这样查表的代价大大。根据访存的局部性, 表内各项的使用概率不是均匀分布的。在一段时间内可能只用到表中的很少几项,因此, 可以设置一个专用的 Cache,这个专用的 Cache 使用寄存器或者硬件实现,用于存放近 期经常使用的页表项,而将整个表格放在主存中,这就引出了快表和慢表的概念和技术, 而这个 Cache 称为快表。查表时,根据虚页表同时查找快表和慢表,当在快表中查到该 虚页号时,就能很快找到对应的实页号,将其送入主存实地址寄存器,同时使慢表的查 找作废,这时主存的访问速度降低很少。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 72 如果在快表中查不到,则经过一个访问主存的时间延迟后,将从慢表中查到的实页 送入实地址寄存器,同时将要访问的虚页号和对应的实页号送入快表,快表的存在对所 有的程序员都是透明的。 3)TLB 的实现方式(使用 Cache 来实现) TLB 中的表项由两部分组成:标识和数据。标识中存放的是逻辑地址的一部分,而 数据部分中存放物理页号、存储保护信息以及其他一些辅助信息。 逻辑地址与 TLB 中的表项的映射方式有三种:直接匹配模式、全匹配模式、组匹配 模式。 (1)直接匹配模式。 直接匹配模式的 TLB 的地址结构如下,每一个逻辑地址的页号都可通过模运算对应 到唯一的一个 TLB 表项,类似于 Cache 的直接相联方式。 标记 TLB编号(C 位) 页内地址 逻辑地址的页号和 TLB 表项的映射关系是: TLB 编号=页号 mod 2C (2)全匹配模式。 全匹配模式的 TLB 的地址结构如下,每一个逻辑地址的页号都可通过模运算对应到 任意的一个 TLB 表项,类似于 Cache 的全相联方式。 标记 页内地址 (3)组匹配模式。 组匹配模式的 TLB 的地址结构如下,每一个逻辑地址的页号都可通过模运算对应到 唯一的一组 TLB 表项,类似于 Cache 的组相联方式。 标记 TLB组号(C 位) 页内地址 逻辑地址的页号和 TLB 组的映射关系是: TLB 组号=页号 mod 2C 4)虚拟存储器和 Cache 的异同点 虚拟存储器和 Cache 的相同之处是地址映射方式和替换算法相似,不同之处有以下 4 个方面。 (1)Cache 主要解决主存和 CPU 之间的速度差距,而虚拟存储器主要用来弥补主存 和辅存之间的容量差距。 (2)Cache 每次传送的信息块是定长的,只有几十字节,而虚拟存储器信息块划分 方案很多,有页、段等,长度为几百字节至几百 K 字节。 第 3 章 主存储器 73 (3)主存—Cache 存储体系中,CPU 与 Cache 和主存都建立了直接访问的通道,一 旦不命中,CFU 就直接访问主存并同时向 Cache 调度信息块,从而减少了 CPU 的等待 时间。而辅助存储器与 CPU 之间没有直接通路,一旦主存不命中,只能从辅存调块到主 存。因为辅存的速度相对于 CPU 的差距太大,调度需要毫秒级的时间,因此,CPU 一 般会去执行另一个程序,等到调度完成后才返回源程序继续工作。 (4)Cache 存取信息的过程、地址变换和替换策略全部用硬件实现,对程序员均是 透明的。而主存—辅存层次的虚拟存储器基本是由操作系统的存储管理软件管理,并辅 助一些硬件来进行信息块的划分和主存—辅存之间的调度,所以对设计存储管理软件的 系统程序员来说:它是不透明的,而对应用程序员是透明的。 4. 带 TLB 的主存—辅存和主存—Cache 地址映射过程 带 TLB 的主存—辅存和主存—Cache 地址映射过程如图 3-22 所示。该地址映射过程 由两个阶段构成:第一个阶段是从逻辑地址映射到物理地址,这属于虚拟存储器的过程; 第二个阶段是从物理地址到 Cache 地址映射,这属于主存—Cache 系统的过程。 由 CPU 给出逻辑地址,地址分页机构把地址结构分为页号和页内地址,根据页号首 先去检索快表,根据快表的不同实现方式映射地址,如果在快表中命中,则直接得到物 理地址。如果在快表中不命中,则根据页号去检索页表(慢表),如果在页表中命中,则 直接得到物理地址;如果在页表中不命中,则操作系统进行缺页处理,最后也可以得到 物理地址。得到物理地址后,再根据 Cache 的不同相联方式得到 Cache 地址。 图 3-22 带 TLB 的主存—辅存和主存—Cache 地址映射过程 下面通过一个例子来具体说明这个过程。某计算机采用页式虚拟存储管理方式,按 字节编址。CPU 运行存储访问的过程如图 3-23 所示,根据图 3-23 回答下列问题。 (1)主存物理地址占多少位? (2)若 CPU 给出的虚拟地址为 0008 C040H,则对应的物理地址是多少?是否在 Cache 中命中?说明理由。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 74 图 3-23 带 TLB 的主存—辅存和主存—Cache 地址映射过程示例 解答:由图 3-23 可以看出,Cache 采用的是 2 路组相联映射模式,这是因为每个 Cache 组有两块;而 TLB 采用的是全相联匹配模式,这是因为 TLB 在比较标记时采用同时比 较(也就是按照内容比较)。 (1)物理地址位数是 20+3+5=28(或 16+12=28)。物理地址的位数计算可以使用 Cache 的地址位数相加,也可以使用物理地址结构的位数相加。 (2)TLB 采用的是全相联匹配模式,TLB 的直接格式是:TLB 标记,页内地址,并 且页内地址位数是 12 位,标记位数是 20 位;给定虚拟地址 0008 C040H,按照 TLB 地 址格式进行分解,得到页内地址是 040H,TLB 标记是 0008C;使用 0008CH 查找 TLB, 得到有效位是 1,且实页号(物理块号)为 0040H,于是物理地址是 004 0040H。 Cache 采用的是 2 路组相联映射模式,并且主存表示是 20 位,Cache 组号是 3 位, Cache 块内地址是 5 位;给定物理地址 004 0040H,按照 Cache 地址结构进行分解,得到 Cache 块内地址是 00000B,中间 3 位的组号为 010B,主存标记为 00400H;组号为 010B, 十进制数是 2,得到 Cache 中标记位是 000400,与主存标记相等,但是 Cache 中的有效 位是 0,所以 Cache 不命中。 第 3 章 主存储器 75 3.3 本 章 习 题 1. 执行过程中访存 1000 次,其中访问 Cache 缺失(未命中)50 次,则 Cache 的命 中率是( )。 A.5% B.9.5% C.50% D.95% 2. 计算机系统中,广义的存储系统包括寄存器、Cache、主存储器和外存储器其每 位价格由高到低的顺序是( )。 A.寄存器、Cache、主存储器、外存储器 B.Cache、寄存器、主存储器、外存储器 C.存储器、寄存器、Cache、外存储器 D.外存储器、主存储器、Cache、寄存器 3.(2009 年真题)某计算机的 Cache 共有 16 块,采用 2 路组相联映射方式(即每组 2 块)。每个主存块大小为 32 字节,按字节编址。主存 129 号单元所在主存块应装入到 的 Cache 组号是( )。 A.0 B.2 C.4 D.6 4. 某计算机主存容量为 64KB,其中 ROM 区为 4KB,其余为 RAM 区,按字节编 址。现要用 2K×8 位的 ROM 芯片和 4K×4 位的 RAM 芯片来设计该存储器,则需要上 述规格的 ROM 芯片数和 RAM 芯片数分别是( )。 A.1、15 B.2、l5 C.1、30 D.2、30 5.(2010 年真题)假定用若干个 2K×4 位芯片组成一个 8K×8 位存储器,则地址 0B1FH 所在芯片的最小地址是( )。 A.0000H B.0600H C.0700H D.0800H 6. 下列有关 RAM 和 ROM 的叙述中,正确的是( )。 Ⅰ. RAM 是易失性存储器,ROM 是非易失性存储器 Ⅱ. RAM 和 ROM 都采用随机存取方式进行信息访问 Ⅲ. RAM 和 ROM 都可用做 Cache Ⅳ. RAM 和 ROM 都需要进行刷新 A.仅Ⅰ和Ⅱ B.仅Ⅱ和Ⅲ C.仅Ⅰ,Ⅱ,Ⅲ D.仅Ⅱ,Ⅲ,Ⅳ 7.(2010 年真题)下列命令组合情况中,一次访存过程中,不可能发生的是( )。 A.TLB 未命中,Cache 未命中,页未命中 B.TLB 未命中,Cache 命中,页命中 C.TLB 命中,Cache 未命中,页命中 D.TLB 命中,Cache 命中,页未命中 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 76 8. 下述关于存储器的描述中,正确的是( )。 I.CPU 访存时间由存储器容量决定 II.ROM 和 RAM 在存储器中是统一编址的 Ⅲ. ROM 中任一单元可随机访问 Ⅳ.DRAM 是破坏性读出,因此需要读后重写 A.I 和Ⅱ B.Ⅱ和Ⅲ C.Ⅲ和Ⅳ D.Ⅱ、Ⅲ和Ⅳ 9. 下面关于主存储器性能的说法中,不正确的是( )。 A.衡量一个主存储器的性能指标主要有主存容量、存储器存取时间和存储周期 B.指令中地址码的位数决定了主存储器可以直接寻址的空间 C.存储器存取时间是指从启动一次存储器操作到完成该操作所经历的时间 D.存储周期是指连续启动两次独立的存储器操作所需间隔的最小时间,通常存 储周期略小于存取时间,其差别主要与主存储器的物理实现细节有关 10. 若一台计算机的字长为 4 字节,则表明该机器( )。 A.能处理的数值最大为 4 位十进制数 B.能处理的数值最多由 4 位二进制数组成 C.在 CPU 中能够作为一个整体处理 32 位的二进制代码 D.在 CPU 中运算的结果最大为 232 11. 现有存储器 SRAM、DRAM、Cache 以及寄存器、磁盘、磁带和光盘,存储容量 由大到小,存取时间由快到慢的顺序为( )。 A.寄存器,Cache,SRAM,DRAM,磁盘,光盘,磁带 B.Cache,寄存器,SRAM,DRAM,磁盘,光盘,磁带 C.寄存器,Cache,DRAM,SRAM,磁盘,光盘,磁带 D.寄存器,Cache,SRAM,DRAM,磁带,磁盘,光盘 12. 动态存储器(DRAM)的刷新原则是( )。 A.各 DRAM 芯片轮流刷新 B.各 DRAM 芯片同时刷新,片内逐位刷新 C.各 DRAM 芯片同时刷新,片内逐字刷新 D.各 DRAM 芯片同时刷新,片内逐行刷新 13. 在一个引入 Cache 的计算机主存中,已知 Cache 为 16KB,主存为 128MB,Cache 中块的大小为 1KB,当采用直接地址映射时,主存地址的二进制格式为( )。 A.7 位区号,4 位块号,1 位内地址 B.7 位区号,16 位块号,11 位内地址 C.13 位区号,4 位块号,10 位内地址 D.27 位区号,14 位块号,10 位内地址 14. 可随机读写,且只要不断电,则其中存储的信息就可一直保存的,称为( )。 A.RAM B.VRAM C.DRAM D.SRAM 第 3 章 主存储器 77 15. 可随机读写,但即使在不断电的情况下其存储的信息也要定时刷新才不致丢失 的,称为( )。 A.RAM B.VRAM C.DRAM D.SRAM 16. 所存信息由生产厂家用掩膜技术写好后就无法再改变的称为( )。 A.EPROM B.PROM C.MROM D.CDROM 17. 通过紫外线照射后可擦除所有信息,然后重新写入新的信息并可多次进行的, 称为( )。 A.EPROM B.PROM C.ROM D.CDROM 18. 通过电信号可在数秒钟内快速删除全部信息,但不能进行字节级别删除操作的, 称为( )。 A.EEPROM B.Flash Memory C.EPROM D.Virtual Memory 19. 实存的存储分配算法用来决定输入的程序和数据放到主存中的位置,总是将程 序装入主存中最大的空闲区域的算法称为( )。 A.最佳适应算法 B.最差适应算法 C.首次适应算法 D.循环首次适应算法 20. 下面关于 Cache 的说法中,不正确的是( )。 A.Cache 存储器中保存的字块是主存中相应字块的一个副本 B.Cache 的容量和块的大小是影响命中率的重要因素 C.从现实而言,Cache 可以取代主存 D.一般来说,Cache 的存储容量比主存的容量小得多,但不能太小,太小会使 命中率太低。也没有必要过大,过大不仅会增加成本,而且当容量超过一定 值后,命中率随容量的增加将不会有明显的增长 21. 在 CPU 与主存之间设置 Cache,其目的是为了( )。 A.扩大主存的存储容量 B.提高 CPU 对主存的访问效率 C.既扩大主存容量又提高存取速度 D.提高外存储器的速度 22. 在关于主存与 Cache 的地址映射方式中,( )是正确的。 A.全相联映射方式适用于大容量 Cache B.直接映射是一对一的映射关系,组相联映射是多对一的映射关系 C.在 Cache 容量相等条件下,直接映射方式的命中率比组相联映射方式有更高 的命中率 D.在 Cache 容量相等条件下,组相联映射比直接映射方式有更高的命中率 23. 在分析 Cache 对机器性能的影响时,( )是正确的。 A.Cache 容量比主存小许多,决定机器访问存储器的速度是主存,Cache 只起 次要作用 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 78 B. Cache 的主要作用是减少调用子程序的开销 C. 核心程序法是评价计算机性能的方法之一,由于它程序短,访问存储器的局 部性较大,Cache 的命中率比一般程序高 D. 奔腾计算机采用两级 Cache 结构,一级放系统程序,另一级放用户程序 24. 为了提高计算机的性能,采用 Cache、虚拟存储器等多项技术,( )不属于 Cache 的特征。 A.为了提高速度全部用硬件实现 B.可以显著提高计算机的主存速度 C.可以显著提高计算机的主存容量 D.对程序员是透明的 25. 内存地址从 AC000H 到 C7FFFH,共有( )K 个地址单元。 A.96 B.112 C.132 D.156 26. 内存地址从 AC000H 到 C7FFFH,如果该内存地址按字(16bit)编址,由 28 片 存储器芯片构成。已知构成此内存的芯片每片有 16K 个存储单元,则该芯片每个存储单 元存储( )位。 A.4 B.8 C.16 D.24 27. 已知某高速缓存采用组相联映射方式,即组间直接映射,组内全相联映射。假 设主存容量为 4096 块,每块 256B,高速缓存包含 32 块,分为 8 组,每组 4 块。高速缓 存的地址变换表应包含( )个存储单元。 A.8 B.16 C.32 D.48 28. 已知某高速缓存(Cache)采用组相联映射方式,即组间直接映射,组内全相联 映射。假设主存容量为 4096 块,每块 256B,高速缓存包含 32 块,分 8 组,每组 4 块。 高速缓存的地址变换表应包含(1)个存储单元,每个存储单元应能存放(2)位二进制 数,每次参与相联比较的是(3)个存储单元。 (1)A.128 B.256 C.512 D.1024 (2)A.4 B.8 C.12 D.16 (3)A.1 B.2 C.3 D.4 29. 某计算机主存按字节编址,主存与高速缓存(Cache)的地址变换采用组相联映 射方式(即组内全相联,组间直接映射)。高速缓存分为 2 组,每组包含 4 块,块的大小 为 512B,主存容量为 1MB。构成高速缓存的地址变换表相联存储器容量为( )。 A.4×10b B.8×10b C.4×11b D.8×11b 30. 以下关于相联存储器,下面的论述中,错误的是( )。 A.相联存储器按地址进行并行访问 B.相联存储器的每个存储单元都具有信息处理能力 C.相联存储器能并行进行各种比较操作 D.在知识库中应用相联存储器实现按关键字检索 第 3 章 主存储器 79 31. Cache 一般采用( )存储器件构成。 A.DRAM B.SRAM C.ROM D.NVRAM 32. 虚拟存储系统中的页表有快表和慢表之分,下面关于页表的叙述中正确的 是( )。 A.快表与慢表都存储在主存中,但快表比慢表容量小 B.快表采用了优化的搜索算法,因此比慢表的查找速度快 C.快表比慢表的命中率高,因此快表可以得到更多的搜索结果 D.快表采用快速存储器件组成,按照查找内容访问,因此比慢表查找速度快 33. 目前,计算机系统中常用的三级存储体系是( )。 A.寄存器、内存、外存 B.寄存器、Cache、内存 C.Cache、主存、辅存 D.L0、L1、L2 三级 Cache 34. 计算机的存储系统采用分级存储体系的理论依据是( )。 A.存储容量、价格与存取速度间的协调性 B.程序访问的局部性 C.主存和 CPU 之间的速度匹配 D.程序运行的定时性 35. 某一 SRAM 芯片,其容量为 1024×8 位,除电源和接地端外,该芯片的引脚的 最小数目为( )。 A.21 B.22 C.23 D.24 36. 某存储器容量为 32K×16 位,则( )。 A.地址线为 16 根,数据线为 32 根 B.地址线为 32 根,数据线为 16 根 C.地址线为 15 根,数据线为 16 根 D.地址线为 15 根,数据线为 32 根 37. 若 RAM 中每个存储单元为 16 位,则下面所述正确的是( )。 A.地址线也是 16 位 B.地址线与 16 无关 C.地址线与 16 有关 D.地址线不得少于 16 位 38. DRAM 的刷新是以( )为单位的。 A.存储单元 B.行 C.列 D.存储字 39. 下面是有关 DRAM 和 SRAM 存储器芯片的叙述: I. DRAM 芯片的集成高 Ⅱ. DRAM 芯片的成本比 SRAM 高 Ⅲ. DRAM 芯片的速度比 SRAM 快 Ⅳ. DRAM 芯片工作时需要刷新,SRAM 芯片工作时不需要刷新 通常情况下,错误的是( )。 A.I 和Ⅱ B.Ⅱ和Ⅲ C.Ⅲ和Ⅳ D.I 和Ⅳ 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 80 40. 下列说法中,正确的是( )。 A.半导体 RAM 信息可读可写,且断电后仍能保持记忆 B.DRAM 是易失性 RAM,而 SRAM 中的存储信息是不易失的 C.半导体 RAM 是易失性 RAM,但只要电源不断电,所存信息是不易失的 D.半导体 RAM 是非易失性的 RAM 41. 关于 SRAM 和 DRAM,下列叙述中正确的是( )。 A.通常 SRAM 依靠电容暂存电荷来存储信息,电容上有电荷为 1,无电荷为 0 B.DRAM 依靠双稳态电路的两个稳定状态来分别存储 0 和 1 C.SRAM 速度较慢,但集成度稍高;DRAM 速度稍快,但集成度低 D.SRAM 速度较快,但集成度稍低;DRAM 速度稍慢,但集成度高 42. (2012 年真题)下列关于闪存的叙述中,错误的是( )。 A.信息可读可写,并且读、写速度一样快 B.存储元由 MOS 管组成,是一种半导体存储器 C.掉电后信息不丢失,是一种非易失性存储器 D.采用随机访问方式,可替代计算机外部存储器 43. 下列几种存储器中,( )是易失性存储器。 A.Cache B.EPROM C.Flash Memory D.CD-ROM 44. U 盘属于( )类型的存储器。 A.高速缓存 B.主存 C.只读存储器 D.随机存取存储器 45. 某计算机系统,其操作系统保存于硬盘上,其内存储器应该采用( )。 A.RAM B.ROM C.RAM 和ROM D.均不完善 46. 下列说法正确的是( )。 A.EPROM 是可改写的,故而可以作为随机存储器 B.EPROM 是可改写的,但不能作为随机存储器 C.EPROM 是不可改写的,故而不能作为随机存储器 D.EPROM 只能改写一次,故而不能作为随机存储器 47. 在下列几种存储器中,CPU 不能直接访问的是( )。 A.硬盘 B.内存 C.Cache D.寄存器 48. 若某存储器存储周期为 250ns,每次读出 16 位,则该存储器的数据传输率 是( )。 A.4×106 B/s B.4 MB/s C.8×106 B/s D.8 MB/s 49. 设机器字长为 64 位,存储容量为 128MB,若按字编址,它可寻址的单元个 数是( )。 A.16 MB B.16 M C.32 M D.32 MB 第 3 章 主存储器 81 50. 在 Cache 和主存构成的两级存储体系中,Cache 的存取时间是 100ns,主存的 存取时间是 1000ns,如果希望有效(平均)存取时间不超过 Cache 存取时间的 15%, 则 Cache 的命中率至少应为( )。 A.90% B.98% C.95% D.99% 51.(2011 年真题)某计算机存储器按字节编址,主存地址空间大小为 64MB,现用 4M×8 位的 RAM 芯片组成 32MB 的主存储器,则存储器的地址寄存器 MAR 的位数至 少是( )。 A.22 位 B.23 位 C.25 位 D.26 位 52.(2009 年真题)某计算机主存容量为 64KB,其中 ROM 区为 4KB,其余为 RAM 区,按字节编址。现要用 2K×8 位的 ROM 芯片和 4K×4 位的 RAM 芯片来设计该存储 器,则需要上述规格的 ROM 芯片数和 RAM 芯片数是( )。 A.1、15 B.2、15 C.1、30 D.2、30 53. (2010 年真题)假定用若干个 2K×4 位的芯片组成一个 8K×8 位的存储器,则 地址 0B1FH 所在芯片的最小地址是( )。 A.0000H B.0600H C.0700H D.0800H 54. 用存储容量为 16K×1 位的存储器芯片组成一个 64K×8 位的存储器,则在字方 向和位方向分别扩展了( )倍。 A.4、2 B.8、4 C.2、4 D.4、8 55. 80386DX 是 32 位系统,当在该系统中用 8KB 的存储芯片构造 32KB 的存储体 时,应完成存储器的( )设计。 A.位扩展 B.字扩展 C.字位扩展 D.字位均不扩展 56. 某计算机字长为 16 位,存储器容量为 256KB,CPU 按字寻址,其寻址范围 是( )。 A.0~219-1 B.0~220-1 C.0~218-1 D.0~217-1 57. 4 个 16K×8 位的存储芯片,可设计为( )容量的存储器。 A.32K×16 位 B.16K×16 位 C.32K×8 位 D.8K×16 位 58. 16 片 2K×4 位的存储器可以设计为( )存储容量的 16 位存储器。 A.16K B.32K C.8K D.2K 59. 设 CPU 地址总线有 24 根,数据总线有 32 根,用 512K×8 位的 RAM 芯片构成 该计算机的主存储器,则该计算机主存最多需要( )片这样的存储芯片。 A.256 B.512 C.64 D.128 60. 地址总线 A0(高位)~A15(低位),用 4K×4 位的存储芯片组成 16KB 存储器, 则产生片选信号的译码器的输入地址线应该是( )。 A.A2A3 B.A0A1 C.A12A13 D.A14A15 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 82 61. 若内存地址区间为 4000H~43FFH,每个存储单元可存储 16 位二进制数,该内 存区域用 4 片存储器芯片构成,则构成该内存所用的存储器芯片的容量是( )。 A.512×16b B.256×8b C.256×16b D.1024×8b 62. 内存按字节编址,地址从 90000H 到 CFFFFH,若用存储容量为 16K×8 位芯片 构成该内存,至少需要的芯片数是( )。 A.2 B.4 C.8 D.16 63.(2011 年真题)下列各类存储器中,不采用随机存取方式的是( )。 A.EPROM B.CD-ROM C.DRAM D.SRAM 64.(2011 年真题)某计算机存储器按字节编址,主存地址空间大小为 64MB,现用 4M×8 位的 RAM 芯片组成 32MB 的主存储器,则存储器地址寄存器 MAR 的位数至少 是( )。 A.22 位 B.23 位 C.25 位 D.26 位 65. (2013 年真题)某计算机主存地址空间大小为 256MB,按字节编址。虚拟地址 空间大小为 4GB,采用页式存储管理,页面大小为 4KB,TLB(快表)采用全相联映射, 有 4 个页表项,内容如表 3-3 所示。 表 3-3 页表映射关系 有 效 位 标 记 页 框 号 … 0 FF180H 0002H … 1 3FFF1H 0035H … 0 02FF3H 0351H … 1 03FFFH 0153H … 则对虚拟地址 03FF F180H 进行虚实地址变换的结果是( )。 A.015 3180H B.003 5180H C.TLB 缺失 D.缺页 66.(2012 年真题)假设某计算机按字编址,Cache 有 4 个行,Cache 和主存之间 交换的块大小为 1 个字。若 Cache 的内容初始为空,采用 2 路组相联映射方式和最近最 久未使用算法(LRU)替换策略。访问的主存地址依次为 0,4,8,2,0,6,8,6,4,8 时,命中 Cache 的次数是( )。 A.1 B.2 C.3 D.4 67.(2012 年真题)某计算机的控制器采用微程序控制方式,微指令中的操作控制字 段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令,则操作控制字段至少有( )。 A. 5 位 B.6 位 C.15 位 D. 33 位 68.(2014 年真题)某容量为 256MB 的存储器由若干 4M×8 位的 DRAM 芯片构 成,该 DRAM 芯片的地址引脚和数据引脚总数是( )。 A.19 B.22 C.30 D.36 第 3 章 主存储器 83 69.(2014 年真题)采用指令 Cache 与数据 Cache 分离的主要目的是( )。 A.降低 Cache 的缺失损失 B.提高 Cache 的命中率 C.降低 CPU 平均访存时间 D.减少指令流水线资源冲突 70.(2015 年真题)假定主存地址为 32 位,按字节编址,主存和 Cache 之间采用直 接映射方式,主存块大小为 4 个字,每字 32 位,采用回写(Write Back)方式,则能存 放 4K 字数据的 Cache 的总容量的位数至少是( )。 A.146K B.147K C.148K D.158K 71.(2015 年真题)假定编译器将赋值语句“x=x+3;”转换为指令“add xaddr, 3”, 其中 xaddr 是 x 对应的存储单元地址。若执行该指令的计算机采用页式虚拟存储管理方 式,并配有相应的 TLB,且 Cache 使用直写(Write Through)方式,则完成该指令功能 需要访问主存的次数至少是( )。 A.0 B.1 C.2 D.3 72.(2015 年真题)下列存储器中,在工作期间需要周期性刷新的是( )。 A.SRAM B.DRAM C.ROM D.FLASH 73.(2015 年真题)某计算机使用 4 体交叉编址存储器,假定在存储器总线上出现的 主存地址(十进制)序列为 8005、8006、8007、8008、8001、8002、8003、8004、8000, 则可能发生访存冲突的地址对是( )。 A.8004 和 8008 B.8002 和 8007 C.8001 和 8008 D.8000 和 8004 74.(2016 年真题)某存储器容量为 64KB,按字节编址,地址 4000H~5FFFH 为 ROM 区,其余为 RAM 区,若采用 8K×4 位的 SRAM 芯片进行设计,则需要该芯片的 数量是( )。 A.7 B.8 C.14 D.16 75.(2016 年真题)有如下 C 语言程序段 for(k=0;k<1000;k++) a[k]=a[k]+32; 若数组 a 及变量 k 均为 int 型,int 型数据占 4B,数据 Cache 采用直接映射方式,数 据区大小为 1KB,块大小为 16B,该程序段执行前 Cache 为空,则该程序段执行过程中 访问数组 a 的 Cache 缺失率约为( )。 A.1.25% B.2.5% C.12.5% D.25% 76.(2017 年真题)某计算机主存按字节编址,由 4 个 64M×8 位的 DRAM 芯片采 用交叉编址方式构成,并与宽度为 32 位的存储器总线相连,主存每次最多读写 32 位数 据。若 double 型变量 x 的主存地址为 804 001AH,则读取 x 需要的存储周期数是( )。 A.1 B.2 C.3 D.4 77.(计算题)设有一个 2MB 容量的存储器,字长为 32 位,问: (1)按字节编址,地址寄存器、数据寄存器各为几位?编址范围为多大? 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 84 (2)按字编址,地址寄存器、数据寄存器各为几位?编址范围为多大? 78.(计算题)有一个 16K×16 的存储器,用 1K×4 位的 DRAM 芯片(内部结构为 64×16,引脚同 SRAM)构成,设读/写周期为 0.1μs,问: (1)采用异步刷新方式,如单元刷新间隔不超过 2ms,则刷新信号周期是多少? (2)如采用集中刷新方式,存储器刷新一遍最少用多少读/写周期,死区率是多少? 79.(计算题)用 ROM 芯片(4K×4 位/片)和 RAM 芯片(2K×8 位/片)组成一个 半导体存储器,按字节编址。该存储器 ROM 区的容量为 16KB,RAM 区的容量为 10KB。 (1)组成该存储器需要多少块 ROM 芯片和 RAM 芯片? (2)该存储器一共需要多少根地址线?ROM 芯片、RAM 芯片各需要连入哪几根地 址线? (3)需要设置多少个片选信号?分别写出各片选信号的逻辑式。 80.(计算题)某个两级存储器系统的平均访问时间为 12ns,该存储器系统中顶层存 储器的命中率为 90%,访问时间是 5ns,问:该存储器系统中底层存储器的访问时间是 多少(假设采用同时访问两层存储器的方式)? 81.(计算题)CPU 执行一段程序时,Cache 完成存取的次数为 1900 次,主存完成 存取的次数为 100 次,已知 Cache 的存取周期为 50ns,主存存取周期为 250ns。求: (1)Cache/主存系统的效率。 (2)平均访问时间。 82.(计算题)在显示适配器中,用于存放显示信息的存储器称为刷新存储器,它的 重要性能指标是带宽。具体工作中,显示适配器的多个功能部分要争用刷新存储器的带 宽。设总带宽的 50%用于刷新屏幕,保留 50%带宽用于其他非刷新功能,且采用分辨率 为 1024×768,颜色深度为 3B,刷新频率为 72Hz 的工作方式。 (1)试计算刷新存储器的总带宽。 (2)为达到这样高的刷新存储器带宽,应采取何种技术措施? 83.(计算题)一个 1K×4 位的、RAM 芯片,若其内部结构排列成 64×64 形式,且 存取周期为 0.1μs。 (1) 若采用分散刷新和集中刷新(即异步刷新)相结合的方式,刷新信号周期应取 多少? (2) 若采用集中刷新,则对该存储芯片刷新一遍需多少时间?死时间率是多少? 84.(计算题)主存储器的地址寄存器和数据寄存器各自的作用是什么?设一个 1MB 容量的存储器,字长为 32 位,问: (1) 按字节编址,地址寄存器和数据寄存器各几位?编址范围为多大? (2) 按字编址,地址寄存器和数据寄存器各几位?编址范围为多大? 85.(计算题)用一个 512K×8 位的 Flash 存储芯片组成一个 4M×32 位的半导体只 读存储器,存储器按字编址,试回答以下问题: (1)该存储器的数据线数和地址线数分别为多少? 第 3 章 主存储器 85 (2)共需要几片这样的存储芯片? (3)说明每根地址线的作用。 86.(计算题)有一个 16K×16 位的存储器,由 1K×4 位的 DRAM 芯片构成(芯片 是 64×64 结构),问: (1)共需要多少 RAM 芯片? (2)采用异步刷新方式,如单元刷新间隔不超过 2ms,则刷新信号周期是多少? 87.(计算题)设有 32 片 256K×1 位的 SRAM 芯片,回答以下问题: (1) 采用位扩展方法可以构成多大容量的存储器? (2) 如果采用 32 位的字编址方式,该存储器需要多少地址线? (3) 画出该存储器与 CPU 连接的结构图,设 CPU 的接口信号有地址信号、数据信 号和控制信号MREQ、 WE 。 88.(计算题)某计算机主存空间为 64KB。I/O 空间与主存单元统一编址,I/O 空间 占用 1KB,范围为 FC00H~FFFFH。可选用 8K×8 位和 1K×8 位两种 SRAM 芯片构成 主存储器,RD 和WR 分别为系统提供的读/写信号线。画出该存储器逻辑图,并标明每 块芯片的地址范围。 89.(计算题)设 CPU 有 16 根地址线,8 根数据线,并用作访存控制信号(低电 平有效),用作读/写控制信号(高电平为读,低电平为写)。现有下列存储芯片:1K×4 位 RAM、4K×8 位 RAM、8K×8 位 RAM、2K×8 位 ROM、4K×8 位 ROM、8K×8 位 ROM 及 74LS138 译码器和各种门电路。画出 CPU 与存储器的连接图,要求: (1)主存地址空间分配:6000H~67FFH 为系统程序区;6800H~6BFFH 为用户程 序区。 (2)合理选用上述存储芯片,说明各选几片? (3)详细画出存储芯片的片选逻辑图。 90.(计算题)(2010 年真题)某计算机的主存地址空间大小为 256MB,按字节编址。 指令 Cache 和数据 Cache 分离,均有 8 个 Cache 行,每个 Cache 行大小为 64B,数据 Cache 采用直接映射方式。现有两个功能相同的程序 A 和 B,其伪代码如图 3-24 所示。 图 3-24 代码片段 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 86 假定 int 类型数据用 32 位补码表示,程序编译时 i、j、sum 均分配在寄存器中,数 组 a 按行优先方式存放,其首地址为 320(十进制数)。请回答下列问题,要求说明理由 或给出计算过程。 (1)若不考虑用于 Cache 一致性维护和替换算法的控制位,则数据 Cache 的总容量 为多少? (2)数组元素 a[0][31]和 a[1][1]各自所在的主存块对应的 Cache 行号分别是多少 (Cache 行号从 0 开始)? (3)程序 A 和 B 的数据访问命中率各是多少?哪个程序的执行时间更短? 91.(计算题)(2011 年真题)某计算机存储器按字节编址,虚拟(逻辑)地址空间 大小为 16MB,主存(物理)地址空间大小为 1MB,页面大小为 4KB;Cache 采用直接 映射方式,共 8 行;主存与 Cache 之间交换的块大小为 32B。系统运行到某一时刻时, 页表的部分内容和 Cache 的部分内容分别如图 3-25(a)、图 3-25(b)所示,图中页框 号及标记字段的内容为十六进制形式。 图 3-25 页表的部分内容和 Cache 的部分内容 请回答下列问题。 (1)虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框 号(物理页号)? (2)使用物理地址访问 Cache 时,物理地址应划分成哪几个字段?要求说明每个字 段的位数及在物理地址中的位置。 (3)虚拟地址 001C60H 所在的页面是否在主存中?若在主存中,则该虚拟地址对应 的物理地址是什么?访问该地址时是否 Cache 命中?要求说明理由。 (4)假定为该计算机配置一个 4 路组相联的 TLB,共可存放 8 个页表项,若其当前 内容(十六进制)如图 3-26 所示,则此时虚拟地址 024BACH 所在的页面是否保存在主 存中?要求说明理由。 图 3-26 TLB 的部分内容 第 3 章 主存储器 87 92.(计算题)(2012 年真题)假定某计算机的 CPU 主频为 80MHz,CPI 为 4,平 均每条指令访存 1.5 次,主存与 Cache 之间交换的块大小为 16B,Cache 的命中率为 99%,存储器总线宽带为 32 位。请回答下列问题。 (1)该计算机的 MIPS 数是多少?平均每秒 Cache 缺失的次数是多少?在不考虑 DMA 传送的情况下,主存带宽至少达到多少才能满足 CPU 的访存要求? (2)假定在 Cache 缺失的情况下访问主存时,存在 0.0005%的缺页率,则 CPU 平 均每秒产生多少次缺页异常?若页面大小为 4KB,每次缺页都需要访问磁盘,访问磁盘 时 DMA 传送采用周期挪用方式,磁盘 I/O 接口的数据缓冲寄存器为 32 位,则磁盘 I/O 接口平均每秒发出的 DMA 请求次数至少是多少? (3)CPU 和 DMA 控制器同时要求使用存储器总线时,哪个优先级更高?为什么? (4)为了提高性能,主存采用 4 体低位交叉存储模式,工作时每 1/4 个存储周期启 动一个体。若每个体的存储周期为 50ns,则该主存能提供的最大带宽是多少? 93.(计算题)(2013 年真题)某 32 位计算机,CPU 主频为 800MHz,Cache 命中 时的 CPI 为 4,Cache 块大小为 32 字节;主存采用 8 体交叉存储方式,每个体的存储 字长为 32 位、存储周期为 40ns;存储器总线宽度为 32 位,总线时钟频率为 200MHz, 支持突发传送总线事务。每次读突发传送总线事务的过程包括:送首地址和命令、存储 器准备数据、传送数据。每次突发传送 32 字节,传送地址或 32 位数据均需要一个总线 时钟周期。请回答下列问题,要求给出理由或计算过程。 (1)CPU 和总线的时钟周期各为多少?总线的带宽(即最大数据传输率)为多少? (2)Cache 缺失时,需要用几个读突发传送总线事务来完成一个主存块的读取? (3)存储器总线完成一次读突发传送总线事务所需的时间是多少? (4)若程序 BP 执行过程中,共执行了 100 条指令,平均每条指令需进行 1.2 次访 存,Cache 缺失率为 5%,不考虑替换等开销,则 BP 的 CPU 执行时间是多少? 94.(计算题)(2016 年真题)某计算机采用页式虚拟存储管理方式,按字节编址, 虚拟地址为 32 位,物理地址为 24 位,页大小为 8KB;TLB 采用全相联映射;Cache 数 据区大小为 64KB,按 2 路组相联方式组织,主存块大小为 64B,存储访问过程的示意图 如图 3-27 所示。 图 3-27 存储访问过程示意图 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 88 请回答下列问题: (1)图中字段 A~G 的位数各是多少?TLB 标记字段 B 中存放的是什么信息? (2)将块号为 4099 的主存块装入到 Cache 中时,所映射的 Cache 组号是多少?对 应的 H 字段内容是什么? (3)Cache 缺失处理的时间开销大还是缺页处理的时间开销大?为什么? (4)为什么 Cache 可以采用直写(Write Through)策略,而修改页面内容时总是采 用回写(Write Back)策略? 3.4 习题参考答案 1.【答案】 D 【解析】 Cache 的命中率 1 1 2 N H N N = + ,程序访存次数(包括访问 Cache 的次数和 访问主存的次数)N1+N2=1000 次,其中访问 Cache 的次数 N1 为访存次数减去未命中次 数(1000.50=950)。所以 H=(1000-50)/1000= 0.95 = 95%。 2. 【答案】 A 【解析】 寄存器的造价最高,其次是 Cache、主存,外存储器的容量最大,但价格 最便宜。 3.【答案】 C 【解析】 组相联映射方式是将某一主存块 j 按模 Q(Q 是 Cache 的组数)映射到 Cache 的第 i 组中的任一块,即 i = j mod Q。根据题目条件可知,Q=16/2=8 组。因为每 个主存块大小为 32 字节,按字节编址,所以主存 129 号单元所在的主存块号为 4(注意: 从 0 开始计数),所以 i=4 mod 8=4。 4.【答案】 D 【解析】 因为 1B=8 位,ROM 区的总大小为 4KB,即为 4K×8 位,那么需要的 ROM 芯片数为 (4K×8 位)/(2K×8 位)=2 片。64KB-4KB =60KB,即 60K×8 位,那么需要的 RAM 芯片数为 (60K×8 位)/(4K×4 位)=30 片。 5.【答案】 D 【解析】 芯片的大小为 2K×4 位,而存储器的大小为 8K×8 位,不难得出要获得这 样一个大小的存储器,需要 8 片 2K×4 位的芯片。如果按字节编址,对应一个大小为 8K×8 位的存储器,需要 13 位地址,其中高 3 位为片选地址,低 10 位为片内地址,而题目给出的 地址 0B1FH 转换为二进制为 0 1011 0001 1111,其高 3 位为 010,即片选地址为 2。因此, 地址 0B1FH 对应第 2 片芯片,该芯片的起始地址(最小地址)为 0 1000 0000 0000,即 0800H。 6.【答案】 A 【解析】 对于计算机系统中的存储器,常用的数据存取方式有顺序存取、直接存取、 第 3 章 主存储器 89 随机存取和相联存取四种,其中 RAM 和 ROM 都是采用随机存取方式。 RAM 具有读、写方便、使用灵活等优点,但断电后无法保存信息,因此只能用于暂 存数据,可用于主存和 Cache。 ROM的信息是固化在存储器中,断电后仍然能保存信息,信息不容易丢失。但 ROM 中的信息只可读出,无法改写,当然不需要刷新。一般用于存放系统程序 BIOS 和用于 微程序控制,不适合用于读写频繁的 Cache。 7.【答案】 D 【解析】 TLB 是缓存曾经访问过的虚拟地址所指向的物理地址,以使将来快速得 到相同物理地址的高速存储器,与 Cache 的作用相似。在一次访问存储器的过程中,如 果能够 Cache 命中,说明就访问到了需要的页,即页命中。同样的道理,如果能够 TLB 命中,也说明访问到了需要的页,如果这两者都命中,那么页肯定命中。因此本题中选 项 D 的情况是不可能发生的。 8.【答案】 D 【解析】 RAM 中任何存储单元的内容都能随机存取,且存取时间和存储单元的物 理位置无关。由于存取原理的不同,又分为 SRAM 和 DRAM。静态 RAM 以触发器原理寄 存信息,DRAM 以电容充放电原理寄存信息,对 DRAM 的读出是破坏性读出,因此需要读 后重写。ROM 只能对其存储的内容读出,而不能对其重新写入。一般来说,CPU 访问存储 器的时间与存储器容量的大小无关(或者说关系很小),而是由存储单元的材料决定的。 9.【答案】 D 【解析】 衡量一个主存储器的性能指标主要有主存容量、存储器存取时间和存 储周期。指令中地址码的位数决定了主存储器可以直接寻址的空间。存储器存取时间是 指从启动一次存储器操作到完成该操作所经历的时间。存储周期是指连续启动两次独立 的存储器操作所需间隔的最小时间,通常存储周期略大于存取时间,其差别主要与主存 储器的物理实现细节有关。 10.【答案】 C 【解析】 字长是计算机内部一次可以处理的二进制数码的位数。如果计算机的字长 为 4 字节,则说明该计算机在 CPU 中能够作为一个整体处理 32 位的二进制代码。 11.【答案】 A 【解析】 存储器 SRAM、DRAM、Cache 以及寄存器、磁盘、磁带和光盘,存储容 量由小到大、存取时间由快到慢的顺序为寄存器、Cache、SRAM、DRAM、磁盘、光盘、 磁带。 12.【答案】 D 【解析】 为了使已写入存储器的信息保持不变,一般每隔一定时间必须对存储体中 的所有记忆单元的栅极电容补充电荷,这个过程就是刷新。刷新的时间间隔由栅极电容 的泄放速度决定,一般选定 MOS 型 DRAM 允许的最大刷新间隔为 2ms。刷新和重写是 两个完全不同的概念,重写是随机的,某个存储单元只有在破坏性读出之后才需要重写, 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 90 而刷新是定时的,即使许多记忆单元长期未被访问,若不及时补充电荷的话,信息也会 丢失。无论是由刷新控制逻辑产生的地址逐行循环的刷新,还是芯片内部自动的刷新, 都不依赖外部的访问,刷新对 CPU 是透明的。刷新通常是一行一行进行,每一行中各记 忆单元同时被刷新,故刷新操作时仅需要行地址,不需要列地址。刷新操作类似于读出 操作,但又有所不同,因为刷新操作仅是给栅极电容补充电荷,不需要输出信息,另外 刷新不需要加片信号,即整个存储器中的所有芯片同时被刷新。 13.【答案】 C 【解析】 Cache 容量为 16KB,因为 16KB=214,所以 Cache 的地址为 14 位。Cache 块的大小为 1KB,所以块内地址 10 位,块地址为 4 位。 主存容量为 128MB,因为 128MB=227,所以主存的地址为 27 位。 Cache 中块的大小为 1KB,采用直接地址映射,则 Cache 可以分为 16 块,也就是说, 主存的每个区(页)有 16 块,而主存一共有 128MB/1KB=217 块,即主存可以分为 217/16=213 个区,所以区号为 13 位。 14.【答案】 D 【解析】 SRAM 的存储单元是用双稳态触发器(六管 MOS)来记忆信息的,即一 个存储单元存储一位信息“0”或“1”。静态存储单元保存的信息比较稳定、其结构简单、 可靠性高、速度较快。信息被读出后仍然保持原有信息而不需要再生(非破坏性读出), 不需要重写(再生)。但是其占用元件较多,占硅片面积大且功耗高,集成度不高,同时 SRAM 是易失性存储器,一旦断电,原来保存的信息就会丢失,通常被用来做 Cache, 因此选 D。 15.【答案】 C 【解析】 DRAM 的存储单元有三管式和单管式两种,靠电容存储电荷的原理来寄 存信息。若电容上存有足够的电荷则表示“1”,电容上无电荷则表示“0”。与 SRAM 相 比,DRAM 具有集成度更高、功耗低、价格便宜等特点。但是读出是破坏性的,故读出 后要立即对单元进行“重写”。即使不被读出,由于电容会漏电,电容上的电荷一般只能 维持 1ms~2ms,因此即使电源不掉电,电容上的电荷也会自动消失。为保证信息不丢 失,必须在 2ms 内对存储单元进行一次恢复操作,这个过程称为再生或者刷新。DRAM 通常用于主存储器,常用的刷新方式有集中刷新、分散刷新和异步刷新,因此选 C。 16.【答案】 C 【解析】 MROM 的内容由厂商在生产过程中直接写入,写入以后任何人都无法改 变其内容。 17.【答案】 A 【解析】 此为概念性题目,考生应牢记概念,对应关系如表 3-4 所示。 18.【答案】 B 【解析】 此为概念性题目,考生应牢记概念,对应关系如表 3-4 所示。 第 3 章 主存储器 91 表 3-4 RAM 和 ROM 对比表 类 型 保持数据 可 写 擦除大小 擦除次数 价 格 读写速度 SRAM × √ 字节 无限 昂贵 快 DRAM × √ 字节 无限 中等 中等 ROM √ × 无 不可擦除 便宜 快 PROM √ 一次编程 无 有限 中等 快 EPROM √ √ 整个芯片 有限 中等 快 EEPROM √ √ 字节 有限 昂贵 读快,写慢 FLASH √ √ 区 无限 中等 读快,写慢 19.【答案】 B 【解析】 通常使用的四种存储分配算法如下。 首次适应算法:将内存中的可用分区单独组成可用分区表或可用分区自由链,按起 始地址递增的次序排列。每次按递增次序向后找,一旦找到大于或等于所要求内存长度 的分区,则结束探索,从找到的分区中找出所要求的内存长度分配给作业,并把剩余的 部分进行合并。 循环首次适应算法:首次适应算法经常利用的是低地址空间,后面经常是较大的空 白区,为使内存所有线性地址空间尽可能地轮流使用到,每重新分配一次,都要在当前 之后寻找。 最佳适应算法:将输入作业放入主存中与它所需大小最接近的空白区中,使剩下的 未用空间最小,该算法要求空白区大小按从小到大次序组成空白区可用表或自由链。在 进行分配时总是从最小的一个开始查询,找到一个能满足要求的空白区便是最佳的一个。 最差适应算法:分配时将一个作业程序放入主存中最不适合它的空白区,即最大的 空白区(空闲区)内。 20.【答案】 C 【解析】 Cache 从理论上讲可以取代主存,但是当用 Cache 取代主存时,主存价格 增长幅度大,在速度上比带 Cache 的存储器提高不了多少,并且用 Cache 做主存,则主 存和辅助存储器的速度差别加大,在信息调入时,需要更多的额外开销,因此从现实而 言,Cache 难以取代主存。 21.【答案】 B 【解析】 由于 CPU 的速度比主存的读取速度快得多,为了解决这种不匹配,在它 们之间设置 Cache(高速缓冲存储器),将主存中的内容事先调入 Cache 中,CPU 直接访 问 Cache 的时间短得多,这样大大提高了 CPU 对主存的访问效率,也提高了整个计算机 系统的效率。 22.【答案】 D 【解析】 地址映射方式与 Cache 容量没有必然联系,故 A 错。组相联映射是一对 多关系,故 B 错。组相联映射方式块冲突概率低,空间利用率较直接映射高,命中率更 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 92 高,故选 D。 23.【答案】 C 【解析】 当 CPU 发出访存请求后,存储器地址先被送到 Cache 控制器以确定所需 数据是否已在 Cache 中,若命中则直接对 Cache 进行访问,这个过程称为 Cache 的地址 映射(映像)。常见的映射方法有直接映射、全相联映射和组相联映射。 直接映射方式是一种多对一的映射关系,但一个主存块只能复制到 Cache 的一个特 定块位置上去。直接映射方式的优点是以 RAM 作为 Cache 存储器,硬件电路较简单, 成本低。缺点是每个主存块只有一个固定的块位置可存放,容易产生冲突,因此适合大 容量 Cache 采用。 全相联映射使用相联存储器(CAM)作为 Cache,其速度快于直接映射,但是硬件 电路较复杂,而且价格也较昂贵。使用相联存储器组成的 Cache 存储器,其基本单元分 成两部分:地址部分和数据部分。数据部分用于存放数据,而地址部分则存放该数据的 存储器地址。当进行映射时,相联存储器把 CPU 发出的存储器地址与 Cache 内所有的地 址信息同时进行比较,以确定是否命中。全相联映射方式因比较器电路难于设计和实现, 只适用于小容量 Cache。 组相联映射方式是前两种方式的折中方案。它将 Cache 分成 u 组,每组 v 块,主存 块存放到哪个组是固定的,至于存到该组哪一块是灵活的。组相联映射方式中的每组块 数 v 一般取值较小,这种规模的 v 路比较器容易设计和实现。而块在组中的排放又有一 定的灵活性,冲突减少。在 Cache 容量相等的条件下,组相联映射比直接映射方式有更 高的命中率。 若计算机的 Cache 容量大,速度快,而且运行的程序又能使 CPU 读写的数据经常 在 Cache 中获得,则该程序执行的速度就快,也就是说如果程序短,访问存储器的局 部性比较大,Cache 的命中率会比一般程序高。采用这种程序来评价计算机性能往往评 价偏好。 个人计算机采用两级 Cache 结构时,在 CPU 内有一级,容量小速度更快,在主板上 另有一级,容量稍大,在使用中有时可分成指令 Cache 和数据 Cache 两部分,指令 Cache 不需要写操作,管理更方便。 24.【答案】 C 【解析】 Cache 的功能是提高 CPU 数据输入/输出的速率,通常在 CPU 和主存储器 之间设置小容量的 Cache。Cache 容量小但速度快,主存储器速度较低但容量大,通过优 化调度算法,系统的性能会大大改善,仿佛其存储系统容量与主存相当而访问速度近似 Cache。而这一切对程序员而言是透明的。 25.【答案】 B 【解析】 C7FFFH-AC000H+1H=1C000H,把 1C000H 转换为十进制数为 114688, 再化为 K,即有 114688/1024=112K 个地址单元。 第 3 章 主存储器 93 26.【答案】 A 【解析】 已知内存地址按字(16b)编址,则共有 112K×16 位。内存由 28 片存 储器芯片构成,每片有 16K 个存储单元,则该芯片每个存储单元存储(112K×16)/(28 ×16K)=4 位。 27.【答案】 C 【解析】 因为高速缓存包含 32 块,所以,高速缓存的地址变换表(块表)应包含 32 个存储单元。 28.【答案】 (1)C (2)A (3)D 【解析】 已知主存容量为 4096×256B=1MB 字节编址,由于 220=1MB,所以主存 地址应为 20 位。在组相联映射方式中,主存与 Cache 都分组,主存中一个组内的块数与 Cache 的分组数相同。因为高速缓存分为 8 组,主存每组 4 块,共分为 4096/8=512=29 组,组号长度为 9 位,因此高速缓存中包含 512 个存储单元。并且每个块是 256B,因此 块内地址(块内偏移值)是 8 位,所以主存字块标记就是 20-8-9=3 位,因此,高速缓存 每个存储单元包含 4 位,其中标记是 3 位,有效位是 1 位。因为主存中的各块与 Cache 的组号有固定的映射关系,但可自由映射到对应的 Cache 组中的任一块,而高速缓存每 组 4 块,所以每次参与相联比较的是 4 个存储单元。 29.【答案】 B 【解析】 已知主存容量为 1MB,可分为 1MB/512B=2048 块。因为高速缓存分为 2 组,所以主存每组 2 块,主存可分为 2048/2=1024=210 个组。因此需要 10 位组号。因为 高速缓存共有 8 块,因此,其地址变换表应包含 8 个存储单元,每个存储单元的长度为 主存地址组号长度,即 10 位二进制数。 30.【答案】 A 【解析】 相联存储器是一种特殊的存储器,是一种基于数据内容进行访问的存储设 备,相联存储器的特点是每个存储单元都必须有一个处理单元。当对其写入数据时,相 联存储器能够自动选择一个未用的空单元进行存储;当要读出数据时,不是给出其存储 单元的地址,而是直接给出该数据或者该数据的一部分内容,相联存储器对所有的存储 单元中的数据同时进行比较,并标记符合条件的所有数据以供读取。由于比较是同时、 并行进行的,所以这种基于数据内容进行读写的机制,其速度比基于地址进行读写的方 式要快许多。在计算机系统中,相联存储器主要用于虚拟存储器和 Cache。在虚拟存储 器中存放分段表、页表和快表,在高速缓存中作为存放 Cache 的块地址。另外,相联存 储器还经常用于数据库与知识库中按关键字进行检索。 31.【答案】 B 【解析】 Cache 存储器一般采用 SRAM 技术,这种存储器的速度比 DRAM 快,能 够跟得上 CPU 的要求,弥合了 CPU 和主存之间的速度差距。 32.【答案】 D 【解析】 虚拟存储系统中的快表采用快速存储器构成,按内容访问,因此比慢表查 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 94 找速度快。 33.【答案】 C 【解析】 计算机系统中常用的三级存储体系是指 Cache、主存、辅存,这三个级别 容量越来越大,价格越来越低,速度越来越慢。 34.【答案】 B 【解析】 计算机的存储系统采用分级存储体系的理论依据是程序访问的局部性原 理。CPU 访问存储器时,无论是取指令还是存取数据,所访问的存储单元都聚集在一个 较小的连续区域中。局部性分为两种,分别是时间局部性和空间局部性。时间局部性是 指如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。程序循环、堆栈 等是产生时间局部性的原因。空间局部性是指在最近的将来要用到的信息很可能与现在 正在使用的信息在空间地址上是临近的。 35.【答案】 A 【解析】 SRAM 芯片容量为 1024×8=210×8,所以需 10 根地址线、8 根数据线, 另外还需 3 根控制线 CS、W 和 R,所以芯片引脚的最小数目为 10+8+3=21 条。 36.【答案】 C 【解析】 32K 有 15 根地址线,以及 16 根数据线。 37.【答案】 B 【解析】 存储单元 16 位,每个单元存 16 位,与地址线无关。 38.【答案】 B 【解析】 DRAM 以行为单位进行刷新。 39.【答案】 B 【解析】 SRAM 读写速度快,生产成本高,多用于容量较小的高速缓冲存储器。 DRAM 读写速度较慢,集成度高,生产成本低,多用于容量较大的主存储器。 40.【答案】 C 【解析】 RAM 掉电内容丢失。 41.【答案】 D 【解析】 SRAM 是双稳态电路,DRAM 利用电容的充放电;SRAM 速度快,价格 高;DRAM 集成度高。 42.【答案】 A 【解析】 本题考查闪存的特性,闪存是 EEPROM 的进一步发展,可读可写,用 MOS 管的浮栅上有无电荷来存储信息,它依然是 ROM 的一种,故写速度比读速度要慢 不少。闪存是一种非易失性存储器,它采用随机访问方式,现在常见的 SSD 固态硬盘就 是由 Flash 芯片组成的,故答案为 A。 43.【答案】 A 【解析】 Cache 是易失性存储器。 第 3 章 主存储器 95 44.【答案】 D 【解析】 U 盘是由 Flash 芯片组成,是随机存取存储器。 45.【答案】 C 【解析】 操作系统保存在硬盘上,首先需要将其引导到主存中,而引导程序通常存 放在 ROM 中,程序运行需要可读可写,因此采用 RAM。 46.【答案】 B 【解析】 EPROM 只能用强紫外线照射来擦除。 47.【答案】 A 【解析】 CPU 不能直接访问硬盘,需先将硬盘中的数据调入内存才能访问。 48.【答案】 C 【解析】 计算的是存储器的带宽,每个存储周期读出 16b=2B,故而数据传输率是 2B/(250×10.9 s),即 8×106B/s。本题中 8MB/s 是 8×1024×1024B/s。 49.【答案】 B 【解析】 128MB/(64/8)B =16M。 50.【答案】 D 【解析】 假设命中率为 x,则可得到 100x+1000(1-x)≤100×(1+15%),简单计算后 可得 x≥98.33%,因此命中率至少为 99%。 51.【答案】 D 【解析】 存储器按字节编址,64MB 的主存地址空间,故而 MAR 的寻址范围是 64M, 故而是 26 位。而实际的主存空间不能代表 MAR 的位数。 52.【答案】 D 【解析】 首先确定 ROM 的个数,ROM 区为 4KB,选用 2K×8 位的 ROM 芯片, 需要(4K×8)/(2K×8)=2 片,采用字扩展方式;60KB 的 RAM 区,选用 4K×4 位的 RAM 芯片,需要(60K×8)/(4K×4)=30 片,采用字和位同时扩展方式。 53.【答案】 D 【解析】 用 2K×4 位的芯片组成一个 8K×8 位存储器,每行中所需芯片数为 2, 每列中所需芯片数为 4,各行芯片的地址分配为: 第一行(2 个芯片并联) 0000H~07FFH 第二行(2 个芯片并联) 0800H~0FFFH 第三行(2 个芯片并联) 1000H~17FFH 第四行(2 个芯片并联) 1800H~1FFFH 于是地址 0B1FH 所在芯片的最小地址即为 0800H。 54.【答案】 D 【解析】 字方向扩展了 64K/16K=4 倍,位方向扩展了 8b/1b=8 倍。 55.【答案】 A 【解析】 将 4 片 8KB 的存储芯片位扩展为 8K×32 位(因为此系统为 32 位的系统), 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 96 即为 32KB,即得到题意要求的 32KB 的存储体,故只需进行位扩展。 56.【答案】 D 【解析】 256KB=218B,按字寻址,可寻址的单元数=218B/2B=217,其寻址范围是 0~ 217-1。 57.【答案】 A 【解析】 4 个 16K×8 位的存储芯片构成的存储器容量=4×16K×8 位=512K 位或 64KB,只有选项 A 的容量为 64KB。需要注意的是,但若有某项为 128K×4 位,是不能 选的。 58.【答案】 C 【解析】 设存储容量为 M,则(M×16 位)/(2K×4 位)=16,所以 M=8K。 59.【答案】 D 【解析】 主存的总容量=224×32 位,所需存储芯片数=(224×32 位)/(512K×8 位)=128。 60.【答案】 A 【解析】 由于 A15 为地址线的低位,接入各芯片地址端的是地址线的低 12 位,即 A4~A15,共有 8 个芯片(分为 4 组)组成 16KB 的存储器,由高 2 位地址线 A2A3 作 为译码器的输入。 61.【答案】 C 【解析】 43FF-4000+1=400H,即内存区域为 1K 个单元,总容量为 1K×16,由 4 片存储芯片构成,则芯片容量为 256×16b。 62.【答案】 D 【解析】 FFFF-90000+1=40000H,即 256K。若用存储容量为 16K×8b 的芯片,则 需要芯片数=(256K×8)/(16K×8)=16 片。 63.【答案】 B 【解析】 CD-ROM 采用顺序存取方式。 64.【答案】 D 【解析】 64MB 的主存地址空间,故而 MAR 的寻址范围是 64M,故而是 26 位。而 实际的主存的空间不能代表 MAR 的位数。 65.【答案】 A 【解析】 虚拟地址为 03FF F180H,其中页号为 03FFFH,页内地址为 180H,根据 题目中给出的页表项可知,页标记为 03FFFH 所对应的页框号为 0153H,页框号与页内 地址之和即为物理地址 015 3180H。 66.【答案】 C 【解析】 地址映射采用 2 路组相连,则主存地址 0~1、4~5、8~9 设置到第 0 组 Cache 中,主存地址 2~3、6~7 映射到第 1 组 Cache 中。则 Cache 置换过程如表 3-5 所示。 第 3 章 主存储器 97 表 3-5 Cache 置换过程 走向 0 4 8 2 0 6 8 9 4 8 第 0 组 块 0 0 4 4 8 8 0 0 8 4 块 1 0 4 8 8 0 0 8* 8 4 8* 第 1 组 块 2 2 2 2 2 2 块 3 2 2 6 6 6* 6 6 *表示本次访问命中。 67.【答案】 C 【解析】 操作控制字段采用字段直接编码法,将微命令字段分成若干个小字段,互 斥类微命令可组合在同一字段。根据微命令字段分段的原则:互斥性微命令分在同一段 内,相容性微命令分在不同段内;一般每个小段要留出一个状态,表示本字段不发出任 何微命令,5 个互斥类分别需要 3、2、4、3、3 位共 15 位。 68.【答案】 A 【解析】 4M×8 位的芯片数据线应为 8 根,地址线应为 log24M=22 根,而 DRAM 采用地址复用技术,地址线是原来的 1/2,且地址信号分行、列两次传送。地址线数为 22/2=11 根,所以地址引脚与数据引脚的总数为 11+8=19 根。 此题需要注意 DRAM 是采用传两次地址的策略,所以地址线为正常的一半,这是 很多考生容易忽略的地方。 69.【答案】 D 【解析】 把指令 Cache 与数据 Cache 分离后,取指令和取数分别到不同的 Cache 中寻找,那么指令流水线中取指令部分和取数部分就可以很好地避免冲突,即减少了指 令流水线的冲突。 70.【答案】 B 【解析】 本题考查 Cache 和主存的映射方式。直接映射方式地址映射规则: 主存 储器中一块只能映射到 Cache 的一个特定的块中。采用直接映射方式的地址结果是:主 存标记字段,Cache 块号字段,块内地址字段。根据题意主存地址是 30 位,采用字节编 址,主存块大小是 4×4 字节,因此块内地址是 4 位。欲存放 4K 个字,每个块大小 4 个 字,得到 4K/4 =1024 个块,所以块内地址是 10 位;主存字块标记是 30-10-4 = 18 位。 Cache 总容量等于 Cache 数据容量加上高速缓存地址映射表大小。 Cache 数据容量是 4K×32b =128Kb Cache 地址映射表大小是 1024×(18+1+1)=20Kb,其中 1024 表示 1024 块,每一个 块都要有地址映射表,18 表示主存字块标记,第一个 1 表示有效位,第二个 1 表示数据 一致性维护位。 71.【答案】 B 【解析】 赋值语句 x = x + 3,要执行该语句,首先需要获得 x 的值,之后运算 x=x+3, 并且采用直写方式,需要访存次数,当初始 x 的值已经在 Cache 中时,访问内存次数最 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 98 少, 只需要在执行 x+3 后把新的 x 的值写回内存,因此最少的次数是 1 次。 72.【答案】 B 【解析】 DRAM 使用电容存储,所以必须隔一段时间刷新一次,如果存储单元没 有被刷新,存储的信息就会丢失。 73.【答案】 D 【解析】 采用 4 体交叉编址存储器,当给定主存编号时,该主存编号 i 存储的体号 是 t = i mod 4, 因此各个存储地址对应的体号依次是 8005 存储到 1,8006 存储到 2,8007 存储到 3,8008 存储到 0,8001 存储到 1,8002 存储到 2,8003 存储到 3,8004 储存到 0, 8000 也存储到 0。此时 8000 和 8004 出现于同一模块内,而且访问位置相邻,因此会发 生地址冲突。 74.【答案】 C 【解析】 5FFF-4000+1=2000H,即 ROM 区容量为:213B=8KB(2000H=2×163=213), RAM 区容量为 56KB(64KB-8KB=56KB)。则需要 8K×4 位的 SRAM 芯片的数量为 14 (56KB/8K×4 位=14)。 75.【答案】 C 【解析】 分析语句“a[k]=a[k]+32”:首先读取 a[k]需要访问一次 a[k],之后将结果 赋值给 a[k]需要访问一次,共访问两次。第一次访问 a[k]未命中,并将该字所在的主存 块调入 Cache 对应的块中,对于该主存块中的 4 个整数的两次访问只在访问第一次的第 一个元素时发生缺失,其他的 7 次访问中全部命中,故该程序段执行过程中访问数组 a 的 Cache 缺失率约为 1/8,即 12.5%。 76.【答案】 C 【解析】 由 4 个 DRAM 芯片采用交叉编址方式构成主存可知,主存地址最低二位 表示该字节存储的芯片编号。double 型变量占 64 位,8 字节。它的主存地址 804 001AH 最低二位是 10,说明它从编号为 2 的芯片开始存储(编号从 0 开始)。一个存储周期可 以对所有芯片各读取 1 字节,因此需要 3 轮。 77.【答案与解析】 存储单元地址是存储单元的编号,通常从 0 开始顺序编址,一个单元对应一个地址。 (1)按字节编址:2MB=221×8 位,因此地址寄存器为 21 位,数据寄存器为 8 位, 编址范围为 00000H~1FFFFH。 (2)按字编址:2MB=221×8=219×32 位,因此地址寄存器为 19 位,数据寄存器为 32 位,编址范围为 00000H~7FFFFH。 78.【答案与解析】 DRAM 芯片的各种刷新时间的计算方法如下。 (1)采用异步刷新方式,在 2ms 时间内分散地把芯片 64 行刷新一遍,故刷新信号 的时间间隔为 2ms/64=31.25μs,即可取刷新信号周期为 31μs。 (2)如采用集中刷新方式,假定 T 为读/写周期,则存储器刷新一遍所需最少刷新时 第 3 章 主存储器 99 间为 64T。因为 T 单位为 0.1μs,2ms=2000μs,则死区率=64T/2000×100%=0.32%。 79.【答案与解析】 (1)ROM 区的容量为 16KB(即 16K×8 位),每块 ROM 芯片的容量为 4K×4 位, 因此,需要的 ROM 芯片块数为 (16K×8 位)/(4K×4)=8 块;RAM 区的容量为 10KB(即 10K×8 位),每块 RAM 芯片的容量为 2K×8 位,因此,需要的 RAM 芯片块数为 (10K×8)/( 2K×8)=5。 (2)存储器总的容量为 26KB,需 15 根地址线(A14…A0),ROM 芯片连入 A11… A0,RAM 芯片连入 A10…A0。 (3)需要设置 9 个片选信号,如表 3-6 所示。9 个片选信号: 表 3-6 片选信号 ROM 片选信号 A14 A13 A12 A11 CS0 0 0 0 地址线 CS1 0 0 1 CS2 0 1 0 CS3 0 1 1 RAM CS4 1 0 0 0 CS5 1 0 0 1 CS6 1 0 1 0 CS7 1 0 1 1 CS8 1 1 0 0 注:0 表示低电平,1 表示高电平。 80.【答案与解析】 设底层存储器访问时间为 T,则有 12ns = (0.90×5ns)+(0.10×T),求得 T=75ns。 81.【答案与解析】 (1)命中率 H=Nc/(Nc+Nm)=1900/(1900+100)=0.95。 主存访问时间是 Cache 的倍率:r=tm/tc=250ns/50ns=5。 访问效率:e=1/[r+(1-r)H]=1/[5+(1-5)×0.95]=83.3%。 (2)平均访问时间:ta=tc/e=50ns/0.833=60ns。 82.【答案与解析】 (1)刷新带宽 W1 = 分辨率×像素点颜色深度×刷新速率 = 1024×768×3×72 = 165888 KB/s 刷新总带宽 W0 = W1×(W0/W1) = 165888KB/s×100/50 = 331776KB/s = 331.776MB/s (2)为了提高刷新存储器带宽,可采用以下技术: 采用高速 DRAM 芯片;采用多体交叉存储结构;刷新存储器至显示控制器的内部总 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 100 线宽度加倍;采用双端口存储器将刷新端口和更新端口分开。 83.【答案与解析】 (1)采用分散和集中刷新相结合的方式,对排列成 64×64 的存储芯片,需在 2ms 内将 64 行各刷新一遍,则刷新信号的时间间隔为 2ms/64=31.25μs,故可取刷新周期为 31μs。 (2)采用集中刷新,对 64×64 的芯片,需在 2ms 内集中 64 个存储周期刷新 64 行。 题中给出的存取周期为 0.1μs,即在 2ms 内集中 6.4μs 刷新,则死时间率为 (6.4/2000)× 100%=0.32%。 84.【答案与解析】 在主存储器中,地址寄存器 MAR 用来存放当前 CPU 访问的内存单元地址,或者存 放 CPU 写入内存的内存单元地址。数据寄存器 MDR 用来存放由内存中读出的信息或者 写入内存的信息。 (1)按字节编址,1MB=220×8 位,地址寄存器为 20 位,数据寄存器为 8 位,编址 范围为 00000H~FFFFFH(FFFFFH-00000H+1=220)。 (2)按字编址,1MB=218×32 位,地址寄存器为 18 位,数据寄存器为 32 位,编址 范围为 00000H~3FFFFH (3FFFFH-00000H+1=40000H= 218 )。 85.【答案与解析】 (1)出于所需组成存储器的最终容量为 4M×32 位,所以需要 32 根数据线。而存储 器又是字节编址,所以此时不需要将存储器的容量先转换成 16M×8 位,直接就是 4M× 32 位中的 4M,所以只需要 22 根地址线(222=4M)即可。 (2)采用 512K×8 位的 Flash 存储芯片组成 4M×32 位的存储器时,需要进行位扩 展和字扩展。 位扩展:4 片 512K×8 位的 Flash 存储芯片扩展可以组成 512K×32 位的 Flash 存储 芯片。 字扩展:8 片 512K×32 位的 Flash 存储芯片字扩展可以组成 4M×32 位的存储器。 综上可知,4×8=32,一共需要 32 片 512K×8 位的存储芯片。 (3)在 CPU 的 22 根地址线中(A0~A21),地址线的作用分配如下。 首先,此时不需要指定 A0、A1 来标识每一组中的 4 片存储器,因为此时是按字寻址, 所以毎次 4 片都是一起取的,而不是按字节编址时,需要取 4 片中的某一片。 A0~A18:每一片都是 512K,所以要 19 位(219=512K)来表示。 A19、A20 和 A21:因为在扩展中 4 片一组,一共 8 组,所以需要用 3 位地址线来决 定取哪一组通过译码器形成片选信号。 86.【答案与解析】 (1) 存储器的总容量为 16K×16 位,RAM 芯片为 1K×4 位,故所需芯片总数为 (16K×16 位)/(1K×4 位)=64 片。 (2)采用异步刷新方式,在 2ms 时间内分散地把芯片的 64 行刷新一遍,故刷新信 第 3 章 主存储器 101 号的时间间隔为 2ms/64=31.25μs,即可取刷新信号周期为 30μs。 87.【答案与解析】 (1)32 片 256 K×1 位的 SRAM 芯片可构成 256K×32 位的存储器。 (2)如采用 32 位的字编址方式,则需要 18 条地址线,因为 218=256K。 (3)用MREQ作为芯片选择信号。WE 作为读/写控制信号,该存储器与 CPU 连接 的结构图如图 3-28 所示,因为存储容量为 256K×32 位=1024KB=220B,所以 CPU 访存 地址为 A19~A0,最高地址位为 A19,并由 A0、A1 选择各字节。 图 3-28 存储器结构与 CPU 的连接 88.【答案与解析】 由于在 64KB 存储空间中,I/O 占用了最高 1KB 空间(FC00H~FFFFH),RAM 芯片 应当分配在余下的低 63KB 空间。选用 7 片 8K×8 位芯片和 7 片 1K×8 位芯片,共计 63KB。 8K×8 位 RAM 芯片共有 8K个 8 位的存储单元,片内地址应有 1og2(8K) =13(根), 分别连接地址线 A12~A0,每片的地址范围为 0000H~1FFFH。 64KB 的存储器应有 64K 个存储单元,地址线应有 1og2(64K)=16(根)。地址范围为 0000H ~FFFFH。 地址线 A12~A0 并行连接到 7 片 8K×8 位 RAM 芯片的 13 个地址端。用 3 根高地址 线 A15、A14、A13 经译码器译码,译码器的 7 个输出端(000~110)分别接到 7 片 8K×8 位芯片的片选端,用以选择 7 片 8K×8 位芯片中的 1 片,剩下 1 个输出端 111 用以控制 另一个译码器。 1K×8 位芯片的存储器共有 1K 个存储单元,地址线应有 1og21K =10 根,地址范围 为 000H~3FFH。地址线 A9~A0 共 10 根,并行连接到 7 片 1K×8 位 RAM 芯片的 10 个 地址端,3 根地址线 A12、A11、A10 经译码器译码,译码器的 7 个输出端(000~110)分 别接到 7 片 1K×8 位芯片的片选端,用以选择 7 片 1K×8 位芯片中的 1 片。 组成的主存储器逻辑图如图 3-29 所示。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 102 图 3-29 存储器结构及 CPU 的连接 其中,U0~U6 为 7 片 8K×8 位芯片,片内地址范围为 0000H~1FFFH。U0 的片选 端接 000,即 A15A14A13=000,故 U0 的地址范围是 0000H~1FFFH;同理 U1~U6 芯片的 地址范围如下: U1: 2000H~3FFFH U2: 4000H~5FFFH U3: 6000H~7FFFH U4: 8000H~9FFFH U5: A000H~BFFFH U6: C000H~DFFFH U7~U13 为 7 片 1K×8 位芯片,片内地址范围为 000H~3FFH。由于第一级 3/8 译 码器的输出端 111 控制第二级 3/8 译码器,即 A15A14A13=111,U7 的片选端接 000,即 A12A11A10=000,故 U7 的地址范围是 E000H~E3FFH。同理 U8~U13 的芯片地址范围如下: U8:E400H~E7FFH U9:E800H~EBFFH U10:C000H~EFFFH U11:F000H~F3FFH U12:F400H~F7FFH U13:F800H~FBFFH FC00H~FFFFH 为 I/O 空间。 89.【答案与解析】 (1)将十六进制地址范围写成二进制地址码,并确定其总容量,如图 3-30 所示。 第 3 章 主存储器 103 图 3-30 二进制地址码 (2)根据地址范围的容量以及该范围在计算机系统中的作用选择存储芯片。由 6000H~67FFH 为系统程序区的范围,应选 1 片 2K×8 位的 ROM 芯片。 由 6800H~6BFFH 为用户程序区的范围,应选 2 片 1K×4 位的 RAM 芯片。 (3)存储芯片的片选逻辑图如图 3-31 所示。下面详细讲解地址线的分配。 图 3-31 存储芯片的片选逻辑图 ① 由 6000H~67FFH 为系统程序区的范围,选 1 片 2K×8 位的 ROM。故 A0~A10 地 址线应用来选择 ROM 芯片,那么能用来作为 74LS138 译码器输入的只能是 A11~A15。 ② 由 6800H~6BFFH 为用户程序区的范围,选 2 片 1K×4 位的 RAM 芯片。故 A0~ A9 地址线应用来选择 RAM 芯片,那么能用来作为 74LS138 译码器的输入只能是 A10~A15。 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 104 ①与②取交集,则只能取 A11~A15。故取 A11、A12 与 A13 分别作为 A、B、C 的输 入端。 ROM 芯片的 A13、A12、A11 号线分别为 1、0、0,十进制值为 4,故取 74LS138 的 4 号输出端。 RAM 芯片的 A13、A12、A11 号线分别为 1、0、1,十进制值为 5,故取 74LS138 的 5 号输出端;又 A10 为 0 时才选中 RAM 芯片,故根据题目条件,本题选用了与非门。 90.【答案与解析】 (1)数据 Cache 有 8 个 Cache 行,每个 Cache 行大小为 64B,Cache 中每个字块的 Tag 字段的位数是 28-9=19 位,此外还需使用一个有效位,合计 20 位。因此,数据 Cache 的总容量应为 8 (64+20/ 8)B=532B。 (2)数组 a 在主存的存放位置及其与 Cache 之间的映射关系如图 3-32 所示。 图 3-32 映射关系 数组按行优先方式存放,首地址为 320,数组元素占 4 字节,则 a[0][31]所在的主存 块对应的 Cache 行号为: (320+31×4) div 64=6 a[1][1]所在的主存块对应的 Cache 行号为: (320+256×4+1×4) div 64 mod 8=5 (3)编译时 i 、j 和 sum 均分配在寄存器中,故数据访问命中率仅考虑数组 a 的情况。 第 3 章 主存储器 105 ① 该程序的特点是数组中的每一个元素仅被使用一次。数组 a 按行优先存放,数据 Cache 正好放下数组半行中的全部元素,即元素的存储顺序与使用次序高度吻合,每个 字块的 16 个 int 型元素中,除访问的第一个不会命中外,接下来的 15 个都会命中。访问 全部字块都符合这一规律,故命中率为 15/16,即程序 A 的数据访问命中率是 93.75%。 ② 程序 B 按照数组的列执行外层循环,在执行内层循环的过程中,将连续访问不 同行的同一列的数据,不同行的同一列数组使用的是同一个 Cache 单元,每次都不会命 中,故命中率是 0。 由于从 Cache 读数据比从主存读数据快很多,所以程序 A 的执行比程序 B 快得多。 注意:本题考查 Cache 容量计算,直接映射方式的地址计算以及命中率计算(行优 先遍历与列优先遍历命中率差别很大)。 91.【答案与解析】 (1)虚拟地址共有 24 位,前 12 位表示虚页号;物理地址共有 20 位,前 8 位表示页 框号。 16M=224,故虚拟地址 24 位,4K=212,故页内地址为 12 位,所以虚页号为前 12 位。 1M=220 故物理地址 20 位,20-12=8,故前 8 位为页框号。 (2)主存字块标记为 12 位,Cache 字块标记为 3 位,字块内地址为 5 位。 物理地址 20 位,其中,块大小为 32B=25B,故块内地址 5 位;Cache 共 8 行,8=23, 故字块标记为 3 位;20-5-2=12,故主存字块标记为 12 位。 (3)在主存中,04C60H 不命中,没有 04C 的标记字段。 001C60H 中虚页号为 001H=1,查页表知其有效位为 1,在内存中;该物理地址对应 的页表项中,页框号为 04H,故物理地址位 04C60H;物理地址 04C60H 在直接映射方式 下,对应行号为 4,有效位为 1,但是标记位 064H≠04CH,故不命中。 (4)在主存中,012 对应的标记是对的。 思路:标记 11 位、组地址 1 位、页内地址 12 位,前 12 位为 0000 0010 0100,组地 址位为 0,第 0 组中存在标记位 012 的页,其页框号为 1F,故 024BACH 所在的页面保 存在主存中。 92.【答案与解析】 (1)平均每秒 CPU 执行的指令数为 80M/4=20M,故 MIPS 数为 20;平均每条指令 访存 1.5 次,故平均每秒 Cache 缺失的次数=20M×1.5×(1-99%)=300k。 当 Cache 缺失时,CPU 访问主存,主存与 Cache 之间以块为传送单位,此时,主存 带宽为 16B×300k/s =4.8MB/s。在不考虑DMA传输的情况下,主存带宽至少达到 4.8MB/s 才能满足 CPU 的访存要求。 (2)题中假定在 Cache 缺失的情况下访问主存,平均每秒产生缺页中断 300000× 0.0005%=1.5 次。因为存储器总线宽度为 32 位,所以每传送 32 位数据,磁盘控制器发 出一次 DMA 请求,故平均每秒磁盘 DMA 请求的次数至少为 1.5×4KB/4B=1.5K=1536。 (3)CPU 和 DMA 控制器同时要求使用存储器总线时,DMA 请求优先级更高;因 计算机考研专业课——计算机组成原理一本通(考点详解+习题全解) 106 为 DMA 请求得不到及时响应,I/O 传输数据可能会丢失。 (4)4 体交叉存储模式能提供的最大带宽为 4×4B/50ns=320MB/s。 93.【答案与解析】 (1)CPU 的时钟周期为 1/800MHz=1.25ns。 总线的时钟周期为 1/200MHz=5ns。 总线带宽为 4B×200MHz=800MB/s 或 4B/5ns=800MB/s (2)Cache 块大小是 32B,因此 Cache 缺失时需要一个读突发传送总线事务读取一 个主存块。 (3)一次读突发传送总线事务包括一次地址传送和 32B 数据传送:用 1 个总线时钟 周期传输地址,每隔 40ns/8=5ns 启动一个体工作(各进行 1 次存取),第一个体读数据 花费 40ns,之后数据存取与数据传输重叠,用 8 个总线时钟周期传输数据。读突发传送 总线事务时间为 5ns+40ns+8×5ns=85ns。 (4)程序 BP 的 CPU 执行时间包括 Cache 命中时的指令执行时间和 Cache 缺失时带 来的额外开销。命中时的指令执行时间为 100×4×1.25ns=500ns。指令执行过程中 Cache 缺失时的额外开销为 1.2×100×5%×85ns=510ns。程序 BP 的 CPU 执行时间为 500ns+510ns=1010ns。 94.【答案与解析】 (1) 页大小为 8KB,页内偏移地址为 13 位,故 A=B=32-13=19;D=13;C=24-13=11; 主存块大小为 64B,故 G=6。2 路组相联,每组数据区容量有 64B×2=128B,共有 64KB/128B=512 组,故 F=9;E=24-G-F=24-6-9=9。因而 A=19、B=19、C=11、D=13、 E=9、F=9、G=6。 TLB 中标记字段 B 的内容是虚页号,表示该 TLB 项所对应虚页的页表项。 (2)块号 4099=00 0001 0000 0000 0011B,因此,所映射的 Cache 组号为 0 0000 0011B=3,对应的 H 字段内容为 0 0000 1000B。 (3)Cache 缺失带来的开销小,而处理缺页的开销大。因为缺页处理需要访问磁盘, 而 Cache 缺失只要访问主存。 (4)因为采用直写策略时需要同时写快速存储器和慢速存储器,而写磁盘比写主存 慢很多,所以,在主存—Cache 层次,Cache 可以采用直写策略,而在主存—外存(磁盘) 层次,修改页面内容时采用回写策略。