The Gamma 3 was an early electronic vacuum-tube computer. It was designed by Compagnie des Machines Bull in Paris, France and released in 1952.

Originally designed as an electronic accelerator for electromechanical tabulating machines, similar to the IBM 604, it was gradually enhanced with new features and evolved into a first-generation stored program computer (Gamma AET, 1955, then ET, 1957). In its stored-program configurations, the Gamma 3 mostly competed with the IBM 650.

Bull Gamma 3

Over the course of its ten-year availability, this machine facilitated the transition from electromechanical unit records equipment to computers. The Gamma 3 was a commercial success, eventually selling more than 1200 units and prompting IBM to release the 1401 as a competitor.

Bull Gamma 3

The Gamma 3 was succeeded by the lower-end Gamma 10, the mid-range Gamma 30, and the large, high-end Gamma 60 mainframe.

Bull Gamma 3

History

Until the 1950s, Compagnie des Machines Bull, like its rival IBM, primarily marketed punched card tabulators for inventory management, payroll, and accounting.

These tabulators performed arithmetic operations through a series of digit wheels driven by an electro-mechanical device. Only incrementation, and thus addition, was supported, making subtractions and multiplications particularly slow.

In order to increase the calculation speed and avoid delaying the reading of punched cards during more complex operations, an accelerator capable of overcoming electro-mechanical limitations became a necessity.

Starting in 1949, the Bull Company became interested in vacuum tubes for their switching speed compared to adding wheels and electromechanical relays. The computer was designed using logical circuits comprising around 400 vacuum tubes, 8000 germanium diodes and 48-bit registers made of electric delay lines to further reduce the dependency on vacuum tubes.

The machine has a clock speed of 281 kHz, higher than the 50 kHz of the IBM 604, and more importantly, several orders of magnitude faster than electromechanical devices. The execution time for adding two numbers was 680 µs, while multiplications took 5.7ms. The duration of instructions execution varied from 0.6 ms to 10 ms, with a mean time 2 ms. The Gamma 3 was connected to the tabulator through a cable plugged in place of its connection panel (where the program instructions were coded); thus, the program would now reside and run on the Gamma 3 computer rather than the tabulator.

Nevertheless, while the Gamma 3 was programmable through a removable connection panel similar to those of tabulators, it remained a peripheral device of the tabulator rather than the other way around. Furthermore, despite being electronic, binary, and having a Turing-complete instructions set, the Gamma 3 still lacked the ability to store programs in memory.

A first step towards a stored program configuration occurred with the Card Program (Programme Par Carte, PPC), introducing the capability to execute a program loaded from punched cards rather than hard wired onto a connection panel. IBM also experimented with a similar concept with the CPC (Card Programmed Calculator) extension added to the 604. However, while this would lift the limititation of 64 programming steps and allow arbitrary-sized programs to run, the programs were still not executed in main memory, so their execution speed depended on the reading speed of the punched cards containing the program.

The computer underwent a new upgrade in 1955 with the inclusion of a magnetic drum, adding 8192 words of memory, equivalent to 49 kB (64 tracks of 8 blocks of 16 words of 48 bits), a fairly generous amount for that time. Up to three instructions could be stored per word on the drum, allowing up to 25,000 instructions to fit. This new version was called Gamma 3 A.E.T (Armoire Extension Tambour, or Drum Extension Cabinet).

The programs were stored in the A.E.T.'s memory in groups of 48 instructions, referred to as "series". When needed, a series was moved from the drum to an intermediate memory group acting as an instruction cache, which allowed the computer to fetch each instruction one by one and transfer them into its instruction register. Interestingly, the instructions, particularly the addresses, could be altered within the computer's arithmetic unit, just like any other data. This capability paved the way for indirect or indexed addressing. The instruction cache also alleviated the issue found with the IBM 650, which required optimizing the arrangement of instructions on the drum to prevent its latency from slowing the program down.