コンピューティングにおいて、
ハードウェア・アクセラレーションとは、ある機能を通常の(汎用)
CPUの上で
ソフトウェアを実
行する場合より高速に
行なうため、
CPUに対し付加的な
ハードウェアを使用することである。この付加的な
ハードウェアを総称して
アクセラレータと呼ぶ。
ハードウェア・アクセラレーションの例としては、グラフィック・プロセッシング・ユニット(
GPU)のBit Block Transfer機能および
CPUの中の複雑な演算(古典的には例えば浮動小数点演算)を
行う命令が挙げられる。
ハードウェア・アクセラレーションはパフォーマンスを改善するために使用される様々な技術のうちの1つである。通常、
CPUによる
ソフトウェアの実
行では、
CPUが備えるプリミティブな命令の並びで処理を実現し、その命令を逐次的に一つずつ実
行する。一方
ハードウェアによるアクセラレーションでは特定の処理のための専用の
ハードウェアを設計し、その
ハードウェア内では回路の並
列性を生かして演算を並
列に
行うことで逐次的な命令実
行の場合よりはるかに高速に演算を実
行する。しかし専用に設計された
ハードウェアとして処理を実現した場合、
CPUが備えるプリミティブな命令の組み合わせにより
ソフトウェアとして処理を実現する場合に比べて柔軟性が減少する。また
ハードウェアの設計及び製造には
ソフトウェアに比べて桁違いのコストが必要になる。このような実
行性能と柔軟性やコストとのトレードオフから、
ハードウェアによるアクセラレーションは
ソフトウェアの中でも特定のパターンの演算を集中的に処理するようなパフォーマンスの上重要な部分について利用される。
ハードウェア・アクセラレーションは小さな機能ユニットから
MPEG2の動作予測のように大きな機能ブロックまでさまざまな粒度にわたる。一般に粒度が大きくできれば実
行性能が向上する一方、用途が固定化され柔軟性は低下する傾向がある。
ユニットが
CPUから分かれている場合、アクセラレーションを
行なう
ハードウェアは、
ハードウェア・
アクセラレータ、あるいはそれぞれの担う機能に応じてより限定的にグラフィック
アクセラレータ、浮動小数点ユニット(
FPU)などと呼ばれる。
グラフィック
アクセラレータは古い用語であり、
ビデオカードまたはグラフィックカードのようなそれほど記述的でない用語へと変わっている。また
FPUについては
CPUの標準的な機能として含まれるようになり、
RISCプロセッサはスーパースケーラにより
FPUを整数演算と並
列に動作させることができる。現在のプロセッサでは
FPUは
CPUの一ユニットとして扱われる。