La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Architetture dei Calcolatori (Lettere j-z ) Il Processore Ing. Davide DAmico.

Presentazioni simili


Presentazione sul tema: "Architetture dei Calcolatori (Lettere j-z ) Il Processore Ing. Davide DAmico."— Transcript della presentazione:

1 Architetture dei Calcolatori (Lettere j-z ) Il Processore Ing. Davide DAmico

2 CPU2 Architettura a Livelli: Livelli 1 e 2 Livello 2: Livello del Linguaggio Macchina (ISA) Livello 2: Livello del Linguaggio Macchina (ISA) m Macchina nuda come appare al programmatore di sistema. Le istruzioni del suo linguaggio sono interpretate ed eseguite dai microprogrammi del processore m Moduli: Programmi m L2: Linguaggio macchina m R2: Registri, spazio di memoria Livello 1: Macchina Firmware – Microarchitettura Livello 1: Macchina Firmware – Microarchitettura m Interpreta ed esegue le istruzioni del linguaggio macchina m E direttamente realizzato con i componenti della macchina hardware m Moduli - Unita di Elaborazione: CPU, Memoria, Unita di I/O m L1: Linguaggio di Microprogrammazione m R1: Reti combinatorie e sequenziali

3 CPU3 Organizzazione di un Calcolatore Unità di controllo Unità di elaborazione dati Memoria Processore Dispositivi di I/O Interfaccia di I/O Bus dati indirizzi controllo

4 CPU4 Processore - Central Processing Unit (CPU) Provvede allesecuzione delle istruzioni macchina Provvede allesecuzione delle istruzioni macchina Ciclo di Esecuzione Ciclo di Esecuzione 1. Prelievo Istruzione dalla Memoria 2. Decodifica Istruzione 3. Esecuzione Istruzione Processore e composto da due sottosistemi: Processore e composto da due sottosistemi: 1. Unità di Controllo (Control) – Parte di Controllo m Controlla il sequenziamento e lesecuzione delle istruzioni generando i segnali di controllo 2. Unita di Elaborazione Dati (Datapath) – Parte Operativa m Esegue le istruzioni m ALU Esegue operazioni logico aritmetiche sui dati Esegue operazioni logico aritmetiche sui dati m Banco di Registri (Register File) Memoria interna CPU Memoria interna CPU m Program Counter (PC) –Indirizzo Prossima Istruzione m Instruction Register (IR) –Codice Istruzione da eseguire

5 CPU5 Processore - Central Processing Unit (CPU) Implementazione set ridotto del MIPS Implementazione set ridotto del MIPS m Istruzioni di accesso alla memoria: lw e sw m Istruzioni logico-aritmetiche: add, sub, and, or e slt m Istruzioni di branch: beq m Istruzioni di jump: j Lunghezza formato: 32 bit; i tre formati delle istruzioni: Lunghezza formato: 32 bit; i tre formati delle istruzioni: m Tipo R m Tipo I m Tipo J I campi I campi m op: operazione dellistruzione m rs, rt, rd: registri sorgente (due) e destinazione m shamt: shift amount m funct: seleziona la variante delloperazione nel campo op m address/immediate: offset dellindirizzo o valore immediato m target address: indirizzo dellistruzione di jump op target address bits26 bits oprsrtrdshamtfunct bits 5 bits oprsrt immediate bits16 bits5 bits

6 CPU6 Passi di Progetto 1. Analizzare il set di Istruzioni: Requisiti del Dapapath m Analizzare la semantica di ogni istruzione Espressa intermini di trasferimenti e operazioni tra registri Espressa intermini di trasferimenti e operazioni tra registri m Il datapath deve includere il banco dei registri (register file) Sono necessari altri registri, non visibili a livello ISA, e.g., PC Sono necessari altri registri, non visibili a livello ISA, e.g., PC m Il datapath deve fornire i cammini per permettere tutti i trasferimenti tra registri necessari, e gli accessi in memoria m Includeremo la memoria nel progetto (per semplicita) 2. Selezionare i Componenti del Datapath 3. Assemblare il Datapath secondo i requisiti aggiungendo i segnali di controllo 4. Analizzare limplementazione di ogni istruzione per determinare quali segnali di controllo devo essere affermato o meno per permetterne lesecuzione 5. Realizzare la Parte di Controllo (Control) in accordo a quanto stabilito al punto 4

7 CPU7 Semantica Istruzioni e RTL RTL (Register-Transfer Language): Linguaggio per esprimere i trasferimenti tra registri (e memoria), RTL (Register-Transfer Language): Linguaggio per esprimere i trasferimenti tra registri (e memoria), m Permette di definire la semantica di ogni istruzione m M[x] contenuto della memoria indirizzo x m R[y] contenuto registro y Es: add rd, rs, rt Es: add rd, rs, rt m R[rd]=R[rs]+R[rt], PC=PC+4; Es :load rt, offset(rs) Es :load rt, offset(rs) m R[rt]=M[R[rs]+sign_ext(offset)], PC=PC+4; Es: beq rs, rt, address Es: beq rs, rt, address m If(R[rs]==R[rt]) then PC=PC+4+sign_ext(address)<<2; else PC=PC+4; Tutte richiedono come passo preliminare il prelievo dellistruzione dalle memoria (fetch) Tutte richiedono come passo preliminare il prelievo dellistruzione dalle memoria (fetch) m Istruzione=M[PC]

8 CPU8 Implementazione del set ridotto I primi due passi da implementare sono comuni a tutte le istruzioni,indipendentemente dalla classe di istruzione: I primi due passi da implementare sono comuni a tutte le istruzioni,indipendentemente dalla classe di istruzione: m Inviare luscita del Program Counter (PC) alla memoria che contiene il programma e caricare listruzione (Fetch) ed aggiornare PC m Decodifica dellIstruzione (Decode) (e lettura registri) La fase di esecuzione (Execute) dipende dallistruzione La fase di esecuzione (Execute) dipende dallistruzione m Sono comunque raggruppabili per classi di istruzioni Dopo aver letto i registri, tutte le istruzioni usano lALU (eccetto j) Dopo aver letto i registri, tutte le istruzioni usano lALU (eccetto j) m Le istruzioni di accesso alla memoria per calcolare lindirizzo m Le istruzioni logico-aritmetiche per effettuare loperazione Listruzione beq per verificare luguaglianza fra registri Listruzione beq per verificare luguaglianza fra registri

9 CPU9 Implementazione del set ridotto (2) Poi il comportamento delle istruzioni si differenzia Poi il comportamento delle istruzioni si differenzia m Istruzioni di accesso alla memoria Devono accedere alla memoria per leggere/scrivere il dato Devono accedere alla memoria per leggere/scrivere il dato m Istruzioni logico-aritmetiche Devono accedere ad un registro per scrivere il risultato Devono accedere ad un registro per scrivere il risultato m Istruzioni di branch e jump Devono modificare il Program Counter Devono modificare il Program Counter Vantaggio della semplicità nella progettazione Vantaggio della semplicità nella progettazione m Pochi formati di istruzione facilitano limplementazione dellunità di elaborazione

10 CPU10 I cinque passi delle istruzioni I cinque passi delle istruzioni da effettuare I cinque passi delle istruzioni da effettuare 1. Fetch (caricamento) dellistruzione dalla memoria 2. Decode dellistruzione e fetch dei registri 3. Execute m Uso della ALU (esecuzione delloperazione o calcolo dellindirizzo) 4. Memory Access m Accesso ad un operando in memoria 5. Write-back m Scrittura del risultato in un registro

11 CPU11 Una visione astratta 1: fetch2: decode e register fetch3: execute4: mem. 5: write-back

12 CPU12 Progettazione dellunità di elaborazioni dati e prestazioni CPI IC T CLOCK Le prestazioni di un calcolatore sono determinate da: Le prestazioni di un calcolatore sono determinate da: m Numero di istruzioni Instruction Count (IC) Instruction Count (IC) m Durata del ciclo di clock (T CLOCK ) m Cicli di clock per istruzione Clock cycle Per Instruction (CPI) Clock cycle Per Instruction (CPI) La progettazione del processore (unità di elaborazione e unità di controllo) determina La progettazione del processore (unità di elaborazione e unità di controllo) determina m Durata del ciclo di clock m Cicli di clock per istruzione (CPI)

13 CPU13 Implementazione del Processore: Approcci Singolo Ciclo Singolo Ciclo m Esecuzione di ogni istruzione richiede 1 ciclo di clock Il ciclo di clock deve essere abbastanza lungo da permettere il completamento dellistruzione piu lenta Il ciclo di clock deve essere abbastanza lungo da permettere il completamento dellistruzione piu lenta m Svantaggio: velocita limitata dallistruzione piu lenta supportata, alcune risorse devono essere replicate Multi-Ciclo Multi-Ciclo m Suddividere lesecuzione in piu passi m Eseguire un passo per ciclo m Vantaggio: ogni istruzione richiede il solo numero di cicli (tempo) richiesto T clock (Singolo Ciclo)> T clock (Multiplo Ciclo) T clock (Singolo Ciclo)> T clock (Multiplo Ciclo) Pipelined Pipelined m Suddividere lesecuzione in piu passi m Eseguire un passo per ciclo m Processare piu istruzioni in parallelo Elaborazione in contemporanea di step diversi di istruzioni consecutive (linea di assemblaggio) Elaborazione in contemporanea di step diversi di istruzioni consecutive (linea di assemblaggio)

14 CPU14 Implementazione Singolo Ciclo Prima implementazione impiega in singolo ciclo di clock per ogni istruzione Prima implementazione impiega in singolo ciclo di clock per ogni istruzione m Ogni istruzione inizia sul fronte attivo di un ciclo di clock e termina sul fronte attivo del ciclo di clock successivo Approccio non pratico e inefficiente rispetto ad una implementazione multiciclo Approccio non pratico e inefficiente rispetto ad una implementazione multiciclo m Ogni istruzione richiede esattamente tanto tempo quanto il tempo di esecuzone dellistruzione piu lenta Nellimplementazioni multiciclo questo problema si evita permettendo alle istruzioni piu veloci di essere eseguite in un numero inferiore di cicli Nellimplementazioni multiciclo questo problema si evita permettendo alle istruzioni piu veloci di essere eseguite in un numero inferiore di cicli Tuttavia e semplice e utile da un punto di vista didattico Tuttavia e semplice e utile da un punto di vista didattico Nota: Nota: Implementeremo il jump solo alla fine della trattazione

15 CPU15 I Blocchi della Progettazione 1. Fase di Fetch Accedere allistruzioni in memoria ed aggiornare PC Accedere allistruzioni in memoria ed aggiornare PC 2. Decode, Accesso ai registri ed esecuzione istruzioni formato R Istruzioni logico-aritmetiche Istruzioni logico-aritmetiche 3. Decode, Accesso ai registri ed operazioni di accesso alla memoria Istruzioni load/store Istruzioni load/store 4. Decode, Accesso ai registri per i branch Istruzione beq Istruzione beq

16 CPU16 Datapath: Fetch Istruzione e aggiornamento PC Instruction = M[PC] PC = PC + 4

17 CPU17 Datapath: Fetch Istruzione e aggiornamento PC Instruction = M[PC] PC = PC + 4

18 CPU18 Datapath: Istruzioni formato R add rd, rs, rt R[rd] =R[rs] + R[rt];

19 CPU19 Datapath: Istruzioni formato R add rd, rs, rt R[rd] =R[rs] + R[rt];

20 CPU20 Datapath: Istruzioni Load/Store lw rt, offset(rs) R[rt] =M[R[rs] + sign_ext(offset)];

21 CPU21 lw rt, offset(rs) R[rt] =M[R[rs] + sign_ext(offset)]; Datapath: Istruzione Load

22 CPU22 sw rt, offset(rs) M[R[rs] + sign_extend(offset)]=R[rt] Datapath: Istruzione Store

23 CPU23 Datapath: Istruzione di Salto beq rs, rt, offset if (R[rs] == R[rt]) then PC = PC+4 + sign_ext(offset)<<2

24 CPU24 beq rs, rt, offset if (R[rs] == R[rt]) then PC = PC+4 + sign_ext(offset)<<2 Datapath: Istruzione di Salto beq

25 CPU25 Composizione dei blocchi Uniamo il blocco relativo alle istruzioni di accesso alla memoria con quello per le istruzioni di tipo R Uniamo il blocco relativo alle istruzioni di accesso alla memoria 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 delloperazione (tipo R)

26 CPU26 Datapath: Istruzioni formato R add rd,rs,rt

27 CPU27 Datapath: Istruzione Load lw rt,offset(rs)

28 CPU28 Datapath: Istruzione Store sw rt,offset(rs)

29 CPU29 Aggiungere il blocco che esegue il fetch Aggiungere il blocco che esegue il fetch Memoria Istruzioni e dati Separate per Poter leggere e scrivere nello stesso ciclo ALU e Adder Separati perche entrambi devono Poter essere usati nello stesso ciclo Composizione dei blocchi

30 CPU30 Aggiungiamo il blocco per il beq Aggiungiamo il blocco per il beq Adder addizionale Composizione dei blocchi Multiplexer per scegliere indirizzo della prossima istruzione

31 CPU31 Datapath: add add rd, rs, rt

32 CPU32 Datapath: lw lw rt,offset(rs)

33 CPU33 Datapath: sw sw rt,offset(rs)

34 CPU34 Datapath: beq beq r1,r2,offset

35 CPU35 Controllo LUnita di Controllo deve generare: LUnita di Controllo deve generare: m I segnali di controllo dellALU m I segnali di controllo dei vari multiplexer m I segnali di abilitazione alla scrittura/lettura dei diversi elementi di memoria Basandosi su… Basandosi su… I segnali in ingresso allunita di Controllo I segnali in ingresso allunita di Controllo m I bit del campo opcode (e funct nel caso del formato R) dellistruzione 0rsrtrdshamtfunct bit 5 bit Istruzione di tipo R 35 o 43rsrt address bit16 bit5 bit Istruzione di load o store 4rsrt address bit16 bit5 bit Istruzione beq Controllo Opcode Funct Controllo ALU Controllo MUX Read/Write Memorie 6 6

36 CPU36 Suddivisione in Main Control e ALU Control Per semplificare la progettazione/circuito Per semplificare la progettazione/circuito m Bit di funct (formato R) servono solo per il controllo dellALU Specificano loperazione da eseguire: add,sub,and,or, o slt Specificano loperazione da eseguire: add,sub,and,or, o slt ALUOp serve per specificare il tipo di istruzione lw/sw beq o formato R) ALUOp serve per specificare il tipo di istruzione lw/sw beq o formato R) Opcode ed ALUOp Opcode ed ALUOp m load/store ALUOp=00 beq ALUOp=01 beq ALUOp=01 m Formato R ALUOp=10 Controllo Opcode ALUOp Controllo MUX Read/Write Memorie 2 Controllo Opcode Funct Controllo ALU Controllo MUX Read/Write Memorie Funct 6 ALU Control Controllo ALU

37 CPU37 Istruzioni ed Operazioni Richieste Istruzioni ed Operazioni Richieste m Load/store ALUOp=00somma beq ALUOp=01 sottrazione beq ALUOp=01 sottrazione m Formato R ALUOp=10 spec. dal campo funct Linee di controllo Ainvert (1 bit), Bnegate (1 bit) e Operation (2 bit) dellALU Linee di controllo Ainvert (1 bit), Bnegate (1 bit) e Operation (2 bit) dellALU 0000 = and 0001 = or 0010 = add 0110 = sub 0111 = slt 1100 = nor Poiche manca nor nel set ristetto ignoriamo Ainvert Poiche manca nor nel set ristetto ignoriamo Ainvert m Il controllo dellALU richiede solo gli ultimi 3 bit Controllo dellALU ALUOp 2 Funct 6 ALU Control Controllo ALU=ALU operation

38 CPU38 Instruction AluOp Instruction Funct Field Desired ALU control opcode operation ALU action LW 00 load word xxxxxx add 010 SW 00 store word xxxxxx add 010 Branch eq 01 branch eq xxxxxx sub 110 R-type 10 add add 010 R-type 10 sub sub 110 R-type 10 AND and 000 R-type 10 OR or 001 R-type 10 set on less set on less 111 Tabella di Verita dell ALU Control Controllo dellALU (2) Input Output ALUOp 2 Funct 6 ALU Control Controllo ALU *

39 CPU39 Controllo dellALU: Implementazione Tabella di Verita dell ALU Control * Input Output

40 CPU40 Progettazione dellUnita di Controllo Osservazioni sul formato Istruzioni MIPS Osservazioni sul formato Istruzioni MIPS m Il codice operativo (campo opcode) e sempre nei bit m I due registri da leggere sono sempre rs (bit 25-21) e rt (bit 20-16) m Il registro base per load e store e sempre il registro rs (bit 25-21) Loffset a 16-bit per beq,load e store e sempre nei bit 15-0 Loffset a 16-bit per beq,load e store e sempre nei bit 15-0 m Il registro di destinazione e bit (rt) per load bit (rt) per load bits (rd) per le istruzioni R bits (rd) per le istruzioni R Occorre un ulteriore multiplexer per indicare quale campo dellistruzione indica il registro destinazione Occorre un ulteriore multiplexer per indicare quale campo dellistruzione indica il registro destinazione opcode rs rt addres s rdshamtfunct R-type Load/store or branch

41 CPU41 Datapath e Controllo I Registro da scrivere viene da rt o da rd

42 CPU42 I segnali di controllo ad 1 bit Segnale Effetto quando vale 0 Effetto quando vale 1 RegDst Registro destinazione = rt Registro destinazione = rd RegWriteNessuno Nel registro indicato sullingresso Write register viene scritto il valore Write data ALUSrc Il secondo operando di ALU viene da Read data 2 Il secondo operando di ALU viene dallestensione di segno PCSrc Scrittura di PC con PC+4 Scrittura di PC con loutput del sommatore per il branch MemReadNessuno Lettura della locazione di memoria indicata da Address MemWriteNessuno Scrittura della locazione di memoria indicata da Address MemtoReg Il valore in Write data (registri) viene dalla ALU Il valore in Write data (registri) viene dalla memoria dati

43 CPU43 Datapath e Controllo II

44 CPU44 Datapath con Controllo II Opcode Istruzione e Segnali di Controllo PCSrc non dipende dal solo opcode PCSrc=1 se listruzione e beq e Zero=1 InstructionRegDstALUSrc Memto- Reg Write Mem Read Mem WriteBranchALUOp1ALUp0 R-format lw sw X1X beq X0X000101

45 CPU45 Segnali di Controllo: Istruzioni Formato R Control signals shown in blue ??? Value depends on funct 0 0

46 CPU46 Segnali di Controllo: Istruzione lw 0 Control signals shown in blue

47 CPU47 Segnali di Controllo: Istruzione sw 0 Control signals shown in blue X X 0 1 0

48 CPU48 Segnali di Controllo: Istruzione beq Control signals shown in blue X X if Zero=1

49 CPU49 Implementazione dellunita di Controllo Principale Segnale form. lw sw beq R Op Op Op Op Op Op RegDst 1 0 x x ALUSrc MemtoReg 0 1 x x RegWrite MemRead MemWrite Branch ALUOp ALUOP Inputs =Opcode Outputs Tabella di verita dellunita di Controllo Rete Combinatoria realizzabile tramite PLA

50 CPU50 Controllo a Singolo Ciclo Controllo a singolo ciclo Controllo a singolo ciclo m Definito da una coppia di tabelle di verita Controllo Principale e Controllo ALU Controllo Principale e Controllo ALU m Rete Combinatoria Zero PCSrc

51 CPU51 Controllo a Singolo Ciclo Il Controllo della CPU a singolo ciclo e una rete combinatoria Il Controllo della CPU a singolo ciclo e una rete combinatoria Il Datapath e una rete sequenziale Il Datapath e una rete sequenziale m Loutput dipende dagli ingressi e dai valori dagli elementi di memoria (Registri e PC) m Il ciclo di clock deve durare abbastanza da stabilizzare le uscite di tutte le reti combinatorie prima del fronte di discesa del clock m Clock in AND con i segnali di controllo di scrittura I Valori in ingresso vengono scritti solo se i segnali sono affermati I Valori in ingresso vengono scritti solo se i segnali sono affermati m Ciclo di Clock determinato sulla base del percorso piu lungo

52 CPU52 Diagramma a blocchi della CPU (Datapath e Control) e Memoria Mem. Istr. Mem. Dati Istruzione OpcodeFunct CONTROLLO DATAPATH Addr rs,rt,rd,Imm Operation=f(ALUOp,funct) RegDst ALUSrc MemtoReg PCRsr=BranchZero MemWrMemRdRegWr Zero Register file PC ALU

53 CPU opcode address Jump Ulteriore multiplexer con Segnale di controllo jump Calcolo dellindirizzo di salto Datapath e Controllo III: Istruzione j

54 CPU54 Datapath e Controllo III: Istruzione j

55 CPU55 Limplementazione singolo ciclo e inefficiente Limplementazione singolo ciclo e inefficiente m Una istruzione per ciclo, CPI=1, ma… Il tempo di ciclo e determinato dallistruzione piu lunga Il tempo di ciclo e determinato dallistruzione piu lunga Quale? Quale? Ciclo di Clock dellImplementazione a singolo ciclo

56 CPU56 Calcolo del tempo di ciclo assumendo ritardi nulli per multiplexer, unita di controllo, estensione del segno, accesso PC, shift left, linee) eccetto : Calcolo del tempo di ciclo assumendo ritardi nulli per multiplexer, unita di controllo, estensione del segno, accesso PC, shift left, linee) eccetto : m Memoria Istruzione e Dati (2ns) m ALU ed addizionatori (2ns) m Accesso al banco dei registri (1ns) Ciclo di Clock dellImplementazione a singolo ciclo Ciclo di Clock dellImplementazione a singolo ciclo Instr. Mem I Reg Rd ALU Op Mem D Reg Wr Total R-type load store beq jump

57 CPU57 Il tempo di ciclo e determinato dallistruzione piu lenta Il tempo di ciclo e determinato dallistruzione piu lenta m Nel nostro caso e load, ma cosa succederebbe se considerassimo anche istruzioni floating point? m Perdita di tempo moltre istruzioni possono essere eseguite in un tempo minore moltre istruzioni possono essere eseguite in un tempo minore Le risorse che devono essere usate piu di una volta nello stesso ciclo devono essere duplicate Le risorse che devono essere usate piu di una volta nello stesso ciclo devono essere duplicate m Spreco di hardware/chip area Problemi con lImplementazione a Singolo Ciclo

58 CPU58 Problemi con lImplementazione a Singolo Ciclo Possibili soluzioni Possibili soluzioni 1. Usare un periodo di clock variabile per ogni tipo di istruzione m Soluzione non pratica 2. Approccio Multiciclo m Usare un tempo di ciclo piu piccolo… m Ma permettere lesecuzione di istruzioni diverse sia completata in piu cicli Dividendo lesecuzione in passi Dividendo lesecuzione in passi Eseguendo un singolo passo per ciclo Eseguendo un singolo passo per ciclo


Scaricare ppt "Architetture dei Calcolatori (Lettere j-z ) Il Processore Ing. Davide DAmico."

Presentazioni simili


Annunci Google