Programming with Intel Extended Memory 64 Technology: Migrating Software for Optimal 64-bit Performance

Quantity has a quality all its own.
Josef Stalin
The principal reason for migrating to Intel EM64T is the enormous amount of memory the architecture supports. Smaller advantages include native 64-bit data types, added XMM registers, and more general-purpose registers; but the big story is the amount of RAM that can be supported. As explained in previous chapters, the actual amount of RAM supported by Intel EM64T should expand as new generations of the architecture see the light of day. At present, 16GB is the default size for most systems with a cap of 64GB. Both numbers are likely to climb quickly.
Developers accustomed to working within the confines of a 4-GB system are likely to view dozens of gigabytes as an almost endless embarrassment of riches. And like a small child who has just been given the keys to the local candy store, you have good reason to resist the temptation to rush in and grab all you can. Use of large memory spaces, and of a new processor technology in general, suggests caution and circumspection.
Without doubt, lots more memory tends to improve performance. However, if used poorly or inefficiently, large amounts of RAM can present a hindrance to good performance. The problem is that if you're not accustomed to thinking in terms of the effects of using a larger memory space, you can inadvertently write poorly performing code.
This chapter explores the pitfalls of working with large memory, starting with a generic treatment of the topic...