トランジスタが増えると処理能力が増えるのはなぜですか?


43

ウィキペディアによると、処理能力はムーアの法則と強く関連しています。

http://en.wikipedia.org/wiki/Moore's_law

集積回路に安価に配置できるトランジスタの数は、約2年ごとに2倍になりました。この傾向は半世紀以上にわたって続いており、2015年以降まで停止することはないと思われます。多くのデジタル電子機器の機能は、処理速度、メモリ容量、センサー、さらにはデジタルカメラのピクセルの数とサイズでさえ、ムーアの法則と密接に関連しています。これらはすべて(おおよそ)指数関数的に改善されています。

コンピューターアーキテクチャのバックグラウンドを持っている人として、CPUにトランジスタを追加すると、最終的には命令がほぼ順番に読み取られ/実行されるため、CPUの消費電力が増加する理由がわかりません。誰が私が欠けている部分を説明できますか?


10
より多くのトランジスタ=より多くの並列性
トビージャフィー

2
プロセッサのコア数に関係なく、それは事実です。
トーマスO

1
はい。より多くのトランジスタは、より多くの並列実行ユニットを配置できることを意味します。より大きなキャッシュ。より深いパイプライン。
カズ

1
キャッシュは大きなものです。キャッシュ専用のシリコン不動産の割合は増加していると思います。最新のプロセッサのパフォーマンスのほとんどはキャッシングに起因し、キャッシングはローカリティがある場合にのみ機能しますが、キャッシュが大きいほど、ローカリティの要件は緩和されます(より奇抜なメモリアクセスパターンを備えたより大きなアプリケーションは依然として高速化されます)。
カズ

2
単なる乗数について考えてください。十分なトランジスタを使用すると、フルルックアップテーブルを使用して、1ステップで乗算全体を実行できます。トランジスタが少ない場合、繰り返し追加するなどの作業を行う必要があります。
デビッドシュワルツ

回答:


29

より多くの電力を提供する多くのものは、それらを構築するためにより多くのトランジスタを必要とします。より広いバスは、ほぼすべてのプロセッサコンポーネントでトランジスタカウントを拡大します。高速キャッシュでは、キャッシュサイズに応じてトランジスタが追加されます。パイプラインを長くする場合、ステージとより複雑な制御ユニットを追加する必要があります。パイプラインのボトルネックを軽減するために実行ユニットを追加すると、それぞれにトランジスタが必要になり、実行ユニットに割り当てられた状態を維持するための制御により、さらにトランジスタが追加されます。

問題は、電子回路では、すべてが並行し発生することです。ソフトウェアの世界では、デフォルトはシーケンシャルなものであり、ソフトウェア設計者はハードウェアの並列性を活用できるようにソフトウェアに並列処理を組み込むために苦労します。並列処理とは、同時により多くのものが発生することを意味するため、おおよそ速度に相当します。並行して実行できる処理が多いほど、処理を高速化できます。唯一の本当の並列処理は、ジョブにトランジスタを追加したときに得られるものです。


19

最初の命令は、非VLIW ISAでも「順次実行」されるとは限りません。実行は順次に表示されるだけで済みます。順序付けられたスーパースカラー実装は、複数の命令を別の命令と並行して実行できます。これを効果的に行うには、命令をデコードするためのハードウェアを増やす(拡張する)必要があり、並列に実行される命令のデータ非依存性を確保するためにハードウェアを追加する必要があり、実行リソースを増やす必要があり、レジスタファイルポートの数は一般に増加します。これらはすべてトランジスタを追加します。

データの依存関係がなければ、後の命令を前の命令よりも前に実行できるアウトオブオーダー実装では、追加のハードウェアを使用してデータが利用可能になり次第命令のスケジューリングを処理し、マッピング用の名前変更レジスタとハードウェアを追加します。書き込み後の書き込みおよび書き込み後の書き込みの危険を回避するために、それらを割り当て、解放します(より多くのトランジスター)。順不同の実行により、プロセッサはストールを回避できます。

アウトオブオーダープロセッサでロードとストアを並べ替えるには、プログラム順序の早いストアが結果を同じアドレスの遅いロードに転送することを保証する必要があります。これは、ストアがメモリ(キャッシュ)にコミットされるまで、アドレス比較ロジックとストアのアドレス(およびサイズ)のストレージ(およびデータのストレージ)を意味します。(メモリ整合性モデルの脆弱性が低いISAの場合、他のプロセッサ(より多くのトランジスタ)からのストアに対してロードが適切に順序付けられていることを確認する必要もあります。)

パイプライン処理により、制御とバッファリングのオーバーヘッドが追加され、命令処理のさまざまな部分でロジックを再利用できなくなりますが、命令を処理するさまざまな部分をさまざまな命令で時間的にオーバーラップできます。

パイプライン処理とスーパースカラーの実行により、制御ハザード(条件分岐とジャンプ)の影響が増加します。パイプライン(および順不同の実行)は、無条件ジャンプのターゲットの可用性を遅らせる可能性があるため、ターゲット(および条件分岐の方向)を予測するハードウェアを追加すると、命令のフェッチが実行部分を待たずに続行できます必要なデータを利用可能にするプロセッサ。より正確な予測子は、より多くのトランジスタを必要とする傾向があります。

アウトオブオーダープロセッサの場合、先行するすべてのストアのアドレスが計算される前にメモリからのロードを実行できるようにすることが望ましい場合があります。

キャッシュを使用すると、待ち時間を短縮し、メモリアクセスの帯域幅を増やすことができますが、データを保存してタグを保存する(およびタグを要求されたアドレスと比較する)トランジスタを追加できます。交換ポリシーを実装するには、追加のハードウェアも必要です。ハードウェアのプリフェッチにより、トランジスタが追加されます。

ソフトウェアではなくハードウェアに機能を実装すると、パフォーマンスを向上させることができます(より多くのトランジスタが必要になります)。たとえば、TLB管理、乗算または浮動小数点演算などの複雑な演算、カウントの先行ゼロなどの特殊演算。(命令を追加すると、命令デコードの複雑さが増し、通常は実行の複雑さが増します。たとえば、実行ハードウェアのどの部分を使用するかを制御するためです。)

SIMD /ベクトル演算は、命令ごとに実行される作業量を増やしますが、より多くのデータストレージ(より広いレジスタ)を必要とし、通常、より多くの実行リソースを使用します。

(投機的マルチスレッドにより、複数のプロセッサが単一のスレッドプログラムをより高速に実行できるようになる可能性があります。チップにプロセッサを追加すると、トランジスタ数が増加します。)

より多くのトランジスタを使用可能にすることで、コンピューターアーキテクトはISAにソフトウェアで認識できるレジスタを増やすことができ、レジスタアクセスよりも遅くなり、ある程度の間接性を伴うメモリアクセスの頻度を減らす可能性があります(たとえば、スタックにオフセットを追加するポインター)レイテンシーが増加します。

システム内ではなく、チップ上のトランジスタの数を増やす統合は、通信遅延を減らし、帯域幅を増やし、明らかにパフォーマンスの向上を可能にします。(消費電力の削減もあり、これはパフォーマンスの向上につながる可能性があります。)

命令実行のレベルでも、トランジスタを追加するとパフォーマンスが向上します。たとえば、キャリー選択加算器は、下位ビットからのキャリーインの異なる仮定で上位ビットを2回並列に追加し、下位ビットからのキャリーアウトが利用可能な場合に上位ビットの正しい合計を選択します。リップルキャリー加算器ですが、合計を生成する際の遅延を減らします。同様に、キャリーセーブ加算器の単一行を持つ乗算器は、ダダ(またはウォレス)ツリー乗算器よりも少ないトランジスターを使用しますが(遅い)、パイプライン化することができません(したがって、別の乗算器がより早く実行を開始できるように複製する必要があります)乗算が進行中でした)。

上記は使い果たされるかもしれませんが、網羅的ではありません!


2
新しい男からの素晴らしい答え!
コナーウルフ

12

トランジスタの数は必ずしも処理能力の増加と相関するわけではありませんが、トランジスタの数が増えると、プロセッサは以前よりも複雑な命令を実行できるようになります。たとえば、SSEを搭載したプロセッサは、追加のトランジスタを使用してこれらの複雑な命令を実装します(たとえば、1サイクルで多くの数値を追加します)。


2
アラン・ケイは、Xerox PARCでSmalltalkに取り組んで以来、コンピューターがトランジスター倍増が示すほど速くないため、アーキテクチャとソフトウェアの非効率性が原因で18年間のトランジスター倍増を失ったと計算しました。
jpc

5

別の要因:特定の領域により多くのトランジスタを詰め込むと、それらは小さくなり、より速くなります。


トランジスタが近づくにつれて、リーク電流の増加など、他の望ましくない効果が得られるため、パフォーマンスと低電力のトレードオフになります。ほとんどのメーカーはパフォーマンスを追求しているようです。
トーマスO

4

マイクロプロセッサは近年著しく進歩しており、長いパイプライン、述語分岐、オンチップキャッシュなどがすべて、プロセッサに関連する複雑さを増しています。

CPU処理、フェッチ、デコード、ALU、書き込みの基本は同じですが、速度を上げるために、より長いパイプラインが使用されます。長いピペロンは、連続的なコード実行のパフォーマンスを向上させますが、コード分岐がパフォーマンスを損なうと、ヒット時間が長くなります。対策、予測分岐。予測分岐は企業秘密であり、Intelは通常、その完全な動作を開示せず、単にCPUのパフォーマンスを可能な限り高く保つために使用します。

キャッシュメモリはRAMよりもはるかに高速ですが、RAMからキャッシュに移動し、キャッシュからRAMに戻すものは何ですか?これもまた独自のものですが、実装するにはトランジスタが必要です。

そのため、余分なトランジスタは、長いパイプライン、予測分岐アルゴリズム、キャッシュメモリ、メモリアルゴリズムなどに使用されます。

これは、マルチコアプロセッサ、および共有メモリ/リソースアクセスコントローラについては言及していません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.