Forget about that /PAE stuff.
The /PAE switch is not meant to allow a 32bit OS to use more than 3GB on a system with 4GB of RAM, it's meant to allow some 32bit OS, namely Windows Server 2000 and 2003, to recognize the memory above 4GB when the amount of RAM is actually more than 4GB, which is not your case. The hardware will also need to be 64bit compatible. Even in the case of 64bit capable hardware with more than 4GB of physical RAM I'm pretty sure that XP 32bit will still report less than the total of installed RAM.
The /PAE switch will cause issues because 32bit apps and drivers are not designed to be used on systems where it's enabled. It's really only useful to programmers and on some Windows server systems.
Quote:
when not using PAE memory addressing, it is possible for a device driver to assume that physical addresses and 32-bit virtual address limits are identical. PAE memory makes this assumption untrue.
Several assumptions and shortcuts that could previously be used safely do not apply. In general, these fall in to three categories:
• Buffer alignment in code that allocates and aligns shared memory buffers must be modified so that it does not ignore the upper 32 bits of the physical address.
• Truncation of addresses information in the many locations this might be kept must be avoided.
• It is necessary to strictly segregate virtual and physical address references so DMA operations do not transfer information to or from random memory locations.
PAE mode can be enabled on Windows XP SP2, Windows Server 2003 SP1 and later versions of Windows to support hardware-enforced DEP. However, many device drivers designed for these systems may not have been tested on system configurations with PAE enabled.
|
source :
http://www.microsoft.com/whdc/system...AE/pae_os.mspx
Quote:
Some drivers might not load if PAE is enabled, because the device might be unable to perform 64-bit addressing or the drivers might assume that PAE mode requires more than 4 GB of RAM. Such drivers expect that they will always receive 64-bit addresses when in PAE mode and that they or their device cannot interpret the address.
Other drivers might load in PAE mode but cause system instability by directly modifying system page table entries (PTEs). These drivers expect 32-bit PTEs, but receive 64-bit PTEs in PAE mode instead.
The largest driver PAE compatibility issue involves direct memory access (DMA) transfers and map register allocation. Many devices that support DMA, typically 32-bit adapters, cannot perform 64-bit physical addressing. When these devices run in 32-bit mode, the devices can address all physical address space. In PAE mode, data can be present at a physical address that is more than 4 GB. To enable devices with these constraints to function in this scenario, the Windows 2000 Server family and later versions of Windows provide double-buffering for the DMA transaction. The Windows 2000 Server family and later versions of Windows do this by providing a 32-bit address that is indicated by a map register. The device can perform the DMA transaction to the 32-bit address and the kernel copies the memory to the 64-bit address that is provided to the driver. When the system runs with PAE disabled, drivers for 32-bit devices never require their map registers to be backed by real memory. This means that double-buffering is not required, because all devices and drivers are contained within the 32-bit address space. Based on tests of drivers for 32-bit devices on 64-bit processor–based computers, it is expected that most client-tested, DMA-capable drivers expect unlimited map registers.
|
source :
The RAM reported by the System Properties dialog box and the System Information tool is less than you expect in Windows Vista or in Windows XP Service Pack 2 (also applies to XP SP3).
The rest has already been answered by Sobeit and White_Pointer. 32bit means the whole system can't use more than 4GB of physical memory. Your video card uses physical memory, but also your sound chip, network controller and lots of other hardware devices. XP 32bit is built in such a way that, no matter what switches you play with, it will never report the correct amount of memory on systems with more than 3GB of RAM. On some systems Vista 32bit may show the 4GB of RAM but still won't be able to use all of it (showing the 4GB is simply a way to prevent users from complaining).
Quote:
Originally Posted by Mikeraphone
I heard somewhere that the 4gb cap may be to do with total system memory including video cards and the such but my video card only has 256megs on there so I should still see 3.75GB in the System Properties no?
|
The maths don't work like that. The amount of usable memory will be limited to a given figure depending on the hardware installed to avoid potential driver compatibility issues. Read this for more informations :
Quote:
These differences are because of the BIOS and possibly driver reservations of physical memory. For example, some BIOS implementations allocate some physical memory for the graphics adapter. Typical sizes are from 8 MB to 128 MB for graphics. Other sizes are possible. The BIOS and some drivers may reserve physical memory for other peripherals or purposes. These reservations are reasonable and are part of the usual operation for a computer. However, they do reduce how much physical memory is available for use by the operating system and applications. These reservations affect both 32-bit and 64-bit computers.
On computers that have a 32-bit operating system, more than 3 GB of system memory, and with a version of Windows that is earlier than Windows Vista SP1, users will see a larger difference in how much memory is reported as available to the operating system compared to how much physical memory is installed. This is because some physical address space must be reserved as I/O regions for memory mapped peripherals. These I/O regions are allocated between the 3 GB physical address and the 4 GB upper physical address limit.
Physical memory addresses that are mapped to these I/O regions cannot be used to address physical system memory. These addresses also cannot be used to prevent the operating system from using some physical memory that would ordinarily be accessed between the 3GB physical address and the 4GB upper physical address limit. The size of these I/O regions varies from system to system because they determine the type and configuration of the system’s peripherals.
|
Source :
Windows Vista SP1 will report 4 GB of system memory (RAM) on systems that have 4 GB of memory installed (explained better than in the XP article)
Here's a link from HP with a clear graphic explanation :
http://h20331.www2.hp.com/Hpsub/down...HP_MWP_x64.pdf
Quote:
|
to avoid potential driver compatibility issues, the 32-bit versions of Windows Vista limit the total available memory to 3.12 GB
|
Source :
The system memory that is reported in the System Information dialog box in Windows Vista is less than you expect if 4 GB of RAM is installed. For XP the reported amount usually varies between 3GB and 3.4GB, maybe even less than 3GB if big video cards are installed (I've read that some intel chipsets allowing 2 video cards in SLI mode could lock as much as 1.5GB of physical memory range to prevent issues when using two 768MB video cards).
Some motherboards have a "memory remap" feature that's supposed to allocate the memory for the hardware devices above the 4GB limit but I don't know how that would work out with XP 32 bit. Could cause more harm than good.
To check the memory your system really needs open the task manager (ctrl+alt+del) and go to the performances tab. Watch the peak value under commit charge. The commit charge is the total memory (virtual memory
and physical memory) used currently by the system, the peak value is the max commit charge ever used by the system since you turned the computer on. If the peak value is less than the physical memory detected by XP (and I see no reason for it to be above 3GB) being able to use the 4GB wouldn't provide better performances. Check the peak value before you turn the computer off and tell us how high it gets.
Playing with the /3GB switch will leave less memory for the kernel. Depending on the application, it can speed up one given app but also slow down others. It's supported on XP Pro but not on XP Home. Read this :
Quote:
The 4-gigabyte tuning (4GT) feature, formerly called 4GT RAM Tuning, increases the virtual address space that is available to the application up to 3 GB, and reduces the amount available to the system to between 1 and 2 GB.
For applications that are memory-intensive, such as database management systems (DBMS), the use of a larger virtual address space can provide considerable performance and scalability benefits. However, the file cache, paged pool, and nonpaged pool are smaller, which can adversely affect applications with heavy networking or I/O. Therefore, you might want to test your application under load, and examine the performance counters to determine whether your application benefits from the larger address space.
|
Source :
http://msdn.microsoft.com/en-gb/libr...96(VS.85).aspx
Practically, even if your application could benefit from more virtual address space, there are 99% of chances that it won't be able to use more than 2GB. Your audio application is a 32bit app and your sound device uses a 32bit driver, both were designed with the usual 2GB limit in mind. The application would need to use the IMAGE_FILE_LARGE_ADDRESS_AWARE flag in the process header. There are other possible issues mentioned in the MS article among which the fact that the application won't be able to find a contiguous address space of more than 2GB since many system processes are loaded near the 2GB boundary in XP 32bit (if you use sysinternal's process explorer you'll see that 95% of XP's drivers and dll's use addresses between 0x75000000 and 0x80000000, 0x80000000 being the 2GB boundary).