コンピュータにソーティングネットワークなどの専用ハードウェアが付属していないのはなぜですか?


10

私たちのやり方をプログラミングする代わりに、「ソート」などの一般的なタスクの仕様を作成して、環境にコンパイルして、ハードウェアを最大限に活用させてみませんか?このようにして、ソートネットワークなどの新しい専用ハードウェアを搭載したコンピューターを出荷でき、既存のコードで自動的に動作します。


2
PCI FPGAボードを購入して、必要な拡張機能を実装してください。
SK-logic

ハードウェアは魔法ではありません。多くのことは、特殊なハードウェアではそれほど(またはまったく)高速化できません。たとえ高速化しても、既存のハードウェアを改造(または少なくとも再コンパイル)しなければならないことがよくあります。yosefk.com/blog/its-done-in-hardware-so-its-cheap.htmlを


3
@WorldEngineerそれがどのように絵に入るのかわかりません。あなたの平均的なユーザーは、最近のCPUの80%が何のためにあるのかを知りません。彼らは、プログラムを高速化すると言われているので満足しています(そしてこれには真実の核があります)。ソートが確かにOPと同じくらい一般的であり、専用ハードウェアで最適化できる場合は、ブランチ予測ツールの隣に配置し(「これはガーデニングって何?」)、アプリケーションXとYを5%作成したとプレスリリースを発行します。より速く、それを売る。

1
これは、ピーク時のパフォーマンスではなくエネルギー効率を目標としたConservation Coresの考え方を思い出させます。
ポールA.クレイトン

回答:


19

まず、コンピュータには専用のハードウェアが付属しています。数年前から販売されているすべてのラップトップおよびデスクトップコンピューターには、ビデオやゲームアプリケーションなどに必要な視覚処理アルゴリズムを処理するグラフィックスプロセッシングユニットという特殊なコプロセッサーが搭載されています。非常に大規模なコンピュータ(たとえば、「スーパーコンピュータ」、IBMのSystem Zファミリ)には、数値処理(「ベクトル処理」)などを処理するためのさまざまな専用プロセッサがあります。

第2に、ソートはコンピューティングで最もよく研​​究されている側面の1つであり、最も単純な場合以上にハードウェア組み込むには複雑すぎることがわかります。並べ替えとは、速度と正確さのすべてです。速度は、アルゴリズムの選択、データのタイプとバリエーション、およびデータの量によって異なります。正確さは、データのタイプとコンテキストによって異なります。これは、CPUのネイティブワードサイズ内に収まる整数の中規模の配列をソートするために積極的に簡単です(たとえば、、31または63ビットのプラス記号)。ASCII値だけではない文字列の並べ替えは非常に複雑です。IBMは、20年前に国境や一般的な使用法の文脈で文字セットの問題について議論した500ページ以上の本を出版しました。そして、不連続なデータの問題があります-リンクされたリストのソートには、メモリ全体でポインタを追跡することが含まれます。


10

主な問題は、並べ替えアルゴリズムには(1)柔軟性が必要であり、(2)とにかくハードウェアを使用して高速化することが非常に難しいことです。

1つは、並べ替えアルゴリズムは、プロセッサのメモリ帯域幅を使い尽くすのに十分な速さで既に簡単に処理できることです。プロセッサは、データがメインメモリに前後に移動するのを待つ時間の大部分を費やしています。ハードウェアアクセラレータによる並べ替えコプロセッサまたは特別な並べ替え命令でも同じ問題が発生します。

このメモリ帯域幅に対処する方法は、より優れた「局所性」を備えたより優れたアルゴリズムとデータ構造を使用することであり、特に「キャッシュ忘却アルゴリズム」(これらは動作するという意味で気づいていない)キャッシュの詳細に関係なく、「キャッシュ対応」アルゴリズムは特定のキャッシュページサイズなどに合わせて調整されます。

対照的に、メディアアプリケーション(オーディオとグラフィックス、特に3Dグラフィックス)は、非常に反復的な構造を利用しています。もちろん、柔軟性はありますが、非常によく構造化された大規模な基盤の上に構築されています。これにより、グラフィックスアクセラレーションは、Blitting(構成可能ですが、非常に構造化されたブロックコピー操作)や線/ポリゴンの描画などで簡単に開始できます。これは、グラフィックスとサウンドの処理がより高度になるにつれて、ベクター演算が最適化の明らかなターゲットになったことを意味します-最初のMMX(整数のベクトル)、次にSSE(浮動小数点のベクトル)。これは、古い固定機能の3Dグラフィックパイプラインが3Dグラフィックハードウェアに移動されたときに、3Dグラフィックエンジンがどのように機能するかについてかなり明確に定義された構造があったことを意味します。

しかし、3Dグラフィックスでは、ハードウェアで行われていたことがソフトウェアで行われ、柔軟性が生まれます。たとえば、シェーダーはソフトウェアであり、これにより、さまざまなマテリアルの外観を提供するさまざまなシェーダーを幅広く利用できます。ただし、そのソフトウェアは、一般的なソフトウェアよりもはるかに構造化された方法で機能するため、より専門的なハードウェアプラットフォームを使用できます。これが、グラフィックカードが物理からパスワードの解読まですべてを高速化できる理由です。同じモデルに適合し、最新のグラフィックプロセッサが提供する命令セットを使用して効率的に実装できるアプリケーションです。

グラフィックプロセッサは、デジタルシグナルプロセッサの精神的または実際の子孫になりました。デジタルシグナルプロセッサは、デジタルシグナル(オーディオなど)を処理するための一種の特殊なプロセッサでした(おそらく今もそうです)。

これが最終的なポイントにつながります-ソートアルゴリズムハードウェアによって加速できます。データによっては、プロセッサでMMXまたはSSE(single-instruction-multiple-data)命令を使用してソートを処理できますが、メモリ帯域幅の問題のため、おそらくあまり意味がありません-電力効率がもう少し高くなる可能性がありますそのように、しかし。ただし、グラフィックハードウェアを使用することもできます。そうすることで、グラフィックカードのメモリ帯域幅が大幅に向上するというメリットが得られます。この方法ですべての種類を置き換えることはできませんが、それは確かに可能であり、おそらく適切な場所で行われます。

なぜなら、様々な経済的、実用的な問題のIOW、ハードウェアの設計、特に、本当に意味がないソートのような比較的狭い作業を加速します。より広範囲のタスクを加速する機能、または既存の加速ハードウェアをより広範囲のタスクに適用可能にする機能は、多くの場合、より理にかなっています。


3

しかし、そうです!それらは命令セット拡張と呼ばれます。(SSEのようなもの)

特定のタスクは、ソフトウェアでの実装が非常に優れています。通常、これらの実装は十分に機能するため、特別なハードウェアは必要ありません。ある種の特殊なハードウェアを作成する場合、それを価値のあるものにするためには、非常に幅広いアプリケーションが必要になります。

これを機能させることができるハードウェアを見てみると、FPGAのようなものを見ていると思います。FPGAでわかるように、チップは多くのアプリケーションに適用できない一方で、はるかに高価になります。


私はSSEをググる必要がありますが、前もって、ソートはおそらく普遍的です。ハードウェアレベルで実装されていますか?
MaiaVictor 2013年

えっと、私たちがいるので、本を勧めますか?
MaiaVictor 2013年

並べ替えネットワークが例として使用されているため、CPUスタイルのプロセッサで一般的に実装されているジョブ固有の最適化について話していました。SSEまたはその他の命令セットに特定の最適化のソートが含まれているかどうかはわかりません。私はグーグル・ソーティング・ネットワークをしました、そして最適化された一般的な実装があるので、実装が正しく行われればソフトウェアの実装も同様に仕事をすることができると思います。
Onno

ほとんどの命令セット拡張は、例として使用した並べ替えネットワークよりも低いレベルで動作することを指摘する必要がありますが、この方法で並べ替えを行うことができるマルチレジスタ最適化を考案することは不可能ではありません。しかし、CPUメーカーにとっての疑問は、「コストを正当化するのに十分な効果があるか」ということです。
恩野
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.