• Non ci sono risultati.

Architettura degli elaboratori

N/A
N/A
Protected

Academic year: 2021

Condividi "Architettura degli elaboratori"

Copied!
13
0
0

Testo completo

(1)

Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate

Architettura degli elaboratori

Il livello Instruction Set Architecture

Marco Tarini

Dipartimento di Scienze Teoriche e Applicate [email protected]

Esecuzione diretta (hardware)

I livelli

Livello 0 Logica digitale Livello 2 Instruction Set

Interpretazione (microprogramma) o esecuzione diretta (hardware)

Livello 5 Linguaggi Applicativi

Traduzione (compilatore)

Livello 3 Sistema operativo

Interpretazione parziale

(sistema operativo)

Livello 4 Linguaggio Assembly

Traduzione (assemblatore)

Livello 1 Architettura

(2)

ISA: Instruction Set Architecture

Il livello visto dal programmatore assembly o dal compilatore.

Comprende:

Instruction Set

(quali operazioni possono essere eseguite?) Instruction Format

(come devono essere scritte queste istruzioni? cioè la loro sintassi) Data storage

(dove sono posizionati i dati?) Addressing Mode

(come si accede ai dati?) Exceptions

(come vengono gestiti i casi eccezionali?)

Una corretta comprensione dell’ISA è importante non solo per i progettisti di compilatori e di sistemi operativi, ma anche per i programmatori.

Il livello ISA

Architettura degli elaboratori - 5 -

Il set di istruzioni: un’interfaccia critica

Il livello ISA

Architettura degli elaboratori - 6 -

instruction set software

hardware

(3)

Il set di istruzioni: un’interfaccia critica

È un difficile compromesso fra:

massimizzare le prestazioni massimizzare la semplicità di uso minimizzare i costi di produzione minimizzare i tempi di progettazione

Definisce la sintassi e la semantica del linguaggio

Il livello ISA

Architettura degli elaboratori - 7 -

Criteri di definizione di un IS

filosofia CISC:

favorire questo filosofia RISC:

favorire questo

Esiste un’infinità di insiemi di istruzioni equivalenti

che permettono di scrivere codice per eseguire… qualsiasi cosa*

La scelta di un insieme delle istruzioni prende in considerazione:

la semplicità della realizzazione cioè dell’HW richiesto

l‘espressività e la semplicità di uso la potenza delle istruzioni la facile programmabilità l'efficienza

velocità di esecuzione cioè: (vel di ogni istruzione)

x (quante se ne rendono necessarie)

* …purché sia computabile, e non richieda troppe risorse. Vedi corsi di informatica teorica!

(4)

Criteri di definizione di un IS

Oltre a questi criteri obiettivi, molte altre forze più capricciose

hanno plasmato gli Istruction Sets oggi usati La loro storia

(soprattutto il bisogno di back compatibility) (non tutte le scelte sono logiche a posteriori) Fattori economici / legali

Considerazioni tecniche pertinenti al contesto del loro sviluppo

Il livello ISA

Architettura degli elaboratori - 9 -

Alcuni Instruction Set popolari oggi

MIPS ARM

X86 X64

Il livello ISA

Architettura degli elaboratori - 10 -

filosofia RISC

filosofia CISC

per i curiosi: cercare sulla Wikipedia…

(5)

Il codice da un livello all’altro

Il livello ISA

Architettura degli elaboratori - 12 -

lw R15, 0(R2) lw R16, 4(R2) sw R16, 0(R2) sw R15, 4(R2) High Level Language

Program

Assembly Language Program

Machine Language Program

Control Signal Specification

temp = v[k];

v[k] = v[k+1];

v[k+1] = temp;

0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111

ALUOP[0:3] <= InstReg[9:11] & MASK

compiler

assembler

machine interpretation

Programmi in Linguaggio macchina (programmi binari)

Un programma(software) in linguaggio macchina

è scritto in uno specifico Instruction Set, e per uno specifico SO

Consiste in : DATI

tenuti in un blocco di memoria ISTRUZIONI

tenuti in un altro blocco di memoria

per convenzione, si usano due aree di memoria diverse, dedicate a ciascuna di queste due cose

Ogni istruzione è:

una dell’Instruction Set, oppure,

un’invocazione di funzione del Sistema Operativo («system calls») (funzioni nel «kernel» di quel SO, per es per aprire un file)

(6)

Programmi in Linguaggio macchina (programmi binari)

Quindi un Programma Binario è specificoper un Instruction Set e un Sist Op (cioè per una «platform»)

gira solo su una macchina con un architettura che implementa quell’Instruction Set e fornito di quel SO

Alcuni dettagli pratici dei binari più comuni:

Programmi per Win64:

Instruction Set x64, e SO Windows Programmi per Win32:

Instruction Set x86, e SO Windows

ma sono eseguibili anche da architetture x64, perché è back-compatible (seppur con una efficienza leggermente minore,

perché non si sfrutta la maggiore potenza dell’x64). Nota: non viceversa.

Programmi per MacOS:

possono contenere versioni del binario per due Instruction Set: x64 e x86 in modo da essere eseguiti in modo ottimale su entrambe le architetture Programmi per Linux

Il sorgente (in linguaggio ad alto livello) è indipendente dalla piattaforma (è

«cross-platform») perché può invece essere compilato per piattaforme diverse

Il livello ISA

Architettura degli elaboratori - 14 -

Eseguire programmi binari

Caricare il programma (DATI + ISTRUZIONI) in memoria Settare il PC alla prima istruzione

(quale sia, è determinato dal programma stesso) Start!

Sarebbe assurdamente difficile scrivere direttamente programmi binari Saliamo di due livelli,

e scriviamoli in Assembly

Il livello ISA

Architettura degli elaboratori - 15 -

(7)

Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate

Instruction Set MIPS:

piccolo prontuario

MIPS R3000 Instruction Set Architecture

Categorie di istruzioni:

Computazioni (per la ALU) Integer o Floating Point Logiche or matematiche Load / Store (memoria) Jump / Branch

Speciali

R0 - R31

PC HI LO

OP OP OP

rs rt rd sa funct

rs rt immediate

jump target Tre formati di istruzioni: tutti da 32 bit

Registri

tipo R tipo I tipo J

(8)

Architettura MIPS - Registri

32 x 32-bit registri utente interi

MIPS Instruction Set Architecture

Architettura degli elaboratori - 19 -

r0r1

°°

°r31

PCLO HI

f0f1

°°

°f31 32 x 32-bit registri utente floating point

Registri speciali

00000000 00000000 00000000 00000000

sempre 0

32 bit

Modello della memoria di MIPS

I programmi ipotizzano di avere (al max) 232byte di memoria La memoria è indirizzabile a livello di byte

Parole (word) di 32 bit = 4 byte

Le parole si trovano ad indirizzi multipli di 4

Ricordare sempre: la memoria include sia i dati che le istruzioni

MIPS Instruction Set Architecture

Architettura degli elaboratori - 20 -

00...0000 00...0100 00...1000

11...1000

32 bit

1 byte

(9)

I campi delle istruzioni MIPS

campo significato

op Codice dell’istruzione (opcode) rs Quale registro fa da primo operando

rt Quale registro fa da secondo operando (R-type) o da risultato (I-type) rd Quale registro fa da risultato (c’e’ solo nelle R-type)

shamt Shift amount: di quanto shiftare il risultato (in alcune op) funct Function code – variante dell’istruzione

imm Immediate value (16 bit): il valore del secondo operando

MIPS Instruction Set Architecture

Architettura degli elaboratori - 21 -

Tutte le istruzioni MIPS hanno lunghezza fissa (32 bit)

6 bits 5 bits

5 bits 5 bits

5 bits 6 bits

R-type

I-type

op rs rt

op rs rt rd shamt funct

J-type

op

imm address

Modi di indirizzamento MIPS / Formato delle istruzioni

Gli operandi sono tutti registri come in add $s1, $s2, $s3

Modalità di indirizzamento Register (direct) Op e funct indicano l’operazione da eseguire Shamt indica l’entità dello shift del risultato

R-type

op rs rt rd shamt funct

(10)

Modi di indirizzamento MIPS / Formato delle istruzioni

Se Op indica una operazione matematica / logica

Gli operandi dell’operazione sono il registro rs e il valore immediato Il risultato viene memorizzato nel registro rt

Il valore immediato (16 bit) viene esteso a 32 bit

con modalità diverse a seconda dell’op, come sappiamo.

Se Op indica un salto condizionato (un «branch»):

I due registri rs e rt sono usati per decidere SE saltare (con criterio dipende da Op, es «se sono uguali fra loro») Se si salta, a PC viene sommato Imm (esteso in segno) x4 (quindi si salta di max 32K istruzioni in avanti o in indietro)

MIPS Instruction Set Architecture

Architettura degli elaboratori - 23 -

I-type

op rs rt imm

Modi di indirizzamento MIPS / Formato delle istruzioni

Istruzioni di salto incondizionato (si salta sempre) Address (26 bit) indica dove saltare:

Vecchio PC:

Nuovo PC:

MIPS Instruction Set Architecture

Architettura degli elaboratori - 24 -

J-type

op address

X….X

XXXX 00

address

XXXX 00

primi 4 bit inalterati

(11)

MIPS: parole

(la struttura fondamentale!)

una parola (32 bit, 4 bytes, 1 word) può essere contenuta : in uno qualsiasi dei registri

in 4 byte consecutivi di memoria centrale

(spesso, allineati: il loro indirizzo base 2 termina con 00, 01, 10, 11) (in che ordine sono? Vedi endianness!)

e può rappresentare : un dato

(in virgola mobile, o in CP2, o naturale) una istruzione(MIPS!)

un indirizzodi memoria (fra i dato, o fra le istruzioni)

Il livello ISA

Architettura degli elaboratori - 25 -

NB: Una parola (in mem o un reg) non «sa» cosa rappresenta.

È il programmatore che lo deve sapere e la deve usare di conseguenza.

MIPS: mezze parole (assai meno usate)

Una mezza parola (half-word: 16 bit, 2 bytes) può essere contenuta In 2 byte consecutivi di memoria

(tipicamente …00e …01, cioè allineatamente) Nella seconda metà di un’istruzione

(di tipo I: è il suo campo imm16) In un registro

(la parola sta tutta nella seconda metà del registro.

Nella prima metà, si estende: tutti 0

o, nel caso di CP2: se numero negativo, tutti 1, se pos tutti 0) E può rappresentare

Un dato a 16 bit (CP2 o binario senza segno)

(12)

MIPS: i bytes

Un byte(8 bit) può essere contenuto In una sola casella di memoria

(indicizzata da 32 bit qualsiasi – «indirizzamento al byte») In un registro

(nei sui ultimi 8 bit. Nei primi 24, ci saranno tutti 0 o, nel caso di CP2 di un numero negativo, tutti 1) E può rappresentare

Un dato a 8 bit

(CP2: da -128 a +127; o binario: 0..255) Un carattere, per es di una stringa (attraverso tabella ASCII)

Etc (es il canale «rosso» di un pixel) Quindi un word può essere anche interpretato come 4 lettere consecutive in una stringa

Una stringa: una sequenza di bytes (spesso, terminata dal byte 0x00)

Il livello ISA

Architettura degli elaboratori - 27 -

Di nuovo:

l’interpretazione di un dato non sta da nessuna parte se non nella mente del programmatore Assembly umano o del compilatore

In MIPS le words sono di 32 bit

Scrivere su un registro attraverso computazioni:

Si scrivono tutti i 32 bits del registro (sovrascrivendo tutti i bit precedenti) Tutte le operazioni (logiche o matematiche)

sono sempre fra parole di 32 bit, con risultato a 32 bits (non ci sono op che scrivono solo su una parte di un registro) (ci sono op che scrivono due registri insieme: HI e LO) Scrivere su un registro attraverso letture da memoria:

Si scrivono tutti i 32 bits del registro (sovrascrivendo tutti i bit precedenti) Se si è letto meno di una parola (un half-word o un byte),

il dato letto viene esteso (con 0 o talvolta 1, come visto)

Scrivere su memoria

Di solito si scrivono 4 byte, ma è possibile scriverne anche solo 2 oppure 1 L’indirizzo dato si riferisce al primo byte scritto.

Se 4 (o 2), di solito allineati : questo indirizzo finisce per 00 (o per 0) (in molte implementazioni HW è molto più efficiente se lo sono)

Il livello ISA

Architettura degli elaboratori - 28 -

(13)

Registro 0: valore 0

Scelta (del MIPS):

il registro 0 contiene sempre 00000…0 (tutti zeri)

nota: la sequenza di 32 bit zero codifica il numero zero…

…sia come naturale senza segno,

…sia in CP2

…sia in virgola mobile (è uno dei valori speciali) come indirizzo di memoria,

codifica «indirizzo non valido» (anche detto NULL)

anche se tentiamo di scrivere sul registro 0, il suo valore non cambia

Il livello ISA

Architettura degli elaboratori - 29 -

Riassumendo: caratteristiche dell’ISA MIPS

Istruzioni di dimensione fissa a 32 bit (3 formati)

31 registri da 32 bit (R0 contiene zero) e 32 registri FP (e HI LO) Istruzioni aritmetiche: a due operandi (registri o immediate) Indirizzamento a 32 bit

Per leggere o scrivere in RAM

Tre tipi di salto:

Salto condizionato (branch):

Con «guardie» semplici: come confronto di un registro con zero, confronto di uguaglianza o disuguaglianza tra due registri.

Corto raggio (-/+ 32K istruzioni max) Salto non condizionato, a valore.

Lungo raggio (sostituisce tutti i bit del PC meno i primi 4) Salto non condizionato, a registro.

Ovunque in memoria (sostituisce l’intero PC con un registro dato)

Riferimenti

Documenti correlati

•  favorire contratti di fornitura con industrie di trasformazione (70% della produzione agricola).. Ruolo  dell’OP

[r]

[r]

Con riferimento ai lotti della procedura in oggetto meglio specificata, si segnala che non sono accaduti sinistri negli ultimi cinque anni. IL RESP UNICO DEL

Le Società Scientifiche firmatarie del presente documento si mettono a disposizione delle Istituzioni per un reale ammodernamento della Sanità Pubblica, per immettere finalmente

3) impossibilità di raggiungere in tempo il luogo di partenza del Viaggio per calamità naturali, improvvisi avvenimenti stradali che impediscono la normale circolazione,

– Le istruzioni di store richiedono l’accesso in scrittura alla memoria dati ed eseguono la memorizzazione del dato proveniente dal registro sorgente. – Le istruzioni di

Purtroppo l’atto delegato pubblicato risulta inadeguato: se da un lato la Commissione riconosce il legame diretto tra olio di palma e deforestazione, ed elimina