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

そんな、俺が優秀になってしまうじゃないか」記事へのコメント

  • by cyber205 (4374) on 2003年06月22日 18時05分 (#343018) ホームページ 日記
    RISCとかになると、やはりハンドアセンブルは手間ばっかかかって
    なかなかチューンアップするのは難しいですよん。

    やっぱり、自分で手を入れたほうがいいって言える人は
    結構優秀なのだと思います。

    私もBASICとアセンブラ(当時の石はZ80)から入ったので、
    コードをカリカリにチューンするのは嫌いじゃないんですけどね。
    • 具体的には、AMDのK5やIntelのP6アーキテクチャ以降は
      内部がRISCエンジンで作られたハードx86エミュレータですよね。
      だから、中で具体的にどう処理されるのかはわからないし、制御も難しい。

      結局、パイプラインをフルに稼働させ、最大限の能力を引き出すコードを書く前に、
      命令デコーダのクセを掴んでどうやるか…とかそういうレベルになるわけで。
      # 4ー1配列とか聞いたけど、詳しくは知らない。

      実際にはEAX、EBX、ECX、EDXとかのレジスタがあるわけではなく、
      内部の何十本とある、RISCエンジンの内部レジスタのうち、
      どれかに格納されているのでしょうし、外部からはメモリ上にあるはずのデータが
      キャッシュに載ってるのか、レジスタリネーミングで内部レジスタに
      格納されているのか、本当のところはわからない。
      任意の割り込みでどれほどCPUのキャッシュが荒れているのかだって不明。

      MMXとか、SSEとかを使って特定の状況でパフォーマンス改善っていうのなら、
      対応した特定のコードを入れて高速化できるんだろうけど、

      普通のコードをアセンブラで組んだ場合、下手をすると
      アウトオブオーダでぜんぜん違う順番の実行をしてたりすることもある。

      CPUにおまかせできるっていう点では便利なんだろうけど、
      結局命令デコーダの特性やら、実行ユニットの数や処理能力によって
      内部の処理は大きく変化するので、「なんだかな~」と感じます。

      Pentium4なんかだと、倍速ALUがあるから、凝ったシフト演算を
      かけるより、単純な加減算を繰り返したほうが速かったりしますし、
      トレースキャッシュというものを積んでますが、あれは確か、
      変換済みのRISCコードをキャッシングしてしまう技術ですよね。
      どのくらいのコードならうまくキャッシュに収まるのか判断がつきにくい。

      キャッシュ容量によってはループを展開したほうが速い場合と、
      分割してもっと小さいループにしたほうがいい場合ってのがあるはずですが、
      困ったことにこの容量はCPUのタイプだけでなく、グレードによっても違う。
      もちろん、パイプラインの段数によっても命令の流し込み方は変えたほうがいいわけで、
      そういったこまかい特性をいちいち考えてコードを組むぐらいなら、
      いっそ優秀なコンパイラにおまかせして…となるんですよねぇ。
      親コメント

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

処理中...