今日、この抜粋に出くわしました:
ほとんどの古いマイクロプロセッサでは、ビット演算は加算および減算演算よりもわずかに高速で、通常は乗算および除算演算よりも大幅に高速です。最新のアーキテクチャでは、これは当てはまりません。ビット単位の演算は、通常、加算と同じ速度です (ただし、乗算よりも高速です)。
古いマイクロプロセッサでビット単位の演算が加算/減算演算よりもわずかに高速だった理由に興味があります。
レイテンシの原因と考えられるのは、加算/減算を実装する回路がいくつかのレベルの論理ゲート (並列加算器など) に依存しているのに対し、ビット単位の演算にははるかに単純な回路実装があることです。これが理由ですか?
最新のプロセッサでは、算術演算とビット単位の演算の両方が 1 クロック サイクル内で実行されることは知っていますが、純粋に回路の伝搬時間について言えば、最新のプロセッサでは理論的にはまだレイテンシが存在しますか?
最後に、ビットごとのシフト操作の実行に関する概念的な C の質問がありました。
unsigned x = 1;
x <<= 5;
unsigned y = 0;
y += 32;
x
との両方y
が値を保持する必要があります32
が、その値に到達するために5 つの個別の左シフトが必要でしx
たか (パイプを介して実装されたビット単位のシフトのように)? 明確にするために、クロックサイクル数ではなく、回路の動作について純粋に質問しています。