Hur man ökar CPI för processorer, egenskaper och metoder –

I processorarkitekturernas historia har vi sett hur olika koncept har implementerats för att förbättra deras prestanda. Tillvägagångssätt som segmentering, superskalära processorer, out-of-order exekvering etc. Allt tjänar till att producera allt snabbare processorer och högre prestanda per cykel.

Konceptet med hybridkärnor är ytterligare ett steg mot att uppnå högre prestanda, det bygger på kombinationen av två typer av kärnor i en kärna, varav den ena är optimerad för komplexa instruktioner och den andra för enklare instruktioner, men på ett sådant sätt att de delar hårdvaran, samarbetar och arbetar tillsammans som om de vore en CPU-kärna.

Konceptet med hybridkärnor för att öka KPI

I en CPU är inte alla instruktioner lika komplexa, vissa kräver fler klockcykler för att utföras, och andra kräver väldigt få klockcykler eftersom de är mycket enklare. Vid utvecklingen av nya processorer har det fram till nu funnits en tendens att optimera de mest komplexa instruktionerna vad gäller antalet cykler.

Men oavsett vilken typ av instruktion som exekveras av våra CPU-kärnor, använder de alla samma komponenter under instruktionscykeln, vilket innebär att på effektnivån kan de enklaste instruktionerna inte optimeras. som inte kommer att ha lägre prestanda på en binärkompatibel processor, men med lägre strömförbrukning.

Tanken är att CPU:n har två typer av exekveringsenheter, varav några är optimerade för de mest komplexa instruktionerna och andra för de enklaste, vilket gör att du kan optimera förbrukningen av olika instruktioner.

En idé från GPU-världen

Sub-core RTX 3000 SM

I GPU:er har vi två olika typer av ALU:er, å ena sidan har vi SIMD-block som CUDA-kärnor, vilket tillverkare brukar främja när man pratar om TFLOPS-hastighet, dessa block är ansvariga för stadiet att exekvera extremt enkla instruktioner. , men å andra sidan har vi SFU, som är ALU:er med lägre beräkningshastighet eftersom de är optimerade för mer komplexa instruktioner

Tja, SFU:er skulle förbruka mycket mer ström för att utföra enkla instruktioner än SIMD-moduler, därav separationen som gjordes för många år sedan i både NVIDIA- och AMD GPU:er. När C0mpute Units kontrollenhet eller schemaläggare upptäcker ett kommando som SFU kan utföra, kopierar den helt enkelt den kommandoraden och skickar den direkt till en av SFU:erna som är gratis att exekvera.

Implementering av hybridkärnor för att öka IPC

Konceptet med CPU är inte annorlunda, instruktionens hämtningsfas kommer att vara nästan densamma i båda processorerna, så båda processorerna kommer att dela programräknaren som pekar på nästa instruktion, detta kommer att vara i slutet av hämtningsfasen, där instruktionen register läses där instruktionen kommer att skickas till en eller annan typ av kärna för att köras.

Detta innebär att båda kärnorna faktiskt kommer att vara som siamesiska tvillingar som delar en hårdvara, som delar ett av stegen i instruktionscykeln, men eftersom instruktionerna kommer att avkodas och exekveras i en separat del av båda kärnorna, ökar inte bara IPC antalet samtidiga instruktioner per klockcykel, men det förhindrar också att vissa instruktioner kommer i konflikt när resurser används.

En annan sak som den här ändringen tillåter dig att göra har att göra med att hantera instruktionerna som når processorn, vilket är förfrågningar från kringutrustning som stoppar kodexekveringen. Du kan göra kärnan optimerad för att utföra enkla instruktioner utan att stoppa andra instruktioner.

Dess inverkan på CPU-pipeline

Vi måste förstå att för närvarande är alla processorer uppdelade i flera steg på ett sådant sätt att om vi har instruktion n vid ett visst stadium, så kommer instruktion n + 1 att vara i föregående steg och n-1 i nästa. …

Omvänd tid är alltid frekvens (1 / tid = frekvens), så tricket med att öka klockfrekvensen är att minska varaktigheten för vart och ett av stegen, så vanligtvis ökar du antalet steg så att varje nytt steg varar mindre, och frekvens eller klockpulser ovan.

Uppenbarligen är att dela upp en komplex instruktion i fler instruktionscykler idealiskt för att uppnå höga klockhastigheter. Vad sägs om samma enkla? Det är en huvudvärk för arkitekter att bryta ner ännu enklare instruktioner än de är idag.

Skillnader mellan hybridkärnor och big.LITTLE

I big.LITTLE-processorn är de “stora” kärnorna separerade från de “LITTLE” kärnorna i den meningen att de fungerar på ett växlat sätt i förhållande till varandra, så det är applikationen som gör begäran till operativsystemet. en eller annan grupp av kärnor slås på.

Operationen för denna typ av kärna är att när de tar emot ett visst avbrott, avslutar de den nuvarande och skickar vittnet till den andra typen. Detta händer när arbetsbelastningen på systemet är mycket hög eller vissa villkor är uppfyllda. Tänk i alla fall på att i big.LITTLE-metoden är varje uppsättning kärnor komplett och helt oberoende.

I konceptet med hybrid ALU har vi inte helt separata kärnor, utan de separerar snarare infångningsfasen och har även tillgång till både cachehierarkin och minnet. Dessutom är den ena inte avaktiverad när den andra är igång, just för att de delar hårdvara för att komma åt minne, och vi kan inte glömma att big.LITTLE ökar inte IPC för kärnorna.

Varför ökar hybridkärnor IPC för processorer?

Anledningen är enkel: närvaron av ett större antal exekveringsenheter, liksom det faktum att utrustningen för avkodningssteget inte delas, är anledningen till att det inte finns någon vad som kallas en konflikt, detta händer när två eller flera instruktioner slåss om en resurs på ett sådant sätt att man måste vänta på att den andra är färdig.

Varför är inte processorer utformade utan detta problem? Design kan göras, men budgeten för transistorer är begränsad, varför arkitekter fuskar genom att sätta vanliga prickar i vägen. Många av de mindre arkitekturuppdateringarna är vanligtvis baserade på att undvika den här typen av konflikter genom att lägga till ytterligare interna sökvägar för att undvika konflikter.

IPC som marknadsföringsterm är inte längre antalet samtidiga instruktioner som en processorkärna kan utföra samtidigt under de bästa villkoren, termen bygger nu på att göra ett riktmärke och titta på det genomsnittliga antalet instruktioner som den utför per cykel. matar ut processorn. Det är därför det är så viktigt att undvika instruktionskollisioner, och det är därför hybridkärnor med avkodnings- och exekveringssteg separerade av kärntypen är idealiska för att öka IPC.

Vilken nuvarande processor använder hybridkärnor för att öka IPC?

Det direkta svaret är ett tydligt NEJ, ingen av de processorer som för närvarande finns på marknaden eller kommer snart kommer att använda hybridkärnor, men de kommer att baseras mer på big.LITTLE-konceptet. i vilka kärnor som kommer att användas, beroende på situationen, vilket är särskilt viktigt i IntelGen 12, som kommer att släppas om några månader.

Den vi känner till, tack vare antydningar i olika patent som publicerades förra året om att den kommer att ta hybridkärnan, är AMD, vi vet inte om den kommer att möta Zen 4 eller Zen 5. Det betyder inte att Intel och t.o.m. andra CPU-utvecklare som Apple har ännu inte implementerat dessa lösningar.

Anledningen till det? Att öka CPI kan inte fortsätta för evigt och bli mer och mer komplext att utföra, så tekniker som hybridkärnor måste användas för att öka den.

Relaterade artiklar

Back to top button