在高速缓存系统中,假设主存容量为512KB,Cache容量为4KB,块长为16个字(每个字32位)。采用直接映射方式,且Cache初始为空。若CPU依次访问主存地址0x00000、0x00010、0x00020、0x00030、0x00040、0x00050、0x00060、0x00070、0x00080、0x00090、0x000A0、0x000B0、0x000C0、0x000D0、0x000E0、0x000F0、0x00100、0x00110、0x00120、0x00130、0x00140、0x00150、0x00160、0x00170、0x00180、0x00190、0x001A0、0x001B0、0x001C0、0x001D0、0x001E0、0x001F0。假设每次访问均命中Cache,请问此时Cache的命中率是多少?

答案解析

核心考点说明:本题考察直接映射方式下Cache的地址划分、程序访问局部性原理、以及命中率的计算。需要理解Cache地址结构、块冲突问题和命中条件的综合应用。 解题思路分析: 1. 首先计算Cache的总块数:4KB / (16×4B) = 4KB / 64B = 64块 2. 每个字块的容量是64B,因此主存地址的低6位是字块内地址 3. Cache共有64块,因此需要6位表示Cache字块地址 4. 主存地址总位数:512KB = 2^19B,因此主存地址共19位 5. 主存字块标记位数:19-6-6=7位 6. 每个Cache块只能存储一个主存块 7. CPU访问的地址范围是0x00000到0x001F0,共32次访问 8. 由于Cache初始为空,前64次访问(前16次访问)都会产生Cache未命中,需要从主存调入Cache 9. 从第17次访问开始,地址0x00100对应的主存块会映射到Cache的第16块,此时Cache已满,需要替换 10. 由于采用直接映射方式,每个主存块只能映射到固定的Cache块,因此后续访问会产生冲突 11. 最终,32次访问中,前16次访问未命中,后16次访问命中,命中率为16/32=50% 每个干扰项的设计意图: A. 50%:正确选项,对应实际计算结果 B. 75%:错误地认为每个Cache块可以存储多个主存块 C. 87.5%:错误地忽略了地址映射的冲突问题 D. 93.75%:错误地将块长与命中率直接关联 易错点提醒: 1. 容易忽略Cache初始为空时的未命中情况 2. 容易忽略直接映射方式下主存块与Cache块的固定映射关系 3. 容易错误地应用替换策略,而直接映射方式不需要复杂的替换策略 4. 容易混淆命中率的计算方式 正确答案的关键依据: Cache共有64块,每个块只能存储一个主存块。CPU访问了32次,前16次访问未命中,后16次访问命中,因此命中率为16/32=50%。
正确答案:A
随机推荐
开始刷题