在Intel 64和IA-32架构软件开发人员手册的上下文中,处理器“提示”究竟是什么?
我在几个章节中看到:
PREFETCHWT1的描述中,-Prefetch提示T1打算编写。MOVNTDQA“提供非时态提示”。XACQUIRE和XRELEASE中使用了“前缀提示”VGATHERPF0DPD和其他部分时(还有7种其他类型的指令,全部带有/PS选项)。在这种情况下,我们可以使用dword或qword索引获得T0或T1提示。“非时态提示指示处理器将数据存储到内存中,而不将数据写入缓存层次结构中。”
这是在涉及MOVNTQ、MOVNTPS、MASKMOVQ的“可缓存控制指令”部分,那么一个时态提示会写入缓存行吗?我推断这好像是非时间暗示的对立面?
我在试图拼凑处理器提示的含义时使用的其他链接:
缓存线上的Wikipedia页面 ...says提示可以准备、丢弃或排除缓存行(也称为缓冲区?)。那么,提示只是与缓存行相关的指令吗?
谢谢
发布于 2019-07-30 19:05:42
提示是指令操作的一部分,该指令不能以所描述的方式实现。它可能根本没有实现,也可能以不同的方式实现。提示的具体操作可能取决于执行指令的具体情况。一般来说,提示的实现方式不会影响CPU的体系结构状态。对于与缓存相关的提示,这意味着缓存中的确切结果可能会有所不同,尽管对于当前处理器来说,缓存至少将保持一致状态。(其他处理器可能会看到当前处理器根据正常的x86内存排序规则以不一致的顺序进行的内存访问,因为一些提示可能违反这些规则。)
例如,非时态提示告诉处理器避免将缓存中的空间用于给定的内存引用。它们通常被使用,因为程序员认为CPU不会再次访问内存中的位置,所以使用缓存会浪费空间。写入视频内存是一个常见的例子,因为视频内存几乎总是被程序作为“只写”内存使用。
实际上,非时态提示在它们的操作中可能会有很大的差异,这取决于特定的CPU、是否使用写组合(WC)内存、是否是读或写、以及特定的指令。有关非时态负载和正常内存的问题,请参见BeeOnRope的回答,以了解一些可能的差异。还请注意,由于缓存的异步性质,任何与缓存相关的行为都很难确定为预取,而且其他处理器的操作可以很容易地意外地排除或引入缓存行。
https://stackoverflow.com/questions/57272289
复制相似问题