交换变量(C++,处理器级别)

CLA*_*IED 9 c++ swap processor pipelining

我想交换两个变量.我想通过管道使用Read After Write危险来实现这一点.

管道:

OPERXXXXXX FetchXXXXX DecodeXXXX ExecuteXXX WriteBkXXX
STORE X, Y ---------- ---------- ---------- ----------
STORE Y, X STORE X, Y ---------- ---------- ----------
---------- STORE Y, X STORE X, Y ---------- ----------
---------- ---------- STORE Y, X STORE X, Y ----------
---------- ---------- ---------- STORE Y, X STORE X, Y
---------- ---------- ---------- ---------- STORE Y, X
Run Code Online (Sandbox Code Playgroud)

如何在没有自动锁定和警告标志的情况下告诉编译器这样做(并且确切地说)?你能推荐任何文学/关键词?

眼镜:

  • - > target:支持多站点(超过4个)流水线操作的现代架构

  • - >这与任何特定的"问题"无关.只是为了科学.

目前的障碍:

  • 如果您知道如何忽略datahazards,请分享.

zvr*_*rba 3

我建议您阅读英特尔优化手册的第一部分。然后你会意识到,现代的、无序的、推测性的 CPU 甚至不尊重你的汇编语言。操纵管道对你有利?根据这份文件,我想说——算了吧。