22

Intel invented the original 32/64-bit PCI bus in the early 1990s to replace the decade old ISA bus used in PC's. It was immediately popular (in comparison to Micro Channel or EISA), being both faster and more supportive of auto-configuration (i.e. "Plug & Play") than the buses it replaced. By the mid-1990s, most new PC's included PCI slots and ISA slots started their gradual phase-out.

None of the above is surprising, and other systems had already pioneered these features for consumer/home computers years before (e.g. Amiga Zorro, MIT's NuBus). But what did surprise me was that non-PC-compatible systems rapidly adopted PCI as well. The PowerPC 604 based Power Macintosh 9500 brought PCI to the Mac product line in 1995, and Apple quickly deprecated NuBus in favor of PCI. Also, several years later, Elbox introduced the Mediator line of PCI bus boards (e.g. Mediator PCI 1200) to the Amiga 68K based computers. Surely, there were many other systems that also had a compatible PCI bus without an Intel processor.

It makes economic sense that Intel would design PCI to support multiple Intel processors, such as 80486/Pentium/Pentium II/etc. Thereby, they were creating a new bus that would support many processor generations and scale up bus performance as the processors also improved. But I don't know what Intel's economic rationale would be in making PCI a common bus and a good choice for designers of non-Intel CPU systems.

My question is:

  1. Did Intel intend to make PCI a solution for non-Intel systems too, and actually provide some sort of assistance to system integrators who pursued this? If so, then why?
  2. What hardware, if any, did system integrators have to engineer themselves to adapt non-Intel (e.g. PowerPC, MC68000, etc.) CPU's to the PCI bus? What I'm getting at here is whether these hardware designers had to make new, custom, bus interface hardware, or did they just use something off-the-shelf that was already CPU agnostic.
8
  • 13
    Intel did have non x86 processors and wanted support for those as well - perhaps that was a reason too.
    – Jon Custer
    Commented Sep 11, 2020 at 20:03
  • 10
    "It was immediately popular" - Wikipedia says:- "In mainstream PCs, PCI was slower to replace VESA Local Bus (VLB), and did not gain significant market penetration until late 1994 in second-generation Pentium PCs." Commented Sep 11, 2020 at 21:27
  • 6
    The (16 bit) ISA bus was basically just a (buffered) extension of the 80286 address/data bus. The VESA local bus was again just an (unbuffered!) extension of the 80486 address/data bus. But whereas ISA had been quite robust -- limited to a maximum clock of 8.33Mhz -- VLB was clocked at 25/33Mhz and was plagued with unreliability, especially when the bus was loaded down with 2-3 cards. For this reason, VLB's life was very short, and there are quite a few 486-era systems designed around the PCI bus instead.
    – kiwidrew
    Commented Sep 12, 2020 at 2:18
  • 1
    Also, I'm not aware of any Pentium motherboards that used VESA local bus. The only Pentium systems using VLB would have been Socket 3 motherboards (designed for 80486 processors) that had been upgraded using a Pentium OverDrive processor, which combined a P5 core with an 80486-compatible bus interface.
    – kiwidrew
    Commented Sep 12, 2020 at 2:22
  • 3
    Could this have been in part a reaction to IBM's experience with their Micro Channel architecture, which was protected by strong patents and required royalties, had no significant impact on the worldwide PC market, and was later seen as a mistake?
    – gidds
    Commented Sep 12, 2020 at 10:26

5 Answers 5

19

Nobody has really covered the technical aspects of the PCI bus.

Until then most busses had been mere extensions of the CPU's memory bus. Zorro was essentially an extension of the 68000 memory bus, S-100 which was just the 8080 bus, and ISA was basically the 8088 memory bus. There were a number of issues with these early expansion busses.

These busses used the CPU bus clock, so the CPU had to operate at the same speed as the bus. If a card only worked at say 8MHz then a 16MHz CPU would not work with it. Furthermore the bus was shared by all devices on it, rather than being segmented to allow multiple devices to transfer data independently.

There were electrical limits too, particularly as bus speeds increased. Longer busses are harder to keep in sync at high speeds and cause signalling problems.

Modifications were made over the years that overcame these issues to some extent. For example Zorro and ISA disconnected from the CPU bus and had separate interface chips that generated their own clocks, allowing the CPU to run many times faster than the bus.

Eventually the need for a new bus standard was obvious and Intel wanted PCI to be it. Since it was to no longer be based on the CPU bus there was no need for it to be similar to CPU bus signals, and in fact there were many advantages to it being different. x86 CPU busses themselves had evolved, it becoming apparent that having separate ones for RAM and for slow peripheral devices was a good idea and with the needs of highly integrated motherboards in mind, so the idea of using those as a template didn't make a lot of sesnse.

While PCI became more widely adopted by non-x86 systems it was more down to there being a large number of cheaply available cards than down to PCI being widely compatible. For example PCI ROMs used to configure cards at boot time, e.g. setting up a graphics card to produce the BIOS display, usually contained x86 code. Mac PCI cards had special ROMs with 68000 code and later PPC code. You could make an often cheaper "PC" card Mac compatible by swapping the ROM. Other systems had a small x86 emulation layer in their BIOS equivalent, or simply required drivers to be loaded by the OS as was the case with the Amiga Mediator system.

1
  • 6
    I'm still mourning OpenFirmware. How the h… could it lose out to UEFI? Commented Sep 16, 2020 at 18:15
22

Short Answer:

  • At the time PCI was devised, the x86 bus had already gone a long way toward being less chip specific.
  • PCI is maybe a clean design, but some choices for signals are still 'intelish'
  • Moving bus definition from following what a certain CPU implementation needs toward a more generic structure opens up more ways for future CPU development than pulling along old features
  • It follows a general direction of removing particular I/O implementation from CPU design and center the CPU bus at what the CPU needs (something that moved today into contrary direction again).
4
  • 3
    Separation of concerns has long been identified as a strategy that contributes to the ease of maintaining an interoperating complex system. This applies equally to hardware and software systems, so naturally many aspects of computers have grown in this direction as systems evolve.
    – J...
    Commented Sep 12, 2020 at 12:32
  • 1
    I think none of this is controversial. It explains PCI as a technical inevitability, rather than as a strategic business move. My question was really about whether there's any evidence that it was actually a strategic, purposeful, perhaps even "savvy" business move. Didn't someone high up from Intel at least comment about it at the time?
    – Brian H
    Commented Sep 12, 2020 at 14:20
  • @BrianH Maybe it wasn't controversial at all? ISA was way outdated, while NU-BUS had about the same issues of being a simplified processor bus extension, much like ISA. Intel did put their weight behind EISA (1988), to get an architecture that can be used by its customers without paying backwards. But EISA it still carried a compatibility burden. PCI was a way to let go of all old protocols and start over refocusing on an IO architecture instead of processor bus while keeping it open to have customers adopt it instead of EISA. The interest was selling chips, not collecting royalties.
    – Raffzahn
    Commented Sep 12, 2020 at 15:35
  • 2
    @BrianH if you (Intel) don't know what your future (as opposed to the one currently being designed) CPU busses will look like, then it's best for you (Intel) to make PCI be CPU agnostic.
    – RonJohn
    Commented Mar 18, 2023 at 16:39
20

The early-to-mid 1990s was a time where the future of the Personal Computer was very much up for grabs. Both the "Wintel" monopoly as a whole, and each part individually, where not at all set to be the foundations of the future PCs.

Even if we were to assume that x86 would "win", we had OS/2 and to a lesser extent BeOS as competitors on the desktop, OS/2 and various Unices on the workstation, and Unices on the servers. Linux also started to make its first appearances. For example, in 1988, Intel, SCO, and AT&T had developed the Intel Binary Compatibility Standard (iBCS), a standard ABI ensuring that applications compiled against the iBCS would run on any Unix system on an x86 processor, and SCO contributed a Linux implementation in ~1994. It seems that Intel was not at all convinced that Windows would stay the dominant OS, and they wanted to improve the chances of Unix by working with Unix vendors to make their OSs compatible with each other.

Plus, it was the time of the whole "new OS paradigm" hype with Workplace OS, Taligent, Rhapsody, and Cairo, where even Microsoft itself was working on a successor to Windows, IBM was working on a successor to OS/2, etc.

And even if we were to assume that Windows would "win", Microsoft had ensured that Windows NT was highly portable, even going so far as to use an architecture for the developer workstations and tests that they didn't even intend to publicly release a port for. Windows NT was running on x86, Alpha, MIPS, SPARC, and PowerPC, either ported by MS itself or by partners (e.g. the PowerPC port by IBM). Even Intel itself was developing the i860 (used in the Microsoft Dazzle workstations used to develop Windows NT) as a completely new CPU architecture that might be able to replace x86 on the workstation. ANDF was also started at the end of 1989, as an effort to make compiled programs independent of the CPU. (It inspired both the Java platform and LLVM, although in both cases more in a "lessons learned" sense and not in a "great idea" sense.)

In addition to that uncertainty about which CPU architecture and which OS would be the PC of the future, there were two disruptive technologies that not only meant that the choice wasn't obvious, but that made the whole choice of OS and CPU completely irrelevant: the WWW and Java. (Java had not been released yet by the time PCI came out, but it already existed and was already talked about. It was also in some sense inevitable.)

So, to put a long story short: designing a new bus that would not be CPU-independent would quite simply have been stupid, since even Intel itself was working on an at least partial replacement for at least some markets of the x86. And it needed to be a (reasonably) open standard because it needed to be supported by DOS, Windows, Windows NT, OS/2, BeOS, MacOS, SCO Unix, Novell UnixWare, 386BSD, Linux, and all the "new" OSs that were expected at the time, and it should be easy to write drivers without Intel's involvement.

Making PCI reasonably open was likely also a reaction to the failure of IBM's Micro Channel Architecture, which was mainly plagued by being proprietary and requiring expensive licenses from IBM. The proprietary nature and the licensing costs were two of the main driving factors in the creation of EISA.

Note that this is a trend that we see continuing today with Intel-involved standards such as USB (released only 4 years later) and Thunderbolt.

9

There are a few details with x86 inheritance in PCI :

  • Little Endian only. Big Endian CPUs (such as PowerPCs as default) had to adapt to that bus by using reversed endian instructions, or bus swap hardware in PCI controllers.
  • IO address space. Competing RISC CPUs (PowerPCs, ARM, SPARC...) didn't use IO ports (well in POWER it was obsoleted IIRC), only memory-mapped IOs. Many PCI peripherals (such as video or disk controllers, had settings which allowed to access to all registers through memory accesses instead of IO ports.
  • Wacky arcane options such as "VGA palette snoop" which was needed for compatibility with legacy PC ISA hardware.

So, I don't think Intel cared about enabling the use of PCI on non-x86 systems, it was adopted by Apple and others to benefit from the huge range of PCI peripheral chips for PCs, just like other standards like PS/2, VGA connector, IDE disks, or even USB.

It can be seen in many 90's era computers which became more PC-like to be cheaper : Apple Macintosh, Sun UltraSparc and IBM PowerPC workstations...

7

The answer to your question 1. is YES.

Their rationale was a simple and effective business strategy. An approach that sacrificed proprietary control in exchange for market penetration.

To illustrate that strategy:-

The oil industry presented the automobile manufacturers with a simple but effective common denominator, the petrol pump with its standardised hose and spout. The oil companies knew that there would be lots of competition in the fuel chain and that there would be no end to the number of automobile brands and models. So, they made sure that petrol was going to be the energy source that everyone would use for decades to come. They created the defacto delivery standard.

Intel knew that their competitors would not go away and so they provided the motherboard manufacturers with a defacto standard. One that would allow their chips to be installed on any motherboard.

It is notable that electric cars are being manufactured with highly customised battery packs. No opportunities for creating a defacto standard there. Pity that the oil companies didn't take control of the Lithium resources.

4
  • 1
    It's an interesting analogy, and intuitively it seems correct that Intel might have been thinking strategically. But is there any evidence? I haven't yet found any instance where Intel actively promoted or invested in making PCI attractive to competitors like IBM, Motorola, Apple, etc.
    – Brian H
    Commented Sep 12, 2020 at 14:12
  • The problem on the electric cars is not the battery packs. It is (just like the gas pumps) the charging connector. AIUI, Tesla made some (debatable how much) attempts to create a de facto industry standard and other companies didn't buy in. But in Europe there are standards (not created by Tesla, but used by Tesla). End result - in US Tesla cars can be charged "anywhere" but others only at the non-Tesla chargers. Definitely a work in progress - the story won't be finished for several years. Commented Sep 13, 2020 at 0:36
  • 1
    Before anyone made anything that ran on Petrol (Gasoline), it was a waste product of oil refineries. It wasn't designed at all. People simply found a use for it by building engines that could make use of it. It's a low grade fuel. Commented Sep 13, 2020 at 3:28
  • @candied_orange low grade? LOL no... It's got the highest energy density of any fuel that's liquid at STP.
    – RonJohn
    Commented Mar 18, 2023 at 16:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .