SE535973C2 - Exekveringsenhet för digital signalprocessor - Google Patents

Exekveringsenhet för digital signalprocessor Download PDF

Info

Publication number
SE535973C2
SE535973C2 SE1151232A SE1151232A SE535973C2 SE 535973 C2 SE535973 C2 SE 535973C2 SE 1151232 A SE1151232 A SE 1151232A SE 1151232 A SE1151232 A SE 1151232A SE 535973 C2 SE535973 C2 SE 535973C2
Authority
SE
Sweden
Prior art keywords
vector
data
execution unit
integer
unit
Prior art date
Application number
SE1151232A
Other languages
English (en)
Other versions
SE1151232A1 (sv
Inventor
Anders Nilsson
Eric Tell
Original Assignee
Mediatek Sweden Ab
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mediatek Sweden Ab filed Critical Mediatek Sweden Ab
Priority to SE1151232A priority Critical patent/SE1151232A1/sv
Priority to KR1020147018859A priority patent/KR20140105547A/ko
Priority to CN201280063639.3A priority patent/CN104011675B/zh
Priority to US14/364,651 priority patent/US20140372728A1/en
Priority to EP12816533.9A priority patent/EP2751672A1/en
Priority to PCT/SE2012/051322 priority patent/WO2013095259A1/en
Publication of SE535973C2 publication Critical patent/SE535973C2/sv
Publication of SE1151232A1 publication Critical patent/SE1151232A1/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • G06F15/8084Special arrangements thereof, e.g. mask or switch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

En vektorexekveringsenhet (300) för användning i en digital signalprocessor möj-liggör en ny uppsättning av instruktioner. Enheten innefattar en första ingångsport(302) för mottagning av åtminstone en första indatavektor, en instruktionsavkodare,en vektorutgångsport (308) och åtminstone en dataväg (306). Den instruktionsavko-dande enheten är anordnad att styra datavägen för att utföra en jämförelse relateradtill den första indatavektorn, och processom innefattar en heltalsport (314) anordnadatt utmata resultatet av jämförelsen i form av en beslutsvektor till en minnesenhet(310) eller en funktionell enhet i den digitala signalprocessom. Heltalsporten är al-temativt eller dessutom anordnad att motta en beslutsvektor av heltalsdata, och deninstruktionsavkodande enheten är anordnad att styra datavägen för att bearbeta de första indata i beroende av värdet av nämnda heltalsdata. (Fig. 2)

Description

25 30 535 973 Complex Multiply-Accumulate Units (CMAC). Kärnan har ett programminne för att dis- tribuera instruktioner till exekveringsenheterna. I WO2007/018467 har var och en av vek- torexekveringsenhetema en separat instruktionsavkodare. Detta möjliggör användning av vektorexekveringsenheterna oberoende av varandra och av andra delar av processom-på ett effektivt sätt.
En vektorexekveringsenhet enligt känd teknik innefattar typiskt en första och en andra da- taingångsport för mottagning data som ska bearbetas. Dessa data kan vara komplexa eller skalära data och kan typiskt vara i form av datavektorer. Vektorexekveringsenheten inne- fattar även en utgångsport för matning av resultatet av bearbetningen till en annan enhet i DSPn. En speciell typ av vektorexekveringsenhet, vilken är känd som Complex Arithmetic Logic Unit (CALU), kan utföra en mycket begränsad mängd av multiplikationer, i prakti- ken multiplikationer av dataelement med il fi. För detta ändamål har CALUn även en heltalsport. Denna heltalsport är anordnad att motta heltalsdata för att styra multiplikatio- Den.
Sarnmarrfatuiing av uppfinningen Ett ändamål med föreliggande uppfinning är att tillhandahålla nya sätt att använda proces- som av SIMT-typ, och speciellt att öka funktionaliteten hos vektorexekveringsenhetema.
Detta ändamål uppnås enligt en första utföringsform av uppfinningen genom en vektor- exekveringsenhet för användning i en digital signalprocessor, varvid vektorexekveringsen- heten innefattar: 0 en första vektoringångsport för mottagning av åtminstone en första indatavektor från åtminstone en respektive första enhet i den digitala signalprocessorn, 0 en ínstruktionsavkodande enhet anordnad att avkoda instruktioner mottagna från ett programminne hos den digitala signalprocessom, 0 en vektorutgångsport för matning av resultatet av instruktionsexekveringen till åt- minstone en arman enhet i den digitala signalprocessom, 0 åtminstone en dataväg.
Vektorexekveringsenheten är kännetecknad av att den ínstruktionsavkodande enheten är anordnad att styra datavägen för att utföra enjäinfórelse relaterad till den första indatavek- tom, och att processorn innefattar en heltalsport anordnad att utmata resultatet av jämförel- 10 15 20 25 30 535 973 3 sen i form av en beslutsvektor till en minnesenhet eller en funktionell enhet i den digitala signalprocessom.
Detta representerar en ny typ av användning av vektorexekveringsenheten genom att hel- talsporten används för utmatning av heltalsdata. Detta möjliggör i sin tur en ny typ av in- struktion, jämförelse av två eller flera dataelement för att alstra heltalsutdata som indikerar resultatet av jämförelsen. Dessa heltalsutdata kan lagras i ett heltalsmirme för senare an- vändning eller användas direkt som indata för en arman enhet i DSPn.
Vektorexekveringsenheten kan alternativt eller dessutom vara kännetecknad av att heltals- porten även är anordnad att motta en beslutsvelctor av heltalsdata, och att den instruktions- avkodande enheten är anordnad att styra datavägen för att bearbeta de första indata i bero- ende av värdet av dessa heltalsdata.
Genom användning av heltalsporten för att motta beslutsdata som kommer att påverka be- arbetningen av dataelement kan uppnås en större flexibilitet. Demia utföringsform är sär- skilt användbar för filtreringsfunktioner där värden som representerar brus ska filtreras ut och faktiska signalvärden ska behållas som de Även andra användningar är naturligtvis tänkbara.
I en föredragen utföringsforrn är vektorexekveringsenheten anordnad både att alstra en be- slutsvektor som ska vara en utgång på heltalsporten och att motta en beslutsvektor för an- vändning som ingång för styrning av exekveringen av instruktioner.
Vektorexekveringsenheten innefattar vidare företrädesvis en andra vektoringångsport an- ordnad att motta en andra indatavektor från en andra enhet i den digitala si gnalprocessom, varvid instruktionsavkodaren är anordnad att styra datavägen för att utföra jämförelsen ba- serat på den första indatavektorn och den andra indatavektom.
Vektorexekveringsenheten enligt uppfinningen kan innefatta en, två eller flera vektorin- gångsportar beroende på den typ av instruktioner som den ska bearbeta. Om endast en in- datavektor mottas kan vektorexekveringsenheten vara anordnad att utföra en järnfórelse mellan de första data och en konstant. 10 15 20 25 30 535 973 Den instruktionsavkodande enheten kan vara anordnad att styra datavägen för att utföra en aritmetisk operation på den första och/eller andra indatavektom och använda resultatet av den aritrnetiska operationen ijämfórelsen. Denna aritmetiska operation kan innefatta ett eller flera av de dataelement som mottagits på vektoringångsportama. På detta sätt kan ex- empelvis kvadrater eller absolutvärden jämföras. l instruktionsavkodaren är anordnat för styrning av datavägen för att utföra två eller flera jämförelser på indataelementet, och beslutsvektom kommer att ha ett dataelement som in- dikerar resultatet av varje jämförelse. Den utgående beslutsvektom kan ha endast en data- bit som resulterar från varje jämförelse, eller ett antal bitar som indikerar olika egenskaper hos indata. Som ett icke begränsande exempel kan tre bitar användas för att indikera om indataelementet är större än ett specifikt värde, om dess absolutvärde är större än noll' och om det kvadrerade värdet är större än något annat värde. I detta fall måste den vektorexe- kveringsenhet som är anordnad att använda denna beslutsvektor vara anordnad att plocka det rätta värdet för varje heltalsdataelement som ska användas som beslutsindata.
I en utföringsforrn är instruktionsavkodaren anordnad att styra datavägen för att utföra jämförelsen på ett dataelement från varje ingångsport åt gången och utrnata en vektorav data som har ett eller flera element för varje jämförelse. På detta sätt kan ett antal järnfórel- ser av sarnrna dataelement göras samtidigt och det resulterande beslutet kan användas ex- empelvis till att styra olika funktioner.
En typisk vektorexekveringsenhet enligt känd teknik har fyra datavägar. I en vektorexe- kveringsenhet med två eller flera datavägar kan den instruktionsavkodande enheten vara anordnad att styra datavägarna för att utföra en aritmetisk operation på de indata som mot- tagits på de två eller flera datavägama och använda resultatet i jämförelsen. De indata som mottagits på två av datavägarna kan bearbetas tillsammans och de indata som mottagits på de två andra datavägarna kan bearbetas tillsammans ochjärnfórelsen kan utföras på resul- taten av bearbetningen. Som kan inses av en fackman, kan detta utsträckas till varje antal av datavägar.
Uppfinningen avser även en digital signalprocessor innefattande ett prograrrnninne och åt- minstone en vektorexekveringsenhet enligt uppfinningen. 10 15 20 25 30 535 973 Kortfattad ritningsbeskrivning Fig. 1 visar en digital signalprocessor där en vektorexekveringsenhet enligt föreliggande uppfinning kan användas.
Fig. 2 visar en vektorexekveringsenhet enligt en uttöringsfonn av uppfinningen.
Fig. 3 visar kommunikationen mellan de berörda enhetema enligt en första uttöringsforrn av uppfinningen.
Fig. 4 visar kommunikationen mellan de berörda enhetema enligt en andra utföringsform av uppfinningen.
Detaljerad beskrivning av utfóringsforrner F ig. 1 visar en digital signalprocessor där en vektorexekveringsenhet enligt föreliggande uppfinning kan användas. Fig. l illustrerar ett exempel på en basbandsprocessor 200 enligt SIMT-arkitekturen. Processom 200 innefattar en styrkärna 201 och en första 203 och en andra 205 vektorexekveringsenhet, vilka kommer att diskuteras mer detaljerat i det följan- de. En i Fig. l diskuterad FEC-enhet 206 är förbunden med on-chip-nätverket. I en konkret konfiguration kan naturligtvis FEC-enheten 206 innefatta flera olika enheter.
En värdgränssnittsenhet 207 tillhandahåller kommunikation med värdprocessorn (ej visad).
Om en MAC-processor är närvarande, är den förbunden mellan värdgränssnittsenheten 207 och värdprocessom. En digital front-endenhet 209 tillhandahåller förbindelse med en ADC/DAC-enhet på ett sätt som är välkänt inom tekniken.
Som vanligt inom tekniken, innefattar styrkärnan 201 ett programminne 211 liksom en av- givningslogik och funktioner fór ”multi-context”-support.
Styrkärnan 201 innefattar även normalt en heltalsexekveringsenhet 212 innefattande en registerfil RF, ett kämheltalsrninne ICM, en multipliceringsenhet MUL och en aritrnetik- och logik/skifienhet (ALSU). Dessa enheter är kända inom tekniken och visas inte i Fig. l.
I detta exempel är var och en av den första vektorexekveringsenheten 203 en CMAC- vektorexekveringsenhet och den andra vektorexekveringsenheten 205 är en CALU- vektorexekveringsenhet, var och en innefattande en vektorstyming 213, en vektorladd- nings/lagringsenhet 215 och ett antal datavägar 217. Laddningsfunktionen används för hämtning av data från de övriga enhetema som är förbundna med nätverket. 244 (exem- 10 15 20 25 30 535 973 pelvis från en minnesbank) och lagringsfunktionen används för lagring av data från exe- kveringsenhetema 203, 205 till Lex. en minnesenhet 230, 231 via nätverket 244. Data kan även erhållas från andra vektorexekveringsenheter för vidare bearbetning. Varje vektor- exekveringsenhet innefattar även en vektorstyming 213, 223 anordnad att motta instruk- tioner från programrninnet 21 1. i Vektorstyrningen hos denna första vektorexekveringsenhet är förbunden med programmin- net 211 hos styrkärnan 201 via avgivningslogiken för att motta avgivningssignaler relatera- de till instruktioner från programminnet. I beskrivningen ovan avkodar avgivningslogiken instruktionsordet för att erhålla avgivningssignalen och sänder denna avgivningssignal till vektorexekveringsenheten som en separat signal. Det skulle även vara möjligt att låta vek- torstyrningen hos vektorexekveringsenheten skapa avgivningssignalen lokalt. I detta fall bildas avgivningssignalema av vektorstymingen baserat på instruktionsordet på samma sätt som det skulle vara i avgivningslogiken.
Alternativt är vektorexekveringsenhetema 203, 205 CALU-vektorexekveringsenheter av en typ känd inom tekniken, innefattande en vektorstyming 223, en vektorladd- nings/lagringsenhet 225 och ett antal datavägar 227. Vektorstymingen 223 hos denna andra vektorexekveringsenhet är likaså förbunden med styrkämans 201 programminne 211 via avgivningslogiken, för att motta avgivna signaler relaterade till instruktioner fi-ån program- minnet.
Vektorexekveringsenhetema 203, 205 kan även vara varje typ av vektorexekveringsenheter.
Fastän två vektorexekveringsenheter visas och diskuteras, kan förfarandet enligt uppfm- ningen utsträckas till att sända samma instruktioner till tre eller flera vektorexekveringsen- heter.
Det kan finnas ett godtyckligt antal av vektorexekveringsenheter utöver de två visade i Figl. Det kan finnas endast CMAC-enheter, endast CALU-enheter eller ett lämpligt antal av varje typ. Det kan även finnas andra typer av vektorexekveringsenheter än CMAC och CALU. Som förklarats ovan, är en vektorexekveringsenhet en processor som kan bearbeta vektorinstruktioner, vilket innebär att en enda instruktion utför samma funktion på ett antal dataenheter. Data kan vara komplexa eller reella, och är grupperade i bytes eller ord och packade i en vektor för att opereras på av en vektorexekveringsenhet. I denna skrift används 10 15 20 25 30 535 973 CALU- och CMAC-enheter som exempel, men det bör observeras att vektorexekverings- enheter kan användas för att utföra varje lämplig funktion på vektorer av data.
För att möjliggöra flera samtidiga vektoroperationer, har processom företrädesvis ett distri- buerat minnessystem där minnet är uppdelat i flera minnesbanker, vilka i Fig. 1 represente- ras av Minnesbank 0 230 till Minnesbank N 231. Varje minnesbank 230, 231 has sitt eget komplexa minne 232, 233 och adressalstringsenhet AGU 234 resp. 235. Den PBBP som visas i Fig. l innefattar även en eller flera heltalsminnesbanker 238, innefattande ett minne 239 och en adressalstringsenhet 240.
Såsom känt inom tekniken, är typiskt ett antal acceleratorer 242 inkopplade, eftersom de möjliggör effektiv implementering av vissa basbandsfunktioner, såsom kanalkodning och interfoliering. Sådana acceleratorer är välkända inom tekniken och kommer inte att här dis- kuteras i detalj. Acceleratorema kan vara konfigurerbara för att vara återanvändbam av många olika standarder.
Ett on-chip-nätverk 244 förbinder styrkäman 201, den digitala front-end-enheten 209, värdgränssnittenheten 207, vektorexekveringsenheterna 203, 205, minnesbankema 230, 232, heltalsbanken 238 och acceleratorerna 242.
De första och andra vektorexekveringsenheterna 203, 205 visas som fyrvägs CMAC- enheter med fyra komplexa datavägar som kan löpa tillsammans eller separat. De fyra komplexa datavägarna innefattar multiplicerare, adderare, och samlingsregister (samtliga visas ej i Fig. 1). I denna utföringsform kan följaktligen CMAC 203 benämnas som en fyr- vägs CMAC-dataväg. Utöver multiplikation och addition, kan CMAC 203 även genomföra avrundnings- och skalningsoperationer och understödja mättnad, såsom känt inom teknik- området.
Fig. 2 är en förenklad illustration av en vektorexekveringsenhet 300 enligt en utföringsforrn av uppfinningen. Vektorexekveringsenheten kan vara en CMAC(Complex Multiply and Accumulate)-enhet, en CALU( Complex Arithmetic and Logical Unit) eller någon an- nan typ av enhet som kan motta och bearbeta en vektor av data. Vektorexekveringsenheten i detta exempel innefattar en första 302 och en andra 304 dataingångsport för mottagning av data via on-cliip-nätverket. Data kan mottas via on-chip-nätverket 244 från en minnesenhet, l0 15 20 25 30 535 9?3 från en annan exekveringsenhet eller från varje annan lämplig enhet i DSPn. Sådana data bearbetas av en dataväg 306 i vektorexekveringsenheten. Vektorexekveringsenheten har också en clatautgångsport 308 för utrnatning av resultatet till en annan enhet via on-chip- nätverket.
Resultatet kan matas till en minnesenhet, till en annan vektorexekveringsenhet eller till var- je annan lämplig enhet i DSPn. En vektorladdnings/lagringsenhet 310 är anordnad mellan ingångs- och utgångsportarna 302, 304, 308 och datavägen 306 för att möjliggöra kommu- nikation av data till och från vektorexekveringsenheten 300.
En vektorstyrenhet 312 är anordnad att styra exekveringen av instruktioner mottagna från käman av DSPn (ej visad i Fig.2).
De data som mottas på ingångsportama 302, 304 och utmatas genom utgångsporten 308 kommer ofta att vara i form av datavektorer, vilka kan ha komplexa eller skalära data.- Da- tavägen 306 är anordnad att arbeta på vektorer av data genom att utföra samma typ av funk- tion på ett dataelement från varje vektor åt gången.
Enligt uppfinningen har vektorexekveringsenheten även en heltalsport 314 vilken i en första utföringsform är anordnad att utmata en eller flera bitar som indikerar resultatet av funktio- nen som utförs av datavägen 306. Datavägen 306 kan exempelvis vara anordnad att utföra en jämförelse, vilket kommer att diskuteras i det följande. Resultatet av jämförelsen kan indikeras av en eller flera bitar, vilka kan utmatas på heltalsporten 314. Resultatet av jämfö- relsen hos vart och ett av indataelementen i ingångsvektorerna kommer att vara en vektor av heltalsdataelement vilka vart och ett innefattar en eller flera bitar.
Den resulterande beslutsvektom kan sändas till en heltalsminnesenhet för att lagras där.
Den kan då senare återvinnas genom en finiktionsenhet, såsom en funktionsenhet eller en accelerator, för att användas som beslutsindata av denna funktionella enhet. Den kan även sändas direkt till ñmktionsenheten för att påverka dess databearbetning.
I en andra utföringsform är vektorexekveringsenheten 300 anordnad att motta en heltals- vektor via heltalsporten 314 och att använda denna heltalsvektor som styrdata för dess näst- följande instruktion. Exempelvis kan vektorexekveringsenheten vara anordnad att utföra en 10 15 20 25 30 535 973 viss funktion på indata om heltalsdataelementet är 1 och en annan funktion om heltalsdata- elementet är 0.
I praktiken kan naturligtvis de törsta och andra utfóringsforrnema vara implementerade i sarrnna vektorexekveringsenhet.
Fig. 3 illustrerar de enheter i DSPn som är inblandade enligt den första utföringsformen som diskuterats ovan, dvs. en första och en andra vektorminnesenhet 230, 231, en heltals- minnesenhet 238, ett on-chip-nätverk 244 och en vektorexekveringsenhet 300. Vektorexe- kveringsenheten 300 är anordnad att motta indata från vektormirinesenheterna 230, 23.1 och bearbeta dem, och att utmata resultatet av bearbetningen i form av en heltalsvektor via hel- talsutgångsporten 314 på on-chip-nätverket 244. l detta exempel skrivs den resulterande heltalsvektorn till en heltalsminnesenhet 238. Den kan även matas direkt till en funktions- enhet, såsom en annan vektorexekveringsenhet eller en acceleratorenhet fór styrning av bearbetningen som utförts av denna funktionsenhet.
Vektorexekveringsenheten 300 kan naturligtvis även innefatta en datautgångsport, såsom visas i Fig. 2.
Fig. 4 illustrerar de enheter hos DSPn, vilka är inblandade enligt den andra utfóringsformen som diskuterats ovan, dvs. en första och andra vektorminnesenhet 230, 231, en heltalsmin- nesenhet 238, ett on-chip-nätverk 244 och en vektorexekveringsenhet 300. En vektorexe- kveringsenhet 400 är anordnad att motta indata från vektorminnesenhetema 230, 231 och bearbeta dem, och att utmata resultatet av bearbetningen i form av en utdatavektor. I denna utfóringsforrn används en tredje vektorminnesenhet 403 fór att motta utdatavektorn, men den kan i stället vara utgång till en annan funktionell enhet, ej visad i Fig. 4, som indata for denna funktionsenhet.
Vektorexekveringsenheten 400 har även en heltalsport för mottagning av en heltalsvektor från ett heltalsminne 238. Avkodningsenheten hos vektorexekveringsenheten är anordnad att använda heltalsvektom för att styra bearbetningen av de indata som mottagits på de två ingångsportarna. Värdet av heltalsdataelementet kommer typiskt att användas tör bestäm- ning av vilken funktion som ska utföras på indataelementen. Funktionen kan exempelvis vara den att om heltalsdataelementet har värdet 0, ska utdataelementet sättas till 0, medan 10 15 20 25 30 535 973 10 om heltalsdataelementet har värdet 1, ska utdataelementet behålla ingångsvärdet eller vara summan, skillnaden eller produkten av indataelementen.
Som kommer att inses, kan vektorexekveringsenhetema 300, 400, vilka visas i Fig. 3 och 4 med två indataportar, även ha endast en dataport eller mer än två dataportar. Dessutom, när det i beskrivningen anges att data läses från eller skrivs till minnesenheter, kan datai stället läsas från eller skrivas till varje lämplig enhet i DSPn, t.ex. en accelerator eller arman exe- kveringsenhet.
Den jämförelse som utförs enligt den första utföringsforrnen kan vara en direktjärnfórelse mellan två datavektorer A och B, vilka exempelvis kommer att retumera ett värde 1 om värdet av dataelementet i vektom A är större än värdet av motsvarande dataelement i vek- tom B.
Om t.ex. vektom A har följande sekvens av dataelement 0 l 2 3 4 5 6 7 och vektom B har följande sekvens av dataelement 3 3 3 3 4 4 4 4 kommer den resulterande vektom från operationen ”större än eller lika med” att vara 0 0 0 1 1 1 l Eftersom de första tre dataelementen är större i vektor B än i vektor A, kommer 0 att retur- neras. De fjärde och femte dataelementen i de två vektorerna är lika, och de återstående dataelementen är större i vektor A än i vektor B, så att jämförelsen retumerar l. I stället för ”större än eller lika med” och ”mindre än”, kan man naturligtvis använda ”större än” och ”mindre än eller lika med”.
En indatavektor kan även jämföras med en konstant, vilken lämpligen kan väljas som ett tröskelvärde. För varje dataelement i vektom som är större än eller lika med konstanten, kommer 1 att adderas till beslutsvektom. För dataelement mindre än konstanten, kommer 0 att adderas till beslutsvektorn. Detta är särskilt användbart för att filtrera bort brus. Tröskeln kan vara inställd till en bestämd procentandel av det högsta värdet hos indatavektom. Be- slutsvektom kommer då att användas av en funktionell enhet till att bearbeta datavektom i en ny operation, såsom beskrivs i samband med Fig. 4. Genom användning av beslutsvek- 10 15 20 25 30 535 973 ll tom kan alla dataelement i datavektorn som är mindre än tröskeln sättas till 0. Konstanten kan hämtas från varje samlingsregister, konstantregister eller styrregister i vektorexekve- ringsenheten.
Det är även möjligt att utföra en aritrnetisk operation på ett eller båda dataelementen före jämförelsen, t.ex. att kvadrera dataelementen, invertera det eller att använda absolutvärdet. Även för komplexa indata kan det vara möjligt att använda endast realdelen eller den ima- ginära delen i jämförelsen.
En icke begränsande lista kan vara | A l > l B l IA I < B A > x, x är en konstant Re {A} > Re {B} Im {A} < y, y är en konstant I en vektorexekveringsenhet som har mer än en dataväg kommer vektorexekveringsenheten att läsa mer än ett komplext dataelement åt gången, ett på varje dataväg. I detta fall kan de dataelement som mottagits på två eller flera datavägar bearbetas tillsammans, t.ex. multipli- ceras, subtralteras eller adderas, och resultaten kan användas i jämförelsen enligt uppfin- ningen. Detta innebär att i en typisk vektorexekveringsenhet som har fyra datavägar, kan de dataelement som mottagits på två ingångar bearbetas tillsammans, och de dataelement som mottagits på de två återstående ingångarna kan bearbetas tillsammans och resultaten kan jämföras för att bilda beslutsvektom.
Det är även möjligt att låta instruktionsavkodaren utföra flera operationer på varje indata- element. För t.ex. komplexa dataelement kan realdelama och de imaginära delarna av data- elementen jämföras separat, varvid varje jämförelse retumerar ett beslutsdataelement. En eller flera aritrnetiska operationer kan alternativt eller dessutom utföras på dataelementen före jämförelsen, så att t.ex. kvadratvärdet, absolutvärdet eller det inverterade värdet an- vänds i jämförelsen. Som ännu ett exempel, kan även ett beslutsdataelement användas för att indikera om två värden är desamma. Varje jämförelse kommer att retumera ett besluts- dataelement som kan vara en eller flera bitar. Beslutsvektom kommer följaktligen att inne- 10 15 20 535 973 12 fatta mer än ett beslutsdataelement for varje indataelement, varvid varje beslutsdataelement indikerar en egenskap hos indataelementet.
I detta fall är instruktionsavkodaren anordnad att välja vilket av de beslutsdataelement rela- terat till ett indataelement som ska användas till att bestämma hur indataelementet ska bear- betas.
Som ett exempel, betrakta en heltalsvektor med 3 bitar per värde, vilket har bildats genom jämförelse av vektorer A och B genom subtraktion A - B. Bitama är som följer: Bit 0: negativflagga = l om resultatet var negativt, dvs. om B > A Bit 1: nollflagga = 1 om resultatet var 0, dvs. om A = B Bit 2: spillflagga = 1 om resultatet är för stort, dvs. större än ett tröskelvärde Denna heltalsvektor kan användas till att exekvera t.ex. en ”välj -lika”-instruktion, som skulle välja operand A om flaggan i bit 1, dvs. nollflaggan, var inställd och operand B om flaggan i bit l inte var inställd. Heltalsvektom kan även användas till att exekvera en ”välj - större-ärW-instruktion, som skulle välja operand A om flaggan i bit 0 var 0 och operand B om flaggan i bit 0 var 1.
Som kommer att inses, är dessa avsedda som icke begränsande exempel. En fackman kan enkelt tillämpa huvudprinciperna i dessa exempel på ett stort urval av situationer.

Claims (13)

1. 535 973 13 Patentkrav l. Vektorexekveringsenhet för användning i en digital signalprocessor, varvid vektor- exekveringsenheten innefattar: 0 en första vektoringångsport för mottagning av åtminstone en första indatavektor från åtminstone en respektive första enhet i den digitala signalprocessom, 0 en instruktionsavkodande enhet anordnad att avkoda instruktioner mottagna från ett prograrnminne hos den digitala signalprocessom och att styra åtminstone en dataväg i vektorexekveringsenheten för att exekvera instruktionerna, 0 en vektorutgångsport för matning av resultatet av instruktionsexekveringen till åtminstone en annan enhet i den digitala si gnalprocessom, 0 åtminstone en dataväg, varvid vektorexekveringsenheten är kännetecknad av att den instruktionsavkodande enheten är anordnad att styra datavägen för att utföra en jäntförelse relaterad till den första indatavektorn, och att processorn innefattar en heltalsport anordnad att utmata resultatet av järnförelsen i form av en beslutsvektor till en minnesenhet eller en funktionell enhet i den digitala signalprocessorn. Vektorexekveringsenhet enligt krav 1, varvid heltalsporten även är anordnad att motta en beslutsvektor av heltalsdata, och att den instruktionsavkodande enheten är anordnad att styra datavägen för att bearbeta de första indata i beroende av värdet av nämnda heltalsdata. Vektorexekveringsenhet enligt något av föregående krav, vidare innefattande en andra vektoringångsport anordnad att motta en andra indatavektor från en andra en- het i den digitala signalprocessorn, varvid instruktionsavkodaren är anordnad att sty- ra datavägen för att utföra jäniförelsen baserat på den första indatavektom och den andra indatavektom. Vektorexekveringsenhet enligt något av föregående krav, anordnad att utföra en jämförelse mellan den första indatavektom och en konstant. 535 973 l4 . Vektorexekveringsenhet enligt något av föregående krav, varvid instruktionsavko- daren är anordnad att styra datavägen för att utföra en aritmetisk operation på den första och/eller andra indatavektorn och använda resultatet av den aritmetiska opera- tionen i jämförelsen. . Vektorexekveringsenhet enligt krav 5, varvid instruktionsavkodaren ära anordnad att styra datavägen till att utföra två eller flera järnfórelser på indataelementet och beslutsvektom kommer att ha ett dataelement som indikerar resultatet av varje järn- förelse. . Vektorexekveringsenhet enligt krav 2 eller något av krav 3-6 i beroende av krav 2, varvid varje vektoringångsport är anordnad att motta en vektor av data, och varvid instruktionsavkodaren är anordnad att styra datavägen för att utföra jämförelsen på ett dataelement från varje ingångsport åt gången och utmata en vektor av data som har ett eller flera element för varje jämförelse. . Vektorexekveringsenhet enligt krav 7, varvid den instruktionsavkodande enheten är anordnad att styra datavägen för att utföra en aritmetisk operation på den första och/eller andra indatavektom och använda resultatet av den aritmetiska operationen i jämförelsen. . Vektorexekveringsenhet enligt något av föregående krav, uppvisande en första och andra dataväg, varvid den instruktionsavkodande enheten är anordnad att styra data- vägarna för att utföra en aritmetisk operation på indata mottagna på de första andra datavägarna och använda resultatet i jämförelsen. 10. Vektorexekveringsenhet för användning i en digital signalprocessor, varvid vektor- exekveringsenheten innefattar: 0 en första vektoringångsport för mottagning av en första indatavektor från åtmin- stone en första enhet i den digitala signalprocessom, 0 en instruktionsavkodande enhet anordnad att avkoda instruktioner mottagna fi'ån ett programminne hos den digitala signalprocessom och att styra åtminstone en dataväg i vektorexekveringsenheten för att exekvera instruktionema, 535 973 15 0 en vektorutgångsport för matning av resultatet av instruktionsexekveringen till åtminstone en annan enhet i den digitala signalprocessorn, 0 åtminstone en dataväg, varvid vektorexekveringsenheten är kännetecknad av att processom irmefattar en heltalsport anordnad att motta en beslutsvektor av heltalsdata, i och att den instruktionsavkodande enheten är anordnad att styra datavägen för att bearbeta de första indata i beroende av värdet av nämnda heltalsdata. 1 1. Vektorexekveringsenhet enligt krav 10, varvid varje vektoringångsport är anordnad att motta respektive indata, och varvid instruktionsavkodaren är anordnad att ntfóra jämförelsen på ett dataelement från varje vektoringångsport åt gången och utrnata en vektor av data uppvisande ett eller flera dataelement för varje jämförelse. 12. Vektorexekveringsenhet enligt krav 10 eller ll, varvid heltalsporten är anordnad att motta en beslutsvektor uppvisande mer än ett heltalsdataelement för varje indata- element, och varvid instruktionsavkodaren är anordnad att välja ett av heltalsdata- elementen för ett motsvarande indataelement och använda det valda heltalsdataele- mentet för att styra bearbetningen av det motsvarande heltalsdataelementet. 13. Digital signalprocessor innefattande ett programminne och åtminstone en första vektorexekveringsenhet anordnad att motta och genomföra instruktioner från pro- gramminnet, kännetecknad av att den åtminstone första vektorexekveringsenheten är en vektorexekveringsenhet enligt något av föregående krav.
SE1151232A 2011-12-20 2011-12-20 Exekveringsenhet för digital signalprocessor SE1151232A1 (sv)

Priority Applications (6)

Application Number Priority Date Filing Date Title
SE1151232A SE1151232A1 (sv) 2011-12-20 2011-12-20 Exekveringsenhet för digital signalprocessor
KR1020147018859A KR20140105547A (ko) 2011-12-20 2012-11-28 디지털 신호 프로세서 벡터 실행유닛
CN201280063639.3A CN104011675B (zh) 2011-12-20 2012-11-28 用于数字信号处理器的向量执行单元
US14/364,651 US20140372728A1 (en) 2011-12-20 2012-11-28 Vector execution unit for digital signal processor
EP12816533.9A EP2751672A1 (en) 2011-12-20 2012-11-28 Vector execution unit for digital signal processor
PCT/SE2012/051322 WO2013095259A1 (en) 2011-12-20 2012-11-28 Vector execution unit for digital signal processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE1151232A SE1151232A1 (sv) 2011-12-20 2011-12-20 Exekveringsenhet för digital signalprocessor

Publications (2)

Publication Number Publication Date
SE535973C2 true SE535973C2 (sv) 2013-03-12
SE1151232A1 SE1151232A1 (sv) 2013-03-12

Family

ID=47594966

Family Applications (1)

Application Number Title Priority Date Filing Date
SE1151232A SE1151232A1 (sv) 2011-12-20 2011-12-20 Exekveringsenhet för digital signalprocessor

Country Status (6)

Country Link
US (1) US20140372728A1 (sv)
EP (1) EP2751672A1 (sv)
KR (1) KR20140105547A (sv)
CN (1) CN104011675B (sv)
SE (1) SE1151232A1 (sv)
WO (1) WO2013095259A1 (sv)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424039B2 (en) * 2014-07-09 2016-08-23 Intel Corporation Instruction for implementing vector loops of iterations having an iteration dependent condition
CN107315563B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量比较运算的装置和方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793084B1 (en) * 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7302627B1 (en) * 2004-04-05 2007-11-27 Mimar Tibet Apparatus for efficient LFSR calculation in a SIMD processor
US20070198815A1 (en) * 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US20110072236A1 (en) * 2009-09-20 2011-03-24 Mimar Tibet Method for efficient and parallel color space conversion in a programmable processor

Also Published As

Publication number Publication date
CN104011675B (zh) 2017-07-07
KR20140105547A (ko) 2014-09-01
EP2751672A1 (en) 2014-07-09
CN104011675A (zh) 2014-08-27
WO2013095259A1 (en) 2013-06-27
US20140372728A1 (en) 2014-12-18
SE1151232A1 (sv) 2013-03-12

Similar Documents

Publication Publication Date Title
US10514912B2 (en) Vector multiplication with accumulation in large register space
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
US9965276B2 (en) Vector operations with operand base system conversion and re-conversion
JP2006529043A (ja) 飽和あり、または飽和なしで、オペランドの積和を実行するプロセッサ簡約ユニット
JP2009075676A (ja) マイクロプロセッサ
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
US20060059221A1 (en) Multiply instructions for modular exponentiation
US20190073337A1 (en) Apparatuses capable of providing composite instructions in the instruction set architecture of a processor
US20120311305A1 (en) Information processing device
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
JPH05150979A (ja) 即値オペランド拡張方式
CN116880906A (zh) 用于8位浮点矩阵点积指令的装置、方法和系统
SE1151232A1 (sv) Exekveringsenhet för digital signalprocessor
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
US10929101B2 (en) Processor with efficient arithmetic units
US20130318324A1 (en) Minicore-based reconfigurable processor and method of flexibly processing multiple data using the same
US10001994B2 (en) Data processing apparatus and method for performing scan operations omitting a further step
US10248417B2 (en) Methods and apparatuses for calculating FP (full precision) and PP (partial precision) values
US9606798B2 (en) VLIW processor, instruction structure, and instruction execution method
JP5786719B2 (ja) ベクトルプロセッサ
US20050033939A1 (en) Address generation
US20140281368A1 (en) Cycle sliced vectors and slot execution on a shared datapath
US20090063609A1 (en) Static 4:2 Compressor with Fast Sum and Carryout
JP5505083B2 (ja) 情報処理装置
US20060271610A1 (en) Digital signal processor having reconfigurable data paths

Legal Events

Date Code Title Description
NUG Patent has lapsed