SlideShare a Scribd company logo
1 of 23
Download to read offline
7. FAMILIA DE PROCESOARE “ARM”
7.1. ARM – caracteristici generale

Primul procesor ARM a fost dezvoltat de Acorn Computers Limited, Cambridge, England, 1983 – 1985:
Acorn RISC Machine.
A devenit ulterior acronimul de la Advanced RISC Machine.

Versiunile arhitecturilor ARM:

V1
V2
V2a
V3
V4T
V4
V4T
V5TE
V6

ARM1
ARM2
ARM2aS
ARM6
ARM7TDMI
StrongARM
ARM9TDMI
ARM9E-S
ARM1136J-S

ARM3
ARM600
ARM710T
ARM8
ARM920T
ARM10TDMI
ARM1136JF-S

ARM610
ARM7
ARM700 ARM710
ARM720T ARM740T
ARM810
ARM940T
ARM1020E Intel XScale

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

1
Compara ie cu predecesoarele RISC Berkeley RISC I i II i Stanford MIPS:
ş

ş

Asem n ri:
Acces în memorie cu instruc iuni LOAD – STORE
•
Instruc iuni cu format fix pe 32 de bi i
•
Prelucrarea datelor f r acumulator dedicat
•
Pu ine moduri de adresare
•
ă ă

ă ă

Deosebiri :
Setul de lucru de registre nu este de 32 de registre i nu exist ferestre de registre
•
Instruc iunile nu dureaz toate o singur stare
•
Nu se folose te tehnica întârzierii salturilor pentru a preveni blocarea Unit ii de control
•
ă

ş

ă

ă

ă

ş

De fapt, ARM este o combina ie CISC – RISC. Setul de instruc iuni are caracteristici CISC
mai mult decât RISC

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

2
7.2. ARM – modurile de lucru
usr

Utilizator

Modul normal de execu ie a programelor

Moduri privilegiate:
sys

Ruleaz procese ale sistemului de operare
ă

Sistem

Moduri care trateaz excep ii:
ă

R spuns rapid la întreruperi

fiq

transfer rapid de date

R spuns normal la întreruperi

irq

r spuns normal la cereri de întreruperi

Supervizor

svc

mod protejat pentru sistemul de operare

Abort

abt

implementeaz mecanismul de protec ie în
memoria virtual

Nedefinit

und

emulare soft a coprocesoarelor hardware

ă

ă

ă
ă

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

3
7.3. ARM – Setul de registre
Cele mai multe registre sunt nededicate (multifunc ionale).

Sunt registre pe 32 de bi i .

Un procesor ARM are în total 37 de registre fizice distincte:
- 31 de „registre generale” incluzând num r torul de program;
ă ă

- 6 registre de stare.

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

4
Modurile de lucru
Moduri privilegiate
Moduri care trateaz excep ii
ă

Utilizator

Sistem

Supervizor

Abort

Nedefinit

Întreruperi

Într. rapide

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
PC

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13
R14
PC

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13_svc
R14_svc
PC

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13_abt
R14_abt
PC

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13_und
R14_und
PC

R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13_irq
R14_irq
PC

R0
R1
R2
R3
R4
R5
R6
R7
R8_fiq
R9_fiq
R10_fiq
R11_fiq
R12_fiq
R13_fiq
R14_fiq
PC

CPSR

CPSR

CPSR
SPSR_irq

CPSR
SPSR_fiq

CPSR
CPSR
CPSR
SPSR_svc SPSR_abt SPSR_und
Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

5
R0 – R7

sunt registre fizice.

(8)

R8 – R14 sunt registre logice – în sensul ca pot fi translatate în registre fizice diferite, astfel:
R8 – R12 pot fi translatate în câte 2 registre fizice;
R13 i R14 pot fi translatate în câte 6 registre fizice.

(10)
(12)

ş

R15

este registru fizic.

(1)
----(31)

CPSR

este registru fizic.

(1)

SPSR

este registru logic ce poate fi translatat în 5 registre fizice.

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

(5)
----(6)

6
R13:

indicator de stiv nededicat: SP

R14:

„registru de leg tur ”: LR ;
con ine adresa de reîntoarcere din subprograme

ă

ă

ă

MOV
sau
BX

PC, LR
LR

R15 este num r torul de program PC:
• poate fi registru general de date
• când e citit d adresa instruc iunii curente plus 8B
• ultimii 2 bi i sunt zero
• când se scrie în acest registru rezultatul e un salt la adresa înscris în R15;
ultimii 2 bi i trebuie s fie zero
ă ă

ă

ă

ă

CPSR este „registrul de stare al programului curent”. În modurile care trateaz excep ii,
acest registru este trecut în SPSR – “registrul de stare al programului salvat”.
ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

7
31

30

29

28

27

7

6

5

4

3

2

1

0

N

Z

C

V

Q

I

F

T

M4

M3

M2

M1

M0

N – negativ
Z – zero
C – transport
V – dep ire
şă

Q – dep ire pentru instruc iuni DSP
şă

I – validarea întreruperilor normale
F – validarea întreruperilor rapide
T – indic trecerea la setul de instruc iuni „Thumb”
ă

M4 – M0 – indic modurile de lucru
ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

8
Setul de lucru con ine (indiferent de modul de lucru):
- 15 registre generale: R0 – R14;
- 1 num r tor de program: R15 ≡ PC;
ă ă

- 1 sau 2 registre de stare: CPSR i SPSR_mod.
ş

unde mod semnific unul dintre
modurile care trateaz excep ii.
ă

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

9
7.4. ARM – Memoria i porturile
ş

Adresare liniar :

AF ≡ adr32

ă

Memoria are 4 GB, sau 2Gw sau 1Gdw; informa iile sunt aliniate

← AF curent + 8 + offset
toare ← AF instr. curent + 4
ă

ă

ă

Adresele instruc iunilor:
• Salturi:
AFsalt
AF instr. urm
• Secven ial:

Se folosesc atât „micul indian” cât i „marele indian”. Nu exist instruc iuni specifice pentru
trecerea de la o conven ie la alta. Exist un terminal de intrare pentru a configura conven ia
care se potrive te cu memoria folosit
ă

ş

ă

ă

ş

Porturile sunt organizate ca loca ii de memorie („memory – mapped I/O”)

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

10
Moduri de adresare
Adresa pentru accesul în memorie (LOAD / STORE) are 2 p r i:
ă

• registru baz : oricare registru general R0 – R15
în cazul R15 (PC) avem, de fapt, o adresare relativ
ă

ă

• offset (AE):
• imediat: o constant (întreg f r semn) care se adun sau se scade la registrul baz
• registru: un registru general R0 – R14 care se adun sau scade la registrul baz
• registru deplasat: un registru general R0 – R14 care este deplasat cu un num r de celule
indicat printr-o valoare imediat , iar rezultatul se adun sau scade la registrul baz
ă

ă

ă

ă ă

ă

ă

ă

ă

ă

ă

Indiferent de tipul de offset, exist trei moduri de a combina cele 2 entit i:
ă

ă

• offset: cele 2 entit i se adun sau se scad:
AF ← (r) ± AE
ă

ă

• pre-indexare: cele 2 entit i se adun sau se scad; apoi registru baz este actualizat cu
noua adres , ceea ce permite indexarea automat într-un ir:
AF ← (r) ± AE
(r) ← (r) ± AE
ă

ă

ş

ă

ă

ă

• post-indexare: se folose te doar registrul baz pentru adresare; apoi registru baz este
actualizat cu cele 2 entit i se adun sau se scad, ceea ce permite indexarea automat într-un ir:
AF ← (r)
(r) ← (r) ± AE
ă

ş

ă

ă

ş

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

11

ă
7.5. ARM – Setul de instruc iuni
7.5.1. Condi ionarea execu iei instruc iunilor
Aproape toate instruc iunile ARM sunt, de fapt, decizii simple: sunt testate fanioanele N, Z, C, V
din CPSR i dac este îndeplinit condi ia, instruc iunile se desf oar normal
ă

şă

ă

ă

ş

Instruc iunile con in în format un câmp de 4 bi i [31:28] care codific condi ia testat
ă

Mnemonic

Semnifica ie

Fanion testat

EQ
NE
CS/HS
CC/LO
MI
PL
VS
VC
HI
LS
GE
LT
GT
LE
AL
NV

Egal
Non-egal
Mai mare sau egal, numere f r semn
Mai mic, numere f r semn
Negativ (minus)
Pozitiv sau zero (plus)
Dep ire
Non-dep ire
Mai mare, numere f r semn
Mai mic sau egal, numere f r semn
Mai mare sau egal, numere cu semn
Mai mic, numere cu semn
Mai mare, numere cu semn
Mai mic sau egal, numere cu semn
Necondi ionat
Rezervat pentru instr. suplimentare

ă

(Z) ← 1
(Z) ← 0
(C) ← 1
(C) ← 0
(N) ← 1
(N) ← 0
(V) ← 1
(V) ← 0
(C) ← 1 & (Z) ← 0
(C) ← 0 ∀ (Z) ← 1
(N) ← 1 & (V) ← 1
(N) ← 1 & (V) ← 0
(N) ← 0 & (V) ← 0
(N) ← 0 & (V) ← 1
-

ă ă

ă ă

şă

şă

ă ă

ă ă

Format
[31:28]
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

12
7.5.2. Salturi

Salturi propriu-zise în ecartul a 32 MB
Pot fi realizate i prin înscrierea unei valori în R15 ≡ PC
ş

Apelul de subprograme cu instruc iuni similare („Branch with Link”) tot în ecartul a 32 MB
Adresa de revenire va fi în R14 ≡ LR

„Branch and Exchange”:
(PC) ← (r)
if (PC)0 ≡ 1 se trece în setul de instruc iuni Thumb

Înc rcarea a 4 octe i direct în R15 ≡ PC echivaleaz cu un salt lung în toat memoria de 4 GB
Dac în prealabil (LR) ← (PC) se genereaz un apel de subprogram în toat memoria de 4 GB
ă

ă

ă

ă

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

13

ă
Salturi condi ionate:
necondi ionat
Întotdeauna
Egal
Non-egal
Plus
Minus
Salt dac transport e 0
Mai mic (f r semn)
Salt dac transport e 1
Mai mare sau egal (f r semn)
Salt dac dep ire e 0
Salt dac dep ire e 1
Mai mare (cu semn)
Mai mare sau egal (cu semn)
Mai mic (cu semn)
Mai mic sau egal (cu semn)
Mai mare (f r semn)
Mai mic (f r semn)
ă

ă ă

ă

ă ă

ă

şă

ă

şă

ă ă

ă ă

B
BAL
BEQ
BNE
BPL
BMI
BCC
BLO
BCS
BHS
BVC
BVS
BGT
BGE
BLT
BLE
BHI
BLS

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

14
Exemple:
B

eticheta

; salt la eticheta

BCC eticheta

; salt condi ionat de (C) ← 0

BEQ eticheta

; salt condi ionat de (Z) ← 1

MOV PC,#0

; (R15) ← 0

BL

; apel de procedur

ă

proc

MOV PC,LR

; (R15) ← (R14)

;return

MOV LR,PC

; (R14) ← (R15)

;gata pentru return

LDR PC,=proc

; (R15) ← adr(proc)

;încarc o adres pe 32 bi i în
;num r torul de program
ă

ă

ă ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

15
7.5.3. Prelucr ri de date
ă

To i operanzii sunt pe 32 bi i
Rezultatul este pe 32 bi i i va fi un registru
ş

Nu exist acumulator; registrele pentru operanzi i rezultat sunt separate
ş

ă

AND
EOR
SUB
RSB
ADD
ADC
SBC
RSC
TST
TEQ
CMP
CMN
ORR
MOV
BIC
MVN

(d) ← (s) & operand
(d) ← (s) ⊕ operand
(d) ← (s) - operand
(d) ← operand - (s)
(d) ← (s) + operand
(d) ← (s) + operand + (C)
(d) ← (s) – operand – NOT(C)
(d) ← operand - (s) – NOT(C)
(s) & operand
(s) ⊕ operand
(s) - operand
(s) + operand
(d) ← (s) ∀ operand
(d) ← (s)
(d) ← (s) & NOToperand
(d) ← NOT(s)

în care:
• (d) i (s) sunt registre generale
• operand este o valoare imediat sau un registru general care poate fi i deplasat
ş

ş

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

16
Deplas ri:
ă

LSL

deplasare logic stânga

LSR

deplasare logic dreapta

ASL

deplasare aritmetic stânga

ASR

deplasare aritmetic dreapta

ROR

rota ie dreapta

RRX

rota ie dreapta o pozi ie folosind C

ă
ă

ă
ă

Setarea fanioanelor se face op ional (cu excep ia compara iilor) se face indicând în asamblor
un „S” la mnemonic ; de exemplu ADDS
ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

17
7.5.4. Înmul iri

Dou clase de înmul iri:
• 32 ← 32 * 32
• 64 ← 32 * 32
ă

operanzii sunt în 2 registre generale, rezultatul este trunchiat la 32 bi i i stocat în alt registru
operanzii sunt în 2 registre generale, se adun con inutul uni al treilea registru, rezultatul este
trunchiat la 32 bi i i stocat în al patrulea registru „înmul ire cu acumulare”)
ş

ă

Înmul ire „normal ”:
• MUL
• MLA
ă

ş

ă ă

ă

ş

ă

ş

ş

ă ă

• UMLAL

ş

• SMLAL

ş

ă

• UMULL

operanzii sunt în 2 registre generale i rezultatul, pe 64 bi i este stocat
în alte 2 registre concatenate; numerele sunt întregi cu semn
operanzii sunt în 2 registre generale i rezultatul, pe 64 bi i este stocat
în alte 2 registre concatenate; numerele sunt întregi f r semn
operanzii sunt în 2 registre generale, la rezultat se adun con inutul
a 2 registre concatenate i rezultatul este stocat în aceste al treilea i al patrulea registru;
numerele sunt întregi cu semn
operanzii sunt în 2 registre generale, la rezultat se adun con inutul
a 2 registre concatenate i rezultatul este stocat în aceste al treilea i al patrulea registru;
numerele sunt întregi f r semn
ş

Înmul ire „lung ”:
• SMULL

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

18
Exemple:
MUL

R4, R2, R1

; (R4) ← (R2)*(R1)

MLA

R7, R8, R9, R3

; (R7) ← (R8)*(R9) + (R3)

SMULL R4, R8, R2, R3

; (R4)↑(R8) ← (R2)*(R3)
↑

UMULL R6, R8, R0, R1

; (R6)↑(R8) ← (R0)*(R1)
↑

UMLAL R5, R8, R0, R1

; (R5)↑(R8) ← (R0)*(R1) + (R5)↑(R8)
↑
↑

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

19
7.5.5. Instruc iuni aritmetice speciale

CLZ

înscrie într-un registru num rul de cifre binare 0 ale unui operand din alt registru,
începând cu msb i pân la primul 1
ă

ă

ş

Determin câte deplas ri stânga sunt necesare pentru normalizarea unui operand
ă

ă

ă

Determin bitul cu prioritatea maxim într-o masc binar
ă

ă

ă

Exemple:
CLZ

R4, R2

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

20
7.5.6. Accesul în memorie

Tipuri de instruc iuni LOAD / STORE:
• 8 sau 32 bi i, întregi f r semn
• 16 bi i întregi f r semn, 16 sau 8 bi i, întregi cu semn
ă ă

ă ă

Se folosesc modurile de adresare amintite
LDR
LDRB
LDRH
LDRSB
LDRSH
STR
STRB
SRH

Încarc 32 bi i într-un registru general
Încarc 8 bi i într-un registru general
Încarc 16 bi i (întreg f r semn) într-un registru general
Încarc 8 bi i (întreg cu semn) într-un registru general
Încarc 16 bi i (întreg cu semn) într-un registru general
Memoreaz 32 bi i dintr-un registru de uz general
Memoreaz 8 bi i dintr-un registru de uz general
Memoreaz 16 bi i dintr-un registru de uz general

LDM
STRM

Încarc un subset sau toate registrele generale
Memoreaz un subset sau toate registrele generale

SWP
SWPB

Inter-schimb 32 bi i între registre i memorie
Inter-schimb 8 bi i între registre i memorie

ă
ă

ă ă

ă
ă
ă

ă
ă
ă

ă

ă

ş

ă

ş

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

21
Exemple:
LDR R1, [R0]

; (R1) ← ((R0))

LDR R8, [R3,#4]

; (R8) ← ((R3) + 4)

LDR R12, [R13,#-4]

; (R12) ← ((R13) - 4)

STR

; ((R1) +100H) ← (R2)

R2, [R1,#0x100]

LDRB R5,[R9]

; (R5) ← 000000 ↑((R9))

LDR R11, [R3,R5,LSL #2]

; (R11) ← ((R3) + (R5)*4)

LDR R1, [R0,#4]!

; (R1) ← ((R0) + 4)
; (R0) ← (R0) + 4

STRB R7, [R6,#-1]!

; ((R6) -1) ← (R7)
; (R6) ← (R6) – 1

LDR R3, [R9], #4

; (R3) ← ((R9))
; (R9) ← (R9)+4

STR R2, [R5],#8

; ((R5)) ← (R2)
; (R5) ← (R5) + 8

LDR R0, [PC,#40]

; (R0) ← ((PC) + 40 + 8)

LDR R0, [R1], R2

; (R0) ← ((R1))
; (R1) ← (R1) + (R2)

SWP R12, R10, [R9]

; (R12) ← ((R9))
; ((R9)) ← (R10)

SWP R1, R1, [R9]

; (R1) ↔ ((R9))
Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

22
7.5.7. Comunicarea cu coprocesorul

Suport pân la 16 coprocesoare logice
ă

ă

Fiecare coprocesor poate avea pân la 16 registre proprii de m rimi diverse
ă

ă

Coprocesoarele au arhitecturi RISC, cu instruc iuni care
• execut opera ii interne cu registrele
• acceseaz memoria cu LOAD i STORE
• schimb date cu registrele nucleului ARM
ă

ş

ă

ă

Coprocesoarele pot fi ad ugate pe cip sau pe plac .
Cel mai adesea se folosesc coprocesoare pentru gestionarea memoriei i accesul în memoriile cache.
ă

ă

ş

CDP p5, 2, c12, c10, c3, 4

;ini iaz opera ii cu date la coprocesorul 5
;primul byte de cod este 2 iar al doilea byte
;de cod este 4; c12 este registru destina ie
; i c10, c3 sunt registre surs

MRC p15, 5, R4, c0, c2, 3

;transfer date de la coprocesorul 15;
;primul byte de cod este 5 iar al doilea byte
; de cod este 3; R4 este registru destina ie,
; iar c0, c2 sunt registre surs

ă

ă

ş

ă

ă

Microcontrolere - Capitolul 7
Corneliu BURILEANU ©

23

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Mc cap 7

  • 1. 7. FAMILIA DE PROCESOARE “ARM” 7.1. ARM – caracteristici generale Primul procesor ARM a fost dezvoltat de Acorn Computers Limited, Cambridge, England, 1983 – 1985: Acorn RISC Machine. A devenit ulterior acronimul de la Advanced RISC Machine. Versiunile arhitecturilor ARM: V1 V2 V2a V3 V4T V4 V4T V5TE V6 ARM1 ARM2 ARM2aS ARM6 ARM7TDMI StrongARM ARM9TDMI ARM9E-S ARM1136J-S ARM3 ARM600 ARM710T ARM8 ARM920T ARM10TDMI ARM1136JF-S ARM610 ARM7 ARM700 ARM710 ARM720T ARM740T ARM810 ARM940T ARM1020E Intel XScale Microcontrolere - Capitolul 7 Corneliu BURILEANU © 1
  • 2. Compara ie cu predecesoarele RISC Berkeley RISC I i II i Stanford MIPS: ş ş Asem n ri: Acces în memorie cu instruc iuni LOAD – STORE • Instruc iuni cu format fix pe 32 de bi i • Prelucrarea datelor f r acumulator dedicat • Pu ine moduri de adresare • ă ă ă ă Deosebiri : Setul de lucru de registre nu este de 32 de registre i nu exist ferestre de registre • Instruc iunile nu dureaz toate o singur stare • Nu se folose te tehnica întârzierii salturilor pentru a preveni blocarea Unit ii de control • ă ş ă ă ă ş De fapt, ARM este o combina ie CISC – RISC. Setul de instruc iuni are caracteristici CISC mai mult decât RISC Microcontrolere - Capitolul 7 Corneliu BURILEANU © 2
  • 3. 7.2. ARM – modurile de lucru usr Utilizator Modul normal de execu ie a programelor Moduri privilegiate: sys Ruleaz procese ale sistemului de operare ă Sistem Moduri care trateaz excep ii: ă R spuns rapid la întreruperi fiq transfer rapid de date R spuns normal la întreruperi irq r spuns normal la cereri de întreruperi Supervizor svc mod protejat pentru sistemul de operare Abort abt implementeaz mecanismul de protec ie în memoria virtual Nedefinit und emulare soft a coprocesoarelor hardware ă ă ă ă ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 3
  • 4. 7.3. ARM – Setul de registre Cele mai multe registre sunt nededicate (multifunc ionale). Sunt registre pe 32 de bi i . Un procesor ARM are în total 37 de registre fizice distincte: - 31 de „registre generale” incluzând num r torul de program; ă ă - 6 registre de stare. Microcontrolere - Capitolul 7 Corneliu BURILEANU © 4
  • 5. Modurile de lucru Moduri privilegiate Moduri care trateaz excep ii ă Utilizator Sistem Supervizor Abort Nedefinit Întreruperi Într. rapide R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_svc R14_svc PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_abt R14_abt PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_und R14_und PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13_irq R14_irq PC R0 R1 R2 R3 R4 R5 R6 R7 R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R14_fiq PC CPSR CPSR CPSR SPSR_irq CPSR SPSR_fiq CPSR CPSR CPSR SPSR_svc SPSR_abt SPSR_und Microcontrolere - Capitolul 7 Corneliu BURILEANU © 5
  • 6. R0 – R7 sunt registre fizice. (8) R8 – R14 sunt registre logice – în sensul ca pot fi translatate în registre fizice diferite, astfel: R8 – R12 pot fi translatate în câte 2 registre fizice; R13 i R14 pot fi translatate în câte 6 registre fizice. (10) (12) ş R15 este registru fizic. (1) ----(31) CPSR este registru fizic. (1) SPSR este registru logic ce poate fi translatat în 5 registre fizice. Microcontrolere - Capitolul 7 Corneliu BURILEANU © (5) ----(6) 6
  • 7. R13: indicator de stiv nededicat: SP R14: „registru de leg tur ”: LR ; con ine adresa de reîntoarcere din subprograme ă ă ă MOV sau BX PC, LR LR R15 este num r torul de program PC: • poate fi registru general de date • când e citit d adresa instruc iunii curente plus 8B • ultimii 2 bi i sunt zero • când se scrie în acest registru rezultatul e un salt la adresa înscris în R15; ultimii 2 bi i trebuie s fie zero ă ă ă ă ă CPSR este „registrul de stare al programului curent”. În modurile care trateaz excep ii, acest registru este trecut în SPSR – “registrul de stare al programului salvat”. ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 7
  • 8. 31 30 29 28 27 7 6 5 4 3 2 1 0 N Z C V Q I F T M4 M3 M2 M1 M0 N – negativ Z – zero C – transport V – dep ire şă Q – dep ire pentru instruc iuni DSP şă I – validarea întreruperilor normale F – validarea întreruperilor rapide T – indic trecerea la setul de instruc iuni „Thumb” ă M4 – M0 – indic modurile de lucru ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 8
  • 9. Setul de lucru con ine (indiferent de modul de lucru): - 15 registre generale: R0 – R14; - 1 num r tor de program: R15 ≡ PC; ă ă - 1 sau 2 registre de stare: CPSR i SPSR_mod. ş unde mod semnific unul dintre modurile care trateaz excep ii. ă ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 9
  • 10. 7.4. ARM – Memoria i porturile ş Adresare liniar : AF ≡ adr32 ă Memoria are 4 GB, sau 2Gw sau 1Gdw; informa iile sunt aliniate ← AF curent + 8 + offset toare ← AF instr. curent + 4 ă ă ă Adresele instruc iunilor: • Salturi: AFsalt AF instr. urm • Secven ial: Se folosesc atât „micul indian” cât i „marele indian”. Nu exist instruc iuni specifice pentru trecerea de la o conven ie la alta. Exist un terminal de intrare pentru a configura conven ia care se potrive te cu memoria folosit ă ş ă ă ş Porturile sunt organizate ca loca ii de memorie („memory – mapped I/O”) Microcontrolere - Capitolul 7 Corneliu BURILEANU © 10
  • 11. Moduri de adresare Adresa pentru accesul în memorie (LOAD / STORE) are 2 p r i: ă • registru baz : oricare registru general R0 – R15 în cazul R15 (PC) avem, de fapt, o adresare relativ ă ă • offset (AE): • imediat: o constant (întreg f r semn) care se adun sau se scade la registrul baz • registru: un registru general R0 – R14 care se adun sau scade la registrul baz • registru deplasat: un registru general R0 – R14 care este deplasat cu un num r de celule indicat printr-o valoare imediat , iar rezultatul se adun sau scade la registrul baz ă ă ă ă ă ă ă ă ă ă ă Indiferent de tipul de offset, exist trei moduri de a combina cele 2 entit i: ă ă • offset: cele 2 entit i se adun sau se scad: AF ← (r) ± AE ă ă • pre-indexare: cele 2 entit i se adun sau se scad; apoi registru baz este actualizat cu noua adres , ceea ce permite indexarea automat într-un ir: AF ← (r) ± AE (r) ← (r) ± AE ă ă ş ă ă ă • post-indexare: se folose te doar registrul baz pentru adresare; apoi registru baz este actualizat cu cele 2 entit i se adun sau se scad, ceea ce permite indexarea automat într-un ir: AF ← (r) (r) ← (r) ± AE ă ş ă ă ş ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 11 ă
  • 12. 7.5. ARM – Setul de instruc iuni 7.5.1. Condi ionarea execu iei instruc iunilor Aproape toate instruc iunile ARM sunt, de fapt, decizii simple: sunt testate fanioanele N, Z, C, V din CPSR i dac este îndeplinit condi ia, instruc iunile se desf oar normal ă şă ă ă ş Instruc iunile con in în format un câmp de 4 bi i [31:28] care codific condi ia testat ă Mnemonic Semnifica ie Fanion testat EQ NE CS/HS CC/LO MI PL VS VC HI LS GE LT GT LE AL NV Egal Non-egal Mai mare sau egal, numere f r semn Mai mic, numere f r semn Negativ (minus) Pozitiv sau zero (plus) Dep ire Non-dep ire Mai mare, numere f r semn Mai mic sau egal, numere f r semn Mai mare sau egal, numere cu semn Mai mic, numere cu semn Mai mare, numere cu semn Mai mic sau egal, numere cu semn Necondi ionat Rezervat pentru instr. suplimentare ă (Z) ← 1 (Z) ← 0 (C) ← 1 (C) ← 0 (N) ← 1 (N) ← 0 (V) ← 1 (V) ← 0 (C) ← 1 & (Z) ← 0 (C) ← 0 ∀ (Z) ← 1 (N) ← 1 & (V) ← 1 (N) ← 1 & (V) ← 0 (N) ← 0 & (V) ← 0 (N) ← 0 & (V) ← 1 - ă ă ă ă şă şă ă ă ă ă Format [31:28] 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Microcontrolere - Capitolul 7 Corneliu BURILEANU © 12
  • 13. 7.5.2. Salturi Salturi propriu-zise în ecartul a 32 MB Pot fi realizate i prin înscrierea unei valori în R15 ≡ PC ş Apelul de subprograme cu instruc iuni similare („Branch with Link”) tot în ecartul a 32 MB Adresa de revenire va fi în R14 ≡ LR „Branch and Exchange”: (PC) ← (r) if (PC)0 ≡ 1 se trece în setul de instruc iuni Thumb Înc rcarea a 4 octe i direct în R15 ≡ PC echivaleaz cu un salt lung în toat memoria de 4 GB Dac în prealabil (LR) ← (PC) se genereaz un apel de subprogram în toat memoria de 4 GB ă ă ă ă ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 13 ă
  • 14. Salturi condi ionate: necondi ionat Întotdeauna Egal Non-egal Plus Minus Salt dac transport e 0 Mai mic (f r semn) Salt dac transport e 1 Mai mare sau egal (f r semn) Salt dac dep ire e 0 Salt dac dep ire e 1 Mai mare (cu semn) Mai mare sau egal (cu semn) Mai mic (cu semn) Mai mic sau egal (cu semn) Mai mare (f r semn) Mai mic (f r semn) ă ă ă ă ă ă ă şă ă şă ă ă ă ă B BAL BEQ BNE BPL BMI BCC BLO BCS BHS BVC BVS BGT BGE BLT BLE BHI BLS Microcontrolere - Capitolul 7 Corneliu BURILEANU © 14
  • 15. Exemple: B eticheta ; salt la eticheta BCC eticheta ; salt condi ionat de (C) ← 0 BEQ eticheta ; salt condi ionat de (Z) ← 1 MOV PC,#0 ; (R15) ← 0 BL ; apel de procedur ă proc MOV PC,LR ; (R15) ← (R14) ;return MOV LR,PC ; (R14) ← (R15) ;gata pentru return LDR PC,=proc ; (R15) ← adr(proc) ;încarc o adres pe 32 bi i în ;num r torul de program ă ă ă ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 15
  • 16. 7.5.3. Prelucr ri de date ă To i operanzii sunt pe 32 bi i Rezultatul este pe 32 bi i i va fi un registru ş Nu exist acumulator; registrele pentru operanzi i rezultat sunt separate ş ă AND EOR SUB RSB ADD ADC SBC RSC TST TEQ CMP CMN ORR MOV BIC MVN (d) ← (s) & operand (d) ← (s) ⊕ operand (d) ← (s) - operand (d) ← operand - (s) (d) ← (s) + operand (d) ← (s) + operand + (C) (d) ← (s) – operand – NOT(C) (d) ← operand - (s) – NOT(C) (s) & operand (s) ⊕ operand (s) - operand (s) + operand (d) ← (s) ∀ operand (d) ← (s) (d) ← (s) & NOToperand (d) ← NOT(s) în care: • (d) i (s) sunt registre generale • operand este o valoare imediat sau un registru general care poate fi i deplasat ş ş ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 16
  • 17. Deplas ri: ă LSL deplasare logic stânga LSR deplasare logic dreapta ASL deplasare aritmetic stânga ASR deplasare aritmetic dreapta ROR rota ie dreapta RRX rota ie dreapta o pozi ie folosind C ă ă ă ă Setarea fanioanelor se face op ional (cu excep ia compara iilor) se face indicând în asamblor un „S” la mnemonic ; de exemplu ADDS ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 17
  • 18. 7.5.4. Înmul iri Dou clase de înmul iri: • 32 ← 32 * 32 • 64 ← 32 * 32 ă operanzii sunt în 2 registre generale, rezultatul este trunchiat la 32 bi i i stocat în alt registru operanzii sunt în 2 registre generale, se adun con inutul uni al treilea registru, rezultatul este trunchiat la 32 bi i i stocat în al patrulea registru „înmul ire cu acumulare”) ş ă Înmul ire „normal ”: • MUL • MLA ă ş ă ă ă ş ă ş ş ă ă • UMLAL ş • SMLAL ş ă • UMULL operanzii sunt în 2 registre generale i rezultatul, pe 64 bi i este stocat în alte 2 registre concatenate; numerele sunt întregi cu semn operanzii sunt în 2 registre generale i rezultatul, pe 64 bi i este stocat în alte 2 registre concatenate; numerele sunt întregi f r semn operanzii sunt în 2 registre generale, la rezultat se adun con inutul a 2 registre concatenate i rezultatul este stocat în aceste al treilea i al patrulea registru; numerele sunt întregi cu semn operanzii sunt în 2 registre generale, la rezultat se adun con inutul a 2 registre concatenate i rezultatul este stocat în aceste al treilea i al patrulea registru; numerele sunt întregi f r semn ş Înmul ire „lung ”: • SMULL Microcontrolere - Capitolul 7 Corneliu BURILEANU © 18
  • 19. Exemple: MUL R4, R2, R1 ; (R4) ← (R2)*(R1) MLA R7, R8, R9, R3 ; (R7) ← (R8)*(R9) + (R3) SMULL R4, R8, R2, R3 ; (R4)↑(R8) ← (R2)*(R3) ↑ UMULL R6, R8, R0, R1 ; (R6)↑(R8) ← (R0)*(R1) ↑ UMLAL R5, R8, R0, R1 ; (R5)↑(R8) ← (R0)*(R1) + (R5)↑(R8) ↑ ↑ Microcontrolere - Capitolul 7 Corneliu BURILEANU © 19
  • 20. 7.5.5. Instruc iuni aritmetice speciale CLZ înscrie într-un registru num rul de cifre binare 0 ale unui operand din alt registru, începând cu msb i pân la primul 1 ă ă ş Determin câte deplas ri stânga sunt necesare pentru normalizarea unui operand ă ă ă Determin bitul cu prioritatea maxim într-o masc binar ă ă ă Exemple: CLZ R4, R2 Microcontrolere - Capitolul 7 Corneliu BURILEANU © 20
  • 21. 7.5.6. Accesul în memorie Tipuri de instruc iuni LOAD / STORE: • 8 sau 32 bi i, întregi f r semn • 16 bi i întregi f r semn, 16 sau 8 bi i, întregi cu semn ă ă ă ă Se folosesc modurile de adresare amintite LDR LDRB LDRH LDRSB LDRSH STR STRB SRH Încarc 32 bi i într-un registru general Încarc 8 bi i într-un registru general Încarc 16 bi i (întreg f r semn) într-un registru general Încarc 8 bi i (întreg cu semn) într-un registru general Încarc 16 bi i (întreg cu semn) într-un registru general Memoreaz 32 bi i dintr-un registru de uz general Memoreaz 8 bi i dintr-un registru de uz general Memoreaz 16 bi i dintr-un registru de uz general LDM STRM Încarc un subset sau toate registrele generale Memoreaz un subset sau toate registrele generale SWP SWPB Inter-schimb 32 bi i între registre i memorie Inter-schimb 8 bi i între registre i memorie ă ă ă ă ă ă ă ă ă ă ă ă ş ă ş ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 21
  • 22. Exemple: LDR R1, [R0] ; (R1) ← ((R0)) LDR R8, [R3,#4] ; (R8) ← ((R3) + 4) LDR R12, [R13,#-4] ; (R12) ← ((R13) - 4) STR ; ((R1) +100H) ← (R2) R2, [R1,#0x100] LDRB R5,[R9] ; (R5) ← 000000 ↑((R9)) LDR R11, [R3,R5,LSL #2] ; (R11) ← ((R3) + (R5)*4) LDR R1, [R0,#4]! ; (R1) ← ((R0) + 4) ; (R0) ← (R0) + 4 STRB R7, [R6,#-1]! ; ((R6) -1) ← (R7) ; (R6) ← (R6) – 1 LDR R3, [R9], #4 ; (R3) ← ((R9)) ; (R9) ← (R9)+4 STR R2, [R5],#8 ; ((R5)) ← (R2) ; (R5) ← (R5) + 8 LDR R0, [PC,#40] ; (R0) ← ((PC) + 40 + 8) LDR R0, [R1], R2 ; (R0) ← ((R1)) ; (R1) ← (R1) + (R2) SWP R12, R10, [R9] ; (R12) ← ((R9)) ; ((R9)) ← (R10) SWP R1, R1, [R9] ; (R1) ↔ ((R9)) Microcontrolere - Capitolul 7 Corneliu BURILEANU © 22
  • 23. 7.5.7. Comunicarea cu coprocesorul Suport pân la 16 coprocesoare logice ă ă Fiecare coprocesor poate avea pân la 16 registre proprii de m rimi diverse ă ă Coprocesoarele au arhitecturi RISC, cu instruc iuni care • execut opera ii interne cu registrele • acceseaz memoria cu LOAD i STORE • schimb date cu registrele nucleului ARM ă ş ă ă Coprocesoarele pot fi ad ugate pe cip sau pe plac . Cel mai adesea se folosesc coprocesoare pentru gestionarea memoriei i accesul în memoriile cache. ă ă ş CDP p5, 2, c12, c10, c3, 4 ;ini iaz opera ii cu date la coprocesorul 5 ;primul byte de cod este 2 iar al doilea byte ;de cod este 4; c12 este registru destina ie ; i c10, c3 sunt registre surs MRC p15, 5, R4, c0, c2, 3 ;transfer date de la coprocesorul 15; ;primul byte de cod este 5 iar al doilea byte ; de cod este 3; R4 este registru destina ie, ; iar c0, c2 sunt registre surs ă ă ş ă ă Microcontrolere - Capitolul 7 Corneliu BURILEANU © 23