什么是存储缓冲区?

2023-12-04

谁能解释什么是加载缓冲区以及它与失效队列有何不同。以及存储缓冲区和写入组合缓冲区之间的区别? 保罗·E·麦肯尼 (Paul E Mckenny) 的论文http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf很好地解释了存储缓冲区和失效队列,但遗憾的是没有讨论写入组合缓冲区


无效队列更像是存储缓冲区,但它是内存系统的一部分,而不是 CPU。基本上,它是一个跟踪失效并确保它们正确完成的队列,以便缓存可以取得缓存行的所有权,以便可以写入该行。加载队列是一种推测结构,用于跟踪乱序处理器中正在进行的加载。例如,可能会发生以下情况

  1. CPU 推测性地从 X 发出负载
  2. 该负载按程序顺序排列after存储到 Y,但 Y 的地址尚未解析,因此存储不会继续。
  3. Y 被解析,结果等于 X。当 Y 的存储被解析时,该存储在加载队列中搜索已发出的推测加载,但这些加载按程序顺序出现在 Y 的存储之后。它将注意到 X 的加载(等于 Y),并且必须压缩以加载 X 开始及其后的指令。

存储缓冲区是存在于 CPU 中的推测结构,就像加载队列一样,用于允许 CPU 推测存储。写入组合缓冲区是内存系统的一部分,本质上是接受一堆小写入(例如 8 字节写入)并将它们打包成单个较大的事务(64 字节缓存行),然后再将它们发送到内存系统。这些写入不是推测性的,而是一致性协议的一部分。目标是节省总线带宽。通常,写入组合缓冲区用于对 I/O 设备(通常用于显卡)的未缓存写入。在 I/O 设备中,通常通过执行 8 字节写入来对设备寄存器进行大量编程,并且写入组合缓冲区允许这些写入在通过缓存传送时被组合成更大的事务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是存储缓冲区? 的相关文章

  • 在事务结束时发送事件

    我有一个服务对象的接口 如下所示 为简洁起见进行了简化 public interface ItemService public Item getItemById String itemId int version public void c
  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 使用 Google Cloud Functions 实现微服务的 API 网关

    Inputs 例如 我们有一些服务 账户服务 产品服务 支付服务 每项服务都是一个单独的 Google Cloud Function 每个服务都有自己的 HTTP API 例如 账户服务有 https REGION FUNCTIONS PR
  • 现代缓存中的方式预测

    我们知道 就缓存命中时间而言 直接映射缓存优于集合关联缓存 因为不涉及特定标签的搜索 另一方面 组关联缓存通常比直接映射缓存具有更好的命中率 我读到 现代处理器试图通过使用一种称为路径预测的技术来结合两者的优点 他们预测给定集合中最有可能发
  • 在 DDD 中,表示层可以同时使用 Repository 和 Service 类吗?

    如果表示层只应该使用服务 那么服务类必须公开存储库已实现的相同方法 以使它们可供表示层使用 这似乎是错误的 有人可以帮我澄清一下吗 我敢打赌 这似乎是错误的 因为您实际上并不需要这种抽象级别 应用服务有facades http en wik
  • 这叫什么类型的建筑?

    对于我当前正在开发的 Web 应用程序 ASP NET MVC 我们采用以下架构 Data Access Layer 将数据持久保存到任意数据库的逻辑 Domain 数据模型 Service Layer 业务逻辑 例如订单处理 账户管理等
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • 为什么x86分页没有特权环的概念?

    早在 1982 年 当 Intel 发布 80286 时 他们在分段方案中添加了 4 个特权级别 环 0 3 由全局描述符表 GDT 和局部描述符表 LDT 中的 2 位指定 在 80386 处理器中 Intel 添加了分页功能 但令人惊讶
  • 为什么如果内存组织为字,则程序计数器加 1;如果内存组织为字节,则程序计数器加 2?

    如果在计算机中一条指令是 16 位 并且如果存储器被组织为 16 位字 则通过在当前指令的地址中加 1 来计算下一条指令的地址 如果内存是按字节组织的 可以单独寻址 那么我们需要在当前指令地址上加二 得到顺序执行的下一条指令的地址 为什么会
  • 您的 Web 服务版本控制最佳实践是什么?

    我们有 2 个独立的产品 需要通过 Web 服务相互通信 支持 API 版本控制的最佳实践是什么 I have 本文 http www ibm com developerworks webservices library ws versio
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 我们可以拥有一台只用寄存器作为内存的计算机吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 寄存器是计算机中最快的存储器 那么如果我们想构建一台只有寄存器甚至没有缓存的计算机 可能吗 我什至考虑用寄存器代替磁盘 尽管它们本质上是易
  • 为什么X86中没有NAND、NOR和XNOR指令?

    它们是您可以在计算机上执行的最简单的 指令 之一 它们是我亲自实施的第一个指令 执行 NOT AND x y 会使执行时间和依赖链长度和代码大小加倍 BMI1 引入了 andnot 这是一个有意义的补充 是一个独特的操作 为什么不是这个问题
  • 分支预测器和分支目标缓冲区如何共存?

    我的问题是它们如何在现代 CPU 架构中共存并协同工作 你把它稍微颠倒了 每次获取时 您都会索引到分支预测器 它会告诉您刚刚收到的指令是否will be解码为已采取的分支 如果没有 则获取下一个连续地址 但是 如果您的分支预测器说它将是一个
  • 超标量和 VLIW

    我想问一些关于ILP的问题 超标量处理器是标量处理器和矢量处理器的混合体 那么我可以说矢量处理器的架构遵循超标量吗 同时处理多个指令不会使体系结构超标量 因为流水线 多处理器或多核体系结构也可以实现这一点 这意味着什么 我读过 超标量 CP
  • GDI 函数 BitBlt 和 StretchBlt 在 Win32 中是否硬件加速?

    我似乎无法通过搜索得到明确的答案 Win32 blitting 操作是否硬件加速 GDI 而不是 GDI 我不知道这些函数如何与图形驱动程序交互 是否有任何函数调用来验证此功能 例如 GetCaps 对于特定的图形设备 win32图形设备
  • 标志寄存器中保留/未定义位的用途是什么?

    在 Z80 8080 8085 和 8086 处理器的标志寄存器中 被记录为 保留 或 未定义 的位 1 3 5 的用途是什么 这些位未使用 也就是说 没有指令明确地将它们设置为任何值 设计人员认为 5 6 个标志就足够了 他们只是将标志寄
  • ARM Cortex-M3 启动代码

    我试图了解 STM32 微控制器的 Keil realview v4 附带的初始化代码是如何工作的 具体来说 我试图了解堆栈是如何初始化的 In the 文档 http infocenter arm com help index jsp t
  • 除了 Erlang 之外,还有哪些系统是基于“绿色流程”的?

    我正在阅读这个信息页面绿线 维基百科 http en wikipedia org wiki Green thread我想知道 除了 Erlang 之外 还有哪些编程系统依赖于 绿色进程 Edit 绿线 绿色流程 基于绿色流程 Erlang

随机推荐

  • 如何发送C++和mysql动态mysql查询

    使用 Visual Studio Windows 7 和 mysql h 库 我想要做的是发送一个像这样的 MySQL 查询 mysql query conn SELECT pass FROM users WHERE name Leo To
  • 何时在 Ruby 方法中使用 `self.foo` 而不是 `foo`

    这不是 Rails 特有的 我只是使用 Rails 作为示例 我在 Rails 中有一个模型 class Item lt ActiveRecord Base def hello puts Hello self name end end 我们
  • 在浏览器中设置 Cookie 以实现视频自动播放

    我如何设置 cookie 使视频仅在第一次访问时自动播放 之后如果他们想观看 则必须手动播放 总体思路是 在页面加载时检索 cookie 信息 如果没有 cookie 或者设置为 false 则播放电影 将 cookie 设置为 true
  • SaveAs 功能适用于 Microsoft PC,但不适用于 MAC

    我有 VBA 代码 可以控制用户以 xls xlsm 或 pdf 以外的任何其他格式保存文件 这是为了防止在保存过程中删除宏 我插入了一行来检查操作系统是否为 OSx 就像 Mac 它适用于其他宏 但不适用于此宏 该过程失败 并显示 找不到
  • 移位何时会导致未定义的行为

    我尝试找到一个列出所有可能性的好答案 也许只有一种 那么考虑到有符号数和无符号数 C 语言中导致 UB 移位的方法有哪些 C99 标准对按位移位运算符有这样的规定 添加了强调 并且 用于表示求幂 6 5 7 3 对每个操作数执行整数提升 结
  • 是否可以克隆 Z3_context?

    我需要它在符号执行 Klee 的上下文中进行增量求解 在符号执行路径的分支点 有必要将求解器上下文分为两部分 条件为真和条件为假 当然 有一个昂贵的解决方法 创建空上下文并重播所有约束 有没有办法分割Z3 context 您打算添加这样的功
  • 反应:未捕获类型错误:无法读取未定义的属性“状态”

    我试图在来自 General 类的函数 Application 中获取 状态 对象 但收到此错误 未捕获的类型错误 无法读取未定义的属性 状态 代码是 class General extends Comment constructor su
  • 无法在 Windows 10 上安装 PIP

    我运行了 Python 3 5 1 安装程序https www python org downloads release python 351 但是 在命令行上 当我去运行时pip 我看到一个错误 pip is not recognized
  • 如何在 python 和 mac 应用程序之间进行通信?

    这可能是一个含糊的问题 但我未能正确地重新表述它 所以这里有一个解释 我开发了一个应用程序 最初是作为 Mac 应用程序开发的 使用 Carbon Cocoa 的 API 来完成我的任务 应用程序的目标是在鼠标移动 其他击键后将 击键 发送
  • 如何将数据绑定到与派生 List 的类中的列表项无关的属性

    以前 我有一个类包装了一个内部System Collections Generic List
  • 致命错误:调用未定义的函数 NOW()

    我开始开发一个统计观众在线系统 但我遇到了问题 我通常使用 time NOW 来获取时间 但现在它给了我这个错误 致命错误 调用未定义的函数 NOW 您知道为什么会发生这种情况吗 id session SESSION startView s
  • Django 和错误请求 (400)

    我创建了新的 django 项目 添加到我的settings py DEBUG False ALLOWED HOSTS localhost my site com 创建的应用程序test view added hello world to
  • 为什么我的变换会突然恢复?

    我试图让我的元素留在原地 转换后 现在 翻译后的位置就是我想要的位置 但随后我的名字又回到了引用中 我是否遗漏了一段代码 或者是否有一段代码使这种快速恢复发生 blockquote font family Open Sans Verdana
  • 使用 WMPLib 和 C# 暂停和恢复 mp3

    我正在使用 C 和 WMPLib 库开发一个简单的 mp3 播放器项目 这个想法是让它可以通过 PIC 组件进行控制 从我家的 任何地方 控制 PC 中的媒体播放 是的 这是一个大学项目 问题 我无法使用 WindowsMediaPlaye
  • iTextSharp ColumnText.SetSimpleColumn Addtext 导致 Adob​​e Reader X 10.1.5 中出现错误

    下面的代码说明了我在使用 iTextSharp 时遇到的问题 一切都很完美 pdf 文件已创建并在屏幕上正确显示 当我从 Adob e Reader X 打印 pdf 时 它看起来完全正确 但 Adob e 报告 此页面存在错误 Acrob
  • DataGridView 删除行仅删除备用行

    我的 DataGridView 有 100 行 然后 我删除每一行 如下所示 但当它循环时 ID 为 0 2 4 6 8 因此它只删除偶数行 这是怎么回事 foreach DataGridViewRow row in dgvData Row
  • 使用 GDB 进行 NASM 组装时在本地标签处中断

    我想使用 GDB 中断 NASM 汇编代码中的本地标签 发出以下命令会产生输出 gdb break start label1 217 Attempt to extract a component of a value that is not
  • ES6 中的“export const”与“export default”

    我试图确定这两者之间是否有任何大的差异 除了能够导入export default只要这样做 import myItem from myItem 并使用export const我可以 import myItem from myItem 除此之
  • Promise.resolve 和 new Promise(resolve) 可以互换吗

    I think Promise resolve and new Promise resolve 是可以互换的 考虑一下 A new RSVP Promise function resolve reject resolve then func
  • 什么是存储缓冲区?

    谁能解释什么是加载缓冲区以及它与失效队列有何不同 以及存储缓冲区和写入组合缓冲区之间的区别 保罗 E 麦肯尼 Paul E Mckenny 的论文http www rdrop com users paulmck scalability pa