34

My understanding is the CPU clock speed on the Intel 8088 in the IBM PC was selected as 4.77 MHz to simplify the design of the system. This despite the 8088 coming in two versions - 5 MHz and 8 MHz. Since later PC's routinely operated at higher clock speeds and typically up to the CPU's spec, I assume some cost savings was realized on the original PC.

What specific parts were able to be eliminated from the PC design by limiting the CPU clock rate? Can anyone approximate the cost savings by removing those parts?

6
  • 3
    If there had been a separate 15 MHz oscillator on the motherboard to run the CPU and associated peripherals at 5 MHz, the CGA card would need it's own 14.318 MHz colorburst oscillator. But it is not that simple, then the CGA card would have to have extra circuitry to be asynchronous. It may not be that huge cost though, as the MDA does run asynchronously at 16.257 MHz. Plus it may mean that faster speed grade memory is needed, or extra wait states on bus cycles, to get the required bus cycle length, and it would result in a slower system.
    – Justme
    Mar 11, 2020 at 21:08
  • 3
    @Justme: The CGA card does in fact run asynchronously, with a rather conservative (and slow) synchronization mechanism, but I don't know if that was the original intention.
    – supercat
    Mar 11, 2020 at 21:18
  • 1
    The PC design was made independent of any output standard. All video cards operate asynchronous to the main system.
    – Raffzahn
    Mar 11, 2020 at 21:30
  • 2
    So it's not the right answer, or especially relevant, but cf. seasip.info/VintagePC/cga.html as a source of the no-independent clock claim: "Unlike an MDA, the CGA card does not contain a clock crystal. Instead, the Oscillator signal on the ISA bus is used to generate timing. This is 14.318MHz (4 times the NTSC subcarrier frequency). On the original PC and XT, the same clock signal, divided by 3, gave the 4.77MHz CPU clock."
    – Tommy
    Mar 12, 2020 at 1:28
  • 1
    Too late to edit my previous comment, but in response to @supercat, the linked page also states "On a PC with a 5161 expansion unit, the CGA should be fitted in the main PC, not the expansion unit. This is probably because the 14.318MHz clock is not shared between the PC and the expansion unit; each has its own, and they may not be in sync." so I'm not sure it's completely asynchronous.
    – Tommy
    Mar 12, 2020 at 1:36

4 Answers 4

41

Worshipping at the altar of color clock

Back in that day, everything was built around the NTSC color clock frequency of 3.579545 MHz. Everything from the Atari VCS to the C64 made ample use of it, because some iteration of your product would inevitably need to talk to a commodity color NTSC display operating at that frequency.

This will come up; so FYI the way you divide by 3.5 is by starting with a crystal at 4x the color clock (14.31818) and dividing by 14.

  • The Atari VCS/2600 used 1.19 MHz -- color clock / 3 -- crystal / 12
  • The Atari 400/800 used 1.79 MHz -- color clock / 2 -- crystal / 8
  • Most of the rest used 1.022 MHz -- color clock / 3.5 -- crystal / 14

By "rest" I mean Apple II family, Commodore Pet, Vic, C64. Note that most of these systems actually overclocked the CPU. I can vouch that Apple did not use a 2 MHz version of the 6502 chip; they used the 1 MHz version.

The 8088 master clock operates at 4x RAM cycle speed

Mind you, all these systems above have one system clock per memory cycle. The Intel philosophy was quite different, with a fast master clock, but memory fetches only occurring at 1/4 of this speed.

So the IBM PC clock was chosen, still worshipping the color clock, at 4.77 MHz -- crystal / 3.

Wow, that sounds fantastic, right? IBM, big gorilla of the computer biz, comes out with a processor seemingly an order of magnitude faster than those clunky 1.02-1.79 MHz 6502 systems. Yeah, hold on. It has an 8-bit bus, and memory operations happened at 1/4 this frequency, at 1.19 MHz -- crystal / 12.

The IBM PC had the memory throughput of an Atari 2600.

That's not so awesome. Nor was it intended to be. IBM's market strategy was not to be "Amiga", outshining the competition in raw performance. Much the opposite, they wanted to avoid at all costs cannibalizing sales of their larger and much, much more expensive minicomputer line e.g. Series/1. The purpose of the IBM PC was to put I B M on a conservatively designed system -- and let IBM's unbelievable reputation and market power sell it. That can't be overstated - they had market dominance of (larger-than-Apple-II) computers like Google has dominance in search. My dad was an IBM salesman, and there was an adage universally known:

Nobody ever got fired for buying IBM.

Seriously. It was just like that. If your mainframe or minicomputer project went sideways for any of a variety of reasons, scuttlebutt is "this wouldn't have happened if you had bought IBM". (even if that had nothing to do with it). So the business desktop market was a vacuum, avoiding perfectly useful offerings by Tandy, Commodore and Apple, holding its breath for 3 magic letters.

All that to say, performance was not Job One.

Why would IBM give any care at all about color clock?

After all, it grew up as a business machine; many systems actually used the Monochrome Display Adapter (which had much higher resolution than NTSC); many monitors were RGBI for which color clocks did not matter, and IBM's dabble in the home market with the PCjr was a fiasco.

True, but nobody knew that, at the time.

IBM did not know what it would take for the PC to adopt. But they certainly knew the home computer market was proven. So they wanted to "keep their options open" for a side-step into the home market, where they MUST by necessity play nice with NTSC. Costs must be kept low in such a system - which means doing what everyone else does: sharing main RAM with the video card, which in turn requires memory and therefore CPU clock to be in syncopation with NTSC color clock.

As such, choosing 1.19 MHz memory clock was a conservative, safe choice; as made by the Atari VCS/2600.

The choice of 4.77 MHz instead of 5 MHz only cost 4.5% performance. You can argue that they could have architected the system for 4.77 MHz and then just used a faster crystal in the 5150 PC (planning to downsize the crystal to 4.77 in the future imaginary consumer PC). However, in that era, the prevailing view was if you change hardware, it breaks existing software, which as a rule were written to run on bare metal and software routines as-shipped. (think Apple's Sweet16 and FP routines, which were removed to fit AppleSoft BASIC). So they wouldn't want to risk it for 4.5% performance.

They did end up doing that "future imaginary consumer PC" and making use of those concepts, but far past the time of its relevance (technical or market). Maybe they were thinking "nobody ever got kicked out of bed for buying IBM".

7
  • Indeed. It's also amusing to note that the first computer I ever "had" was one of these: old-computers.com/museum/computer.asp?st=1&c=1147 . Without being able to see detail, I can tell you the crystal was 4.433618 MHz. From which, you can tell where I grew up. ;) BTW "had" in this context means shared with my father.
    – dgnuff
    Mar 13, 2020 at 0:02
  • In some ways, the thought of the PC designers actually being confused, and thus taking cues from the design of the Atari home computers, for example, feels like an "Occam's razor" type of likely scenario.
    – Brian H
    Mar 13, 2020 at 14:25
  • 1
    Wasn't it also due in part to the 315 ∕ 88 MHz crystal being dirt cheap compared to most every other frequency? I wonder how much of that was really IBM leaving an NTSC monitor option open, versus trying to build each unit as inexpensively as they could?
    – smitelli
    Mar 14, 2020 at 2:53
  • 3
    @smitelli If anything NTSC picked it because it was cheap :) IMO being a student of Wozniak, IBM didn't make even the slightest effort to cost optimize, and chose very chip-heavy, boilerplate designs, damn the cost. 30 chips on the floppy controller, to Apple's 8. Keep in mind IBM had simply staggering chip fab capabilities the PC division was not allowed to use, otherwise they could've followed Atari's lead and put the whole PC on like 5 chips. Mar 14, 2020 at 3:30
  • @dgnuff Yes, we can tell by your clock frequency that you probably grew up in the UK. Whatsmore, you had a higher vertical resolution and more stable colour than NTSC (Never Twice the Same Colour), namely PAL. Mind you, so do we (still) here in South Africa. Mar 14, 2020 at 21:33
29

For many kinds of parts, there's a substantial gap between specified maximum/minimum timings and typical timings. The 8088 specification requires that the clock be high for a minimum of 69 ns every cycle and low for a minimum of 118 ns. Dividing a 14.3818 Mhz clock by three yields a high time of 69.5 ns and a low time of 139.1 ns, satisfying both requirements for up to 20 ns of timing uncertainty on the divide circuit, provided that one ensures that it is biased toward lengthening its output.

If one were to divide a 15 Mhz clock by three while meeting specifications, the natural high time would be 66.7 ns, which would fall slightly short of the timing spec and the low time would be 133.3 ns, which would only tolerate about 15 ns of timing uncertainty. There are ways one can slightly stretch a signal, but using a 14.3818 Mhz signal that can tolerate anywhere from 0 to 20 ns of stretching is cleaner than using a design that would require stretching the signal by at least 2.5 ns but not more than 15 ns.

6
  • 2
    Are you claiming that a 5 MHz 8088 would not work correctly with a 15MHz crystal and Intel's 8284 clock generator IC?
    – Brian H
    Mar 12, 2020 at 12:53
  • 2
    @BrianH: I think it would have, but that would have required using the 8284 clock generator IC rather than a commodity divide-by-three circuitl.
    – supercat
    Mar 12, 2020 at 14:52
  • Ok. Am I mistaken in thinking the 8284 was used in the IBM PC?
    – Brian H
    Mar 12, 2020 at 14:58
  • @BrianH: I don't think it was,but it's entirely possible I'm mistaken. In any case, there may have been an intention to have video generated by a clock signal that was synchronous with the CPU speed, which would have improved video performance, but in practice the video circuitry was designed to assume there was no synchronous relationship, to the detriment of performance.
    – supercat
    Mar 12, 2020 at 15:06
  • 1
    FWIW it does look like the 8284 was used in the IBM PC.
    – dwizum
    Mar 12, 2020 at 19:14
19

Quartz used in colour TVs such as 3.579545MHz or 14.31818MHz used to be much cheaper than other frequencies.

It was important for home computers and game consoles (8/16 bits), which used the same quartz for video and the CPU, keeping everything synchronous.

It was far less siginificant for rather expensive computers such as IBM PC which didn't need to produce NTSC compatible video (although CGA was NTSC).

Edit : this post : http://dosmandrivel.blogspot.com/2009/03/ibm-pc-design-antics.html tells that the reason was to save a quartz for CGA.

4
  • IBM could have used an UART frequency : 14.7456MHz = 3.6864MHz * 4, which would have allowed RS/232 ports without additional quartz.
    – TEMLIB
    Mar 13, 2020 at 0:19
  • 4
    I have a faint recollection of looking at quartz crystal prices in the mid-80's, and indeed anything but NTSC crystals were priced as specialty products.
    – Jon Custer
    Mar 13, 2020 at 14:28
  • Did color televisions widely use 14.31818Mhz? The 3.579545Mhz chroma crystal would have been commonplace, but I can't think of any use that televisions would have had for 4xchroma. I would think 14.31818Mhz might be cheaper than 15.00Mhz, but I would think it would be the same price as small integer multiples of 4.00MHz or 3.6864Mhz (the latter being used for serial ports, and 3x3.6864Mhz being the most common 8051 speed).
    – supercat
    Mar 15, 2020 at 17:40
  • @JonCuster: My recollection is that 1xchroma crystals were dirt cheap. Many other frequencies were stock items one "price tier" up. A few crystals were essentially custom (I think the video chip for the CDP1802 was "supposed" to be used with a 3.5245Mhz crystal (about 1.53% slower than chroma), but I suspect most hobbyist projects simply used a 3.579545Mhz crystal and output video with scan rates that were a little faster than spec); I can't think of any "normal" uses for that rate other than the 1802's video chip, which strikes me as somewhat obscure.
    – supercat
    Mar 15, 2020 at 17:45
5

The earlier answers correctly say that IBM chose to divide the 14.3818 MHz NTSC color clock by 3. This decision had nothing to do with CGA graphics, however (whose TV output was asynchronous anyway). It was, in fact, carried over from an earlier, now almost-forgotten, IBM personal computer that came with its own built-in five-inch monochrome screen, and did not use NTSC color signals at all. The fact that one optional expansion card for the IBM PC later happened to allow optional NTSC color output was a coincidence. The bus had already been designed for a different system entirely.

It was in fact a holdover from the same engineers’ previous computer, the IBM System/23 Datamaster. They were released only a month apart, the System/23 is therefore almost forgotten, and the delays due to its ROM BASIC led IBM to contract out the BASIC for the PC to Microsoft instead. The 8-bit bus of the IBM PC (model 5150) was an update of the System/23 Datamaster’s bus, which was one reason IBM used the 8088 with its 8-bit bus rather than the 8086 with a 16-bit bus. As you can see on page 38 of the IBM 5322 Service Manual, the “IO Card Sockets” of the System/23 is very similar to the bus we today know as 8-bit ISA, except for some small differences in how the interrupt pins work between the Intel 8085 and 8088 CPUs. These machines were designed by many of the same people, the PC was something of a rush job immediately afterward, and both ran the same expansion bus at the same speed.

Instead of the custom chips that its predecessor, the IBM 5110, had used, the System/24 used the 8-bit Intel 8085 as its CPU along with several other Intel support chips that were later used in the IBM PC model 5150. The 5110 contained very similar display and peripherals, but it had used a custom 16-bit CPU called the Palm, and its oscillator ran at 15.1 MHz.. Its internal buses were also completely different. The System/23 might have switched to NTSC color clock oscillators, despite not using NTSC or color at all, as part of switching to cheaper off-the-shelf components.

You must log in to answer this question.

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