アカウント名:
パスワード:
> 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 待ちの間に他の処理ができるから、というものがありましたが、本質的には一緒だと考えています。
Intel の場合、データ アクセスの局所化に際して HT 有効時で推奨されるデータ サイズがキャッシュ サイズの 1/4 ~ 1/2 になる旨が最適化マニュアルに記載されています。過去に実装したプログラムで並列化の際に、まさに HT 環境でこの数字に思いっきり足を引っ張られて、ループ ブロッキングのサイズ調整をしていたことを思い出しました。結局、スレッド間でキャッシュを食い合って速度が低下しちゃうんですよね。
POWER8 でこのような縛りを気にしないで良いとなれば、SMT の効果も期待できそうです。32 チャネルの DDR で 230GB/sec。実効速度が想像できないですがワクワクする数字ですね。
ちょっと前に実験したけど、4SMTのPOWER7で倍ぐらい性能向上した事あります。
マルチスレッドはリソースが空になるのを別のスレッドで埋めるだけのことですメモリに限ったことではありません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の利点がわかりやすいと思います
Power5からのリプレースサイジングをIBMに依頼すると、SMT4対応のAIXにアップデートするか否かの2パターンで、出てくる必要CPUスペックが倍くらい違うね。もちろんSMT以外の機能も影響した上での計算だろうけど。
>メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
OoO程度では全然足りませんってば。キャッシュミスすると、下手をすると数百クロック待たされる。10数クロックのパイプラインのやり直しレベルじゃないよ。
>http://pc.watch.impress.co.jp/docs/2002/0624/kaigai01.htm>>例えば、Intelのパトリック・ゲルシンガーCTO兼副社長(Patrick Gelsinger,> Vice President & Chief Technology Officer)は「(CPUの性能向上にとって)>メモリレイテンシはクリティカルだ。L1とL2キャッシュをミス
リソースの利用率が低下する要因として1.リソースがもとから多目2.演算器やメモリアクセスのレイテンシの増大と挙げましたsimultaneousでないMTは主に2に、SMTは1に対しても効果的だと述べましたしかしどういうわけか1を無視する人が多いのでそこに噛みついているわけです(そもそも出自も違います)
現実にはメモリアクセスはポート数が頭打ちになりますあまりセールストークを真に受けなさんな
OoOの効果についてはかなり直感に反するものですので新し目の教科書でも読んでくださいな
>1を無視する人が多い
ちがうでしょ。SMT に 2に効果が殆ど無いor薄い、と言い張っているんでしょ?
>現実にはメモリアクセスはポート数が頭打ちになります
それは、キャッシュのヒット率とメモリのデータ転送速度次第でしょ。キャッシュミス自体の頻度は多くないが、一旦引っかかると数百クロック待たされる、といった世界だと充分に性能向上になると思いますが。だからこそ、>>Intel の場合、データ アクセスの局所化に際して HT 有効時で推奨されるデータ>>サイズがキャッシュ サイズの 1/4 ~ 1/2 になる旨が最適化マニュアルに記載されています。という話も出てくるわけで
> SMT に 2に効果が殆ど無いor薄い、と言い張っているんでしょ?
私がそう言っていると主張するなら引用してください
> キャッシュミス自体の頻度は多くないが、一旦引っかかると数百クロック待たされる、> といった世界だと充分に性能向上になると思いますが。
そのためだけならItanium2のようにCoarse-grained MTでもいいわけです
> その後、徐々に、先に上げた後藤さんの記事にあるような、レイテンシ隠蔽が本丸だった、> という話になってきたわけで。
SMTが演算器やメモリユニットを埋めるのとその結果としてレイテンシが隠蔽されるのは不可分なのです原因と結果を並べてどちらが本丸と言うことはできません
別の言い方をしますと、メモリアクセスのレイテンシが隠蔽された状態というのは、そのメモリアクセスとは依存性のない命令で演算器などが満たされた状態を言いますこれはいいですよね?
ですから、どうにかして演算器などの利用率を上げることが(メモリアクセス下なら)すなわちレイテンシの隠蔽になるのですこれが不可分の理由です
キャッシュミスのペナルティはOoOの命令発行キューに収まる時間じゃすまないことも多いと思いますよ。ハズウェルだとそのつもりで実装すればL1ミスまでは許せるかもしれませんが(たぶんそのつもりの実装はしてない)、すくなくともOoOそのものはキャッシュミス隠ぺいを目的として作られたものではありません。
OoOもSMTと一義的には同様に演算器などをを埋めるためのものですが、ストールしたメモリアクセスを追い越して後続の命令を発行します追い越して発行される命令はまた別のアドレス計算やメモリアクセスだったりしますので、プリフェッチのような効果があわれますつまりシングルスレッドビューでは先のメモリアクセスのレイテンシが(ある程度)隠蔽されるだけでなく、後続のメモリアクセスのレイテンシが「削減されたように見えます」後半がOoOの大きな特徴です
この人、議論できる人じゃないね。自己の主張を押しまくるだけで、本質的な論点に全く答えてない。数百クロックのペナルティになると、OoO レベルじゃ隠ぺいできない、というテーマが繰り返し出ているのに、全く答えてない。OoO って、数百命令を入れ変えてくれるのかい?
>そのためだけならItanium2のようにCoarse-grained MTでもいいわけです
Aを実現するには、BだけではなくCやDでも可能。だから、Bを採用した理由はAではない、って論理を展開したいのかい?頭悪すぎでは。
他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉でdisってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容がセールストークと言い切るなら、そろそろ「定量的な測定データ」を提示しなよ。
> >メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
> だから、Bを採用した理由はAではない、って論理を展開したいのかい?
ogino> SMT はどちらかというとメモリのレイテンシ問題のフォローでしょう。
私> マルチスレッドはリソースが空になるのを別のスレッドで埋めるだけのことです私> メモリに限ったことではありません
馬鹿でもわかるように強調して引用しましたどちらかという問題ではないのです
OoOにメモリアクセス時間の隠蔽効果があるかないかって言われれば、わずかでもあるとは思うけど、大きな特徴って表現する人は少数派だろうなぁと思います。
むりやりなのも含めばメモリアクセス時間を隠蔽できる手段ってのはいくつもあるけど、個人的には効果の高い順からこんな感じという印象です。 - ハードウェアマルチスレッディング (ご存じだと思いますがインオーダでも実現できます) - プリフェッチ命令 - 投機的実行(IA64とか) - 分岐予測 - アウトオブオーダ実行
自分は誰かと同様で定量的なデータを示していないので、そこについては異論ありません。:-)
>どちらかという問題ではないのです
あのねぇ…「どちらかというとA」という日本語は、いつから「Aがすべてだ!」という意味になったのかな?馬鹿すぎでは。
>「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
ある程度って、どのくらいかい?数百クロックのストールに対して、定量的にはどのくらいの効果が見込める話なの?半可通ではないなら、改めて再掲するので、以下、回答よろしく。通を気取って、自信満々に「セールストーク」と言い切ったわけだからね。
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が>セールストークと言い切るなら、そろそろ「定量的な測定データ」を提示しなよ。
今日の実装ではOoOは1次キャッシュミス(2次ヒット)を隠蔽し、CGMTは2次キャッシュミスを隠ぺいする実装が多いようです前者はSPARC64やPOWERのプログラミングガイドに書いてあるとおりですし、後者にはItanium2やPOWER5?があります
まずゲルシンガーや後藤さんを持ち出してきたあなたがまず定量的なデータを示すべきです私はそれに対する反論することあるいはぐぅと鳴くことならできますが、そうでなければこちらは何を提出すればいいのかすらわかりません
もし以下のゲルシンガー発言の9とか10が定量的だと主張するのなら、私はもう何も言うことはありません
> 「最大の課題は
いやいや、貴方が偉そうに
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が>セールストークと言い切る
といった風に、通を気取って、自信満々に他人をこき下ろすから、
>そろそろ「定量的な測定データ」を提示しなよ。
と言われてしまうわけ。
貴方が自分のことを半可通と自覚するなら、大したデータもなしに他人をdisったことを恥じ入るべきだし、逆に貴方が、定量的なデータを出して、自身の言説を
> まして、「バレルに『近い』性能を期待したい」なんて書かないよ。
わかっている人ならバレルはシングルスレッドのスループットは低いことくらいは知っているはずですが
>わかっている人ならバレルは
ここでの議論は、トータルのスループットと、スレッド数増加で性能がどこまで向上しそうかという話だよ。なぜ突然シングルスレッド性能が出てくるのかな?話のコンテキストが分かってない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike
SMT (スコア:1)
> POWER8は1コアあたり12スレッドを実行できるコアを12コア搭載
8 SMTだから、「1コアあたり8スレッド」ですね。
SMT (Simultaneous Multithreading) はIntelのハイパースレッディング
テクノロジー(Hyper-Threading Technology、HT)みたいなもので、
HPC用途ではたいていoffにするんだけどね。
1ノードには何チップまでNUMAで載せることができるのかな。
Re:SMT (スコア:1)
>SMT (Simultaneous Multithreading) はIntelのハイパースレッディング
>テクノロジー(Hyper-Threading Technology、HT)みたいなもので、
>HPC用途ではたいていoffにするんだけどね。
気休めの Intel HT と同類と括られたら、さすがに可哀想では。
後藤さんの記事には、
>>各CPUコアは8ディスパッチ、10イシュー、16実行ユニット
とあるので、SPARC T1系のようなバレルプロセッサ(ハードウェアマルチスレッド)に近い、
同時実行性能を期待してしまうのだが、どうなのだろう?
Re:SMT (スコア: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:SMT (スコア:2)
SMT はどちらかというとメモリのレイテンシ問題のフォローでしょう。
普通に処理をしていれば、どうしてもレジスタやキャッシュにないデータが必要になってきます。必要なデータがメインメモリからすぐにくれば良いんですが、近年では CPU の速度とメインメモリとの速度の乖離が大きすぎるため、キャッシュを埋めるまでの時間、CPU が暇をしてしまいます。
この空いた資源を SMT として別スレッドに使用させれば、どれかのスレッドはレジスタや CPU に近いキャッシュのデータで済む可能性が高いのでメモリレイテンシの悪影響を隠蔽できトータルのスループットが向上する可能性がある、と。
昔、シングルタスク OS に比べ、余計な処理を必要とするマルチタスク OS の方がスループットが高いのはなぜかという説明に、IO 待ちの間に他の処理ができるから、というものがありましたが、本質的には一緒だと考えています。
Re: (スコア:0)
Intel の場合、データ アクセスの局所化に際して HT 有効時で推奨されるデータ サイズがキャッシュ サイズの 1/4 ~ 1/2 になる旨が最適化マニュアルに記載されています。過去に実装したプログラムで並列化の際に、まさに HT 環境でこの数字に思いっきり足を引っ張られて、ループ ブロッキングのサイズ調整をしていたことを思い出しました。結局、スレッド間でキャッシュを食い合って速度が低下しちゃうんですよね。
POWER8 でこのような縛りを気にしないで良いとなれば、SMT の効果も期待できそうです。32 チャネルの DDR で 230GB/sec。実効速度が想像できないですがワクワクする数字ですね。
Re: (スコア:0)
ちょっと前に実験したけど、4SMTのPOWER7で倍ぐらい性能向上した事あります。
Re: (スコア:0)
マルチスレッドはリソースが空になるのを別のスレッドで埋めるだけのことです
メモリに限ったことではありません
SMTの元祖的なM-MachineではスカスカなVLIWのマルチスレッドでした
バレルやSMTといった方式の違いはあっても、それ以上でもそれ以下でもありません
どうして半可通は自分の好みにこじつけたんがるんですかね
Re:SMT (スコア: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)
Power5からのリプレースサイジングをIBMに依頼すると、SMT4対応のAIXにアップデートするか否かの2パターンで、出てくる必要CPUスペックが倍くらい違うね。
もちろんSMT以外の機能も影響した上での計算だろうけど。
Re: (スコア:0)
>メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
OoO程度では全然足りませんってば。
キャッシュミスすると、下手をすると数百クロック待たされる。
10数クロックのパイプラインのやり直しレベルじゃないよ。
>http://pc.watch.impress.co.jp/docs/2002/0624/kaigai01.htm
>
>例えば、Intelのパトリック・ゲルシンガーCTO兼副社長(Patrick Gelsinger,
> Vice President & Chief Technology Officer)は「(CPUの性能向上にとって)
>メモリレイテンシはクリティカルだ。L1とL2キャッシュをミス
Re: (スコア:0)
リソースの利用率が低下する要因として
1.リソースがもとから多目
2.演算器やメモリアクセスのレイテンシの増大
と挙げました
simultaneousでないMTは主に2に、SMTは1に対しても効果的だと述べました
しかしどういうわけか1を無視する人が多いのでそこに噛みついているわけです
(そもそも出自も違います)
現実にはメモリアクセスはポート数が頭打ちになります
あまりセールストークを真に受けなさんな
OoOの効果についてはかなり直感に反するものですので新し目の教科書でも読んでくださいな
Re: (スコア:0)
>1を無視する人が多い
ちがうでしょ。
SMT に 2に効果が殆ど無いor薄い、と言い張っているんでしょ?
>現実にはメモリアクセスはポート数が頭打ちになります
それは、キャッシュのヒット率とメモリのデータ転送速度次第でしょ。
キャッシュミス自体の頻度は多くないが、一旦引っかかると数百クロック待たされる、
といった世界だと充分に性能向上になると思いますが。
だからこそ、
>>Intel の場合、データ アクセスの局所化に際して HT 有効時で推奨されるデータ
>>サイズがキャッシュ サイズの 1/4 ~ 1/2 になる旨が最適化マニュアルに記載されています。
という話も出てくるわけで
Re: (スコア:0)
> SMT に 2に効果が殆ど無いor薄い、と言い張っているんでしょ?
私がそう言っていると主張するなら引用してください
> キャッシュミス自体の頻度は多くないが、一旦引っかかると数百クロック待たされる、
> といった世界だと充分に性能向上になると思いますが。
そのためだけならItanium2のようにCoarse-grained MTでもいいわけです
> その後、徐々に、先に上げた後藤さんの記事にあるような、レイテンシ隠蔽が本丸だった、
> という話になってきたわけで。
SMTが演算器やメモリユニットを埋めるのとその結果としてレイテンシが隠蔽されるのは不可分なのです
原因と結果を並べてどちらが本丸と言うことはできません
Re: (スコア:0)
別の言い方をしますと、メモリアクセスのレイテンシが隠蔽された状態というのは、そのメモリアクセスとは依存性のない命令で演算器などが満たされた状態を言います
これはいいですよね?
ですから、どうにかして演算器などの利用率を上げることが(メモリアクセス下なら)すなわちレイテンシの隠蔽になるのです
これが不可分の理由です
Re: (スコア:0)
キャッシュミスのペナルティはOoOの命令発行キューに収まる時間じゃすまないことも多いと思いますよ。
ハズウェルだとそのつもりで実装すればL1ミスまでは許せるかもしれませんが(たぶんそのつもりの実装はしてない)、すくなくともOoOそのものはキャッシュミス隠ぺいを目的として作られたものではありません。
Re: (スコア:0)
OoOもSMTと一義的には同様に演算器などをを埋めるためのものですが、ストールしたメモリアクセスを追い越して後続の命令を発行します
追い越して発行される命令はまた別のアドレス計算やメモリアクセスだったりしますので、プリフェッチのような効果があわれます
つまりシングルスレッドビューでは先のメモリアクセスのレイテンシが(ある程度)隠蔽されるだけでなく、後続のメモリアクセスのレイテンシが「削減されたように見えます」
後半がOoOの大きな特徴です
Re: (スコア:0)
この人、議論できる人じゃないね。
自己の主張を押しまくるだけで、本質的な論点に全く答えてない。
数百クロックのペナルティになると、OoO レベルじゃ隠ぺいできない、というテーマが繰り返し出ているのに、全く答えてない。
OoO って、数百命令を入れ変えてくれるのかい?
Re: (スコア:0)
>そのためだけならItanium2のようにCoarse-grained MTでもいいわけです
Aを実現するには、BだけではなくCやDでも可能。
だから、Bを採用した理由はAではない、って論理を展開したいのかい?
頭悪すぎでは。
他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で
disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が
セールストークと言い切るなら、そろそろ「定量的な測定データ」を提示しなよ。
Re: (スコア:0)
> >メモリアクセスのレイテンシの隠蔽だけであればOoOである程度カバーできますしSMTではないCoarce-grained MTでも構いません
「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
Re: (スコア:0)
> だから、Bを採用した理由はAではない、って論理を展開したいのかい?
ogino> SMT はどちらかというとメモリのレイテンシ問題のフォローでしょう。
私> マルチスレッドはリソースが空になるのを別のスレッドで埋めるだけのことです
私> メモリに限ったことではありません
馬鹿でもわかるように強調して引用しました
どちらかという問題ではないのです
Re: (スコア:0)
OoOにメモリアクセス時間の隠蔽効果があるかないかって言われれば、わずかでもあるとは思うけど、大きな特徴って表現する人は少数派だろうなぁと思います。
むりやりなのも含めばメモリアクセス時間を隠蔽できる手段ってのはいくつもあるけど、個人的には効果の高い順からこんな感じという印象です。
- ハードウェアマルチスレッディング (ご存じだと思いますがインオーダでも実現できます)
- プリフェッチ命令
- 投機的実行(IA64とか)
- 分岐予測
- アウトオブオーダ実行
自分は誰かと同様で定量的なデータを示していないので、そこについては異論ありません。:-)
Re: (スコア:0)
>どちらかという問題ではないのです
あのねぇ…
「どちらかというとA」
という日本語は、いつから
「Aがすべてだ!」
という意味になったのかな?
馬鹿すぎでは。
Re: (スコア:0)
>「ある程度」ともCMTとも書いてありますが頭に血が上って読めないのですか?
ある程度って、どのくらいかい?
数百クロックのストールに対して、定量的にはどのくらいの効果が見込める話なの?
半可通ではないなら、改めて再掲するので、以下、回答よろしく。
通を気取って、自信満々に「セールストーク」と言い切ったわけだからね。
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で
>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が
>セールストークと言い切るなら、そろそろ「定量的な測定データ」を提示しなよ。
Re: (スコア:0)
今日の実装ではOoOは1次キャッシュミス(2次ヒット)を隠蔽し、CGMTは2次キャッシュミスを隠ぺいする実装が多いようです
前者はSPARC64やPOWERのプログラミングガイドに書いてあるとおりですし、後者にはItanium2やPOWER5?があります
まずゲルシンガーや後藤さんを持ち出してきたあなたがまず定量的なデータを示すべきです
私はそれに対する反論することあるいはぐぅと鳴くことならできますが、そうでなければこちらは何を提出すればいいのかすらわかりません
もし以下のゲルシンガー発言の9とか10が定量的だと主張するのなら、私はもう何も言うことはありません
> 「最大の課題は
Re: (スコア:0)
いやいや、貴方が偉そうに
>他人を「半可通は自分の好みにこじつけたんがる(ママ)」とか、過激な言葉で
>disってるけどさ、貴方自身が半可通でなく、ゲルシンガーや後藤さんの内容が
>セールストークと言い切る
といった風に、通を気取って、自信満々に他人をこき下ろすから、
>そろそろ「定量的な測定データ」を提示しなよ。
と言われてしまうわけ。
貴方が自分のことを半可通と自覚するなら、大したデータもなしに他人をdisったことを
恥じ入るべきだし、逆に貴方が、定量的なデータを出して、自身の言説を
Re: (スコア:0)
> まして、「バレルに『近い』性能を期待したい」なんて書かないよ。
わかっている人ならバレルはシングルスレッドのスループットは低いことくらいは知っているはずですが
Re: (スコア:0)
>わかっている人ならバレルは
ここでの議論は、トータルのスループットと、スレッド数増加で性能がどこまで向上しそうかという話だよ。
なぜ突然シングルスレッド性能が出てくるのかな?話のコンテキストが分かってない。