ハードウェア/ソフトウェアインターフェイスとオペレーティングシステムの初心者コースを勉強すると、ハードウェアの一部をソフトウェアに、またはその逆に交換した方がよいかというトピックがよく出てきます。接続できません。
他の答えが欠けている基本的な接続はこれだと思います:
汎用コンピュータ(CPUなど)を指定すると、定義したほとんどすべての計算を実行するようにプログラムできます。ただし、専用ハードウェアの方がパフォーマンスが高い場合や、価値がない場合があります。
(この回答はデスクトップ処理に焦点を当てており、そのドメインの例を使用しています)
1990年代半ばから後半にかけてPCゲームを覚えるのに十分な年齢であれば、おそらく Quake のようなFPSゲームを覚えています。それは「ソフトウェアレンダリング」から始まりました。つまり、CPUがグラフィックスのレンダリングに必要な計算を実行しました。一方、CPUは入力処理、オーディオ処理、AI処理なども実行する必要があり、CPUリソースに非常に負担がかかりました。さらに、グラフィック処理は主流のCPU(当時または現在)にはあまり適していません。これは非常に高度な並列タスクになる傾向があり、最新のハイエンドCPU(8)よりも多くのコアを必要とします。
グラフィック処理をソフトウェアからハードウェアに移動しました: dfx Voodoo および Nvidia TNT(現在は GeForce )を入力します。これらは、CPUからGPUに処理をオフロードする特殊なグラフィックカードでした。これにより、ワークロードが分散し、同じ量の作業を実行するためにより多くのコンピューティングリソースが提供されただけでなく、グラフィックスカードは3Dグラフィックスを大幅にレンダリングできる専用ハードウェアでしたCPUよりも速く、より多くの機能を備えています。
現代に早送りし、非CPUグラフィックスがデスクトップに必要です。オペレーティングシステムでさえ、GPUなしでは機能しません。 CPUがGPUを実際に統合することは非常に重要です。1
DVDが新品のときは、DVDドライブをデスクトップコンピュータに取り付けることができました。しかし、当時のCPUは、DVDビデオとオーディオストリームを途切れることなくデコードするのに十分な能力を持っていませんでした。最初は、デコードを実行するために専用のPCIボードが必要でした。これは、DVDフォーマットのみをデコードするために特別に構築された専用ハードウェアでした。 3Dグラフィックスと同様に、より多くのコンピューティングリソースを提供するだけでなく、タスク用に特注で作成されたため、DVDの再生がスムーズに行われました。
CPUの性能が大幅に向上するにつれ、DVDを「ソフトウェアで」、つまり「汎用コンピュータで」デコードできるようになりました。効率の悪いプロセッサでも、DVDの再生をユーザーの期待に応えるのに十分な生の速度とパイプラインの最適化がありました。
現在、CPUは数百倍、数千倍もの強力なCPU2 DVDが導入されたときのように。 Blu-rayが登場したとき、専用ハードウェアは必要ありませんでした。汎用ハードウェアは、タスクを処理するのに十分強力であったためです。
最新のIntel CPUには特別な命令がありますH.264 エンコードおよびデコード用。これは、すべて同じチップで汎用CPUが特殊な機能を獲得する傾向の一部です。 CPUには同様の回路が含まれているため、初期のDVDのようにH.264を効率的にデコードするために、別個のPCI Expressボードは必要ありません。
1 GPUは、グラフィカルな計算を実行するために特別に設計されたプロセッサを指します。古い2DグラフィックスカードはGPUではありませんでした:それらは、モニターと通信するためのDACを備えた単なるフレームバッファーでした。違いは、GPUには特定の種類の計算でExcelを使用する特殊なプロセッサが含まれており、時間が経つにつれ、実際には自分自身(シェーダー)をプログラムできるようになったことです。グラフィックスハードウェアには、フレームバッファーのデータをケーブル(VGA、DVI、HDMI、DisplayPort)を介して出力し、モニターが理解できる形式に変換するために必要な専用回路が常に含まれています。これは、計算を専用ハードウェアにオフロードすることについての説明とは無関係です。
2 DVD-Videoは、Pentium 2も新しくリリースされた1997年にリリースされました。これは、CPUの電力が急速に増加していた時期でした。DVDデコーダーを備えた新しいP2コンピューター、または少し古いP1にコンピューターをインストールすることを検討できます。 WikipediaのMIPSリスト を使用した最新世代の6コアi7と比較してください。最新のCPUは590から1,690倍高速です。これは、一部にはクロック速度によるものですが、標準としての複数のコアへの移行と、クロックティックごとにコアごとに多くの作業を実行する最近のCPUによるものです。また、テクノロジーの進歩に伴い、デスクトップおよびx86サーバー市場を独占するIntelは、デスクトップユーザーが実行したい操作(ビデオのデコードなど)を高速化するための特別な指示を追加していることも重要です。
最も明白な例の1つであるソフトウェア定義ラジオがまだ誰も言及していないことに驚いています。
現代のスマートフォンを50年ほど前に持ち帰って、1960年代半ばから有能なエンジニアに見せれば、彼はそのほとんどを理解することができます。スーパーコンピュータをあなたのポケットに収まるものに縮小できると?小切手。あなたはパッケージに超高品質のカラーテレビと同等のものを手に入れることができますか?小切手。当時のコンピュータよりもはるかに高速で、ストレージなどがはるかに多いのですか?小切手。そのような複雑な機能を実行できるソフトウェアが作成されましたか?小切手。
しかし、有能なエンジニアには、ところで、このパッケージには、非常に効率的な送信機と高感度受信機のセットが含まれていることを伝えてください。複数のチャネルで同時に送受信でき、数マイル離れたインフラストラクチャタワーと通信できるデジタルスペクトラム拡散トランシーバー;建物のどこかにある基地局と高速データを通信する別のデジタルトランシーバ。低電力のウェアラブルデバイスと通信するさらに別のデジタルトランシーバー。中間軌道の衛星から弱い信号を拾う別の受信機...彼はあなたを嘘つきと呼びます。
そのような高感度の受信機は、隣接するステーションをフィルタリングして目的の信号を選択する多数の同調回路なしでは構築できないことを知っているため、彼はあなたを嘘つきと呼びます。そして、そのような回路には、コンデンサやインダクタなど、テクノロジーよりも物理学によって定義されるサイズの部品が必要です。
次に、最新のラジオでは、そのほとんどがソフトウェアで行われることを説明する必要があります。アンテナから入ってくる信号が中間周波数に変換されて少し増幅された後、それは次にA/Dコンバーターによってサンプリングされます。その後の処理はデジタル信号プロセッサで行われます。オールドスクールのハイエンドラジオで大量のハードウェアを必要としていたチューニング、フィルタリングはすべて、数式で表すことができます。そしてそれが可能であれば、それらの方程式はDSPによってリアルタイムで実行できます。
これは、ハードウェアに代わるソフトウェアの最も目立つ例の1つだと思います。その結果、私たちはスマートフォンをポケットに入れて持ち運び、1960年代の有能なエンジニアにとっても、手品に似ています。
これと比較して、ガレージのドア開閉装置、電子バスルームスケール、またはテレビのリモコンのシンプルなロジックが、カスタムハードウェアの代わりに汎用マイクロコントローラーとソフトウェアを使用して実装されているという考えは、ほとんど自明ではないように見えます(そして、ソフトウェアで定義されたラジオよりも、架空の1960年代のエンジニアが理解しやすい。)
それはまさにそれがどのように聞こえるかを意味します。
特に有名な例は、Steve WozniakがApple II:用に設計した Disk II Drive です。
主な革新は、競合他社がハードウェアに依存している間にソフトウェアを使用してコントローラーをコンパクトにすることでした。当時アップル社の電子技術者であったビルフェルナンデスは、「[ウォズニアックの]デザインの主な利点は、通常の60〜70ではなく6チップしか使用しなかったことでした。
もう少し慣れている例として、エミュレータがあります。それらは、ハードウェア(およびソフトウェア)のセット全体を完全にソフトウェアで置き換えます。 CPU、さまざまな制御チップ、さらにはストレージデバイス。
すべてのハードウェアを排除することはできませんが、最終的にはソフトウェアを実行するために何かが必要になります。ただし、一般的に、ハードウェアに実装できるロジックタスクはソフトウェアにも実装できます(パフォーマンスは同じではない場合があり、基盤となるハードウェアと実装に応じて、速度が遅くなるか、速くなるか、状況によって異なります)。
これが当てはまる別の分野はシンセサイザです。
初期のシンセサイザーは 100%アナログハードウェア 波形を直接生成し、回路(フィルター、アンプなど)を介して波形を修正しました。サウンドをデジタル合成することは可能でしたが、 コンピューティングリソース が必要で、平均的な人には余裕がありません(実際のメインフレームとカスタムのデジタルアナログコンバーターハードウェア)。
チップ製造が改善されると、シンセサイザーは純粋なアナログから シンセサイザチップ デジタル信号によって制御されますが、アナログ信号を生成し、その後純粋なデジタル合成(サンプル再生、 FM合成 、真の加算合成など)。
今日、プロセッサは、プログラマが従来のアナログシンセサイザのコンピュータバージョンを作成し、その動作をリアルタイムでシミュレートすることで正確に複製できるほど安価で高速です-実際、携帯電話やタブレットは、これらの再作成を実行します。 Korg iMS-2 は一例です。
クラシックシンセサイザーと新しいシンセサイザーの両方が、Ableton Live、Logic、またはCubaseなどのデジタルオーディオプログラム用のVSTまたはAUプラグインとして利用可能であり、これらは、使用できるスペースやお金がないとシンセサイザーへのアクセスを提供します。それら。
編集:ここで、 VCVRack についても言及する必要があります。これは、リアルタイムでアナログモジュール式合成をシミュレートします。数秒間の音楽の数時間のレンダリング時間から一歩前進。
かつて、カットはかなり明確でした。スピーディーな実行が必要なほとんどのものは、ハードウェアに実装する必要がありました。周波数を生成するマルチバイブレーターを例にとります。 (固定された)周波数を生成するために、トランジスタ、コンデンサ、そして最終的には水晶をいくつか必要としました。現在、わずか数セント程度の安価なマイクロコントローラがあります。非常に高速なので、簡単にマルチバイブレーターを作成できます。さらに、以前はさまざまなハードウェアをはんだ付けする必要があった場所で、生成する周波数をソフトウェアで簡単に制御できます。ただし、特定の(ただし現在はかなり高い)周波数を超える場合でも、純粋なハードウェアが必要です。ご覧のとおり、両者の間には線がありますが、ソフトウェアで解決できる部分は(指数関数的に)増加しています。
編集実際、「ソフトウェアはハードウェアを置き換えることができます」は実際には正しくありません。ハードウェアが非常に強力になり、それを使用してハードウェアをエミュレートするソフトウェアを実行できるという事実だけです。したがって、単純で静的にはんだ付けされた少数のトランジスタの代わりに、ソフトウェアを理解する数百万のトランジスタを使用します。したがって、用語は「ハードウェアはソフトウェアを理解できるようになった」とする必要があります。
アーケードゲームの戦車(1976年頃)とホームコンソールゲームの戦闘(1977年)を比較すると、40年前でもソフトウェアがハードウェアに取って代わることができる素晴らしい例が見つかります。
アーケードゲームの戦車(1976年頃)では、2人のプレイヤーが戦車を運転し、お互いに撃ち合うことができました。プロセッサは含まれていませんでしたが、電子ビーム、タンク、ショットの水平位置と垂直位置、およびプレーヤーのスコア、回転角度、経過時間を追跡するためのハードウェアカウンターがありました。スコア、プレーヤーの戦車の形状、および背景に関連付けられたビットマップデータを出力するためのハードワイヤードロジックがありました。
Atari 2600ビデオコンピュータシステム(1977年頃の家庭用ゲームコンソール)には、2つのビットマップオブジェクトと4つの可変幅パルスジェネレータの水平(ただし垂直ではない!)位置を追跡するハードウェアが含まれ、20ビット幅のローを保持して出力します。 -解像度のプレイフィールドグラフィックパターンと2つの高解像度8ビットパターン、プレーヤー、背景、プレイフィールドの色をラッチし、さまざまなオブジェクト間の衝突を検出します。汎用のプログラマブルタイマーも含まれていましたが、ハードウェアには上記以外の機能はほとんどありませんでした。それにもかかわらず、ハードウェアはゲームタンクのハードウェアよりはるかにシンプルですが、2K ROMカートリッジコンバットにより、2600は同じ基本的なゲームをプレイできますが、他の多くの機能(さまざまな車両やアーケードマシンのハードウェアのほとんどをソフトウェアに置き換えることができるためです。興味深いことに、Atari 2600は、おそらく市販のマイクロプロセッサベースの家庭用ビデオゲームシステムの2番目に簡単なハードウェアプラットフォームですが、ハードウェアからソフトウェアへの置き換えを容易にするように設計されているため、正しくプログラムされていると、競合他社の多くを一周できます。
ニュアンスは十分に取り組まれていますが、ハードウェアをソフトウェアに置き換えることはほとんど不可能であるということで、OPの障害は可能だと思います。 「ハードウェア」には、「ソフトウェア」ソリューションよりも「ハードウェア」が大幅に少なくなります。
違いは、プロセス/アルゴリズム/計算のロジックがハードウェアとソフトウェアの間で移動できることです。多くの例が示されているので、詳しく説明しません。
「ソフトウェアはハードウェアを置き換えることができる」という表現は、明確な利点がない限り、ハードウェアの問題を解決しようとしない警告です。ソフトウェアは、ハードウェアに比べて、開発コストが10倍から50倍安く、ユニットあたりの生産コストがほとんど無限です。ハードウェアでXを実行することは、Xがソフトウェアで効率的に実行できない場合を除いて、勝つ解決策にはなりません。