15

The MIX was a computer design that Donald Knuth used to illustrate computer instruction sets in his magnum opus The Art of Computer Programming.

MIX's model number is 1009, which was derived by combining the model numbers and names of several contemporaneous, commercial machines deemed significant by the author. Also, "MIX" read as a Roman numeral is 1009.

https://en.wikipedia.org/wiki/MIX

Exactly which computer models were used to come up with the MIX name?

10
  • 4
    There were so many models of IBM machines, that it would not surprise me that he could arbitrarily pick one to help get to the magic number.
    – DrSheldon
    Feb 25 at 19:01
  • 4
    This is trivially answered by reading the book. See section 1.3.1. Downvoted because of lack of research.
    – alephzero
    Feb 25 at 20:17
  • 10
    @alephzero: Since when does "lack of research" on SE mean purchasing a book?
    – DrSheldon
    Feb 25 at 22:46
  • 3
    @DrSheldon Most have it anyway, but you're right, it's not necessary to buy it, or look it up in your local library. By entering "mix knuth 1009" in Google gives me as third entry a page listing the 'formula'. Right after English and German Wiki entries.
    – Raffzahn
    Feb 26 at 0:15
  • 4
    @alephzero I don't think that reading TAoCP can be fairly called a "trivial answer". I have read it and it made getting through Tolkien's LotR and Asimov's Foundation trilogy seem like trivial things. Worse, even though I have read it, I do not remember the answer to this particular question. (granted, it was over 30 years ago) Feb 26 at 17:28
28

Section 1.3.1 of The Art of Computer Programming says the following:

MIX is the world's first polyunsaturated computer. Like most machines, it has an identifying number—the 1009. This number was found by taking 16 actual computers very similar to MIX and on which MIX could easily simulated, then averaging their numbers with equal weight:

⌊(360+650+709+7070+U3+SS80+1107+1604+G20+B220+S2000+920+601+H800+PDP-4+II)/16⌋ = 1009.

The same number may also be obtained in a simpler way by taking Roman numerals.

The computers attached to the numbers are as follows:

  • IBM System/360
  • IBM 650
  • IBM 709
  • IBM 7070
  • Univac SS80
  • Univac 1107
  • Control Data 1604
  • Bendix G-20
  • Burroughs B220
  • Philco S-2000
  • SDS 920
  • Minivac 601
  • Honeywell H800
  • DEC PDP-4

But “U3” and “II” are elusive. The former might be the Univac III, and the latter could be the Illiac II.

14
  • 1
    U3 might be Univac III, the last machine in the classic Univac series. (U1/U2/U3)
    – Raffzahn
    Feb 25 at 20:48
  • 1
    I always supposed the "II" to be a Univac II, which as far as I know always had a roman-numerals name. But then what's a "U3" -- the Univac III was likewise roman. Feb 25 at 22:38
  • 1
    I can't get the arithmetic to come out right. If I ignore all letters, and take the "II" as 2, then the total is 16150, which averages to 1009.375. That's an excess of 6 modulo 16. Feb 25 at 22:50
  • 4
    @another-dave I am to blame for that, since I introduced the error in my edit. Also, you might be missing the "floor brackets" around the average; the floor of 1009.375 is 1009.
    – texdr.aft
    Feb 25 at 22:57
  • 5
    @texdr.aft Ah, yes... I had misread them as plain old brackets. Then I think Knuth cheated. Feb 25 at 23:05
10

Although on page 124 / Section 1.3.1 of Volume 1 of TAOCP, Knuth only gives the numbers (360+650+…), recall that his indexing is exhaustive. Accordingly, searching for page 124 in the index (easier with the PDF edition) gives all 16 computers whose model numbers are averaged. In alphabetical order, these index entries are:

Bendix G20, Burroughs B220, CDC 1604 computer, Honeywell H800, IBM 650 computer, IBM 709 computer, IBM 7070 computer, PDP-4 computer, Philco S2000 computer, RCA 601 computer (different from the Minivac 601 mentioned in the other answer), Recomp II computer, System/360 computers, UNIVAC III computer, UNIVAC SS80 computer, UNIVAC 1107 computer, XDS 920 computer.


That's the answer, but a few other remarks tangentially, some probably well-known to regulars at this site:

  • When TAOCP was conceived of in 1962, there was really a need for such a "mix" of computers to teach with, as there was a wide variety in computer architectures at the time, and programming directly for a machine was often what programmers did. For instance, many computers (including several in the above list) were decimal (rather than binary) computers. You can see this in the text just before section 1.3.1, and note how it differs between the first edition of 1968 and the current (third) edition of 1997 (bolding added by me, to highlight some of the diffs):

    There should be no hesitation about learning a new machine language; indeed, the author has found it not uncommon to be writing programs in a half dozen different machine languages during the same week! Everyone with more than a casual interest in computers will probably get to know several different machine languages in the course of his lifetime. MIX has been specially designed to be so much like most existing machine languages that its characteristics are easy to assimilate.

    versus

    There should be no hesitation about learning a machine language; indeed, the author once found it not uncommon to be writing programs in a half dozen different machine languages during the same week! Everyone with more than a casual interest in computers will probably get to know at least one machine language sooner or later. MIX has been specially designed to preserve the simplest aspects of historic computers, so that its characteristics are easy to assimilate.

  • Several of the computers in the above list were of personal relevance to Knuth:

    • The IBM 650 was the first computer he encountered, and the TAOCP series of books is dedicated to the IBM 650. ("This series of books is affectionately dedicated to the Type 650 computer once installed at Case Institute of Technology, in remembrance of many pleasant evenings.") He also wrote a beautiful tribute to the IBM 650 ("The IBM 650: An Appreciation from the Field").

    • The Burroughs 220 is mentioned in the above tribute. ("Then I graduated, and began to tackle other machines. My favorite computer for the next five years became the Burroughs 220, which was another joy to use.") He wrote an Algol 58 compiler for the related Burroughs 205 machine (see "The Summer Of 1960 (Time Spent with don knuth)"), and was for a few years a consultant for Burroughs in Pasadena. (While he was a graduate student at Caltech, also in Pasadena.)

    • The Univac Solid State (SS80 above) was the third computer he wrote a compiler for, this time a Fortran compiler. From the Computer History Museum archive of several Knuth papers, see several documents that mention "Univac Solid State", e.g. this one. (See also this.)

  • One can guess from typical Knuth sense of humour that probably the name "MIX" was chosen as it was simply a "mix" of several machine languages, and then he noticed that "MIX" is also 1009 in Roman numerals, and made a joke out of it by choosing several computers whose model numbers averaged come out to 1009. (Rather than starting with 16 computers and averaging their numbers, and the rounded-down result in Roman numerals coincidentally being an appropriate word.) You shouldn't take this averaging too seriously, as the "origin story". He plays a similar trick elsewhere: although he once wrote, about his choice of "WEB" for his literate programming system, that

    I chose the name WEB partly because it was one of the few three-letter words of English that hadn't already been applied to computers.

    (he was the original WEB developer!), he says in the WEB manual that it is named after his mother-in-law (whose initials coincidentally happen to be WEB).

  • For his new computer "MMIX", he carries out a similar exercise in "Volume 1, Fascicle 1: MMIX", and also mentioned in some talk the effort it took to retain the joke by finding computers averaging to 2009, this time without rounding:

    (Cray I + IBM 801 + RISC II + Clipper C300 + AMD 29K + Motorola 88K + IBM 601 + Intel i960 + Alpha 21164 + POWER 2 + MIPS R4000 + Hitachi SuperH4 + StrongARM 110 + Sparc 64)/14 = 28126/14 = 2009.

4
  • I was wondering if you were going to answer this question! I thought about checking the index, but didn't. Great answer.
    – texdr.aft
    Mar 1 at 19:43
  • 1
    @texdr.aft Thanks. Here's another tangentially relevant super-obscure thing I wanted to mention but forgot (and maybe it's not so interesting anyway). Among the online items of "Knuth (Donald E.) Papers" at Stanford, there's Lectures on Software Design, which seems to be a course he gave in 1964 to hardware people at Burroughs. Haven't read it, but noticed that it uses an "imaginary" computer called B2000j, where j=√-1. So already there's the idea of imaginary machines to teach with. Mar 4 at 22:47
  • Yes that is interesting, and probably worth further investigation. I also note that all of the Mathematical Writing lecture videos are there (including the guest speakers, which were missing from existing uploads as far as I remember), and that the archive contains some enticing early versions of TeX (not available online, alas).
    – texdr.aft
    Mar 8 at 19:25
  • 2
    Answering this got me a check from Knuth for 32 cents (the reward for one "suggestion"), for pointing out that while 13 of the index entries above contained "computer", three didn't. (His reply—a couple of annotations in pencil over a printout of my email—pointed out that the index also contains "Burroughs B5000 [computer]", and "Sun SPARCstation" which is also a computer but he's not going to change that one.) (This reply tells me he must have read through the entire index, which makes me feel bad for wasting his time!) May 29 at 8:47

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.