Appearance
题目
假定某计算机的 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) 为了提高性能,主存采用四体低位交叉存储模式,工作时每 1/4 个存储周期启动一个体。若每个体的存储周期为 50ns,则该主存能提供的最大带宽是多少?
解析
本题综合考查 4 个性能指标:CPI/MIPS、Cache 缺失带来的主存带宽需求、DMA 与 CPU 的总线争用、多体低位交叉的最大带宽。
各问之间有数据流向:第 (1) 问算出"每秒 Cache 缺失 300K 次"是第 (2) 问"每秒缺页 1.5 次"的输入。
(1) MIPS、Cache 缺失次数、主存带宽 [4 分]
MIPS。 每条指令平均 4 个时钟周期(CPI = 4),每秒 CPU 提供 80M 个时钟周期:
每秒 Cache 缺失次数。 平均每条指令访存 1.5 次,缺失率 1 − 99% = 1%:
主存带宽下限。 Cache 缺失时要从主存搬一整块 16B 到 Cache:
易错点: "每条指令访存 1.5 次"指 CPU 平均每条指令产生 1.5 次访存请求;只有缺失的那部分才真正打到主存。算主存带宽时要乘上缺失率,不是访存次数。
(2) 缺页率与磁盘 DMA 请求次数 [3 分]
Step 1. 算每秒缺页次数。
题干说 Cache 缺失时再访问主存,访问主存又有 0.0005% 的缺页率:
Step 2. 算每次缺页的 DMA 请求数。
每次缺页要从磁盘搬一个页(4KB)到主存。磁盘 I/O 接口的数据缓冲寄存器 32 位 = 4B,存储器总线宽度也是 32 位 = 4B。即 每装满一次缓冲(4B)就向 CPU 发起一次 DMA 请求:
Step 3. 合并算每秒 DMA 请求总数。
(3) CPU vs DMA 的总线优先级 [2 分]
DMA 优先级更高。
原因: DMA 服务的是 I/O 设备,I/O 设备有 物理上不可推迟 的数据流(如磁盘磁头转过那一刻、网络 MAC 来了一个帧)。DMA 请求若得不到及时响应,I/O 设备的数据可能丢失(FIFO 溢出);CPU 被推迟则只是慢一点,数据不丢。
编者注(生僻术语): 在"周期挪用(cycle stealing)"DMA 模式下,DMA 控制器只在 CPU 不用总线的间隙偷走总线周期;遇到冲突时,DMA 优先,CPU 让一拍。这与 CPU 直接执行指令时的优先级体系是相反的。
(4) 四体低位交叉存储的最大带宽 [2 分]
四体低位交叉的核心机制: 4 个存储体并行工作,每个体的存储周期 50ns,但相邻体启动时间错开 ns。稳态下每 12.5ns 就有一个体的数据准备好,整体看像一个"50/4 ns 周期、4B 字宽"的伪存储体。
最大带宽: 单位时间内传出的数据量
易错点 1: 不要错算成 ""——那是单体带宽。多体交叉的整体带宽要乘上体数。
易错点 2: "高位交叉"和"低位交叉"截然不同。高位交叉用地址高位选体,连续地址全在同一个体里,不能并发;低位交叉用地址低位选体,连续地址轮转分散到不同体,这才是带宽提升的关键。本题"低位交叉"明示并行性。