小编KGM*_*KGM的帖子

您可以使用程序集直接访问缓存吗?

谈到效率,缓存是核心。

我知道缓存通常会自动发生。

但是,我想自己控制缓存的使用,因为我认为我可以比一些不知道确切程序的启发式方法做得更好。

因此,我需要汇编指令来直接移入或移出高速缓存单元。

喜欢:

movL1 address content
Run Code Online (Sandbox Code Playgroud)

我知道有一些指令会给出“缓存系统”提示,但我不确定这是否足够,因为这些提示可能会被忽略,或者它们可能不足以表达任何可以通过这种移入/移出缓存来表达的内容命令。

是否有任何允许完全缓存控制的汇编程序?

旁注:为什么我想改进缓存:

考虑一个具有 1 个寄存器和一个包含 2 个单元的缓存的假设 CPU。

考虑以下两个程序:

(其中 x,y,z,a 是存储单元)

"START"
"move 1 to x"
"move 2 to y"
"move 3 to z"
"move 4 to a"
"move z to x"
"move y to x"
"END"

"START"
"move 1 to x"
"move 2 to y"
"move 3 to z"
"move 4 to a"
"move a to x"
"move y to x"
"END"
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,您将寄存器和缓存用于 x,y,z(a 只写入一次)在第二种情况下,您将寄存器和缓存用于 a,x,y (z只写入一次)

如果 CPU …

performance assembly caching cpu-architecture cpu-cache

1
推荐指数
2
解决办法
1310
查看次数