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
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Operazioni con la pila

PUSH CPUSH * //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

operandoDIV E // DIVIDE la somma precedente per E senza pushare EPOP 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) + 110001011 +1 =

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

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

Le operazioni di complemento realizzano esse stesse la loro operazione inversa

compl a 101110011 +

aggiungo 11 =

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

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)

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

Istruzioni 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 da 16bit

Word : 32bit

Double Word : Doppia word da 64bit

Formati floating point

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

e mantissa 23a 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 allacodifica.

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. È 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 modularità 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. 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 caric

Dettagli
Publisher
A.A. 2021-2022
74 pagine
4 download
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.