コンピューティングとコンピュータサイエンスでは、プロセッサまたは処理ユニットは、通常はメモリまたはその他のデータストリームなどの外部データソースに対して演算を実行する電気部品(デジタル回路)です。 [ 1 ]この用語は、システムのメインプロセッサである中央処理装置(CPU)を指すためによく使用されます。グラフィックス処理ユニット(GPU)、量子処理ユニット(QPU)、デジタル信号プロセッサ(DSP)などの他の特殊なプロセッサを指すこともあります。プロセッサの設計と開発は、機能要件(実行しなければならない演算)と非機能要件(物理的およびパフォーマンス上の制約)の両方を定義する必要があるため、複雑で時間がかかります。[ 2 ]通常、半導体材料を使用した集積回路としてデジタルデータに対して動作するように構築され、論理ゲートに組織化されたトランジスタを含み、さらにIPブロックやコアなどのセクションに組織化され、それらを接続できます。
「プロセッサ」という言葉は、少なくとも1950年代初頭からコンピュータに適用されてきた。[ 3 ]初期のコンピュータは、複雑な真空管アレイを使用していた。これらの初期のコンピュータは、大型で高価で、電力消費量も多かったため、大規模な組織での使用に限られていた。マンチェスター・マーク1は、プログラムを保存できる最初の汎用コンピュータとして、現代的な意味での初期のプロセッサの1つである。[ 4 ]
トランジスタの発明は、コンピュータ業界に急速な革新をもたらした。[ 5 ]トランジスタによってコンピュータプロセッサの密度と電力効率が向上し、コンピュータのサイズが部屋いっぱいの大きさから机の上に置けるほどに縮小した。トランジスタのサイズが縮小し、1台のコンピュータに搭載できるトランジスタの数が増えるにつれて、プロセッサの処理能力は毎年2倍に増加し始めた。これはムーアの法則として知られている。コンピュータで最初に使われたトランジスタは直径が数ミリメートルだったが、現在では最新のトランジスタは5nm未満で製造できる。[ 6 ]
トランジスタは最終的に小型化し、プロセッサ全体を数個のモノリシック集積回路(チップ)上に実装できるようになった。これらのプロセッサはマイクロプロセッサと呼ばれた。一般に入手可能な最初のシングルチップマイクロプロセッサはIntel 4004で、コンピュータに必要なすべての論理回路を1つの集積回路チップに統合したものであった。これにより、デジタル電卓やピンボールマシンなどの民生機器にコンピューティング能力がもたらされた。Intel 8008は、汎用プロセッサとして使用された最初のシングルチップマイクロプロセッサであった。現代のプロセッサもこの形式を踏襲し、外部メモリとI/Oを備えた個別パッケージのシングルチップマイクロプロセッサを使用している。
プロセッサを設計する際には、設計をハードウェアまたはソフトウェアシステムに適用する前に、非機能要件と機能要件を明確に定める必要があります。多くの機能要件は、処理チップ内で使用される一連の基本命令または共通アルゴリズムから選択されます。プロセッサ開発を支援するためにさまざまなツールが使用されていますが、複雑な要素が数多く含まれるため、設計プロセス全体は依然として時間がかかります。
プロセッサの非機能要件とは、その物質的な構成要素を指します。例えば、プロセッサのシリコン面積、ピン数、電力およびエネルギー消費量はすべて設計に影響を与えます。プロセッサの製造コストと小売価格は、これらの構成要素に影響を与えます。[ 2 ]

プロセッサの機能要件は、その操作と動作環境です。操作とは、プロセッサがメイン機能を実行するために従う一連の命令のことです。操作は、さまざまなオペランドを持つさまざまなアルゴリズムを使用して記述されます。プロセッサが実行される時間、プロセッサに接続されているメモリサブシステムのタイプ、および入出力(I/O)はすべて動作環境の例です。これらの環境は、機能要件内の操作の記述方法に影響を与えます。[ 2 ]
アルゴリズムのプロファイリングは、アルゴリズムの最適性に影響を与える重要な詳細を特定するのに役立ちます。プロトタイプコードと既存のプロセッサ設計間のプロファイリングにより、アルゴリズムの適用に関する理解が深まります。既存のプロセッサ内のアルゴリズムは通常、わずかに異なる主要機能を最適化するように構築されているため、このリファレンスで使用されているすべての操作がプロトタイプ設計で必要になるとは限りません。開発者がリファレンスのみに依存すると、最終的なオペレーティングコードが非効率になる可能性があります。[ 2 ]
プロセッサの組織アーキテクチャとは、プロセッサがタスクを完了できるようにする基本命令の順序付けられたセットを指します。特定の目標を達成するために命令を編成する方法は数多くありますが、コードの効率は異なります。カーネル操作、自動パフォーマンス推定器、またはシミュレータジェネレータを使用することで、開発者はプロセッサにとって最も効率的な組織アーキテクチャを決定できます。[ 2 ]
プロセッサの最終プロトタイプが作成されると、さまざまなハードウェアとソフトウェアに実装されます。ハードウェアの実装には、機能ブロックをハードウェア記述言語に変換したり、プロセッサチップ上に機能ブロックを配置してパフォーマンスと面積を最適化したりするなど、高レベルのモデリングが必要です。ソフトウェアの実装は、設計プロセスの中で最も難しい部分です。このプロセスでは、プロセッサがソフトウェア内で正常に動作することを妨げるハードウェアとソフトウェアの問題をデバッグする必要があります。 [ 2 ]

中央処理装置(CPU) はコンピュータの主要なプロセッサであり、プログラム命令の実行を担当します。CPU は、すべての数学演算と論理比較を実行する算術論理演算装置(ALU) と、CPU の動作を管理する制御装置(CU) という 2 つの主要コンポーネントを使用して、汎用コンピューティング タスクを実行します。 [ 7 ]ほとんどの CPU は、命令とデータが共通のメモリ空間を共有するフォン ノイマン アーキテクチャに従います。このアーキテクチャでは、CPU が最初にメモリから命令をフェッチし、CU がそれをデコードし、次に命令が実行され、最後に ALU が結果をメモリに格納するというサイクルでプログラムを実行します。[ 8 ] CPU は、マザーボードを介してメイン メモリ、ストレージ デバイス、周辺ハードウェアと密接に連携します。これらのコンポーネントが連携することで、CPU はコンピュータを実行する命令を実行できるようになり、家電、自動車、データ分析、仮想化などの分野で不可欠なものとなっています。[ 9 ]

グラフィックス処理ユニット(GPU)は、ラップトップ、PC、スマートフォン、ゲーム機、スーパーコンピュータ、ロボット、POS(販売時点情報管理)端末、HPC、ビジュアライゼーション、ハイエンドゲームなど、さまざまなデバイスに搭載されているコンポーネントです。[ 10 ]これらは高度に並列化されており、コンピュータグラフィックス操作を効率的に実行するように設計されており、ゲーム、機械学習、ビデオ編集、人工知能に役立ちます。[ 10 ] GPUは元々グラフィックスでの使用を目的としていましたが、時間の経過とともにその応用分野は拡大し、現在では機械学習の重要なハードウェアとなるなど、さまざまなタスクを組み込んでいます。[ 11 ]
デジタル信号プロセッサ(DSP)はコンピュータのプロセッサであり、音声、ビデオ、センサー測定などのデジタル信号の処理を担当します。[ 12 ] DSPは、信頼性の高い実行速度を保証する決定論的命令時間と、命令とデータの両方への同時アクセスをサポートするメモリレイアウトという2つの主要な機能を使用して、予測可能なリアルタイムパフォーマンスを実現するように設計されています。[ 13 ] DSPはプログラム可能であるため、音声信号処理、音声認識、電気通信、ソナー、レーダー、スペクトル密度推定、統計的信号処理、デジタル画像処理、データ圧縮、ビデオ符号化、音声符号化、画像圧縮、生物医学工学、地震学など、幅広いアプリケーションに適しています。[ 14 ]信号処理にデジタル計算を適用することで、アナログ処理に比べて多くの利点が得られます。[ 15 ]
量子処理ユニット(QPU)は量子コンピュータの中核となるコンポーネントです。QPUは量子チップを構成する量子ビットを使用して情報を処理し、CPUやGPUとともに高性能コンピューティング(HPC)システムに統合されます。 [ 16 ]最も一般的な量子プロセッサの種類は、超伝導プロセッサ、フォトニックプロセッサ、中性原子量子プロセッサ、トラップイオンプロセッサ、トポロジカルプロセッサ、量子ドットプロセッサであり、それぞれアーキテクチャ、レイアウト、忠実度、量子ビット数に違いがあります。[ 17 ]これらの違いは、速度、コヒーレンス時間、スケーラビリティ、互換性、パフォーマンスなどの特定のタスクに適しています。[ 16 ] QPUの製造元には、IBM、D-Wave、Google、Rigettiなどがあります。[ 18 ]
データ処理ユニット(DPU)とは、汎用CPUとネットワークインターフェースハードウェアを密接に統合した、プログラム可能なコンピュータプロセッサである。
ニューラル処理ユニット(NPU)は、 AIアクセラレータまたはディープラーニングプロセッサとも呼ばれ、人工知能や機械学習アプリケーション(人工ニューラルネットワークやコンピュータビジョンを含む)を高速化するように設計された特殊なハードウェアアクセラレータ[ 19 ]またはコンピュータシステム[ 20 ] [ 21 ]の一種です。