Sunteți pe pagina 1din 20
CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 1
CAPITOLUL 3.
PROCESORUL DE SEMNAL
STARCORE 140
1
3.1 PREZENTARE GENERALĂ 2
3.1 PREZENTARE GENERALĂ
2

SC140 - INTRODUCERE

SC140 - INTRODUCERE Procesorul de semnal StarCore 140, produs al firmei Freescale, prezint ă un nou
SC140 - INTRODUCERE Procesorul de semnal StarCore 140, produs al firmei Freescale, prezint ă un nou
SC140 - INTRODUCERE Procesorul de semnal StarCore 140, produs al firmei Freescale, prezint ă un nou
SC140 - INTRODUCERE Procesorul de semnal StarCore 140, produs al firmei Freescale, prezint ă un nou

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.

3

SC140 - INTRODUCERE

SC140 - INTRODUCERE Level-1 Memory Expansion Area Unified Data and Program Memory ROM, RAM Star*Core 140
SC140 - INTRODUCERE Level-1 Memory Expansion Area Unified Data and Program Memory ROM, RAM Star*Core 140
SC140 - INTRODUCERE Level-1 Memory Expansion Area Unified Data and Program Memory ROM, RAM Star*Core 140
SC140 - INTRODUCERE Level-1 Memory Expansion Area Unified Data and Program Memory ROM, RAM Star*Core 140

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 (VLES TM ) Model 2
DSP Engine
True 16-bit instruction set
Variable Length Execution Set (VLES TM ) Model
2 Address
4 Arithmetic
& Logic Units
Arithmetic Units

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

System

Expansion Area

External Memory

Interface

DMA

CACHE

Interrupt Ctrl.

Level-2 Memory

Expansion

Schema bloc a unei configuraţii tipice SoC (System On Chip)

4

SC140 – CARACTERISTICI SC140 – CARACTERISTICI frecvenţa de ceas a nucleului este 300 MHz la
SC140 – CARACTERISTICI
SC140 – CARACTERISTICI
frecvenţa de ceas a nucleului este
300 MHz la 1,5V şi
120 MHz la 0,9V;
4 unităţi aritmetico-logice (ALU) care includ
circuite dedicate de înmulţire şi adunare şi
unităţi de operare pe bit;
până la 1200 Milioane operaţii MAC pe secundă
(1.2 GMACS);
16 registre generale de date pe 40 biţi pentru
operaţii cu numere întregi şi fracţionare;
fiecare ALU conţine
până la 3000 RISC MIPS (MAC se consideră ca
2 instrucţiuni RISC);
un circuit MAC (Multiply and ACcumulate) şi
un shifter (structură de deplasare) care pot lucra cu
orice registru de date de 40 biţi;
5
6
SC140 – CARACTERISTICI
SC140 – CARACTERISTICI
2 unităţi de adresare
Pot realiza operaţii aritmetice cu numere întregi
suport hardware pentru tipurile de date întreg
şi fracţionar;
Moduri de adresare specifice procesoarelor de
semnal;
memoria poate fi accesată în cuvinte cu
dimensiune variabilă (1 până la 4 octeţi);
16 Registre de adresă pe 32 biţi, dintre care 8 pot
fi folosite ca adrese de bază;
memorie comună de program şi de date
magistrale de program: PAB, PDB
4 Registre de offset pentru adrese şi
2 magistrale de date: XABA, XDBA XABB, XDBB;
4 Registre pentru adresare circulară;
7
8

SC140 – CARACTERISTICI

SC140 – CARACTERISTICI Set de instruc ţ iuni ortogonal instruc ţ iuni codate pe 16 bi
SC140 – CARACTERISTICI Set de instruc ţ iuni ortogonal instruc ţ iuni codate pe 16 bi
SC140 – CARACTERISTICI Set de instruc ţ iuni ortogonal instruc ţ iuni codate pe 16 bi
SC140 – CARACTERISTICI Set de instruc ţ iuni ortogonal instruc ţ iuni codate pe 16 bi

Set de instrucţiuni ortogonal

instrucţiuni codate pe 16 biţi;

Fiecare instrucţiune codifică o operaţie elementară;

Model de execuţie Variable Length Execution Set (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)

9

SC140 – SCHEMA BLOC A NUCLEULUI

SC140 – SCHEMA BLOC A NUCLEULUI Spaţiul unificat de memorie pentru date şi program 64 64
SC140 – SCHEMA BLOC A NUCLEULUI Spaţiul unificat de memorie pentru date şi program 64 64
SC140 – SCHEMA BLOC A NUCLEULUI Spaţiul unificat de memorie pentru date şi program 64 64
SC140 – SCHEMA BLOC A NUCLEULUI Spaţiul unificat de memorie pentru date şi program 64 64
Spaţiul unificat de memorie pentru date şi program 64 64 128 32 32 32 128
Spaţiul unificat de memorie pentru
date şi program
64
64
128
32
32
32
128
Secvenţiator
Setul de registre pentru
Generarea Adreselor
Registre ALU
OnCE
de Program
pentru date
Accelerator
pentru setul de
instrucţiuni
Controlul
Puterii
StarCore 140
Generatorul
de ceas
2 AAU
BMU
4 ALU
24
PLL
128
Instruction Bus
PDB
PAB
XABA
XABB
XDBA
XDBB

10

SC140 – SCHEMA BLOC A NUCLEULUI

SC140 – SCHEMA BLOC A NUCLEULUI move.w #$100,r0 move.w #$200,r1 MEMORIE $200 move.4f (r0)+,d0:d1:d2:d3 16 16
SC140 – SCHEMA BLOC A NUCLEULUI move.w #$100,r0 move.w #$200,r1 MEMORIE $200 move.4f (r0)+,d0:d1:d2:d3 16 16
SC140 – SCHEMA BLOC A NUCLEULUI move.w #$100,r0 move.w #$200,r1 MEMORIE $200 move.4f (r0)+,d0:d1:d2:d3 16 16
SC140 – SCHEMA BLOC A NUCLEULUI move.w #$100,r0 move.w #$200,r1 MEMORIE $200 move.4f (r0)+,d0:d1:d2:d3 16 16

move.w #$100,r0

move.w #$200,r1 MEMORIE $200 move.4f (r0)+,d0:d1:d2:d3 16 16 16 16 $100 move.4f (r1)+,d4:d5:d6:d7 loopstart0 64
move.w #$200,r1
MEMORIE
$200
move.4f (r0)+,d0:d1:d2:d3
16
16
16
16
$100
move.4f (r1)+,d4:d5:d6:d7
loopstart0
64
64
[
mac d0,d4,d8
mac d1,d5,d9
Registre
Registre
XDBA
date
adresa
D15D0
XDBB
ALU1
mac d2,d6,d10 mac d3,d7,d11
move.4f (r0)+,d0:d1:d2:d3
move.4f (r1)+,d4:d5:d6:d7 ]
R0=$100R0
D1
R1=$200
D2
loopend0
D3
ALU1
[
add d8,d9,d0 add d10,d11,d1 ]
R7
D4
XABA
D5
add d0,d1,d0
ALU1
D6
XABB
move.f d0,($400)
AAU
D7
ALU1
D15

11

3.2 UNITATEA ARITMETICĂ ŞI LOGICĂ PENTRU DATE 12
3.2 UNITATEA ARITMETICĂ ŞI
LOGICĂ PENTRU DATE
12
SC140 – FORMATUL DATELOR SC140 – FORMATUL DATELOR Reprezentarea datelor se face în complement faţă
SC140 – FORMATUL DATELOR
SC140 – FORMATUL DATELOR
Reprezentarea datelor se face în complement
faţă de 2:
numere fracţionare cu semn:
pe 16 biţi:
numere fracţionare cu semn
numere întregi
-2 0
2
–1
2
–2
2
–14
2
–15
s
.
fracţie
cu semn
15
14
13
•••
1
0
fără semn
domeniu de valori: -1:2 -15 :1-2 -15
Precizia de reprezentare poate fi
pe 32 biţi:
simplă: 1 word = 16 biţi
dublă: 2 words = 32 biţi
-2 0
2
–1
2
–2
2
–30
2
–31
s
.
fracţie
31
30
29
•••
1
0
domeniu de valori: -1:2 -31 :1-2 -31
13
14
SC140 – FORMATUL DATELOR
SC140 – FORMATUL DATELOR
numere întregi cu semn:
numere întregi fără semn:
pe 16 biţi:
pe 16 biţi:
-2 15
2
14
2
13
2
1
2
0
2
15
2
14
2
13
2
1
2
0
s
întreg
.
întreg
.
15
14
13
•••
1
0
15
14
13
•••
1
0
domeniu de valori: -2 15 :1:2 15 -1
domeniu de valori: 0:1:2 16 -1
pe 32 biţi:
pe 32 biţi:
-2 31
2
30
2
29
2
1
2
0
2
31
2
30
2
29
2 1
2
0
s
întreg
.
întreg
.
31
30
29
•••
1
0
31
30
29
•••
1 0
domeniu de valori: -2 31 :1:2 31 -1
domeniu de valori: 0:1:2 32 -1
15
16
ARHITECTURA ALU REGISTRELE ALU LIMIT EXT HP LP Magistrala de date 1 (XDBA) L0 D0.e
ARHITECTURA ALU
REGISTRELE ALU
LIMIT
EXT
HP
LP
Magistrala de date 1 (XDBA)
L0
D0.e
D0.h
D0.l
D0
Magistrala de date 2 (XDBB)
L1
D1.e
D1.h
D1.l
D1
L2
D2
64
64
L3
D3
L4
D4
scalare / limitare (8)
L5
D5
64
64
L6
D6
L7
D7
40
40 40
40 40
40 40
40
L8
D8
L9
D9
L10
D10
Set de Registre de date (16)
L11
D11
L12
D12
40
40 40
40 40
40
40 40
40
40 40
40
L13
D13
L14
D14
L15
D15.e
D15.h
D15.l
D15
ALU
ALU
ALU
ALU
39
32
31
16
15
0
1bit
40 biţi
17
18
REGISTRELE DE DATE: D0 – D15
REGISTRELE DE DATE: D0 – D15
numere întregi cu semn (pe 40 biţi):
numere raţionale cu semn (pe 40 biţi):
-2 39
2 32
2 31
2 16
2 15
2 1
2
0
2 -1
2 -15
2 -16
2 -31
2 0
-2 8 2 7 •••
•••
•••
•••
•••
•••
Dn.e
Dn.h
Dn.l
.
Dn.e
.
Dn.h
Dn.l
39
32
31
16
15
0
39
38
•••
32
31
30
•••
16
15
•••
0
•••
•••
•••
ÎNTREG
FRACŢIE
domeniu de valori: -2 39 :1:2 39 -1
domeniu de valori: -256:2 -31 :256-2 -31
19
20

REGISTRELE DE DATE: D0 – D15

REGISTRELE DE DATE: D0 – D15 Pot fi folosite în instruc ţ iuni ca: operanzi sursa
REGISTRELE DE DATE: D0 – D15 Pot fi folosite în instruc ţ iuni ca: operanzi sursa
REGISTRELE DE DATE: D0 – D15 Pot fi folosite în instruc ţ iuni ca: operanzi sursa
REGISTRELE DE DATE: D0 – D15 Pot fi folosite în instruc ţ iuni ca: operanzi sursa

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

21

TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE

TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Întreg pe 16 bi ţ i în memorie:
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Întreg pe 16 bi ţ i în memorie:
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Întreg pe 16 bi ţ i în memorie:
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Întreg pe 16 bi ţ i în memorie:

Întreg pe 16 biţi în memorie:

 

-2 15 2 14

 

2 0

MOVE.W (Rn),Dn

 

s

 

întreg

.

-2 39

2 32

2 31

2 16

2 15 2 14

 

2 0

s

••

s

••

s

s

 

întreg

.

 

Dn.e

 

Dn.h

   

Dn.l

Reprezentarea în registrele de date (D0 – D15) pe 40 de biţi (cu extensie de semn)

22

TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE

TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Frac ţ ie pe 16 bi ţ i
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Frac ţ ie pe 16 bi ţ i
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Frac ţ ie pe 16 bi ţ i
TRANSFERUL DATELOR DIN MEMORIE ÎN REGISTRELE DE DATE Frac ţ ie pe 16 bi ţ i

Fracţie pe 16 biţi în memorie:

 

-2 0

2 -1

2 -15

s

.

fracţie

 

MOVE.F (Rn),Dn

-2 8

2 1

2 0

2 -1

2 -15

2 -16

2 -31

s

••

s

.

fracţie

0

0

•••

0

 

Dn.e

 

Dn.h

 

Dn.l

Reprezentarea în registrele de date (D0 – D15) pe 40 de biţi (cu extensie de semn şi completare cu zerouri în LP)

23

TRANSFERUL DATELOR DIN REGISTRELE DE DATE ÎN MEMORIE

TRANSFERUL DATELOR DIN REGISTRELE DE DATE ÎN MEMORIE La transferul datelor din registrele D0 – D15
TRANSFERUL DATELOR DIN REGISTRELE DE DATE ÎN MEMORIE La transferul datelor din registrele D0 – D15
TRANSFERUL DATELOR DIN REGISTRELE DE DATE ÎN MEMORIE La transferul datelor din registrele D0 – D15
TRANSFERUL DATELOR DIN REGISTRELE DE DATE ÎN MEMORIE La transferul datelor din registrele D0 – D15

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

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.

24

LIMITAREA

LIMITAREA f ă r ă limitare: MOVE.F Dn,(Rn) 1 Ln -2 8 2 1 2 0
LIMITAREA f ă r ă limitare: MOVE.F Dn,(Rn) 1 Ln -2 8 2 1 2 0
LIMITAREA f ă r ă limitare: MOVE.F Dn,(Rn) 1 Ln -2 8 2 1 2 0
LIMITAREA f ă r ă limitare: MOVE.F Dn,(Rn) 1 Ln -2 8 2 1 2 0

fără limitare:

MOVE.F Dn,(Rn)

1
1

Ln

-2 8

2 1

2 0 . 2 -1 2 -2

 

2 -15

2 -16

2 -31

0 •••

0

1

. 0

0

•••

0

0

0

•••

0

Dn.e

 

Dn.h

 

Dn.l

 

-2 0 .2 -1 2 -2

 

2 -15

Rezultatul în memorie

1

. 0

0

•••

0

= –1.0

 

Rezultatul în registru

= 1.0

|Eroare| = 2.0

valoarea scrisă în memorie ca fracţie pe 16 biţi are MSB =1 ceea ce corespunde numărului negativ -1.

25

LIMITAREA

LIMITAREA cu limitare: MOVES .F Dn,(Rn) 1 Ln -2 8 2 1 2 0 . 2
LIMITAREA cu limitare: MOVES .F Dn,(Rn) 1 Ln -2 8 2 1 2 0 . 2
LIMITAREA cu limitare: MOVES .F Dn,(Rn) 1 Ln -2 8 2 1 2 0 . 2
LIMITAREA cu limitare: MOVES .F Dn,(Rn) 1 Ln -2 8 2 1 2 0 . 2

cu limitare:

MOVES.F Dn,(Rn)

1
1

Ln

-2 8

2 1

2 0 . 2 -1 2 -2

 

2 -15

2 -16

2 -31

0 •••

0

1

. 0

0

•••

0

0

0

•••

0

Dn.e

 

Dn.h

 

Dn.l

 

-2 0 .2 -1 2 -2

 

2 -15

Rezultatul în memorie

0

.

1

1

•••

1

= +0.99 9

 

Rezultatul în registru

= 1.0

|Eroare| = 0.00

se limitează rezultatul la valoarea maximă pozitivă (sau minimă negativă) care poate fi reprezentată în memorie pentru o fracţie pe 16 biţi

1

26

LIMITAREA

LIMITAREA este activat ă numai pentru instruc ţ iunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L ; se desf
LIMITAREA este activat ă numai pentru instruc ţ iunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L ; se desf
LIMITAREA este activat ă numai pentru instruc ţ iunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L ; se desf
LIMITAREA este activat ă numai pentru instruc ţ iunile MOVES.F, MOVES.2F, MOVES.4F, MOVES.L ; se desf

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.

27

LIMITAREA - EXEMPLU

LIMITAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0020,r0 r0 $0000 0030 moveu.w #$7fff,d0.h d0 $7fff
LIMITAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0020,r0 r0 $0000 0030 moveu.w #$7fff,d0.h d0 $7fff
LIMITAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0020,r0 r0 $0000 0030 moveu.w #$7fff,d0.h d0 $7fff
LIMITAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0020,r0 r0 $0000 0030 moveu.w #$7fff,d0.h d0 $7fff

Instrucţiune

Rezultat

move.w #$0020,r0

r0

$0000 0030

moveu.w #$7fff,d0.h

d0

$7fff 0000

moveu.w #$7fff,d1.h

d1

$7fff 0000

add d0,d1,d3

d3 $1:00 fffe 0000

move.f d3,(r0)+

($0030)

$fffe

moves.f d3,(r0)

($0032)

$7fff

Observaţii

adresa dest.

valoarea max.

pozitivă

apare depăşire, bitul L3 e setat

fără limitare

cu limitare

28

SCALAREA

SCALAREA Modul de scalare se seteaz ă prin intermediul bi ţ ilor S0 ş i S1
SCALAREA Modul de scalare se seteaz ă prin intermediul bi ţ ilor S0 ş i S1
SCALAREA Modul de scalare se seteaz ă prin intermediul bi ţ ilor S0 ş i S1
SCALAREA Modul de scalare se seteaz ă prin intermediul bi ţ ilor S0 ş i S1

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;

29

SCALAREA

SCALAREA S1 S0 Modul de scalare 0 0 F ă r ă scalare 0 1 Scalare
SCALAREA S1 S0 Modul de scalare 0 0 F ă r ă scalare 0 1 Scalare
SCALAREA S1 S0 Modul de scalare 0 0 F ă r ă scalare 0 1 Scalare
SCALAREA S1 S0 Modul de scalare 0 0 F ă r ă scalare 0 1 Scalare

S1

S0

Modul de scalare

0

0

Fără scalare

0

1

Scalare în jos (împărţire cu 2)

1

0

Scalare în sus (înmulţire cu 2)

30

SCALAREA - EXEMPLU

SCALAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0030,r0 r0 $0000 0030 moveu.w #$0200,d0.h d0 $0200
SCALAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0030,r0 r0 $0000 0030 moveu.w #$0200,d0.h d0 $0200
SCALAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0030,r0 r0 $0000 0030 moveu.w #$0200,d0.h d0 $0200
SCALAREA - EXEMPLU Instruc ţ iune Rezultat move.w #$0030,r0 r0 $0000 0030 moveu.w #$0200,d0.h d0 $0200

Instrucţiune

Rezultat

move.w #$0030,r0

r0 $0000 0030

moveu.w #$0200,d0.h

d0 $0200 0000

bmset #$10,sr.l

sr $0000 0010

moves.f d0,(r0)+

($0030) $0100

move.l #$00e40020,sr

sr $00e4 0020

move.f d0,(r0)

($0032) $0400

Observaţii

setare mod de scalare în jos

împărţire cu 2

setare mod de scalare in sus

înmulţire cu 2

31

Esti pasionat de software? Inscrie-te la Freescale Fixed-Point Contest! Intra pe www.freescale.ro, Freescale Fixed-Point
Esti pasionat de software?
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.
32

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Multiply and Accumulate (MAC) con ţ ine un
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Multiply and Accumulate (MAC) con ţ ine un
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Multiply and Accumulate (MAC) con ţ ine un
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Multiply and Accumulate (MAC) con ţ ine un

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.

33

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac

Adunarea şi scăderea se fac similar pentru operanzi întregi sau fracţionari

ADD Da,Db,Dn

Adunarea Da + Db Dn

add d0,d1,d2

D0

$00 72E3 8F2A

D1

$00 7216 EE3C

L2:D2 $1:$00 E4FA 7D66

34

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Adunarea ş i sc ă derea se fac

Adunarea şi scăderea se fac similar pentru operanzi întregi sau fracţionari

SUB Da,Db,Dn

Scăderea Db – Da Dn

sub d1,d0,d2

D0

$00 0000 0005

D1

$00 0000 0008

L2:D2 $0:$FF FFFF FFFD

35

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Alinierea rezultatului este diferit ă pentru înmul ţ
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Alinierea rezultatului este diferit ă pentru înmul ţ
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Alinierea rezultatului este diferit ă pentru înmul ţ
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Alinierea rezultatului este diferit ă pentru înmul ţ

Alinierea rezultatului este diferită pentru înmulţirea operanzilor întregi şi fracţionari

Înmulţire de numere întregi

Înmulţire de numere fracţionare

. S . S X
. S
.
S
X

Înmulţire cu semn

. . . . S S MSP LSP
.
.
.
.
S S
MSP
LSP

2N–1 biţi rezultat Extensia semnului

. S
.
S
. S
.
S
X
X

Înmulţire cu semn

. . . S . MSP LSP 0
.
.
.
S
. MSP
LSP
0

2N–1 biţi rezultat Completare cu 0

2N Biţi

2N Biţi

36

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR

Instrucţiunile MPY, MAC, MPYR şi MACR execută înmulţirea numerelor fracţionare

Înmulţirea numerelor fracţionale

 

MPY Da,Db,Dn

Da.H * Db.H Dn

 

0.010

$2000

1/4

mpy d4,d5,d6

D4

$FF C000 0000

x 1.100

$C000

–1/2

D5

$00 2000 0000

1.111

$F000

–1/8

L6:D6 $0:$FF F000 0000

37

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile MPY , MAC , MPYR

Instrucţiunile MPY, MAC, MPYR şi MACR execută înmulţirea numerelor fracţionare

Înmulţirea cu acumulare

 

MAC ±Da,Db,Dn

Dn ± (Da.H*Db.H) Dn

 

0.001

$1000

mac d4,d5,d6

x 0.011

$3000

D4

D5

$00 1000 0000 $00 3000 0000

 

0.0000110

$0600

L6:D6 $0:$00 4000 0000

+0.1000000

$4000

$0:$00 4600 0000

 
 

0.1000110

$4600

38

UNITATEA DE ÎNMULŢIRE ŞI ACUMULARE

UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile IMPY ş i IMAC execut
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile IMPY ş i IMAC execut
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile IMPY ş i IMAC execut
UNITATEA DE ÎNMUL Ţ IRE Ş I ACUMULARE Instruc ţ iunile IMPY ş i IMAC execut

Instrucţiunile IMPY şi IMAC execută înmulţirea numerelor întregi

 

Înmulţirea numerelor întregi

 

IMPY Da,Db,Dn

Da.L * Db.L Dn

impy d3,d4,d0

 

514

$0202

D3

$00 0000 0202

x -2

x $FFFE

D4 $FF FFFF FFFE

 

-1029

$FBFC

L0:D0 $0:$FF FFFF FBFC

39

ROTUNJIREA

ROTUNJIREA Se face în cazul instruc ţ iunilor RND , ADR , SBR , MPYR ,
ROTUNJIREA Se face în cazul instruc ţ iunilor RND , ADR , SBR , MPYR ,
ROTUNJIREA Se face în cazul instruc ţ iunilor RND , ADR , SBR , MPYR ,
ROTUNJIREA Se face în cazul instruc ţ iunilor RND , ADR , SBR , MPYR ,

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.

40

SATURAREA ARITMETICĂ SATURAREA ARITMETICĂ - EXEMPLU Rezultatul scris în urma unei instrucţiuni ALU este limitat
SATURAREA ARITMETICĂ
SATURAREA ARITMETICĂ - EXEMPLU
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).
Instrucţiune
Rezultat
Observaţii
bmset #$0004,sr.l
SR $00e4 0004
setare saturare
Modul de lucru cu saturare aritmetică este
setat prin bitul SM din Status Register (SR).
moveu.w #$7fff,d0.h
d0 $7fff 0000
val. max. pozitivă
moveu.w #$7fff,d1.h
d1 $7fff 0000
val. max. pozitivă
add d0,d1,d3
d3 $0:00:7fff ffff
apare depăşire
rezultat saturat
emr $0000 0004
bitul de depăşire
41
42
UNITATEA LOGICĂ
UNITATEA LOGICĂ - INSTRUCŢIUNI
Bit Field Unit (BFU)
Instrucţiune
Descriere
contine un shifter paralel bidirectional (40 de biţi) o
unitate de mascare şi o unitate logică.
AND
ASLL
Folosit pentru:
ASLW
ASRR
Deplasare multi-bit stînga/dreapta (aritmetică sau
logică)
ASRW
CLB
Rotaţie cu un bit (stînga sau dreapta)
EOR
Inserare şi extragere de cîmp de biţi
EXTRACT
Numărarea biţilor cei mai semnificativi (de 1 sau 0)
EXTRACTU
Operaţii logice
INSERT
Operaţii de extensie de semn sau de zero
LSLL
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
43
44

UNITATEA LOGICĂ - INSTRUCŢIUNI

UNITATEA LOGIC Ă - INSTRUC Ţ IUNI Instruc ţ iune Descriere LSR Logical shift right by
UNITATEA LOGIC Ă - INSTRUC Ţ IUNI Instruc ţ iune Descriere LSR Logical shift right by
UNITATEA LOGIC Ă - INSTRUC Ţ IUNI Instruc ţ iune Descriere LSR Logical shift right by
UNITATEA LOGIC Ă - INSTRUC Ţ IUNI Instruc ţ iune Descriere LSR Logical shift right by

Instrucţiune

Descriere

LSR

Logical shift right by one bit

LSRR

Multi-bit logical shift right

LSRW

Word logical shift right (16-bit shift)

NOT

One’s complement (inversion)

OR

Bit-wise inclusive OR

ROL

Rotate one bit left through the carry bit

ROR

Rotate one bit right through the carry bit

SXT.B .L .W

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

ZXT.B .L .W

45

3. UNITATEA DE ADRESARE (ADDRESS GENERATING UNIT) 46
3. UNITATEA DE ADRESARE
(ADDRESS GENERATING UNIT)
46
ARHITECTURA AGU
ARHITECTURA AGU

47

MODELUL DE PROGRAMARE AGU

MODELUL DE PROGRAMARE AGU 31 0 31 0 R0   N0 R1   N1 R2  
MODELUL DE PROGRAMARE AGU 31 0 31 0 R0   N0 R1   N1 R2  
MODELUL DE PROGRAMARE AGU 31 0 31 0 R0   N0 R1   N1 R2  
MODELUL DE PROGRAMARE AGU 31 0 31 0 R0   N0 R1   N1 R2  

31

0

31

0

R0

 

N0

R1

 

N1

R2

 

N2

R3

 

N3

R4

R5

OFFSET REGISTERS

R6

R7

31

0

SP (NSP, ESP)

   

M0

ADDRESS REGISTERS

 

M1

31

0

 

M2

R8 / B0

 

M3

R9 / B1

 

MCTL

R10 / B2

R11 / B3

MODIFIER and MODIFIER CONTROL REGISTERS

R12 / B4

R13 / B5

R14 / B6

R15 / B7

ADDRESS REGISTERS / BASE ADDRESS REGISTERS

48

REGISTRELE AGU

REGISTRELE AGU Rn = registru de adrese R0-R15 Bn = registru de adrese de baza B0-B7
REGISTRELE AGU Rn = registru de adrese R0-R15 Bn = registru de adrese de baza B0-B7
REGISTRELE AGU Rn = registru de adrese R0-R15 Bn = registru de adrese de baza B0-B7
REGISTRELE AGU Rn = registru de adrese R0-R15 Bn = registru de adrese de baza B0-B7

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)

49

TRANSFERUL PE MAGISTRALELE DE DATE

TRANSFERUL PE MAGISTRALELE DE DATE 32 XABA XDBA 64 Memoria Nucleul comună 32 SC140 XABB (date/program)
TRANSFERUL PE MAGISTRALELE DE DATE 32 XABA XDBA 64 Memoria Nucleul comună 32 SC140 XABB (date/program)
TRANSFERUL PE MAGISTRALELE DE DATE 32 XABA XDBA 64 Memoria Nucleul comună 32 SC140 XABB (date/program)
TRANSFERUL PE MAGISTRALELE DE DATE 32 XABA XDBA 64 Memoria Nucleul comună 32 SC140 XABB (date/program)
32 XABA XDBA 64 Memoria Nucleul comună 32 SC140 XABB (date/program) XDBB 64
32
XABA
XDBA
64
Memoria
Nucleul
comună
32
SC140
XABB
(date/program)
XDBB
64

Transferurile între memorie şi nucleu se pot face pe două magistrale de date de 64 biţi.

Memoria este adresabilă la nivel de byte.

50

TRANSFERUL PE MAGISTRALELE DE DATE

TRANSFERUL PE MAGISTRALELE DE DATE Instruc ţ iunile MOVE pot transfera date reprezentate pe: byte (8
TRANSFERUL PE MAGISTRALELE DE DATE Instruc ţ iunile MOVE pot transfera date reprezentate pe: byte (8
TRANSFERUL PE MAGISTRALELE DE DATE Instruc ţ iunile MOVE pot transfera date reprezentate pe: byte (8
TRANSFERUL PE MAGISTRALELE DE DATE Instruc ţ iunile MOVE pot transfera date reprezentate pe: byte (8

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

51

TRANSFERUL PE MAGISTRALELE DE DATE

TRANSFERUL PE MAGISTRALELE DE DATE 63 8bi ţ i 0         $0 MOVE.B
TRANSFERUL PE MAGISTRALELE DE DATE 63 8bi ţ i 0         $0 MOVE.B
TRANSFERUL PE MAGISTRALELE DE DATE 63 8bi ţ i 0         $0 MOVE.B
TRANSFERUL PE MAGISTRALELE DE DATE 63 8bi ţ i 0         $0 MOVE.B

63

8biţi

0

       

$0

MOVE.B ($4),D0

 

$8

   

$10

MOVE.W ($16),D0

   

$18

MOVE.2W (R0),D0:D1

;R0=$18

   

$20

MOVE.4W (R0),D0:D1:D2:D3

   

$28

;R0=$20

   

$30

MOVE.L ($34),D0

   

$38 MOVE.2L (R0),D0:D1

;R0=$38

64 biţi

 

MOVE.F accesează memoria la fel ca MOVE.W

52

TRANSFERUL PE MAGISTRALELE DE DATE UNITĂŢILE DE CALCUL A ADRESELOR Cele 2 unităţi AAU sunt
TRANSFERUL PE MAGISTRALELE DE DATE
UNITĂŢILE DE CALCUL A ADRESELOR
Cele 2 unităţi AAU sunt identice.
Datele trebuie să fie aliniate în memorie la
adrese multiplu (în octeţi) de lăţimea
magistralei folosită pentru transfer.
Fiecare conţine un sumator pe 32 biţi numit şi
sumator offset ce poate executa următoarele
operaţii:
8 octeţi
$0
MOVE.W ($0),D0
$0
MOVE.W ($1),D0
; greşit
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 ; greşit
53
54
UNITĂŢILE DE CALCUL A ADRESELOR
MODURI DE ADRESARE
Un sumator modulo poate efectua aceleaşi
operaţii ca sumatorul precedent dar modulo M
sau –M, unde M este stocat în registrul de
modificare M0–M3 selectat.
SC140 poate realiza 4 tipuri de moduri de
adresare:
Adresare directă cu registru
Adresare indirectă
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.
Adresare relativă la PC
Alte moduri speciale
55
56
ADRESARE DIRECTĂ ADRESARE INDIRECTĂ CU REGISTRU fără modificare (Rn) move.w #$004f,(r4) cu registru de date
ADRESARE DIRECTĂ
ADRESARE INDIRECTĂ CU REGISTRU
fără modificare
(Rn)
move.w #$004f,(r4)
cu registru de date
sau de control
mac d4,d5,d6
cu post-incrementare
(Rn)+
move.f (r3)+,d2
cu registru de adrese
addl1a r0,r1
cu post-decrementare (Rn)-
move.l (r3)-,d2
post-incrementare cu (Rn)+Ni
offset
move.w d3,(r2)+n3
indexare cu offset
(Rn+Ni)
move.b d6,(r3+n0)
indexare cu registru
de adresă
(Rn+Rm)
move.l (r0+r2)
57
58
ADRESARE INDIRECTĂ CU REGISTRU
ADRESARE RELATIVĂ LA PC
cu deplasament
(Rn+xx)
move.l d4,(r3+$1c)
salt în program relativ la
instrucţiunea curentă
bra _label2
deplasament faţă de
stivă SP
(SP+xx) move.w #$ffff,(sp–$3e)
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

MODURILE DE MODIFICARE A ADRESEI Registrul de control MCTL 31 28 27 24 23 20 19
MODURILE DE MODIFICARE A ADRESEI Registrul de control MCTL 31 28 27 24 23 20 19
MODURILE DE MODIFICARE A ADRESEI Registrul de control MCTL 31 28 27 24 23 20 19
MODURILE DE MODIFICARE A ADRESEI Registrul de control MCTL 31 28 27 24 23 20 19

Registrul de control MCTL

31

28

27

24

23

20

19

16

R7 AM[3:0]

R6 AM[3:0]

R5 AM[3:0]

R4 AM[3:0]

15

12

11

8

7

4

3

0

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

MODURILE DE MODIFICARE A ADRESEI

MODURILE DE MODIFICARE A ADRESEI Semnifica ţ ia bi ţ ilor AM AM3 AM2 AM1 AM0
MODURILE DE MODIFICARE A ADRESEI Semnifica ţ ia bi ţ ilor AM AM3 AM2 AM1 AM0
MODURILE DE MODIFICARE A ADRESEI Semnifica ţ ia bi ţ ilor AM AM3 AM2 AM1 AM0
MODURILE DE MODIFICARE A ADRESEI Semnifica ţ ia bi ţ ilor AM AM3 AM2 AM1 AM0

Semnificaţia biţilor AM

AM3

AM2

AM1

AM0

Modul de modificare al adresei

0

0

0

0

Modificare liniară

0

0

0

1

Modificare cu transport invers (bit-reverse)

1

0

0

0

Modificare modulo – se foloseşte M0

1

0

0

1

Modificare modulo – se foloseşte M1

1

0

1

0

Modificare modulo – se foloseşte M2

1

0

1

1

Modificare modulo – se foloseşte M3

1

1

0

0

Modificare modulo multiplă – M0

1

1

0

1

Modificare modulo multiplă – M1

1

1

1

0

Modificare modulo multiplă – M2

1

1

1

1

Modificare modulo multiplă – M3

62

4. UNITATEA DE CONTROL AL EXECUŢIEI PROGRAMULUI 63
4. UNITATEA DE CONTROL AL
EXECUŢIEI PROGRAMULUI
63

MODELUL DE PROGRAMARE

MODELUL DE PROGRAMARE 31 0 31 0   PC   SR   PROGRAM COUNTER STATUS REGISTER
MODELUL DE PROGRAMARE 31 0 31 0   PC   SR   PROGRAM COUNTER STATUS REGISTER
MODELUL DE PROGRAMARE 31 0 31 0   PC   SR   PROGRAM COUNTER STATUS REGISTER
MODELUL DE PROGRAMARE 31 0 31 0   PC   SR   PROGRAM COUNTER STATUS REGISTER

31

0

31

0

 

PC

 

SR

 

PROGRAM COUNTER

STATUS REGISTER

31

0

31

31

0

EMR

EXCEPTION AND MODE REGISTER

0

SA0

SA1

SA2

SA3

LC0 LC1 LC2 LC3
LC0
LC1
LC2
LC3

START ADDRESS REGISTERS

LOOP COUNTER REGISTERS

64

REGISTRUL DE STARE (SR) REGISTRUL DE EXCEPŢII ŞI MOD (EMR) 31 30-27 26-24 23-21 20
REGISTRUL DE STARE (SR)
REGISTRUL DE EXCEPŢII ŞI MOD (EMR)
31
30-27
26-24
23-21
20
19
18
17-12
11-8
7
6
5
4
3
2
1
0
31-24
23-17
16
15-4
3
2
1
0
SLF
LF[3:0]
Rsvd
I[2:0]
OVE
DI
EXP
Rsvd
VF[3:0]
Rsvd
S
S1
S0
RM
AS
T
C
Reserved
GP[6:0]
BEM
Reserved
NMID
DOVF
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
GP - General Purpose Flags
BEM - Big Endian Memory
NMID - NMI Disable
DOVF - DALU overflow
ILST - Illegal Execution Set
ILN - Illegal Instruction
*Rsvd - Reserved (derivative dependant)
65
66
ETAPELE DE EXECUŢIE PIPELINE
ETAPELE DE EXECUŢIE PIPELINE
PROGRAM
Etapă
Ciclu instructiune
PRE-FETCH
pipeline
1
2
3
4
5
6
7
8
PROGRAM
Pre-fetch
i1
i2
i3
i4
FETCH
DISPATCH
Fetch
i1
i2
i3
i4
& DECODE
ADDRESS
Decode
i1
i2
i3
i4
GENERATION
Address
i1
i2
i3
i4
Lungime pipeline mică
Generation
EXECUTE
Fără întârzieri aritmetice
Timp scurt pentru salturi
Execution
i1
i2
i3
i4
67
68

ETAPELE DE EXECUŢIE PIPELINE

ETAPELE DE EXECU Ţ IE PIPELINE Pre-fetch Se genereaz ă adresa pentru citirea din memoria de
ETAPELE DE EXECU Ţ IE PIPELINE Pre-fetch Se genereaz ă adresa pentru citirea din memoria de
ETAPELE DE EXECU Ţ IE PIPELINE Pre-fetch Se genereaz ă adresa pentru citirea din memoria de
ETAPELE DE EXECU Ţ IE PIPELINE Pre-fetch Se genereaz ă adresa pentru citirea din memoria de

Pre-fetch

Se generează adresa pentru citirea din memoria de program

Se actualizează fetch counter (FC)

Fetch

Se citesc opt cuvinte din memorie (fetch set)

Dispatch

Se extrag instrucţiunile pentru execuţie

Se decodifică instrucţiunile AGU

Generare

Se decodifică instrucţiunile DALU

adrese

Se generează adresele pentru transferul datelor

Se calculează noile valori pentru registrele de adresă

Execuţie

Se citesc operanzii sursă (pentru DALU sau memorie)

Se execută operaţiile aritmetice (înmulţire si adunare)

Se scriu rezultatele în registrele destinaţie

69

FETCH SET –> SET DE EXECUŢIE

FETCH SET –> SET DE EXECU Ţ IE Spaţiul Unificat de memorie Date/Program P A B
FETCH SET –> SET DE EXECU Ţ IE Spaţiul Unificat de memorie Date/Program P A B
FETCH SET –> SET DE EXECU Ţ IE Spaţiul Unificat de memorie Date/Program P A B
FETCH SET –> SET DE EXECU Ţ IE Spaţiul Unificat de memorie Date/Program P A B
Spaţiul Unificat de memorie Date/Program
Spaţiul Unificat de memorie
Date/Program

PAB

32

128

PDB

Nucleu SC140
Nucleu SC140

Adresa pe 32-biţi

128-bit Fetch Set Eight-word Fetch Set

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.

70

FETCH SET –> SET DE EXECUŢIE

FETCH SET –> SET DE EXECU Ţ IE Program Memory Data Bus - PDB Instruction Fetch
FETCH SET –> SET DE EXECU Ţ IE Program Memory Data Bus - PDB Instruction Fetch
FETCH SET –> SET DE EXECU Ţ IE Program Memory Data Bus - PDB Instruction Fetch
FETCH SET –> SET DE EXECU Ţ IE Program Memory Data Bus - PDB Instruction Fetch

Program Memory Data Bus - PDB

–> SET DE EXECU Ţ IE Program Memory Data Bus - PDB Instruction Fetch Set (8

Instruction Fetch Set (8 cuvinte)

Instr

Instr

Instr

Instr

Instr

Instr

Instr

Instr

#N

#N+1

#N+2

#N+3

#N+4

#N+5

#N+6

#N+7

Set de execuţie de lungime variabilă

VLES (Variable Length Execution Set) Execution Set)

Instr Instr #N #N+1 End of VLES #M-1 7 words
Instr
Instr
#N
#N+1
End of VLES #M-1
7 words

Instr

Instr

Instr

Instr

#N+2

#N+3

#N+4

#N+5

VLES #M

4 words

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

71

GRUPAREA INSTRUCŢIUNILOR

GRUPAREA INSTRUC Ţ IUNILOR SC140 con ţ ine 4 ALU ş i 2 AGU ceea ce
GRUPAREA INSTRUC Ţ IUNILOR SC140 con ţ ine 4 ALU ş i 2 AGU ceea ce
GRUPAREA INSTRUC Ţ IUNILOR SC140 con ţ ine 4 ALU ş i 2 AGU ceea ce
GRUPAREA INSTRUC Ţ IUNILOR SC140 con ţ ine 4 ALU ş i 2 AGU ceea ce

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:

macr -d0,d1,d7

and d4,d5

move.l (r0)+n0,r6 adda r2,r3

Instr DALU

Instr DALU

Instr AGU

Instr AGU

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

EXECUŢIA BUCLELOR EXECUŢIA BUCLELOR START ADDRESS REGISTERS Bucla lungă Bucla scurtă (două seturi de execuţie)
EXECUŢIA BUCLELOR
EXECUŢIA BUCLELOR
START ADDRESS REGISTERS
Bucla lungă
Bucla scurtă (două seturi de execuţie)
SA0
_start0
dosetup0 _start0
doen0 #$10
move.w (r3)+,d1
skipls _end0
doensh0 #$10
LOOP COUNTER REGISTERS
loopstart0
LC0
$10
SA
mac d0,d1,d2
loopstart0
LA
add d5,d6,d4
move.w (r0)+,d0
move.w (r1)+,d5
LPMARKB
STATUS REGISTER
_start0
loopend0
1
SA
mac d0,d1,d2 move.w (r0)+,d0
SLF LF0 LF1 LF2 LF3
Bucla scurtă (un singur set de execuţie)
add d5,d6,d4 move.w (r1)+,d5
doensh0 #$10
sub d3,d2,d4 inc d5
mac d0,d1,d6 move.w (r0)+,d7
sub d5,d4,d4 inc d7
LPMARKB
loopstart0
LA
SA, LA
mac d0,d1,d2
move.w (r0)+,d0
LPMARKA
loopend0
loopend0
_end0
73
74
EXECUŢIA BUCLELOR
STIVA
Buclele pot fi intercalate una intr-alta
Normal mode stack:
Intercalarea se face in ordine crescătoare astfel
că o buclă poate fi inclusă intr-o buclă cu
număr mai mic:
NSP
Increasing
1
ShadowShadow Shadow NSPNSP NSP
Last stacked value - 8 bytes
loop0
addresses
Valid bit
loop2
Exception mode stack:
loop3
ESP
Increasing
1
ShadowShadow Shadow ESPESP ESP
Last stacked value - 8 bytes
addresses
Valid bit
75
76

STIVA

STIVA PUSH De De → (SP) SP + 8 → SP PUSH Do Do → (SP+4)
STIVA PUSH De De → (SP) SP + 8 → SP PUSH Do Do → (SP+4)
STIVA PUSH De De → (SP) SP + 8 → SP PUSH Do Do → (SP+4)
STIVA PUSH De De → (SP) SP + 8 → SP PUSH Do Do → (SP+4)

PUSH De

De (SP) SP + 8 SP

PUSH Do

Do (SP+4) SP + 8 SP

SP De SP Do
SP
De
SP
Do

Increasing

addresses

Increasing

addresses

77

STIVA

STIVA POP De (SP - 8) → De SP-8 → SP POP Do (SP - 4)
STIVA POP De (SP - 8) → De SP-8 → SP POP Do (SP - 4)
STIVA POP De (SP - 8) → De SP-8 → SP POP Do (SP - 4)
STIVA POP De (SP - 8) → De SP-8 → SP POP Do (SP - 4)

POP De

(SP - 8) De SP-8 SP

POP Do

(SP - 4) Do SP-8 SP

SP De SP Do
SP
De
SP
Do

Increasing

addresses

Increasing

addresses

78

STIVA

STIVA Exist ă instruc ţ iuni speciale pentru a accesa stiva normal ă , inclusiv în
STIVA Exist ă instruc ţ iuni speciale pentru a accesa stiva normal ă , inclusiv în
STIVA Exist ă instruc ţ iuni speciale pentru a accesa stiva normal ă , inclusiv în
STIVA Exist ă instruc ţ iuni speciale pentru a accesa stiva normal ă , inclusiv în

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

dacă SP curent este ESP, atunci OSP va fi NSP

TFRA R0,OSP

79