20
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 Memory ROM, RAM DSP Engine True 16-bit instruction set Star*Core 140 DSP Core System External Memory DMA CACHE Peripheral and Accelerators Expansion Area Standard Input/Output Peripherals Application Specific Accelerators General Purpose Programmable Accelerator 4 Arithmetic Expansion Area Interface Interrupt Ctrl. Variable Length Execution Set (VLES TM ) Model Level-2 Memory Expansion 2 Address Arithmetic Units & Logic Units Schema bloc a unei configuraţii tipice SoC (System On Chip)

CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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)

Page 2: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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;

Page 3: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 4: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 5: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 6: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 7: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 8: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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.

Page 9: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 10: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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.

Page 11: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 12: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 13: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 14: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 15: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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ă

Page 16: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 17: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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ă

Page 18: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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 ]

Page 19: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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

Page 20: CAPITOLUL 3. 3.1 PREZENTARE GENERALĂ PROCESORUL DE … · 1 CAPITOLUL 3. PROCESORUL DE SEMNAL STARCORE 140 2 3.1 PREZENTARE GENERALĂ 3 SC140 - INTRODUCERE Procesorul de semnal StarCore

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