SE1151232A1 - Exekveringsenhet för digital signalprocessor - Google Patents
Exekveringsenhet för digital signalprocessor Download PDFInfo
- Publication number
- SE1151232A1 SE1151232A1 SE1151232A SE1151232A SE1151232A1 SE 1151232 A1 SE1151232 A1 SE 1151232A1 SE 1151232 A SE1151232 A SE 1151232A SE 1151232 A SE1151232 A SE 1151232A SE 1151232 A1 SE1151232 A1 SE 1151232A1
- 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
-
- 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)
- Mathematical Physics (AREA)
- Computing Systems (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
15 20 25 30 Complex Multiply-Accumulate Units (CMAC). Kärnan har ett programminne för att dis- tribuera instruktioner till exekveringsenhetema. 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 processornpå 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 Arithrnetic Logic Unit (CALU), kan utföra en mycket begränsad mängd av multiplikationer, i prakti- ken multiplikationer av dataelement med il ii. För detta ändamål har CALUn även en heltalsport. Denna heltalsport är anordnad att motta heltalsdata för att styra multiplikatio- 11611.
Sammanfattning av uppfinningen Ett ändamål med föreliggande uppfinning är att tillhandahålla nya sätt att använda proces- sorn av SIMT-typ, och speciellt att öka funktionaliteten hos vektorexekveringsenheterna.
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 instruktionsavkodande enhet anordnad att avkoda instruktioner mottagna från ett programminne hos den digitala signalprocessorn, 0 en vektorutgångsport för matning av resultatet av instruktionsexekveringen till åt- minstone en annan enhet i den digitala signalprocessom, 0 åtminstone en dataväg.
Vektorexekveringsenheten är kännetecknad av att den instruktionsavkodande enheten är anordnad att styra datavägen för att utföra en jämfö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 sen i form av en beslutsvektor till en minnesenhet eller en funktionell enhet i den digitala signalprocessorn.
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 heltalsminne för senare an- vändning eller användas direkt som indata för en annan enhet i DSPn.
Vektorexekveringsenheten kan alternativt eller dessutom vara kännetecknad av att heltals- porten även är anordnad att motta en beslutsvektor 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. Denna 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 signalprocessom, varvid instruktionsavkodaren är anordnad att styra datavägen för att utföra jämförelsen ba- serat på den första indatavektom och den andra indatavektorn.
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ämförelse mellan de första data och en konstant. 10 15 20 25 30 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 aritmetiska operationen i jä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.
I 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öringsfonn ä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 utmata en vektorav data som har ett eller flera element för varje jämförelse. På detta sätt kan ett antal jämförel- ser av samrna 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ägama 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ägama kan bearbetas tillsammans och de indata som mottagits på de två andra datavägarna kan bearbetas tillsammans och jämfö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 programminne och åt- minstone en vektorexekveringsenhet enligt uppfinningen. 10 15 20 25 30 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 utföringsforin av uppfinningen.
Fig. 3 visar kommunikationen mellan de berörda enhetema enligt en första utföringsform av uppfinningen.
Fig. 4 visar kommunikationen mellan de berörda enhetema enligt en andra utföringsform av uppfinningen.
Detaljerad beskrivning av utföringsformer 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äma 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. 1 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ärdprocessom (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 prograrnrninne 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ämheltalsminne ICM, en multipliceringsenhet MUL och en aritmetik- och logik/skiftenhet (ALSU). Dessa enheter är kända inom tekniken och visas inte i Fig. 1.
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 vektorstyrning 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 enheterna som är förbundna med nätverket. 244 (exem- 10 15 20 25 30 pelvis från en minnesbank) och lagringsfunktionen används för lagring av data från exe- kveringsenhetema 203, 205 till t.ex. 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 vektorstyrning 213, 223 anordnad att motta instruk- tioner från programminnet 21 1.
Vektorstymingen hos denna första vektorexekveringsenhet är förbunden med programmin- net 2l1 hos styrkärnan 201 via avgivningslogiken för att motta avgivningssignaler relatera- de till instruktioner från programrninnet. 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 vektorstyrning 223, en vektorladd- nings/lagringsenhet 225 och ett antal datavägar 227. Vektorstymingen 223 hos denna andra vektorexekveringsenhet är likaså förbunden med styrkärnans 201 programminne 211 via avgivningslogiken, för att motta avgivna signaler relaterade till instruktioner från program- minnet.
Vektorexekveringsenheterna 203, 205 kan även vara varje typ av vektorexekveringsenheter.
Fastän två vektorexekveringsenheter visas och diskuteras, kan förfarandet enligt uppfin- 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 Fig.1. 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 CALU- och CMAC-enheter som exempel, men det bör observeras att vektorexekverings- enheter kan användas för att utföra varje lärnplig 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 F ig. 1 represente- ras av Minnesbank 0 230 till Minnesbank N 231. Varje minnesbank 23 0, 231 has sitt eget komplexa minne 232, 233 och adressalstringsenhet AGU 234 resp. 235. Den PBBP som visas i Fig. 1 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 basbandsfilrildioner, 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ändbara 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, vektorexekveringsenhetema 203, 205, minnesbankema 230, 232, heltalsba11ken 238 och acceleratorema 242.
De första och andra vektorexekveringsenhetema 203, 205 visas som fyrvägs CMAC- enheter med fyra komplexa datavägar som kan löpa tillsammans eller separat. De fyra komplexa datavägama 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öringsform 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-chip-nätverket. Data kan mottas via on-chip-nätverket 244 från en minnesenhet, 10 15 20 25 30 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 datautgångsport 308 för utmatning 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ångsportarna 302, 304 och utrnatas 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öringsfonn ä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ångsvektorema 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 funktionsenhet, 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 fimktionsenheten 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ölj ande instruktion. Exempelvis kan vektorexekveringsenheten vara anordnad att utföra en 10 15 20 25 30 viss fiinktion på indata om heltalsdataelementet är 1 och en annan funktion om heltalsdata- elementet är 0.
I praktiken kan naturligtvis de första och andra utföringsfonnerna vara implementerade i samma 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 vektonninnesenheterna 230, 23.11 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. I detta exempel skrivs den resulterande heltalsvektom till en heltalsminnesenhet 238. Den kan även matas direkt till en funktions- enhet, såsom en annan vektorexekveringsenhet eller en acceleratorenhet för styming 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öringsforrnen som diskuterats ovan, dvs. en första och andra vektorminnesenhet 23 0, 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öringsform används en tredje vektorminnesenhet 403 för att motta utdatavektom, men den kan i stället vara utgång till en annan funktionell enhet, ej visad i Fig. 4, som indata för 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 heltalsvektorn för att styra bearbetningen av de indata som mottagits på de två ingångsportarna. Värdet av heltalsdataelementet kommer typiskt att användas för bestäm- ning av vilken funktion som ska utföras på indataelementen. Funktionen kan exempelvis vara den att om heltalsdataelementet har värdet O, ska utdataelementet sättas till 0, medan 10 15 20 25 30 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 data i stället läsas från eller skrivas till varje lämplig enhet i DSPn, t.ex. en accelerator eller annan exe- kveringsenhet.
Den jämförelse som utförs enligt den forsta utföringsforrnen kan vara en direkt jämfö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 1 2 3 4 5 6 7 och vektom B har följ ande 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 0001111 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å vektorema är lika, och de återstående dataelementen är större i vektor A än i vektor B, så att jämförelsen retumerar 1. 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 l 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 indatavektorn. Be- slutsvektom kommer då att användas av en funktionell enhet till att bearbeta datavektorn i en ny operation, såsom beskrivs i samband med Fig. 4. Genom användning av beslutsvek- 10 15 20 25 30 ll torn kan alla dataelement i datavektom 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 aritmetisk 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 I A I > I B I I A | < 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, subtraheras 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ångama kan bearbetas tillsammans och resultaten kan järnföras för att bilda beslutsvektorn.
Det är även möjligt att låta instruktionsavkodaren utföra flera operationer på varje indata- element. För t.ex. komplexa dataelement kan realdelarna och de imaginära delarna av data- elementen jämföras separat, varvid varje jämförelse returnerar ett beslutsdataelement. En eller flera aritmetiska 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 returnera ett besluts- dataelement som kan vara en eller flera bitar. Beslutsvektom kommer följaktligen att inne- 10 15 20 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 = 1 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 for 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 1 inte var inställd. Heltalsvektorn kan även användas till att exekvera en ”välj- större-än”-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 huvudprincipema i dessa exempel på ett stort urval av situationer.
Claims (13)
1. 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 signalprocessorn 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 arman enhet i den digitala signalprocessom, 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ämförelse relaterad till den första indatavektom, och att processorn innefattar en heltalsport anordnad att utmata resultatet av jämförelsen i form av en beslutsvektor till en minnesenhet eller en funktionell enhet i den digitala signalprocessom,
2. Vektorexekveringsenhet enligt krav l, 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.
3. 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 signalprocessom, varvid instruktionsavkodaren är anordnad att sty- ra datavägen för att utföra jämförelsen baserat på den första indatavektom och den andra indatavektom.
4. 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. 14
5. 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 indatavektom och använda resultatet av den aritmetiska opera- tionen i jämförelsen.
6. Vektorexekveringsenhet enligt krav 5, varvid instruktionsavkodaren ära anordnad att styra datavägen till att utföra två eller flera jämförelser på indataelementet och beslutsvektom kommer att ha ett dataelement som indikerar resultatet av varje jäm- förelse.
7. 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.
8. 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.
9. 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ägama för att utföra en aritmetisk operation på indata mottagna på de första andra datavägama 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 signalprocessorn, 0 en instruktionsavkodande enhet anordnad att avkoda instruktioner mottagna från ett programminne hos den digitala signalprocessom och att styra åtminstone en dataväg i vektorexekveringsenheten för att exekvera instruktionerna,
11. ll.
12.
13. 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 processorn innefattar 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. Vektorexekveringsenhet enligt krav 10, varvid varje vektoringångsport är anordnad att motta respektive indata, och varvid instruktionsavkodaren är anordnad att utföra jämförelsen på ett dataelement från varje vektoringångsport åt gången och utmata en vektor av data uppvisande ett eller flera dataelement för varje jämförelse. Vektorexekveringsenhet enligt krav 10 eller 11, 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. 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 SE535973C2 (sv) | 2011-12-20 | 2011-12-20 | Exekveringsenhet för digital signalprocessor |
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 |
PCT/SE2012/051322 WO2013095259A1 (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 |
KR1020147018859A KR20140105547A (ko) | 2011-12-20 | 2012-11-28 | 디지털 신호 프로세서 벡터 실행유닛 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1151232A SE535973C2 (sv) | 2011-12-20 | 2011-12-20 | Exekveringsenhet för digital signalprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
SE1151232A1 true SE1151232A1 (sv) | 2013-03-12 |
SE535973C2 SE535973C2 (sv) | 2013-03-12 |
Family
ID=47594966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE1151232A SE535973C2 (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) | SE535973C2 (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 |
CN111176608A (zh) * | 2016-04-26 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 一种用于执行向量比较运算的装置和方法 |
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/SE535973C2/sv not_active IP Right Cessation
-
2012
- 2012-11-28 EP EP12816533.9A patent/EP2751672A1/en not_active Withdrawn
- 2012-11-28 WO PCT/SE2012/051322 patent/WO2013095259A1/en active Application Filing
- 2012-11-28 KR KR1020147018859A patent/KR20140105547A/ko not_active Application Discontinuation
- 2012-11-28 US US14/364,651 patent/US20140372728A1/en not_active Abandoned
- 2012-11-28 CN CN201280063639.3A patent/CN104011675B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR20140105547A (ko) | 2014-09-01 |
US20140372728A1 (en) | 2014-12-18 |
WO2013095259A1 (en) | 2013-06-27 |
SE535973C2 (sv) | 2013-03-12 |
CN104011675B (zh) | 2017-07-07 |
CN104011675A (zh) | 2014-08-27 |
EP2751672A1 (en) | 2014-07-09 |
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 | |
US6078941A (en) | Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel | |
CN102262525B (zh) | 基于矢量运算的矢量浮点运算装置及方法 | |
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 | |
US20160239300A1 (en) | Vector operations with operand base system conversion and re-conversion | |
US20190073337A1 (en) | Apparatuses capable of providing composite instructions in the instruction set architecture of a processor | |
US9354893B2 (en) | Device for offloading instructions and data from primary to secondary data path | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
US10963265B2 (en) | Apparatus and method to switch configurable logic units | |
SE1151232A1 (sv) | Exekveringsenhet för digital signalprocessor | |
US20070198811A1 (en) | Data-driven information processor performing operations between data sets included in data packet | |
US10001994B2 (en) | Data processing apparatus and method for performing scan operations omitting a further step | |
US10929101B2 (en) | Processor with efficient arithmetic units | |
US10248417B2 (en) | Methods and apparatuses for calculating FP (full precision) and PP (partial precision) values | |
US20130318324A1 (en) | Minicore-based reconfigurable processor and method of flexibly processing multiple data using the same | |
US9606798B2 (en) | VLIW processor, instruction structure, and instruction execution method | |
JP5786719B2 (ja) | ベクトルプロセッサ | |
US20050033939A1 (en) | Address generation | |
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 |