Documente Academic
Documente Profesional
Documente Cultură
SC140 - INTRODUCERE
Procesorul de semnal StarCore 140, produs al firmei Freescale, prezint un nou tip de arhitectur, cu un plus de putere de calcul. SC140 poate fi implementat pe o gam larg de configuraii SoC (System On Chip). Pe un singur chip pot fi integrate, n funcie de necesiti, zone de memorie suplimentare, dar i o gam variat de porturi de I/O sau alte periferice.
SC140 - INTRODUCERE
Level-1 Memory Expansion Area Unified Data and Program Memory ROM, RAM Star*Core 140 DSP Core DSP Engine True 16-bit instruction set Variable Length Execution Set (VLESTM ) Model DMA CACHE Interrupt Ctrl. Level-2 Memory Expansion System Expansion Area
Peripheral and Accelerators Expansion Area Standard Input/Output Peripherals Application Specific Accelerators General Purpose Programmable Accelerator
SC140 CARACTERISTICI
frecvena de ceas a nucleului este
300 MHz la 1,5V i 120 MHz la 0,9V;
SC140 CARACTERISTICI
4 uniti aritmetico-logice (ALU) care includ circuite dedicate de nmulire i adunare i uniti de operare pe bit;
16 registre generale de date pe 40 bii pentru operaii cu numere ntregi i fracionare;
pn la 1200 Milioane operaii MAC pe secund (1.2 GMACS); pn la 3000 RISC MIPS (MAC se consider ca 2 instruciuni RISC);
SC140 CARACTERISTICI
2 uniti de adresare
Pot realiza operaii aritmetice cu numere ntregi Moduri de adresare specifice procesoarelor de semnal; 16 Registre de adres pe 32 bii, dintre care 8 pot fi folosite ca adrese de baz; 4 Registre de offset pentru adrese i 4 Registre pentru adresare circular;
SC140 CARACTERISTICI
suport hardware pentru tipurile de date ntreg i fracionar; memoria poate fi accesat n cuvinte cu dimensiune variabil (1 pn la 4 octei); memorie comun de program i de date
magistrale de program: PAB, PDB 2 magistrale de date: XABA, XDBA XABB, XDBB;
SC140 CARACTERISTICI
Set de instruciuni ortogonal
instruciuni codate pe 16 bii;
PDB
128
32
32
32
Secveniator de Program
OnCE
Controlul Puterii
circuit dedicat pentru controlul execuiei programului - PSEQ (Program SEQuencer Unit)
9
BMU
128
4 ALU
24
10
MEMORIE
16 16 16 16
AAU
XABA
64
64
[ mac d0,d4,d8
Registre date D15 D0 D1 D2 D3 D4 D5 D6 D7
XDBB
XDBA
mac d2,d6,d10
move.4f (r0)+,d0:d1:d2:d3
move.4f (r1)+,d4:d5:d6:d7 ] loopend0 [ add d8,d9,d0 add d10,d11,d1 ] add d0,d1,d0 move.f d0,($400)
D15
11
12
21 22 fracie
214 215
1 0
pe 32 bii:
-20 s.
31 30 29
21 22 fracie
230 231
1 0
domeniu de valori:
13
-1:2-31:1-2-31
14
21
1
20 .
0
ntreg
pe 32 bii:
-231 230 229 s
31 30 29
pe 32 bii:
21 ntreg
20 .
0
21
1
20 .
0
ARHITECTURA ALU
Magistrala de date 1 (XDBA) Magistrala de date 2 (XDBB)
64 64
REGISTRELE ALU
LIMIT L0 L1 L2 L3 L4 L5 64 64 L6 L7 L8 L9 L10 L11 L12 40 40 40 L13 L14 L15 39 D15.e 32 31 D15.h 16 15 D15.l 0 EXT D0.e D1.e HP D0.h D1.h LP D0.l D1.l
ALU
ALU
ALU
ALU
17
1bit
40 bii
18
232 231
32 31
216 215
16 15
20 .
0
-28 27 Dn.e
39 38
21 20 2-1 .
32 31 30
2-15 2-16
16 15 FRACIE
2-31
0
Dn.e
Dn.h
Dn.l
Dn.h
Dn.l
NTREG
domeniu de valori:
-239:1:239-1
domeniu de valori:
-256:2-31:256-2-31
19
20
MOVE.W (Rn),Dn
-239 s
232 231
20 ntreg
Dn.l
Dn.e
Dn.h
MOVE.F (Rn),Dn
-28 s
21 20 2-1
2-31 0
prin nmulire datele sunt shiftate cu un bit la stnga prin mprire datele sunt shiftate cu un bit la dreapta
s.
Dn.e
Dn.l
Reprezentarea n registrele de date (D0 D15) pe 40 de bii (cu extensie de semn i completare cu zerouri n LP)
23 24
LIMITAREA
fr limitare:
-28 1
Ln
LIMITAREA
MOVE.F Dn,(Rn)
2-15 2-16
cu limitare:
Rezultatul n registru
MOVES.F Dn,(Rn)
2-15 2-16
2-31
-28 1
Ln
2-31
Rezultatul n registru
0 0 0
= 1.0
0 0 0
= 1.0
Dn.e
Dn.l
Dn.e
Dn.l
2-15
Rezultatul n memorie
2-15
Rezultatul n memorie
0 = 1.0
1 = +0.99..9
|Eroare| = 0.00..1
valoarea scris n memorie ca fracie pe 16 bii are MSB =1 ceea ce corespunde numrului negativ -1.
se limiteaz rezultatul la valoarea maxim pozitiv (sau minim negativ) care poate fi reprezentat n memorie pentru o fracie pe 16 bii
25 26
LIMITAREA
este activat numai pentru instruciunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L; se desfoar n doi pai:
n primul pas este calculat bitul Ln atunci cnd registrul Dn este scris de ctre o operaie ce a avut loc n ALU n al doilea pas are loc limitarea datelor la transferul pe magistral, dac bitul Ln este setat.
LIMITAREA - EXEMPLU
Instruciune
move.w #$0020,r0 moveu.w #$7fff,d0.h moveu.w #$7fff,d1.h add d0,d1,d3 move.f d3,(r0)+ moves.f d3,(r0)
r0 d0 d1
Rezultat
$0000 0030 $7fff 0000 $7fff 0000
Observaii
adresa dest. valoarea max. pozitiv apare depire, bitul L3 e setat fr limitare cu limitare
$fffe $7fff
28
SCALAREA
Modul de scalare se seteaz prin intermediul biilor S0 i S1 din registrul de stare al procesorului SC140 (SR Status Registrer). Scalarea afecteaz numai datele transferate n memorie, nu i datele din registre. Scalarea afecteaz modul de calcul al bitului de limitare Ln i nu se poate folosi atunci cnd este utilizat aritmetica cu saturaie. este activat numai pentru instruciunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L;
29
SCALAREA
S1 0 0 1 S0 Modul de scalare 0 1 0 Fr scalare Scalare n jos (mprire cu 2) Scalare n sus (nmulire cu 2)
30
SCALAREA - EXEMPLU
Instruciune
move.w #$0030,r0 moveu.w #$0200,d0.h bmset #$10,sr.l moves.f d0,(r0)+ move.l #$00e40020,sr move.f d0,(r0)
Rezultat
r0 $0000 0030 d0 $0200 0000 sr $0000 0010 ($0030) $0100 sr $00e4 0020 ($0032) $0400
Observaii
Inscrie-te la Freescale Fixed-Point Contest! Intra pe www.freescale.ro, Freescale Fixed-Point Contest, si arata-ne ca esti cel mai bun! Castigatorii se premiaza.
setare mod de scalare n jos mprire cu 2 setare mod de scalare in sus nmulire cu 2
31
32
Operanzi surs:
registre sau valori imediate din corpul instruciunii.
ADD Da,Db,Dn
Operandul destinaie:
numai un registru de 40 bii d0 d15
add d0,d1,d2 D0 $00 72E3 8F2A D1 $00 7216 EE3C L2:D2 $1:$00 E4FA 7D66
34
SUB Da,Db,Dn
S X
. .
S S
nmulire cu semn
X nmulire cu semn
sub d1,d0,d2 D0 $00 0000 0005 D1 $00 0000 0008 L2:D2 $0:$FF FFFF FFFD
MSP
. .
2N Bii
LSP
. .
MSP
. .
2N Bii
LSP
35
36
37
ROTUNJIREA
Se face n cazul instruciunilor RND, ADR, SBR, MPYR, MACR. Valoarea fracionar de dubl precizie este rotunjit la precizie simpl (pe 16 bii) i scris n Dn.H. Exist dou tipuri de rotunjire:
Rotunjire convergent Rotunjire n complement fa de 2
39
SATURAREA ARITMETIC
Rezultatul scris n urma unei instruciuni ALU este limitat la 32 de bii (nu se permite reprezentarea cu depire n Dn.E). Modul de lucru cu saturare aritmetic este setat prin bitul SM din Status Register (SR).
Rezultat
SR $00e4 0004
Observaii
setare saturare
d0 $7fff 0000 val. max. pozitiv d1 $7fff 0000 val. max. pozitiv d3 $0:00:7fff ffff
41
42
UNITATEA LOGIC
Bit Field Unit (BFU)
contine un shifter paralel bidirectional (40 de bii) o unitate de mascare i o unitate logic.
Descriere Logical AND Multi-bit arithmetic shift left Word arithmetic shift left (16-bit shift) Multi-bit arithmetic shift right Word arithmetic shift right (16-bit shift) Count leading bits (ones or zeros) Bit-wise exclusive OR Extract signed bit-field Extract unsigned bit-field Insert bit-field Multi-bit logical shift left
44
Folosit pentru:
Deplasare multi-bit stnga/dreapta (aritmetic sau logic) Rotaie cu un bit (stnga sau dreapta) Inserare i extragere de cmp de bii Numrarea biilor cei mai semnificativi (de 1 sau 0) Operaii logice Operaii de extensie de semn sau de zero
Sign extend byte, long or word Zero extend byte, long or word
45
46
ARHITECTURA AGU
47
48
REGISTRELE AGU
Rn = registru de adrese R0-R15 Bn = registru de adrese de baza B0-B7 Ni = registru de offset N0-N3 Mj = registru de modificare M0-M3 registru de control al modificrii (MCTL) 2 pointeri de stiv (NSP, ESP) dintre care doar unul este activ la un moment dat (SP)
Nucleul SC140
64 XABB XDBB 64 32
Transferurile ntre memorie i nucleu se pot face pe dou magistrale de date de 64 bii. Memoria este adresabil la nivel de byte.
49
50
$20 MOVE.4W (R0),D0:D1:D2:D3 $28 $30 MOVE.L ($34),D0 $38 MOVE.2L (R0),D0:D1 64 bii ;R0=$38 ;R0=$20
53
54
MODURI DE ADRESARE
SC140 poate realiza 4 tipuri de moduri de adresare:
Adresare direct cu registru Adresare indirect Adresare relativ la PC Alte moduri speciale
55
56
ADRESARE DIRECT
cu registru de date sau de control cu registru de adrese mac d4,d5,d6
cu post-incrementare (Rn)+ addl1a r0,r1 cu post-decrementare (Rn)post-incrementare cu (Rn)+Ni offset indexare cu offset indexare cu registru de adres (Rn+Ni)
57
58
ADRESARE RELATIV LA PC
salt n program relativ la instruciunea curent bra _label2
59
60
R7 AM[3:0] 15 12
R6 AM[3:0] 11 8
R5 AM[3:0] 7
R4 AM[3:0] 0
4 3
R3 AM[3:0]
R2 AM[3:0]
R1 AM[3:0]
R0 AM[3:0]
Se pot seta moduri de calcul a adresei numai pentru primele 8 registre de adres R0-R7. Celelalte 8 registre R8-R15 pot fi folosite doar pentru modificare liniar.
61
1 1 1 1 1
MODELUL DE PROGRAMARE
31 0 31 0 31 0
PC
PROGRAM COUNTER
SR
STATUS REGISTER
EMR
EXCEPTION AND MODE REGISTER
0
31
31
63
64
SLF - Short Loop Flag LF[3:0] - Loop Flags I[2:0] - Interrupt Mask OVE - Overflow Exception Enable DI - Disable Interrupts EXP - Exception Mode bit VF[3:0] - Viterbi Flags S - Scaling Bit S1, S0 - Scaling Mode Bits RM - Rounding Mode AS -Arithmetic Saturation Mode T - True Bit C - Carry Bit *Rsvd - Reserved (derivative dependant)
65
GP - General Purpose Flags BEM - Big Endian Memory NMID - NMI Disable DOVF - DALU overflow ILST - Illegal Execution Set ILN - Illegal Instruction
66
EXECUTE
67
68
Adresa pe 32-bii
PAB
32
128
PDB
Nucleu SC140
La fiecare ciclu de ceas se citete din memorie un set de 8 instruciuni de 16 bii fetch set. Unitatea de control al execuiei programului - PSEQ (Program SEQuencer Unit) detecteaz cte instruciuni din cele 8 pot fi executate n paralel - set de execuie.
70
GRUPAREA INSTRUCIUNILOR
SC140 conine 4 ALU i 2 AGU ceea ce permite execuia a maxim 6 instruciuni pe ciclu de ceas
Exemplul 2:
[ mac d0,d4,d8 mac d1,d5,d9 mac d2,d6,d10 mac d3,d7,d11 move.4f (r0)+,d0:d1:d2:d3 move.4f (r1)+,d4:d5:d6:d7 ]
72
EXECUIA BUCLELOR
SA0 _start0 dosetup0 _start0 doen0 #$10 LOOP COUNTER REGISTERS move.w (r3)+,d1 LC0 $10 skipls _end0 loopstart0 STATUS REGISTER _start0 1 mac d0,d1,d2 move.w (r0)+,d0 SA SLF LF0 LF1 LF2 LF3 add d5,d6,d4 move.w (r1)+,d5 sub d3,d2,d4 inc d5 LPMARKB mac d0,d1,d6 move.w (r0)+,d7 sub d5,d4,d4 inc d7 LA loopend0 _end0
73
EXECUIA BUCLELOR
START ADDRESS REGISTERS
Bucla lung
SA LA
LPMARKB
SA, LA
move.w (r0)+,d0
LPMARKA
74
EXECUIA BUCLELOR
Buclele pot fi intercalate una intr-alta Intercalarea se face in ordine cresctoare astfel c o bucl poate fi inclus intr-o bucl cu numr mai mic:
loop0 loop2 loop3
STIVA
Normal mode stack:
NSP 1 Shadow NSP Shadow NSP Last stacked value - 8 bytes Exception mode stack: Valid bit
Increasing addresses
Increasing addresses
76
STIVA
PUSH De De (SP) SP + 8 SP SP De Increasing addresses
STIVA
POP De (SP - 8) De SP-8 SP Increasing addresses
SP
De
PUSH Do Do (SP+4) SP + 8 SP SP Do
Increasing addresses
SP
Do
Increasing addresses
77
78
STIVA
Exist instruciuni speciale pentru a accesa stiva normal, inclusiv n execuia excepiilor:
PUSHN De PUSHN Do
Se poate transfera (modifica) indicatorul stivei altul dect stiva activ (Other Stack Pointer):
TFRA R0,OSP dac SP curent este ESP, atunci OSP va fi NSP
79