アカウント名:
パスワード:
IA64にどうやって HT(Hyper Threading)を付け足すのか興味がある.
Pentium4は,スーパースケーラのアーキテクチャを取っているので,実行時に使用されるリソースが動的に決定される.だから,Pentium4に HTを実装ときに,アーキテクチャとの親和性が高いのはわかる.
IA64は VLIWのアーキテクチャだから,実行前にリソースの割り当てが決定されている.1つの命令ユニットにパックされたいくつかのopは,かならず同時に実行するはず.そういう前提で HTを実装すると,各リソースごとではなく,命令ユニットごとのスケジューリングにならないだろ
全部の CPUの実行リソースとキャッシュメモリを共通化するところが違う.
IBMなんかが出している2CPUをワンチップにしているPowerなんかは多分キャッシュメモリは共有しているハズです。2次キャッシュだとおもうけど。んで、キャッシュを書き込むときにコヒーレントをとるようになっているはず。 で、こ
そういうわけで、Hyper Threadingになったからって、残念ながら実行速度や 効率は何倍にもなりません。例えば ZDNetの記事 [zdnet.co.jp]には「30%の性能向上が得られた」と書かれています。どれだけスレッド 数が上がっても、元々のCPUが踏んでいた無駄足の分が効率化されるだけです。
2スレッドで30%UPなら、3スレッドで35%UP、4スレッドで38%…というようには あがるかもしれませんが、それならコストパフォーマンスの面で2スレッドで 打ち切るでしょうね。
「30%の性能向上が得られた」ということですが,それは現在の Pentium4に実装されている実行リソースの少なくとも 30%が使われていなかったので,HTを実装することにより空いていた実行リソースが有効活用されたということではないでしょうか.
だから,「2スレッドで30%UPなら、3スレッドで35%UP、4スレッドで38%…」については,実行リソース数を増やさないという前提であれば,2スレッドで30%アップ,3スレッドで31%アップのようにほとんど変わらないと思います. 逆に,キャッシュミスを考慮しないという仮定のもとに,実行リソースを増やすのであれば,シングルスレッドの N倍に近い性能を出すことができると思います.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲを呼ぶ -- ある傍観者
CPUの未来 (スコア:3, 興味深い)
IA64にどうやって HT(Hyper Threading)を付け足すのか興味がある.
Pentium4は,スーパースケーラのアーキテクチャを取っているので,実行時に使用されるリソースが動的に決定される.だから,Pentium4に HTを実装ときに,アーキテクチャとの親和性が高いのはわかる.
IA64は VLIWのアーキテクチャだから,実行前にリソースの割り当てが決定されている.1つの命令ユニットにパックされたいくつかのopは,かならず同時に実行するはず.そういう前提で HTを実装すると,各リソースごとではなく,命令ユニットごとのスケジューリングにならないだろ
Re:CPUの未来 (スコア:2, 興味深い)
IBMなんかが出している2CPUをワンチップにしているPowerなんかは多分キャッシュメモリは共有しているハズです。2次キャッシュだとおもうけど。んで、キャッシュを書き込むときにコヒーレントをとるようになっているはず。
で、こ
-----------------
#そんなワタシはOS/2ユーザー:-)
N倍は無理 (スコア:2, すばらしい洞察)
そういうわけで、Hyper Threadingになったからって、残念ながら実行速度や 効率は何倍にもなりません。例えば ZDNetの記事 [zdnet.co.jp]には「30%の性能向上が得られた」と書かれています。どれだけスレッド 数が上がっても、元々のCPUが踏んでいた無駄足の分が効率化されるだけです。
2スレッドで30%UPなら、3スレッドで35%UP、4スレッドで38%…というようには あがるかもしれませんが、それならコストパフォーマンスの面で2スレッドで 打ち切るでしょうね。
Re:N倍は無理 (スコア:1)
「30%の性能向上が得られた」ということですが,それは現在の Pentium4に実装されている実行リソースの少なくとも 30%が使われていなかったので,HTを実装することにより空いていた実行リソースが有効活用されたということではないでしょうか.
だから,「2スレッドで30%UPなら、3スレッドで35%UP、4スレッドで38%…」については,実行リソース数を増やさないという前提であれば,2スレッドで30%アップ,3スレッドで31%アップのようにほとんど変わらないと思います. 逆に,キャッシュミスを考慮しないという仮定のもとに,実行リソースを増やすのであれば,シングルスレッドの N倍に近い性能を出すことができると思います.