パスワードを忘れた? アカウント作成
478032 journal

L.Entisの日記: スキーム移行 3

日記 by L.Entis
表トピックのこのコメントとか見ると、数年前に「これからの時代は IA64 だぜ」と思い、IA64 のニーモニックを手書きするのをワクテカしていても、一向に IA64 パソコンが世間に出てこず、そうしているうちに EMT64 が出てきて、「しょうがないけど、これからの時代は EMT64 だぜ」と思い、EMT64 のニーモニックを手書きするのをワクテカしていたのだけど、一向にユーザーエンドでの64ビット化が進まず、大半の一般アプリは32ビットで十分なため、「結局、一般のエンドユーザーは当面32ビットで十分なんじゃ…」と orz になっている自分と、微妙に重なります orz
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by tarosuke (2403) <webmaster@tarosuke.net> on 2007年12月09日 2時14分 (#1262426) 日記
    意外と筋が悪かったねー。結局、コンパイラで並列化するのではなく単に命令の入口が増えたという。
    # そういう意味で昔のSMPと今のマルチコアは別物だったり。
    • by L.Entis (21733) on 2007年12月09日 13時32分 (#1262569) ホームページ 日記
      というか、アセンブラでガリガリ書く感覚からすると、コンパイラで最適化するのには限界があるのはみえみえなので。
      C 言語とか、言語仕様を根本的に変えない限り。

      結局、P5 までは記述する命令の順番に気をつけていたけど、P6 以降は、命令の順番は同時に発行できる命令に気をつけるだけで、実際には実行ユニットのスケジューリングに気を配る割合のほうが高くなりましたし。
      コンパイラでの最適化をアクセラレーションするのは、古典的ですが純粋にレジスタ数を増やすのが効果あると思いますね。

      P6 以降、レジスタ数が足りない場合は、あえてこう書きますしね
      mov eax, A
      mov B, eax
      mov eax, C
      mov D, eax
      (こう実行されることを期待して)
      mov eax(0), A
      mov eax(1), C ;; ここまで同時
      mov B, eax(0)
      mov D, eax(1) ;; ここまで同時

      親コメント
      • by tarosuke (2403) <webmaster@tarosuke.net> on 2007年12月09日 15時24分 (#1262624) 日記
        まー、その辺のレジスタのリネーミングだとかまで含めてそっちでの高速化は半ば捨てて、依存性がないことがわかってる別のコンテキストのコードを混ぜて投入するという意味でSMTだのマルチコアだので「命令の入口を増やした」わけで。Intelの場合は単体コンテキストの性能も下げられないだろうけど、そういう事情がなかったらレジスタのリネーミングだとか投機実行だとかOutOfOrder実行だとかはバッサリやっちゃいたい所だと思う。これらがなくても全体の性能は変わんないからね。
        親コメント
typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...