首页微机原理组成原理笔记习题PDF
第4章-习题与解答

第4章 存储器 习题与解答

课件原题 11 道(含课件内嵌思考题)100% 收录,另按考点补充 9 道,共 20 道。所有容量/地址/命中率计算均经复核(1K=1024=400H,末地址=首地址+容量−1)。

一、课件原题

题1(课件 p.156–158,内嵌思考题"?片")

存储器容量扩展所需芯片数: (1) 用 1K×4 位存储芯片组成 1K×8 位的存储器,需几片? (2) 用 1K×8 位存储芯片组成 2K×8 位的存储器,需几片? (3) 用 1K×4 位存储芯片组成 4K×8 位的存储器,需几片?

解答: 总片数 = (目标字数÷芯片字数) × (目标位数÷芯片位数)。 (1) 字数比 1K÷1K=1,位数比 8÷4=2 → 2 片(位扩展:地址线、片选、读写线并联,两片各接 4 位数据)。 (2) 字数比 2K÷1K=2,位数比 8÷8=1 → 2 片(字扩展:数据线并联,最高位地址 A10 译码作片选)。 (3) 字数比 4K÷1K=4,位数比 8÷4=2 → 4×2=8 片(字位扩展:4 组、每组 2 片;A11A10 经 2:4 译码产生 4 个组片选)。 与课件标注一致(p.156"2片"、p.157"2片"、p.158"8片")。

题2(课件 p.160–162,例4.1)

设 CPU 有 16 根地址线(A15~A0)、8 根数据线(D7~D0),MREQ̅ 为访存请求信号(低电平有效),WR̅ 为读/写命令(高读低写)。要求系统程序区地址为 6000H~67FFH,用户程序区地址为 6800H~6BFFH。现有 2K×8 位 ROM 芯片和 1K×4 位 RAM 芯片,试用 138 译码器及门电路画出 CPU 与存储器的连接图,并写出片选逻辑。(题干由课件解答页与连接图整理,课件 p.160 起直接给出解答)

解答: (1) 写出对应的二进制地址码:

地址 A15A14A13A12 A11A10A9A8 A7~A0 区域
6000H 0110 0000 00000000 ROM 首
67FFH 0110 0111 11111111 ROM 末
6800H 0110 1000 00000000 RAM 首
6BFFH 0110 1011 11111111 RAM 末

容量核算:ROM 区 67FFH−6000H+1=800H=2048=2K;RAM 区 6BFFH−6800H+1=400H=1024=1K。 (2) 确定芯片数量及类型:ROM 2K×8 位 1 片;RAM 1K×8 位由 1K×4 位 2 片位扩展构成。 (3) 分配地址线:A10~A0 接 ROM 地址线(2K=2¹¹);A9~A0 接两片 RAM 地址线(1K=2¹⁰)。 (4) 确定片选信号:固定位 A15=0、A14=1;译码位 A13A12A11:ROM=100、RAM=101。 138 接法:C←A13、B←A12、A←A11;G1←A14;G2A̅←A15;G2B̅←MREQ̅。 - ROM 片选 CS̅_ROM = Y4̅(CBA=100 时 Y4̅=0,对应 6000H~67FFH,恰为 2K,无需附加条件)。 - RAM 片选:CBA=101 时 Y5̅=0,但此时 A10 未参与译码,Y5̅ 覆盖 6800H~6FFFH(2K);RAM 只有 1K,须附加 A10=0,故 CS̅_RAM = Y5̅ + A10(或逻辑,低电平有效;即课件连接图中 Y5̅ 与 A10 所接的门电路),同时接两片 RAM 的 CS̅。 (5) 数据线与命令线:ROM 接 D7~D0,其 PD/Progr 接地(读出方式);两片 RAM 分别接 D7~D4 和 D3~D0;WR̅ 接两片 RAM 的 WE̅。 验证:A15A14=01 且 MREQ̅=0 时译码器工作;6000H~67FFH 仅 Y4̅ 有效→只选 ROM;6800H~6BFFH 时 Y5̅=0 且 A10=0→只选 RAM;6C00H~6FFFH 时 A10=1→RAM 不选,无地址重叠。连接图见课件 p.162(笔记 §7.3 嵌图)。

题3(课件 p.163,例4.2)

假设同前(CPU 16 根地址线、8 根数据线,MREQ̅ 访存请求),要求最小 4K 为系统程序区,相邻 8K 为用户程序区。确定芯片数量类型、分配地址线、确定片选信号,并写出各芯片地址范围。

解答: (1) 二进制地址码:系统程序区 0000H~0FFFH(0000 0000 0000 0000~0000 1111 1111 1111);用户程序区 1000H~2FFFH(0001 0000 0000 0000~0010 1111 1111 1111)。 容量:0FFFH−0000H+1=1000H=4K;2FFFH−1000H+1=2000H=8K。 (2) 芯片数量及类型(与课件一致):1 片 4K×8 位 ROM(系统程序区);2 片 4K×8 位 RAM(用户程序区 8K=4K×2,字扩展)。 (3) 分配地址线:4K=2¹²,A11~A0 接 ROM 和两片 RAM 的地址线(课件 p.163)。 (4) 片选信号:固定位 A15=0;译码位 A14A13A12:ROM=000、RAM1=001、RAM2=010。 138 接法:C←A14、B←A13、A←A12;G1 接 +5V;G2A̅←A15;G2B̅←MREQ̅。 CS̅_ROM=Y0̅,CS̅_RAM1=Y1̅,CS̅_RAM2=Y2̅。 地址范围:ROM 0000H~0FFFH;RAM1 1000H~1FFFH;RAM2 2000H~2FFFH。 数据线 D7~D0 并联到三片;WR̅ 接两片 RAM 的 WE̅。 验证:1FFFH−1000H+1=1000H=4K ✓;2FFFH−2000H+1=1000H=4K ✓;三区连续无重叠。

题4(课件 p.164,例4.3)

设 CPU 有 20 根地址线、8 根数据线,并用 IO/M̅ 作访存控制信号(低电平访存),RD̅ 为读命令、WR̅ 为写命令。现有 2764 EPROM(8K×8 位,引脚:A12~A0、D7~D0、CE̅ 片选、OE̅ 允许输出、PGM̅ 可编程端)。用 138 译码器及其他门电路(门电路自定)画出 CPU 和 2764 的连接图,要求地址为 F0000H~FFFFFH,并写出每片 2764 的地址范围。

解答: (1) 容量与片数:FFFFFH−F0000H+1=10000H=65536=64K 字节;每片 8K → 64K÷8K=8 片 2764。 (2) 地址分解:8K=2¹³ → 片内地址 A12~A0;片选译码位 A15A14A13(8 片需 3 位);固定位 A19A18A17A16=1111(F0000H~FFFFFH 的高 4 位恒为 1111)。 (3) 138 及门电路接法:C←A15、B←A14、A←A13;G1←A19·A18·A17·A16(4 输入与门);G2A̅←IO/M̅(访存时为 0);G2B̅ 接地。Y0̅~Y7̅ 分别接第 0~7 片的 CE̅。 (4) 其余引脚:各片 OE̅ 并联接 RD̅(EPROM 只读);PGM̅ 接 +5V(非编程/读出方式);D7~D0 并联接 CPU 数据总线;A12~A0 并联接 CPU 低 13 位地址。 (5) 每片地址范围(每片 8K=2000H):

芯片 片选 A15A14A13 地址范围
第0片 Y0̅ 000 F0000H~F1FFFH
第1片 Y1̅ 001 F2000H~F3FFFH
第2片 Y2̅ 010 F4000H~F5FFFH
第3片 Y3̅ 011 F6000H~F7FFFH
第4片 Y4̅ 100 F8000H~F9FFFH
第5片 Y5̅ 101 FA000H~FBFFFH
第6片 Y6̅ 110 FC000H~FDFFFH
第7片 Y7̅ 111 FE000H~FFFFFH

验证:F1FFFH−F0000H+1=2000H=8K ✓;末片末地址 FE000H+2000H−1=FFFFFH ✓;8 片合计 64K,与要求区间吻合。

题5(课件 p.166,内嵌思考题:汉明码组成三要素)

汉明码的组成需增添几位检测位?检测位的位置在哪里?检测位的取值如何确定?

解答(评分要点): ① 检测位个数 k:由 2ᵏ ≥ n + k + 1 确定(n 为信息位数),取满足不等式的最小 k。例如 n=4 时 k=3(2³=8 ≥ 4+3+1=8)。 ② 检测位位置:放在第 2ⁱ 位(i=0,1,2,3,…),即汉明码的第 1、2、4、8、… 位依次为 C1、C2、C4、C8;其余位顺次放信息位。 ③ 检测位取值:与该位所在检测"小组"承担的奇偶校验任务有关——按偶校验配置时,使本小组内 1 的个数为偶数;按奇校验配置时为奇数。小组划分:C1 管第 1,3,5,7,9,11,… 位;C2 管第 2,3,6,7,10,11,… 位;C4 管第 4,5,6,7,12,13,… 位;C8 管第 8~15,24,… 位(课件 p.167)。

题6(课件 p.168,例4.4)

求 0101 按"偶校验"配置的汉明码。

解答: n=4,由 2ᵏ ≥ n+k+1:k=3 时 8 ≥ 8 成立,取 k=3。 排位(二进制序号 1~7):1=C1,2=C2,3=信息0,4=C4,5=信息1,6=信息0,7=信息1。 按偶校验求各检测位(组内其余位异或): - C1 = 位3⊕位5⊕位7 = 0⊕1⊕1 = 0 - C2 = 位3⊕位6⊕位7 = 0⊕0⊕1 = 1 - C4 = 位5⊕位6⊕位7 = 1⊕0⊕1 = 0

序号 1 2 3 4 5 6 7
内容 C1=0 C2=1 0 C4=0 1 0 1

∴ 0101 的偶校验汉明码为 0100101(与课件一致)。

题7(课件 p.169,练习1)

按配偶(偶校验)原则配置 0011 的汉明码。

解答: n=4 → k=3(2³=8 ≥ 4+3+1=8)。排位:1=C1,2=C2,3=0,4=C4,5=0,6=1,7=1。 - C1 = 位3⊕位5⊕位7 = 0⊕0⊕1 = 1 - C2 = 位3⊕位6⊕位7 = 0⊕1⊕1 = 0 - C4 = 位5⊕位6⊕位7 = 0⊕1⊕1 = 0

∴ 汉明码为 1000011(与课件一致)。

题8(课件 p.171,例4.5)

已知接收到的汉明码为 0100111(按配偶原则配置),试问要求传送的信息是什么?

解答: 接收码各位:位1=0,位2=1,位3=0,位4=0,位5=1,位6=1,位7=1。 按偶校验计算新检测位(指误码): - P1 = 位1⊕位3⊕位5⊕位7 = 0⊕0⊕1⊕1 = 0(无错) - P2 = 位2⊕位3⊕位6⊕位7 = 1⊕0⊕1⊕1 = 1(有错) - P4 = 位4⊕位5⊕位6⊕位7 = 0⊕1⊕1⊕1 = 1(有错)

P4P2P1 = 110 = 十进制 6 → 第 6 位出错。将第 6 位 1 改为 0,纠正后汉明码为 0100101。 取信息位(第 3、5、6、7 位)= 0、1、0、1 → 要求传送的信息为 0101(与课件一致)。

题9(课件 p.172,练习2)

写出按偶校验配置的汉明码 0101101 的纠错过程。

解答: 各位:位1=0,位2=1,位3=0,位4=1,位5=1,位6=0,位7=1。 - P1 = 位1⊕位3⊕位5⊕位7 = 0⊕0⊕1⊕1 = 0 - P2 = 位2⊕位3⊕位6⊕位7 = 1⊕0⊕0⊕1 = 0 - P4 = 位4⊕位5⊕位6⊕位7 = 1⊕1⊕0⊕1 = 1

P4P2P1 = 100 = 4 → 第 4 位错。第 4 位是检测位 C4 本身,不属于信息位,可不纠(课件结论"第4位错,可不纠")。信息位(3、5、6、7 位)= 0、1、0、1 = 0101,不受影响。

题10(课件 p.172,练习3)

按配奇(奇校验)原则配置 0011 的汉明码。

解答: n=4 → k=3。排位:1=C1,2=C2,3=0,4=C4,5=0,6=1,7=1。 奇校验要求每个小组内 1 的个数为奇数: - g1(位1,3,5,7):已有 0,0,1 → 1 个 1(奇)→ C1 = 0 - g2(位2,3,6,7):已有 0,1,1 → 2 个 1(偶)→ C2 = 1 - g3(位4,5,6,7):已有 0,1,1 → 2 个 1(偶)→ C4 = 1

∴ 配奇的汉明码为 0101011(与课件一致)。 对比题7:同一信息 0011,偶校验=1000011、奇校验=0101011,三个检测位恰好互补。

题11(课件 p.199,例:NRZ1 的读出代码波形)

已知写入数据序列为 0110010,采用 NRZ1 记录方式。画出驱动电流、磁通变化、感应电势、同步脉冲与读出代码波形,并说明读出过程。

解答: 写入规则(NRZ1):写"1"时驱动电流在位周期起点翻转,写"0"时保持不变。设初始电流为低电平:

位周期 1 2 3 4 5 6 7
数据 0 1 1 0 0 1 0
起点是否翻转 否 是 是 否 否 是 否
周期内电流电平 低 高 低 低 低 高 高

磁通变化:磁层磁化方向随电流翻转,故在第 2、3、6 位周期起点处磁通发生跳变,其余时刻保持。 感应电势:读线圈只在磁通变化瞬间产生脉冲(课件图中电流上升沿对应负脉冲、下降沿对应正脉冲),即第 2、3、6 位周期起点处各有一个脉冲。 同步脉冲:每个位周期的前半给出一个同步窗口(课件 p.199 波形)。 读出判读:在同步脉冲窗口内检测感应电势——有脉冲读"1",无脉冲读"0":

位周期 1 2 3 4 5 6 7
窗口内有无脉冲 无 有 有 无 无 有 无
读出代码 0 1 1 0 0 1 0

读出代码 = 0110010,与写入数据一致。波形对照见课件 p.199 原图。

二、考点补充题

题12【补充·考点:存储器分类与层次结构】(选择)

下列说法正确的是( )。 A. 缓存–主存层次主要解决存储容量不足的问题 B. DRAM 依靠触发器存储信息,因此需要定期刷新 C. 磁盘属于直接存取存储器,其存取时间与物理地址有关 D. EPROM 可以用电信号局部擦除并多次重写

解答:答案 C。 - A 错:缓存–主存层次解决速度矛盾;解决容量的是主存–辅存层次(虚拟存储器)(课件 p.99)。 - B 错:DRAM 靠电容存储信息才需刷新;触发器是 SRAM 的原理,SRAM 不需刷新(课件 p.151)。 - C 对:磁盘是直接存取存储器,属串行访问大类,存取时间含寻道/等待时间,与物理地址有关(课件 p.96)。 - D 错:EPROM 用紫外线全部擦洗;电可擦、可局部擦写的是 EEPROM(课件 p.153、p.155)。

题13【补充·考点:SRAM/DRAM 原理与比较】(简答)

比较 SRAM 与 DRAM 的存储原理、集成度、引脚、功耗、价格、速度、刷新要求,并说明各适合用作什么。

解答(评分要点,课件 p.151):

比较项 DRAM SRAM
存储原理 电容电荷 触发器双稳态
集成度 高 低
芯片引脚 少(地址复用) 多
功耗 小 大
价格 低 高
速度 慢 快
刷新 有 无

用途:DRAM 作主存(容量大、成本低);SRAM 作缓存 Cache(速度快)。补充要点:两者均为易失性存储器,断电信息丢失;"SRAM 不需刷新"不等于"断电不丢"。

题14【补充·考点:DRAM 刷新三方式】(计算)

某 DRAM 芯片存储矩阵为 128×128,存取周期 0.5 μs,要求每行每隔 2 ms 刷新一次。求: (1) 集中刷新时的"死区"、"死时间率"及 2 ms 内可用于读/写的时间; (2) 分散刷新时的存取周期及刷完全部行一遍所需时间; (3) 异步刷新时每隔多久刷新一行,其"死区"为多少。

解答: (1) 2 ms 内总周期数 = 2000 μs ÷ 0.5 μs = 4000 个。集中刷新占用 128 个周期逐行刷新: 死区 = 0.5 μs × 128 = 64 μs; 死时间率 = 128 ÷ 4000 × 100% = 3.2%; 读/写周期数 = 4000 − 128 = 3872 个,时间 = 3872 × 0.5 μs = 1936 μs。 (2) 分散刷新把每个存取周期拆成读写 0.5 μs + 刷新 0.5 μs:存取周期 tC = tM + tR = 1 μs;每周期刷一行,刷完 128 行需 128 × 1 μs = 128 μs(< 2 ms,满足要求);无死区,但存取周期加长一倍。 (3) 异步刷新:2 ms ÷ 128 = 15.625 μs ≈ 15.6 μs 刷新一行;每次只占 1 个存取周期,死区 = 0.5 μs;若安排在指令译码阶段刷新则不出现死区。 (数据口径与课件 p.148–150 一致。)

题15【补充·考点:芯片容量、地址线与地址范围】(填空+计算)

(1) 16K×1 位存储芯片有____根地址线、____根数据线;1K=H。 (2) 用 16K×1 位芯片组成 64K×8 位存储器共需____片。 (3) 某存储器按字节编址,首地址为 4000H,容量 8K,则末地址为。

解答: (1) 16K=2¹⁴ → 14 根地址线;1 根数据线;1K=1024=400H。 (2) 片数 = (64K÷16K) × (8÷1) = 4 × 8 = 32 片(与课件 p.106 一致:4 组、每组 8 片)。 (3) 8K=2000H;末地址 = 4000H + 2000H − 1 = 5FFFH。 易错提醒:末地址必须减 1;地址线根数只看字数(16K),与"×1"无关。

题16【补充·考点:字节/字寻址与大小端】(计算+简答)

设地址线 24 根。(1) 按字节寻址的寻址范围是多少字节?(2) 若字长 32 位、按字寻址,可寻址多少个字?(3) 说明"高位字节地址为字地址"的含义,并举例 16 位数据 1234H 的存放。

解答: (1) 2²⁴ = 16 777 216 B = 16 MB(课件 p.102:2²⁴=16M)。 (2) 每字 4 字节:2²⁴ ÷ 4 = 2²² = 4 M 个字(课件 p.102)。 (3) "高位字节地址为字地址"即大端约定:字的高字节存放在低字节地址,字地址取高字节所在地址。例:16 位数据 1234H 占字节地址 0000H、0001H:大端时 (0000H)=12H(高字节)、(0001H)=34H;若按"低位字节地址为字地址"(小端),则 (0000H)=34H、(0001H)=12H。

题17【补充·考点:Cache 直接映射地址分解】(计算)

设主存地址 20 位(按字节编址),Cache 容量 16KB,块长 64B,采用直接映射。求: (1) 块内地址 b、Cache 行号 c、标记 t 各几位?主存块号共几位? (2) 主存地址 12345H 对应的标记、Cache 行号、块内地址各是多少(二进制与十进制)? (3) 用 i = j mod C 验证行号。

解答: (1) 块长 64B=2⁶ → b=6;Cache 行数 C = 16KB ÷ 64B = 256 = 2⁸ → c=8;标记 t = 20 − 8 − 6 = 6 位;主存块号 m = 20 − 6 = 14 位(t = m − c = 14 − 8 = 6 ✓)。 (2) 12345H = 0001 0010 0011 0100 0101(20 位)。从高到低切分: 标记(高 6 位)= 000100 = 4; 行号(中 8 位)= 10001101 = 141(8DH); 块内(低 6 位)= 000101 = 5。 (3) 主存块号 j = 12345H ÷ 64 取整 = 74565 ÷ 64 = 1165;i = 1165 mod 256 = 1165 − 4×256 = 141 ✓,与(2)一致。

题18【补充·考点:命中率、平均访问时间与效率】(计算)

设 Cache 命中率 h=0.9,访问 Cache 时间 tc=20 ns,访问主存时间 tm=200 ns(按课件 p.186 公式口径计算)。求平均访问时间 ta 与 Cache–主存系统效率 e。

解答: ta = h×tc + (1−h)×tm = 0.9×20 + 0.1×200 = 18 + 20 = 38 ns。 e = tc ÷ ta × 100% = 20 ÷ 38 × 100% ≈ 52.6%(课件 p.186 公式)。 易错提醒:效率分子是 tc(访问 Cache 的时间),不是 ta;若 h 提高到 0.95,ta=0.95×20+0.05×200=29 ns,e≈69%,可见命中率对效率影响显著。

题19【补充·考点:替换算法 FIFO 与 LRU】(综合模拟)

某全相联 Cache 共 4 个块,初始为空。主存块访问序列为:1,2,3,4,1,2,5,1,2,3,4,5。分别用 FIFO 和 LRU 替换算法,列出每次访问的命中/缺失与块内内容,并求命中率。

解答: FIFO(替换最早调入的块,队列按调入顺序):

访问 1 2 3 4 1 2 5 1 2 3 4 5
命中/缺失 缺 缺 缺 缺 命 命 缺 缺 缺 缺 缺 缺
块内容 {1} {1,2} {1,2,3} {1,2,3,4} 同 同 {2,3,4,5} {3,4,5,1} {4,5,1,2} {5,1,2,3} {1,2,3,4} {2,3,4,5}

(第 7 次访问 5 替换最早调入的 1;第 8 次访问 1 替换 2;依此类推。) 命中 2 次 → h(FIFO) = 2/12 = 1/6 ≈ 16.7%。 LRU(替换最近最久未用的块):

访问 1 2 3 4 1 2 5 1 2 3 4 5
命中/缺失 缺 缺 缺 缺 命 命 缺 命 命 缺 缺 缺
块内容 {1} {1,2} {1,2,3} {1,2,3,4} 同 同 {1,2,4,5} 同 同 {1,2,5,3} {1,2,3,4} {2,3,4,5}

(第 7 次访问 5 时最久未用的是 3,替换 3;第 10 次访问 3 时最久未用的是 4,替换 4;第 11 次访问 4 替换 5;第 12 次访问 5 替换 1。) 命中 4 次 → h(LRU) = 4/12 = 1/3 ≈ 33.3%。 结论:本序列下 LRU 命中率高于 FIFO,因 LRU 依据局部性保留近期常用块;FIFO 只按调入时间淘汰,可能换出马上要用的块。

题20【补充·考点:磁盘技术指标】(计算)

某磁盘组共 8 个记录面,每面 1024 条磁道,每道记录 65536 位。位密度 Db=2000 位/mm,盘片线速度 V=30 m/s,平均寻道时间 10 ms,转速 3000 r/min。求: (1) 存储容量 C(位与字节); (2) 数据传输率 Dr; (3) 平均寻址时间。

解答: (1) C = n×k×s = 8×1024×65536 = 536 870 912 位;÷8 = 67 108 864 B = 64 MB(课件 p.195 公式;n、k、s 含义为记录面数、每面磁道数、每道位数)。 (2) V = 30 m/s = 30 000 mm/s;Dr = Db×V = 2000 位/mm × 30 000 mm/s = 6×10⁷ 位/秒 = 60 Mbps。 (3) 转速 3000 r/min → 每转 60÷3000 = 0.02 s = 20 ms;平均等待时间 = 半转 = 10 ms;平均寻址时间 = 寻道时间 + 等待时间 = 10 + 10 = 20 ms(课件 p.195)。