- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
CPU:Intel Sandy/Ivy Bridge (x86_64)
我需要编写一个通过 PCI Express 连接到 CPU 的设备驱动程序,并且需要使用最大带宽。为此,我使用映射的设备内存到处理器的物理地址空间。然后使用ioremap_wc()
将这 block 内存映射到标记为WC(Write Combined)的内核虚拟地址空间。
众所周知,在 x86_64 CPU 中有几个缓冲区:
MOV [addr], reg
将缓存行存储到缓存中和 RAM 立即。 关于缓存级别的详细信息:每个内核都有 L1(64 KB,1 ns)和 L2(256 KB,3 ns),整个 CPU 有一个用于所有内核的缓冲区 L3(4 - 40 MB,10 ns)。
(SB) Store Buffer - 一个缓冲区(队列),所有数据都按顺序存储在其中。并且在相同的序列中,后台的数据懒惰地存储在内存中。但是有一个选项可以使用 SFENCE
或 MFENCE
强制将数据从存储缓冲区保存到 Cache/RAM(例如支持顺序核心之间的一致性)。
BIU(总线接口(interface)单元)/WCB(写组合缓冲区) - 在 WC(写组合)模式下。当内存区域标记为WT时,不使用缓存,使用大小为64字节的BUI/WCB作为缓存行。当我们将 MOV [addr], reg
存储到内存中 1 个字节 64 次时,只有当最后一个字节被存储时,整个 BIU/WCB 存储到内存中- 这是优化的机制,用于将数据以整 block 64 字节的 block 写入内存区域。例如,通过PCI-Express接口(interface)将数据存储到映射到CPU物理地址空间的设备内存是一个非常重要的机制,其中记录(发送)64字节比记录(发送)增加实际带宽数倍。 1个字节。但是有一个选项可以使用 SFENCE
或 MFENCE
将数据从 BIU/WCB 强制保存到 [远程] 内存。
以及一些密切相关的问题:
1.Cache、Store Buffer 和 BIU/WCB 是否都在 CPU 中使用相同的物理缓冲区,但它的不同部分,或者它们在 CPU 中都有单独的物理缓冲区?
2. 如果 Cache 和 BIU 使用相同的物理缓冲区,例如都使用 Cache-L1 的一部分,那么为什么 SFENCE/MFENCE
对第二个有影响,但是没有第一。如果它们有单独的物理缓冲区,那么为什么 Cache-line 和 BIU 具有相同的 64 字节大小?
3. L1 的缓存行数等于 (65536/64) = 1024,L2 的 (262144/64) = 4096,L3 的缓存行数为 4 MB/64 字节。我们不知道存储缓冲区的大小。但是我们在单个 CPU 核心或整个 CPU 上有多少 BUI/WCB(每个 64 字节)?
4. 正如我们所见,SFENCE
或 MFENCE
命令对 Store Buffer 和 < strong>BIU/WCB。但是这些命令对缓存(L1/L2/L3)有什么影响吗?
最佳答案
缓存、存储缓冲区和 BIU/WCB 都是 CPU 中独立的物理结构。
为什么Cache-line和BIU的大小一样,都是64字节?为了设计方便。并且因为各种可缓存区域之间的边界至少是 64 字节对齐的。
单个内核上的 BIU/WCB 数量不是架构的一部分,它是一个实现细节,甚至可能会随着步进而变化。
SFENCE
和 MFENCE
导致挂起的存储完成,这可能导致一些可缓存的数据从 CPU 存储缓冲区写入缓存。
(edit) L1/L2/L3 高速缓存形成一个单一的高速缓存一致性系统,这是外部存储器的捷径。
根据设计中实现的缓存包含属性,栅栏操作会导致将待处理的存储写入缓存的某个特定级别(L1/L2 或 L3)。最典型的栅栏指令会导致可缓存的数据从存储缓冲区移动到 L1,但我相信有可能将内存区域标记为仅在 L2 或 L3 中可缓存。在那种情况下,数据将从存储缓冲区移动到 L2 或 L3。 (许多 MIPS 处理器支持这种操作模式。)
不可缓存的数据总是从存储缓冲区/WCB 直接写入内存,永远不会写入缓存。
我从 P6 时代起就没有研究过 Intel 处理器,所以我不知道实现细节,例如 WCB 的数量或当前内核上的存储缓冲区。
如果您想了解特定英特尔内核的实现细节,请查看 Microprocessor Report ,或 Hot Chips session 记录。 (两者都应在大学图书馆中提供。)
关于caching - Cache、Store Buffer 和 BIU/WCB 在 CPU 中是各自有单独的物理缓冲区,还是只有一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25809677/
我一直在尝试将 Redux 集成到项目中。 我按照使用示例进行操作,但收到错误store.getState is not a function。 所以我知道其他人也问过类似的问题,但情况略有不同。 R
我正在尝试将我的第一个应用程序上传到 App Store。我已完成 iTunes Connect 所需的所有步骤,我的应用程序状态为“等待上传”。 我相信下一步是使用 Application Load
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
App Store 有所谓的“服务器到服务器”通知。也就是说,当您购买应用内功能时,Apple 服务器会向您服务器的回调方法(发送收据数据)发出 HTTPS 请求。 问题是 - 收据数据中似乎没有用户
我已经将我的第一个应用程序上载到App Store,但是我没有放置我的App需要位置服务和wifi的UIRequiredDeviceCapabilities。结果:该应用程序没有像应做的那样开始寻找坐
由于iOS 8将于本月发布,并且我的应用仅支持32位(因为第3个库仅兼容32位),因此我不确定如果我将新版本的应用提交给我,则该应用的新版本是否会被拒绝App Store将于下个月发布,因为它不支持6
我有一个让我有些困惑的问题。 为了将我的应用提交到App Store,我必须输入Bundle ID后缀。如您所知,Bundle ID会获得Bundle ID后缀的确切名称(您在Bundle ID后缀上
如问题所述,我想知道更新后的应用程序一旦获得批准,是否会自动发布到应用程序商店中? 我的更新已完成并且已经过测试,由于需要几天的时间才能批准,因此我希望现在将其提交批准。同时,我需要在服务器上更改一些
获取应用程序提交到 Apple App Store 的屏幕截图的最简单方法是什么,需要包含的各种尺寸是多少? 另外,是否允许状态栏?我相信我听说它不是,但是包括 Facebook 和 Quora 在内
我在 iTunes 商店中有一个应用程序,其分发证书(在 key 链访问中)将于明天到期。它是一年前生成的,尽管我最近更新了我的 iPhone 开发者计划,但我还没有更新任何证书或签名。 当我将测试设
我的商店包含以下 reducer : export const centralStampState = { layoutState : layoutReducer, //this one is n
我即将将我的应用程序提交到 Apple App Store,并且我了解到 Apple 需要两周时间才能对其进行审核,然后才能上线。但是,在 iTunes Connect 的定价部分,它询问我什么时候发
如果我的应用程序正在接受审核或已获得批准(因此处于 Ready For Sale 状态或同等状态),我可以编辑哪些应用程序信息而无需提交应用程序的新版本? 最佳答案 据此Apple Documenta
我已经在Opera管理控制台上进行了全面检查,看不到他们在哪里提到付款方式。他们说明何时制作,但没有说明。即Paypal,Cheque等。 有人知道他们如何付款吗? 最佳答案 当金额达到200美元时,
我上传了我的二进制文件并创建了屏幕截图。我做的所有屏幕截图都是 640x960,我将它们上传为 PNG。这背后的想法是,我应该以尽可能最好的质量把它交给他们,这样当他们将它们重新压缩成 320x480
我从Microsoft下载了Windows 8 app samples,并下载了这些示例之一加速度传感器示例 我不知道如何测试它以计划使用此功能的软件? 我没有水面设备,想知道只有一种方法可以做到吗?
我正在为TestFlight上传第二个应用程序。第一次进展顺利,但这次却被拒绝了。 We have started the review of your beta app, but we are no
不确定这是正确的论坛,如果不是,我提前道歉。 某处是否有 App Store 新版本的提要?还是带有类别和发布日期的应用提要/列表? 此列表已从 App Store 中消失,我想看看是否可以制作一个应
我有一个 JSON 存储,定义如下 var subAccountStore = new Ext.data.JsonStore({ autoLoad: true, proxy: { ty
我有一个提交到应用商店的应用被拒绝,原因是: 2.30 不符合 Mac OS X 文件系统文档的应用将被拒绝 他们声称我的应用正在修改不受支持的 ~/Library/Preferences/com.a
我是一名优秀的程序员,十分优秀!