某cache共有8行,主存每块32字节,采用全相联映射。字节地址123456H的单元调入cache,则其tag应该如何计算呢
时间: 2023-06-02 18:07:20 浏览: 98
根据全相联映射的特点,可以将主存的32字节块分成8个4字节的块,每个块对应cache的一个行。因此,字节地址123456H所在的块为123450H~123463H,将其除以4得到块地址为30C34H~30C37H,因此tag为30C3H。
相关问题
某cache共有16行,主存每块32字节,采用直接映射。字节地址123456H的单元调入cache,则其tag应该如何计算呢
对于采用直接映射的cache,每个cache块对应主存中的一个唯一块,而且一个cache块中与主存中对应的块的地址是相同的,因此可以将主存地址分成3个部分:标记(tag)、组号(index)和块内地址(offset)。在本题中,由于cache有16行,因此需要4位组号,主存每块32字节,因此需要5位块内地址。因此,字节地址123456H的单元对应的主存块号为123456H/32=3C8B8H,标记为3C8H,组号为8H,块内地址为1EH。因此,该单元对应的cache行是Cache[8][0],其标记应为3C8H。
某cache有32行,采用4路组相联映射方式。主存有2K个块,每块32个字。则主存地址位,其中标记位
为10位,组索引位为5位,块内地址位为5位。
对于4路组相联映射方式,每个组内有4个块,因此需要5位组索引。cache共有32行,因此cache大小为32*4块,即128块。每个块大小为32字,因此cache大小为128*32字,即4KB。
主存有2K个块,每块32个字,因此主存大小为2K*32字,即64KB。主存地址位数为log2(64KB)=16位。
由于cache大小为4KB,因此块内地址需要5位。又因为组索引位和标记位的长度之和为15位(16位主存地址位数减去块内地址位数),因此标记位长度为10位。