‹ BackHN Continuity

Thread

The Legend of von Neumann (1973) [pdf]

311 points · 186 comments · suopspaces

  1. ricksunny · · focus · HN ↗
    Feels appropriate to mention here recent HN mentions about who deserves credit for 'von Neumann architecture"

    <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=49870485">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=49870485

    1. adrian_b · · focus · HN ↗
      The conclusion is that von Neumann deserves the credit for the &quot;von Neumann architecture&quot;, despite any contrary claims of Eckert or Mauchly.

      Herman Goldstine, who distributed the document and John von Neumann, who wrote it, are the reason for the explosive growth of the computer industry during the following decades.

      The paper written by von Neumann was an exemplary model of clarity and good logical thinking. Nothing ever written by Eckert or Mauchly was at a comparable level.

      Everyone who read that paper understood immediately how to design and build an electronic automatic computer, and a great number of teams in many countries all over the world did precisely this, so a decade later there already existed experimental electronic computers in many countries and also commercial electronic computers in the UK and in USA.

      Some of the details from the paper must have been learned by von Neumann from discussions with the ENIAC team, but others were obviously von Neumann&#x27;s own ideas, e.g. the use for the main memory of an iconoscope tube with fast random access, i.e. a DRAM like today, instead of the slow serial delay lines chosen by Eckert and Mauchly for their following computers.

      Whatever von Neumann has learned from the ENIAC team, he obviously understood better than the people who taught him, allowing him to formulate general principles for the organization of an automatic computer.

      The publication of the von Neumann paper allowed the concurrent development of many computers in many places, and each of those projects found various improvements that were essential in making the electronic computers successful commercial products.

      If Eckert and Mauchly had succeeded to block any competitors, then the evolution of computers might have been delayed by up to 2 decades, until any patents would have expired, because Eckert and Mauchly have never done later any significant innovations and they would have never succeeded to develop better computers at the pace that happened due to the von Neumann paper.

      Moreover, Eckert and Mauchly had a history themselves of failing to mention their sources of inspiration, so they were not the people entitled to complain about someone &quot;stealing&quot; ideas from them.

      Before ENIAC, the first electronic computer in USA was the Atanasoff-Berry computer. That computer was a special-purpose computer, designed for solving systems of linear algebraic equations. However, ENIAC was a special-purpose computer too, unlike the relay-based computers that were older than it, like the Harvard Mark I computer, as even its name implies (Numerical Integrator and Computer).

      ENIAC was conceived as a replacement for the older mechanical &quot;differential analyzers&quot;, which were used to solve ordinary differential equations, e.g. for computing artillery tables, so its architecture mimicked the architecture of the mechanical differential analyzers, and it was reconfigured for new problems in a similar manner with those, by rewiring.

      John Vincent Atanasoff had written in 1940 a very high-quality document about the design of his computer: “Computing Machine for the Solution of Large Systems of Linear Algebraic Equations”. It is unknown if anyone of the ENIAC team had read it, but it is known that one of them had visited the designers of the Atanasoff-Berry computer, inquiring about the electronic circuits used by them to implement arithmetic operations and data storage. Later, during the design of ENIAC and after that, they never mentioned any connection with the earlier electronic computer.

      1. Animats · · focus · HN ↗
        As I point out occasionally, the bottleneck in early computing was memory. There were no good memory devices for quite a while. IBM had electronic arithmetic in test before WWII, and that eventually emerged as the IBM 603 Electronic Multiplier (1946). That was the first mass-produced electronic calculation device. From IBM&#x27;s perspective, they needed something reliable enough to install at customer sites that would run without repair techs on site. IBM&#x27;s electromechanical machines already worked that well, and businesses could get work done. So there was a lot of work that had to be done on tubes, sockets, wiring, soldering, and packaging before they could ship.

        Eckert and Mauchley came from a background of trying to get compute done with modified IBM hardware. They were painfully familiar with the lack-of-memory problem. Everybody involved with that era of machinery was. (I&#x27;ve used IBM plugboard wired tabulators, like the one at the Computer Museum in Mountain View. My high school had one.) The ENIAC had a workaround for lack of memory, huge rolling cabinets of manually set rotary switches. If something better had been available, it would have been used. You have to appreciate how much early architecture was restricted by available components.

        The first real hardware breakthrough was acoustic delay-line memory. First mercury tanks, then long coils of steel wire. Once that was available, it was clear that was the place to put the program. But it took a while to make that work reliably. Then there was Williams tube electrostatic storage, and high speed drums, which got things going. Sort of. Memory cost was an issue well into the 1980s. In the early 1970s, a megabyte cost a million dollars. Cheap memory didn&#x27;t appear until the 1990s.

        The big lack in Von Neumann&#x27;s architecture was index registers. He was into storing into the address part of instructions. The Manchester Mark I had the first index register (the &quot;B box&quot;), at which point programs could be read-only and still be able to index arrays. That completed the basic CPU architecture.

        1. ricksunny · · focus · HN ↗
          &gt;The big lack in Von Neumann&#x27;s architecture was index registers. He was into storing into the address part of instructions. The Manchester Mark I had the first index register (the &quot;B box&quot;), at which point programs could be read-only and still be able to index arrays. That completed the basic CPU architecture.

          strikes me as gilding the lily (I earlier even imagined possibly even a claude-esque stock &#x27;one caveat&#x27; flourish, but I know you wouldn&#x27;t do that given your background). Addressable memory, where any given addressed memory register can contain not just conventional data to be operated on but can also contain an address of some other memory register to jump to. is what strikes me as the highly-enriched uranium of computer architecture. indexing an array is a feature bump by comparison.

          1. adrian_b · · focus · HN ↗
            The early computers that did not have index registers realized the equivalent of indexed addressing by modifying the address fields of the instructions before they were executed, e.g. during a loop.

            In the early computers with non-pipelined execution and without cache memories, and also without security concerns, modifying the executable program during execution did not have disadvantages.

            Nonetheless, pipelined execution became widely used and also cache memories appeared soon, and such performance-enhancing techniques could not work well with self-modifying programs, so index registers became absolutely necessary in fast CPUs.

          2. Animats · · focus · HN ↗
            Being able to store into the program was once considered much more important than it is now. Today we almost always load code, lock it read-only, and run it. Even JIT compilers don&#x27;t patch much. They mostly generate code into empty memory. (There are exceptions. I think PyPy patches existing when a Python program replaces an existing function while running. You can do this in Python, but probably shouldn&#x27;t.) Von Neumann considered self-modifying code important for somewhat philosophical reasons related to his self-replicating automata ideas.

            Previous pre-computer programmable machines, back to the Jacquard loom, stored programs in a completely different medium than the data. Plugboards, chains of Jacquard cards, cams, etc. Von Neumann insisted that programs were just data and belonged in the same memory as the data. This was a conceptual advance. The hardware had to get there to make it work.

            The next big innovation was the stack, in the modern sense. This came later than one might expect. Note that there are at least two types of stack computers. There are ones with a return point and context stack, which is the C view of the world. And there are ones where working storage is on the stack, like Forth machines and early Burroughs machines. The first kind seems to have been invented for ALGOL in 1957, because ALGOL allowed recursion. Stacks made a lot of people nervous back then, because how much memory to allocate for the stack was unclear, and there wasn&#x27;t much memory. FORTRAN disallowed recursion and thus did not need stacks and stack frames.

            So storing into the program hung on in some architectures. UNIVAC 1107 and later mainframes had a Store Location Jump (SLJ) instruction. This stored the return address into the beginning of a subroutine. Not into a stack frame; there was no stack by default. Into the first word of the subroutine&#x27;s code. For non-recursive non-concurrent code, it worked.[1] But it was used less over time, with different constructs used instead.

            Program in the same memory as data, yes. Program can create more program, yes. Program modifies itself while running, not so good. Index registers eliminate most needs for the third case.

            [1] <a href="https:&#x2F;&#x2F;www.fourmilab.ch&#x2F;documents&#x2F;univac&#x2F;instructions.html" rel="nofollow">https:&#x2F;&#x2F;www.fourmilab.ch&#x2F;documents&#x2F;univac&#x2F;instructions.html

Open on Hacker News to reply ↗

Unofficial Hacker News client; not affiliated with Y Combinator.