アプリ版:「スタンプのみでお礼する」機能のリリースについて

ハイパースレッディングは空き時間を活用して、2つのCPUがあるように見せる技術である。

CPUの動作として
1.命令の取り出し
2.命令の解釈(デコード)
3.命令の実行
がある。
ハイパースレッディングは命令の取り出しをどうしているのか。
例えば、2つのジョブA,BがハイパースレッディングのCPU上で動作しているとき
命令語長をsとする。
1回目の命令の取り出しはAのa番地から行い、2番目の命令の取り出しはBのb番地から、
3回目の命令の取り出しはAのa+s番地から行い、4番目の命令の取り出しはBのb+s番地から、
5回目の命令の取り出しはAのa+2s番地から行い、6番目の命令の取り出しはBのb+2s番地から、
と交互に取り出すのでしょうか。
それとも、「命令の取り出し口」が2つあるのでしょうか。
わかっている方がおりましたら、教えて下さい。

A 回答 (3件)

昔読んだ話(かつ私はAMD党なので興味がなかった)ですけど、確かハイパースレッディングって


・命令リードアウト
・命令デコード
・命令分配(スケジューリング)
・命令実行
のスケジュール段で2系統の実行ユニットがあるものとして命令を分配するんじゃなかったかなと。
つまりリードアウトユニットやデコードユニットは共有しててどっちの実行ラインからのリードアウト命令も受け付ける設計だったような。

うろ覚えも良いところの知識ですけども。
    • good
    • 0

質問者様の解釈では、『「命令の取り出し口」が2つある』になります。



質問者様が解説されている内容はシングルプロセッサにおけるスレッド管理に近い動きです。
「2つのジョブA,B」とは、すなわち「スレッド」を意味します。

CPUでのスレッド管理は、ブラウン管TVで縦線を描くようなイメージになります。
肉眼では複数の縦線が同時に表示されているように見えますが、実際には横方向に点を1つずつ表示させ、その表示を下にずらして行く事で縦線に見せています。

その個々の縦線が「スレッド」と呼ばれ、個々のスレッドの処理は小刻みに切り替えられ、少しずつ処理を行って行く事で、人間にはあたかも全く同時に複数の処理が実行されているように見えます。

ハイパースレッディングとは、この小刻みに行われているスレッドの処理内で、本来は排他ロックされて他の処理には流用できない空き部分を別スレッドの処理へ配分してしまう事によって、CPUを取り巻く他のハードウェアにもあたかも複数の処理が全く同時に行われている(つまり物理的に2つのCPUが存在している)ように見せかける技術です。

複数のスレッドで常に全く同じ部分を使用する処理が続いた場合や、複数のスレッドの処理が競合してしまうような場合、通常のシングルプロセッサよりも処理が遅くなってしまう可能性もあります。

参考URL:http://japan.cnet.com/news/ent/story/0,200005602 …
    • good
    • 0

簡単に言えばCPUは一個だけどCPUへの出入り口(バス)が2個あるんです。


ただ、CPUに含まれる論理演算装置(ALU)とか同時に使えないから
効率的には良くて20%くらいしか向上しません。

命令については、命令レジスタなどで保持してデコードを待つんですが
レジスタ・パイプラインなど全て埋まってるわけではないので
そこの空いてる場所にもう一つのリソースを集め見せ掛けの
スレッド(CPU)で処理させます。
処理についてはアウト・オブ・オーダーとか
複雑すぎて説明は難しいです。
    • good
    • 0
この回答へのお礼

皆様、回答ありがとうございます。

次のパソコンのCPUにi7を予定していてます。
i7の4コアのうち
3つのコア(3多重)でプログラムを動かし、
1つのコアをOSに割り当てるように考えてます。

ふと、ハイパースレッディングはどのように命令取り出すのかとの疑問があがり、質問した訳です。
やはり、1コアの内部構造は「CPUは一個だけどCPUへの出入り口(バス)が2個」あるんです。
これでよく分かりました。
皆様、回答ありがとうございました。

お礼日時:2010/01/27 20:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!