Comparison of 32-bit and 64-bit memory architecture for 64-bit editions of Windows XP and Windows Server 2003 and drifting over to parallel computing

I’m glad 32 bit is dying, I really am. 32 bit TCP stacks are a pain since they suffer from port exhaustion, 32 bit databases can only grow so large, and wile some of this article IS motivated by the joys of seeing how Exchange and other applications can scale in a 64 bit environment ( from network edge to OS to application to desktop), there’s a lot more in terms of server and desktop that wins from being unbound from the 32 bit limit. And while there IS a lot to be said for small tight code that’s handcrafted in assembler and runs in 32k of RAM – those days are SO over.

KB294418 is a great article to read. Why? Well there’s a few things to unlearn when moving over to 64bit land, which KB294418 also discusses. For example the “/3GB” switch in the boot INI is dead since 64 bit versions of Windows don’t have the same balancing act with PTE (Page Table Entries) that 32 bit OS’s do. a 32 bit app on a 64 bit OS will still “see” only 4 GB’s of RAM at a maximum, but bear in mind that it’s not competing with the rest of the OS and other 32 bit apps like it did on a 32bit OS.

The logical address limit on 64bit machines is 16 terabytes, to put that in perspective against the rest of the memory components on a 32bit OS, I have quoted the table from KB294418 that outlines the differences between the 32bit and 64bit addressing models:

 

Architectural component

64-bit Windows

32-bit Windows

Virtual memory

16 terabytes

4 GB

Paging file size

256 terabytes

16 terabytes

Hyperspace

8 GB

4 MB

Paged pool

128 GB

470 MB

Non-paged pool

128 GB

256 MB

System cache

1 terabyte

1 GB

System PTEs

128 GB

660 MB

Some of the numbers in this table may make your eyes water, but remember how quickly we shifted to 64 bit from 4 bit (not a typo) machines. Larger memory models aren’t the only thing that’s interesting. We still seem to bit removed from 128bit architectures in the main stream, however what IS interesting is multiprocessing and parallel computing. Note that multiprocessing and parallel computing are two different things and code is written differently in either situation.

The Multicore and Parallel Computing website is a really good place to start if you’re interested. Asaf Shelly created this site to create a community around this interesting topic. If you’re into .NET and want to write code that can execute in parallel as opposed to multithreaded, he’s a REALLY good person to talk to.

Are 64bit applications really THAT pervasive? I think so. Network appliances have been 64bit well before we started shifting Microsoft servers into this space. Unix and Linux have been 64bit for a while and even humble little SBS (Small Business Server) ran into it’s memory limits often enough to benefit from an architecture re-fit. I’m loving where Microsoft and the rest of the world are going: 64 bit and fewer limits for a little while 😉