Documente Academic
Documente Profesional
Documente Cultură
2 3
6 7
16 16 16 16 move.4f (r0)+,d0:d1:d2:d3
$100
XDBA
XABA
XABB
XDBB
PDB
PAB
64 64 move.4f (r1)+,d4:d5:d6:d7
128 32 32 32
128
XABB
XABA
loopstart0
64 64 [ mac d0,d4,d8 mac d1,d5,d9
XDBB
XDBA
Registre
mac d2,d6,d10 mac d3,d7,d11
Secvenţiator Setul de registre pentru Registre ALU OnCE Accelerator Registre date move.4f (r0)+,d0:d1:d2:d3
de Program Generarea Adreselor pentru date pentru setul de adresa D15
D0
Controlul instrucţiuni R0=$100
R0 D1
ALU1 move.4f (r1)+,d4:d5:d6:d7 ]
Puterii R1=$200 D2 loopend0
…
D3 ALU2
StarCore 140 Generatorul R7 [ add d8,d9,d0 add d10,d11,d1 ]
de ceas
D4
2 AAU BMU 4 ALU 24 D5 add d0,d1,d0
PLL D6 ALU3 move.f d0,($400)
Instruction Bus 128 AAU D7
…
D15
ALU4
10 11
12 13
SC140 – FORMATUL DATELOR SC140 – FORMATUL DATELOR
numere fracţionare cu semn: numere întregi cu semn:
pe 16 biţi: pe 16 biţi:
-20 2–1 2–2 2–14 2–15 -215 214 213 21 20
s. fracţie s întreg .
15 14 13 • • • 1 0 15 14 13 • • • 1 0
14 15
pe 32 biţi:
Set de Registre de date (16)
231 230 229 21 20
întreg . 40 40 40 40 40 40 40 40 40 40 40 40
31 30 29 • • • 1 0
ALU ALU ALU ALU
domeniu de valori: 0:1:232-1
16 17
REGISTRELE ALU REGISTRELE DE DATE: D0 – D15
LIMIT EXT HP LP
L0 D0.e D0.h D0.l D0
numere întregi cu semn (pe 40 biţi):
L1 D1.e D1.h D1.l D1
L2 D2
L3 D3
-239 ••• 232 231 • • • 216 215 • • • 20
L4 D4 Dn.e Dn.h Dn.l .
L5 D5
39 ••• 32 31 • • • 16 15 • • • 0
L6 D6
L7 D7
L8 D8 domeniu de valori: -239:1:239-1
L9 D9
L10 D10
L11 D11
L12 D12
L13 D13
L14 D14
L15 D15.e D15.h D15.l D15
39 32 31 16 15 0
1bit 40 biţi
18 19
20 21
TRANSFERUL DATELOR TRANSFERUL DATELOR
DIN MEMORIE ÎN REGISTRELE DE DATE DIN MEMORIE ÎN REGISTRELE DE DATE
-239 232 231 216 215 214 20 -28 21 20 2-1 2-15 2-16 2-31
s • • • s • • • s s întreg . s • • • s. fracţie 0 0 • • • 0
Dn.e Dn.h Dn.l Dn.e Dn.h Dn.l
Reprezentarea în registrele de date (D0 – D15) Reprezentarea în registrele de date (D0 – D15)
pe 40 de biţi (cu extensie de semn) pe 40 de biţi (cu extensie de semn şi
completare cu zerouri în LP)
22 23
TRANSFERUL DATELOR
DIN REGISTRELE DE DATE ÎN MEMORIE LIMITAREA
La transferul datelor din registrele D0 – D15 fără limitare: MOVE.F Dn,(Rn)
spre magistrale de date XDBA sau XDBB prin
-28 21 20 . 2-1 2-2 2-15 2-16 2-31 Rezultatul în registru
unitatea de scalare/limitare se poate face: 1 0 • • • 0 1.0 0 • • • 0 0 0 • • • 0 = 1.0
limitare (prin saturare) a datelor; Ln Dn.e Dn.h Dn.l
scalare
prin înmulţire – datele sunt shiftate cu un bit la stânga -20.2-1 2-2 2-15 Rezultatul în memorie
prin împărţire – datele sunt shiftate cu un bit la dreapta 1.0 0 • • • 0 = –1.0 |Eroare| = 2.0
24 25
LIMITAREA LIMITAREA
cu limitare: MOVES.F Dn,(Rn) este activată numai pentru instrucţiunile
MOVES.F, MOVES.2F, MOVES.4F, MOVES.L;
-28 21 20 . 2-1 2-2 2-15 2-16 2-31 Rezultatul în registru
1 0 • • • 0 1.0 0 • • • 0 0 0 • • • 0 = 1.0
se desfăşoară în doi paşi:
Ln Dn.e Dn.h Dn.l în primul pas este calculat bitul Ln atunci când
registrul Dn este scris de către o operaţie ce a avut
-20.2-1 2-2 2-15 Rezultatul în memorie loc în ALU
0.1 1 • • • 1 = +0.99..9 |Eroare| = 0.00..1 în al doilea pas are loc limitarea datelor la transferul
pe magistrală, dacă bitul Ln este setat.
26 27
28 29
SCALAREA SCALAREA - EXEMPLU
30 31
34 35
36 37
UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE ROTUNJIREA
Instrucţiunile IMPY şi IMAC execută Se face în cazul instrucţiunilor RND, ADR,
înmulţirea numerelor întregi SBR, MPYR, MACR.
Valoarea fracţionară de dublă precizie este
Înmulţirea numerelor întregi
rotunjită la precizie simplă (pe 16 biţi) şi scris
IMPY Da,Db,Dn Da.L * Db.L → Dn
în Dn.H.
514 $0202 Există două tipuri de rotunjire:
impy d3,d4,d0
x -2 x $FFFE Rotunjire convergentă
D3 $00 0000 0202
Rotunjire în complement faţă de 2
D4 $FF FFFF FFFE -1029 $FBFC
L0:D0 $0:$FF FFFF FBFC Diferenţa între cele două moduri constă în cum
se rotunjeşte ½ LSB.
38 39
Modul de lucru cu saturare aritmetică este moveu.w #$7fff,d0.h d0 $7fff 0000 val. max. pozitivă
setat prin bitul SM din Status Register (SR). moveu.w #$7fff,d1.h d1 $7fff 0000 val. max. pozitivă
40 41
UNITATEA LOGICĂ UNITATEA LOGICĂ - INSTRUCŢIUNI
Bit Field Unit (BFU) Instrucţiune Descriere
contine un shifter paralel bidirectional (40 de biţi) o AND Logical AND
unitate de mascare şi o unitate logică. ASLL Multi-bit arithmetic shift left
Folosit pentru: ASLW Word arithmetic shift left (16-bit shift)
Deplasare multi-bit stînga/dreapta (aritmetică sau ASRR Multi-bit arithmetic shift right
42 43
44 45
ARHITECTURA AGU
3. UNITATEA DE ADRESARE
(ADDRESS GENERATING UNIT)
46 47
63 8biţi 0
Datele trebuie să fie aliniate în memorie la
$0 MOVE.B ($4),D0
$8
adrese multiplu (în octeţi) de lăţimea
$10 MOVE.W ($16),D0 magistralei folosită pentru transfer.
$18 MOVE.2W (R0),D0:D1 ;R0=$18
Å 8 octeţi Æ
$20 MOVE.4W (R0),D0:D1:D2:D3
$0 MOVE.W ($0),D0
$28 ;R0=$20
$0 MOVE.W ($1),D0 ; greşit
$30 MOVE.L ($34),D0
$38 MOVE.2L (R0),D0:D1 ;R0=$38
R0=$10
Å 64 biţi Æ $10 MOVE.2W (R0),D0:D1
54 55
56 57
ADRESARE INDIRECTĂ CU REGISTRU ADRESARE INDIRECTĂ CU REGISTRU
58 59
PROGRAM COUNTER STATUS REGISTER EXCEPTION AND MODE SLF - Short Loop Flag
REGISTER LF[3:0] - Loop Flags
I[2:0] - Interrupt Mask
31 0 31 0 OVE - Overflow Exception Enable
SA0 LC0 DI - Disable Interrupts
EXP - Exception Mode bit
SA1 LC1 VF[3:0] - Viterbi Flags
SA2 LC2 S - Scaling Bit
SA3 LC3 S1, S0 - Scaling Mode Bits
RM - Rounding Mode
START ADDRESS REGISTERS LOOP COUNTER REGISTERS AS -Arithmetic Saturation Mode
T - True Bit
C - Carry Bit
*Rsvd - Reserved (derivative dependant)
64 65
REGISTRUL DE EXCEPŢII ŞI MOD (EMR) ETAPELE DE EXECUŢIE PIPELINE
66 67
68 69
FETCH SET –> SET DE EXECUŢIE FETCH SET –> SET DE EXECUŢIE
Program Memory Data Bus - PDB
Spaţiul Unificat de memorie
Date/Program Instruction Fetch Set
(8 cuvinte)
Nucleu SC140
Set de execuţie de VLES (Variable Length
lungime variabilă Execution Set)
La fiecare ciclu de ceas se citeşte din memorie un set de
8 instrucţiuni de 16 biţi – fetch set.
Instr Instr Instr Instr Instr Instr Instr Instr
Unitatea de control al execuţiei programului - PSEQ #N #N+1 #N+2 #N+3 #N+4 #N+5 #N+6 #N+7
(Program SEQuencer Unit) detectează câte instrucţiuni End of VLES #M-1 VLES #M Start of VLES #M+1
7 words 4 words 8 words
din cele 8 pot fi executate în paralel - set de execuţie.
70 71
72 73
EXECUŢIA BUCLELOR EXECUŢIA BUCLELOR
Bucla scurtă (două seturi de execuţie) Buclele pot fi intercalate una intr-alta
doensh0 #$10
...
Intercalarea se face in ordine crescătoare astfel
loopstart0 că o buclă poate fi inclusă intr-o buclă cu
SA Æ mac d0,d1,d2 move.w (r0)+,d0 Å LPMARKB număr mai mic:
LA Æ add d5,d6,d4 move.w (r1)+,d5
loop0
loopend0
loop2
Bucla scurtă (un singur set de execuţie)
doensh0 #$10
loop3
...
loopstart0
SA, LA Æ mac d0,d1,d2 move.w (r0)+,d0 Å LPMARKA
loopend0
74 75
STIVA STIVA
De → (SP) SP
NSP SP + 8 → SP Increasing
Increasing De addresses
1 Shadow
Shadow NSP
NSP Last stacked value - 8 bytes addresses
Valid bit
Exception mode stack:
PUSH Do
Do → (SP+4) SP
ESP SP + 8 → SP Increasing
Increasing Do addresses
1 Shadow
Shadow ESP
ESP Last stacked value - 8 bytes addresses
Valid bit
76 77
STIVA STIVA
Există instrucţiuni speciale pentru a accesa
POP De
stiva normală, inclusiv în execuţia “excepţiilor”:
PUSHN De
(SP - 8) → De
SP-8 → SP Increasing PUSHN Do
SP De
addresses
Se poate transfera (modifica) indicatorul stivei
altul decât stiva activă (Other Stack Pointer):
POP Do TFRA R0,OSP
dacă SP curent este ESP, atunci OSP va fi NSP
(SP - 4) → Do
SP-8 → SP SP Increasing
Do addresses
78 79
80 81