DIFFERENZE TRA ARCHITETTURE C.I.S.C.  E   R.I.S.C.
a)   R.I.S.C.= Reduced Instruction Set Computer.
b)   C.I.S.C.= Compiler Iinstruction Set Computer.
CARATTERISTICHE ARCHITETTTURE R.I.S.C.
 
-  Tutte le istruzioni hanno la stessa lunghezza (word);
  -  Insieme ridotto dei modi di indirizzamento;
  -  Formato delle istruzioni molto simile tra loro;
  -  Operazioni tra registri.
 
 
CARATTERISTICHE ARCHITETTTURE C.I.S.C.
 
-  Istruzioni con lunghezze diverse (minimo di un byte);
  -  Molti modi di indirizzamento;
  -  Formato non omogeneo delle istruzioni, campi analoghi in posizioni differenti;
  -  Operazioni tra registri ed operazioni con la memoria.
 
 
Il 
compilatore è un programma che traduce un file sorgente (scritto in un linguaggio ad alto livello) in liguaggio a basso livello (linguaggio macchina),cioè costituito di soli 0 ed 1.
FORMATO ISTRUZIONI NELLE ARCHITETTURE R.I.S.C.
Esempio: PWR PC 
-  32 bit;
  -  Il codice operativo si trova sempre nei primi sei bit;
  -  Dal codice operativo si deduce il formato dell’istruzione;
  -  Esistono comunque pochi formati.
 
 
Formato-esempio di un’istuzione aritmetica (addizione)
%DRAWING{tabella1}%
 
-  Nel caso di un’istruzione aritmetica il campo “codice oprativo” conterrà il valore 31 (in codice ASCII);
  -  Il campo “ALU” specifica l’operazione da eseguire, in questo caso, conterrà il valore 266 (in codice ASCII), che indica l’addizione;
  -  OE,Rc, sono due campi, ciascuno da un  bit, che specificano su quale bit dei registri di stato devo agire dopo aver eseguito l’istruzione.Nel caso che Rc=1, si potrannno modificare I bit Lt e Gt del registro di stato;
  -  Presi insieme (OE ed Rc), danno informazioni riguardo il tipo di addizione (ad esempio ADD,ADDI,ADDU).
 
 
Formato-esempio di  una istruzione aritmetica con operando immediato e di una istruzione di caricamento\memorizzazione registri
%DRAWING{tabella2}%
Esempio di istruzione:               Lwz Rd,d(Ra)
 
-  Rd, registro destinazione;
  -  Ra, registro operando;
  -  SIMM, operando da sommare (è un operando immediato) ad Ra, il risultato della somma verrà messo in Rd;
  -  La “z” in Lwz , sta per zero ed indica che se Ra=0, calcola l’indirizzo sorgente tramite un indirizzamento relativo ad Ra, altrimenti, se Ra¹0 calcola l’indirizzo sorgente tramite un indirizzamento assoluto.
  -  In Rd viene caricato il contenuto della locazione di memoria il cui indirizzo è;
 
 
La somma tra il contenuto del campo SIMM ed il contenuto della locazione specificata con indirizzo Ra se Ra¹0 (indirizzamento relativo ad Ra);
Se Ra=0 considero l’indirizzo contenuto in SIMM (indirizzamento assoluto); 
Formato-esempio di  un’istruzione di salto incondizionato
%DRAWING{tabella3}%
 
-  distingue se LI è un indirizzo assoluto o relativo al PC;
  -  LI, stabilisce se l’indirizzo dell’istruzione di salto va salvata in un registro;
 
 
Osservazione
L’ultimo bit di ogni formato istruzione da “indicazioni” sui comportamenti dell’istruzione valutata.
FORMATO ISTRUZIONI NELLE ARCHITETTURE C.I.S.C.
Esempio:  Intel, famiglia “x86”
 
-  Istruzioni con lunghezza variabile;
  -  Il codice operativo può occupare diversi bit;
  -  Esistono differenti formati, e, campi analoghi possono occupare  differenti posizioni a seconda dell’istruzione utilizzata. 
 
 
Nel formato si possono distinguere due campi principali:
1.   
Campo prefisso   
        --->  Prefisso istruzione [0/1 byte]
        --->  Dimensione indirizzo [0/1 byte]
        --->  Dimensione operandi [0/1 byte]
        --->  Segmento [0/1 byte]
2.   
Campo istruzione    
        --->  Codice operativo [2 byte]
        --->  Mod R/M [0/1 byte]
        --->  SIB [0/1 byte]
        --->  Scostamento [0/1/2/3/4 byte]
        --->  Immediato [0/1/2/3/4 byte]
  %DRAWING{tabella4}%               
 
-  Codice operativo;
  -  Mod R/M (+);
  -  SIB (+);
  -  Scostamento (+);
  -  Immediato;
  -  Prefisso struzione;
  -  Dimensione indirizzo;  
  -  Dimensione operando; 
  -  Segmento;  
 
 
(+)Possono anche non esserci.
                                      Giusti M.,Grassi M.,Mariani M.
Caratteristiche CISC
Approccio fondamentale: la complessità si sposta dal codice all'hardware
Conseguenze della scelta per il programmatore: il codice è molto compatto e occorre poca memoria per contenerlo; è l'hardware che si incarica di decodificare istruzioni anche molto compatte e molto complesse
Conseguenze della scelta a livello hardware: 
-  Pochi registri.
  -  Presenza di una ROM di decodifica.
  -  ISA molto articolato con centinaia di istruzioni.
  -  Modalità di indirizzamento memoria-memoria 
 
 
Caratteristiche RISC
Approccio fondamentale: la complessità si sposta dall'hardware al software, ovvero al compilatore che deve essere molto efficiente
Conseguenze della scelta per il programmatore: la dimensione del codice aumenta in favore della semplificazione dell'hardware
Conseguenze della scelta a livello hardware: 
-  Molti registri
  -  Non esiste la modalità di indirizzamento memoria-memoria, ma alla memoria si accede solo con il load e lo store
  -  ISA (instruction set architecture) con qualche decina di istruzioni soltanto
  -  direct execution
  -  uso della pipeline per diminuire il ritardo del critical path.
 
 
-- 
GiuseppeMacario - 30 May 2003