capitolul 3. 3.1 prezentare generalĂ procesorul de … · 1 capitolul 3. procesorul de semnal...
TRANSCRIPT
1
CAPITOLUL 3.
PROCESORUL DE SEMNAL STARCORE 140
2
3.1 PREZENTARE GENERALĂ
3
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 configuraţii SoC (System On Chip).
Pe un singur chip pot fi integrate, în funcţie de necesităţi, zone de memorie suplimentare, dar şi o gamă variată de porturi de I/O sau alte periferice.
4
SC140 - INTRODUCERE
Level-1 Memory Expansion Area
Unified Data and Program MemoryROM, RAM
DSP Engine
True 16-bit instruction set
Star*Core 140 DSP Core
System
External Memory
DMA
CACHE
Peripheral and Accelerators Expansion AreaStandard Input/Output PeripheralsApplication Specific AcceleratorsGeneral Purpose Programmable Accelerator
4 Arithmetic
Expansion Area
Interface
Interrupt Ctrl.
Variable Length Execution Set (VLESTM) Model
Level-2 Memory Expansion
2 AddressArithmetic Units& Logic Units
Schema bloc a unei configuraţii tipice SoC (System On Chip)
5
SC140 – CARACTERISTICI
frecvenţa de ceas a nucleului este 300 MHz la 1,5V şi
120 MHz la 0,9V;
până la 1200 Milioane operaţii MAC pe secundă (1.2 GMACS);
până la 3000 RISC MIPS (MAC se consideră ca 2 instrucţiuni RISC);
6
SC140 – CARACTERISTICI
4 unităţi aritmetico-logice (ALU) care includ circuite dedicate de înmulţire şi adunare şi unităţi de operare pe bit;
16 registre generale de date pe 40 biţi pentru operaţii cu numere întregi şi fracţionare;
fiecare ALU conţine un circuit MAC (Multiply and ACcumulate) şi
un shifter (structură de deplasare) care pot lucra cu orice registru de date de 40 biţi;
7
SC140 – CARACTERISTICI
2 unităţi de adresarePot realiza operaţii aritmetice cu numere întregi
Moduri de adresare specifice procesoarelor de semnal;
16 Registre de adresă pe 32 biţi, dintre care 8 pot fi folosite ca adrese de bază;
4 Registre de offset pentru adrese şi
4 Registre pentru adresare circulară;
8
SC140 – CARACTERISTICI
suport hardware pentru tipurile de date întreg şi fracţionar;
memoria poate fi accesată în cuvinte cu dimensiune variabilă (1 până la 4 octeţi);
memorie comună de program şi de date magistrale de program: PAB, PDB
2 magistrale de date: XABA, XDBA XABB, XDBB;
9
SC140 – CARACTERISTICI
Set de instrucţiuni ortogonalinstrucţiuni codate pe 16 biţi;
Fiecare instrucţiune codifică o operaţie elementară;
Model de execuţie Variable Length ExecutionSet (VLES)
instrucţiunile sunt grupate astfel încât să se obţină o performanţă maximă în utilizarea procesorului
până la 6 instrucţiuni pot fi executate intr-un singur ciclu de ceas.
circuit dedicat pentru controlul execuţiei programului - PSEQ (Program SEQuencer Unit)
10
SC140 – SCHEMA BLOC A NUCLEULUI
Instruction Bus
32 128 PAB
PDB
XA
BA
XD
BB
XD
BA
XA
BB
Secvenţiator de Program
Setul de registre pentru Generarea Adreselor
Registre ALU pentru date
2 AAU BMU 4 ALU
OnCE
Controlul Puterii
Generatorul de ceas
PLL
32 32 64 64 128
128
Spaţiul unificat de memorie pentru date şi program
24
Accelerator pentru setul de
instrucţiuni
StarCore 140
11
Registreadresa
SC140 – SCHEMA BLOC A NUCLEULUImove.w #$100,r0move.w #$200,r1
move.4f (r0)+,d0:d1:d2:d3move.4f (r1)+,d4:d5:d6:d7loopstart0[ mac d0,d4,d8 mac d1,d5,d9mac d2,d6,d10 mac d3,d7,d11move.4f (r0)+,d0:d1:d2:d3move.4f (r1)+,d4:d5:d6:d7 ]
loopend0[ add d8,d9,d0 add d10,d11,d1 ]add d0,d1,d0move.f d0,($400)
MEMORIE
R0R0=$100R1=$200
…
AAU
RegistredateD15D0D1D2D3D4D5D6D7…
R7
D15
XABA
XABB
XD
BA
XD
BB
6464
16 16 16 16
ALU1
ALU1
ALU1
ALU1
$100
$200
12
3.2 UNITATEA ARITMETICĂ ŞI LOGICĂ PENTRU DATE
13
SC140 – FORMATUL DATELOR
Reprezentarea datelor se face în complement faţă de 2:
numere fracţionare cu semn
numere întregi
cu semn
fără semn
Precizia de reprezentare poate fisimplă: 1 word = 16 biţi
dublă: 2 words = 32 biţi
14
SC140 – FORMATUL DATELOR
numere fracţionare cu semn:pe 16 biţi:
domeniu de valori: -1:2-15:1-2-15
pe 32 biţi:
domeniu de valori: -1:2-31:1-2-31
01• • •131415
fracţies .
2–152–142–22–1-20
01• • •293031
fracţies .
2–312–302–22–1-20
15
SC140 – FORMATUL DATELOR
numere întregi cu semn:pe 16 biţi:
domeniu de valori: -215:1:215-1
pe 32 biţi:
domeniu de valori: -231:1:231-1
01• • •131415
întreg .s
2021213214-215
01• • •293031
întreg .s
2021229230-231
16
SC140 – FORMATUL DATELOR
numere întregi fără semn:pe 16 biţi:
domeniu de valori: 0:1:216-1
pe 32 biţi:
domeniu de valori: 0:1:232-1
01• • •131415
întreg .
2021213214215
01• • •293031
întreg .
2021229230231
17
ARHITECTURA ALU
Magistrala de date 1 (XDBA)
64
Magistrala de date 2 (XDBB)
64
scalare / limitare (8)
40 40 40 40 40 40 40 40
Set de Registre de date (16)
64 64
ALU
40 40 40
ALU
40 40 40
ALU
40 40 40
ALU
40 40 40
18
REGISTRELE ALU
15 031 1639 32D15D15.lD15.hD15.eL15
LP HPEXTLIMIT
40 biţi1bit
D14L14D13L13D12L12D11L11D10L10D9L9D8L8D7L7D6L6D5L5D4L4D3L3D2L2D1D1.lD1.hD1.eL1D0D0.lD0.hD0.eL0
19
REGISTRELE DE DATE: D0 – D15
numere întregi cu semn (pe 40 biţi):
domeniu de valori: -239:1:239-1
215 • • • 20231 • • • 216-239 • • • 232
15 • • • 031 • • • 1639 • • • 32
Dn.l .Dn.hDn.e
20
REGISTRELE DE DATE: D0 – D15
numere raţionale cu semn (pe 40 biţi):
domeniu de valori: -256:2-31:256-2-31
← FRACŢIE →
30 • • • 16
Dn.h
2-1 • • • 2-15
← ÎNTREG →
2-16 • • • 2-3120-28 27 • • • 21
15 • • • 03139 38 • • • 32
Dn.l.Dn.e
21
REGISTRELE DE DATE: D0 – D15
Pot fi folosite în instrucţiuni ca:
operanzi sursa
operanzi destinaţie
acumulatori
buffer de intrare între XDBA sau XDBB si ALU
Pot fi accesate pentru transferul cu memoria a unui:
cuvânt lung: operanzi de 32 biţi
cuvânt scurt: operanzi de 16 biţi
byte: operanzi de 8 biţi
Pot apărea operaţii precum:
limitare (saturare) şi
extindere automata de semn
22
Întreg pe 16 biţi în memorie:
Reprezentarea în registrele de date (D0 – D15) pe 40 de biţi (cu extensie de semn)
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE
întreg .
-215 214 20
s
întreg .
215 214 20231 216-239 232
Dn.lDn.hDn.e
ss • • • ss • • •
MOVE.W (Rn),Dn
23
Fracţie pe 16 biţi în memorie:
Reprezentarea în registrele de date (D0 – D15) pe 40 de biţi (cu extensie de semn şi completare cu zerouri în LP)
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE
fracţie
-20 2-1 2-15
s .
fracţie
2-16 2-3120 2-1 2-15-28 21
Dn.lDn.hDn.e
0 0 • • • 0s .s • • •
MOVE.F (Rn),Dn
24
La transferul datelor din registrele D0 – D15spre magistrale de date XDBA sau XDBB prin unitatea de scalare/limitare se poate face:
limitare (prin saturare) a datelor;
scalare
prin înmulţire – datele sunt shiftate cu un bit la stânga
prin împărţire – datele sunt shiftate cu un bit la dreapta
datele nu sunt scalate/limitate.
TRANSFERUL DATELOR DIN REGISTRELE DE DATE ÎN MEMORIE
25
fără limitare: MOVE.F Dn,(Rn)
valoarea scrisă în memorie ca fracţie pe 16 biţi are MSB =1 ceea ce corespunde numărului negativ -1.
LIMITAREA
|Eroare| = 2.0
= 1.0
Rezultatul în registru
0 0 • • • 0 = –1.01 .
Rezultatul în memorie-20.2-1 2-2 2-15
Ln
1 0 0 • • • 0
2-16 2-3120 . 2-1 2-2 2-15-28 21
Dn.lDn.hDn.e
0 0 • • • 01 .0 • • • 0
26
cu limitare: MOVES.F Dn,(Rn)
se limitează rezultatul la valoarea maximă pozitivă (sau minimă negativă) care poate fi reprezentată în memorie pentru o fracţie pe 16 biţi
LIMITAREA
|Eroare| = 0.00..1
= 1.0
Rezultatul în registru
1 1 • • • 1 = +0.99..90 .
Rezultatul în memorie-20.2-1 2-2 2-15
Ln
1 0 0 • • • 0
2-16 2-3120 . 2-1 2-2 2-15-28 21
Dn.lDn.hDn.e
0 0 • • • 01 .0 • • • 0
27
LIMITAREA
este activată numai pentru instrucţiunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L;
se desfăşoară în doi paşi: în primul pas este calculat bitul Ln atunci când registrul Dn este scris de către o operaţie ce a avut loc în ALU
în al doilea pas are loc limitarea datelor la transferul pe magistrală, dacă bitul Ln este setat.
Calcularea bitului Ln:dacă biţii din zona de extensie de semn nu sunt toţi 0 sau toţi numai 1 bitul Ln va fi setat.
28
LIMITAREA - EXEMPLU
cu limitare($0032) $7fffmoves.f d3,(r0)fără limitare($0030) $fffemove.f d3,(r0)+
apare depăşire, bitul L3 e setat
d3 $1:00 fffe 0000add d0,d1,d3pozitivă d1 $7fff 0000moveu.w #$7fff,d1.h
valoarea max.d0 $7fff 0000moveu.w #$7fff,d0.hadresa dest. r0 $0000 0030move.w #$0020,r0
ObservaţiiRezultatInstrucţiune
29
SCALAREA
Modul de scalare se setează prin intermediul biţilor 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 când este utilizată aritmetica cu saturaţie.
este activată numai pentru instrucţiunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L;
30
SCALAREA
Scalare în sus (înmulţire cu 2)
01
Scalare în jos (împărţire cu 2)
10
Fără scalare00
Modul de scalareS0S1
31
SCALAREA - EXEMPLU
înmulţire cu 2 ($0032) $0400move.f d0,(r0)
setare mod de scalare in sus
sr $00e4 0020move.l #$00e40020,srîmpărţire cu 2($0030) $0100moves.f d0,(r0)+
setare mod de scalare în jos
sr $0000 0010bmset #$10,sr.l
d0 $0200 0000moveu.w #$0200,d0.hr0 $0000 0030move.w #$0030,r0
ObservaţiiRezultatInstrucţiune
32
Esti pasionat de software?
Inscrie-te la Freescale Fixed-Point Contest! Intra pewww.freescale.ro, Freescale Fixed-Point Contest, si
arata-ne ca esti cel mai bun!
Castigatorii se premiaza.
33
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
Multiply and Accumulate (MAC)conţine un multiplicator, un sumator, precum şi alte circuite aritmetice pentru realizarea rotunjirii, comparării, saturării sau shiftării.
Operanzi sursă: registre sau
valori imediate din corpul instrucţiunii.
Operandul destinaţie:numai un registru de 40 biţi d0 – d15
Ieşirea multiplicatorului (40 de biţi) poate fi adunată la registrul destinaţie.
34
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
Adunarea şi scăderea se fac similar pentru operanzi întregi sau fracţionari
AdunareaADD Da,Db,Dn Da + Db → Dn
add d0,d1,d2D0 $00 72E3 8F2AD1 $00 7216 EE3C
L2:D2 $1:$00 E4FA 7D66
35
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
Adunarea şi scăderea se fac similar pentru operanzi întregi sau fracţionari
ScădereaSUB Da,Db,Dn Db – Da → Dn
sub d1,d0,d2D0 $00 0000 0005D1 $00 0000 0008
L2:D2 $0:$FF FFFF FFFD
36
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
S S
S
2N Biţi
S S
0
2N–1 biţi rezultat
2N Biţi
Înmulţire de numere întregi Înmulţire de numere fracţionare
Extensia semnului Completare cu 0
Înmulţire cu semn Înmulţire cu semn
S MSP LSP S MSP LSP
X
... ...
.. ..
. .X
2N–1 biţi rezultat
Alinierea rezultatului este diferită pentru înmulţirea operanzilor întregi şi fracţionari
37
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
Instrucţiunile MPY, MAC, MPYR şi MACR execută înmulţirea numerelor fracţionare
Înmulţirea numerelor fracţionaleMPY Da,Db,Dn Da.H * Db.H → Dn
mpy d4,d5,d6D4 $FF C000 0000D5 $00 2000 0000
L6:D6 $0:$FF F000 0000–1/8$F0001.111
–1/2$C000x 1.100
1/4$20000.010
38
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
Instrucţiunile MPY, MAC, MPYR şi MACR execută înmulţirea numerelor fracţionare
Înmulţirea cu acumulareMAC ±Da,Db,Dn Dn ± (Da.H*Db.H) → Dn
mac d4,d5,d6D4 $00 1000 0000D5 $00 3000 0000
L6:D6 $0:$00 4000 0000 $0:$00 4600 0000$46000.1000110
$4000+0.1000000
$06000.0000110
$3000x 0.011
$10000.001
39
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE
Instrucţiunile IMPY şi IMAC execută înmulţirea numerelor întregi
Înmulţirea numerelor întregiIMPY Da,Db,Dn Da.L * Db.L → Dn
impy d3,d4,d0D3 $00 0000 0202D4 $FF FFFF FFFE
L0:D0 $0:$FF FFFF FBFC$FBFC-1029
x $FFFEx -2
$0202514
40
ROTUNJIREA
Se face în cazul instrucţiunilor RND, ADR, SBR, MPYR, MACR.
Valoarea fracţionară de dublă precizie este rotunjită la precizie simplă (pe 16 biţi) şi scris în Dn.H.
Există două tipuri de rotunjire:Rotunjire convergentă
Rotunjire în complement faţă de 2
Diferenţa între cele două moduri constă în cum se rotunjeşte ½ LSB.
41
SATURAREA ARITMETICĂ
Rezultatul scris în urma unei instrucţiuni ALU este limitat la 32 de biţi (nu se permite reprezentarea cu depăşire în Dn.E).
Modul de lucru cu saturare aritmetică este setat prin bitul SM din Status Register (SR).
42
SATURAREA ARITMETICĂ - EXEMPLU
bitul de depăşireemr $0000 0004
apare depăşire rezultat saturat
d3 $0:00:7fff ffffadd d0,d1,d3val. max. pozitivă d1 $7fff 0000moveu.w #$7fff,d1.hval. max. pozitivăd0 $7fff 0000moveu.w #$7fff,d0.h
setare saturareSR $00e4 0004bmset #$0004,sr.l
ObservaţiiRezultatInstrucţiune
43
UNITATEA LOGICĂ
Bit Field Unit (BFU)contine un shifter paralel bidirectional (40 de biţi) o unitate de mascare şi o unitate logică.
Folosit pentru:Deplasare multi-bit stînga/dreapta (aritmetică sau logică)
Rotaţie cu un bit (stînga sau dreapta)
Inserare şi extragere de cîmp de biţi
Numărarea biţilor cei mai semnificativi (de 1 sau 0)
Operaţii logice
Operaţii de extensie de semn sau de zero
44
UNITATEA LOGICĂ - INSTRUCŢIUNI
DescriereInstrucţiune
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
AND
ASLL
ASLW
ASRR
ASRW
CLB
EOR
EXTRACT
EXTRACTU
INSERT
LSLL
45
UNITATEA LOGICĂ - INSTRUCŢIUNI
DescriereInstrucţiune
Logical shift right by one bit
Multi-bit logical shift right
Word logical shift right (16-bit shift)
One’s complement (inversion)
Bit-wise inclusive OR
Rotate one bit left through the carry bit
Rotate one bit right through the carry bit
Sign extend byte, long or word
Zero extend byte, long or word
LSR
LSRR
LSRW
NOT
OR
ROL
ROR
SXT.B .L .W
ZXT.B .L .W
46
3. UNITATEA DE ADRESARE
(ADDRESS GENERATING UNIT)
47
ARHITECTURA AGU
48
MODELUL DE PROGRAMARE AGU031
ADDRESS REGISTERS
MODIFIER and MODIFIER CONTROL REGISTERS
ADDRESS REGISTERS / BASE ADDRESS REGISTERS
031
OFFSET REGISTERS
R0R1R2R3R4R5R6R7
SP (NSP, ESP)
R8 / B0R9 / B1R10 / B2R11 / B3R12 / B4R13 / B5R14 / B6R15 / B7
N0N1N2N3
031
M0M1M2M3
031
MCTL
49
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 modificării (MCTL)
2 pointeri de stivă (NSP, ESP) dintre care doar unul este activ la un moment dat (SP)
50
TRANSFERUL PE MAGISTRALELE DE DATE
Transferurile între memorie şi nucleu se pot face pe două magistrale de date de 64 biţi.
Memoria este adresabilă la nivel de byte.
Memoria comună
(date/program)
XABA
XDBA
XABB
XDBB
32
64
64
32
NucleulSC140
51
TRANSFERUL PE MAGISTRALELE DE DATE
Instrucţiunile MOVE pot transfera date reprezentate pe:
byte (8 biţi),
word (16 biţi),
long word (32 biţi),
double-long word sau four-word (64 biţi).
Suffixul de după instrucţiunea MOVE semnifică:B = Byte
W = Întreg (word) pe 16 biţi
W = Întreg lung (double word) pe 32 biţi
F = Fracţionar pe 16 biţi
52
TRANSFERUL PE MAGISTRALELE DE DATE
biţi64
MOVE.2L (R0),D0:D1 ;R0=$38$38
MOVE.L ($34),D0
;R0=$20
MOVE.4W (R0),D0:D1:D2:D3
MOVE.2W (R0),D0:D1 ;R0=$18
MOVE.W ($16),D0
MOVE.B ($4),D0
$30
$28
$20
$18
$10
$8
$008biţi63
MOVE.F accesează memoria la fel ca MOVE.W
53
TRANSFERUL PE MAGISTRALELE DE DATE
octeţi8
MOVE.2W (R0+2),D0:D1 ; greşit
MOVE.2W (R0),D0:D1R0=$10
MOVE.W ($1),D0 ; greşit
MOVE.W ($0),D0
$10
$10
$0
$0
Datele trebuie să fie aliniate în memorie la adrese multiplu (în octeţi) de lăţimea magistralei folosită pentru transfer.
54
UNITĂŢILE DE CALCUL A ADRESELOR
Cele 2 unităţi AAU sunt identice.
Fiecare conţine un sumator pe 32 biţi numit şi sumator offset ce poate executa următoarele operaţii:
Adună sau scade două registre AGU,
Adună o valoare imediată,
Incrementează sau decrementează un registru AGU,
Adună cu reverse-carry.
55
UNITĂŢILE DE CALCUL A ADRESELOR
Un sumator modulo poate efectua aceleaşi operaţii ca sumatorul precedent dar modulo Msau –M, unde M este stocat în registrul de modificare M0–M3 selectat.
Rezultatul este comparat cu adresa de bază stocată în registrul de bază Bn astfel ca adresa să rămână într-un buffer de lungime M.
56
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
57
ADRESARE DIRECTĂ
addl1a r0,r1cu registru de adrese
mac d4,d5,d6cu registru de date sau de control
58
ADRESARE INDIRECTĂ CU REGISTRU
move.l (r0+r2)(Rn+Rm)indexare cu registru de adresă
move.b d6,(r3+n0)(Rn+Ni)indexare cu offset
move.w d3,(r2)+n3(Rn)+Nipost-incrementare cu offset
move.l (r3)-,d2(Rn)-cu post-decrementare
(Rn)+
(Rn)
move.f (r3)+,d2cu post-incrementare
move.w #$004f,(r4)fără modificare
59
ADRESARE INDIRECTĂ CU REGISTRU
move.l d4,(r3+$1c)(Rn+xx)cu deplasament
(SP+xx) move.w #$ffff,(sp–$3e)deplasament faţă de stivă SP
60
ADRESARE RELATIVĂ LA PC
bra _label2salt în program relativ la instrucţiunea curentă
MODURI SPECIALE DE ADRESARE
move.w ($8),d0move.w ($34008a20),d0
adresare absolută
doen2 #$40move.l #$f00d0d01,n0
adresare imediată
61
MODURILE DE MODIFICARE A ADRESEI
Registrul de control MCTL
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ă.
R0 AM[3:0]R1 AM[3:0]R2 AM[3:0]R3 AM[3:0]
3 07 411 815 12
R4 AM[3:0]R5 AM[3:0]R6 AM[3:0]R7 AM[3:0]
19 1623 2027 2431 28
62
MODURILE DE MODIFICARE A ADRESEI
Semnificaţia biţilor AM
1
0
1
0
1
0
1
0
1
0
AM0
Modificare modulo multiplă – M3111
Modificare modulo multiplă – M2111
Modificare modulo multiplă – M1011
Modificare modulo multiplă – M0011
Modificare modulo – se foloseşte M3101
Modificare modulo – se foloseşte M2101
Modificare modulo – se foloseşte M1001
Modificare modulo – se foloseşte M0001
Modificare cu transport invers (bit-reverse)000
Modificare liniară000
Modul de modificare al adreseiAM1AM2AM3
63
4. UNITATEA DE CONTROL AL EXECUŢIEI PROGRAMULUI
64
MODELUL DE PROGRAMARE
PC
LC3LC2LC1LC0
SA3SA2SA1SA0
EMRSR
PROGRAM COUNTER
LOOP COUNTER REGISTERSSTART ADDRESS REGISTERS
STATUS REGISTER EXCEPTION AND MODE REGISTER
31 0
31 0 31 0
31 0 31 0
65
REGISTRUL DE STARE (SR)
31 30-27 26-24 23-21 20 19 18 17-12 11-8 7 6 5 4 3 2 1 0SLF LF[3:0] Rsvd I[2:0] OVE DI EXP Rsvd VF[3:0] Rsvd S S1 S0 RM AS T C
SLF - Short Loop FlagLF[3:0] - Loop Flags
I[2:0] - Interrupt MaskOVE - Overflow Exception Enable
DI - Disable InterruptsEXP - Exception Mode bit
VF[3:0] - Viterbi FlagsS - Scaling Bit
S1, S0 - Scaling Mode BitsRM - Rounding Mode
AS -Arithmetic Saturation ModeT - True Bit
C - Carry Bit*Rsvd - Reserved (derivative dependant)
66
REGISTRUL DE EXCEPŢII ŞI MOD (EMR)
31-24 23-17 16 15-4 3 2 1 0Reserved GP[6:0] BEM Reserved NMID DOVF ILST ILN
GP - General Purpose FlagsBEM - Big Endian Memory
NMID - NMI DisableDOVF - DALU overflow
ILST - Illegal Execution SetILN - Illegal Instruction
67
ETAPELE DE EXECUŢIE PIPELINE
Lungime pipeline mică
Fără întârzieri aritmetice
Timp scurt pentru salturi
PROGRAMPRE-FETCH
PROGRAMFETCH
DISPATCH& DECODE
ADDRESSGENERATION
EXECUTE
68
ETAPELE DE EXECUŢIE PIPELINE
i4i3i2i1Execution
i4i3i2i1Address Generation
i4i3i2i1Decode
i4i3i2i1Fetch
i4i3i2i1Pre-fetch
87654321pipeline
Ciclu instructiuneEtapă
69
ETAPELE DE EXECUŢIE PIPELINE
Se citesc operanzii sursă (pentru DALU sau memorie)
Se execută operaţiile aritmetice (înmulţire si adunare)
Se scriu rezultatele în registrele destinaţie
Execuţie
Se decodifică instrucţiunile DALU
Se generează adresele pentru transferul datelor
Se calculează noile valori pentru registrele de adresă
Generare adrese
Se extrag instrucţiunile pentru execuţie
Se decodifică instrucţiunile AGU
Dispatch
Se citesc opt cuvinte din memorie (fetch set)Fetch
Se generează adresa pentru citirea din memoria de program
Se actualizează fetch counter (FC)
Pre-fetch
70
FETCH SET –> SET DE EXECUŢIE
La fiecare ciclu de ceas se citeşte din memorie un set de 8 instrucţiuni de 16 biţi – fetch set.
Unitatea de control al execuţiei programului - PSEQ (Program SEQuencer Unit) detectează câte instrucţiuni din cele 8 pot fi executate în paralel - set de execuţie.
Spaţiul Unificat de memorieDate/Program
Nucleu SC140
32 128PAB PDB 128-bit Fetch SetEight-word Fetch Set
Adresa pe 32-biţi
71
FETCH SET –> SET DE EXECUŢIE
Instruction Fetch Set(8 cuvinte)
Set de execuţie de VLES (Variable Length lungime variabilă Execution Set)
Instr#N
Instr#N+1
Instr#N+2
Instr#N+3
Instr#N+4
Instr#N+5
Instr#N+6
Instr#N+7
Instr#N
Instr#N+1
Instr#N+2
Instr#N+3
Instr#N+4
Instr#N+5
Instr#N+6
Instr#N+7
Program Memory Data Bus - PDB
VLES #M4 words
Start of VLES #M+18 words
End of VLES #M-17 words
72
GRUPAREA INSTRUCŢIUNILOR
SC140 conţine 4 ALU şi 2 AGU ceea ce permite execuţia a maxim 6 instrucţiuni pe ciclu de ceas
Pot fi executate în paralel instrucţiuni independente din punct de vedere al rezultatului
Exemplul 1:
Exemplul 2:
Instr AGUInstr AGUInstr DALUInstr DALU
adda r2,r3move.l (r0)+n0,r6and d4,d5macr -d0,d1,d7
[ mac d0,d4,d8 mac d1,d5,d9 mac d2,d6,d10 mac d3,d7,d11move.4f (r0)+,d0:d1:d2:d3 move.4f (r1)+,d4:d5:d6:d7 ]
73
EXECUŢIA BUCLELOR
Bucla lungădosetup0 _start0doen0 #$10move.w (r3)+,d1skipls _end0loopstart0
_start0mac d0,d1,d2 move.w (r0)+,d0add d5,d6,d4 move.w (r1)+,d5sub d3,d2,d4 inc d5 mac d0,d1,d6 move.w (r0)+,d7sub d5,d4,d4 inc d7loopend0
_end0
LA
LPMARKB
SA
LC0
_start0LOOP COUNTER REGISTERS
START ADDRESS REGISTERS
STATUS REGISTER
SA0
$10
SLF LF0 LF1 LF2 LF31
74
EXECUŢIA BUCLELOR
Bucla scurtă (două seturi de execuţie)doensh0 #$10...loopstart0mac d0,d1,d2 move.w (r0)+,d0add d5,d6,d4 move.w (r1)+,d5loopend0
Bucla scurtă (un singur set de execuţie)doensh0 #$10...loopstart0mac d0,d1,d2 move.w (r0)+,d0loopend0
LA
LPMARKBSA
SA, LA LPMARKA
75
EXECUŢIA BUCLELOR
Buclele pot fi intercalate una intr-alta
Intercalarea se face in ordine crescătoare astfel că o buclă poate fi inclusă intr-o buclă cu număr mai mic:
loop0
loop2
loop3
76
STIVA
Normal mode stack:
Exception mode stack:
Increasingaddresses
ESP
Shadow ESPShadow ESPShadow ESP
Last stacked value - 8 bytes
Last stacked value - 8 bytes
Increasingaddresses
NSP
ShadowShadowShadow NSPNSPNSP1Valid bit
1Valid bit
77
STIVA
Increasingaddresses
SP
DeIncreasingaddresses
SP
PUSH De
De → (SP)SP + 8 → SP
Do
PUSH Do
Do → (SP+4)SP + 8 → SP
78
STIVA
Increasingaddresses
SP
DeIncreasingaddressesSP
POP De
(SP - 8) → DeSP-8 → SP
Do
POP Do
(SP - 4) → DoSP-8 → SP
79
STIVA
Există instrucţiuni speciale pentru a accesa stiva normală, inclusiv în execuţia “excepţiilor”:
PUSHN De
PUSHN Do
Se poate transfera (modifica) indicatorul stivei altul decât stiva activă (Other Stack Pointer):
TFRA R0,OSP
dacă SP curent este ESP, atunci OSP va fi NSP