Announcement

Collapse
No announcement yet.

Intel Is Trying To Support The x32 ABI For LLVM/Clang

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Memory bandwidth and latency is a major performance bottleneck these days. Usually the CPU spends a lot of time starving for data instead of executing stuff.
    x32 ABI is useful because:
    • As has been said, you can transfer double the pointers at a time (compared to x86_64)
    • You can fit more data in CPU cache since you now save 4 bytes for every pointer (very good to avoid trashing data between RAM and CPU)
    • You have a lot more (bigger) registers compared to x86
    • Probably more I can't think of right now


    There are applications that don't need to map more than 4GB of memory, and could get a performance boost from these benefits.

    Comment


    • #12
      Originally posted by wargames View Post
      Exactly. I don't see any reason to keep using 32 bit architectures either. Not to mention that if it was not for AMD we would still be using 32-bit CPUs on the desktop and 64-bit only on servers ($$$$).
      Originally posted by schmidtbag View Post
      "The Linux x32 ABI about allowing programs to take advantage of x86_64 features (and being dependent upon x86 64-bit CPUs) while using 32-bit memory pointers."

      To me, this sounds like trying to use 64 bit features on 32 bit architectures. While it doesn't explicitly say this is for 32 bit architectures, I feel that is the intended use in the long run. While I rarely mess with languages like C/C++, I don't see why (if you're on a 64 bit system) to use 32-bit pointers expecting them to use x86-64 features when you could just use 64-bit pointers. If what I'm saying is wrong then sure, it might not have been great to presume the worst, but it still doesn't change the fact that intel has been dragging 32 bit products even into 2013 and I'm getting tired of it.
      -- i attach you two directly because your comments deserve it --
      Wow. You two are really just purely uneducated spam/fud posters! You don't even seem to know what you're talking about so why don't you just shut up? Your contribution in the comments in only to raise your post count and somehow be satisfied about it.

      I don't think you will understand the explanation, but i will give one nevertheless.
      x32 on x86_64 CPU's is a GREAT feature. It allows for developers to use 32 bit pointers instead of 64. That will save quite some space if you have an application that is very pointer heavy. It also brings back some drawbacks that you'd also have with the i386 architecture like less registers and only 4GB per process. Wait, let me repeat that otherwise you can't understand it.. 4 GIGABYTES per PROCESS. You know what that means? Per process, not for your entire linux setup. Most apps don't need that much anyway so that's just fine. It's a different situation with gaming or photo/video editing software, but those should probably not use x32 to begin with.

      So will it really be useful? Depends on the application. If it's a computational heavy application then you should probably not use this. If you use an application with a lot of trees (that's a data storage type which you probably don't know a thing about) thus a lot of pointers then it "might" begin to be beneficial to try out x32 for reduced pointer size. Mind you, 32 bit pointers is enough room for most heavy applications. You hardly ever need the space a 64 bit pointer provides.

      Comment


      • #13
        one question though

        I keep bumping into things requiring 32bit libs on x64, propriteary things like Skype and such. I don't want any 32bit libs, does x32 mean I'll need some special libs too or can it use the 64bit libs ? If it can't use the 64bit libs I don't want it.

        Comment


        • #14
          Originally posted by markg85 View Post
          It also brings back some drawbacks that you'd also have with the i386 architecture like less registers and only 4GB per process.
          Actually x32 has all 16 integer registers available to it. Along with all the new AVX/SSE4.1 stuff that you can only get in long mode in the processor. You get the performance benefits of the shorter pointers by giving up more than 4gb of ram per x32 process. The best part is that you can have x32 processes run along side x64 processes without any performance issues from the extra overhead of switching from long mode to the protected sub-mode for 32bit/i686 programs.

          http://en.wikipedia.org/wiki/X32_ABI

          Comment


          • #15
            Originally posted by simcop2387 View Post
            Actually x32 has all 16 integer registers available to it. Along with all the new AVX/SSE4.1 stuff that you can only get in long mode in the processor. You get the performance benefits of the shorter pointers by giving up more than 4gb of ram per x32 process. The best part is that you can have x32 processes run along side x64 processes without any performance issues from the extra overhead of switching from long mode to the protected sub-mode for 32bit/i686 programs.

            http://en.wikipedia.org/wiki/X32_ABI
            ahh oops. I read that table wrong. You are completely right.

            To clarify my last post (since i can't edit it anymore).
            The only downside of x32 is 4GB/process. If you can even call that a downside.
            Other then this it really looks like a wonderful technique to use.

            I wonder if Qt already support x32.
            /me starts searching
            Last edited by markg85; 07-02-2014, 04:25 PM.

            Comment


            • #16
              Originally posted by mcirsta View Post
              I keep bumping into things requiring 32bit libs on x64, propriteary things like Skype and such. I don't want any 32bit libs, does x32 mean I'll need some special libs too or can it use the 64bit libs ? If it can't use the 64bit libs I don't want it.
              Usually yes, you need x32 libs (together with the regular 32bit and 64bit x86 libs that would mean possibly 3 sets of one library). In some cases you could get along with using 64 bit libs for x32 apps, regular 32bit needs to change the cpu mode and wont ever work. I dont know if this is planned for - such a lib would either be really simple, really strict or really complicated to work with both 64 and 32 bit programms.

              x32 sounds like a really nice thing for pretty much any user, but its probably only usefull if you can limit yourself to a clean x32 environment.

              Comment


              • #17
                Originally posted by schmidtbag View Post
                "The Linux x32 ABI about allowing programs to take advantage of x86_64 features (and being dependent upon x86 64-bit CPUs) while using 32-bit memory pointers."

                To me, this sounds like trying to use 64 bit features on 32 bit architectures. While it doesn't explicitly say this is for 32 bit architectures, I feel that is the intended use in the long run. While I rarely mess with languages like C/C++, I don't see why (if you're on a 64 bit system) to use 32-bit pointers expecting them to use x86-64 features when you could just use 64-bit pointers. If what I'm saying is wrong then sure, it might not have been great to presume the worst, but it still doesn't change the fact that intel has been dragging 32 bit products even into 2013 and I'm getting tired of it.
                Wow. Reading comprehension issues. The x32 ABI has nothing to do with a 32-bit x86 CPU. It says right in the sentence you quoted it is a 32-bit ABI for 64-bit x86 CPUs.

                Regarding 32-bit CPUs, the last CPU line that was 32-bit only was the Atom family and they've finally eliminated 32-bit only models of their Atom CPUs with the Silvermont microarchitecture; which represents all of Intel's power efficient and/or low end CPUs for embedded devices / tablets / phones and lower end PCs / servers.

                Comment


                • #18
                  Originally posted by discordian View Post
                  Usually yes, you need x32 libs (together with the regular 32bit and 64bit x86 libs that would mean possibly 3 sets of one library). In some cases you could get along with using 64 bit libs for x32 apps, regular 32bit needs to change the cpu mode and wont ever work. I dont know if this is planned for - such a lib would either be really simple, really strict or really complicated to work with both 64 and 32 bit programms.

                  x32 sounds like a really nice thing for pretty much any user, but its probably only usefull if you can limit yourself to a clean x32 environment.
                  Another 2 users (mcirsta and discordian) that don't understand shit about x32...

                  Let me put it in clear terms:

                  x32 is __not__ 32 bit libs or even a continuation of i386.
                  Please.. Get it in your head!
                  If you still don't get it then read it like this: x32 is a means to optimize the memory usage in x64. Your app stays 64 bit!. The statement is not completely accurate, but apparently some people only understand simple short lines.

                  Comment


                  • #19
                    Originally posted by markg85 View Post
                    If you still don't get it then read it like this: x32 is a means to optimize the memory usage in x64. Your app stays 64 bit!. The statement is not completely accurate, but apparently some people only understand simple short lines.
                    It's really not any more accurate than what they were saying - a 64bit app usually refers to how large the pointer size is.

                    x32 is different from both x86 and x64.

                    To summarize:

                    x32 requires modern x64 hardware.

                    It can allow higher performance than x64, at the cost of only allow 4GB memory per process.

                    Neither this pro or con is very important to most people. The large majority of apps won't have any noticeable speed boost, and they don't hit 4GB either. A few specialized apps can improve, though - particularly a certain important industry standard database benchmark, which is largely what is driving development of x32.

                    If you have an x32 app on your system, it will have to link to x32 libraries. Just like x64 apps link to x64 libraries and x86 apps link to x86 libraries.

                    That complication of adding a 3rd level of compatibility libraries is why i don't see x32 ever going mainstream in the standard desktop linux distributions. I could be wrong though... Maybe someone will come out with a stripped down "pure" x32 system at some point that people can play around with, and obviously there is always Gentoo for people who want to go that route.

                    Comment


                    • #20
                      Originally posted by smitty3268 View Post
                      It's really not any more accurate than what they were saying - a 64bit app usually refers to how large the pointer size is.

                      x32 is different from both x86 and x64.

                      To summarize:

                      x32 requires modern x64 hardware.

                      It can allow higher performance than x64, at the cost of only allow 4GB memory per process.

                      Neither this pro or con is very important to most people. The large majority of apps won't have any noticeable speed boost, and they don't hit 4GB either. A few specialized apps can improve, though - particularly a certain important industry standard database benchmark, which is largely what is driving development of x32.

                      If you have an x32 app on your system, it will have to link to x32 libraries. Just like x64 apps link to x64 libraries and x86 apps link to x86 libraries.

                      That complication of adding a 3rd level of compatibility libraries is why i don't see x32 ever going mainstream in the standard desktop linux distributions. I could be wrong though... Maybe someone will come out with a stripped down "pure" x32 system at some point that people can play around with, and obviously there is always Gentoo for people who want to go that route.
                      Firefox 30 was chewing up > 6 GB of RAM just yesterday, due to a mix of javascript overkill and flash taking a giant dump on gaming [all on Debian Unstable/Experimental].

                      Throw in any scientific application and the 4GB ceiling is retarded. Same with Solid Modeling, Audio Mixing, you name it.

                      Sorry, but the vast majority of applications will soon be routinely wanting to use larger memory limits, especially with every numbnut wanting to make Web Apps approach the speeds of traditional applications space, just with an overkill of abstraction.

                      Comment

                      Working...
                      X