32 bit memory limit vista




















Hi Terry, Thank you for providing some details about your concern. How satisfied are you with this reply? Thanks for your feedback, it helps us improve the site. Ken Blake. It is correct, but even worse than that.

But you can't use the entire address space. That's because some of that space is used by hardware and is not available to the operating system and applications. The amount you can. You are constantly mixing physical address space used by a processor to virtual address space used by software — Saurabh. In other words, 4 gigabytes GB. Also known as 4 gibibytes GiB. Show 4 more comments. Jerry Coffin Jerry Coffin k 74 74 gold badges silver badges bronze badges.

It's worth noting that while languages didn't really support segmentation very well, a variation which simply simply extended segment registers to 32 bits could easily extend the amount of memory available in a framework like Java or. NET to 64GB, and with a few tweaks far beyond that. The reduced cache overhead of resulting from the use of bit rather than bit offset registers could make use of such code faster than bit linear addressing. Too bad Intel never extended the segment registers beyond 16 bits.

Pentium used 80 bits for floating point, not general use. Did never really work just mention in front of some old hand the terms "near and far pointers" and "arrays larger than 64KiB," but be prepared to have to run away fast. As far as addressing goes, see page 60 of the Intel manual , specifically the description of A[] though the fact that it goes up to A35 should be a pretty solid indication in itself.

This was easy to do in assembly language, but I don't know of any mainstream languages that could do it. The overhead from byte alignment was really not severe, given the reduction in the size of pointers. The design suffered Show 2 more comments. Kevin Lee Kevin Lee 2, 24 24 silver badges 31 31 bronze badges. If memory is byte-addressable, then you should be able to address each byte without having to perform logical operations on the word, no?

Method 1: Given a memory address, we would know which word to retrieve probably put the word into a 32 bit register first. In the next cycle, we can extract the correct byte from that word via logic operations. Method 2: Design the circuit hardware to make each memory address directly connect to each byte in memory. Both ways make memory effectively byte-addressable. There are multiple ways of implementing this with their own pros and cons.

I was aiming for a more conceptual understanding in the answer. ThiefMaster ThiefMaster k 77 77 gold badges silver badges bronze badges. Beyondo: What? This is about the memory than can be addressed, and not about how many bits a number can have.

Whether the memory manager in the Windows kernel uses PAE is configurable through the pae boot option. Indeed, bit Windows Vista is supplied with two kernels:. EXE, both in the Windows System directory. EXE knows how to set up the linear address space for mapping to physical addresses with or without PAE, but each kernel is specialised to one algorithm for the mapping.

The pae option tells the loader which kernel to load. This is not so that you can use physical memory above 4GB, else this article would not exist. This protects you from programs that try to execute data, whether in error or from suspected malice.

In practice, much of that range of physical address space, most likely at the top, is given over to such things as the system BIOS and devices. What this gives you, however, is at best only an indication. It tells you that some addresses are used for devices. The memory map that matters most for the question of what physical memory the kernel can use is the map that the loader discovers from the firmware. However, Windows Vista introduces some undocumented functions with which a kernel-mode driver can get the map fresh from the BIOS.

Such a driver for viewing the firmware memory map is presented separately, along with a small console application that reports the results. You will need administrative privilege to load the driver. On this machine, with its present configuration of hardware, if the kernel is limited to the first 4GB as its physical address space, then MB and the spare change is all the RAM that the kernel can possibly use. Get the kernel to recognise physical addresses above 4GB, and it picks up the other 5GB, for a total of MB as shown in the picture.

If the 4th gigabyte were left at 3GB, Windows would have access only to as much of it as does not get overridden. Whether this remapping is done at present on your particular machine can be checked by using the separately supplied driver. If it is not done, then whether it can be arranged is an issue of hardware configuration. Of course, for a machine that has exactly 4GB of RAM and has bit Windows Vista pre-installed, you would expect that the manufacturer, having been told by Microsoft that Windows will not see any RAM above 4GB, might not have configured any of the 4GB to be remapped out of sight and into uselessness.

You should not be surprised to find that remapping is disabled. Worse, unless the manufacturer anticipates installing other Windows versions on the machine, there is no incentive even to provide for remapping above 4GB as something that you can configure if you want.

If your chipset does not support remapping, then RAM that is overridden for device memory below 4GB will never be seen as usable RAM by bit Windows even with PAE enabled and is just as much lost to you if you install bit Windows. Broadly speaking, there are two mechanisms by which your hardware and firmware can provide for memory above 4GB which Windows will then not try to use.

One is that the kernel never learns of any such memory. The other is that the kernel knows the memory is there but deliberately ignores it. The first of these mechanisms comes about from a boot option, named truncatememory , which tells the loader to discard all pages of physical memory that are not wholly beneath some specified address.

Thereafter, the discarded memory may just as well never have been reported by the firmware. When the kernel receives the memory map from the loader, memory at and above the truncatememory cut-off is already long gone from the map. By the time the kernel receives the memory map from the loader, the map has been much refined in order to account for how memory is already in use, but it is otherwise intact as a report of physical memory that the kernel can use.

Limits are applied both to the total amount of usable memory and to the maximum physical address. Memory in excess of these limits is discarded, such that although it was passed to the kernel from the loader, it may as well not have been.

The total amount of memory allowed is taken solely from the license value Kernel-WindowsMaxMemAllowedx86 , as read through the undocumented function ZwQueryLicenseValue. The data for this value is a number of MB, so that 0x, which is installed for all bit editions of Windows Vista, means 4GB. The maximum physical address is calculated as the least of three values: a license limit; a run-time limit; and a hard-coded limit.

For the ordinary kernel, the license value for the maximum physical address is the same as for the total amount of memory, but the PAE kernel has a separate license value, named Kernel-MaxPhysicalPage. Again, the data for this value is a number of MB. Again, all bit editions of Windows Vista are installed with this value set to 0x, representing 4GB. The run-time limit arises from needing to be sure that an array of MMPFN structures can be set up to represent all the pages of physical memory, one structure per 4KB page, from zero up to the maximum physical address.

This gives the run-time limit on the maximum physical address. The preceding calculation also produces an architectural limit on the use of physical memory by bit Windows with a PAE kernel. The largest block of linear address space that is available even this early cannot be as large as 1GB and could be much smaller. For the question of whether the kernel in bit Windows Vista will use all the physical memory it learns about from the loader, the hard-coded limit of 4GB is dominant as the maximum address for the ordinary kernel, which truly cannot form addresses for physical memory above 4GB, but the license limit is dominant for the PAE kernel.

If you have physical memory above 4GB and wonder how it can be that the PAE kernel does not use that memory, the answer is licensing. Code for using memory above 4GB is present in bit Windows Vista as Microsoft supplies it, but Microsoft prepares license values in the registry so that this code never gets to work with any physical addresses above 4GB.

Microsoft is not exactly forward in describing this mechanism by which bit Windows Vista is restricted to 4GB. Some explanation may be that Microsoft takes licensing so much for granted that it is simply left as understood that the stated limits on physical memory are licensing limits.

Though no drivers need to know the mechanics of PAE and only a small proportion work at all with physical addresses, they may be indirectly incompatible with PAE because as explained earlier they have been coded to an assumption that the physical address space is the same size as the linear address space. This is not to say that Microsoft ought to allow such usage, just that the reasoning that Microsoft gives for its solution does not of itself compel that solution.

Anyway, how significant could these incompatibilities be in real-world use of Windows Vista? The drivers that Microsoft talks about are not the sort of things that users install willy-nilly. They are much more the sort that come installed with a new computer, such that they have been tested or ought to have been by the manufacturer. Moreover, as noted earlier, the main types of coding error that are exposed by using memory above 4GB on bit Windows are as much a problem to bit Windows.

It is beyond incredible that these errors are retained in bit drivers that have been ported to bit. However significant may have been the problems of bit drivers and hardware for the safe use of memory above 4GB by bit Windows in earlier versions, the natural expectation must therefore be that they are rapidly being eliminated from real-world occurrence by the widespread adaptation of those drivers to support bit Windows Vista.

Even Microsoft looks to be uncertain of its ground when talking about these incompatibilities. Another paragraph that Microsoft presents as More Information is even worse.

These errant drivers will still miscalculate the location of every PTE that they want to modify. If fear of this is an argument against using memory above 4GB, then it is just as much an argument against enabling DEP. Yet Microsoft recommends that DEP should always be enabled. Add that Microsoft seems nowhere to say outright that bit Windows Vista already has the code for using memory above 4GB, and they look more like the sort of arguments someone might pass off to rationalise a decision made on other grounds.

I just smell something fishy when technical reasons and good engineering do not of themselves compel exactly what Microsoft has implemented, which Microsoft anyway does not present transparently to potential customers. Instead, the decision stands on ignorance: many customers are left with their mistaken belief that use of memory above 4GB is impossible for any bit operating system, and very few are well enough informed to know that working code for the use of such memory is already in the particular bit operating system known as Windows Vista.

See that the difficult-to-measure risk is merely asserted despite an acknowledgement that it seems implausible for new computers. Better instead to provide cover for moving consumers to bit Windows faster than they might otherwise go.

Just accept it without question and be glad for the new business as consumers who install bit Windows start buying bit applications which they might otherwise do without for a while. Who in the computer industry—whether a manufacturer of hardware or software, or even a commentator whom some might think is an independent analyst—is going to criticise Microsoft for a sleight of hand that brings forward a cycle of upgrades!

If nothing else, when consumers pay for a software product in an edition that the manufacturer describes as Ultimate, they surely have a reasonable expectation that the software is licensed to do everything that its code is capable of. If you buy only the Home Basic edition instead of Home Premium, then you expect to get less software and be licensed to use fewer features.

But surely the point to an edition that is called Ultimate is that you get the whole package and are licensed to use it all. Note that this is not a case of a manufacturer puffing up a product description. An irony is that the very same driver incompatibilities that Microsoft talks of as a danger to users would surely have been eliminated—long ago—by the natural forces of competition among driver developers and device manufacturers except that Microsoft for many years misled those developers and manufacturers to believe that the bit client editions of Windows could not use memory above 4GB when in fact they could see below, under the heading Past.

That Microsoft now points its finger at the driver writers without acknowledging the part played by its own substantial influence is at best distasteful. By designing bit Windows for memory above 4GB but licensing all but exotic editions only for memory below 4GB, Microsoft suppressed competition in the subsidiary market of computers that run Windows. Certainly, consumers have been worse off for not having the competition. When Microsoft and others make out that defective drivers are so widespread and dangerous that bit Windows Vista cannot be allowed to use memory above 4GB even as a configurable option, how is anyone to know the truth of it?

The closest that anyone can come is to test with bit Windows Server , which hardly any consumers ever get to see, and which of course was not available until some time after Windows Vista was first released. Even to begin to test whether a particular installation of bit Windows Vista cannot safely use memory above 4GB because of driver incompatibilities, you must somehow side-step the two relevant license values. Let me stress that although I have to modify the kernel, using memory above 4GB does not require a change to even one byte of code.

That I modify any code here is merely to simulate the provision of different license data by Microsoft. Much as you can buy Windows Vista Home Basic and then upgrade to Home Premium without having to reinstall Windows, you might upgrade to a configuration in which the two license values for memory limits are raised.

Because Microsoft protects those license values, this patch is as close to that upgrade as can be arranged unless Microsoft makes the license upgrade available. If you patch the kernel and your tests then show to your satisfaction that your drivers are safe though perhaps only after you disable defective drivers and install the latest updates from their manufacturers , then a license upgrade from Microsoft is what I intend you to seek.

Windows Do these six things right away after you finish setup. Developers are in short supply. Here are the skills and programming languages employers need. Best Apple iPad deals available right now: January The painful shame of owning an Android phone.

Best keyboard Because you deserve better. You agree to receive updates, promotions, and alerts from ZDNet. You may unsubscribe at any time. By signing up, you agree to receive the selected newsletter s which you may unsubscribe from at any time. You also agree to the Terms of Use and acknowledge the data collection and usage practices outlined in our Privacy Policy.



0コメント

  • 1000 / 1000