What is "Above 4G decoding"?

8

1

I've been dealing with a problem where if I don't enable "Above 4G decoding" in the BIOS settings, my server system won't boot up with a certain number of storage devices.

Google results give this: "The definition of “Above 4G decoding” is to allow the user to enable or disable memory mapped I/O for a 64-bit PCIe device to 4GB or greater address space, because the primary VGA card should always be mapped below 4GB address." (https://www.asus.com/support/FAQ/1004170/)

But what does this mean, for someone who doesn't know much about computers?

jmoon

Posted 2017-08-09T16:55:18.267

Reputation: 91

3It means that the system memory assigned to your VGA card must below the 4 GB address space unless this option is enabled. Depending on the exact specifications of your server, this might not be possible, if the option is disabled. You should leave it enabled based on the fact your system will not boot with it disabled. – Ramhound – 2017-08-09T17:09:06.420

1@Ramhound You should make this an answer, not a comment. Thanks though! – jmoon – 2017-08-09T18:10:26.103

Answers

5

Since there was never an official answer and this is one of the first Google results:

This allows 64-bit PCIe devices to use addresses in the 64-bit address space. Since 32-bit operating systems cannot access the 64-bit address space*, this option is for compatibility reasons. In most cases, it does not need to be enabled. In my experience, most motherboards default to having this setting off. There's generally no harm in enabling it if you have a 64-bit OS.

Generally, people enable it when they have many PCIe cards installed, such as with triple and quad SLI and using GPGPU compute modules such as NVIDIA's Tesla. It's more commonly used in workstations and servers.

Since neither setting should cause issues on a 64-bit operating system, you can enable or disable it without any ill effect most of the time.
______________
* Note that a 32-bit processor, or a processor in 32-bit mode, can access 232 bytes, which is 22×230 = 4 gibibytes (4 GiB).

Zzyzx Wolfe

Posted 2017-08-09T16:55:18.267

Reputation: 51

1Likely the OP has some unusual PCIe devices with large amounts of onboard high-speed memory that the BIOS thinks the CPU needs access to. The BIOS might be wrong about that, in which case a BIOS update might fix it. But the BIOS might also be right. I had this same issue with a desktop with a Xeon Phi coprocessor with lots of onboard RAM. In that case, the BIOS was right. – David Schwartz – 2019-01-06T22:48:16.667

Interesting point: In my machine's firmware settings this is under the "boot options". If that actually means anything, then an OS should have no trouble accessing PCIe devices that are at addresses above 4 GiB, even if this option is turned off. You should only need this turned on if you need your firmware's boot code to see those devices. – Jamie Hanrahan – 2019-03-14T01:58:34.627

1

If you're running a 32 bit operating system, you will almost certainly need to turn this OFF, otherwise some of your hardware may not be seen at all by the OS. Since this will map your video memory into the ~3.5Gb available, you should use whatever tools came with it, and make sure it's not using a lot more memory than you need, since that memory won't be available to your operating system and apps. Most can be restricted to 128 or 256 Kb. If you're using a 64 bit OS, with 8Gb or more, you can probably leave it off, unless you're gaming with an expensive video card.

D J EMMERSON

Posted 2017-08-09T16:55:18.267

Reputation: 11