【发布时间】:2017-04-25 13:40:40
【问题描述】:
抱歉,第一英语不是我的母语。
多字块注意事项 ... 写未命中 (D$) 不能使用写标签,新块中的一个字数据,以及三个字分配或将在高速缓存中以“乱码”块结束(例如,对于 4 个字块,来自旧块的新 if 数据) ,所以必须先从内存中取出块并支付停顿时间
我正在学习计算机体系结构(教科书使用MIPS),教授说通常write allocate甚至不会从内存中获取数据而只是写入缓存中,这是正确的吗?
然而,对于多字块,写分配需要先从内存中获取数据。我对吗?如果是这样,我不明白这一点。 我看到了 5 年前提出的类似问题,但它没有回答我的问题。 怎么可能“漱口”?任何需要更新的词都用脏位标记。因此,如果它是 4 字块并且只需要更新其中一个字,则在替换块时(回写)或写入完成后(直写)只更新一个。
整个块中只有一个词需要更新,系统可以通过标签来更新,那么为什么要获取内存进行写分配呢?我真的很感激我很困惑的答复。谢谢。
【问题讨论】:
-
如果您在写分配时进行提取,则整个高速缓存行只需要一个脏位,而不是每个字节一个。您以后也无需进行任何复杂的合并。
-
整个区块中只有一个词需要更新,系统可以通过标签进行更新。标签不是一行中的脏位。它们是缓存的一部分,可让您判断地址的高位是否匹配,判断一个块是否正在缓存您想要的地址。
标签: caching mips cpu-architecture