
コプロセッサは、メインプロセッサ( CPU )の機能を補完するために使用されるコンピュータプロセッサです。コプロセッサが実行する処理には、浮動小数点演算、グラフィックス、信号処理、文字列処理、暗号化、周辺機器とのI/Oインターフェースなどがあります。コプロセッサは、プロセッサ負荷の高いタスクをメインプロセッサからオフロードすることで、システムパフォーマンスを向上させます。コプロセッサを使用することで、コンピュータのラインアップをカスタマイズできるため、追加のパフォーマンスを必要としない顧客は、追加のコストを支払う必要がありません。
コプロセッサの自律性の度合いは様々です。一部 ( FPUなど)は、 CPUの命令ストリームに埋め込まれたコプロセッサ命令を介した直接制御に依存しています。その他のプロセッサは、それ自体が独立したプロセッサであり、非同期で動作できます。ただし、汎用コード用に最適化されていないか、特定のタスクの高速化に重点を置いた命令セットが限られているため、汎用コードには最適化できません。これらのプロセッサは、ホストプロセッサ (CPU) がコマンドリストを構築し、直接メモリアクセス(DMA)によって駆動されるのが一般的です。PlayStation 2のEmotion Engineには、両方の動作モードが可能な、珍しいDSPのようなSIMDベクトルユニットが含まれていました。
メインフレームコンピュータのプロセッサ時間を最大限に活用するため、入出力タスクはチャネルI/Oと呼ばれる独立したシステムに委任されました。メインフレームはI/O処理を一切必要とせず、入出力操作のパラメータを設定し、チャネルプロセッサに操作全体を実行するよう指示するだけで済みます。時間のかかるI/Oフォーマットと処理を比較的単純なサブプロセッサに専用化することで、システム全体のパフォーマンスが向上しました。
浮動小数点演算用のコプロセッサは、1970年代にデスクトップ コンピュータに初めて登場し、1980年代から 1990年代初頭にかけて普及しました。初期の 8 ビットおよび 16 ビット プロセッサでは、ソフトウェアを使用して浮動小数点演算を実行していました。コプロセッサがサポートされている場合、浮動小数点計算を何倍も高速に実行できます。数値演算コプロセッサは、コンピュータ支援設計(CAD) ソフトウェアや科学技術計算のユーザーに人気がありました。AMD 9511、Intel 8231/8232、Weitek FPUなどの一部の浮動小数点ユニットは周辺機器として扱われましたが、 Intel 8087、Motorola 68881 、National 32081などはCPU とより密接に統合されていました。
コプロセッサのもう一つの形態は、Atari 8ビットコンピュータ、TI-99/4A、MSXホームコンピュータで使用されていたビデオディスプレイコプロセッサで、「ビデオディスプレイコントローラ」と呼ばれていました。Amigaカスタムチップセットには、 Copperと呼ばれるユニットと、メモリ内の ビットマップ操作を高速化するブリッターが搭載されています。
マイクロプロセッサの進化に伴い、浮動小数点演算機能をプロセッサに統合するコストは低下しました。プロセッサの高速化により、密集したコプロセッサの実装は困難になりました。デスクトップコンピュータでは、別パッケージの数学コプロセッサはもはや一般的ではありません。しかし、特にコンピュータゲームにおけるリアルな3Dグラフィックスへの需要の高まりにより、専用のグラフィックスコプロセッサの需要は高まっています。


初代IBM PCには、 Intel 8087 浮動小数点コプロセッサ(別名FPU )用のソケットが搭載されていました。これは、コンピュータ支援設計(CAD)や数学計算を多用するPCユーザーの間で人気のオプションでした。このアーキテクチャでは、コプロセッサによって浮動小数点演算が約50倍高速化されます。例えば、PCをワードプロセッサとしてのみ使用するユーザーは、テキスト処理のパフォーマンス向上にはつながらないコプロセッサの高額なコストを節約できました。
8087は8086/8088と緊密に統合され、8088命令ストリームに挿入された浮動小数点マシンコード命令コードに応答しました。8087を搭載していない8088プロセッサはこれらの命令を解釈できなかったため、FPU搭載システムと非FPU搭載システムで別々のプログラムを用意するか、少なくとも実行時にFPUを検出して適切な数学ライブラリ関数を選択するテストを行う必要がありました。
8086/8088 CPU用のもう一つのコプロセッサは、8089入出力コプロセッサでした。メモリから周辺機器へのデータ転送などの入出力操作に8087と同じプログラミング手法を採用し、CPUの負荷を軽減しました。しかし、IBMはIBM PCの設計にこの手法を採用せず、Intelはこのタイプのコプロセッサの開発を中止しました。
Intel 80386 マイクロプロセッサは、オプションの「数値演算」コプロセッサ(80387)を使用して、浮動小数点演算をハードウェアで直接実行しました。Intel 80486DXプロセッサは、チップ上に浮動小数点ハードウェアを搭載していました。Intelは、浮動小数点ハードウェアを搭載しない低価格プロセッサ80486SXをリリースしました。また、80487SXはピン接続が異なる完全な80486DXであるため、インストール時にメインプロセッサを実質的に無効にする80487SXコプロセッサも販売しました。[1]
80486以降のIntelプロセッサは、浮動小数点ハードウェアをメインプロセッサチップに統合しました。しかし、集積度の進歩により、浮動小数点プロセッサをオプション部品として販売することによるコスト面での優位性は失われました。75MHzのプロセッサ速度に適した回路基板技術を、ギガヘルツ帯のクロック速度で求められる遅延時間、消費電力、無線周波数干渉の基準に適合させることは非常に困難です。これらのオンチップ浮動小数点プロセッサは、メインCPUと並列に動作するため、現在でもコプロセッサと呼ばれています。
8ビットおよび16ビットのデスクトップコンピュータの時代、浮動小数点コプロセッサのもう一つの一般的な供給元はWeitekでした。これらのコプロセッサはIntelコプロセッサとは異なる命令セットを持ち、異なるソケットを使用していましたが、すべてのマザーボードがサポートしているわけではありませんでした。Weitekプロセッサは、Intel x87ファミリのような超越数学関数(例えば三角関数)を提供しておらず、それらの関数をサポートするには特定のソフトウェアライブラリが必要でした。[2]
モトローラ68000ファミリーには、インテルプロセッサと同等の浮動小数点演算速度を実現する68881/68882コプロセッサが搭載されていた。68000ファミリーを搭載しながらもハードウェア浮動小数点プロセッサを搭載していないコンピュータでは、ソフトウェアで浮動小数点命令をトラップしてエミュレートすることが可能であった。これにより、速度は低下するものの、1つのバイナリプログラムを両方のケースで分散させることが可能になった。68451メモリ管理コプロセッサは、68020プロセッサで動作するように設計された。[3]
2001年現在、グラフィックカードの形態をとる[アップデート]専用グラフィック・プロセッシング・ユニット(GPU )は一般的になっています。サウンドカードの一部のモデルには、1990年から1994年にかけて、デジタル・マルチチャンネル・ミキシングとリアルタイムDSPエフェクトを提供する専用プロセッサが搭載されていました(Gravis UltrasoundとSound Blaster AWE32が代表的な例です)。また、Sound Blaster AudigyとSound Blaster X-Fiは、より最近の例です。
2006年、AGEIAはPhysX PPUと呼ばれるコンピュータ用アドインカードを発表しました。PhysXは、CPUとGPUが時間のかかる計算を行う必要がないよう、複雑な物理演算を実行するために設計されました。当初はビデオゲーム向けに設計されていましたが、理論的には他の数学的用途にも利用可能でした。2008年、NVIDIAがAGEIAを買収し、PhysXカードラインを段階的に廃止しました。この機能は、NVIDIA PhysXエンジンソフトウェアを使用して、通常はグラフィックス処理に使用されるコア上でPhysXレンダリングを可能にするソフトウェアによって追加されました。
2006 年、BigFoot Systems は、400 MHz で稼働する FreeScale PowerQUICC上で独自の特別な Linux カーネルを実行する KillerNIC と名付けた PCI アドイン カードを発表しました。同社はFreeScale チップをネットワーク プロセッシング ユニット(NPU) と呼んでいます。
SpursEngineは、Cellマイクロアーキテクチャに基づくコプロセッサを搭載したメディア指向のアドインカードです。SPU自体はベクトルコプロセッサです。
2008 年、Khronos グループは、コンピューティング カーネル用の単一の共通言語を使用して、汎用 CPU、ATI/AMD、Nvidia GPU (およびその他のアクセラレータ) をサポートすることを目的としてOpenCL をリリースしました。
2010年代には、一部のモバイルコンピューティングデバイスがセンサーハブをコプロセッサとして実装していました。モバイルデバイスにおけるセンサー統合の処理に使用されるコプロセッサの例としては、 Apple M7およびM8モーションコプロセッサ、Qualcomm Snapdragon Sensor CoreおよびQualcomm Hexagon、Microsoft HoloLensのホログラフィック処理ユニットなどが挙げられます。
2012年にインテルはIntel Xeon Phiコプロセッサを発表しました。[4]
2016 年現在[アップデート]、さまざまな企業が、視覚やその他の認知タスク用の人工ニューラル ネットワークを加速することを目的としたコプロセッサ (ビジョン プロセッシング ユニット、TrueNorth、Zerothなど) を開発しており、2018 年現在、このような AI チップは、Apple などのスマートフォンや、いくつかの Android フォン ベンダーに搭載されています。
CPUは時を経て、最も人気のあるコプロセッサの機能を吸収する傾向にあります。FPUは現在、プロセッサのメインパイプラインに不可欠な要素とみなされています。SIMDユニットはマルチメディア処理を高速化し、従来のDSPアクセラレータカードの役割を担うようになりました。さらに、 GPUさえもCPUダイに統合されるようになりました。しかしながら、専用ユニットはデスクトップマシン以外でも、また追加の処理能力を必要とする用途でも依然として人気があり、主要なプロセッサ製品ラインとは独立して進化を続けています。