AMD Ryzen, DDR4 Dual Rank and BankGroupSwap
If I had to guess I would say that more than 90% of AMD Ryzen based builds use Single Rank memory sticks.
Finding any information regarding how Dual Rank DDR4 perform, how they react to overclock or even worse,
what memory settings are the best is pretty much mission impossible.
Since I use Dual Rank DDR4, because, face it, it is 2017 and 16 GB of RAM does not cut it anymore, I had
to dig in unexplored territories to find out what the best settings are.
What follows are my personal findings on the impact of BankGroupSwap setting on system performance.
System specifications
- Ryzen 7 1700X
- Gigabyte X370 K7 (BIOS F7B)
- Crucial DDR4 2133 MHz CAS15 | 16 GB (part number: CT16G4DFD8213.C16FBR) | ICs: Micron C9BGN
The CPU overclocked to 4 GHz while the RAM are overclocked to 3066 MHz with main timings 16-19-14-14-36 1T and GearDownMode disabled.
Testing methodology
To test the impact of BankGroupSwap I used two benchmarks:
RyzenGraphic_27.blend
blender (version: 2.79.1) rendering, it can be downloaded at the following url: http://download.amd.com/demo/RyzenGraphic_27.blend- a bash script that automatically downloads the latest version of Linux kernel and compile it on RAM.
#!/bin/sh
WORKDIR='/dev/shm/tmp'
KERNEL_SRC='https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.13.12.tar.xz'
USER='user'
GROUP='user'
###############################################################################
SCRIPT='realpath $0'
SCRIPTPATH='dirname $SCRIPT'
rm -rf $WORKDIR
sudo mkdir $WORKDIR
sudo chown $USER:$GROUP $WORKDIR
cd $WORKDIR
wget $KERNEL_SRC -O leenux.tar.xz
mkdir leenux
tar --extract --file=leenux.tar.xz --strip-components=1 --directory=leenux
cd leenux
for i in {1..5}
do
make clean
make defconfig
echo COMPILING ...
(time make -j17) 2>> kernel-bench-ram-results.txt
echo DONE
sleep 10
done
mv kernel-bench-ram-results.txt $SCRIPTPATH
Each one of the two benchmark has been run five times in a row.
Results
BANKGROUPSWAP | on | off
blender0 | 18.41 | 18.52
blender1 | 18.35 | 18.39
blender2 | 18.30 | 18.47
blender3 | 18.37 | 18.46
blender4 | 18.32 | 18.35
RESULT AVG | 18.35 | 18.438
BANKGROUPSWAP | on | off
linux kernel0 | 67.782 | 67.700
linux kernel1 | 67.697 | 67.491
linux kernel2 | 67.558 | 67.471
linux kernel3 | 67.720 | 67.574
linux kernel4 | 67.724 | 67.538
RESULT AVG | 67.696 | 67.555
Looking at the results table it is clear that the difference is really abysmal; having BankGroupSwap enabled amount roughly to ~0.5% performance increase in Blender and ~0.2% performance decrease in Linux kernel compilation.