BIOS ROMS

The BIOS on every motherboard is largely the same as the original on on the IBM PC. The PC had 64KB of ROMs as it offered BASIC in addition to BIOS services. Over time the industry continued to use the 64KB address space for the BIOS. Eventually EEPROM sizes grew so that the entire address space was available.

Due to the serial nature of the BIOS motherboards early on began to shadow the BIOS in upper memory blocks. This practice continue as DOS moved to Windows where the high memory area was used to hold the image.

ITANIUM

The Intel Itanium project provided some new directions. The first was a new BIOS with support for more hard disks and an extensible architecture. The new GPT was designed to support more partitions in addition to supporting larger capacity disks. Disk capacity was growing and RAID systems were becoming larger which is the main motivation for the new partition scheme. GPT can support over 18EB of storage.

AMD64

The AMD64 architecture was the IA32 with new registers and instructions so that existing code would be executed at native speeds while new code could take advantage of more memory etc. The AMD64 allowed for a larger address space for the BIOS so with new EEPROM capacity improvements by expanding the address space. Our MSI B350M Bazooka has 16384KB of BIOS address space available. Much of the new code is due to the BIOS extension and system management interface API etc. The MSI X570-A PRO has a 32768KB BIOS to allow for a more complex code base.

CHECK IT YOURSELF

Here is some code for a batch file to check the BIOS size on any PC motherboard. This works with Windows XP and above. Use the CMD extension to to allow it to load the command processor automatically.

@echo off
setlocal enabledelayedexpansion
set key=HKLM\SYSTEM\CurrentControlSet\services\mssmbios\Data
for /f "tokens=3" %%G in (
'reg query "%key%" /v "SMBiosData" ^| findstr /i /c:"REG_"'
) do (
set "size=%%~G"
set /a size=64 * 0x!size:~34,2! + 64
)
echo ROM Size: %size% KB
PAUSE
exit /b

There is a bug in the SMBios which does not report correctly on some machines.