SE535973C2 - Exekveringsenhet för digital signalprocessor - Google Patents
Exekveringsenhet för digital signalprocessor Download PDFInfo
- 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
Links
- 239000013598 vector Substances 0.000 claims abstract description 195
- 238000000034 method Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special 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.
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)
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)
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 |
-
2011
- 2011-12-20 SE SE1151232A patent/SE1151232A1/sv not_active IP Right Cessation
-
2012
- 2012-11-28 KR KR1020147018859A patent/KR20140105547A/ko not_active Application Discontinuation
- 2012-11-28 EP EP12816533.9A patent/EP2751672A1/en not_active Withdrawn
- 2012-11-28 CN CN201280063639.3A patent/CN104011675B/zh not_active Expired - Fee Related
- 2012-11-28 WO PCT/SE2012/051322 patent/WO2013095259A1/en active Application Filing
- 2012-11-28 US US14/364,651 patent/US20140372728A1/en not_active Abandoned
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 |