Hebben we echt zoveel xPU's nodig?

Update: 17 november 2021

"In de afgelopen jaren zijn er bijna elke dag aankondigingen gedaan over nieuwe processorarchitecturen, met een drieletterig acroniem - TPU, IPU, NPU. Maar wat onderscheidt hen nu echt? Zijn er echt zoveel unieke processorarchitecturen, of is er iets anders gebeurd?

"

In de afgelopen jaren zijn er bijna elke dag aankondigingen gedaan over nieuwe processorarchitecturen en is er een drieletterig acroniem-TPU, IPU, NPU gegeven. Maar wat onderscheidt hen nu echt? Zijn er echt zoveel unieke processorarchitecturen, of is er iets anders gebeurd?

In 2018 gaven John L. Hennessy en David A. Patterson een Turing-lezing getiteld “The New Golden Age of Computer Architecture”. Ze maken zich zorgen over de CPU en de ontwikkeling ervan, maar dit is slechts een klein deel van het hele verhaal. Arteris IP-onderzoeker en systeemarchitect Michael Frank zei: “Vanuit CPU-perspectief zijn de meeste van deze xPU’s geen echte processors.” “Ze lijken meer op een GPU, een accelerator voor speciale workloads. En ze hebben veel diversiteit binnenin. Machine learning is een soort processor, je kunt ze gezamenlijk machine learning-versnellers noemen, maar ze versnellen het verwerkingsgedeelte van een verscheidenheid aan.”

De essentie van de processor kan in drie dingen worden samengevat. "Uiteindelijk keert het terug naar de instructiesetarchitectuur (ISA)", zegt Manuel Uhm, directeur chipmarketing bij Xilinx. “Dit bepaalt wat je wilt doen. Dan heb je I/O en geheugen, die de ISA ondersteunen en de taken die deze probeert te volbrengen. Dit zal een zeer interessante tijd worden in de toekomst, omdat we meer dan de afgelopen twee of drie jaar tijd zullen zien voor meer innovatie en verandering.”

Veel nieuwe architecturen zijn geen enkele processors. “Wat we zien is een combinatie van verschillende soorten processors of programmeerbare motoren die in dezelfde SoC of hetzelfde systeem bestaan”, zegt Pierre-Xavier Thomas, Group Director van Cadence Technologie en strategische marketing. “Verdeel softwaretaken naar verschillende hardware of flexibele programmeerbare motoren. Alle processors kunnen een gemeenschappelijke API delen, maar het uitvoeringsdomein zal anders zijn. Je ziet hier inderdaad verschillende soorten verwerkingen met verschillende soorten kenmerken.”

De realiteit is dat de meeste namen marketing zijn.

“Het punt is dat mensen deze namen en acroniemen voor twee verschillende doeleinden gebruiken”, zegt Simon Davidmann, CEO van Imperas Software. “Eén wordt gebruikt om de architectuur van de processor uit te leggen, zoals SIMD (Single Instruction Multiple Data). De andere definieert het applicatiesegment waarop het zich richt. Het kan dus de processorarchitectuur definiëren, of zoiets als een tensor processing unit (TPU) merknamen. Ze noemen hun heterogene of homogene architecturen, niet individuele processors.”

Een beetje geschiedenis

Veertig jaar geleden was alles veel eenvoudiger. In die tijd was er een centrale verwerkingseenheid (CPU) en daar waren veel varianten van, maar het waren in feite allemaal Turing-complete processors met von Neumann-architectuur. Elk heeft een andere instructieset waardoor ze efficiënter zijn voor bepaalde taken, en er is veel discussie over de relatieve voordelen van de complexe instructieset (CISC) en de verminderde instructieset (RISC).

De opkomst van RISC-V heeft veel aandacht voor ISA gebracht. "Mensen willen ISA begrijpen omdat het ISA is die definieert hoe geoptimaliseerd de processor is voor gedefinieerde taken", zegt Uhm van Xilinx. “Ze kunnen de ISA bekijken en de rekencyclus starten. Als een ISA eigen instructies heeft en op 1 GHz draait, kan ik deze vergelijken met een ISA van een andere processor, waarvoor mogelijk twee instructies nodig zijn voor dezelfde functie, maar de processor werkt op 1.5 GHz. Welke brengt mij verder? Ze voeren wiskundige berekeningen uit voor belangrijke functies.”

Er zijn meerdere verpakkingsmethoden voor CPU's. Soms worden IO of geheugen in hetzelfde pakket geplaatst. Ze worden microcontroller-eenheden (MCU's) genoemd.

Toen modems populair werden, verschenen digitale signaalprocessors (DSP's), en hun verschil was dat ze Harvard-architectuur gebruikten. Dit scheidt de commandobus van de databus. Sommigen van hen hebben ook een SIMD-architectuur geïmplementeerd om de gegevensverwerking efficiënter te maken.

De scheiding van instructies en gegevens is bedoeld om de doorvoer te verbeteren, hoewel het bepaalde randprogrammering beperkt die kan worden uitgevoerd, zoals zelfgeschreven programma's. "Meestal zijn randvoorwaarden geen berekeningen", zei Uhm. “Het is steeds meer I/O of geheugen. De industrie verschuift van het vergroten van de rekenkracht naar het garanderen dat er voldoende gegevens zijn om de rekenkracht en de prestaties op peil te houden.”

Wanneer een enkele processor niet meer sneller wordt, verbinden ze meerdere processors met elkaar. Deze processors delen gewoonlijk het geheugen en handhaven het concept van Turing-volledigheid voor elke processor en het gehele processorcluster. Het maakt niet uit op welke kern een deel van het programma wordt uitgevoerd, want het resultaat is hetzelfde.

De volgende belangrijke ontwikkeling is de grafische verwerkingseenheid (GPU), die de conventie doorbrak omdat elk verwerkingselement of elke pijplijn zijn eigen geheugen heeft en niet buiten de processor kan worden aangesproken. Omdat het geheugen beperkt is, betekent dit dat het geen willekeurige verwerkingstaken kan uitvoeren, maar alleen taken kan uitvoeren die in de beschikbare geheugenruimte kunnen worden geplaatst.

“Voor bepaalde soorten functies zijn GPU’s zeer krachtige processors, maar hun pijplijnen zijn erg lang”, benadrukt Uhm. “Deze pijplijnen zorgen ervoor dat de GPU-eenheid continu gegevens kan verwerken, maar op een gegeven moment zal het een enorme klap zijn als je de pijplijn moet vernieuwen. Er is veel latentie en onzekerheid in het systeem ingebouwd.”

Hoewel er veel andere versnellers zijn gedefinieerd, hebben GPU's - en later GPU's voor algemene doeleinden (GPGPU's) - een programmeerparadigma en een softwarestack gedefinieerd die ze gemakkelijker te gebruiken maakten dan eerdere versnellers. “Jarenlang zijn bepaalde banen gespecialiseerd”, zegt Davidmann van Imperas. “Er is een CPU voor sequentiële programma’s. Er is een grafische processor, die zich richt op het verwerken van gegevens voor de scherm en brengt ons in een zeer parallelle wereld. Gebruikt veel kleine verwerkingselementen om taken uit te voeren. Nu zijn er machine learning-taken.”

Welke andere constructieregels kunnen alle nieuwe architectuur verklaren? In het verleden waren processorarrays meestal verbonden door geheugen of vaste netwerktopologieën (zoals mesh of ring). Wat recentelijk naar voren is gekomen, is de combinatie van Network on Chip (NoC), waarmee gedistribueerde heterogene processors op een flexibelere manier kunnen communiceren. In de toekomst kunnen ze ook communiceren zonder geheugen te gebruiken.

“Op dit moment transporteert NoC alleen data”, zegt Frank van Arteris. “In de toekomst kan NoC worden uitgebreid naar andere gebieden waar de communicatie tussen versnellers verder gaat dan alleen data. Het kan opdrachten verzenden, meldingen verzenden, enz. De communicatievereisten van de acceleratorarray kunnen verschillen van de communicatievereisten van de CPU of standaard SoC. Het netwerk op de chip beperkt u echter niet tot een subset. Je kunt de prestaties optimaliseren en verbeteren door de speciale communicatiebehoeften van accelerators te ondersteunen.”

Implementatie architectuur

Een manier van processordifferentiatie is om te optimaliseren voor een specifieke besturingsomgeving. De software kan bijvoorbeeld in de cloud draaien, maar je kunt dezelfde software ook uitvoeren op een micro-IoT-apparaat. De implementatiearchitectuur zal heel anders zijn en verschillende werkpunten bereiken in termen van prestaties, stroomverbruik, kosten of het vermogen om onder extreme omstandigheden te werken.

"Sommige toepassingen zijn bedoeld voor cloud computing, en nu brengen we ze dichter bij de rand", zegt Thomas van Cadence. “Dit kan te wijten zijn aan latentievereisten, of aan energie- of stroomdissipatie, waarvoor een ander type architectuur nodig is. Misschien wilt u exact dezelfde softwarestack hebben om op twee locaties te kunnen draaien. De cloud moet flexibiliteit bieden omdat deze verschillende soorten applicaties kan ontvangen en een groot aantal gebruikers moet kunnen samenbrengen. Dit vereist dat de hardware op de server applicatiespecifieke mogelijkheden heeft, maar één maat is niet voor iedereen geschikt.”

ML heeft zijn eigen eisen verhoogd. “Wanneer je neurale netwerken en machinaal leren gebruikt om intelligente systemen te bouwen, moet je softwareframeworks en algemene softwarestacks gebruiken om het nieuwe netwerk te programmeren en aan de hardware toe te wijzen”, voegde Thomas eraan toe. “Dan kun je vanuit PPA-perspectief de softwareapplicatie aanpassen aan de juiste hardware. Dit drijft de behoefte aan verschillende soorten verwerkingen en processors om aan deze behoeften op hardwareniveau te kunnen voldoen.”

Deze eisen worden gedefinieerd door de applicatie. “Een bedrijf heeft een processor ontwikkeld voor grafische bewerkingen”, zei Frank. “Ze optimaliseren en versnellen het volgen van grafieken en voeren bewerkingen uit zoals het herschikken van grafieken. Er zijn nog andere brute krachten die machinaal leren versnellen, namelijk matrixvermenigvuldiging. Geheugentoegang is voor elke architectuur anders. Het is een speciaal probleem, want als je een accelerator bouwt, is het belangrijkste doel om hem bezig te houden. Je moet zoveel mogelijk data overbrengen naar de ALU, omdat die geconsumeerd en geproduceerd kunnen worden.”

Veel van deze toepassingen hebben veel gemeen. “Ze hebben allemaal een lokaal geheugen, ze hebben een netwerk op een chip om te communiceren, en elke processor die een software-algoritme uitvoert, verwerkt een klein stukje gegevens”, aldus Davidmann. “Deze taken worden gepland door besturingssystemen die op meer traditionele CPU’s draaien.”

Het lastige voor hardwareontwerpers is het voorspellen welke taken ze moeten uitvoeren. “Hoewel je in sommige lagen vergelijkbare soorten operaties zult uitvoeren, letten mensen op de differentiatie in de lagen”, zei Thomas. “Om een ​​neuraal netwerk te kunnen verwerken, zijn verschillende soorten verwerkingskracht nodig. Dit betekent dat je een deel van het neurale netwerk op de een of andere manier moet kunnen verwerken, en dat je dan misschien een ander type bewerking nodig hebt om een ​​andere laag te verwerken. Databeweging En ook de hoeveelheid data verandert laag voor laag.”

Deze differentiatie kan verder gaan dan het verplaatsen van gegevens. “Voor genoomsequencing moet je wat verwerking doen,” zei Frank. “Maar je kunt niet één enkel type versneller gebruiken om alles te versnellen. Je moet een hele reeks verschillende versnellers bouwen voor verschillende pijpleidingen. De CPU wordt de bewaker van het managementuitvoeringsproces. Het zet DMA op, voert het uit en zorgt voor de besluitvorming tussen de twee processen. Het begrijpen en analyseren van algoritmen en het definiëren hoe je de verwerking ervan wilt optimaliseren, is een complete architectonische taak.”

Een deel van het proces vereist partitionering. “Er is geen enkel processortype dat voor elke processortaak kan worden geoptimaliseerd.FPGA is niet goed, CPU is niet goed, GPU is niet goed, DSP is ook noodzakelijk”, zei Uhm. “We hebben een reeks apparaten gemaakt die deze allemaal bevatten, maar het moeilijke aan de klantkant is dat ze intelligentie moeten bieden om te bepalen welke delen van het totale systeem gericht zullen zijn op de processor of programmeerbare logica, of op de AI. motor. Iedereen wil die automatische magische tool, een tool die onmiddellijk kan beslissen om het op de CPU te plaatsen, op de FPGA en op de GPU. Dat instrument bestaat vandaag niet.”

Niettemin zal de CPU altijd een rol spelen. “De CPU is nodig om onregelmatige delen van het programma uit te voeren”, zegt Frank. “De algemene programmeerbaarheid van de CPU heeft zijn voordelen. Als je gespecialiseerde datastructuren of wiskundige bewerkingen hebt, zal het niet goed werken. De CPU is een processor voor algemene doeleinden en is nergens voor geoptimaliseerd. Het is nergens goed in. .”

Verander "abstract"

In het verleden werd de hardware/software-grens bepaald door de ISA en was het geheugen continu adresseerbaar. Als er meerdere processors zijn, zijn deze meestal op het geheugen afgestemd.

“Consistentie is een contract”, zei Frank. “Dit soort consistentie is erg belangrijk en zal niet verdwijnen. Maar je kunt je voorstellen dat consistentie in een dataflow-engine niet zo belangrijk is, omdat je de gegevens die zich aan de rand bevinden rechtstreeks van de ene accelerator naar de andere overbrengt. Als u de dataset opdeelt, wordt consistentie een obstakel omdat het u extra cycli kost. U moet de informatie controleren. U moet bijgewerkte informatie verstrekken.”

Dit vereist een andere geheugenarchitectuur. "Je moet nadenken over de geheugenstructuur, omdat je maar een beperkt aantal nauw gekoppelde herinneringen hebt", zei Uhm. “Je hebt toegang tot aangrenzend geheugen, maar je zult snel geen aangrenzend geheugen meer hebben en kan niet op tijd worden benaderd. Dit moet in het ontwerp worden begrepen. Naarmate de tool volwassener wordt, zal de tool meer leren. Tegenwoordig wordt het gedaan door menselijke intelligentie, die in staat is de architectuur te begrijpen en toe te passen.”

Er is ook een hoger abstractieniveau nodig. “Sommige raamwerken kunnen bekende netwerken in kaart brengen of compileren om zich op hardware te richten”, aldus Thomas. “Je hebt een set kernels of API’s op laag niveau die zullen worden gebruikt in de softwarestack en uiteindelijk zullen worden gebruikt door de mapper van het neurale netwerk. Hieronder kunt u verschillende soorten hardware hebben, afhankelijk van wat u wilt bereiken, afhankelijk van uw productgegevens. Het bereikt dezelfde functionaliteit, maar gebruikt niet dezelfde hardware of dezelfde PPA-trade-offs.”

Dit legt een grote druk op die compilers. “De belangrijkste vraag is: hoe programmeer je de versneller in de toekomst?” vroeg Frank. “Heb je een hardwired engine geïmplementeerd, zoals de eerste generatie GPU’s? Of heb je een kleine programmeerbare engine gebouwd met je eigen instructieset? Nu moet je deze dingen afzonderlijk programmeren en erin plaatsen. Elk van hen is verbonden met de gegevensstroom om taken uit te voeren. De ene processor heeft een bepaalde subset van de gehele instructieset, en de andere processor heeft een andere subset, en ze zullen allemaal enkele overlappende delen van de besturingsstroom delen. Het kan zijn dat u producten heeft met iets andere acceleratiemogelijkheden. De compiler of bibliotheken die het begrijpen, zullen dienovereenkomstig in kaart brengen.

Samenvatten

De architectuur van de processor is niet veranderd. Ze volgen nog steeds dezelfde keuzes die de afgelopen 40 jaar hebben bestaan. Wat wel verandert, is de manier waarop de chip is opgebouwd. Ze bevatten nu een groot aantal heterogene processors met geheugen en communicatie die zijn geoptimaliseerd voor een subset van applicatietaken. Elke chip maakt een andere keuze voor de processorfunctie en het optimalisatiedoel, de vereiste datadoorvoer en de datastroom die hij gewoonlijk ziet.

Elke hardwareleverancier wil zijn eigen chip onderscheiden van andere chips, maar het is veel gemakkelijker om via branding reclame te maken dan te praten over interne technische details. Dus gaven ze het een naam, noemden het de eerste, snelste en grootste, en koppelden het aan specifieke soorten applicatieproblemen. Deze drieletterige acroniemen zijn applicatietaaknamen geworden, maar ze definiëren niet de hardware-architectuur.

In de afgelopen jaren zijn er bijna elke dag aankondigingen gedaan over nieuwe processorarchitecturen, met een drieletterig acroniem - TPU, IPU, NPU. Maar wat onderscheidt hen nu echt? Zijn er echt zoveel unieke processorarchitecturen, of is er iets anders gebeurd?

In 2018 gaven John L. Hennessy en David A. Patterson een Turing-lezing getiteld “The New Golden Age of Computer Architecture”. Ze maken zich zorgen over de CPU en de ontwikkeling ervan, maar dit is slechts een klein deel van het hele verhaal. Arteris IP-onderzoeker en systeemarchitect Michael Frank zei: “Vanuit CPU-perspectief zijn de meeste van deze xPU’s geen echte processors.” “Ze lijken meer op een GPU, een accelerator voor speciale workloads. En ze hebben veel diversiteit binnenin. Machine learning is een soort processor, je kunt ze gezamenlijk machine learning-versnellers noemen, maar ze versnellen het verwerkingsgedeelte van een verscheidenheid aan.”

De essentie van de processor kan in drie dingen worden samengevat. "Uiteindelijk keert het terug naar de instructiesetarchitectuur (ISA)", zegt Manuel Uhm, directeur chipmarketing bij Xilinx. “Dit bepaalt wat je wilt doen. Dan heb je I/O en geheugen, die de ISA ondersteunen en de taken die deze probeert te volbrengen. Dit zal een zeer interessante tijd worden in de toekomst, omdat we meer dan de afgelopen twee of drie jaar tijd zullen zien voor meer innovatie en verandering.”

Veel nieuwe architecturen zijn geen enkele processors. “Wat we zien is een combinatie van verschillende soorten processors of programmeerbare motoren die in dezelfde SoC of hetzelfde systeem bestaan”, zegt Pierre-Xavier Thomas, directeur van Cadence's Technology and Strategic Marketing Group. “Verdeel softwaretaken naar verschillende hardware of flexibele programmeerbare motoren. Alle processors kunnen een gemeenschappelijke API delen, maar het uitvoeringsdomein zal anders zijn. Je ziet hier inderdaad verschillende soorten verwerkingen met verschillende soorten kenmerken.”

De realiteit is dat de meeste namen marketing zijn.

“Het punt is dat mensen deze namen en acroniemen voor twee verschillende doeleinden gebruiken”, zegt Simon Davidmann, CEO van Imperas Software. “Eén wordt gebruikt om de architectuur van de processor uit te leggen, zoals SIMD (Single Instruction Multiple Data). De andere definieert het applicatiesegment waarop het zich richt. Het kan dus de processorarchitectuur definiëren, of zoiets als een tensor processing unit (TPU) merknamen. Ze noemen hun heterogene of homogene architecturen, niet individuele processors.”

Een beetje geschiedenis

Veertig jaar geleden was alles veel eenvoudiger. In die tijd was er een centrale verwerkingseenheid (CPU) en daar waren veel varianten van, maar het waren in feite allemaal Turing-complete processors met von Neumann-architectuur. Elk heeft een andere instructieset waardoor ze efficiënter zijn voor bepaalde taken, en er is veel discussie over de relatieve voordelen van de complexe instructieset (CISC) en de verminderde instructieset (RISC).

De opkomst van RISC-V heeft veel aandacht voor ISA gebracht. "Mensen willen ISA begrijpen omdat het ISA is die definieert hoe geoptimaliseerd de processor is voor gedefinieerde taken", zegt Uhm van Xilinx. “Ze kunnen de ISA bekijken en de rekencyclus starten. Als een ISA eigen instructies heeft en op 1 GHz draait, kan ik deze vergelijken met een ISA van een andere processor, waarvoor mogelijk twee instructies nodig zijn voor dezelfde functie, maar de processor werkt op 1.5 GHz. Welke brengt mij verder? Ze voeren wiskundige berekeningen uit voor belangrijke functies.”

Er zijn meerdere verpakkingsmethoden voor CPU's. Soms worden IO of geheugen in hetzelfde pakket geplaatst. Ze worden microcontroller-eenheden (MCU's) genoemd.

Toen modems populair werden, verschenen digitale signaalprocessors (DSP's), en hun verschil was dat ze Harvard-architectuur gebruikten. Dit scheidt de commandobus van de databus. Sommigen van hen hebben ook een SIMD-architectuur geïmplementeerd om de gegevensverwerking efficiënter te maken.

De scheiding van instructies en gegevens is bedoeld om de doorvoer te verbeteren, hoewel het bepaalde randprogrammering beperkt die kan worden uitgevoerd, zoals zelfgeschreven programma's. "Meestal zijn randvoorwaarden geen berekeningen", zei Uhm. “Het is steeds meer I/O of geheugen. De industrie verschuift van het vergroten van de rekenkracht naar het garanderen dat er voldoende gegevens zijn om de rekenkracht en de prestaties op peil te houden.”

Wanneer een enkele processor niet meer sneller wordt, verbinden ze meerdere processors met elkaar. Deze processors delen gewoonlijk het geheugen en handhaven het concept van Turing-volledigheid voor elke processor en het gehele processorcluster. Het maakt niet uit op welke kern een deel van het programma wordt uitgevoerd, want het resultaat is hetzelfde.

De volgende belangrijke ontwikkeling is de grafische verwerkingseenheid (GPU), die de conventie doorbrak omdat elk verwerkingselement of elke pijplijn zijn eigen geheugen heeft en niet buiten de processor kan worden aangesproken. Omdat het geheugen beperkt is, betekent dit dat het geen willekeurige verwerkingstaken kan uitvoeren, maar alleen taken kan uitvoeren die in de beschikbare geheugenruimte kunnen worden geplaatst.

“Voor bepaalde soorten functies zijn GPU’s zeer krachtige processors, maar hun pijplijnen zijn erg lang”, benadrukt Uhm. “Deze pijplijnen zorgen ervoor dat de GPU-eenheid continu gegevens kan verwerken, maar op een gegeven moment zal het een enorme klap zijn als je de pijplijn moet vernieuwen. Er is veel latentie en onzekerheid in het systeem ingebouwd.”

Hoewel er veel andere versnellers zijn gedefinieerd, hebben GPU's - en later GPU's voor algemene doeleinden (GPGPU's) - een programmeerparadigma en een softwarestack gedefinieerd die ze gemakkelijker te gebruiken maakten dan eerdere versnellers. “Jarenlang zijn bepaalde banen gespecialiseerd”, zegt Davidmann van Imperas. “Er is een CPU voor sequentiële programma’s. Er is een grafische processor, die zich richt op het verwerken van gegevens voor het scherm en ons in een zeer parallelle wereld brengt. Gebruikt veel kleine verwerkingselementen om taken uit te voeren. Nu zijn er machine learning-taken.”

Welke andere constructieregels kunnen alle nieuwe architectuur verklaren? In het verleden waren processorarrays meestal verbonden via geheugen of vaste netwerktopologieën (zoals mesh of ring). Wat recentelijk naar voren is gekomen, is de combinatie van Network on Chip (NoC), waarmee gedistribueerde heterogene processors op een flexibelere manier kunnen communiceren. In de toekomst kunnen ze ook communiceren zonder geheugen te gebruiken.

“Op dit moment transporteert NoC alleen data”, zegt Frank van Arteris. “In de toekomst kan NoC worden uitgebreid naar andere gebieden waar de communicatie tussen versnellers verder gaat dan alleen data. Het kan opdrachten verzenden, meldingen verzenden, enz. De communicatievereisten van de acceleratorarray kunnen verschillen van de communicatievereisten van de CPU of standaard SoC. Het netwerk op de chip beperkt u echter niet tot een subset. Je kunt de prestaties optimaliseren en verbeteren door de speciale communicatiebehoeften van accelerators te ondersteunen.”

Implementatie architectuur

Een manier van processordifferentiatie is om te optimaliseren voor een specifieke besturingsomgeving. De software kan bijvoorbeeld in de cloud draaien, maar je kunt dezelfde software ook uitvoeren op micro-IoT-apparaten. De implementatiearchitectuur zal heel anders zijn en verschillende werkpunten bereiken in termen van prestaties, stroomverbruik, kosten of het vermogen om onder extreme omstandigheden te werken.

"Sommige toepassingen zijn bedoeld voor cloud computing, en nu brengen we ze dichter bij de rand", zegt Thomas van Cadence. “Dit kan te wijten zijn aan latentievereisten, of aan energie- of stroomdissipatie, waarvoor een ander type architectuur nodig is. Misschien wilt u exact dezelfde softwarestack hebben om op twee locaties te kunnen draaien. De cloud moet flexibiliteit bieden omdat deze verschillende soorten applicaties kan ontvangen en een groot aantal gebruikers moet kunnen samenbrengen. Dit vereist dat de hardware op de server applicatiespecifieke mogelijkheden heeft, maar één maat is niet voor iedereen geschikt.”

ML heeft zijn eigen eisen verhoogd. “Wanneer je neurale netwerken en machinaal leren gebruikt om intelligente systemen te bouwen, moet je softwareframeworks en algemene softwarestacks gebruiken om het nieuwe netwerk te programmeren en aan de hardware toe te wijzen”, voegde Thomas eraan toe. “Dan kun je vanuit PPA-perspectief de softwareapplicatie aanpassen aan de juiste hardware. Dit drijft de behoefte aan verschillende soorten verwerkingen en processors om aan deze behoeften op hardwareniveau te kunnen voldoen.”

Deze eisen worden gedefinieerd door de applicatie. “Een bedrijf heeft een processor ontwikkeld voor grafische bewerkingen”, zei Frank. “Ze optimaliseren en versnellen het volgen van grafieken en voeren bewerkingen uit zoals het herschikken van grafieken. Er zijn nog andere brute krachten die machinaal leren versnellen, namelijk matrixvermenigvuldiging. Geheugentoegang is voor elke architectuur anders. Het is een speciaal probleem, want als je een accelerator bouwt, is het belangrijkste doel om hem bezig te houden. Je moet zoveel mogelijk data overbrengen naar de ALU, omdat die geconsumeerd en geproduceerd kunnen worden.”

Veel van deze toepassingen hebben veel gemeen. “Ze hebben allemaal een lokaal geheugen, ze hebben een netwerk op een chip om te communiceren, en elke processor die een software-algoritme uitvoert, verwerkt een klein stukje gegevens”, aldus Davidmann. “Deze taken worden gepland door besturingssystemen die op meer traditionele CPU’s draaien.”

Het lastige voor hardwareontwerpers is het voorspellen welke taken ze moeten uitvoeren. “Hoewel je in sommige lagen vergelijkbare soorten operaties zult uitvoeren, letten mensen op differentiatie in de lagen”, zei Thomas. “Om een ​​neuraal netwerk te kunnen verwerken, zijn verschillende soorten verwerkingskracht nodig. Dit betekent dat je een deel van het neurale netwerk op de een of andere manier moet kunnen verwerken, en dat je dan misschien een ander type bewerking nodig hebt om een ​​andere laag te verwerken. Databeweging En ook de hoeveelheid data verandert laag voor laag.”

Deze differentiatie kan verder gaan dan het verplaatsen van gegevens. “Voor genoomsequencing moet je wat verwerking doen,” zei Frank. “Maar je kunt niet één enkel type versneller gebruiken om alles te versnellen. Je moet een hele reeks verschillende versnellers bouwen voor verschillende pijpleidingen. De CPU wordt de bewaker van het managementuitvoeringsproces. Het zet DMA op, voert het uit en zorgt voor de besluitvorming tussen de twee processen. Het begrijpen en analyseren van algoritmen en het definiëren hoe je de verwerking ervan wilt optimaliseren, is een complete architectonische taak.”

Een deel van het proces vereist partitionering. “Er is geen enkel processortype dat voor elke processortaak kan worden geoptimaliseerd – FPGA is niet goed, CPU is niet goed, GPU is niet goed, DSP is ook noodzakelijk”, zei Uhm. “We hebben een reeks apparaten gemaakt die deze allemaal bevatten, maar het moeilijke aan de klantkant is dat ze intelligentie moeten bieden om te bepalen welke delen van het totale systeem gericht zullen zijn op de processor of programmeerbare logica, of op de AI. motor. Iedereen wil die automatische magische tool, een tool die onmiddellijk kan beslissen om het op de CPU te plaatsen, op de FPGA en op de GPU. Dat instrument bestaat vandaag de dag niet meer.”

Niettemin zal de CPU altijd een rol spelen. “De CPU is nodig om onregelmatige delen van het programma uit te voeren”, zegt Frank. “De algemene programmeerbaarheid van de CPU heeft zijn voordelen. Als je gespecialiseerde datastructuren of wiskundige bewerkingen hebt, zal het niet goed werken. De CPU is een processor voor algemene doeleinden en is nergens voor geoptimaliseerd. Het is nergens goed voor.”

Verander "abstract"

In het verleden werd de hardware/software-grens bepaald door de ISA en was het geheugen continu adresseerbaar. Als er meerdere processors zijn, zijn deze meestal op het geheugen afgestemd.

“Consistentie is een contract”, zei Frank. “Dit soort consistentie is erg belangrijk en zal niet verdwijnen. Maar je kunt je voorstellen dat consistentie in een dataflow-engine niet zo belangrijk is, omdat je de gegevens die zich aan de rand bevinden rechtstreeks van de ene accelerator naar de andere overbrengt. Als u de dataset opdeelt, wordt consistentie een obstakel omdat het u extra cycli kost. U moet de informatie controleren. U moet bijgewerkte informatie verstrekken.”

Dit vereist een andere geheugenarchitectuur. "Je moet nadenken over de geheugenstructuur, omdat je maar een beperkt aantal nauw gekoppelde herinneringen hebt", zei Uhm. “Je hebt toegang tot aangrenzend geheugen, maar je zult snel geen aangrenzend geheugen meer hebben en kan niet op tijd worden benaderd. Dit moet in het ontwerp worden begrepen. Naarmate de tool volwassener wordt, zal de tool meer leren. Tegenwoordig wordt het gedaan door menselijke intelligentie, die in staat is de architectuur te begrijpen en toe te passen.”

Er is ook een hoger abstractieniveau nodig. “Sommige raamwerken kunnen bekende netwerken in kaart brengen of compileren om zich op hardware te richten”, aldus Thomas. “Je hebt een set kernels of API’s op laag niveau die zullen worden gebruikt in de softwarestack en uiteindelijk zullen worden gebruikt door de mapper van het neurale netwerk. Hieronder kunt u verschillende soorten hardware hebben, afhankelijk van wat u wilt bereiken, afhankelijk van uw productgegevens. Het bereikt dezelfde functionaliteit, maar gebruikt niet dezelfde hardware of dezelfde PPA-trade-offs.”

Dit legt een grote druk op die compilers. “De belangrijkste vraag is: hoe programmeer je de versneller in de toekomst?” vroeg Frank. “Heb je een hardwired engine geïmplementeerd, zoals de eerste generatie GPU’s? Of heb je een kleine programmeerbare engine gebouwd met je eigen instructieset? Nu moet je deze dingen afzonderlijk programmeren en erin plaatsen. Elk van hen is verbonden met de gegevensstroom om taken uit te voeren. De ene processor heeft een bepaalde subset van de gehele instructieset, en de andere processor heeft een andere subset, en ze zullen allemaal enkele overlappende delen van de besturingsstroom delen. Het kan zijn dat u producten heeft met iets andere acceleratiemogelijkheden. De compiler of bibliotheken die het begrijpen, zullen dienovereenkomstig in kaart brengen.

Samenvatten

De architectuur van de processor is niet veranderd. Ze volgen nog steeds dezelfde keuzes die de afgelopen 40 jaar hebben bestaan. Wat wel verandert, is de manier waarop de chip is opgebouwd. Ze bevatten nu een groot aantal heterogene processors met geheugen en communicatie die zijn geoptimaliseerd voor een subset van applicatietaken. Elke chip maakt een andere keuze voor de processorfunctie en het optimalisatiedoel, de vereiste datadoorvoer en de datastroom die hij gewoonlijk ziet.

Elke hardwareleverancier wil zijn eigen chip onderscheiden van andere chips, maar het is veel gemakkelijker om via branding reclame te maken dan te praten over interne technische details. Dus gaven ze het een naam, noemden het de eerste, snelste en grootste, en koppelden het aan specifieke soorten applicatieproblemen. Deze drieletterige acroniemen zijn applicatietaaknamen geworden, maar ze definiëren niet de hardware-architectuur.