当前位置: 首页 > 知识库问答 >
问题:

MIPS双向缓存

谈桐
2023-03-14

我有一个MIPS 64位架构的缓存,每个块4KB的2路和16个字的行(每个块)。我必须确定:

>

  • [标记|索引|偏移]

    每个字段的位大小

    整个内存由多少位组成?

    我不知道我所做的是否正确,因为我没有结果,因为我们使用的是64位MIPS而不是32位,我认为一个单词应该由8个字节而不是4个字节组成。

    我通过执行4KB/(16个字*8个字节)计算了块的数量

    然后我完成了32/2-way=16-

    然后我得到字和字节偏移量,如下所示:

    16个字

    8字节-

    最后,我将标记计算为64-4(索引)-4(字偏移量)-3(字节偏移量)=53位

    并且总比特数将是53标签64 1验证=118乘以块数(32)将给出3776位。

    我不完全确定结果,有人能帮我吗?

    谢谢


  • 共有1个答案

    桓深
    2023-03-14

    问题的一部分不是很清楚,我会试着做一个最好的猜测。

    假设:缓存大小为4KB,字为64位,内存为字节寻址。

    信息:缓存线宽16个字,它是一个双向集合assoc缓存。

    Cacheline size = 16 word * 64 bits (8 byte) = 128 byte
    Number of cachelines = 4 KB/128 B = 32
    Number of blocks = 32 / 2 (2-way) = 16
    As the memory is byte addressable, least 3 bits of the address can be ignored.
    Next 4 bytes will be used to offset in a word in the 16 word cacheline.
    Next bit of the address is ignored because its 2-way assoc
    As there are 16 blocks, next 4 bits will be used to index a block.
    That leaves 64 - (4 + 1 + 4 + 3) = 52 bits for the TAG.
    
    TAG - 52 bits [bits 12 to 63]
    Index - 4 bits [bits 8 to 11]
    Offset - 4 bits [bits 3 to 6]
    

    很难回答第二个问题,因为缓存通常每个缓存线都有额外的位,如有效位等。为了简单起见,让我们假设这个缓存每个缓存线只有一个标记。这为我们提供了52位*16块*块中的2行=1664位=208字节。

    因此,整个缓存大小为

    = 4 KB + 208 B
    = 4096 B + 208 B
    = 4304 Bytes
    
     类似资料:
    • 我正在研究mips r10000的不同管道阶段。本文指出,处理器每次从指令缓存中获取4条指令。但指令缓存的延迟必须超过一个周期,虽然我不知道指令缓存的准确命中延迟,但Haswell处理器中一级数据缓存的命中延迟大约为4个周期。 因此,如果我们假设一级指令缓存延迟为3-4个周期,那么处理器如何在每个周期提取4条指令?

    • 问题内容: 我正在研究一个项目,并且在使用Java的双重缓冲方面已经读了尽可能多的内容。我想做的是向我的JFrame添加一个组件或面板或包含要绘制到其上的双缓冲表面的东西。如果可能,我想使用硬件加速,否则请使用常规软件渲染器。到目前为止,我的代码如下所示: 我创建了一个抽象的游戏类和一个调用Update和Draw的游戏循环。现在,如果您看到我的评论,那就是我主要关注的领域。有没有一种方法可以获取图

    • 问题内容: 我们的应用程序使用无限滚动来浏览大量异构项目列表。有一些皱纹: 对于我们的用户来说,通常有10,000个项目的列表,并且需要滚动3k +。 这些都是丰富的项目,因此在浏览器性能变得无法接受之前,我们只能在DOM中拥有几百个。 这些物品的高度各不相同。 这些项目可能包含图像,我们允许用户跳转到特定日期。这很棘手,因为用户可以跳到列表中需要在视口上方加载图像的位置,这会在加载时将内容下推。

    • 问题内容: 我有两个以下列方式注释的实体类 如果我存储类“ B”的实例,则关系将存储在数据库中,并且类“ A”中的吸气剂将返回B的正确子集。但是,如果我对“ A”中的B列表进行了更改,更改是否不存储在数据库中? 我的问题是,我该如何做到使任一类的更改都“级联”到另一类? 编辑:我尝试过删除mapedBy参数和定义JoinTable(和列)的不同变体,但我一直找不到正确的组合。 问题答案: 最短的答

    • 本文向大家介绍双向链表和双向循环链表?相关面试题,主要包含被问及双向链表和双向循环链表?时的应答技巧和注意事项,需要的朋友参考一下 双向链表: 包含两个指针,一个prev指向前一个节点,一个next指向后一个节点。 双向循环链表: 最后一个节点的 next 指向head,而 head 的prev指向最后一个节点,构成一个环。

    • 问题内容: 我有2个类:User和UserPicture具有1:1的关系。 UserPicture中的“ user”将被加载,而UserPicture中的“ userPicture”则不会加载-我错了吗? 编辑 必须添加,我只是创建一个UserPicture并插入它们(使用现有的userId)-也许我需要在UserPicture中级联“ user”? 问题答案: 您必须映射您的课程。