题目
设某计算机采用直接映射缓存,已知主存容量为4 MB,缓存容量为4096 B,字块长度为8个字(32位/字)。(1)画出反映主存与缓存映射关系的主存地址各字段分配框图,并说明每个字段的名称及位数。(2)设缓存初态为空,若CPU依次从主存第0,1,…,99号单元读出100个字(主存一次读出一个字) ,并重复按此次序读10次,问命中率为多少?(3)如果缓存的存取时间是50 ns,主存的存取时间是500 ns,根据(2)求出的命中率,求平均存取时间。(4)计算缓存-主存系统的效率。
设某计算机采用直接映射缓存,已知主存容量为4 MB,缓存容量为4096 B,字块长度为8个字(32位/字)。
(1)画出反映主存与缓存映射关系的主存地址各字段分配框图,并说明每个字段的名称及位数。
(2)设缓存初态为空,若CPU依次从主存第0,1,…,99号单元读出100个字(主存一次读出一个字) ,并重复按此次序读10次,问命中率为多少?
(3)如果缓存的存取时间是50 ns,主存的存取时间是500 ns,根据(2)求出的命中率,求平均存取时间。
(4)计算缓存-主存系统的效率。
(1)画出反映主存与缓存映射关系的主存地址各字段分配框图,并说明每个字段的名称及位数。
(2)设缓存初态为空,若CPU依次从主存第0,1,…,99号单元读出100个字(主存一次读出一个字) ,并重复按此次序读10次,问命中率为多少?
(3)如果缓存的存取时间是50 ns,主存的存取时间是500 ns,根据(2)求出的命中率,求平均存取时间。
(4)计算缓存-主存系统的效率。
题目解答
答案
参考答案:


解析
- 直接映射缓存的核心概念:主存地址分为块内地址(对应缓存行内偏移)、缓存块地址(确定缓存行位置)和主存块标记(用于地址匹配)。
- 命中率计算关键:首次加载时未命中次数由块大小和总访问字数决定,重复访问时命中率取决于缓存块是否已加载。
- 平均存取时间公式:命中时间×命中率 + 未命中时间×未命中率。
- 系统效率定义:缓存存取时间占平均存取时间的比例。
第(1)题
主存地址字段分配
- 块内地址:字块长度为8个字(即$2^3$),对应块内地址5位(32位/字,需5位表示8个字)。
- 缓存块地址:缓存容量$4096\text{B}=2^{12}\text{B}$,每块大小$8\text{字}=32\text{B}$,故缓存块数$2^{12}/2^5=2^7$,需7位。
- 主存块标记:主存总地址位数$4\text{MB}=2^{22}\text{B}$,扣除块内地址5位和缓存块地址7位,剩余10位。
第(2)题
命中率计算
- 首次读取:100个字需访问$100/8=12.5$个块,向上取整得13次未命中。
- 重复读取:后续9次访问均命中,共命中$100 \times 9 = 900$次。
- 总命中率:$\frac{1000-13}{1000} \times 100\% = 98.7\%$。
第(3)题
平均存取时间
- 公式代入:
$\text{平均时间} = 0.987 \times 50\text{ns} + 0.013 \times 500\text{ns} = 55.85\text{ns}.$
第(4)题
系统效率
- 公式代入:
$\text{效率} = \frac{50\text{ns}}{55.85\text{ns}} \times 100\% = 89.5\%.$