SE1151231A1 - Digital signalprocessor och basbandskommunikationsanordning - Google Patents
Digital signalprocessor och basbandskommunikationsanordning Download PDFInfo
- Publication number
- SE1151231A1 SE1151231A1 SE1151231A SE1151231A SE1151231A1 SE 1151231 A1 SE1151231 A1 SE 1151231A1 SE 1151231 A SE1151231 A SE 1151231A SE 1151231 A SE1151231 A SE 1151231A SE 1151231 A1 SE1151231 A1 SE 1151231A1
- Authority
- SE
- Sweden
- Prior art keywords
- vector
- unit
- issue
- execution
- units
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims description 22
- 239000013598 vector Substances 0.000 claims abstract description 141
- 230000015654 memory Effects 0.000 claims abstract description 47
- 238000013507 mapping Methods 0.000 claims description 4
- 230000010267 cellular communication Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- 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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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]
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)
- Multimedia (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
Uppfinningen avser en digital signalprocessor (200) innefattande en processorkäma(201), en heltalsexekveringsenhet (212) och ett antal vektorexekveringsenheter (203,205), varvid den digitala signalprocessorn innefattar ett programrninne (211) anordnatatt innehålla instruktioner för exekveringsenheterna (212, 203, 205) och avgivningslo-gik fór avgivning av instruktioner. Den digitala signalprocessorn innefattar en avgiv-ningsstyrenhet (705) för val av åtminstone två exekveringsenheter som ska motta ochexekvera samma instruktion samtidigt, och logik för sändning av instruktionen till nämnda åtminstone två exekveringsenheter. (Fig. 1)
Description
15 20 25 30 ne, och två vektorexekveringsenheter vilka är förbundna med, men inte integrerade i kär- nan. Vektorexekveringsenhetema kan vara Complex Arithmetic Logic Units (CALU) eller Complex Multiply-Accumulate Units (CMAC). Kärnan har ett programminne för att distri- buera instruktioner till exekveringsenheterna. I WO2007/018467 har var och en av vektor- exekveringsenheterna en separat instruktionsavkodare. Detta möjliggör användning av vek- torexekveringsenheterna oberoende av varandra och av andra delar av processom på ett effektivt sätt.
Sammanfattning av uppfinningen Ett ändamål med föreliggande uppfinning är att göra en SIMT-processor mer flexibel och möjliggöra mer effektiv användning av programminnet, avgivningsbandbredd och exekve- ringsenheter.
Detta ändamål uppnås enligt föreliggande uppfinning genom en digital processor innefat- tande: - en processorkärna innefattande en heltalsexekveringsenhet konfigurerad för att exekve- ra heltalsinstruktioner; och - åtminstone en första och en andra vektorexekveringsenhet skild från och kopplad till processorkäman, varvid vektorexekveringsenhetema har ett första resp. ett andra antal datavägar, varvid vektorexekveringsenheterna är anordnade att exekvera instruktioner, innefattande vektorinstruktioner som ska utföras på multipla data i form av en vektor; - varvid den digitala signalprocessorn innefattar ett programminne anordnat att innehålla instruktioner för den första och andra vektorexekveringsenheten och avgivningslogik för avgivning av instruktioner, innefattande vektorinstruktioner, till den första och andra vektorexekveringsenheten.
Den digitala signalprocessom är kännetecknad av att processorn innefattar en avgivnings- styrenhet för val av åtminstone två exekveringsenheter som ska motta och exekvera samma instruktion samtidigt, och logik för sändning av instruktionen till nämnda åtminstone två exekveringsenheter.
I ovan definierade processor kan samma instruktion användas för att styra ett antal exekve- ringsenheter. Detta minskar signifikant styrkostnaden när samma instruktion ska sändas till ett antal exekveringsenheter. Det möjliggör även parallell exekvering av samma instruktion på ett antal exekveringsenheter. Möjligheten att starta många exekveringsenheter vid en 10 15 20 25 30 tidpunkt gör hanteringen av instruktioner mycket effektiv. En exekveringsenhet kan vara en vektorexekveringsenhet, en skalär exekveringsenhet eller en heltalsexekveringsenhet. En skalär exekveringsenhet är anordnad att bearbeta ett dataelement åt gången, men dataele- mentet kan vara antingen ett heltalsvärde eller ett komplext värde. Exempelvis kan samma vektor sändas till två eller flera vektorexekveringsenheter för att utföras på olika uppsätt- ningar av data. Exempel på icke-vektorinstruktioner som ofta sänds till mer än en vektor- exekveringsenhet är clear och star. Det är t.ex. möjligt att ha en avgivningsgrupp som: in- kluderar samtliga vektorexekveringsenheter.
I en föredragen utfóringsforrn innefattar varje vektorexekveringsenhet en vektorstyming anordnad att bestämma om en instruktion är en vektorinstruktion och, om den är det, infor- mera ett räkneregister anordnat att innehålla vektorlängden, varvid vektorstyrningarna dessutom är anordnade att styra exekveringen av instruktioner.
Processom kan även innefatta en eller flera acceleratorer, kända inom tekniken. Terrnen funktionell enhet, när den används i denna skrift, anger antingen en exekveringsenhet eller en accelerator.
Företrädesvis är ett antal avgivningsgrupper definierade, varvid varje avgivningsgrupp in- nefattar åtminstone en av exekveringsenhetema, och åtminstone en avgivningsgrupp inne- fattande mer än en av exekveringsenhetema, och varvid avgivningsstyrenheten är anordnad att välja de åtminstone två exekveringsenhetema genom val av en avgivningsgrupp. Detta kan vara hårdkodat i kärnan.
I en föredragen utföringsforrrr innefattar alternativt avgivningsstyrenheten vidare åtminsto- ne en mask fórenad med åtminstone en avgivningsgrupp, varvid masken indikerar vilken exekveringsenhet eller vilka enheter i avgivningsgruppen som ska motta och exekvera in- struktionen. Detta gör det möjligt att ändra definitionen av avgivningsgrupper och valet av exekveringsenheter för varje avgivningsgrupp, vilket gör processorn mer flexibel.
En avgivningsgrupp kan innefatta åtminstone en heltalsexekveringsenhet och/eller åtmin- stone en vektorexekveringsenhet. En avgivningsgrupp kan vara definierad för att innefatta endast exekveringsenheter av samma typ eller en blandning av exekveringsenheter av olika 10 15 20 25 30 typer, enligt önskemål. Det kan vara lämpligt att definiera en avgivningsgrupp som inklude- rar samtliga exekveringsenheter, exempelvis för avgivning av kommandot clear.
En instruktion kan innefatta läsning av data från och skrivning av data till andra enheter i processorn. När samma instruktion sänds till ett antal exekveringsenheter i en avgivnings- grupp, ska normalt varje exekveringsenhet arbeta med sin egen uppsättning för att andra enheter ska undvika att flera exekveringsenheter försöker läsa från eller skriva till samma enhet. Därför innefattar i en föredragen utföringsforrn åtminstone en exekveringsenhet en mappningstabell för att översätta information innehållen i en instruktion som indikerar åt- minstone en enhet med vilken exekveringen ska interagera, t.ex. från vilket minne den ska läsa data. Fortfarande kan två eller flera exekveringsenheter vara anordnade att motta data från samma minnesenhet eller funktionella enhet i processorn, exempelvis när en exekve- ringsenhet i avgivningsgruppen ska utföra funktionen A = sum (X * Y), och en annan ska utföra funktionen B = sum (X * Z), där X, Y och Z är datavektorer erhållna från de övriga enheterna i processorn.
Ett sätt att hantera resultatet från en avgivningsgrupp innefattar att skriva resultatet från varje exekveringsenhet i avgivningsgruppen till samma vektorregisterenhet och att låta vektorregisterenheten utföra de instruktioner som är inblandade i bearbetningen av resulta- tet.
Företrädesvis är instruktionsavkodaren anordnad att informera vektorregisterenheten om den instruktion som exekveras vid varje given tidpunkt.
Valet av vilken avgivningsgrupp som ska utföra en viss instruktion kan hanteras på olika sätt. Normalt kommer en avgivningssignal att extraheras i kärnan och sändas till den rele- vanta exekveringsenheten. I detta fall är nämnda åtminstone en exekveringsenhet i en av- givningsgrupp vidare anordnad att motta en avgivningssignal och att styra exekveringen av instruktioner baserat på denna avgivningssignal. Alternativt kan varje vektorexekverings- enhet vara anordnad att extrahera en avgivningssignal från ett mottaget instruktionsord och bestämma huruvida den ska delta i exekveringen av instruktionsordet baserat på avgiv- ningssignalen. 10 15 20 25 30 Vektorstyrningen styr företrädesvis exekveringen av instruktioner på basis av en avgiv- ningssignal mottagen från kärnan. Alternativt kan avgivningssignalen hanteras lokalt av sj älva exekveringsenheten. Hur detta ska implementeras är känt inom tekniken.
Bearbetning enligt uppfinningen görs mer effektiv genom möjliggörande av parallell bear- betning av en instruktion på olika uppsättningar av data genom två exekveringsenheter. Det skulle även vara möjligt att låta två exekveringsenheter bearbeta olika delar av samma upp- sättning av data, förutsatt att de olika delarna var lagrade i olika minnen. Detta möjliggör mer effektiv bearbetning av stora mängder data, än vad som är möjligt i den kända tekni- ken, utan att större vektorexekveringsenheter behöver implementeras. Som en alternativ lösning kan kapaciteten hos en vektorexekveringsenhet ökas genom ökning av antalet data- vägar inkluderade i vektorexekveringsenheten, men en sådan vektorexekveringsenhet med hög kapacitet skulle vara onödigt stor för de flesta kommandon, och därför ineffektiv. Upp- finningen tillhandahåller följaktligen en mer flexibel och kostnadseffektiv lösning än en enda vektorexekveringsenhet med högre kapacitet.
Fördelningen av instruktioner och data till och från flera enheter vid samma tidpunkt tillä- ter extremt effektiv hantering av instruktioner, eftersom sändningen av samma signal mel- lan flera enheter kan åstadkommas med praktiskt taget samma kostnad som signalering mellan två enheter.
Programrninnet är typiskt anordnat i processorkärnan och är även anordnat att innehålla instruktioner för heltalsexekveringsenheten.
Uppfinningen avser även en basbandskommunikationsanordning lämplig för trådburen och trådlös flerlägeskommunikation, innefattande: - en front-endenhet konfigurerad för att sända och/eller motta kommunikationssigna- ler; - en pro grammerbar digital signalprocessor kopplad till den analoga front- endenheten, varvid den programmerbara digitala signalprocessom är en digital sig- nalprocessor enligt ovan. 10 15 20 25 30 6 I en föredragen uttöringsforrn är vektorexekveringsenhetema, till vilka genomgående 'hän- visas i denna beskrivning, vektorexekveringsenheter av SIMD-typ eller programmerbara coprocessorer anordnade att opera på vektorer av data.
Processom enligt utföringsformer av denna uppfinning är särskilt användbar för digitala signalprocessorer, speciellt basbandsprocessorer. Front-endenheten kan vara en analog front-endenhet anordnad att sända och/eller motta radiofrekvens- eller basbandssignaler.
Sådana processorer används i stor skala i olika typer av kommunikationsanordningar, så- som mobiltelefoner, TV-mottagare och kabelmoden. Basbandskommunikationsanordningen kan följaktligen vara anordnad för kommunikation i ett cellulärt kommunikationsnätverk, exempelvis såsom en mobiltelefon eller en mobil datakommunikationsanordning. Bas- bandskommunikationsanordningen kan även vara anordnad för kommunikation enligt andra trådlösa standarder, såsom Bluetooth eller WiFi. Den kan även vara en televisionsmottaga- re, ett kabelmodem, WiFi-modem eller varje annan typ av kommunikationsanordning som kan leverera en basbandssignal till sin processor. Det bör inses att benämningen ”basband” endast avser den signal som hanteras intemt i processorn. De faktiskt mottagna och/eller sända kommunikationssignalerna kan vara varje lämplig typ av kommunikationssignaler, mottagna på trådlösa eller trådbundna förbindelser. Kommunikationssignalerna omvandlas på lämpligt sätt till en basbandssignal genom en front-endenhet hos anordningen.
Kortfattad ritningsbeskrivning Uppfinningen kommer i det följ ande att beskrivas mer detaljerat, i form av exempel och med hänvisning till bifogade ritningar.
Fig. 1 är ett blockschema över basbandsprocessorn enligt en utföringsform av uppfinning- en.
Fig. 2 visar ett instruktionsformat som kan användas för att välja en viss avgivningsgrupp.
Fig. 3 visar instruktionsavgivningslogiken i en SIMT-processor.
Fig. 4A visar avgivningslogikfunktionema.
Fig. 4B visar en mask som kan användas för att specificera avgivningsgruppcr.
Fig. 5 är ett schema visande instruktionsavgivande pipelines hos en utföringsform av pro- cessorkäman i Fig. 2.
Fig. 6 visar ett sätt att hantera tomgångssignalen i en avgivningsgrupp. 10 15 20 25 30 Detaljerad beskrivning av utföringsformer Fig. 1 visar 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, vilket kommer att diskuteras mer detalj erat i det följ ande. En FEC-enhet 206, såsom disku- terad i Fi g. 1, är förbunden med on-chip-nätverket. I en konkret implementering kan natur- ligtvis 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ärdprocessorn. 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äman 201 ett programrninne 211 samt en avgiv- ningslogik och funktioner för ”multi-contexfïsupport. För varje understödd exekverings- kontext eller tråd inkluderar detta en programräknare, stackpekare och registerfil (ej särskilt visad i Fig. 2). Typiskt stöds 2-3 trådar. Detta möjliggör användning av en funktion be- nämnd fork, vilken möjliggör att kärnan utför vissa instruktioner, medan t.ex. en vektorexe- kveringsenhet exekverar en vektorinstruktion. Det är därför ej önskvärt att ha överlappande avgivningsgrupper mellan de olika trådama. Varje tråd har följaktligen sin egen uppsättning av vektorexekveringsenheter för att undvika en situation där två trådar försöker använda samma vektorexekveringsenhet samtidigt. I systemet är det typiskt möjligt att använda samma vektorexekveringsenhet i mer än en tråd, men om mer än en tråd försöker sända en avgivningssignal till en vektorexekveringsenhet som redan är använd av en annan tråd kommer ett felmeddelande att avges.
Styrkäman 201 innefattar även en heltalsexekveringsenhet 212 innefattande en registerfil RF, ett kämheltalsminne ICM, en multipliceringsenhet MUL och en aritmetik- och lo- gik/skiftenhet (ALSU). Dessa enheter är kända inom tekniken och visas inte i Fig. 1.
Ett on-chip-nätverk 244 förbinder inbördes samtliga enheter hos processorn, inkluderande styrkäman 201, den digitala front-endenheten 209, värdgräiissnittsenheten 207, vektorexe- kveringsenheterna 203, 205, minnesbankarna 230, 232, heltalsminnesbanken 238 och acce- leratorema 242. 10 15 20 25 30 I detta exempel är var och en av den första vektorexekveringsenheten 203 och den andra vektorexekveringsenheten 205 CMAC-vektorexekveringsenheter, var och en innefattande en vektorstyming 213, en vektorladdnings/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ör- bundna med on-chip-nätverket 244 (exempelvis från en minnesbank) och lagringsfunktio- nen används för lagring av data från exekveringsenhetema 203, 205 till t.ex. en minnesen- het 230, 231 via on-chip-nätverket 244. Data kan även erhållas från andra vektorexekve- ringsenheter och/eller beräkningsresultaten kan skickas vidare till andravektorexekvering- senheter för vidare bearbetning. Varje vektorexekveringsenhet innefattar även en vektor- styrning 213, 223 anordnad att motta instruktioner från programminnet 211.
Vektorstymingen hos denna första vektorexekveringsenhet är fiö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- torstymingen hos vektorexekveringsenheten alstra avgivningssignalen lokalt. I detta fall bildas avgivningssignalerna av vektorstymingen baserat på instruktionsordet på samma sätt som det skulle vara i avgivningslogiken.
Altemativt ä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 även 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. 10 15 20 25 30 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 fimktion 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 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 processorn 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. 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 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ändbara av många olika standarder.
De första och andra vektorexekveringsenhetema 203, 205 visas som fyrvägs CMAC- i 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 F ig. 1). I denna utföringsfoirn kan följaktligen CMAC 203 benämnas som en fyr- vägs CMAC-dataväg. Utöver multiplikation och addition, kan CMAC 203 även utföra av- rundnings- och skalningsoperationer och understödja mättnad, såsom känt inom teknikom- rådet.
I en utföringsforrn kan instruktionsuppsättningsarkitekturen för processorkärnan 201 inne- fatta tre klasser av sammansatta instruktioner. Den första klassen av instruktioner är RISC- instruktioner, vilka opererar på 16-bitars operander. RISC-instruktionsklassen innefattar de 10 15 20 25 30 10 flesta styrorienterade instruktioner och kan exekveras inom heltalsexekveringsenheten 212 hos processorkärnan 201. Nästa klass av instruktioner är DSP-instruktioner, vilka opererar på komplexvärda data uppvisande en realdel och en imaginärdel. DSP-instruktionerna kan exekveras på en eller flera av vektorexekveringsenheterna 203, 205. Den tredje klassen av instruktioner är vektorinstruktionerna. Vektorinstruktioner kan anses vara fórlängningar av DSP-instruktionema, eftersom de opererar på stora datamängder och kan utnyttja avancera- de adresseringslägen och vektorstöd. Vektorinstruktionema kan operera på komplexa och reela datatyper.
I den kända tekniken är CMAC-enhetema 203, 205 anordnade att opera separat, var och en bearbetande en instruktion på en uppsättning av data samtidigt. Enligt uppfinningen är in- kluderade styrorgan vilka möjliggör att CMAC-enhetema 203, 205 arbetar samtidigt på samma uppsättning av data i syfte att snabba upp bearbetningen.
I förklarande syfte, har i den kända tekniken varje exekveringsenhet ett namn. Kommandot .cmac 0 innebär att samtliga påföljande CMAC-instruktioner ska sändas till CMAC-enhet nummer 0. Denna information hittas i själva instruktionerna och avkodas antingen i avgivningslogi- ken i kärnan 201 eller genom själva vektorexekveringsenhetema.
Enligt uppfinningen specificeras grupper av exekveringsenheter benämnda avgivnings- grupper, varvid varje avgivningsgrupp innefattar en eller flera exekveringsenheter av sam- ma typ eller av olika typer. När en instruktion avges, kommer enhetsfaltet i instruktiorisor- det inte att avkoda en av exekveringsenhetema direkt, utan kommer i stället att indikera en av avgivningsgrupperna, vilket kommer att diskuteras i samband med Fig. 4A och 4B. In- formation om vilka exekveringsenheter som är inkluderade i varje avgivningsgrupp kan innehållas i varje lämplig enhet, exempelvis i ett dedicerat minne i processorkäman 201, såsom avgivningslogikenheten 705 i F ig. 3. Detta kommer att diskuteras mer detalj erat i samband med Fig. 4A och 4B. En avgivningsgrupp kan indikeras i en instruktion på samma sätt som en enda vektor i den kända tekniken. 10 15 20 25 30 11 Enligt uppfinningen definieras ett nytt kommando till att säga att samtliga instruktioner av en bestämd typ ska sändas till en bestämd avgivningsgrupp, och inte till en individuell vek- torexekveringsenhet. Om följ ande kommando har avgivits: .issuegroup0 . issuegr0up5 innebär detta att samtliga cmac-instruktioner ska sändas till avgivningsgrupp 0 och att samtliga calu-instruktioner ska sändas till avgivningsgrupp 5. Om en cmac-instruktion, så- som cacc x, y avges, kommer den att sändas till avgivningsgrupp nummer 0. Om en calu- instruktion, såsom vadd z, b avges, kommer den att sändas till avgivningsgrupp nummer 5.
Vektorexekveringsenhetema i en avgivningsgrupp kan ha samma antal datavägar eller olika antal datavägar.
Fig. 2 visar ett exempel på ett instruktionsforrnat. I detta exempel är en avgivningsgrupp benärrmd avgivningsgrupp 0 indikerad med avgivningsgruppkodningen 0 0 l. I exemplet visat i F ig. 2 har heltalsexekveringsenheten sin egen ingång och är inte inkluderad i någon avgivningsgrupp. Det kan även vara möjligt att definiera en avgivningsgrupp, exempelvis avgivnings grupp 0 för att inkludera heltalsexekveringsenheten. I detta altemativa exempel skulle en avgivningsgrupp användas för att bearbeta heltalsinstriiktioner. I exemplet i Fig. 2, med användning av tre bitar för avgivningsgruppnurnret, kan åtta olika avgivningsgrup- per vara specificerade. Om ett stort antal avgivningsgrupper önskas, måste antalet bitar som används för att indikera avgivningsgrupper ökas i motsvarande grad. Bokstaven x i figuren anger ett dataelement.
Som ovan förklarats i samband med Fig. 1, stöder käman normalt två eller flera trådar, eller kontexter. Som i fallet när individuella exekveringsenheter används, är det inte önskvärt att engagera samma funktionsenhet i två eller flera trådar, eftersom det finns en risk för kon- flikt. F öreträdesvis adderas därför en ytterligare bit till avgivningsfältet i Fig. 2, för att indi- kera den tråd eller kontext med vilken avgivningsgruppen kan användas.
FIG. 3 illustrerar vektorinstruktionslogiken hos en basbandsprocessor 700 enligt känd tek- nik vilken kan användas som utgångspunkt för föreliggande uppfinning. Basbandsproces- som innefattar en kärna 701 uppvisande ett programminne PM 702, vilket innehåller iii- struktioner för de olika exekveringsenhetema hos processom, och en programflödesstyren- 10 15 20 25 30 12 het 703. Programflödesstyrenheten 703 är anordnad att peka ut den nästfiilj ande adress från vilken en instruktion ska läsas i programminnet 702. Från programminnet 702 hämtas in- struktioner till en avgivningslogikenhet 705, vilken är gemensam for samtliga exekverings- enheter och anordnad att styra vart varje specifik instruktion ska sändas. Avgivningslogiken 705 är i detta fall förbunden med ett antal vektorexekveringsenheter 710, 712, 714 och via en multiplexer 715 med en heltalsexekveringsenhet 716. Som ovan förklarats, sänds i en utfóringsform de instruktionsord som innefattar de aktuella instruktionerna till samtliga exekveringsenheter, medan avgivningssignalen som motsvarar en bestämd instruktion sänds endast till den exekveringsenhet som ska exekvera denna instruktion. I en altemativ utfóringsfonn hanteras avgivningssignalen lokalt av varje vektorexekveringsenhet.
Fig. 4A visar ett exempel på en avgivningsstyrenhet, motsvarande enheten 705 i Fig. 3, enligt uppfinningen. Som tidigare innefattar kärnan ett programrninne 21 1 som innehäller instruktioner for vektorexekveringsenheter. En fóravkodningsenhet 321 är anordnad att bestämma vilken exekveringsenhet som ska motta varje instruktion som läses från pro- gramminnet. Instruktionsordet sänds direkt från programminnet 21 1 till samtliga exekve- ringsenheter. Detta visas inte i Fig. 4A, vilken endast visar styrsignalema. Avgivningssig- nalen som bär informationen om vilken funktionsenhet eller vilka enheter som ska utföra instruktionen, sänds via en demultiplexer 324. Avgivningssignalen kan sändas till heltals- exekveringsenheten i kärnan, som visas av pilen markerad CORE, från demultiplexem.
Altemativt kan avgivningssignalen vara avsedd för en avgivningsgrupp. I detta fall kan avgivningssignalen sändas som den är till samtliga funktionsenheter i denna avgivnings- grupp- I en foredragen utforingsform kan emellertid, for att tillhandahålla mer flexibilitet, en mask användas i samband med avgivningssignalen, som visas i Fig. 4A. I detta fall är anordnade ett antal maskenheter 326, 328, 330, en for varje avgivningsgrupp. En logisk operatorenhet 332, 334 mottar avgivningssignalen, som är avsedd for en avgivningsgrupp, från demultip- lexem 324. Denna logiska operatorenhet 332, 334 mottar även information från den mask- enhet 326, 328, 330 som motsvarar denna avgivningsgrupp och bestämmer vilka funktions- enheter i avgivningsgruppen som ska motta instruktionen. Funktionen hos maskenheten kommer att diskuteras mer detalj erat i det följande. När den logiska operatorenheten har bestämt, baserat på avgivningssignalen och informationen från masken, vilken funktionsen- het eller vilka enheter som ska utföra instruktionen, sänds avgivningssignalen till dessa vek- 10 15 20 25 30 13 torexekveringsenheter. På detta sätt kan de funktionsenheter som är inkluderade i en avgiv- ningsgrupp varieras dynamiskt i stället for att vara hårdkodade i systemet under konfigura- tion.
Fig. 4B visar ett exempel på en maskenhet 325 enligt utfóringsforrnen ovan. Maskenheten innefattar en mask som identifierar vektorexekveringsenheterna i en grupp av vektorexe- kveringsenheter som faktiskt ska motta instruktionen. I praktiken har masken en bit for var- je vektorexekveringsenhet, vilken kan sättas till 0 eller 1, för att indikera om vektorexekve- ringsenheten ska vara inkluderad eller inte i avgivningsgruppen. Denna information kombi- neras med informationen som innehålls i avgivningssignalen för att bestämma vilka vektor- exekveringsenheter som ska motta instruktionen.
I detta exempel används samtliga maskenheter 326, 328, 330 för samma avgivningsgrupp.
Som indikeras genom en ytterligare maskenhet 340, kan det även finnas maskenheter fór en eller flera ytterligare avgivningsgrupper. Huvudskälet för att ha flera maskregister för en avgivningsgrupp är att tillåta varje kontext att ha sitt eget separata maskregister.
I exemplet i Fig. 4B är nio vektorexekveringsenheter potentiellt inkluderade i avgivnings- gruppen. Den information som är lagrad i filterenheten indikerar att den första och sista av dessa exekveringsenheter ska faktiskt delta i exekveringen av instruktionen. Som kommer att inses från vad som anges ovan, kan avgivningsgrupper definieras utan maskenheten, men maskenheten möjliggör den dynaniska definitionen av avgivningsgrupper inom förde- finierade grupper av exekveringsenheter.
Fig.5 illustrerar hur en minnesenhet 230 kan ges tillträde samtidigt från båda CMAC- enheterna 203, 205 i en bestämd grupp. Som visas av den gaffelforrnade pilen som pekar från minnet 230 till båda CMAC-enhetema 203, 205, kan data läsas från minnet 230 till båda CMAC-enhetema 203, 205, eller läsas till minnet från båda CMAC-enhetema 203, 205. Den förenande pilen från CMAC-enhetema 203, 205 till minnesenheten 230 illustrerar att styrsignaler från CMAC-enhetema kan sändas till samma styringång hos minnesenheten 230. Båda CMAC-enhetema 203, 205 kan motta samma data från minnesenheten vid sam- ma tidpunkt. För skrivning till minnesenheten måste de naturligtvis ta omvägar. Detta kan anordnas på ett antal sätt som är kända för en fackman. CMAC-enhetema 203, 205 är natur- ligtvis endast ett exempel; de kan vara vilka exekveringsenheter som helst. Och de delade 10 15 20 25 30 14 och förenade förbindelsema är verkligen implementerade i on-chip-nätverket 244, vilket möjliggör förbindelser mellan samtliga enheter i processorn.
Fig. 5 innefattar en även vektorregisterenhet 902, vilken kan vara anordnad att motta och kombinera resultaten hos båda eller samtliga exekveringsenhetema i en avgivningsgrupp.
Vektorregisterenheten 902 är även förbunden direkt till on-chip-nätverket 244 för att möj- liggöra utbyte av data med samtliga övriga enheter i processom. Om en vektorregisterenhet är anordnad, kommer den att utföra epilogen. Epilogen kan innebära kombination av resul- taten på det önskade sättet, exempelvis genom att addera dem tillsammans.
Avgivningsgruppfunktionema är särskilt användbara i situationer där det är viktigt att båda CMAC-enhetema startar vid exakt samma tid och arbetar på ett synkroniserat sätt. Multi- avgivningsfunktionerna används typiskt för att möjliggöra att flera vektorexekveringsenhe- ter utför samma instruktion, dvs. när man önskar att överföra samma instruktion till flera vektorexekveringsenheter. Detta gäller både situationer där synkronisering av exekveringen är viktigt och där flera vektorexekveringsenheter ska motta samma instruktioner, men det inte är väsentligt att de är synkroniserade. Ett exempel på det senare är instruktionen clear som används för att frigöra en exekveringsenhet. För att frigöra samtliga vektorexekve- ringsenheter kan en avgivningsgrupp definieras som innefattande samtliga vektorexekve- ringsenheter och instruktionen kan sändas till denna avgivningsgrupp.
Följande exempel kommer att diskuteras på basis av en SIMT DSP med ett godtyckligt antal exekveringsenheter. I förenklande syfie antas samtliga enheter i detta exempel att vara CMAC-vektorexekveringsenheter, men i praktiken kommer en digital signalprocessor att ha enheter av olika typer.
I många basbandsbearbetningsalgoritmer och program kan algoritmen vara uppdelad i ett antal DSP-uppgifter, vilka var och en består av en ”prolog”, en vektoroperation och en ”epilog”. Prologen används huvudsakligen till att rensa ackumulatorer, sätta upp adresslä- gen och pekare och liknande innan vektoroperationen kan genomföras. När vektoropera- tionen är avslutad kan resultatet av vektoroperationen vidarebearbetas av kod i uppgiftens ”epilog”-del. I SIMT-processorer behövs typiskt endast en vektorinstruktion för att genom- föra vektoroperationen. 10 15 20 25 30 15 Den typiska layouten för en DSP-uppgift enligt uppfinningen exemplifieras genom följande exempeluppgift: Kodsträngen i exemplet genomför en komplex skalärproduktberäkning över 512 komplexa värden och lagrar därefter åter resultatet i minnet. Rutinen kräver att följ ande instruktioner hämtas av processorkäman. .issuegroup cmac I ;Assume issue group 1 is selected for cmac operations prolog: ;A ddress setup ldi #0, r0 out r0, cdm0_addr out r0, cdm1_addr out r0, cdm2_addr setcmvl.512 ; Set vector length to 512 vectorop: cmac [0], [1], [2] ; Perform cmac operation over ; samples idle #cmac0 ; Stop program fetching until crnac0 is ready epilog: star [3] ; Store accumulator I exemplet ovan avges instruktionerna setcmvl, cmac och star till och exekveras på CMAC-vektorexekveringsenheten, medan instruktionema ldi, out och idle exekveras på heltalskäman (”core”). Parametern [3] till star-instruktionen indikerar den indirekta nät- verksportadressen hos den enhet till vilken resulterande data ska sändas.
Vektorinstruktionemas vektorlängd indikerar på hur många dataord (samples) vektorexe- kveringsenheten ska operera. Vektorlängden kan vara inställd på varje lämpligt sätt, exem- pelvis ett av de följ ande: 1) Genom dedikerade instruktioner, såsom setcmvl. 123 i exemplet ovan 2) Buren i själva instruktionen, exempelvis enligt formatet cmac. 123, som visas i Fig. 4 3) Inställd av ett styrregister, exempelvis enligt formatet out r0, cmac_vector_length 10 15 20 25 30 16 Instruktionen ídle #cmac0 instruerar kämprogramflödesstymingen att avstanna hämtningen av nya instruktioner tills CMACO-enheten har avslutat sin vektoroperation. Efter det att tomgångsinstruktionen frigörs, och tillåtande av att nya instruktioner hämtas, hämtas ”star”- instruktionen och avges till CMACO-vektorexekveringsenheten. Star-instruktionen instrue- rar CMAC-vektorexekveringsenheten att lagra ackumulatorn i minnet.
Det finns tre möjliga sätt att hantera utgången från exekveringsenheterna hos en avgiv- ningsgrupp. Det enklaste och mest vanliga är att exekveringsenhetema har arbetat separat på uppsättningar av data och att varje instruktion eller följd av instruktioner avslutas indivi- duellt. I detta fall kan resultatet hanteras på ett sätt som är vanligt på teknikområdet.
Ett andra alternativ är att resultaten från två eller flera exekveringsenheter som bildar en grupp ska hanteras tillsammans. Ett sätt att uppnå detta skulle vara att tillhandahålla en vektorregisterfil 902 som visas i F ig. 5, anordnad att motta utmatningen från hela avgiv- ningsgruppen och utföra epilogen. Epilogen skulle innebära att resultaten kombineras på önskat sätt, exempelvis genom att de adderas tillsammans.
Ett tredje altemativ skulle vara att låta endast en av exekveringsenhetema utföra epilogen. I detta fall, för samtliga utom en av exekveringsenhetema i en avgivningsgrupp, skulle den sista instruktionen för exekveringsenheten vara att den sänder sina data till den exekve- ringsenhet hos avgivningsgruppen som skulle utföra den slutliga kombinationen av resulta- ten.
I exemplet ovan indikerar parametrarna [0], [1], [2] i instruktionerna cmac [0],[1],[2] vectorop: att de indirekta nätverksportadressema hos de minnen som ska respektive läsas från och skrivas till, för operationen, under antagande i detta fall att data läses från två minnen och att resultatet skrivs till ett minne. Samma minnesinforrnation ges följaktligen till samtliga berörda vektorexekveringsenheter. Det är uppenbarligen normalt ej önskvärt att samtliga vektorexekveringsenheter i den berörda avgivningsgruppen arbetar på samma data. För att lösa detta problem har varje vektorexekveringsenhet en nätverksportmappningstabell för att översätta parametrarna [0], [1], [2] till exakt den nätverksport denna vektorexekveringsen- 10 15 20 25 17 het ska läsa från eller skriva till. Normalt kommer varje vektorexekveringsenhet hos en avgivningsgruppnatt ha en unik mappningstabell. Som kommer att inses från Fig. 5, kan vektorexekveringsenhetema arbeta på data från samma minnesenheter eller från olika min- nesenheter. Exempelvis kan de två vektorexekveringsenheterna 203, 205 utföra de respek- tive funktionerna Zx-y och Zx-z, där x, y och z är vektorer av data erhållna från ett respekti- ve första, andra och tredje minne.
Tomgångsinstruktionen används i SIMT-arkitekturen fór att avsluta hämtning av instruk- tioner från pro gramminnet tills en bestämd vektorexekveringsenhet har avslutat sin instruk- tion. När en vektorexekveringsenhet har avslutat returnerar den en signal för att indikera till kärnan att den är klar eller färdig. Denna signal kan initiera en avbrottssignal. När avgiv- ningsgrupper används, ska tomgångsinstruktionen företrädesvis avsluta hämtningen av in- struktioner tills samtliga vektorexekveringsenheter i avgivningsgruppen är färdiga. Därför ska kärnan hantera klarsignaler från samtliga vektorexekveringsenheter i avgivningsgrup- pen på ett koordinerat sätt. När exekveringsenhetema i en avgivningsgrupp kör samma in- struktion och inga stillestånd uppträder i exekveringsenheterna, ska typiskt samtliga exe- kveringsenheter inom samma avgivningsgrupp frigöra sin avbrottssignal samtidigt. För att tillåta flexibilitet, är det möjligt att specificera om ”och”- eller ”eller”-logik ska användas för att bilda motsvarande utsignal. Kriteriet kan exempelvis vara att klarsignalen har motta- gits från samtliga vektorenheter, dvs. samtliga vektorexekveringsenheter i avgivningsgrup- pen ska avslutas. Alternativt kan kriteriet vara att en av vektorenhetema har avgett klarsig- nalen. Ett praktiskt sätt att hantera detta visas i Fig. 6. En logisk enhet 904 är anordnad att motta klarsignalen från var och en av vektorexekveringsenheterna O, 1, 2 i en avgivnings- grupp. Den logiska enheten 904 har även information från avgivningsgruppmasken 900 diskuterad i samband med Fig. 3B och är anordnad att utföra en lämplig logisk funktion, t.ex. OR, AND eller XOR för att uppnå det önskade resultatet.
Claims (5)
1. 8 Patentkrav Digital signalprocessor (200) innefattande: en processorkärna (201) innefattande en heltalsexekveringsenhet (212) konfigu- rerad for att exekvera heltalsinstruktioner; och åtminstone en första och en andra vektorexekveringsenhet (203, 205, 520, 530) skild från och kopplad till processorkärnan (201), varvid vektorexekveringsenhe- terna har ett första resp. ett andra antal datavägar, varvid vektorexekveringsenhe- tema är anordnade att exekvera instruktioner, innefattande vektorinstruktioner som ska utföras på multipla data i form av en vektor; varvid den digitala signalprocessom innefattar ett programminne (211) anordnat att innehålla instruktioner för den forsta och andra vektorexekveringsenheten (203, 205, 520, 530) och avgivningslogik for avgivning av instruktioner, innefat- tande vektorinstruktioner, till den forsta och andra vektorexekveringsenheten, varvid den digitala signalprocessorn är kännetecknad av att processorn innefat- tar en avgivningsstyrenhet (705) for val av åtminstone två exekveringsenheter som ska motta och exekvera samma instruktion samtidigt, och logik för sändning av instruktionen till nämnda åtminstone två exekveringsenheter. Processor enligt krav 1, varvid ett antal avgivningsgrupper är definierade, varvid varje avgivningsgrupp innefattar åtminstone en av exekveringsenheterna (212, 203, 205), och åtminstone en avgivningsgrupp innefattande mer än en av exekveringsen- heterna, och varvid avgivningsstyrenheten (705) är anordnad att välja de åtminstone två exekveringsenhetema genom val av en avgivningsgrupp. Processor enligt krav 1 eller 2, varvid avgivningsstyrenheten (705) vidare innefattar åtminstone en mask (900) förenad med åtminstone en avgivningsgrupp, varvid mas- ken indikerar vilken exekveringsenhet eller vilka enheter i avgivningsgnippen som ska motta och exekvera instruktionen. Processor enligt något av föregående krav, varvid en avgivningsgrupp kan innefatta åtminstone en heltalsexekveringsenhet (212) och/eller åtminstone en vektorexekve- ringsenhet (203, 205, 520, 530). 10. ll. 19 Processor enligt något av föregående krav, varvid åtminstone en exekveringsenhet innefattar en mappningstabell för att översätta information innehållen i en instruk- tion som indikerar åtminstone en enhet med vilken exekveringen ska interagera, t.ex. från vilket minne den ska läsa data. Processor enligt något av föregående krav, varvid varje vektorexekveringsenhet in- nefattar en vektorstyrning anordnad att bestämma om en instruktion är en vektorin- struktion och, om den är det, informera ett räkneregister anordnat att innehålla vek- torlängden, varvid vektorstyrningarna dessutom är anordnade att styra exekveringen av instruktioner. Processor enligt något av föregående krav, vidare innefattande en vektorregisterfil- enhet (902), varvid exekveringsenhetema hos en avgivningsgrupp kan vara instrue- rade att skriva resultatet av en exekvering av en instruktion till vektorregisterfilen- heten. Processor enligt något av föregående krav, varvid instruktionsavkodaren (723) är anordnad att informera vektorstyrningen (720, 720°) om den instruktion som exe- kveras vid varje given tidpunkt. Processor enligt krav 1, varvid nämnda åtminstone en exekveringsenhet (203, 205, 212) i en avgivningsgrupp vidare är anordnad att motta en avgivningssignal och att styra exekveringen av instruktioner baserat på denna avgivningssignal. Processor enligt krav 1, varvid varje vektorexekveringsenhet (203, 205, 520, 530) är anordnad att extrahera en avgivningssignal från ett mottaget instruktionsord och be- stämma huruvida den ska delta i exekveringen av instruktionsordet baserat på av- givningssignalen. Basbandskommunikationsanordning lämplig för trådburen och trådlös flerläges- kommunikation, innefattande: - en front-endenhet (7) konfigurerad för att sända och/eller motta kommunika- tionssignaler; 20 - en programrnerbar digital signalprocessor (3) kopplad till den analoga front- endenheten, varvid den programmerbara digitala signalprocessom är en digital signalprocessor enligt något av krav 1-10. 12. Basbandskommunikationsanordning enligt krav 11, varvid front-endenheten (71) är en analog front-endenhet anordnad att sända och/eller motta radiofrekvens- eller basbandssignaler. 13. Basbandskommunikationsanordning enligt krav 1 1 eller 12, varvid basbandskom- munikationsanordningen är en anordning för kommunikation i ett trådlöst kommu- nikationsnätverk, såsom ett cellulärt kommunikationsnätverk. 14. Basbandskommunikationsanordning enligt krav 1 1, varvid basbandskommunika- tionsanordningen är en televisionsmottagare. 15. Basbandskommunikationsanordning enligt krav 1 1, varvid basbandskommunika- tionsanordningen är ett kabelmodem.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1151231A SE1151231A1 (sv) | 2011-12-20 | 2011-12-20 | Digital signalprocessor och basbandskommunikationsanordning |
EP12816376.3A EP2751671B1 (en) | 2011-12-20 | 2012-11-28 | Digital signal processor and baseband communication device |
US14/364,629 US20140344549A1 (en) | 2011-12-20 | 2012-11-28 | Digital signal processor and baseband communication device |
CN201280063355.4A CN104040493A (zh) | 2011-12-20 | 2012-11-28 | 数字信号处理器和基带通信设备 |
KR1020147018299A KR20140105805A (ko) | 2011-12-20 | 2012-11-28 | 디지털 신호 프로세서 및 베이스밴드 통신 디바이스 |
PCT/SE2012/051321 WO2013095258A1 (en) | 2011-12-20 | 2012-11-28 | Digital signal processor and baseband communication device |
ES12816376.3T ES2647099T3 (es) | 2011-12-20 | 2012-11-28 | Procesador de señal digital y dispositivo de comunicación de banda base |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1151231A SE1151231A1 (sv) | 2011-12-20 | 2011-12-20 | Digital signalprocessor och basbandskommunikationsanordning |
Publications (2)
Publication Number | Publication Date |
---|---|
SE536099C2 SE536099C2 (sv) | 2013-05-07 |
SE1151231A1 true SE1151231A1 (sv) | 2013-05-07 |
Family
ID=47563584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE1151231A SE1151231A1 (sv) | 2011-12-20 | 2011-12-20 | Digital signalprocessor och basbandskommunikationsanordning |
Country Status (7)
Country | Link |
---|---|
US (1) | US20140344549A1 (sv) |
EP (1) | EP2751671B1 (sv) |
KR (1) | KR20140105805A (sv) |
CN (1) | CN104040493A (sv) |
ES (1) | ES2647099T3 (sv) |
SE (1) | SE1151231A1 (sv) |
WO (1) | WO2013095258A1 (sv) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934195B2 (en) | 2011-12-21 | 2018-04-03 | Mediatek Sweden Ab | Shared resource digital signal processors |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713059B2 (en) * | 2014-09-18 | 2020-07-14 | Advanced Micro Devices, Inc. | Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6077265A (ja) * | 1983-10-05 | 1985-05-01 | Hitachi Ltd | ベクトル処理装置 |
US5045995A (en) * | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
US5210834A (en) * | 1988-06-01 | 1993-05-11 | Digital Equipment Corporation | High speed transfer of instructions from a master to a slave processor |
US5197130A (en) * | 1989-12-29 | 1993-03-23 | Supercomputer Systems Limited Partnership | Cluster architecture for a highly parallel scalar/vector multiprocessor system |
AU2902092A (en) * | 1991-10-24 | 1993-05-21 | Intel Corporation | Data processing system |
US5437043A (en) * | 1991-11-20 | 1995-07-25 | Hitachi, Ltd. | Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers |
GB2273377A (en) * | 1992-12-11 | 1994-06-15 | Hughes Aircraft Co | Multiple masks for array processors |
JPH07271764A (ja) * | 1994-03-24 | 1995-10-20 | Internatl Business Mach Corp <Ibm> | 計算機プロセッサ及びシステム |
US6317819B1 (en) * | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US6219776B1 (en) * | 1998-03-10 | 2001-04-17 | Billions Of Operations Per Second | Merged array controller and processing element |
US6308250B1 (en) * | 1998-06-23 | 2001-10-23 | Silicon Graphics, Inc. | Method and apparatus for processing a set of data values with plural processing units mask bits generated by other processing units |
GB2352536A (en) * | 1999-07-21 | 2001-01-31 | Element 14 Ltd | Conditional instruction execution |
US6839828B2 (en) * | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
US7681013B1 (en) * | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
TWI289789B (en) * | 2002-05-24 | 2007-11-11 | Nxp Bv | A scalar/vector processor and processing system |
US20040193838A1 (en) * | 2003-03-31 | 2004-09-30 | Patrick Devaney | Vector instructions composed from scalar instructions |
US8307194B1 (en) * | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7383427B2 (en) * | 2004-04-22 | 2008-06-03 | Sony Computer Entertainment Inc. | Multi-scalar extension for SIMD instruction set processors |
US7990949B2 (en) * | 2004-11-09 | 2011-08-02 | Broadcom Corporation | Enhanced wide area network support via a broadband access gateway |
US7543119B2 (en) * | 2005-02-10 | 2009-06-02 | Richard Edward Hessel | Vector processor |
US20070150697A1 (en) * | 2005-05-10 | 2007-06-28 | Telairity Semiconductor, Inc. | Vector processor with multi-pipe vector block matching |
US7415595B2 (en) * | 2005-05-24 | 2008-08-19 | Coresonic Ab | Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory |
US7299342B2 (en) * | 2005-05-24 | 2007-11-20 | Coresonic Ab | Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement |
US7543136B1 (en) * | 2005-07-13 | 2009-06-02 | Nvidia Corporation | System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits |
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 |
US7788468B1 (en) * | 2005-12-15 | 2010-08-31 | Nvidia Corporation | Synchronization of threads in a cooperative thread array |
US20080079712A1 (en) * | 2006-09-28 | 2008-04-03 | Eric Oliver Mejdrich | Dual Independent and Shared Resource Vector Execution Units With Shared Register File |
US8082420B2 (en) * | 2007-10-24 | 2011-12-20 | International Business Machines Corporation | Method and apparatus for executing instructions |
US20110320765A1 (en) * | 2010-06-28 | 2011-12-29 | International Business Machines Corporation | Variable width vector instruction processor |
-
2011
- 2011-12-20 SE SE1151231A patent/SE1151231A1/sv not_active IP Right Cessation
-
2012
- 2012-11-28 US US14/364,629 patent/US20140344549A1/en not_active Abandoned
- 2012-11-28 ES ES12816376.3T patent/ES2647099T3/es active Active
- 2012-11-28 EP EP12816376.3A patent/EP2751671B1/en not_active Not-in-force
- 2012-11-28 KR KR1020147018299A patent/KR20140105805A/ko not_active Application Discontinuation
- 2012-11-28 CN CN201280063355.4A patent/CN104040493A/zh active Pending
- 2012-11-28 WO PCT/SE2012/051321 patent/WO2013095258A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934195B2 (en) | 2011-12-21 | 2018-04-03 | Mediatek Sweden Ab | Shared resource digital signal processors |
Also Published As
Publication number | Publication date |
---|---|
WO2013095258A1 (en) | 2013-06-27 |
KR20140105805A (ko) | 2014-09-02 |
SE536099C2 (sv) | 2013-05-07 |
ES2647099T3 (es) | 2017-12-19 |
EP2751671A1 (en) | 2014-07-09 |
EP2751671B1 (en) | 2017-08-16 |
CN104040493A (zh) | 2014-09-10 |
US20140344549A1 (en) | 2014-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7996581B2 (en) | DMA engine | |
JP2835103B2 (ja) | 命令指定方法及び命令実行方式 | |
US8151031B2 (en) | Local memories with permutation functionality for digital signal processors | |
CN112579159A (zh) | 用于矩阵操作加速器的指令的装置、方法和*** | |
TW201706829A (zh) | 具有數位信號處理引擎及增強上下文切換能力之中央處理單元 | |
EP2751668B1 (en) | Digital signal processor and baseband communication device | |
US20120191766A1 (en) | Multiplication of Complex Numbers Represented in Floating Point | |
JPH086924A (ja) | 複素数演算プロセッサとその方法 | |
US7043625B2 (en) | Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (CLIW) | |
SE1151231A1 (sv) | Digital signalprocessor och basbandskommunikationsanordning | |
US20040133765A1 (en) | Parallel execution processor and instruction assigning method | |
US20130238880A1 (en) | Operation processing device, mobile terminal and operation processing method | |
US20140372728A1 (en) | Vector execution unit for digital signal processor | |
US20080091904A1 (en) | Processor enabling input/output of data during execution of operation | |
EP2751705B1 (en) | Digital signal processor and method for addressing a memory in a digital signal processor | |
EP2751670B1 (en) | Digital signal processor | |
US20060271610A1 (en) | Digital signal processor having reconfigurable data paths | |
US20140281368A1 (en) | Cycle sliced vectors and slot execution on a shared datapath | |
CN116097213A (zh) | 一种图指令处理方法及装置 | |
JP2003114797A (ja) | データ処理装置 | |
Lin et al. | Performance evaluation of ring-structure register file in multimedia applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NUG | Patent has lapsed |