Versnellers, architectuur en werking van coprocessors

Als het om hardwarenieuws gaat, stoppen we elke dag met het lezen en luisteren naar informatie over CPU's, GPU's en zelfs de laatste tijd speciale AI-processors. Maar ze zijn niet de enige bestaande processors in nieuwe apparaten, of het nu een conventionele pc of een PostPC-apparaat is. Ze gaan eerder vergezeld van andere processors die als ondersteuning dienen, die algemeen bekend staan ​​als accelerators. We gaan erover praten in deze post.

Onze computers voeren voortdurend gelijktijdige en repetitieve taken uit die niet worden uitgevoerd door de CPU of de GPU, maar door eenheden die vaak onopgemerkt blijven als we het hebben over de verschillende hardware-architecturen en waarover we het hierna zullen hebben.

Versnellers

De eerste accelerator in de geschiedenis

In de jaren zestig bedacht een van de pioniers op het gebied van computergraphics, Ivan Sutherland, het concept "Wheel of Reincarnation" om een ​​fenomeen te verklaren dat zelfs vandaag de dag in de wereld van hardware heeft plaatsgevonden.

DEC-PDP-1

De computers van die tijd lieten hun rudimentaire grafische afbeeldingen zien op de oscilloscoop die ze gebruikten als scherm en moesten de X- en Y-coördinaatwaarden laden waar de elektronenbundel moest worden geplaatst en het traceercommando verzenden. Het probleem dat ze tegenkwamen, is dat de CPU elke keer moest zorgen voor het tekenen van het scherm, los van het uitvoeren van het programma.

De oplossing van Sutherland en zijn team was wat ze 'Display List' noemden, wat een apart stuk hardware was dat de schermcoördinaten leest die door de processor op een deel van het scherm zijn geschreven. Op deze manier hoefde de processor geen tijd te verspillen aan het besturen van de elektronenstraal van de oscilloscoop of een ander type scherm dat werd gebruikt, de eerste versneller in de geschiedenis werd ermee geboren.

Sutherland-schetsblok

De ontwikkeling van de Display List als ondersteunende hardware diende voor de creatie van het eerste tekensysteem, het Sketchpad, en vanuit die ervaring publiceerde Sutherland een paper getiteld 'On the design of Display Processors' waarin hij tot de conclusie kwam dat ondanks de groeiende Processor het benodigde vermogen om ondersteunende processors te bouwen om specifieke taken die continu en herhaaldelijk worden uitgevoerd, te versnellen.

Basisdefinitie van wat een accelerator is

Versnelling Coche

Als we het hebben over versnelling, bedoelen we het verhogen van de snelheid waarmee we een afstand in een bepaalde tijd afleggen. In de hardwarewereld noemen we elk type eenheid versneller dat presteert een specifieke baan sneller en meer efficiënt dan een complexe processor: CPU, GPU, etc. Parallel hieraan.

Elke accelerator voldoet aan de volgende twee voorwaarden:

  • Het neemt een ruimte in de hardware in die verschillende ordes van grootte is kleiner in gebied vergeleken met een complexe processor.
  • Haar energieverbruik , bij het uitvoeren van deze taak, is minuscule vergeleken met een CPU.

Dat wil zeggen, de versnellers winnen door een aardverschuiving in de verhouding vermogen / oppervlakte en vermogen / verbruik van elke processor voor algemeen gebruik. Daarom worden ze in alle soorten processors gebruikt.

Voorbeelden van versnellers

CPU-communicatie

We hebben verschillende voorbeelden van versnellers in onze computersystemen:

  • Wanneer u een foto maakt met uw mobiele telefoon en het wordt een bestand in de opslag, wordt het proces van het converteren van de afbeelding die is vastgelegd met de CCD van de camera uitgevoerd door een daarvoor ontworpen versneller.
  • Wanneer u een film in een specifiek videoformaat afspeelt, is degene die het bestand decodeert om het om te zetten in die opeenvolging van afbeeldingen een versneller.
  • In de wereld van GPU's zijn eenheden zoals die verantwoordelijk zijn voor het filteren van texturen, het rasteren van scènegeometrie en zelfs kruispunteenheden in Ray Tracing versnellers.

Zoals u kunt zien, worden ze gebruikt voor allerlei toepassingen, soorten computers en processors.

Vaste functie versus versnellers voor specifieke doeleinden

Functie Fija

A vaste functie-eenheid heeft zijn microbedrade instructies, dit betekent dat het een programma niet op een conventionele manier volgt, maar wat het doet is dat het, van sommige invoergegevens, ze op die enige bepaalde manier verwerkt en een resultaat produceert.

Hoewel in het verleden vaste functie-eenheden werden gebruikt om bepaalde onkruiden te versnellen, zijn deze nu in onbruik, terwijl versnellers voor specifieke doeleinden steeds vaker worden gebruikt,

Versneller Propósito Específico

Versnellers voor specifieke doeleinden zijn anders omdat ze dat doen voer een programma uit , maar ze zijn ontworpen om dat programma zo efficiënt mogelijk uit te voeren en zijn exclusief ontworpen om dat specifieke type taak uit te voeren. Ze hebben dus een besturingseenheid en een ALU zoals elke processor en ze voeren een programma in het geheugen uit.

Het voordeel dat versnellers voor specifieke doeleinden hebben ten opzichte van de vaste functie, is dat de lijst met instructies die ze uitvoeren om de genoemde taak uit te voeren, kan worden bijgewerkt, terwijl dit in de vaste functie niet kan en het zou nodig zijn om een ​​geheel nieuwe processor te maken om verbeteringen toe te voegen. in het algoritme dat ze uitvoeren.

Algemene architectuur van versnellers voor specifieke doeleindenCPU-microscoop

We gaan er niet een voor een over praten, maar we gaan er wel over praten hoe allemaal zijn ontworpen in het algemeen en waarom ze zo efficiënt zijn bij het uitvoeren van de taken waarvoor ze zijn ontworpen, hiervoor gaan we een voor een uitleggen de verschillende pijlers die dit type eenheid definiëren, ongeacht het doel waarvoor ze dienen en waarvoor ze zijn ontworpen.

Eerste pijler: specialisatie

Ingeniero Oblea

Bij het ontwerpen van de uitvoeringseenheden van de CPU's, de ALU's, moeten de architecten een compromis sluiten in het licht van de meest complexe instructies, aangezien het door gebrek aan ruimte op de chip eenvoudigweg niet mogelijk is om alle instructies in de ALU te bedraden. . Dus de toezegging die ze bij het ontwerp doen, is om de meer complexe instructies van andere, eenvoudigere instructies uit te voeren.

Wanneer een instructie is opgedeeld in eenvoudigere instructies, is wat we doen dat het capture-decode-uitvoeringsproces wordt uitgevoerd voor elk van deze instructies.

Energie verbruikt veel

Het zijn juist de stappen van het vastleggen en decoderen van de instructies die de meeste energie verbruiken, veel verder dan het simpele feit dat de instructie zelf in de ALU wordt uitgevoerd.

Bij accelerators worden deze complexe instructies zodanig in de hardware geïntegreerd dat ze ver in de accelerator worden uitgevoerd minder instructies dan in een CPU. Deze vermindert het aantal toegangen gemaakt in het geheugen voor het vastleggen en daaropvolgend decoderen, wat een veel lager energieverbruik en elimineert latentie tussen instructies , waardoor het proces van uitvoering ervan wordt versneld.

Tweede pijler: complexiteit van de gebruikte data

Consumo Energie-ALU

Afhankelijk van het type uitvoeringseenheid dat wordt gebruikt, zal het verbruik hoger of lager zijn, het is niet het type gegevens maar het type ALU dat het verbruikt. Wat gebeurt er als we een 8-bits som berekenen in een 32-bits ALU? Dan is het stroomverbruik dat van een 32-bit ALU en niet dat van een 8-bit ALU.

Er zijn problemen die vereisen geen hoge wiskundige precisie op te lossen betekent dit dat ze kunnen worden opgelost met ALU's met eenvoudigere precisie , die bezetten minder ruimte en verbruiken minder . Daarom kan ook een groter aantal ALU's worden geplaatst om deze specifieke taken uit te voeren, waardoor het rekenvermogen per klokcyclus toeneemt.

Er moet rekening mee worden gehouden dat de ALU's van complexe processoren zoals CPU's breed moeten zijn om instructies met zeer nauwkeurige gegevens zo snel mogelijk uit te kunnen voeren, maar dit is een tegenhanger voor taken waarbij met minder precisie moet worden gewerkt en die veel meer consumeren dan ze zouden moeten.

Derde pijler: geheugen

Consumo Memoria

Een andere reden waarom ze zo weinig consumeren en parallel kunnen werken, is omdat elke versneller heeft zijn eigen geheugen , wat geen cache is, maar een RAM geheugen in het gaspedaal dat is er exclusief voor.

De accelerator heeft niet de mogelijkheid om iets in het systeem-RAM uit te voeren, heeft er geen toegang toe en vereist een andere schijf om de gegevens op te halen of aan u door te geven door deze naar uw computer te kopiëren. privé RAM . Houd er rekening mee dat het energieverbruik bij het openen van een geheugen hoe meer extern het is naar de eenheid die de instructie uitvoert, en hoe meer energie het verbruikt vanwege het feit dat het een grotere afstand aflegt.

Afstand Consumo

Daarom zijn de versnellers zo ontworpen dat ze gebruik het systeemgeheugen niet maar exclusief voor henzelf, bovendien vereenvoudigt het feit dat ze de datapaden niet hoeven te creëren zodat ze continu toegang hebben tot het geheugen, het algemene ontwerp van processors aanzienlijk.

De toekomst van accelerators

Snellere Futuro

As De wet van Moore vertraagt, we vinden dat het oude paradigma gebaseerd op het verhogen van de prestaties met een groter aantal cores of met complexere architecturen steeds minder levensvatbaar is. Dit dwingt ingenieurs om manieren te bedenken om processors sneller te maken dan de vorige de ontwikkeling van versnellers om specifieke taken die gelijktijdig worden uitgevoerd, te versnellen.

In de toekomst zal de prestatieverschillen tussen twee architecturen die op papier identiek zullen lijken, zullen uitsluitend te wijten zijn aan de werking van versnellers. We gaan zelfs zien hoe de processors uiteindelijk versnellers krijgen om bepaalde soorten instructies uit te voeren die traditioneel in dezelfde CPU werden uitgevoerd.