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
8

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.

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.