Address Windowing Extensions


Address Windowing Extensions is a Microsoft Windows application programming interface that allows a 32-bit software application to access more physical memory than it has virtual address space, even in excess of the 4 GB limit. The process of mapping an application's virtual address space to physical memory under AWE is known as "windowing", and is similar to the overlay concept of other environments. AWE is beneficial to certain data-intensive applications, such as database management systems and scientific and engineering software, that need to manipulate very large data sets while minimizing paging.
The application reserves a region, or "window" of virtual address space, and allocates one or more regions of physical memory. Using the AWE API, the application can map the virtual window to any one of the physical regions. The application can reserve more than one virtual address space and map it to any of the allocated regions of physical memory, as long as the number of bytes reserved in the virtual address space matches that of the physical memory region. An application must have the Lock Pages in Memory privilege to use AWE.
On 32-bit systems, AWE depends on Physical Address Extension support when reserving memory above 4 GB. AWE was first introduced in Windows 2000 as a new API superseding the PSE36 method of accessing more than 4 GB of memory, which was no longer supported in Windows 2000. Among the first applications to make use of AWE were Oracle 8.1.6 and Microsoft SQL Server 2000.
If the boot flag is used to repartition the 32-bit virtual address space to 3 GB userland, then AWE is limited to accessing 16 GB of physical memory. This limitation is because with only one GB reserved for the kernel, there isn't enough memory for the page table entries to map more than 16 GB of memory. Additional restrictions on the maximum amount of memory addressable thorough AWE are imposed by the Windows licensing scheme. For example, Windows 2000 Advanced Server was limited to 8 GB, while Windows 2000 Data Center Server supported 64 GB.
An article published in Dr. Dobb's Journal in 2004 noted that memory allocated using Address Windowing Extensions will not be written to the pagefile, and suggested that AWE regions could therefore be used as a way of protecting sensitive application data such as encryption keys.