Friday, December 4th 2020

AMD Ryzen 3000 and Older Zen Chips Don't Support SAM Due to Hardware Limitation, Intel Chips Since Haswell Support it
AMD Ryzen 3000 "Matisse" processors based on the "Zen 2" microarchitecture, as well as older AMD processors based on "Zen+" and "Zen" microarchitectures, do not support the company's Smart Access Memory (SAM) feature being introduced with Radeon RX 6000 series graphics cards. SAM is essentially a branding of the Resizable Base-Address Register (Resizable-BAR) feature developed by the PCI-SIG; which enables a processor to see a graphics card's entire video memory as a single addressable block, rather than through 256-megabyte apertures. Apparently the PCI-Express root complex of Ryzen 5000 "Vermeer" processors introduce an instruction called full-rate _pdep_u32/64, which is required for resizable-BAR to work.
It gets more interesting—Intel processors have been supporting this feature since the company's 4th Gen Core "Haswell," which introduced it with its 20-lane PCI-Express gen 3.0 root-complex. This means that every Intel processor dating back to 2014 can technically support Resizable-BAR, and it's just a matter of motherboard vendors releasing UEFI firmware updates for their products (i.e. Intel 8-series chipsets and later). AMD extensively advertises SAM as adding a 1-2% performance boost to Radeon RX 6800 series graphics cards. Since this is a PCI-SIG feature, NVIDIA plans to add support for it on some of its GPUs, too. Meanwhile, in addition to AMD 500-series chipsets, even certain Intel 400-series chipset motherboards started receiving Resizable BAR support through firmware updates.
Sources:
CapFrameX (Twitter), flyrobot27 (Reddit), University of Science and Technology of China
It gets more interesting—Intel processors have been supporting this feature since the company's 4th Gen Core "Haswell," which introduced it with its 20-lane PCI-Express gen 3.0 root-complex. This means that every Intel processor dating back to 2014 can technically support Resizable-BAR, and it's just a matter of motherboard vendors releasing UEFI firmware updates for their products (i.e. Intel 8-series chipsets and later). AMD extensively advertises SAM as adding a 1-2% performance boost to Radeon RX 6800 series graphics cards. Since this is a PCI-SIG feature, NVIDIA plans to add support for it on some of its GPUs, too. Meanwhile, in addition to AMD 500-series chipsets, even certain Intel 400-series chipset motherboards started receiving Resizable BAR support through firmware updates.
88 Comments on AMD Ryzen 3000 and Older Zen Chips Don't Support SAM Due to Hardware Limitation, Intel Chips Since Haswell Support it
The other is: it was there for years, but was put to use only after AMD implemented it.
Remind me, which Haswell mainboard supports it.
Some instructions are present in Excavator but not in Zen 1 or 2.
full-rate _pdep_u32/64 is not required for Resizable bar, its an optional improvement for certain DirectX Swizzle operations but is not required for large block transactions to and from the graphics card, its also a non standard method of swizzle in any case.
So Intel "inferior" products are receiving it, while our "superior" and modern 3900X, 3800X and XT series are not.
On a marketing point of view, it would have be better for AMD not to release the feature at all...
I think there could be some validity to AMD's claims. From looking at the AsRock x470 bios I spotted a few key difference between it and my skylake z170 bios. A bios option labeled Above 4G decoding was present, but disabled on x470 and is to do with 64-bit PCIE decode assuming that's the 64-bit PDEP decode that enabled BAR size/Aperture size adjustments in particular above 2GB. It doesn't have MMIO, but did have something labeled IOMMU I'm thinking it's a interchangeable name difference. What was lacking was anything with the name BAR/aperture size thus no configuration options for that. I presume it's got a bios string for 256MB aperture size written somewhere in the bios, but no configuration option for it. I'm uncertain if it could be manipulated and coded to a value higher than that upward of 2GB/3GB or not.
My conclusion is AMD isn't trying to pull the wool over anyone's eyes on the matter. The BAR/aperture size and options are a new feature to the AMD platform that's been introduced with x570/B550 and Zen 3 CPU's. If the CPU having the proper hardware for the 4G decoding (PDEP 64-bit) is required that's understandable enough. I can certainly see now why Nvidia is pressuring Intel to support it since it is already capable of supporting it.
It's a weird situation overall AMD/HP seemed to push and fund behind the scenes the original address space research into the PCIE spec for it from what It looked like. Seems Intel then beat them to the punch on feature complience of the spec itself, but never pro-actively exploited it. I think in Nvidia's case it's simply a instance of we could be actively using this same tech and do some already on Intel platforms from a few generations back so rather than being at some self imposed disadvantage and restriction perhaps we shouldn't. I think this is also a great instance where Intel could show some good will toward it's customers especially in light of all the security flaws and performance impact they've caused. They could restore a bit of that performance and at no real cost and give back a bit of the performance customers paid for in the first place that was effectively thrown out. It's the right thing to do from a PR standpoint to restore customer sentiment if you're Intel not doing so will leave a much greater scar people will look at it and say yeah Intel doesn't care about customer satisfaction and not just able, but willing to screw them over.
"In computing, an input–output memory management unit (IOMMU) is a memory management unit (MMU) that connects a direct-memory-access–capable (DMA-capable) I/O bus to the main memory."
It's present in B450 Bios also from MSI.
Also above 4G.
I've already madea few experimental bioses here:
www.techpowerup.com/forums/threads/z390-taichi-asrock-board-users-resized-bar-bioses-available-for-testing-z390-taichi-featured-pm-me-for-details.275587/
Same here in this situation. 3000 series probably would work with SAM but they are not supported. This probably means the gains from SAM with 3000 series are not worth it.
I'm sure Haswell will work with SAM (Intel version) but what's the point of it if it gives you nothing or a boost in an area of margin of error.
I'd rather wait for this feature release and tests its capabilities with older CPUs before jumping into any conclusions.
patchwork.kernel.org/project/linux-pci/patch/5662C61F.50303@amd.com/
EDIT: AMD is in fact already using it
Version 5809
2020/12/04 14.52 MBytes
ROG STRIX X470-F GAMING BIOS 5809
"1.New CPU support
2.Offer a Re-size BAR Support option to enhance GPU performance.
3. Remove AMD 7th Gen A-series/ Athlon X4 Processors support"
ROG STRIX X470-F GAMING | ROG Strix | Gaming Motherboards|ROG - Republic of Gamers|ROG Singapore (asus.com)
I flashed this BIOS but I have not tested that option yet.
I have a 3700x and an RTX 2060 Super and I don't know what effect it would have.