私は、メモリバリアがどのように機能するのか、なぜそれが使用されるのか、そしてどのような場合に使用されるべきかを理解しようとしています。ただし、どのような場合に指示の順序を調整する方が効率的かは完全にはわかりません。その例を教えてもらえますか?
1 に答える
5
有用なケースの1つは浮動小数点計算です。これらは通常、「通常の」命令よりもはるかに時間がかかるため、CPUがこれらを複数の命令に対して一方の側に実行し、他の通常のプログラム命令がメインで実行されると便利です。 ALU。
また、すべてのパイプラインをアクティブに保つのにも役立ちます。一部のCPUには、複数の命令パイプラインがあります(たとえば、1つは分岐に特化し、2つは算術演算子に特化し、2つは浮動小数点およびSIMD命令に特化しています)。命令を並べ替えると、CPUは、いくつかの命令のために1つを空にするのではなく、すべてのパイプラインをいっぱいに保つことができるため、プログラムの実行が高速化されます。
単一のパイプラインの場合でも、命令を並べ替えると、連続する依存命令を削除することでパイプラインをいっぱいに保つことができます。http://en.wikipedia.org/wiki/Instruction_pipelineを参照してください。
于 2010-10-17T11:50:04.997 に答える