SE535856C2 - Digital signalprocessor och basbandskommunikationsanordning - Google Patents

Digital signalprocessor och basbandskommunikationsanordning Download PDF

Info

Publication number
SE535856C2
SE535856C2 SE1150967A SE1150967A SE535856C2 SE 535856 C2 SE535856 C2 SE 535856C2 SE 1150967 A SE1150967 A SE 1150967A SE 1150967 A SE1150967 A SE 1150967A SE 535856 C2 SE535856 C2 SE 535856C2
Authority
SE
Sweden
Prior art keywords
vector
instructions
execution unit
instruction
queue
Prior art date
Application number
SE1150967A
Other languages
English (en)
Other versions
SE1150967A1 (sv
Inventor
Anders Nilsson
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 SE1150967A priority Critical patent/SE535856C2/sv
Priority to KR1020147011839A priority patent/KR20140078718A/ko
Priority to EP12784088.2A priority patent/EP2751669A1/en
Priority to US14/350,541 priority patent/US20140281373A1/en
Priority to PCT/SE2012/050980 priority patent/WO2013058696A1/en
Priority to CN201280051536.5A priority patent/CN103890719B/zh
Publication of SE1150967A1 publication Critical patent/SE1150967A1/sv
Publication of SE535856C2 publication Critical patent/SE535856C2/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

En digital signalprocessor har en vektorexekveringsenhet anordnad att exekve-ra instruktioner på många data i form av en vektor, innefattande en lokal kö (73 0) anordnad att motta instruktioner från ett programminne och att innehålladem i den lokala kön tills ett fördefinierat villkor är uppfyllt. Den lokala kön(730) är anordnad att motta en följd av instruktioner åt gången från program-minnet och att lagra de sista N instruktionerna, varvid N är ett heltal. En vek-torstyming i vektorexekveringsenheten innefattar köstyrorgan (732, 721, 744)anordnade att förmå den lokala kön till att upprepa en följd av M instruktionerlagrade i den lokala kön, varvid M är ett heltal mindre än eller lika med N, ettantal K gånger. Detta minskar den tid vektorexekveringsenheten hålls väntande till följd av tomgångskommandon i programminnet. (FIG. 6)

Description

25 30 535 856 I en SIMT-arkitektur finns därför många exekveringsenheter. Normalt kan avges en instruktion från programminnet till en av exekveringsenhetema vid varje klock- cykel. Efiersom vektoroperationer typiskt opererar på stora vektorer, kommer en instruktion som mottas i en vektorexekveringsenhet under en klockcykel att ta i anspråk ett antal klockcykler som ska bearbetas. I de efterföljande klockcyklema kan därför instruktioner avges till andra beräkningsenheter hos processom. Efter- som vektorinstruktioner löper på långa vektorer, kan många RISC-instruktioner exekveras samtidigt med vektoroperationen.
Många basbandsalgoritmer kan vara omvandlade till kedjor av mindre basbands- uppgifier med små bakåtberoenden mellan uppgifterna. Denna egenskap kan tillåta inte endast att olika uppgifter utförs parallellt på vektorexekveringsenheter, utan den kan även utnyttjas vid användning av ovan angivna instruktionsuppsåttnings- arkitektur.
För att tillhandahålla synkronisering av styrflödet och att styra dataflödet kan ”tomgângsínstruktioner” ofta användas för att stoppa styrflödet tills en given vek- toroperation är avslutad. *Tomgångsinstruktioneni kommer att stoppa ytterligare instruktionshämtning tills ett bestämt villkor är uppfyllt. Ett sådant tillstånd kan vara avslutande av en vektorinstruktion i en vektorexekveringsenhet.
Som kommer att diskuteras mer detaljerat i det följande, kommer en DSP-uppgift typiskt att innefatta en följd av två eller tre instruktioner. Detta innebär att vektor- exekveringsenheten kommer att motta en vektorinstruktion, såsom att utföra en beräkning, och att exekvera den på den tillandahållna datavektom tills den är fär- dig med hela vektorn. Nästa instruktion kommer att vara bearbeta resultatet och lagra det i minnet, vilket kan teoretiskt uppträda omedelbart efter det att beräk- ningen har genomförts på hela vektom. Ofia måste emellertid en vektorexekve- ringsenhet vänta flera klockcykler på sin efterföljande instruktion från program- minnet eftersom processorkärnan är upptagen med att vänta på att andra vektoren- heter avslutas, vilket medför ineffektivt utnyttjande av vektorexekveringsenheten.
Denna sannolikhet att en vektorexekveringsenhet hålls overksam ökar med ökande antal vektorexekveringsenheter. 10 15 20 25 30 535 855 Sammanfattning av uppfinningen Den samtidigt pågående patentansökan benämnd ” Digital signalprocessor och basbandskommunikationsanordning” och inlämnad av samma sökande samma dag som föreliggande ansökan, avser förbättring av graden av parallellitet hos en sådan processor. Detta löses enligt ovannämnda ansökan genom tillhandahållande av en lokal kö i varje vektorexekveringsenhet. Den lokala kön hos en bestämd vektor- exekveringsenhet förmår lagra ett antal kommandon avsedda för denna vektorexe- kveringsenhet och mata dem till vektorexekveringsenheten oberoende av tillstån- det i programminnet.
Bearbetningen enligt denna samtidigt pågående ansökan har följaktligen gjorts mer effektiv genom ökning av processoms parallellitet. Uppfinningen är baserad på insikten att i den kända tekniken kan ofta en vektorexekveringsenhet som har av- slutat en vektorinstruktion inte omedelbart motta nästa instruktion. Detta kommer att inträffa när en vektorexekveringsenhet är redo att motta ett nytt kommando, medan det första kommandot i programminnet är avsett för en annan vektorexe- kveringsenhet, vilken är upptagen. I detta fall kan inte någon vektorexekverings- enhet motta ett nytt kommando förrän den andra vektorexekveringsenheten är redo att motta sitt nästa kommando. Tack vare den lokala kön anordnad för varje vek- torenhet, kan ett knippe av instruktioner avges till vektorenheten vid en tidpunkt.
SYNC-instruktionen gör en paus i läsningen av instruktioner från den lokala kön tills ett villkor är uppfyllt, typiskt att datavägen är redo att motta och exekvera en annan instruktion. Dessa båda särdrag tillsammans möjliggör att en följd av in- struktioner genast kan sändas till vektorexekveringsenheten, lagrade i den lokala kön och bearbetas i följd i vektorexekveringsenheten, så att så snart vektorexekve- ringsenheten är färdig med en instruktion, kan den börja på nästa. På detta sätt kan varje vektorexekveringsenhet arbeta med ett minimum av inaktiv tid.
Ett ändamål med föreliggande uppfinning är att göra den intema kommunikationen i processom så effektiv som möjligt.
Detta ändamål uppnås enligt föreliggande uppfinning genom en vektorexekve- ringsenhet för användning i en digital signalprocessor, varvid vektorexekverings- 10 15 20 25 30 535 856 enheten är anordnad att exekvera instruktioner, innefattande vektorinstruktioner vilka ska utföras på många data i form av en vektor, innefattande en vektorstyrning anordnad att fastställa om en instruktion är en vektorinstruktion och, om den är det, informera ett räkneregister anordnat att innehålla vektorläng- den, varvid vektorstyrningen vidare är anordnad att styra exekveringen av instruk- tioner, varvid vektorexekveringsenheten innefattar en lokal kö anordnad att motta åtminstone en första och en andra instruk- tion från ett prograrnminne och att innehålla den andra instruktionen i den lokala kön tills ett fördefinierat villkor är uppfyllt, varvid den lokala kön är anordnad att motta en följd av instruktioner åt gången från programminnet och att lagra de sista N instruktionerna, varvid N är ett heltal, varvid vektorstymingen innefattar köstyrorgan anordnade att styra den lo- kala kön på sådant sätt att de upprepar en följd av M instruktioner lagrade i den lokala kön, varvid M är ett heltal mindre än eller lika med N, ett antal K gånger.
Företrädesvis styr vektorstymingen exekveringen av instruktioner på basis av en avgivningssígnal mottagen från kärnan. Altemativt kan avgivningssignalen hante- ras lokalt av själva vektorexekveringsenheten.
Nämnda köstyrorgan innefattar företrädesvis en bufferthanterare anordnad att hålla reda på de M instruktioner som ska upprepas och det antal K gånger en instruktion ska upprepas, varvid och K är heltal, ett iterationsstyrorgan anordnat att övervaka den upprepade exekveringen av en följd av instruktioner för att fastställa när iterationen av exekveringen ska stoppas, ett instruktionsräkneregister anordnat att innehålla antalet M av instruktio- ner som ska upprepas och deras position i kön.
Enligt uppfinningen är anordnad en lokal kö i form av, Lex. en cyklisk buffert an- ordnad att lagra de sista N instruktionema, varvid N är ett heltal. Varje lämpligt heltal kan vara anordnat, t.ex. 16. Vektorexekveringsenheten ska därefier upprepa 10 15 20 25 30 535 B56 instruktionen anordnad att upprepa de sista M instruktionema i kön ett antal K gånger, varvid M och K likaså är lämpliga heltal. K kan hämtas från styrregisterfi- len, från instruktionsordet eller från någon arman källa. I detta fall innefatta vek- torexekveringsenheten även en iterationsräknare som kommer att räkna antalet iterationer upp till K. Upprepningsfunktionen är anordnad att minska (eller öka) iterationsräknaren upp till K gånger innan den stoppar iterationen av instruktionen.
Enligt föreliggande uppfinning sparas bandbredd i styrvägen eftersom samma upp- sättning instruktioner kan sändas från programminnet en gång och genomföras i vektorexekveringsenheten ett antal gånger. Detta är i motsats till lösningar enligt känd teknik där en instruktionsslinga uppnås genom sändning av samma följd av instruktioner från programminnet varje gång den ska exekveras. Speciellt för höga tal K är detta klart fördelaktigt.
Bufferthanteraren kan vara anordnad att hämta heltalet K från styrregisterfilen eller från själva instruktionsordet.
I en föredragen utföringsforrn är iterationsstyrorganet en räknare anordnad att hålla reda på de K iterationema.
Processom enligt utföringsfonner av föreliggande uppfinning är särskilt lämplig för digitala signalprocessorer, speciellt basbandsprocessorer.
Således avser uppfinningen även en digital signalprocessor, innefattande: 0 en processorkårna innefattande en heltalsexekveringsenhet konfigurerad för att exekvera heltalsinstruktioner; och 0 åtminstone en första och en andra vektorexekveringsenhet skild från och kopplad till processorkärnan, varvid varje vektorexekveringsenhet är en vektorexekveringsenhet enligt något av de föregående kraven; varvid den digitala signalprocessom innefattar ett programminne anordnat att innehålla instruktioner för den första och andra vektorexekveringsenhe- ten och avgivningslogik för avgivning av instruktioner, innefattande vek- torinstruktioner, till den första och andra vektorexekveringsenheten. 10 15 20 25 30 535 855 Programminnet kan vara anordnat i processorkäman och kan även vara anordnat att innehålla instruktioner för heltalsexekveringsenheten.
Uppfinningen avser även en basbandskommunikationsanordning lämplig för tråd- buren och trådlös flerlägeskommunikation, innefattande: v en front-endenhet konfigurerad för att sända och/eller motta kommunika- tionssignaler; I 0 en programmerbar digital signalprocessor kopplad till den analoga front- endenheten, varvid den programmerbara digitala signalprocessom är en di- gital signalprocessor enligt ovan.
I en föredragen utföringsform är genomgående de vektorexekveringsenheter som det hänvisas till i denna skrift vektorexekveringsenheter av SIMD-typ eller pro- grammerade co-processorer anordnade att operera på vektorer av data.
Processom enligt uttöringsfonner av föreliggande uppfinning är särskilt användba- ra för digitala signalprocessorer, speciellt basbandsprocessorer. Front-endenheten kan vara en analog front-endenhet anordnad att sända och/eller motta radiofre- kvens- eller basbandssignaler.
Sådana processorer används ofta i olika typer av kommunikationsanordningar, såsom mobiltelefoner, TV-mottagare och kabelmodem. Följaktligen kan bas- bandskommunikationsanordningen vara anordnad för kommunikation i ett trådlöst kommunikationsnätverk, exempelvis som en mobiltelefon eller en mobil data- kommunikationsanordrring. Basbandskommunikationsanordningen kan även vara anordnad för kommunikation enligt andra trådlösa standarder, såsom Bluetooth eller WiFi. Den kan även vara en televisionsmottagare, ett kabelmodem, WiFi- modem eller varje annan typ av kommunikationsanordning som kan leverera en basbandssignal till sin processor. Det bör observeras att uttrycket ”basband” endast avser den signal som hanteras intemt i processom. De faktiskt mottagna och/eller sända kommunikationssignalerna kan vara varje lämplig typ av kommunikations- signaler, mottagna på trådburna eller trådlösa förbindelser. Kommunikationssigria- lema omvandlas av en front-endenhet hos anordningen på lämpligt sätt till en bas- bandssignal. l0 I5 20 25 30 535 856 Kortfattad ritriingsbeskriviiing p Uppfinningen kommer i det följande att beskrivas mer detaljerat, i form av exem- pel och med hänvisning till bifogade ritningar.
FIG. l är ett bloekschema över basbandsprocessom enligt en utföringsform av uppfinningen.
FIG. 2 är ett diagram visaaride instmktionsavgivande rörledningar hos en utfö- ringsform av processorkäman i FIG. 1.
FIG. 3 visar instruktionsavgivningslogiken i SIMT-processorer.
FIG. 4 visar en vektorexekveringsenhet enligt känd teknik.
FIG. 5 visar en vektorexekveiingsenhet innefattande vektorexekveringsenheter med lokala köer.
FIG. 6 visar en vektorexekveringsenhet enligt en allmän utföringsforin av uppfin- ningen hos vilken det firuis en lokal kö.
FIG. 7 illustrerar en lokala kön enligt föreliggande uppfinning.
Detaljerad beskrivning av utfóriiigsformer FIG. 1 är ett blockschema över en basbandsprocessor PBBP 500 enligt en uttö- ringsform av uppfinningen. PBBP 500 innefattar en processorkäma, som irmefattar en exekveringsenhet av RISC-typ och som representeras av RISC-datavägen 5l0.
PBBP har vidare ett antal vektorexekveringsenheter 520, 530, vilka var och en innefattar en vektorstyrenhet 275 resp. en SlMD-dataväg 525, 535. Såsom känt inom teknikoriiràdet, kan varje dataväg 525, 535 innefatta flera datavägar. Exem- pelvis har typiskt datavägen 525 fyra parallella CMAC-datavägar, vilka tillsam- mans bildar datavägen S25.
För att åstadkomma styrning av de multipla vektorexekveringsenhetema, innefattar kärnmaskinvaran 500 en programflödesstyrenhet 501 kopplad till en programräk- nare 502, vilken i sin tur är kopplad till ett programminrie (PM) 503. PM 503 är kopplat till en multiplexer 504, enhet-fliltutvinning (unit- field extraction) 508.
Multiplexem 504 är kopplad till ett instruktionsregister 505, vilket är kopplat till en instruktionsavkodare 506. Instruktionsavkodaren 506 är vidare kopplad till ett 10 15 20 25 30 535 856 styrsignalregister (CSR) 507, vilket i sin tur är kopplat till återstoden av RISC- datavägen 510.
På liknande sätt är var och en av vektorexekveringsenhetema 520 och 530 likaså anordnade att motta instruktioner fiån prograrnminnet S03 lokaliserat i kärnan.
Vektorexekveringsenhetema innefattar respektive vektorlängdsregister 521, 531, instruktionsregister 522, 532, instruktionsavkodare 523,533 och CSRer 524, 534, vilka är kopplade till sina respektive datavägar 525 och 535. Dessa enheter och deras funktioner kommer att diskuteras mer detaljerat, i den utsträckning de är av betydelse för uppfinningen, i samband med FIG. 3.
FIG. 2 är ett exempel känd teknik for behandling av instruktioner från program- minnet till de olika exekveringsenhetema, avsett som en illustration av det pro- blem som ligger till grund för uppfinningen. Den vänstra spalten i FIG. 2 anger tid (i exekveringsklockcykler). De övriga spaltema anger från vänster till höger exe- kveringspipelines hos en forsta och en andra exekveringsenhet (närmare bestämt datavägama hos CMAC 203 och CALU 205) och heltalsexekveringsenheten samt avgivningen av instruktioner till denna. Närmare bestämt avges i den första klock- cykeln en komplex vektorinstruktion (t.ex. CMAC.256) till CMAC 203. Som visas behöver vektorinstruktionen många cykler för att avslutas. 1 nästa klockcykel av- ges en vektorinstruktion till CALU 205. I nästa klockcykel avges en heltalsinstruk- tion till heltalsexekveringsenheten 510. I påfólj ande flera cykler kan, medan vek- torinstruktionerna exekveras, varje antal av heltalsinstruktioner avges till heltals- exekveringsenheten 510. Fastän ej visat, observeras att de återstående vektorexe- kveringsenheterna kan även samtidigt exekvera instruktioner på ett motsvarande sätt.
I vissa fall kan en ”tomgångsinstruktion” vara inkluderad i följden av instruktio- ner, för att stoppa kärnprogramflödesstyrningen från att hämta instruktioner från programminnet. För att exempelvis synkronisera programflödet med avslutningen av en vektorinstruktion, kan ”tomgângsinstniktionen” användas till att upphäva hämtningen av instruktioner tills ett bestämt villkor är uppfyllt. Detta villkor kommer typiskt att vara att vektorexekveringsenheten i fråga är färdig med en fö- regående vektorinstruktion och är i stånd att motta en ny instruktion. I detta fall 10 15 20 25 30 535 856 kommer vektorstyrningen 275 hos vektorexekveringsenheten 520, 530 i fråga att sända en indikation, såsom en flagga, till programflödesstymingen 501, med indi- kation att vektorexekveringsenheten är i redo att motta ännu en instruktion.
Tomgångsinstruktioner kan samtidigt användas för fler än en vektorexekverings- enhet. I detta fall kan inga ytterligare instruktioner sändas från programminnet 503 innan varje vektorexekveringsenhet 520, 530 i fråga har sänt en flagga som indike- rar att den är redo att motta en ny instruktion.
I exemplet i FIG. 2 avges ”tomgångsinstruktionen” efier ovarmämnda heltalsin- struktioner. Tomgängsinstruktionen används i detta exempel till att stoppa styrflö- det tills vektoroperationen som genomförs av CMAC 203 är avslutad.
Följande exempel kommer att diskuteras på basis av en SIMT DSP med ett god- tyckligt antal exekveringsenheter. För enkelhets skull antas att samtliga enheter i detta exempel är CMAC-exekveringsenheter, men i praktiken kommer enheter av olika typer att vara blandade och använda tillsammans.
I många basbandsbearbetningsalgoritmer och -program kan algoritmen vara upp- delad i ett antal DSP-uppgifier, vilka var och en består av en ”prolog”, en vektor- operation och en ”epilog”. Prologen används huvudsakligen till att rensa ackumu- latorer, sätta upp adresslägen och pekare och liknande innan vektoroperationen kan genomföras. När vektoroperationen är avslutad kan resultatet av vektoroperationen vidarebearbetas av kod i uppgiftens ”epilog”-del. I SIMT processorer behövs ty- piskt endast en vektorinstruktion för att genomföra vektoroperationen.
Den typiska layouten för en DSP-uppgifi exempliñeras genom följ ande exempel- uppgift enligt känd teknik: Kodsträngen i exemplet genomför en komplex skalärproduktberälcriing över 512 komplexa värden och lagrar därefter åter resultatet i minnet. Rutinen kräver att följande instruktioner hämtas av processorkäman. .cmacO ;Assume cmacO is selected prolog: ;Address setup 10 15 20 25 30 535 856 10 Idi #0, r0 out r0, cdm0_addr out r0, cdmI_addr out rO, cdm2_addr setcmvl512 ; Set vector length to 512 vectorop: cmac [Û],[1],[2] ; Perform cmac operation over ; samples idle #cmac0 ,' Stop program fetching until cmac0 is ready epilog: star [3] ; Store accumulator I exemplet ovan avges instruktionerna setcmvl, cmac och star till och exekveras på CMAC-vektorexekveringsenhetem medan instruktionema ldí, out och idle exe- kveras på heltalskäman (”core”).
Vektorinstruktionernas vektorlängd indikerar på hur många dataord (samples) vek- torexekveringsenheten ska operera. Vektorlängden kan vara inställd på varje lämp- ligt sätt, exempelvis ett av de följande: 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. 2 3) Inställd av ett styrregister, exempelvis enligt formatet out r0. cmac_vector__length Instruktionen idle #cmac0 instruerar kärnprogramflödesstymingen att avstanna hämtningen av nya instruktioner tills CMACO enheten har avslutat sin vektorope- ration. Efter det att tomgångsinstruktionen frigöra, och tillåtande av att nya in- struktioner hämtas, hämtas ”Staf-instruktionen och avges till CMACO- vektorexekveringsenheten. Star-instruktionen instruerar CMAC- vektorexekveringsenheten att lagra ackumulatom i minnet. 10 15 20 25 30 535 856 ll I nästa exempel, vilket likaså illustrerar känd teknik, används två vektorexekve- ringsenheter. Den instruktionsfiöljd som hänförs till den första vektorexekverings- enheten är densamma som ovan: .cmac0 ,'Assume cmac0 is selected prolog: ;Address setup ldi #0, r0 out r0, cdm0_addr out r0, cdmI_addr out r0, cdm2_addr setcmvl.5l 2 ; Set vector length to 512 vectorop: cmac [0],[1],[2] ,° Perform cmac operation over ; samples idle #cmac0 ; Stop program fietching until cmac0 is reaafv epilog: star [3] ; Store accumulator Instruktionsföljden som hänförs till den andra vektörexekveringsenheten är: .cmacI ;Assume cmac! is selected ,'A ddress setup ldi #0, r0 out r0, cdm3_addr out r0, cdm4__addr out r0, cdm5_addr prolog: setcmvl.2048 ; Set vector length to 2048 vectorop: cmac [0], [I ], [2] ; Perform cmac operation over ; samples idle iícmac] ; Stop program fetching until cmacl) is ready epilog: star [3] ; Store accumulator 10 15 20 25 30 535 856 12 I detta fall instrueras den andra vektorexekveringssenheten att utföra en vektorope- ration av längden 2048, vilket kommer att ta fyra gånger så lång tid som operatio- nen av längden 512 i den första vektorexekveringsenheten. Den första vektorexe- kveringsenheten kommer därför att avsluta före den andra vektorexekveringsenhe- ten. Eftersom prograrmninnet är instruerat av instruktionen Idle #cmac1 att vänta med nästa instruktion tills den andra vektorexekveringsenheten är färdig, kommer den inte heller att kunna sända en ny instruktion till den första vektorexekverings- enheten förrän den andra vektorexekveringsenheten är färdig. Den första vektor- exekveringsenheten kommer därför att vara inaktiv under mer än 1000 klockcykler på grund av den tomgångsinstruktion som är relaterad till den andra vektorexekve- ringsenheten.
I exemplet ovan används två vektorexekveringsenheter. Som kommer att inses, innebär detta ett problem som växer med antaletvektorexekveringsenheter, efter- som en tomgångsinstruktion relaterad till en bestämd vektorexekveringsenhet kommer att potentiellt påverka ett större antal av andra vektorexekveringsenheter.
Enligt uppfinningen minskas detta problem genom tillhandahållande av en lokal kö för varje vektorexekveringsenhet. Den lokala kön är anordnad att från pro- grarnminnet i proeessorkärnan motta en eller flera instruktioner för sin vektorexe- kveringsenhet att exekveras i följd och att framföra en instruktion i taget till vek- torexekveringen.
Sarntidigt införs ett kommando som instruerar den lokala kön att kvarhålla eller vänta med nästa instruktion tills ett bestämt villkor är uppfyllt. Villkoret kan ex- empelvis vara att vektorexekveringsenheten är färdig med föregående kommando eller att datavägen är redo att motta en ny instruktion. För enkelhets skull benämns detta nya kommando i denna skrift som SYNC. Villkoret kan vara angivet i in- struktionsordet till SYNC-instruktionen eller också kan det läsas från styrregister- filen eller från någon annan källa.
Ett exempel på en följd av instruktioner som använder SYNC-kommandot anges i det följande: .cmac0 ,'Select cmac0 as destination for cmac related instructions 10 15 20 25 30 535 856 1 3 ;Address setup ldi #0, r0 out r0, cdm0_addr out r0, cdm1__addr out r0, cdm2_addr setcmvL512 ; Set vector length to 512 cmac [0], [1], [2] ; Perform cmac operation over 512 samples sync ; Stop program queue until cmac is ready star [3] ; Store accumulator .cmacI ;Select cmac] as destination for cmac related instructions ;Address setup ldi #0, r0 out r0, cdm3__addr out r0, cdm4_addr out r0, cdm5_addr setcmvl. 2048 ; Set vector length to 2048 cmac [0], [1], [2] ; Perform cmac operation over 2048 samples sync ,' Stop program queue until cmac is ready star [3] ; Store accumulator I motsats till den kända tekniken kan på en gång vart och ett av dessa kommandon sändas till den lokala kön hos vektorexekveríngsenheten i fråga och lagras där me- dan de väntar på att sändas ett kommando åt gången till instmktionsavkodaren inom vektorexekveringsenheten. Som förklarats ovan, tillhandahålls kommandot sync för att stoppa den lokala kön tills vektorexekveringsenheten är färdig med kommandot cmac, vilket är en vektorinstruktion och därför tar flera klockcykler att genomföra.
FIG. 3 illustrerar vektorinstruktionslogiken hos en basbandsprocessor 700 enligt känd teknik vilken kan användas som utgångspunkt för föreliggande uppfinning.
Basbandsprocessom innefattar en RISC-käma 701 uppvisande ett programminne PM 702, vilket lagrar instruktioner for de olika exekveringsenhetema hos proces- sorn, och en RISC-prograniflödesstyrenhet 703. Från programminnet 702 hämtas 10 15 20 25 30 535 856 14 instruktioner till en avgivningslogikenhet 705, vilken är gemensam för samtliga exekveringsenheter och anordnad att styra vart varje specifik instruktion ska sän- das. Avgivningslogiken 705 motsvarar enhetema Enhet-fáltextrahering 508 och avgivningsstyrningen 509 i FIG. l. Avgivningslogiken är i detta fall förbunden med ett antal vektorexekveringsenheter 710, 712, 714 och via en multiplexer 715 med en RISC-käma + datavägsenhet 716, varvid den senare är en del av RISC- käman och motsvarar enheterna 505, S06, 507 och 510 i FIG. 1. Som ovan förkla- rats, sänds i en utfiiringsforrn de instruktionsord som innefattar de aktuella instruk- tionerna till samtliga exekveringsenheter, medan avgivningssignalen som motsva- rar en bestämd instruktion sänds endast till den exekveringsenhet som ska exekve- ra denna instruktion. I en alternativ utfóringsforrn hanteras avgivningssignalen lokalt av varje vektorexekveringsenhet.
FIG. 4 illustrerar en vektorexekveringsenhet 710, vilken kan vara en av vektorexe- kveringsenhetema 710, 712, 714 i FIG. 3 enligt den kända tekniken. Vektorexe- kveringsenheten 710 har en vektorstyming 720, en vektorlängdräknare 721, ett instruktionsregister 722 och en instruktionsavkodningsenhet 723. Liksom i FIG. 3 mottar vektorexekveringsenheten 710 i FIG. 4 instruktioner från programminnet 702, men FIG. 4 är förenklad. Instruktionsordet är den faktiska instruktionen och mottas i instruktionsregistret 722 och sänds vidare till instruktionsavkodaren 723.
Avgivningssignalen mottas i vektorstymingen via avgivningslogikenheten 705 och används till att styra exekveringen av instruktionsordet. Om avgivningssignalen är aktiv, laddas instruktionen i instruktionsregistret, avkodas och exekveras, annars förkastas den. Vektorstymingen 720 hanterar även vektorlängdrälcnaren 721 och andra styrsignaler som används i systemet som kommer att diskuteras i det följan- de.
Traditionellt kan under varje klockcykel hämtas en instruktion avsedd för en av exekveringsenheterna från programminnet 702. Enhetsfáltet i instruktionsordet kan extraheras från instruktionsordet och användas till att styra till vilken styrenhet instruktionen avges. Om exempelvis enhetsfältet är ”000” kan instruktionen avges till RISC-datavägen. Detta kan orsaka att avgivningslogiken 705 tillåter instruk- tionsordet att passera genom multiplexem 715 och in i RISC-kärnan 716 (ej visad i FIG. 4), medan inga nya instruktioner laddas in i vektorexekveringsenhetema un- 10 15 20 25 30 535 856 15 der denna cykel. Om emellertid enhetsfältet innehöll varje annat värde kan avgiv- ningslogiken 705 möjliggöra motsvarande instruktionsavgivningssignal till den vektorexekveringsenhet fór vilken den är avsedd. Vektorstyrningen 720 i den val- da vektorexekveringsenheten låter därefter instruktionsordet passera genom och in i instruktionsregístret 722 hos nämnda vektorexekveringsenhet. I detta fall kom- mer en NOP-instruktion att sändas till RISC-datavägens instruktionsregister i RISC-käman 716.
För att hantera vektorinstmktioner när en instruktion avges till vektorexekverings- enhetema kan vektorlängdfáltet fiån instruktionsordet extraheras och lagras i räk- neregistret 721 . Detta räkneregister kan användas för att hålla reda på vektorläng- den i motsvarande vektorinstrulction, och när flaggan ska sändas som indikerar att vektorexekveringsenheten är redo att motta en annan instruktion ska sändas. När en motsvarande vektorexekveringsenhet har avslutat vektoroperationen kan vek- torstyrningen 720 orsaka att en signal (flagga) sänds till programflödesstyrningen 703 (ej visad i FIG. 4) för att indikera att enheten är redo att acceptera en ny in- struktion. Vektorstymingen 720 hos varje vektorexekveringsenhet 520, 530 (se FIG. 1) kan dessutom bilda styrsignaler prolog- och epilogtillstånd inom exekve- ringsenheten. Sådana styrsignaler kan styra VLU och VSU för vektoroperationer och även hantera t.ex. udda vektorlängder.
När avgivningslogiken 705 genom avkodning av enhetsfältet bestämmer att en bestämd instruktion ska sändas till en bestämd vektorexekveríngsenhet, laddas instruktionsordet från programminnet 702 in i instmktionsregistret 722. Även om instruktionen är bestämd (av vektorstyrningen) att bära ett vektorlängdfalt, laddas räkneregistret 721 med detta värde av vektorlängdvärdet. Vektorstymingen 720 avkodar delar av instruktionsordet för att bestämma om instruktionen är en vektor- instruktion och uppbär vektorlängdiriforrnation. Om så är fallet, aktiverar vektor- stymingen 720 en signal för räkneregistret 721 att ladda ett värde indiketande vek- torlängden in i räkneregistret 721. Vektorstyrningen 720 instruerar även instruk- tionsavkodníngsenheten 723 till att börja avkoda instruktionen och börja sända styrsignaler till datavägen 724. Instruktionen i instruktionsregistret 722 är då av- kodad av instruktionsavkodaren 723, vars styrsignaler hålls i styrsignalregistret 10 15 20 25 30 535 856 16 724 innan de sänds till datavägen. Räkneregistret 721 håller räkning på de antal gånger instruktionen ska upprepas, dvs. vektorlängden, på ett konventionellt sätt.
FIG. 5 illustrerar en vektorexekveringsenhet 810 enligt uppfinningen. Vektorexe- kveringsenheten innefattar samtliga element hos den vektorexekveringsenhet en- ligt känd teknik som visas i FIG. 4 försedd med samma hänvisningsbeteckningar.
Dessutom har vektorexekveringsenheten enligt uppfinningen en lokal kö 730 an- ordnad att innehålla ett antal instruktioner mottagna från programminnet. En kö- styrning 732 anordnad att styra den lokala kön 730 är anordnad i vektorstyrenheten 720. Kön 730 och köstyrningen732 är förbundna med varandra för att utbyta in- formation och kommandon. Exempelvis kan köstymingen 732 innefatta en räknare anordnad att hålla reda på antalet instruktioner i kön 730. Alternativt kan kön själv hålla reda på sin status och sända information som indikerar att den är full eller tom, eller nästan full eller tom, till köstymingen 732. Köstyrningen 732 innehåller följaktligen statusinformation om den lokala kön 730 och kan sända styrsignaler för att starta, stoppa eller tömma den lokala kön 730. Instruktionsavkodaren 723 är anordnad att informera vektorstyrningen 730 om vilken instruktion som för närva- rande exekveras.
Som förklarats ovan, är många DSP-uppgiñer implementerade som en följd av instruktioner, exempelvis en prolog, en vektorinstruktion och en epilog. Vektorin- stmktionerna kommer att löpa ett antal klockcykler, under vilken tid inget nytt kommando kan hämtas. I detta fall, som förklarats ovan, används den nya SYNC- instruktionen till att förmå den lokala kön att kvarhålla nästa instruktion tills ett bestämt villkor är uppfyllt. När köstymingen 732 informeras om att instruktions- avkodaren 723 har avkodat en ”sync”-instruktion, kommer den att inställa ett läge eller mod i köstymingen 732 som stoppar den lokala kön 730 tills villkoret är upp- fyllt. Detta är normalt implementerat under användning av den återstående vektor- längdinforrnationen och information avseende den rådande instruktionen från in- struktionsavkodaren. Flaggor som sänds från datavägen 724 till köstymingen 732 kan även användas. Villkoret kommer typiskt att vara att bearbetningen av vektor- instruktionen är avslutad, så att instruktionsavkodaren 723 i vektorexekveringsen- heten är redo att bearbeta nästa instruktion. 10 15 20 25 30 535 856 17 Den lokala kön 730 kan vara varje typ av kö lämplig för att innehålla det önskade antalet av instruktioner. En typ är en FIFO-kö med förmåga att innehålla ett lämp- ligt antal, t.ex. 8, instruktioner.
FIG. 6 illustrerar en vektorexekveringsenhet 910 enligt en föredragen utföiings- form av uppfinningen. Vektorexekveringsenheten visad i FIG. 6 innefattar samma enheter som i FIG. 5, inbördes förbundna på samma sätt. I denna utföringsforrn är emellertid den lokala kön 730 en cyklisk kö lärnplig för upprepning av ett specifi- cerat antal av instruktioner. Detta kommer att vara särskilt fördelaktigt i imple- menteringar där samma följd av instruktioner ska exekveras ett stort antal gånger, som ibland kan överstiga 1000. I detta fall kan sparas en betydande mängd band- bredd genom att man inte behöver sända samma instruktioner igen från kämenhe- ten till vektorexekveringsenheten varje gång de ska exekveras.
Liksom i FIG. 5 finns en köstyrning 732 anordnad i vektorstyrningen 720. I utfö- ringsformen enligt FIG. 6 finns även en bufferthanterare 744 anordnad att hålla reda på de instruktioner som ska upprepas, och de antal gånger en instruktion ska upprepas. För detta ändamål finns två register vilka även styrs av vektorstyrningen 720: ett upprepningsregister 746 för lagring av antalet upprepningar av instruktio- nen och ett instruktionsräkneregister 748 anordnat att innehålla antalet instruktio- ner som ska upprepas.
Eftersom samtliga instruktioner som avges till vektorexekveringsenheten passerar kön 73 0, dvs. den cykliska bufferten, kommer bufferten att minnas de sista N (ty- piskt 8- l 6) instruktionema.
Upprepningsregistret 746 är konfigurerat för att innehålla antalet upprepningar som ska genomföras. Upprepningsregistret 746 kan vara laddat genom styrregis- terfilen eller vara inlåst från det instruktionsord som avgivits till vektorexekve- ringsenheten eller genom varje annan metod.
Instruktionsräkneregistret 748 är konfigurerat för att innehålla det antal som indi- kerar hur många instruktioner i den cykliska bufferten 730 som ska vara inklude- rade i upprepningsslingan. Instruktionsräkneregistret kan vara laddat genom styr- 10 15 20 25 30 535 856 18 registerfilen eller vara inläst från det instruktionsord som avgivits till vektorexe- kveringsenheten eller genom varje arman metod.
När en ”upprepningsinstruktion” eller instruktion med en ”upprepningsflagg”- uppsättning avges till vektorexekveringsenheten, instruerar instruktionsavkodaren 723 i förening med vektorstymingen 720 köstyrningen 732 att avge instruktioner från den cykliska bulïerten 730 till instruktionsregistret 722.
När, liksom i FIG. 5, en ”sync”-instruktion påträffas av instruktionsavkodaren 723, instruerar instruktionsavkodaren köstyrriingen 732 att stoppa härntningen av in- struktioner från den lokala, cykliska, kön tills ett fördefinierat villkor är uppfyllt.
Detta villkor är typiskt det att den föregående instruktionen, vilken hämtats från kön, har avslutats, så att avkodaren är redo att motta en ny instruktion.
Fastän den lokala kön 730 och instruktionsregistret 722 i denna skrift visas som separata enheter, skulle det vara möjligt att kombinera dem till en enhet. Instruk- tionsregistret 722 kunde exempelvis vara integrerat som det sista elementet i den lokala kön.
Bufferthanteraren 744 övervakar operationen hos den lokala bufferten 730 och hanterar upprepning av de instruktioner som för närvarande lagras i den cirkulära bufferten, medan köstymingen 732 hanterar avgivningen av start/stopinstruktionen från den cirkulära bufferten/kön 730.
Bufferthanteraren 744 hanterar vidare upprepningsregistret 746 och håller reda på hur många upprepningar som har genomförts. När antalet upprepningar specifice- rat i upprepningsregistret 746 har genomförts, sänds en signal till vektorstymingen 720, vilken då kan sändas till sänt-till-programflödesstyrningen 703 (ej visadåi FIG. 6) fór att indikera att operationen är avslutad.
När det begärda antalet upprepningar har genomförts återgår uppträdandet hos den cirkulära buffexten 730 till köfimktionaliteten och lagrar de sist avgivna instruktio- nema, så att en ny upprepningsinstruktion kan påbörjas. 10 15 20 25 30 535 856 19 FIG. 7 illustrerar arbetsprincipen hos den lokala kön enligt en utföringsforrn av uppfinningen. Själva kön representeras av en horisontell linje 901. En första verti- kal pil symboliserar skrivpekaren 903, vilken indikerar den position hos kön i vil- ken en ny instruktion för närvarande skrivs. En motsvarande horisontell pil 905 indikerar den riktning i vilken skrivpekaren rör sig, åt höger i ritningen.
En andra vertikal pil symboliserar läspekaren 907, vilken indikerar det läge hos kön från vilket en instruktion som ska exekveras för närvarande läses. En motsva- rande horisontell pil 909 indikerar den riktning i vilken läspekaren rör sig, i samma riktning som skrivpekaren 903. Avståndet mellan skrivpekaren 903 och läspekaren 907 är den rådande längden hos kön, dvs. antalet instruktioner som för närvarande befinner sig i kön.
I exemplet enligt FIG. 7 har en följd av instruktioner som ska upprepas ett antal gånger skrivits till kön. Början av följden och slutet av följden indikeras av en för- sta 911 och en andra 913 vertikal linje tvärs den horisontella linjen 901. En bakåt- pil 915 indikerar att när läspekaren 907 når slutet av följden av kommandon som indikeras av den andra vertikala linjen 913, kommer läspekaren att hoppa tillbaka till början av följden avkommandon som indikeras av den första vertikala linjen 911. Detta kommer att upprepas tills följden av instruktioner has exekverats det specificerade antalet gånger.
Styrlogiken (ej visad) är anordnad att hålla reda på det antal instruktioner i följ den som ska itereras, och deras position i kön. Detta innefattar exempelvis: v Positionen 911 för början av följden av instruktioner som ska upprepas 0 Positionen 913 för slutet av följden av instruktioner som ska upprepas 0 Antalet gånger som följden av instruktioner ska upprepas I stället för början och slut av följden kan positionen för antingen början eller slu- tet av följden lagras tillsammans med längden av följden, dvs. antalet instruktioner inkluderade i följden. När en läspekare 907 eller skrivpekare 903 når slutet av en kö kommer den att förflytta sig till början av kön och fortsätta att respektive läsa eller skriva, från början

Claims (14)

10 15 20 25 30 535 856 20 Patentkrav
1. Vektorexekveringsenhet (520, 530) för användning i en digital signalpro- cessor (200), varvid vektorexekveringsenheten är anordnad att exekvera in- struktioner, innefattande vektorinstruktioner vilka ska utföras på många data i form av en vektor, innefattande en vektorstyming (275, 720) anord- nad att fastställa om en instruktion är en vektorinstruktion och, om den är det, informera ett räkneregister (531) anordnat att innehålla vektorlängden, varvid vektorstymingen (275, 720) vidare är anordnad att styra exekve- ringen av instruktioner, varvid vektorexekveríngsenheten innefattar en lokal kö (730) anordnad att motta åtminstone en första och en andra instruktion från ett programminne och att innehålla den andra instruk- tionen i den lokala kön tills ett fördefinierat villkor är uppfyllt, varvid den lokala kön (730) är anordnad att motta en följd av instruktio- ner åt gången från programminnet och att lagra de sista N instruktioner- na, varvid N är ett heltal, varvid vektorstyrningen (275, 720) innefattar köstyrorgan (732, 721, 744) anordnade att styra den lokala kön (730) på sådant sätt att de upp- repar en följd av M instruktioner lagrade i den lokala kön, varvid M är ett heltal mindre än eller lika med N, ett antal K gånger.
2. Vektorexekveringsenhet enligt krav 1, varvid vektorstyrenheten (275, 720) är anordnad att motta en avgivningssignal och styra exekveringen av in- struktioner baserade på denna avgivningssignal.
3. Vektorexekveringsenhet enligt krav 1 eller 2, varvid köstyrorganet innefat- tal' en bufferthanterare (744) anordnad att hålla reda på de M instruktioner som ska upprepas och det antal K gånger en instruktion ska upprepas, varvid M och K är heltal, ett iterationsstyrorgan (746) anordnat att övervaka den upprepade exe- kveringen av en följd av instruktioner för att fastställa när iterationen av exekveringen ska stoppas, 10 15 20 25 30 535 855 21 - ett instruktionsräkneregister (748) anordnat att innehålla antalet M av instruktioner som ska upprepas och deras position i kön (901).
4. . Vektorexekveringsenhet enligt krav 3, varvid bufferthanteraren (744) är anordnad att hämta heltalet K från styrregisterfilen.
5. . Vektorexekveríngsenhet enligt krav 3, varvid bufferthanteraren (744) är anordnad att hämta heltalet K från instruktionsordet.
6. . Vektorexekveringsenhet enligt något av krav 3-5, varvid iterationsstyror- ganet är en räknare anordnad att hålla reda på de K iterationema.
7. . Digital signalprocessor innefattande: en processorkärna (500) innefattande en heltalsexekveringsenhet (510) konfigurerad för att exekvera heltalsinstruktioner; och åtminstone en forsta och en andra vektorexekveringsenhet (520, 530) skild från och kopplad till processorkäman, varvid varje vektorexekve- ringsenhet är en vektorexekveringsenhet enligt något av föregående krav; varvid den digitala signalprocessom innefattar ett programminne (503) an- ordnat att innehålla instruktioner íör den första och andra vektorexekve- ringsenheten och avgivningslogik (705) för avgivning av instruktioner, in- nefattande vektorinstruktioner, till den första och andra vektorexekveríngs- enheten (520, 530).
8. . Digital signalprocessor enligt krav 7, varvid programminnet (503) är an- ordnat att innehålla instruktioner för heltalsexekveringsenheten (510).
9. . Digital signalprocessor enligt krav 7 eller 8, varvid programminnet (503) är anordnat i processorkäman (500).
10. Basbandskommunikationsanordning lämplig för trådburen och trådlös fler- lägeskommunikation, innefattande: 0 en front-endenhet konfigurerad för att sända och/eller motta kommuni- kationssignaler; 535 855 22 ø en programmerbar digital signalprocessor kopplad till den analoga front-endenheten, varvid den programmerbara digitala signalprocessom är en digital signalprocessor enligt något av föregående krav l-6. 5
11. Basbandskommunikationsanordning enligt krav 10, varvid front- endenheten år en analog front-endenhet anordnad att sända och/eller motta radiofrekvens- eller basbandssignaler.
12. Basbandskommunikationsanordning enligt krav 1 1, varvid basbandskom- 10 munikationsanordningen är en anordning för kommunikation i ett cellulärt kommunikationsnätverk.
13. Basbandskommunikationsanordning enligt krav 10, varvid basbandskom- munikationsanordningen är en televisionsmottagare. 1 5
14. Basbandskommunikationsanordning enligt krav 10, varvid basbandskom- munikationsanordningen är ett kabelmodem.
SE1150967A 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning SE535856C2 (sv)

Priority Applications (6)

Application Number Priority Date Filing Date Title
SE1150967A SE535856C2 (sv) 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning
KR1020147011839A KR20140078718A (ko) 2011-10-18 2012-09-17 디지털 신호 프로세서 및 기저 대역 통신장치
EP12784088.2A EP2751669A1 (en) 2011-10-18 2012-09-17 Digital signal processor and baseband communication device
US14/350,541 US20140281373A1 (en) 2011-10-18 2012-09-17 Digital signal processor and baseband communication device
PCT/SE2012/050980 WO2013058696A1 (en) 2011-10-18 2012-09-17 Digital signal processor and baseband communication device
CN201280051536.5A CN103890719B (zh) 2011-10-18 2012-09-17 数字信号处理器以及基带通信设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE1150967A SE535856C2 (sv) 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning

Publications (2)

Publication Number Publication Date
SE1150967A1 SE1150967A1 (sv) 2013-01-15
SE535856C2 true SE535856C2 (sv) 2013-01-15

Family

ID=47501629

Family Applications (1)

Application Number Title Priority Date Filing Date
SE1150967A SE535856C2 (sv) 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning

Country Status (6)

Country Link
US (1) US20140281373A1 (sv)
EP (1) EP2751669A1 (sv)
KR (1) KR20140078718A (sv)
CN (1) CN103890719B (sv)
SE (1) SE535856C2 (sv)
WO (1) WO2013058696A1 (sv)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250953B2 (en) 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US10019264B2 (en) * 2016-02-24 2018-07-10 Intel Corporation System and method for contextual vectorization of instructions at runtime
GB2560059B (en) 2017-06-16 2019-03-06 Imagination Tech Ltd Scheduling tasks
CN108364065B (zh) * 2018-01-19 2020-09-11 上海兆芯集成电路有限公司 采布斯乘法的微处理器
CN111065190B (zh) * 2019-12-05 2022-01-28 华北水利水电大学 基于Zigbee通信的智能灯光控制方法及系统
CN113900712B (zh) * 2021-10-26 2022-05-06 海光信息技术股份有限公司 指令处理方法、指令处理装置及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
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
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
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
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
US20130185538A1 (en) * 2011-07-14 2013-07-18 Texas Instruments Incorporated Processor with inter-processing path communication

Also Published As

Publication number Publication date
CN103890719A (zh) 2014-06-25
KR20140078718A (ko) 2014-06-25
EP2751669A1 (en) 2014-07-09
CN103890719B (zh) 2016-11-16
SE1150967A1 (sv) 2013-01-15
US20140281373A1 (en) 2014-09-18
WO2013058696A1 (en) 2013-04-25

Similar Documents

Publication Publication Date Title
SE535856C2 (sv) Digital signalprocessor och basbandskommunikationsanordning
EP2751668B1 (en) Digital signal processor and baseband communication device
KR101486025B1 (ko) 프로세서에서의 쓰레드 스케쥴링
JP5263844B2 (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
US9727341B2 (en) Control flow in a thread-based environment without branching
CN107066408B (zh) 用于数字信号处理的方法、系统和装置
WO2007140428A2 (en) Multi-threaded processor with deferred thread output control
US9170816B2 (en) Enhancing processing efficiency in large instruction width processors
US20050193186A1 (en) Heterogeneous parallel multithread processor (HPMT) with shared contexts
EP3028143A1 (en) System and method for an asynchronous processor with multiple threading
CN112789593B (zh) 一种基于多线程的指令处理方法及装置
US9501282B2 (en) Arithmetic processing device
CN108628639B (zh) 处理器和指令调度方法
US20220137971A1 (en) Instruction length based parallel instruction demarcator
CN115454506A (zh) 指令调度装置、方法、芯片和计算机可读存储介质
CN116635829A (zh) 用于高吞吐量和低开销内核启动的压缩命令分组
JP4996945B2 (ja) データ処理装置、データ処理方法
CN112181497B (zh) 一种分支目标预测地址在流水线中的传递方法和装置
US20140344549A1 (en) Digital signal processor and baseband communication device
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
US20240281251A1 (en) Instruction length based parallel instruction demarcator
CN117472443A (zh) 一种处理器调试系统中指令的处理方法和装置
JP2002351658A (ja) 演算処理装置
WO2012160794A1 (ja) 演算処理装置、演算処理方法

Legal Events

Date Code Title Description
NUG Patent has lapsed