设主存容量1MB,有16KB直接相联映像的Cache,假定该Cache的块为8个32位的字。解答下列问题:
(1)写出Cache的地址格式。
(2)写出主存的地址格式。
(3)块表的容量有多大
(4)主存地址为DE8F8H的单元在Cache中的什么位置
参考答案:[解答] (1)Cache地址14位,其中Cache块号9位,块内地址5位。
(2)主存地址20位,包括主存块号(标记字段6位+块号9位)和块内地址5位。
(3)Cache的块号为9位,所以块表的单元数为29;块表中存放的是块标记,由于块标记为6位,所以块表的字长为6位。故块表的容量为29字×6位。
(4)Cache有16×1024/32=512个块。因为主存地址DE8F8=1101 1110 1000 11111000,主存地址中前6位是块标记,标记字段的值是110111,中间9位为块号=101000111,最后5位为块内地址=11000。在直接映像方式下,cache地址即为块号+块内地址=10100011111000,所以主存地址DE8F8H转换成Cache地址为28F8H。
解析: 根据主存容量1MB,Cache容量16KB,可知主存地址为20位,Cache地址为14位。而Cache的块为8个32位的字,即32个字节,故块内地址5位。
[归纳总结] 直接映射是指主存中的每一个块只能被放置到cache中唯一的一个指定位置,若这个位置已有内容,则产生块冲突,原来的块将无条件地被替换出去。直接映射是最简单的映射方式,成本低,易实现,地址变换速度快,但不够灵活,Cache的块冲突概率最高、空间利用率最低。
直接映射的关系可定义为K=I mod 2c
式中:K为Cache的块号;I为主存的块号;2c为Cache块数。