The 32 bit Windows
platform has been in existence for nearly 15 years. While
32 bit Windows is still a very good operating system, 64 bit
Windows is a robust platform that offers premier performance
that is unparalleled in the mainstream 32-bit environment. The
64-bit systems offer direct access to more virtual and physical
memory than 32-bit systems and process more data per clock
cycle, enabling more scalable, higher performing computing
solutions. Sixty-four-bit native applications can deliver
more data more quickly, so memory-intensive applications can run
more quickly and efficiently. Data in memory is accessed
thousands of times faster than it is on a disk drive.
Applications can preload substantially more data into virtual
memory, allowing rapid access by the 64-bit processor. Features such as Data
Execution Prevention (DEP) and PatchGuard
improve security by helping to prevent malicious code from
executing on a server.
The non-paged pool on a 32
bit node is 256MB and 128GB on 64 bit nodes - 500 times larger.
The x64 architecture enjoys a substantial advantage in overall
I/O efficiency and throughput. With support for greater physical
memory and memory address space, caches can be substantially
larger than in 32-bit Windows, enabling the Windows x64 Editions
to fully utilize the improved I/O hardware available and
increase overall I/O performance. The larger address space
allows more I/O to be in progress simultaneously. Even 32-bit
applications can benefit from this improvement. This is
especially beneficial to users that require a lot of SSL
sessions, such as online traders, because there is more memory
available quickly to open and maintain SSL sessions.
Based on the same code
base as Windows Server 32-bit editions, the Windows Server x64
editions offer the time-tested reliability of the Windows Server
platform while providing a platform for both your new,
high-performance native x64 applications and the legacy 32-bit
applications that are still critical today.
All 32-bit applications
run in the WOW64 subsystem, with access to 4 GB of virtual
memory address space. WOW64 provides a high-performance, highly
compatible, and isolated environment for 32-bit applications.
The WOW64 subsystem provides a high-performance 32-bit Windows
environment that enables x64 Windows to take full advantage of
the more than 10,000 existing 32-bit Windows applications
available today. Because of the underlying hardware
compatibility of the x64 architecture, 32-bit applications are
able to run at full speed in the WOW64 subsystem. Many
applications will actually run faster in WOW64 than they would
run in 32-bit Windows because of the larger available memory
address space and the greater efficiencies of the x64 processor
architecture.
Moving to a 64-bit architecture changes the
amount of virtual memory that can be directly addressed from 4
GB to 16 terabytes (TB). This 16 TB of memory is divided evenly
between user mode processes and kernel mode processes, the same
way memory is handled in 32-bit versions of Windows. Native
64-bit applications have 8 TB of available virtual memory
address space.
The 32-bit versions of Windows use a flat,
32-bit virtual address space, limiting the amount of virtual
memory that can be addressed directly to 4 GB (232). By default,
this 4 GB is divided into two equal buckets: 2 GB that can be
addressed by a process, and 2 GB that is addressable by the
operating system and shared across all processes.
Windows x64 Editions protect against sources of instability due
to vulnerabilities that start in the application layer. During
the development of Windows x64 Editions, Microsoft carefully
analyzed crash dump data and found that many system crashes are
caused by improperly written code that hooks or patches into
system components. Windows x64 Editions include a technology
called Patch Guard, which protects against rogue code that could
destabilize a system through patching into system components.
An important new feature in the x64 processor architecture is
the Data Execution Protection (DEP) bit that controls which
areas of memory can be used to execute code. While AMD and Intel
have different names and slightly different implementations for
this feature, the result is an enhanced layer of hardware
protection against some of the most destructive worms and
exploits of the past several years.
A buffer overflow occurs when a data buffer is stuffed with more
data than it is designed to handle. (I use buffer overflow as a
generic term for exploits that load executable code into areas
that are supposed to only contain data, then jump program
execution into that code by overloading heaps, stacks, and other
memory pools.) For example, if your e-mail client is designed to
handle attachments with a maximum of 255-character filenames and
you receive a message that has a filename with 256 characters, a
buffer overflow can occur. When this happens, adjacent memory
space gets overwritten and malicious code can end up being
executed with the privileges associated with the original
program. The infamous MSBlaster worm was this type of exploit.
Beginning with Windows XP Service Pack 2 (SP2) and continuing
with Windows Server 2003 SP1 and Windows XP Professional x64
Edition, Windows uses DEP to prevent malicious code from being
able to execute, even when a buffer overrun occurs.
The x64 versions of Windows also support Microsoft’s Patch Guard
technology that prevents non-Microsoft originated programs from
patching the Windows kernel. This technology, available only on
Windows x64 Editions, prevents kernel mode drivers from
extending or replacing kernel services including system service
dispatch tables, the interrupt descriptor table (IDT), and the
global descriptor table (GDT). Third-party software is also
prevented from allocating kernel stacks or patching any part of
the kernel.
The x64 Editions of Windows are essentially
feature comparable with the 32-bit versions. They are able to
execute both native 64-bit programs and 32-bit programs
efficiently and with high performance, bringing an unprecedented
level of compatibility to 64-bit computing.