Care este diferența dintre CISC și RISC?


Răspunsul 1:

RISC este, în general, „load-store” către / din registre. În general, trei registre sunt utilizate, cum ar fi ADD R1 = R2 + R3, încărcarea și stocarea pot fi sau nu o excepție cu doar două registre utilizate într-o instrucțiune.

CISC permite, în general, calculul cu valori de pe adresele de memorie, nefiind nevoie să le introducem mai întâi în registre. De asemenea, ar putea avea mai multe (complexe) moduri de adresare, care să permită de la unul la mai multe registre pentru generarea de adrese.

CISC este, în general, cu două operanduri, cu ADD, de exemplu, având același registru (sau adresa de memorie) folosit pentru destinație, dar este același utilizat pentru una dintre surse.

Aceasta a fost o afacere mare, iar RISC cu hardwired și CISC folosind microcode.

Acum, microarhitectura pentru CISC, cel puțin x86 (dacă nu toate CISC utilizate, ceea ce înseamnă că mainframes-ul este singurul celălalt CISC supraviețuitor; microcontrolerele pot fi o excepție) descompun instrucțiunile pentru microops (operațiuni asemănătoare micro / RISC) care pot planifica ieșirea din -comandă spre deosebire de microcodurile originale.

RISC poate chiar să facă asta, de exemplu, un ARM mai nou (nu la început), deci diferențele sunt mai mici decât erau înainte.

ARM original nu a avut instrucțiuni de divizare întregi, deoarece este prea complex, și să nu mai vorbim de orice pentru punct flotant. Acum [complexitatea] redusă pentru R în RISC se aplică mai puțin, deoarece punctul flotant este inerent complex și toate procesoarele principale RISC acceptă chiar și instrucțiuni de rădăcină pătrată și trigonometrie.


Răspunsul 2:

CISC este optimizat pentru a lucra cât mai mult posibil de la o anumită dimensiune a instrucțiunilor. Acest lucru se datorează faptului că procesoarele nu au avut memorie cache în acel moment, iar citirea instrucțiunilor din memorie ar fi nevoie de mai multe cicluri, astfel încât o instrucțiune complexă cu multe schimbări de stare nu a fost o problemă atâta timp cât a fost compactă.

RISC este optimizat pentru procesoarele care * au * un cache de instrucțiuni și care schimbă blocajul: cache-urile vă pot oferi cu 64 și 128 de biți date în fiecare ciclu - atât timp cât sunt aliniate. Dintr-o dată, puteți rula 1 sau chiar 2 instrucțiuni pe ciclu atâta timp cât nu există dependență, deci instrucțiuni curate care provoacă doar o schimbare de stare unică devin mult mai rapide.


Răspunsul 3:

CISC este optimizat pentru a lucra cât mai mult posibil de la o anumită dimensiune a instrucțiunilor. Acest lucru se datorează faptului că procesoarele nu au avut memorie cache în acel moment, iar citirea instrucțiunilor din memorie ar fi nevoie de mai multe cicluri, astfel încât o instrucțiune complexă cu multe schimbări de stare nu a fost o problemă atâta timp cât a fost compactă.

RISC este optimizat pentru procesoarele care * au * un cache de instrucțiuni și care schimbă blocajul: cache-urile vă pot oferi cu 64 și 128 de biți date în fiecare ciclu - atât timp cât sunt aliniate. Dintr-o dată, puteți rula 1 sau chiar 2 instrucțiuni pe ciclu atâta timp cât nu există dependență, deci instrucțiuni curate care provoacă doar o schimbare de stare unică devin mult mai rapide.