The 870 obviously benefits from some sort of RAM caching, such as the Samsung Magician software, that's throwing the numbers. Disable, reboot, and test again.
The 980 looks about correct for a mid-tier PCIe 3 unit that's not "cheating".
Yep somethin is definitely screwy with those 870 numbers because even top tier SATA drives simply can't run that fast..even with caching.....but as stated, the nvme numbers are pretty accurate for most gen 3 drives, and almost identical to what my older SN750's achieved
You probably have RAPID mode enabled on the 870 which sets up a ram cache and screws with benchmark numbers. Try a much larger sample size (24GB instead of 1GB) in crystaldiskmark and you’ll see the numbers come down to normal (unless you have a shitload of RAM in which case the cache will still get hit.)