Estratto del documento

Lezione 08/10/2021

Classificazione processori

Set di istruzioni

Classificazione processori

I processori possono essere classificati in base a:

set di istruzioni;

tipologia di struttura dati interna;

accesso ai dati;

tipo di dati elaborati.

Set di istruzioni

Un processore può essere di due tipi:

CISC: Complex Instruction Set Computer.

RISC: Reduced Instruction Set Computer.

La differenza principale sta nelle modalità di accesso alla memoria centrale. In una macchina

RISC gli accessi in memoria avvengono solo con operazioni di LOAD (carica dalla memoria

al processore) e STORE (immagazzina dal processore alla memoria).

Esempio: somma di i1 e i2. Nel caso di un processore con set di istruzioni CISC, il tutto può

essere effettuato in un'unica istruzione

ADD i1 i2 i3 (M[i1] + M[i2] + M[i3])

Lezione 08/10/2021 1

Nel caso di un processore RISC:

LOAD i1 x (M[i1] -> x)

LOAD i2 y (M[i2] -> y)

ADD x y x (sovrascrive x) oppure ADD x y z (x + y -> z)

STORE x i3 (x -> M[i3]) oppure STORE z i3 (z -> M[i3])

Le istruzione possono essere strutturate secondo due logiche differenti:

lunghezza costante: ogni istruzione ha la stessa lunghezza; questo semplifica la fase di

fetch dell'istruzione in quanto il numero dei bit che devono essere copiati dalla memoria

è sempre uguale (il program counter viene incrementato di una quantità costante);

lunghezza variabile: le istruzioni hanno lunghezza differente; il fetch risulta essere più

complesso; una volta determinata la banda di memoria (massimo numero di bit

prelevabili in una volta) è possibile definire il numero di fetch da effettuare facendo

riferimento al codice operativo dell'istruzione che, tramite il firmware, permette di

risalire al numero di byte da caricare.

Lezione 08/10/2021 2

Lezione 14/10/2021

Classificazione processori (cont.)

Tipo di struttura dati interna

Architettura ad accumulatore

Architettura a registri

Architettura a pila (stack)

Notazione polacca

Accesso ai dati

Indirizzamento immediato

Indirizzamento diretto o indicizzato

Indirizzamento con spiazzamento

Indirizzamento indiretto

Altre modalità

Classificazione processori (cont.)

Le istruzioni sono costituite come una sequenza di bit: i primi sono dedicati al codice operativo e vengono decisi in

fase di progettazione del processore. Ad esempio, con 6 bit dedicati per le operazioni si possono memorizzare, e

6

2

quindi eseguire, operazioni. Questo meccanismo è utile perché permette di eseguire più di una operazione (per 30

5

2 = 32

operazioni, ad esempio, ho bisogno di quindi 5 bit con scarto di 2 operazioni eventualmente

implementabili in futuro).

Nel caso di macchina CISC gli altri bit a disposizione sono utilizzati in maniera eterogenea, mentre in una macchina

RISC i bit sono utilizzati in maniera più eterogenea in quanto è possibile effettuare un solo accesso in memoria per

istruzione. 2 k

Identificazione byte in memoria: byte possono essere indirizzati da bit e ciascun byte può essere identificato da

k

un indice (i-esimo byte)

ℹ REGISTRO: struttura HW del processore in cui vengono memorizzati i dati in determinate celle (fisso

un numero di registri, ad esempio 32 o 64, per cui ho bisogno 5 o 6 bit per localizzare il dato all'interno

di essi).

Posso applicare delle convenzioni per utilizzare gli operandi ad esempio: R1 e R31 sono registri di input e R27 è il

registro in cui memorizzare il risultato dell'operazione che utilizza R1 e R31 come operandi.

Tipo di struttura dati interna

Lezione 14/10/2021 1

Architettura ad accumulatore

Rappresenta la struttura più semplice, che prevede la presenza di un'unica unità di memorizzazione all'interno del

processore interessate per le operazioni di input e quelle di output. Ad esempio, nel caso di una ADD, un solo

operando che deve essere preso dalla memoria (per questo non è una macchina RISC). Un altro vantaggio

conseguente dall'utilizzo di una sola struttura di memorizzazione, è quello della semplicità nella gestione dell'ALU.

L'indirizzo dell'operando è l'unico indirizzo contenuto nella sequenza di bit che identificano l'istruzione ed è grazie a

questo indirizzo che la LMD riesce a prelevare l'operando dalla memoria. Un selettore decide se utilizzare il nuovo

valore dell'accumulatore oppure il valore dalla LMD.

Lezione 14/10/2021 2

ℹ LMD (Load Memory Data): registro specifico nel processore, connesso alla porta dati in uscita della

memoria e in ingresso all'ALU e all'accumulatore.

Gli svantaggi di questa architettura derivano dalla necessità di trasferire il dato di interesse nell'accumulatore e

salvare il dato attualmente presente nell'accumulatore in memoria.

Architettura a registri

Un architettura di questo tipo presenta nel processore locazioni di memoria (registri) da cui è possibile accedere ai

n

dati richiesti, ed è possibile memorizzare il risultato delle operazioni. E' la migliore architettura da un punto di vista

prestazionale, ma è la più complicata (e costosa) da realizzare.

Dai registri i dati vengono portati nell'ALU tramite dei selettori, e il risultato dell'operazione viene poi trasferito in

un registro tramite un derivatore.

Architettura a pila (stack)

Lo stack è un'area di memoria con una certa dimensione (prevede quindi il caricamento di un certo numero di dati):

con accesso di tipo LIFO (Last In First Out) che permette di prelevare solo l'ultimo dato inserito in modo inverso

rispetto all'ordine in cui vengono inseriti.

Il vantaggio è quello di non dover specificare gli operandi, ma solo l'operazione da eseguire, dato che gli operandi

vengono prelevati dalla pila nell'unico modo possibile, ovvero LIFO. Analogamente l'output verrà memorizzato

sempre secondo il meccanismo di inserimento in pila.

Questa struttura quindi permette la memorizzazione multipla di dati ma è limitata dal punto di vista di utilizzo degli

stessi. Esistono algoritmi che sfruttano la notazione polacca (codifica dell'espressione quindi sia operazione che

operandi vengono memorizzati in una pila trattati in modo LIFO fino all'utilizzo degli operandi necessari) per

superare questo limite.

Notazione polacca

Lezione 14/10/2021 3

Esiste in modo diretto o in modo inverso (RPN Reverse Polish Notation) (Ogni lettera utilizzata negli esempi indica

un indirizzo/registro).

Esempio 1

Z = A + (B * C) -> A B C * + //<- STACK

PUSH A

PUSH B

PUSH C

PUSH * //PRODOTTO TRA GLI ULTIMI INSERITI OVVERO B e C

PUSH + //SOMMA TRA GLI ULTIMI OPERANDI OVVERO A e B*C

POP Z //ESTRAE L'ULTIMO DATO INSERITO OVVERO LA SOMMA PRECEDENTE CONSIDERANDO UNA VARIABILE DI MEMORIZZAZIONE Z

Ogni risultato viene memorizzato alla fine della pila ma l'estrazione/accesso utilizza questi ultimi elementi.

Esempio 2

Z=((A * B )+ (C - D)) / E -> A B * C D - + E //<- STACK

PUSH A

PUSH B

MULT //MOLTIPLICA A e B (ultimi inseriti) lo memorizzo come X

PUSH C

PUSH D

SUB //SOTTRAE C e D (ultimi inseriti) lo memorizzo come Y

//STACK: X,Y

ADD //SOMMA X e Y e lo memorizza in T

PUSH E

DIV //DIVIDE T e E e lo salva come Z

POP Z //ESTRAE IL RISULTATO FINALE

Una rappresentazione alternativa o ibrida può consistere nello specificare il secondo operando omettendo il primo

dato che viene prelevato dalla pila.

Esempio 3

PUSH A

MULT B //MOLTIPLICA A e B senza pushare B

PUSH C

SUB D //SOTTRAE C e D senza pushare D

ADD -- // codice operativo diverso dato che non utilizza un operando

DIV E // DIVIDE la somma precedente per E senza pushare E

POP Z

Il codice operativo di un'operazione può variare in base al numero di operandi utilizzati.

Una macchina CISC deve necessariamente avere lunghezza variabile perchè posso utilizzare un numero variabile di

operandi. Ogni istruzione ha delle sotto-operazioni elementari o fasi che compongono il ciclo di istruzione.

Per le istruzioni a lunghezza costante il fetch è più semplice perchè preleva l'istruzione considerando un set di bit

costante e lo carica nell'instruction register.

A lunghezza variabile invece è più complesso perchè il set di bit non è omogeneo. La fase di fetch viene gestita

ponendo delle condizioni: viene definito un range di bit in cui le istruzioni possono essere memorizzate (es. 32-64).

In fase di fetch quindi prelevo dal Program Counter un determinato set di bit (es. 32) e devo valutare se ho prelevato

l'intera istruzione oppure no. L'obiettivo è prelevare in ogni caso il codice operativo in modo da determinare la

tipologia dell'istruzione da eseguire, in ogni caso poi completo di volta in volta il fetch delle altre parti

dell'istruzione (caricate di volta volta nell'IR) fino a quando non ho completato il caricamento di tutta l'istruzione.

Lezione 14/10/2021 4

Accesso ai dati

Indirizzamento immediato

L'indirizzo è fornito come un numero nell'istruzione ma richiede spazio sufficiente per memorizzarne il valore. Per

ridurre lo spazio richiesto per memorizzare l'indirizzo il numero immediato consiste in uno spiazzamento quindi un

indirizzo può essere compresso in un numero inferiore di bit associato ad una base specifica già presente nei registri.

M[n] // accesso in memoria con n numero dell'indirizzo

Indirizzamento diretto o indicizzato

L'indirizzo è scritto in un registro identificato da un numero. Per accedere all'area di memoria identificata da

quell'indirizzo si utilizza direttamente il numero del registro.

M[R1] // Accesso in memoria con R1 contenente l'indirizzo di memoria

Indirizzamento con spiazzamento

Specifico nell'istruzione un numero che si somma al valore contenuto nel registro specificato. In questo modo

suddivido la composizione dell'indirizzo totale in più locazioni.

M[R1+n] //Sommo il numero n al valore contenuto nel registro base

⚠ Questa metodologia è utile, per esempio, per effettuare l' accesso ad un vettore perchè il registro che

contiene l'inizio del vettore dovrà semplicemente modificare iterativamente lo spiazzamento. Tuttavia,

questo meccanismo non è applicabile all'immediato perchè quello è un indirizzo fisso non iterabile.

Indirizzamento indiretto

Ogni indirizzo di memoria si riferisce ad un altro indirizzo che potrà contenere un valore oppure ricorsivamente un

altro indirizzo

M[M[...] //Accesso in memoria multiplo

Altre modalità

ESEMPIO: indirizzo può essere dato dalla somma di due registri

M[R1+R2] /* L'indirizzo a cui accedere è dato dalla somma

dei valori contenuti in R1 ed R2 */

Le modalità vengono distinte tramite codice operativo associato all'operazione che quindi dovrà utilizzare la

modalità d'accesso corrispondente al codice attraverso le modalità previste dal determinato indirizzamento (lo

svantaggio è che i codici operativi sono molti). L'uso di tanto codici operativi non è vantaggioso per cui è possibile

utilizzare una sola modalità, ovvero quella a spiazzamento: codice operativo + bit del registro + bit spiazzamento;

Lezione 14/10/2021 5

impostando a 0 il bit del registro oppure o i bit di spiazzamento è possibile ricondursi alle altre due modalità di

indirizzamento.

Lezione 14/10/2021 6

Lezione 15/10/2021

Complemento a 2

Numeri Floating Point

Complemento a 2

Es. A = 01110100

Scrivo l'opposto del numero di bit (complemento ad 1 di A)

Complemento a 2 = 10001011 (c. a 1) + 1

10001011 +

1 =

------------

10001100 //<- complemento a 2 del numero di partenza A

Le operazioni di complemento realizzano esse stesse la loro operazione inversa

//compl a 1

01110011 +

//aggiungo 1

1 =

------------

01110100 // applicando il compl a 2 al numero ricavato ritorno al numero binario A

A = 116 in decimale

A(compl a 2) = 10001100 = -116 in decimale compl a 2 = 140 in binario puro

Se considero il primo bit come bit di segno, considerando un byte:

Unsigned char: 0 - 255 (binario puro)

Char: (-128) - 127 (complemento a due)

L'esempio visto è l'applicazione su numeri binari interi

Numeri Floating Point

Lezione 15/10/2021 1

Singola Precisione (32 bit)

1 = segno

8 = esponente

23 = mantissa

Doppia Precisione (64 bit)

1 = segno

11 = esponente

52 = mantissa

Per effettuare operazioni in floating point deve esistere una ALU specifica analogamente ad

una ALU dedicata per operazioni con numeri binari interi

Una ALU per soli numeri interi tratta il problema in floating point utilizzando unicamente

numeri interi in modo da poi ricomporre il floating point risultato (tutto questo avviene

attraverso una subroutine specifica che però richiede più istruzioni per raggiungere il

risultato)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b740747b-db90-4488-

9d1e-77ab2621690b/Guida_conversione_IEEE-754.docx

Lezione 15/10/2021 2

Lezione 21/10/2021

Formati dei dati gestiti dal processore

Formati interi

Formati floating point

Instruzioni gestite dal processore MIPS

Trasferimento dei dati

Operazioni logico-aritmetiche

Tipologie di istruzioni

Istruzioni di tipo R

Istruzioni di tipo I

Formati dei dati gestiti dal processore

Formati interi

Byte [0, 255]

unsigned: 8 bit puro [−128, +127]

signed: 8bit di cui 1 di segno

Half : Metà word da16bit

Word : 32bit

Double Word : Doppia word da 64bit

Formati floating point

a singola precisione: 32bit divisi in segno 1, esponente 8 e mantissa 23

a doppia precisione: 64bit divisi in segno 1, esponente 11 e mantissa 52

Instruzioni gestite dal processore MIPS

Il processore preleva dalla memoria l'istruzione che verrà subito eseguita in base alla

codifica.

Lezione 21/10/2021 1

Esistono due tipologie di istruzioni per le operazioni con interi e in virgola mobile perchè sia

l'hardware che i dati sono diversi.

GPR = General Purpose Register

S = STORE

L = LOAD

B = BYTE

H = HALF

W = WORD

D = DOUBLE

U = UNSIGNED

I = IMMEDIATE

Trasferimento dei dati

Operazioni che trasferiscono i dati tra registri e memoria oppure tra strutture interne (registri

particolari) del processore. E' l'unica categoria di istruzioni che possono accedere in memoria

secondo filosofia RISC e modalità spiazzamento a 16 bit.

Solo i tipi DOUBLE non hanno una modalità UNSIGNED perchè questo tipo di dato utilizza

tutti i 64bit di cui è formato.

Dato che per eseguire le operazioni aritmetiche ho bisogno di troppo hardware perchè ogni

tipo di dato dovrebbe avere una sua ALU dedicata, l'obiettivo è quello di compattare

l'hardware implementato utilizzandone uno solo e ottimizzandolo. Conviene utilizzare moduli

aritmetico-logici per valori a 64bit in modo da rendere possibili le operazioni con questi

valori ma i dati di valore inferiore verranno riempiti in modo da risultare comunque da 64bit.

Lezione 21/10/2021 2

Il riempimento avviene con 0 per i bit più significativi oppure viene utilizzato il bit più

significativo come bit di segno.

Operazioni logico-aritmetiche

La propagazione di un Carry (riporto) può portare ad un overflow

ℹ Parola di Stato: è un registro che codifica eventuali problematiche/eccezioni che

si verificano durante le operazioni

MADD //moltiplica e aggiungi

X += Z * Y /* <=> */ X = X + Z * Y

SLT/SLTI //confronta due valori o un valore e un immediato e se il primo

//è minore del successivo allora imposta 1 al registro iniziale

//altrimenti imposta 0

SLT R1 R2 R3

SLTI R1 R2 100

Tipologie di istruzioni

Istruzioni di tipo R

Sono istruzioni che rientrano nella categoria delle istruzioni logico-aritmetiche perchè

richiedono 3 operandi ovvero due sorgenti e una destinazione

COMPOSIZIONE DI UN'ISTRUZIONE DI TIPO R

CO(6bit) + RD(5bit) + RS1(5bit) + RS2(5bit) + EXT(11bit)

/*

Lezione 21/10/2021 3

CO: Codice Operativo

RD: Registro Destinazione

RS: Registro Sorgente

EXT: Estensione */

Istruzioni di tipo I

Nelle istruzioni di tipo I un operando è codificato all'interno dell'istruzione come termine

noto (solo uno dei due operandi può essere noto) quindi non verrà prelevato dalla memoria.

COMPOSIZIONE DI UN'ISTRUZIONE DI TIPO I

CO(6bit) + RD(5bit) + RS1(5bit) + EXT(16bit)

/* CO: Codice Operativo

RD: Registro Destinazione

RS: Registro Sorgente

EXT: Estensione */

Il termine noto viene codificato nella parte 'Estensione' della composizione dell'istruzione

Esempio:

Y = 4 + Z

/* Il codice operativo utilizzato è un'operazione immediata

Il valor del secondo registro non esiste ma la sezione 'Estensione'

viene estesa a 16 per memorizzare il valore immediato che è codificato

nell'istruzione stessa */

R3 <- M[M[R6+28]] //Load Indiretta

//equivale a

LX R3 R6 (28) //ind. immediati

LX R3 R3 (0)

Lezione 21/10/2021 4

Lezione 22/10/2021

Istruzioni di tipo J: BRANCH e JUMP

Istruzioni di Controllo

Istruzione LUI (Load Upper Immediate): Viene caricato un immediato da 16 bit nella parte

alta di un registro da 64 bit (dal bit 31 al 47) che viene espanso in segno. Dal bit 30 in giù i bit

sono posti a 0.

Istruzioni di tipo J: BRANCH e JUMP

La sequenzialità di esecuzione delle istruzioni non è efficiente al fine di ottimizzare

l'algoritmo in se dato che non è detto che le istruzioni vengano eseguite puramente in modo

sequenziale (a causa di cicli o costrutti condizionali)

In assembler vengono gestite le istruzioni di salto ovvero istruzioni che indicano la prossima

esecuzione di una specifica istruzione (eventualment

Anteprima
Vedrai una selezione di 16 pagine su 74
Appunti Calcolatori Elettronici Pag. 1 Appunti Calcolatori Elettronici Pag. 2
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 6
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 11
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 16
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 21
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 26
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 31
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 36
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 41
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 46
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 51
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 56
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 61
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 66
Anteprima di 16 pagg. su 74.
Scarica il documento per vederlo tutto.
Appunti Calcolatori Elettronici Pag. 71
1 su 74
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Nicocarad di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Bari o del prof Marino Francesco Maria.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community