ハードウェアアクセラレーション

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

コンピューティングにおいて、ハードウェアアクセラレーションとは、なんらかの機能を通常の(汎用)プロセッサ上のソフトウェアコンピュータ・プログラム)による実装で処理したのではレイテンシやスループットが遅い、消費電力が大きい、などといった問題があるような場合に、ハードウェア実装による支援で速度などを加速(アクセラレーション)することである。この支援するハードウェアを総称してアクセラレータと呼ぶ。代表的なものに、グラフィック処理のグラフィックアクセラレータGPUBit Block Transfer機能や動画再生支援機能なども)、数値演算コプロセッサなどとも呼ばれるFPUDSPによるデジタル信号処理ベクトルプロセッサやFPGA等を拡張ボードに実装したもの、などがある。専用計算機などでも、コストなどの点で一般の処理について通常のコンピュータを流用するためにアクセラレータの形態をとることがある。また以前はパーソナルコンピュータにおいて、アップグレードのためCPUを換装するのが一般的でなかったこともあり、オーバードライブプロセッサ等による「CPUの高速化」のためのプロセッサを「CPUアクセラレータ」等と称したこともあった(ある一時期には「Intel 80286#CPUアクセラレータ」の記事にあるように、286マシンに486を載せるといった製品まで登場した)。

ハードウェア・アクセラレーションはパフォーマンスを改善するために使用される様々な技術のうちの1つである。通常、CPUによるソフトウェアの実行では、CPUが備えるプリミティブな命令の並びで処理を実現し、その命令を逐次的に一つずつ実行する。一方ハードウェアによるアクセラレーションでは特定の処理のための専用のハードウェアを設計し、そのハードウェア内では回路の並列性を生かして演算を並列に行うことで逐次的な命令実行の場合よりはるかに高速に演算を実行する。しかし専用に設計されたハードウェアとして処理を実現した場合、CPUが備えるプリミティブな命令の組み合わせによりソフトウェアとして処理を実現する場合に比べて柔軟性が減少する。またハードウェアの設計及び製造にはソフトウェアに比べて桁違いのコストが必要になる。このような実行性能と柔軟性やコストとのトレードオフから、ハードウェアによるアクセラレーションはソフトウェアの中でも特定のパターンの演算を集中的に処理するようなパフォーマンスの上重要な部分について利用される。ハードウェア・アクセラレーションは小さな機能ユニットからMPEG2の動作予測のように大きな機能ブロックまでさまざまな粒度にわたる。一般に粒度が大きくできれば実行性能が向上する一方、用途が固定化され柔軟性は低下する傾向がある。また近年はグラフィックスなどはGPUに機能が分離される一方で、SSEなどのSIMD型拡張命令として、CPU自身がアクセラレータ的な機能を持つ命令を積極的に持つようにもなってきている。