1 ARM PROCESSORS FAMILY INTRODUZIONE ALL’ISA ARM PIPELINES UTILIZZATE DAI PROCESSORI ARM ARM PROCESSOR CORES ARM CPU CORES EMBEDDED ARM-BASED SYSTEMS Architetture dei Sistemi Embedded 2005/06 S.M. Carta 2 INTRODUZIONE ALL'ISA ARM Architetture dei Sistemi Embedded 2005/06 S.M. Carta PROCESSORI ARM 3 • I processori della famiglia ARM sono largamente i più diffusi per sistemi integrati di tipo embedded (telefonia cellulare, sistemi wireless, PDA, ecc) • L’ISA è principalmente di tipo RISC con qualche concessione al CISC che non pregiudica l’efficienza della pipeline • Vedremo che una delle pipelines utilizzate è pressochè identica a quella del MIPS Architetture dei Sistemi Embedded 2005/06 S.M. Carta 4 PROCESSORI ARM EVOLUZIONE DELLA SPECIE •Il primo processore ARM (Advanced RISC Machine) fu sviluppato a Cambridge presso la Acorn Computers Limited (successivamente ARM Limited), fra l’Ottobre 1983 e l’Aprile 1985, sulla base degli studi di Patterson e Ditzel che portarono alla realizzazione del primo processore RISC, il Berkeley RISC I. •L’architettura originale basata su 3 stadi di pipeline e’ rimasta sostanzialmente invariata fino alla versione 7 compresa (1995). •Per ottenere un incremento si prestazioni nelle versioni 8 e 9 si e’ passati ad una pipeline a 5 stadi (simile a quella del MIPS). •Per un ulteriore incremento di prestazioni si è passati a pipeline più complesse a 6 stadi e + stadi versioni 10 e 11. Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 5 REGISTRI INTERNI USER MODE 15 GPRs, PC, CPSR (current program status register) SYSTEM MODES Gli altri 16 registri del file register più altri 5 status registers sono usati per le modalità di funzionamento speciali (gestione di interrupts e chiamate dal SO) r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 (PC) CPSR user mode Utilizzabili in user mode Utilizzabili in system modes r8_fiq r9_fiq r10_fiq r11_fiq r12_fiq r13_fiq r14_fiq r13_irq r14_irq r13_abt r14_abt r13_svc r14_svc SPSR_und SPSR_abt SPSR_irq SPSR_fiq SPSR_svc fiq mode svc mode abort mode irq mode Architetture dei Sistemi Embedded 2005/06 undefined mode S.M. Carta ARM ISA 6 FORMATO DEL CPSR • N (Negative), Z (Zero), C (Carry), V (oVerflow) • mode – control processor mode • T – control instruction set – T = 1 – istruzioni 16-bit Thumb – T = 0 – instruzioni 32-bit ARM standard • I F – interrupt enables 31 28 27 NZCV 8 7 6 5 4 unused Architetture dei Sistemi Embedded 2005/06 r13_und r14_und IF T 0 mode S.M. Carta ARM ISA 7 ECCEZIONI • • I processori ARM supportano un vasta varietà di eccezioni (interrupts, traps e chiamate da SO) Gestione delle eccezioni – Lo stato corrente viene salvato copiando il PC su r14_exc e il CPSR su SPSR_exc (exc indica il tipo di eccezione, che può essere fiq, svc, abort, irq, undefined) – La modalità operativa del processore passa da user mode all’appropriato exception mode – Il valore del PC viene forzato ad un valore compreso tra 0016 e 1C16, corrispondente alla specifica tipologia di eccezione – L’istruzione corrispondente alla locazione alla quale viene forzato il PC di solito contiene un branch alla routine di exception handling; l’exception handler utilizza r13_exc, che è normalmente inizializzato per puntare ad uno stack in memoria utilizzato per salvare il contenuto di registri – Al ritorno dall’eccezione viene ripristinata la modalità user Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 8 ORGANIZZAZIONE DELLA MEMORIA • Array lineare di bytes numerati da 0 a 232 – 1 • Tipi di dato – bytes (8 bits) – half-words (16 bits) – allineati su 4 byte 2-byte boundaries (con byte iniziale di indirizzo pari) – words (32 bits) – allineati su 4byte (con byte iniziale di indirizzo multiplo di 4) Architetture dei Sistemi Embedded 2005/06 Si può selezionare la modalità big endian o little endian (quella dell’esempio) bit 31 bit 0 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 6 5 4 2 1 0 word16 half-word14 half-word12 7 3 word8 byte6 half-word4 byte address byte3 byte2 byte1 byte0 S.M. Carta ARM ISA 9 INSTRUCTION SET (1) Architettura Load-store – Gli operandi sono sempre contenuti nei GPRs – Le uniche istruzioni che coinvolgono la memoria sono quelle di load/store Tipologie di Istruzioni – Data Processing – utilizzano e modificano il contenuto dei registri – Data Transfer – copiano il contenuto di locazioni di memoria in registri (load) o copiano il contenuto di registri in locazioni della memoria (store) – Control Flow • branch • branch-and-link – salva l’indirizzo di ritorno in modo da ripristinare la corretta sequenza d’esecuzione • Chiamate del sistema operativo (interrupt software) Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 10 INSTRUCTION SET (2) • • • • Istruzioni di data processing a 3 operandi Esecuzione condizionale di ciascuna istruzione Istruzioni di load/store multiplo di registri Capacità di eseguire un’operazione di shift e una operazione di tipo ALU tramite singola istruzione eseguibile in singolo ciclo (troughput) • Possibilità di ampliare l’Instruction Set Open utilizzando le operazioni del coprocessore • Modalità di funzionamento Thumb che consente una rappresentazione compressa su 16 bit delle istruzioni Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 11 ISTRUZIONI DI DATA PROCESSING (1) • Classificazione delle istruzioni di data processing – – – – Operazioni Aritmetiche Operazioni logiche bit a bit Operazioni di spostamento dati fra registri Operazioni di comparazione • Operandi: a 32-bit • Tre tipologie di operandi: – Contenuto di registri – Il secondo operando può essere una costante (immediate) – Un operando proveniente da un registro può essere shiftato • Risultato a 32-bit salvato in un registro – Le operazioni di long multiply fanno eccezione, infatti producono risultati a 64bit Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 12 ISTRUZIONI DI DATA PROCESSING (2) Arithmetic Operations Bit-wise Logical Operations ADD r0, r1, r2 r0 := r1 + r2 AND r0, r1, r2 r0 := r1 and r2 ADC r0, r1, r2 r0 := r1 + r2 + C ORR r0, r1, r2 r0 := r1 or r2 SUB r0, r1, r2 r0 := r1 - r2 EOR r0, r1, r2 r0 := r1 xor r2 SBC r0, r1, r2 r0 := r1 - r2 + C - 1 BIC r0, r1, r2 r0 := r1 and (not) r2 RSB r0, r1, r2 r0 := r2 – r1 RSC r0, r1, r2 r0 := r2 – r1 + C - 1 Register Movement Comparison Operations MOV r0, r2 r0 := r2 CMP r1, r2 set cc on r1 - r2 MVN r0, r2 r0 := not r2 CMN r1, r2 set cc on r1 + r2 TST r1, r2 set cc on r1 and r2 TEQ r1, r2 set cc on r1 xor r2 Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 13 ISTRUZIONI DI DATA PROCESSING (3) • Operandi immediati: è possibile rappresentare valori da 0 a 232 – 1, ma non tutti i valori: immediate = (0->255) x 22n, 0 <= n <= 12 ADD r3, r3, #3 r3 := r3 + 3 AND r8, r7, #&ff r8 := r7[7:0], & indica valore esadecimale • Shift di uno degli operandi – E’ possibile shiftare il secondo operando prima che sia combinato con il primo ADD r3, r2, r1, LSL #3 r3 := r2 + 8 x r1 ADD r5, r5, r3, LSL r2 r5 := r5 + 2r2 x r3 Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 14 ISTRUZIONI DI DATA PROCESSING (4) ISTRUZIONI DI SHIFT 31 • • • • • LSL – Logical Shift Left LSR – Logical Shift Right ASR – Arithmetic Shift Right ROR – Rotate Right RRX – Rotate Right Extended by 1 place 0 31 00000 00000 LSL #5 31 LSR #5 0 31 0 1 00000 0 11111 1 ASR #5, positive operand 31 0 0 ASR #5, negative operand 0 31 0 C C ROR #5 Architetture dei Sistemi Embedded 2005/06 C RRX S.M. Carta ARM ISA 15 ISTRUZIONI DI DATA PROCESSING (5) BIT DI CONDIZIONE DEL CPSR • Ciascuna Istruzione di Data Processing (DPI) può settare i bit di condizione (N, Z, V, and C) del CPSR – Per tutte le DPI eccetto la comparazione dev’essere fatta una richiesta specifica – A livello assembly questo viene implementato agiungendo una S al nome dell’istruzione – Esempio (r3-r2 := r1-r0 + r3-r2) addizione a 64 bit fra i regs r1-r0 e r3-r2 ADDS r2, r2, r0 ADC r3, r3, r1 ; sommo le 2 word meno significative, il carry viene scritto su C e tiene conto del riporto ; sommo le 2 word più significative con l’eventuale riporto • Le operazioni aritmetiche settano tutti i flag (N, Z, C, and V) • Le operazioni logiche e di spostamento dati settano N e Z – I valori di V e C vengono preservati Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 16 ISTRUZIONI DI DATA PROCESSING (6) MOLTIPLICAZIONI • Esempio (Multiply, Multiply-Accumulate) MUL r4, r3, r2 r4 := [r3 x r2]<31:0> MLA r4, r3, r2, r1 r4 := [r3 x r2 + r1] <31:0> • NB – Vengono scritti sul registro destinazione i 32 bit meno significativi, gli altri bit vengono ignorati – Non è supportato che il secondo operando sia un immediato – Il registro destinazione non può coincidere con il primo registro sorgente – Se l’istruzione è di tipo `S`, il bit V viene preservato e il bit C diviene privo di significato • Moltiplicazione per una costante: viene implementata spesso tramite add e shift esempio (r0 = r0 * 35) – ADD r0, r0, r0, LSL #2 RSB r0, r0, r0, LSL #3 Architetture dei Sistemi Embedded 2005/06 ; r0’ = r0 x 5 ; r0’’ = 7 x r0’ S.M. Carta ARM ISA 17 ISTRUZIONI DI DATA TRANSFER (1) • Istruzioni di Load e Store di registri singoli – trasferimento di un dato (byte, half-word, word) tra un registro e la memoria • Istruzioni di Load e Store di registri multipli – rende possibile il trasfermento di grandi quantità di dati – utilizzate per la chiamata ed il ritorno da funzione, per salvare/ripristinare lo stato dei registri, e per copiare blocchi di dati • Istruzioni di swap di registri singoli – rende possibile lo scambio del contenuto di un registro con il contenuto di una locazione di memoria – usato per implementare semafori Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 18 ISTRUZIONI DI DATA TRANSFER (2) LOAD E STORE DI SINGOLO REGISTRO Indirizzamento Register-indirect Indirizzamento Base+offset (offset fino a 4Kbytes) LDR r0, [r1, #4] r0 := mem32[r1 +4] LDR r0, [r1] r0 := mem32[r1] STR r0, [r1] mem32[r1] := r0 LDRB r0, [r1] r0 := mem8[r1] Indirizzamento Auto-indexing LDR r0, [r1, #4]! r0 := mem32[r1 + 4] r1 := r1 + 4 Indirizzamento Post-indexed LDR r0, [r1], #4 r0 := mem32[r1] r1 := r1 + 4 Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 19 ISTRUZIONI DI DATA TRANSFER (3) UTILIZZO DELL’INDIRIZZAMENTO POST-INDEXED COPY: LDR r1, TABLE1 LDR r2, TABLE2 LOOP: LDR r0, [r1] STR r0, [r2] ADD r1, r1, #4 ADD r2, r2, #4 ... TABLE1: ... TABLE2:… ; r1 punta a TABLE1 ; r2 punta a TABLE2 COPY: LDR r1, TABLE1 LDR r2, TABLE2 LOOP: LDR r0, [r1], #4 STR r0, [r2], #4 ... TABLE1: ... TABLE2:… Architetture dei Sistemi Embedded 2005/06 ; r1 punta a TABLE1 ; r2 punta a TABLE2 S.M. Carta ARM ISA 20 ISTRUZIONI DI DATA TRANSFER (4) TRASFERIMENTO MULTIPLO DI DATI REGISTRI -MEMORIA LDMIA r1, {r0, r2, r5} LDMIB r1, {r0, r2, r5} r0 := mem32[r1] r2 := mem32[r1 + 4] r5 := mem32[r1 + 8] r0 := mem32[r1 + 4] r2 := mem32[r1 + 8] r5 := mem32[r1 + 12] tutti I registri sono copiati tramite una singola istruzione l’ordine dei registri non ha importanza includendo r15 nella lista dei registri causa una modifica del flusso di esecuzione LDMDA r1, {r0, r2, r5} r0 := mem32[r1] r2 := mem32[r1 - 4] r5 := mem32[r1 - 8] LDMDB r1, {r0, r2, r5} r0 := mem32[r1 - 4] r2 := mem32[r1 - 8] r5 := mem32[r1 - 12] Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 21 ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (1) Branch B BAL BEQ BNE BPL BMI BCC BLO BCS BHS BVC BVS BGT BGE Interpretation Unconditional Always Equal Not equal Plus Minus Carry clear Lower Carry set Higher or same Overflow clear Overflow set Greater than Greater or equal BLT BLE Less than Less or equal BHI BLS Higher Lower or same Normal uses Always take this branch Always take this branch Comparison equal or zero result Comparison not equal or non-zero result Result positive or zero Result minus or negative Arithmetic operation did not give carry-out Unsigned comparison gave lower Arithmetic operation gave carry-out Unsigned comparison gave higher or same Signed integer operation; no overflow occurred Signed integer operation; overflow occurred Signed integer comparison gave greater than Signed integer comparison gave greater or equal Signed integer comparison gave less than Signed integer comparison gave less than or equal Unsigned comparison gave higher Unsigned comparison gave lower or same Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 22 ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (2) ESECUZIONE CONDIZIONALE DELLE ISTRUZIONI • L’esecuzione condizionale è usata per evitare l’utilizzo di istruzioni di salto nel caso si debba eventualmente evitare l’esecuzione di un limitato numero di istruzioni • Esempio Senza l’esecuzione condizionale CMP r0, #5 BEQ BYPASS ADD r1, r1, r0 SUB r1, r1, r2 BYPASS: ... ; ; if (r0!=5) { ; r1:=r1+r0-r2 ;} Con l’esecuzione condizionale CMP r0, #5 ; ADDNE r1, r1, r0 ; SUBNE r1, r1, r2 ; ... Note: add 2 –letter condition after the 3-letter opcode Architetture dei Sistemi Embedded 2005/06 ; if ((a==b) && (c==d)) e++; CMP r0, r1 CMPEQ r2, r3 ADDEQ r4, r4, #1 S.M. Carta ARM ISA 23 ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (3) ISTRUZIONI DI BRANCH AND LINK • Branch to subroutine (r14 è utilizzato come link register) BL SUBR ; branch to SUBR .. ; return here SUBR: .. ; SUBR entry point MOV pc, r14 ; return Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 24 ISTRUZIONI DI MODIFICA DEL FLUSSO DI CONTROLLO (4) INTERRUPT SOFTWARE • Il supervisore è un programma che opera ad un livello privilegiato – può fare delle cose che un programma a livello utente non può fare direttamente – Esempio: mandare in outptut del testo ad un display • ARM ISA include SWI (SoftWare Interrupt) ; output r0[7:0] SWI SWI_WriteC ; return from a user program back to monitor SWI SWI_Exit Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 25 INSTRUCTION SET COMPLETO (1) Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 26 INSTRUCTION SET COMPLETO (2) Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 27 INSTRUCTION SET COMPLETO (3) Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM ISA 28 INSTRUCTION SET COMPLETO (4) Architetture dei Sistemi Embedded 2005/06 S.M. Carta 29 PIPELINES UTILIZZATE DAI PROCESSORI ARM Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) 30 control A[31:0] • Register file – address register – 2 porte in lettura, 1 porta in scrittura + 1 porta in lettura e 1 in scrittura riservate per r15 (PC) • Barrel shifter – esegue lo shift o il rotate di un operando di un numero di bit a scelta • ALU – esegue le operazioni logiche ed aritmetiche • Memory address register + incrementer • Memory data registers • Instruction decoder e logica di controllo associata P C incrementer PC register bank instruction decode A L U b u s multiply register A & control B b u s barrel shifter b u s ALU data out register data in register D[31:0] Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) 31 • Fetch – L’istruzione viene prelevata dalla memoria e caricata nella pipeline • Decode – L’istruzione viene decodificata e I segnali di controllo del datapath vengono settati per il ciclo successivo. In questo ciclo l’istruzione utilizza la logica di decodifica ma non il datapath • Execute – L’istruzione utilizza il datapath: vengono gli operandi dal file register, uno degli operandi viene eventualmente shiftato, la ALU calcola il risultato che viene scritto (write back) sul file register Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) ESECUZIONI DELLE ISTRUZIONI SINGOLO CICLO fetch sub r2,r3,r6 decode execute add fetch decode fetch cmp r2,#3 1 2 Architetture dei Sistemi Embedded 2005/06 3 add r0,r1,#5 execute sub decode execute cmp time S.M. Carta 32 ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) ESECUZIONI DELLE ISTRUZIONI DI ACCESSO ALLA MEMORIA 1 fetch ADD decode fetch STR 2 3 LA LOGICA DI DECODIFICA GENERA SEMPRE I SEGNALI DI CONTROLLO UTILIZZATI DAL DATAPATH NEL CICLO SUCCESSIVO execute decode calc. addr. data xfer fetch ADD 4 decode execute fetch ADD 5 decode execute fetch ADD decode instruction execute time Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) ESECUZIONI DELLE ISTRUZIONI DI ACCESSO MULTIPLO ALLA MEMORIA ldmia r0,{r2,r3} 33 fetch decode ex ld r2 ex ld r3 sub r2,r3,r6 fetch Instruzione ritardata Lo stadio di decode blocca L’avanzamento delle istruzioni nella pipeline finchè LDMIA non ha terminato decode ex sub fetch decodeex cmp cmp r2,#3 time Il fetch della SUB avviene al ciclo standard, ma l’istruzione non viene decodificata finchè LDMIA non è terminata Architetture dei Sistemi Embedded 2005/06 34 S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) ESECUZIONI DI SALTO 35 La decisione sulla destinazione del salto non può essere presa fino alla fase di execute bne foo fetch decode ex bne ex bne ex bne sub r2,r3,r6 2 cicli vengono persi solo se il salto viene effettuato (Predict Branch Not Taken) fetch decode fetch decode ex add foo add r0,r1,r2 time Architetture dei Sistemi Embedded 2005/06 S.M. Carta 36 ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) DATA PROCESSING INSTRUCTION DATAPATH ACTIVITY ¾Reg-Reg ¾Rd = Rn op Rm ¾r15 = AR + 4 AR = AR + 4 ¾Reg-Imm address register address register increment Rd ¾Rd = Rn op Imm ¾r15 = AR + 4 AR = AR + 4 PC Rn registers increment Rd Rm PC Rn mult registers mult as ins. as ins. as instruction as instruction [7:0] data out data in i. pipe (a) register – register operations Architetture dei Sistemi Embedded 2005/06 data out data in i. pipe (b) register – immediate operations S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) STR (store register) DATAPATH ACTIVITY 37 ¾Compute address ¾AR = Rn op Disp ¾r15 = AR + 4 address register address register increment ¾Store data increment PC ¾AR = R15 ¾mem[AR] = Rd<x:y> ¾If autoindexing => Rn = Rn +/- 4 Rn registers PC registers mult mult Rn shifter lsl #0 = A / A +B/ Rd = A +B/ A -B A -B [11:0] data out data in i. pipe (a) 1st cycle – compute address byte? data in i. pipe (b) 2nd cycle – store data & auto-index Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM PIPELINES PIPELINE A 3 STADI (ARM 1 - 7) 38 PRIMI DUE CICLI DI ESECUZIONE DI UN’ISTRUZ DI SALTO ¾Compute target address address register address register ¾AR = r15 + Disp,lsl #2 increment increment ¾Save return address (if required) R14 PC ¾r14 = r15 ¾AR = AR + 4 registers PC registers mult mult shifter lsl #2 Il terzo ciclo viene utilizzato per correggere il valore di r14. In caso contrario punterebbe a PC+8 anzichè a PC+4, avendo continuato a fare fetch dopo il fetch del branch =A = A+B [23:0] data out data in i. pipe (a) 1st cycle – compute branch target Architetture dei Sistemi Embedded 2005/06 data out data in i. pipe (b) 2nd cycle – save return address S.M. Carta 39 ARM PIPELINES ISTRUZIONI THUMB Architetture dei Sistemi Embedded 2005/06 S.M. Carta 40 ARM PIPELINES ARM 7 THUMB MANAGEMENT Architetture dei Sistemi Embedded 2005/06 S.M. Carta 41 ARM PIPELINES INCREMENTO DELLE PRESTAZIONI Diminuzione del periodo di clock Riduzione del CPI Reimplementazione delle istruzioni a piu’ cicli Riduzione degli stalli della pipeline Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM PIPELINES PIPELINE A 5 STADI pc (ARM 8,9, strongARM) next • Architettura di Harvard • La pipeline e’ simile a quella MIPS, le differenza riguardano: – PC contenuto nel file dei registri, il che implica 2 porte in scrittura e 3 in lettura, al posto di 1 e 2 – Barrel shifter – Moltiplicatore – Modulo per la gestione di pre e post indirizzamento autoincrementante che consenta il load e store di piu’ dati nella stessa istruzione 42 +4 I-cache fetch pc + 4 pc+8 I decode instruction decode r15 register read LDM/ STM postindex +4 immediate fields mul shift pre-index reg shift ALU execute forwarding paths mux B, BL MOV pc SUBS pc byte repl. load/store address buffer/ data D-cache rot/sgn ex LDR pc register write Architetture dei Sistemi Embedded 2005/06 write-back S.M. Carta ARM PIPELINES PIPELINE A 5 STADI next pc +4 (ARM 8,9, strongARM) Fetch Decode • L’istruzione viene decodificata • Vengono letti i 3 operandi Execute • Un operando viene shiftato e la ALU genera il risultato, oppure • Viene calcolato un indirizzo Buffer/data (Memory) B, BL MOV pc • Accesso alla memoria dati SUBS pc (load, store) Write-back • Scrivo il risultato sul reg file 43 I-cache fetch pc + 4 pc+8 I decode instruction decode r15 register read LDM/ STM postindex +4 immediate fields mul shift pre-index reg shift ALU execute forwarding paths mux byte repl. load/store address D-cache buffer/ data rot/sgn ex LDR pc register write Architetture dei Sistemi Embedded 2005/06 write-back S.M. Carta ARM PIPELINES 44 CONFRONTO FRA LE 2 PIPELINES Architetture dei Sistemi Embedded 2005/06 S.M. Carta 45 ARM PIPELINES CONFRONTO FRA LE 2 PIPELINES • L’architettura a 3 stadi esegue in sequenza la decompressione delle istruzioni thumb e quindi la decodifica. Nella pipeline a 5 stadi non c’è tempo sufficiente, e la decodifica dei 2 tipi di istruzioni avviene in parallelo • Lo stadio di memory della pipeline a 5 stadi non ha uno stadio equivalente nell’altra pipe, poichè l’accesso in memoria viene eseguito con un ciclo di execute addizionale che provoca uno svuotamento della pipeline. • L’incremento di prestazioni richiesto al sottosistema di memoria e’ notevole Architetture dei Sistemi Embedded 2005/06 S.M. Carta 46 ARM PIPELINES PIPELINE A 6 STADI (ARM10) • Consente frequenze di clock ancora piu’ elevate (50%) • Ottimizzazione degli stadi di fetch, memory ed execute, duplicazione dello stadio di decode Architetture dei Sistemi Embedded 2005/06 S.M. Carta 47 ARM CORES Architetture dei Sistemi Embedded 2005/06 S.M. Carta 48 ARM CORES TIPOLOGIE DI SISTEMI VLSI CHIP e COREs Un sistema VLSI, puo’ essere commercializzato in 3 diverse forme – Chip – Core Hardware (Silicon IP) – Core Software (Soft IP) • Nello sviluppo di System on Chip è indispensabile avvalersi di moduli IP (cores) sviluppati da terzi • I processori e le CPU della famiglia ARM sono sempre commercializzati sotto forma di cores (a parte lo strongARM) Architetture dei Sistemi Embedded 2005/06 S.M. Carta 49 ARM PROCESSOR CORES ARM7TDMI • E’ attualmente il core ARM piu’ diffuso. E’ lo standard de-facto per applicazioni di telefonia mobile digitale • Viene commercializzata sotto forma di macrocella customizzata per la tecnologia richiesta dall’acquirente • Supporta il subset di istruzioni a 16 bit THUMB, on-chip debug, EmbeddedICE hardware, moltiplicazione a 64 bit • E’ stato fabbricato in numerose tecnologie CMOS diverse, con frequenze di clock fino a 100 MHz (66 typ) e alimentazioni fino a 0.9 V (3.3 typ) Architetture dei Sistemi Embedded 2005/06 S.M. Carta 50 ARM PROCESSOR CORES ARM7TDMI Architetture dei Sistemi Embedded 2005/06 S.M. Carta 51 ARM PROCESSOR CORES ARM7TDMI Architetture dei Sistemi Embedded 2005/06 S.M. Carta 52 ARM PROCESSOR CORES ARM7TDMI-S • E’ la versione soft-IP dell’ARM7TDMI, viene commercializzata come progetto verilog o VHDL e il porting sulla tecnologia target viene eseguito dall’acquirente tramite sintesi • Il processo di sintesi prevede la possibilta’ di introdurre modifiche architetturali quali l’omissione del modulo embeddedICE e/o la sostituzione del moltiplicatore a 64 bit con uno a 32 bit, con una conseguente riduzione della funzionalita’ ma anche di dimensioni e consumi • La versione completa e’ il 50% piu’ estesa e consuma il 50% in piu’ rispetto alla versione hard a parita’ di tecnologia Architetture dei Sistemi Embedded 2005/06 S.M. Carta 53 ARM PROCESSOR CORES ARM9TDMI • E’ il core ARM per applicazioni che richiedano prestazioni tanto elevate da non poter essere soddisfatte dall’architettura 7 • Viene commercializzata sotto forma di macrocella customizzata per la tecnologia richiesta dall’acquirente • Ha le stesse funzionalita dell’ARM7TDMI, con la pipeline del processore che passa da 3 a 5 stadi e un embeddedICE hardware piu’ evoluto • E’ stato fabbricato in tecnologie CMOS a 0.35, 0.25 e 0.18 micron, con alimentazioni fino da 3.3 a 1.2 V • Necessita di 2 cache separate (istruzioni e dati) per poter sfruttare la propria potenza elaborativa Architetture dei Sistemi Embedded 2005/06 S.M. Carta 54 ARM PROCESSOR CORES ARM9TDMI Architetture dei Sistemi Embedded 2005/06 S.M. Carta 55 ARM PROCESSOR CORES ARM9TDMI-S • E’ la versione soft-IP dell’ARM9TDMI, viene commercializzata come progetto verilog o VHDL e il porting sulla tecnologia target viene eseguito dall’acquirente tramite sintesi • Implementa una versione piu’ estesa dell’instruction set rispetto alla versione hard, con l’inclusione di istruzioni per il signal processing • E’ il 30% piu’ estesa rispetto alla versione hard a parita’ di tecnologia Architetture dei Sistemi Embedded 2005/06 S.M. Carta 56 ARM CPU CORES CORES PIU’ EVOLUTI • Oltre a core che includono semplicemente il processore la ARM commercializza anche core che includono i moduli che spesso è indispensabile integrare sul chip: memorie Cache, Memory Management Units (MMU) ed (eventualmente) bus controllers per la gestione di periferiche di I/O • Tali moduli per poter raggiungere il massimo delle prestazioni potenziali del sistema devono essere fortemente ottimizzati per il processore ospite. Ha quindi senso per una società che intenda realizzare un System on Chip lasciare al fornitore del processore l’onere di sviluppare anche questi moduli Architetture dei Sistemi Embedded 2005/06 S.M. Carta 57 ARM CPU CORES ARM710T • Core hardware commercializzato dalla ARM limited • Il core comprende i seguenti moduli – Pipeline a 3 stadi + circuiteria di debug e embeddedICE (ARM7TDMI) – Un cache unificata per i dati e le istruzioni di 8Kbyte di tipo 4-way associative, write back – MMU – Coprocessore – Controller per il bus delle periferiche di I/O (AMBA) • Ne esistono altre 2 versioni con caratteristiche simili (ARM720T e ARM740T) Architetture dei Sistemi Embedded 2005/06 S.M. Carta 58 ARM CPU CORES ARM710T 53 N/A 11.7 240 0-59 Architetture dei Sistemi Embedded 2005/06 220 S.M. Carta 59 ARM CPU CORES strongARM • CPU stand-alone sviluppata dalla Arm limited e da Digital Equipment Corporation. La versione attualmente in commercio, la SA-110, è prodotta da Intel, che ha acquisito la Digital nel 1998 • Il chip comprende i seguenti moduli – Pipeline a 5 stadi con register forwarding – Esecuzione in singolo ciclo di tutte le istruzioni a parte la moltiplicazione a 64 bit e i trasferimenti multipli di registri – Un cache per le istruzioni di 16Kbyte di tipo 32-way associative – Un cache per i dati di 16Kbyte di tipo 32-way associative, write back – MMU con gestione di TLB separata per istruzioni e dati • Tra i processori aventi lo stesso livello di prestazioni, dimensioni e consumi a parità di tecnologia sono fra i più ridotti Architetture dei Sistemi Embedded 2005/06 S.M. Carta 60 ARM CPU CORES strongARM 16 Kbytes 16 Kbytes Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM CPU CORES 61 StrongARM Architetture dei Sistemi Embedded 2005/06 S.M. Carta 62 ARM CPU CORES ARM940T • Core hardware commercializzato dalla ARM limited • Il core comprende i seguenti moduli – – – – – – Pipeline a 5 stadi + circuiteria di debug e embeddedICE (ARM9TDMI) Un cache per le istruzioni di 16Kbyte di tipo 16-way associative Un cache per i dati di 16Kbyte di tipo 16-way associative, write back MMU unificata per dati e istruzioni Interfaccia per la gestione di un coprocessore esterno Controller per il bus delle periferiche di I/O (AMBA) • Ne esiste un’altra versione con caratteristiche simili, l’ARM920T, che supporta WindowsCE Architetture dei Sistemi Embedded 2005/06 S.M. Carta 63 ARM CPU CORES ARM940T 16 Kbytes 16 Kbytes Architetture dei Sistemi Embedded 2005/06 S.M. Carta ARM CPU CORES 64 ARM940T Architetture dei Sistemi Embedded 2005/06 S.M. Carta 65 EMBEDDED ARM-BASED SYSTEMS Architetture dei Sistemi Embedded 2005/06 S.M. Carta 66 EMBEDDED ARM-BASED SYSTEMS OneC VWS22100 GSM chip Architetture dei Sistemi Embedded 2005/06 S.M. Carta 67 EMBEDDED ARM-BASED SYSTEMS Typical GSM handset architecture Architetture dei Sistemi Embedded 2005/06 S.M. Carta 68 EMBEDDED ARM-BASED SYSTEMS ERICSSON - BLUETOOTH BASEBAND CONTROLLER Architetture dei Sistemi Embedded 2005/06 S.M. Carta 69 EMBEDDED ARM-BASED SYSTEMS BLUETOOTH SYSTEM Architetture dei Sistemi Embedded 2005/06 S.M. Carta