アカウント名:
パスワード:
Hyper-Threading みたいなもんか
結果が似てますが、設計の流れが逆なんですよね。Intel HT は、「メモリアクセスとかでパイプラインがストールすると実行効率が落ちる」→「じゃあ、その間は別のスレッドを実行することにすればいいんじゃね」って方向性。(「レジスタは2スレッド分必要」ってのはありますが、今時レジスタリネーミングにより内部的にはアーキテクチャ上のものより多くのレジスタを実装してるので、ハードウェア的な必要資源は増やさなくても実現できる)
あくまで1コアとしてのハードウェア資源は増やさないまま、「パイプラインがより埋まるようにする」ことで高速化する、というアプローチ。
一方、Bulldozerのは各コアのモジュールは利用率が100%もないから、コア間でモジュールを共有すればあんまり性能を落とさずに、大幅にハードウェアを減らせるんじゃねってアプローチ。
大ざっぱには、整数演算メインに見れば「各コアのシングルスレッド性能は2/3だけど、コア数2倍でトータル性能1.33倍」ってもので、あとはシングルスレッド性能の低さを動作クロックアップで対応する想定。
そういう目論見の設計だったのが、・あんまり高クロック化できなかった・多数のコアを酷使するマルチスレッドプログラムって、大抵は浮動小数点/SIMDをがっつり使うので、効率が悪かったていうあたりが敗因ですかね。マルチスレッドがっつりなベンチマークって、たいてい動画エンコードとかだし…
私は今もBulldozerなマシンをメインで使ってますが、「(ほとんどがシングルスレッドな)アプリをたくさん立ち上げっぱなし」ていうマルチタスクな使い方だと、ちゃんと8コアの恩恵を受けているって感じですね。(Windows7の頃は、タスクマネージャのCPUは8つ分表示されてて楽しかったのですが、Windows10に上げたら、グラフが一個だけになってちょっと寂しい…)
>(Windows7の頃は、タスクマネージャのCPUは8つ分表示されてて楽しかったのですが、>Windows10に上げたら、グラフが一個だけになってちょっと寂しい…)実は変更できることを最近知ったのですが、グラフ上のコンテキストメニューから変更できます。
参考になりました
intelはパイプラインの空きステージを別スレッドで有効活用する。AMDはコアをシンプルにする代りに2スレッド同時実行できるようにパイプラインを2セット持たせた。
で、もともと命令デコーダ1個にパイプラインが2セットぶら下がっているものをマーケティングのため2コアと数えてしまった。こんなのにいちゃもんつけるのはヤクザみたいな奴しかいないだろうと思うが、AMDも身から出た錆。
単に「パイプラインが2セット」とだけいうと、1コアのスーパースカラっぽく感じてしまいますが、
Bulldozerは、それぞれのパイプが整数演算ユニット2個とロードストアユニットを個別に持っています。(だから、フェッチユニットが共有だから、その元であるL1命令キャッシュは共有だけど、ロードストアは個別だから、その先であるL1データキャッシュは個別。)
命令L1・フェッチ・デコード・浮動小数点演算: 共有パイプライン・整数演算・ロードストア・データL1: 個別
これを1コアと数えるのか2コアと数えるのかは、もはや「コアとは何か」という哲学的問題になりそうです。
> もはや「コアとは何か」という哲学的問題になりそうです。 コアな話になってきましたね...
人間が食って咀嚼する口に相当するフェッチデコード機能の数で数えるべきだと思うな。
話をまとめすぎて、結果意味のないコメントになっている良い例ですね
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
実質4コア (スコア:0)
Hyper-Threading みたいなもんか
Re:実質4コア (スコア:3, 参考になる)
結果が似てますが、設計の流れが逆なんですよね。
Intel HT は、「メモリアクセスとかでパイプラインがストールすると実行効率が落ちる」→「じゃあ、その間は別のスレッドを実行することにすればいいんじゃね」って方向性。
(「レジスタは2スレッド分必要」ってのはありますが、今時レジスタリネーミングにより内部的にはアーキテクチャ上のものより多くのレジスタを実装してるので、ハードウェア的な必要資源は増やさなくても実現できる)
あくまで1コアとしてのハードウェア資源は増やさないまま、「パイプラインがより埋まるようにする」ことで高速化する、というアプローチ。
一方、Bulldozerのは
各コアのモジュールは利用率が100%もないから、コア間でモジュールを共有すればあんまり性能を落とさずに、大幅にハードウェアを減らせるんじゃね
ってアプローチ。
大ざっぱには、整数演算メインに見れば
「各コアのシングルスレッド性能は2/3だけど、コア数2倍でトータル性能1.33倍」
ってもので、あとはシングルスレッド性能の低さを動作クロックアップで対応する想定。
そういう目論見の設計だったのが、
・あんまり高クロック化できなかった
・多数のコアを酷使するマルチスレッドプログラムって、大抵は浮動小数点/SIMDをがっつり使うので、効率が悪かった
ていうあたりが敗因ですかね。
マルチスレッドがっつりなベンチマークって、たいてい動画エンコードとかだし…
私は今もBulldozerなマシンをメインで使ってますが、
「(ほとんどがシングルスレッドな)アプリをたくさん立ち上げっぱなし」ていうマルチタスクな使い方だと、
ちゃんと8コアの恩恵を受けているって感じですね。
(Windows7の頃は、タスクマネージャのCPUは8つ分表示されてて楽しかったのですが、
Windows10に上げたら、グラフが一個だけになってちょっと寂しい…)
Re: (スコア:0)
>(Windows7の頃は、タスクマネージャのCPUは8つ分表示されてて楽しかったのですが、
>Windows10に上げたら、グラフが一個だけになってちょっと寂しい…)
実は変更できることを最近知ったのですが、グラフ上のコンテキストメニューから変更できます。
Re: (スコア:0)
参考になりました
Re: (スコア:0)
intelはパイプラインの空きステージを別スレッドで有効活用する。
AMDはコアをシンプルにする代りに2スレッド同時実行できるようにパイプラインを2セット持たせた。
で、もともと命令デコーダ1個にパイプラインが2セットぶら下がっているものをマーケティングのため2コアと数えてしまった。
こんなのにいちゃもんつけるのはヤクザみたいな奴しかいないだろうと思うが、AMDも身から出た錆。
Re: (スコア:0)
単に「パイプラインが2セット」とだけいうと、1コアのスーパースカラっぽく感じてしまいますが、
Bulldozerは、それぞれのパイプが整数演算ユニット2個とロードストアユニットを個別に持っています。
(だから、フェッチユニットが共有だから、その元であるL1命令キャッシュは共有だけど、
ロードストアは個別だから、その先であるL1データキャッシュは個別。)
命令L1・フェッチ・デコード・浮動小数点演算: 共有
パイプライン・整数演算・ロードストア・データL1: 個別
これを1コアと数えるのか2コアと数えるのかは、もはや「コアとは何か」という哲学的問題になりそうです。
Re: (スコア:0)
> もはや「コアとは何か」という哲学的問題になりそうです。
コアな話になってきましたね...
Re: (スコア:0)
人間が食って咀嚼する口に相当するフェッチデコード機能の数で数えるべきだと思うな。
Re: (スコア:0)
話をまとめすぎて、結果意味のないコメントになっている良い例ですね