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

Linuxカーネル開発者の間でx32 ABIの廃止が議論される」記事へのコメント

  • by Anonymous Coward on 2018年12月14日 16時16分 (#3533576)

    x86の32bit(としてつかう)モードに最適化したものでしょうか。
    キリキリチューニングが必要なら各自自分でやってください、なのかな。

    • ざっくり言えば、
      i386:従来からの32bitモード。プロセスあたりのメモリ空間上限4GB
      x86_64: 64bit CPUモード。ポインタは64bitでプロセスあたりのメモリ空間上限128TB
      に対して、
      x32: 64bit CPU を「レジスタ数がたくさんある32bitCPU」扱いするモード。メモリ空間4GB
      ってことです。
      4GBの壁はあるかわりにポインタが32bitなので若干省メモリ。
      64bitモードで増えたレジスタを使うので、64bitモードのない古いCPUでは動きません。

      親コメント
      • by Anonymous Coward

        > 64bitモードのない古いCPUでは動きません。

        誰得…?

        • by Anonymous Coward on 2018年12月14日 18時02分 (#3533674)

          x86_64向けのbinary にしちゃうと ポインタやらなんやらあらゆる i386 binary の倍になるわけで、
          そうすると実際のメモリフットプリントが雑にいうと倍になっちゃうわけですよ。

          DBとかは別として 日常使うようなアプリで実際に64bitポインタつかった巨大なメモリ空間なんかは要らないようなアプリが多い、
          でもx86_64で拡張された各種機能はとっても美味しいので使いたい。

          という結果 64bit ポインタをあきらめることで メモリ消費を抑えつつ 本来の x86_64 の各種機能を使えるモード として提案されたのが
          x32 なわけですよ。

          というわけなので 誰でも得と言えば得なんだけど...

          一方で、もはやメモリなんかじゃぶじゃぶあるわけで そこまでしてガンバる構造をkernelに残しておくことの複雑さとか、そもそも
          みんな使ってないし.. とかいうあたりで メリットとデメリットを天秤すると 普及してもないしデメリットのが多くね? という話が
          出てきたというのが 本件だと思います。

          親コメント
          • メモリフットプリント倍ということは、単にメモリ倍積めば同じになるわけではなく、
            同一キャッシュサイズではキャッシュミス率も倍ということになります。
            イマドキはCPUキャッシュとメモリの速度差が数百倍あり、ほぼキャッシュミス率で速度が決まるので、下手すると速度が半分(実際にはデータ中のintとポインタの比率による)になります。

            英wikipedia [wikipedia.org]によると、SPEC INTベンチで最速40%,平均5-8%の高速化になるそうです。(x86-64比)

            イマドキの 64bit javaでは、 同様に(オプションで)参照を32bit表現にして高速化しています。32bit表現->64bitポインタへの余分な変換処理を入れてでもキャッシュミス率を低めた(ヒット率を高めた)法が速いってことです

            親コメント
          • by Anonymous Coward

            x64でもオペランドサイズのデフォルトは32bitなのでさすがに「すべて倍」は雑すぎる。大きくなることは確かだけど。
            だからintが32bitなのもx64では「自然」

        • by Anonymous Coward

          Raspberry Pi3とかで有効活用できる。でも今のraspbianってi386しかないよね。

          • by Anonymous Coward

            raspbrrypi は ARM

            • by Anonymous Coward

              あっ... (´・ω・`) ...

              • by Anonymous Coward

                うっかりするような所か?

          • by Anonymous Coward

            ラズパイ3はcpuがARM 64bitだけど、rasbianが既存のraspberrypiと互換を取るために32bitモードで動いているのであって全然違う話。

            • by Anonymous Coward

              そもそも x86 の話ですよ?

              ARM関係ない

        • by Anonymous Coward

          Intelの安かったり古いCore MAなCPUが64bitだと遅かったので、それ対策かも。
          Macro-Fusion 64bitとかで検索

        • by Anonymous Coward

          省メモリって書いてあるじゃん。
          あと、多分32ビット命令しか使わないんだろうから、コードサイズが減って
          多少キャッシュ効率とか上がったりしそう。

        • by Anonymous Coward

          今と違い4GB以下のマシンにも人権(マシン権?)があった時代の徒花ですな。

        • by Anonymous Coward

          誰得とか言ってる奴もJVMはきっと圧縮OOPで動いている
          https://www.oracle.com/technetwork/jp/articles/java/compressedoops-427... [oracle.com]

      • by Anonymous Coward

        キャッシュに載る量が多くなるから、若干速いのでは。

      • by Anonymous Coward

        > 4GBの壁はあるかわりにポインタが32bitなので若干省メモリ。

        若干どころではない
        ポインタとintなどのunionが軒並み8バイトになってx64化で倍のメモリを食うようになったアプリが少なくなかった
        今は16GBとか32GBのメモリが当たり前なのでx32のメリットはかなり少ない

        • by Anonymous Coward

          > ポインタとintなどのunion

          そんなデータ構造の大半を占めるようなアプリって、そんなにある気がしない。

    • by Anonymous Coward

      ほかの32bitといえばARMのThumb命令
      密度とアクセスアドレスの局所化のためにARMより大きな犠牲を払ったABIなのかな

      • 組み込みでは、ハードウェアのコストに直結するので、少容量であることは重要です。

        組み込み用のコアテックスMではThumb命令の利用があたりまえです。というかもとから組み込み用途のためのThumb命令です。ルネサスの真似しやがって!

        ちなみに組み込みではいまだにfarとかnearとかを駆使して速度と容量をケチるプログラミングスタイルは健在です。

        親コメント

犯人はmoriwaka -- Anonymous Coward

処理中...