4

The system bus of the IBM PC had 8 data lines and 20 address lines, in a logical correspondence to the 8088 CPU.

The AT added a second inline edge connector to expand this to 16 data lines and 24 address lines, again in a logical correspondence to the new 286 CPU. And certainly the wider data bus made the system run faster.

But I'm wondering were the extra address lines really used? Of course there was the infamous problem with the 1-megabyte address space limit being baked into the API by the time the AT came on the scene, but it seems to me there is another issue.

Most of the address space in an 8088 machine would naturally enough tend to be used for RAM. An IBM PC could take up to 64K on the motherboard, but you could stuff it with memory cards to bring it up to 256K, run Lotus 1-2-3 and turn your spreadsheets into graphs that made you look good in presentations, and that was the combination that made the IBM PC decisively superior to the Apple II in terms of what you could do with it, never mind the IBM nameplate.

But the SIMM was invented in 1982, two years before the AT came out. So in the 286 era, you didn't need to put memory cards on the system bus anymore. It was still used for lots of other things, of course. But none of them consumed address space wholesale the way RAM did.

So: did anything ever actually use the extra address space of the 16-bit ISA bus?

  • You may want to tighten up your question a bit. – Thorbjørn Ravn Andersen Mar 30 at 14:14
  • 3
    The IBM PC/AT didn't use SIMMs, and was limited to 512K on the motherboard. If you wanted more memory than that (even the 128K extra for 640K) you had use a ISA memory card. I believe most early '286 PC clones also didn't use SIMMs. It wasn't until the '386 era that SIMMs started being popular. This was out of necessity, since the 16-bit 8 MHz ISA bus was too slow to use for memory expansion. – Ross Ridge Mar 30 at 19:40
  • 2
    @RossRidge Even by the early 386 era things weren't yet completely standardized on SIMMs. I have a few early 386 boards that use SIPP memory modules instead. – mnem Mar 30 at 20:17
9

Yes, there were 16-bit ISA cards which used the extra address lines; for example IBM’s various memory expansion options, most of which could be configured to provide extended memory beyond 1MiB. You can see the address lines referenced in the corresponding schematics, e.g. for the 512KiB/2MiB expansion board.

(The PC AT didn’t have SIMM sockets on the motherboard; only the larger memory expansion options used SIMMs.)

3

Yes, especially for VGA Graphics cards, which also have a large address space requirement. As motherboards included more memory, it became necessary to have the BIOS and motherboard leave a hole in the address space for the graphics card. On motherboards I used, there was a VGA hole at megabyte 0xE (I think, it may bave been lower).

I designed some non-graphics interface cards that depended on this VGA-hole. Without it, the entire 16 MByte address space could be consumed by RAM.

In some motherboards, the VGA-hole was optional in the BIOS, perhaps also where the hole was located.

When the bus structure evolved from ISA to VL-bus and then PCI, the addressable range increased, the bus structure became configurable, and the VGA-hole was eliminated.

  • 1
    "Large" by the standards at the time, that is. 640x480 at 4bpp takes 153,600 bytes, or 150 KiB, plus possibly a little extra for color palettes. Even in 1987, that was a fair chunk of memory. – a CVn Apr 2 at 15:15
  • 1
    The 15-MB hole is still a BIOS option on some boards. – Mark Apr 3 at 2:55
3

So in the 286 era, you didn't need to put memory cards on the system bus anymore.

There were a number of driving factors that decoupled memory expansion from the ISA expansion bus, but early 286 machines did allow for it. The CPU bus, at CPU speed, was directly exposed on the slot edge connector, so memory on a card was the same as memory on the motherboard.

With respect to how that memory was used, keep in mind that the (by far) dominant OS on these machines was real-mode DOS, with its 20-bit address space. While there were ways to use more of the address space through protected mode, the 286 itself had its issues switching from protected mode to real, so there was a strong incentive to keep things accessible with 20-bits. (Hence EMS's paging, etc.) So I'd be surprised if, in the early days, there was much beyond memory boards for OS/2 and Xenix that used the extra address bits.

The rest of the story relates to the fact that it also became advantageous to run ISA slots for compatibility reasons at 8MHz. Running them faster could and would cause problems for some expansion boards. So, as PC's accelerated past 8MHz and ISA became more of a standard, the industry rather quickly decoupled CPU speed from bus speed. By the time the 486 rolled around, it wasn't uncommon for a CPU to have something like a 32-bit/33MHz connection to main storage and 16-bit/8MHz to I/O. (And maybe some kind of memory slot for adding extra memory.) Okay for CPU bound workloads, but not much else, and particularly video. 1024x768x8bpp is 768K, and that's a lot of data to stream over an ISA slot. Hence the initial push for VLB, and later AGP.

What started making higher address bits more useful was the more widespread emergence of 24 and 32-bit addressing in software. Windows 3.0 and Windows 95 did most of the the heavy lifting in the PC world in that regard.

2

Back with the 8088 I used a MDA which mapped into 4KB of video memory 0B0000h. The address decode did not even resolve it properly so it was copied over 32KB of address space.

I used one of them with my old IBM PC.

The PC AT with the 80286 had new slots. In DOS however the same world as before.

You needed a different operating system to use protected mode to recognize 16MB of address space and use the 16-bit slots more effectively.

The 80386 was more DOS address space. Again a different operating system was needed to use the features.

I had BSD on a 386 and that actually could use all the memory natively. Had to use different commands but it worked OK. DOS was still limited.

-1

Multi-megabyte memory expansion cards for ATs absolutely WERE a thing, including more than a few sold by IBM themselves. I recommend having a scoot around the various document archives of the interwebs such as Bitsavers, Google Books' back catalogue of Byte / Infoworld / Computer Shopper etc, and various others whose names/URLs I forget but that frequently feature any time I do an arbitrary google search for information on some old bit of hardware. Simply dropping "PC-AT memory expansion card" into the search bar will probably get you endless hits, if you bother to do it.

SIMMs may have been invented in 1982, but that doesn't mean they were immediately adopted in any great way. The Atari STe was one of the first mainstream proponents of the idea that I'm aware of, and that dates to 1989. I've a slightly earlier (1987/88, I think?) AT-clone in my collection, that a family friend gave me wayback, and it has a grand total of ... two. Just 2x 30-pin SIMM slots, and they don't support any module size other than 256KByte; having filled them, and expanded its onboard memory from 640 to 1152KB, it'll just about boot Windows, but what you can do with the system once you've loaded it is pretty limited ("Write" will run, "Word" and "Works" won't), and it's a damn good thing that the video adapter has its own memory instead of having to share it with the rest of the machine. If you wanted to use any more sophisticated software with the machine, then your only recourse would be to add memory cards. Motherboards sporting a meaningful rack of SIMM slots, and that supported the larger capacity (and, at the time, still deadly expensive, especially compared to SIPPs, or the lower-frequency DIPs used on the expansion cards) 1MB and 4MB modules, were rather more a 386-era thing, or at least later-286.

Compare it to the 3.5" diskette drive. That was already a thing since, what, 1983, 1984? It also pre-dated the PC-AT. IBM, and PC clone manufacturers in general, didn't adopt it as a format, outside of portable machines, until the debut of the PS/2, many years later. It might have been there as an option, and even used (alongside other competing compact formats like the 3" flippy-disk cartridge as beloved of Sinclair and Amstrad) by a good number of rivals from 84/85 onwards, but it doesn't mean the 5.25" format was immediately obsoleted by it. Indeed, 5.25 was the first to get HD, and remained the larger-but-higher-capacity option (at 1200KB vs 720 or 800KB) until the even higher tech 3.5" HD floppies came along nearer to the turn of the 90s.

Or indeed... CDRs and other removable media didn't disappear when DVDR came along. USB didn't immediately displace all other interconnects (THAT took ages). Integrated graphics and sound, or indeed floppy/hard drive controllers, serial/parallel ports, etc, didn't completely do away with discrete add-on cards. Often, much like those two lonely low-capacity SIMM sockets, the early examples of the form were rather limited compared to what could be achieved with a dedicated, if rather costly and bulky, optional upgrade card, and were only really meant as a low cost, get-you-started convenience option. A lot of people don't need anything better than integrated graphics, but there's still the option for installing a dedicated GPU if you want it. Or a RAID card to expand your storage options beyond what the built in controller can do. At the time "my" 286 was made, Windows was still a novelty and even competing somewhat with lower-requirement things like GEM and DesqView; most of what the machine ran (indeed, all that it originally came with) were DOS apps, which for the most part worked just fine with the original 640KB. Adding the extra half meg unlocked a few nice additional features, like using WYSIWYG fonts in Lotus Symphony, but I never really got the impression that the computer was crying out for anything additional to that until I tried it with Windows. There aren't really any games which demand greater amounts of memory that don't also want a better processor (and, until I added the SVGA, a better graphics card). Most home or office buyers of the system would have been satisfied with what it offered, and if they found it still limited - say, they actually wanted to use it for some kind of heavier business or scientific analysis or industrial purpose - could have just used one of the several open slots to add a memory card, and been able to make a business-case justification for the expense.

And, as we were speaking of video cards... that aforementioned 286 clone came with a Hercules Mono card installed; before I added the SIMMs, its total memory complement between system board and video was only about 704KB. It didn't have much advantage over an XT other than a good extra turn of speed (having the 12MHz option), a larger hard drive (40MB), and better compatibility with later software (how much of what was installed on it wasn't still XT compatible though, I wouldn't want to guess). After some dumpster diving salvage runs at my old school, it gained an arguably over-the-top half-meg Trident SVGA card, as well as a Soundblaster Pro (sadly, no Gravis Ultrasounds or AWE32s to be had). AGP and its addressing "window" being more than a decade away, that memory is directly mapped into the machine's architecture, and I expect the SIMMs probably sat above the 1MB boundary too; I dunno if the soundcard has any usable RAM to speak of, but even so the computer likely has RAM mapped to at least 1.75MB logical, maybe even blocked out to 2MB to simplify addressing. On top of which, the 640 to 1024KB "hole" is typically joined by another at ... either 14 to 15, or 15 to 16MB on typical ATs (I forget which), allowing a wider range of extended BIOS ROM and memory-mapped IO on expansion cards, alleviating some of the pressure and conflict that could be experienced with everything vying for shared use of that 384KB block (and allowing things like the mapping of the "high memory" area out to 768KB or more of usable sub-1MB RAM in later versions of DOS).

Using a VGA card on an XT class machine can be quite tricky (and likely one reason for IBM creating the weird, crippled MCGA... its lack of EGA compatibility is inexplicable, but its limited memory is likely so it would fit within the 8088 address space on the lowest-end PS/2s without having to resort to complicated memory paging routines such as were needed for operation of over-1MB XT memory cards), and a lot of the other stuff above, probably including use of any kind of SVGA (or at least, anything over 800x600 16-colour - which just skims inside of 240KB), would be entirely impossible due to the more limited addressing range for both RAM, ROM, and mapped IO.

  • You can take some of those old 16-bit VGA cards and install them in an 8-bit bus and they'll work fine. The memory is not an issue as it's mapped into a window anyways. Ran a 16-bit VGA Wonder 1 MB card in my XT clone for a number of years and had full access to all features, albeit slower due to the half-size bus... – Brian Knoblauch Oct 28 at 18:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.