Download - Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

Transcript
Page 1: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

Calcolatori ElettroniciCalcolatori Elettronici

Il ProcessoreIl Processore

Francesco Lo PrestiFrancesco Lo Presti

Rielaborate da Salvatore TucciRielaborate da Salvatore Tucci

Page 2: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 2

Architettura a Livelli: Livelli 1 e 2Architettura a Livelli: Livelli 1 e 2

Livello 2: Livello del Linguaggio Macchina (ISA)Livello 2: Livello del Linguaggio Macchina (ISA)Macchina nuda come appare al programmatore di Macchina nuda come appare al programmatore di sistema. Le istruzioni del suo linguaggio sono sistema. Le istruzioni del suo linguaggio sono interpretate ed eseguite dai microprogrammi del interpretate ed eseguite dai microprogrammi del processoreprocessoreModuli: ProgrammiModuli: ProgrammiL2: Linguaggio macchinaL2: Linguaggio macchinaR2: Registri, spazio di memoriaR2: Registri, spazio di memoria

Livello 1: Macchina Firmware – Livello 1: Macchina Firmware – MicroarchitetturaMicroarchitettura

Interpreta ed esegue le istruzioni del linguaggio Interpreta ed esegue le istruzioni del linguaggio macchinamacchinaE’ direttamente realizzato con i componenti della E’ direttamente realizzato con i componenti della macchina hardwaremacchina hardwareModuli - Unita’ di Elaborazione: CPU, Memoria, Unita’ Moduli - Unita’ di Elaborazione: CPU, Memoria, Unita’ di I/Odi I/OL1: Linguaggio di MicroprogrammazioneL1: Linguaggio di MicroprogrammazioneR1: Reti combinatorie e sequenzialiR1: Reti combinatorie e sequenziali

Page 3: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 3

Organizzazione di un CalcolatoreOrganizzazione di un Calcolatore

Unità di controll

o

Unità di elaborazion

e dati

Memoria

Processore

Dispositivi di I/O

Dispositivi di I/O

Interfaccia di I/O

Interfaccia di I/O

Busdatiindirizzicontrollo

Page 4: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 4

Processore - Central Processing Unit (CPU)Processore - Central Processing Unit (CPU)

Provvede all’esecuzione delle istruzioni macchina Provvede all’esecuzione delle istruzioni macchina Ciclo di EsecuzioneCiclo di Esecuzione

1.1. Prelievo Istruzione dalla MemoriaPrelievo Istruzione dalla Memoria2.2. Decodifica IstruzioneDecodifica Istruzione3.3. Esecuzione IstruzioneEsecuzione Istruzione

Processore e’ composto da due sottosistemi:Processore e’ composto da due sottosistemi:1.1. Unità di ControlloUnità di Controllo ( (ControlControl) – Parte di Controllo) – Parte di Controllo

Controlla il sequenziamento e l’esecuzione delle istruzioni Controlla il sequenziamento e l’esecuzione delle istruzioni generando i segnali di controllogenerando i segnali di controllo

2.2. Unita’ di Elaborazione DatiUnita’ di Elaborazione Dati ( (DatapathDatapath) – Parte Operativa) – Parte OperativaEsegue le istruzioniEsegue le istruzioniALUALU Esegue operazioni logico aritmetiche sui datiEsegue operazioni logico aritmetiche sui dati

Banco di Registri (Register File)Banco di Registri (Register File) Memoria interna CPUMemoria interna CPU

Program Counter (PC)Program Counter (PC)– Indirizzo Prossima IstruzioneIndirizzo Prossima Istruzione

– Instruction Register (IR)Instruction Register (IR)– Codice Istruzione da eseguireCodice Istruzione da eseguire

Page 5: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 5

Processore - Central Processing Unit (CPU)Processore - Central Processing Unit (CPU)

Implementazione set ridotto del MIPSImplementazione set ridotto del MIPSIstruzioni di accesso alla memoria: lw e swIstruzioni di accesso alla memoria: lw e swIstruzioni logico-aritmetiche: add, sub, and, or e sltIstruzioni logico-aritmetiche: add, sub, and, or e sltIstruzioni di branch: beqIstruzioni di branch: beqIstruzioni di jump: jIstruzioni di jump: j

Lunghezza formato: 32 bit; i tre formati delle istruzioni:Lunghezza formato: 32 bit; i tre formati delle istruzioni:

Tipo RTipo R

Tipo ITipo I

Tipo JTipo J

I campiI campiopop: operazione dell’istruzione: operazione dell’istruzione

– rsrs, , rtrt, , rdrd: registri sorgente (due) e destinazione: registri sorgente (due) e destinazioneshamtshamt: shift amount: shift amountfunctfunct: seleziona la variante dell’operazione nel campo op: seleziona la variante dell’operazione nel campo opaddress/immediateaddress/immediate: offset dell’indirizzo o valore immediato: offset dell’indirizzo o valore immediatotarget addresstarget address: indirizzo dell’istruzione di jump: indirizzo dell’istruzione di jump

op target address

02631

6 bits 26 bits

op rs rt rd shamt funct

061116212631

6 bits 6 bits5 bits5 bits5 bits5 bits

op rs rt immediate

016212631

6 bits 16 bits5 bits5 bits

Page 6: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 6

Passi di ProgettoPassi di Progetto

Analizzare il set di Istruzioni: Requisiti del DapapathAnalizzare il set di Istruzioni: Requisiti del Dapapath Analizzare la semantica di ogni istruzione Analizzare la semantica di ogni istruzione

Espressa intermini di trasferimenti e operazioni tra registriEspressa intermini di trasferimenti e operazioni tra registri Il datapath deve includere il banco dei registri (register Il datapath deve includere il banco dei registri (register

file) file) Sono necessari altri registri, non visibili a livello ISA, e.g., PCSono necessari altri registri, non visibili a livello ISA, e.g., PC

Il datapath deve fornire i cammini per permettere tutti i Il datapath deve fornire i cammini per permettere tutti i trasferimenti tra registri necessari, e gli accessi in trasferimenti tra registri necessari, e gli accessi in memoriamemoria

Includeremo la memoria nel progetto (per semplicita’)Includeremo la memoria nel progetto (per semplicita’)

1. Selezionare i Componenti del Datapath1. Selezionare i Componenti del Datapath

2. Assemblare il Datapath secondo i requisiti aggiungendo 2. Assemblare il Datapath secondo i requisiti aggiungendo i segnali di controlloi segnali di controllo

3. Analizzare l’implementazione di ogni istruzione per 3. Analizzare l’implementazione di ogni istruzione per determinare quali segnali di controllo devono essere determinare quali segnali di controllo devono essere affermati o meno per permetterne l’esecuzione affermati o meno per permetterne l’esecuzione

4. Realizzare la Parte di Controllo (4. Realizzare la Parte di Controllo (ControlControl) in accordo a ) in accordo a quanto stabilito al punto 4 del paragrafo precedente.quanto stabilito al punto 4 del paragrafo precedente.

Page 7: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 7

Semantica Istruzioni e RTLSemantica Istruzioni e RTL

RTL (Register-Transfer Language): Linguaggio per RTL (Register-Transfer Language): Linguaggio per esprimere i trasferimenti tra registri (e memoria), esprimere i trasferimenti tra registri (e memoria),

Permette di definire la semantica di ogni istruzionePermette di definire la semantica di ogni istruzioneM[x] contenuto della memoria indirizzo xM[x] contenuto della memoria indirizzo xR[y] contenuto registro yR[y] contenuto registro y

Es: Es: add rd, rs, rtadd rd, rs, rtR[rd]=R[rs]+R[rt], PC=PC+4;R[rd]=R[rs]+R[rt], PC=PC+4;

EsEs:load rt, offset(rs):load rt, offset(rs)R[rt]=M[R[rs]+sign_ext(offset)], PC=PC+4;R[rt]=M[R[rs]+sign_ext(offset)], PC=PC+4;

Es:Es: beq rs, rt, address beq rs, rt, addressIf(R[rs]==R[rt]) If(R[rs]==R[rt])

then PC=PC+4+sign_ext(address)<<2;then PC=PC+4+sign_ext(address)<<2;else PC=PC+4;else PC=PC+4;

Tutte richiedono come passo preliminare il prelievo Tutte richiedono come passo preliminare il prelievo dell’istruzione dalle memoria (fetch)dell’istruzione dalle memoria (fetch)

Istruzione=M[PC]Istruzione=M[PC]

Page 8: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 8

Implementazione del set ridottoImplementazione del set ridotto

I primi due passi da implementare sono comuni a I primi due passi da implementare sono comuni a tutte le istruzioni,indipendentemente dalla classe tutte le istruzioni,indipendentemente dalla classe di istruzione:di istruzione:

Inviare l’uscita del Program Counter (Inviare l’uscita del Program Counter (PCPC) alla memoria ) alla memoria che contiene il programma, caricare l’istruzione (che contiene il programma, caricare l’istruzione (FetchFetch) ) ed aggiornare PCed aggiornare PC

Decodifica dell’Istruzione (Decodifica dell’Istruzione (Decode)Decode) (e lettura registri) (e lettura registri)

La fase di esecuzione (La fase di esecuzione (ExecuteExecute) dipende ) dipende dall’istruzionedall’istruzione

Sono comunque raggruppabili per classi di istruzioniSono comunque raggruppabili per classi di istruzioni

Dopo aver letto i registri, tutte le istruzioni usano Dopo aver letto i registri, tutte le istruzioni usano l’ALU (eccetto j)l’ALU (eccetto j)

Le istruzioni di accesso alla memoria per calcolare Le istruzioni di accesso alla memoria per calcolare l’indirizzol’indirizzo

Le istruzioni logico-aritmetiche per effettuare Le istruzioni logico-aritmetiche per effettuare l’operazionel’operazione

L’istruzione L’istruzione beqbeq per verificare l’uguaglianza fra registri per verificare l’uguaglianza fra registri

Page 9: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 9

Implementazione del set ridotto (2)Implementazione del set ridotto (2)

Poi il comportamento delle istruzioni si differenziaPoi il comportamento delle istruzioni si differenziaIstruzioni di accesso alla memoriaIstruzioni di accesso alla memoria Devono accedere alla memoria per leggere/scrivere il datoDevono accedere alla memoria per leggere/scrivere il dato

Istruzioni logico-aritmeticheIstruzioni logico-aritmetiche Devono accedere ad un registro per scrivere il risultatoDevono accedere ad un registro per scrivere il risultato

Istruzioni di branch e jumpIstruzioni di branch e jump Devono modificare il Program CounterDevono modificare il Program Counter

Vantaggio della semplicità nella progettazioneVantaggio della semplicità nella progettazionePochi formati di istruzione facilitano l’implementazione Pochi formati di istruzione facilitano l’implementazione dell’unità di elaborazionedell’unità di elaborazione

Page 10: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 10

I cinque passi delle istruzioniI cinque passi delle istruzioni

I cinque passi delle istruzioni da effettuareI cinque passi delle istruzioni da effettuare1.1. Fetch Fetch (caricamento) dell’istruzione dalla (caricamento) dell’istruzione dalla

memoriamemoria2.2. DecodeDecode dell’istruzione e fetch dei registri dell’istruzione e fetch dei registri3.3. ExecuteExecute– Uso della ALU (esecuzione dell’operazione o Uso della ALU (esecuzione dell’operazione o

calcolo dell’indirizzocalcolo dell’indirizzo))

4.4. Memory AccessMemory Access– Accesso ad un operando in memoriaAccesso ad un operando in memoria

5.5. Write-backWrite-back– Scrittura del risultato in un registroScrittura del risultato in un registro

Page 11: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 11

Una visione astrattaUna visione astratta

1: fetch 2: decode e register fetch 3: execute 4: mem.

5: write-back

Page 12: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 12

Progettazione dell’unità di elaborazioni Progettazione dell’unità di elaborazioni dati e prestazionidati e prestazioni

CPI

IC TCLOCK

Le prestazioni di un calcolatore sono determinate Le prestazioni di un calcolatore sono determinate da:da:

Numero di istruzioni Numero di istruzioni Instruction Count (IC)Instruction Count (IC)

Durata del ciclo di clock (TDurata del ciclo di clock (TCLOCKCLOCK))

Cicli di clock per istruzione Cicli di clock per istruzione Clock cycle Per Instruction (CPI)Clock cycle Per Instruction (CPI)

La progettazione del processore (unità di La progettazione del processore (unità di elaborazione e unità di controllo) determinaelaborazione e unità di controllo) determina

Durata del ciclo di clockDurata del ciclo di clock

Cicli di clock per istruzione (CPI)Cicli di clock per istruzione (CPI)

Page 13: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 13

Implementazione del Processore: ApprocciImplementazione del Processore: Approcci

Singolo CicloSingolo CicloEsecuzione di ogni istruzione richiede 1 ciclo di clockEsecuzione di ogni istruzione richiede 1 ciclo di clock

Il ciclo di clock deve essere abbastanza lungo da Il ciclo di clock deve essere abbastanza lungo da permettere il completamento dell’istruzione piu’ lentapermettere il completamento dell’istruzione piu’ lentaSvantaggioSvantaggio: velocita’ limitata dall’istruzione piu’ lenta : velocita’ limitata dall’istruzione piu’ lenta supportata, alcune risorse devono essere replicatesupportata, alcune risorse devono essere replicate

Multi-CicloMulti-CicloSuddividere l’esecuzione in piu’ passiSuddividere l’esecuzione in piu’ passiEseguire un passo per cicloEseguire un passo per cicloVantaggioVantaggio: ogni istruzione richiede il solo numero di cicli : ogni istruzione richiede il solo numero di cicli (tempo) richiesto(tempo) richiesto TTclockclock(Singolo Ciclo)> T(Singolo Ciclo)> Tclockclock (Multiplo Ciclo) (Multiplo Ciclo)

PipelinedPipelinedSuddividere l’esecuzione in piu’ passiSuddividere l’esecuzione in piu’ passiEseguire un passo per cicloEseguire un passo per cicloProcessare piu’ istruzioni in paralleloProcessare piu’ istruzioni in parallelo Elaborazione in contemporanea di step diversi di istruzioni Elaborazione in contemporanea di step diversi di istruzioni

consecutive (linea di assemblaggio)consecutive (linea di assemblaggio)

Page 14: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 14

Implementazione Singolo CicloImplementazione Singolo Ciclo

Prima implementazione impiega in singolo Prima implementazione impiega in singolo ciclo di clock per ogni istruzione ciclo di clock per ogni istruzione

Ogni istruzione inizia sul fronte attivo di un ciclo Ogni istruzione inizia sul fronte attivo di un ciclo di clock e termina sul fronte attivo del ciclo di di clock e termina sul fronte attivo del ciclo di clock successivoclock successivo Approccio non pratico e inefficiente rispetto ad una Approccio non pratico e inefficiente rispetto ad una

implementazione multicicloimplementazione multicicloOgni istruzione richiede esattamente tanto Ogni istruzione richiede esattamente tanto tempo quanto il tempo di esecuzone tempo quanto il tempo di esecuzone dell’istruzione piu’ lenta dell’istruzione piu’ lenta Nell’implementazioni multiciclo questo problema si Nell’implementazioni multiciclo questo problema si

evita permettendo alle istruzioni piu’ veloci di evita permettendo alle istruzioni piu’ veloci di essere eseguite in un numero inferiore di cicli essere eseguite in un numero inferiore di cicli

Tuttavia e’ semplice e utile da un punto di Tuttavia e’ semplice e utile da un punto di vista didatticovista didattico

Nota: Nota: Implementeremo il jump solo alla fine della trattazione

Page 15: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 15

I Blocchi della ProgettazioneI Blocchi della Progettazione

••Fase di FetchFase di FetchAccedere all’istruzioni in memoria ed aggiornare PCAccedere all’istruzioni in memoria ed aggiornare PC

••DecodeDecode, Accesso ai registri ed esecuzione istruzioni , Accesso ai registri ed esecuzione istruzioni formato Rformato R

Istruzioni logico-aritmeticheIstruzioni logico-aritmetiche

••DecodeDecode, Accesso ai registri ed operazioni di accesso , Accesso ai registri ed operazioni di accesso alla alla

memoriamemoriaIstruzioni load/storeIstruzioni load/store

••DecodeDecode, Accesso ai registri per i branch, Accesso ai registri per i branchIstruzione beqIstruzione beq

Page 16: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 16

Datapath: Fetch Istruzione e Datapath: Fetch Istruzione e aggiornamento PCaggiornamento PC

PC

Instructionmemory

Instructionaddress

Instruction

a. Instruction memory b. Program counter

Add Sum

c. Adder

PC

Instructionmemory

Readaddress

Instruction

4

Add

Instruction = M[PC]PC = PC + 4

Page 17: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 17

Datapath: Fetch Istruzione e Datapath: Fetch Istruzione e aggiornamento PCaggiornamento PC

Instruction = M[PC]PC = PC + 4

RDMemory

ADDR

PC

Instruction

4

ADD

Page 18: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 18

Datapath: Fetch Istruzione e Datapath: Fetch Istruzione e aggiornamento PCaggiornamento PC

Instruction = M[PC]PC = PC + 4

RDMemory

ADDR

PC

Instruction

4

ADD

Page 19: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 19

Datapath: Istruzioni formato RDatapath: Istruzioni formato R

ALU control

RegWrite

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

ALUresult

ALU

Data

Data

Registernumbers

a. Registers b. ALU

Zero5

5

5 3

InstructionRegisters

Writeregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

ALUresult

ALU

Zero

RegWrite

ALU operation3

add rd, rs, rt

R[rd] =R[rs] + R[rt];

Page 20: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 20

Datapath: Istruzioni formato RDatapath: Istruzioni formato R

add rd, rs, rt

R[rd] =R[rs] + R[rt];

5 5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

op rs rt rd functshamt

Operation

ALU Zero

Instruction

3

Page 21: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 21

Datapath: Datapath: Istruzioni Load/StoreIstruzioni Load/Store

16 32Sign

extend

b. Sign-extension unit

MemRead

MemWrite

Datamemory

Writedata

Readdata

a. Data memory unit

Address

Instruction

16 32

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Datamemory

Writedata

Readdata

Writedata

Signextend

ALUresult

ZeroALU

Address

MemRead

MemWrite

RegWrite

ALU operation3

ALU control

RegWrite

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

ALUresult

ALU

Data

Data

Registernumbers

a. Registers b. ALU

Zero5

5

5 3

lw rt, offset(rs)

R[rt] =M[R[rs] + sign_ext(offset)];

Page 22: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 22

op rs rt offset/immediate

5 5

16

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RDWD

MemRead

MemoryADDR

MemWrite

5

lw rt, offset(rs)

R[rt] =M[R[rs] + sign_ext(offset)];

Datapath: Istruzione LoadDatapath: Istruzione Load

Page 23: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 23

op rs rt offset/immediate

5 5

16

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RDWD

MemRead

MemoryADDR

MemWrite

5

sw rt, offset(rs)

M[R[rs] + sign_extend(offset)]=R[rt]

Datapath: Istruzione StoreDatapath: Istruzione Store

Page 24: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 24

Datapath: Istruzione di SaltoDatapath: Istruzione di Salto

16 32Sign

extend

ZeroALU

Sum

Shiftleft 2

To branchcontrol logic

Branch target

PC + 4 from instruction datapath

Instruction

Add

RegistersWriteregister

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Writedata

RegWrite

ALU operation3

beq rs, rt, offset

if (R[rs] == R[rt]) then PC = PC+4 + sign_ext(offset)<<2

Page 25: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 25

beq rs, rt, offset

op rs rt offset/immediate

5 5

16

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

EXTND

16 32

Zero

ADD

<<2

PC +4 from instruction datapath

if (R[rs] == R[rt]) then PC = PC+4 + sign_ext(offset)<<2

Datapath: Istruzione di Salto Datapath: Istruzione di Salto beqbeq

Page 26: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 26

Composizione dei blocchi Composizione dei blocchi

Uniamo il blocco relativo alle istruzioni di accesso alla Uniamo il blocco relativo alle istruzioni di accesso alla memoria con quello per le istruzioni di tipo Rmemoria con quello per le istruzioni di tipo R

Multiplexer per scegliere se il secondo operando è un indirizzo (tipo I) oppure il

dato in un registro (tipo R)

Multiplexer per scegliere se ai registri va il dato dalla memoria (tipo I)

oppure il risultato dell’operazione (tipo R)

Page 27: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 27

Datapath: Istruzioni formato RDatapath: Istruzioni formato R

add rd,rs,rt5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

MUXALUSrc

MemtoReg

Page 28: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 28

Datapath: Istruzione LoadDatapath: Istruzione Load

lw rt,offset(rs)5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

MUXALUSrc

MemtoReg

Page 29: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 29

Datapath: Istruzione StoreDatapath: Istruzione Store

sw rt,offset(rs)5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

MUXALUSrc

MemtoReg

Page 30: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 30

Aggiungere il blocco che esegue il fetchAggiungere il blocco che esegue il fetch

PC

Instructionmemory

Readaddress

Instruction

16 32

Registers

Writeregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

ALUresult

Zero

Datamemory

Address

Writedata

Readdata M

ux

4

Add

Mux

ALU

RegWrite

ALU operation3

MemRead

MemWrite

ALUSrcMemtoReg

Memoria Istruzioni e dati Separate per Poter leggere e scrivere nello stesso ciclo

ALU e Adder Separati perche’ entrambi devonoPoter essere usati nello stesso ciclo

Composizione dei blocchiComposizione dei blocchi

Page 31: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 31

Aggiungiamo il blocco per il beqAggiungiamo il blocco per il beq

PC

Instructionmemory

Readaddress

Instruction

16 32

Add ALUresult

Mux

Registers

Writeregister

Writedata

Readdata 1

Readdata 2

Readregister 1Readregister 2

Shiftleft 2

4

Mux

ALU operation3

RegWrite

MemRead

MemWrite

PCSrc

ALUSrc

MemtoReg

ALUresult

ZeroALU

Datamemory

Address

Writedata

Readdata M

ux

Signextend

Add

Adder addizionale

Composizione dei blocchiComposizione dei blocchiMultiplexer per

scegliere indirizzo della

prossima istruzione

Page 32: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 32

Datapath: Datapath: addadd

add rd, rs, rt

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

Page 33: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 33

Datapath: Datapath: lwlw

lw rt,offset(rs)

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

Page 34: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 34

Datapath: Datapath: swsw

sw rt,offset(rs)

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

Page 35: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 35

Datapath: Datapath: beqbeq

beq r1,r2,offset

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

Page 36: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 36

ControlloControllo

L’Unita di Controllo deve generare:L’Unita di Controllo deve generare: I segnali di controllo dell’ALUI segnali di controllo dell’ALU I segnali di controllo dei vari multiplexerI segnali di controllo dei vari multiplexer I segnali di abilitazione alla scrittura/lettura I segnali di abilitazione alla scrittura/lettura

dei diversi elementi di memoriadei diversi elementi di memoria Basandosi su…Basandosi su… I segnali in ingresso all’unita’ di ControlloI segnali in ingresso all’unita’ di Controllo

I bit del campo opcode (e funct nel caso del I bit del campo opcode (e funct nel caso del formato R) dell’istruzioneformato R) dell’istruzione

0 rs rt rd shamt funct061116212631

6 bit 6 bit5 bit5 bit5 bit5 bit

25 20 15 10 5Istruzione di tipo R

35 o 43 rs rt address016212631

6 bit 16 bit5 bit5 bit

25 20 15Istruzione di load o store

4 rs rt address016212631

6 bit 16 bit5 bit5 bit

25 20 15Istruzione beq

Controllo

Opcode

Funct

Controllo ALU

Controllo MUX

Read/Write

Memorie

6

6

Page 37: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 37

Suddivisione in Main Control e ALU Suddivisione in Main Control e ALU ControlControl

Per semplificare la progettazione/circuitoPer semplificare la progettazione/circuito Bit di funct (formato R) servono solo per il controllo dell’ALUBit di funct (formato R) servono solo per il controllo dell’ALU

Specificano l’operazione da eseguire: Specificano l’operazione da eseguire: add,sub,and,or, add,sub,and,or, o o sltslt

ALUOp serve per specificare il tipo di istruzione ALUOp serve per specificare il tipo di istruzione lw/sw beqlw/sw beq o o formato R)formato R)

Opcode ed ALUOpOpcode ed ALUOp load/store load/store ALUOp=00ALUOp=00 beq beq ALUOp=01ALUOp=01 Formato R Formato R ALUOp=10ALUOp=10

Controllo

Opcode

ALUOp

Controllo MUX

Read/Write

Memorie

2

Controllo

Opcode

Funct

Controllo ALU

Controllo MUX

Read/Write

Memorie

6

6

6

Funct

6

ALU

Control

Controllo ALU

Page 38: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 38

Istruzioni ed Operazioni RichiesteIstruzioni ed Operazioni Richieste Load/store Load/store ALUOp=00ALUOp=00 sommasomma beq beq ALUOp=01 sottrazioneALUOp=01 sottrazione Formato R Formato R ALUOp=10 spec. dal campo functALUOp=10 spec. dal campo funct

Linee di controllo Ainvert (1 bit), Bnegate (1 bit) e Linee di controllo Ainvert (1 bit), Bnegate (1 bit) e Operation (2 bit) dell’ALUOperation (2 bit) dell’ALU0000 = and0000 = and0001 = or0001 = or0010 = add0010 = add0110 = sub0110 = sub0111 = slt0111 = slt1100 = nor1100 = nor

Poiche’ manca nor nel set ristetto ignoriamo AinvertPoiche’ manca nor nel set ristetto ignoriamo Ainvert Il controllo dell’ALU richiede solo gli ultimi 3 bitIl controllo dell’ALU richiede solo gli ultimi 3 bit

Controllo dell’ALUControllo dell’ALU

ALUOp

2

Funct

6

ALU

Control

Controllo ALU=ALU operation

Page 39: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 39

Instruction AluOp Instruction Funct Field Desired ALU controlInstruction AluOp Instruction Funct Field Desired ALU control

opcode operation ALU action opcode operation ALU action LW 00 load word xxxxxx add 010LW 00 load word xxxxxx add 010

SW 00 store word xxxxxx add 010SW 00 store word xxxxxx add 010

Branch eq 01 branch eq xxxxxx sub 110Branch eq 01 branch eq xxxxxx sub 110

R-type 10 add 100000 add 010R-type 10 add 100000 add 010

R-type 10 subR-type 10 sub 100010 sub 110 100010 sub 110

R-type 10 AND 100100 and 000R-type 10 AND 100100 and 000

R-type 10 OR 100101 or 001R-type 10 OR 100101 or 001

R-type 10 set on less 101010 set on less 111R-type 10 set on less 101010 set on less 111

Tabella di Verita’Tabella di Verita’dell’ ALU Controldell’ ALU Control

Controllo dell’ALU (2)Controllo dell’ALU (2)

Input Output

ALUOp

2

Funct

6

ALU

Control

Controllo ALU

ALUOp Funct field ALU ControlALUOp1ALUOp0 F5 F4 F3 F2 F1 F0

0 0 X X X X X X 0100 1 X X X X X X 1101 X X X 0 0 0 0 0101 X X X 0 0 1 0 1101 X X X 0 1 0 0 0001 X X X 0 1 0 1 0011 X X X 1 0 1 0 111

*

Page 40: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 40

Operation2

Operation1

Operation0

Operation

ALUOp1

F3

F2

F1

F0

F (5– 0)

ALUOp0

ALUOp

ALU control block

Controllo dell’ALU: ImplementazioneControllo dell’ALU: Implementazione

Tabella di Verita’Tabella di Verita’dell’ ALU Controldell’ ALU Control

ALUOp Funct field ALU ControlALUOp1ALUOp0 F5 F4 F3 F2 F1 F0

0 0 X X X X X X 0100 1 X X X X X X 1101 X X X 0 0 0 0 0101 X X X 0 0 1 0 1101 X X X 0 1 0 0 0001 X X X 0 1 0 1 0011 X X X 1 0 1 0 111

*

Input Output

Page 41: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 41

Progettazione dell’Unita’ di ControlloProgettazione dell’Unita’ di Controllo

Osservazioni sul formato Istruzioni MIPSOsservazioni sul formato Istruzioni MIPS Il codice operativo (campo Il codice operativo (campo opcodeopcode) e’ sempre nei bit ) e’ sempre nei bit

31-2631-26 I due registri da leggere sono sempre I due registri da leggere sono sempre rsrs (bit 25-21) e (bit 25-21) e rtrt

(bit 20-16)(bit 20-16) Il registro base per load e store e’ sempre il registro Il registro base per load e store e’ sempre il registro rsrs

(bit 25-21)(bit 25-21) L’offset a 16-bit per L’offset a 16-bit per beqbeq,load e store e’ sempre nei bit ,load e store e’ sempre nei bit

15-015-0 Il registro di destinazione e’ Il registro di destinazione e’

bit 20-16 (rt) per loadbit 20-16 (rt) per load bits 15-11 (rd) per le istruzioni R bits 15-11 (rd) per le istruzioni R Occorre un ulteriore multiplexer per indicare quale campo Occorre un ulteriore multiplexer per indicare quale campo

dell’istruzione indica il registro destinazionedell’istruzione indica il registro destinazione

31-26 25-21 20-16 15-11

10-6 5-0

31-26 25-21 20-16 15-0

opcode

opcode

rs

rs

rt

rt address

rd shamt functR-type

Load/store or branch

Page 42: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 42

Datapath e Controllo IDatapath e Controllo I

Registro da scrivere viene da

rt o da rd

MemtoReg

MemRead

MemWrite

ALUOp

ALUSrc

RegDst

PC

Instructionmemory

Readaddress

Instruction[31– 0]

Instruction [20– 16]

Instruction [25– 21]

Add

Instruction [5– 0]

RegWrite

4

16 32Instruction [15– 0]

0Registers

WriteregisterWritedata

Writedata

Readdata 1

Readdata 2

Readregister 1Readregister 2

Signextend

ALUresult

Zero

Datamemory

Address Readdata M

ux

1

1

Mux

0

1

Mux

0

1

Mux

0

Instruction [15– 11]

ALUcontrol

Shiftleft 2

PCSrc

ALU

Add ALUresult

Page 43: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 43

I segnali di controllo ad 1 bitI segnali di controllo ad 1 bit

SegnaleSegnale Effetto quando vale 0Effetto quando vale 0 Effetto quando vale 1Effetto quando vale 1

RegDstRegDst Registro destinazione = rtRegistro destinazione = rt Registro destinazione = rdRegistro destinazione = rd

RegWriteRegWrite NessunoNessuno Nel registro indicato Nel registro indicato sull’ingresso sull’ingresso Write registerWrite register viene scritto il valore viene scritto il valore Write Write datadata

ALUSrcALUSrc Il secondo operando di ALU Il secondo operando di ALU viene da viene da Read data 2Read data 2

Il secondo operando di ALU Il secondo operando di ALU viene dall’estensione di segnoviene dall’estensione di segno

PCSrcPCSrc Scrittura di PC con PC+4Scrittura di PC con PC+4 Scrittura di PC con l’output del Scrittura di PC con l’output del sommatore per il branchsommatore per il branch

MemReadMemRead NessunoNessuno Lettura della locazione di Lettura della locazione di memoria indicata da memoria indicata da AddressAddress

MemWriteMemWrite NessunoNessuno Scrittura della locazione di Scrittura della locazione di memoria indicata da memoria indicata da AddressAddress

MemtoRegMemtoReg Il valore in Il valore in Write dataWrite data (registri) viene dalla ALU(registri) viene dalla ALU

Il valore in Il valore in Write dataWrite data (registri) (registri) viene dalla memoria dativiene dalla memoria dati

Page 44: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 44

PC

Instructionmemory

Readaddress

Instruction[31– 0]

Instruction [20 16]

Instruction [25 21]

Add

Instruction [5 0]

MemtoReg

ALUOp

MemWrite

RegWrite

MemRead

BranchRegDst

ALUSrc

Instruction [31 26]

4

16 32Instruction [15 0]

0

0Mux

0

1

Control

Add ALUresult

Mux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux

1

ALUresult

Zero

PCSrc

Datamemory

Writedata

Readdata

Mux

1

Instruction [15 11]

ALUcontrol

Shiftleft 2

ALUAddress

Datapath e Controllo IIDatapath e Controllo II

Page 45: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 45

Datapath conDatapath conControllo IIControllo II

PC

Instructionmemory

Readaddress

Instruction[31– 0]

Instruction [20 16]

Instruction [25 21]

Add

Instruction [5 0]

MemtoReg

ALUOp

MemWrite

RegWrite

MemRead

BranchRegDst

ALUSrc

Instruction [31 26]

4

16 32Instruction [15 0]

0

0Mux

0

1

Control

Add ALUresult

Mux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux

1

ALUresult

Zero

PCSrc

Datamemory

Writedata

Readdata

Mux

1

Instruction [15 11]

ALUcontrol

Shiftleft 2

ALUAddress

Opcode Istruzione e Segnali di ControlloOpcode Istruzione e Segnali di Controllo

PCSrc non dipende dal solo opcodePCSrc=1 se l’istruzionee’ beq e Zero=1

InstructionRegDst ALUSrcMemto-

RegReg

WriteMem Read

Mem WriteBranch ALUOp1 ALUp0

R-format 1 0 0 1 0 0 0 1 0lw 0 1 1 1 1 0 0 0 0sw X 1 X 0 0 1 0 0 0beq X 0 X 0 0 0 1 0 1

Page 46: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 46

Segnali di Controllo: Istruzioni Formato RSegnali di Controllo: Istruzioni Formato R

Control signalsshown in blue

1

0

0

0

1

???Value depends on

funct

0

0

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction I32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

MUX RegDst

5

rdI[15:11]

rtI[20:16]

rsI[25:21]

immediate/offsetI[15:0]

0

1

0

11

0

10

Page 47: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 47

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction I32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

MUX RegDst

5

rdI[15:11]

rtI[20:16]

rsI[25:21]

immediate/offsetI[15:0]

0

1

0

11

0

10

Segnali di Controllo: Istruzione Segnali di Controllo: Istruzione lwlw

0

Control signalsshown in blue

0010

1

1

1

0

1

Page 48: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 48

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction I32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

MUX RegDst

5

rdI[15:11]

rtI[20:16]

rsI[25:21]

immediate/offsetI[15:0]

0

1

0

11

0

10

Segnali di Controllo: Istruzione Segnali di Controllo: Istruzione swsw

0

Control signalsshown in blue

X010

1

X

0

1

0

Page 49: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 49

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction I32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

MUX RegDst

5

rdI[15:11]

rtI[20:16]

rsI[25:21]

immediate/offsetI[15:0]

0

1

0

11

0

10

Segnali di Controllo: Istruzione Segnali di Controllo: Istruzione beqbeq

Control signalsshown in blue

X110

0

X

0

0

0

1 if Zero=1

Page 50: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 50

Datapath conDatapath conControllo IIControllo II

PC

Instructionmemory

Readaddress

Instruction[31– 0]

Instruction [20 16]

Instruction [25 21]

Add

Instruction [5 0]

MemtoReg

ALUOp

MemWrite

RegWrite

MemRead

BranchRegDst

ALUSrc

Instruction [31 26]

4

16 32Instruction [15 0]

0

0Mux

0

1

Control

Add ALUresult

Mux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Signextend

Mux

1

ALUresult

Zero

PCSrc

Datamemory

Writedata

Readdata

Mux

1

Instruction [15 11]

ALUcontrol

Shiftleft 2

ALUAddress

Opcode Istruzione e Segnali di ControlloOpcode Istruzione e Segnali di Controllo

PCSrc non dipende dal solo opcodePCSrc=1 se l’istruzionee’ beq e Zero=1

InstructionRegDst ALUSrcMemto-

RegReg

WriteMem Read

Mem WriteBranch ALUOp1 ALUp0

R-format 1 0 0 1 0 0 0 1 0lw 0 1 1 1 1 0 0 0 0sw X 1 X 0 0 1 0 0 0beq X 0 X 0 0 0 1 0 1

Page 51: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 51

Implementazione dell’unita’ di Controllo Implementazione dell’unita’ di Controllo PrincipalePrincipale

Segnale form. lw sw beqSegnale form. lw sw beq RROp5 0 1 1 0Op4 0 0 0 0Op3 0 0 1 0Op2 0 0 0 1Op1 0 1 1 0Op0 0 1 1 0RegDst 1 0 x xALUSrc 0 1 1 0MemtoReg 0 1 x xRegWrite 1 1 0 0MemRead 0 1 0 0 MemWrite 0 0 1 0Branch 0 0 0 1ALUOp1 1 0 0 0ALUOP0 0 0 0 1

Inp

uts

Inp

uts

=O

pco

de

=O

pco

de

Outp

ut

Outp

ut

ss

Tabella di verita’ dell’unita’ di ControlloTabella di verita’ dell’unita’ di Controllo

R-format Iw sw beq

Op0

Op1

Op2

Op3

Op4

Op5

Inputs

Outputs

RegDst

ALUSrc

MemtoReg

RegWrite

MemRead

MemWrite

Branch

ALUOp1

ALUOpO

Rete Combinatoria realizzabile Rete Combinatoria realizzabile tramite PLAtramite PLA

Page 52: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 52

Controllo a Singolo CicloControllo a Singolo Ciclo

Controllo a singolo ciclo Controllo a singolo ciclo Definito da una coppia di tabelle di verita’Definito da una coppia di tabelle di verita’

Controllo Principale e Controllo ALUControllo Principale e Controllo ALU Rete CombinatoriaRete Combinatoria

R-format Iw sw beq

Op0

Op1

Op2

Op3

Op4

Op5

Inputs

Outputs

RegDst

ALUSrc

MemtoReg

RegWrite

MemRead

MemWrite

Branch

ALUOp1

ALUOpO

Operation2

Operation1

Operation0

Operation

ALUOp1

F3

F2

F1

F0

F (5– 0)

ALUOp0

ALUOp

ALU control block

Zero

PCSrc

Page 53: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 53

Controllo a Singolo CicloControllo a Singolo Ciclo

Il Controllo della CPU a singolo ciclo e’ una rete Il Controllo della CPU a singolo ciclo e’ una rete combinatoriacombinatoria

Il Datapath e’ una rete sequenzialeIl Datapath e’ una rete sequenzialeL’output dipende dagli ingressi e dai valori dagli L’output dipende dagli ingressi e dai valori dagli elementi di memoria (Registri e PC)elementi di memoria (Registri e PC)

Il ciclo di clock deve durare abbastanza da Il ciclo di clock deve durare abbastanza da stabilizzare le uscite di tutte le reti combinatorie stabilizzare le uscite di tutte le reti combinatorie prima del fronte di discesa del clockprima del fronte di discesa del clock

Clock in AND con i segnali di controllo di scritturaClock in AND con i segnali di controllo di scrittura I valori in ingresso vengono scritti solo se i segnali sono I valori in ingresso vengono scritti solo se i segnali sono

affermatiaffermati

Ciclo di Clock determinato sulla base del percorso Ciclo di Clock determinato sulla base del percorso piu’ lungopiu’ lungo

Page 54: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 54

Diagramma a blocchi della CPU (Datapath e Diagramma a blocchi della CPU (Datapath e Control) e MemoriaControl) e Memoria

Mem. Istr.

Mem.

Dati

Istruzione

<5:0

>

<31:2

6>

Opcode Funct

CONTROLLO

DATAPATH

Addr

Addr

rs,rt,rd,Im

m

Operation=f(ALUOp,funct)

RegDst ALUSrc MemtoReg

PCRsr=Branch∙Zero

MemWr MemRd RegWr

Zero

Register file

PC

ALU

Page 55: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 55

Shiftleft 2

PC

Instructionmemory

Readaddress

Instruction[31– 0]

Datamemory

Readdata

Writedata

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction [15– 11]

Instruction [20– 16]

Instruction [25– 21]

Add

ALUresult

Zero

Instruction [5– 0]

MemtoReg

ALUOp

MemWrite

RegWrite

MemRead

Branch

JumpRegDst

ALUSrc

Instruction [31– 26]

4

Mux

Instruction [25– 0] Jump address [31– 0]

PC+4 [31– 28]

Signextend

16 32Instruction [15– 0]

1

Mux

1

0

Mux

0

1

Mux

0

1

ALUcontrol

Control

Add ALUresult

Mux

0

1 0

ALU

Shiftleft 2

26 28

Address

31-26 25-0

opcode addressJump

Ulteriore multiplexer con Segnale di controllo jump

Calcolo dell’indirizzo di salto

Datapath e Controllo III: Istruzione Datapath e Controllo III: Istruzione jj

Page 56: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 56

Datapath e Controllo III: Istruzione Datapath e Controllo III: Istruzione jj

5 516

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Register File

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

DataMemory

ADDRMemWrite

5

Instruction I32

MUX

ALUSrc

MemtoReg

ADD

<<2

RD

InstructionMemory

ADDR

PC

4

ADD

ADD

MUX

MUX

PCSrc

MUX RegDst

5

0

1

0

11

0

10

ALUControl

ControlUnit

6 6

op I[31:

op I[31:26] funct I[5:0]

ALUOp

2

Branch

MUX

0

1

Jump

<<226

CONCAT28

jmpaddr I[25:0]

PC+4[31-28]

32

Page 57: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 57

L’implementazione singolo ciclo e’ inefficienteL’implementazione singolo ciclo e’ inefficiente

Una istruzione per ciclo, CPI=1, ma…Una istruzione per ciclo, CPI=1, ma…

Il tempo di ciclo e’ determinato dall’istruzione Il tempo di ciclo e’ determinato dall’istruzione

piu’ lungapiu’ lunga

Quale?Quale?

Ciclo di Clock dell’Implementazione a singolo Ciclo di Clock dell’Implementazione a singolo ciclociclo

Page 58: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 58

Calcolo del tempo di ciclo assumendo ritardi Calcolo del tempo di ciclo assumendo ritardi nulli per multiplexer, unita’ di controllo, nulli per multiplexer, unita’ di controllo, estensione del segno, accesso PC, shift left, estensione del segno, accesso PC, shift left, linee) eccetto :linee) eccetto :

Memoria Istruzione e Dati (2ns)Memoria Istruzione e Dati (2ns) ALU ed addizionatori (2ns)ALU ed addizionatori (2ns) Accesso al banco dei registri (1ns)Accesso al banco dei registri (1ns)

Ciclo di Clock dell’Implementazione a singolo Ciclo di Clock dell’Implementazione a singolo ciclo ciclo

Instr.Instr. Mem IMem I Reg RdReg Rd ALU OpALU Op Mem DMem D Reg WrReg Wr TotalTotal

R-typeR-type

loadload

storestore

beqbeq

jumpjump

22 11 22 11 66

22 11 22 22 11 88

22 11 22 22 77

22 11 22 55

22 22

Page 59: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 59

Il tempo di ciclo e’ determinato dall’istruzione Il tempo di ciclo e’ determinato dall’istruzione piu’ lentapiu’ lenta

Nel nostro caso e’ load, ma cosa succederebbe se Nel nostro caso e’ load, ma cosa succederebbe se

considerassimo anche istruzioni floating point?considerassimo anche istruzioni floating point?

Perdita di tempoPerdita di tempo moltre istruzioni possono essere eseguite in moltre istruzioni possono essere eseguite in

un tempo minore un tempo minore

Le risorse che devono essere usate piu’ di una Le risorse che devono essere usate piu’ di una

volta nello stesso ciclo devono essere duplicatevolta nello stesso ciclo devono essere duplicate

Spreco di hardware/chip areaSpreco di hardware/chip area

Problemi con l’Implementazione a Singolo CicloProblemi con l’Implementazione a Singolo Ciclo

Page 60: Calcolatori Elettronici Il Processore Francesco Lo Presti Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU 60

Problemi con l’Implementazione a Singolo CicloProblemi con l’Implementazione a Singolo Ciclo

Possibili soluzioniPossibili soluzioni

1.1. Usare un periodo di clock variabile per ogni Usare un periodo di clock variabile per ogni tipo di istruzionetipo di istruzione

Soluzione non praticaSoluzione non pratica

2.2. Approccio MulticicloApproccio MulticicloUsare un tempo di ciclo piu’ piccolo…Usare un tempo di ciclo piu’ piccolo…

Ma permettere l’esecuzione di istruzioni diverse sia Ma permettere l’esecuzione di istruzioni diverse sia completata in piu’ ciclicompletata in piu’ cicli Dividendo l’esecuzione in passiDividendo l’esecuzione in passi Eseguendo un singolo passo per cicloEseguendo un singolo passo per ciclo