Arhitectura procesoarelor digitale de semnal (DSP)

Similar documents
9.1. Structura unităţii de I/E. În Figura 9.1 se prezintă structura unui sistem de calcul împreună cu unitatea

GRAFURI NEORIENTATE. 1. Notiunea de graf neorientat

3. CPU 3.1. Setul de regiştri. Copyright Paul GASNER

VISUAL FOX PRO VIDEOFORMATE ŞI RAPOARTE. Se deschide proiectul Documents->Forms->Form Wizard->One-to-many Form Wizard

Modalităţi de redare a conţinutului 3D prin intermediul unui proiector BenQ:

PROCESOARE NUMERICE DE SEMNAL DIGITAL SIGNAL PROCESSORS

Ghid de instalare pentru program NPD RO

2.Transferul de date. Transferul de date

Parcurgerea arborilor binari şi aplicaţii

ARHITECTURA CALCULATOARELOR 2003/2004 CURSUL 10

SUBIECTE CONCURS ADMITERE TEST GRILĂ DE VERIFICARE A CUNOŞTINŢELOR FILIERA DIRECTĂ VARIANTA 1

riptografie şi Securitate

Ghidul administratorului de sistem

Pasul 2. Desaturaţi imaginea. image>adjustments>desaturate sau Ctrl+Shift+I

DSP in Communications and Signal Processing

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

TTX260 investiţie cu cost redus, performanţă bună

6. MPEG2. Prezentare. Cerinţe principale:

Revista Virtuala Info MateTehnic ISSN ISSN-L CUPRINS

IMPLEMENTATION AND ANALYSIS OF FIR FILTER USING TMS 320C6713 DSK Sandeep Kumar

Design and Implementation of Timer, GPIO, and 7-segment Peripherals

Circuite Basculante Bistabile

PREZENTARE INTERFAŢĂ MICROSOFT EXCEL 2007

Split Screen Specifications

Aplicatii ale programarii grafice in experimentele de FIZICĂ

TMS320VC5501/5502/5503/5507/5509/5510 DSP Multichannel Buffered Serial Port (McBSP) Reference Guide

Operaţiile de sistem de bază

Capitolul 3: USB şi IEEE1394

Exerciţii Capitolul 4

Application form for the 2015/2016 auditions for THE EUROPEAN UNION YOUTH ORCHESTRA (EUYO)

T 2 : WR = 0, AD 7 -AD 0 (μp Internal Reg.) T 3 : WR = 1,, M(AB) AD 7 -AD 0 or BDB

Point System (for instructor and TA use only)

TMS320C6000 EMIF to External Asynchronous SRAM Interface

TOWARD A FOCUSED MARKET William Bricken September A variety of potential markets for the CoMesh product. TARGET MARKET APPLICATIONS

Un tip de data este caracterizat de: o O mulţime de date (valori є domeniului) o O mulţime de operaţii o Un identificator.

SN74V263, SN74V273, SN74V283, SN74V , , , V CMOS FIRST-IN, FIRST-OUT MEMORIES

Tehnologia Informaţiei şi a Comunicaţiilor

Mail Moldtelecom. Microsoft Outlook Google Android Thunderbird Microsoft Outlook

CURSUL 4 STOCARE ŞI VIRTUALIZAREA STOCĂRII ÎN SISTEME INFORMATICE

PROIECTAREA SISTEMELOR CU CALCULATOR INTEGRAT. Curs 1

AI-1204Z-PCI. Features. 10MSPS, 12-bit Analog Input Board for PCI AI-1204Z-PCI 1. Ver.1.04

Sequential Logic. Introduction to Computer Yung-Yu Chuang

Interfacing the TLC5510 Analog-to-Digital Converter to the

CS609- System Programming Solved MCQS From Midterm Papers. FINALTERM EXAMINATION Spring 2012 CS609- System Programming

Sistemul de operare Windows (95, 98) Componenta My Computer

4. Porturi de intrare-ieşire

Anexa 2. Instrumente informatice pentru statistică

Sundance Multiprocessor Technology Limited. Capture Demo For Intech Unit / Module Number: C Hong. EVP6472 Intech Demo. Abstract

Video Output and Graphics Acceleration

Cap. 1. Introducere în arhitectura sistemelor de calcul. 2. Date. Informaţii. Măsurarea lor. 1. Definirea sistemului electronic de calcul

Scans and encodes up to a 64-key keyboard. DB 1 DB 2 DB 3 DB 4 DB 5 DB 6 DB 7 V SS. display information.

DT3162. Ideal Applications Machine Vision Medical Imaging/Diagnostics Scientific Imaging


IEEE802.11a Based Wireless AV Module(WAVM) with Digital AV Interface. Outline

Differences between Tomasulo. Another Dynamic Algorithm: Tomasulo Organization. Reservation Station Components

Optimized for Digital Motor Control

TMS320DM646x DMSoC Video Port Interface (VPIF) User's Guide

Contents Slide Set 6. Introduction to Chapter 7 of the textbook. Outline of Slide Set 6. An outline of the first part of Chapter 7

LogiCORE IP AXI Video Direct Memory Access v5.01.a

Sundance Multiprocessor Technology Limited. Capture Demo For Intech Unit / Module Number: C Hong. EVP6472 Intech Demo. Abstract

Split Screen Specifications

SN74V263-EP, SN74V273-EP, SN74V283-EP, SN74V293-EP , , , V CMOS FIRST-IN, FIRST-OUT MEMORIES

STA2051E VESPUCCI 32-BIT SINGLE CHIP BASEBAND CONTROLLER FOR GPS AND TELEMATIC APPLICATIONS 1 FEATURES. Figure 1. Packages

ANEXA NR. 1. Caracteristicile tehnice ale interfeţelor echipamentelor. Exemplu schema de interconectare TRONSON XX: A A1 A2 A3 - B STM-4 A2 A3 STM-1

COPYRIGHT 2018 AXON DIGITAL DESIGN BV ALL RIGHTS RESERVED NO PART OF THIS DOCUMENT MAY BE REPRODUCED IN ANY FORM WITHOUT THE PERMISSION OF

SISTEME DE ACHIZIŢIE DE DATE CU PC

Read-only memory (ROM) Digital logic: ALUs Sequential logic circuits. Don't cares. Bus

Teoreme de Analiză Matematică - II (teorema Borel - Lebesgue) 1

Pivoting Object Tracking System

The World Leader in High Performance Signal Processing Solutions. Section 15. Parallel Peripheral Interface (PPI)

COMP2611: Computer Organization. Introduction to Digital Logic

Parallel Peripheral Interface (PPI)

LogiCORE IP AXI Video Direct Memory Access v5.03a

Slide Set 6. for ENCM 369 Winter 2018 Section 01. Steve Norman, PhD, PEng

Out-of-Order Execution

Click pe More options sub simbolul telefon (în centru spre stânga) dacă sistemul nu a fost deja configurat.

22METS. 2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

DUOLABS Spa. Conditional Access Module Hardware Brief. CA Module User Guide V0.2

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Dynamic Scheduling. Differences between Tomasulo. Tomasulo Algorithm. CDC 6600 scoreboard. Or ydanicm ceshuldngi

EECS150 - Digital Design Lecture 10 - Interfacing. Recap and Topics

TAXI -compatible HOTLink Transceiver

TAXI -compatible HOTLink Transceiver

Design and analysis of microcontroller system using AMBA- Lite bus

8.1 INTRODUCTION... VIII OVERVIEW... VIII-1

REŢELE DE COMUNICAŢII DE DATE

HOLITA HDLC Core: Datasheet

Logic Devices for Interfacing, The 8085 MPU Lecture 4

2. PORŢI LOGICE ( )

A VLIW Processor for Multimedia Applications

Laboratory Exercise 4

Press review. Monitorizare presa. Programul de responsabilitate sociala. Lumea ta? Curata! TIMISOARA Page1

Design and Implementation of an AHB VGA Peripheral

Slide Set 9. for ENCM 501 in Winter Steve Norman, PhD, PEng

Chapter 3 Instruction-Level Parallelism and its Exploitation (Part 1)

DSP Implementation of the Retinex Image Enhancement Algorithm

Hama Telecomanda Universala l in l

RF4432 wireless transceiver module

Section 14 Parallel Peripheral Interface (PPI)

BUSES IN COMPUTER ARCHITECTURE

Transcription:

Arhitectura procesoarelor digitale de semnal (DSP) În slide-uri se: Exemplifică procesoare digitale de semnal de la Texas Instruments Utilizează informaţii şi unele slide-uri de la prezentările firmei Texas Instruments DSP de la TI Procesoarele în virgulă fixă C1x, C2x, şi C5x, sunt procesoare pe 16 biţi, cu domeniu dinamic şi precizie limitată Procesoarele în virgulă fixăşi mobilă C6x sunt procesoare pe 32 biţi cu domeniu dinamic şi precizie îmbunătăţite 2 Scurtă istorie DSP de la TI Different Needs? Multiple Families! C6000 (C62x/64x/67x) Procesorul TMS320C6201 (C62x) a fost anunţat de Texas Instruments în 1997, fiind primul membru al familiei C6x de procesoare în virgulă fixă Spre deosebire de precedentele procesoare în virgulă fixă, C1x, C2x, şi C5x, noile procesoare C6x au o arhitectură VLIW, care utilizează spaţii separate de memorie de instrucţiuni şi date, ca la arhitectura Harvard. C62x nu este compatibil la nivel de cod cu generaţiile anterioare de procesoare în virgulă fixă Ulterior, a fost introdus procesorul în virgulă mobilă TMS320C6701 (C67x), ca alt membru al familiei C6x Apoi au apărut noile componente ale familiei, procesoarele în virgulă fixă C64x 3 C2000 (C20x/24x/28x) C1x C2x Lowest Cost Control Systems Motor Control Storage Digital Ctrl Systems C5000 (C54x/55x) C5x Efficiency Best MIPS per Watt / Dollar / Size Wireless phones Internet audio players Digital still cameras Modems Telephony VoIP C3x C4x C8x Max Performance with Best Ease-of of-use Multi Channel and Multi Function App's Comm Infrastructure Wireless Base-stations stations DSL Imaging Multi-media Servers Video 4

Arhitecturi DSP La DSP cu arhitectură pe bază de VLIW, efortul de implementare al paralelismului instrucţiunilor este mutat către programator şi compilator Alte arhitecturi includ prelucrare super scalară (mai multe conducte de execuţie), care impune existenţa de hardware specializat pentru a determina care instrucţiuni se pot executa în paralel Efortul cade în acest caz pe procesor Pentru prelucrări în timp real, cu operaţii specifice DSP, prelucrarea super-scalară este rar utilizată, pentru că timpul de execuţie se bazează pe mecanisme probabilistice 5 DSP seria C6000 de la TI Seria ( platforma ) de procesoare digitale de semnal TMS320C6000 (C6x) face parte din familia DSP TMS320 În cadrul platformei C6x s-au dezvoltat generaţii de procesoare: În virgulă fixă: TMS320C62x şi TMS320C64x (notate pe scurt C62x respectiv C64x) şi În virgulă mobilă: TMS320C67x (notate pe scurt C67x) Seria de DSP C67x+ este o îmbunătăţire a C67x, cu funcţii adăugate şi set de instrucţiuni extins. Toate cele 3 generaţii de DSP utilizează arhitectura VelociTI, o arhitectură de tip VLIW de înaltă performanţă 6 Principalele caracteristici ale dispozitivelor C6000 are o arhitectură bazată pe VLIW cu 8 unităţi funcţionale: 2 înmulţitoare şi 6 unităţi aritmetice şi logice (ALU) Execută maxim 8 instrucţiuni de câte 32 de biţi pe ciclu de ceas Conţine 32 de registre a câte 32 biţi, organizate în două bănci de registre specifice la două căi de date (A şi B) ce pot lucra în paralel. Împachetarea instrucţiunilor Se pot asambla într-o instrucţiune cu lungime foarte mare, 8 instrucţiuni executate serial sau în paralel Reduce dimensiunea codului, numărul de operaţii de program fetch şi puterea consumată 7 Principalele caracteristici ale dispozitivelor C6000 Posibilitatea de execuţie condiţionată a celor mai multe dintre instrucţiuni Reduce costurile ramificărilor Creşte paralelismul execuţiei Execuţie eficientă prin unităţi funcţionale independente Transferuri de date pe 8/16/32/64 biţi Opţiunea de efectuare a operaţiilor aritmetice cu 40 de biţi, avantajoasă la operaţii de tip MAC 8

Principalele caracteristici ale dispozitivelor C6000 Diagramă bloc generală DSP Memorie internã Posibilitatea de saturare şi normalizare automată a rezultatelor operaţiilor aritmetice Suport hardware pentru operaţii în: simplă precizie (32 de biţi), dublă precizie (64 de biţi) şi operaţii în virgulă mobilă conform cu standardul IEEE Înmulţitor pe întregi 32 32 biţi cu rezultat pe 32 sau 64 de biţi Memorie externã Periferice Magistrale interne 9 10 Diagramă bloc generală DSP Memorie externã Periferice Regs (A0- A15) Memorie internã Magistrale interne.d1.d2.l1.l2.m1.m2.s1.s2 Regs (B0- B15) Arhitectura DSP TMS320C67x C6000 conţine memorie internă de program poate fi folosită de asemenea ca memorie cache de program Dispozitivele din familie au diverse capacităţi de memorare internă în memoria de date Conţine pe chip diverse periferice, cum ar fi: Controller DMA Logică de economisire a energiei consumate (power-down logic) Interfaţă cu memoria externă () Unele dintre procesoarele familiei conţin porturi seriale şi porturi gazdă pentru interfaţa cu masteri externi (host ports). 11 12

Diagrama bloc a DSP TMS320C67x UNITATEA CENTRALĂ DE PROCESARE (UCP) PENTRU C6x Organizarea generală din schema bloc anterioară este comună la toate dispozitivele C62x/C64x/C67x, iar UCP conţine: Unitate de fetch program Unitate de distribuţie (dispatch) a instrucţiunilor Unitate de decodificare a instrucţiunilor Două căi de date, fiecare cu câte 4 unităţi funcţionale 32 registre de câte 32 de biţi Registre de control Logică de control Logică de testare, emulare şi întrerupere Un bloc de registre de control permite configurarea şi controlul diverselor operaţii ale procesorului. 13 14 UNITATEA CENTRALĂ DE PROCESARE (UCP) Unităţile de fetch, distribuire şi decodificare pot furniza unităţilor funcţionale până la 8 instrucţiuni de câte 32 de biţi pe ciclu de ceas UCP Prelucrarea instrucţiunilor se produce în paralel în fiecare dintre cele două căi de date (A şi B) Fiecare cale de date conţine: 4 unităţi funcţionale notate:.l,.s,.m şi.d 16 registre de uz general de câte 32 de biţi La dispozitivele C67x+ fiecare cale de date conţine 32 de registre de uz general (în total 64 de registre) Unităţi funcţionale conţine 8 unităţi funcţionale independente împărţite către două căi de date A şi B Cele 8 unităţi funcţionale sunt: 4 ALU pentru virgulă fixă / mobilă (două.l şi două.s) 2 unităţi în virgulă fixă (.D) 2 multiplicatoare pentru virgulă fixă / mobilă (.M). Fiecare cale de date are: 1 unitate pentru operaţii de înmulţire (.M) 1 unitate pentru operaţii aritmetice şi logice (.L) 1 unitate pentru salturi, prelucrare pe bit şi operaţii aritmetice (.S) 1 unitate pentru încărcare / stocare şi operaţii aritmetice (.D). 15 16

Unităţi funcţionale Rezumat operaţii realizate de unităţile funcţionale Instrucţiunile aritmetice, logice şi de salt folosesc unităţile.s şi.l Toate transferurile de date folosesc unităţile.d Operaţiile aritmetice, ca de exemplu adunare şi scădere, pot fi realizate de toate unităţile cu excepţia unităţilor.m Cale de date 1 Cale de date 2 Fişier registre A Fişier registre B L1 M1 S1 D1 L2 M2 S2 D2 Unitate aritmetică şi logică Unitate de înmulţire Unitate logică auxiliară 17 18 Fişiere de registre Fiecare unitate funcţională poate scrie sau citi direct din fişierul de registre în cadrul propriei căi de date Fiecare cale include un set de 16 registre de câte 32 de biţi 16 registre notate A0 A15 şi 16 registre notate B0 B15 Unele din registrele de uz general sunt rezervate (moduri de adresare şi instrucţiuni condiţionale) Există două căi în cruce (1x şi 2x) care permit unităţilor funcţionale de pe o cale de date să acceseze un operand de 32 de biţi din fişierul de registre de pe cealaltă cale Fiecare unitate funcţională de pe o parte poate accesa date stocate în registre de pe cealaltă parte prin intermediul căilor în cruce Pot exista maximum două citiri pe ciclu de ceas prin aceste căi în cruce 19 Căi de date la TMS320C67x 20

Memoria internă C6x Memoria internă Memoria este organizată pe octet Memoria internă foloseşte spaţii diferite pentru program şi date Memoria internă de date organizată în 2 bănci de memorie Băncile de memorie independente ale C6x permit două accesări la memorie în cadrul unui singur ciclu instrucţiune Cele două bănci independente de memorie pot fi accesate utilizând două magistrale independente Pentru că memoria internă este organizată în bănci de memorie, se pot realiza în paralel două instrucţiuni de încărcare şi două instrucţiuni de stocare Nu există conflict la accesarea datelor dacă acestea se găsesc în bănci diferite de memorie 21 22 EDMA Diagrama bloc a memoriei interne L2 cache memory 4 Banks = 64KB L2 192 KB Program address DA1 address L1P cache (Direct mapped) ST1 store data LD1 load data UCP Program data DA2 address L1D cache ST2 store data LD2 load data Organizare memorie la C6713 C6713 foloseşte o arhitectură cu 2 niveluri de cache L1/L2 ce constă din: L1: 4KB de program cache (L1P, memorie cache mapată direct) Cache L1P are o magistrală de 256 biţi către UCP. 4KB data cache (L1D mapată 2-way set associative) L2 cu un total de 256KB: 64 KB cache unificat (date şi program), mapat RAM cu până la 4-way set associative 192KB cache suplimentar, mapat RAM ( 2 way set associative) 23 24

Memoria internă C6x Magistralele interne includ: 1magistrală de adrese program de 32 biţi 2 magistrale de adrese date de 32 de biţi (DA1 şi DA2) Cei 32 de biţi de pe magistrala de adrese permit accesarea unui spaţiu de memorie de 2 32 = 4 GB, care include 4 spaţii de memorie externă: CE0, CE1, CE2 şi CE3. 2 magistrale pentru load date de 64 de biţi (LD1 şi LD2) şi 2 magistrale pentru stocare date de 64 de biţi(st1 şi ST2) Memorie Internã Memorie Externã Periferice Magistrale interne C6000 Program Addr x32 Program Data x256 Data Addr T1 x32 Data Data T1 x32/64 Data Addr T2 x32 Data Data T2 x32/64 DMA Addr Read DMA Data Read PC Registre A Registre B DMA DMA Addr Write 25 DMA Data Write 26 Căile de adresare date Căile de adrese de date (DA1 şi DA2) sunt fiecare conectate la unităţile.d din cele două căi de date Se generează adrese de date de oricare dintre căi pentru accesarea datelor şi transferul lor la/de la registre Resursele DA1 şi DA2 împreună cu căile de date asociate lor sunt specificate cu prescurtările T1 şi respectiv T2 T1 constă din calea de adrese de date DA1 şi din căile de date LD1 şi ST1 Similar pentru T2 Căile de adresare date Pentru C67x, LD1 conţine LD1a şi LD1b pentru a forma magistrala de load de 64 de biţi. Similar pentru LD2. Indicatorii T1 şi T2 apar în câmpul unităţilor funcţionale pentru instrucţiunile de load şi store De exemplu următoarea instrucţiune de load foloseşte unitatea.d1 pentru a genera adresa, dar utilizează căile LD2 şi DA2 pentru a plasa data în fişierul de registre B. Utilizarea resursei DA2 este specificată prin numele T2 LDW.D1T2 *A0[3],B1 27 28

Memoria internă C67x DSP conţine 2 porturi interne de câte 32 de biţi pentru accesul la memoria de date internă C67x DSP conţine 1 port intern pentru accesul la memoria de program internă, cu o lărgime a magistralei pentru aducerea instrucţiunii de 256 biţi Atunci când se foloseşte şi memorie externă, spaţiile de program şi date sunt unificate pentru a se adresa un sigur spaţiu de memorie prin intermediul interfeţei cu memoria externă ( - external memory interface). 29 Opţiuni pentru Memorie şi Periferice (familia C6000) RAM intern cu dimensiune de până la 7Mb 7 x 2 20 = 7 x 2 17 x 8 = 7 x 128 x 1KB = 896 KB) Memorie cache de program 2 niveluri de memorie cache Suport pentru interfaţă pe 32 de biţi cu memorii externe SDRAM, SBSRAM (Synchronous Burst Static Random Access ), SRAM şi alte dispozitive de memorie asincronă externe Controller DMA (doar la C6701) cu 4 canale programabile şi un al cincilea canal auxiliar Controller EDMA cu aceeaşi funcţie ca şi controllerul DMA, dar cu 16 canale programabile şi un spaţiu de memorie RAM pentru stocarea configuraţiilor multiple la transferurile viitoare 30 Opţiuni pentru Memorie şi Periferice (familia C6000) 2 timere de uz general de câte 32 de biţi, folosite pentru: Măsurare durate Numărare evenimente Generare de impulsuri Lansare întreruperi către UCP Transmitere de impulsuri de sincronizare către controllere DMA / EDMA Port paralel gazdă (HPI) prin care un procesor gazdă poate accesa direct spaţiul de memorie al UCP Dispozitivul gazdă are un acces uşor pentru că el este masterul interfeţei Se poate astfel schimba informaţie între gazdă şi UCP prin intermediul memoriei interne sau externe În plus gazda are acces direct la perifericele mapate în memorie. Opţiuni pentru Memorie şi Periferice (familia C6000) Magistrală de extensie (Expansion bus) este un înlocuitor al HPI şi de asemenea o extensie a Această extensie permite două domenii distincte de funcţionalitate (port host şi port I/O) care pot co-exista în sistem Portul host al magistralei de extensie poate lucra fie ca un sclav asincron, similar cu HPI, fie în mod master / slave sincron Aceasta permite dispozitivului să fie interfaţat cu o multitudine de protocoale de magistrală gazdă Se pot interfaţa la magistrala de extensie dispozitive periferice asincrone de I/O şi FIFO sincrone 31 32

Opţiuni pentru Memorie şi Periferice (familia C6000) Portul serial multi-canal cu memorare McBSP (multichannel buffered serial port) - este bazat pe portul serial standard implementat la dispozitivele TMS320C2000 şi TMS320C5000 Portul poate memora automat eşantioane seriale cu ajutorul controllerului DMA/EDMA Are capacitatea multicanal de a compatibilitate cu standarde de reţele de comunicaţie digitală în telefonie Logica de control a puterii permite reducerea consumului de energie prin reducerea frecvenţei de ceas 4K Program Cache 4K Data Cache 64K Prog / Data (Level 2) C6711 0000_0000 0180_0000 8000_0000 9000_0000 A000_0000 B000_0000 64KB Internal On-chip Peripherals 0 1 2 3 128MB External 128MB External 128MB External 128MB External 33 FFFF_FFFF 34 'C6000 Peripherals XB, PCI, Host Port GPIO Internal Async Internal External Internal Buses SDRAM Internal Buses McBSP s Utopia DMA, EDMA (Boot) Timers PLL Register Set A.D1.M1.L1.S1.D2.M2.L2.S2 Register Set B 35 SBSRAM Register Set A.D1.M1.L1.D2.M2.L2 External Interface (().S1.S2 Glueless access to to async/sync memory Works with with PC100 SDRAM (cheap, fast, fast, and and easy!) Byte-wide data data access 16, 16, 32, 32, or or 64-bit bus bus widths Register Set B 36

HPI / XBUS / PCI XBUS, PCI, Host Port Internal XB, PCI, Host Port GPIO GPIO Internal External Internal Buses External Internal Buses.D1.D2.M1.M2 Parallel Peripheral Interface.L1.L2 HPI: HPI: Dedicated, slave-only, async 16/32-bit bus bus allows host-µp P access to to C6000 memory.s1.s2 XBUS: Similar to to HPI HPI but but provides Master/slave and and sync modes Glueless i/f i/f to to FIFOs (up (up to to single-cycle xfer xfer rate) PCI: PCI: Standard 32-bit, 33MHz PCI interface Register Set A Register Set B bit, 33MHz PCI interface 37 38.D1.M1.L1.D2.M2.L2.S1.S2 General Purpose Input/Output (GPIO) C64x provides 8 or or 16 16 bits bits of of general purpose bitwise I/O I/O Use Use to to observe or or control the the signal of of a single-pin Register Set A Register Set B McBSP and Utopia XB, PCI, Host Port GPIO Internal DMA / EDMA XB, PCI, Host Port GPIO Internal External Internal Buses External Internal Buses McBSP s Utopia.D1.M1.D2.M2.L1.L2 Multi-Channel Buffered Serial Port ((McBSP) 2 (or (or 3) 3) fullf full-duplex, synchronous serial-ports.s1.s2 Up Up to to 100 100 Mb/sec performance Utopia (C64x (C64x- -Universal Test Test and and Operations Operations Interface Interface for for ATM) ATM) ATM connection 50 50 MHz MHz wide area area network connectivity Register Set A Register Set B 39 McBSP s Utopia DMA, EDMA (Boot) Register Set A.D1.M1.D2.M2.L1.L2 Direct Access (DMA / / EDMA).S1.S2 Transfers any any set set of of memory locations to to another 4 / / 16 16 / / 64 64 channels (transfer parameter sets) Transfers can can be be triggered by by any any interrupt (sync) Operates independent of of On On reset, provides bootstrap from memory Register Set B 40

Timer / Counter XB, PCI, Host Port GPIO Internal XB, PCI, Host Port GPIO PLL Internal External Internal Buses External Internal Buses McBSP s Utopia DMA, EDMA (Boot) Timers Timer / / Counter Two Two (or (or three) 32-bit timer/counters Can Can generate interrupts Both Both input i and output pins Register Set A.D1.M1.L1.S1.D2.M2.L2.S2 Register Set B McBSP s Utopia DMA, EDMA PLL (Boot) External clock multiplier Reduces EMI EMI and and Timers cost cost Pin Pin selectable VCP TCP Input.D1.D2 CLKIN.M1.M2 Output.L1.L2 CLKOUT1 --Output.S1 rate rate.s2 of of PLL PLL --Instruction (MIP) rate rate CLKOUT2 --1/2 1/2 rate rate of of CLKOUT1 nput and output pins 41 42 PLL PLL Register Set A Register Set B Pachetele FETCH şi EXECUTE Pachetele Fetch şi Execute sunt specifice arhitecturii VelociTI, introdusă de TI Un pachet de execuţie (EP - execute packet) constă dintr-un grup de instrucţiuni care pot fi executate în paralel în cadrul aceluiaşi timp de ciclu În cadrul unui pachet de fetch (FP - fetch packet) pot exista de la 1 EP (cu 8 instrucţiuni paralele) la 8 EP (cu instrucţiuni ne paralele) Arhitectura VLIW a fost modificată pentru a permite ca mai multe EP să fie incluse într-un FP LSb al fiecărei instrucţiuni pe 32 de biţi este utilizat pentru a determina dacă instrucţiunea următoare (succesivă) este inclusă în acelaşi EP (valoare 1) sau este parte a următorului EP (valoare 0) notat bit p 43 Pachetele FETCH şi EXECUTE De exemplu, se consideră un FP cu 3 EP: EP1 cu 2 instrucţiuni paralele, iar EP2 şi EP3 cu câte 3 instrucţiuni paralele fiecare: Instruction A Instruction B Instruction C Instruction D Instruction E Instruction F Instruction G Instruction H EP1 constă din două instrucţiuni paralele A şi B EP2 constă din instrucţiunile paralele C, D şi E EP3 constă din instrucţiunile paralele F, G şi H 44

Pachet de fetch cu 3 pachete de execuţie PIPELINING Se folosesc trei etaje (segmente) mari ale conductei de execuţie, fiecare etaj conţinând subfaze: 1. Program fetch 2. Program decode 3. Program execute Bitul LSb al fiecărei instrucţiuni conţine un bit p care indică dacă instrucţiunea este, sau nu, în paralel cu instrucţiunea următoare 45 46 PIPELINING 1. Etajul program fetch este compus din 4 faze: a. PG: (program address generate) - generare adresă program de către UCP b. PS: (program address send) - transmiterea adresei de program către memorie c. PW: (program address ready wait) aşteaptă informaţia citită din memorie d. PR: (program fetch packet receive) UCP recepţionează opcode din memorie 2. Etajul decode e compus din 2 faze: a. DP: pentru expedierea (dispatch) tuturor instrucţiunilor dintr-un FP către unităţile funcţionale adecvate b. DC: decodificarea codului instrucţiunii 3. Etajul de execuţie este compus dintr-un număr de faze de până la 6 (pentru virgulă fixă) sau până la 10 (pentru virgulă mobilă), datorită latenţelor (întârzierilor) asociate cu următoarele tipuri de instrucţiuni: Instrucţiuni de înmulţire care constau din două faze Instrucţiuni de load care constau din cinci faze Instrucţiuni de salt care constau din şase faze 47 FAZELE CONDUCTEI 48

EFECTE PIPELINING Prima linie reprezintă ciclurile 1, 2,..., 12 Fiecare din liniile următoare reprezintă un FP Pentru fiecare FP (fetch packet), faza de execuţie poate dura de la 1 la 10 faze De exemplu, în ciclul 7, în timp ce instrucţiunile din primul FP se află în prima fază de execuţie E1 (care poate fi şi singura fază) instrucţiunile din al doilea FP se află în faza de decodificare, instrucţiunile din al treilea FP se află în faza de expediere (dispatch) şi aşa mai departe. 49 PIPELINING Cele mai multe dintre instrucţiuni au o singură fază de execuţie Instrucţiuni cum ar fi înmulţirea (MPY), load (LDH/LDW) şi ramificare (B) consumă 2, 5 şi respectiv 6 faze Se pot adăuga faze de execuţie suplimentare pentru instrucţiunile ce lucrează în virgulă mobilă, sau dublă precizie, care pot consuma până la 10 faze Latenţa unităţii funcţionale, care reprezintă numărul de cicluri cât o instrucţiune ocupă o unitate funcţională, este 1 pentru toate instrucţiunile cu excepţia instrucţiunilor în dublă precizie, disponibile la variante C67x în virgulă mobilă Dacă rezultatul unei instrucţiuni de înmulţire, ca de exemplu MPY, este utilizat de o instrucţiune următoare, trebuie inserat un NOP după instrucţiunea MPY pentru ca execuţia să fie corectă în conductă. Dacă o instrucţiune utilizează rezultatul unei instrucţiuni de load sau de salt, vor trebui introduse 4, respectiv 5 instrucţiuni NOP 50 REGISTRE DE UZ GENERAL Sunt disponibile două seturi de fişiere de registre (A şi B), fiecare cu câte 16 registre Registrele A0, A1, B0, B1 şi B2 sunt utilizate ca registre pentru testarea condiţiilor Registrele de la A4 la A7, respectiv de la B4 la B7 sunt folosite pentru adresare circulară Registrele de la A0 la A9, respectiv de la B0 la B9 (cu excepţia lui B3) sunt registre temporare Oricare dintre registrele utilizate de la A10 la A15 şi de la B10 la B15 sunt salvate şi apoi restaurate înainte de revenirea dintr-o subrutină Într-o pereche de registre se poate stoca o dată cu dimensiunea de 40 de biţi. Cei mai puţin semnificativi 32 de biţi se stochează în registrul par (de ex. A2) iar ceilalţi 8 biţi în poziţiile LSb din următorul registru impar (A3) O schemă similară e folosită pentru stocarea unei date în dublă precizie (64 de biţi) 51 Stocare 40 biţi în pereche de registre 52

Perechi de registre 40/64 biţi Modul de adresare indirectă Adresarea indirectă poate fi utilizată cu sau fără deplasament Registrul R de indirectare este unul dintre cele 32 de registre de uz general (A0-A15 şi B0-B15). Exemple: 1. *R = Registrul R conţine adresa locaţiei de memorie unde sunt stocate datele 2. *R++(d) = Post incrementare prin valoarea d (care poate fi şi 1), după adresare. Existăşi varianta cu post-decrementare 3. *++R(d) = Pre-incrementare cu d şi apoi adresare. Existăşi varianta cu pre-decrementare 4. *+R(d) = Caz similar celui anterior (adresa curentă este R + d), dar nu se actualizeazăşi conţinutul registrului R. 53 54 Adresare circulară Adresarea circulară este folosită la tampoanele circulare, create în hardware, pentru stocarea eşantioanelor şi coeficienţilor la operaţii specifice DSP (corelaţie, filtre digitale) Se pot administra două tampoane circulare, prin utilizarea câmpurilor de 5 biţi de dimensiune bloc (BK0 şi BK1) din registrul de control al modului de adresare (AMR - address mode register) Se folosesc ca pointeri 8 registre (A4-A7 şi B4-B7) în conjuncţie cu 2 unităţi.d Modurile AMR: Registre de control Registre cu citire / scriere AMR (Addressing mode register) - definirea modului de adresare pentru fiecare din cele 8 registre A4-A7 B4 B7. CSR (control status register): conţine bitul de validare globală întreruperi (GIE - global interrupt enable bit) şi alţi biţi de control /stare (setare moduri power-down, big/little endian, mod de mapare cache) IER (interrupt enable register): validează / invalidează întreruperi individuale ISTP (interrupt service table pointer): pointer la tabela de servire întreruperi - localizează adresa de bază pentru rutinele de servire ISR NRP (nonmaskable interrupt return pointer): Conţine pointer care indică UCP locaţia de unde va continua execuţia după servirea NMI. Rutina de servire se termină cu salt: (B NRP) 55 56

Registre doar cu citire Registre de control IFR (interrupt flag register): prin setarea bitului corespunzător întreruperii afişează starea întreruperilor (sau produs sau nu) PCE1 (Program counter, E1 phase ): conţine adresa pe 32 de biţi a pachetului de fetch în faza E1 din pipeline Registre de control Registre doar cu scriere ICR (interrupt clear register): permite ştergerea manuală a întreruperilor mascabile (INT15 INT4) care s-au lansat şi astfel au setat bitul corespunzător din IFR ISR (interrupt set register): permite setarea manuală a întreruperilor mascabile (INT15 INT4). Ca rezultat se setează şi bitul corespunzător din IFR IRP (interrupt return pointer) Registrul de stocare al pointerului de revenire din întrerupere. Acesta indică UCP locaţia de unde va continua execuţia după servirea unei înteruperi mascabile. Revenirea se poate produce prin terminarea rutinei de servire cu instrucţiunea de ramificare cu adresa din IRP (B IRP) 57 58 Întreruperi O întrerupere poate fi generată intern sau extern. Efect cerere de întrerupere: oprire proces, salvare condiţii proces curent, salt ISR, execuţie ISR, restaurare condiţii, revenire Există 16 surse de întrerupere Acestea includ 2 întreruperi de la timer, 4 întreruperi externe, 4 întreruperi McBSP şi 4 întreruperi DMA Cele 12 întreruperi disponibile pentru UCP (intrări întrerupere) sunt administrate printr-un selector de întrerupere (multiplexare) 59 Întreruperi Priorităţi: Reset (activ JOS) are cea mai mare prioritate NMI următoarea prioritate Urmează INT4 INT15 (mascabile), dintre care INT4 are prioritatea cea mai mare, iar INT 15 prioritatea cea mai mică Se spune că Reset şi NMI sunt ne-mascabile Întreruperea de reset şi NMI se activează prin semnale transmise la pini externi ai capsulei O întrerupere ne-mascabilă poate fi dezactivată (mascată!!) prin ştergerea bitului (poziţionare pe 0) NMIE din cadrul registrului de control CSR. Acest bit este poziţionat pe 0 după Reset sau după apariţia unei întreruperi ne-mascabile Dacă NMIE este 0, toate întreruperile de la INT4 la INT15 sunt dezactivate Pentru a procesa (recunoaşte şi servi) o întrerupere mascabilă trebuie setaţi la 1 biţii GIE (validare globală întreruperi) din registrul CSR şi NIME din registrul IER 60

Proces de servire întrerupere Interrupt Service Table 61 62 IST = Interrupt Service Table IST - în cadrul fiecărei locaţii se află un pachet de fetch (FP) asociat cu fiecare întrerupere Tabelul conţine 16 pachete FP, fiecare a câte 8 instrucţiuni Adresa din tabel corespunde offset-ului asociat fiecărei întreruperi Pentru că fiecare FP conţine 8 instrucţiuni a câte 32 biţi (256 biţi = 32 bytes) fiecare offset de adresă din tabel este incrementat cu 20h = 32 Pachetul FP pentru Reset trebuie să se găsească la adresa 0 Pachetele de fetch pentru toate întreruperile cu excepţia Reset, pot fi relocate Adresa de relocare poate fi specificată prin scrierea adresei în registrul de bază al tabelei de servire a întreruperilor (ISTB - interrupt service table base register) din registrul pointerilor către tabelă (ISTP - interrupt service table pointer register) La reset ISTB devine 0. Pentru relocarea tabelei vectorilor se utilizează ISTP, iar adresa de relocare este ISTB plus offset Selectorul de întreruperi include un multiplexor numit selector de întreruperi, care permite utilizatorului să selecteze şi conecteze sursele de întreruperi la cei 12 pini de intrare: INT4 - INT15 Maparea întreruperilor către cele 12 intrări se face prin 2 registre de multiplexare a întreruperilor (IML şi IMH) Tabelul alăturat prezintă valorile selectorului de întreruperi necesar pentru alegerea unui tip specific de întrerupere Există 16 surse de întrerupere, fiecare cu număr de selecţie 63 64

Registre selector de întreruperi Registre multiplexor de întreruperi Interrupt Multiplexer High (INT10 - INT15) (address 0x19c0000) INTSEL15 INTSEL14 INTSEL13 INTSEL12 INTSEL11 INTSEL10 Interrupt Multiplexer Low (INT4 - INT9) (address 0x19c0004) 26 24 21 19 16 13 10 8 5 3 0 INTSEL9 INTSEL8 INTSEL7 INTSEL6 INTSEL5 INTSEL4 65 66 Bibliografie Real time DSP, Dr. Sarah Miller, http://www.cs.huji.ac.il/course/2006/67630/ TMS320C6000 and Instruction Set Reference Guide, focus.ti.com.cn/cn/lit/ug/spru189g/spru189g.pdf TMS320C64x/C64x+ DSP and Instruction Set, focus.ti.com/lit/ug/spru732h/spru732h.pdf TMS320C6000 Peripherals Reference Guide, focus.ti.com/lit/ug/spru732h/spru732h.pdf TMS320C6000 One-Day Workshop, http://server.oersted.dtu.dk/ftp/sn/31611_2004e/slides/ 67