|Manufacturer:||Control Data Corporation|
|Year Announced:||September, 1964|
|Year First Shipped:||1965|
|Word Size:||60 bits|
|Clock Speed:||10 MHz|
|Memory Size:||128K words (max)|
|Memory Speed:||1 µsecond (cycle time)|
|Physical Address Size:||17 bits|
|Memory Management:||base and bounds|
|Operating System:||SCOPE, KRONOS|
The CDC 6600 was an influential early (1964) mainframe computer. It is generally considered the first supercomputer, three times faster than the IBM 7030 Stretch, the previous 'fastest computer' record-holder; the 6600 held the title from 1965 to 1969.
It was also the first computer to use a superscalar internal architecture (although the term 'superscalar' did not exist at that time). The functional units were not pipelined internally, a refinement that was introduced with the 6600's successor, the CDC 7600.
In addition to the main memory, the 6600 was later upgraded with an 'Extended Core Storage' unit, with a cycle time of 3.2 µseconds, holding up to 2 megawords. This was intended to smooth out the large performance gap in the storage hierarchy between main memory and disk.
The 6600 was built using then-new silicon transistors, and the physical arrangement was designed to minimize conductor lengths, to minimize 'speed of light' delays. All the longer wires in the system were transmission lines, for more reliable operation.
It had ten independent 'functional units' in the CPU:
- long integer add
- floating point add
- floating point multiply (two)
- floating point divide
- incrementers (two; also performed memory operations)
Each instruction was routed to the appropriate functional unit, which, if idle, could begin executing right away. (For the duplexed functional units, assignment alternated to an idle unit.)
The CPU had to detect all conflicts between two instructions which it was attempting to execute simultanously; this was done in hardware by the 'Unit and Register Reservation Control' (usually called the 'Scoreboard').
It detected and dealt with three kinds of conflicts:
- First Order Conflict: a conflict which requires the use of the same functional unit (for the ones which were not duplexed), or output register - these were dealt with by stalling instruction processing.
- Second Order Conflict: a conflict where one operand of an instruction is the output of a previous instruction, which has not yet completed - these were dealt with by not letting the given functional unit start its processing until its input was available.
- Third Order Conflict: one where an instruction will use as an output register one which is an input to a previous, but as-yet un-started instruction - these are handled by holding the result in the functional unit until it can safely be stored.
- Jim E. Thornton, Design of A Computer: The Control Data 6600, Scott, Foresman, Glenview, 1970