Seymour Cray (1925–1996) is a USA engineer and supercomputer architect who designed a series of computers, that were the fastest in the world for decades. Sometimes recognized as the father of supercomputing, Cray has been credited with creating the supercomputer industry.
The CDC 6600 was a large-scale, solid-state, general-purpose computing system. It had a distributed architecture (central scientific processor supported by ten very fast peripheral machines) and was a reduced instruction set (RISC) machine many years before such a term was invented. CDC 6600, announced in 1964, was quite expensive for the time (base model price $6891300) and was the first computer designed in the new Chippewa Falls laboratory, in the hometown of Cray.
In 1975 the 80 MHz Cray-1 was announced, while the first box machine delivered in 1976. Its theoretical performance was 160 MIPS (80 MHz x 2 instructions per cycle), although there were a few limitations that made floating point performance generally about 136 MFLOPS. Surprisingly, excitement was so high that something like a bidding war for the first system broke out between Lawrence Livermore National Laboratory and Los Alamos National Laboratory, the latter eventually winning and receiving serial number 1 in 1976 for a six-month trial. Cray-1 with the serial number 3 went to the National Center for Atmospheric Research in 1977 (machine was decommissioned in 1989), paying US$8.9 million ($7.9 million plus $1 million for the disks).
Georgi Dalakov, “The Cray computers of Seymour Cray.”
I never did get to work on a Cray-1 or even a CDC 6600. My first job as a systems programmer was on a CDC 6400, the 6600’s baby brother. The operating system was nothing special, really. But the hardware! Three sets of registers: 8 18-bit address registers (A0-A7), 8 18-bit index registers (B0-B7), and 8 60-bit math registers (X0-X7).
Most instructions were 15 or 30 bits, and these were packed into 60-bit words. When writing assembly code in COMPASS, paying attention to instruction order and packing was essential to efficiency. If you used a 30-bit instruction when there were only 15-bits left, a NOP (no operation) instruction would be inserted which would waste that potential execution cycle.
As an ingenious workaround to this, register B0 was conventionally always set to zero, and similarly register B1 was always set to one. Using these registers would produce a 15-bit instruction, while the same comparison or calculation written using a literal 0 or 1 (written in octal as 0B and 1B) would produce a 30-bit instruction.
After writing code using B0 and B1 throughout, one would simply judiciously change some occurrences to 0B and 1B respectively to fill up under-packed words and reduce the number of NOPs. However, if one changed the contents of either register, most library routines would fail or, worse, give incorrect results.