アカウント名:
パスワード:
> POWER8は1コアあたり12スレッドを実行できるコアを12コア搭載8 SMTだから、「1コアあたり8スレッド」ですね。SMT (Simultaneous Multithreading) はIntelのハイパースレッディングテクノロジー(Hyper-Threading Technology、HT)みたいなもので、HPC用途ではたいていoffにするんだけどね。
1ノードには何チップまでNUMAで載せることができるのかな。
>SMT (Simultaneous Multithreading) はIntelのハイパースレッディング>テクノロジー(Hyper-Threading Technology、HT)みたいなもので、>HPC用途ではたいていoffにするんだけどね。
気休めの Intel HT と同類と括られたら、さすがに可哀想では。
後藤さんの記事には、>>各CPUコアは8ディスパッチ、10イシュー、16実行ユニットとあるので、SPARC T1系のようなバレルプロセッサ(ハードウェアマルチスレッド)に近い、同時実行性能を期待してしまうのだが、どうなのだろう?
POWER8のSMTとインテルHTは物量が違うだけで仕組みは同じ
SMTは異なるスレッドから同時に命令を発行できるがT1はできないので別物http://en.wikipedia.org/wiki/Simultaneous_multithreading [wikipedia.org]
>POWER8のSMTとインテルHTは物量が違うだけで仕組みは同じ
仕組みが一緒かどうかどうか、そういう話じゃないよ。そんな話は資料で SMT と名乗っている時点で判ってるわけ。まして、「バレルに『近い』性能を期待したい」なんて書かないよ。
物量による実効性能がどうなのか、というのが大事だという話。Intel の HT は 2スレッドながら、最大20%も良くなれば御の字のレベル。POWER8 は 8スレッドといいつつ、SMT OFF に比べて、20~30%マシだったら、ズッコケでしょ。実行ユニットの数からいっても。
> Intel の HT は 2スレッドながら、最大20%も良くなれば御の字のレベル。
これはモデルによります。自作の 2D ソフトウェア レンダラ―で、Core i シリーズの HT の効果は 20 % 程度でしたが、Atom は 50% 程度でした。Pentium 4 は試してません。数字で揚げ足取りみたいなことしてしまいましたが、確かに POWER8 の SMT がどの程度の性能なのか、わたし気になります!
IntelのSMTは、そもそも投入しているトランジスタの数もそれなりだったわけで、20%程度という性能向上も、トランジスタの投入量に比べると悪くないレベルだったはず。
ただし、HPC系アプリだと性能がむしろ低下することも多くて、これは別にIntelのSMTのロジック設計に問題があるというわけではなく、単にHPC系アプリはメモリバンド幅がボトルネックとなることが多く、メモリバンド幅増やさずにSMT有効にしても性能向上はしないし、むしろメモリアクセスが競合する分だけちょっと損するって話。
今回のPOWER8は、メモリバンド幅が以上に広いので、結構性能が出そうな気がする。
ちなみにビジネスアプリだと、メモリのバンド幅じゃなくて、レイテンシの方がボトルネックになることが多くて、そういうアプリなら、Intel CPU程度のメモリバンド幅でもちゃんとSMTで性能向上します。
SMT はどちらかというとメモリのレイテンシ問題のフォローでしょう。
普通に処理をしていれば、どうしてもレジスタやキャッシュにないデータが必要になってきます。必要なデータがメインメモリからすぐにくれば良いんですが、近年では CPU の速度とメインメモリとの速度の乖離が大きすぎるため、キャッシュを埋めるまでの時間、CPU が暇をしてしまいます。
この空いた資源を SMT として別スレッドに使用させれば、どれかのスレッドはレジスタや CPU に近いキャッシュのデータで済む可能性が高いのでメモリレイテンシの悪影響を隠蔽できトータルのスループットが向上する可能性がある、と。
昔、シングルタスク OS に比べ、余計な処理を必要とするマルチタスク OS の方がスループットが高いのはなぜかという説明に、IO 待ちの間に他の処理ができるから、というものがありましたが、本質的には一緒だと考えています。
マルチスレッドはリソースが空になるのを別のスレッドで埋めるだけのことですメモリに限ったことではありませんSMTの元祖的なM-MachineではスカスカなVLIWのマルチスレッドでしたバレルやSMTといった方式の違いはあっても、それ以上でもそれ以下でもありませんどうして半可通は自分の好みにこじつけたんがるんですかね
SMT が何かという話ではなく、なぜ SMT が採用され、SMT のスレッド数が増えていくのかという話なんですが、なにか勘違いをされていませんか。(そもそも私の好みってなんだろう…)半可通というのはその通りでしょうけど。CPU のシリコン面積をどういった機能に割り当てるかは費用対効果を中心に選択されるから、CPU・メモリ間のボトルネックに手当するのが主流になって来るわけで、バンド幅拡大を活かす SIMD とならんで、レイテンシ対策の SMT が主流になっている、という話をしたつもりです。
MTはリソースの利用率を上げるためのものであってそれ以上でもそれ以下でもありませんリソースが空く理由としては演算器やメモリアクセスのレイテンシもありますが演算器が多数あることも大きな要因ですメモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いませんしかし山ほどある演算器がガラ空きになるのは複数のスレッドから同時に命令を供給するSMTでなければ対応できません演算器が山ほどあるのはシングルスレッド性能を高めるためです
話がかみ合っていないと思うのでそろそろ諦めますが、演算器の空きを埋めるための SMT という点では特に異論はありません。で、4GHz というクロックで動く CPU において「山ほどある演算器がガラ空きになる」理由では何だとお考えですか。シングルスレッドの性能向上を目指すときにボトルネックになっているのはどこですか。
# もしかして: Coarse-grained MT
演算器が山ほどあるのはシングルスレッド性能のためだと書きましたシングルスレッド性能が頭打ちになるのはキャッシュミスと分岐予測ミスですね分岐予測ミスは避けようがありませんが、キャッシュミス下で可能な限り次のメモリアクセスを発行しレイテンシを隠蔽するためのOoOですしPOWER8でも整数ユニットに比べてロードストアユニットがリッチだと思います
たんにメモリアクセスレイテンシの隠蔽のためならItanium2のような実装でもいいわけですwikipediaをはりましたが、SMTというのは複数スレッドから同時に命令を発行できるのが特徴ですメモリのレイテンシは1サイクルで演算器が1000個あるようなケースを考えればSMTの利点がわかりやすいと思います
キャッシュミスのペナルティはOoOの命令発行キューに収まる時間じゃすまないことも多いと思いますよ。ハズウェルだとそのつもりで実装すればL1ミスまでは許せるかもしれませんが(たぶんそのつもりの実装はしてない)、すくなくともOoOそのものはキャッシュミス隠ぺいを目的として作られたものではありません。
OoOもSMTと一義的には同様に演算器などをを埋めるためのものですが、ストールしたメモリアクセスを追い越して後続の命令を発行します追い越して発行される命令はまた別のアドレス計算やメモリアクセスだったりしますので、プリフェッチのような効果があわれますつまりシングルスレッドビューでは先のメモリアクセスのレイテンシが(ある程度)隠蔽されるだけでなく、後続のメモリアクセスのレイテンシが「削減されたように見えます」後半がOoOの大きな特徴です
この人、議論できる人じゃないね。自己の主張を押しまくるだけで、本質的な論点に全く答えてない。数百クロックのペナルティになると、OoO レベルじゃ隠ぺいできない、というテーマが繰り返し出ているのに、全く答えてない。OoO って、数百命令を入れ変えてくれるのかい?
> >メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
OoOにメモリアクセス時間の隠蔽効果があるかないかって言われれば、わずかでもあるとは思うけど、大きな特徴って表現する人は少数派だろうなぁと思います。
むりやりなのも含めばメモリアクセス時間を隠蔽できる手段ってのはいくつもあるけど、個人的には効果の高い順からこんな感じという印象です。 - ハードウェアマルチスレッディング (ご存じだと思いますがインオーダでも実現できます) - プリフェッチ命令 - 投機的実行(IA64とか) - 分岐予測 - アウトオブオーダ実行
自分は誰かと同様で定量的なデータを示していないので、そこについては異論ありません。:-)
>「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
ある程度って、どのくらいかい?数百クロックのストールに対して、定量的にはどのくらいの効果が見込める話なの?半可通ではないなら、改めて再掲するので、以下、回答よろしく。通を気取って、自信満々に「セールストーク」と言い切ったわけだからね。
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が>セールストークと言い切るなら、そろそろ「定量的な測定データ」を提示しなよ。
今日の実装ではOoOは1次キャッシュミス(2次ヒット)を隠蔽し、CGMTは2次キャッシュミスを隠ぺいする実装が多いようです前者はSPARC64やPOWERのプログラミングガイドに書いてあるとおりですし、後者にはItanium2やPOWER5?があります
まずゲルシンガーや後藤さんを持ち出してきたあなたがまず定量的なデータを示すべきです私はそれに対する反論することあるいはぐぅと鳴くことならできますが、そうでなければこちらは何を提出すればいいのかすらわかりません
もし以下のゲルシンガー発言の9とか10が定量的だと主張するのなら、私はもう何も言うことはありません
> 「最大の課題は
いやいや、貴方が偉そうに
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が>セールストークと言い切る
といった風に、通を気取って、自信満々に他人をこき下ろすから、
>そろそろ「定量的な測定データ」を提示しなよ。
と言われてしまうわけ。
貴方が自分のことを半可通と自覚するなら、大したデータもなしに他人をdisったことを恥じ入るべきだし、逆に貴方が、定量的なデータを出して、自身の言説を
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
SMT (スコア:1)
> POWER8は1コアあたり12スレッドを実行できるコアを12コア搭載
8 SMTだから、「1コアあたり8スレッド」ですね。
SMT (Simultaneous Multithreading) はIntelのハイパースレッディング
テクノロジー(Hyper-Threading Technology、HT)みたいなもので、
HPC用途ではたいていoffにするんだけどね。
1ノードには何チップまでNUMAで載せることができるのかな。
Re: (スコア:1)
>SMT (Simultaneous Multithreading) はIntelのハイパースレッディング
>テクノロジー(Hyper-Threading Technology、HT)みたいなもので、
>HPC用途ではたいていoffにするんだけどね。
気休めの Intel HT と同類と括られたら、さすがに可哀想では。
後藤さんの記事には、
>>各CPUコアは8ディスパッチ、10イシュー、16実行ユニット
とあるので、SPARC T1系のようなバレルプロセッサ(ハードウェアマルチスレッド)に近い、
同時実行性能を期待してしまうのだが、どうなのだろう?
Re: (スコア:1)
POWER8のSMTとインテルHTは物量が違うだけで仕組みは同じ
SMTは異なるスレッドから同時に命令を発行できるがT1はできないので別物
http://en.wikipedia.org/wiki/Simultaneous_multithreading [wikipedia.org]
Re: (スコア:0)
>POWER8のSMTとインテルHTは物量が違うだけで仕組みは同じ
仕組みが一緒かどうかどうか、そういう話じゃないよ。
そんな話は資料で SMT と名乗っている時点で判ってるわけ。
まして、「バレルに『近い』性能を期待したい」なんて書かないよ。
物量による実効性能がどうなのか、というのが大事だという話。
Intel の HT は 2スレッドながら、最大20%も良くなれば御の字のレベル。
POWER8 は 8スレッドといいつつ、SMT OFF に比べて、20~30%マシだったら、ズッコケでしょ。
実行ユニットの数からいっても。
Re: (スコア:0)
> Intel の HT は 2スレッドながら、最大20%も良くなれば御の字のレベル。
これはモデルによります。自作の 2D ソフトウェア レンダラ―で、Core i シリーズの HT の効果は 20 % 程度でしたが、Atom は 50% 程度でした。Pentium 4 は試してません。
数字で揚げ足取りみたいなことしてしまいましたが、確かに POWER8 の SMT がどの程度の性能なのか、わたし気になります!
Re: (スコア:0)
IntelのSMTは、そもそも投入しているトランジスタの数もそれなりだったわけで、
20%程度という性能向上も、トランジスタの投入量に比べると悪くないレベルだったはず。
ただし、HPC系アプリだと性能がむしろ低下することも多くて、これは別にIntelのSMTの
ロジック設計に問題があるというわけではなく、単にHPC系アプリはメモリバンド幅がボトルネック
となることが多く、メモリバンド幅増やさずにSMT有効にしても性能向上はしないし、むしろメモリ
アクセスが競合する分だけちょっと損するって話。
今回のPOWER8は、メモリバンド幅が以上に広いので、結構性能が出そうな気がする。
ちなみにビジネスアプリだと、メモリのバンド幅じゃなくて、レイテンシの方がボトルネックになることが
多くて、そういうアプリなら、Intel CPU程度のメモリバンド幅でもちゃんとSMTで性能向上します。
Re: (スコア:2)
SMT はどちらかというとメモリのレイテンシ問題のフォローでしょう。
普通に処理をしていれば、どうしてもレジスタやキャッシュにないデータが必要になってきます。必要なデータがメインメモリからすぐにくれば良いんですが、近年では CPU の速度とメインメモリとの速度の乖離が大きすぎるため、キャッシュを埋めるまでの時間、CPU が暇をしてしまいます。
この空いた資源を SMT として別スレッドに使用させれば、どれかのスレッドはレジスタや CPU に近いキャッシュのデータで済む可能性が高いのでメモリレイテンシの悪影響を隠蔽できトータルのスループットが向上する可能性がある、と。
昔、シングルタスク OS に比べ、余計な処理を必要とするマルチタスク OS の方がスループットが高いのはなぜかという説明に、IO 待ちの間に他の処理ができるから、というものがありましたが、本質的には一緒だと考えています。
Re: (スコア:0)
マルチスレッドはリソースが空になるのを別のスレッドで埋めるだけのことです
メモリに限ったことではありません
SMTの元祖的なM-MachineではスカスカなVLIWのマルチスレッドでした
バレルやSMTといった方式の違いはあっても、それ以上でもそれ以下でもありません
どうして半可通は自分の好みにこじつけたんがるんですかね
Re: (スコア:2)
SMT が何かという話ではなく、なぜ SMT が採用され、SMT のスレッド数が増えていくのかという話なんですが、なにか勘違いをされていませんか。(そもそも私の好みってなんだろう…)半可通というのはその通りでしょうけど。
CPU のシリコン面積をどういった機能に割り当てるかは費用対効果を中心に選択されるから、CPU・メモリ間のボトルネックに手当するのが主流になって来るわけで、バンド幅拡大を活かす SIMD とならんで、レイテンシ対策の SMT が主流になっている、という話をしたつもりです。
Re: (スコア:0)
MTはリソースの利用率を上げるためのものであってそれ以上でもそれ以下でもありません
リソースが空く理由としては演算器やメモリアクセスのレイテンシもありますが演算器が多数あることも大きな要因です
メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
しかし山ほどある演算器がガラ空きになるのは複数のスレッドから同時に命令を供給するSMTでなければ対応できません
演算器が山ほどあるのはシングルスレッド性能を高めるためです
Re:SMT (スコア:2)
話がかみ合っていないと思うのでそろそろ諦めますが、演算器の空きを埋めるための SMT という点では特に異論はありません。で、4GHz というクロックで動く CPU において「山ほどある演算器がガラ空きになる」理由では何だとお考えですか。シングルスレッドの性能向上を目指すときにボトルネックになっているのはどこですか。
# もしかして: Coarse-grained MT
Re: (スコア:0)
演算器が山ほどあるのはシングルスレッド性能のためだと書きました
シングルスレッド性能が頭打ちになるのはキャッシュミスと分岐予測ミスですね
分岐予測ミスは避けようがありませんが、
キャッシュミス下で可能な限り次のメモリアクセスを発行しレイテンシを隠蔽するためのOoOですしPOWER8でも整数ユニットに比べてロードストアユニットがリッチだと思います
たんにメモリアクセスレイテンシの隠蔽のためならItanium2のような実装でもいいわけです
wikipediaをはりましたが、SMTというのは複数スレッドから同時に命令を発行できるのが特徴です
メモリのレイテンシは1サイクルで演算器が1000個あるようなケースを考えればSMTの利点がわかりやすいと思います
Re: (スコア:0)
キャッシュミスのペナルティはOoOの命令発行キューに収まる時間じゃすまないことも多いと思いますよ。
ハズウェルだとそのつもりで実装すればL1ミスまでは許せるかもしれませんが(たぶんそのつもりの実装はしてない)、すくなくともOoOそのものはキャッシュミス隠ぺいを目的として作られたものではありません。
Re: (スコア:0)
OoOもSMTと一義的には同様に演算器などをを埋めるためのものですが、ストールしたメモリアクセスを追い越して後続の命令を発行します
追い越して発行される命令はまた別のアドレス計算やメモリアクセスだったりしますので、プリフェッチのような効果があわれます
つまりシングルスレッドビューでは先のメモリアクセスのレイテンシが(ある程度)隠蔽されるだけでなく、後続のメモリアクセスのレイテンシが「削減されたように見えます」
後半がOoOの大きな特徴です
Re: (スコア:0)
この人、議論できる人じゃないね。
自己の主張を押しまくるだけで、本質的な論点に全く答えてない。
数百クロックのペナルティになると、OoO レベルじゃ隠ぺいできない、というテーマが繰り返し出ているのに、全く答えてない。
OoO って、数百命令を入れ変えてくれるのかい?
Re: (スコア:0)
> >メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
Re: (スコア:0)
OoOにメモリアクセス時間の隠蔽効果があるかないかって言われれば、わずかでもあるとは思うけど、大きな特徴って表現する人は少数派だろうなぁと思います。
むりやりなのも含めばメモリアクセス時間を隠蔽できる手段ってのはいくつもあるけど、個人的には効果の高い順からこんな感じという印象です。
- ハードウェアマルチスレッディング (ご存じだと思いますがインオーダでも実現できます)
- プリフェッチ命令
- 投機的実行(IA64とか)
- 分岐予測
- アウトオブオーダ実行
自分は誰かと同様で定量的なデータを示していないので、そこについては異論ありません。:-)
Re: (スコア:0)
>「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
ある程度って、どのくらいかい?
数百クロックのストールに対して、定量的にはどのくらいの効果が見込める話なの?
半可通ではないなら、改めて再掲するので、以下、回答よろしく。
通を気取って、自信満々に「セールストーク」と言い切ったわけだからね。
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で
>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が
>セールストークと言い切るなら、そろそろ「定量的な測定データ」を提示しなよ。
Re: (スコア:0)
今日の実装ではOoOは1次キャッシュミス(2次ヒット)を隠蔽し、CGMTは2次キャッシュミスを隠ぺいする実装が多いようです
前者はSPARC64やPOWERのプログラミングガイドに書いてあるとおりですし、後者にはItanium2やPOWER5?があります
まずゲルシンガーや後藤さんを持ち出してきたあなたがまず定量的なデータを示すべきです
私はそれに対する反論することあるいはぐぅと鳴くことならできますが、そうでなければこちらは何を提出すればいいのかすらわかりません
もし以下のゲルシンガー発言の9とか10が定量的だと主張するのなら、私はもう何も言うことはありません
> 「最大の課題は
Re: (スコア:0)
いやいや、貴方が偉そうに
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で
>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が
>セールストークと言い切る
といった風に、通を気取って、自信満々に他人をこき下ろすから、
>そろそろ「定量的な測定データ」を提示しなよ。
と言われてしまうわけ。
貴方が自分のことを半可通と自覚するなら、大したデータもなしに他人をdisったことを
恥じ入るべきだし、逆に貴方が、定量的なデータを出して、自身の言説を