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,[1] 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.[2] Úgy tartják, hogy a CDC 6600 volt az első sikeres szuperszámítógép, amelynek 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[3] 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.

CDC 6600-as számítógép. A kezelőpult mögött látható a pluszjel alakú gépszekrény két ága, leszerelt borítással. Belül láthatóak az egyedi modulok. A modulokat hordozó keretek zsanérokkal vannak fölszerelve, hogy a mögöttük lévőkhöz is hozzá lehessen férni. A gép minden karjában legfeljebb négy ilyen keret lehet. Jobb oldalon a hűtőrendszer látható
A CDC 6600-as rendszer kezelőpultja. A rendszer monitorait szoftver vezérli, elsősorban szöveges megjelenítés történik, három választható méretben. Egyszerű grafikák is megjeleníthetők. A modern monitorokkal ellentétben ez a konzol egy vektorgrafikus megjelenítő-rendszer, nem raszteres. A vonalak a kezdő- és végpontjukkal vannak meghatározva. A konzol egyszerű vektoros karakterkészlettel rendelkezik, amelyben minden jelet egy vektorsorozat ír le

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, amelyek 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 ennek a kialakítás teljes függőségét a perifériaprocesszoroktól (PP), 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 Computer History Museum (Számítógéptörténeti Múzeum) gyűjteményében látható.

Története és hatásai szerkesztés

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, amely 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”, amely 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 Falls-ba, ahol egy telket vásárolt és elkezdte az új labor felállítását. Bár ez a folyamat egy 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, amelyek nagy valószínűséggel az első monitoron játszható számítógépes játékok.[4] 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.[4]

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 szerkeszté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, amelyek 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 az 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 azt.

A 10 PP virtuálisan van megvalósítva: valójában csak egyetlen PP processzor-hardver volt megépítve. Ez a processzorhardver hajtja végre a 10 virtuális PP utasításait és kezeli az ezek állapotát reprezentáló 10 külön regiszterkészletet (hasonlóan a modern többszálas processzorokhoz). A PP regisztertár szervezése egy revolver forgótárához hasonlít: az éppen aktuális processzort a regiszter-forgótáron a „kivágás” (avagy a „csőtorkolat”) reprezentálja, amely az adott PP regiszterkészletére mutat. A PP végrehajtja a perifériaprogram egy utasításának egy órajelciklusra eső részét, majd a „forgótár” elfordul, és a következő PP regiszterkészlete kerül a résbe, így a következő processzorállapot lesz aktív. Egy PP egy utasításához egy vagy több „fordulatra” van szükség. Egy teljes „körbefordulás” ideje 1000 nanoszekundum (egy PP-re 100 nanoszekundum jut), és egy utasítás végrehajtásához 1-től 5 fordulatig terjedő idő szükséges, vagy több, adatátviteli műveletek esetén. Ezt az elrendezést nevezték „barrel processzor” (kb. forgótáras processzor) vagy „barrel and slot” (kb. forgótár és rés) kialakításnak.

A 6600-as processzor alapját egy olyan, manapság RISC-nek nevezett rendszer alkotja, amelyben a processzor viszonylag egyszerű és korlátozott, ám jól definiált memóriahozzáféréssel rendelkező utasítások végzésére van optimalizálva. Sok más gép tervezési filozófiája a bonyolultabb utasítások bevezetése felé haladt — például: egyetlen művelet kiolvas egy operandust a memóriából és az értékét hozzáadja egy regiszter tartalmához. A 6600-ban az érték betöltése a memóriából és az összeadás két külön utasításban történik. Ez elvileg lassabb a járulékos memória-hozzáférések miatt, de a gyakorlatban egy jól ütemezett kódban, több utasítás párhuzamos végrehajtásával a többletidő kiküszöbölődik. Ez az egyszerűsítés a programírókat is arra kényszerítette, hogy kitüntetett figyelmet szenteljenek a memóriahozzáféréseknek és elkerüljék ezt a kódban, amennyire csak lehetséges.

A központi processzor (Central Processor, CP) szerkesztés

CDC 6x00 regiszterek
59 . . . 17 . . . 00 (bitpozíció)
operandusregiszterek (60 bites)
X0 0. regiszter
X1 1. regiszter
X2 2. regiszter
X3 3. regiszter
X4 4. regiszter
X5 5. regiszter
X6 6. regiszter
X7 7. regiszter
címregiszterek (18 bites)
  A0 0. cím
  A1 1. cím
  A2 2. cím
  A3 3. cím
  A4 4. cím
  A5 5. cím
  A6 6. cím
  A7 7. cím
növekményregiszterek (increment register, 18 bites)
  B0 (minden bit 0) 0. növekmény
  B1 1. növekmény
  B2 2. növekmény
  B3 3. növekmény
  B4 4. növekmény
  B5 5. növekmény
  B6 6. növekmény
  B7 7. növekmény

A 6400-as, 6500-as és 6600-as gépek központi processzora (CP) és főmemóriája 60 bites szóhosszúságú. A központi processzornak nyolc általános célú 60 bites regisztere van, ezeket X0-tól X7-ig jelölik, nyolc 18 bites címregisztere van, (A0–A7, A mint address, cím) és nyolc 18 bites növekményregisztere (relatív címek képzésében játszanak szerepet), ezeket B0-tól B7-ig jelölnek. A B0 a hardveresen rögzített 0 értéket tartalmazza állandóan. A programozók hasonlóan a B1 regisztert is gyakran 1-re állították és érintetlenül hagyták azt a futás során.

A CP-nek nincsenek utasításai a bemenet és kimenet számára, mivel ezeket a perifériaprocesszorok (PP) végzik. Nincsenek külön kijelölt opkódok a memóriából való olvasás és az oda történő tárolás számára; ezek a műveletek egyes A regiszterek értékadásának mellékhatásai. Az A1–A5 regiszterek írása (értékadás) a regiszter által címzett szó betöltését eredményezi az X0–X5 regiszterekbe; az A6–A7 regiszterekbe való írás rendre az X6–X7 regiszterek tartalmának kiírását eredményezi a memóriába. Az A0 regiszter írásának nincs mellékhatása. Külön hardveres betöltő/tároló egység kezeli a tényleges adatmozgatást az utasításfolyamban soron következő művelettől függetlenül, ami lehetővé teszi más műveletek befejezését a memóriahozzáférés ideje alatt, ami a legjobb esetben is 8 órajelciklusig tart.

A 6600-as CP-nek tíz párhuzamos funkcionális egysége van, ezáltal egy időben több utasítás állhat végrehajtás alatt. Manapság ez szuperskalár kialakításként ismert, a 6600-as idejében azonban egyedülálló volt. A modern processzoroktól eltérően a funkcionális egységek nem voltak futószalagos rendszerűek; a funkcionális egység egy utasítás végrehajtásának megkezdésekor foglalttá vált és úgy is maradt a végrehajtás befejezéséig. (A CDC 7600-nál már bevezették a futószalagos működést a funkcionális egységekbe.) A legjobb esetben minden 100 ns-es órajelciklusban kiadható egy utasítás egy funkcionális egységnek. A rendszer a memóriából a lehető legnagyobb sebességgel olvassa ki és dekódolja az utasításokat, általában gyorsabban, mint azok végrehajthatók, és az utasításokat továbbadja a végrehajtó egységeknek, feldolgozásra. Az egységek a következők:

  • lebegőpontos szorzó (2 példány)
  • lebegőpontos osztó
  • lebegőpontos összeadó
  • „hosszú” fixpontos összeadó
  • növelőegység (2 példány; memóriaolvasást és írást is végez)
  • léptetőegység
  • bináris logikai egység
  • elágazáskezelő

A lebegőpontos műveletek sebessége kiemelkedően nagy ebben az architektúrában: a CDC 6600 és rokonai egyedülállók abban, hogy képesek egy 60 bites lebegőpontos szorzást egy elágazás feldolgozásával összemérhető idő alatt elvégezni.

A 60 bites számokon végzett fixpontos összeadás és kivonást a hosszú összeadó egység végzi, amely a negatív számokat egyes komplemens ábrázolásban kezeli. A fixpontos szorzást és osztást a lebegőpontos egységek végzik, az számok oda-vissza konvertálásával, fixpontos formátumról lebegőpontosra és vissza.[5]

Az előzőleg végrehajtott utasítások egy nyolcszavas gyorsítótárba kerülnek, amelyet ebben az architektúrában veremnek neveznek (de nem azonos az általánosan veremként ismert adatszerkezettel). A gyorsítótáron (vermen) belüli ugrásokat gyorsabban hajtja végre a rendszer, mert ekkor nincs memóriaolvasás. A gyorsítótárat a feltétel nélküli ugróutasítások törlik, ezért pl. a ciklusok végén szereplő feltétel nélküli ugrások helyett konvencionálisan olyan feltételes ugróutasítást használtak, amelynél a feltétel mindig teljesül.

A rendszer 10 MHz-es órajelet használ, azonban az órajel négyfázisú, így a rendszer időnként 40 MHz-es tényleges sebességen működik. Egy lebegőpontos szorzás végrehajtása tíz ciklust vesz igénybe, az osztás 29-et, az összteljesítmény, figyelembe véve a memóriakésleltetéseket és egyéb tényezőket is, kb. 3 MFLOPS. A gép késői pályafutása során a rendelkezésre álló legjobb fordítóprogramokkal fordított FORTRAN programoktól közel 0,5 MFLOPS átlagos teljesítmény volt elvárható.

Memóriaszervezés szerkesztés

 
A CDC 6600 egy ferritmagos memóriakártyája, mérete 10,8 × 10,8 cm, kapacitása 1024 bit

A felhasználói programok csak a főmemória összefüggő részeit használhatták. A végrehajtás alatt álló program által elérhető (egybefüggő) memóriaterületet az RA (Relative Address, relatív cím) és az FL (Field Length, mezőhossz) regiszterek jelölik, amelyek a felhasználói program számára nem elérhetőek. Mikor a felhasználói program megkísérli a központi memória a címén elhelyezkedő szó írását vagy olvasását, a processzor először ellenőrzi, hogy az a a 0 és az FL-1 értékek között van-e. Ha igen, akkor a processzor hozzáfér a memória RA+a címen található memóriarekeszhez. Ezt a folyamatot alaphoz kötött relokációnak hívják; a felhasználói programok az operatív tárat szavak folyamatos sorozataként látja, amelynek hossza FL, és a memória a 0 címen kezdődik; valójában a program akárhol lehet a fizikai memóriában. Ezzel a technikával az operációs rendszer bárhol elhelyezheti (relokálhatja) a programot a főmemóriában, mindaddig, amíg az RA a kezdőpozíciót mutatja a memóriában. A felhasználói program, amely a megengedett területen kívüli részeket próbál elérni (tehát egy olyan címet próbál elérni, amelynek az értéke nagyobb, mint az FL-1), egy megszakítást generál, és az operációs rendszer leállítja. Ekkor az operációs rendszer egy core dump-ot készíthet (a memória tartalmát és a regisztereket tartalmazó fájlt; a core a ferritmagos memória elnevezéséből származik), ami a programozót segítheti a hiba keresésében. A gép memóriaszervezése jelentősen eltér a virtuális memóriát használó rendszerekétől: ebben a rendszerben a címezhető területnek teljes egészében a főmemóriában kell lennie, a területnek összefüggőnek (folyamatosnak) kell lennie és a mérete nem lehet nagyobb, mint a valódi fizikai memóriakapacitás.

Az első hét CDC 6000 sorozatú gép kivételével a sorozat gépei konfigurálhatók az ún. ECS (Extended Core Storage, kierjesztett ferritmagos tároló) rendszer használatára. Az ECS egy másik (a központi memóriától eltérő) technológiával készült ferritmagos memória, ezáltal egyszerre gazdaságosabb, nagyobb és lassabb működésű. Ennek oka, hogy ezt csak két vezetékkel fűzték, a központi memória 5 vezetékével ellentétben. Mivel nagyon széles adatátvitelt biztosított, a soros átviteli képessége ugyanakkora, mint a kisebb méretű központi memóriának. A 6000-es CPU képes közvetlenül végrehajtani a blokkos memóriaátviteleket a felhasználók vagy az operációs rendszer programjai és az ECS egység között. Széles adatutakat használ, ezért az átvitel igen gyors. A memóriahatárok a központi memóriához hasonló módon vannak kezelve, egy az operációs rendszer által kezelt RA/FL mechanizmus által. Az ECS számos célra volt használható, például a központi memória számára túl nagy felhasználói adattömbök vagy a gyakran használ fájlok tárolására, memóriacsere céljaira (swapping), vagy akár kommunikációs területként a többgépes rendszerekben.

A perifériaprocesszorok (PP-k) szerkesztés

Az olyan „háztartási” feladatok ellátására, amelyek elvégzése más rendszerekben a CPU feladata, Cray 10 újabb processzort helyezett a rendszerbe, amelyek részben korábbi számítógépén, a CDC 160-A-n alapultak. Ezek a perifériaprocesszornak (PP) nevezett egységek önmagukban is teljes jogú számítógépek, csak a be-/kimeneti feladatokra és az operációs rendszer futtatására voltak beállítva. Majdnem a teljes operációs rendszer a PP-ken fut, így a központi processzor szinte teljes kapacitása a felhasználói programok rendelkezésére áll. Az egyik PP megkapja a gép teljeskörű vezérlésének jogát, és ebbe beleértendő a fő CPU-n futó program vezérlése is, míg a többi PP különféle be/kimeneti feladatokat végez – a korabeli IBM nagyszámítógépek be-/kimeneti csatornáihoz hasonlóan. Mikor a program be/kimeneti műveletet végez, akkor az egyik PP-be betöltődik egy kisebb program, amely elvégzi a feladatot. A PP egy megszakítás segítségével értesíti a programot a feladat befejezéséről.

Mindegyik PP saját 4096 12 bites szó méretű külön memóriával rendelkezik. Ez a memória szolgál a programtárolás és a be/kimeneti pufferelés céljaira is. ám a 10 PP csak egyetlen, közösen használt végrehajtóegységen osztozik, egy ún. „forgódob és rés” (barrel and slot) konfigurációban. (Erre nincs jó fordítás, kb. „forgótáras” processzor lehet, de a többkontextusú processzor kifejezés is jól leírja a fogalmat.) Ez azt jelenti, hogy a végrehajtóegység (a „rés”) végrehajt egy egy utasításciklust az első PP-ből, majd egy utasításciklust a másodikból, és így tovább, körforgásos (ciklikus időkiosztásos) rendszerben. Ez egyrészt a költségcsökkentés miatt alakult így, másrészt, mert a CP memóriahozzáférése 10 PP utasításciklust igényelt: mikor a PP a főprocesszor (CP) memóriájához fordul, az adat a következő alkalommal rendelkezésre áll, amint a PP elfoglalja a „rés” szerepét, tehát amint legközelebb hozzá kerül a végrehajtás.

Szóhosszak, karakterek szerkesztés

A központi processzor 60 bites, a periferiális processzorok 12 bites szavakat használnak. A CDC szintén a „bájt” kifejezést használta a perifériaprocesszorok által használt 12 bites egységekre; a karakterek ebben a rendszerben 6 bitesek, a központi processzor utasításai pedig 15 bitesek, vagy 30 bitesek, amelyek egy előjeles 18 bites címmezőt is tartalmaznak; ez utóbbi 128 K-szó memóriaterület közvetlen címzését teszi lehetővé a központi memóriában (modern kifejezéssel, 8 bites bájtokkal számolva ez 0,94 MiB-ot jelent). A címregiszterek előjeles volta a programok méretét 128 K-szó méretre korlátozza. (A későbbi CDC 6000 kompatibilis gépek 256 K vagy több szó méretű központi memóriát is tartalmazhattak, de a különálló felhasználói programok mérete továbbra is 128 K-szó maradt.) A központi processzor utasításainak szóhatáron kell kezdődniük, mikor az egy ugróutasítás célja vagy egy szubrutinból való visszatérés célutasítása, ezért helyenként üres (nop) utasításokkal kellett feltölteni a memóriaszó utolsó 15, 30 vagy 45 bitjét.

A display code nevű kódkészlet 6 bites karaktereivel 10 karakter tárolható egy szóban. A karakterkészlet 64 különböző jelet tartalmazhat, ami elég az összes nagybetű, számjegy és néhány központozási jel ábrázolására. Ez megfelel a Fortran programok írására vagy üzlet és tudományos jelentések nyomtatásához. A display code-nak két változata volt használatban egy 64 és egy 63 karakteres készlet. A 64 karakteres változatnak az volt a hátránya, hogy az egymást követő két ':' karakter sorvégjelként volt értelmezhető, mikor egy 10 bájtos szó végére esett. A későbbi változatot 6/12 display code-nak hívták, és ez már a teljes ASCII karakterkészletet képes volt ábrázolni, az előző rendszerekkel valamennyire kompatibilis módon.

Mivel az utasításkészletben nincsenek bájtokat címző vagy feldolgozó utasítások, a kódban a karaktereket egyenként eltolva és összerakva kellett egy szóba betárazni. A nagyon nagy szóhossz és a viszonylag kicsi memória azzal járt, hogy a programozók igyekeztek memóriát megtakarítani az adatok szavakba történő bitszintű összecsomagolásával.

Érdekesség, hogy a 10 karakter tárolására alkalmas nagy szóméret miatt gyakran gyorsabb volt a karakterekkel kitöltött szavakat egészben kezelni, mint a karaktereket egyenként kicsomagolva és a feldolgozás után visszacsomagolva kezelni. A CDC COBOL fordító különösen jó volt a decimális mezők feldolgozásában, ezt a technikát alkalmazva. Ezt a fajta gyorsítást mostanában széles körben használják a modern processzorok multimédia-utasításaiban.

Fizikai kialakítás szerkesztés

A gépet egy felülnézetben pluszjel alakú szekrénybe építették, a négy kar végén az utolsó 48 cm-ben a hűtőrendszer kapott helyet. A hűtést freongáz áramoltatásával végezték a gép belsejében, amit vízhűtés egészített ki. A négy kar mindegyike négy tartóvázat tartalmaz, amelyek könyvszerűen nyithatók. A pluszjel közepén a karokat és hordozóvázakat összekötő kábelhálózat található. A vázakat 1-től 16-ig számozták, ezek a 10 PPU egységet, azok memóriáit és a 12 viszonylag kicsi be-/kimeneti csatornát tartalmazzák. A CPU főmemóriája több vázon van elosztva. Egy 64 K szavas memóriával ellátott rendszerben egy kar kimaradhat.

A gép logikája 2,5 inches (64 mm) oldalú négyzet alakú modulokban volt szerelve, a modulok 1 inch (2,5 cm) vastagok. A modulok mindegyike rendelkezik egy 30 tűs csatlakozóval az egyik élen, míg a másik élen tesztpontokat alakítottak ki. A modulok két hőelvezető alumínium lemez közé kerülnek. Maga a modul két nyomtatott áramköri lapból áll, amelyeket a beléjük szerelt alkatrészek tartanak össze – az alkatrészek lehetnek csak az egyik lapra vagy mindkettőre felszerelt elemek. Ez egy elég nagy alkatrészsűrűséget eredményez, ez nehezíti a javítást, de jó a hőelvezetés szempontjából. Ezt a rendszer hasáb-kivitelezésként ismert (cordwood konstrukció).

Operációs rendszer és programozás szerkesztés

A 6600 gépek eredetileg egy COS (Chippewa operációs rendszer) nevű, igen egyszerű feladatvezérlő rendszert kaptak, ami a korábbi CDC 3000 operációs rendszerén alapuló „összedobott” rendszer volt, a gépek szállítás előtti tesztelésére. A gépekhez egy sokkal hatékonyabb rendszert terveztek szállítani, a SIPROS nevűt (Simultaneous Processing Operating System, szimultán feldolgozó operációs rendszer), amely a los angelesi System Sciences Division cég fejlesztése.

A SIPROS egy üzleti bukásnak bizonyult, a fejlesztési határidők csúszása és az ezt követő profitkimaradás és kötbérek miatt. Ezt a projektet végül törölték, a COS fejlesztése tovább folytatódott.

 
Egy CDC 6000 SCOPE 3.1 rendszer saját magát fordítja egy asztali CYBER emulátoron

A CDC egy másik operációs rendszer fejlesztését is elindította, ez lett a SCOPE (Supervisory Control Of Program Execution) rendszer, amelynek első verziója szintén a COS-on alapult. A következő verziókban jelent meg az eszköz- és fájlrendszer-támogatás, majd a permanens fájlok, az EI/200 távoli batch támogatás, és az INTERCOM időosztás támogatása. A SCOPE-nak mindig jelentős megbízhatósági és karbantarthatóság problémái voltak.

A COS-ból később kifejlesztették a MACE rendszert, amely nem lett hivatalos termék. Ennek utódja lett a Kronos rendszer. A SCOPE és a Kronos operációs rendszerek összeolvasztására tett kísérlet eredményezte a NOS (szoftver), hálózati operációs rendszer terméket. Ezt később a CDC NOS/BE (Batch Environment) névre nevezte át, ami egy elterjedt operációs rendszerré vált. Ehhez később különféle mérnöki fejlesztések és kiegészítők kapcsolódtak.

Kapcsolódó szócikkek szerkesztés

Jegyzetek szerkesztés

  1. [1] CERN Timelines, "The CDC 6600 arrives at CERN"
  2. [2] Archiválva 2013. október 6-i dátummal a Wayback Machine-ben "Bumper Crop", chapter 6 in "Lawrence and His Laboratory", 1981
  3. Archivált másolat. [2014. november 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. november 9.)
  4. a b CDC 6600. In Edwin D. Reilly: Milestones in Computer Science and Information Technology. Greenwood Publishing Group. 2003. 41. o. ISBN 1573565210, ISBN 9781573565219 angol  
  5. Archivált másolat. [2014. január 2-i dátummal az eredetiből archiválva]. (Hozzáférés: 2014. január 2.)

Fordítás szerkesztés

Ez a szócikk részben vagy egészben a CDC 6600 című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Források szerkesztés

Hivatkozások szerkesztés

  • Grishman, Ralph (1974). asszembler-nyelv Programming for the vezérlőadat 6000 Series és the Cyber 70 Series. New York, NY: Algorithmics Press. [3]
  • CONTROL DATA 6400/6500/6600 COMPUTER SYSTEMS Reference Manual
  • Thornton, J. (1963). Considerations in Computer Design - Leading max. the vezérlőadat 6600 [4]
  • Thornton, J. (1970). Design of a Computer—The vezérlőadat 6600. Glenview, IL: Scott, Foresman és Co. [5]
  • (1990) Understanding Computers: Speed és Power, a TIME LIFE series ISBN 0809475863

További információk szerkesztés


Kapcsolódó szócikkek szerkesztés