S počítačem Cray jsem se poprvé setkal při studiích na Fakultě informatiky Masarykovy univerzity v Brně. Nepamatuji si přesně typ, někde snad mám i foto. Byl umístěn pod schody do poslucháren, jako všechny ostatní měl pěkný design (tento červený), napájel se 3fázovým proudem.
Byl tam jen jako vyřazený exponát, FI MU jej dostala od AV ČR. (Na cedulce u něj byly i nějaké zajímavosti, ale to už si nepamatuji, možná tam byla i cena a výkon.)
Nejednou jsem si u něj zapřemýšlel, kam se celý obor ubírá.
Děkuji za připomenutí!
Diky!
Jenom bych mel dotaz k vyhodnocovani vektorovych operaci ‚v nekolika taktech pomoci vektorove jednotky‘. Ktery Cray pracoval takto jako SIMD? Urcite to tak nebyl na CRAY-1, ten mel napr. pouze jednu FP nasobicku (ktera se po mirne rekofiguraci nekolika ricimi bity pouzivala i pro integery) a mela takove dost nesikovne zaokrouhlovani, ktere zpusobovalo ze FP nasobeni nebylo komutativni (coz nekdy nastve). Ostatni craye tolik neznam.
V CRAY-1 se jednalo o to ze i kdyz byla jen 1 nasobicka (a nez se pronasobila 2 cisla tak to tez trvalo nekolik clocku), tak byla dusledne pipelinovana, takze kazdy takt do ni mohly vstoupit nove dva operandy, ktere za N taktu vypadly ven. Scitacka byla nezavisla takze skutecne slo delat scitat 2 vektory a nejake jine nasobit. Dokonce slo operace spojovat do retizku takze treba skalarni soucin taky slo pocitat tez timto zpusobem (scitani si automaticky pockalo na latenci nasobicky nez zaclo pracovat). Load/store unit byla tez nezavisla coz se pouzivalo k tomu ze zatimco jste pocital tak nejaka dalsi instrukce uz tahala data z pameti do nejakeho vektoroveho registru (nemuselo se cekat az se cely naplni, stacilo kdyz treba nasledne scitani bude o jeden prvek pozadu pred naplnovanim). Pamet byla staticka (SRAM), cache to nemelo (krome nejakeho instrukcniho bufferu, ale to nebyla skutecna cache), takze casovani bylo celkem deterministicke.
V tom bylo to zrychleni oproti tehdejsim mikrokodovanym pocitacum. Tem trvalo nekolik taktu nez provedou instrukci (nez prosla celou tou byrokracii) a cray mohl za takt provest nemin 3 operace (scitani, nasobeni, load/store (do toho se pocita i update adresovych registru, umelo to nacitat s volitelnym krokem (to se hodi pro sloupce matice) i napreskacku, jak bylo receno v clanku)). Instrukce ale mohla trvat i 64 taktu pokud byl vektor maximalne dlouhy (kazdy vektorovy registr mel jeste navic par bitu kde se pamatovala skutecne pouzivana delka).
Takze to nebylo skutecne paralelni (jako ze by scital vsechny prvky vektoru `naraz'), pouze se chytre schovavaly latence jednotek tim ze se behem doby latence mohla delat jina prace (na jinem miste vektoru a nebo v jinych jednotkach).
V podstate podobny princip se pouziva dodnes (zacaly to RISC procesory, proto se jim taky rika Really Invented by Seymour Cray), jen uz ty vektorove registry se z toho vytratily protoze je nahradila L-1 cache ktera bezi na frekvenci CPU (ono totiz mit mnoho registru je i nevyhoda, kdyz je treba udelat context-switch (puvodni OS pro cray nemel multitasking protoze si mysleli ze by bylo skoda delit tak hezkej pocitac na nekolik uzivatelu, kdyz by to diky tolika registrum melo velky overhead)).
Doufam ze se priste docteme neco HW. Bylo zajimave ze na svou dobu tak silny stroj jako CRAY-1 byl slozen z integrovanych obvodu nizke (4 a 5tivstupe NORy) a stredni (staticke 1kbit RAMky) integrace. Krom toho elektricky bylo vse (krome pameti) delano jako diferencialni zesilovace, takze kazdy bit se prenasel 2ma draty. Na prvni pohled to vypada jako plytvani, ale omezuje to ruseni/vyzarovani. Navic pouzita logika (nebylo to TTL, mozna ECL uz si nepamatuju) diky te symetrii mela temer
konstatni spotrebu hradla pri prepinani z 0 do 1 (dnes to tak neni, pri prepinani hradlo chvili zere mnohem vic nez v klidu). Tim ze cely pocitac spotrebovaval nezavisle na tom co dela porad tentyz proud si mohl Seymour dovolit nestabilizovat napajeci napeti (coz pri prikonu okolo 1MW (pokud se pamatuju, ale urcite vic nez 100kW) by byl problem). Proste to ma jen trasformatory (3fazove, umistene v te pohovce), usmernovace a LC filtry pro vyhlazeni. Aby ty transformatory nebyly velke tak pocitac vyzaduje 400 Hz napajeni, ktere se ziskavalo v motorgenratoru (v podstate elektromotor ktery toci synchronnim generatorem s vetsim mnozstvim polu aby se dosahlo zvyseni frekvence), ktery se k tomu standardne dodaval a byl umisten v mistnosti vedle, aby nekazil umelecky dojem.
Zvlast se tesim na CRAY-2 a CRAY-3 o nich temer nic nevim (krom toho ze CRAY-2 mel desky chlazene tim ze byly v nejake freonove lazni a spojeny byly takovymi pruznymi kontakty co se snad jen dotykaly vhodnych plosek na protejsim plosnem spoji).
Docela zajimava pradnaska:
http://www.youtube.com/watch?v=J9kobkqAicU
Jinak pokud vim tak Cray primo navrhoval `pouze' na pocitace CRAY-1, CRAY-2 a CRAY-3.
Ty ostatni X-MP, Y-MP, delal jiny team, ktery uz jen zdokonaloval jeho genialni myslenky obvyklou `inzenyrskou evoluci'.
Vychladit 1MW z tak malé bedny by byl problém a číslo je o řád nadsazené. Pro představu jen o něco větší množství tepla promrhá při provozu dieselelektrická lokomotiva T435 (http://www.mec01.muenchberg.de/sergej/T435.0145.jpg), ovšem na větším tepelném spádu. CRAY-1 byl skutečně napájený z rotačního měniče 208V, 400Hz s příkonem 150kW. Příkon vlastního počítače byl 115kW. Dalších 150kW (odhad) mohla být spotřeba chladícího kompresoru k udržení teploty pouzder IO na max. 54°C.
http://american.cs.ucdavis.edu/academic/readings/papers/CRAY-technology.pdf – dobový článek o HW.
Škoda, že se všude píše jen o vlastní architektuře, fotí se paměťové moduly, ale to co bylo kvůli „uměleckému dojmu“ skryto takto stále zůstává.
Na další díly se také těším a předem děkuji.
To pouziti technologie ECL melo svoje vyhody, protoze se tranzistory neprepinaly z uplneho uzavreni az do saturace (jak je to v TTL), ale v pracovni oblasti, tak bylo prepinani mezi obema stavy dost rychle.
A hlavne – dneska ani ty ruzne HxxxMOS technologie moc nevyuzivaji jejich nejvetsi vyhodu (prakticky nulovou spotrebu ve stabilnim stavu) kdyz se pracuje na gigahertzovych frekvencich.
Ten prikon C-jednicky byl nekde okolo 150kW plus dalsich 150kW na uchlazeni.
Presne tak, takze ve skutecnosti by se cyklus mel zapsal takhle:
DO i = 1,42 c(i) = a(i) + b(i) END DO
Nicmene. Prave diky masivni podpore parallenich vypoctu na Cray se uz v 80-tych letech zacala postupne do Fortranu pridavat podpora primo pro vektorove operace. Diky tomu by uz dnes nikoho ani nenapadlo to takhle psat a pouzil by se stejnym vyznamem jednoduse
c = a + b.
Pokud by se ovsem chtel omezit jen na kladne cisla pak by pouzil konstrukci where (neco jako if pro vektory) opet se stejnym vyznamem:
where( b > 0) c = a end where
Zavedeni vektorovych operaci do jazyka ma ovsem i dalsi prijemne vyhody. Napriklad preindexovaniho jednoho vektoru jinym s celocislenymi prvky
c = a(b).
Nadherne tak vidime, jak pokrok technologie zcela od zakladu zmenil rysy jazyka a predevsim mysleni programatoru. Musime si uvedomit, ze tyhle vektorove operace vlaste vetsina ostatnicj jazyku stale nepodporuje a prekladace musi neustale „lustit“ kod a hadat pripadnou vektorizaci a pravdepodobne tak nevyuziji hardware naplno.
** mel mozna i Basic nebo Simula :))
Ale je pravda (aspon tedy v Matlabu), ze lze umocnovat i matice a ze lze umocnovat i na jine nez cele cislo (napr. komplexni).
Jeste k prikladu:
where( b > 0) c = a end where
Fortran neznam, ale ze znalosti Matlabu tipuju, ze spravnejsi melo byt (?):
where( b > 0) c(i) = a(i) end where
A jeste v Matlabu jde neco jako:
c = a(b>0)
Vektor „c“ bude obsahovat pouze ty prvky z „a“, kde na stejne pozici v „b“ je kladne cislo. V puvodnim prikladu predpokladam, ze by „c“ byl stejne velky jako „a“, akorat na nekterych mistech by byly nuly?
Pri prepoctu ceny celeho superpocitace a jeho moralni zivotnosti (dejme tomu 10 roku) vychazi jedna strojova minuta docela draho, takze ti lidi opravdu museli premyslet, testovat, simulovat jeste predtim nez se nejaky dlouhotrvajici vypocet na Crayi skutecne spustil (dejme tomu modely pocasi nebo termojaderne fuze). Mam dojem ze na nejake „tak to spustime a uvidime co to udela“ se tehdy moc nehralo.
Len dodam, ze v o kupe Cray-a uvazovali aj id software. Preco sa tak nakoniec nestalo sa docitate tu
http://planetromero.com/2010/01/gametales-cray-ymp
No jeste kdysi na NeXTu bezela v CERNu takova naprosto bezvyznamna, dalo by se rict provincni aplikace ;)
http://en.wikipedia.org/wiki/File:First_Web_Server.jpg