Microelettronica Corso introduttivo di progettazione di sistemi embedded

Documenti analoghi
Calcolatori Elettronici

Architettura di tipo registro-registro (load/store)

CPU. Maurizio Palesi

Struttura del calcolatore

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

Architettura del calcolatore

L architettura di riferimento

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

La macchina programmata Instruction Set Architecture (1)

Architettura di un calcolatore: introduzione

ARM PROCESSORS FAMILY

L unità di elaborazione pipeline L unità Pipelining

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0

Esercitazione sulle CPU pipeline

Università degli Studi di Cassino e del Lazio Meridionale

CALCOLATORI ELETTRONICI 15 aprile 2014

Macchina di von Neumann

Calcolo numerico e programmazione Architettura dei calcolatori

Calcolatori Elettronici

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Microelettronica. Architettura del processore ARM. Stefano Salvatori. Università degli Studi Roma Tre. Microelettronica

Lezione 3: Architettura del calcolatore

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

CALCOLATORI ELETTRONICI 29 giugno 2010

INFORMATICA CORSO DI INFORMATICA DI BASE ANNO ACCADEMICO 2015/2016 DOCENTE: SARRANTONIO ARTURO

L organizzazione interna della memoria e del banco di registri prevedono generalmente che le uscite di 2 o più componenti

Calcolatori Elettronici

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

ARCHITETTURA DI UN PERSONAL COMPUTER

Lezione 7 Sommatori e Moltiplicatori

Introduzione. Un calcolatore digitale è costituito da un sistema interconnesso dei seguenti dispositivi:

Architettura hardware

Fondamenti di informatica: un po di storia

CALCOLATORI ELETTRONICI 29 giugno 2011

06 Livello di micro architettura

Calcolatori Elettronici

Memoria Cache. La memoria cache

Programmazione dello Z80

MODELLO DLX IN UNISIM

Calcolatori Elettronici

Corso di Sistemi di Elaborazione delle informazioni

Architettura di un Elaboratore

Hazard sul controllo. Sommario

' Z80:' archite:ura'ed'esperienze'di' laboratorio' ' P.'Vicini' ' P.Vicini'('Lab.'Sistemi'e'Segnali' 1'

UNITÀ DI ELABORAZIONE (CPU) UNITÀ DI ELABORAZIONE (CPU) Opcode OpCode Operazione

Architettura degli elaboratori (A)

C. P. U. MEMORIA CENTRALE

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

CALCOLATORI ELETTRONICI

Parte II.2 Elaboratore

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

Sito personale e forum

Introduzione all'architettura dei Calcolatori

MEMORIA GERARCHIE DI MEMORIA

Lezione n.19 Processori RISC e CISC

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI

Caratteristiche di un PC

Architettura del Set di Istruzioni (ISA)

Unità Periferiche. Rete Di Controllo

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

SOMMARIO. La CPU I dispositivi iti i di memorizzazione Le periferiche di Input/Output. a Montagn Maria

Ora Consegna: N. Matricola: Corso Laurea/Diploma: Cognome: ESD I? II? Esercizi compilati ESD I: 1? 2?3?4? 5? 6?7?8? 9 10

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico pagina 1

Linguaggio Assembly. Architettura di riferimento Formato istruzioni Classi di istruzioni Modalità di indirizzamento Direttive Codice macchina

La macchina di Von Neumann. Central Processing Unit (CPU) Elementi base. Architettura computer. Bus di sistema MEMORIA CENTRALE PERIFERICHE A B INTR

Calcolatori Elettronici B a.a. 2008/2009

Architettura dei calcolatori

Lezione n.9. Introduzione al linguaggio macchina

Aumentare il parallelismo a livello di istruzione (1)

Linguaggio macchina e linguaggio assembler

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

8 Microcontrollori PIC

Il calcolatore elettronico. Parte dei lucidi sono stati gentilmente forniti dal Prof. Beraldi

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

CALCOLATORI ELETTRONICI 31 marzo 2015

Aritmetica dei Calcolatori 2

ARCHITETTURA DELL ELABORATORE

Sistemi superscalari. Contenuto della lezione. Unità multifunzionali parallele Architetture superscalari Esecuzione fuori ordine

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

Sequential Logic. 2 storage mechanisms positive feedback charge-based. Inputs. Outputs COMBINATIONAL LOGIC. Current State. Next state.

Programma ARCHITETTURA DI UN ELABORATORE MACCHINA DI VON NEUMANN CPU & MEMORIA UNITÀ DI ELABORAZIONE (CPU) Questa settimana:

Corso di Sistemi di Elaborazione A.A. 2008/2009

Interpreti e compilatori La macchina di Von Neumann

Le infrastrutture Hardware: architettura

Tutorato Architettura degli elaboratori

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Il Processore: i registri

DIGITAL SIGNAL PROCESSORS

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

Schedulazione dinamica. Elettronica dei Calcolatori 1

Elaborazione dei dati

Università degli Studi G. d'annunzio C.L. Economia e Informatica per l'impresa. Sistemi Operativi e Reti A.A. 2014/2015 prof.

ARCHITETTURA DI UN ELABORATORE

Calcolatori Elettronici

Z80: archite:ura ed esperienze di laboratorio. P. Vicini. P.Vicini - Lab. Sistemi e Segnali

Transcript:

Microelettronica Corso introduttivo di progettazione di sistemi embedded Organizzazione hardware del processore ARM 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. S. Salvatori - Microelettronica maggio 2017 (1)

Sommario Pipeline a 3 stadi Pipeline a 5 stadi Esempi di esecuzione di istruzioni (datapath) Note sul progetto ARM Clock a due fasi e timing ALU Barrel shifter Moltiplicatore Banco dei registri Layout Logica di controllo Interfacciamento verso un coprocessore S. Salvatori - Microelettronica maggio 2017 (2)

Introduzione: le idee di ARM L organizzazione dell ARM è cambiata poco rispetto al primo progetto degli anni 90; con la tecnologia, da 3 um (ARM1) a 0.3 um (ARM7), sono migliorate le prestazioni mentre gli schemi di base sono rimasti gli stessi; Il successivo progresso (ARM9) ha previsto un cambio dell'architettura: pipeline a 5 stadi memoria dati e memoria programma separate (architettura Harward) S. Salvatori - Microelettronica maggio 2017 (3)

Organizzazione per pipeline a 3-stadi S. Salvatori - Microelettronica maggio 2017 (4)

Organizzazione per pipeline a 3-stadi A[31:0] control Registri: 2 uscite 1 ingresso 2 linee dedicate per il PC Barrel-shifter 2 operandi per l'alu address register P C register bank incrementer PC instruction decode ALU Address register + incrementer A L U b u s A b u s multiply register barrel shifter B b u s & control data registers Decoder istruzioni + logica di controllo ALU data out register data in register D[31:0] S. Salvatori - Microelettronica maggio 2017 (5)

Pipeline a 3 stadi Fetch. L istruzione è prelevata dalla memoria e posta nella linea di pipeline dell istruzione. Decode. L istruzione occupa il blocco di decodifica (ma non il datapath): l istruzione è decodificata e sono preparati i segnali di datapath per il prossimo ciclo di clock. Execute. L istruzione occupa il datapath: sono letti gli operandi (registri), si ha lo shift, è svolta l operazione ALU e il risultato è scritto nel banco dei registri. 1 fetch decode execute 2 fetch decode execute 3 instruction fetch decode execute time S. Salvatori - Microelettronica maggio 2017 (6)

Pipeline a 3 stadi L'hardware è diviso in sezioni. Ciascuna sezione è impegnata in ogni ciclo di clock 1 2 3 instruction fetch decode execute fetch decode execute fetch decode execute time In ogni periodo è impegnata una differente sezione hardware; Per istruzioni di data-processing occorrono tre colpi di clock; Con la pipeline si ha l esecuzione di una istruzione per ciclo di clock e periodo di latenza pari a 3. throughput S. Salvatori - Microelettronica maggio 2017 (7)

Esecuzione di un'istruzione a più cicli L esecuzione è meno regolare; Nell esempio: ADD seguita da STR: 1 fetch ADD decode execute 2 fetch STR decode calc. addr. data xfer 3 fetch ADD decode execute 4 fetch ADD decode execute acc. mem decode datapath 5 fetch ADD decode execute instruction time S. Salvatori - Microelettronica maggio 2017 (8)

Program counter Il program counter PC (= r15 di uso generale) deve contenere un valore che consenta di caricare le istruzioni successive Per la pipeline, in pratica, il PC punta 8 byte (2 istruzioni) oltre l istruzione corrente (fase di execute) Questo è di fondamentale importanza nel caso di salti relativi alla posizione attuale (è comunque il compilatore a calcolare l offset del salto) Per altri usi del PC, letto come r15, il programmatore deve svolgere un'attenta analisi S. Salvatori - Microelettronica maggio 2017 (9)

Esempi di esecuzione di istruzioni per l'arm7 S. Salvatori - Microelettronica maggio 2017 (10)

Data processing tra due registri 2 operandi provenienti da due registri Il secondo operando è passato per il barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri address register increment Rd PC registers Rn Rm mult as ins. operazione tra 2 registri. Datapath: as instruction Il PC è incrementato e l'istruzione successiva caricata in i.pipe data out data in i. pipe (a) register - register operations S. Salvatori - Microelettronica maggio 2017 (11)

Data processing tra un reg. e un immediato 2 operandi: contenuto di un registro e un immediato (1 byte) Il secondo operando è passato per il barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri operazione tra registro e immediato Datapath: address register increment Rd PC registers Rn mult as ins. as instruction [7:0] Il PC è incrementato e l'istruzione successiva caricata in i.pipe data out data in i. pipe (b) register - immediate operation S. Salvatori - Microelettronica maggio 2017 (12)

Store (data transfer): 1 ciclo Una istruzione di load/store calcola l indirizzo di memoria nello stesso modo con cui una istruzione di data-processing tratta gli operandi; base address register registers Rn increment mult PC lsl #0 calcolo di PC (fine 1 ciclo) offset datapath: Primo ciclo = A / A + B / A - B [11:0] data out data in i. pipe (a) 1st cycle - compute addr ess S. Salvatori - Microelettronica maggio 2017 (13)

Store (data transfer): 2 ciclo auto-indexing address register increment uscirà PC (fine 2 ciclo) datapath: secondo ciclo Rn PC registers Rd mult shifter = A + B / A - B Se riguarda 1 byte: Il valore è replicato 4 volte byte? data in i. pipe Nel caso di LOAD in un 3 ciclo si ha il trasferimento da data in nel registro (b) 2nd cycle - store data & auto-inde S. Salvatori - Microelettronica maggio 2017 (14)

Salti (branch, B) In una istruzione di salto, nel 1 ciclo si calcola l'indirizzo a cui saltare L'offset (immediato a 24 bit) subisce uno shift di 2 bit allineamento con word... sommato al contenuto di PC datapath: Primo ciclo address register increment registers PC mult lsl #2 = A + B [23:0] data out data in i. pipe (a) 1st cycle - compute branch tar get S. Salvatori - Microelettronica maggio 2017 (15)

Salti (branch with link, BL) Nel caso di branch with link, per ritornare all'istruzione successiva a quella di branch: Nota: PC è copiato in r14 datapath: secondo ciclo address register increment R14 registers PC mult shifter = A il ritorno è in realtà a un indirizzo PC-4 (PC guarda sempre due istruzioni avanti) nel 3 ciclo ( pipeline refill) viene aggiustato il valore data out data in i. pipe (b) 2nd cycle - save return address S. Salvatori - Microelettronica maggio 2017 (16)

Organizzazione nel caso di pipeline a 5-stadi S. Salvatori - Microelettronica maggio 2017 (17)

Aumentare il numero di slot La soluzione a 3-stadi è molto efficace ed è stata adottata fino all ARM7; Per sistemi con migliori prestazioni dobbiamo ricercare soluzioni più efficienti: T progr N istr f CPI clk n medio di cicli di clock per istruzione Per diminuire il tempo complessivo di esecuzione di un programma: aumentare f CLK diminuire CPI numero maggiore di stadi per la pipeline S. Salvatori - Microelettronica maggio 2017 (18)

Organizzazione per pipeline a 5 stadi Aumentare f CLK semplificare la logica di ogni stadio della pipeline aumentare il numero di stadi della pipeline Diminuire CPI le istruzioni devono essere riconfigurate in modo che diminuisca il numero di slot che esse occupano nella pipeline ridurre gli stalli dovuti ad istruzioni che siano interdipendenti S. Salvatori - Microelettronica maggio 2017 (19)

Il collo di bottiglia Il modello di Von Neumann limita la possibilità di ridurre CPI a causa degli accessi alla memoria, sia di programma che di dei dati; Il sistema di memoria dovrebbe consentire di acquisire maggiori informazioni/ciclo (>32 bit) oppure: separare la memoria di programma da quella dei dati S. Salvatori - Microelettronica maggio 2017 (20)

Pipeline a 5 stadi (ARM9TDMI) instruction fetch r. read decode shift/alu data memory access reg write mem Fetch Decode Execute buffer/data Write Nei processori ARM con pipeline a 5-stadi: fetch: l istr. è prelevata e depositata nella pipeline; decode: l istr. è decodificata e gli operandi prelevati dai registri; execute: shift dell operando e risultato dell ALU. Se l istr. è un load/store, con l ALU si calcola l indirizzo di memoria; buffer/data: eventuale accesso alla memoria, altrimenti il risultato dell ALU è posto in un buffer per mantenere lo stesso flusso della pipeline per tutte le istruzioni; write back: il risultato è caricato in un registro (incluso il load da memoria). S. Salvatori - Microelettronica maggio 2017 (21)

ARM9TDMI Registri: 3 porte di lettura e 2 di scrittura (*) Memorie separate: I-cache: per istruzioni D-cache: per i dati Incr. per LDM e STM Data-forwarding: i risultati sono passati tra gli stadi appena sono disponibili (*) Normalmente nei RISC: 2 per lettura e 1 per scrittura. S. Salvatori - Microelettronica maggio 2017 (22)

Data forwarding Nella pipeline a 5 stadi il ciclo di esecuzione è praticamente spezzato in 3 slot; Se un'istruzione ha bisogno del dato prodotto dall'istruzione precedente si ha dipendenza; Lo stallo si avrebbe se il dato fosse richiesto prima che il risultato venga trasferito nel registro di destinazione Nell'ARM9TDMI sono inseriti percorsi per i dati che presentano il risultato appena disponibile: data forwarding S. Salvatori - Microelettronica maggio 2017 (23)

Stallo inevitabile (read-after-write) Nella seguente sequenza: LDR r3, [..] ADD r1, r2, r3 il dato in r3 è disponibile dalla prima istruzione solo nel penultimo ciclo buffer/data mentre la seconda la richiede nel ciclo di esecuzione instruction fetch r. read decode shift/alu data memory access reg write Fetch Decode Execute Memory Write Il compilatore deve evitare di porre in sequenza questo tipo di istruzioni S. Salvatori - Microelettronica maggio 2017 (24)

Compatibilità Per ARM con pipeline a 3 stadi il PC punta 8 byte (2 istruzioni) oltre l istruzione corrente; Con la pipeline a 5 stadi gli operandi sono letti un ciclo prima rispetto a quella a tre stadi: PC+4 anziché PC+8; Per avere compatibilità gli ARM con pipeline a 5 stadi emulano quelli a 3 stadi L'incrementer di PC bypassa il registro di pipeline tra fetch e decode PC+4 per l'istruzione attuale = PC+8 per l'istruzione successiva. S. Salvatori - Microelettronica maggio 2017 (25)

Alcune soluzioni nell'architettura ARM S. Salvatori - Microelettronica maggio 2017 (26)

Segnale di clock Datapath RTL Control FSM Sono utilizzati latch in luogo di flip-flop sensibili ai livelli e non ai fronti del clock È necessario un clock a due fasi Φ1 phase 1 Φ2 phase 2 1 clock cycle dato Le due fasi sono derivate da un unico segnale di clock in ingresso (PLL) Φ1 Φ2 S. Salvatori - Microelettronica maggio 2017 (27)

Ciclo datapath ALU operands latched phase 1 register read time shift time read bus valid shift out valid phase 2 precharge invalidates buses register write time ALU time ALU out I bus sono dinamici (precaricati: anche se manca il clock lo stato è mantenuto) Ciclo = lett.reg + shift + ALU + scritt.reg + sep.fasi S. Salvatori - Microelettronica maggio 2017 (28)

Adder nel primo prototipo ARM Ripple-carry adder (32 stadi) ARM1 : Cout OAI A B AOI sum Cin S. Salvatori - Microelettronica maggio 2017 (29)

Adder in ARM2 4-bit Carry look ahead (8 stadi) ARM2 Cout[3] OAI A[3:0] B[3:0] G P 4-bit adder logic sum[3:0] AOI Cin[0] S. Salvatori - Microelettronica maggio 2017 (30)

Funzioni della ALU per l 'ARM2 fs5 fs4 fs3 fs2 fs1 fs0 ALU output 0 0 0 1 0 0 A and B 0 0 1 0 0 0 A and not B 0 0 1 0 0 1 A xor B 0 1 1 0 0 1 A plus not B plus carry 0 1 0 1 1 0 A plus B plus carry 1 1 0 1 1 0 not A plus B plus carry 0 0 0 0 0 0 A 0 0 0 0 0 1 A or B 0 0 0 1 0 1 B 0 0 1 0 1 0 not B 0 0 1 1 0 0 zero S. Salvatori - Microelettronica maggio 2017 (31)

ALU per ARM2 Logica per il risultato (1 bit) fs: NB bus 5 0 1 2 3 carry logic G 4 NA bus P ALU bus S. Salvatori - Microelettronica maggio 2017 (32)

Carry-select adder per l'arm6 a,b[3:0] a,b[31:28] + +, +1 c s s+1 +, +1 mux mux mux sum[3:0] sum[7:4] sum[15:8] sum[31:16] S. Salvatori - Microelettronica maggio 2017 (33)

Organizzazione ALU per l'arm6 A operand latch B operand latch invert A XOR gates XOR gates invert B function logic functions adder C in C V logic/arithmetic result mux zero detect N Z result S. Salvatori - Microelettronica maggio 2017 (34)

Carry arbitration encoding per ARM9 A B C u v 0 0 0 0 0 0 1 unknown 1 0 1 0 unknown 1 0 1 1 1 1 1 S. Salvatori - Microelettronica maggio 2017 (35)

Barrel shifter In molti processori shifter e ALU lavorano in parallelo -> Il ritardo dello shifter non è critico Poiché nell'arm i due lavorano in serie, lo shifter deve introdurre il minimo ritardo possibile -> matrice (32x32) right 3 right 2 right 1 no shift in[3] in[2] in[1] left 1 left 2 left 3 Con bus precaricato a V DD bastano NMOS in[0] Una logica separata gestisce il riempimento (shift logico o aritmetico) out[0] out[1] out[2] out[3] S. Salvatori - Microelettronica maggio 2017 (36)

Barrel shifter Q 3 Q 2 Q 1 Q 0 D 3 D 2 right 3 bit D 1 right 2 bit D 0 D 3 D 2 D 1 D 0 Q 3 Q 2 Q 1 Q 0 left 3 bit left 2 bit left 1 bit right 1 bit no shift (copy) S. Salvatori - Microelettronica maggio 2017 (37)

Barrel shifter Q 3 Q 2 Q 1 Q 0 D 3 D 2 right 3 bit D 1 right 2 bit D 0 D3 D2 D1 D0 Q3 Q2 Q1 Q0 shift left 1 bit left 3 bit left 2 bit left 1 bit right 1 bit no shift (copy) S. Salvatori - Microelettronica maggio 2017 (38)

Barrel shifter Q 3 Q 2 Q 1 Q 0 D 3 D 2 right 3 bit D 1 right 2 bit D 0 D3 D2 D1 D0 Q3 Q2 Q1 Q0 shift right 2 bit left 3 bit left 2 bit left 1 bit right 1 bit no shift (copy) S. Salvatori - Microelettronica maggio 2017 (39)

Barrel shifter D 3 D 2 Q 3 Q 2 Q 1 Q 0 come vanno scelte le diagonali per una rotazione? right 3 bit D 1 right 2 bit D 0 D3 D2 D1 D0 Q3 Q2 Q1 Q0 rotate 1 bit left 3 bit left 2 bit left 1 bit right 1 bit no shift (copy) S. Salvatori - Microelettronica maggio 2017 (40)

Barrel shifter D 3 D 2 Q 3 Q 2 Q 1 Q 0 come vanno scelte le diagonali per una rotazione? right 3 bit D 1 right 2 bit D 0 D3 D2 D1 D0 Q3 Q2 Q1 Q0 rotate 1 bit left 3 bit left 2 bit left 1 bit right 1 bit no shift (copy) S. Salvatori - Microelettronica maggio 2017 (41)

Microelettronica Corso introduttivo di progettazione di sistemi embedded Organizzazione hardware del processore ARM 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. S. Salvatori - Microelettronica maggio 2017 (1)

Sommario Pipeline a 3 stadi Pipeline a 5 stadi Esempi di esecuzione di istruzioni (datapath) Note sul progetto ARM Clock a due fasi e timing ALU Barrel shifter Moltiplicatore Banco dei registri Layout Logica di controllo Interfacciamento verso un coprocessore S. Salvatori - Microelettronica maggio 2017 (2)

Introduzione: le idee di ARM L organizzazione dell ARM è cambiata poco rispetto al primo progetto degli anni 90; con la tecnologia, da 3 um (ARM1) a 0.3 um (ARM7), sono migliorate le prestazioni mentre gli schemi di base sono rimasti gli stessi; Il successivo progresso (ARM9) ha previsto un cambio dell'architettura: pipeline a 5 stadi memoria dati e memoria programma separate (architettura Harward) S. Salvatori - Microelettronica maggio 2017 (3)

Organizzazione per pipeline a 3-stadi S. Salvatori - Microelettronica maggio 2017 (4)

Organizzazione per pipeline a 3-stadi A[31:0] control Registri: 2 uscite 1 ingresso 2 linee dedicate per il PC Barrel-shifter ALU 2 operandi per l'alu Address register + incrementer A L U b u s address register P C A b u s register bank incrementer multiply register barrel shifter PC B b u s instruction decode & control data registers Decoder istruzioni + logica di controllo ALU data out register data in register D[31:0] S. Salvatori - Microelettronica maggio 2017 (5)

Pipeline a 3 stadi Fetch. L istruzione è prelevata dalla memoria e posta nella linea di pipeline dell istruzione. Decode. L istruzione occupa il blocco di decodifica (ma non il datapath): l istruzione è decodificata e sono preparati i segnali di datapath per il prossimo ciclo di clock. Execute. L istruzione occupa il datapath: sono letti gli operandi (registri), si ha lo shift, è svolta l operazione ALU e il risultato è scritto nel banco dei registri. 1 fetch decode execute 2 fetch decode execute 3 instruction fetch decode execute time S. Salvatori - Microelettronica maggio 2017 (6) I processori sviluppati da ARM si dividono in categorie distinte a seconda della potenza di calcolo.

Pipeline a 3 stadi L'hardware è diviso in sezioni. Ciascuna sezione è impegnata in ogni ciclo di clock 1 2 3 instruction fetch decode execute fetch decode execute fetch decode execute time In ogni periodo è impegnata una differente sezione hardware; Per istruzioni di data-processing occorrono tre colpi di clock; Con la pipeline si ha l esecuzione di una istruzione per ciclo di clock e periodo di latenza pari a 3. throughput S. Salvatori - Microelettronica maggio 2017 (7) ARM rappresenta la soluzione in applicazioni portatili data l'alta efficienza dei processori

Esecuzione di un'istruzione a più cicli L esecuzione è meno regolare; Nell esempio: ADD seguita da STR: 1 fetch ADD decode execute 2 fetch STR decode calc. addr. data xfer 3 fetch ADD decode execute 4 fetch ADD decode execute acc. mem decode datapath 5 fetch ADD decode execute instruction time S. Salvatori - Microelettronica maggio 2017 (8) I processori Cortex-A, destinati a sistemi che abbiano alta capacità di calcolo, si distinguono in diversi tipi a seconda dell'applicazione specifica.

Program counter Il program counter PC (= r15 di uso generale) deve contenere un valore che consenta di caricare le istruzioni successive Per la pipeline, in pratica, il PC punta 8 byte (2 istruzioni) oltre l istruzione corrente (fase di execute) Questo è di fondamentale importanza nel caso di salti relativi alla posizione attuale (è comunque il compilatore a calcolare l offset del salto) Per altri usi del PC, letto come r15, il programmatore deve svolgere un'attenta analisi S. Salvatori - Microelettronica maggio 2017 (9) ARM ha sviluppato la tecnologia a più basso consumo, ma con elevate capacità di calcolo, indicata per i sistemi portatili.

Esempi di esecuzione di istruzioni per l'arm7 S. Salvatori - Microelettronica maggio 2017 (10) La famiglia Cortex-M e Cortex-R è pensata per microcontrollori e DSP.

Data processing tra due registri 2 operandi provenienti da due registri Il secondo operando è passato per il barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri address register increment Rd PC registers Rn Rm mult as ins. operazione tra 2 registri. Datapath: as instruction Il PC è incrementato e l'istruzione successiva caricata in i.pipe data out data in i. pipe (a) register - register operations S. Salvatori - Microelettronica maggio 2017 (11) Il mercato di ARM si è espanso invadendo tutti i campi applicativi, dal mobile all'embedded.

Data processing tra un reg. e un immediato 2 operandi: contenuto di un registro e un immediato (1 byte) Il secondo operando è passato per il barrel-shifter I due giungono alla ALU Il risultato giunge al banco di registri operazione tra registro e immediato Datapath: address register increment Rd PC registers Rn mult as ins. as instruction [7:0] Il PC è incrementato e l'istruzione successiva caricata in i.pipe data out data in i. pipe (b) register - immediate operation S. Salvatori - Microelettronica maggio 2017 (12) Cominciamo a vedere nel dettaglio l'architettura dei processori ARM. Faremo riferimento al vecchio ARM7 che si presta molto a comprendere la filosofia di progetto e a uno studio didattico.

Store (data transfer): 1 ciclo Una istruzione di load/store calcola l indirizzo di memoria nello stesso modo con cui una istruzione di data-processing tratta gli operandi; base address register registers Rn increment mult PC lsl #0 calcolo di PC (fine 1 ciclo) offset datapath: Primo ciclo = A / A + B / A - B [11:0] data out data in i. pipe (a) 1st cycle - compute addr ess S. Salvatori - Microelettronica maggio 2017 (13)

Store (data transfer): 2 ciclo auto-indexing address register increment uscirà PC (fine 2 ciclo) datapath: secondo ciclo Rn PC registers Rd mult shifter = A + B / A - B Se riguarda 1 byte: Il valore è replicato 4 volte byte? data in i. pipe Nel caso di LOAD in un 3 ciclo si ha il trasferimento da data in nel registro (b) 2nd cycle - store data & auto-inde S. Salvatori - Microelettronica maggio 2017 (14)

Salti (branch, B) In una istruzione di salto, nel 1 ciclo si calcola l'indirizzo a cui saltare L'offset (immediato a 24 bit) subisce uno shift di 2 bit allineamento con word... sommato al contenuto di PC address register registers PC increment mult lsl #2 datapath: Primo ciclo = A + B [23:0] data out data in i. pipe (a) 1st cycle - compute branch tar get S. Salvatori - Microelettronica maggio 2017 (15)

Salti (branch with link, BL) Nel caso di branch with link, per ritornare all'istruzione successiva a quella di branch: PC è copiato in r14 datapath: secondo ciclo address register increment R14 registers PC mult shifter Nota: il ritorno è in realtà a un indirizzo PC-4 (PC guarda sempre due istruzioni avanti) nel 3 ciclo ( pipeline refill) viene aggiustato il valore = A data out data in i. pipe (b) 2nd cycle - save return addr ess S. Salvatori - Microelettronica maggio 2017 (16)

Organizzazione nel caso di pipeline a 5-stadi S. Salvatori - Microelettronica maggio 2017 (17)

Aumentare il numero di slot La soluzione a 3-stadi è molto efficace ed è stata adottata fino all ARM7; Per sistemi con migliori prestazioni dobbiamo ricercare soluzioni più efficienti: T progr N CPI f istr clk n medio di cicli di clock per istruzione Per diminuire il tempo complessivo di esecuzione di un programma: aumentare f CLK diminuire CPI numero maggiore di stadi per la pipeline S. Salvatori - Microelettronica maggio 2017 (18)

Organizzazione per pipeline a 5 stadi Aumentare f CLK semplificare la logica di ogni stadio della pipeline aumentare il numero di stadi della pipeline Diminuire CPI le istruzioni devono essere riconfigurate in modo che diminuisca il numero di slot che esse occupano nella pipeline ridurre gli stalli dovuti ad istruzioni che siano interdipendenti S. Salvatori - Microelettronica maggio 2017 (19)

Il collo di bottiglia Il modello di Von Neumann limita la possibilità di ridurre CPI a causa degli accessi alla memoria, sia di programma che di dei dati; Il sistema di memoria dovrebbe consentire di acquisire maggiori informazioni/ciclo (>32 bit) oppure: separare la memoria di programma da quella dei dati S. Salvatori - Microelettronica maggio 2017 (20)

Pipeline a 5 stadi (ARM9TDMI) instruction fetch r. read decode shift/alu data memory access reg write mem Fetch Decode Execute buffer/data Write Nei processori ARM con pipeline a 5-stadi: fetch: l istr. è prelevata e depositata nella pipeline; decode: l istr. è decodificata e gli operandi prelevati dai registri; execute: shift dell operando e risultato dell ALU. Se l istr. è un load/store, con l ALU si calcola l indirizzo di memoria; buffer/data: eventuale accesso alla memoria, altrimenti il risultato dell ALU è posto in un buffer per mantenere lo stesso flusso della pipeline per tutte le istruzioni; write back: il risultato è caricato in un registro (incluso il load da memoria). S. Salvatori - Microelettronica maggio 2017 (21)

ARM9TDMI Registri: 3 porte di lettura e 2 di scrittura (*) Memorie separate: I-cache: per istruzioni D-cache: per i dati Incr. per LDM e STM Data-forwarding: i risultati sono passati tra gli stadi appena sono disponibili (*) Normalmente nei RISC: 2 per lettura e 1 per scrittura. S. Salvatori - Microelettronica maggio 2017 (22)

Data forwarding Nella pipeline a 5 stadi il ciclo di esecuzione è praticamente spezzato in 3 slot; Se un'istruzione ha bisogno del dato prodotto dall'istruzione precedente si ha dipendenza; Lo stallo si avrebbe se il dato fosse richiesto prima che il risultato venga trasferito nel registro di destinazione Nell'ARM9TDMI sono inseriti percorsi per i dati che presentano il risultato appena disponibile: data forwarding S. Salvatori - Microelettronica maggio 2017 (23)

Stallo inevitabile (read-after-write) Nella seguente sequenza: LDR r3, [..] ADD r1, r2, r3 il dato in r3 è disponibile dalla prima istruzione solo nel penultimo ciclo buffer/data mentre la seconda la richiede nel ciclo di esecuzione instruction fetch r. read decode shift/alu data memory access reg write Fetch Decode Execute Memory Write Il compilatore deve evitare di porre in sequenza questo tipo di istruzioni S. Salvatori - Microelettronica maggio 2017 (24)

Compatibilità Per ARM con pipeline a 3 stadi il PC punta 8 byte (2 istruzioni) oltre l istruzione corrente; Con la pipeline a 5 stadi gli operandi sono letti un ciclo prima rispetto a quella a tre stadi: PC+4 anziché PC+8; Per avere compatibilità gli ARM con pipeline a 5 stadi emulano quelli a 3 stadi L'incrementer di PC bypassa il registro di pipeline tra fetch e decode PC+4 per l'istruzione attuale = PC+8 per l'istruzione successiva. S. Salvatori - Microelettronica maggio 2017 (25)

Alcune soluzioni nell'architettura ARM S. Salvatori - Microelettronica maggio 2017 (26)

Segnale di clock Datapath RTL Control FSM Sono utilizzati latch in luogo di flip-flop sensibili ai livelli e non ai fronti del clock È necessario un clock a due fasi Φ1 phase 1 Φ2 1 clock cycle phase 2 Le due fasi sono derivate da un unico segnale di clock in ingresso (PLL) dato Φ1 Φ2 S. Salvatori - Microelettronica maggio 2017 (27)

Ciclo datapath ALU operands latched phase 1 register read time shift time read bus valid shift out valid phase 2 precharge invalidates buses register write time ALU time ALU out I bus sono dinamici (precaricati: anche se manca il clock lo stato è mantenuto) Ciclo = lett.reg + shift + ALU + scritt.reg + sep.fasi S. Salvatori - Microelettronica maggio 2017 (28)

Adder nel primo prototipo ARM Ripple-carry adder (32 stadi) ARM1 : Cout OAI A B AOI sum Cin S. Salvatori - Microelettronica maggio 2017 (29)

Adder in ARM2 4-bit Carry look ahead (8 stadi) ARM2 Cout[3] OAI A[3:0] B[3:0] G P 4-bit adder logic sum[3:0] AOI Cin[0] S. Salvatori - Microelettronica maggio 2017 (30)

Funzioni della ALU per l 'ARM2 fs5 fs4 fs3 fs2 fs1 fs0 ALU output 0 0 0 1 0 0 A and B 0 0 1 0 0 0 A and not B 0 0 1 0 0 1 A xor B 0 1 1 0 0 1 A plus not B plus carry 0 1 0 1 1 0 A plus B plus carry 1 1 0 1 1 0 not A plus B plus carry 0 0 0 0 0 0 A 0 0 0 0 0 1 A or B 0 0 0 1 0 1 B 0 0 1 0 1 0 not B 0 0 1 1 0 0 zero S. Salvatori - Microelettronica maggio 2017 (31)

ALU per ARM2 Logica per il risultato (1 bit) fs: NB bus 5 0 1 2 3 carry logic G 4 NA bus P ALU bus S. Salvatori - Microelettronica maggio 2017 (32)

Carry-select adder per l'arm6 a,b[3:0] a,b[31:28] + +, +1 c s s+1 +, +1 mux mux mux sum[3:0] sum[7:4] sum[15:8] sum[31:16] S. Salvatori - Microelettronica maggio 2017 (33)

Organizzazione ALU per l'arm6 A operand latch B operand latch invert A XOR gates XOR gates invert B function logic functions adder C in C V logic/arithmetic result mux zero detect N Z result S. Salvatori - Microelettronica maggio 2017 (34)

Carry arbitration encoding per ARM9 A B C u v 0 0 0 0 0 0 1 unknown 1 0 1 0 unknown 1 0 1 1 1 1 1 S. Salvatori - Microelettronica maggio 2017 (35)

Barrel shifter In molti processori shifter e ALU lavorano in parallelo -> Il ritardo dello shifter non è critico Poiché nell'arm i due lavorano in serie, lo shifter deve introdurre il minimo ritardo possibile -> matrice (32x32) right 3 right 2 right 1 no shift in[3] in[2] in[1] left 1 left 2 left 3 Con bus precaricato a V DD bastano NMOS in[0] Una logica separata gestisce il riempimento (shift logico o aritmetico) out[0] out[1] out[2] out[3] S. Salvatori - Microelettronica maggio 2017 (36)