cache line对齐地址判断习题解题步骤不理解 求详细讲解
Cache line地址对齐推导逻辑详解
基础前提
- 本题默认CPU cache line大小为64字节,64字节对齐的核心要求是:地址必须是64的整数倍
- 1个十六进制字符对应4个二进制位,地址的最后两个十六进制字符对应地址的最低8个二进制位(bit0~bit7,bit0为最低位)
推导步骤
对齐的二进制特征
因为 64 = 2^6,要让地址是64的整数倍,等价于地址的**最低6个二进制位(bit0bit5)全部为0**。这也就是题目中“表示64个地址需要6比特”的含义:6个比特可以表示063共64个值,刚好对应一个cache line内部64个字节的偏移,偏移为0时就满足对齐要求。
2. ### 转换为十六进制特征
最低6位全0的要求,对应到地址最低8位(最后两个十六进制位)的二进制格式为 xx000000,其中xx是bit7和bit6两位,仅有4种可能取值:
xx=00→ 二进制00000000→ 十六进制0x00xx=01→ 二进制01000000→ 十六进制0x40xx=10→ 二进制10000000→ 十六进制0x80xx=11→ 二进制11000000→ 十六进制0xc0
因此只要地址的最后两位十六进制字符为00、40、80、c0任意一个,就满足64字节对齐要求。
选项验证
逐个核对四个选项的末尾两位十六进制:
- a.
0x7ffc32a21164→ 末尾64,不符合 - b.
0x560c40e05350→ 末尾50,不符合 - c.
0x560c40e052c0→ 末尾c0,符合要求 - d.
0x560c3f2d71ff→ 末尾ff,不符合
因此正确答案为选项c。
内容的提问来源于stack exchange,提问作者MikeChouinard
相关产品推荐
相关产品推荐

