Differenze tra le versioni di "Coprocessore"

13 844 byte aggiunti ,  3 anni fa
Annullata la modifica 84494082 di 2001:B07:6455:3016:A8CA:ECFF:EB84:CE40 (discussione)
(Pagina svuotata completamente)
Etichette: Rimozione di avvisi di servizio Rimozione delle Categorie da parte di nuovo utente o IP
(Annullata la modifica 84494082 di 2001:B07:6455:3016:A8CA:ECFF:EB84:CE40 (discussione))
{{F|microprocessori|febbraio 2013}}
Il '''coprocessore''' è una tipologia di [[processore]] che si contraddistingue per essere ausiliaria ad un altro processore. Ad esempio nei moderni [[computer]] la [[CPU]] è spesso affiancata da processori ausiliari come la [[Graphics Processing Unit|GPU]] e la [[Unità di calcolo in virgola mobile|FPU]].
 
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 principale 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 1960|anni sessanta]]<ref>{{cita web|url=http://www.gigaflop.demon.co.uk/comp/chapt1.htm#s1.2.4|titolo=I/O Coprocessors|editore=Vas's Home Page|accesso=16/10/10}}</ref>, generalmente utilizzati per svolgere calcoli in virgola mobile ma anche per controllare i [[input/output|canali di I/O]].
 
==Descrizione==
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.
 
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===
{{vedi anche|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===
{{vedi anche|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===
{{vedi anche|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à.
 
==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 1980|anni ottanta]] e dei primi [[anni 1990|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 [[computer-aided design|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 [[Famiglia Atari 8-bit|Atari ad 8 bit]], il [[TMS9918]] dei computer [[Standard MSX|MSX]] e del [[Texas Instruments TI-99/4A]]: tutti questi processori erano chiamati [[Video Display Controller]] o VDC. Un esempio di [[Graphics Processing Unit|processore grafico]] vero e proprio è il [[Original_Chip_Set#Copper|Copper]] dei [[Commodore International|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 (elettronica)|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 [[Floating Point Unit|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 [[Graphics Processing Unit|GPU]]) per il sempre più elevato numero di calcoli richiesti dai [[videogioco|giochi]] in [[Computer grafica 3D|3D]].
 
==Coprocessori Intel==
{{Vedi anche|X87}}
[[File:Intel 8087 arch.svg|right|thumb|Microarchitettura dell'[[Intel 8087]] e dell'[[Intel 80287]].]]
[[File:Intel 387 arch.svg|right|thumb|Microarchitettura dell'[[Intel 80387]].]]
Il [[PC IBM]] originale includeva uno zoccolo per il coprocessore matematico ([[Floating point unit|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]]/[[Intel 8088|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.
 
[[File:80386with387.JPG|right|thumb|L'[[Intel 80386]] con il coprocessore matematico [[Intel 80387|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 [[Intel 80486|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|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 [[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 Graphics|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.<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 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 (kernel)|Linux]] su un sistema FreeScale PowerQUICC a 400&nbsp;MHz. Il chip FreeScale era denominato [[Network Processing Unit]] o NPU.
 
Nella seconda metà degli [[anni 2000]] è stata sviluppata la nuova tecnologia [[Cell (processore)|Cell]], una microarchitettura per processore di impiego generico, dai dispositivi [[Sistema embedded|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 [[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.
 
==Voci correlate==
* [[Coprocessore matematico]]
* [[Graphics Processing Unit]]
* [[Multiprocessing]]
* [[OpenCL]]
 
==Note==
<references/>
{{Controllo di autorità}}
{{Portale|informatica}}
 
[[Categoria:Microprocessore]]
Utente anonimo