-1

I have Windows 8.1 64 bit installed on 3 GB ram. Later I upgraded to 4 GB.

I want to know if Windows 8.1 will truely use this 4 GB to run x64 addresses apart from being just be able to access this increased memory?

Or do I need to do a fresh install to make sure it uses x64 instructions?

I had to raise this question because Win 8.1 was using 32 bit wmplayer, explorer, etc both before and after the upgrade. I do not see any programs from Windows\SysWow64 folder. Only from Windows\System32 folder appear in task manager.

1
  • 2
    "win8.1 was using 32 bit wmplayer, explorer, etc " - yeah, I think they do that because a number of plug-ins/browser helpers (BHOs) only work for 32-bit platforms. I think Adobe Flash was one such plug-in. I usually delete the original IE shortcuts that point to Program Files (x86) and replace them with the ones that point to Program Files.
    – jww
    Commented Feb 27, 2015 at 3:00

8 Answers 8

1

You have it backwards. It's confusing, but with 64-bit Windows, \system32 has 64-bit programs, while \SysWOW64 has the 32-bit ones.

Easy way to see this for yourself: both directories have a CMD.EXE, the "Windows Command Processor", aka "Command Prompt" or "DOS shell". Run either one and check the Task Manager (on the Processes tab if you are showing More details). Close it and run the other. One says "(32 bit)" at the end of the name, and the other does not.

When I search for Windows Media Player in the Start menu, it runs the 32-bit one from "Program Files (x86)". But the one in "Program Files" does work if I run it directly. This may be for compatibility as others have mentioned. When I run the Command Prompt by right-clicking the Start icon, it does run the 64-bit one.

When there are both versions, you may be able to change which one runs by default. For example, for Windows Media Player, here are some instructions for Windows 7. I don't know if they still apply for Windows 8. When you read the whole thing, it seems a little complicated.

1

Since you have several questions I'm going to quote each as I go along...

I want to know if win 8.1 will TRUELY use this 4 Gb to run x64 addresses apart from being just be able to access this increased memory?

All 64-bit Windows can "run x64 addresses" regardless of RAM size - even if you have much less than 4 GB of memory (assuming, of course, that you have enough RAM for the system to run at all!). The "64-bit addresses" and "64-bitness" of applications are about virtual address space, not physical (RAM). By adding more RAM to the system you have made room for more of the defined and in-use virtual address space to be resident in RAM at a time.

(And just btw, the reverse is also true: you can have a 32-bit OS using more than 4 GB of RAM - almost all Server versions of Windows can do that. Again, the "32 bit" refers to virtual addresses. You can have more than 4 GB of virtual address space defined in a 32-bit Windows system at one time, because each process defines its own 2 or 3 GB of VAS. So any one 32-bit process can only see a 4 GB VAS, but the sum of all processes plus the OS can add up to far more than 4 GB. Having more than 4 GB RAM simply permits more of the total virtual address space to be resident in RAM at once. I must have read at least 20 different articles claiming that "a 32-bit computer or OS can only access 4 GB RAM" - flatly untrue. The amount of RAM you can use is limited by the number of address pins that come out of the CPU, and almost all modern CPUs have at least 36 bits' worth, though not necessarily that many actual pins.)

Or Do I need to do a fresh install to make sure it uses x64 instructions?

Absolutely not.

I had to raise this question because win8.1 was using 32 bit wmplayer, explorer, etc both before and after the upgrade..

I don't think so. What made you think so? Almost all executables shipped with 64-bit Windows come in 64-bit form. Some of them have 32-bit versions as well.

I do not see any programs from windows\SysWow64 folder. Only from windows\system32 folder appear in task manager.

Oh, I see. That's not the way to tell. Strange though it seems, the exe's in Windows\system32 are almost all 64-bit exe's (on a 64-bit Windows installation, of course). Confusingly, ...\SysWow64 is mostly where Windows-supplied 32-bit exe's live, along with a few support DLLs that enable running 32-bit exe's on the 64-bit OS. (WOW there is short for "Windows on Windows" - support for 32-bit apps on the 64-bit Windows OS.)

If you want to use task manager to see which of your processes are 64-bit, go to the Details tab, right-click in the column headings, click "Select columns", and enable the "Platform" column. You might also take a look at the "Image path name" column, sort by that, and see how your file paths correspond to the platforms. On my system there are darn few 32-bit exe's running that came with the OS from Microsoft.

enter image description here

If you want further confirmation that your processes are using 64-bit addresses, download and run Process Explorer from the SysInternals tools. Be sure to run it as Administrator. In the View menu, enable "Show lower pane", then set the "lower pane view" to "DLLs".

Note that you can add an "image type" column to the top pane - it's the same thing as "Platform" in Task Manager. (Don't you wish people would agree on names for these things?!)

Now, in the upper pane, click on a process to look at in the upper pane. Since you probably already have Task Manager running, that would be a good choice (Taskmgr.exe).

In the lower pane, enable the "Base" and "Size" columns if they're not already there. The "Base" column shows the starting virtual address of each code file (exe, dll, etc.) or mapped data file in the process's address space. Scroll the lower pane down and you'll find plenty of dlls, and in this particular case the exe itself, with "Base" address greater than 0xFFFFFFFF - 4,294,967,295 decimal - which is the highest virtual address in a 32-bit system.

enter image description here

One other thing to look at with Process Explorer: A column that's available in the upper pane is "Company Name". If you enable that and the "Image Type" column, and then sort by the "Company Name" (so that all the "Microsoft Corporation" ones group together), I think you'll find that almost every process that came with Windows with a "Company Name" of Microsoft is a 64-bit process. I say "that came with Windows" because a lot of MS's "layered products", like Office and Visual Studio, are 32-bit... or at least they are in the versions I have installed.)

The SysInternals "VmMap" tool can show you more detail of a selected process's address space. Again, it will show you plenty of addresses above 0xFFFFFFFF in your x64 system. It would have done so even before you added the RAM.

If anything here is unclear, or leads to further questions, please do not hesitate to ask.

0

Run Resource Monitor, here you can see if Windows uses the complete 4GB RAM or not line in this example (the gray is unusable):

enter image description here

0

Even without the increased memory you can still run 64-bit processes if you have a 64-bit CPU and OS, and all instructions will be available that the processor and OS both support.

The 4GB issue revolves around the addressing of memory in 32-bit Windows. There are limits to how much memory the operating system can use, as well as an individual program can use. Consumer versions of 32-bit Windows had issues addressing more than 4GB, but this was a limitation of the operating system and hardware, not the CPU, which generally supported 64GB or more of physically addressable memory. MMIO mapping prevents the OS from using all available memory, since it had to be within the addressable limit, as those memory locations were 32-bit.

Server versions supported more memory with the appropriate license, such as Server 2003 Enterprise, which could access all 64GB of memory using PAE. However an individual process could not use more than 2GB of virtual memory, runtime libraries and compilation could further limit that. The OS itself (kernel mode) only used up to 2GB.

On Win64, by default IE and WMP are 32-bit applications, at least in Windows 7 and I assume in 8 as well. IE does come in a 64-bit version but is not set to default due to plugin compatibility issues. 32-bit programs running on 64-bit Windows still have the same 32-bit memory limitations, but with a larger working set, more available handles, and less available threads. This thread limitation is due to overhead emulating the process on 64-bit hardware. There is also processing overhead due to emulation, which means they run slightly slower than if the OS was 32-bit, but are usually more stable thanks to the extra handles and working set. Additionally, compiler support can allow a process to use 4GB of memory if the operating system allows.

MMIO is still used on Win64, and with appropriate hardware, memory locations will be mapped in such a way that you will be able to access almost all available memory. My system shows all but 2MB of memory addressable by the OS.

0

I think that you're mixing up bitness of OS with bitness of programs. 32-bit programs will run just fine in 64-bit OS. This isn't unusual and there are still some reasons to do so.

Both 32-bit and 64-bit OSes can support more than 4 GB of RAM (as already noted by Jamie in his answer). For 64-bit OSes it's native support, 32-bit ones can use PAE or its equivalents on other CPU architectures. So bitness of OS doesn't determine the amount of RAM it can use [1].

64-bit OS will always use 64-bit addressing, even if 32 bits would cover its entire physical memory, ie. even when you have 3 GB of RAM installed. This implies that adding more RAM doesn't require any additional actions. On 32-bit OS you could have to enable it manually.

In 64-bit Windows the support for 32-bit programs is provided by WOW64 compatibility layer (Windows 32-bit on Windows 64-bit). This article explains how it actually works. It also explains that Microsoft is using confusing directory names: System32 stores 64-bit files and SysWOW64 is for 32-bit ones. They had some reasons to do so, but nevertheless it's confusing.

I hope this explains that you don't have to do anything more than just adding RAM. Now what are the benefits of using 64-bit programs and why is Windows still using 32-bit counterparts, even though 64-bit ones are available too?

32-bit programs can't use more than 4 GB of RAM, even if they are running in a 64-bit OS, because they are compiled with 32-bit addressing in mind. 64-bit programs have theoretical limit of 16 EiB (exbibytes, 1 EiB = 260). They can also use CPU instructions that aren't available in 32-bit architectures, so some CPU operations may be a bit faster.

There are also some downsides, both technical and practical.

64-bit addressing means that programs use 64-bit pointers, and thus use more RAM than their 32-bit counterparts just because they are 64-bit. Modern systems usually have a lot of RAM and this doesn't make a big difference, but if your system often consumes almost entire RAM, then you may consider switching to 32-bit processes. That's it for the technical downsides.

Now practical ones. When Microsoft was releasing 64-bit Windows, everyone was using 32-bit software and no one released 64-bit programs (because making your software 64-bit compatible requires additional work and it was pointless when there were no 64-bit OS users). Of course Microsoft wanted seamless support for all old programs and WOW64 mostly solved this issue.

Something couldn't be solved that way, though: all third-party plugins would have to be compiled for 64-bit so you could load them into 64-bit programs.

This is why Windows still uses 32-bit Internet Explorer by default (and some other programs, too). Most plugins/ActiveX components didn't support 64-bit browsers until few years ago. 64-bit IE didn't have Flash, PDF viewing etc. At the same time IE isn't an application that would use more than 3 GB of RAM, so sticking to the 32-bit version while making 64-bit available as an opt-in was perfectly fine.


[1] At least not directly. For example non-server 32-bit editions of Windows don't have support for alternative addressing that enables it to use more than 4 GB of RAM - it's a business decision, not a technical limitation.

-1

If you have installed 64bit Windows 8.1 it will use 4GB of the memory and even if you upgraded to 8GB it would still use all of it as long as your hardware supports it. No need to reinstall Windows for that. That is of course assuming that you really do have 64bit Windows installed (I'd assume so since you can find SysWow64 folder which, AFAIK, does not exist in 32bit Windows).

64bit Windows comes with both, 64bit and 32bit Internet Explorer and WMPlayer is either 32bit or comes also with both flavours. In most cases this doesn't really matter much, it's just that they cannot utilize more memory than 2GB per process.

As for files from SysWow64 not appearing in task manager, this might have something to do with the fact that the folders in 64bit Windows are more or less one and the same (this is based on some odd memories I have from past, I think I edited one file for reason or another from System32 and same edit appeared in SysWow64. It's possibly symlink or junkion or some such, someone wiser may give more information on that).

1
  • "... it's just that they [32-bit apps] cannot utilize more memory than 2GB per process." Actually they can - on 64-bit Windows, 32-bit apps can use up to 4 GB of virtual address space if they are marked "large address aware". And hence they can use that much RAM if absolutely everything they define happens to be resident... but that's rare for all apps. Commented Feb 27, 2015 at 8:46
-1

By "explorer" I assume you mean Internet Explorer. The x64 and x86 versions of IE are in separate directories, the former in "C:\Program Files" and the latter in "C:\Program Files x86". You'll have to change your IE shortcut to use the x64 version. As to WMP Google "Windows Media Player x64". Apparently you have to make some registry changes to get Windows to use WMP x64.

-1

Your answer is in the fact that you have Windows 8.1 64-bit already installed. This means that it can (theoretically) support 64 GB (or 128 GB if you have Windows 8.1 PRO). As long as your RAM is above the minimum recommendation, the more you add, the better.

Not the answer you're looking for? Browse other questions tagged .