Hårdvaruacceleration
Hårdvaruacceleration är användningen av datorhårdvara som är utformad för att utföra specifika funktioner mer effektivt jämfört med programvara som körs på en central processorenhet ( CPU). Alla transformationer av data som kan beräknas i programvara som körs på en generisk CPU kan också beräknas i skräddarsydd hårdvara, eller i någon blandning av båda.
För att utföra beräkningsuppgifter snabbare (eller bättre på något annat sätt) kan man i allmänhet investera tid och pengar i att förbättra mjukvaran, förbättra hårdvaran eller båda. Det finns olika tillvägagångssätt med för- och nackdelar i form av minskad latens , ökad genomströmning och minskad energiförbrukning . Typiska fördelar med att fokusera på programvara kan inkludera snabbare utveckling , lägre engångskostnader för ingenjörsarbete , ökad portabilitet och enkelhet att uppdatera funktioner eller korrigera buggar , till bekostnad av omkostnader för att beräkna allmänna operationer. Fördelarna med att fokusera på hårdvara kan vara snabbare , minskad strömförbrukning , lägre latens, ökad parallellitet och bandbredd , och bättre utnyttjande av area och funktionella komponenter som finns tillgängliga på en integrerad krets ; till priset av lägre förmåga att uppdatera design som en gång etsats på kisel och högre kostnader för funktionsverifiering och tid till marknaden. I hierarkin av digitala datorsystem som sträcker sig från processorer för allmänna ändamål till helt anpassad hårdvara, finns det en avvägning mellan flexibilitet och effektivitet, med effektiviteten som ökar i storleksordningar när en given applikation implementeras högre upp i den hierarkin. Denna hierarki inkluderar generella processorer såsom CPU:er, mer specialiserade processorer såsom GPU:er , fasta funktioner implementerade på fältprogrammerbara gate arrays (FPGAs) och fasta funktioner implementerade på applikationsspecifika integrerade kretsar (ASIC).
Hårdvaruacceleration är fördelaktigt för prestanda och praktiskt när funktionerna är fixerade så att uppdateringar inte behövs lika mycket som i mjukvarulösningar. Med tillkomsten av omprogrammerbara logiska enheter som FPGA:er har begränsningen av hårdvaruacceleration till helt fasta algoritmer lättat sedan 2010, vilket gör att hårdvaruacceleration kan tillämpas på problemdomäner som kräver modifiering av algoritmer och processkontrollflöde . Nackdelen är dock att det i många projekt med öppen källkod kräver proprietära bibliotek som inte alla leverantörer är angelägna om att distribuera eller exponera, vilket gör det svårt att integrera i sådana projekt.
Översikt
Integrerade kretsar kan skapas för att utföra godtyckliga operationer på analoga och digitala signaler. Oftast inom datorer är signaler digitala och kan tolkas som binära taldata . Datorhårdvara och programvara arbetar på information i binär representation för att utföra beräkningar ; detta åstadkoms genom att beräkna booleska funktioner på inmatningsbitarna och mata ut resultatet till någon utgångsenhet nedströms för lagring eller vidare bearbetning .
Beräkningsmässig motsvarighet av hårdvara och mjukvara
Eftersom alla Turing-maskiner kan köra vilken beräkningsbar funktion som helst , är det alltid möjligt att designa anpassad hårdvara som utför samma funktion som en viss mjukvara. Omvänt kan mjukvara alltid användas för att emulera funktionen hos en given hårdvara. Anpassad hårdvara kan erbjuda högre prestanda per watt för samma funktioner som kan specificeras i programvaran. Hårdvarubeskrivningsspråk (HDL) som Verilog och VHDL kan modellera samma semantik som programvara och syntetisera designen till en nätlista som kan programmeras till en FPGA eller sammansättas i de logiska grindarna i en ASIC.
Datorer med lagrade program
Den stora majoriteten av mjukvarubaserad beräkning sker på maskiner som implementerar von Neumann-arkitekturen , gemensamt känd som datorer med lagrade program . Datorprogram lagras som data och exekveras av processorer . Sådana processorer måste hämta och avkoda instruktioner, samt ladda dataoperander från minnet (som en del av instruktionscykeln ) för att exekvera instruktionerna som utgör programvaran. Att förlita sig på en gemensam cache för kod och data leder till "von Neumann-flaskhalsen", en grundläggande begränsning av genomströmningen av mjukvara på processorer som implementerar von Neumann-arkitekturen. Även i den modifierade Harvard-arkitekturen , där instruktioner och data har separata cachar i minneshierarkin, finns det overhead för att avkoda instruktions- opkoder och multiplexering av tillgängliga exekveringsenheter på en mikroprocessor eller mikrokontroller , vilket leder till lågt kretsutnyttjande. Moderna processorer som tillhandahåller simultan multithreading utnyttjar underutnyttjande av tillgängliga processorfunktionsenheter och instruktionsnivå parallellitet mellan olika hårdvarutrådar.
Hårdvaruexekveringsenheter
Hårdvaruexekveringsenheter förlitar sig i allmänhet inte på von Neumann eller modifierade Harvard-arkitekturer och behöver inte utföra instruktionshämtnings- och avkodningsstegen i en instruktionscykel och ådrar sig dessa stegs overhead. Om nödvändiga beräkningar specificeras i en för registeröverföringsnivå (RTL), kan tids- och kretsareakostnader som skulle uppstå vid instruktionshämtning och avkodningssteg återvinnas och användas för andra ändamål.
Denna återvinning sparar tid, kraft och kretsarea vid beräkning. De återvunna resurserna kan användas för ökad parallell beräkning, andra funktioner, kommunikation eller minne, såväl som för ökade in-/utgångsmöjligheter . Detta kommer på bekostnad av allmännytta.
Nya hårdvaruarkitekturer
Större RTL-anpassning av hårdvarudesigner gör det möjligt för framväxande arkitekturer såsom in-memory computing , transport trigged architectures (TTA) och networks-on-chip (NoC) att ytterligare dra nytta av ökad lokalisering av data till exekveringskontext, och därigenom minska beräknings- och kommunikationslatens mellan moduler och funktionsenheter.
Anpassad hårdvara är begränsad i parallell bearbetningsförmåga endast av det område och de logiska blocken som finns tillgängliga på den integrerade kretsen . Därför är hårdvaran mycket mer fri att erbjuda massiv parallellitet än mjukvara på processorer för allmänna ändamål, vilket erbjuder en möjlighet att implementera modellen med parallell slumpmässig åtkomst (PRAM).
Det är vanligt att bygga multicore- och manycore -processorenheter av mikroprocessorns IP-kärnscheman på en enda FPGA eller ASIC. På samma sätt kan specialiserade funktionella enheter komponeras parallellt som vid digital signalbehandling utan att vara inbäddade i en processor- IP-kärna . Därför används hårdvaruacceleration ofta för repetitiva, fasta uppgifter som involverar lite villkorlig förgrening , särskilt på stora mängder data. Så här implementeras Nvidias CUDA- linje av GPU : er.
Implementeringsmått
När enhetens mobilitet har ökat har nya mätvärden utvecklats som mäter den relativa prestandan för specifika accelerationsprotokoll, med hänsyn till egenskaper som fysiska hårdvarudimensioner, strömförbrukning och operationsgenomströmning. Dessa kan sammanfattas i tre kategorier: uppgiftseffektivitet, implementeringseffektivitet och flexibilitet. Lämpliga mätvärden tar hänsyn till hårdvarans yta tillsammans med både motsvarande operationsgenomströmning och energiförbrukning.
Ansökningar
Exempel på hårdvaruacceleration inkluderar bitblit- accelerationsfunktionalitet i grafikprocessorer (GPU), användning av memristorer för att accelerera neurala nätverk och reguljära uttrycks -hårdvaruacceleration för spamkontroll i serverindustrin , avsedd att förhindra attacker med reguljärt uttryck för denial of service (ReDoS). Hårdvaran som utför accelerationen kan vara en del av en generell CPU, eller en separat enhet som kallas hårdvaruaccelerator, även om de vanligtvis hänvisas till med en mer specifik term, som 3D-accelerator eller kryptografisk accelerator .
Traditionellt var processorer sekventiella (instruktioner exekveras en efter en) och designades för att köra generella algoritmer kontrollerade av instruktionshämtning ( till exempel att flytta tillfälliga resultat till och från en registerfil ). Hårdvaruacceleratorer förbättrar exekveringen av en specifik algoritm genom att tillåta större samtidighet , ha specifika datavägar för deras temporära variabler och minska omkostnaderna för instruktionskontroll i cykeln hämta-avkoda-kör.
Moderna processorer har flera kärnor och har ofta parallella "single-instruction; multiple data" ( SIMD ) enheter. Trots det ger hårdvaruacceleration fortfarande fördelar. Hårdvaruacceleration är lämplig för alla beräkningskrävande algoritmer som exekveras ofta i en uppgift eller ett program. Beroende på granulariteten kan hårdvaruaccelerationen variera från en liten funktionell enhet till ett stort funktionellt block (som rörelseuppskattning i MPEG-2 ).
Hårdvaruaccelerationsenheter efter applikation
Ansökan | Hårdvaruaccelerator | Akronym |
---|---|---|
Datorgrafik
|
Grafikbehandlingsenhet
|
GPU
|
Digital signalbehandling | Digital signalprocessor | DSP |
Analog signalbehandling | Fältprogrammerbar analog array | FPAA
|
Ljudbearbetning | Ljudkort och ljudkortsmixer | N/A |
Datornätverk
|
Nätverksprocessor och nätverksgränssnittskontroller | NPU och NIC
|
Kryptografi | Kryptografisk accelerator och säker kryptoprocessor | N/A |
Artificiell intelligens | AI-accelerator | N/A
|
Multilinjär algebra | Tensor bearbetningsenhet | TPU |
Fysik simulering | Fysisk bearbetningsenhet | PPU |
Vanliga uttryck | Reguljärt uttryck coprocessor | N/A |
Datakomprimering | Datakomprimeringsaccelerator | N/A |
Bearbetning i minnet | Nätverk på ett chip och systolisk array | NoC; N/A |
Databehandling | Databehandlingsenhet | DPU |
Vilken datoruppgift som helst | Datorhårdvara
|
HW (ibland)
|
Se även
- Coprocessor
- DirectX Video Acceleration (DXVA)
- Direkt minnesåtkomst (DMA)
- Syntes på hög nivå
- Mjuk mikroprocessor
-
Flynns taxonomi av parallella datorarkitekturer
- En instruktion, flera data (SIMD)
- Enkel instruktion, flera trådar (SIMT)
- Flera instruktioner, flera data (MIMD)
- Dator för operationer med funktioner
externa länkar
- Media relaterade till hårdvaruacceleration på Wikimedia Commons