为什么在MIPS中使用写缓冲区?[缓存]

7
在计算机架构课上,我学到了写缓冲区的功能;它可以保存等待写入内存的数据。我的教授只是说它可以提高时间性能。
然而,我真的很好奇“它如何提高时间性能”? 您能更精确地解释一下写缓冲区是如何工作的吗?

将数据写入CPU缓存是快速的,写入内存较慢,而写入磁盘则非常慢 - Some programmer dude
我知道那个概念,但是'写缓存(write buffer)'不仅仅是等待会话,如果有任何写入未命中,则也将被写入内存。我认为在时间性能方面使用/不使用缓冲区没有区别。 - 고지웅
1个回答

12

这篇论文《写入缓冲区的设计问题和权衡》描述了写入缓冲区的目的:

在一个具有写回式一级缓存的系统中,写入缓冲区有两个基本功能:它可以以比下一级缓存更快的速度吸收处理器写操作(store指令),从而防止处理器停顿;并且它可以将对同一缓存块的写操作聚合起来,从而减少对下一级缓存的流量。

换句话说,其两个主要优点是:

  1. 如果处理器有一连串的写操作,这些写操作比缓存响应速度更快,那么写入缓冲区可以存储多个等待进入缓存的未完成写操作。这提高了性能,因为其中一些其他指令不必是写操作,因此它们可以继续执行而不被阻塞。

  2. 如果写入缓冲区中有对不同单词的多次写操作,这些操作将进入相同的缓存行,那么这些写操作可以合并成单一的对缓存行的写操作。这提高了性能,因为它减少了需要进入缓存的总写操作数(因为缓存行包含多个单词)。


1
一个有趣的潜在用途是利用写缓冲区来支持一种有限形式的事务内存;如果事务失败,那么只包含事务条目的写缓冲区可以被简单地无效化。(对于乱序处理器,存储队列可以提供类似的功能。)如果下一级内存层次结构的接口在读和写之间共享,那么写缓冲区也可以允许在较早的写操作之前执行读操作(即使是乱序处理器也可能出现停顿)。 - user2467198
我完全理解我所困惑的事情。谢谢。 - 고지웅
@고지웅 如果你在stackoverflow上找到了有用的答案,你可以通过点击答案旁边的勾选标记来接受它。请参阅FAQ以了解更多关于此功能的详细信息。 - Gabriel Southern
@GabrielSouthern 这不是假设(1)存在大量的写入局部性,否则能够批量写入缓存行的概率将很小;(2)概率很高,写入、挂起和其他指令之间不存在数据依赖关系吗? - Martin Berger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接