)
适合读者软考中级备考同学阅读时间4分钟内容三种映射方式的原理、优缺点对比、地址划分、例题1. 为什么需要映射方式Cache高速缓存是内存的副本容量远小于内存。内存中的一个数据块可以被存放到Cache的哪些位置这就是映射方式解决的问题。三种常见映射方式直接映射Direct Mapped全相联映射Fully Associative组相联映射Set Associative软考常考三者的对比以及给定内存地址时如何判断它在Cache中的位置。2. 基本概念2.1 块Block/行LineCache和内存都被分成大小相等的块也称为行。数据以块为单位在内存和Cache之间传输。2.2 地址划分对于内存地址通常划分为三个字段以组相联为例标记Tag用于区分映射到同一位置的不同内存块索引Index决定映射到哪个Cache行直接映射或哪个组组相联块内偏移Offset块内的字节位置不同映射方式地址字段的划分不同。3. 直接映射Direct Mapped3.1 原理每个内存块只能映射到Cache中的唯一一个固定位置。位置计算公式Cache行号(内存块号)mod (Cache行数)Cache行号 (内存块号) \mod (Cache行数)Cache行号(内存块号)mod(Cache行数)3.2 地址划分假设Cache有2r2^r2r行每块大小2w2^w2w字节。内存地址分为低www位块内偏移中间rrr位Cache行索引高位Tag标记3.3 优点硬件实现简单速度快只需要比较一个Tag因为索引直接定位3.4 缺点冲突率高多个频繁访问的内存块映射到同一行会互相替换抖动3.5 软考示例若Cache有8行内存块15映射到Cache的哪一行计算15mod 8715 \mod 8 715mod87映射到行7。4. 全相联映射Fully Associative4.1 原理每个内存块可以映射到Cache中的任意一行。Cache满时按替换算法如LRU淘汰某一行。4.2 地址划分地址分为块内偏移低www位Tag剩余所有高位没有索引字段因为可以存到任何位置。4.3 优点冲突率最低几乎不会因映射限制而替换Cache利用率最高4.4 缺点硬件复杂访问时需要同时比较所有行的Tag相联比较器成本高、速度慢不适合大容量Cache4.5 软考示例全相联Cache访问时需要将内存地址的Tag与Cache每一行的Tag进行比较若匹配则命中。5. 组相联映射Set Associative5.1 原理折中方案将Cache分成若干组Set每个组内有若干行路Way。一个内存块可以映射到固定组内的任意一行。组号计算组号(内存块号)mod (组数)组号 (内存块号) \mod (组数)组号(内存块号)mod(组数)5.2 常见参数若每组有nnn行称为n路组相联n-way set associativen1n1n1时即为直接映射n全部行数n全部行数n全部行数时即为全相联5.3 地址划分假设Cache有2r2^r2r组每组nnn行每块2w2^w2w字节。地址分为低www位块内偏移中间rrr位组索引高位Tag5.4 优点兼顾直接映射的简单和全相联的低冲突硬件成本适中5.5 缺点比直接映射复杂比全相联简单6. 三种方式对比表对比项直接映射全相联映射组相联映射映射位置固定一行任意一行固定组内的任意一行索引字段有行号无有组号冲突率高最低中等硬件复杂度低高多比较器中等查找速度快一次比较慢所有行比较中等实际应用早期CPU很少单独使用现代CPU常用如8路7. 经典例题题目1某Cache由64行组成采用直接映射主存有4096块则主存块地址为520的内存块应映射到Cache的哪一行解行号520mod 64520−64×8520−5128行号 520 \mod 64 520 - 64 \times 8 520 - 512 8行号520mod64520−64×8520−5128答案第8行或行号8题目2某Cache采用4路组相联共64行求有多少组若主存块地址为100则映射到哪个组解总行数 64每组4路 → 组数 64/41664 / 4 1664/416组组号 100mod 16100−16×6100−964100 \mod 16 100 - 16 \times 6 100 - 96 4100mod16100−16×6100−964答案16组组号4题目3以下关于Cache映射方式的描述正确的是 。A. 直接映射的冲突率最低B. 全相联映射需要同时比较所有行的TagC. 组相联映射的组内行数越多冲突率越高D. 直接映射的硬件复杂度最高答案BA错直接映射冲突率高C错组内行数越多越接近全相联冲突率越低D错直接映射最简单8. 记忆口诀直接映射找固定冲突率高硬件简。全相联放任何行比较复杂冲突免。组相联是折中案组内随意组外限。9. 给备考同学的一句话三种映射方式的核心区别在于内存块可以存放的位置范围。考试常考给Cache容量、块大小、映射方式计算地址字段位数给内存块地址问映射到哪一行/哪一组判断冲突率高低和硬件复杂度记住直接映射固定一行全相联任意行组相联固定组内任意行。本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅需要“计算机系统知识”完整思维导图私信回复“软考计算机”免费获取#软考中级 #软件设计师 #Cache #映射方式 #直接映射 #全相联 #组相联 #计算机系统知识