Wat is het verschil tussen CISC en RISC?


Antwoord 1:

RISC is over het algemeen "load-store" van / naar registers. Over het algemeen worden drie registers gebruikt, zoals ADD R1 = R2 + R3, laden en opslaan kan al dan niet een uitzondering zijn met slechts twee registers die in een instructie worden gebruikt.

CISC staat in het algemeen berekening toe met waarden uit geheugenadressen, zonder deze eerst in registers te hoeven plaatsen. Het zou ook meer (complexe) adresseringsmodi kunnen hebben, van één tot meer registers voor het genereren van adressen.

CISC is meestal twee-operand, met bijv. ADD met hetzelfde register (of geheugenadres) dat wordt gebruikt voor de bestemming, maar ook hetzelfde als voor een van de bronnen.

Vroeger was dit een groot probleem, en RISC bedraad en CISC met microcode.

Nu microarchiteture voor CISC, ten minste x86 (zo niet alle CISC in gebruik, wat betekent dat IBM mainframes de enige andere overlevende CISC zijn; microcontrollers kunnen een uitzondering zijn) breekt instructies af tot microops (micro / RISC-achtige bewerkingen) die out-of-planning kunnen plannen -order in tegenstelling tot originele microcode.

RISC kan dat zelfs doen, bijv. Nieuwere ARM (in eerste instantie niet), dus de verschillen zijn minder dan vroeger.

Originele ARM had geen integer deling instructie omdat het te complex was, laat staan ​​een voor drijvende komma. Nu is de verminderde [complexiteit] voor R in RISC minder van toepassing omdat het zwevende punt inherent complex is en alle belangrijke RISC CPU's zelfs instructies voor vierkantswortels en trigonometrie ondersteunen.


Antwoord 2:

CISC is geoptimaliseerd om zoveel mogelijk werk te doen vanaf een gegeven instructiegrootte. Dit komt omdat CPU's destijds geen cache hadden en het lezen van de instructies uit het geheugen meerdere cycli zou vergen, dus een complexe instructie met veel statuswijzigingen was geen probleem zolang het compact was.

RISC is geoptimaliseerd voor CPU's die * wel * een instructiecache hebben, en dat de bottleneck verandert: caches kunnen u gemakkelijk 64 en 128 bits aan gegevens elke cyclus geven - zolang deze zijn uitgelijnd. Plots kun je 1 of zelfs 2 instructies per cyclus uitvoeren zolang er geen afhankelijkheid is, dus schone instructies die slechts een enkele statusverandering veroorzaken, worden veel sneller.


Antwoord 3:

CISC is geoptimaliseerd om zoveel mogelijk werk te doen vanaf een gegeven instructiegrootte. Dit komt omdat CPU's destijds geen cache hadden en het lezen van de instructies uit het geheugen meerdere cycli zou vergen, dus een complexe instructie met veel statuswijzigingen was geen probleem zolang het compact was.

RISC is geoptimaliseerd voor CPU's die * wel * een instructiecache hebben, en dat de bottleneck verandert: caches kunnen u gemakkelijk 64 en 128 bits aan gegevens elke cyclus geven - zolang deze zijn uitgelijnd. Plots kun je 1 of zelfs 2 instructies per cyclus uitvoeren zolang er geen afhankelijkheid is, dus schone instructies die slechts een enkele statusverandering veroorzaken, worden veel sneller.