Berkeley RISC

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

Berkeley RISC este numele dat unuia dintre cele două proiecte de cercetare privind arhitecturile RISC finanțate de proiectul VLSI al ARPA . Proiectul a fost gestionat de David Patterson de la Universitatea Berkeley între 1980 și 1984. În același timp, celălalt proiect avea loc la Universitatea Stanford , care, între 1981 și 1984, a condus la dezvoltarea procesorilor MIPS . Cu toate acestea, proiectul Berkeley RISC este proiectul care a influențat cel mai mult dezvoltarea procesorilor RISC, iar concluziile acestui grup au fost folosite de aproape toți proiectanții RISC CPU. Proiectul a condus la dezvoltarea arhitecturii SPARC .

Ideea RISC

Oamenii de știință din proiectul RISC și MIPS au început cu constatarea că majoritatea programelor nu exploatau toate instrucțiunile procesorului, ci foloseau de fapt doar un mic subset al acestora. S-a observat că întregul sistem de operare UNIX , odată compilat, folosea doar 30% din instrucțiunile furnizate de Motorola 68000 . Deci procesorul avea un număr mare de tranzistoare însărcinate cu decodarea și executarea instrucțiunilor care în realitate nu sunt niciodată apelate. Ideea procesoarelor RISC este de a implementa doar acele instrucțiuni care sunt de fapt utilizate de programe și de a utiliza celelalte tranzistoare pentru a accelera procesoarele.

Procesoarele RISC s-au concentrat pe adăugarea multor registre , pe care programul le-ar putea folosi pentru a stoca valori intermediare ale datelor, pentru a evita accesul la memoria principală lentă. Un compilator bun a reușit să genereze cod care exploatează puternic registrele, reducând foarte mult accesul la memorie și crescând astfel performanța. Cu același tranzistor, un procesor RISC era mult mai rapid decât un procesor CISC clasic.

Procesoarele RISC au eliminat, de asemenea, multe moduri de adresare și au permis doar prelucrarea datelor stocate în registre. Numai instrucțiunile de load și store pot accesa memoria. Într-un procesor clasic, instrucțiunea ADD ar putea accepta date în memorie ca parametru. În cazul procesării datelor din memorie, procesorul va trebui să încarce datele în unele registre ascunse, să efectueze procesarea efectivă și apoi să salveze datele înapoi în memorie. Deci procesorul trebuia să aibă o unitate complexă de decodare și registre ascunse. Un procesor RISC care elimină acest mod de acces facilitează unitatea de decodare și nu are nevoie de registre ascunse. Dezavantajul este că programele trebuie să prevadă întotdeauna în mod explicit încărcarea și salvarea datelor din registre și, prin urmare, sunt în medie mai mari.

Când a fost dezvoltat proiectul RISC, memoria era o componentă foarte costisitoare și, prin urmare, reducerea densității instrucțiunilor stocate în memorie ar putea avea un efect economic real asupra mașinilor. Pentru a reduce acest efect, s-a decis să folosim cuvinte pe 32 de biți, un cuvânt foarte lung pentru acea vreme. Un cuvânt atât de mare a permis constantelor mici să fie stocate direct în instrucțiune pentru a reduce accesul la memorie. Mai mult, programele foloseau adesea aceleași date foarte frecvent și, prin urmare, în loc să salveze datele în memorie, procesorul le stoca într-un registru pentru a le avea imediat gata în timpul utilizării următoare, acest proces a făcut ca procesorul să fie mult mai rapid în teorie. De exemplu, o funcție matematică ar putea încărca date din memorie și apoi să funcționeze numai pe registre, făcând programul foarte rapid.

Cu toate acestea, pentru un observator extern nu era clar dacă paradigma RISC ar îmbunătăți efectiv performanța. Singura modalitate de a verifica acest lucru a fost să ruleze simulări, iar simulările au arătat că procesorul avea performanțe foarte ridicate.

Proiectul RISC și MIPS diferă foarte mult de modul în care au tratat registrele. Proiectul MIPS a adăugat un set de registre și le-a pus la dispoziție pentru instruire, în timp ce proiectul RISC a urmat o abordare diferită. Proiectul RISC a folosit conceptul de fereastră de registru . Procesorul avea multe registre, dar a pus la dispoziția programului doar un număr limitat. Când programul a efectuat un apel de sistem, procesorul a mutat fereastra de înregistrare într-un bloc liber de registre, acest lucru a evitat salvarea registrelor utilizate în memorie prin reducerea acceselor la memorie. Această tehnică a avut dezavantajul că, dacă o procedură ar avea multe variabile locale, procesorul ar rămâne în curând fără registre și, prin urmare, ar trebui să salveze unele date în memorie, în ciuda faptului că au alte registre, dar că, în afara ferestrei de registru, acestea nu sunt vizibile. Cercetătorii de la Stanford au ignorat conceptul de fereastră a registrului, crezând că un compilator inteligent ar putea folosi mai bine registrele decât managementul fix ca Berkeley.

RISC I

Primul produs al proiectului RISC a fost un procesor numit inițial Gold . Proiectarea sa a început în 1980 ca parte a cursului de proiectare VLSI, dar proiectarea sa a necesitat performanțe dincolo de cele oferite de programele de dezvoltare ale vremii. Programele s-au prăbușit frecvent, iar designerii au trebuit să rescrie sau să adapteze multe dintre programe pentru a proiecta procesorul. Realizarea procesorului final a durat o oră de calcule către un VAX 11/780 .

Proiectarea finală a RISC I a fost publicată pe ACM în 1981. Procesorul avea 44.500 de tranzistoare, implementa 31 de instrucțiuni și conținea 78 de registre pe 32 de biți. Procesorul a gestionat șase ferestre de 14 registre fiecare și 18 registre globale. Unitatea de control și decodare a ocupat doar 6% din tranzistoare, în timp ce într-un procesor clasic aceste unități au ocupat 50% din tranzistori. Unitatea care a ocupat cel mai mult spațiu a fost cea a buștenilor. Având în vedere puterea procesorului, microarhitectura a fost foarte simplă și simplă.

RISC Am folosit o conductă în două etape pentru a crește performanța, dar fără o reordonare a instrucțiunilor, așa cum fac CPU-urile moderne. Procesorul a avut probleme la gestionarea salturilor condiționate, deoarece a executat instrucțiunea imediat după salt, indiferent de rezultatul saltului. Compilatorul a trebuit să pună o instrucțiune independentă de salt după salt și de multe ori a pus un NOP pentru simplitate.

După o lună petrecută validând și remediind bug-urile proiectului, proiectanții din 22 iunie 1981 au apelat la turnătoria MOSIS pentru a produce procesorul cu o tehnologie de 2 µm (2000 nanometri la scară modernă). O serie de accidente și întârzieri au forțat turnătoria să refacă plăcile frontale ale procesorului de patru ori, iar primele exemplare de lucru nu au fost disponibile până în mai 1982. Primul computer funcțional bazat pe procesor a intrat în funcțiune pe 11 iunie. Testul procesorului a arătat rezultate dezamăgitoare, instrucțiunile au fost executate în 2 µs, deși proiectul original se aștepta să ruleze în 400 ns, procesorul a fost de cinci ori mai lent decât se aștepta. Explicația pentru acest defect nu a fost niciodată complet clarificată, dar unele instrucțiuni au fost executate la viteza așteptată și, prin urmare, se presupune că a fost mai degrabă o problemă de fabricație decât o problemă de proiectare.

Când proiectul a rulat la viteză maximă, performanța s-a dovedit excelentă. Simulările bazate pe o serie de programe mici care rulează pe 4 Megahertz RISC I, 5 Megahertz VAX 11/780 și 5 Megahertz pe 16 biți Zilog Z8000 au fost iluminante. Programele erau cu aproximativ 30% mai mari decât programele VAX echivalente și aproape la fel de mari ca cele ale modelului Z8000. Așadar, temuta explozie a mărimii codului nu a avut loc deoarece RISC I s-a dovedit de două ori mai rapid decât VAX și de patru ori mai rapid decât Z8000. A fost foarte interesant de remarcat faptul că procesorul a făcut aproximativ același număr de accesări ca un procesor CISC, acest lucru s-a datorat numărului mare de registre care a limitat accesul la memorie.

Succesul procesorului trebuie evaluat și în contextul tehnologic al vremii. Chiar dacă RISC I ar fi fost mai lent decât VAX, oricum ar fi fost un succes. Era un procesor RISC pe 32 de biți, care fusese fabricat de o turnătorie cu procese de fabricație vechi. Într-un design tradițional, o mare parte a cipului este dedicată unității de decodare; un procesor tradițional precum Motorola 68020 a necesitat construirea de noi turnătorii pentru a-l putea produce economic. Dacă aceeași turnătorie ar fi produs RISC I, decalajul dintre procesoare ar fi fost copleșitor.

RISC II

Pe măsură ce proiectul RISC I a progresat spre realizarea sa, cercetătorii Berkeley au început să dezvolte noua versiune care a luat numele de cod Blue . Lucrările la Blue au progresat mai încet decât proiectul Gold. Acest lucru s-a datorat atât lipsei de urgență, cât și schimbării echipelor de dezvoltare și a studenților. Noul design a încorporat mai multe caracteristici noi și îmbunătățiri care i-au sporit performanța.

Diferența cheie între procesoare a fost că noul design a eliminat una dintre cele trei linii dedicate gestionării cache-ului prin reducerea semnificativă a dimensiunii managerului de jurnal. Această modificare a necesitat o amalgamare strânsă cu magistrala de sistem, dar a fost un preț mic de plătit pentru un sistem mult mai rapid și, prin urmare, performanțe mai mari.

Noul proiect a fost mult mai frugal decât cel anterior. În timp ce Aurul conținea 78 de registre și șase ferestre, Blue avea 138 de registre împărțite în 7 ferestre de 32 de registre și 10 registre globale. Prezența mai multor registre în fiecare fereastră a crescut posibilitatea de a avea date direct în registre fără a fi nevoie să accesați memoria. În plus, noul design a fost atât de eficient încât, în ciuda faptului că a avut aproape dublu registrele proiectului anterior, a ocupat mai puține tranzistoare. Când proiectul a fost trecut la turnătorie, acesta ocupa 39.000 de tranzistoare și a fost numit RISC II.

O altă caracteristică importantă a procesorului a fost că acesta a inclus un format de instrucțiuni care a permis extinderea unora dintre ele. Unele instrucțiuni care foloseau un singur operator sau care nu folosesc niciunul (cum ar fi NOP ) au fost stocate într-un format compact de 16 biți care a fost apoi extins în instrucțiuni de 32 de biți în mod transparent în cadrul procesorului înainte de a ajunge la ALU . Această stratagemă a permis reducerea dimensiunii codului cu 30% prin îmbunătățirea densității codului și un program a funcționat mai repede pe albastru decât pe aur datorită accesului mai mic la memorie.

RISC II a fost produs corect de turnătorie și performanțele sale au fost foarte interesante. Performanța procesorului depinde de programele care rulează, dar procesorul a oferit performanțe între 85% și 256% comparativ cu VAX. Prin urmare, RISC II a reușit să depășească VAX de peste două ori în unele programe. Echipa a comparat procesorul cu Motorola 68000, cel mai bun procesor de pe piață la acea vreme. RISC II a depășit întotdeauna 68000 și a oferit performanțe între 140% și 420%.

Dezvoltări

Proiectul RISC sa încheiat cu realizarea RISC II, dar rezultatele sale au depășit proiectul. Nucleul a fost reutilizat pentru proiectul SOAP din 1984, care a folosit în esență nucleul RISC pentru a rula codul Smalltalk și mai târziu în proiectul VLSI-BAM care a construit un procesor capabil să ruleze programe Prolog în loc de Smalltalk. O altă evoluție a fost SPUR, un set de cipuri dezvoltat pentru a face o stație de lucru completă pe 32 de biți.

Proiectul RISC este mai puțin faimos decât alte proiecte, dar a stat la baza procesorului comercial SPARC dezvoltat de Sun Microsystems . Sun a fost cu prima stație SPARC care a demonstrat superioritatea clară a proiectului RISC față de alte proiecte, mașina sa fiind superioară celei a oricărui alt producător. Producătorii de aproape fiecare mașină bazată pe UNIX s-au convertit în procesoare RISC, ceea ce a dus la dezvoltarea procesoarelor DEC Alpha și RISC PA . În schimb, SGI a achiziționat MIPS Computer Systems . Din 1986, cei mai mari producători mondiali de semiconductori au creat procesoare RISC precum Motorola 88000 , Fairchild Clipper , AMD 29000, Intel i880 și PowerPC

De-a lungul anilor, paradigma RISC a răspândit tot mai mult arhitecturile clasice CISC, cum ar fi Intel x86 intern, funcționează acum ca procesor RISC. Ultimele procesoare x86 primesc instrucțiuni CISC, le convertesc în instrucțiuni RISC și le procesează intern ca procesoarele clasice RISC. Zona dedicată acestei conversii este mică în comparație cu suprafața totală a procesorului și, prin urmare, procesul de conversie este convenabil. Odată cu apariția acestor procesoare, distincția dintre procesoarele CISC și procesoarele RISC a devenit foarte neclară și neclară.

Bibliografie

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