A CDC 6600 egy nagyszámítógép, a világ első szuperszámítógépe, amelyet a Control Data Corporation gyártott 1964-től 1977-ig. 1965-ben a svájci Genf melletti CERN laboratóriumba szállítottak egy CDC 6600-ast, ahol a CERN kísérleteiben termelt évi 2,3 millió buborékkamra-felvételt elemezték rajta. 1966-ban egy másik CDC 6600-ast szállítottak a Lawrence Sugárzási Laboratóriumba Berkeleybe, amely ekkor a Kaliforniai Egyetem része volt, ahol az Alvarez buborékkamrában végbemenő nukleáris események fotóit elemezték vele. Úgy tartják, hogy a CDC 6600 volt az első sikeres szuperszámítógép, melynek teljesítménye közel háromszorosa volt elődjének, az IBM 7030 Stretch modellnek. Körülbelül 1 megaFLOPS teljesítményével a CDC 6600 volt a világ leggyorsabb számítógépe 1964-től 1969-ig, mikor ezt a helyet át kellett adnia utódjának, a CDC 7600-nak.
A CDC 6600 volt a Control Data Corporation 6000-es sorozatú számítógéprendszereinek zászlóshajója, ez a sorozat négy alapmodellt foglalt magába, a CDC 6400, a CDC 6500, a CDC 6600 és a CDC 6700 modelleket. A 6000-es sorozat modelljei csak a beléjük épített CPU-kialakításokban különböztek, ami kétfajta lehetett: a 6400-as CPU és a 6600-as CPU. A 6400-as CPU egyesített aritmetikai egységgel rendelkezett, nem pedig különálló végrehajtó egységekkel, avagy „funkcionális egységekkel” – ezáltal az utasítások végrehajtásában nem lehet átfedés. Például, ha a 6400 CPU-nál valamely programban egy szorzó utasítás után egy összeadás utasítás következik, az összeadás nem kezdődhet el, amíg a szorzás be nem fejeződik, így az utasítások végrehajtási idejének összege adja ki a két utasítás teljes végrehajtási idejét. A 6600 CPU-nak több funkcionális egysége van, melyek egyidejűleg képesek működni (ez a párhuzamosság egy formája), ami valamelyest lehetővé teszi a CPU-ban az utasítások átlapolását. Például, a 6600 CPU elkezdheti egy összeadás utasítás végrehajtását közvetlenül egy szorzás utasítás megkezdését követő CPU-órajelciklusban (feltételezve persze, hogy a szorzás utasítás eredménye nem operandusa az összeadás utasításnak), tehát a két utasítás összesített végrehajtási ideje egyszerűen a szorzás utasítás (hosszabb) végrehajtási idejével lesz egyenlő. A 6600-as CPU-nak emellett van egy utasítás-verme is, ami egy utasítás-gyorsítótárhoz hasonló szerepet tölt be; ez növeli a CPU adatátviteli sebességét, mivel csökkenti a CPU tétlen várakozási idejét, amikor a processzor a lassabb memória válaszára vár az utasításbehívási kérelmek kiadásakor. A két processzortípus egymással utasítás-kompatibilis, tehát a programok változtatás nélkül egyformán futnak mindkét processzoron, csak a 6600-as CPU-n gyorsabban. Valóban, a 6000-es sorozat minden modellje teljesen kompatibilis volt egymással. A CDC 6400-ban egy 6400-as CPU, a CDC 6500-ban két 6400-as CPU, a CDC 6600-ban egy 6600-as CPU, és a CDC 6700-ban két CPU – egy 6600-as és egy 6400-as CPU van beépítve.
A CDC 7600 a kezdeti elképzelések szerint szintén teljesen kompatibilis lett volna a meglévő 6000-es sorozatú gépekkel – ez lett volna a soron következő CDC 6800 jelű modell –, ám a tervezés során a tervezők úgy találták, hogy a teljes kompatibilitás fenntartása (a meglévő 6000-es sorozatú gépekkel) korlátozta volna az elérhető teljesítménynövekedést, és úgy döntöttek, hogy a teljesítmény érdekében feláldozzák a kompatibilitást. Míg a CDC 7600-as CPU-ja alapvetően utasítás-kompatibilis a 6400-as és 6600-as processzorokkal, ami lehetővé teszi a kód könnyű hordozhatóságát a magas szintű nyelvek forráskódja szintjén, a CDC 7600-as hardvere, különösen a perifériaprocesszor-egységek (Peripheral Processor Units, PPU) felépítése nagyon különbözött az elődjétől, és emiatt pl. a CDC 7600-nak eltérő operációs rendszerre volt szüksége. Ez végső soron egy szerencsés megoldásnak bizonyult, mert lehetővé tette a tervezőknek a 6000-es sorozat terveinek továbbfejlesztését, például kiküszöbölve a kialakításban a perifériaprocesszoroktól (PP) való teljes függőséget, különösen a 0-s számú PP0 egységtől, amely a teljes számítógéprendszer működését vezérelte, magát a CPU-t is beleértve. A 6600-as CPU-val ellentétben a CDC 7600-as processzora önmaga vezérelte saját működését. Ezt az elvet visszaportolták a 6000-es sorozat modelljeibe is.
Egy CDC 6600-as a kaliforniai Mountain View-beli Computer History Museum (Számítógéptörténeti Múzeum) gyűjteményében látható.
Története és hatásai
A CDC első termékei az Engineering Research Associates (ERA) cég által tervezett gépek továbbfejlesztései voltak, és ezzel a feladattal éppen Seymour Crayt bízták meg, amint a CDC-hez került. Egy Little Character néven ismert kísérleti gép megépítése után elkészült a CDC 1604 jelű modell, mely az egyik első kereskedelmi tranzisztoros számítógép volt és az akkoriban kapható leggyorsabb gépek egyike. A cégvezetőség ennek nagyon örvendett, és rögtön egy újabb, sokkal inkább üzletorientált gépsorozat terveit kezdte felvázolni; ezek például karakterkezelő és adattárolási (adatrekord-kezelő) utasításokat is tartalmaztak volna. Cray-t nem érdekelték ezek a projektek, és nekifogott egy új, az 1604-esnél ötvenszer gyorsabb gép tervezésének. Mikor megkérték, hogy vázolja fel az elkövetkező egy és öt évre vonatkozó terveit, a válaszában „a világ legnagyobb számítógépének megépítése” szerepelt, ahol a „legnagyobb” helyébe a „leggyorsabb” értendő, és egyéves terve pedig nem volt más, mint „az út egyötöde”.
Fejlesztőcsapatával az eredeti CDC központ közelében létesült új irodákban az 1604-esben alkalmazott „olcsó” tranzisztorok jobb minőségű változataival kezdtek kísérletezni. A kísérletek során kiderült, hogy germánium-alapú tranzisztorokkal egyszerűen lehetetlen meghaladni az 1604-esben elért sebességet. A vezetőség által igényelt „üzleti gép”, mely ekkor a CDC 3000 sorozatot alkotta, elérte a lehetőségek határát. Cray ekkor a még újdonságnak számító, Fairchild Semiconductor gyártmányú szilíciumalapú tranzisztorok felhasználása mellett döntött – ezek éppen akkor kerültek piacra és drámaian megnövelt kapcsolási teljesítményt kínáltak.
Ezalatt a CDC egy induló cégből nagyvállalattá nőtte ki magát, és Cray-t egyre inkább hátráltatni kezdték a vezetőség szerinte nevetséges követelései. A feszültség egyre nagyobb lett 1962-ben, mikor az új CDC 3600 modell a gyártáshoz közeli állapotba jutott, és ráadásul mindenben pontosan megfelelt a vezetőség igényeinek és az elvárt határidőknek. Cray végül közölte a CDC igazgatójával, William Norrissal, hogy valaminek változnia kell, mert különben elmegy a cégtől. Norris érezte, hogy Cray túl értékes ahhoz, hogy elveszítsék, így engedélyt adott egy új labor felállítására, tetszőleges helyen, ahol Cray éppen jónak látja.
Rövid keresés után Cray visszatért szülővárosába, a wyomingi Chippewa Fallsba, ahol telket vásárolt és elkezdte az új labor felállítását. Bár ez a folyamat meglehetősen hosszú késlekedést okozott az új gép tervezésében, az új laborban, a vezetőség beavatkozásától mentesen a dolgok felgyorsultak. Ekkorra az új tranzisztorok elég megbízhatóvá váltak, és a velük épített modulok hajlamosak voltak már az első próbálkozásra megfelelően működni. A gép lassan alakot öltött, Jim Thornton közreműködésével, aki a rendszer konstruktőre és a 6600 mögött álló „rejtett géniusz” volt.
A CDC 6600 1964-ben jelent meg, ára 7 millió dollár volt. 100 nanoszekundumos órajelével (ez 10 MHz-es órajelet jelent) ez volt az első kereskedelemben kapható szuperszámítógépnek hirdetett gép, az első freon-hűtésű és az első katódsugárcsöves (CRT) konzollal rendelkező számítógép. A gép ellenőrző mérnökei alkották a Lunar Lander és a Spacewar játékokat, melyek nagy valószínűséggel az első monitoron játszható számítógépes játékok. Több mint 100 CDC 6600 gépet adtak el a gép életciklusa alatt. Az első gépet az Egyesült Államok Nemzeti Atmoszférakutató Központjában állították föl (U.S. National Center for Atmospheric Research, NCAR) a coloradói Boulderben, 1965-ben. Az állítólagos nulladik példányt az NSA kapta, ahol kódfejtésre használták. Több példányt nukleáris fegyverkutató laboratóriumokban használtak és néhány példányt különböző egyetemeken. A gép 1977-ig volt forgalomban, amikor felváltotta a CDC 7600 és a CDC Cyber sorozat.
Cray azonnal a következő modellre koncentrált, ez alkalommal a 6600-hez képest tízszeres gyorsítást kívánt elérni a következő, CDC 7600 jelű modellben. A későbbi CDC Cyber 70 és 170 számítógépek általános kialakításukban igen hasonlóak a CDC 6600-hoz és majdnem teljesen kompatibilisek azzal. Leírás A kor tipikus gépei egyetlen CPU-t használtak az egész rendszer meghajtására. Ezekben egy tipikus program először betölti az adatokat a memóriába (gyakran előre elkészített könyvtári kód használatával), feldolgozza, majd ezután visszaírja. Ez megkövetelte a CPU megfelelő komplexitását, illetve a megfelelően nagy utasításkészletet ezekre a feladatokra. A komplexitás egyben a CPU nagy méretével járt együtt, és a processzort alkotó egyedi modulok közötti adatáramlás vezérlésekor jelentkező jelkésleltetésekkel. Ezek a késleltetések határozzák meg a teljesítmény felső határát, a gép csak legfeljebb olyan órajel-sebességen működhet, amely lehetővé teszi, hogy a jelek a megszabott átviteli idő alatt elérjenek a következő modulba.
Cray egy másik megközelítést választott. Ekkoriban a CPU-k általában alacsonyabb sebességen működtek, mint a hozzájuk kapcsolt operatív memória. Például egy ilyen processzor két szám összeszorzását 15 órajelciklus alatt végzi el, míg a memória-hozzáférések csak egy vagy két ciklust igényelnek. Ebből következik, hogy a fő memória a végrehajtási idő jelentős részében tétlen, nem történik vele semmi. Ezt a tétlen időt használta ki a 6600.
A 6600 CPU-k csak az aritmetikai és logikai műveleteket végeznek, nem pedig az összes műveletet. Ennek eredménye az, hogy a processzor sokkal kisebb és magasabb órajelen működhet. A szilíciumtranzisztorok nagyobb kapcsolási sebességével egyesítve az új CPU kialakítás könnyedén lekörözött minden abban az időben létező más megoldást. Az új kialakítás 10 MHz-en működött (órajelciklusa 100 ns), közel tízszer gyorsabban, mint a többi gép a piacon. A magasabb órajelen kívül az egyszerű processzor az utasításokat kevesebb órajelciklus alatt hajtotta végre, például a szorzást tíz ciklus alatt.
A kor tipikus processzorai összetett utasításkészletű gépek voltak, melyek utasításkészletében megtalálhatóak az összes olyan „háztartási” feladatokra szolgáló utasítások is, mint a memóriahozzáférés vagy a be-/kimenet. Cray ezeket a műveleteket különálló, egyszerűbb dedikált processzorokra bízta, így a fő CPU utasításkészlete sokkal kisebb lehetett. (Ez volt az első, később RISC-nek nevezett kialakítás – a RISC kifejezést csak az 1980-as évek elején alkották meg.) Ebben a kialakításban a CPU, a perifériaprocesszorok (PP-k) és a be-/kimenet párhuzamosan működik, ami jelentősen megnöveli az ilyen architektúrájú gép teljesítményét. Átlagos esetben egy többprocesszoros gép ára is magasabb. A 6600 kialakításának kulcseleme, hogy a perifériaprocesszorként (PP) ismert processzorok szerkezete a lehető legegyszerűbb legyen. A PP-k az egyszerű 12 bites CDC 160-A processzoron alapulnak, ezek a CPU-nál lassabban működnek, begyűjtik az adatokat és egy dedikált hardveren keresztül nagy sebességgel a memóriába írják.