计组真题分析1 cache与映射

发布时间 2023-09-05 10:36:04作者: namezhyp

【2015统考真题】假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用回写方式,则能存放4K字数据的Cache的总容量的位数至少是()

正确答案:148K

有件事我一直有些纠结,那就是在计算中,诸如脏位、标记位这些位应该怎么处理。但是至少在这道题中,我们可以确定。这些位不占用cache的存储位,而是额外空间,并且在计算时需要列入考虑。

 

分析:

写回法:CPU对cache写命中时,只修改cache的内容,直到这块cache被换出时才更新到内存对应块。 一般配合写分配法使用(写不命中时,先调入到cache,再进行修改)

全写法:CPU对cache写命中时,同时修改cache块和对应内存块的内容。这样做会多至少一次访存,但是可以确保二者数据保持一致。如果有其他进程访问数据,可以避免意外。配合非写分配法使用(写不命中时,直接改内存,不调入cache)

 

在这道题中,标记部分一定含了有效位和标记位(用于标记cache此时存的是哪个主存块号)。如果用了写回法,那还需要一个脏位。如果cache的替换算法用了LRU、LFU,那还需要替换算法位。这道题中cache采用的是直接映射。主存按字节编址,每块4个字,每个字32位(4字节),也就是说每个内存块块内地址要16字节,按字节编址的话块内地址占4位。主存32位,32-4-10=18,用于直接映射的标记要18位(因为直接映射需要判断这块里装的是对应块中的哪一块),写回法1位。18+11+1=20.cache总容量4k个字,对应1k个chache块;那么也就是说额外位要20*1k=20k。4k*32+20k=148k。所以总共需要148k位。