うCPUのスレッドはどのような関連の論理スレッドコードについて教えてください。

StackOverflow https://stackoverflow.com/questions/916048

質問

いての文献の新しいCPUなどの インテル®Xeon®"Nehalem-EX" として8コアと16のスレッド)。佐村トミ】アクリルの心臓【オリ話をするのか。私たちはこの基準でSPARCSおいても、確実にこな種類の論理スレッドの芽生によるコードについて教えてください。このhyperthreading再。

役に立ちましたか?

解決

あり Nehalemに基づく プロセッサの実装 ハイパースレッディング.

新Nehalem-EXするを参照しては8つの物理コア数が各中核として2つの論理コア数の合計16の論理コアを遂行する16の申請スレッド一つのプロセッサー

この技術に用いるハイパースレッディング対応Pentium4プロセッサー、最近では、Atomプロセッサです。私のEee PCがシングルコアAtom™プロセッサーの論理コアは、Windowsタスクマネージャーを示す二つのCPUグラフ;各論理コアです。

太陽 UltraSPARC T2 (T1ることも可能で 同時multithreading (インテルの実装ではのハイパースレッディング、商標Intel)することができるシングルコアとして現れる複数の論理コアを実行し、複数のスレッド一つのコアです。

その背後に同時multithreadingは複数のレジスタに保存プロセッサーの状態で表示されることが実際に複数のコアを単一のコアで複数のフル-セットのハードウェアが登録する

の物理施設などのALUおよびFPUが増えないこともありますが、よりセットの登録り付ける物理コアでよりよい活用の可能プロセッサの資源です。のコアがされていない飽和を実行する際に、単一のスレッドで実行中の数が飽和すべてのユニットを最大限ます。

いうプログラマー?

することも必要なものを書くマルチスレッドソフトウェア--を有するプログラムのみで単一のスレッドのみご利用いただくことができ単一の論理コアです。みよくマネジ付きコードを行っていただきますと、の巨大な数の論理コアをこれらのプロセッサです。

でも同時multithreadingのコードが実行され一スレッド数の論理コアです。

他のヒント

マルチスレッド・プロセッサの極端はバレルプロセッサです。このプロセッサは、ラウンドロビン方式でも同様に、複数のスレッド間のスロットを分割SMTの形態です。実行ユニットの同じセットを使用しながら、これを行うには、それだけで各種レジスタのコピーが必要です。だから、4つのクロックサイクルでは、パイプライン内のスレッド0-3からコードをかけることになります。

あなたはより多くのまたはより少ない程度に、同様の方法で働いてこれらのプロセッサの残りの部分と考えることができます。代わりの周りに均等にスロットを分配する、それだけに起因プロセッサで制御またはデータハザードのいずれかに空であるスロットを使用することができます。

例えば、分岐が成立したとき、パイプライン内の命令はフラッシュする必要があるかもしれません。代わりに、完全にすべてを洗い流すの、スロットのいくつかは、他のスレッドのために使用することができます。全体的なアイデアは、CPUサイクルを無駄にしないことにより、パフォーマンスを向上させることです。

これは、複数のスレッドがハードウェアで動作する方法です。

これは、ハイパースレッディング名前を変更していない - (あなたがへのリンクを与えたことは、このWebページに書かれている)ハイパースレッディングである

単純に、プロセッサは、コアの倍数にタスクのバランスをとることができますので、それは、16個のコアを持っているOSを伝えます。ハイパースレッディング・テクノロジーは、いくつかのケースでは二つの異なるプログラム/スレッドから二つの異なる命令が同時に一つのコア上で実行することができbecouseいくつかの利点を与えます。しかし、確かに、それは200%のスピードアップを与えることはありません。私は、このようなプロセッサ上で動作しませんでしたが、私はあなたが約10%-20%の追加のCPU時間を得ることができると思います。

このような問題に記載されるもののようなハードウェアレベルのスレッドにOSレベルのスレッドをマッピングする各オペレーティングシステムのスレッドモデルまでである。

もちろん、あなたがマッピングを行うOSコードの話をしている場合を除きアプリケーションプログラマが使用する高レベルのプログラミング言語によって生成された論理スレッドが、まだハードウェアから削除OSレベルです。

ハイパースレッディング(ちなみに、Intelの商標)の各スレッドが実際に同時に実行することができます。したがって、この場合には、あなたが同時に8X2のアプリケーションスレッドを実行することができます。

パンフレットから...

インテルNehalemのアーキテクチャーは、インテル独自の45nmプロセスのhigh-kメタルゲート技術プロセス上に構築された。

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

シングルCPUにこれを比較し、各スレッドがスケジュールされなければならないと高々一つのスレッドだけがアクティブになり、単一コアシステム - 。その1つの実行中のCPUバウンドのタスクとI / O転送を待っている他の人

もともと同時アクティビティのセットをモデル化するためにも使用されたねじ切りやI / Oを行っている間も応答したシステムの外観を生成するために(実際には、並列に実行しないモデルではありません)。例えばスレッドせずに、あなたのワードプロセッサは、docを節約しながら失速するように見えるでしょう。

は、長年にわたり、私は私のデスクトップアプリケーションで複数のスレッドを持つという考えに抵抗した - それは、コードを複雑にし、潜在的にパフォーマンスが低下し - 巻き込まするOSのカーネルを必要とするすべてのそれらのミューテックスの操作を考えます。スレッドの実際の並列実行の出現で、私の反論が低減されますが、私はまだ、単一のプロセスで複数のプロセスではなく、複数のスレッドがより良いアプローチであると信じています。

クリス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top