Through its GeForce 465 driver update, NVIDIA formally introduced the PCI-Express Resizable BAR feature to its GeForce RTX 30-series “Ampere” graphics cards. This feature was invented by PCI-SIG, custodians of the PCI-Express bus, but only became relevant for the PC when AMD decided to re-brand it as “AMD Smart Access Memory” (which we separately reviewed here) and introduce it with the Radeon RX 6000 series RDNA2 graphics cards. That’s probably when NVIDIA realized they too could implement the feature to gain additional performance for GeForce.
How Resizable BAR Works
Until now, your CPU could only see your graphics card’s memory through 256 MB apertures (that’s 256 MB at a time). Imagine you’re in a dark room and have a tiny pocket flashlight that can only illuminate a small part of a page from a book to you. You can still read the whole page, but you’ll have to move the flashlight to where you’re looking. Resizable BAR is the equivalent of illuminating the whole room with a lamp.
This becomes even more important if you consider that with modern APIs, multiple CPU-to-GPU memory transfers can be active at the same time. With only a single, small aperture, these transfers have to be executed in sequence—if the whole VRAM is mapped, they can operate in parallel. Going back to our reading in the dark example, we now assume that there are multiple people trying to read a book, but they only have one flashlight. Everyone has to wait their turn, illuminate the book, read a bit of text and then pass the flashlight on to the next person. With Resizable BAR enabled, everybody can read the book at the same time.
The 256 MB size of the aperture is arbitrary and dates back to the 32-bit era when address space was at a premium. Even with the transition to x86-64, the limit stayed as newer 3D graphics APIs such as DirectX 11 relied less on mirroring data between the system memory and the video memory. Perhaps the main reason nobody bothered to implement Resizable BAR until now was that modern GPUs come with such enormous video memory bandwidths that the act of reading memory through apertures had minimal performance impact, and it’s only now that both NVIDIA and AMD feel the number-crunching power of their GPUs has far outpaced their memory bandwidth requirements.
To use Resizable BAR, a handful of conditions should be fulfilled. For starters, you need a modern processor that supports it. From the AMD camp, Ryzen 3000 “Zen 2” and Ryzen 5000 “Zen 3” processors support it. On the Intel camp, hardware support technically dates back to the 4th Gen “Haswell,” but most motherboard vendors for whatever reason restricted their Resizable BAR enabling BIOS updates to the 300-series chipset, or 8th Gen “Coffee Lake” (and later) architectures, along with X299, or 7th Gen “Skylake-X” HEDT (and later). You’ll also need a compatible graphics card—NVIDIA RTX 30-series or AMD RX 6000 series. Lastly, your PC must boot in UEFI mode with CSM disabled for UEFI GOP support. With these conditions met, you’ll need to enable Resizable BAR in your motherboard’s UEFI setup program.
There are multiple methods to check if Resizable BAR is enabled. The easiest is to use GPU-Z, which now shows the Resizable BAR status on its main screen. The other options are using NVIDIA’s Control Panel and Windows Device Manager.
In this review, we will be testing four NVIDIA GeForce RTX 30-series Ampere models—RTX 3090, RTX 3080, RTX 3070, and RTX 3060 Ti, all Founders Edition cards. Each of these will have Resizable BAR enabled and disabled, across our entire test-suite of 22 games with a rich diversity of game engines and APIs.