Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Windows Operating Systems Software

Behind the 4GB Memory Limit In 32-Bit Windows 756

An anonymous reader points us to a very detailed post by Geoff Chappell, first put up early this year, explaining how the 4GB memory limit commonly bandied about for 32-bit Windows (he is writing mainly about Vista) is more of a licensing preference than an architectural limit. The article outlines how Chappell unlocked his system to use all the memory that is present, but cautions that such hackery is ill-advised for several reasons, including legal ones. "If you want [to be able to use more than 4GB in Vista] without contrivance, then pester Microsoft for an upgrade of the license data or at least for a credible, detailed reasoning of its policy for licensing your use of your computer's memory. ... [C]onsider Windows Server 2008. For the loader and kernel in Windows Vista SP1 (and, by the way, for the overwhelming majority of all executables), the corresponding executable in Windows Server 2008 is exactly the same, byte for byte. Yet Microsoft sells 32-bit Windows Server 2008 for use with as much as 64GB of memory. Does Microsoft really mean to say that when it re-badges these same executables as Windows Vista SP1, they suddenly acquire an architectural limit of 4GB? Or is it that a driver for Windows Server 2008 is safe for using with memory above 4GB as long as you don't let it interact with the identical executables from Windows Vista SP1?"
This discussion has been archived. No new comments can be posted.

Behind the 4GB Memory Limit In 32-Bit Windows

Comments Filter:
  • Re:Wa wa what? (Score:5, Informative)

    by Annymouse Cowherd ( 1037080 ) on Tuesday August 25, 2009 @03:20PM (#29190973) Homepage
  • Simple (Score:5, Informative)

    by TheRealMindChild ( 743925 ) on Tuesday August 25, 2009 @03:21PM (#29190987) Homepage Journal
    Does Microsoft really mean to say that when it re-badges these same executables as Windows Vista SP1, they suddenly acquire an architectural limit of 4GB? Or is it that a driver for Windows Server 2008 is safe for using with memory above 4GB as long as you don't let it interact with the identical executables from Windows Vista SP1?

    Windows Server 2008 drivers have to be signed. For them to get signed, they can't do stupid shit like assume they are loaded in the memory space between 3GB->4GB, I'd imagine.
  • Re:Wa wa what? (Score:5, Informative)

    by Binestar ( 28861 ) * on Tuesday August 25, 2009 @03:21PM (#29190993) Homepage
    Price is the same. In fact, you can barrow someone's 64 bit disk and use your 32 bit license key to to install 64 bit Vista. It is on the front page because it is quite interesting.

    I have a feeling he hit it on the head when he mentioned third party drivers as being a possible reason for the limit.
  • Word for the wise (Score:5, Informative)

    by Anonymous Coward on Tuesday August 25, 2009 @03:22PM (#29191007)

    On a 32-bit system a single process will always be limited to 4 GB due to the number of address bits, unless the programmer goes through hoops to access a larger memory area one small piece at a time (tricks like that were common in the DOS era -- anyone remember EMS?). On Windows the kernel typically reserves one half of the address space, cutting the usable memory of a single process down to 2 GB. Thus you won't get much advantage from a 64 GB capable kernel unless you run multiple programs that all require 1-2 GB of memory. Come to think of it, such usage is most likely on a server.

  • Re:Wa wa what? (Score:1, Informative)

    by Anonymous Coward on Tuesday August 25, 2009 @03:22PM (#29191009)

    Linux doesn't have the same limit. Use of the 32 bit PAE (Page Address Extension, I think) kernel enables access to 64GB of ram, much as 32 bit server 2008 does. Limiting ram to 4GB on a 32 bit system is a software, not a hardware limit. 64GB is the actual hardware limit once software workarounds are applied, to the best of my knowledge.

  • Re:Wa wa what? (Score:4, Informative)

    by Icegryphon ( 715550 ) on Tuesday August 25, 2009 @03:24PM (#29191043)
    yes, PAE has been around forever infact you can enable it in Windows 32bit versions,
    But it wont do you a lick of good in MS windows, except for a very few version of windows.
    http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx [microsoft.com]
  • Re:Wa wa what? (Score:4, Informative)

    by Lumpy ( 12016 ) on Tuesday August 25, 2009 @03:26PM (#29191061) Homepage

    Funny... What version of linux are you using that has the same limit? Slackware and Ubuntu don't have that limit.

  • by TheRealMindChild ( 743925 ) on Tuesday August 25, 2009 @03:26PM (#29191065) Homepage Journal
    You CAN turn on PAE if your hardware platform supports it (most modern ones do). However, this tends to break Desktop 32bit windows, because the driver producers make stupid assumptions like its driver will always be loaded in the 3GB->4GB address space.

    Aside from that, paging will only give you 4GB of contiguous memory. That kind of kills most practical uses for this kind of memory (aside from running many apps).
  • Re:Word for the wise (Score:3, Informative)

    by Psyborgue ( 699890 ) on Tuesday August 25, 2009 @03:26PM (#29191067) Journal
    Photoshop will eat up memory by the gigabyte as will 3d sculpting apps and reyes type renderers. Video editing in HD almost always requires a large amount of ram for ram previews and smooth scrubbing among other things.
  • by Sits ( 117492 ) on Tuesday August 25, 2009 @03:32PM (#29191173) Homepage Journal

    This sounds like more PAE shenanigans. Using PAE on 32 bit Windows has already been well covered by The Old New Thing [msdn.com].

  • Re:Wa wa what? (Score:5, Informative)

    by Lemming Mark ( 849014 ) on Tuesday August 25, 2009 @03:33PM (#29191181) Homepage

    So is that the reason that Linux has the same limit?

    Unless I'm misunderstanding you and the summary (not RTFAed yet - I know, I'm bad) Linux doesn't necessarily have the same limitation. The summary seems to imply that only 4GB of *physical* memory are being supported on 32-bit systems by some versions of Windows. All OSes running on 32-bit x86 are restricted to a 4GB virtual address space, therefore neither Linux nor Windows can offer more than 4GB of directly addressable memory *per process*. But many 32-bit x86 CPUs can address more than 4GB of physical memory using PAE mode.

    The base requirement for using PAE is that the OS supports it - Windows can use it, Linux can too. PAE gets you the ability to address physical memory addresses over 4GB but only if the motherboard has enough address lines to actually relay these requests to the memory. Even if you can't / don't have more than 4GB of RAM installed, it may still be worth it because PAE also lets you use NX (no execute) on 32-bit. PAE on 32-bit doesn't make the process address space any larger, so any given process is still limited to 32-bit pointers.

    32-bit Linux has to be compiled with or without PAE support, so your distro should make sure it installs a the right kernel version to correctly support your hardware. Some OSes (e.g. Solaris) can switch between PAE and non-PAE at boot time, so they only need one kernel image to support both modes. I don't know how Windows handles this.

    A further benefit of PAE, that I've left till last because it's really somewhat gross: the memory mapped IO regions used by PCI devices also take up part of your physical address space. This can result in a "memory hole" where your *real* RAM is overshadowed by an area of memory-mapped IO regions - the real RAM is there but you can't access it. As a result, if you put 4GB of RAM in your system and use a non-PAE kernel (only 4GB of physical address space) then you are *guaranteed* not to be able to use all that RAM because you will *definitely* have hidden some of it "behind" the memory mapped IO regions. If you use PAE mode, the motherboard can potentially remap that "hidden" RAM to a higher physical address, so that you can use it. Not all motherboards support this remapping, even if they *do* support 4GB worth of DIMMs - which is rubbish because they're claiming to support memory that the hardware will never let you actually address. It pays to be wary of this kind of craziness - my mobo has this limitation, which I discovered after buying 4GB of DIMMs (so I stuck one in another PC, which kept me happy in the end).

    Uh, sorry to the parent poster, I've rambled a bit off the point I was originally making and probably just told you a load of stuff you already knew!

  • by micheas ( 231635 ) on Tuesday August 25, 2009 @03:34PM (#29191199) Homepage Journal

    The last time I compiled linux for x386 I was given the option of supporting more than 4 gig of ram with a warning not to do it unless you needed to because of the performance penalty.

    It seems like the cost effective thing to do in the vast majority of cases with x386 is to get multiple boxes with 4 gig of ram. The exception seems to be some database servers with a particular load pattern.

  • Re:Wa wa what? (Score:2, Informative)

    by Anonymous Coward on Tuesday August 25, 2009 @03:36PM (#29191217)

    It does work with OEM licenses. I upgraded my 32 bit OEM Windows Home Premium to 64 bit by downloading the 64 bit version through a torrent and using my existing key. I had to call microsoft but they approved it.

  • by Black Parrot ( 19622 ) on Tuesday August 25, 2009 @03:37PM (#29191227)

    Seriously, there are no real technical reasons why we can't just run 64bit operating systems. Let's just stop selling 32bit ones.

    Good idea.

    Unfortunately, lots of Windows software won't run on 64-bit Windows XP. Even Windows Update tells you you have to close the 64-bit WIE so it can run the 32-bit version to fetch the update... how lame. Then half the updates won't install, for reasons that aren't made clear.

    It should be clear by now that Microsoft, like every other corporation on the planet, isn't going to do a damn thing unless their share prices depend on it. When there's overwhelming consumer demand for 64-bit computing, they'll start fixing their consumer software to support it.

  • I thought.. (Score:1, Informative)

    by Anonymous Coward on Tuesday August 25, 2009 @03:37PM (#29191237)

    .. this was a very well documented decision that Microsoft made. http://support.microsoft.com/kb/929605 makes it abundantly clear that they stopped allowing access to > 4GB physical memory because they found a lot of the crappy consumer device drivers would crap out when they allowed that.

    Sounds plausible to me and again it definitely is NOT an architectural limit simply based on the fact that 32-bit Windows Server 2003 does support >4GB RAM - the drivers for the server platforms happen to be written sanely.

  • by sharkey ( 16670 ) on Tuesday August 25, 2009 @03:39PM (#29191255)
    No, it's a licensing limit, basically the same limit that existed in Windows NT 4, 2000, XP and 2003. The more you pay, the more CPUs and memory you are permitted to use.
  • Re:Silly me... (Score:2, Informative)

    by Icegryphon ( 715550 ) on Tuesday August 25, 2009 @03:39PM (#29191261)
    Only problem is since the Pentium Pro days to today it has been 36bits, AH-HA!
  • Re:Word for the wise (Score:5, Informative)

    by Chris Burke ( 6130 ) on Tuesday August 25, 2009 @03:41PM (#29191289) Homepage

    Then get a 64-bit OS and be happy.

    PAE is a hack. Even if your copy of windows supports it, it still sucks. It doesn't actually grant the ability to access all 64GB at the same time, it only lets you access it in 4GB windows, so your app has to jump through a lot of hoops to be able to actually use that memory. It was a decent solution for having large databases in the 32-bit era, and that was rightly the only place it should be used. Today, 64 bit cpus are completely mainstream and vastly superior for handling large amounts of data.

    Frankly, in the era of 64-bit budget computers, I think calling the 4GB limit "architectural" is as fair as saying the 286 had a 1MB limit after the introduction of the 386. Technically not completely accurate, but for most nearly all practical purposes it drives the listener in the right direction, which is getting the product which doesn't have the restriction in any way.

  • Re:I didn't ... (Score:3, Informative)

    by Mr. Shiny And New ( 525071 ) on Tuesday August 25, 2009 @03:54PM (#29191507) Homepage Journal

    The Intel Xeon processors introduced a mode called PAE that increases pointer size to 36 bits. This allows the OS kernel to access more than 4GB of ram. Individual processes typically can not access this RAM directly but the OS and CPU handle this using hardware and virtual memory.

    The Slashdot post is typically alarmist in claiming that there is an MS conspiracy afoot when in fact it's that PAE causes problems for countless drivers that are used on consumer computers but aren't used on servers. Servers have a much smaller range of hardware and the hardware and drivers are tested for PAE. Your desktop was not tested for PAE. So Microsoft disables the feature because you probably don't need it and it probably won't work anyway. If you know what you are doing you can get a Server OS and make it work.

    Now, you say, "Gee, it's 2009! Who's Microsoft to say I don't need 4GB of RAM?" Well, XP is 8 years old and that is when this limitation was introduced. And your consumer version of Vista or 7 will work fine with 4GB if you get the 64-bit version. So everyone can calm down and pick the right OS for the job instead of whining about the sky falling.

  • by nurd68 ( 235535 ) on Tuesday August 25, 2009 @03:57PM (#29191561) Homepage

    Minor technical reason:

    64 bit OS's don't run on 32 bit CPUs, which is most of the netbook lines. While there are a few Atom models which are 64 bit, the majority of them are 32 bit. I don't think MS wants to abandon that market to Linux, since it would allow netbooks to become a Linux "gateway drug".

  • by aztracker1 ( 702135 ) on Tuesday August 25, 2009 @04:04PM (#29191643) Homepage

    Nope, Windows 7 x86 RTM (32-bit), with 4GB of physical ram "3.25GB Usable" per the computer properties screen.

  • by CannonballHead ( 842625 ) on Tuesday August 25, 2009 @04:05PM (#29191653)

    XP x64 was awful. Don't use it. Vista x64 is way better than XP x64.

    Windows 7 x64 seems to run quite smoothly. I haven't run into a 32 bit application (driver, yes; application, no) that I can't run. Granted, I don't run a ton, but several old games a few apps (like Sibelius).

  • Re:Word for the wise (Score:5, Informative)

    by Sandbags ( 964742 ) on Tuesday August 25, 2009 @04:05PM (#29191655) Journal

    Yea, but even if you enable 16GB of RAM under 32bit Windows, XP and Vista can only give 2GB of it to photoshop, MAX. No SINGLE application can utilize more than 4GB of virtual address space under PAE, had half the address space is reserved for the lernel. PAE however is disabl;ed under 32bit OS as it has risks, especially for lots of drivers, and letting general users have access to this, without a process for validating and supporting all their apps under it (which most companies do not have programmers who understand this type of addressing), would be a support nightmare. PAE works when lots of individual apps need to run concurrently, or when multiple instances of the same app need to run under seperated memory spaces. Both these cases are uncommon for workstation users, and the 64 bit edition solves this issue for most users who would take advantage of it, so PAE is not included in workstation OS by Microsoft. This is NOT a licencing issue, or even a "charge more for advanced features" issue, it;s about who needs it, how much it costs to support it, and whether or not the SHOULD be using it vs other options...

    Its possible for an application under 32bit windows to also take advantage of AWE (Address Windowing Extension). This requires the lock Pages in Memory privilidge for the app, and some pretty extensive code level support. This can allow a 32 bit app to use more than 4GB of RAM under 32bit. It is not very efficient. It;s also one of the API's you're paying extra for under the server licnece that you do not get under the workstation license (XP can't do this, Server 2003 can). Typically this is reserved for apps with massive datasets (DBs over 2GB, large video files, massive images, etc) in situations where the code can not be easily ported to 64bit but where support for AWE can be added.

  • by wastedlife ( 1319259 ) on Tuesday August 25, 2009 @04:10PM (#29191767) Homepage Journal

    Looks like Microsoft will force upgrades to Windows 7 to get over the 4G RAM limits?

    I doubt 32-bit Win7 will drop this limitation. Also, you can already use more than 4GB RAM in 64-bit editions of XP and Vista.

    Ah for the days of the AST Rampage card that got over the 640M RAM limits using EMM/EMS memory standards. Can't someone just write a RAM extender driver for 32 bit Windows for XP and Vista to get over the 4G RAM limit?

    Not likely, NT-based OSes (WinNT, 2000,XP, 2003, Vista, 2008, and 7) are not DOS, and the methods of accessing memory are not the same. EMM386 was designed to access higher areas of memory in 16-bit and 16/32 hybrid operating systems(DOS, Win9x + ME). NT is an actual 32-bit OS with flat memory addressing.

    Besides, this isn't a technical limitation, this is an imposed limit by Microsoft. They want you to purchase a more expensive version to use more memory. Perhaps someone could make an application that patches the kernel and other system files to allow full 64 GB of PAE addressable space, but would you risk running such a patch? Also, a lot of consumer-level hardware does not support PAE, and so even 4 GB is not addressable in XP or Vista 32-bit. This is because PCI devices use address space, and if the motherboard doesn't support PAE, you will notice that you only have something like 3.4 GB of physical RAM available to use.

  • by psetzer ( 714543 ) on Tuesday August 25, 2009 @04:12PM (#29191807)

    That's what PAE is. To the process, the address space is just one huge flat expanse from 00000000 to 7FFFFFFF. (or BFFFFFFF if the OS is configured that way and the software understands it) To the OS, the processes are allocated RAM in 4 kB pages which are mapped to their corresponding hardware frames in RAM via the page table. When the process accesses an address, the low 12 bits determine where within the page it should read, while the high 20 bits determine the entry in the page table. That entry has the hardware address which it then accesses. PAE allows the hardware address to be larger than 20 bits so that the OS can address more than 32 bits of physical memory transparently to the individual processes.

  • by rduke15 ( 721841 ) <rduke15@gm[ ].com ['ail' in gap]> on Tuesday August 25, 2009 @04:13PM (#29191823)

    Even 4GB is too much for 32 bit WinXP. The OS will only let any app. use a maximum of 2 GB. [microsoft.com]

    Unless you enable the /3GB switch in boot.ini, which leads to other problems: your registry system hive must now remain smaller than 12 MB. [alma.ch]

  • by stevel ( 64802 ) * on Tuesday August 25, 2009 @04:14PM (#29191857) Homepage
    If your Windows 7 system with 4GB RAM shows less than that "usable", go into your BIOS options and turn off PCI memory remapping. The name of the option may vary and some motherboards may not support this. On my Asus P5B, it is under the North Bridge Configuration. This drove me crazy until I found a forum post describing the solution. Even Windows 7 x64 was showing about 3GB "usable" for me before I did this.
  • Re:Word for the wise (Score:3, Informative)

    by Tawnos ( 1030370 ) on Tuesday August 25, 2009 @04:19PM (#29191927)
    This is at least partially, but likely wholly, incorrect. This provides [msdn.com] a very good analysis of the issue. Essentially, you can address 2GB at any given time, but you can allocate as much contiguous space as the OS is able to pull up in its virtual address space. This means you can allocated, and address, 5 gigs of memory if you desire, but you would have to be careful and work with a view window of only 2GB. Nothing in that means you are limited to addressing only 4GB (32 bit pointer limit) of memory, simply that you can only address so much at a given time.
    There is no need to run multiple instance of a program in order to read and write/address more than the 2 gig system limit.
  • by tepples ( 727027 ) <tepples.gmail@com> on Tuesday August 25, 2009 @04:28PM (#29192095) Homepage Journal

    Why run Vista32 on a 64 bit processor at all?

    Windows Vista 64-bit ordinarily requires kernel-mode device drivers to be signed with a commercial Authenticode certificate. If you override this at startup, the desktop shows an ugly "Test Mode" banner in all four corners. There is a user-mode driver framework, but it makes no provision for input devices or a couple other cases. Some makers of low-volume hardware, such as hobbyists working on assistive input devices for people with disabilities or LPT-style bit-banging interfaces to systems too tiny/cheap/old for a proper USB connection, may want to develop drivers for their own hardware without paying $$$ per year to a certificate authority.

    You can use the Vista32 license key to install Vista64 and have native support for the memory without going into test mode on windows.

    As far as I know, you'll get the "test mode" again once you install a self-compiled driver.

  • Re:32b? (Score:3, Informative)

    by rdebath ( 884132 ) on Tuesday August 25, 2009 @04:40PM (#29192267)

    Windows 2000 had (has) everything needed to get past 4Gb.

    Windows 2000 only came in 32bit version

    If Windows 2000 (PRO) is installed on a machine with 4Gb of RAM it will use it all, even the memory with a physical address above the 4Gb line.

    Windows 2000 datacenter can use 32Gb of RAM before it hits it's license limit.

  • Like? (Score:3, Informative)

    by Sycraft-fu ( 314770 ) on Tuesday August 25, 2009 @04:55PM (#29192501)

    Seriously, what apps don't run in 64-bit Windows? I ask because I run 64-bit Windows at home and at work, and part of what I do is check our apps for compatibility. Here is a list of some of the programs I've tested and verified work in 64-bit Windows. This is not a complete list, just off the top of my head:

    Matlab 2008, HFSS 11, ADS 2008, VMWare 6.5, Visual Studio 2008, Firefox 3.5, Thunderbird 2, Office 2007, Adobe Audition 3, Sony Vegas 8, Geovision Multiview 8.3, Winamp 5, 7zip, Sonar 8, Play 1.2.5, Textpad 5.2, PerfectDisk 8, Adobe Acrobat 9, Adobe CS3, Eclipse 3.3.2, Xming 6.9, IMGBurn, Cadence 16.01, Mass Effect, World of Warcraft, Civ 4, Galatic Civilizations 2, Team Fortress 2, and so on.

    In total I have probably tested over 300 programs of all different kinds that work. By work I don't mean "Run with errors," I mean that run like they did on a 32-bit system.

    The 32-bit compatibility layer in Windows is extremely good. More or less any usermode 32-bit software seems to run, nor problems. The only compatibility issues I've run in to are:

    1) Drivers. All drivers have to be 64-bit. In general, these days most companies have 64-bit drivers out. However if you have a piece of hardware that you need and it doesn't have 64-bit drivers then you are SOL.

    2) Programs that make use of a kernel mode component. If you have something like a virus scanner or firewall that needs a kernel module installed, that module must be updated to 64-bit. There is no 32-bit code in a 64-bit kernel, no exceptions.

    3) 16-bit programs. MS has stated there is no 16-bit compatibility layer in 64-bit Windows.

    So seriously, what programs are you finding that don't work?

  • Re:Wa wa what? (Score:3, Informative)

    by Wesley Felter ( 138342 ) <wesley@felter.org> on Tuesday August 25, 2009 @05:02PM (#29192633) Homepage

    I thought the BIOS could just remap the rest of your RAM above 4GB, as shown in the article.

  • Virtualization to the rescue! I run a 32bit Windows VM on my 64bit Linux machine for when I just have to have Windows. Runs 32bit apps fine, everything except majorly graphically intensive apps. As long as you aren't talking about playing 32bit games, you're good to go.
  • by kabloom ( 755503 ) on Tuesday August 25, 2009 @05:21PM (#29192903) Homepage

    They should be selling the 64-bit version. They should be preinstalling the 64-bit version. People *shouldn't* be using the 32-bit version, becuase there's still a very real architectural limitation in the 32-bit version: a given process can only see 3 GB of memory, no matter how you set up your licensing.

  • The problem is (Score:3, Informative)

    by Sycraft-fu ( 314770 ) on Tuesday August 25, 2009 @05:31PM (#29193023)

    That for an app to use more than 2GB of memory on a PAE enabled system, the app itself has to specially support and use AWE (address windowing extension). Only apps that are coded to do that can make sure of more than 2GB. Well those are extremely rare. MSSQL server is the only one I know of. Any other apps is still limited to 2GB.

    No such problems on a 64-bit system. Each 32-bit app gets 4GB of virtual address space. That means normal apps can access 2GB of memory, any app flagged as large address aware can get 4GB of memory (programs like LaaTiDo can flag any app, though some will crash because of bad pointer math). Any 64-bit app will have access to as much physical memory as the system has, without any special coding.

    Thus these days playing with PAE is silly. If you buy a desktop computer that supports more than 4GB, it also supports 64-bit. For that matter, if you buy a desktop computer period, it is almost impossible to get one that isn't 64-bit. So, if you need more memory, run 64-bit. If you don't, well then run whatever you like.

  • by kabloom ( 755503 ) on Tuesday August 25, 2009 @05:36PM (#29193081) Homepage

    I recently did configuration work on linux boxes that had 4 GB in RAM in them, but couldn't see more than 1GB of it because the previous administrator had neglected to enable CONFIG_HIGHMEM4G in the kernel configuration.

    And to see more than 4GB of RAM on a Debian box, you need to use a special -bigmem kernel that has CONFIG_HIGHMEM64G enabled, because handling physical memory addresses more than 32-bits wide slows everything down, so Debian opted not to enable CONFIG_HIGHMEM64G by default.

    So your Linux boxes *could* have these issues, and you do need to worry about it.

    (Get a 64-bit kernel on a 64-bit processor and you're fine, though.)

  • by jasonwc ( 939262 ) on Tuesday August 25, 2009 @05:53PM (#29193301)
    I RTFA and I have to say, I think the author is attempting to find a conspiracy where none exists. If the author had searched MS's website for information on PAE, he would have soon learned why MS decided to remove PAE, and thus support for more than 4 GB of physical memory, from XP SP2.

    Why this is a non-story:

    1) MS removed PAE in XP SP2 because of incompatibility with 32 bit drivers and resulting instability issues.

    XP did support PAE before SP2. However, Microsoft received complaints from users regarding compatibility and instability issues resulting from the use of 3rd party 32 bit drivers. Many users were getting BSODs. It was only then that MS chose to remove PAE from XP SP2.

    This decision makes quite a bit of sense. Manufacturers were unlikely to update drivers to include PAE support because, at the time, 4GB+ of memory was very uncommon, and relegated to power users who had a specific need for large amounts of RAM. The situation has since changed due to the plummeting cost of RAM, Vista's need for greater memory resources, more demanding applications, and Superfetch, which allows users to make use of idle memory to preload commonly used applications. My own experiences on Vista x64 show that programs start up significantly faster than in XP due with Superfetch enabled.

    Now that 64 bit drivers can be had for pretty much all modern hardware, there is no reason to use a hack like PAE to support more than 4 GB of RAM. Most machines sold by Dell, HP etc. now include 64 bit Vista if the machine has 4 GB of RAM, which is now becoming standard.

    See below for MS's explanation of the removal of PAE from SP2.

    Source: MS Website, "Operating Systems and PAE Support", June 14 2006 - http://www.microsoft.com/whdc/system/platform/server/PAE/pae_os.mspx [microsoft.com]

    Driver Issues Typically, device drivers must be modified in a number of small ways. Although the actual code changes may be small, they can be difficult. This is because 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. In order to limit the impact to device driver compatibility, changes to the hardware abstraction layer (HAL) were made to Windows XP SP2 and Windows Server 2003 SP1 Standard Edition to limit physical address space to 4 GB. Driver developers are encouraged to read about DEP.

    2. Windows isn't trying to screw users over by purchasing a higher priced 64 bit version. Any retail version of Vista or Windows 7 comes with both the 32 and 64 bit installers. As others have mentioned, it's also possible to activate 64 bit Windows with a 32 bit OEM key.

    3. PAE will not allow a single process to use more than 4 GB of RAM so a true 64 bit OS is still superior for programs that need large amounts of memory such as HD Video editing, editing of large images in Photoshop etc.
  • Re:Word for the wise (Score:3, Informative)

    by w0lo ( 943113 ) on Tuesday August 25, 2009 @06:10PM (#29193513)
    3GB is max, not 2GB (You must turn this setting on, and only apps that have a flag set in their header will actually get it)
  • Re:Wa wa what? (Score:4, Informative)

    by c6gunner ( 950153 ) on Tuesday August 25, 2009 @06:27PM (#29193745) Homepage

    So there's been a hardware based solution to this since the days of the Pentium Pro( early 90s ) and it is used by open source while Microsoft uses the 4GB limit as a tool to get people to pay up.

    That's complete bullshit. If you purchased the 32 bit version of Vista, you can go on the Microsoft website and order the 64 bit version for a little more than the cost of shipping. Or you can just buy 64 bit to start with - there's no price difference between the 32 bit and 64 bit editions.

  • Excuse me, but both Linux and Mac OS X have very, very good support for 32-bits apps under a 64-bit OS. The only ones that don't seem to be able to pull it off is Microsoft. I had to install Windows XP 64-bit last week for someone trying to access all memory in their machine and a) none of the drivers worked, even for simple things like USB and other 'generic' hardware
    This is a PITA, the truth is there is little generic hardware in a modern PC, you need specific drivers for almost everything. These drivers need to be ported to 64 bit.

    This has been much more of a problem for windows than for linux because of the different approaches taken. In linux driver developers are strongly pushed into sending thier drivers into the kernel tree so the kernel devs can work on things like making them 64 bit clean en-masse. On windows you are generally at the mercy of the hardware vendor.

    b) SP3 is not even available yet for Windows XP 64-bit
    Despite the name XP proffessional x64 edition is not really an edition of XP. It's really an edition of server 2003 so it uses the server 2003 service packs. Server 2003 service pack 2 is only about 6 months older than XP service pack 3.

    c) the system is slow and doesn't run half the software.
    I can't comment on your particular software load but most stuff i've tried ran fine and I didn't notice any performance issues. The lack of a netware client was annoying though.

    What software specifically did you have problems with?

  • Re:Wa wa what? (Score:3, Informative)

    by dbIII ( 701233 ) on Tuesday August 25, 2009 @06:56PM (#29194091)
    It's to describe everything you get given on the install media because technically a solitaire game for instance is an application and not a part of the operating system. Just calling it an OS doesn't really fit, and there are a lot of different versions of MS Windows you can get with just a few differences on the install media. The server versions have a lot of the same binaries.
    Personally I'd call it different versions of MS Windows but I think the above poster thought distributions was close enough.
  • Re:Wa wa what? (Score:3, Informative)

    by mysidia ( 191772 ) on Tuesday August 25, 2009 @06:57PM (#29194103)

    Example of several Windows distributions:

    Windows XP

    Windows XP Media Center Edition

    Windows Server 2003

    Same cat, different skin.

  • Re:32b? (Score:3, Informative)

    by petermgreen ( 876956 ) <plugwash@nOSpam.p10link.net> on Tuesday August 25, 2009 @07:01PM (#29194159) Homepage

    The inability to run 16 bit windows apps is still there*, driver support has improved though it can still be a problem (for example the first generation ICD2 is never going to get a 64 bit driver)

    *and whats more annoying is afaict there is no reason it has to be that way for 16 bit windows apps (for real mode dos apps there are real technical reaons but not for win16 apps) IIRC MS just found some issues and couldn't be bothered fixing them, wine runs 16 bit windows apps on 64 bit linux fine ;).

  • Re:Word for the wise (Score:4, Informative)

    by BikeHelmet ( 1437881 ) on Tuesday August 25, 2009 @07:25PM (#29194471) Journal

    Then get a 64-bit OS and be happy.

    I agree.

    PAE is a hack.

    I disagree. Paging is fundamental to memory management. You like having memory mapped to 4KB pages, but call it a hack when those 4KB pages are mapped to different physical memory locations? Why?

    Apparently PAE is even more efficient than 64bit addressing. It's the faster option, although you're 100% correct about the per-process limit being roughly 3GB, which means it'll be obsolete shortly. Games, video editing, and virtual machines will be first to benefit from 64bit > 4GB memory usage.

    What I've always wondered is why Windows uses 4KB pages. Larger pages are far more efficient. The guy who made 7-zip tried hacking in multi-megabyte pages, and had a 15% speedup. O_o

  • Re:Word for the wise (Score:3, Informative)

    by Zeussy ( 868062 ) on Tuesday August 25, 2009 @08:10PM (#29194905) Homepage
    A 32bit application can get upto 3gb of ram on a 32bit Windows, by being compiled with the /LARGEADDRESSAWARE:Yes Linker flag, and have the end user tweak his boot options to use the /3gb switch.
    But this is a huge hack, and can still cause issues with drivers etc still believing that the kernel has reserved half the ram, but is instead restricted to the top 1gb.
  • Re:Word for the wise (Score:4, Informative)

    by Pr0xY ( 526811 ) on Tuesday August 25, 2009 @08:16PM (#29194975)

    Complete BS, PAE isn't a hack, in fact the way paging is done on x86-64 is designed very similarly to 32-bit with PAE, using an extra layer of indirection as PAE does. (Yes your 64-bit CPU actually likely has 48-bit's of **physical** memory).

    Also, you are completely ignoring things like disk cache, which can massively improve system performance. Sure no **single** application will be able to use all of that memory, but the system as a whole can easily get that high if it has the RAM to work with.

    For example, I have a Linux box with 4GB of RAM using a 32-bit with PAE kernel. Routinely after a few hours my disk cache is upwards of 3GB. The system is noticeably faster once the disk cache is populated vs immediately after startup.

    Take a look at the Intel docs, PAE isn't a hack in any way.

  • Re:Mods on crack (Score:2, Informative)

    by kkwst2 ( 992504 ) on Tuesday August 25, 2009 @09:11PM (#29195391)

    What is your justification that XP64 is "awful"? I've been running it for a couple years and haven't had problems. I mostly run computer modeling applications on it, but I've installed many other more mainstream things without a hitch. I don't recall running into any compatibility issues. I think there were driver issues in the early days of XP-64, but that was true of Vista too.

    My new workstation is going to be Vista-64, but not because I had any problems with XP64.

    I don't use the 64-bit IE at all. In fact I only use IE for some intranet sites that require it. Why use IE-64 at all. I've never needed to address more than 4GB with my web browser. I find no compelling reason to use 64-bit IE.

  • by bertok ( 226922 ) on Tuesday August 25, 2009 @09:51PM (#29195679)

    XP x64 was awful. Don't use it. Vista x64 is way better than XP x64.

    Windows 7 x64 seems to run quite smoothly. I haven't run into a 32 bit application (driver, yes; application, no) that I can't run. Granted, I don't run a ton, but several old games a few apps (like Sibelius).

    Mod parent down, he has no idea what he's on about.

    Windows XP 64-bit is exactly the same as Windows 2003 Server 64-bit. They share the same service pack files! The only difference is some minor licensing restrictions (can't install server components, 2 CPU sockets max, etc...). Drivers that work for either will work for both.

    I had XP 64-bit on both my desktop at home and my work laptop for years, basically since it was released. I never had any issues with it, even on fairly unusual hardware. It is as light-weight as XP, but has 64-bit kernel caches and buffers, so it runs much better on the same hardware, and ran circles around both 32-bit and 64-bit Vista. Only now that Windows 7 is out have I upgraded my laptop to that, because Vista was just too painful to use in comparison to XP 64-bit.

    Mind you, I wouldn't install anything other than Windows 7 64-bit on desktop PCs these days, but before that, XP 64-bit was a very nice OS.

  • by digitalunity ( 19107 ) <digitalunity@yah o o . com> on Tuesday August 25, 2009 @10:21PM (#29195903) Homepage

    Wrong. PAE is essentially invisible to 99.9% of software, other than drivers that need to support DMA. If you read the article, or knew how modern operating systems use page tables to translate linear addresses into physical addresses, you would realize this already.

    Are you just a MS shill? If you're right and PAE is so shitty, why does MS reserve the use of PAE to just the server editions where reliability counts for a lot more than consumer editions?

  • Comment removed (Score:5, Informative)

    by account_deleted ( 4530225 ) on Tuesday August 25, 2009 @11:49PM (#29196433)
    Comment removed based on user account deletion
  • Re:Wa wa what? (Score:4, Informative)

    by ozmanjusri ( 601766 ) <aussie_bob@hoMOSCOWtmail.com minus city> on Wednesday August 26, 2009 @12:49AM (#29196833) Journal
    Do you know a good reference that talks about that?

    The best source for info for this is likely Mark Russinovich. His blog is the origin of the "difficult to measure risk" quote.

    Because device vendors now have to submit both 32-bit and 64-bit drivers to Microsoft's Windows Hardware Quality Laboratories (WHQL) to obtain a driver signing certificate, the majority of device drivers today can probably handle physical addresses above the 4GB line. However, 32-bit Windows will continue to ignore memory above it because there is still some difficult to measure risk, and OEMs are (or at least should be) moving to 64-bit Windows where it's not an issue.

    He also acknowledges the commercial aspect of product differentiation on MS 64-bit OS versions, but suggests that the 32-bit issue derives from actual experience;

    64-bit Windows client SKUs support different amounts of memory as a SKU-differentiating feature, with the low end being 512MB for Windows XP Starter to 128GB for Vista Ultimate and 192GB for Windows 7 Ultimate...

    the Windows team started broadly testing Windows XP on systems with more than 4GB of memory. Windows XP SP2 also enabled Physical Address Extensions (PAE) support by default on hardware that implements no-execute memory because its required for Data Execution Prevention (DEP), but that also enables support for more than 4GB of memory.
    What they found was that many of the systems would crash, hang, or become unbootable because some device drivers, commonly those for video and audio devices that are found typically on clients but not servers, were not programmed to expect physical addresses larger than 4GB. As a result, the drivers truncated such addresses, resulting in memory corruptions and corruption side effects.

    http://blogs.technet.com/markrussinovich/archive/2008/07/21/3092070.aspx [technet.com]

    I'd suggest though, the decision to completely disable PAE instead of only enabling it when paired with drivers certified by WHQL as being PAE-safe was a commercial one, based on SKU differentiation rather than risk.

  • Re:Wa wa what? (Score:4, Informative)

    by mathew7 ( 863867 ) on Wednesday August 26, 2009 @02:12AM (#29197283)

    WRONG!! WRONG!! WRONG!!
    You are confusing virtual (app) memory and physical memory.
    Virtual memory is ALWAYS limited to 4GB (with 2/2GB or 3/1GB split of user/kernel) on 32-bit, PAE or not, Workstation or Server.
    PAE allows for more than 4GB PHYSICAL memory. That means you could have 2 3GB apps running all in RAM (no swap) in 6+GB RAM.
    For ONE app to use more than 4GB, you NEED 64-bit.
    Each application page (usually 4K) is mapped to physical space, whether it's RAM or swap (when idle of course). The PAE allows you to map a page on more than 4GB RAM. This is done entirely by OS.
    The problem is that drivers need to know the physical address, because that is what HW devices can access. Some drivers are poorly implemented and fail to do this (like giving a 32-bit address when they sould give 36-bit to the HW).
    For a server, the company usually has an IT department that can get certified HW (not off-the-shelf cheap HW) and they usually test the server before deploying. So any driver issue can be corrected (either change the HW or resolve the driver issue) before deployment.
    So MS did not want to get calls of data corruption and limited PAE on client windows. My problem (and the article's author's) is that WE (tech-savy computer users) cannot activate it afterwards.
    PS: PAE was implemented since Pentium Pro. As I recall it already had 36-lines for adresses (that is 64GB memory space).

  • Comment removed (Score:3, Informative)

    by account_deleted ( 4530225 ) on Wednesday August 26, 2009 @06:20AM (#29198819)
    Comment removed based on user account deletion

"Experience has proved that some people indeed know everything." -- Russell Baker

Working...