CISC e RISC

In questo articolo voglio parlarvi di una branca delll’informatica che si mischia all’elettronica.

E’ molto interessante, e ci insegnerà a capire quindi la differenza delle varie microarchitetture hardware, questa branca si chiama appunto Architettura dei Sistemi Operativi, ed è anche una materia di studio all’università, generalmente poco considerata ed odiata dagli studenti, invece scopriremo che è proprio da qui che dobbiamo iniziare a capire come funziona l’hardware.

Vi parlerò quindi della microarchitettura hardware, che si divide in due grandi famiglie: CISC e RISC.

Queste due grandi famiglie a sua volta si dividono in tantissime sottofamiglie, almeno dalla parte dei RISC, e negli articoli futuri queste sottofamiglie le andremo a toccare con mano, quindi nel loro linguaggio più profondo che li differenzia, l’assembly.

L’assembly, ed attenzione sto dicendo assembly, quindi il linguaggio. In molti, ahimè anche insegnanti di scuola superiore confondono l’assembly con l’assembler che è il compilatore del linguaggio assembly. Grave, gravissimo!!!

Quindi, dando per scontato che non fate lo stesso errore di tanta gente che si riempie la bocca di paroloni senza conoscerne il significato, ci tengo a precisare che il linguaggio assembly cambia di architettura in architettura, insomma è un linguaggio strettamente legato all’architettura hardware ed ai registri del suo microprocessore, e dalle loro istruzioni, detto anche livello ISA o parco ISA, cioè Instruction Set Architecture.

Torniamo indietro. Parlavamo di due grandi famiglie: CISC e RISC.

CISC sta per Complex Instruction Set Architecture Computer (o Computing, alcuni libri lo riportano in un modo, altri in un altro), quindi computer dal parco istruzioni complesso, ed in pratica sono i PC che utilizziamo tutti i giorni, gli X86 a 32bit e quelli a 64bit, detti anche X64 oppure X86_64.

RISC sta per Reduced Instruction Set Architecture Computer (o Computing), quindi computer dal parco istruzioni ridotto, e sono tutti quelli che appartengono al cosiddetto mondo embedded, quindi i nostri smartphone (non tutti, ho visto dei rari casi in cui la CPU era X86), i router (anche qui abbiamo delle eccezioni e ve le mostrerò quando vi farò vedere del reversing hardware di alcune schede), le smart tv, le centraline delle auto, ecc… ed anche il nostro amatissimo Raspberry Pi!!!

Il Raspberry Pi v3 ad esempio è un RISC, e per la precisione un armv7l, ma i programmi vengono compilati per armv6l per mantenere la retrocompatibilità con le vecchie versioni del Raspberry Pi.

Il nostro PC di casa invece è un CISC, e può essere un X86 (32bit) o un X64 (64bit).

Un programma compilato per X86 (quindi a 32bit) funziona su un PC con un sistema operativo a 64 bit, il contrario invece no, perchè?

Ma cosa sono questi bit? Sono l’ampiezza fisica dei registri del processore. Quindi è ovvio che un programma scritto su X86 gira su X64, utilizzerà la metà dei registri.

Un programma compilato per un’architettura non può funzionare su un’altra architettura a meno che non venga ricompilato sulla stessa, motivo per il quale spesso vengono utilizzati i linguaggi interpretati, dove solo l’interprete e le librerie dello stesso vengono compilate per quella determinata architettura.

Esempi di microarchitetture RISC sono: amdv6l, armv7l, adm5120, adm8668, bcm53xx, brcm2708, brcm47xx, bcm63xx, ar7, ar71xx, ecc…



Leave a comment