どのような言語でハイパースレッディングを実装できますか?それはオブジェクト指向システムの一部に過ぎないのですか、それともCで実装できるのでしょうか?ハイパースレッディングプログラミング言語
ありがとうございました。
どのような言語でハイパースレッディングを実装できますか?それはオブジェクト指向システムの一部に過ぎないのですか、それともCで実装できるのでしょうか?ハイパースレッディングプログラミング言語
ありがとうございました。
スレッドをサポートするすべての言語とランタイムは、ハイパースレッディングをサポートします。
ハイパースレッディングは、複数のスレッド間でCPUを多重化する方法です。実際のCPUは1つのみですが、2つのCPUとしてオペレーティングシステムに表示されるため、2つのスレッドをスケジューリングできます。 1つのスレッド(メモリ待ち、長いFPU操作など)上のCPU内のストールは、CPUが他のスレッドからコードを実行できるようにします。
ハイパースレッディングに関する詳細はWikipediaです。
ハイパースレッディングは、ほとんどの場合、システム内にプロセッサーを増やすことと同じです。あなたの言語がスレッドをサポートしていなくても、プログラムが別のコピーを作成したり、(オペレーティングシステムでサポートされている場合は)利用可能なプロセッサと均衡を保つワーカープロセスを起動させることは可能です。
言語のスレッドサポートを参照する必要がありますが、スレッドがプログラムを簡単に複雑にし、コードを非同期に実行できるため、バグを見つけにくくなることに注意してください。
あなたの質問への答えは「おそらく、それは依存しています」です。
あなたの他の質問は、ランタイムとコンパイラのサポートによって、Cで複数のスレッドを簡単に実装することができます。たとえば、OpenMPの拡張子http://en.wikipedia.org/wiki/OpenMPが役に立ちます。
実際にはそれよりも細かいです。異なる計算単位(算術、浮動小数点)は、異なるスレッドからの命令の結果を同時に計算することができる。 –
ええ...より完全な答えは、アウトオブオーダーの実行とパイプラインのストールのコンテキストでこれを与えるだろうが、私はヘネシーとパターソンの700ページをここに回答に圧縮したくない:) – Michael
実際には、私はAtomがIn-Orderの部分であるため、異なる計算単位が同時に可能であるかどうかは分かりません。 – Michael