最初の命令は、非VLIW ISAでも「順次実行」されるとは限りません。実行は順次に表示されるだけで済みます。順序付けられたスーパースカラー実装は、複数の命令を別の命令と並行して実行できます。これを効果的に行うには、命令をデコードするためのハードウェアを増やす(拡張する)必要があり、並列に実行される命令のデータ非依存性を確保するためにハードウェアを追加する必要があり、実行リソースを増やす必要があり、レジスタファイルポートの数は一般に増加します。これらはすべてトランジスタを追加します。
データの依存関係がなければ、後の命令を前の命令よりも前に実行できるアウトオブオーダー実装では、追加のハードウェアを使用してデータが利用可能になり次第命令のスケジューリングを処理し、マッピング用の名前変更レジスタとハードウェアを追加します。書き込み後の書き込みおよび書き込み後の書き込みの危険を回避するために、それらを割り当て、解放します(より多くのトランジスター)。順不同の実行により、プロセッサはストールを回避できます。
アウトオブオーダープロセッサでロードとストアを並べ替えるには、プログラム順序の早いストアが結果を同じアドレスの遅いロードに転送することを保証する必要があります。これは、ストアがメモリ(キャッシュ)にコミットされるまで、アドレス比較ロジックとストアのアドレス(およびサイズ)のストレージ(およびデータのストレージ)を意味します。(メモリ整合性モデルの脆弱性が低いISAの場合、他のプロセッサ(より多くのトランジスタ)からのストアに対してロードが適切に順序付けられていることを確認する必要もあります。)
パイプライン処理により、制御とバッファリングのオーバーヘッドが追加され、命令処理のさまざまな部分でロジックを再利用できなくなりますが、命令を処理するさまざまな部分をさまざまな命令で時間的にオーバーラップできます。
パイプライン処理とスーパースカラーの実行により、制御ハザード(条件分岐とジャンプ)の影響が増加します。パイプライン(および順不同の実行)は、無条件ジャンプのターゲットの可用性を遅らせる可能性があるため、ターゲット(および条件分岐の方向)を予測するハードウェアを追加すると、命令のフェッチが実行部分を待たずに続行できます必要なデータを利用可能にするプロセッサ。より正確な予測子は、より多くのトランジスタを必要とする傾向があります。
アウトオブオーダープロセッサの場合、先行するすべてのストアのアドレスが計算される前にメモリからのロードを実行できるようにすることが望ましい場合があります。
キャッシュを使用すると、待ち時間を短縮し、メモリアクセスの帯域幅を増やすことができますが、データを保存してタグを保存する(およびタグを要求されたアドレスと比較する)トランジスタを追加できます。交換ポリシーを実装するには、追加のハードウェアも必要です。ハードウェアのプリフェッチにより、トランジスタが追加されます。
ソフトウェアではなくハードウェアに機能を実装すると、パフォーマンスを向上させることができます(より多くのトランジスタが必要になります)。たとえば、TLB管理、乗算または浮動小数点演算などの複雑な演算、カウントの先行ゼロなどの特殊演算。(命令を追加すると、命令デコードの複雑さが増し、通常は実行の複雑さが増します。たとえば、実行ハードウェアのどの部分を使用するかを制御するためです。)
SIMD /ベクトル演算は、命令ごとに実行される作業量を増やしますが、より多くのデータストレージ(より広いレジスタ)を必要とし、通常、より多くの実行リソースを使用します。
(投機的マルチスレッドにより、複数のプロセッサが単一のスレッドプログラムをより高速に実行できるようになる可能性があります。チップにプロセッサを追加すると、トランジスタ数が増加します。)
より多くのトランジスタを使用可能にすることで、コンピューターアーキテクトはISAにソフトウェアで認識できるレジスタを増やすことができ、レジスタアクセスよりも遅くなり、ある程度の間接性を伴うメモリアクセスの頻度を減らす可能性があります(たとえば、スタックにオフセットを追加するポインター)レイテンシーが増加します。
システム内ではなく、チップ上のトランジスタの数を増やす統合は、通信遅延を減らし、帯域幅を増やし、明らかにパフォーマンスの向上を可能にします。(消費電力の削減もあり、これはパフォーマンスの向上につながる可能性があります。)
命令実行のレベルでも、トランジスタを追加するとパフォーマンスが向上します。たとえば、キャリー選択加算器は、下位ビットからのキャリーインの異なる仮定で上位ビットを2回並列に追加し、下位ビットからのキャリーアウトが利用可能な場合に上位ビットの正しい合計を選択します。リップルキャリー加算器ですが、合計を生成する際の遅延を減らします。同様に、キャリーセーブ加算器の単一行を持つ乗算器は、ダダ(またはウォレス)ツリー乗算器よりも少ないトランジスターを使用しますが(遅い)、パイプライン化することができません(したがって、別の乗算器がより早く実行を開始できるように複製する必要があります)乗算が進行中でした)。
上記は使い果たされるかもしれませんが、網羅的ではありません!