交互演示(计算机组成原理)

本页承载存储器层次结构章的配套交互演示。章节正文的地址划分表可先手算,再回到本页输入地址逐步验证。

Cache 地址划分与映射

设定与章节算例一致:Cache 容量 8 KB、块 32 B、主存地址 16 位(可直接输入或点击示例地址 0x35c4a)。切换直接映射 / 2 路组相联,观察同一段地址二进制中"标记 | 行(组)号 | 块内偏移"三段宽度如何重新切分,以及行号与标记随之改变。

Cache 容量 8 KB · 块 32 B(地址共 16 位)
主存地址:
110101110001001010
主存块号6882地址右移 5 位
Cache 行号226块号 mod 256(即取行号段 10111000)
标记 tag26(3 位)块号除以 256,存于行/组内有效位旁用于比对
块内偏移10低 5 位(1001010)
查找过程:按行号 226 定位唯一一行→ 比对标记 26 → 命中则用偏移 10 取字节;标记不匹配即缺页,整块换入

指令流水线时空图

预置 6 条 MIPS 风格指令,五段流水线(IF 取指 / ID 译码 / EX 执行 / MEM 访存 / WB 写回)。其中 I2(sub $t4,$t0,$s3)的源操作数 $t0 由 I1(add $t0,$s1,$s2)产生,构成 RAW 数据冒险。切换"无冒险 / 数据冒险(加气泡/暂停)"两种模式对照:单步推进时钟周期,时空图逐拍点亮、当前拍绿框高亮;数据冒险模式下(无转发、寄存器堆同拍"前半写后半读"口径)I2 在 EX 前插入 2 个气泡滞留 ID,其后指令逐级顺延滞留 IF。每步附当前拍发生了什么,底部静态计算总时间、吞吐率、加速比,可直接与 中央处理器 章 5.3~5.5 节的公式与算例对照。

6 条指令 · 五段流水线 · I2 依赖 I1 的 $t0(RAW,无转发口径停 2 拍)
指令 \ 时钟12345678910
I1 add $t0,$s1,$s2IFIDEXMEMWB·····
I2 sub $t4,$t0,$s3·IFIDEXMEMWB····
I3 and $t5,$s1,$s6··IFIDEXMEMWB···
I4 or $t6,$s7,$s0···IFIDEXMEMWB··
I5 xor $t7,$s1,$s4····IFIDEXMEMWB·
I6 addi $t8,$s2,10·····IFIDEXMEMWB
第 1 拍:I1 IF(取指)
第 1 / 10 拍 · 蓝=正常段 橙=气泡(滞留 ID) 灰=IF×(滞留 IF) 绿框=当前拍
性能(k=5 段、n=6 条、停顿 s=0 拍):总时间 = k+n-1+s = 10 拍; 吞吐率 = n/T = 6/10 ≈ 0.60 条/拍;加速比 = nk/T = 30/10 = 3.00

使用建议

  1. 先按章节的地址划分表手算 0x35c4a 在直接映射下的行号与标记,再切换到本页同参数核对
  2. 切换 2 路组相联后观察:组号位数减少 1、标记位数增加 1——这正是"组相联用更长的标记换更灵活的放置"的直观体现
  3. 换一个地址(如 0xabcd0)重复两种映射的手算与验证,直到不需要工具也能直接写出三段划分
  4. 流水线演示先在"无冒险"模式走完 10 拍,再切"数据冒险"对比第 3~5 拍:I2 两次滞留 ID(气泡)、I3 起滞留 IF(IF×),体会"停顿向后传染"
  5. 对照底部性能行验证公式:无冒险 1010 拍、加速比 33;插入 2 个气泡后 1212 拍、加速比降到 2.52.5——停顿 ss 直接进分母

更多交互动画(中断处理流程、DMA 三种传输方式)将陆续加入本页。