组相联映射是常见的 Cache 映射方法。如果容量为 64 块的 Cache 采用组相联方式映射,每块大小为 128 个字,每 4 块为一组,即 Cache分为 (问题1) 组。若主存容量为 4096 页,且以字编址。根据主存与Cache块的容量需一致, 即每个内存页的大小是 (问题2) 个字, 主存地址需要 (问题3) 位, 主存组号需 (问题4) 位。
组相联映射是结合直接映射与全相联映射优势的Cache映射方式,主存各分区与Cache采用直接映射,同一主存组内的块与Cache组则采用全相联映射。Cache的组数可通过总块数除以每组包含的块数计算得出,主存组号的位数由Cache组数决定,若Cache组数为2的m次方,则主存组号需m位来表示。块内地址的位数由块的容量推导,若块大小为2的n次方个编址单位,那么块内偏移地址就需要n位。主存地址的总位数由主存总容量确定,主存总容量为主存页数乘以每页大小,当总容量为2的k次方个编址单位时,主存地址共需k位,完整的主存地址一般由块标识、组号、块内偏移三部分组成。
此题考察存储系统中 Cache 的相关概念。
组相联映像就是主存的每个分区与 Cache 采用直接映像,主存的每个组之内采用全相联映像。
每 4 块为一组,故共有组数 64/4 = 16 。块内地址共128字节,=128,所以块内地需要 7 位表示。
因为主存有 4096 页,每页大小为 128 个字,所以内存容量为 B,所以主存地址需要 19 位表示。因为 Cache 分为16组,所以主存组号需4位。
地址结构:如下
┌──────────────────────────────┐
│ [块号高8位][组号4位][偏移7位] │ ← 共19位地址
│ ↑ ↑ ↑ │
│ │ │ │ │
│ │ │ └─ 块内偏移(128字 ⇒ 7位)
│ │ └───────── 组号(16组 ⇒ 4位)
│ └─────────────────── 块标识(共4096块 ⇒ 高8位)
└──────────────────────────────┘
教材上的答案是错误的,不要参考。
