这是家庭作业吗?
为了解决这个问题,您需要知道相关架构的地址大小.一般解决方案
设C是以位为单位的缓存大小.
设A是以位为单位的地址大小.
设B是以位为单位的高速缓存块的大小.
设S是缓存的关联性(在某种程度上,直接映射为S = 1,完全关联为S = C/B)
L,缓存中的行数等于C/B. 这是高速缓存位的数量除以每行的位数.Q,缓存中的集合数等于L/S. 这是行数除以关联性.这条线和上述原因应该是显而易见的; 如果不是,请在阅读下面之前再次阅读教科书.
现在,让我们计算出三件事:位移位,块位和标记位.
位移位用于查找高速缓存行中的特定项.假设字节可寻址存储器D,位移位数是ceil(log2(ceil(B/8))).这是高速缓存行中两个字节数的对数基数,每一步都向上舍入.如果内存是双字节可寻址的,那么内部部分将是B/16等.
块位用于在缓存中找到我们想要的缓存集.因此,块位数O是ceil(log2(Q)).这是缓存中集合数量的两个日志库.
标记位是剩下的.因此,T,标记位的数量是ADO.在英语中,地址中的位数减去用于其他两个部分的位数.我们不必在这里考虑关联性,因为我们已经使用Q而不是L来处理它.
综上所述:
最后计算标签长度.这绝对容易.
PS - 请注意,实际上,缓存还会在每行中存储脏位和一些其他元数据.但是,这些问题通常会忽略这些问题,所以我也这样做了.
| 归档时间: |
|
| 查看次数: |
3768 次 |
| 最近记录: |