• ベストアンサー

ハードウェア処理とソフトウェア処理の違い

ASICなどのハードウェア処理とソフトウェア処理の違いって具体的に何なんでしょうか? ハードウェア処理の方が速度が速く、 ソフトウェア処理の方が柔軟性が高いと覚えているんですが、 友人に「なんでハードウェア処理は速度が速いの?」と質問され答えられませんでした・・・ どなたか具体的にわかるかた、いらっしゃいませんか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

どちらの処理でも最終的な演算はハードウェアで行われます。 つまりソフトウェア処理は、 ソフトウェアの解釈→適切なハードウェア処理への展開→ハードウェアでの処理 の手順を踏むことになります。 当然、余計な手順を踏むぶんだけ、ソフトウェア処理の方が処理が遅くなります。 実際には高速化のため、さまざまな工夫がされていますが。

takeshi_net
質問者

お礼

早速のご回答ありがとうございました! お礼遅くなってすいません、大変助かりました。

その他の回答 (1)

noname#7260
noname#7260
回答No.2

友人の質問に対しては、 Q.「なんでハードウェア処理は速度が速いの?」 A.「既に、行う処理が決まっていて単位時間に同時に必要になる機能が必要なだけ用意されているから」 といったところかと思います。 ソフト処理は、既に用意された汎用的なハードウェアを、順番よく、うまく組み合わせて使うことで目的の処理を果たします。 ハード処理は、目的の処理が先にありきで、その目的に必要なハードウェアをいくらでも用意できます。 簡単な例で、例えば(今ではありえないけど)加算器が一個しか用意されていないCPUがあったとしましょう。 百個の数値の足し算をしてくださいといわれたら、メモリからレジスタに値を読んでは、予め用意されていた汎用の加算器を通してA+Bの処理をしてはアキュームレータに保存するような処理を百回繰り返して実現します。こんなことなら、加算器をもっと用意しておけば並列に何個か足せたのに~、と思う瞬間です。 しかし、金も電力もマスク費用もいくらかけても構わない!といわれれば、100個の数値を一発で格納するレジスタF/Fと、100個の加算器を通した出力をアキュームレータF/Fに流し込めば、タイミングがMETする限りは1クロックで済みます。そのかわり、それしか出来ません。 但し、ハードのほうが早いというのは必ずしも当てはまりません。逆に、上記のような簡単な処理くらいならPentium4ほどに膨大な電力や大きなチップ面積を食うようなハードは不要です。 1 bitの加算器しか用意しないで、100個 x (ビット幅)回の加算処理(1万クロック近くかかって)でようやく演算結果を出す代わりに、チップ面積を小さくしてお安く、省電力なハードウェアに致しました、という場合だってあります。 なお、このハードもそういう決まった処理を決まった時間でしかこなせません。 具体例は、以上のようなところですがいかがでしょ。 これがMPEGデコーダになろうがDVDレコーダになろうがDSPだろうがネットワークルータだろうが理屈は同じです。 柔軟性といえば、C言語からハードを作る事だってできますけど、速度は必要とされる機能を、どれだけ予め用意できるか≒金と電力どれだけだせますか、次第です。

takeshi_net
質問者

お礼

たくさん書いていただいてありがとうございます。 でも、私には少しレベルが高い話でちょっとわかりにくかったです^^; レベルが低くて本当に申し訳ないです・・・ でも何回か読んでいくうちに大分イメージがわいてきました。 どうもありがとうございました!

関連するQ&A

  • ハードウェアとソフトウェア

    ハードウェアとソフトウェアの違いが分かりません。 ハードウェアは何を意味し、ソフトウェアはどういうものを指すのでしょうか? なにぶん初心者のため、なるべく分かりやすい、ご回答のほどをよろしくお願いします。

  • ハードウエア・ソフトウエア

    ハードウエアとソフトウエアの違いは何ですか?

  • ソフトウェアとハードウェアのファイアウォールの違い

    情報セキュリティ対策における、ファイアウォールについて。 ノートン等のソフトウェアと、NW機器(ハードウェア)には、 それぞれ、ファイアウォール機能が備わっているかと思いますが、 どのような違い(メリット・デメリット)があるのでしょうか? ソフトウェアだけの対策と、ハードウェアだけの対策をした場合に、 危惧されることも含め、教えてください。

  • ソフトウェアとハードウェアの違い

    ある1つの会社の出す職安の求人で分からない事があったのですが、この違いを教えて下さい。職安で気になる求人内容が2件ありました。2件とも同じ会社で同じ給料、同じ時間数。仕事内容だけ違います。 1つ目の職種「ソフトウェア評価オペレーター」 内容は開発中OA機器の評価試験業務指示書に従ってOA機器、パソコンを操作し、正しく動作するかを確認し、合否判定する作業。(請負業務で9月末まで10人募集) 必要な経験は簡単なPC操作できる方。 2つ目の職種1つが「OA機器ハードウェア評価」内容は開発中OA機器のハードウェア評価試験業務です。ハードウェアの信頼性試験におけるデータ取りなどが主な仕事です。環境室(高温多湿、低温低湿)内での作業も含まれます。(9月末まで10人募集) 必要な経験はPC操作不問(簡単なデータ入力できる方) ・・という内容でした。これだけだとよく分からなかったので、職安の方に聞いたら「仕事の内容は、ここに書いてあることしか職員は分かりません。知りたければ、直接会社に電話してもらっていいですか?」と言われました。 自分なりにパソコンで調べた所・・。ソフトはパソコンの中(プログラムやデータ)ハードは周辺機器(マウス、キーボードなど)ということは分かるんですが、会社HPで仕事内容を見ると ●ソフトウェア 日常的にパソコン(ネット、メール、Word、Excel等)を使っている方、歓迎。 グループでのお仕事です。コミュニケーション能力の高い方歓迎。 求む即戦力!パソコン操作スキルの高い方、ソフトウエア評価経験者優遇します。 期間及び募集人数    (1)即日~9月末(試用期間1ヶ月)10名    (2)即日~7月末(試用期間無し) 15名 25名の大量・緊急募集です! ●ハードウェア 開発中OA機器のハードウエア評価試験業務です。 ハードウエアの信頼性試験におけるデータ取り等が主なお仕事です。 パソコン操作経験不問 (簡単なデータ入力が出来ればOK) 一部環境室(高温高湿/低温低湿)での業務もあり。 H23年7月上旬~9月末  16名の大量募集です。 会社に直接仕事内容の違いや仕事について詳しく教えて下さいと聞いたところ「ソフトはPC使用で評価をしていただきます。ハードは直接パソコンには触らず評価をします」という回答でした。また、ソフトはHPを見ると即戦力が必要と書いてあるけど、パソコンにとても詳しくない人だと難しい仕事か聞いたところ「両方初心者に優しいので、大丈夫です」という答えでした。 多少パソコンの資格と少しの事務経験はあるので、応募したいと考えております。しかしパソコンで調べてもこの2つの仕事の違いが分からないので、よかったらこの違いを教えていただけると嬉しいです。よろしくお願いします

  • なぜソフトウェアでハードウェアが動くのか

    組み込み機器のソフトウェア開発を行なっております。 ソフトウェアのようなテキスト文書で、なぜハードウェアが制御できるのかがわかりません。 例えば一般的なマイコンで あるレジスタの値を1に書き換えることで 該当するポートの電圧がHになるという制御において レジスタの値が書き換われば電圧がHになるというのはイメージがつかめるのですが ソフトウェアでなぜレジスタの値が書き換わるのかがわかりません。 なるべく具体例でアセンブリ言語→機械語→レジスタが書き換わる の対応関係を説明していただけると幸いです。 よろしくお願いいたします。

  • ASICの動作

    L3スイッチ、L2スイッチはルータやブリッジと比較した場合、ASICというLSIで処理しているので処理速度が速いと書籍に書かれていました。 ASICの概要は調べたのですが、そのASICが実装されてどのようなハードウェアベースでの動作をして処理速度が向上するのかが、わかりません。 どなたか教えていただけませんか?

  • ハードウェアエンコードとソフトウェアエンコードについて。

    TVをHDDに録画する際の質問です。 *仮定として、PCの性能は「AMD AthloXP プロセッサ 2600」「メモリ:250M」でお願いします。 ハードウェアエンコードとソフトウェアエンコードの違いについては、ハードウェアエンコードのほうがCPU負担が少なく、エンコード中でも他の作業ができ、高価であると認識しています。 今回はタイムラグ(遅延)に関してです。 1.ハードウェアエンコードの場合ソフトウェアエンコードと違い、「タイムラグ(2秒ほどの遅延)」が生じるものなのでしょうか (ソフトウェアエンコードでは生じない?) 2.また、ゲームをするときにも遅延を生じると聞いたことがあります。 以上、2点。どうなのでしょうか。 よろしくお願いいたします。

  • L3スイッチのメリット

    L3スイッチを使用すると L2の処理(VLANとかMACアドレス)を ハードウエア処理をするのでL2スイッチの ソフトウエア処理より速いという事を聞きます。 しかし、個人として、なぜハードウエアの方が ソフトウエアより速いのかがわかりませんので 教えて頂きたいです。 ASICという技術を使用しているみたいです。 だけどなぜハードウエアの方が良いのかを教えて頂きたいです。

  • ハードウェア化すると速い?

    最近ハードウェアに関する本を読んでいるんですが、ソフトウェア上で実行するアプリケーションをハードウェア化にすると高速に実行できるって書いてあります。 それはなぜですか?ソフト上では1クロックのCPUで1命令しか実行できないに対して、ハードウェアでは数命令もできるらしいですが、具体的にまだよく理解できないです。 特に最近FPGAとかを使用するとハードウェア化を実現可能ですって。。 でも、1命令でパイプライン処理するとソフト上でも数命令できると思います。 この辺はよくご存じる方がいれば是非教えてください。 よろしくお願いします。

  • ハードウェアとソフトウェアってどちらが先ですか?

    語源とかの話ではなくて。 現在、日常生活でも欠かせなくなっているコンピュータの存在ですが、コンピュータを構成しているものを大別するならば、ハードウェアとソフトウェアであると私は思っています。 このハードウェアとソフトウェアに関してですが、歴史的にどちらが先に考えられたのでしょうか? 私は今大学生で、また、小さいころにもコンピュータに興味を持っていたというわけではないので、詳しい話は分からないのですが、少し疑問に思ったので質問させていただきました。 大学を決めるときに、コンピュータをはじめとする工学系の分野に興味を持ちましたので、大学では電子情報系に入りました。人間が自然の原理を応用して、ここまで体系だったものを作れるんだ、と思うと、とても素晴らしいと感じたためです。 今もいろいろなことを勉強してみたいと思っているのですが、大学ではLinuxを用いてのEmacsの使い方や、シェルの概念など、主にソフトウェアに関してで、どのようにしてそのような概念が必要とされているのか、また、用いることが出来るのかなど、本質的(?)なことを教えてくれません。 このようなことを考えていくうちに、やはりハードウェアについての知識がなければいけないのかな、などと現在は思いいたり、幾分かは我慢していますが、果たして本当にハードウェアについて学べば分かるのかと不安に思い、質問してみました。 コンピュータの動作原理については全く知りませんので、分かりやすく教えていただきたいです。 回答、よろしくお願いします。