Hårdvaran för att stödja en CPU har alltid funnits där, även innan de första hemdatorerna dök upp och sedan tiden då en dator var en komplex del där en enkel CPU inte var ett enda chip, utan en TTL-chipset på ett kort. Sedan dess såg arkitekterna bakom de nya systemen att en CPU inte var effektiv för alla uppgifter som den anförtrotts.
Exemplet med högtalaren
De första persondatorerna som kom ut på marknaden var inte datorer, utan system som Commodore PET och Apple II, som var extremt rudimentära, eftersom de inte var något annat än hårdvaran för terminalen på en minidator utan anslutna till en CPU på 8 bitar, i båda fallen en MOS 6502. Var den första IBM-datorn bättre? I många avseenden ja, men inte när det gäller ljudåtergivning, eftersom den också använde en rudimentär högtalare.
I dessa första datorer fanns ingen komplex ljudhårdvara, bara en högtalare ansluten till ett 1-bitars gränssnitt styrt av CPU:n från vilken felmeddelanden gavs. Detta innebar att om någon ville göra en melodi i en av dessa processorer så behövde de ockupera hela tiden på CPU:n för att visa ljudet, eftersom den inte körde huvudprogrammet medan den styrde högtalaren. Detta ledde till att stödchips för ljudet släpptes, vilket befriade processorn från att behöva styra högtalaren och kunde återge mycket mer komplexa och mindre hårda melodier.
Exemplet med högtalaren hjälper oss att förklara varför en CPU behöver stödhårdvara, oavsett hur kraftfull den kan vara och oavsett hur banal uppgiften som ska utföras, i detta fall skicka pip till en enkel rudimentär högtalare.
Vad menar vi med supporthårdvara?
Stödhårdvara är all hårdvara som ersätter processorn när man utför en funktion av densamma. Det måste tas med i beräkningen att vi i detta helt förkastar datakommunikationsgränssnitten med minnet och kringutrustningen, som är väsentliga i grundmodellerna för en CPU oavsett dess basmodell, vare sig det är Harvard eller Von Neumann.
Stödhårdvara måste därför uppfylla dessa två krav:
- Det måste free CPU:n för en uppgift som den annars skulle behöva utföra.
- När uppgiften utförs måste den vara mer effektiv än den den ersätter i tid, förbrukning och kostnad.
- Om det är mer effektivt tidsmässigt sägs det att vi står inför ett fall av hårdvaruacceleration.
Därför bör kostnaden för stödhårdvaran när det gäller att implementera den på hårdvaran aldrig vara större än kostnaden för att köra den på CPU:n. Det är inte meningsfullt att implementera hårdvara för att göra något som en eller flera CPU-kärnor kan göra om kostnaden i transistorer är högre, inte heller om vi pratar om högre förbrukning och ännu mindre om den inte utför sitt arbete till en lägre fart.
Även om inte alltid de tre punkterna kan uppfyllas samtidigt, är ett exempel GPU:erna, som är stödhårdvara, men som har överskridit CPU:er i kostnader, eftersom vi har NVIDIA och AMD grafikprocessorer med storlekar och kvantiteter av transistorer. mycket större än de mest kraftfulla CPU:erna. GPU:er är det perfekta exemplet på att stödja hårdvara avsedd för hårdvaruacceleration.
Vad är hårdvaruacceleration?
Vi förstår som hårdvaruacceleration när en del av den är främmande, vanligtvis klarar CPU:n att utföra ett specifikt jobb på en del av den tid som CPU:n skulle göra. Det betyder att det har gjorts på kortare tid och därför har exekveringen av den delen av koden accelererats, därav namnet på hårdvaruacceleration.
Inom PC-spelvärlden var ett exempel på detta de första 3D-acceleratorerna som dök upp på marknaden. Dessa grafikkort tjänade bara till att visa 3D-grafik och krävde en VGA, men de uppnådde mycket högre bildhastigheter än att använda processorn ensam för att återge grafiken i spelen, så de utförde uppgiften att rita spelets ramar. snabbare.
Acceleration sker inte bara i fallet med CPU:er, det sker även i fallet med GPU:er där vi nyligen har sett två mycket viktiga förändringar i dem. Den första förändringen är tillägget av stödhårdvara för att påskynda beräkningen av skärningspunkten mellan strålar i Ray Tracing. Den andra förändringen är tillägget av Tensor-enheter specialiserade på inter-matrisberäkning för att påskynda AI-baserade algoritmer, som missbrukar denna typ av beräkning.
Stödhårdvara bör inte förväxlas med hårdvaruacceleration, eftersom även om det finns stödhårdvara som kan påskynda utförandet av vissa funktioner, frigör annan hårdvara endast CPU:n från en specifik uppgift till en lägre kostnad. När det gäller acceleration är kostnadsbesparingar inte huvudfaktorn utan snarare hastigheten med vilken uppgiften utförs.
Amdahls lag och hårdvaruacceleration
All kod i ett program kan delas upp i två delar:
- En seriell del, som inte kan parallelliseras och beror på kraften hos kärnan som kör den.
- En del som arbetar med flera data parallellt, som kan tilldelas flera processorer eller till och med till stödjande hårdvara
Ursprungligen fungerade många algoritmer bara på processorer, men det kom till en punkt där de insåg att det var mycket bättre att använda kapaciteten hos GPU:er för att krossa siffror parallellt. På den tiden skapades inte längre programmen för att köras på CPU:n för att köras på GPU:n för att påskynda delen av koden parallellt.
Även om programmen vi använder på våra datorer inte verkar använda sig av hårdvaruacceleration och att det är något som är begränsat till tv-spel så är det inte så. Till exempel, när du applicerar en visuell effekt i ett bildredigeringsprogram, slutar det med att den använder GPU-hårdvaran för att utföra denna uppgift snabbare. Vad vi kan säga att programmet genomgår hårdvaruacceleration.
Komplexiteten hos den stödjande hårdvaran
I takt med att processorerna har förbättrats, har även stödhårdvaran, som inte har förblivit statisk i sin design och funktionalitet över tiden. I vissa fall när en bit inte kan förbättras utöver vad som har förbättrats fram till det ögonblicket. Den hårdvaran slutar med att integreras i andra delar av hårdvara.
Eftersom tyngre applikationer ökar bearbetningskraven krävs inte bara en kraftfullare CPU, utan också högre kapacitet som stödjer hårdvara. Det faktum att inte utveckla bättre och bättre stödhårdvara är kontraproduktivt för tillverkarna av densamma, eftersom det skulle nå en punkt där CPU:n skulle vara snabbare än stödhårdvaran när de utför vissa uppgifter och detta skulle sluta vara helt värdelöst.
Ett exempel på hårdvara som blev föråldrad var blitters av vissa 16-bitars datorer, sådan hårdvara användes i grafik och dess uppgift var att kunna flytta datablock och manipulera dem i farten mycket snabbt. När processorer överträffade denna uppgift försvann de från datorer och slutade integreras i hårdvaran.
Emuleringsproblemet
När en PC emulerar ett system har den inte mycket av den ursprungliga hårdvaran till hands, så den behöver inte bara emulera dess CPU, utan också all dess stödjande hårdvara. Det är därför om vi jämför en PC med avseende på systemet den emulerar, kommer vi att upptäcka att det finns en enorm fördröjning i kraft och det är inte bara därför den måste tolka den ursprungliga hårdvarukoden, utan också CPU:n för att göra hårdvaruuppgifter för support för.
Emuleringen av gamla system är det perfekta exemplet på vad som händer när vi vill köra ett program och vi inte har den nödvändiga stödhårdvaran för att göra det. Det slutar med att vi behöver en enorm mängd CPU-kraft jämfört med den ursprungliga hårdvaran och vi slutar med ett mer ineffektivt system.
Saken är komplicerad om vi emulerar inte bara den stödjande hårdvaran, utan också de element som påskyndade exekveringen av koden bortom huvudprocessorn. De är de svåraste bitarna att efterlikna och i vissa fall används ofta hårdvaruacceleration. Till exempel renderar en stor del av de senaste konsolemulatorerna sin grafik med hjälp av systemets GPU för detta. Vilket är ett fall av hårdvaruacceleration.
Stödjer hård- och mjukvarukompatibilitet
Mjukvaran använder sig av den stödjande hårdvaran på olika sätt, antingen genom moderna DirectX-stil API:er eller på sin tid använder sig av minnesmappad I/O, som bestod av att tilldela vissa minnesadresser för kommunikation med enheterna. kringutrustning. Men som vi har sagt tidigare är hårdvaran inte statisk och utvecklas och en ny typ av hårdvara kan dyka upp som gör samma uppgift, men bryter kompatibiliteten bakåt.
Det sägs ofta att PC:n ärver totalt 40 år av bakåtkompatibilitet tack vare x86 ISA, men detta påstående är falskt. Det finns applikationer som är beroende av användningen av hårdvara som inte längre finns och det är nödvändigt att emulera eller implementera den igen. Mycket av denna hårdvara använder sig av I/O-gränssnitt som inte längre används i någon PC idag.
Hårdvaruacceleration kräver användning av API:er som kontinuerligt anropar hårdvaran, detta gör dessa program mycket beroende av den specifika hårdvaran eller hårdvaran som är kompatibel med nämnda API.
Hårdvaruacceleration för NVMe SSD:er
Vi kommer att se ett exempel på hårdvaruacceleration eller stöd för hårdvara idag med SSD-diskar när de börjar använda komprimerade dataformat för att utöka sin lagringskapacitet. En CPU är inte tillräckligt snabb för att dekomprimera den enorma mängd data som kommer att nå den tillräckligt snabbt.
När det gäller videospelskonsoler har AMD lagt till datakomprimering och dekompressionssystem som kan stödja de enorma bandbredderna på sina SSD:er. Om vi pratar om PC:n har vi redan den hårdvaran integrerad på GPU-nivå i fallet med RDNA 2 och NVIDIA RTX 2000 och RTX 3000, men i CPU:er kommer vi också att se tillägget av stödenheter. Eftersom det inte är meningsfullt att installera en NVMe SSD i PC:n, använd datakomprimering för att spara lagringsutrymme och att detta tar 2 kärnor av den centrala processorn i systemet.
För närvarande har SSD:er en fördröjning med avseende på konventionella hårddiskar vad gäller lagringskapacitet, något som kan lösas genom att använda komprimerade format, men vars dekompression kommer att kräva hög effekt som måste täckas med ett större antal kärnor CPU eller hårdvarustöd.