CDC_6600
CDC_6600

== Peripherieprozessoren (Eigenschaften) ==
Die CPU hatte dabei nur einen eingeschränkten Befehlssatz aus einfachen Instruktionen: Während typische CPUs der Ära über einen komplexen Befehlssatz verfügten, der auch Anweisungen für alle normalen „Housekeeping“-Aufgaben wie Speicherzugriff und Ein-/Ausgabe umfasste, implementierte Cray diese Befehle bei der 6600 stattdessen in separaten, einfacheren „Peripherieprozessoren“ (PPs), die ausschließlich für solche Aufgaben vorgesehen waren. Dadurch kam die CPU mit einem viel kleineren Befehlssatz aus. Dies war die erste Implementation dessen, was später als Reduced Instruction Set Computer (RISC) bezeichnet wurde.
Durch den parallelen Betrieb von CPU, Peripherieprozessoren (PPs) und E/A wurde die Leistung der Maschine erheblich gesteigert. Normalerweise hätte eine Maschine mit mehreren Prozessoren auch viel mehr gekostet. Der Schlüssel zum Design der 6600 bestand darin, die PPs so einfach wie möglich zu gestalten. Sie basierten auf der einfachen 12-Bit-CDC 160-A, die viel langsamer als die CPU lief, Daten sammelte und über dedizierte Hardware mit hoher Geschwindigkeit als Bursts in den Hauptspeicher übertrug.
Die 10 PPs wurden virtuell implementiert; nur einen Prozessor gab es als Hardware. Dieser arbeitete mit 10 PP-Registersätzen zusammen, die die 10 PP-Instanzen repräsentierten (ähnlich modernen Multithreading-Prozessoren) und als ''barrel'' (Fass) bezeichnet wurden. Bildlich gesprochen, „drehte“ sich das ''barrel'' schrittweise, wobei umlaufend jeder PP-Registersatz über einen ''slot'' der PP-CPU zugeordnet wurde. Die CPU führte den Befehl des jeweiligen PP ganz oder teilweise aus, woraufhin sich das ''barrel'' wieder „drehte“ und der CPU den Registersatz (Zustand) des nächsten PP zuordnete. Es waren mehrere „Umdrehungen“ des ''barrel'' erforderlich, um eine Anweisung abzuarbeiten. Eine vollständige ''barrel''-„Drehung“ dauerte 1000 Nanosekunden (100 Nanosekunden pro PP), und eine Anweisung benötigte eine bis fünf „Umdrehungen“, oder noch mehr im Fall eines Datenübertragungsbefehls.