パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Alphaは死なず!」記事へのコメント

  • CPUの未来 (スコア:3, 興味深い)

    by Psychs (7786) on 2002年02月06日 9時58分 (#60286)

    IA64にどうやって HT(Hyper Threading)を付け足すのか興味がある.

    Pentium4は,スーパースケーラのアーキテクチャを取っているので,実行時に使用されるリソースが動的に決定される.だから,Pentium4に HTを実装ときに,アーキテクチャとの親和性が高いのはわかる.

    IA64は VLIWのアーキテクチャだから,実行前にリソースの割り当てが決定されている.1つの命令ユニットにパックされたいくつかのopは,かならず同時に実行するはず.そういう前提で HTを実装すると,各リソースごとではなく,命令ユニットごとのスケジューリングにならないだろうか.

    つまり,HTによって,スーパースケーラなら空きリソースは飛躍的に下がるのはわかる.だが,VLIWの場合は,元々の IPC(Instruction per Clock)の範囲で想定されている数の整数倍のリソースを用意して,それを振り分けることにならないのだろうかということだ.

    未来の CPUは,どんな形態になるだろうか. ISSCC2002での発表によると,もっとも有望なのは「Parallelism(並列性)」だという. たとえば,HTを拡張して,4スレッドの同時実行が可能な CPUを作るとかいうような感じだろう.しかし,スレッドレベルの並列性まで考慮に入れたところで,相変わらずタスクスイッチは必要だろう.

    そこでさらに一歩進めて,プロセスレベルの並列性を取り入れて,マルチプロセスプロセッサを作ってみるのはどうだろう.こうなれば,ワンチップに複数のプロセッサを集積するチップマルチプロセッサと発想が変わらなくなるが,全部の CPUの実行リソースとキャッシュメモリを共通化するところが違う.こうすることで,コストパフォーマンスがかなり上がるはずだ.もちろん,排他制御用のロジックを追加する必要があるが,2とか4くらいのオーダーのプロセス数の処理であれば,大したことはないだろう.

    普段何気なく使っている CPUだが,興味は尽きない.

    • Re:CPUの未来 (スコア:2, 興味深い)

      by Average (3404) on 2002年02月06日 10時14分 (#60291) 日記

      全部の CPUの実行リソースとキャッシュメモリを共通化するところが違う.

      IBMなんかが出している2CPUをワンチップにしているPowerなんかは多分キャッシュメモリは共有しているハズです。2次キャッシュだとおもうけど。んで、キャッシュを書き込むときにコヒーレントをとるようになっているはず。
      で、こういうマルチスレッド対応CPUは早く出てほしいです。スレッドを意識して書いたプログラムは1~8CPUなSMPでは
      ほぼスケーラブルに実行性能が上がりますので、あーんな高い2GのCPUを買わないでも、1Gx2で十分な性能が出ますです、
      となる可能性が出て来ますので。
      --
      -----------------
      #そんなワタシはOS/2ユーザー:-)
      親コメント
      • N倍は無理 (スコア:2, すばらしい洞察)

        by nasb (3002) on 2002年02月06日 11時51分 (#60321) 日記
        CPUはデータ依存解消待ちなど、さまざまな遅延原因により実際のCPUパワーの 数割が無駄になります。Hyper Threadingはこの無駄にしてた時間を、別スレッ ドに切り替えて有効利用する、というものです。スレッドが十分に供給されれ ばリソース枯渇以外の遅延が見えなくなります。

        そういうわけで、Hyper Threadingになったからって、残念ながら実行速度や 効率は何倍にもなりません。例えば ZDNetの記事 [zdnet.co.jp]には「30%の性能向上が得られた」と書かれています。どれだけスレッド 数が上がっても、元々のCPUが踏んでいた無駄足の分が効率化されるだけです。

        2スレッドで30%UPなら、3スレッドで35%UP、4スレッドで38%…というようには あがるかもしれませんが、それならコストパフォーマンスの面で2スレッドで 打ち切るでしょうね。

        親コメント
        • by Psychs (7786) on 2002年02月08日 1時27分 (#60829)

          「30%の性能向上が得られた」ということですが,それは現在の Pentium4に実装されている実行リソースの少なくとも 30%が使われていなかったので,HTを実装することにより空いていた実行リソースが有効活用されたということではないでしょうか.

          だから,「2スレッドで30%UPなら、3スレッドで35%UP、4スレッドで38%…」については,実行リソース数を増やさないという前提であれば,2スレッドで30%アップ,3スレッドで31%アップのようにほとんど変わらないと思います. 逆に,キャッシュミスを考慮しないという仮定のもとに,実行リソースを増やすのであれば,シングルスレッドの N倍に近い性能を出すことができると思います.

          親コメント
    • by shiba (273) on 2002年02月06日 10時45分 (#60297) ホームページ
      >全部の CPUの実行リソースとキャッシュメモリを共通化するところが
      >違う.こうすることで,コストパフォーマンスがかなり上がるはず
      >だ.

      2つなら1,4~1.9倍に,4つなら3倍程度にダイサイズ?(シリコン
      チップの大きさ)が大きくなると思いますが.そうなると,
          ウェハーあたりの製品数が減る
          歩留まりが悪くなる
      の2点からコストパフォーマンスが『かなり』上がるとは考えにくい
      のですが.(かえって悪くなる?)

      それに複数のプロセスでキャッシュメモリを共通化(共有)しても,
      共通部分(共有可能部分)が実質ないので,キャッシュのヒットミス
      が増えると思いますが.

      (私が何か勘違いしているのかな?)
      親コメント
      • ダイサイズ?(シリコンチップの大きさ)が大きくなる
        と言えば、NEWS.COMのこの記事 [com.com]に依れば、 McKinleyのダイサイズは 464 square millimetersもあるそうです。
        親コメント
      • by task_o (5050) on 2002年02月06日 11時59分 (#60325)
        ソースは失念しましたが、
        プロセスルールが進み集積度が上がっても
        性能向上のためロジックを投入すべき有効な
        マイクロアーキテクチャがもう他に見あたらない
        (増えるトランジスタの使い途が他にない) ので、
        あとはワンチップSMPぐらいかな?という経緯だったはず。
        親コメント
      • by WindKnight (1253) on 2002年02月06日 14時03分 (#60373) 日記
        P4の場合、ダイサイズに占めるキャッシュメモリーの面積は、かなり大きかったような。

        2次キャッシュを共通化した場合、2CPUでも1.3~1.5倍くらいで済むと思いますよ。

        ちなみに、HTで2CPUに似せた場合なら、1.1倍以下だそうな。
        親コメント
      • > それに複数のプロセスでキャッシュメモリを共通化(共有)して
        > も,共通部分(共有可能部分)が実質ないので,キャッシュのヒッ
        > トミスが増えると思いますが.

        それは正しいと思います。

        ただ、もう一つ複数の Processor Element(PE) でキャッシュ
        を共有すると、ひとつの PE とキャッシュ間のバス幅が見掛け
        上減ってしまう問題がありまして、こちらの方がより深刻だ
        と思います。

        つまり、HT なしのプロセッサが 1サイクルに 2ワード分のデ
        ータをキャッシュからレジスタに転送できるとすると、2way
        HT のプロセッサは、1スレッドあたりの転送量は半分。
        1サイクルに1ワード分になります。

        HT (というかSMT) の出発点は CPU 内に暇なファンクション
        ユニットがあるからこれを有効活用しようという話のはずで
        すが、CPU 内に暇なファンクションユニットが出来る最大の
        理由は load/store にあると思うのですが、、、
        --
        コンタミは発見の母
        親コメント
        • 確かに,CPUのクロックが上がっていく速度に,メモリの速度アップがついていっていないので,実行リソースの利用率が下がっていっていますね.しかし,SMTには,キャッシュミスで停止したスレッド以外のスレッドで,実行リソースを使うという面があります.

          個人的見解ですが,Pentium4の HTで問題になるのは,PEとキャッシュ間の実効帯域幅の低下よりも,キャッシュのヒット率の低下だと思います.Pentium4では,はじめから HTの実装がなされていたという疑惑があり,もしそうであれば,最初からキャッシュの実行帯域幅の低下については,何らかの対策がなされていると思うからです.

          また,Pentium4で L1キャッシュがあのような構造になっているのは,ストール時のレイテンシを下げるという目的と,命令キャッシュの実効帯域幅の向上という目的があると思います.そのことで,PEと命令キャッシュ間の実効帯域幅の低下については,対策がなされているのではないでしょうか.

          そういう前提で考えると,Pentium4の HTでは,これから製造プロセスの微細化に伴ってキャッシュの容量を増やし,残るキャッシュのヒット率の問題をクリアしていくというのが,Intelの読みかも知れませんね.

          親コメント
      • by seldon (5637) on 2002年02月07日 13時44分 (#60599)
        歩留まりが悪くなる
        の2点からコストパフォーマンスが『かなり』上がるとは考えにくい のですが
        欠陥のあるチップはシングルプロセスプロセッサとして売れば多少は元が取れます。
        名前はそう、SXです :-)
        親コメント
      • by Psychs (7786) on 2002年02月08日 1時54分 (#60836)

        Hyper Threadingで,複数のスレッドを処理するメリットは,「空いている実行リソースを使うこと」であり,そういう意味で,コストパフォーマンスがよくなるわけです.

        ILP(Instruction Level Parallelism)を利用することで,平均して並列度1.5から1.8程度の実行効率が得られますが,ILPのみでは行き詰まっており,TLP(Thread Level Parallelism)が利用されることになったという経緯があります.

        たとえば,Athlonはスーパースケーラ(ILP)で,並列度3の実行に耐えられるようにできていますが,実際は並列度1.5程度の実行効率しか得られていません.しかし,スレッド数2のTLPを利用することで,おそらく並列度2を上回る実行効率が得られると思います.

        ここで,あらかじめ並列度6を許容する実行リソースを用意して,スレッド数4の TLPを利用することを考えるわけです.こうすることで,実行リソースは元の2倍でありながら,おそらく並列度4以上の実行効率が得られると思います.

        そうすると,元のリソースの 2倍と少しのリソースで,少なくとも3倍弱の実行効率が得られるわけです.これから,半導体の製造プロセスが微細化していくでしょうが,キャッシュメモリばかり増やしていっても,それほどパフォーマンスは上がりません.現状でも,CPUダイ上でキャッシュメモリの占めるリソースの割合はかなり大きいのです.

        ですから,これからの CPUは ILPだけではなく,TLPを考慮に入れ,そのスレッド数を増やすことで,パフォーマンスとコストパフォーマンスの両面で改善が進められていくと思うわけです.

        親コメント
    • by nasb (3002) on 2002年02月06日 12時10分 (#60332) 日記
      > しかし,スレッドレベルの並列性まで考慮に入れたところで,相変わらずタスクスイッチは必要だろう.
      > そこでさらに一歩進めて,プロセスレベルの並列性を取り入れて,マルチプロセスプロセッサを作ってみるのはどうだろう.

      Hyper Threadingで言うところの「スレッド」は、そのままプロセスでも構いませんよ。OSがその気になればそのまま複数プロセスをスレッドとして流せます。

      もちろん、別のプロセスを同時にhyper threading実行すると、キャッシュを汚染しあうので、どのスレッドを選んで投入するかはちゃんと考えないといけませんが、まあ、単純には同じプロセスのスレッドを投入するのでしょう。
      親コメント
    • by uni (661) on 2002年02月07日 21時40分 (#60757)
      IA64はVLIWの欠点である、
      • NOPでコードが膨れ上がる
      • アーキテクチャの改善(すなわちbit数の増加)を行うと バイナリ互換性がなくなる
      といった点を改善するために、純粋なVLIWではなく、並列可能性を明示したRISCの様な命令セットとなっているそうです。 (ここ [impress.co.jp]の一番下の章に少し載っています。)

      IA64でコンパイラに移された重要な機能は、並列可能性を発見することであり、CPUの資源管理はコンパイラからは抽象化されていると理解しています(間違っていたら指摘していただけると嬉しい)。 このことから、並列可能な命令のうち、一部だけを実行するのは難しくないと思われます。SMTとの相性も悪くないのではないでしょうか。

      親コメント

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

処理中...