Coprocessore: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
{{WIP|Leo72}}
In [[informatica]] un '''coprocessore''' è un [[microprocessore]] utilizzato per svolgere alcune delle funzioni elaborate dal processore principale, cioè la [[CPU]]. Le operazioni eseguite dal coprocessore possono essere calcoli in [[numero in virgola mobile|virgola mobile]], [[computer grafica 3D|funzioni grafiche]], gestione dei [[Segnale elettrico|segnali]], elaborazione dei dati o funzioni [[crittografia|crittografiche]]. Alleggerendo il processore principali dai compiti più gravosi, i coprocessori possono accelerare le prestazioni di un sistema. 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.
In [[informatica]] un '''coprocessore''' è un [[microprocessore]] utilizzato per svolgere alcune delle funzioni elaborate dal processore principale, cioè la [[CPU]]. Le operazioni eseguite dal coprocessore possono essere calcoli in [[numero in virgola mobile|virgola mobile]], [[computer grafica 3D|funzioni grafiche]], gestione dei [[Segnale elettrico|segnali]], elaborazione dei dati o funzioni [[crittografia|crittografiche]]. Alleggerendo il processore principali dai compiti più gravosi, i coprocessori possono accelerare le prestazioni di un sistema. 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.


Riga 37: Riga 36:
I coprocessori grafici o [[Graphics Processing Unit|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 immettono 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.<ref>{{cita web|url=http://www.omniablog.net/2010/07/04/gpu-vs-cpu-la-sfida-tra-nvidia-e-intel-continua/|titolo=GPU vs CPU: la sfida tra nVidia e Intel continua|editore=OmniaBlog|data=04/07/2010|accesso=17/10/2010}}</ref>
I coprocessori grafici o [[Graphics Processing Unit|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 immettono 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.<ref>{{cita web|url=http://www.omniablog.net/2010/07/04/gpu-vs-cpu-la-sfida-tra-nvidia-e-intel-continua/|titolo=GPU vs CPU: la sfida tra nVidia e Intel continua|editore=OmniaBlog|data=04/07/2010|accesso=17/10/2010}}</ref>


Alcuni modelli di [[scheda audio|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 esempio 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 suoi chip, sviluppando la tecnologia [[CUDA]] che lavora in maniera simile.
Certain models of [[sound card]]s have been fitted with dedicated processors providing digital multichannel mixing and real-time DSP effects as early as 1990 to 1994 (the [[Gravis Ultrasound]] and [[Sound Blaster AWE32]] being typical examples), while the [[Sound Blaster Audigy]] and the [[Sound Blaster X-Fi]] are more recent examples.


Sempre nel 2006 BigFoot Systems ha presentato una scheda denominata "KillerNIC" che eseguiva un suo [[kernel]] [[Linux]] su un sistema FreeScale PowerQUICC a 400&nbsp;MHz. Il chip FreeScale era denominato [[Network Processing Unit]] o NPU.
In 2006, [[AGEIA]] announced an add-in card for computers that it calls [[PhysX]]. PhysX is designed to perform complex physics computations so that the [[CPU]] and [[GPU]] do not have to perform these time consuming calculations. It is designed to work with video games, although other mathematical uses could theoretically be developed for it. In 2008 nvidia purchased the PhysX card and began to phase out the card line; the functionality was added through software allowing the GPU to render PhysX on cores normally used for graphics processing the same way [[CUDA]] works. Consequently, it can be said that in the future role of math or physics add-in cards will remain a niche.


Nella seconda metà degli [[anni 2000|anni 2000]] è stata sviluppata la nuova tecnologia [[Cell (processore)|Cell]], una microarchitettura per processore di impiego generico, dai dispositivi [[embedded]] ai [[mainframe]], supportanti il [[calcolo parallelo]].
In 2006, BigFoot Systems unveiled a PCI add-in card they christened the KillerNIC which ran its own special Linux kernel on a FreeScale PowerQUICC running at 400&nbsp;MHz, calling the FreeScale chip a [[Network Processing Unit]] or NPU. Tests have shown it indeed does take an appreciable load off the processor which would otherwise have to run the XP or Vista Network Stack.{{Citation needed|date=April 2010}} However its high price tag ($250+ USD) has kept it out of reach for all but the most performance-minded users.


nel [[2008]] Khronos Group ha presentato la libreria [[OpenCL]], che supporta una gran varietà di dispositivi quali CPU, GPU ed altri processori.
The [[SpursEngine]] is a media-oriented add-in card with a coprocessor based on the [[Cell (microprocessor)|Cell]] microarchitecture.


==Altri coprocessori==
In 2008 Khronos group released the [[OpenCL]] with the aim to support general pourpose CPUs and both ATI/AMD and Nvidia GPU, with a single common language.
* Gli [[FPGA]] (field-programmable gate arrays) sono coprocessori personalizzabili, che possono essere programmati per svolgere qualunque compito;
* gli acceleratori [[Transport Layer Security|TLS/SSL]] sono usati sui [[server]] per le [[crittografia|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.


==Other coprocessors==
==Voci correlate==
* [[Coprocessore matematico]]
*Using [[FPGA]] (field-programmable gate arrays), custom coprocessors can be created for acceleration of particular processing tasks such as digital signal processing.
* [[GPU]]
* TLS/[[SSL accelerator]]s, used on [[Server (computing)|server]]s.
* [[Multiprocessing]]
* Some [[multi-core (computing)|multi-core]] chips can be programmed so that one of their processors is the primary processor, and the other processors are supporting coprocessors.
* [[OpenCL]]


==See also==
*[[Floating point]]
*[[IEEE 754-2008]] Standard for Floating-Point Arithmetic
*[[Multiprocessing]], the use of two or more CPUs within a single computer system
*[[Torrenza]], an initiative to implement coprocessor support for AMD processors
*[[Hybrid-core computing]], extending a commodity instruction set architecture with application-specific instructions
*[[OpenCL]] framework for writing programs that execute across heterogeneous platforms

[[Category:Computer hardware]]
-->
==Note==
==Note==
<references/>
<references/>

Versione delle 15:48, 17 ott 2010

In informatica un coprocessore è un microprocessore utilizzato per svolgere alcune delle funzioni elaborate dal processore principale, cioè la CPU. Le operazioni eseguite dal coprocessore possono essere calcoli in virgola mobile, funzioni grafiche, gestione dei segnali, elaborazione dei dati o funzioni crittografiche. Alleggerendo il processore principali dai compiti più gravosi, i coprocessori possono accelerare le prestazioni di un sistema. 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 '60[1], generalmente utilizzati per svolgere calcoli in virgola mobile ma anche per controllare i canali di I/O.

Funzioni

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.

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 '80 e dei primi anni '90. 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.

Coprocessori Intel

Lo stesso argomento in dettaglio: 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 immettono 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 esempio 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 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 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.

Voci correlate

Note

  1. ^ I/O Coprocessors, su gigaflop.demon.co.uk, Vas's Home Page. URL consultato il 16/10/10.
  2. ^ GPU vs CPU: la sfida tra nVidia e Intel continua, su omniablog.net, OmniaBlog, 04/07/2010. URL consultato il 17/10/2010.