The following from Gödel, Escher, Bach caught my attention:
Unlike any previosuly designed machine, [Babbage’s Analytical Engine] was to possess both a “store” (memory) and a “mill” (calculating and decision-making unit). Babbage had a vision of numbers swirling in and out of the mill under control of a program contained in punched cards . . .
What is this if not the von Neumann architecture?
Allan Bromley’s paper on this subject makes the same connection:
The development of the multiplication algorithm played an important role in the history of the Analytical Engine because it led Babbage to the invention of the anticipating carry to speed the addition of the partial products. The complexity of the anticipating carry apparatus led him in turn to the clear separation of the functions of the mill and store, a concept that did not clearly emerge in modern computers until the work of von Neumann.
John von Neumann was a genius, but unless I’m overlooking something, it seems fairer to say that modern computers use the Babbagevon Neumann architecture.
Of course, you have to take the good with the bad, so maybe the Babbagevon Neumann bottleneck is, too, a more appropriate term.