x86 vs. x64 CPU performance

Page 2 - Seeking answers? Join the Tom's Hardware community: where nearly two million members share solutions and discuss the latest tech.



I'm not talking just changing the compiler setting to 64bit and compiling in 64 bit.. there may be speed benefits there but not necessarily...
I'm talking custom code optimisation in assembly... where the extra registers and the larger registers can be used to during execution.

this is custom tweaking stuff that may be done in video compression.
the company I work for sees a 20% optimisation (in 32bit mode) just using SSE4.1 over SSSE3 instructions (SSE4.1 is in the new 45nm Wolfedale processors).

but unless the code is specifically optimised to take advantage of the 64bit architecture. I don't think you will see much of an improvement

my 2¢
 
Half-Life 2 also has 64 bit capability and as far as I know was the first to do it. When you load steam on a 64 bit system it makes the download corrections for the games your downloading. XP64 doesn't have what Vista 64 does and that is the application WOW32 which helps run 32 bit apps smoothly on a 64 bit os. I can tell you for sure runing HL2 or any of the Valve games after HL2 is 64 bit coded and that includes TF2.
 


HL2 a real performance hog. Irrelevant.
 


If there are 2 programs, doing the same job and both made equally as well (good coding).

one made 32 bit from the ground up.

one made 64 bit from the ground up.

The 64 bit program on a 64 bit OS will be faster.




Any variations on that (i.e. 64 bit ported to 32 and visa versa) and all bets are off.
 


we already came to the conclusion only about 8 posts ago.
 



You stated

"I'm looking for the chump who said 64-bit is faster then 32-bit."


7 posts before that one 😉
 



Both XP and Vista have 64 bit versions. I have/use Vista 64, and not only have had no troubles I haven't been able to solve myself, I actually like it. It's *not* the same as XP, though, and it does have it's foibles (for example - UAC is annoying for the 10 minutes it takes anyone with a brain to figure out how to shut it off. Or that the 'admin' account isn't *really* the admin account in the XP sense, and that there *is* a real admin acct...) Regardless, it's best to approach it from a "This is a new OS that I have to learn" point of view. If you leave your XP hat on, you'll confuse/pi$$ yourself off.


Having said that - I don't care if any individual likes/dislikes it and why. If you want XP, then have at it - It's a fine OS. I do request the same consideration in return - So thanks in advance for not caring what OS I use.


XPx64 has the same end of life (mid summer) as the 32 bit version. Having said that - From an end-user comsumer point of view, "End Of Life" merely means that you won't be able to buy a new copy in stores. After all, bug/security patches will continue to be available via Windows Update, and for the world at large, that is about *all* the support you get from Microsoft anyhow. At this point, I would order a version with SP3 already streamlined into it.


For Vista - Basic is not available in 64 bits, but the others are. If you buy Ultimate, you get both a 32 and a 64 bit DVD in the package. For the others: If you buy a 32 bit Retail version in the US, MSFT will send you a 64 bit CD for something like $10 for shipping/handling. If you buy OEM, then you will need to buy a 64 bit OEM CD to begin with, as the upgrade won't be available to you.


Regarding *both* XP and Vista x64: Make sure your devices have 64 bit drivers. For hardware created in the last year or two, you should have no problem with Vista x64. I have no personal experience with XP x64, and therefore leave that end to someone who does.
 


You don't need to write assembler to use the extra registers. 64-bit compilers will use them automatically in code which can benefit from them.

but unless the code is specifically optimised to take advantage of the 64bit architecture. I don't think you will see much of an improvement

I remember when 64-bit x86 was new, one game company said they got a 20% improvement just by recompiling to 64-bit. I think it was some version of Unreal Tournament (and might have been the server rather than the client), but I'm not sure of that.
 
I own Vista Home Prem. 64-bit and I have not had any problems with it so far.

I'm running a Phenom 9600 BE at stock 2.3Ghz(I know it cant OC well) 4Gb g-skill DDR2-800, 320 Gb HHD, and a HD 3870 clocked at Core:851 Mem:1143.

I got the 64 bit so I could use more RAM and so the PC would last longer. I owned both the 32 and 64(And the 64 bit PC is much faster but it has better hardware).

I think that 64 bit is the way to go. I think that Windows 7 is going to be just 64 bit...I think. I see thats the way things are going. Because Vista is just the inbetween OS like ME was before XP.

Point me out if i'm wrong but thats what I think.
 



The real problem that everyone has missed is that x64 instruction extensions are kludge on a kludge on a kludge!! The x86 itself is really cobbled together. Extensions added in the 32-bit 80386 processor to the previous generation 16-bit 80286 processor, etc., etc.

The real kludge is all the variable length instructions. This has lead to optimisations in Intel's Core 2 Architecture that favour 32-bit instructions (globbing them together) which does not operate at all on 64-bit instructions. Windows XP x64 and Vista-64 are mainly about being able to address more memory and not extra performance. Only a native 64-bit CPU would really benefit from the extra instruction bandwidth (e.g. the Itanium - which is dying a death due to the fact that a lot of businesses use Itanium servers to emulate x86 processors!!). A good RISC style architecture with out-of-order execution, aligned 64-bit instructions and superscalar execution running native binaries would really fly!!


I run Windows XP Pro 64-bit and have not noticed much difference with Windows XP Pro 32-bit except that it's a bit harder to get old games to run... But they do!! Even have System Shock 2 running. No noticeable change in speed... A (very) few actually have seperate native 64-bit .exe's. I can check if anyone is interested which but personally I think its a bit academic.

I am not a big fan of Windows XP 64-bit as it is riddled with bugs still. It is childs play to bring it down by installing the wrong codecs. This mainly relates of course to M$'s poor kernel protection (a general problem for all their kernels: past and present). Why should an audio or video codec error bring the whole system down with a blue screen?? I still have a lot of issues mainly with getting a stable software DVD player (besides Windows Media Player!!)

Also all the older application-level firewalls are broken under Windows XP x64. Only a select few will run at all even now (e.g. AVG works well)...
----->
So in summary Windows XP x64 and presumably Vista 64-bit are not going to give you one jot of a performance boost most of the time. Maybe native x64 binaries on an AMD x64 enabled processor might show some benefit... Its only any use if you want more than ~3Gb RAM to be addressable. This will help Photoshop, etc. I understand... I find it does help when doing hardcore multitasking e.g. a very busy quad-core system could max. out ~3Gb RAM.

Bob

 


Limited to 64GB of physical memory, you mean? Or are you talking about per-application?

A 32-bit x86 operating system can easily handle >4GB of RAM if it's written to do so, but each application is limited to 4GB address space, which means more like 3GB once the kernel's address space takes a chunk out of that.

I think Microsoft only support >4GB on the 32-bit server versions of Windows; Linux, on the other hand, will support it on anything.
 











For you all:

In 32 bit Windows operating systems, the total addressable space available is 4GB. If you installed total 4GB memory, your operating system will be able to use LESS THAN 4GB of total memory because of address space allocation for other critical functions, such as:

- System BIOS (including motherboard, add-on cards, etc..)
- Motherboards resources
- Memory mapped I/O
- Configuration for AGP/PCI-Ex/PCI
- Other memory allocations for PCI devices

Different onboard devices and different add-on cards (devices) will result of different total memory size. e.g. more PCI cards installed will require more memory resources, resulting of less memory free for other uses.

This limitation applies to most chipsets & Windows XP/Vista 32-bit version operating systems.

If you install a Windows operating system, if more than 3GB memory is required for your system, then the below conditions must be met:

1. The memory controller which supports memory swap functionality is used. The latest chipsets like Intel 975X, 955X, Nvidia NF4 SLI Intel Edition, Nvidia NF4 SLI X16, AMD K8 and newer architectures can support the memory swap function.

2. Windows XP Pro X64 Ed. (64-bit), Windows Vista 64, or other OS which can address more than 4GB memory.



Note: Windows Vista 32bit SP1 will display the installed amount of RAM. This is a display change only.





In English - A 32 Bit OS can only address 4GB worth of stuff. Things other than memory come first. Once the rest of your system has been handled, RAM gets the addresses which are left over. So if you have 750MB worth of addressable items (common if you have a reasonably beefy video card), then you will have 3.25GB of address space available for RAM, and your operating system will only be able to use that much. If you have more items on your box than 750MB?? (SLI, for example), then the OS will have that much LESS address space left over.
 


For some definitions of 'addressable memory'. A 32-bit application can only address 4GB of virtual memory, but a 32-bit OS on a recent x86 chip can address up to 64GB of physical memory.

If you installed total 4GB memory, your operating system will be able to use LESS THAN 4GB of total memory because of address space allocation for other critical functions, such as:

Depending on the operating system, it will be able to use up to 64GB, but only a maximum of 4GB is available to a single application. As I said above.

Oh, and if you won't believe me, here's the official word from Microsoft for physical memory support in different versions of Windows:

http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
 
Please check your facts that have been posted....

Remember that throughout this I am talking about address space and not memory. Address space has to contain normal RAM and also expansion cards like sound, graphics, modem, network etc etc as they all need address space to talk the the O/S and CPU. Your nice sparkly new 1GB graphics card needs its own ram to have address space so you can draw stuff on the screen so it eats some of the addresses available to the O/S.

Windows Server NT, 2003 & 2008 support PAE (Physical Address Extensions) which allows 64GB of address space to be addressed.

Windows XP and Vista do NOT support PAE which limits them to 4GB of address space MAXIMUM. This was done due to the poorer drivers for home systems that may not fully support PAE and crash the system, this is a Microsoft limit (although PAE is a patch to allow higher addresses to be used on server setups)

32bit applications are also limited to a user area of 2GB memory unless they use extension flags to allow upto 3GB of memory space PER APPLICATION.

32bit applications running on 64bit O/S have had this user area increased to 4GB with the IMAGE_FILE_LARGE_ADDRESS_AWARE flag set but still retain the 2GB limit without the flag, native 64bit apps using the flag can access 2TB of ram per application.

All peripherals take up some address space so they all eat into the address space avaialbe to the O/S, usually this address space starts at the 4GB boundary and is populated downwards so that memory is accessible to all 32bit O/S calls, the BIOS usually sorts this all out and will allow remapping of the ram that is overwritten to move above the 4GB boundary. The fact that the O/S sets the limit by not supporting the PAE options means it can only address 4GB of address space for a 32bit O/S meaning that all your display cards etc eat into this space.

Vista with SP1 has been told to lie to the end user (probably at the request of people like Dell and HP etc). This is so they can keep using a 32bit O/S and the system reports all 4GB of ram that is installed, even if due to a nice twin 1GB card SLi graphics setup it can only access 2.5GB of this ram. Any decent memory reporting program will still report the true memory space that is available to the host O/S. This move by Microsoft, personally, was a bad idea as it hides the limits of a 32bit O/S from the end user and can cause total confusion. What happens when the user upgrades to 8GB from their 4GB and they notice no speed increase simply because Vista32 reports RAM it has no hope in using.
 
Excelent Post Qwakrz.

The discussion got a bit off topic with a memory debate, but ill try to take it on track again.

Is the 64 Bit system faster ?

Yes, i am one of the chumps that says yes. Pretty much. It doubles the reading the data per cycle.
The big problem isnt the software. But the compilers. Like before with Hyper Threading and before that SMP (Simetric Multi-Processing) the compilers / coding is just not ready for it. We have now Quad cores that very few software still takes advantage of it. Some with X64 instructions. X64 is here since the old time Alpha Stations ( that was 20 years or so ago) if im not mistaken.

The main problem is backwards compatible. Some peeps with a more techie background like myself we can afford to loose (or win) time with bugs and try to find solutions. Now is the mainstream market ready for X64 processing ? Not a chance. When people want more and more solutions out of the box, and big shift like this is gonna bring problems, or its not doable in any way.

Im Using 3 OS's atm. Ubuntu 8.04, Win XP SP2 32x and Vista x64 Ultimate. Linux for working, XP for general games (Still addicted to NFS Porsche Unleashed after all this years) , and Vista 64x for testing and the lastest games. How many of you triple boot ? How many of you really test it out and reach to conclusions ?

We are in a transition fase. Dont tell me " 3dmark tells me otherwise". Maybe 3dmark compiler/code has a problem with 64x instrucciones or doesnt have it at all. Syntetic Benchmark are what they are, nothing more. I meant 3dmark as a example only. In terms of results, he tests very similar in my XP 32 and in my Vista 64.

64 bits systems should beat 32 bits ? of course. Are they faster now ? All depends on software to tell you that story or to give you the result you want, so, it will take its time.
 




Mark - Thank you for your link, but I believe you have mis-interpreted something: PAE applies to SERVER verions of the operating system. 32bit Desktop versions of Windows do not support PAE, except insofar as MSFT have made partial use of PAE in order to implement DEP (Data Execution Prevention) as a secutiry measure against certain types of Malware.

Many of us here already know this stuff, but going forward I would ask that you be clear about whether you are discussing server side or the desktop.
 


I already said that Microsoft only support > 4GB on server versions of Windows. But that's a marketing limitation, there's no reason why they can't support 64GB on a desktop OS, as Linux does.

You said:

In English - A 32 Bit OS can only address 4GB worth of stuff.

Which is not true, unless by 'address' you're talking about virtual address space rather than physical memory. What you are talking about is far from clear to me, which is why I wanted to point out the difference.