Al centro di ogni computer, troverai il processore. Il Unità centrale di elaborazione è un hardware critico. Fa funzionare il sistema operativo e tutti i programmi sul tuo computer. Le CPU sono progettate come processori generici. Per loro stessa natura, dovrebbero essere in grado di gestire tutto.
Tuttavia, le CPU non sono molto adatte ad alcuni tipi di carichi di lavoro perché il loro hardware generico non può essere ottimizzato per attività specifiche senza perdere la sua natura generica. O diventare irrimediabilmente grande, complesso e costoso. Inoltre, qualsiasi CPU sarà in grado di gestire così tanti dati ed elaborare contemporaneamente. Un coprocessore è una seconda unità di elaborazione progettata esplicitamente per accettare uno o entrambi questi scenari.
Un coprocessore è semplicemente una seconda unità di elaborazione all'interno di un computer. In alcuni scenari, può trattarsi di una doppia CPU fisica sulla stessa scheda madre di alcuni server. Negli scenari di calcolo ad alte prestazioni e supercalcolo, questi coprocessori generici possono essere trovati anche su schede aggiuntive PCIe. Il coprocessore è spesso concentrato su un'attività specifica piuttosto che su un processore generico. Questi processori specifici per attività possono essere collegati direttamente alla scheda madre o inclusi in una scheda figlia separata come una scheda aggiuntiva PCIe.
I primi coprocessori
I primi coprocessori erano relativamente semplici. Sono stati progettati per gestire l'I/O o Input e Output per computer mainframe. Il problema era che l'elaborazione degli I/O era un'attività che richiedeva molto tempo per la CPU. L'effettiva attività di elaborazione, tuttavia, era relativamente semplice. Quindi era abbastanza economico da creare un processore per gestirlo. Mentre il coprocessore prendeva l'I/O in modo efficiente, la CPU doveva emettere semplici parametri di I/O, liberare tempo del processore e aumentare le prestazioni del sistema.
Il PC IBM originale includeva un coprocessore aritmetico a virgola mobile opzionale. Le CPU del giorno eseguivano questo tipo di matematica nel software che era lento ma abbastanza funzionale per i rari casi in cui era necessario per la maggior parte degli utenti. Tuttavia, la progettazione assistita da computer, o sistemi CAD, utilizzava costantemente questo tipo di matematica. Separando l'aritmetica in virgola mobile su un coprocessore, non solo le velocità sono state aumentate quando necessario, grazie all'accelerazione hardware, ma gli utenti che non ne avevano bisogno potevano risparmiare acquistando un sistema senza il coprocessore.
In definitiva, questi semplici coprocessori avevano le loro funzioni integrate nell'architettura della CPU. Questo è in parte un risultato naturale del continuo sviluppo della CPU, ma è anche correlato alle difficoltà nel continuare la semplice sincronizzazione con l'aumento della velocità di clock della CPU. Sebbene queste CPU e coprocessori funzionino abbastanza bene a 75 MHz, ci sarebbero un enorme ritardo di tempo, consumo energetico e problemi di interferenza da radiofrequenza alle frequenze GHz di oggi. Questi problemi richiedevano sistemi di segnalazione più complessi tra CPU e moderni coprocessori.
GPU
La GPU o Graphics Processing Unit è probabilmente la forma più nota del coprocessore. Sono progettati per essere ottimizzati per il carico di lavoro altamente parallelizzabile del rendering grafico. Le CPU possono eseguire questa attività nel software o con un chip grafico integrato. Per offrire le prestazioni elevate delle moderne GPU, tuttavia, dovrebbero integrare l'intero die della GPU nel die della CPU.
Ciò aumenterebbe enormemente il costo e la complessità di una CPU e aumenterebbe notevolmente anche la produzione di calore. I chip grafici integrati occupano già una discreta quantità di spazio sul die della CPU. Possono ridurre la velocità complessiva della CPU a causa della loro produzione di calore.
Scheda audio
Storicamente, le CPU potevano elaborare segnali audio ma non erano fantastiche. Gli artefatti audio risultanti e l'elettricità statica hanno portato alla creazione di schede audio. Questi fornirebbero porte di input e output audio ed eseguirebbero l'elaborazione audio effettiva sulla scheda audio stessa. Ciò ha notevolmente aumentato l'isolamento del segnale e la qualità del suono in uscita. Sebbene alcune schede audio siano ancora in circolazione, non sono del tutto inutili nei computer moderni poiché l'elaborazione del suono integrata direttamente sulle schede madri. Le CPU sono molto migliori rispetto ai tempi d'oro delle schede audio.
NPU
Un tipo relativamente recente di coprocessore è l'NPU o Neural Processing Unit. Questi sono progettati per eseguire o accelerare i carichi di lavoro dell'IA. Le NPU di alto livello sono abbastanza simili alle GPU, solo con ottimizzazioni specifiche per i carichi di lavoro AI. Man mano che le prestazioni del carico di lavoro dell'IA diventeranno più di una cosa che gli utenti normali utilizzano su smartphone e computer, queste diventeranno probabilmente più comuni.
Coprocessori integrati
Le moderne CPU integrano molte forme di coprocessore direttamente nel die o nell'architettura complessiva della CPU. Questo può essere facilmente visto con i chip grafici integrati incisi nello stesso silicio del resto della CPU. Tuttavia, l'elaborazione effettiva non viene eseguita dai core della CPU. Nelle CPU Ryzen di AMD, c'è anche un die I/O separato che gestisce la comunicazione tra i chiplet e il resto del computer. Alcuni dispositivi mobili moderni sono inoltre dotati di NPU per l'elaborazione dell'IA.
Conclusione
Un coprocessore è un processore secondario, terziario, quaternario, ecc. in un dispositivo informatico in cui la CPU è il processore principale. Non c'è limite al numero di coprocessori in un sistema. Tuttavia, il supporto software/hardware, la dissipazione del calore, lo spazio fisico e i costi avranno tutti un ruolo.
Un coprocessore gestisce attività per la CPU che migliorano le prestazioni complessive in entrambe le attività specifiche eseguendole in modo ottimizzato moda e in altre attività, annullando la necessità che la CPU sprechi la sua potenza di elaborazione eseguendo l'attività in modo non ottimizzato moda. Con il passare del tempo, molti coprocessori vengono integrati nelle CPU man mano che la tecnologia avanza. Tuttavia, i limiti di potenza e termici lo limitano in alcuni scenari.