The ENIAC, or Electronic Numerical Integrator and Computer, is essentially the Great Great Grandfather of whatever device you’re currently reading these words on. Developed during World War II for what would be about $7 million USD today, it was designed to calculate artillery firing tables. Once word got out about its capabilities, it was also put to work on such heady tasks as assisting with John von Neumann’s research into the hydrogen bomb. The success of ENIAC lead directly into the development of EDVAC, which adopted some of the now standard computing concepts such as binary arithmetic and the idea of stored programs. The rest, as they say, is history.
But ENIAC wasn’t just hugely expensive and successful, it was also just plain huge. While it’s somewhat difficult for the modern mind to comprehend, ENIAC was approximately 100 feet long and weighed in at a whopping 27 tons. In its final configuration in 1956, it contained about 18,000 vacuum tubes, 7,000 diodes, 70,000 resistors, 10,000 capacitors, and 6,000 switches. All that hardware comes with a mighty thirst for power: the ENIAC could easily suck down 150 kW of electricity. At the time this all seemed perfectly reasonable for a machine that could perform 5,000 instructions per second, but today an Arduino would run circles around it.
This vast discrepancy between the power and size of modern hardware versus such primordial computers was on full display at the Vintage Computer Festival East, where Brian Stuart demonstrated his very impressive ENIAC emulator. Like any good vintage hardware emulator, his project not only accurately recreates the capabilities of the original hardware, but attempts to give the modern operator a taste of the unique experience of operating a machine that had its heyday when “computers” were still people with slide rules.
How Low Can You Go?
Given the monstrous rift between the computational power of the ENIAC versus something as pedestrian as the Raspberry Pi, it’s natural to wonder just how much abstraction is required to emulate the hardware. We occasionally talk about “cycle accurate” emulation when dealing with older hardware: which essentially means that the emulator can run software from the original machine without the software needing to be modified. The emulator is accurate insofar as the software running on it cares to look, but it does’t mean the underlying methods are the same. This lets an emulator run the older software while using modern tricks to help improve overall performance.
But with a computer as slow as the ENIAC, speed isn’t really a concern. We’ve got plenty of power to burn, so how accurate can you get? Originally, Brian thought it would be interesting to simulate ENIAC on the circuitry level. But given that part count, and the fact that the documentation really only has a rough explanation of the internal circuitry, he thought that might be a tall order. In the end, he decided to simulate the ENIAC down to the actual pulses that would travel though the machine while in operation. This level of emulation makes his software exceptionally accurate, and indeed it can run any example program from the original ENIAC technical manuals, but does mean that even on modern computers the simulation can run slower than on the actual ENIAC. But the increased fidelity, especially for those who wish to truly understand how early computers like this operated, is worth waiting around for.
The ENIAC Experience
It would have been easier to create a command line emulator for the ENIAC that just dumped its results to the terminal (and indeed others have done just that), but that wouldn’t give you the feeling of actually running a computer that was large enough to take up a building. For that, Brian created a number of visuals that use actual images of the ENIAC panels. This gives the user the impression of actually standing in front of the computer, watching the banks merrily blink away as it works through the given program.
While it’s not required to use the emulator, Brian even went as far as recreating the handheld control unit the ENIAC operators would have used. He mentions this peripheral is often overlooked, and in his research was only able to find a single clear shot of what the device looked like for him to base his 3D printed model on.
ENIAC: The Home Game
Brian has made the source code and compiled binaries for his ENIAC simulator available for anyone who wishes to try their hand at commanding a virtual representation of the original “Big Iron”. He’s even provided binaries for machines as lowly as the C.H.I.P (if you can find one, that is) so it doesn’t take much gear to get your own mini ENIAC up and running. You’ll have to provide your own hydrogen bomb to research, though.
If you’d like a crash course on the rather alien methods of programming the beast, our very own Al Williams recently wrote up a fantastic piece about the ENIAC, including some information on operating it within a virtual environment.