Cray-1

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Placă de sistem

Cray-1 este un supercomputer dezvoltat în 1976 de o echipă de designeri condusă de Seymour Cray pentru Cray Research . Prima unitate a fost instalată la Laboratorul Național Los Alamos și a fost destinată să devină unul dintre cele mai faimoase și mai performante supercalculatoare din istorie.

Istorie

Cray-1

La începutul anilor 1970, Seymour Cray era ocupat pentru Control Data Corporation pe o nouă mașină numită CDC 8600 , succesorul logic al CDC 6600 și CDC 7600 . 8600 era în esență format din patru 7600 introduse într-o singură carcasă, cu un mod de funcționare suplimentar special care le permitea să funcționeze într-un mod „blocat” similar cu paralelismul SIMD .

Jim Thornton, inițial coleg cu lucrările timpurii ale lui Cray, a pus bazele unui design mai radical cunoscut sub numele de CDC STAR-100 . Spre deosebire de abordarea forței brute a lui 8600, orientată spre performanțe extreme, STAR a urmat o cale complet diferită, cu un procesor principal mai puțin puternic decât cel al modelului 7600, dar încă echipat cu hardware suplimentar care a accelerat unele operații deosebit de frecvente în supercomputerele.

Până în 1972 8600 ajunsese la sfârșitul călătoriei sale: mașina era incredibil de complexă până la punctul de a prezenta probleme operaționale grave. Chiar și o singură componentă defectă a fost suficientă pentru a scoate mașina din funcțiune. Cray a discutat acest lucru cu William Norris , Control Data și CEO al companiei, afirmând că este nevoie de o reproiectare completă. Cu toate acestea, la vremea respectivă, compania trecea printr-o criză financiară și, cu STAR în dezvoltare, Norris nu avea bani să investească.

Cray a părăsit compania și a început una nouă situată nu departe de laboratoarele CDC, în imediata vecinătate a unei bucăți de pământ pe care și-a cumpărat-o în Chippewa Falls, Wisconsin . Cray și un grup de foști angajați CDC au început să exploreze noi soluții; inițial, ideea de a crea un supercomputer părea de neconceput, deoarece CDC nu avusese deja suficienți bani pentru a realiza proiectul, cu atât mai puțin ar fi putut face o companie mică care tocmai s-a născut și practic fără finanțare. Dar CTO-ul companiei a făcut câteva contacte cu agenții de pe Wall Street și a găsit investitori dispuși să finanțeze construcția unui nou supercomputer. Prin urmare, companiei lui Cray îi lipsea un singur proiect nou.

În 1975 a fost anunțat Cray-1. Emoția din jurul noii mașini a fost de așa natură încât a declanșat un război între centrele LLNL și Los Alamos pentru cine ar trebui să câștige primul model. Los Alamos a câștigat bătălia, luând mașina cu numărul de serie 001 din 1976, pentru o perioadă de probă de șase luni. Centrul Național pentru Cercetări Atmosferice (NCAR) a devenit primul client oficial al Cray Research în iulie 1977 cu o plată de 8,86 milioane de dolari (7,9 milioane de dolari plus 1 milion de dolari pentru discuri). Aceeași mașină a fost scoasă din funcțiune abia în ianuarie 1989. Compania se aștepta inițial să vândă o duzină de mașini; de fapt, a vândut mai mult de optzeci de utilaje cu o valoare cuprinsă între 5 și 8 milioane de dolari. Mașina a făcut din Cray o celebritate în cercul său și compania sa un succes care a durat până la începutul anilor 1990, când piața supercomputerelor sa prăbușit.

250 MegaFLOPS Cray-1 a fost urmat în 1982 de Cray X-MP , o mașină de 800 MegaFLOPS și prima mașină multiprocesor a companiei. În 1985 a fost introdus Cray-2 , o mașină foarte avansată capabilă să dezvolte un vârf de 1,9 GigaFLOPS . Cu toate acestea, acest computer a avut un succes comercial limitat din cauza problemelor în obținerea de performanțe ridicate în aplicații în probleme reale. În 1988 a fost prezentat Cray Y-MP , un nou model bazat pe un design foarte conservator, o evoluție a Cray-1 și X-MP de la care și-a luat numele.

Premisă

1976: supercalculatorul Cray-1 al EPFL

Multe aplicații științifice se caracterizează prin citirea unui set mare de date, prelucrarea și scrierea datelor transformate. Adesea operațiile sunt de natură repetitivă, aplicate în același mod pe fiecare datum al setului. De exemplu, un program ar putea citi un milion de numere și ar putea adăuga valoarea 5. În computerele tradiționale acest lucru se traduce printr-un ciclu de citire a fiecărui milion de numere și adăugarea ulterioară cu instrucțiuni precum a = add b, c . Computerul rezolvă intern instrucțiunile în mai mulți pași: citește instrucțiunea din memorie și o decodifică, preia datele necesare (în acest caz b și c), efectuează operațiunea efectivă și salvează rezultatul, pentru fiecare dintre cele milioane de cicluri.

Mașini vectoriale

În sistemul STAR, noile instrucțiuni au făcut posibilă executarea buclelor foarte eficient. Practic a fost posibil să se specifice mașinii care set de date ar trebui tratate cu aceeași instrucțiune, cu o singură instrucțiune de tip a(..1000000) = addv b(1..1000000), c(1..1000000) . Deși la prima vedere avantajele pot părea limitate, în cazul de față mașina încarcă și decodează doar o instrucțiune în loc de un milion, eliminând efectiv timpul necesar acestor operațiuni estimat la aproximativ 1/4 din timpul total de procesare. Cu cât este mai mare setul de date de procesat, cu atât crește performanța sistemului.

În realitate, creșterea performanței nu este atât de evidentă. De fapt, CPU - urile sunt alcătuite dintr-un anumit număr de părți, fiecare dedicat unei singure sarcini, de exemplu efectuarea unei adăugări sau recuperarea datelor în memorie („preluare”). În mod tradițional, executarea unei instrucțiuni face ca anumite părți ale procesorului să fie activate secvențial (în timp ce restul rămân inactive) până când rezultatul final este produs. Introducerea unei conducte de instrucțiuni revoluționează procesul permițând procesorului să recupereze următoarea instrucțiune înainte de „în curs”. Gândindu-ne la CPU ca la o linie de asamblare, timpul general de execuție al instrucțiunii unice nu se schimbă, dar la sfârșitul aceleiași instrucțiuni următoare este deja parțial executat.

Procesoarele vectoriale folosesc această tehnică cu un truc suplimentar: deoarece structura datelor este cunoscută (în esență, un set de numere localizate liniar în memorie), conducta poate fi optimizată pentru a îmbunătăți performanța de preluare. La sosirea unei instrucțiuni vectoriale, hardware-ul dedicat pregătește accesul la memorie pentru citirea valorilor multiple în cel mai scurt timp posibil.

CDC STAR a folosit o arhitectură cunoscută astăzi sub numele de „memorie-memorie”, cu referire la modul de recuperare a datelor și furnizarea conductei pentru citirea și scrierea datelor direct în memorie. Această arhitectură a permis folosirea vectorilor de orice lungime sau adâncime („pas”), foarte flexibili și rapidi cu instrucțiuni vectoriale. Cu toate acestea, conducta trebuia să fie foarte profundă (mai mulți pași pentru fiecare instrucțiune, mai multe instrucțiuni executabile în același timp), pentru a continua procesarea în timp ce sistemul aștepta date din memoria principală, cu un cost ridicat în termeni de timp în trecerea de la instrucțiuni vectoriale la instrucțiuni scalare normale. Sistemul a fost, de asemenea, caracterizat de performanțe slabe la instrucțiunile scalare, penalizând performanța generală în aplicații reale. Acest lucru era previzibil ținând cont de legea lui Amdahl .

Abordarea lui Cray

Cray a analizat eșecul STAR și a reușit să tragă lecții utile din acesta. Cray a decis că sistemul lor trebuie să fie foarte rapid și la procesarea scalară, astfel încât să poată compensa comutarea între vector și operația scalară. În plus, Cray a menționat că utilizarea registrelor ar putea îmbunătăți dramatic performanța sistemului în majoritatea cazurilor.

Așa cum mașinile anterioare au ignorat faptul că majoritatea operațiunilor sunt efectuate în serie pe multe date de același tip, STAR a ignorat posibilitatea ca fiecare dată să poată fi procesată în mod repetat. De exemplu, dacă STAR ar fi trebuit să efectueze cinci operații pe un set de date, ar fi trebuit să citească datele din memorie de cinci ori, în timp ce ar fi fost mult mai eficient să citească datele stocate temporar în registrele CPU interne. Registrele sunt destul de scumpe în ceea ce privește complexitatea circuitului și ar putea fi implementate într-un număr limitat; prin urmare, arhitectura Cray ar fi avut mai puțină flexibilitate în dimensiunea vectorilor. Prin urmare, în loc să citească un vector de orice dimensiune de mai multe ori așa cum ar fi făcut-o STAR, proiectul Cray ar fi citit un mic subset al vectorului la un moment dat (până la epuizarea datelor) pe care să efectueze mai multe operații mai eficient. Cray credea că dezavantajul limitat al accesului la memorie (pentru „secțiuni” vectoriale secvențiale) a dat roade bine.

Deoarece operațiunile vectoriale ar fi implicat încărcarea unor seturi mici de date în registre vectoriale și efectuarea de transformări multiple pe acestea din urmă, s-a decis crearea unei conducte special pentru operațiile vectoriale. De exemplu, operațiile de adăugare și multiplicare au propriul hardware dedicat, astfel încât rezultatele unei operații să poată fi transmise intern la următoarea, imediat ce decodificarea respectivă a fost efectuată în conducta principală. pentru a nu bloca procesorul în timpul operațiilor. Cray s-a referit la concept ca „înlănțuire” pentru a permite programatorilor să lanseze numeroase operațiuni și să obțină performanțe superioare.

Descriere

Detaliu al turnului

Noul sistem a fost primul proiect Cray care a folosit circuite integrate . Deși circuitele integrate erau disponibile încă din anii 1960, abia la începutul anilor 1970 au obținut performanțe suficiente pentru circuitele necesare de înaltă frecvență și între timp s-a obținut o fiabilitate adecvată. IC-urile utilizate în proiectul Cray au fost de doar 4 tipuri: o poartă dublă ECL NAND, o altă NAND dublă mai lentă (pentru distribuirea adreselor), o memorie RAM statică de 16x1 biți (6 ns) pentru registre și, în final, o memorie RAM statică (50 ns ) pentru memoria principală. În total, Cray-1 conținea aproximativ 200.000 de porți logice.

Circuitele integrate au fost montate pe plăci de circuite imprimate mari cu cinci straturi care conțineau până la 144 de circuite integrate pe placă. Circuitele au fost montate unul față de altul pentru a îmbunătăți răcirea și aranjate în douăzeci și patru de rafturi de 28 inci conținând 72 de sloturi pentru două carduri. Un modul tipic (o singură unitate de procesare) necesită una sau două cărți asociate. În total, mașina conținea 1992 module de 113 tipuri diferite.

O problemă descoperită în faza inițială de dezvoltare a fost viteza mașinii, împinsă la limita temporizării semnalelor logice ale unor circuite - o caracteristică de proiectare deliberată -, astfel încât semnalele să nu ajungă corect în toate circuitele. Unele componente au primit un semnal prea devreme și, prin urmare, prea slabe pentru a permite o identificare fiabilă a nivelului logic. Problema a fost rezolvată prin adăugarea unor ușoare întârzieri de-a lungul liniei. Întârzierile au fost create prin adăugarea de porți logice care au întârziat semnalul și l-au amplificat sau adăugând capacități mici la linii. Se estimează că 40% din circuitele integrate ale sistemului au fost utilizate pentru a curăța semnalul sau pentru a introduce întârzieri.

Ca întotdeauna, Cray a petrecut mult timp reglând fin proiectarea mecanică și electrică a sistemului pentru a obține o frecvență ridicată de funcționare. Modulele de procesare erau foarte apropiate de modulele de putere pentru a reduce zgomotul și pentru a crește frecvența de funcționare. Fiecare cablu care a conectat un modul a fost răsucit cu o masă pentru a reduce interferențele electromagnetice, în plus, fiecare cablu avea o lungime specifică pentru a evita reflectarea undei electromagnetice care îl traversa. Fiecare amplificator a fost echilibrat pentru a menține constantă cererea de energie electrică și, prin urmare, a reduce perturbările datorate sursei de alimentare.

Detaliu sistem de răcire

Circuitele de înaltă performanță au generat o putere termică semnificativă pe care proiectanții Cray-1 au analizat-o cu atenție pentru a obține un sistem de răcire bun și un suport mecanic adecvat. Fiecare circuit electronic a fost asociat cu un al doilea plasat în fața primului. Între primul și al doilea a fost plasată o foaie de cupru pentru a permite căldura să curgă ușor de-a lungul foii și să fie răcită de freonul care curgea în partea laterală a mașinii. Primul Cray-1 a fost întârziat timp de șase luni pentru depanarea unității frigorifice. Lubrifiantul care a fost amestecat în mod normal cu freonul pentru a permite funcționarea corectă a compresorului a scăpat din garnituri și a ajuns să scufunde circuitele electronice, deteriorându-le. Noile tehnici de sudare au rezolvat problema prin prevenirea scurgerii lubrifiantului din conducte.

Detaliu cablare

Pentru a obține performanța maximă posibilă, cadrul mașinii a fost proiectat sub forma unui transfer C. mare. Acest lucru împreună cu celelalte opțiuni tehnice au făcut posibilă reducerea timpului ciclului la 12,5 ns (80 MHz), nu la fel de rapid ca cei 8 ns (125 MHz) așteptați pentru 8600, dar suficient pentru a depăși CDC 7600 și STAR. NCAR a estimat că aparatul este de aproximativ 4,5 ori mai rapid decât CDC7600.

Cray-1 era un sistem pe 64 de biți, spre deosebire de 7600/6600, care erau mașini pe 60 de biți (8600 trebuia, de asemenea, să fie pe 64 de biți). Adresarea a fost pe 24 de biți și a permis maximum 1 milion de cuvinte (16 MB) de memorie principală. Memoria a fost aranjată pe 16 bănci, fiecare banc cu un timp de ciclu de 50 ns, astfel încât să permită citirea a patru cuvinte (4 x 16 biți) pe ciclu de ceas.

Registrele principale au constat din 8 registre scalare pe 64 de biți (S) și 8 registre de adrese pe 24 de biți (A). În plus, existau 64 de registre temporare pentru stocarea A și S numite T și B, dar care nu erau vizibile din setul de instrucțiuni. Unitățile vectoriale au adăugat 8 registre vectoriale conținând fiecare 64 de elemente pe 64 de biți, precum și un registru pentru lungimea vectorului (VL) și unul pentru masca vectorială (VM). În cele din urmă, sistemul conținea un ceas pe 64 de biți și patru registre pe 64 de biți pentru bufferul de instrucțiuni, care erau pe 16 biți și, prin urmare, conțineau 16 instrucțiuni. Amintirile au fost proiectate astfel încât registrele vectoriale să poată fi încărcate într-un ciclu de ceas în timp ce accesarea registrelor scalare și adresarea necesită două cicluri de ceas. În schimb, întregul buffer de instrucțiuni ar putea fi umplut cu patru cicluri de ceas.

Sistemul era echipat cu douăsprezece unități funcționale, dar era dotat cu un paralelism limitat. Ar putea încărca o instrucțiune în unitatea funcțională pe ciclu de ceas și, deoarece două unități ar putea funcționa în paralel, sistemul ar putea livra teoretic 160 MIPS (instrucțiuni de 80 MHz x 2), deși în realitate sistemul a dezvoltat în jur de 135 MegaFLOPS . Cu toate acestea, folosind cu atenție instrucțiunile vectoriale, sistemul ar putea obține până la 250 MegaFLOPS.

Observați forma „C” a sistemului

Sistemul a fost conceput pentru a funcționa cu seturi mari de date și, prin urmare, s-a petrecut mult timp construind un sistem I / O eficient. Proiectele Early Cray de la CDC includeau două computere separate pentru a gestiona operațiunile de intrare și de ieșire. În Cray-1 acest lucru nu era necesar, deoarece aparatul includea 6 controlere de canale capabile să acceseze memoria la fiecare patru cicluri de ceas. Fiecare controler a citit 16 biți de date cu trei biți de control și unul pentru corectarea erorilor. Sistemul încarcă un cuvânt în 100 ns și fiecare secundă poate prelua 500.000 de cuvinte în total.

Primul model Cray-1A cântărea 5,5 tone și a inclus sistemul de refrigerare pe bază de freon. Configurat cu un milion de cuvinte de memorie principală, aparatul a consumat 115 KW de putere. Un Data General SuperNova S / 200 a fost utilizat ca terminal pentru gestionarea sistemului, dar ulterior a fost înlocuit de Eclipse .

Cray-1S ulterior a fost o versiune puțin mai rapidă (12 ns clock time) a primului Cray și putea fi configurat cu 1, 2 sau 4 milioane de cuvinte pe 64 de biți. Mașinile Data General au fost înlocuite de un sistem proiectat intern cu arhitectură pe 16 biți și o putere de 80 MIPS. Sistemul I / O a fost mutat pe o mașină dedicată conectată la sistem printr-un canal de 6 MB / s și un al doilea controler de 100 MB / s printr-o legătură cu fibră optică. Separarea sistemului I / O a permis multe configurații ale Cray-1. Cel mai ieftin a fost S / 500 fără sistem I / O și cu 0,5 milioane de cuvinte de memorie primară. Cel mai scump a fost S / 400 cu 4 milioane de cuvinte de memorie principală și 4 sisteme I / O.

Cray-1S a fost înlocuit de Cray-1M, unde M a indicat utilizarea pe scară largă a tehnologiei MOS pentru memoria principală și sistemul I / O. Sistemul 1M era disponibil în trei versiuni, M / 1200 cu un milion de cuvinte ca memorie principală, M / 2200 și M / 4200 cu 2 sau 4 milioane de cuvinte ca memorie principală. Toate sistemele includeau două, trei sau patru sisteme I / O și un al doilea canal opțional de mare viteză. Utilizatorii ar putea solicita o unitate SSD de la 8 la 32 de milioane de cuvinte bazate pe MOS-RAM.

Software

În 1978 , a fost produs primul pachet software standard pentru Cray-1. Pachetul a constat din:

Alte proiecte

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT