Sei sulla pagina 1di 102

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

1/102

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM Prof. N. Masarone Lab.: St. 132 (S2DEL Solid State and Diamond Electronics Lab.) e.mail: info@engsistemi.com

Architettura ARM

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

2/102

Sistema desktop
Hardware Software

Soluzione del problema

Hardware

Firmware

Sistema embedded

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

3/102

Identificazione dell'hardware necessario

DSP FPGA SBC

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

4/102

Esempio di sistema misto analogico-digitale per applicazioni audio elaborazione


main() { ...

conversione A/D

conversione D/A 101101...

A/D

011001...

D/A

101101...

registrazione
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

5/102

Breve storia del processore ARM (Advanced Risc Machine)


Il concetto RISC (Reduced Instruction Set Computer) risale a programmi di ricerca realizzati negli anni '80 presso le Universit di Stanford e Berkeley (CA USA). ARM viene sviluppato presso la Acorn Computers Limited di Cambridge (UK) tra il 1983 e il 1985 (Acorn Risc Machine). Acorn aveva acquisito una forte posizione sul mercato britannico, specialmente nel mondo scolastico, grazie al microcomputer BBC (basato sul processore 8-bit 6502, presente anche in Apple II) realizzato per una serie televisiva della BBC. Per migliorare il microcomputer, nel 1983, gli ingegneri Acorn prendono in considerazione vari processori commerciali CISC 16-bit, ma nessuno risulta soddisfacente (specialmente nel tempo di risposta agli interrupt, punto di forza del vecchio 6502). Acorn prende in considerazione l'eventualit di sviluppare in proprio un processore, ma l'impegno previsto risulta enorme, sia in termini di forza lavoro che in termini di conoscenze tecniche. L'articolo sul processore RISC I della Berkeley University propone una soluzione vincente sviluppata da pochi studenti universitari in meno di un anno. La semplicit di esecuzione dell'architettura RISC onora il vincolo richiesto di velocit nella risposta agli interrupt. L'ARM diventa il componente centrale della produzione Acorn ed il primo processore RISC commerciale (1985). Nel 1990 nasce ARM Limited (Advanced Risc Machine) come societ autonoma, venditrice di propriet intellettuale (IP); ARM quindi una societ fabless, cio non produce silicio. Ad oggi, pi di 10 miliardi di processori ARM sono stati consegnati nel mondo intero dagli oltre 200 partners di ARM Limited. La consegna continua incessante ad una velocit di 90 processori al secondo.

ARM Milestones: http://www.arm.com/aboutarm/milestones.html


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM
5V Technologies Actel Corporation Alchip Technologies, Inc. Altera Corporation Analog Devices Inc Anyka Technologies Corporation Atmel Avago Technologies Broadcom Corporation Celestial Semiconductor, Ltd. Chipnuts Technology (Shanghai) Inc. ChipX Cirrus Logic Conexant Datang Microelectronics Technology Co., LTD. eASIC Energy Micro AS eSilicon Corporation Freescale Semiconductor Fujitsu Microelectronics America, Inc. GENS Logic Co., Ltd. HiSilicon Technologies Co., Ltd. INDILINX Intel Corp International Business Machines ISINE INC. Kawasaki Microelectronics Luminary Micro, Inc ARM Ltd

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

6/102

Partners ARM Ltd.

Marvell Semiconductor, Inc. Micronas GmbH MobilEye Vision Technologies Ltd NEC Electronics (Europe) GmbH NeoMagic Corporation NVIDIA NXP Oberthur Card Systems Oki Electric Industry Co.,Ltd. ON Semiconductor (Formerly AMI Semiconductor) Open-Silicon Oxford Semiconductor Pixim, Inc. Samsung Electronics Co., Ltd Shanghai Huahong Integrated Circuit Co., Ltd. Shanghai Jade Technologies Co, Ltd. Shanghai Silicon IP Technologies Co.,Ltd. Shenzhen ZTE IC Design Co.Ltd Spansion Inc Spreadtrum Communications Inc. STEPMIND STMicroelectronics Texas Instruments Toshiba America Electronic Components Winbond Electronics Corporation Xi'an HuaXun Microelectronics Inc. Zoran Corporation
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

7/102

ARM Ltd
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM
Nintendo DS Lite ARM Processor: ARM 7, ARM 9

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

8/102

Sony PlayStation Portable - PSP ARM Processor: ARM 9

Sony Playstation 3 (60GB) ARM Processor: ARM 9E

Sharp Aquos LCD TV ARM Processor: ARM 7

Humax RG-100 Digital Satelite Set-top-box ARM Processor: ARM 9

ARM Ltd

Kodak EASYSHARE Z1275 Zoom Digital Camera ARM Processor: ARM926EJ-S


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

9/102

Apple iPod Nano ARM Processor: Dual ARM7TDMI

Apple iPhone ARM Processor: ARM1176JZF-S ARM7TDMI-S ARM926EJ-S ARM 9 Nokia N70 3G Phone ARM Processor: ARM9

Tom Tom Go 300 GPS Portable Navigation system ARM Processor: ARM920T

Hewlett Packard iPaq 6320 PDA ARM Ltd ARM Processor: ARM925
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

10/102

Verbatim Store n Go Pro DiskOnKey ARM Processor: ARM7

HP Deskjet 5940 ARM Processor: ARM946E-S

Netgear WGR614 Wireless Router ARM Processor: ARM9

D-Link DVC 2000 Broadband Internet VideoPhone ARM Processor: ARM9

Opengear CM4000remote control server ARM Processor: ARM9 ARM Ltd


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

11/102

Dynon Avionics EFIS-D10A - Electronic Flight Information System ARM Processor: ARM7TDMI

Artega GT (Dual-Dashboard Display) ARM Processor: ARM926EJ-S

ExaDigm XD2100SP Mobile Payment system ARM Processor: ARM7 Hewlett Packard HP 50g Scientific Calculator ARM Processor: ARM920T

Sonosite MTurbo (Portable Ultrasound Device) ARM Processor: ARM926 ARM Ltd
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

12/102

Schema di computer con programma memorizzato


FF..FF16 instructions

registers

address

data

processor instructions and data memory 00..0016

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

13/102

Il set di istruzioni MU0

4 bits opc ode

12 bits S

Instruction Opcode LDA S STO S ADD S SUB S JMP S JGE S JNE S STP 0000 0001 0010 0011 0100 0101 0110 0111

Effect ACC := mem16[S] mem16[S] := ACC ACC := ACC + mem16[S] ACC := ACC - mem16[S] PC := S if ACC >= 0 PC := S if ACC !=0 PC := S stop

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

14/102

Formato indirizzi delle istruzioni

f bits n bits func tion op 1 addr .

n bits op 2 addr .

n bits n bits dest. addr next_i addr . .

istruzione a 4 indirizzi

f bits n bits function op 1 addr .


f bits n bits func tion op 1 addr .

n bits op 2 addr .
n bits dest. addr .

n bits dest. addr .

ARM Mode

istruzione a 3 indirizzi

Thumb Mode

istruzione a 2 indirizzi istruzione a 1 indirizzo

f bits n bits func tion op 1 addr .


f bits func tion
2000 Addison Wesley
S2DEL Solid State and Diamond Electronics Lab.

istruzione a 0 indirizzi

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

15/102

Uso dinamico tipico delle istruzioni

Instruction type Data movement Control flow Arithmetic operations Comparisons Logical operations Other

Dynamic usage 43% 23% 15% 13% 5% 1%

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

16/102

Architettura RISC (Reduced Instruction Set Computer)

Set di istruzioni ridotto: lunghezza fissa, un solo ciclo per l'esecuzione (pipeline). Il peso dell'elaborazione spostato sul compilatore; l'hardware esegue istruzioni semplici ad alta velocit.

Esecuzione in pipeline: il processore spezza ogni istruzione in pi fasi che interessano parti diverse dell'hardware. (Fetch, Decode, Execute) con un miglioramento del throughput.

Ampio banco di registri: validi sia per il contenimento di dati che di istruzioni, permettono un'esecuzione pi veloce del programma, limitando gli accessi alla memoria principale.

Funzionalit load/store: il processore lavora solo su dati presenti nei registri, limitando gli accessi alla memoria (collo di bottiglia per la velocit di esecuzione) per le sole istruzioni specifiche di load e di store.

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

17/102

Stato ARM (32 bit) e stato Thumb (16 bit) Il codice Thumb utilizza circa il 40% di istruzioni in pi rispetto al codice ARM Il codice Thumb utilizza il 30% in meno di potenza della memoria esterna

Il codice Thumb occupa circa il 70% dell'equivalente codice ARM 16-bit mem Con memoria a 16-bit il codice Thumb risulta 45% pi veloce del codice ARM 32-bit mem Con memoria a 32-bit il codice ARM risulta 40% pi veloce del codice Thumb

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

18/102

Modi di funzionamento del processore ARM

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

19/102

Registri generali e Program Counter nello stato ARM


Priviliged modes Exception modes User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

FIQ
r0 r1 r2 r3 r4 r5 r6 r7 r8_fiq r9_fiq r10_fiq r11_fiq r12_fiq r13_fiq r14_fiq (LR) r15 (PC)

Supervisor
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_svc r14_svc (LR) r15 (PC)

Abort
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_abt r14_abt (LR) r15 (PC)

IRQ
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_irq r14_irq (LR) r15 (PC)

Undefined
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_und r14_und (LR) r15 (PC)

program status register nello stato ARM


CPSR CPSR SPSR_fiq CPSR SPSR_svc CPSR SPSR_abt CPSR SPSR_irq CPSR SPSR_und

= banked register
S2DEL Solid State and Diamond Electronics Lab.

Register bank: 31x32-bit registers + 6 status registers


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

20/102

Registri generali e Program Counter nello stato Thumb


Priviliged modes Exception modes User | System
r0 r1 r2 r3 r4 r5 r6 r7 SP LR PC

FIQ
r0 r1 r2 r3 r4 r5 r6 r7 SP_fiq LR_fiq PC

Supervisor
r0 r1 r2 r3 r4 r5 r6 r7 SP_svc LR_svc PC

Abort
r0 r1 r2 r3 r4 r5 r6 r7 SP_abt LR_abt PC

IRQ
r0 r1 r2 r3 r4 r5 r6 r7 SP_irq LR_irq PC

Undefined
r0 r1 r2 r3 r4 r5 r6 r7 SP_und LR_und PC

Program status register nello stato Thumb


CPSR CPSR SPSR_fiq CPSR SPSR_svc CPSR SPSR_abt CPSR SPSR_irq CPSR SPSR_und

= banked register

Register bank: 21x16-bit registers + 6 status registers


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

21/102

Relazione tra registri dello stato thumb e registri dello stato ARM
Thumb state
r0 r1 r2 r3 r4 r5 r6 r7

ARM state
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 Stack pointer (r13) Link register (r14) Program counter (r15) Current program status register (CPSR) Saved program status register (SPSR)

Stack pointer (r13) Link register (r14) Program counter (r15) Current program status register (CPSR) Saved program status register (SPSR)

Copyright 2001 ARM Limited


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

22/102

Modi e registri visibili nello stato Thumb e ARM

Copyright 2001 ARM Limited

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

23/102

CPU08 opcode map (CISC) Freescale Semiconductor, Inc.

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

24/102

ARM instruction set summary (RISC)

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

25/102

condition code flags 31 30 29 28 27 26 25 24 23

Program status register (CPSR - SPSR_exc)


20 19 16 15 10 9 8 7

control bits 6 5 4 0

N Z C V Q Res J Reserved GE[3:0]


oVerflow Carry or borrow or extend Zero Negative or less than

Reserved

E A I F T

M[4:0]

IRQ disable FIQ disable Thumb/ARM Mode User FIQ IRQ Supervisor Abort Undefined System M[4:0] 10000 10001 10010 10011 10111 11011 11111

= reserved in ARM7/TDMI-S core

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

26/102

Istruzioni di spostamento

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

27/102

modifica di CPSR (modo di funzionamento): MRS r0, CPSR BIC r0, r0, #0x1F ORR r0, r0, #0x13 MSR CPSR_c, r0 modifica di CPSR (flag di condizione): MRS r0, CPSR BIC r0, r0, #0xF0000000 MSR CPSR_f, r0 modifica di CPSR (disabilita IRQ): MRS r0, CPSR BIC r0, r0, #0x80 MSR CPSR_c, r0 modifica di CPSR (entra in modalit FIQ): MRS r0, CPSR BIC r0, r0, #0x1F ORR r0, r0, #0x11 MSR CPSR_c, r0

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

carica CPSR in r0 cancella il modo corrente.. .. ed entra in Supervisor aggiorna CPSR ora in stato SVC carica il valore di CPSR in r0 azzera le flag N, Z, C, V aggiorna le flag in CPSR carica il valore di CPSR in r0 disabilita INT aggiorna lo stato in CPSR ora in stato INT carica il valore di CPSR in r0 azzera i bit di modalit imposta i bit come FIQ aggiorna la modalit in CPSR ora in stato FIQ ARM Architecture Reference Manual
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

28/102

Istruzioni aritmetiche

Copyright 2001 ARM Limited

ARM Architecture Reference Manual


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

29/102

somma di due registri: ADD r5, r1, r3;

addiziona r1 e r3 con risultato in r5

decrementa r2 e verifica se vale zero: SUBS r2, r2, #1; decrementa r2 e imposta CC BEQ LABEL ; salta se r2 vale zero .. ; .. altrimenti va oltre moltiplica r0 per 5 (usando il barrel shifter): ADD r0, r0, r0, LSL #2 ; r0 * 4 + r0 = r0 * 5

subroutine che moltiplica r0 per 10 (usando il barrel shifter): MOV r0, #3 BL TIM10 .. TIM10 MOV r0, r0, LSL #1 ; x 2 ADD r0, r0, r0, LSL #2 ; x 5 MOV PC, r14 ; ritorna addiziona un intero a 64 bit in r0, r1 ad un altro in r2, r3: ADDS r2, r2, r0; somma i meno significativi e salva il carry ADC r3, r3, r1; somma i pi significativi con carry ARM Architecture Reference Manual
S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

30/102

Operazioni di shift in ARM


31 0 31 0

00000

00000

LSL #5

LSR #5
0 31 1 0

LSL: LSR: ASL: ASR: ROR: RRX:

Logical Shift Left (0-31) Logical Shift Right (0-32) Arithmetic Shift Left = LSL (0-31) Arithmetic Shift Right (0-32) ROtate Right (0-32) Rotate Right eXtended (1)

31 0

00000 0

11111 1

ASR #5 , positive operand


31 0 C

ASR #5 , negative operand


31 0

ROR #5

RRX

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

31/102

sottrazione a 64 bit (r0, r2 LSW mentre r1, r3 MSW): SUBS r4, r0, r2 ; r4 = r0 r2 e imposta il carry SBC r5, r1, r3 ; r5 = r1 r3 + carry -1 prodotto scalare di due vettori: MOV r11, #20 MOV r10, #0 LOOP LDR r0, [r8], #4 LDR r1, [r9], #4 MLA r10, r0, r1, r10 SUBS r11, r11, #1 BNE LOOP .. esempi di moltiplicazioni: MUL r4, r2, r1 MULS r4, r2, r1 MLA r7, r8, r9, r3 SMULL r4, r8, r2, r3 UMULL r6, r8, r0, r1 UMLAL r5, r8, r0, r1

; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

inizializza il contatore del ciclo inizializza il totale carica il primo elemento.. .. ed il secondo r10 = r0 x r1 + r10 decrementa il contatore del ciclo se r11 <> 0 salta a LOOP .. .. altrimenti procede r4 = r2 x r1 r4 = r2 x r1, set flag N e Z r7 = r8 x r9 + r3 r4 = bit 0 - 31 di r2 x r3 r8 = bit 32 - 63 di r2 x r3 r8, r6 = r0 x r1 r8, r5 = r0 x r1 + r8, r5 ARM Architecture Reference Manual
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

32/102

Istruzioni logiche

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

33/102

esempi di operazioni Booleane: AND r0, r1, ORR r0, r1, EOR r0, r1, BIC r0, r1,

r2 r2 r2 r2

; ; ; ;

r0 r0 r0 r0

= = = =

r1 r1 r1 r1

and r2 or r2 xor r2 and not r2

esempi di operazioni di confronto: CMP r1, r2 CMN r1, r2 TST r1, r2 TEQ r1, r2

; ; ; ;

imposta imposta imposta imposta

cc cc cc cc

su su su su

r1 r1 r1 r1

- r2 + r2 and r2 xor r2

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

34/102

Istruzioni di salto

31

28 27

25 24 23

B, BL BX

cond
31

101 L
28 27

24-bit signed word offset


6 5 4 3 0

cond

0001001011111111111100

L 1

Rn

31 PC
Copyright 2001 ARM Limited
S2DEL Solid State and Diamond Electronics Lab.

1 0 Rn T 5

CPSR 0

31

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

35/102

salto incondizionato: B LABEL ; salto incondizionato.. .. LABEL .. ; .. fin qui ciclo 10: MOV r0, #10 ; inizializza il contatore del ciclo LOOP .. SUBS r0, #1 ; decrementa il contatore impostando i CC BNE LOOP ; se il contatore <> 0 ripete il ciclo.. .. ; .. altrimenti esce chiamata di soubroutine: BL SUB ; branch e link alla subroutine SUB .. ; punto di ritorno .. SUB .. ; punto d'ingresso della subroutine MOV PC, r14; ritorna chiamata di soubroutine condizionale: CMP r0, #5 ; se r0 < 5 BLLT SUB1 ; chiama SUB1 BLGE SUB2 ; chiama SUB2 salto incondizionato: BX r0 ; salta all'indirizzo in r0 ; entra in stato Thumb se r0[0]=1 ARM Architecture Reference Manual
S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

36/102

Istruzioni di lettura singola da memoria

Copyright 2001 ARM Limited

ARM Architecture Reference Manual


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

37/102

Istruzioni di scrittura singola in memoria

Copyright 2001 ARM Limited

ARM Architecture Reference Manual


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

38/102

esempi di load / store singoli: LDR r1, [r0] LDR r8, [r3, #4] LDR r12, [r13, #-4] STR r2, [r1, #0x100] LDRB r5, [r9]

; valore all'indirizzo r0 in r1 ; valore all'indirizzo r3+4 in r8 ; valore all'indirizzo r13-4 in r12 ; salva r2 all'indirizzo r1 + 0x100 ; carica il byte all'indirizzo r9 in r5 ; (3 byte superiori azzerati) LDRB r3, [r8, #3] ; carica il byte all'indirizzo r8+3 in r3 ; (3 byte superiori azzerati) STRB r4, [r10, #0x200] ; salva byte r4 all'indirizzo r10+0x200 LDR r11, [r1, r2] ; valore all'indirizzo r1+r2 in r11 STRB r10, [r7, -r4] ; salva byte r10 all'indirizzo r7-r4 LDR r11, [r3, r5, LSL #2]; valore all'indirizzo r3+(r5x4) in r11 LDR r1, [r0, #4]! ; valore indirizzo r0+4 in r1, poi r0=r0+4 STRB r7, [r6, #-1]! ; salva byte r7 all'indirizzo r6-1, ; poi r6=r6-1 LDR r3, [r9], #4 ; val. all'indirizzo r9 in r3, poi r9=r9+4 STR r2, [r5], #8 ; salva r2 all'indirizzo r5, poi r5=r5+8 ARM Architecture Reference Manual
S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

39/102

esempi di load / store singoli: LDR r0, [PC, #40]

; ; LDR r0, [r1], r2 ; LDRH r1, [r0] ; LDRH r8, [r3, #2] ; LDRH r12, [r13, #-6] ; STRH r2, [r1, #0x80] ; LDRSH r5, [r9] ; LDRSB r3, [r8, #3] ; LDRSB r4, [r10, #0xC1] ; LDRH r11, [r1, r2] ; STRH r10, [r7, -r4] ; LDRSH r1, [r0, #2]! ; ; LDRSB r7, [r6, #-1]! ; ; LDRH r3, [r9], #2 ; ; STRH r2, [r5], #8 ; ;

carica in r0 PC+0x40 (=indirizzo della istruzione LDR + 8 + 0x40) valore all'indir. r1 in r0, poi r1=r1+r2 halfword ind. r0 in r1 (azzera 2 B sup.) halfword dall'indirizzo r3+2 in r8 halfword dall'indirizzo r13-6 in r12 halfword da r2 all'indirizzo r1+0x80 signed halfword dall'indirizzo r9 in r5 signed byte dall'indirizzo r8+3 in r3 signed dall'indirizzo r10+0xC1 in r4 halfword dall'indirizzo r1+r2 in r11 halfword da r10 all'indirizzo r7-r4 signed halfword dall'indirizzo r0+2 in r1, poi r0=r0+2 signed byte dall'indirizzo r6-1 in r7, poi r6=r6-1 halfword dall'indirizzo r9 in r3, poi r9=r9+2 halfword da r2 all'indirizzo r5, poi r5=r5+8 ARM Architecture Reference Manual
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

40/102

Istruzioni di lettura multipla da memoria

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

41/102

Istruzioni di scrittura multipla in memoria

Copyright 2001 ARM Limited

ARM Architecture Reference Manual


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

42/102

esempi di load store multipli: LDMIA r1, {r0, r2, r5}

STMFD r13!, {r0-r2, r14} LDMFD r13!, {r0-r2, PC} copia di registri con uso dello stack: STMFD r13!, {r2-r9} ; LDMIA r0!, {r2-r9} ; STMIA r1, {r2-r9} ; LDMFD r13!, {r2-r9} ;

; ; ; ; ;

r0 := mem32[r1] r2 := mem32[r1+4] r5 := mem32[r1+8] salva r0-r2 e LR sullo stack ripristina dallo stack r0-r2 e il PC salva r2-r9 sullo stack carica 8 word dall'indirizzo r0 in r2-r9 salva r2-r9 all'indirizzo r1 ripristina r2-r9 dallo stack

nota all'istruzione LDM tratta da ARM Architecture Reference Manual: The registers are loaded in sequence, the lowest-numbered register from the lowest memory address (start_address), through to the highest-numbered register from the highest memory address (end_address) nota all'istruzione STM tratta da ARM Architecture Reference Manual: The registers are stored in sequence, the lowest-numbered register to the lowest memory address (start_address), through to the highest-numbered register to the highest memory address (end_address) ARM Architecture Reference Manual
S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

43/102

copia di registri con uso dello stack: STMFD r13!, {r2-r9} ; LDMIA r0!, {r2-r9} ; STMIA r1, {r2-r9} ; LDMFD r13!, {r2-r9} ;

salva r2-r9 sullo stack carica 8 word dall'indirizzo r0 in r2-r9 salva r2-r9 all'indirizzo r1 ripristina r2-r9 dallo stack memoria stack

Scopo di queste istruzioni copiare in area2 i dati presenti nell'area1, senza utilizzare istruzioni dirette di movimento dati in memoria.

registri
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC)

libera heap area1 area2 applicazione

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

44/102

STMFD r13!, {r2-r9} registri


r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC)

; salva r2-r9 sullo stack


bit 31 NN

memoria
NN 00 00 00 00 00 00 00 00 NN 0B 00 02 0F 0A 2C 2C 50 NN 01 03 03 04 25 08 0D 90

bit 0 0x0000F200 0x0000F1FC 0x0000F1F8 0x0000F1F4 0x0000F1F0 0x0000F1EC 0x0000F1E8 0x0000F1E4 0x0000F1E0

0x00005090 0x00002C0D 0x00002C08 0x00000A25 0x00000F04 0x00000203 0x00000003 0x00000B01

00 00 00 00 00 00

0x0000F200

0x0000F1E0

00 00

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

45/102

LDMIA r0!, {r2-r9}

; carica 8 word dall'indirizzo r0 in r2-r9 memoria


NN 43 FE CA 28 12 4F 76 18 NN AA 32 43 2F 43 21 E4 AC NN D4 00 23 E2 29 78 CD 02

registri
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC) 0x10000024 0x10000000 0x0118AC02 0x5576E4CD 0xAD4F2178 0x02124329 0x23282FE2 0x16CA4323 0x24FE3200 0x1443AAD4

bit 31 NN 14 24 16 23 02 AD 0x0000F1DF 55 01

bit 0 0x10000024 0x10000020 0x1000001C 0x10000018 0x10000014 0x10000010 0x1000000C 0x10000008 0x10000000

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

46/102

STMIA r1, {r2-r9}

; salva r2-r9 all'indirizzo r1 memoria


NN 43 FE CA 28 12 4F 76 18 NN AA 32 43 2F 43 21 E4 AC NN D4 00 23 E2 29 78 CD 02

registri
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC) 0x10000024 0x20000000 0x0118AC02 0x5576E4CD 0xAD4F2178 0x02124329 0x23282FE2 0x16CA4323 0x24FE3200 0x1443AAD4

bit 31 NN 14 24 16 23 02 AD 0x0000F1DF 55 01

bit 0 0x20000024 0x20000020 0x2000001C 0x20000018 0x20000014 0x20000010 0x2000000C 0x20000008 0x20000000

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

47/102

LDMFD r13!, {r2-r9} registri


r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (SP) r14 (LR) r15 (PC)

; ripristina r2-r9 dallo stack


bit 31 NN

memoria
NN 00 00 00 00 00 00 00 00 NN 0B 00 02 0F 0A 2C 2C 50 NN 01 03 03 04 25 08 0D 90

bit 0 0x0000F200 0x0000F1FC 0x0000F1F8 0x0000F1F4 0x0000F1F0 0x0000F1EC 0x0000F1E8 0x0000F1E4 0x0000F1E0

0x00005090 0x00002C0D 0x00002C08 0x00000A25 0x00000F04 0x00000203 0x00000003 0x00000B01

00 00 00 00 00 00

0x0000F1E0

0x0000F200

00 00

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

48/102

Gestioni dello stack e relative istruzioni multiple


r9 r5 r1 r0
1018
16

r9

r5 r1 r0

1018

16

r9

100c 16

r9

100c 16

1000

16

1000

16

Before Increment After Before

STMIA r9!, {r0,r1,r5}

STMIB r9!, {r0,r1,r5}

1018

16

1018

16

Decrement After

Ascending Full Empty STMIB STMFA STMIA STMEA LDMDB LDMEA LDMDA LDMFA

Descending Full Empty LDMIB LDMED LDMIA LDMFD STMDB STMFD STMDA STMED

r9

r5 r1 r0

100c 16

r9 r5 r1 r0

100c 16

r9

1000

16

r9

1000

16

STMDA r9!, {r0,r1,r5}

STMDB r9!, {r0,r1,r5}

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

49/102

Generalit sullo stack Lo stack un'area di memoria per la registrazione temporanea delle informazioni; pu essere utilizzato, per es. all'inizio di una funzione, per salvare il valore corrente dei registri, al fine di utilizzarli nel corpo funzione scrivendovi altri dati. Al termine della funzione i registri possono essere ripristinati, recuperandone i valori precedenti dallo stack. Lo stack una struttura dati di tipo LIFO (Last-In First-Out), ovvero di tipo pila: l'ultimo dato inserito nello stack il primo ad essere recuperato dallo stack. Deve sempre essere disponibile un puntatore SP (Stack Pointer) che fornisce l'indirizzo di accesso allo stack. Con gli attributi ascending e descending indichiamo la possibilit di aggiungere elementi nello stack utilizzando indirizzi di memoria rispettivamente crescenti o descrescenti. Con gli attributi full ed empty indichiamo la possibilit che lo stack pointer punti ad un indirizzo rispettivamente vuoto (quindi privo di valore significativo) o pieno (cio gi utilizzato per il salvataggio di un valore utile).

SP (empty ascending) SP (full ascending)

(full descending) SP (empty descending) SP

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

50/102

Istruzioni di scambio, coprocessore e SWI

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

51/102

esempi di swap: SWP r12, r10, [r9] SWPB r3, r4, [r8] SWP r1, r1, [r2]

; ; ; ; ; ; in

carica in r12 il valore all'indirizzo r9 e salva r10 nell'indirizzo r9 carica un byte in r3 dall'indirizzo r8 e salva un byte da r4 all'indirizzo r8 scambia il valore in r1 e l'indirizzo r2

esempio di SWI: SWI #0xABCDEF

; passa in modo Supervisor (privilegiato)

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

52/102

esempio di semaforo: [r1] 0xFF (rosso), 0x00 (verde) MOV r0, #0xFF ; valore per il rosso loop SWPB r0, r0, [r1] ; carica in r0 il valore da [r1] e viceversa CMP r0, #0xFF ; verifica r0 e 0xFF (rosso) BEQ loop ; se r0=0xFF va in loop caso [r1] = 0x00 (semaforo verde) 0xFF 0x00 memoria 0x00 0xFF memoria

r0 r1

r0 r1

caso [r1] = 0xFF (semaforo rosso) 0xFF 0xFF memoria In questo caso rimane in loop fintantoch il semaforo rosso

r0 r1

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

53/102

Le memorie condivise sono aree dati accessibili da pi task, in esecuzione sullo stesso processore o su processori diversi. Possono essere un modo semplice ed efficace per far comunicare i task tra loro; risulta per fondamentale il sincronismo delle operazioni di lettura/scrittura, al fine di garantire l'integrit delle informazioni memorizzate. A tal scopo si utilizzano i semafori. memoria condivisa
bit 31 bit 0

0x00
0xNN

0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN

0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN 0xNN

P1

0xNN 0xNN 0xNN

L'area di memoria condivisa in verde libera e pu essere bloccata dal primo processore che la richiede. P2

L'area di memoria condivisa in rosso bloccata (p.e. da P1) e pu essere liberata solo da questo.

0xFF
0xNN 0xNN 0xNN

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM
31 28 27

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

54/102

con d

A R M c o n d itio n c o d e s
O p co de [3 1 :2 8 ] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 M n em o n ic ex ten sio n EQ NE C S /H S C C /L O M I PL VS VC HI LS GE LT GT LE AL NV In te rp re ta ti o n E qua l / e quals z e ro N o t equal C a rry s e t / un s ig n e d h ig h e r o r s a m e C a rry c le a r / un s ig n e d lo w e r M in us / n eg ativ e P lus / p o s itiv e o r z e ro O v e rflo w N o o v e rflo w U n sig n ed h ig h er U n sig n ed lo w er o r sam e S ig n e d g re a ter th a n o r e qua l S ig n ed les s th an S ig n e d g re a ter th a n S ig n ed les s th an o r equal A lw ay s N e v e r (do n o t us e !) S tatus flag s tate fo r ex ecutio n Z set Z clear C set C clear N set N clear V set V clear C s et an d Z clear C clear o r Z s et N equals V N is n o t equal to V Z clear an d N equals V Z set o r N is n o t equal to V an y none

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

55/102

B ra n c h c o n d itio n s
B B B B B B B B B B B B B B B B B B B ra n c h AL EQ NE PL M I CC LO CS HS VC VS GT GE LT LE HI LS In te rp re ta tio n U n co n ditio n al A lw ay s Equal N o t equal P lus M in us C a rry c le a r Lo w er C a rry s e t H ig h er o r sam e O v e rflo w c le a r O v e rflo w s e t G re a te r th a n G re a te r o r e qua l L es s th an Less o r equal H ig h er Lo w er o r sam e N o rm a l us e s A lw a y s ta k e th is b ra n c h A lw a y s ta k e th is b ra n c h C o m p a ris o n e qua l o r z e ro re s ult C o m p a ris o n n o t e qua l o r n o n -z e ro re s ult R e s ult p o s itiv e o r z e ro R es ult m in us o r n eg ativ e A rith m e tic o p e ra tio n did n o t g iv e c a rry -o ut U n s ig n e d c o m p a ris o n g a v e lo w e r A rith m e tic o p e ra tio n g a v e c a rry -o ut U n s ig n e d c o m p a ris o n g a v e h ig h e r o r s a m e S ig n e d in te g e r o p e ra tio n ; n o o v e rflo w o c c urre d S ig n e d in te g e r o p e ra tio n ; o v e rflo w o c c urre d S ig n e d in te g e r c o m p a ris o n g a v e g re a te r th a n S ig n e d in te g e r c o m p a ris o n g a v e g re a te r o r e qua l S ig n e d in te g e r c o m p a ris o n g a v e le s s th a n S ig n e d in te g e r c o m p a ris o n g a v e le s s th a n o r e qua l U n s ig n e d c o m p a ris o n g a v e h ig h e r U n s ig n e d c o m p a ris o n g a v e lo w e r o r s a m e

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab.

ARM Architecture Reference Manual


ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

56/102

Esempio di istruzione condizionata EQ 31 0 0 28 27 0 0 ARM instruction 0

condition field (EQ) Se Z==1 (EQ) esegue l'istruzione, altrimenti la salta condition flags

Z 31 28 27 CPSR (Current Program Status Register) 0

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

57/102

Esempio: algoritmo massimo comune divisore

algoritmo con branch

algoritmo con condizioni

r1<==>a r2<==>b
ARM Architecture Reference Manual
S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

58/102

Esempio: algoritmo di ricerca del massimo if (a > b) c=a; else c=b; // c = max (a , b)

posto che: a r0, b r1, c r2 CMP r0, r1 MOVGT r2, r0 MOVLE r2, r1 MOV r2, r0 CMP r0, r1 MOVLE r2, r1 CMP BLE MOV B ELSE MOV ENDIF .. r0, r1 ELSE r2, r0 ENDIF r2, r1 ; ; ; ; ; ; ; ; ; ; ; ; compara r0,r1 se r0>r1, r2=r0 se r0<=r1, r2=r1 r2=r0 compara r0, r1 se r0<=r1, r2=r1

pi efficienti, ma utili solo per if-else brevi

compara r0, r1 se r0<=r1 salta a ELSE meno efficiente, ma r2=r0 utile per if-else lunghi salta a ENDIF r2=r1 .. ARM Architecture Reference Manual
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

59/102

Esempio: azzeramento di un vettore for(i=0; i<10; i++){ a[i]=0 } MOV ADR MOV CMP BGE STR ADD B .. r1, #0 r2, a[0] r0, #0 r0, #10 EXIT r1, [r2,r0,LSL #2] r0, r0, #1 LOOP // a[0] = ... = a[9] = 0 ; ; ; ; ; ; ; ; valore da caricare in a[i] r2 punta alla locazione a[0] i = 0 i < 10 ? if i>=10 EXIT a[i]=0 <--> [r2+r0*4]=r1 i++ ..

LOOP

EXIT

ADR una pseudo-istruzione dell'assembler, che calcola automaticamente un indirizzo mediante istruzioni di tipo ADD o SUB applicate al Program Counter (PC)

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

60/102

Architetture ARM Core ARM1 ARM2 ARM2as, ARM3 ARM6, ARM600, ARM610 ARM7, ARM700, ARM710 ARM7TDMI, ARM710T, ARM720T, ARM740T StrongARM, ARM8, ARM810 ARM9TDMI, ARM920T, ARM940T ARM9ES ARM10TDMI, ARM1020E Architecture v1 v2 v2a v3 v3 v4T v4 v4T v5TE v5TE

ARM Architecture Reference Manual


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

61/102

Senza pipeline
Esecuzione di istruzioni in tre fasi successive

fetch

decode

execute

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

62/102

Esecuzione di istruzioni in pipeline a tre stadi

Con pipeline

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

63/102

ARM operazione della pipeline a 3 stadi con istruzione a ciclo singolo


latenza di tre cicli

instr. #1

fetch

decode

execute
il through-put un'istruzione per ciclo

instr. #2

fetch

decode

execute

instr. #3

fetch

decode

execute t

PC

PC+4

PC+8

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

64/102

ARM operazione della pipeline a 3 stadi con istruzione multi ciclo instr. #1 fetch ADD decode instr. #2 instr. #3 instr. #4 instr. #5 execute

fetch STR decode calc. addr. data xfer fetch ADD fetch ADD decode execute decode execute execute

fetch ADD decode

t
= main memory access

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

65/102

Differenza nel comportamento della pipeline in stato ARM e stato Thumb

Copyright 2001 ARM Limited


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM
ADDR[31:0] address register PC bus address incrementer

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

66/102

ALU bus

register bank 31x32-bit registers + 6 status registers 32x8 multiplier

incrementer bus

ARM7TDMI-S core

barrel shifter 32-bit ALU

write data register WDATA[31:0]

instruction pipeline read data register thumb instruction decoder RDATA[31:0]


ROMA

B bus

A bus

instruction decoder and control logic

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM
ADDR[31:0] PC = 0xXXXXXXXX incrementer bus

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

67/102

address register PC bus address incrementer

Data processing instruction (register to register operation) cycle #1: fetch instr. #1
instruction decoder and control logic

ALU bus

register bank 31x32-bit registers + 6 status registers A bus 32x8 multiplier

barrel shifter 32-bit ALU

L'istruzione #1 viene caricata dalla memoria codice (fetch), all'indirizzo 0xXXXXXXXX; il program counter (PC), presente nel banco dei registri, poi incrementato di 4 (ARM mode) passando al valore 0xXXXXXXXX + 4.

write data register

instruction pipeline read data register thumb instruction decoder instr. #1 RDATA[31:0]
ROMA

WDATA[31:0]
S2DEL Solid State and Diamond Electronics Lab.

B bus

TRE

Universit degli Studi

Architettura ARM
ADDR[31:0] PC = 0xXXXXXXXX + 4

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

68/102

address incrementer

ALU bus

register bank 31x32-bit registers + 6 status registers 32x8 multiplier

incrementer bus

address register PC bus

barrel shifter 32-bit ALU

write data register

instruction pipeline read data register thumb instruction decoder instr. #2 RDATA[31:0]

WDATA[31:0]
S2DEL Solid State and Diamond Electronics Lab.

B bus

A bus

instruction decoder and control logic

Data processing instruction (register to register operation) cycle #2: decode instr. #1 fetch inst. #2
L'istruzione #2 viene caricata dalla memoria codice (fetch), all'indirizzo 0xXXXXXXXX + 4; il program counter (PC), presente nel banco dei registri, poi incrementato di 4 (ARM mode) passando al valore 0xXXXXXXXX + 8. L'istruzione #1 passa al decoder per la sua interpretazione.

ROMA

TRE

Universit degli Studi

Architettura ARM
ADDR[31:0] PC = 0xXXXXXXXX + 8

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

69/102

address incrementer

incrementer bus

address register PC bus

ALU bus

register bank 31x32-bit registers + 6 status registers B bus A bus 32x8 multiplier

instruction decoder and control logic

Data processing instruction (register to register operation) cycle #3: execute instr. #1 decode instr. #2 fecth instr. #3
L'istruzione #3 viene caricata dalla memoria codice (fetch), all'indirizzo 0xXXXXXXXX + 8; il program counter (PC), presente nel banco dei registri, poi incrementato. L'istruzione #2 passa al decoder per la sua interpretazione. L'istruzione #1 va nella fase di execute, agendo solo sui registri (come in questo esempio) o anche sulla memoria esterna, nel caso d'istruzione di tipo load/store.
ROMA

barrel shifter

32-bit ALU

write data register

instruction pipeline read data register thumb instruction decoder instr. #3 RDATA[31:0]

WDATA[31:0]
S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

70/102

Problemi delle pipeline


Esecuzione d'istruzione in pipeline

1 2

fetch dec

reg

ALU mem res reg ALU mem res reg ALU mem res time

fetch dec

3 instruction

fetch dec

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

71/102

Rischio pipeline Read-after-write

fetch dec

reg

ALU mem res

2 instruc tion

fetc h dec

stall

reg

ALU mem res time

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

72/102

Comportamento del salto in pipeline

1 (branch) fetch dec 2 3 4 5 (branch target) instruction

reg

ALU mem res reg ALU mem res reg ALU mem res reg ALU mem res reg time ALU mem res

fetch dec

fetch dec

fetch dec

fetch dec

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

73/102

Eccezioni
esecuzione
Durante l'esecuzione normale di un programma, il micro esegue le istruzioni una dopo l'altra, mediante il processo di fetch-decode-execute.

Le eccezioni sono eventi anomali che prevedono reazioni particolari del micro per gestire la nuova situazione.

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

74/102

effetto diretto di un'istruzione

software interrupt (SWI) undefined instruction prefetch abort

Eccezione

effetto indiretto di un'istruzione

data abort

reset derivante da una causa esterna interrupt request (IRQ) fast interrupt request (FIQ)
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

75/102

C P S R [4 :0 ] 10000 10001 10010 10011 10111 11011 11111


2000 Addison Wesley

M o de U ser F IQ IR Q SVC A b o rt U n def S y s tem

U se N o rm a l us e r c o de P ro c e s s in g fa s t in te rrup ts P ro c e s s in g s ta n da rd in te rrup ts P ro c e s s in g s o ftw a re in te rrup ts (S W Is ) P ro c e s s in g m e m o ry fa ults H a n dlin g un de fin e d in s truc tio n tra p s R un n in g p riv ile g e d o p e ra tin g s y s te m ta s k s

R e g i s te rs user _ fiq _ irq _svc _ ab t _ un d user


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

76/102

Gestione in ingresso dell'eccezione PC cpsr LR_exc spsr_exc


E x c e p tio n R eset U n d e fin e d in s tru c tio n S o ftw a r e in te rru p t (S W I) P re fe tc h a b o rt (in s tru c tio n fe tc h m e m o ry fa u lt) D a ta a b o rt (d a ta a c c e s s m e m o ry fa u lt) IR Q (n o rm a l in te rru p t) F IQ (fa s t in te rru p t) M ode SV C U N D SV C A b o rt A b o rt IR Q F IQ V e cto r a d d r ess 0x00000000 0x00000004 0x00000008 0x0000000C 0x00000010 0x00000018 0x0000001C

set cpsr (mode bits) PC exc vector address

ISR

2000 Addison Wesley

Gestione in uscita dell'eccezione LR_exc spsr_exc PC cpsr istruzione atomica di tipo: MOVS pc, r14 ; return SUBS pc, r14, #4 ; pc=r14-4 SUBS pc, r14, #8 ; pc=r14-8
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

77/102

L'eccezione SWI

N.B. : il modo SUPERVISOR utilizzato anche al reset del processore

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

78/102
0

SWI instr. #1 SWI instr. #3 instr. #4 instr. #5 instr. #6

31

28 27

24 23

cond

1111

24-bit (interpreted) immediate


User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC) CPSR

execute PC - 8 decode PC - 4 PC fetch

Supervisor
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_svc r14_svc (LR) r15 (PC) CPSR SPSR_svc

0x08

L'eccezione SWI viene attivata, con apposita istruzione, dopo la conclusione della fase di decode; il registro r14_svc (LR) viene caricato con il PC corrente, che punta all'istruzione successiva a SWI. In seguito il CPSR viene salvato in SPSR_svc. Poi il processore imposta i bit di modalit di CPSR come Supervisor (10011), disabilita gli Interrupt ed imposta il PC a 0x08, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poich il processore deve ritornare all'istruzione successiva a SWI, ricarica il valore di LR in PC. Infine ricarica il valore di SPSR_svc in CPSR, per tornare alla modalit precedente all'eccezione.
S2DEL Solid State and Diamond Electronics Lab.

(4)

(1) (2)

(3)
7 6 5 4 0

1 F T

10011

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

79/102

L'eccezione Undefined

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

80/102

Undefined instruction instr. #1 undefined instr. #3 instr. #4 instr. #5 instr. #6 execute PC - 8 decode PC - 4 PC fetch
User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

Undefined
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_und r14_und (LR) r15 (PC)

0x04

(4)
L'eccezione Undefined viene attivata quando il processore non riconosce un'istruzione (anche di coprocessore), dopo la conclusione della fase di decode; il registro r14_und (LR) viene caricato con il PC corrente, che punta all'istruzione successiva. In seguito il CPSR viene salvato in SPSR_und. Poi il processore imposta i bit di modalit di CPSR come Undefined (11011), disabilita gli Interrupt ed imposta il PC a 0x04, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poich il processore deve ritornare all'istruzione successiva a quella Undefined, ricarica il valore di LR in PC. Infine ricarica il valore di SPSR_und in CPSR, per tornare alla modalit precedente all'eccezione.
S2DEL Solid State and Diamond Electronics Lab.

(1) (2)

CPSR

(3)
7 6 5 4 0

CPSR SPSR_und

1 F T

11011

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

81/102

L'eccezione IRQ

N.B. : pi periferiche possono essere collegate a IRQ e messe in priorit mediante il VIC 190

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

82/102

IRQ instr. #1 instr. #2 instr. #3 instr. #4 instr. #5 instr. #6 execute PC - 8 decode PC - 4 PC fetch
User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

IRQ
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_irq r14_irq (LR) r15 (PC)

0x18 (con VIC PL190 0xff0)

(4)
L'eccezione IRQ viene attivata dopo la fase di execute, su richiesta di una periferica esterna; il registro r14_irq (LR) viene caricato con il PC corrente, che punta all'istruzione dopo la successiva. In seguito il CPSR viene salvato in SPSR_irq. Poi il processore imposta i bit di modalit di CPSR come IRQ (10010), disabilita gli Interrupt ed imposta il PC a 0x18, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poich il processore deve ritornare all'istruzione successiva, ricarica il valore di LR - 4 in PC. Infine ricarica il valore di SPSR_irq in CPSR, per tornare alla modalit precedente all'eccezione. In alternativa al vettore 0x18 si pu caricare l'indirizzo 0xff0, se presente il VIC PL190.
S2DEL Solid State and Diamond Electronics Lab.

(1) (2)

CPSR

(3)
7 6 5 4 0

CPSR SPSR_irq

1 F T

10010

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

83/102

L'eccezione FIQ

N.B. : pur essendo possibile collegare pi periferiche a FIQ preferibile collegarne una sola

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

84/102

FIQ instr. #1 instr. #2 instr. #3 instr. #4 instr. #5 instr. #6 execute PC - 8 decode PC - 4 PC fetch
User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

FIQ
r0 r1 r2 r3 r4 r5 r6 r7 r8_fiq r9_fiq r10_fiq r11_fiq r12_fiq r13_fiq r14_fiq (LR) r15 (PC)

0x1C

(4)
L'eccezione FIQ viene attivata dopo la fase di execute, su richiesta di una periferica esterna; il registro r14_fiq (LR) viene caricato con il PC corrente, che punta all'istruzione dopo la successiva. In seguito il CPSR viene salvato in SPSR_fiq. Poi il processore imposta i bit di modalit di CPSR come FIQ (10001), disabilita gli Interrupt, i Fast Interrupt ed imposta il PC a 0x1C, vettore di gestione dell'eccezione. In questo caso la routine di gestione potrebbe cominciare direttamente a questo indirizzo. Al termine della routine di gestione dell'eccezione, poich il processore deve ritornare all'istruzione successiva, ricarica il valore di LR - 4 in PC. Infine ricarica il valore di SPSR_fiq in CPSR, per tornare alla modalit precedente all'eccezione.

(1) (2)

CPSR

(3)
7 6 5 4 0

CPSR SPSR_fiq

1 1 T

10001

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

85/102

L'eccezione Abort

N.B. : gestisce sia Data Abort che Prefetch Abort

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

86/102

Data abort abort instr. #2 instr. #3 instr. #4 instr. #5 instr. #6 execute PC - 8 decode PC - 4 PC fetch
User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

Abort
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_abt r14_abt (LR) r15 (PC)

0x10

(4)
L'eccezione Data Abort viene attivata dopo la fase di execute, a seguito di un errore nell'accesso a un dato in memoria; il registro r14_abt (LR) viene caricato con il PC corrente, che punta all'istruzione dopo la successiva. In seguito il CPSR viene salvato in SPSR_abt. Poi il processore imposta i bit di modalit di CPSR come Abort (10111), disabilita gli Interrupt ed imposta il PC a 0x10, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poich il processore deve ripetere l'istruzione abortita, ricarica il valore di LR - 8 in PC. Infine ricarica il valore di SPSR_abt in CPSR, per tornare alla modalit precedente all'eccezione.

(1) (2)

CPSR

(3)
7 6 5 4 0

CPSR SPSR_abt

1 0 T

10111

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

87/102

Prefetch abort instr. #1 instr. #2 instr. #3 instr. #4 instr. #5 instr. #6 execute PC - 8 decode PC - 4 PC fetch
User | System
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 (LR) r15 (PC)

Abort
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13_abt r14_abt (LR) r15 (PC)

0x0C

(4)
L'eccezione Prefetch Abort viene attivata dopo la fase di decode, a seguito di un errore durante il caricamento di un'istruzione; il registro r14_abt (LR) viene caricato con il PC corrente, che punta all'istruzione successiva. In seguito il CPSR viene salvato in SPSR_abt. Poi il processore imposta i bit di modalit di CPSR come Abort (10111), disabilita gli Interrupt ed imposta il PC a 0x0C, vettore di gestione dell'eccezione. Al termine della routine di gestione dell'eccezione, poich il processore deve ripetere l'istruzione abortita, ricarica il valore di LR - 4 in PC. Infine ricarica il valore di SPSR_abt in CPSR, per tornare alla modalit precedente all'eccezione.

(1) (2)

CPSR

(3)
7 6 5 4 0

CPSR SPSR_abt

1 0 T

10111

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

88/102

Vettori di eccezioni e livelli di priorit

Copyright 2001 ARM Limited


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

89/102

5.25 Declaring Attributes of Functions In GNU C, you declare certain things about functions called in your program which help the compiler optimize function calls and check your code more carefully. The keyword __attribute__ allows you to specify special attributes when making a declaration. This keyword is followed by an attribute specication inside double parentheses. interrupt Use this attribute on the ARM, AVR, C4x, CRX, M32C, M32R/D, MS1, and Xstormy16 ports to indicate that the specied function is an interrupt handler. The compiler will generate function entry and exit sequences suitable for use in an interrupt handler when this attribute is present. Note, for the ARM, you can specify the kind of interrupt to be handled by adding an optional parameter to the interrupt attribute like this: void f () __attribute__ ((interrupt ("IRQ"))); Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF Tratto da Using the GNU Compiler Collection for gcc version 4.2.2 di Richard M. Stallman and the GCC Developer Community
Copyright 2005 ARM Limited
S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

90/102

Eccezione sollevata da una periferica di tipo FIQ FIQ


(...) a++; c = a / 2; (...)

0X00000000 0X00000004 0X00000008 0X0000000C 0X00000010 0X00000014 NOP 0X00000018 0X0000001C 0xFF0]

LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, Pabort_Addr LDR PC, Dabort_Addr LDR PC, [PC,#LDR PC, FIQ_Addr

void handlerFIQ(void) { (...) }

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

91/102

Eccezione sollevata da una periferica di tipo IRQ non vettorizzata IRQ


(...) a++; c = a / 2; (...)

VIC PL 190
VICDefVectAddr

0X00000000 0X00000004 0X00000008 0X0000000C 0X00000010 0X00000014 NOP 0X00000018 0X0000001C

LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, Pabort_Addr LDR PC, Dabort_Addr LDR PC, [PC,#-0xFF0] LDR PC, FIQ_Addr

VICVectAddr

void handlerIRQ(void) { (...) }

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

92/102

Eccezione sollevata da una periferica di tipo IRQ vettorizzata IRQ#3


(...) a++; c = a / 2; (...)

VIC PL 190
VICVectAddr0 VICVectAddr1 VICVectAddr2 VICVectAddr3 VICVectAddr4 VICVectAddr5 VICVectAddr6 VICVectAddr7 VICVectAddr8 VICVectAddr9 VICVectAddr10 VICVectAddr11 VICVectAddr12 VICVectAddr13 VICVectAddr14 VICVectAddr14

0X00000000 0X00000004 0X00000008 0X0000000C 0X00000010 0X00000014 NOP 0X00000018 0X0000001C

LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, Pabort_Addr LDR PC, Dabort_Addr LDR PC, [PC,#-0xFF0] LDR PC, FIQ_Addr

VICVectAddr

void handlerIRQ#3(void) { (...) }

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

93/102

Eccezione sollevata da una periferica di tipo IRQ senza l'uso del VIC PL190 IRQ
(...) a++; c = a / 2; (...)

0X00000000 0X00000004 0X00000008 0X0000000C 0X00000010 0X00000014 NOP 0X00000018 0X0000001C

LDR PC, Reset_Addr LDR PC, Undef_Addr LDR PC, SWI_Addr LDR PC, Pabort_Addr LDR PC, Dabort_Addr LDR PC, IRQ_Addr LDR PC, FIQ_Addr

void handlerIRQ(void) { (...) }

S2DEL Solid State and Diamond Electronics Lab.

ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

94/102

L ittle - a n d b ig -e n d ia n m e m o ry o rg a n iz a tio n s
b it 3 1
23 19 15 22 18 14 10 6 2 21 17 13 9 5 1

b it 0
20 16 12 8 4 0 20 16 12 8

b it 3 1
21 17 13 9 5 1 22 18 14 10 6 2

b it 0
23 19 15

w o rd 1 6

w o rd 1 6

h a lf - w o r d 1 4 h a lf - w o r d 1 2
11 7 3

h a lf - w o r d 1 2 h a lf - w o r d 1 4 w o rd 8
11 7 3

w o rd 8

b y t e 6 h a lf - w o r d 4

b yte a d d re s s

4 0

b y t e 5 h a lf - w o r d 6

b yte a d d re s s

b yte 3 b yte 2 b yte 1 b yte 0 ( a ) L it t le - e n d ia n m e m o r y o r g a n iz a t io n

b yte 0 b yte 1 b yte 2 b yte 3 ( b ) B ig - e n d ia n m e m o r y o r g a n iz a t io n

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

95/102

T h e s ta n d a rd A R M C p ro g ra m a d d re s s s p a c e m o d e l
to p o f m e m o ry s ta c k s t a c k p o in t e r ( s p ) s t a c k li m it ( s l) s t a c k lo w - w a t e r m a r k u nu sed

to p o f h e a p h ea p t o p o f a p p l ic a t io n s t a ti c d a t a a p p l i c a ti o n s i m a g e cod e a p p l i c a ti o n l o a d a d d r e s s

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

96/102

main() { .. /* t1 */ func1(); .. /* t5 */ func2(); .. /* t7 */ } /* end of main */ func1() { .. /* t2 */ func2(); .. /* t4 */ } /* end of func1 */ func2() { .. }

Comportamento dello stack

time t1 t5 t7

t2

t4 t6

stack size

t3

/* t3, t6 */
2000 Addison Wesley
ROMA

/* end of func2 */

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

97/102

A typical AMBA-based system


ARM core/CPU on-chip RAM test i/f ctrl

external bus interface AHB or ASB bridge UART

DMA controller

timer APB
2000 Addison Wesley

parallel i/f

AMBA: Advanced Microcontroller Bus Architecture ASB: Advanced System Bus AHB: Advanced Highperformance Bus APB: Advanced Peripheral Bus
ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

98/102

Tipico sistema di debug

Copyright 2001 ARM Limited


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

99/102

Organizzazione JTAG boundary scan


in enable I/O core logic enable device ID reg bypass reg TMS TCK TRST TAP controller instruction reg TDO out

in

TDI

2000 Addison Wesley


ROMA

S2DEL Solid State and Diamond Electronics Lab.

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

100/102

Organizzazione ARM7TDMI
scan chain 2 extern0 extern1 opc, r/w, mreq, trans, mas[1:0] A[31:0] D[31:0] Din[31:0] Dout[31:0]

Embedded ICE

scan chain 0

proc essor c ore


scan chain 1

other signals

bus splitter

JTAG TAP controller


TCK TMSTRST TDI TDO

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

101/102

Caratteristiche ARM7TDMI
Process Metal layers Vdd 0.35 um 3 3.3 V Transistors Core area Clock 74,209 2 2.1 mm 0 to 66 MHz MIPS Power MIPS/W 60 87 mW 690

Caratteristiche ARM9TDMI
Process Metal layers Vdd 0.25 um 3 2.5 V Transistors Core area Clock 110,000 2 2.1 mm 0 to 200 MHz MIPS Power MIPS/W 220 150 mW 1500

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Architettura ARM

Microprocessori e Microcontrollori
Corso di progettazione su SoC ARM

102/102

ARM7TDMI:

ARM7TDMI and ARM9TDMI pipeline comparisons


Fetch Decode
instruction fetch Thumb decompress ARM decode reg read

Execute
shift/ALU reg write

ARM9TDMI:
instr uction fetch r. read decode shift/ALU data memor y access reg write

Fetch

Decode

Execute

Memory

Write

2000 Addison Wesley


S2DEL Solid State and Diamond Electronics Lab. ROMA

TRE

Universit degli Studi

Potrebbero piacerti anche