SE1151231A1 - Digital signalprocessor och basbandskommunikationsanordning - Google Patents

Digital signalprocessor och basbandskommunikationsanordning Download PDF

Info

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
Application number
SE1151231A
Other languages
English (en)
Other versions
SE536099C2 (sv
Inventor
Anders Nilsson
Eric Tell
Original Assignee
Mediatek Sweden Ab
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mediatek Sweden Ab filed Critical Mediatek Sweden Ab
Priority to SE1151231A priority Critical patent/SE1151231A1/sv
Priority to EP12816376.3A priority patent/EP2751671B1/en
Priority to US14/364,629 priority patent/US20140344549A1/en
Priority to CN201280063355.4A priority patent/CN104040493A/zh
Priority to KR1020147018299A priority patent/KR20140105805A/ko
Priority to PCT/SE2012/051321 priority patent/WO2013095258A1/en
Priority to ES12816376.3T priority patent/ES2647099T3/es
Publication of SE536099C2 publication Critical patent/SE536099C2/sv
Publication of SE1151231A1 publication Critical patent/SE1151231A1/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

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.
SE1151231A 2011-12-20 2011-12-20 Digital signalprocessor och basbandskommunikationsanordning SE1151231A1 (sv)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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