New
#11
Very well done, Bob. I tried but could not rep you.
YA know... I kinda like the title.
Never change for nobody Lordbob.
We love ya just the way you are.
Shawn was the one who recommended that I write this, and I PMed him the link when I was done. He had logged out a few minutes before unfortunately, but he will see it when he comes back.
I don't intend to Joel. I felt that the title was very explanatory and worked, but didn't flow well.
What about:
32 bit vs 64 bit: A Simple Explanation
32 bit vs 64 bit: What Do I Choose?
~Lordbob
Lordbob, nice explanation - but I think you misunderstood several items.
- Memory bus: x86-64 is an ISA extension to the already legacy burdened x86. It has nothing to do with "Memory bus", memory bus works in hardware level, so on Intel Core 2 Quad series, it will run at max speed - on Intel i7/i5/i3, it will also run at max speed regardless OS's Kernel ISA compatibility.
- The main differing case between 32bits and 64bits system are it's "Addressable space", this address space is what the processor use to address it's devices, be it a PCI/PCIe controller, a memory controller, a storage controller, a display controller, and many others. In 32bit Windows, you can address up to 4GB memory, but in practice you can only use 3GB - 3.25GB (depending on how many devices you have in your computer), why? Easy, because the address space is used by other devices, not only memory (memory is also a device, but critcally, memory is one of those devices that used a lot of addressing space...). Several x86 Intel XEON have PAE, with a modified kernel, it can address full 4GB along with other devices.
- There are several types of Windows applications, I'll list some of them:
- The "Classic" type: the type is compiled to a binary, and runs at full speed, depends critically to OS/Processor type.
The reason why 32bit Windows apps can run mostly with minimum to no problem under Windows 64bit is because in Windows 64bit, there's a subsystem called "WoW", Windows in Windows. It's the one that's responsible to "virtualize" 64bit processor to a 32bit application. If you remember back in XP, XP has it's own "virtualization" subsystem for 16bit MSDOS programs, it's called "NTVDM.EXE". Both has it's own quirks, though. These applications, which compiled to 64bit native code, and if they link to a 32bit compiled library (some 32bit compiled .dll file), this application WILL FAIL. They need to link to a 64bit library too. Now comes the hard part, several native applications will call a method in 32bit library that has been deprecated in the 64bit version, thus crippling the said application. All this is a big messy headache inducing serious problem, thus MS comes up with "WoW" and "XP mode", and a HUGE push for developers to port their apps to either ".net" or compile it to x64 binaries.- The "Modern" type: this type is compiled to an intermediary data format, be it a .net CLR, or a JVM byte stream, and many others. It run mostly slower than compiled natively to a binary format, some are slower than others. It relies on virtual machine intermediary layer to execute. A .net app will need a .net framework to work, a Java program needs Java to work.
This type of applications most of the time ignores the underlying hardware, because it doesn't even work natively. What you need to make sure that these program works in your computer is to have the correct VM for it to work, in .net case, you'd need the correct .net version, same as Java.- As for RAM, this brings another level of complicated factors. Our computers have it's RAM, those RAM are managed by the OS's Kernel. In a computer that has 4GB RAM, it doesn't mean that your application can use ALL of those 4GB by default. Here are the breakdown:
- 32bit OS:
- The limit of "User-mode virtual address space for each 32-bit process" is 2GB, which means you can only use 2GB max for each process in your 32bit OS, in plain english: Photoshop in 32bit Windows will only able to use 2GB max even if you have 4GB RAM. This type of kernel can't have 64bit binaries running in user space.
- 64bit OS:
- The limit of "User-mode virtual address space for each 32-bit process" is 2GB, which means you can only use 2GB max for each process in your 32bit OS, in plain english: Photoshop in 32bit Windows will only able to use 2GB max even if you have 4GB RAM. If the application is specifically compiled with "IMAGE_FILE_LARGE_ADDRESS_AWARE" flag set, it will be able to use 4GB max.
- The limit of "User-mode virtual address space for each 64-bit process" is 8TB (default), or 2GB with "IMAGE_FILE_LARGE_ADDRESS_AWARE" flag cleared. In this case, Photoshop 64bit (with "IMAGE_FILE_LARGE_ADDRESS_AWARE" flag set) will be able to address 8TB of your RAM if needed.
Reference: Memory Limits for Windows Releases - MSDN
Other than these issues, your post is GREAT
zzz2496
Edit: added reference.
Last edited by zzz2496; 24 May 2010 at 00:21. Reason: added reference
Thanks for the added explanation (this will be incorporated into the first thread if you don't mind).
In some cases, it is more detailed than I wanted to go. This is because I wanted this to be a guide for people who didn't know a lot about computers to make a more educated decision on which type of OS to get.
I am not sure I entirely follow the memory bus explanation. Could you explain it a little more?
I know about the addressable space difference, however your explanation cleared a few things up for me, thank you. Now that I get it, I see how I can add it to the post to make it easier to understand for others.
The last part about the RAM is WAY more detailed than I intended to go (but again, thank you). Again, remember this is for your average user asking about 32 bit v 64 bit. However, I will add parts of this to the main post.
Thank you!
~Lordbob
I dont think 64bit requires atleast 2GB ram as i ran 64bit Windows 7 on a laptop with 1GB