Accelerator vs coprocessor i SoC eller APU: skillnader och likheter

Idag är vilken processor som helst en komplex sammansättning av olika typer av kärnor som antingen hanterar huvuddelen av arbetet, utför specialiserade uppgifter eller samarbetar med varandra för att uppnå bästa möjliga resultat när de utför de olika processerna. Det finns i alla fall skillnader mellan vad som är en accelerator och en coprocessor som stödkärnor. Läs vidare för att förstå vad de är.

Accelerator vs coprocessor i SoC eller APU

Det är mycket tydligt att a CPU inte kan göra jobbet själv, det finns vanliga operationer som en dator utför kontinuerligt där en generell processor inte är effektiv, men först och främst bör vi förstå vad detta innebär och varför de är nödvändiga. stödchips.

När man designar en ny arkitektur finns det en rad parametrar som markerar gränserna som ingenjörer inte bör överskrida, inklusive saker som vilken typ av bibliotek som används för designen, hur mycket chipet kommer att förbruka, vad kommer det att vara? dess storlek, men speciellt vilka vanliga problem den försöker lösa med den nya processorn. Det är vid denna punkt där inte bara huvudenheterna definieras, utan även samprocessorerna och acceleratorerna som kommer att ingå i det.

De första stödprocessorerna som placeras i en arkitektur är lätta att belysa, vanligtvis de som har designats för tidigare arkitekturer av samma märke eller, om inte det, de som har licensierats till tredje part. De senare föds å andra sidan under utvecklingen, som ett resultat av kundförfrågningar eller på grund av den typ av problem som ska lösas som kräver en ny typ av hårdvaruenhet.

Vad är en samprocessor?

Coprocesador x87

Även om betecknaren är självförklarande, är det viktigt att komma ihåg att om vi har flera kärnor som arbetar tillsammans för att lösa samma problem som är gemensamt för distribuerade delar, så talar vi om att var och en av processenheterna agerar i sambearbetning med andra. . Och ja, vi vet vad du har tänkt på, men när vi har flera kärnor i en CPU som tar itu med ett specifikt problem, talar vi om att de som inte kör huvudprocessen fungerar som andras medprocessorer.

Stödchips har traditionellt kallats samprocessorer, även om den mest kända samprocessorn i datorns historia är den matematiska samprocessorn, som inte var något annat än vad som senare skulle bli flyttalsenheten eller FPU:n som var totalt frikopplad från huvudprocessorn. Således saknar samprocessorn i allmänhet en process för att fånga instruktioner från minnet, utan behöver snarare en annan processor för att skicka instruktionerna och data som ska behandlas. Samprocessorns arbete? Lös den delen av programmet och returnera resultatet så snabbt som möjligt till värdprocessorn.

Under den tid som samprocessorn är ansvarig för att utföra sitt arbete kan huvudkärnan använda kraften den har fått för att utföra andra uppgifter, men eftersom en process exekveras tillsammans kommer den punkt att den inte kommer att kunna att fortsätta tills samprocessorn eller samprocessorerna har slutfört den uppgift som tilldelats dem.

Vad är en accelerator?

Accelerador hårdvara

Tekniskt sett är en accelerator en samprocessor, men med större oberoende än dessa eftersom de inte är ansvariga för att utföra en process som helhet, utan de tilldelas en hel process som CPU:n helt ignorerar förutom för att få slutresultatet eller för att veta att uppgiften är klar.

Eftersom en accelerator är helt frikopplad från processorn är den helt asynkron med den. Vad menar vi? Det faktum att en accelerator i motsats till en coprocessor inte fungerar i kombination med systemets huvudprocessor. Detta gör att du kan snabba upp din del av koden, vilket innebär att du slutför den i mycket högre hastighet och därför på kortare tid. Detta kräver förstås stora förändringar i arkitekturen.

Först och främst kan en samprocessor dela delar av styrenheten och till och med registrera eller komma åt ett gemensamt minne med CPU:n. När alla dessa element delas kan de skapa trängsel när det gäller åtkomst till dem, vilket gör att en eller annan enhet stoppas i väntan på att använda dessa resurser. Som du förstår kan detta inte hända i en accelerator, så dess data och instruktioner trots att de tillhandahålls av processorn är designade för att vara tillgängliga för dig 100 % av tiden, det är därför många acceleratorer är kompletta processorer som har sina egna lokala RAM inuti.

Om en accelerator är bättre, varför används en samprocessor?

Portada Alternativa Processador

Vi har sagt det under inledningen av denna artikel, allt har att göra med den budget som arkitekter har när de implementerar lösningen på ett problem och en sak som vanligtvis inte tas med i beräkningen är kommunikationsinfrastrukturerna mellan de olika elementen, samt enheterna som är en del av instruktionscykeln för varje processor, men som inte är ansvariga för att bryta siffror i hög hastighet.

På marknadsföringsnivå är det mycket lätt att sälja kraften hos en processor i siffror, dessa är lätta att förstå av människor som kan göra en ordinarie eller kardinal jämförelse från nämnda data. Verkligheten är att nuförtiden är infrastrukturen i vilken processor som helst det som tar upp mest utrymme och det är därför beslutet att implementera något i form av en samprocessor eller accelerator bara tas på grund av dessa begränsningar.

Ett exempel är Tensor Cores och NVIDIAs NVDLA-enhet, båda tjänar samma syfte, men medan de förra är en samprocessor inom shader-enheten som delar register och kontrollenhet med resten av GPU shader enhet, i fallet med den andra är en processor själv. Inte överraskande står förkortningen DLA för Deep Learning Accelerator.