RISC ( English reduced instruction set computer [1] - un computer cu un set de instrucțiuni simplificate / reduse ) este o abordare arhitecturală a proiectării procesoarelor , în care performanța este crescută prin codificarea instrucțiunilor în așa fel încât decodarea acestora să fie mai ușoară și timpul de executie este mai scurt. Seturile de instrucțiuni ale procesoarelor RISC timpurii nu aveau nici măcar instrucțiuni de multiplicare și împărțire. De asemenea, face mai ușor overclockarea și face superscalar (paralelizarea instrucțiunilor în mai multe unități de execuție) mai eficient.
Seturile de instrucțiuni din arhitecturile anterioare, pentru a facilita scrierea manuală a programelor în limbaje de asamblare sau direct în codul mașinii și pentru a face compilatorii mai ușor de implementat , au funcționat cât mai mult posibil. Nu era neobișnuit ca kiturile să includă instrucțiuni pentru suportul direct al constructelor de limbaj de nivel înalt . O altă caracteristică a acestor seturi este că majoritatea instrucțiunilor, de regulă, au permis toate metodele de adresare posibile (așa-numita „ ortogonalitate a setului de instrucțiuni ”). De exemplu: atât operanzii, cât și rezultatul în operații aritmetice sunt disponibile nu numai în registre , ci și prin adresare directă și direct în RAM . Mai târziu, astfel de arhitecturi au fost numite CISC ( Complex instruction set computer ) .
Cu toate acestea, multe compilatoare nu au exploatat întregul potențial al unor astfel de seturi de instrucțiuni, iar metodele complexe de adresare durează mult timp din cauza accesărilor suplimentare la memoria principală relativ lentă. S-a constatat că astfel de funcții sunt executate mai rapid printr-o secvență de instrucțiuni de mașină mai simple dacă procesorul este simplificat și există loc în el pentru un număr mai mare de registre, datorită căruia numărul de accesări la RAM poate fi redus. În primele arhitecturi clasificate ca RISC, majoritatea instrucțiunilor de simplificare a decodării au aceeași lungime și structură similară, operațiile aritmetice funcționează numai cu registre, iar lucrul cu memoria trece prin instrucțiuni separate pentru încărcarea (încărcarea) și salvarea (stocarea) instrucțiunilor. Aceste proprietăți au făcut posibilă o mai bună echilibrare a etapelor conductei , făcând conductele din RISC mult mai eficiente și permițând creșterea frecvenței de ceas.
La mijlocul anilor 1970, diverși cercetători (în special de la IBM ) au descoperit că majoritatea combinațiilor de instrucțiuni și metode de adresare ortogonală nu erau folosite în majoritatea programelor generate de compilatorii din acea vreme. Sa constatat, de asemenea, că în unele arhitecturi de microcoduri , operațiunile complexe efectuate de o singură instrucțiune de mașină au fost mai lente decât secvențele echivalente algoritmic de operații mai simple. Acest lucru s-a datorat, în parte, faptului că multe arhitecturi au fost dezvoltate în grabă, iar microcodul doar acelor instrucțiuni ale mașinii care au fost folosite mai des a fost bine optimizat. [2]
Deoarece multe programe reale își petrec cea mai mare parte a timpului efectuând operații simple, mulți cercetători au decis să se concentreze pe realizarea acestor operații cât mai rapid posibil. Performanța procesorului este limitată de timpul pe care procesorul îl petrece efectuând cele mai lente operațiuni în procesul de procesare a oricărei instrucțiuni. Reducerea duratei acestor pași oferă o îmbunătățire generală a performanței și, adesea, accelerează execuția instrucțiunilor datorită pipelinei mai eficiente. [3] Accentul pe instrucțiuni simple duce la arhitectura RISC, care își propune să facă instrucțiunile atât de simple încât să poată fi ușor canalizate și să nu ia mai mult de un ciclu de mașină pe pas de conductă la frecvențe înalte.
Mai târziu s-a remarcat că cea mai semnificativă caracteristică a RISC este separarea instrucțiunilor pentru prelucrarea datelor și accesul la memorie - memoria este accesată numai prin instrucțiunile de încărcare și stocare, iar toate celelalte instrucțiuni sunt limitate la lucrul cu registrele hardware ale procesorului. Acest lucru a simplificat arhitectura procesorului:
Ca rezultat, arhitecturile RISC au devenit informal numite și arhitecturi de încărcare/stocare . [patru]
Adesea, cuvintele „ set de instrucțiuni reduse ” sunt înțelese ca minimizând numărul de instrucțiuni din setul de instrucțiuni. De fapt, multe procesoare RISC au mai multe instrucțiuni de mașină decât procesoarele CISC . [5] [6] ale unor procesoare RISC, cum ar fi transputoarele INMOS au cel puțin la fel de multe instrucțiuni de mașină ca, de exemplu, sistemele de instrucțiuni ale procesoarelor IBM System / 370 CISC și, invers, procesorul DEC CISC PDP-8 are doar 8 instrucțiuni de bază și câteva instrucțiuni extinse.
De fapt, termenul „redus” din nume descrie faptul că cantitatea (și timpul) de muncă efectuată de fiecare instrucțiune individuală a mașinii este redusă - cu maximum un ciclu de acces la memorie - în timp ce instrucțiunile complexe ale procesoarelor CISC pot necesita sute de cicluri de acces.la memorie pentru executarea acestuia. [7]
Unele arhitecturi special concepute pentru a minimiza numărul de instrucțiuni sunt foarte diferite de arhitecturile RISC clasice și au primit denumiri diferite: Computer set de instrucțiuni minime ( MISC ), Calculator set de instrucțiuni zero ( ZISC ), RISC final (numit și OISC), arhitectură declanșată de transport (TTA), etc.
De-a lungul anilor după apariția arhitecturii RISC, au fost implementate și alte alternative - de exemplu, VLIW , MISC , OISC , procesare masiv paralelă , matrice sistolice ( matrice systolic în engleză ), calcul reconfigurabil ( calcul reconfigurabil în engleză ), arhitectură streaming .
Primul sistem care poate fi numit sistem „RISC” este supercomputerul „ CDC 6600 ” , care a fost creat în 1964, cu zece ani înainte ca termenul să fie inventat. CDC 6600 avea o arhitectură „RISC” cu doar două moduri de adresare („Înregistrare+Înregistrare” și „Înregistrare+Imediat”) și 74 de coduri de instrucțiuni (în timp ce 8086 avea 400 de coduri de instrucțiuni). CDC 6600 avea 11 conducte de procesare aritmetică și logică, precum și cinci încărcătoare și două dispozitive de stocare. Memoria era multi-bloc, astfel încât toate dispozitivele de stocare a încărcăturii puteau funcționa simultan. Frecvența ceasului de bază/instrucțiuni a fost de 10 ori mai rapidă decât timpul de acces la memorie. Jim Thornton și Seymour Cray , designerii CDC 6600, au creat un procesor puternic pentru acesta, care i-a permis să proceseze rapid cantități mari de date digitale. Procesorul principal era susținut de zece procesoare periferice simple care executau operațiuni I/O și alte funcții ale sistemului de operare. [8] Mai târziu s-a glumit că termenul „RISC” înseamnă de fapt „Inventat cu adevărat de Seymour Cray ” .
O altă mașină cu arhitectură „RISC” timpurie este minicalculatorul „ Data General Nova ”, dezvoltat în 1968.
Prima încercare de a crea un procesor „RISC” pe un cip a fost făcută de „ IBM ” în 1975. Această muncă a dus la crearea familiei de procesoare „ IBM 801 ”, care au fost utilizate pe scară largă în diferite dispozitive IBM. 801 a fost lansat în cele din urmă sub formă de cip sub numele „ ROMP ” în 1981. „ROMP” înseamnă „Research OPD (Office Product Division) Micro Processor”, adică „microprocesor de cercetare”, dezvoltat în divizia de dezvoltare de birou. După cum sugerează și numele, procesorul a fost proiectat pentru sarcini „mini”, iar când IBM a lansat IBM RT-PC bazat pe acesta în 1986 , nu a funcționat foarte bine. Cu toate acestea, lansarea lui 801 a fost urmată de mai multe proiecte de cercetare, dintre care unul a dus la sistemul „ POWER ”.
Cu toate acestea, cele mai cunoscute sisteme RISC au fost dezvoltate ca parte a programelor de cercetare universitare finanțate de programul DARPA VLSI.[ clarifica ]
Proiectul RISC de la UC Berkeley a fost început în 1980 de David Patterson și Carlo Sequina. Cercetarea sa bazat pe utilizarea conductelor și utilizarea agresivă a tehnicii ferestrei de registru . Un procesor tipic are un număr mic de registre , iar un program poate folosi orice registru în orice moment. Un procesor care utilizează tehnologii de fereastră de registre are un număr foarte mare de registre (de ex. 128), dar programele pot folosi doar un număr limitat (de exemplu, doar 8 la un moment dat).
Un program limitat la doar opt registre pentru fiecare procedură poate efectua apeluri de procedură foarte rapide: „fereastra” pur și simplu trece la blocul de 8 registre al procedurii dorite, iar la întoarcerea din procedură, se comută înapoi la registrele apelului. procedura (într-un procesor convențional, majoritatea procedurilor atunci când sunt apelate sunt forțate să salveze valorile unor registre pe stivă pentru a utiliza aceste registre în timpul execuției procedurii (când procedura revine, valorile registrelor sunt restaurat din stivă).
Proiectul RISC a produs procesorul RISC-I în 1982. Avea 44.420 de tranzistori (pentru comparație: erau aproximativ 100.000 dintre ei în procesoarele CISC de atunci). „RISC-I” avea doar 32 de instrucțiuni, dar era mai rapid decât orice procesor cu un singur cip al vremii. Un an mai târziu, în 1983, a fost lansat „RISC-II”, care consta din 40.760 de tranzistori, a folosit 39 de instrucțiuni și a funcționat de trei ori mai rapid decât „RISC-I”. Proiectul Berkeley RISC a influențat familia de procesoare RISC SPARC și DEC Alpha .
Aproape în același timp, în 1981, John Hennessy a început un proiect similar numit „Arhitectura MIPS” la Universitatea Stanford . Creatorul „MIPS” sa concentrat aproape complet pe procesarea conductelor - a încercat să „strângă totul” din această tehnologie. Pipelining-ul a fost folosit și la alte procesoare, unele dintre ideile apărute în MIPS au permis procesorului dezvoltat să funcționeze mult mai rapid decât altele similare. Cea mai importantă cerință a fost aceasta: orice instrucțiune a procesorului durează un ciclu de ceas. Deci, conducta a putut transfera date mult mai rapid, iar procesorul a început să funcționeze mult mai rapid. Din păcate, de dragul acestei cerințe, operațiuni utile precum înmulțirea sau împărțirea au fost eliminate din setul de instrucțiuni.
În primii ani, încercările de dezvoltare a arhitecturii RISC erau binecunoscute, dar au rămas în cadrul laboratoarelor de cercetare universitare care le-au dat naștere. Mulți din industria calculatoarelor credeau că beneficiile procesoarelor „RISC” nu se vor concretiza atunci când sunt utilizate în produse reale, din cauza eficienței scăzute a memoriei a instrucțiunilor compuse. Cu toate acestea, din 1986, proiectele de cercetare RISC au început să producă primele produse funcționale. Procesorul RISC de la Stanford a fost implementat în familia de procesoare Rxxxx a MIPS Technologies .
După cum sa dovedit la începutul anilor 1990, arhitecturile RISC permit performanțe mai mari decât CISC, datorită utilizării unei abordări superscalare și VLIW , precum și posibilității de a crește serios frecvența ceasului și de a simplifica cristalul, eliberând zona pentru cache . , atingand capacitati uriase. . De asemenea, arhitecturile RISC au făcut posibilă reducerea semnificativă a consumului de energie al procesorului prin reducerea numărului de tranzistori.
La început, arhitecturile RISC au fost cu greu acceptate de piață din cauza lipsei de software pentru ele. Această problemă a fost rezolvată prin portarea sistemelor de operare asemănătoare UNIX ( SunOS ) la arhitecturi RISC.
În prezent, multe arhitecturi de procesoare sunt asemănătoare RISC, cum ar fi ARM , DEC Alpha , SPARC , AVR , MIPS , POWER și PowerPC . Cele mai utilizate procesoare x86 în computerele desktop erau procesoarele CISC, dar procesoarele mai noi, începând cu Intel Pentium Pro (1995), sunt procesoarele CISC cu un nucleu RISC [9] . Ele convertesc instrucțiunile CISC ale procesoarelor x86 într-un set mai simplu de instrucțiuni RISC interne chiar înainte de execuție.
După ce procesoarele cu arhitectură x86 au fost convertite la arhitectura RISC superscală, se poate spune că majoritatea procesoarelor existente astăzi se bazează pe arhitectura RISC.
Arhitecturi de procesoare bazate pe tehnologii RISC | |
---|---|
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |