Sunteți pe pagina 1din 20

CAPITOLUL 3.

PROCESORUL DE SEMNAL STARCORE 140

3.1 PREZENTARE GENERAL

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

External Memory Interface

4 Arithmetic & Logic Units

2 Address Arithmetic Units

Peripheral and Accelerators Expansion Area Standard Input/Output Peripherals Application Specific Accelerators General Purpose Programmable Accelerator

Schema bloc a unei configuraii tipice SoC (System On Chip)


3 4

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);

fiecare ALU conine


un circuit MAC (Multiply and ACcumulate) i un shifter (structur de deplasare) care pot lucra cu orice registru de date de 40 bii;

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

SC140 SCHEMA BLOC A NUCLEULUI


Spaiul unificat de memorie pentru date i program
XDBA XABB XABA 64 XDBB PAB 64 128

Fiecare instruciune codific o operaie elementar;

Model de execuie Variable Length Execution Set (VLES)


instruciunile sunt grupate astfel nct s se obin o performan maxim n utilizarea procesorului pn la 6 instruciuni pot fi executate intr-un singur ciclu de ceas.

128

32

32

32

Secveniator de Program

Setul de registre pentru Generarea Adreselor

Registre ALU pentru date

OnCE
Controlul Puterii

Accelerator pentru setul de instruciuni

StarCore 140 2 AAU


Instruction Bus

circuit dedicat pentru controlul execuiei programului - PSEQ (Program SEQuencer Unit)
9

BMU
128

4 ALU

Generatorul de ceas PLL

24

10

SC140 SCHEMA BLOC A NUCLEULUI


move.w #$100,r0
$200 $100 XABB

MEMORIE
16 16 16 16

move.w #$200,r1 move.4f (r0)+,d0:d1:d2:d3 move.4f (r1)+,d4:d5:d6:d7 loopstart0

Registre adresa R0=$100 R0 R1=$200 R7

AAU

XABA

64

64

[ mac d0,d4,d8
Registre date D15 D0 D1 D2 D3 D4 D5 D6 D7

mac d1,d5,d9 mac d3,d7,d11

XDBB

XDBA

mac d2,d6,d10

move.4f (r0)+,d0:d1:d2:d3

ALU1 ALU1 ALU1 ALU1

move.4f (r1)+,d4:d5:d6:d7 ] loopend0 [ add d8,d9,d0 add d10,d11,d1 ] add d0,d1,d0 move.f d0,($400)

3.2 UNITATEA ARITMETIC I LOGIC PENTRU DATE

D15

11

12

SC140 FORMATUL DATELOR


Reprezentarea datelor se face n complement fa de 2:
numere fracionare cu semn numere ntregi
cu semn fr semn

SC140 FORMATUL DATELOR


numere fracionare cu semn:
pe 16 bii:
-20 s.
15 14 13

21 22 fracie

214 215
1 0

domeniu de valori: -1:2-15:1-2-15

Precizia de reprezentare poate fi


simpl: 1 word = 16 bii dubl: 2 words = 32 bii

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

SC140 FORMATUL DATELOR


numere ntregi cu semn:
pe 16 bii:
-215 214 213 s
15 14 13

SC140 FORMATUL DATELOR


numere ntregi fr semn:
pe 16 bii:
21 20 .
1 0 15 14 13

215 214 213 ntreg


21
1

20 .
0

ntreg

domeniu de valori: -215:1:215-1

domeniu de valori: 0:1:216-1

pe 32 bii:
-231 230 229 s
31 30 29

pe 32 bii:
21 ntreg

20 .
0

231 230 229 ntreg


31 30 29

21
1

20 .
0

domeniu de valori: -231:1:231-1


15

domeniu de valori: 0:1:232-1


16

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

scalare / limitare (8)


40 40 40 40 40 40 40 40

Set de Registre de date (16)


40 40 40 40 40 40 40 40 40

ALU

ALU

ALU

ALU
17

D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15

1bit

40 bii
18

REGISTRELE DE DATE: D0 D15


numere ntregi cu semn (pe 40 bii):
-239
39

REGISTRELE DE DATE: D0 D15


numere raionale cu semn (pe 40 bii):

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

REGISTRELE DE DATE: D0 D15


Pot fi folosite n instruciuni ca:
operanzi sursa operanzi destinaie acumulatori buffer de intrare ntre XDBA sau XDBB si ALU

TRANSFERUL DATELOR DIN MEMORIE N REGISTRELE DE DATE


ntreg pe 16 bii n memorie:
-215 214 20 ntreg .

MOVE.W (Rn),Dn

Pot fi accesate pentru transferul cu memoria a unui:


cuvnt lung: operanzi de 32 bii cuvnt scurt: operanzi de 16 bii byte: operanzi de 8 bii

-239 s

232 231

216 215 214


20 ntreg
Dn.l

Dn.e

Dn.h

Pot aprea operaii precum:


limitare (saturare) i extindere automata de semn
21

Reprezentarea n registrele de date (D0 D15) pe 40 de bii (cu extensie de semn)


22

TRANSFERUL DATELOR DIN MEMORIE N REGISTRELE DE DATE


Fracie pe 16 bii n memorie:
-20 2-1 s. fracie 2-15

TRANSFERUL DATELOR DIN REGISTRELE DE DATE N MEMORIE


La transferul datelor din registrele D0 D15 spre magistrale de date XDBA sau XDBB prin unitatea de scalare/limitare se poate face:
limitare (prin saturare) a datelor; scalare

MOVE.F (Rn),Dn

-28 s

21 20 2-1

2-15 2-16 fracie


Dn.h

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

datele nu sunt scalate/limitate.

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

21 20 . 2-1 2-2 0 1.0 0


Dn.h

2-31

-28 1
Ln

21 20 . 2-1 2-2 0 1.0 0


Dn.h

2-31

Rezultatul n registru

0 0 0

= 1.0

0 0 0

= 1.0

Dn.e

Dn.l

Dn.e

Dn.l

-20.2-1 2-2 1.0 0


2-15

Rezultatul n memorie

-20.2-1 2-2 |Eroare| = 2.0 0.1 1


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

d3 $1:00 fffe 0000 ($0030) ($0032)

Calcularea bitului Ln:


dac biii din zona de extensie de semn nu sunt toi 0 sau toi numai 1 bitul Ln va fi setat.
27

$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)

Esti pasionat de software?

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

UNITATEA DE NMULIRE I ACUMULARE


Multiply and Accumulate (MAC)
conine un multiplicator, un sumator, precum i alte circuite aritmetice pentru realizarea rotunjirii, comparrii, saturrii sau shiftrii.

UNITATEA DE NMULIRE I ACUMULARE


Adunarea i scderea se fac similar pentru operanzi ntregi sau fracionari Adunarea Da + Db Dn

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

Ieirea multiplicatorului (40 de bii) poate fi adunat la registrul destinaie.


33

34

UNITATEA DE NMULIRE I ACUMULARE


Adunarea i scderea se fac similar pentru operanzi ntregi sau fracionari Scderea Db Da Dn

UNITATEA DE NMULIRE I ACUMULARE


Alinierea rezultatului este diferit pentru nmulirea operanzilor ntregi i fracionari
nmulire de numere ntregi S

SUB Da,Db,Dn

S X

. .
S S

nmulire de numere fracionare 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

2N1 bii rezultat Extensia semnului

2N1 bii rezultat Completare cu 0

35

36

UNITATEA DE NMULIRE I ACUMULARE


Instruciunile MPY, MAC, MPYR i MACR execut nmulirea numerelor fracionare nmulirea numerelor fracionale MPY Da,Db,Dn Da.H * Db.H Dn mpy d4,d5,d6 D4 $FF C000 0000 D5 $00 2000 0000
0.010 x 1.100 1.111 $2000 $C000 $F000 1/4 1/2 1/8

UNITATEA DE NMULIRE I ACUMULARE


Instruciunile MPY, MAC, MPYR i MACR execut nmulirea numerelor fracionare nmulirea cu acumulare MAC Da,Db,Dn Dn (Da.H*Db.H) Dn mac d4,d5,d6 D4 $00 1000 0000 D5 $00 3000 0000 L6:D6 $0:$00 4000 0000
0.001 x 0.011 0.0000110 $1000 $3000 $0600

L6:D6 $0:$FF F000 0000

+0.1000000 $4000 $0:$00 4600 0000 0.1000110 $4600


38

37

UNITATEA DE NMULIRE I ACUMULARE


Instruciunile IMPY i IMAC execut nmulirea numerelor ntregi nmulirea numerelor ntregi IMPY Da,Db,Dn Da.L * Db.L Dn impy d3,d4,d0 D3 $00 0000 0202 D4 $FF FFFF FFFE
514 x -2 -1029 $0202 x $FFFE $FBFC

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

L0:D0 $0:$FF FFFF FBFC

Diferena ntre cele dou moduri const n cum se rotunjete LSB.


40

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).

SATURAREA ARITMETIC - EXEMPLU


Instruciune
bmset #$0004,sr.l moveu.w #$7fff,d0.h moveu.w #$7fff,d1.h add d0,d1,d3

Rezultat
SR $00e4 0004

Observaii
setare saturare

d0 $7fff 0000 val. max. pozitiv d1 $7fff 0000 val. max. pozitiv d3 $0:00:7fff ffff

apare depire rezultat saturat bitul de depire

emr $0000 0004

41

42

UNITATEA LOGIC
Bit Field Unit (BFU)
contine un shifter paralel bidirectional (40 de bii) o unitate de mascare i o unitate logic.

UNITATEA LOGIC - INSTRUCIUNI


Instruciune AND ASLL ASLW ASRR ASRW CLB EOR EXTRACT EXTRACTU INSERT LSLL
43

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

UNITATEA LOGIC - INSTRUCIUNI


Instruciune LSR LSRR LSRW NOT OR ROL ROR SXT.B .L .W ZXT.B .L .W Descriere Logical shift right by one bit Multi-bit logical shift right Word logical shift right (16-bit shift) Ones complement (inversion) Bit-wise inclusive OR Rotate one bit left through the carry bit Rotate one bit right through the carry bit

3. UNITATEA DE ADRESARE (ADDRESS GENERATING UNIT)

Sign extend byte, long or word Zero extend byte, long or word

45

46

ARHITECTURA AGU

MODELUL DE PROGRAMARE AGU


31 0 0 R0 N0 R1 N1 R2 N2 R3 N3 R4 OFFSET REGISTERS R5 R6 R7 31 0 SP (NSP, ESP) M0 ADDRESS REGISTERS M1 31 0 M2 R8 / B0 M3 R9 / B1 MCTL R10 / B2 MODIFIER and MODIFIER R11 / B3 R12 / B4 CONTROL REGISTERS R13 / B5 R14 / B6 R15 / B7 ADDRESS REGISTERS / BASE ADDRESS REGISTERS 31

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)

TRANSFERUL PE MAGISTRALELE DE DATE


XABA XDBA 32

Nucleul SC140

64 XABB XDBB 64 32

Memoria comun (date/program)

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

TRANSFERUL PE MAGISTRALELE DE DATE


Instruciunile MOVE pot transfera date reprezentate pe:
byte (8 bii), word (16 bii), long word (32 bii), double-long word sau four-word (64 bii).

TRANSFERUL PE MAGISTRALELE DE DATE


63 8bii 0 $0 $8 $10 MOVE.W ($16),D0 $18 MOVE.2W (R0),D0:D1 ;R0=$18 MOVE.B ($4),D0

$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

Suffixul de dup instruciunea MOVE semnific:


B = Byte W = ntreg (word) pe 16 bii W = ntreg lung (double word) pe 32 bii F = Fracionar pe 16 bii
51

MOVE.F acceseaz memoria la fel ca MOVE.W


52

TRANSFERUL PE MAGISTRALELE DE DATE


Datele trebuie s fie aliniate n memorie la adrese multiplu (n octei) de limea magistralei folosit pentru transfer.
8 octei $0 $0 MOVE.W ($0),D0 MOVE.W ($1),D0 ; greit

UNITILE DE CALCUL A ADRESELOR


Cele 2 uniti AAU sunt identice. Fiecare conine un sumator pe 32 bii numit i sumator offset ce poate executa urmtoarele operaii:
Adun sau scade dou registre AGU, Adun o valoare imediat, Incrementeaz sau decrementeaz un registru AGU, Adun cu reverse-carry.

R0=$10 $10 MOVE.2W (R0),D0:D1 $10 MOVE.2W (R0+2),D0:D1 ; greit

53

54

UNITILE DE CALCUL A ADRESELOR


Un sumator modulo poate efectua aceleai operaii ca sumatorul precedent dar modulo M sau M, unde M este stocat n registrul de modificare M0M3 selectat. Rezultatul este comparat cu adresa de baz stocat n registrul de baz Bn astfel ca adresa s rmn ntr-un buffer de lungime M.

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

ADRESARE INDIRECT CU REGISTRU


fr modificare (Rn) move.w #$004f,(r4) move.f (r3)+,d2 move.l (r3)-,d2 move.w d3,(r2)+n3 move.b d6,(r3+n0)

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)

(Rn+Rm) move.l (r0+r2)

57

58

ADRESARE INDIRECT CU REGISTRU


cu deplasament deplasament fa de stiv SP (Rn+xx) move.l d4,(r3+$1c) (SP+xx) move.w #$ffff,(sp$3e)

ADRESARE RELATIV LA PC
salt n program relativ la instruciunea curent bra _label2

MODURI SPECIALE DE ADRESARE


adresare imediat doen2 #$40 move.l #$f00d0d01,n0 adresare absolut move.w ($8),d0 move.w ($34008a20),d0

59

60

MODURILE DE MODIFICARE A ADRESEI


Registrul de control MCTL
31 28 27 24 23 20 19 16

MODURILE DE MODIFICARE A ADRESEI


Semnificaia biilor AM
AM3 0 0 1 1 1 AM2 0 0 0 0 0 0 1 1 1 1 AM1 0 0 0 0 1 1 0 0 1 1 AM0 0 1 0 1 0 1 0 1 0 1 Modul de modificare al adresei Modificare liniar Modificare cu transport invers (bit-reverse) Modificare modulo se folosete M0 Modificare modulo se folosete M1 Modificare modulo se folosete M2 Modificare modulo se folosete M3 Modificare modulo multipl M0 Modificare modulo multipl M1 Modificare modulo multipl M2 Modificare modulo multipl M3
62

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

4. UNITATEA DE CONTROL AL EXECUIEI PROGRAMULUI

SA0 SA1 SA2 SA3


START ADDRESS REGISTERS

LC0 LC1 LC2 LC3


LOOP COUNTER REGISTERS

63

64

REGISTRUL DE STARE (SR)


31 30-27 26-24 23-21 20 19 18 17-12 11-8 7 6 5 4 3 2 10 SLF LF[3:0] Rsvd I[2:0] OVE DI EXP Rsvd VF[3:0] Rsvd S S1 S0 RM AS T C

REGISTRUL DE EXCEPII I MOD (EMR)


31-24 Reserved 23-17 GP[6:0] 16 BEM 15-4 Reserved 3 NMID 2 DOVF 1 0 ILST ILN

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

ETAPELE DE EXECUIE PIPELINE


PROGRAM PRE-FETCH PROGRAM FETCH DISPATCH & DECODE ADDRESS GENERATION

ETAPELE DE EXECUIE PIPELINE


Etap pipeline Pre-fetch Fetch Decode Address Generation Execution 1 i1 2 i2 i1 3 i3 i2 i1 Ciclu instructiune 4 i4 i3 i2 i1 i4 i3 i2 i1 i4 i3 i2 i4 i3 i4 5 6 7 8

Lungime pipeline mic Fr ntrzieri aritmetice Timp scurt pentru salturi

EXECUTE

67

68

ETAPELE DE EXECUIE PIPELINE


Pre-fetch
Se genereaz adresa pentru citirea din memoria de program Se actualizeaz fetch counter (FC) Se citesc opt cuvinte din memorie (fetch set) Se extrag instruciunile pentru execuie Se decodific instruciunile AGU Se decodific instruciunile DALU Se genereaz adresele pentru transferul datelor Se calculeaz noile valori pentru registrele de adres Se citesc operanzii surs (pentru DALU sau memorie) Se execut operaiile aritmetice (nmulire si adunare) Se scriu rezultatele n registrele destinaie
69

FETCH SET > SET DE EXECUIE


Spaiul Unificat de memorie Date/Program
128-bit Fetch Set Eight-word Fetch Set

Fetch Dispatch Generare adrese Execuie

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

FETCH SET > SET DE EXECUIE


Program Memory Data Bus - PDB

GRUPAREA INSTRUCIUNILOR
SC140 conine 4 ALU i 2 AGU ceea ce permite execuia a maxim 6 instruciuni pe ciclu de ceas

Instruction Fetch Set (8 cuvinte)


Instr #N Instr #N+1 Instr #N+2 Instr #N+3 Instr #N+4 Instr #N+5 Instr #N+6 Instr #N+7

Pot fi executate n paralel instruciuni independente din punct de vedere al rezultatului


Exemplul 1:
macr -d0,d1,d7 Instr DALU and d4,d5 Instr DALU move.l (r0)+n0,r6 adda r2,r3 Instr AGU Instr AGU

Set de execuie de lungime variabil


Instr #N Instr #N+1 Instr #N+2

VLES (Variable Length Execution Set)


Instr #N+5 Instr Instr #N+6 #N+7 Start of VLES #M+1 8 words
71

End of VLES #M-1 7 words

Instr Instr #N+3 #N+4 VLES #M 4 words

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

Bucla scurt (dou seturi de execuie)


doensh0 #$10 ... loopstart0 mac d0,d1,d2 add d5,d6,d4 loopend0

SA LA

move.w (r0)+,d0 move.w (r1)+,d5

LPMARKB

Bucla scurt (un singur set de execuie)


doensh0 #$10 ... loopstart0 mac d0,d1,d2 loopend0

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

ESP Shadow ESP 1 Shadow ESP Valid bit


75

Last stacked value - 8 bytes

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

POP Do (SP - 4) Do SP-8 SP

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

S-ar putea să vă placă și