中央処理ユニット
基本的なユニプロセッサCPUコンピュータのブロック図。 黒い線はデータフローを示し、赤い線は制御フローを示し、矢印はフローの方向を示します。
CPUの回路にハードワイヤリングされた命令セットと呼ばれる実行できる基本操作のセットです。 このような操作は、例えば、二つの数字を加算または減算する、二つの数字を比較する、またはプログラムの別の部分にジャンプすることを含むことが, 各基本操作は機械語オペコードとして知られているビットの特定の組合せによって表される;機械語プログラムの命令を実行している間、CPUはオペコードを”解読”することによってどの操作を実行するかを決定する。 完全な機械語命令は、オペコードと、多くの場合、操作の引数を指定する追加のビット(たとえば、加算操作の場合に加算される数値)で構成されます。 複雑さのスケールを上げると、機械語プログラムは、CPUが実行する機械語命令の集合です。,
各命令の実際の数学的演算は、算術論理ユニットまたはALUとして知られるCPUプロセッサ内の組み合わせ論理回路によって実行される。 一般に、CPUは命令をメモリからフェッチし、そのALUを使用して操作を実行し、その結果をメモリに格納することによって命令を実行します。, 整数演算命令や論理演算命令の他にも、メモリからデータをロードして格納する命令、分岐命令、CPUの浮動小数点ユニット(FPU)によって実行される浮動小数点数に対する数学演算命令など、さまざまな機械命令が存在する。
Control unitEdit
コントロールユニット(CU)は、プロセッサの動作を指示するCPUのコンポーネントです。, これは、コンピュータのメモリ、算術および論理ユニット、および入出力装置に、プロセッサに送信された命令にどのように応答するかを指示します。
タイミングおよび制御信号を提供することにより、他のユニットの動作を指示する。 ほとんどのコンピュータ資源の管理は、CU. これは、CPUと他のデバイス間のデータの流れを指示します。 ジョン-フォン-ノイマンの制御ユニットの一部としてのvon Neumannます。, 現代のコンピュータ設計では、コントロールユニットは、典型的には、その導入以来、その全体的な役割と動作が変わらないCPUの内部部分である。
算術論理ユニット編集
ALUとその入出力信号の記号表現
算術論理ユニット(ALU)は、整数演算とビットごとの論理演算を行うプロセッサ内のデジタル回路です。, ALUへの入力は、操作されるべきデータワード(オペランドと呼ばれる)、以前の操作からのステータス情報、およびどの操作を実行するかを示す制御部からのコード 実行される命令に応じて、オペランドは内部CPUレジスタまたは外部メモリから来るか、ALU自体によって生成される定数である可能性があります。
すべての入力信号が安定してALU回路を通って伝搬されると、実行された動作の結果がALUの出力に現れます。, 結果は、レジスタまたはメモリに格納できるデータワードと、通常、この目的のために予約された特別な内部CPUレジスタに格納されるステータス情報の両方
Address generation unitEdit
Address generation unit(AGU)は、アドレス計算ユニット(ACU)とも呼ばれ、CPUがメインメモリにアクセスするために使用するアドレスを計算するCPU内の実行ユニットである。, 他のCPUと並列に動作する別の回路でアドレス計算を処理することにより、さまざまな機械命令を実行するために必要なCPUサイクル数を削減し、パフォーマンスを向上させることができます。
さまざまな操作を実行する場合、Cpuはメモリからデータを取得するために必要なメモリアドレスを計算する必要があります。, これらのアドレス生成計算には、加算、減算、モジュロ演算、ビットシフトなど、さまざまな整数演算が含まれます。 多くの場合、メモリアドレスの計算には複数の汎用機械命令が必要であり、必ずしもデコードして迅速に実行するとは限りません。 AGUをCPU設計に組み込むことにより、AGUを使用する特殊な命令を導入することにより、他のCPUからさまざまなアドレス生成計算をオフロードでき、多くの場合、単一のCPUサイクルで迅速に実行することができます。,
AGUの機能は、特定のCPUとそのアーキテクチャに依存します。 したがって、Aguの中には、より多くのアドレス計算操作を実装して公開するものもあれば、複数のオペランドを一度に操作できるより高度な特殊命 さらに、いくつかのCPUアーキテクチャには複数のAguが含まれているため、複数のアドレス計算操作を同時に実行できるため、高度なCPU設計のスーパースカラー性, 例えば、IntelはSandy BridgeとHaswellマイクロアーキテクチャに複数のAguを組み込み、複数のメモリアクセス命令を並列に実行できるようにすることによってCPUメモリサブシステムの帯域幅を増加させる。
Memory management unit(MMU)Edit
ほとんどのハイエンドマイクロプロセッサ(デスクトップ、ラップトップ、サーバーコンピュータ)には、メモリ管理ユニットがあり、論理アドレスを物理RAMアドレスに変換し、メモリ保護とページング機能を提供し、仮想メモリに役立ちます。, より単純なプロセッサ、特にマイクロコントローラは、通常、MMUを含まない。
CacheEdit
CPUキャッシュは、メインメモリからデータにアクセスするための平均コスト(時間またはエネルギー)を削減するために、コンピュータの中央処理装置(CPU) キャッシュは、頻繁に使用されるメインメモリの場所からのデータのコピーを格納するプロセッサコアに近い、より小さく高速なメモリです。 データキャッシュは通常、より多くのキャッシュレベル(L1、L2、L3、L4など)の階層として編成されています。,).
すべての最新の(高速)Cpu(特殊な例外はほとんどありません)には、複数のレベルのCPUキャッシュがあります。 後のレベル1のキャッシュとは異なり、L1d(データ用)とL1i(命令用)に分割されていなかった。 ほぼすべての現在のCpuキャッシュて分割L1ます。 また、L2キャッシュもあり、大型プロセッサの場合はL3キャッシュもあります。 L2キャッシュは通常は分割されず、既に分割されているL1キャッシュの共通リポジトリとして機能します。 マルチコアプロセッサのすべてのコアには専用のL2キャッシュがあり、通常はコア間で共有されません。, L3キャッシュと上位レベルのキャッシュは、コア間で共有され、分割されません。 L4キャッシュは現在まれであり、通常、静的ランダムアクセスメモリ(SRAM)ではなく、別のダイまたはチップ上の動的ランダムアクセスメモリ(DRAM)上にあります。 これは歴史的にL1の場合でもありましたが、より大きなチップは最後のレベルを除いて、それと一般的にすべてのキャッシュレベルの統合を可能 各エレベルのキャッシュ大きくなる傾向があり、最適化することでは異なります。,
ほとんどのCpuが持つメモリ管理ユニット(MMU)の一部であるtranslation lookaside buffer(TLB)など、他のタイプのキャッシュが存在します(上記の最も重要なキャッシュの”キャッシュサイズ”にカウントされません)。
キャッシュは一般的に4、8、16などの累乗でサイズが決まります。 IBM z13には96KiB L1命令キャッシュがありますが、KibまたはMiB(より大きなL1以外の場合)サイズ。
Clock rateEdit
ほとんどのCpuは同期回路であり、クロック信号を使用して順次動作をペースアップすることを意味します。, クロック信号は、周期的な方形波の形で毎秒一貫した数のパルスを生成する外部発振回路によって生成されます。 クロックパルスの周波数は、CPUが命令を実行する速度を決定し、その結果、クロックが速くなればなるほど、CPUが毎秒実行する命令が多くなります。
CPUの適切な動作を保証するために、クロック期間は、すべての信号がCPUを介して伝播(移動)するために必要な最大時間よりも長くなります。, クロック周期をワーストケースの伝搬遅延をはるかに上回る値に設定することで、CPU全体と、クロック信号の立ち上がりと立ち下がりの”エッジ”の周りでデータを移動する方法を設計することができます。 これには、設計の観点からも部品数の観点からも、CPUを大幅に簡素化できるという利点があります。 ただし、一部の部分がはるかに高速であっても、CPU全体が最も遅い要素を待たなければならないという欠点もあります。 この制限は、CPUの並列処理を増やすさまざまな方法によって大きく補われています(下記参照)。,
ただし、アーキテクチャの改善だけでは、グローバル同期Cpuの欠点をすべて解決するわけではありません。 例えば、クロック信号は、他の任意の電気信号の遅延の影響を受ける。 ますます複雑になるCpuのクロックレートが高くなると、ユニット全体でクロック信号を位相(同期)に保つことがより困難になります。 これにより、多くの現代のCpuは、CPUの誤動作を引き起こすのに十分なほど大きな単一の信号を遅らせるのを避けるために、複数の同一のクロック信号, もう一つの大きな問題は、クロックレートが劇的に増加するにつれて、CPUによって放散される熱の量です。 て、常に変化するクロックの原因の多くの部品に切り替えを問わず使用される。 一般に、スイッチングしているコンポーネントは、静的状態の要素よりも多くのエネルギーを使用し したがって、クロックレートが増加するにつれて、エネルギー消費も増加し、CPUはCPU冷却ソリューションの形でより多くの放熱を必要とします。,
不要な部品の切り替えを扱う一つの方法は、クロックゲーティングと呼ばれ、不要な部品へのクロック信号をオフにする(効果的に無効にする)ことを しかし、これはしばしば実装が困難であるとみなされるため、非常に低電力設計の外では一般的な使用は見られません。 広範なクロックゲーティングを使用する最近の注目すべきCPU設計の一つは、Xbox360で使用されるIBM PowerPCベースのキセノンであり、そのようにして、Xbox360の電力要, グローバルクロック信号に関するいくつかの問題に対処する別の方法は、クロック信号を完全に除去することである。 グローバルクロック信号を除去することにより、設計プロセスは多くの点でかなり複雑になりますが、非同期(またはクロックレス)設計では、同様の同期設計と比較して消費電力と熱放散に顕著な利点があります。 やや珍しいが、非同期Cpu全体がグローバルクロック信号を使用せずに構築されている。 これの二つの注目すべき例は、ARM準拠のAMULETとMIPS R3000互換のMiniMIPSです。,
クロック信号を完全に除去するのではなく、非同期Aluをスーパースカラーパイプライン処理と組み合わせて使用して算術パフォーマンスの向上を達成するなど、CPUの設計によっては、デバイスの特定の部分を非同期にすることができます。 完全に非同期設計が同期設計よりも同等のレベルまたはそれ以上のレベルで実行できるかどうかは完全には明らかではありませんが、少なくとも, これに併せて優れた消費電力および放熱特性として非常に適した組み込みコンピュータ
Voltage regulator moduleEdit
多くの現代のCpuには、CPU回路へのオンデマンド電圧供給を調整するダイ統合電力管理モジュールがあり、性能と消費電力のバランスを保つことができます。
整数rangeEdit
すべてのCPUは特定の方法で数値を表します。, 例えば、いくつかの初期のデジタルコンピュータは、おなじみの十進数(底10)の数字システム値として数を表し、他のものは、三項(底三)のようなより珍しい表 ほぼすべての現代のCpuはバイナリ形式で数値を表し、各桁は”高”または”低”電圧のようないくつかの二値の物理量で表されます。
小数点値40のバイナリエンコードされた表現を含む六ビットワード。 現代のCpuのほとんどは、8、16、32または64ビットのような二つの累乗であるワードサイズを採用しています。,
数値表現に関連するのは、CPUが表すことができる整数のサイズと精度です。 バイナリCPUの場合、これはCPUが一つの操作で処理できるビット数(バイナリエンコードされた整数の有効桁数)によって測定され、一般にワードサイズ、ビット幅、データパス幅、整数精度、または整数サイズと呼ばれる。 CPUの整数サイズによって、直接操作できる整数値の範囲が決まります。, たとえば、8ビットCPUは、256(28)離散整数値の範囲を持つ八ビットで表される整数を直接操作できます。
整数範囲は、CPUが直接アドレス指定できるメモリ位置の数にも影響する可能性があります(アドレスは特定のメモリ位置を表す整数値です)。 たとえば、バイナリCPUが32ビットを使用してメモリアドレスを表す場合、232のメモリ位置を直接アドレス指定できます。 この制限を回避するため、およびその他のさまざまな理由で、Cpuによっては追加のメモリに対処できるメカニズム(バンクスイッチングなど)を使用,
ワードサイズが大きいCpuは、より多くの回路を必要とし、その結果、物理的に大きくなり、より多くのコストがかかり、より多くの電力を消費する(したがっ その結果、より小さな4ビットまたは8ビットのマイクロコントローラは、はるかに大きなワードサイズ(16、32、64、128ビットなど)のCpuが利用可能であっても、現代のアプリケーションで一般的に使用されています。 ただし、より高いパフォーマンスが必要な場合は、より大きなワードサイズ(より大きなデータ範囲とアドレス空間)の利点が欠点を上回る可能性がありま CPUは内部データパスをワードサイズよりも短くして、サイズとコストを削減できます。, 例えば、IBM System/360命令セットが32ビット命令セットであっても、System/360モデル30とモデル40は算術論理ユニットに8ビットのデータパスを持っていたため、32ビットの加算はオペランドの8ビットごとに四つのサイクルを必要とし、Motorola68000シリーズ命令セットが32ビット命令セットであっても、Motorola68000とMotorola68010は算術論理ユニットに16ビットのデータパスを持っていたため、32ビットの加算は二つのサイクルを必要とした。,
低いビット長と高いビット長の両方によってもたらされる利点のいくつかを得るために、多くの命令セットは整数データと浮動小数点データに対 たとえば、IBM System/360命令セットは主に32ビットでしたが、浮動小数点数の精度と範囲を高めるために64ビット浮動小数点値をサポートしました。, System/360モデル65には、小数および固定小数点の二進演算用の8ビット加算器と浮動小数点演算用の60ビット加算器がありました。 後の多くのCPU設計では、特にプロセッサが整数と浮動小数点の機能の合理的なバランスが必要な汎用使用のためのものである場合、同様の混合ビット幅を使用しています。,
ParallelismEdit
サブスカラー CPUのモデルであり、三つの命令を完了するのに十五クロックサイクルを要する。
前のセクションで提供されるCPUの基本動作の説明では、CPUが取ることができる最も簡単な形式について説明している。 このタイプのCPUは、通常サブスカラーと呼ばれ、クロックサイクルあたり一つの命令よりも小さい(IPC<1)一度に一つまたは二つのデータに対して一つの命令を動作させ、実行する。,
このプロセスは、サブスカラー Cpuに固有の非効率性を引き起こします。 一度に一つの命令しか実行されないので、CPU全体は次の命令に進む前にその命令が完了するのを待たなければならない。 その結果、subscalar CPUは、実行を完了するために複数のクロックサイクルを要する命令に対して”ハングアップ”されます。 一つのパスがハングアップされるのではなく、二つのパスがハングアップされ、未使用のトランジスタの数が増えます。, CPUの実行リソースが一度に一つの命令だけで動作できるこの設計は、スカラー性能(クロックサイクルあたり1つの命令、IPC=1)にしか達することができない。 ただし、パフォーマンスはほぼ常にサブスカラーです(クロックサイクルあたり一つの命令よりも小さく、IPC<1)。
スカラーとより良いパフォーマンスを達成するための試みは、CPUがより直線的に、より並列に動作するようにするさまざまな設計手法をもたらしました。, Cpuにおける並列処理については、一般的にこれらの設計手法を分類するために使用されます。
- 命令レベル並列性(ILP)は、CPU内で命令が実行される速度を高める(すなわち、オンダイ実行リソースの使用を増やす)。
- タスクレベル並列性(TLP)は、CPUが同時に実行できるスレッドまたはプロセスの数を増やすことを目的としています。,
それぞれの方法論は、それらが実装される方法と、アプリケーションのCPUパフォーマンスを向上させるための相対的な有効性の両方で異なります。
命令レベルparallelismEdit
基本的な五段パイプライン。 最高の場合のシナリオでは、このパイプラインを維持できる完了率の指導に当たりの時計サイクルです。,
並列性を高めるために使用される最も簡単な方法の一つは、前の命令の実行が終了する前に命令のフェッチとデコードの最初のステップを これは命令パイプライン処理として知られている最も単純な形式であり、ほぼすべての最新の汎用Cpuで使用されています。 パイプライン化により、実行経路を個別の段階に分割することにより、任意の時点で複数の命令を実行できます。, この分離は、実行パイプラインを終了して廃止されるまで、各段階で命令がより完全になる組立ラインと比較することができます。
しかし、パイプライン処理では、次の操作を完了するために前の操作の結果が必要な状況が発生する可能性があります。 これに対処するには、これらの種類の条件をチェックし、これが発生した場合は命令パイプラインの一部を遅延させるようにさらに注意する必要が, 当然のことながら、これを達成するには追加の回路が必要なため、パイプライン化されたプロセッサはサブスカラーのものよりも複雑です(それほど大 パイプライン化されたプロセッサは、パイプラインストール(ステージ内で複数のクロックサイクルを費やす命令)によってのみ阻害される。
単純なスーパースカラーパイプライン。 一度に二つの命令をフェッチしてディスパッチすることにより、クロックサイクルあたり最大二つの命令を完了できます。,
命令パイプライン化の考え方をさらに改善することにより、CPUコンポーネントのアイドル時間をさらに短縮する方法が開発されました。 スーパースカラーと呼ばれる設計には、長い命令パイプラインと、ロードストアユニット、算術論理ユニット、浮動小数点ユニット、アドレス生成単位などの複数の同一の実行ユニットが含まれます。 スーパースカラーパイプラインでは、複数の命令が読み取られてディスパッチャに渡され、命令を並列(同時に)実行できるかどうかが決定されます。, そうであれば、それらは利用可能な実行ユニットにディスパッチされ、複数の命令を同時に実行できるようになります。 一般に、スーパースカラーCPUが待機中の実行ユニットに同時にディスパッチできる命令が多いほど、与えられたサイクルでより多くの命令が完了する。
スーパースカラー CPUアーキテクチャの設計の難しさのほとんどは、効果的なディスパッチャを作成することにあります。, ディスパッチャーは、命令を並列に実行できるかどうかを迅速かつ正確に判断し、できるだけ多くの実行ユニットをビジー状態に保つようにディスパッチできる必要があります。 これには、命令パイプラインができるだけ頻繁に満たされることが必要であり、かなりの量のCPUキャッシュのためのスーパースカラーアーキテクチャ また、高レベルのパフォーマンスを維持するためには、分岐予測、投機的実行、レジスタの名前変更、順不同実行、トランザクションメモリなどのハザード回, 条件付き命令がどの分岐(またはパス)を取るかを予測しようとすることによって、CPUは条件付き命令が完了するまでパイプライン全体が待機する 投機的実行できる立場となることがあ控えめな性能が実行の部分のコードがないことが必要な条件の操作が完了します。 アウトオブオーダー実行は、データ依存関係に起因する遅延を減らすために命令が実行される順序を幾分並べ替えます。, また、単一の命令ストリームの場合、複数のデータストリーム(同じタイプのデータを多く処理する必要がある場合)では、現代のプロセッサはパイプラインの一部を無効にすることができるため、単一の命令が何度も実行されると、CPUはフェッチとデコードのフェーズをスキップし、特にビデオ作成ソフトウェアや写真処理などの単調なプログラムエンジンでは、パフォーマンスが大幅に向上します。,
CPUの一部がスーパースカラーであり、一部がスーパースカラーでない場合、そうでない部分はスケジューリングストールによるパフォーマンスペナルティを受ける。 Intel P5Pentiumはクロックサイクルごとに一つの命令を受け入れることができる二つのスーパースカラーaluを持っていたが、そのFPUはクロックサイクルごとに一つの命令を受け入れ したがって、P5は整数スーパースカラーであったが、浮動小数点スーパースカラーではなかった。 インテルのp5アーキテクチャの後継であるP6は、浮動小数点機能にスーパースカラー機能を追加したため、浮動小数点命令性能が大幅に向上しました。,
単純なパイプライン処理とスーパースカラー設計の両方で、単一のプロセッサがクロックサイクルあたり一つの命令を上回るレートで命令の実行を完了できるようにすることにより、CPUのILPを増加させる。 ほとんどの現代のCPU設計は、少なくともややスーパースカラーであり、最後の十年で設計されたほぼすべての汎用Cpuはスーパースカラーです。 後年、高ILPコンピュータの設計における重点のいくつかは、CPUのハードウェアから、そのソフトウェアインタフェース、または命令セットアーキテクチャ(ISA)に移, VLIW(very long instruction word)の戦略により、一部のILPがソフトウェアによって直接暗示されるようになり、ILPを高めるためにCPUが実行する必要のある作業量が減り、それによって設計の複雑さが減ります。
タスクレベルparallelismEdit
パフォーマンスを達成する別の戦略は、複数のスレッドまたはプロセスを並列 この研究分野は並列計算として知られています。 Flynnの分類法では、この戦略はmultiple instruction stream、multiple data stream(MIMD)として知られています。,
この目的のために使用された技術の一つは、マルチプロセッシング(MP)でした。 この技術の初期のフレーバーは対称マルチプロセッシング(SMP)として知られており、少数のCpuがメモリシステムの一貫性のあるビューを共有しています。 このスキームでは、各CPUは、メモリの常に最新のビューを維持するために追加のハードウェアを持っています。 メモリの古いビューを回避することにより、Cpuは同じプログラム上で協力し、プログラムをあるCPUから別のCPUに移行できます。, 1990年代には、numa(non-uniform memory access)やディレクトリベースのコヒーレンスプロトコルなどのスキームが導入された。SMPシステムは少数のCpuに限定されているが、NUMAシステムは数千のプロセッサで構築されている。 当初、マルチプロセッシングは、プロセッサ間の相互接続を実装するために、複数のディスクリートCpuとボードを使用し, プロセッサとその相互接続がすべてシングルチップに実装されている場合、この技術はチップレベルマルチプロセッシング(CMP)と呼ばれ、シングルチップはマルチコアプロセッサと呼ばれる。
後に、単一のプログラムでより細かい粒度の並列処理が存在することが認識されました。 単一のプログラムには、別々にまたは並列に実行できる複数のスレッド(または関数)がある場合があります。 この技術の初期の例のいくつかは、計算スレッドとは別のスレッドとして直接メモリアクセスなどの入出力処理を実装していました。, この技術へのより一般的なアプローチは、システムが複数の計算スレッドを並列に実行するように設計された1970年代に導入されました。 この技術は、マルチスレッド(MT)として知られています。 MPの場合はCPU全体ではなく、MTをサポートするためにCPU内の少数のコンポーネントのみが複製されるため、このアプローチはマルチプロセッシングよりもコスト効率が高いと考えられています。 MTでは,実行ユニットとキャッシュを含むメモリシステムは複数のスレッド間で共有される。, MTの欠点は、マルチスレッドのハードウェアサポートがMPよりもソフトウェアに見えることであり、オペレーティングシステムのようなスーパーバイザソフト 実装されたMTの一つのタイプは、一時的なマルチスレッドとして知られており、外部メモリからデータが戻るのを待って停止するまで一つのスレッドが このスキームでは、CPUはすぐに実行する準備ができている別のスレッドにコンテキストスイッチを行い、スイッチはUltraSPARC T1のようなCPUクロックサイクルで行われることが多い。, MTの別のタイプは、複数のスレッドからの命令が一つのCPUクロックサイクル内で並列に実行される同時マルチスレッドです。
1970年代から2000年代初頭までの数十年にわたり、高性能な汎用Cpuの設計に焦点を当てていたのは、パイプライン処理、キャッシュ、スーパースカラー実行、アウトオブオーダー実行などの技術を通じて高いILPを達成することであった。 この傾向は、Intel Pentium4のような大きな電力を消費するCpuで頂点に達しました。, 2000年代初頭までに、CPU設計者は、CPU動作周波数とメインメモリ動作周波数の間の格差が拡大していること、およびより難解なILP技術によるCPU消費電力の増大により、ILP技術からのより高い性能を達成することができなくなった。
CPU設計者は、トランザクション処理などの商用コンピューティング市場からアイデアを借りて、スループットコンピューティングとも呼ばれる複数のプログラム,
この強調の逆転は、デュアルでよりコアなプロセッサ設計の普及、特にIntelのより少ないスーパースカラー P6アーキテクチャに似た新しい設計によって証明 X86-64OpteronおよびAthlon64X2、SPARC UltraSPARC T1、IBM POWER4およびPOWER5、Xbox360のトリプルコアPowerPCデザイン、PlayStation3の7コアセルマイクロプロセッサなどのいくつかのビデオゲームコンソールCpuを含むいくつかのプロセッサファミリの後期のデザインはCMPを示している。,
Data parallelismEdit
あまり一般的ではないがますます重要なプロセッサのパラダイム(そして実際には、一般的にコンピューティング)は、データの並列処理を扱っている。 先に説明したプロセッサはすべて、ある種のスカラデバイスと呼ばれます。 名前が示すように、ベクトルプロセッサは、一つの命令のコンテキストで複数のデータを処理します。 これは、すべての命令に対して一つのデータを処理するスカラプロセッサとは対照的です。, Flynnの分類法を使用して、データを扱うこれら二つのスキームは、一般に、単一命令ストリーム、複数のデータストリーム(SIMD)および単一命令ストリーム、単一データストリーム(SISD)と呼ばれる。 データのベクトルを扱うプロセッサを作成する際の優れたユーティリティは、大きなデータセットに対して同じ操作(例えば、合計または内積)を実行する必 これらのタイプのタスクのいくつかの古典的な例には、マルチメディアアプリケーション(画像、ビデオ、音声)、および多くのタイプの科学および工, スカラプロセッサは、データセット内の各命令と値をフェッチ、デコード、実行するプロセス全体を完了する必要がありますが、ベクトルプロセッサは、一つの命令で比較的大きなデータセットに対して単一の操作を実行 この動することで、申請が必要と多くのステップを応用し、ひとつの作業の大型セットのデータです。
Cray-1のような初期のベクトルプロセッサのほとんどは、科学的研究と暗号アプリケーションにほぼ独占的に関連していました。, しかし、マルチメディアがデジタルメディアに大きく移行するにつれて、汎用プロセッサにおける何らかの形態のSIMDの必要性が重要になってき 汎用プロセッサにおいて浮動小数点ユニットを含めることが一般的になり始めた直後に、汎用プロセッサにおいてもSIMD実行ユニットの仕様と実装が現れるようになった。 HPのMultimedia Acceleration eXtensions(MAX)やIntelのMMXなど、これらの初期のSIMD仕様のいくつかは整数のみでした。, SIMDの恩恵を受けるアプリケーションの多くは主に浮動小数点数を扱うため、これは一部のソフトウェア開発者にとって重大な障害であることが分 徐々に、開発者はこれらの初期の設計を洗練し、一般的な現代のSIMD仕様のいくつかにリメイクしました。 いくつかの注目すべき近代的な例は、IntelのストリーミングSIMD拡張(SSE)とPowerPC関連のAltiVec(VMXとしても知られています)が含まれます。