Rob*_*ton 5 x86 assembly instructions
在《英特尔®64和IA-32架构软件开发人员手册》的上下文中,我想知道“提示”一词是什么意思?
我在几个部分中看到它:
在PREFETCHWT1-Prefetch 的描述中,提示T1有写意图。
在SSE4简介中说:“该技术还提供了一个提示,当从不可缓存的WC内存类型读取时,可以提高内存吞吐量。” 这使我想到了有关WC记忆的写得很好的答案。
接下来,我阅读了一条SSE4指令,该指令可以执行带有“流”提示的加载。这使我找到了SSE4编程参考 ,在其中我发现了提示可以是时间的或非时间的。
流负载提示指令本身MOVNTDQA
“提供了非时间提示”
接着,在该手册中,我发现的事务性同步扩展(TSX)在使用“前缀暗示” XACQUIRE和
XRELEASE
在AVX 512位描述VGATHERPF0DPD和介绍时(这些指令类型中还有7种都带有/ PS选项)。在这些情况下,我们可以使用dword或qword索引获得T0或T1提示。
我看到手册中使用的提示最有见地的时间(此列表是有顺序的)出现在10.4.6.1节中,其内容如下:
“非时间性提示可指示处理器将数据存储到内存,而无需将数据写入高速缓存层次结构。”
这是在涉及MOVNTQ,的“可缓存性控制指令”部分中MOVNTPS,MASKMOVQ因此时间提示会写入到缓存行吗?
因此,这时我开始觉得自己理解了提示,它们似乎是“特殊的指针”?但是然后它们仅被称为指针,所以也许它们是指针的一部分?但是后来我什至开始怀疑,当我阅读这个Stack Overflow答案时,暗示的反面是什么。正如我在使用FreeBSD联机帮助页的答案中看到的那样,“提示”一词似乎在更高的抽象级别中使用。
关于缓存行的Wikipedia页面仅增加了我的怀疑,因为它说提示可以准备,丢弃或逐出缓存行(也称为缓冲区?)。那么提示仅仅是与缓存行相关的指令吗?
如您所见,我感到困惑,迷失和恐惧。对于奖励积分,有人可以使用类比解释提示吗?
谢谢
提示是指令操作的一部分,可能无法以所描述的方式实现。它可能根本不被实现,或者可能以不同的方式实现。提示的具体作用可能取决于执行指令的具体情况。一般来说,提示的实现方式不会影响 CPU 的架构状态。对于与缓存相关的提示,这意味着缓存中最终的内容可能会有所不同,尽管对于当前处理器来说至少缓存将保持一致状态。(其他处理器可能会看到当前处理器以与正常 x86 内存排序规则不一致的顺序进行内存访问,因为某些提示可能违反这些规则。)
例如,非临时提示告诉处理器避免为给定的内存引用耗尽高速缓存中的空间。通常使用它们是因为程序员认为 CPU 不会再次访问内存中的位置,因此使用缓存会浪费空间。写入视频内存是一个常见的例子,因为视频内存几乎总是被程序用作“只写”内存。
实际上,非临时提示的操作可能会有很大差异,具体取决于特定的 CPU、是否使用写组合 (WC) 内存、是否是读或写以及特定的指令。请参阅BeeOnRope对有关非时间负载和正常内存的问题的回答,了解一些可能的差异。另请注意,考虑到缓存的异步特性,任何与缓存相关的行为都很难确定,因为预取和其他处理器的操作很容易意外地逐出或引入缓存行。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |