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