アカウント名:
パスワード:
しかしながら一般的なマルチコアはシングルコアの最大2倍の性能を発揮するのに対し、HyperThreadingはせいぜい1.3倍です。これは一般的なマルチコアがパイプラインそのものを2つ備えるのに対し、HyperThreadingは1つのパイプラインを使いまわすに過ぎないためです。たしかに回路規模あたりの性能はSMTによって改善されますが、パイプラインの数そのものを増やさないと高が知れています。だからこそパイプラインの数(すなわちコアの数)が問題になるのであり、マルチコアとSMTを区別しなければならないゆえんです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
何かメニーコアを理解してない人が多い気がする。 (スコア:2, 興味深い)
Re: (スコア:1)
Re: (スコア:1)
# まー初期の2コアで「そのまま2つ入れた」ってーのもあったけど。
納得できないなら...いくつか質問するね。
1.ムーアの法則でも20-30年だけど、今騒がなきゃならん程近い将来に1024個入るようになると思う?
2.仮に入ったとしてI/O考えたらマトモに1024個動くと思う?
3.Atomがin-orderなのはなぜ?
4.IA64が期待外れだった理由は?
5.トランスメタがパッとしなかった理由は?
6.インテルがしきりに「メニーコア前提>ソフト屋」って唱えてる理由は?
このへん考えるとメニーコアはSMTの親玉だとしか思えんのだよ。
俺の答えは、
Re: (スコア:1)
SMTベースのメニーコアという話を寡聞にしてはじめて聞いたので、あたかもコンセンサスの取れた定義であるかのような書き方に反応してしまいました。
現在の技術トレンドでは、SMTとマルチコアは厳密に区別されると思うのですが、メニーコアがSMTベースだというソースが何かありますでしょうか?
将来的に両者の中間的なものが出てくる可能性は否定しませんが。
Wikipediaによると [wikipedia.org]、マスマーケットのPCのコア数を越えるものをメニーコアというとか書いてます。この文脈でも、「コア」は独立して動作可能なコアですね。
あなたの言うような意味では、
Re: (スコア:1)
ソースと言えるようなのは出せないなぁ...でもそういうのにそんなに遠くない仕事でなんとなく得た知識がベースではある(直接やってるのは違う分野だし推測も少なからず入ってるけど)。でも理由にはさっきの質問だけで十分だと思う。メニーコアは無駄を省いていくとSMTベースになるしかないよ。たとえ一つのチップにプロセッサが1024個入るとしても32768コアをSMTベースで作る方がいいという具合に。
>「コア」は独立して動作可能なコアですね。
そ、ソフト的に全く独立して見えるというのでも十分コア。インテルのプロセッサだとソフトから見たHTとSMPの違いはそれぞれのコンテキストで独立にプロセスを扱えるかどうかくらいなもんで、よく似てるんだ。
>Niagara 3で数年後に2048コアが実現しますね。マルチプロセッサではありますが。
同時にハンドルできるプロセスは(16*8=)128だけだから8ソケット全部使って128コアだね。
Re: (スコア:1)
> 同時にハンドルできるプロセスは(16*8=)128だけだから8ソケット全部使って128コアだね。
16 コア× 16 スレッド× 8 ソケットって書いてるじゃないですか。16スレッドはどこに行ったんですか?
あなたの主張ではSMPとSMTは同一視できるということなのですが、それを考えなくても、同時にハンドルできるスレッドは2048です。
Re: (スコア:1)
Re: (スコア:1)
あなたのいう「プロセス」とは何のことですか?
スレッドではなくて?
Re: (スコア:1)
# なのでプロセスモデルのシステムでSMTのスレッド使うとプロセスを切り替える時にスレッドも全部切り替える必要がある。
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
これは少なくともHyperThreadingに関してはうそですね。
「Magic MP3 Maker GoldでMP3のリッピングを行いながら、同時にXMPEG with DivXで動画のエンコードを行う場合、HTを利用する事で処理時間が22%短縮される」(マイコミ [mycom.co.jp])
あなたの言うようなプロセス排他がかかるとすると、このような複数プロセス同時実行でのパフォーマンス向上は、ありえません。
たしかに、キャッシュの共有などの観点からは同じプロセスのスレッドを実行するのが望ましい場合もありますが、これはそうでなければできないということではないようです。
また、SMTのキャッシュミスを隠蔽するという性質を考えると、メモリの使い方が異なるようなスレッド(プロセスが違っていてもいい)を同時に実行した方がいいという場合もあります。
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
>また、SMTのキャッシュミスを隠蔽するという性質を考えると、メモリの使い方が異なるようなスレッド(プロセスが違っていてもいい)を同時に実行した方がいいという場合もあります。
SMTは同時に十分な数の命令を受け付けていれば命令のストールを隠蔽できるというもので、同時に複数の命令を受け付けていないと全く効果がない。ところが別のプロセスの命令は同時には見えないので同時には取得できない。だからそのパターンでは全く効果がない。カーネルが共有であればカーネルとユーザ空間という組合せも可能だが。
# だから共有部分が少ないマイクロカーネルとSMTはそれほど相性が良くない。
SMTベースのマルチコア(要するにSMTのスレッドにMMUも含めたもの)であればそれができ、同時に実行可能な命令が増える事で単なるSMTよりパイプライン充填率が改善されて回路規模あたりの性能が良くなる。システムがプロセスモデルである限りは。あるいは逆に主要OSがSIPするなりハード側でページ保護機構を持つなりでプロセスモデルを捨てて、全部SMTになるという予想もあり得る。こっちの方が理想的ではあるな。
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
その部分は1プロセス時の記述のようですが。
> ところが別のプロセスの命令は同時には見えないので同時には取得できない。だからそのパターンでは全く効果がない。
> SMTベースのマルチコア(要するにSMTのスレッドにMMUも含めたもの)であればそれができ、同時に実行可能な命令が増える事で単なるSMTよりパイプライン充填率が改善されて回路規模あたりの性能が良くなる
仮想メモリの変換を担当するのはMMUの中でもTLBと呼ばれる部分であり、HyperThreadingの場合は仮想プロセッサごとに1つずつ用意されています。(PC Watch [impress.co.jp])
プロセスの切替時にはTLBがクリアされますが(Linuxの場合 [wikiwiki.jp])、TLBが2つあるので2つの仮想プロセッサは別のプロセスのスレッドを実行することができます。
つまり現状のHyperThreadingであってもあなたの言う「SMTベースのマルチコア」の要件を満たしているわけです。
しかしながら一般的なマルチコアはシングルコアの最大2倍の性能を発揮するのに対し、HyperThreadingはせいぜい1.3倍です。
これは一般的なマルチコアがパイプラインそのものを2つ備えるのに対し、HyperThreadingは1つのパイプラインを使いまわすに過ぎないためです。
たしかに回路規模あたりの性能はSMTによって改善されますが、パイプラインの数そのものを増やさないと高が知れています。
だからこそパイプラインの数(すなわちコアの数)が問題になるのであり、マルチコアとSMTを区別しなければならないゆえんです。
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
ぺんちに関して言えばパイプラインはもっと多かったハズ。スーパースケーラだし。さらにSMTでパイプライン増やすと複数、でも整数個ではない「コア」の融合になる。なので、そういう構成の場合ハードウェアの数で「コア数」を測るのは無意味なんじゃない?
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
ではパイプラインをやめてIPC(1クロックあたりの実行命令数)にしましょうか。以下、定性的な議論とするので数字はいい加減です。
最近のCPUは1コアあたり最大3IPCの能力があります。しかしながら、1スレッドでは命令間の依存やらメモリアクセスやらでそこまではいかずせいぜい2IPCしか出ません。SMTを入れて2スレッドにすると2.5IPCぐらいはいくかな?もっとスレッドを増やせばどんどん3IPCに近づくでしょう。しかし3を超えることはありません。これは演算器の数に限りがあるからです。
マルチコアでコアを増やすと演算器も含めてほぼ全ての数が増えますので、2コアで最大6IPC、4コアで最大12IPC。SMTなしでそれぞれ実効4IPC,実効8IPC。SMTでスレッドを増やすよりコアを増やした方が性能向上は大きくなります。
。。。というのが今のCPUのコアの数え方です。
将来の話として10IPCの能力のあるでっかいコアを作って、SMTで10スレッドくらいぶち込んで見ましょうというのはありですが、それは将来の話として現在の話とは区別しましょうねという話です。
「コア」という用語を使うなら、デフォルトで「現在存在するものと同タイプのコア」の意味で皆さん解釈されます。
自分の考える将来のコアの姿という意味で使うなら、何らかの前置きや説明を少なくともしてくださいね。
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
そもそも「マルチコア前提」はその「将来の話」じゃなかったっけか?
今あるものだけを前提にして考えてたら、将来なんか見えるはずないじゃないか。
Re:何かメニーコアを理解してない人が多い気がする。 (スコア:1)
比較するためにも用語を区別することは必要です。