ハードウェア・アクセラレーションとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ハードウェア・アクセラレーションの意味・解説 

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

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/01/31 15:00 UTC 版)

コンピューティングにおいて、ハードウェアアクセラレーション (: hardware acceleration) とは、なんらかの機能を通常の汎用プロセッサ (CPU) 上で動作するソフトウェアコンピュータプログラム)としての実装で処理したのではレイテンシが大きい、スループットが低い、消費電力が大きい、などといった問題があるような場合に、ハードウェア実装による支援で実行速度などを加速(アクセラレーション)し、システム全体の性能や効率を向上させる技術である。ハードウェアアクセラレーションを利用するにはシステムに専用のプロセッサを追加する必要があるため、コスト高に繋がる可能性がある。

概略

ハードウェアアクセラレーションはパフォーマンスを改善するために使用される様々な技術のうちのひとつである。特に並列処理の点で、専用設計されたハードウェアは効果を発揮しやすい。通常、CPUによるソフトウェアの実行では、CPUが備えるプリミティブな命令の並びで処理を実現し、その命令を逐次的にひとつずつ実行する。一方ハードウェアによるアクセラレーションでは特定の処理のための専用のハードウェアを設計し、そのハードウェア内では回路の並列性を生かして演算を並列に行うことで、逐次的な命令実行の場合よりはるかに高速に演算を実行する。しかし専用に設計されたハードウェアとして処理を実現した場合、CPUが備えるプリミティブな命令の組み合わせによりソフトウェアとして処理を実現する場合に比べて柔軟性が減少する。またハードウェアの設計および製造にはソフトウェアに比べて桁違いのコストが必要になる。

このような実行性能と柔軟性やコストとのトレードオフから、ハードウェアによるアクセラレーションはソフトウェアの中でも特定のパターンの演算を集中的に処理するようなパフォーマンス上の重要な部分について利用される。ハードウェアアクセラレーションは小さな機能ユニットからMPEG2の動作予測のように大きな機能ブロックまでさまざまな粒度にわたる。一般に粒度を大きくできれば実行性能が向上する一方、用途が固定化され柔軟性は低下する傾向がある。

アクセラレータ

処理の高速化を支援するハードウェアを総称してアクセラレータと呼ぶ。代表的なものに、Bit Block Transfer機能や3次元コンピュータグラフィックス描画、動画再生支援機能などを含むリアルタイムグラフィックス処理に特化したGPU(かつてはグラフィックアクセラレータと呼ばれていた)、数値演算コプロセッサなどとも呼ばれるFPU、音声などのデジタル信号処理に特化したDSPベクトルプロセッサFPGA等を拡張ボードに実装したもの、などがある。専用計算機などでも、コストなどの点で一般の処理について通常のコンピュータを流用するためにアクセラレータの形態をとることがある。[要説明]また以前はパーソナルコンピュータにおいて、アップグレードのためCPUを換装するのが一般的でなかったこともあり、オーバードライブプロセッサ等による「CPUの高速化」のためのプロセッサを「CPUアクセラレータ」等と称したこともあった[1]

また近年[いつ?]はグラフィックスなどはGPUに機能が分離される一方で、SSEなどのSIMD型拡張命令として、CPU自身がアクセラレータ的な機能を持つ命令を積極的に備えるようにもなってきている。CPUSIMD型拡張命令を使用する利点としては、メインメモリよりも遠くにあるGPUを用いた場合のような大きなレイテンシが発生しないということが挙げられる(後述するように、CPUとGPUはメモリ空間が統合されていないことが多く、仮にUMAで物理的に同じメインメモリを使用していても直接お互いのデータを読み書きすることはできず、データを転送するコストがかかる)。

CPUを遥かに超える並列演算性能を持つGPUを、グラフィックスだけでなく様々な計算用途に応用する技術をGPGPUと呼ぶが、2010年代以降はGPGPUに対応したGPUアーキテクチャの成熟とAPIの標準化が進んだため、グラフィックス以外のアクセラレータとしてもポピュラーな選択肢になった。GPUはもともと32bit単精度または16bit半精度の浮動小数点演算を得意とするが、機械学習深層学習向けに8bit整数演算専用命令を備えるプロセッサも登場している[2][3]。一方、科学技術計算では64bit倍精度浮動小数点数(あるいはそれ以上の精度)が主に必要とされるが、倍精度はゲーミング用途ではほとんど使われず無駄になるため、コンシューマー向けGPUでは倍精度の浮動小数点演算性能は単精度の場合の1/24や1/32程度に抑えられていることが多い。ハーフレートの倍精度(単精度の場合の1/2)に対応しているGPUは主にワークステーション向けやGPGPUサーバー専用製品に限られる。

問題点

アクセラレータを搭載しないコンピュータでは、ハードウェアアクセラレーションを利用したソフトウェアを実行することができない。代替としてソフトウェアによる実装をフォールバックソリューションとして用意することもあるが、開発工数やテスト工数も増加する。また、アクセラレータの命令仕様や演算精度の違いから、演算結果がCPUによるソフトウェア処理と異なる場合も問題となる。

また、アクセラレータを操作する処理を記述する際、本来アプリケーションソフトウェアを実現するために本質的ではない、ハードウェアに関する予備知識も必要となる。通例、ハードウェアを抽象化・標準化するDirectX/OpenGL/OpenCLといったアクセラレーション用APIを介することで、ハードウェアの詳細な実装を隠蔽することが多いが、ハードウェアおよびデバイスドライバー層がこれらのAPIをサポートする必要がある。

なお、通例CPUと外部ハードウェアとではメモリ空間が異なることから、外部ハードウェアに処理を委譲する際にデータをメインメモリから外部メモリに転送する必要があったり、逆に外部ハードウェアの処理結果を取得する際にデータを外部メモリからメインメモリに転送(リードバック)する必要があったりするため、プログラムが煩雑となる。AMD APUにおけるHSAのように、CPUと補助プロセッサのメモリ空間を統合することでソフトウェア開発の負担を低減する解決策も提案されている。

脚注

参考文献

関連項目


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

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/23 09:35 UTC 版)

ニューラルネットワーク」の記事における「ハードウェアアクセラレーション」の解説

ニューラルネットワーク推論高速化する様々なハードウェアアクセラレーションAPI提案実装されている。GPUにおけるCUDAWindowsにおけるDirectML、NVIDIAにおけるTensorRTなどが挙げられる

※この「ハードウェアアクセラレーション」の解説は、「ニューラルネットワーク」の解説の一部です。
「ハードウェアアクセラレーション」を含む「ニューラルネットワーク」の記事については、「ニューラルネットワーク」の概要を参照ください。

ウィキペディア小見出し辞書の「ハードウェア・アクセラレーション」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ハードウェア・アクセラレーション」の関連用語

ハードウェア・アクセラレーションのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ハードウェア・アクセラレーションのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのハードウェアアクセラレーション (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのニューラルネットワーク (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS