Hva er en koprosessor?

I hjertet av hver datamaskin finner du prosessor. De Sentralenhet er kritisk maskinvare. Den kjører operativsystemet og alle programmene på datamaskinen din. CPUer er utformet som prosessorer for generell bruk. Av natur skal de være i stand til å håndtere alt.

Imidlertid er CPU-er ikke veldig gode på noen typer arbeidsbelastninger fordi deres generelle maskinvare ikke kan optimaliseres for spesifikke oppgaver uten å miste sin generelle karakter. Eller bli håpløst stort, komplekst og dyrt. I tillegg vil enhver CPU bare være i stand til å håndtere så mye data og prosessering på en gang. En koprosessor er en andre prosessorenhet som er eksplisitt designet for å ta ett eller begge disse scenariene.

En koprosessor er ganske enkelt en andre prosessorenhet i en datamaskin. I noen scenarier kan disse være en dobbel fysisk CPU på samme hovedkort som på enkelte servere. I High-Performance Computing og supercomputing-scenarier kan disse generelle koprosessorene også finnes på PCIe-tilleggskort. Koprosessoren er ofte fokusert på en spesifikk oppgave i stedet for en generell prosessor. Disse oppgavespesifikke prosessorene kan kobles direkte til hovedkortet eller inkluderes på et separat datterkort som et PCIe-tilleggskort.

De første medprosessorene

De første koprosessorene var relativt enkle. De ble designet for å håndtere I/O eller Input and Output for stormaskiner. Problemet var at I/O-behandling var en svært tidkrevende oppgave for CPU. Selve behandlingsoppgaven var imidlertid relativt enkel. Så det var billig nok å lage en prosessor for å håndtere det. Mens koprosessoren tok I/O-en effektivt, måtte CPU-en utstede enkle I/O-parametere, frigjort prosessortid og økt systemytelsen.

Den originale IBM-PC-en inkluderte en valgfri aritmetisk medprosessor med flyttall. Datidens CPUer utførte denne typen matematikk i programvare som var treg, men funksjonell nok for de sjeldne tilfellene det var nødvendig for de fleste brukere. Imidlertid brukte datastøttet design, eller CAD-systemer, denne typen matematikk konstant. Ved å separere flytepunkt-aritmetikken på en koprosessor ble ikke bare hastighetene økt når det var nødvendig, takk til maskinvareakselerasjon, men brukere som ikke trengte det kunne spare penger ved å kjøpe et system uten koprosessor.

Til syvende og sist hadde disse enkle koprosessorene sine funksjoner integrert i CPU-arkitekturen. Dette er delvis et naturlig resultat av kontinuerlig CPU-utvikling, men er også relatert til vanskeligheter med å fortsette den enkle synkroniseringen ettersom CPU-klokkehastighetene øker. Mens disse CPU-ene og koprosessorene kjørte godt nok på 75 MHz, ville det være en massiv tidsforsinkelse, strømforbruk og problemer med radiofrekvensinterferens ved dagens GHz-frekvenser. Disse problemene nødvendiggjorde mer komplekse signalsystemer mellom CPUer og moderne koprosessorer.

GPU

GPU eller Graphics Processing Unit er sannsynligvis den mest kjente formen for koprosessoren. De er designet for å være optimalisert for den svært parallelliserbare arbeidsbelastningen ved grafikkgjengivelse. CPUer kan utføre denne oppgaven i programvare eller med en integrert grafikkbrikke. For å tilby den høye ytelsen til moderne GPU-er, må de imidlertid integrere hele GPU-dysen i CPU-matrisen.

Dette vil massivt øke kostnadene og kompleksiteten til en CPU og betydelig øke varmeproduksjonen også. Integrerte grafikkbrikker tar allerede opp en god del plass til CPU-dyse. De kan redusere den totale hastigheten til CPU-en på grunn av varmeeffekten.

Lydkort

Historisk sett kunne CPUer behandle lydsignaler, men de var ikke fantastiske på det. De resulterende lydartefakter og statisk førte til opprettelsen av lydkort. Disse vil gi lydinn- og utgangsporter og utføre selve lydbehandlingen på selve lydkortet. Dette økte signalisolasjonen og kvaliteten på lydutgangen betydelig. Mens noen lydkort fortsatt finnes, er de helt unødvendige i moderne datamaskiner som integrert lydbehandling direkte på hovedkort. CPU-er er mye bedre enn i storhetstiden til lydkort.

NPU

En relativt ny type koprosessor er NPU eller Neural Processing Unit. Disse er designet for å utføre eller akselerere AI-arbeidsbelastninger. NPU-er på et høyt nivå er ganske like GPU-er, bare med optimaliseringer som er spesifikke for AI-arbeidsbelastninger. Ettersom AI-arbeidsytelse blir mer en ting som vanlige brukere bruker på smarttelefoner og datamaskiner, vil disse sannsynligvis bli mer vanlige.

Integrerte koprosessorer

Moderne CPUer integrerer mange former for koprosessor direkte i den generelle CPU-matrisen eller -arkitekturen. Dette kan enkelt sees med integrerte grafikkbrikker etset inn i samme silisium som resten av CPU. Selve behandlingen utføres imidlertid ikke av CPU-kjernene. I AMDs Ryzen CPUer er det også en egen I/O-matris som håndterer kommunikasjon mellom brikker og resten av datamaskinen. Noen moderne mobile enheter kommer også med NPU-er for AI-behandling.

Konklusjon

En koprosessor er en sekundær, tertiær, kvartær, etc., prosessor i en dataenhet hvor CPU er den primære prosessoren. Det er ingen grense for antall koprosessorer i et system. Imidlertid vil programvare/maskinvarestøtte, varmespredning, fysisk plass og kostnader spille en rolle.

En koprosessor håndterer oppgaver for CPU-en som øker den generelle ytelsen i både den spesifikke oppgaven ved å utføre den på en optimalisert mote, og i andre oppgaver, ved å avvise behovet for at CPU-en skal kaste bort prosessorkraften ved å utføre oppgaven på en uoptimalisert mote. Over tid blir mange koprosessorer integrert i CPUer etter hvert som teknologien skrider frem. Imidlertid begrenser strøm og termiske grenser dette i noen scenarier.