Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 在什么情况下,无序执行会导致更高效的代码_Compiler Construction_Cpu_Compiler Optimization - Fatal编程技术网

Compiler construction 在什么情况下,无序执行会导致更高效的代码

Compiler construction 在什么情况下,无序执行会导致更高效的代码,compiler-construction,cpu,compiler-optimization,Compiler Construction,Cpu,Compiler Optimization,我试图了解它是如何工作的,为什么使用它,以及在什么情况下应该使用它。然而,我不完全确定在什么情况下安排指令顺序更有效,有人能给我举个例子吗 浮点运算是有用的一种情况——这些运算通常比“正常”指令花费的时间长得多,因此CPU在多条指令上运行这些指令到一侧是有用的,而其他正常的程序指令则发生在主ALU中 它还可以帮助保持所有管道处于活动状态-一些CPU有多条指令管道(例如,一条专门用于分支,一对专门用于算术运算符,一对用于浮点和SIMD指令)。对指令进行重新排序可以使CPU保持所有管道都已满,而不是

我试图了解它是如何工作的,为什么使用它,以及在什么情况下应该使用它。然而,我不完全确定在什么情况下安排指令顺序更有效,有人能给我举个例子吗

浮点运算是有用的一种情况——这些运算通常比“正常”指令花费的时间长得多,因此CPU在多条指令上运行这些指令到一侧是有用的,而其他正常的程序指令则发生在主ALU中

它还可以帮助保持所有管道处于活动状态-一些CPU有多条指令管道(例如,一条专门用于分支,一对专门用于算术运算符,一对用于浮点和SIMD指令)。对指令进行重新排序可以使CPU保持所有管道都已满,而不是让一条管道为数不多的指令清空,从而加快程序的执行速度


即使对于单个管道,重新排序指令也可以通过删除连续的相关指令来帮助保持管道已满-请参见

谢谢,管道对我来说意义重大