ハードウェア/ソフトウェアインターフェースおよびオペレーティングシステムに関する初心者向けコースでは、多くの場合、ハードウェアの一部をソフトウェアに、またはその逆に置き換える方が良いかどうかというトピックが出てきます。接続できません。
ハードウェア/ソフトウェアインターフェースおよびオペレーティングシステムに関する初心者向けコースでは、多くの場合、ハードウェアの一部をソフトウェアに、またはその逆に置き換える方が良いかどうかというトピックが出てきます。接続できません。
回答:
他の答えが欠けているという基本的なつながりはこれだと思います:
汎用コンピューター(CPUなど)があれば、定義したほとんどすべての計算を実行するようにプログラムできます。ただし、特殊なハードウェアのほうがパフォーマンスが高い場合や、価値がまったくない場合があります。
(この回答はデスクトップ処理に焦点を当てており、そのドメインの例を使用しています)
1990年代半ばから後半にかけてPCゲームを覚えるのに十分な年齢であれば、おそらくQuakeのようなFPSゲームを覚えているでしょう。CPUがグラフィックスのレンダリングに必要な計算を実行したことを意味する「ソフトウェアレンダリング」から始まりました。一方、CPUは入力処理、オーディオ処理、AI処理なども実行する必要がありました。CPUリソースに大きな負担がかかりました。さらに、グラフィックス処理はメインストリームCPU(当時または現在)にはあまり適していません。非常に並列度の高いタスクになる傾向があり、最新のハイエンドCPUよりも多くのコアが必要です(8)。
グラフィック処理をソフトウェアからハードウェアに移行しました。3dfxVoodooとNvidia TNT(現在はGeForce)を導入しました。これらは、CPUからGPUに処理をオフロードする特殊なグラフィックカードでした。これにより、ワークロードが分散され、同じ量の作業を行うためのより多くのコンピューティングリソースが提供されただけでなく、グラフィックスカードは、3Dグラフィックスをより速く、CPUよりも多くの機能でレンダリングできる特殊なハードウェアでした。
現代の時代に早送りし、デスクトップには非CPUグラフィックが必要です。オペレーティングシステムでさえ、GPUなしでは機能できません。CPUが実際にGPUを実際に統合することは非常に重要です。1
DVDが新品のとき、デスクトップコンピューターにDVDドライブをインストールできました。ただし、その日のCPUは、DVDビデオおよびオーディオストリームをst音なしでデコードするほど強力ではありませんでした。最初は、デコードを実行するために専用のPCIボードが必要でした。これは、DVDフォーマットをデコードするために特別に構築された特別なハードウェアでした。3Dグラフィックスと同様に、より多くのコンピューティングリソースを提供するだけでなく、タスク用にカスタム構築されたため、DVDの再生がスムーズになります。
CPUがさらに強力になるにつれて、DVDを「ソフトウェアで」、つまり「汎用コンピューターで」デコードすることが可能になりました。効率の低いプロセッサでも、DVD再生をユーザーの期待どおりに動作させるのに十分な生の速度とパイプラインの最適化がありました。
現在、CPU はDVDが導入されたときの数百または数千倍も強力です2。ブルーレイが登場したとき、汎用ハードウェアはタスクを処理するのに十分なほど強力だったため、特殊なハードウェアは必要ありませんでした。
最新のIntel CPUには、H.264エンコードおよびデコード用の特別な命令があります。これは、汎用CPUがすべて同じチップ内で特殊な機能を獲得する傾向の一部です。CPUには同様の回路が含まれているため、DVDの場合のようにH.264を効率的にデコードするために別のPCI Expressボードは必要ありません。
1 GPUは、グラフィカルな計算を実行するために特別に設計されたプロセッサを指します。古い2DグラフィックスカードはGPU ではなく、単にモニターと通信するためのDACを備えたフレームバッファでした。違いは、GPUには特定の種類の計算に優れた特殊なプロセッサが含まれており、時間が経つにつれて、実際にはプログラム可能な(シェーダー)ことです。グラフィックスハードウェアには、フレームバッファ内のデータをケーブル(VGA、DVI、HDMI、DisplayPort)で出力でき、モニターが認識できる形式に変換するために必要な専用回路が常に含まれています。これは、計算を特殊なハードウェアにオフロードするという議論とは無関係です。
2 DVD-Videoは、Pentium 2も新しくリリースされた1997年にリリースされました。これは、CPUの電力が急速に増加していた時代でした。DVDデコーダーを備えた新しいP2コンピューターを検討するか、少し古いP1にインストールすることを検討できます。WikipediaのMIPSリストを使用した最新世代の6 Core i7と比較してください。最新のCPUは590〜1,690倍高速です。これは、クロック速度に一部起因しますが、標準としての複数のコアへの移行と、クロックティックごとにコアごとにより多くの作業を行う最新のCPUへの移行も原因です。また、テクノロジーの進歩に伴い、デスクトップユーザーおよびx86サーバー市場を支配するIntelは、デスクトップユーザーが実行したい操作(ビデオのデコードなど)を高速化するための特別な指示を追加します。
私は誰もまだ最も顕著な例の1つに言及していないことに驚いています:ソフトウェア無線です。
50年ほど前の現代のスマートフォンを1960年代半ばから有能なエンジニアに見せれば、彼はそのほとんどを理解できるでしょう。スーパーコンピューターをポケットに収まるものに減らすことができますか?小切手。超高品質のカラーテレビに相当するものをパッケージに入れることができますか?小切手。当時のコンピューターよりもはるかに高速で、ストレージなどがはるかに多いということですか?小切手。そのような複雑な機能を実行できるソフトウェアが作成されていますか?小切手。
しかし、有能なエンジニアに、このパッケージには非常に効率的なトランスミッターとセンシティブなレシーバーのセットが含まれていることを伝えてください。 ; 高速データを建物内のどこかの基地局と通信する別のデジタルトランシーバ。低電力ウェアラブルデバイスと通信するさらに別のデジタルトランシーバー。そして中間軌道の衛星から弱い信号を拾う別の受信機...彼はあなたを嘘つきと呼ぶでしょう。
このような高感度の受信機は、隣接する局を除外して目的の信号を選択する多数の調整された回路なしでは構築できないことを知っているため、彼はあなたを嘘つきと呼ぶでしょう。そして、そのような回路には、コンデンサやインダクタなど、テクノロジーよりも物理学によって定義されたサイズの部品が必要です。
その後、現代のラジオでは、そのほとんどがソフトウェアで行われていることを説明する必要があります。アンテナから入ってくる信号が中間周波数に変換されて少し増幅された後、A / Dコンバーターでサンプリングされること。その後の処理はデジタルシグナルプロセッサで行われます。昔ながらのハイエンド無線で大量のハードウェアを必要としていたチューニング、フィルタリングはすべて、数学的な方程式の形で記述できます。そして、それが可能であれば、これらの方程式はDSPによってリアルタイムで実行できます。
これは、ハードウェアを置き換えるソフトウェアの最も顕著な例の1つだと思います。その結果、私たちはポケットにスマートフォンを持ち込み、1960年代の有能なエンジニアでさえ、魔法のようなものになりました。
これと比較して、最近のガレージのドア開閉装置、電子式バスルームスケール、またはテレビのリモコンの単純なロジックは、カスタムハードウェアの代わりに汎用マイクロコントローラーとソフトウェアを使用して実装されるという考えは、ほとんど些細なことです(そして、それは確かにたくさんあります)架空の1960年代のエンジニアにとって、ソフトウェア無線よりも理解しやすいものです。)
この回路を考えてみましょう:
フリップフロップ、別名双安定マルチバイブレーターです。次のコードに置き換えることができます。
static bool toggle;
if (toggle == true)
{
lblTop.BackColor = Color.Black;
lblBottom.back Color = Color.Red;
}
else
{
lblTop.BackColor = Color.Red;
lblBottom.BackColor = Color.Black;
}
toggle = !toggle;
それはまさにその音の意味を意味します。
特に有名な例は、スティーブウォズニアックがApple II用に設計したディスクIIドライブです。
主な技術革新は、競合他社がハードウェアに依存している間にソフトウェアを使用してコントローラーをコンパクトにすることでした。Appleの電子技術者であるビルフェルナンデスは、「[Wozniak's]デザインの主な利点は、通常の60〜70チップではなく6チップしか使用しなかったことでした」
おそらくあなたがよく知っている別の例:エミュレーター。ハードウェア(およびソフトウェア)のセット全体を完全にソフトウェアで置き換えます。CPU、さまざまな制御チップ、さらにはストレージデバイス。
すべてのハードウェアを排除することはできません。最終的には、ソフトウェアを実行するために何かが必要になります。ただし、一般に、ハードウェアに実装できるロジックタスクはソフトウェアにも実装できます(パフォーマンスは同一ではない場合もありますが、基盤となるハードウェアと実装に応じて、パフォーマンスが異なる場合があります。
これが当てはまるもう1つの分野はシンセサイザーです。
初期のシンセサイザーは、波形を直接生成し、回路(フィルター、アンプなど)を介して波形を変更する100%アナログハードウェアでした。サウンドをデジタルで合成することは可能でしたが、平均的な人には手に入らないコンピューティングリソース(実際のメインフレームとカスタムデジタル/アナログコンバーターハードウェア)が必要でした。
チップの製造が改善されると、シンセサイザーは純粋なアナログからデジタル信号で制御されるがアナログ信号を生成するシンセサイザーチップに移行し、その後純粋なデジタル合成(サンプル再生、FM合成、真の加算合成など)に移行しました。
今日、プロセッサは、プログラマが古典的なアナログシンセサイザーのコンピューターバージョンを作成して、リアルタイムで動作をシミュレートすることにより、元の回路の動作を正確に複製できるようにします。実際、電話とタブレットは、これらの再作成を実行します。コルグIMS-20例です。
クラシックシンセサイザーと新しいシンセサイザーの両方が、Ableton Live、Logic、Cubaseなどのデジタルオーディオプログラム用のVSTまたはAUプラグインとして利用可能であり、これらを使用しないとスペースやお金がない人にシンセサイザーへのアクセスを提供しますそれら。
編集:この時点で、VCVRackについても言及する必要があります。これは、リアルタイムでアナログモジュラー合成をシミュレートします。数秒の音楽の数時間のレンダリング時間からかなり前進。
>:*3
です。
以前は、カットは非常に明確でした。迅速な実行を必要とするほとんどのものは、ハードウェアに実装する必要がありました。たとえば、周波数を生成するマルチバイブレーターを取り上げます。少し前に、(固定の)周波数を生成するために、いくつかのトランジスタ、コンデンサ、そして最終的には水晶が必要でした。現在、わずか数セントほどの価格の安価なマイクロコントローラーがあります。これらは非常に高速であるため、簡単に使用してマルチバイブレータを作成できます。さらに、以前はソフトウェアを使用して、異なるハードウェアをはんだ付けする必要があった周波数を簡単に制御できます。ただし、特定の(ただし現在はかなり高い)周波数を超えるには、純粋なハードウェアが必要です。両方の間に線がありますが、ソフトウェアで解決できる部分は(指数関数的に)成長しています。
編集実際に「ソフトウェアはハードウェアを置き換えることができます」は実際には正しくありません。ハードウェアが非常に強力になったので、それを使用してハードウェアをエミュレートするソフトウェアを実行できます。そのため、いくつかの単純だが静的にはんだ付けされたトランジスタの代わりに、ソフトウェアを理解する何百万ものトランジスタを使用します。そのため、用語は「ハードウェアはソフトウェアを理解できるようになりました」とすべきです。
アーケードゲームのタンク(1976年頃)とホームコンソールゲームの戦闘(1977年)を比較すると、ソフトウェアが40年前でもハードウェアを置き換えることができる良い例が得られます。
アーケードゲームタンク(1976年頃)では、2人のプレイヤーが戦車を駆け回ってお互いに撃ち合いました。プロセッサは一切含まれていませんが、代わりに、電子ビーム、タンク、ショットの水平および垂直位置、プレイヤーのスコア、回転角度、経過時間を追跡するためのハードウェアカウンターがありました。スコア、プレイヤーの戦車の形状、および背景に関連付けられたビットマップデータを出力するハードワイヤードロジックがありました。
Atari 2600 Video Computer System(1977年頃の家庭用ゲーム機)には、2つのビットマップオブジェクトと4つの可変幅パルスジェネレーターの水平(垂直ではない!)位置を追跡し、20ビット幅のローをホールドしてクロックアウトするハードウェアが含まれていました-解像度プレイフィールドグラフィックパターン、2つの高解像度8ビットパターン、プレーヤー、背景、およびプレイフィールドの色をラッチし、さまざまなオブジェクト間の衝突を検出します。また、汎用のプログラマブルタイマーも含まれていましたが、ハードウェアには上記以外のものはほとんどありませんでした。それにもかかわらず、ハードウェアはゲームタンクのハードウェアよりもはるかに単純ですが、2K ROMカートリッジの戦闘では、2600が同じ基本ゲームをプレイできますが、他の多くの機能(さまざまな車両と背景、ショットの跳ね返りなど)を備えていますアーケードマシンのほとんどを置き換えることができます」ハードウェアとソフトウェア。興味深いことに、Atari 2600はおそらく市販のマイクロプロセッサベースの家庭用ビデオゲームシステムの中で2番目にシンプルなハードウェアプラットフォームですが、ハードウェアをソフトウェアに簡単に交換できるように設計されているため、正しくプログラムされた場合、競合他社。
「ソフトウェアはハードウェアを置き換えることができる」というフレーズは、非常に明確な利点がない限り、ハードウェアの問題を解決しようとしない警告です。ソフトウェアは、ハードウェアよりも開発が10倍から50倍安く、ユニットあたりの生産がほぼ無限に安価です。ハードウェアでXを実行することは、ソフトウェアでXを実際に効率的に実行できない場合を除き、成功するソリューションにはなりません。
仮想メモリを備えた初期のコンピューターでは、TLBミスが発生すると、新しいページエントリを読み込むためにタスクを切り替える必要がありました。OSソフトウェアの一部が正しいプロセスを見つけ、ページテーブルを調べて、正しいエントリを見つけてTLBに書き戻します。元のプロセスに戻って続行する前に。
現在、ほとんどのCPUはハードウェアを使用してプロセスを実行し、ページテーブルの読み取り、ページテーブルのウォーク、TLBの更新を行います。
どちらの方法でも、ページフォールトを処理するためにソフトウェアを使用する必要がありますが、TLBがページフォールトを簡単に上回るため、ハードウェアウォークはソフトウェアよりも優れています。
ジェネレルでは、繰り返し処理する必要がある単純な手順がある場合、ハードウェアの交換を見つけます。複雑な制御フローを持つ複雑なハードウェアソリューションがある場合は、ソフトウェアを使用してハードウェアを簡素化できます。
ソフトウェアがハードウェアを置き換えたり、その逆を行うことができる多くの例があります。
この典型的な例は、数学ルックアップテーブルです。毎回共通の式の結果を計算する代わりに、それらは数学コプロセッサーの内部に保存され、必要なときに単に参照されます。
ほとんどの人はおそらくオーディオフィルターと、ペダルやアンプなどの実際の楽器やデバイスを模倣できるソフトウェアに既に精通しているでしょう。
物理的に同等のものよりも高速または安価な場合は、仮想的に作成できるハードウェアが使用されます。