SE536462C2 - Digital signalprocessor och basbandskommunikationsanordning - Google Patents
Digital signalprocessor och basbandskommunikationsanordning Download PDFInfo
- Publication number
- SE536462C2 SE536462C2 SE1150966A SE1150966A SE536462C2 SE 536462 C2 SE536462 C2 SE 536462C2 SE 1150966 A SE1150966 A SE 1150966A SE 1150966 A SE1150966 A SE 1150966A SE 536462 C2 SE536462 C2 SE 536462C2
- Authority
- SE
- Sweden
- Prior art keywords
- vector
- instruction
- instructions
- execution unit
- queue
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims description 25
- 239000013598 vector Substances 0.000 claims abstract description 285
- 230000010267 cellular communication Effects 0.000 claims description 2
- VIEYMVWPECAOCY-UHFFFAOYSA-N 7-amino-4-(chloromethyl)chromen-2-one Chemical compound ClCC1=CC(=O)OC2=CC(N)=CC=C21 VIEYMVWPECAOCY-UHFFFAOYSA-N 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 125000004122 cyclic group Chemical group 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 101100206738 Mus musculus Tiam2 gene Proteins 0.000 description 1
- 238000001193 catalytic steam reforming Methods 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 229910000679 solder Inorganic materials 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
- G06F9/38873—Iterative single instructions for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
20 25 30 535 ÅEE har ett programminne för att distribuera instruktioner till exekvetingsenhetema. l WO 2007/018467 har var och en av vektorexekveringsenheterna en separat in- struktionsavkodare. Detta möjliggör användning av vektorexekveringsenhetema oberoende av varandra och av andra delar av processorn på ett effektivt sätt.
Instruktionsuppsättningsarkitekturen för SIMT-processorn kan typiskt innefatta tre klasser av sammansatta instruktioner.
- RlSC-instruktioner, vika opererar på 16-bitars heltalsoperander. RISC- instruktionsklassen innefattar de flesta av de styrorienterade instruktionema och kan exekveras inuti processorkärnans heltalsexekveringsenhet.
- DSP-instruktioner, vilka opererar på komplexvärdesdata uppvisande en real- del och en imaginärdel. DSP-instruktionerna kan exekveras på ett eller flera av SIMD-klustren.
- Vektorinstruktioner. Vektorinstruktioner kan anses som förlängningar av DSP-instruktionerna, eftersom de opererar på stora datamängder och kan ut- nyttja avancerade adressmoder och vektorstöd.
SIMT-arkitekturen erbjuder därför samtidigt prestanda hos såväl uppgifisnivån som SIMD-vektorberäkning och tillräcklig RISC-styrflexibilitet.
I en SIMT-arkítektur finns därför många exekveringsenheter. Normalt kan avges en instruktion från programminnet till en av exekveringsenheterna 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 klockeykler som ska bearbetas. I de efterföljande klockcyklerna 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- uppgifter med små bakåtberoenden mellan uppgiftema. 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. 10 15 20 25 30 536 452 För att tillhandahålla synkronisering av styrflödet och att styra dataflödet kan ”tomgångsinstruktioner” ofta användas för att stoppa styrflödet tills en given vek- toroperation är avslutad. ”Tomgångsinstruktionen” kommer att stoppa ytterligare instruktionshärntning 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-uppgiñ typiskt att innefatta en följd av en till tio 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 vektom. 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. Ofta måste emellertid en vektorexekve- ringsenhet vänta flera klockcykler på sin efterföljande instruktion fifâ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 i ett system.
Sammanfattning av uppfinningen Ett ändamål med föreliggande uppfinning är att göra bearbetningen av vektorin- struktioner i en SIMT-arkitektur mer effektiv.
Detta ändamål uppnås enligt föreliggande uppfinning genom en vektorexekve- ringsenhet för användning i en digital signalprocessor, varvid vektorexekverings- 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ängden, varvid vek- torstymingen vidare är anordnad att styra exekveringen av instruktioner, varvid vektorexekveringsenheten är kännetecknad av att den innefattar en lokal kö anord- nad att motta åtminstone en första och en andra instruktion från ett programminne och att innehålla den andra instruktionen i den lokala kön tills ett fördefinierat vill- 10 15 20 25 30 535 452 kor är uppfyllt, och att vektorstymingen innefattar köstyrorgan anordnade att styra den lokala kön.
Företrädesvis styr vektorstymingen exekveringen av instruktioner på basis av en avgivningssignal mottagen från kärnan. Altemativt kan den avgivningssignalen hanteras lokalt av sj älva vektorexekveringsenheten.
Genom den lokala kön anordnad för varje vektorexekveringsenhet kan ett knippe av instruktioner innefattande flera instruktioner för en vektorenhet tillhandahållas för vektorenheten vid en tidpunkt. för att möjliggöra synkronisering av instruktio- ner i den lokala kön till exekveringen av vektorinstruktioner, är anordnad en in- struktion benämnd SYNC-instruktionen, vilken kommer att göra en paus i läsning- en av instruktioner från den lokala kön tills ett villkor är uppfyllt, typiskt att data- vägen är redo att motta och exekvera en annan instruktion. Dessa två särdrag möj- liggör tillsammans att en följd av instruktioner omedelbart kan sändas till vektor- exekveringsenheten, för att lagras i den lokala kön och bearbetas i följd i vektor- exekveringsenheten, så att så snart som vektorexekveringsenheten ä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.
Bearbetningen enligt uppfinningen blir följaktligen mer effektiv genom ökning av parallelliteten i processom, eftersom vektorexekveringsenheterna kan arbeta mer oberoende av varandra. Uppfinningen är baserad på insikten att i den kända tekni- ken en vektorexekveringsenhet ofta inte kan motta nästa instruktion omedelbart, eftersom samtliga vektorexekveringsenheter mottar sina kommandon från samma kö, dvs. programminnet i processorkärnan. Detta kommer att inträffa när en vek- torexekveringsenhet är redo att motta ett nytt kommando medan det första kom- mandot i programminnet är avsett för en annan vektorexekveringsenhet, vilken är upptagen. I detta fall kan ingen vektorexekveringsenhet motta ett nytt kommando förrän den andra vektorexekveringsenheten är redo att motta sitt nästa kommando.
I en iöredragen utföringsfonn innefattar vektorexekveringsenheten vidare - Ett instruktionsregister anordnat att motta och lagra instruktioner 10 15 20 25 30 536 45.? - En instruktionsavkodare anordnad att avkoda instruktioner lagrade i instruk- tionsregistret - Ett flertal datavägar styrda av instruktionsavkodaren.
Den lokala kön är företrädesvis anordnad att göra en paus i läsningen av instruk- tioner tills datavägen är redo att motta och exekvera en annan instruktion. Detta kommer att optimera köhanteringen i vektorinstruktionen och den övergripande hanteringen av instruktioner i den processor till vilken vektorexekveringsenheten hör.
Nämnda köstyrorgan innefattar företrädesvis en köstyming anordnad att innehålla den statusinformation som är relaterad till kön, såsom hur full kön är, och att styra sändningen av instruktioner från den lokala kön till vektorexekveringsenheten för exekvering. Köstyrningen kan även vara anordnad för att alstra ett felmeddelande om en ny instruktion sänds till kön och kön är full.
Närrmda köstyrorgan kan vara anordnat för att avge en specifik signal som instrue- rar den lokala kön att göra en paus i läsningen av instruktioner från den lokala kön tills ett specifikt villkor är uppfyllt, exempelvis att datavägen är redo att acceptera en ny instruktion.
Vektorstyrningen är företrädesvis anordnad att orsaka att en signal sänds till en progranflödesstyrenhet hos den digitala si gnalprocessom för att indikera att enhe- ten är redo att acceptera en ny instruktion. Sändningen av denna signal kan vara baserad på information sänd från instruktionsavkodaren till Vektorstyrningen huru- vida instruktionen är exekverad vid varje given tidpunkt. Signalen kan även vara baserad på antalet instruktioner vilka för närvarande befinner sig i kön, exempelvis om det finns plats för fler instruktioner i kön.
Uppfinningen avser även en digital signalprocessor innefattande: - en processorkärna innefattande en heltalsexekveringsenhet konfigurerad för att exekvera heltalsinstruktioner; och 10 15 20 25 30 536 452 - åtminstone en första och en andra vektorexekveringsenhet skild från och kopplad till processorkärnan, varvid varje vektorexekveringsenhet är en vektorexekveringsenhet enligt ovan; - 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.
En sådan digital processor kommer att möjliggöra mer samtidig eller parallell an- vändning av dess vektorexekveringsenheter.
Programminnet är typiskt anordnat i processorkäman och är även anordnat att in- nehålla instruktioner för heltalsexekveringsenheten.
Uppfinningen avser även en basbandskommunikationsanordning lärnplig För tråd- buren och trådlös flerlägeskommunikation, innefattande: - En front-endenhet konfigurerad för att sända och motta kommunikations- signaler; - 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 uttöringsform är de vektorexekveringsenheter som det genomgå- ende hänvisas till i detta dokument vektorexekveringsenheter av SIMD-typ eller programmerbara hjälpprocessorer anordnade att operera på vektorer av data.
Den lokala kön kan vara en FIFO(First In First Out)-kö av önskad längd, exempel- vis 4 till 8 instruktioner. Den kan även vara varje annan typ av lämplig kö.
Processorn enligt utíö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. 10 15 20 25 30 536 462 Sådana processorer används ofta i oliks typer av kommunikationsanordningar, såsom mobiltelefoner, TV-mottagare och kabelmodem. Basbandskornmunika- tionsanordningen kan följaktligen vara anordnad för kommunikation i ett cellulärt kommunikationsnätverk, exempelvis som en mobiltelefon eller en mobil data- kommunikationsanordning. 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 förmår leverera en basbandssignal till sin processor. Det bör inses att benämningen ”basband” endast avser den signal som hanteras internt i processom. De faktiskt mottagna och/eller sända kommunikationssignalema kan vara varje lämplig typ av kommunikations- signaler, mottagna på trådlösa eller trådbundna förbindelser. Kommunikationssig- nalema omvandlas på lämpligt sätt till en basbandssignal genom en front-end- enhet hos anordningen.
Kortfattad ritningsbeskrivning Uppfinningen kommer i det följande att beskrivas mer detaljerat, i fonn av exem- pel och med hänvisning till bifogade ritningar.
FIG. 1 är en systemöversikt av en typisk mobil terminal innefattande en basbands- processor.
FIG. 2 visar ett exempel på SIMT-arkitekturen.
FIG. 3 är ett blockschema över basbandsprocessom enligt en utföringsfonn av uppfinningen.
FIG. 4 är ett schema visaande instruktionsavgivande rörledningar hos en utförings- form av processorkäman i FIG. 2.
FIG. 5 visar instruktionsavgivningslogiken i SIMT-processorer.
FIG. 6 visar en SIMT-enhet enligt känd teknik.
FIG. 7 visar en SIMT-enhet uppvisande de tillagda särdragen hos en allmän utfö- ringsform enligt uppfinningen.
FIG. 8 visar en SIMT-enhet enligt en föredragen utföringsforrn av uppfinningen.
FIG. 9 visar arbetsprincipen för den lokala kön enligt en utföringsforrn av uppfin- ningen. 10 15 20 25 30 535 452 Detaljerad beskrivning av utföriugsformer FIG. 1 visar ett exempel på en mobil terminal 1 innefattande en basbandsprocessor 3 som kommer att vara huvudföremålet för denna ansökan. Såsom känt inom-tek- niken, innefattar terminalen l organ för mottagning och sändning av kommunika- tionssignaler. I detta exempel innefattar den antenner 5 förbundna med en analog front-end-enhet 7, innefattande en analog-till-digital-omvandlare ADC för mottag- ningsriktningen och en digital-till-analog-omvandlare DAC för sändningsriktning- en. Den analoga front-end-enheten 7 är förbunden med basbandsprocessom 3, Basbandsprocessorn 3 innefattar normalt, men ej nödvändigtvis, en FEC(Forward Error Correction)-processor 9, för felkorrigeringsfunktioner såsom interfoliering, viterbiavkodning etc., såsom känt inom tekniken. Basbandsprocessom 3 är typiskt i sin tur förbunden med en MAC-enhet 11, som i sin tur förbunden med en appli- kationsprocessor 13.
Typiskt, men ej nödvändigtvis, har terminalen 1 ett buss- och minnessubsystem som inbördes förbinder basbandsprocessom, MAC-enheten 11 och applikations- processor n 13. Terminalen innefattar även perifera gränssnitt 17 för användar- input/output, typiskt innefattande ett tangentbord, ett kameragränssnitt och gräns- snitt för förbindelser med andra enheter, exempelvis ett USB-gränssnitt.
Som fackmannen skulle inse, kan nämnda analoga front-end vara anordnad att hantera varje typ av inkommande och utgående signaler inklusive radiofrekvens- signaler, basbandssignaler och andra och att tillhandahålla en basbandssignal till basbandsprocessom 3.
FIG. 2 visar ett exempel på en basbandsprocessor 200 enligt SIMT-arkitekturen.
Processom 200 innefattar en styrkärna (controller core) 201 och en första 203 och en andra 205 vektorexekveringsenhet, vilket kommer att diskuteras mer detaljerat i det följande. En FEC-enhet 206, såsom diskuterad i FIG. l, är förbunden med on- chip-nätverket. I en konkret implementering kan naturligtvis FEC-enheten 206 innefatta fiem olika enheter.
En värdgränssnittenhet (host interface unit) 207 tillhandahåller förbindelse med värdprocessom visad i FIG. 1 (ej visad i FIG. 2). Om en MAC-processor är närva- 10 15 20 25 30 536 462 rande , som i FIG. 1, är MAC-processorn förbunden mellan värdgränssnittenheten 207 och värdprocessom. En digital front-end-enhet 209 tillhandahåller förbindelse med ADC/DAC-enheten visad i FIG. 1 på ett sätt som är välkänt inom tekniken.
Som är känt inom tekniken, innefattar styrkäman 201 ett programmirrne 211 samt en instruktionsavgivningslogik och fungerar för multikontextstöd. för varje stödd exekveringskontext eller tråd innefattar denna en programräknare, stackpekare och registerfil (ej särskilt visad i FIG. 2). Typiskt stöds 2-3 trådar.
Styrkärnan 201 innefattar även en heltalsexekveringsenhet 212 innefattande enre- gisterñl RF, ett kärnheltalsminne lCM, en multipliceringsenhet MUL och en arit- metik- och logik/skifienhet (ALSU). ALSUn kan även vara implementerad som två enheter: aritrnetikenhet och logik- och skifienhet. Dessa enheter är kända inom tekniken och visas inte i FIG. 2. ' Den första vektorexekveringsenheten 203 är i detta exempel en CMAC- vektorexekveringsenhet, innefattande en vektorstyming 213, en vektorladd- nings/lagringsenhet 215 och ett antal datavägar 217. Vektorstyrningen hos denna första vektorexekveringsenhet är förbunden med programminnet 211 hos styrkär- nan 201 via avgivningslogiken för att motta avgivna signaler relaterade till instruk- tioner från programrninnet. I beskrivningen ovan avkodar avgivningslogiken in- struktionsordet för att erhålla avgivningssignalen och sänder denna avgivningssig- nal till vektorexekveringsenheten som en separat signal. Det skulle även vara möj- ligt att låta Vektorstyrningen hos vektorexekveringsenheten alstra avgivningssigna- len lokalt. I detta fall bildas avgivningssignalema av vektorstymingen baserat på instruktionsordet på samma sätt som det skulle vara i avgivningslogiken.
En andra vektorexekveringsenhet 205 är en CALU-vektorexekveringsenhet inne- fattande en vektorstyming 223, en vektorladdnings/lagringsenhet 225 och ett antal datavägar 227. Vektorstyrningen 223 hos denna andra vektorexekveringsenhet är likaså förbunden med styrkärnans 201 programminne 211 via avgivningslogiken, för att motta avgivna signaler relaterade till instruktioner från programminnet. 10 15 20 25 30 535 462 10 Funktionen hos datavägama 217, 227 och vektorladdnings/lagringsenheterna 215, 225 kommer att diskuteras nedan.
Det kan finnas ett godtyckligtantal av vektorexekveringsenheter, innefattande en- dast CMAC-enheter, endast CALU-enheter eller ett lämpligt antal av varje typ.
Det kan även finnas andra typer av vektorexekveringsenheter än CMAC och CALU. Som förklarats ovan, är en vektorexekveringsenhet en processor som kan bearbeta vektorinstruktioner, vilket innebär att en enda instruktion utför samma funktion på ett antal dataenheter. Data kan vara komplexa eller reala, och är grup- perade i bytes eller ord och packade i en vektor för att opereras på av en vektor- exekveringsenhet. I denna skrift används CALU- och CMAC-enheter som exem- pel, men bet bör observeras att vektorexekveringsenheter kan användas för att ut- föra varje lärnplig funktion på vektorer av data.
För att möjliggöra flera samtidiga vektoroperationer, har processom företrädesvis ett distribuerat minnessystem där minnet är uppdelat i flera minnesbanker, vilka i FIG. 2 representeras av Minnesbank O 230 till Minnesbank N 231. Varje minnes- bank 230, 231 has sitt eget komplexa minne 232, 233 och adressalstringsenhet AGU 234 resp. 235. Detta arrangemang i förening med on-clrip-nätverket förbätt- rar effektverknirigsgraden hos minnessystemet och processoms genomströmning eftersom flerfaldiga adressberäkningar kan utföras parallellt. Den PBBP som visas i FIG. 2 innefattar även en eller flera minnesbanker 238, innefattande ett minne 239 och en adressalstringsenhet.
Såsom känt inom tekniken, är typiskt ett antal acceleratorer 242 inkopplade, efier- som 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 diskuteras i detalj. Acceleratorema kan vara konfigurerba- ra för att vara återanvändbara av många olika standarder.
Ett on-chip-nätverk 244 förbinder styrkäman 201, den digitala front-end-enheten 209, värdgränssnittenheten 207, vektorexekveringsenhetema 203, 205, minnes- bankema 230, 232, heltalsbanken 238 och acceleratorema 242. 10 15 20 25 30 536 462 ll Varje vektorexekveringsenhet 203, 205 innefattar en vektorladdnings/lagrings- enhet 215, 225 anordnade att verka som ett gränssnitt mellan nätverksporten och datavägen i vektorexekveringsenheten. exekveringsenhetema 203, 205 är typiskt förbundna med minnesbankema 230, 23lvia nätverket 244, men det kan även fin- nas stöd för förbindelser till andra enheter såsom acceleratorer 242 och andra vek- torexekveringsenheter. Laddningsfunktionen används för hämtning av data från de andra enhetema som är förbundna med nätverket 244 (exempelvis en minnesbank) och lagringsfinilctionen används för lagring av data från exekveringsenhetema 203, 205 till t.ex. en rninnesenhet 230, 231 via nätverket 244. Data kan även erhållas från andra vektorexekveringsenheter och/eller beräkningsresultaten kan framföras till andra vektorexekveringsenheter för vidare bearbetning. Varje vektorexekve- ringsenhet innefattar även en vektorstyming 213, 223 anordnad att motta instruk- tioner från programminnet PM 21 l. Vektorladdningsenhetema 215, 225 kan ladda data under användning av två olika lägen. I det första läget kan flera dataelement laddas från en minnesbank 230, 232 eller andra källor, som diskuterats ovan. DI det andra läget kan data laddas ett dataelement åt gången och därefter distribueras till SIMD-datavägarna i en bestämd dataexekveringsenhet. Det senare läget kan an- vändas till att minska antalet minnesåtkomster när data bearbetas i följd av exekve- ringsenheten.
I den illustrerade utföringsformen visas den andra vektorexekveringsenheten 205 som en fyrvägs komplex ALU som kan innefatta fyra oberoende datavägar 227, vilka var och en har en komplex multiplikator-ackumulator (CSMAC) såsom van- ligt inom tekníkområdet. Som kommer att beskrivas mer detaljerat i det följ ande, kan CALU 205 exekvera vektorinstruktioner. I en utföringsforrn kan CALU 205 vara speciellt lämpad för att exekvera komplexa vektorinstruktioner. Vidare kan var och av de oberoende datavägarna 227 hos CALU 205 samtidigt exekvera de komplexa vektorinstruktionema.
Den första vektorexekveringsenheten 203 visas som en fyrvägs CMAC med fyra komplexa datavägar som kan köras samtidigt eller separat. De fyra komplexa da- tavägarna innefattar multiplicerare, adderare, och samlingsregister (samtliga visas ej i FIG. 2). I denna utföringsform kan följaktligen CMAC 203 benämnas som en fyrvägs CMAC-dataväg. Utöver multiplikation och addition, kan CMAC 203 även 10 15 20 25 30 535 462 12 genomföra avrundnings- och skalningsoperationer och understödja mättnad, såsom känt inom teknikornrådet.
I en utföringsform kan operationer hos CMAC 203 uppdelas i multipla pipeline- steg. Dessutom kan var och en av de fyra komplexa datavägarna 217 beräkna en komplex multiplikation och ackumulation i en klockcykel. CMAC 203 (dvs. de fyra datavägarna tillsammans) kan exekvera en operation på en vektor med N ele- ment på N/4 klockcykler för att understödja komplex vektorberäkning (dvs. kom- plex vektorfaltning, konjugerad komplex faltning och komplex skalärvektorpro- dukt). CMAC 203 kan vidare understödja operationer på komplexa värden lagrade i sarnlingsregistren (t.ex. komplex addition, subtraktion, konjugering osv). CMAC 203 kan exempelvis beräkna en komplex multiplikation såsom (AR + JAI)* (BR + IBI) i en klockcykel och komplex ackumulation i en klockcykel och understödja komplex vektorberäkning (t.ex. komplex faltning, konjugerad komplex faltning och komplex skalärvektorprodukt). i I en utfóringsfonn kan instruktionsuppsättningsarkitekturen för processorkärnan 201 innefatta tre klasser av sammansatta instruktioner. Den första klassen av in- struktioner är RISC-instruktioner, vilka opererar på 16-bitars operander. RISC- instruktionsklassen innefattar de flesta styrorienterade instruktioner och kan exe- kveras inom heltalsexekveringsenheten 212 hos processorkäman 201. Nästa klass av instruktioner är DSP-instruktioner, vilka opererar på komplexvärda data uppvi- sande en realdel och en komplex del. DSP-instruktionema kan exekveras på en eller flera av vektorexekveringsenhetema 203, 205. Den tredje klassen av instruk- tioner är Vektorinstruktionerna. Vektorinstruktioner kan anses vara törlängningar av DSP-instruktionema, eftersom de opererar på stora datamängder och kan utnytt- ja avancerade adresseringslägen och vektorstöd. Vektorinstruktionema kan operera på komplexa och reala datatyper.
FIG. 3 är ett blockschema över basbandsprocessorn PBBP 200 enligt en utfórings- form av uppfinningen. PBBP 200 innefattar en processorkärna, som innefattar en exekveringsenhet av RISC-typ och som representeras av RISC-datavägen 510.
PBBP har vidare ett antal vektorexekveringsenheter 520, 530, vilka var och en innefattar en vektorstyrenhet 275 resp. en SIMD-dataväg 525, 535. Såsom känt 10 15 20 25 30 535 452 13 inom teknikområ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 525.
För att åstadkomma styrning av de multipla vektorexekveringsenhetema, innefattar kämmaskinvaran 500 en programflödesstyrenhet 501 kopplad till en programräk- nare 502, vilken i sin tur är kopplad till ett programminne (PM) 503. PM 503 är kopplat till en multiplexer 504, enhet-fältutvinning (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 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 från programminnet 503 lokaliserat i kärnan.
Vektorexekveringsenhetema innefattar respektive vektorlängdsregister 521, 531, ínstruktionsregister 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. 5.
FIG. 4 är ett exempel på känd teknik för behandling av instruktioner från pro- grarnrninnet till de olika exekveríngsenhetema, avsett som en illustration av det problem som ligger till gnmd för uppfinningen. Den vänstra spalten i FIG. 4 anger tid (i exekveringsklockcykler). De övriga spaltema anger från vänster till höger exekveringspipelines hos en första och en andra exekveringsenhet (närmare be- stä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 klockcykeln en komplex vektorinstruktion (tex. CMAC.256) till CMAC 203. Som visas behöver vektorinstruktionen många cykler för att avslutas. I nästa klockcykel avges en vektorinstruktion till CALU 205. I nästa klockcykel avges en heltalsin- struktion till heltalsexekveringsenheten 510. I påföljande flera cykler kan, medan vektorinstruktionerna exekveras, varje antal av heltalsinstruktioner avges till hel- talsexekveringsenheten 510. Fastän ej visat, observeras att de återstående vektor- 10 15 20 25 30 535 462 14 exekveringsenhetema kan även samtidigt exekvera instruktioner på ett motsvaran- de sätt.
I vissa fall kan en ”tomgångsinstruktion” vara inkluderad i följden av instruktio- ner, tör att stoppa kämprograrnflödesstymingen från att hämta instruktioner från programminnet. För att exempelvis synkronisera programflödet med avslutningen av en vektorinstruktion, kan ”tomgångsinstruktionen” 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 kommer vektorstyrningen 275 hos vektorcxekveringsenheten 520, 530 i fråga att sända en indikation, såsom en flagga, till programflödesstyrningen 501, med indi- kation att vektorexekveringsenheten är i redo att motta ärmu 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. 4 avges ”tomgångsinstruktíonen” efter ovannä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-uppgifter, 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 10 15 20 25 30 535 452 15 vidarebearbetas av kod i uppgiftens ”epilog”-del. I SIMT processorer behövs ty- piskt endast en vektorinstruktion for att genomföra vektoroperationen.
Den typiska layouten for en DSP-uppgift exemplifieras genom följ ande exempel- uppgift enligt känd teknik: _ Kodsträngen i exemplet genomför en komplex skalärproduktberälming över 512 komplexa värden och lagrar dârefier åter resultatet i minnet. Rutinen kräver att följande instruktioner hämtas av processorkärnan. .cmacÛ ;Assume cmac0 is selected prolog: ;Address setup ldi #0, r0 out r0, cdm0_addr out r0, cdm1_addr out r0, cdm2_addr setcmvl.5I2 ; Set vector length to 512 vectorop: cmac [0], [1], [2] ; Perform cmac operation over ; samples idle #cmac0 ; Stop program fetchíng until cmac0 is ready epilog: star [3] ,' Store accumulator I exemplet ovan avges instruktionema setcmvl, cmac och star till och exekveras på CMAC-vektorexekveringsenheten, medan instruktionema ldi, 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: l) 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 lO 15 20 25 30 536 452 16 3) Inställd av ett styrregister, exempelvis enligt formatet aut r0, cmac_vector_length instruktionen idle #cmac0 instruerar kärnprograrnflödesstymingen att avstanna härntningen av nya instruktioner tills CMACO enheten har avslutat sin vektorope- ration. Efier det att tomgångsinstriilctionen frigöra, och tillåtande av att nya in- struktioner hämtas, hämtas ”stef-instruktionen och avges till CMACO- vektorexekveringsenheten. Star-instruktionen instruerar CMAC- vektorexekveringsenheten att lagra ackumulatorn i minnet.
I nästa exempel, vilket likaså illustrerar känd teknik, används två vektorexekve- ringsenheter. Den instruktionsfiiljd 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, 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 cmac0 is ready epilog: star [3] ; Store accumulator Instruktionstölj den som hänförs till den andra vektorexekveringsenheten är: .cmacl ;Assume cmacI is selected prolog: ;Address setup ldi #0, r0 out r0, cdm3__addr 10 15 20 25 30 535 452 17 out r0, cdm4_addr out r0, cdm5_addr setcmvl. 2048 ; Set vector length to 2048 vectorop: cmac [0], [1], [2] ; Perform cmac operation over ,' samples idle #cmac1 ,- Stop program fetchíng until cmac0 is ready epilog: star [3] ; Store accumulator 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 programrninnet ä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- gramminnet i processorkäman 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. 10 15 20 25 30 535 482 18 Samtidigt 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 vektorexekveríngsenheten ä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 skrifi 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 cmacO as destination for cmac related instructions ;A ddress setup Idi #0, r0 out r0, cdm0_addr out r0, cdm1_addr out r0, cdm2_addr setcmvl. 512 ; 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 vektorexekveringsenheten i fråga och lagras där me- 10 15 20 25 30 535 452 19 dan de väntar på att sändas ett kommando åt gången till instruktionsavkodaren 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. 5 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änra 701 uppvisande ett pro gramminne PM 702, vilket lagrar instruktioner för de olika exekveringsenhetema hos proces- som, och en RISC-prograintlödesstyrenhet 703. Från programminnet 702 hämtas 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 avgivningsstymingen 509 i FIG. 3. 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ärnan och motsvarar enhetema 505, 506, 507 och 510 i FIG. 3. Som ovan förkla- rats, sänds i en uttöringsforrn 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. 6 illustrerar en vektorexekveringsenhet 710, vilken kan vara en av vektorexe- kveringsenhetema 710, 712, 714 i FIG. 5 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. 5 mottar vektorexekveringsenheten 710 i FIG. 6 instruktioner från programminnet 702, men FIG. 6 ä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 10 15 20 25 30 535 Lil-EQ 20 förkastas den. Vektorstymingen 720 hanterar även vektorlängdrälmaren 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 exekveringsenhetema fi°ån programrninnet 702. Enhetsfiltet i instruktionsordet kan extraheras från instruktionsordet och användas till att styra till vilken styrenhet instruktionen avges. Om exempelvis enhetsfaltet ä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 RlSC-käman 716 (ej visad i FIG. 6), medan inga nya instruktioner laddas in i vektorexekveringsenhetema un- der denna cykel. Om emellertid enhetstä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 instruktíonsregistret 722 hos nämnda vektorexekveringsenhet. I detta fall kom- mer en NOP-instrtrlction att sändas till RISC-datavägens instruktionsregister i RISC-käman 7 1 6.
För att hantera vektorinstruktioner när en instruktion avges till vektorexekverings- enheterna kan vektorlängdfaltet frå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 vektorinstruktion, 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- torstymingen 720 orsaka att en signal (flagga) sänds till programflödesstyrningen 703 (ej visad i FIG. 6) fór att indikera att enheten är redo att acceptera en ny in- struktion. Vektorstyrningen 720 hos varje vektorexekveringsenhet 520, 530 (se FIG. 3) 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 enhetstältet bestämmer att en bestämd instruktion ska sändas till en bestämd vektorexekveringsenhet, laddas 10 15 20 25 30 536 452 21 instruktionsordet från programminnet 702 in i instruktionsregistret 722. Även om instruktionen är bestämd (av vektorstymingen) att bära ett vektorlängdfált, laddas räkneregistret 721 med detta värde av vektorlängdvärdet. Vektorstymingen 7020 avkodar delar av instruktionsordet för att bestämma om instruktionen är en vektor- instmktion och uppbär vektorlängdinformation. Om så är fallet, aktiverar vektor- styrningen 720 en signal för räkneregistret 721 att ladda ett värde indikerande vek- torlängden in i räkneregistret 721. Vektorstyrningen 720 instruerar även instruk- tionsavkodningsenheten 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 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. 7 illustrerar en vektorexekveringsenhet 810 enligt uppfinningen. Vektorexe- kveringsenheten innefattar samtliga element hos den vektorexekveringsenhet en- ligt känd teknik som visas i FIG. 6 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 prograrnminnet. En kö- styrning 732 anordnad att styra den lokala kön 730 är anordnad i vektorstyrenheten 720. Kön 730 och köstyrningen 732 ä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. Altemativt kan kön själv hålla reda på sin status och sända information som indikerar att den är firll eller tom, eller nästan full eller tom, till köstymingen 732. Köstymingen 732 innehåller följaktligen statusinforrnation 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 infonnera vektorstymingen 730 om vilken instruktion som för närva- rande exekveras.
Som förklarats ovan, är många DSP-uppgifier implementerade som en följd av instruktioner, exempelvis en prolog, en vektorinstruktion och en epilog. Vektorin- struktionema kommer att löpa ett antal klockcykler, under vilken tid inget nytt kommando kan hämtas. l 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 10 15 20 25 30 536 fïlEE 22 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 ettläge eller mod i köstyrningen 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ängdínformationen 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 ínstruktionsavkodaren 723 i Vektorexekveringsen- heten är redo att bearbeta nästa instruktion.
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. 8 illustrerar en vektorexekveringsenhet 910 enligt en föredragen uttörings- form av uppfinningen. Vektorexekveringsenheten visad i FIG. 8 innefattar samma enheter som i FIG. 7, inbördes förbundna på samma sätt. I denna utföringsforrn är emellertid den lokala kön 740 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 sarnrna 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ärnenhe- ten till Vektorexekveringsenheten varje gång de ska exekveras.
Liksom i FIG. 7 fimis en köstyrning 732 anordnad i vektorstymingen 720”. I utfö- ringsformen enligt FIG. 8 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 vektorstymingen 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. 10 15 20 25 30 536 452 23 Eñersom samtliga instruktioner som avges till vektorexekveringsenheten passerar kön 740, dvs. den cykliska bufferten, kommer bufferten att minnas de sista N (ty- piskt 8-16) instruktionerna.
Upprepningsregistret 746 är konfigurerat för att innehålla antalet upprepningar som ska genomföras. Upprepningsregistret 746 kan vara laddat genom styrregis- terñlen 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 740 som ska vara inklude- rade i upprepningsslingan. Instruktionsräkneregistret kan vara laddat genom styr- registerfilen eller vara inläst från det instruktionsord som avgivits till vektorexe- kveringsenheten eller genom varje annan metod.
När en ”upprepningsinstrtrlction” eller instruktion med en ”upprepningsflagg”- uppsättning avges till vektorexekveringsenheten, instruerar instruktionsavkodaren 723 i förening med vektorstyrningen 720 köstyrningen 732 att avge instruktioner från den cykliska bufferten 740 till instruktionsregistret 722.
När, liksom i FIG. 7, en ”sync”-instruktion påträffas av instruktionsavkodaren 723, instruerar instruktionsavkodaren köstyrningen 732 att stoppa hämtningen 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, 740 och instruktionsregistret 722 i denna skrift visas som separata enheter, skulle det vara möjligt att kombinera dem till en enhet. In- struktionsregistret 722 kunde exempelvis vara integrerat som det sista elementet i den lokala kön.
Bufferthanteraren 744 övervakar operationen hos den lokala bufferten 740 och hanterar upprepning av de instruktioner som för närvarande lagras i den cirkulära 10 15 20 25 30 535 482 24 bufferten, medan köstymingen 732 hanterar avgivningen av start/stopinstruktionen från den cirkulära buffertkön 740.
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 vektorstyrningen 720', vilken då kan sändas till sänt-till-programflödesstymingen 703 (ej visad i FIG. 8) 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 bufferten 740 till köfunktionaliteten och lagrar de sist avgivna instruktio- nerna, så att en ny upprepningsinstruktion kan påbörjas.
FIG. 9 illustrerar arbetsprincipen hos den lokala kön enligt en utföringsform 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. 9 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. 536 452 25 Styrlogiken (ej visad) är anordnad att hålla reda på det antal instruktioner i följden som ska itereras, och deras position i kön. Detta innefattar exempelvis: 0 Positionen 9ll för början av följden av instruktioner som ska upprepas 5 v 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 slutet av följden lagras tillsammans med längden av följden, dvs. antalet 10 instruktioner inkluderade i följden.
Claims (1)
1. 0 15 20 25 30 536 462 26 Patentkrav . Vektorexekveringsenhet (203, 205, 520, 530) för användning i en digital signalprocessor (200), varvid vektorexekveringsenhetenär anordnad att exekvera instruktioner, innefattande vektorinstruktioner vilka ska utföras på många data i form av en vektor, innefattande en vektorstyrning (720, 720”) anordnad att fastställa om en instruktion är en vektorinstruktion och, om den är det, informera ett räkneregister (721) anordnat att innehålla vek- torlängden, varvid vektorstymingen (720, 720') vidare är anordnad att styra exekveringen av instruktioner, varvid vektorexekveringsenheten är känne- tecknad av att - den innefattar en lokal kö (730) anordnad att motta åtminstone en första och en andra instruktion från ett programminne och att inne- hålla den andra instruktionen i den lokala kön tills ett fórdefinierat villkor är uppfyllt, och att - vektorstyrningen (720, 720') innefattar köstyrorgan (732, 721) an- ordnade att styra den lokala kön. . Vektorexekveringsenhet enligt krav 1, vidare anordnad att motta en avgiv- ningssignal och att styra exekveringen av instruktioner baserade på denna avgivningssignal. . Vektorexekveringsenhet enligt krav 1 eller 2, vidare innefattande - ett instruktionsregister (722) anordnat att motta och lagra instruk- tioner - en instruktionsavkodare (723) anordnad att avkoda instruktioner lagrade i instruktionsregistret - ett flertal datavägar styrda av instruktionsavkodaren 4. Vektorexekveringsenhet enligt något av föregående krav, varvid den lokal kön (730) är anordnad att göra en paus i läsningen av instruktioner tills da- tavägen är redo att motta och exekvera en annan instruktion. 10 15 20 25 30 35 536 462 27 5. Vektorexekveringsenhet enligt något av föregående krav, varvid nämnda köstyrorgan (732) innefattar en köstyming anordnad att innehålla statusin- formation relaterad till kön, såsom hur full kön (730) är, och att styra sänd- ningen av instruktioner från den lokala kön (7 30) till Vektorexekveringsen- heten (203, 205, 520, 530) för exekvering. 6. Vektorexekveringsenhet enligt krav 5, varvid köstymíngen är anordnad att alstra ett felmeddelande om en ny instruktion sänds till kön och kön är full. 7. Vektorexekveringsenhet enligt krav 6, varvid nämnda köstyrorgan (732) är anordnade att avge en specifik signal som instruerar den lokala kön att göra en paus i läsningen av instruktioner från den lokala kön tills villkoret är uppfyllt 8. Vektorexekveringsenhet enligt något av föregående krav, varvid vektor- styrningen (720, 720') är anordnad att orsaka en signal som ska sändas till en programflödesstyming (703) hos den digitala signalprocessom för att indikera att enheten är redo att acceptera en ny instruktion. 9. Vektorexekveringsenhet enligt något av föregående krav, varvid instruk- tionsavkodaren (723) är anordnad att informera vektorstyrningen (720, 720°) om den instruktion som exekveras vid varje given tidpunkt. 10. Vektorexekveringsenhet enligt något av föregående krav, varvid den lokala kön är en törst-in-törst-ut-kö. ll. Digital signalprocessor (200) innefattande: - en processorkåma (201) innefattande en heltalsexekveringsenhet (212) konfigurerad för att exekvera heltalsinstruktioner; och - åtminstone en första och en andra Vektorexekveringsenhet (203, 205, 520, 530) skild från och kopplad till processorkäman (201), varvid varje Vektorexekveringsenhet är en Vektorexekveringsenhet (203, 205) enligt något av föregående krav; - varvid den digitala signalprocessom innefattar ett programminne (211) anordnat att innehålla instruktioner för den första och andra Vektorexe- kveringsenheten (203, 205) och avgivningslogik för avgivning av in- 10 15 20 25 30 536 452 28 struktioner, innefattande vektorinstruktioner, till den första och andra vektorexekveringsenheten. 12. Digital signalprocessor enligt krav 11, varvid programminnet (211) även är anordnat att innehålla instruktioner för heltalsexekveringsenheten (212). 13. Digital signalprocessor enligt något av krav 1 1-12, varvid programminnet (21 1) är anordnat i processorkäman (201). 14. Basbandskommunikationsanordning lämplig för trådburen och trådlös fler- lägeskommunikation, innefattande: - en front-endenhet (7) konfigurerad för att sända och motta kommnnika- tionssignaler; - en programmerbar digital signalprocessor (3) kopplad till den analoga fiont-endenheten, varvid den programmerbara digitala signalprocessorn är en digital signalprocessor enligt något av krav 9-12. 15. Basbandskommunikationsanordning enligt krav 14, varvid front- endenheten (7) är en analog front-endenhet anordnad att sända och/eller motta radiofrekvens- eller basbandssignaler. 16. Basbandskommunikationsanordning enligt krav 14 eller 15, varvid bas- bandskommunikationsanordningen är en anordning för kommunikation i ett trådlöst kommunikationsnätverk, såsom ett cellulärt kommunikations- nätverk. 17. Basbandskommunikationsanordning enligt krav 14, varvid basbandskom- munikationsanordningen är en televisionsmottagare. 18. Basbandskommunikationsanordning enligt krav 14, varvid basbandskom- munikationsanordningen är ett kabelmodem.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1150966A SE536462C2 (sv) | 2011-10-18 | 2011-10-18 | Digital signalprocessor och basbandskommunikationsanordning |
CN201280051515.3A CN103890718B (zh) | 2011-10-18 | 2012-09-17 | 数字信号处理器及基带通信设备 |
ES12784087.4T ES2688603T3 (es) | 2011-10-18 | 2012-09-17 | Procesador digital de señales y dispositivo de comunicación de banda base |
EP12784087.4A EP2751668B1 (en) | 2011-10-18 | 2012-09-17 | Digital signal processor and baseband communication device |
KR1020147011833A KR20140078717A (ko) | 2011-10-18 | 2012-09-17 | 디지털 신호 프로세서 및 기저 대역 통신장치 |
US14/350,538 US20140244970A1 (en) | 2011-10-18 | 2012-09-17 | Digital signal processor and baseband communication device |
PCT/SE2012/050979 WO2013058695A1 (en) | 2011-10-18 | 2012-09-17 | Digital signal processor and baseband communication device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1150966A SE536462C2 (sv) | 2011-10-18 | 2011-10-18 | Digital signalprocessor och basbandskommunikationsanordning |
Publications (2)
Publication Number | Publication Date |
---|---|
SE1150966A1 SE1150966A1 (sv) | 2013-04-19 |
SE536462C2 true SE536462C2 (sv) | 2013-11-26 |
Family
ID=47148883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE1150966A SE536462C2 (sv) | 2011-10-18 | 2011-10-18 | Digital signalprocessor och basbandskommunikationsanordning |
Country Status (7)
Country | Link |
---|---|
US (1) | US20140244970A1 (sv) |
EP (1) | EP2751668B1 (sv) |
KR (1) | KR20140078717A (sv) |
CN (1) | CN103890718B (sv) |
ES (1) | ES2688603T3 (sv) |
SE (1) | SE536462C2 (sv) |
WO (1) | WO2013058695A1 (sv) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160226544A1 (en) * | 2015-02-04 | 2016-08-04 | GM Global Technology Operations LLC | Adaptive wireless baseband interface |
EP3125108A1 (en) * | 2015-07-31 | 2017-02-01 | ARM Limited | Vector processing using loops of dynamic vector length |
CN111651202B (zh) * | 2016-04-26 | 2023-09-22 | 中科寒武纪科技股份有限公司 | 一种用于执行向量逻辑运算的装置 |
CN108268941B (zh) * | 2017-01-04 | 2022-05-31 | 意法半导体股份有限公司 | 深度卷积网络异构架构 |
JPWO2018234919A1 (ja) * | 2017-06-21 | 2020-07-16 | 株式会社半導体エネルギー研究所 | ニューラルネットワークを有する半導体装置 |
US10713045B2 (en) * | 2018-01-08 | 2020-07-14 | Atlazo, Inc. | Compact arithmetic accelerator for data processing devices, systems and methods |
CN110806986B (zh) * | 2019-11-04 | 2022-02-15 | 苏州盛科通信股份有限公司 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
US12282774B2 (en) * | 2021-06-25 | 2025-04-22 | Intel Corporation | Vector processor utilizing massively fused operations |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6043535B2 (ja) * | 1979-12-29 | 1985-09-28 | 富士通株式会社 | 情報処理装置 |
JP2810068B2 (ja) * | 1988-11-11 | 1998-10-15 | 株式会社日立製作所 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
US5179530A (en) * | 1989-11-03 | 1993-01-12 | Zoran Corporation | Architecture for integrated concurrent vector signal processor |
US6658556B1 (en) * | 1999-07-30 | 2003-12-02 | International Business Machines Corporation | Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction |
US7231193B2 (en) * | 2004-04-13 | 2007-06-12 | Skyworks Solutions, Inc. | Direct current offset correction systems and methods |
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 |
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 |
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 |
US10803009B2 (en) * | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
-
2011
- 2011-10-18 SE SE1150966A patent/SE536462C2/sv not_active IP Right Cessation
-
2012
- 2012-09-17 CN CN201280051515.3A patent/CN103890718B/zh not_active Expired - Fee Related
- 2012-09-17 US US14/350,538 patent/US20140244970A1/en not_active Abandoned
- 2012-09-17 ES ES12784087.4T patent/ES2688603T3/es active Active
- 2012-09-17 KR KR1020147011833A patent/KR20140078717A/ko not_active Ceased
- 2012-09-17 EP EP12784087.4A patent/EP2751668B1/en not_active Not-in-force
- 2012-09-17 WO PCT/SE2012/050979 patent/WO2013058695A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP2751668B1 (en) | 2018-08-01 |
ES2688603T3 (es) | 2018-11-05 |
KR20140078717A (ko) | 2014-06-25 |
CN103890718B (zh) | 2016-08-24 |
SE1150966A1 (sv) | 2013-04-19 |
CN103890718A (zh) | 2014-06-25 |
EP2751668A1 (en) | 2014-07-09 |
WO2013058695A1 (en) | 2013-04-25 |
US20140244970A1 (en) | 2014-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
SE536462C2 (sv) | Digital signalprocessor och basbandskommunikationsanordning | |
US20140281373A1 (en) | Digital signal processor and baseband communication device | |
WO2016100142A2 (en) | Advanced processor architecture | |
US10303399B2 (en) | Data processing apparatus and method for controlling vector memory accesses | |
WO2012151331A1 (en) | Methods and apparatus for constant extension in a processor | |
US9804853B2 (en) | Apparatus and method for compressing instruction for VLIW processor, and apparatus and method for fetching instruction | |
EP2577464B1 (en) | System and method to evaluate a data value as an instruction | |
US20130151485A1 (en) | Apparatus and method for storing trace data | |
CN107748674A (zh) | 面向比特粒度的信息处理系统 | |
CN112074810B (zh) | 并行处理设备 | |
EP2751671B1 (en) | Digital signal processor and baseband communication device | |
CN100444107C (zh) | 优化的处理器和指令对准 | |
US9557996B2 (en) | Digital signal processor and method for addressing a memory in a digital signal processor | |
JP2013140472A (ja) | ベクトルプロセッサ | |
US20070226468A1 (en) | Arrangements for controlling instruction and data flow in a multi-processor environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NUG | Patent has lapsed |