The other day I was asked an interesting question: What was the first BIOS with support for ROM shadowing? In the 1990s, ROM shadowing was common, at first as a pure performance enhancement and later as a functional requirement; newer firmware is stored compressed in ROM and must be decompressed into RAM first, and firmware may also rely on writing to itself before being locked down and write protected.
Old PCs did not use ROM shadowing because it made no sense. ROMs were only marginally slower than RAM, if at all, and RAM was too precious to waste on mirroring the contents of existing ROMs. Over the years, RAM speeds shot up while ROM remained slow. By about 1990, executing BIOS code from ROM incurred a noticeable performance penalty, and at the same time devoting 64 or 128 KB to ROM shadowing was no longer prohibitively expensive.
The OS/2 Mussum’s content never fails to be deeply interesting.
And the answer to the question is the same answer it always is when it comes to who did something first in the early years of the PC platform. It’s always the same.
I guess they mean BIOS in the strict context of x86 PCs then, because ROM shadowing is a key feature of how the Atari 8-bit machines worked. There was a primitive MMU in those machines that could map out segments of ROM to different RAM addresses, allowing chunks of the OS code to be replaced. This was commonly used for installing device drivers and modifying the standard character set, as well as things like installing faster maths routines.
This also applied to the C64, there were a lot of kernel upgrades available that way.
OMG this brought back memories of when I first shadowed ROM. I don’t recall the computer but it was PC compatible, probably running DOS 3.x. I guess that machine had really slow ROM and [relatively] fast RAM. I dare say the computer appeared to be about 4 times faster after shadowing.
Wasn’t able to edit my prior post in time but I think it was an AMD 386DX-40 motherboard using a Microid Research BIOS (MrBIOS). Could be wrong, though. I’ve slept a few times since then!
The article starts looking at 386 era. My Atari PC4 (which is a 12mhz 286) also has ROM shadowing options in the BIOS.
Lots of the fast 286s had ROM shadowing but those were mostly released several years after the 1986 Compaq and possibly 1986 AST machines. There may well have been earlier PC compatible designs that did shadow ROM but with a different name for the feature finding one will be very difficult.
In 1986, shadow ROM cost $150 for a modest 5% performance gain but most of the faster DOS applications ignored the BIOS and shadowing did nothing. Advanced video cards with lots of ROM based functions did benefit from ROM shadowing but that was 5 years after the technique was invented and most systems by then could have so much RAM that losing a few hundred KB meant nothing.
krebizfan,
Yeah, I’d like to see shadow rom benchmarks for specific applications. Obviously it should accelerate bios calls, but often times performance critical applications were programed for direct IO anyways, skipping the BIOS entirely and making shadow rom less relevant. Many games for example wouldn’t call BIOS at all in their main event loop. direct IO was often easier to program for back when hardware compatibility was much stronger than today. Most DOS program used bios for disk IO, but I’d expect the spinny disks of the era to be bottleneck there by a couple orders of magnitude.
I don’t own any of the hardware to test this on, but I’m curious about the types of applications this made a difference for:
dos commands
pkzip,arc,arj,lha
windows
gwbasic qbasic
games
xtree gold, norton commander
telix, telemate, ripterm
etc