Microelettronica -...

40
S. Salvatori - Microelettronica – maggio 2017 – (1 di 40) Microelettronica Elementi per il progetto di un microprocessore: note prof. Stefano Salvatori A.A. 2016/2017 Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia. Corso introduttivo di progettazione di sistemi embedded

Transcript of Microelettronica -...

S. Salvatori - Microelettronica – maggio 2017 – (1 di 40)

Microelettronica

Elementi per il progetto di un microprocessore:

note

prof. Stefano Salvatori

A.A. 2016/2017

Eccetto dove diversamente specificato, i contenuti di questo documento sono rilasciati sotto Licenza Creative Commons Attribuzione 3.0 Italia.

Corso introduttivo di progettazione di sistemi embedded

S. Salvatori - Microelettronica – maggio 2017 – (2 di 40)

Sommario

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (3 di 40)

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (4 di 40)

Formati per le istruzioni

Esempio ADD r, op1, op2, next_inst

r := op1 + op2

S. Salvatori - Microelettronica – maggio 2017 – (5 di 40)

Formati per le istruzioni

Esempio ADD r, op1, op2, next_inst

r := op1 + op2

istruzione a 4 indirizzi:

4xn + f

S. Salvatori - Microelettronica – maggio 2017 – (6 di 40)

Formati per le istruzioni

Esempio ADD r, op1, op2

r := op1 + op2

istruzione a 3 indirizzi:

ARM mode

S. Salvatori - Microelettronica – maggio 2017 – (7 di 40)

Formati per le istruzioni

Esempio ADD r, op1

r := r + op1

istruzione a 2 indirizzi:

THUMB mode

S. Salvatori - Microelettronica – maggio 2017 – (8 di 40)

Formati per le istruzioni

Esempio ADD op1

A := A + op1

istruzione a 1 indirizzo:

6502

S. Salvatori - Microelettronica – maggio 2017 – (9 di 40)

Formati per le istruzioni

Esempio ADD

ToS := ToS + NoS

istruzione a 0 indirizzi:

S. Salvatori - Microelettronica – maggio 2017 – (10 di 40)

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (11 di 40)

Tipi di istruzione

● Data processing– addizione, sottrazione, moltiplicazione, operazioni logiche, shift,

rotazione, …

● Data movement– muovere dati tra locazioni di memoria o tra una locazione e un

registro

● Control flow– spostare l’esecuzione verso altre parti del programma, dipendenti o

meno da condizioni (anche eccezioni)

● Execution state– spostare l’esecuzione verso modi privilegiati (funzione di sistema

operativo)

S. Salvatori - Microelettronica – maggio 2017 – (12 di 40)

Controllo di flusso

Istruzioni specifiche devono essere in grado di

controllare il flusso del programma:B LABEL

……

LABEL  ……

● In generale, i salti possono essere condizionati– registro di stato che contiene le FLAG

● Chiamate a subroutine– meccanismi di ‘call’ e ‘return’

● Chiamate speciali (stati privilegiati)

● Eccezioni

S. Salvatori - Microelettronica – maggio 2017 – (13 di 40)

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (14 di 40)

Modi di indirizzamento

● Immediato

– L’istruzione contiene il dato

● Assoluto

– … l’indirizzo del dato

● Indiretto

– … l’indirizzo della locazione che contiene l’indirizzo del dato

● a registro

– … il numero del registro che contiene il dato

● a registro indiretto

– … il numero del registro che contiene l’indirizzo del dato

S. Salvatori - Microelettronica – maggio 2017 – (15 di 40)

Modi di indirizzamento

● base + offset

– … il n. del registro, base, e un offset (immediato) da aggiungere

per calcolare l’indirizzo del dato

● base + indice

– … l’indicazione del registro base e del registro per l’offset

● base + indice scalato

– come sopra ma viene indicato anche un fattore moltiplicativo 2n

● con stack

– è specificato un puntatore col quale conoscere l’indirizzo della

lista di dati

● ...

S. Salvatori - Microelettronica – maggio 2017 – (16 di 40)

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (17 di 40)

Compilatore

● Il progettista del uP definisce il set di istruzioni che ritiene più idoneo allo svolgimento di qualunque algoritmo

● Un programmatore lavora più agevolmente traducendo il proprio algoritmo in un linguaggio ad alto livello (un livello di astrazione più o meno elevato)

● Tuttavia, il uP deve ricevere un listato composto da istruzioni che sono incluse nel suo set

● Il compilatore svolge proprio il lavoro di costruzione del listato idoneo al set di istruzioni del uP

● Nel progetto si deve allora tenere conto di tale processo:

– il set di istruzioni viene ideato anche in base alle caratteristiche del compilatore

S. Salvatori - Microelettronica – maggio 2017 – (18 di 40)

CISC vs RISC

● Nei primi uP si tendeva a fissare un set di istruzioni complesse in modo che la singola istruzione potesse svolgere il lavoro nel modo più versatile

● Un CISC riduce così il lavoro del compilatore perché un set di istruzioni complesse si avvicina di più al livello di astrazione del programmatore stesso:

– procedure incluse in una singola istruzione

– modi di indirizzamento ricchi e sofisticati

– tipi di dati anche molto diversi …

S. Salvatori - Microelettronica – maggio 2017 – (19 di 40)

CISC vs RISC

● Il motivo di una tale filosofia era legato (1980) al fatto che le memorie presentavano un elevato tempo di accesso: non era quindi il uP a limitare la velocità di elaborazione;

● la logica di controllo del uP si basava su una ROM con cui svolgere un microcodice interno per ogni struzione:

una istruzione complessa era eseguita più rapidamente di molte istruzioni semplici che richiedevano diversi accessi alla memoria esterna

● Nei processori CISC buona parte dell’area di silicio era occupata proprio dalla ROM che conteneva il microcodice

● In quest’ambito nacque l’idea dei uP con set di istruzione notevolmente semplificato: RISC

Verso i RISC

S. Salvatori - Microelettronica – maggio 2017 – (20 di 40)

Il lavoro tipico di un processore

● Per ottimizzare il progetto di un processore bisogna tenere conto del lavoro che esso effettivamente svolge nell'esecuzione di un qualunque programma;

● A prima vista si potrebbe pensare che un processore spenda la maggior parte del tempo di lavoro nell'elaborazione (logica o aritmetica da parte della ALU);

● In realtà si nota che molto più spesso dell'elaborazione il uP è impegnato in istruzioni di movimento dati sia tra registri interni che tra registri e memoria.

uso tipicodelle istruzioni

S. Salvatori - Microelettronica – maggio 2017 – (21 di 40)

Ottimizzazione del progetto di un processore

● Per aumentare la velocità di un uP, bisognerebbe ottimizzare:

– le istruzioni di movimento dati sia tra registri interni che tra registri e memoria

– l'esecuzione di istruzioni di branch e di chiamata a routine

Pipeline, cache, …

S. Salvatori - Microelettronica – maggio 2017 – (22 di 40)

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (23 di 40)

Cicli di esecuzione di una istruzione

● Il uP esegue un’istruzione percorrendo i seguenti passi principali:– prelievo dell’istruzione (fetch)– decodifica– accesso ai diversi operandi (reg)– calcolo da parte della ALU (anche dell’indirizzo di un operando)– accesso alla memoria (operando)– scrittura del risultato (event. in registro)

Pipelinel’hardware è sotto-utilizzato (p. es.la ALU è usata solo nella fase 4)

con questo schema la velocità  di esecuzione, in teoria, potrebbe aumentare di 6 volte

S. Salvatori - Microelettronica – maggio 2017 – (24 di 40)

Pipeline

● l’istruzione successiva può cominciare prima che la precedente sia terminata

in questo modo l’hardware è continuamente utilizzato

aumenta ilthroughput

S. Salvatori - Microelettronica – maggio 2017 – (25 di 40)

Condizione di rottura per read-after-write

● Esiste però il problema qualora l’istruzione successiva debba utilizzare quanto calcolato dalla precedente

regola “ovvia” : leggere dopo aver scritto

fetch dec reg ALU mem res1

fetch dec reg ALU mem res2

time

stall

instruction

S. Salvatori - Microelettronica – maggio 2017 – (26 di 40)

Condizione di rottura per salto

L’altra causa di “rottura” del pipeline è l’esecuzione di un’istruzione di salto

S. Salvatori - Microelettronica – maggio 2017 – (27 di 40)

● Formato delle istruzioni

● Tipi di istruzione

● Modi di indirizzamento

● CISC vs RISC

● Pipeline

● Note sui RISC

S. Salvatori - Microelettronica – maggio 2017 – (28 di 40)

Premessa

1980: Patterson e Ditzel,

“The case for the reduced instruction set computer”

Berkley: RISC I(progetto molto semplice rispetto ai CISC allora in

commercio e sviluppato in un anno per un lavoro didottorato)

Quali sono le caratteristiche principali di un processore RISC

S. Salvatori - Microelettronica – maggio 2017 – (29 di 40)

Architettura e organizzazione per un RISCReduced Instruction

Set Computer

Reduced Instruction Set ComputerSet di istruzioni ridotto

• lunghezza fissa• un solo ciclo per l’esecuzione (pipeline)• complicazione spostata sul compilatore,

mentre l’hardware esegue istruzioni semplici ad alta velocità

Set di istruzioni ridotto• lunghezza fissa• un solo ciclo per l’esecuzione (pipeline)• complicazione spostata sul compilatore,

mentre l’hardware esegue istruzioni semplici ad alta velocità

Funzionalità load/store• il uP lavora sui dati nei registri• accessi alla memoria (collo di

bottiglia per la velocità) limitati alle sole operazioni di load e store

Funzionalità load/store• il uP lavora sui dati nei registri• accessi alla memoria (collo di

bottiglia per la velocità) limitati alle sole operazioni di load e storeAmpio banco di registri

• per dati• esecuzione veloce dell'elaborazione• accessi limitati verso la memoria principale

Ampio banco di registri• per dati• esecuzione veloce dell'elaborazione• accessi limitati verso la memoria principale

Esecuzione in pipeline• ogni istruzione è divisa in più

fasi che interessano parti hardware diverse

• miglioramento del throughput

Esecuzione in pipeline• ogni istruzione è divisa in più

fasi che interessano parti hardware diverse

• miglioramento del throughput

Logica di decodifica “hard-wired”• non c’è bisogno di microcodice ampio su ROM• aumento della velocità

Logica di decodifica “hard-wired”• non c’è bisogno di microcodice ampio su ROM• aumento della velocità

☞•area di silicio minore

•tempo di sviluppo minore•prestazioni più elevate

Patterson, Ditzel, “The Case for the Reduced Instruction Set Computer”

Patterson, Ditzel, “The Case for the Reduced Instruction Set Computer”

S. Salvatori - Microelettronica – maggio 2017 – (30 di 40)

I vantaggi che si hanno con i RISC

Semplicità dell'hardware:• più semplice la definizione e

il progetto della pipeline

Semplicità dell'hardware:• più semplice la definizione e

il progetto della pipelineMinor numero di MOS:

• il chip può lavorare a una frequenza di clock più elevata (mantenendo la stessa dissipazione di potenza)

Minor numero di MOS:• il chip può lavorare a una frequenza di

clock più elevata (mantenendo la stessa dissipazione di potenza)

Se la CPU è più semplice:• è più facile la realizzazione di sistemi in

cui la CPU è solo uno dei blocchi (sistemi embedded)

Se la CPU è più semplice:• è più facile la realizzazione di sistemi in

cui la CPU è solo uno dei blocchi (sistemi embedded)

Prestazioni più elevate• deriva da tutte le caratteristiche precedenti: velocità,

semplicità, tempi di sviluppo, evoluzione

Prestazioni più elevate• deriva da tutte le caratteristiche precedenti: velocità,

semplicità, tempi di sviluppo, evoluzione

Una CPU semplice:• richiede un tempo di sviluppo minore• l'evoluzione sarà più rapida

Una CPU semplice:• richiede un tempo di sviluppo minore• l'evoluzione sarà più rapida

S. Salvatori - Microelettronica – maggio 2017 – (31 di 40)

Gli svantaggi che si hanno con i RISC

Bassa densità di codice rispetto ai CISC

• Semplicità del set di istruzioni

• Istruzioni a formato fisso

• Una bassa densità di codice porta a una maggiore frequenza di accessi (fetch) e quindi un maggiore consumo di potenza

Bassa densità di codice rispetto ai CISC

• Semplicità del set di istruzioni

• Istruzioni a formato fisso

• Una bassa densità di codice porta a una maggiore frequenza di accessi (fetch) e quindi un maggiore consumo di potenza

S. Salvatori - Microelettronica – maggio 2017 – (32 di 40)

L'architettura scelta per ARM

Elevato numero di registi• 31 registri interni• registri dedicati al modo di

funzionamento

Elevato numero di registi• 31 registri interni• registri dedicati al modo di

funzionamento

Architettura LOAD/STORE• operazioni sui dati accedono

solo al contenuto di registri

Architettura LOAD/STORE• operazioni sui dati accedono

solo al contenuto di registri

Modi di indirizzamento semplificati• gli indirizzi di load e store sono

determinati dal contenuto di registri e di campi nell’istruzione stessa

Modi di indirizzamento semplificati• gli indirizzi di load e store sono

determinati dal contenuto di registri e di campi nell’istruzione stessa

Istruzioni a lunghezza fissa (3-address)• la decodifica è semplificata• uniformità dei campi

Istruzioni a lunghezza fissa (3-address)• la decodifica è semplificata• uniformità dei campi

Register window• 32 registri visibili di un

banco molto più estesoconsumo di silicio(solo Sun SPARC continuò tale adozione)

Register window• 32 registri visibili di un

banco molto più estesoconsumo di silicio(solo Sun SPARC continuò tale adozione)

Delayed branches• per non interrompere la pipeline,

salto dopo l’istruz. successivasi perde l’atomicità delle istruzioni

Delayed branches• per non interrompere la pipeline,

salto dopo l’istruz. successivasi perde l’atomicità delle istruzioni

Berkeley RISC design

Esecuzione a ciclo singolo per tutte le istruzioni• servono memoria dati e memoria istruzioni

sistema più costoso e complesso

Esecuzione a ciclo singolo per tutte le istruzioni• servono memoria dati e memoria istruzioni

sistema più costoso e complesso

S. Salvatori - Microelettronica – maggio 2017 – (33 di 40)

Novità di ARM

● Rispetto al progetto RISC I, le novità introdotte per ARM furono:

Controllo sia di ALU che shifter• ogni istruzione può utilizzare ALU e shifter

Controllo sia di ALU che shifter• ogni istruzione può utilizzare ALU e shifter

Auto-decrement e auto-increment• modi di indirizzamento automaticamente aggiornati • loop ottimizzati

Auto-decrement e auto-increment• modi di indirizzamento automaticamente aggiornati • loop ottimizzati

LOAD/STORE multipli• massimizzato il throughput

LOAD/STORE multipli• massimizzato il throughput

Esecuzione condizionata• ogni istruzione è eseguita in base a una condizione• massimizzato il throughput

Esecuzione condizionata• ogni istruzione è eseguita in base a una condizione• massimizzato il throughput

S. Salvatori - Microelettronica – maggio 2017 – (34 di 40)

CPU08 (Freescale) opcode map (CISC)

S. Salvatori - Microelettronica – maggio 2017 – (35 di 40)

Sommario del set di istruzioni per ARM

S. Salvatori - Microelettronica – maggio 2017 – (36 di 40)

Sommario del set di istruzioni per ARM

S. Salvatori - Microelettronica – maggio 2017 – (37 di 40)

Modo ARM (32 bit) e modo Thumb (16 bit)

● ARM non presenta la “bassa densità” di codice tipica dei RISC● la densità non è comunque paragonabile a quella di un CISC

● Per soddisfare le esigenze in cui la densità  di codice è di primaria importanza è stata creata l’architettura Thumb:● set di istruzioni compresse a 16 bit (dal set ARM a 32 bit)● L’operazione di decompressione è di tipo hardware (durante il

pipeline)● Densità  di codice anche superiore a quella che si ha in processori

CISC

S. Salvatori - Microelettronica – maggio 2017 – (38 di 40)

Modo ARM (32 bit) e modo Thumb (16 bit)

Il codice Thumb utilizza circa il 40% di istruzioni in più rispetto al codice ARM

Il codice Thumb utilizza il 30% in meno di potenza della memoria esterna

Il codice Thumb occupa circa il 70% dell’equivalente codice ARM

Con una memoria esterna a 16 bit il codice Thumb è circa il 45% più veloce di quello ARM

Con una memoria esterna a 32 bit il codice ARM è circa il 40% più veloce di quello Thumb

Il codice Thumb utilizza circa il 40% di istruzioni in più rispetto al codice ARM

Il codice Thumb utilizza il 30% in meno di potenza della memoria esterna

Il codice Thumb occupa circa il 70% dell’equivalente codice ARM

Con una memoria esterna a 16 bit il codice Thumb è circa il 45% più veloce di quello ARM

Con una memoria esterna a 32 bit il codice ARM è circa il 40% più veloce di quello Thumb

ThumbARM32-bit 16-bit

mem

oria 16-bit

ThumbARM

32-bitARMThumb

S. Salvatori - Microelettronica – maggio 2017 – (39 di 40)

Riferimenti

● S. Furber, “ARM, System-on-chip Architecture”, cap. 1.

S. Salvatori - Microelettronica – maggio 2017 – (40 di 40)

Prossimamente

● Architettura ARM

– differenze con i RISC

– programmer's model

[email protected]

Domande