Hva er forskjellen mellom CISC og RISC?


Svar 1:

RISC er vanligvis "last-store" til / fra registre. Vanligvis brukes tre registre som ADD R1 = R2 + R3, last og lagring kan være eller ikke være et unntak med bare to registre brukt i en instruksjon.

CISC tillater vanligvis beregning med verdier fra minneadresser, og trenger ikke å føre dem først inn i registre. Det kan også ha flere (komplekse) adressemodus, noe som tillater fra et til flere registre for adressegenerering.

CISC er vanligvis to-operand, med f.eks. ADD som har samme register (eller minneadresse) som brukes til destinasjon, men også det samme som brukes for en av kildene.

Dette pleide å være en stor avtale, og RISC hardwired og CISC ved hjelp av mikrokode.

Nå mikroarkitetur for CISC, minst x86 (hvis ikke all CISC i bruk, noe som betyr at IBM mainframes den eneste andre overlevende CISC; mikrokontrollere kan være et unntak) bryter instruksjonene ned til mikrooper (mikro / RISC-lignende operasjoner) som kan planlegge out-of -ordre i motsetning til for den opprinnelige mikrokoden.

RISC kan til og med gjøre det, for eksempel nyere ARM (ikke med det første), så forskjellene er mindre enn de pleide å være.

Original ARM hadde ingen helhetsdelingsinstruksjon da den var for komplisert, enn si noe for flytende punkt. Nå gjelder den reduserte [kompleksiteten] for R i RISC mindre ettersom flytende punkt iboende er sammensatt og alle de viktigste RISC-prosessorene støtter selv opp til kvadratrot- og trigonometriinstruksjoner.


Svar 2:

CISC er optimalisert for å gjøre så mye arbeid som mulig fra en gitt instruksjonsstørrelse. Dette er fordi CPUer ikke hadde hurtigbuffer den gang, og det å lese instruksjonene fra minnet vil ta flere sykluser, så en kompleks instruksjon med mange tilstandsendringer var ikke et problem så lenge den var kompakt.

RISC er optimalisert for CPUer som * har * en instruksjonsbuffer, og som endrer flaskehalsen: cacher kan enkelt gi deg 64 og 128 bits data hver syklus - så lenge den er justert. Plutselig kan du kjøre 1 eller til og med 2 instruksjoner per syklus, så lenge det ikke er noen avhengighet, så rene instruksjoner som bare forårsaker en endring av en enkelt tilstand blir mye raskere.


Svar 3:

CISC er optimalisert for å gjøre så mye arbeid som mulig fra en gitt instruksjonsstørrelse. Dette er fordi CPUer ikke hadde hurtigbuffer den gang, og det å lese instruksjonene fra minnet vil ta flere sykluser, så en kompleks instruksjon med mange tilstandsendringer var ikke et problem så lenge den var kompakt.

RISC er optimalisert for CPUer som * har * en instruksjonsbuffer, og som endrer flaskehalsen: cacher kan enkelt gi deg 64 og 128 bits data hver syklus - så lenge den er justert. Plutselig kan du kjøre 1 eller til og med 2 instruksjoner per syklus, så lenge det ikke er noen avhengighet, så rene instruksjoner som bare forårsaker en endring av en enkelt tilstand blir mye raskere.