- ベストアンサー
ハードウェア処理とソフトウェア処理の違い
ASICなどのハードウェア処理とソフトウェア処理の違いって具体的に何なんでしょうか? ハードウェア処理の方が速度が速く、 ソフトウェア処理の方が柔軟性が高いと覚えているんですが、 友人に「なんでハードウェア処理は速度が速いの?」と質問され答えられませんでした・・・ どなたか具体的にわかるかた、いらっしゃいませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どちらの処理でも最終的な演算はハードウェアで行われます。 つまりソフトウェア処理は、 ソフトウェアの解釈→適切なハードウェア処理への展開→ハードウェアでの処理 の手順を踏むことになります。 当然、余計な手順を踏むぶんだけ、ソフトウェア処理の方が処理が遅くなります。 実際には高速化のため、さまざまな工夫がされていますが。
その他の回答 (1)
友人の質問に対しては、 Q.「なんでハードウェア処理は速度が速いの?」 A.「既に、行う処理が決まっていて単位時間に同時に必要になる機能が必要なだけ用意されているから」 といったところかと思います。 ソフト処理は、既に用意された汎用的なハードウェアを、順番よく、うまく組み合わせて使うことで目的の処理を果たします。 ハード処理は、目的の処理が先にありきで、その目的に必要なハードウェアをいくらでも用意できます。 簡単な例で、例えば(今ではありえないけど)加算器が一個しか用意されていないCPUがあったとしましょう。 百個の数値の足し算をしてくださいといわれたら、メモリからレジスタに値を読んでは、予め用意されていた汎用の加算器を通してA+Bの処理をしてはアキュームレータに保存するような処理を百回繰り返して実現します。こんなことなら、加算器をもっと用意しておけば並列に何個か足せたのに~、と思う瞬間です。 しかし、金も電力もマスク費用もいくらかけても構わない!といわれれば、100個の数値を一発で格納するレジスタF/Fと、100個の加算器を通した出力をアキュームレータF/Fに流し込めば、タイミングがMETする限りは1クロックで済みます。そのかわり、それしか出来ません。 但し、ハードのほうが早いというのは必ずしも当てはまりません。逆に、上記のような簡単な処理くらいならPentium4ほどに膨大な電力や大きなチップ面積を食うようなハードは不要です。 1 bitの加算器しか用意しないで、100個 x (ビット幅)回の加算処理(1万クロック近くかかって)でようやく演算結果を出す代わりに、チップ面積を小さくしてお安く、省電力なハードウェアに致しました、という場合だってあります。 なお、このハードもそういう決まった処理を決まった時間でしかこなせません。 具体例は、以上のようなところですがいかがでしょ。 これがMPEGデコーダになろうがDVDレコーダになろうがDSPだろうがネットワークルータだろうが理屈は同じです。 柔軟性といえば、C言語からハードを作る事だってできますけど、速度は必要とされる機能を、どれだけ予め用意できるか≒金と電力どれだけだせますか、次第です。
お礼
たくさん書いていただいてありがとうございます。 でも、私には少しレベルが高い話でちょっとわかりにくかったです^^; レベルが低くて本当に申し訳ないです・・・ でも何回か読んでいくうちに大分イメージがわいてきました。 どうもありがとうございました!
お礼
早速のご回答ありがとうございました! お礼遅くなってすいません、大変助かりました。