I checked the dmidecode source code.
I saw this:
int fd=open("/dev/mem", O_RDONLY);
long fp=0xE0000L;
It looks like Linux already copy SMBIOS information to memory?
/dev/mem provides access to all physical address space. The BIOS firmware is part of this address space (your computer must have some code to run during power-up).
So Linux "did not copy SMBIOS information to memory", 0xe0000 is the base address of the BIOS since ancient times, and reading this via /dev/mem will read directly from the ROM (unless the BIOS replaced itself with shadow RAM during the boot process, but again that has nothing to do with Linux).