Sei sulla pagina 1di 6

Il coprocessore è una tipologia di processore che si contraddistingue per essere ausiliaria ad un altro

processore. I coprocessori permettono inoltre ai costruttori di computer di offrire dei sistemi personalizzati,
offrendo la potenza supplementare solo ai clienti che realmente la necessitano e pagano per essa. I
coprocessori hanno fatto la loro prima comparsa nei mainframe degli anni sessanta[1], generalmente
utilizzati per svolgere calcoli in virgola mobile ma anche per controllare i canali di I/O.

Indice

1 Storia

2 Funzioni

3 Tipologie

3.1 Coprocessore matematico

3.2 Unità di elaborazione grafica

3.3 Controller di periferica

4 Coprocessori Intel

5 Coprocessori Motorola

6 I coprocessori nei moderni PC

7 Altri coprocessori

8 Note

9 Voci correlate

10 Altri progetti

11 Collegamenti esterni

Storia

Nati come chip per aiutare nei calcoli i processori dei grossi mainframe, i coprocessori per l'aritmetica in
virgola mobile divennero comuni nei computer desktop degli anni ottanta e dei primi anni novanta. I primi
processori ad 8 bit e 16 bit utilizzavano processi software per eseguire le operazioni in virgola mobile: nei
sistemi in cui un coprocessore matematico era supportato sia dall'hardware che dal software, tali calcoli
potevano essere eseguiti molto più velocemente. I coprocessori matematici erano un acquisto comune per
tutti quegli impieghi in cui si richiedeva una elevata potenza elaborativa per trattare complessi numero in
virgola mobile come nei software di CAD ed in quelli scientifici ed ingegneristici. I primi coprocessori
matematici, come l'AMD 9511, l'Intel 8231 e quelli prodotti da Weitek, erano trattati come dispositivi
periferici, mentre le ultime versioni, come l'Intel 8087, il Motorola 68881 ed il National 32081, erano molto
più integrate con la CPU.

Un altro tipo di coprocessore che divenne comune durante quegli anni fu quello preposto alla gestione
semplice del video, come l'ANTIC degli Atari ad 8 bit, il TMS9918 dei computer MSX e del Texas Instruments
TI-99/4A: tutti questi processori erano chiamati Video Display Controller o VDC. Un esempio di processore
grafico vero e proprio è il Copper dei Commodore Amiga, una macchina a stati finiti programmabile
("Copper" sta infatti per "Co-processor") che poteva eseguire un flusso di istruzioni sincronizzate con
l'hardware video.

Lo sviluppo dei microprocessori rese col tempo sempre meno costosa l'integrazione di una unità di calcolo
in virgola mobile direttamente nella die del chip per cui l'uso di coprocessori matematici esterni lentamente
declinò. Uno degli ultimi coprocessori esterni è l'Intel 80387 mentre una delle prime CPU che integra una
FPU è l'Intel 80486. Attualmente il loro uso nei computer desktop è ormai del tutto abbandonato mentre,
invece, è sempre più vivo il bisogno di coprocessori grafici particolarmente potenti (le GPU) per il sempre
più elevato numero di calcoli richiesti dai giochi in 3D.

Funzioni

La funzione del coprocessore è quella di alleggerire il carico di lavoro del processore di cui è ausiliario. Di
norma, il carico di lavoro relativo a particolari elaborazioni. Spesso il coprocessore è quindi un processore
ottimizzato e specializzato nell'esecuzione di particolari elaborazioni in modo da risultare più efficiente nei
compiti che gli sono stati affidati. Comuni sono i coprocessori dell'unità di elaborazione centrale, infatti nei
computer contemporanei la CPU è spesso affiancata da processori ausiliari come la GPU e la FPU. Le
operazioni eseguite possono essere calcoli in virgola mobile, funzioni grafiche, gestione dei segnali,
elaborazione dei dati o funzioni crittografiche. Alleggerendo il processore principale dai compiti più gravosi,
i coprocessori possono accelerare le prestazioni di un sistema.

Un coprocessore può non essere un processore di utilizzo generale: ad esempio, alcuni coprocessori non
possono eseguire istruzioni in memoria, eseguire istruzioni di controllo del flusso del programma oppure
operazioni di input/output, gestire la memoria. Questi chip richiedono che il processore processi le loro
istruzioni e gestisca tutte le operazioni legate alle funzioni che essi devono svolgere. In alcune architetture il
coprocessore è più un computer di uso generale ma impostato per svolgere solo alcune limitate funzioni
sotto il controllo diretto di processore che ne supervisiona i compiti.

Tipologie

Tipologie particolari di coprocessori sono le seguenti:

coprocessore matematico;

unità di elaborazione grafica;

controller di periferica.

Coprocessore matematico

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Coprocessore matematico.

Il coprocessore matematico è un coprocessore ottimizzato e specializzato in particolari calcoli matematici. I


primi coprocessori matematici della storia erano componenti separate dall'unità di elaborazione centrale.
Oggi, normalmente, il coprocessore matematico e l'unità di elaborazione centrale sono integrati nel
medesimo microprocessore. Attualmente la tipologia di coprocessore matematico più diffusa è l'unità di
calcolo in virgola mobile (più conosciuta con l'acronimo mutuato dalla lingua inglese "FPU"), coprocessore
matematico specializzato nei calcoli in virgola mobile. Tutte le moderne unità di elaborazione centrale sono
affiancate da un'unità di calcolo in virgola mobile, ed entrambe sono implementate nel medesimo circuito
integrato.

Unità di elaborazione grafica

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Graphics Processing Unit.

L'unità di elaborazione grafica (più conosciuta con l'acronimo mutuato dalla lingua inglese "GPU") è un
coprocessore ottimizzato e specializzato nel rendering di immagini grafiche. Da alcuni anni è in atto la
tendenza ad implementare l'unità di elaborazione grafica e l'unità di elaborazione centrale nel medesimo
circuito integrato.

Controller di periferica

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Controller (informatica).

Il controller di periferica o processore di input/output è un coprocessore adibito alla gestione di una o più
periferiche. Il controller di periferica è presente sin dalla prima generazione di computer elettronici in
quanto normalmente la periferica è molto più lenta dell'unità di elaborazione centrale. La presenza del
controller di periferica evita quindi che l'unità di elaborazione centrale subisca pesanti rallentamenti:
sollevata dalla gestione delle periferiche, l'unità di elaborazione centrale è libera di utilizzare tutta la sua
capacità di calcolo in compiti in cui è richiesta tale capacità.

Coprocessori Intel

Magnifying glass icon mgx2.svg Lo stesso argomento in dettaglio: Architettura x87.

Microarchitettura dell'Intel 8087 e dell'Intel 80287.

Microarchitettura dell'Intel 80387.

Il PC IBM originale includeva uno zoccolo per il coprocessore matematico (FPU) Intel 8087, scelto
generalmente dagli utenti del computer che lo usavano per eseguire CAD o programmi con elevati calcoli
numerici: quel coprocessore accelerava i calcoli in virgola mobile di 50 volte. Gli utenti che usavano il
computer per compiti da ufficio, ad esempio con programmi di videoscrittura, situazioni in cui l'uso del
coprocessore non avrebbe sortito benefici, potevano evitarne l'acquisto contenendo il costo del computer.

L'8087 era ben integrato con l'Intel 8086/8088, intercettando gli opcode delle operazioni in virgola mobile
presenti nel codice macchina in esecuzione sulla CPU. Invece, un processore 8088 senza 8087 interpretava
quelle istruzioni come interrupt interni che potevano essere gestiti per sollevare un evento di errore o per
attivare un emulatore software delle istruzioni dell'8087.
L'Intel 80386 con il coprocessore matematico 80387 (a destra).

Un altro coprocessore per le CPU 8086/8088 era l'Intel 8089, deputato alla gestione dell'input/output. Esso
usava la stessa tecnica di programmazione dell'8087 per gestire le operazioni di I/O quali il trasferimento
dei dati dalla memoria ad un dispositivo periferico, riducendo così il carico sulla CPU. IBM però non usò tale
coprocessore per cui Intel decise di abbandonarne la produzione.

Durante l'era dei computer desktop ad 8 e 16 bit altri coprocessori matematici molto diffusi erano quelli di
Weitek, nota soprattutto per i coprocessori per 80386 serie 1067. Questa diffusione fu dovuta al fatto che
Intel rilasciò una propria FPU per il processore, l'Intel 80387, quasi 2 anni dopo la sua introduzione.

Il processore 486DX includeva una FPU sul chip. Intel produsse anche una versione più economica del
processore, il 486SX: rispetto al modello DX si differenziava solo per l'assenza di tale unità per calcoli in
virgola mobile. Contemporaneamente al 486SX presentò anche il coprocessore 487SX che essenzialmente
sostituiva il processore principale quando veniva installato dato che il 487SX era un 486DX completo con
una piedinatura differente.

I processori Intel successivi al 486 integravano la FPU direttamente nel chip grazie alla riduzione dei costi
derivante dall'evoluzione tecnica dei processi produttivi, eliminando così i vantaggi economici nell'avere un
coprocessore matematico esterno. Inoltre sarebbe stato molto difficile adattare le tecniche di
progettazione delle circuiterie esterne adeguate alla gestione di un processore a 75 MHz ai tempi di attesa,
al consumo elettrico ed agli standard di interferenze elettromagnetiche richieste dalle velocità delle CPU
moderne, operanti a diversi Gigahertz. Le FPU integrate nei processori sono ancora indicate come
coprocessori perché esse operano in parallelo alla CPU principale.

Coprocessori Motorola

La famiglia di processori Motorola 68000 aveva i suoi coprocessori dedicati: essi erano i Motorola
68881/68882, che fornivano funzionalità di accelerazione dei calcoli in virgola mobile come i corrispondenti
Intel. I computer che usavano le CPU della serie 68000 ma che non montavano il coprocessore potevano
gestire delle eccezioni per attivare un emulatore software delle istruzioni in virgola mobile che, anche se
con prestazioni inferiori, permettevano di avere un'unica versione del programma distribuito per entrambi i
casi.

I coprocessori nei moderni PC

I coprocessori grafici o GPU, intesi come processore montato su una scheda grafica addizionale, cominciano
a fare la loro apparizione nella metà degli anni '90, quando produttori del calibro di Matrox, powerVR, 3dfx,
nVIDIA, S3 ed altri immetterono sul mercato delle schede appositamente studiate per accelerare la
gestione della grafica 2D/3D. Attualmente le GPU hanno una complessità ed una potenza di calcolo alle
volte superiori a quelle dei più veloci microprocessori.[2]
Alcuni modelli di schede audio sono state equipaggiate di processori dedicati capaci di miscelare il segnale
digitale multicanale ed applicare effetti audio in tempo reale già agli inizi degli anni '90: esempi di tali
schede sono la Gravis Ultrasound e la Sound Blaster AWE32. Le schede Sound Blaster Audigy e Sound
Blaster X-Fi sono esempi più recenti di tali applicazioni.

Nel 2006 AGEIA ha annunciato una scheda aggiuntiva per i computer denominata PhysX: essa è progettata
per eseguire complessi calcoli fisici così da alleggerire i compiti della CPU e della GPU e destinare la loro
potenza ai restanti calcoli. Nel 2008 Nvidia ha acquistato i diritti sulla scheda ed ha iniziato ad integrarne le
funzionalità suoi chip, sviluppando la tecnologia CUDA che lavora in maniera simile.

Sempre nel 2006 BigFoot Systems ha presentato una scheda denominata "KillerNIC" che eseguiva un suo
kernel Linux su un sistema FreeScale PowerQUICC a 400 MHz. Il chip FreeScale era denominato Network
Processing Unit o NPU.

Nella seconda metà degli anni 2000 è stata sviluppata la nuova tecnologia Cell, una microarchitettura per
processore di impiego generico, dai dispositivi embedded ai mainframe, supportanti il calcolo parallelo.

Nel 2008 Apple e poi Khronos Group ha presentato la libreria OpenCL, che supporta una gran varietà di
dispositivi quali CPU, GPU ed altri processori.

Altri coprocessori

Gli FPGA (field-programmable gate arrays) sono coprocessori personalizzabili, che possono essere
programmati per svolgere qualunque compito;

gli acceleratori TLS/SSL sono usati sui server per le connessioni cifrate;

alcuni chip multi core possono essere programmati in modo tale che un processore sia quello principale e
gli altri vengano gestiti come coprocessori.

Note

^ I/O Coprocessors, su gigaflop.demon.co.uk, Vas's Home Page. URL consultato il 16/10/10.

^ GPU vs CPU: la sfida tra nVidia e Intel continua, su omniablog.net, OmniaBlog, 04/07/2010. URL
consultato il 17/10/2010.

Voci correlate

Coprocessore matematico

Graphics Processing Unit

Multiprocessing

OpenCL
Altri progetti

Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su coprocessore

Collegamenti esterni

Coprocessore, in Treccani.it – Enciclopedie on line, Istituto dell'Enciclopedia Italiana.

Potrebbero piacerti anche