Cache计算的再总结 |
您所在的位置:网站首页 › cache的地址格式 › Cache计算的再总结 |
这部分的知识,虽然考点很少,我也常常感觉自己能够非常熟练的演绎出访问过程,给出计算结果。但是每次遇到一个新的题,总会有一小会的卡顿,然后心情就紧张一下。 再分析两个题目,熟悉一下。 假设脑海中是一个宏观的印象,那么需要抓住的核心是:定位主存块号。 核心的过程是将主存块映射到Cache块,其次才是策略的选择。 而定位主存块号的角度通常有:告诉你十进制的主存地址或16进制的主存地址,以及主存容量是Cache的倍数。 http://blog.csdn.net/u011240016/article/details/52690297 这篇文章中,假设了Cache有多个,总和容量等于主存。这样,可以虚拟的认为主存地址高位标记用的是哪一个Cache,收缩到一个Cache,那么就可以认为是第多少轮访问Cache。 所以,拿主存总容量除以Cache总容量,再求其2的指数幂,即为主存块的标记。 所以,这个感性认识可以有:高位标记的是主存块进入Cache是在第几轮的数目。 一般给定一个10进制的主存地址,需要根据块的大小,计算出这是主存的多少块,然后拿着这个块数去mod Cache块数。 这种状况下,针对十进制数字较为好算。 如果给的是一串16进制,理所当然的化为二进制。 然后用的思路还是一样,只是形式上,我们不再计较这是主存的多少块,要专注于二进制位的分配问题。虽然,本质是一样的,但是要专注问题。 看例题更容易解释: 某存储系统中,主存容量是Cache容量的4096倍,Cache被分为64个块。当主存地址采用直接映射时,地址映射表的大小应该是 64 * 13bit. PS:b不考虑一致性维护位和替换算法位。 推导:主存是Cache的 4096=212 ,得出高位主存块的标记是12位。 由PS中的补充知道,只需要再加一位基本的:有效位即可。 因此,一个Cache快需要13bits进行标识。 总共是64块,得出64 * 13bits的答案。 看一道主存地址已知的习题。 有一主存-Cache层次的存储器,其主存容量为1MB,Cache容量为16KB.每字块有8个字,每字32位。采用直接映射存储,若主存地址是35301H,且CPU访问Cache命中,则在Cache的第152字块中。(Cache字块起始是第0字块) 推导:既然有主存地址,且是易于化成二进制的16进制形式,毫不犹豫的拿来化成二进制再说: 35301H=0011,0101,0011,0000,0001B 在看一个块内寻址用多少位: 8∗32bits=25B ,这里没说按什么寻址,默认为按B寻址,因此字内寻址用掉5位。 Cache总共有多少块呢? 16KB/8∗32bits=29块。 因此,将主存地址去掉低5位,再往上数9位: 0,1,0011,000B=152D 即为所求的Cache块号。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |