INMOS Transputer: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
correzione "rilasciato"
 
(12 versioni intermedie di 9 utenti non mostrate)
Riga 1:
{{F|microprocessori|marzo 2013|Nessuna fonte}}
[[File:Tranputer 83.jpg|thumb|Transputer]]
Il '''INMOS Transputer''' era un pionieristico design di un [[microprocessore]] per il [[calcolo parallelo]] prodotto dalla [[INMOS]], una piccola azienda inglese, negli [[Anni 1980|anni ottanta]]. Per qualche tempo, fin quasifino al termine di quel decennio, molti considerarono il Transputer come il nuovo grande progetto per il futuro del calcolo. Oggi i suoi derivati sono utilizzati in macchine fotografiche, sistemi GPS e decoder per la TV digitale.
 
== Background ==
Riga 17:
Anche un singolo Transputer avrebbe avuto tutti i circuiti necessari per lavorare da solo, una caratteristica più comunemente associata ai [[microcontrollore|microcontrollori]]. L'idea, in questo caso, era di permettere ai Transputer di essere connessi assieme il più facilmente possibile, senza bisogno di un [[Bus (informatica)|bus]] (o una [[scheda madre]]) complesso. Al contrario, bastava semplicemente fornire energia e un segnale di [[clock]], senza nemmeno bisogno di [[RAM]], RAM controller, supporto dal bus e nemmeno un [[Sistema operativo real-time|RTOS]], tutto ciò era già incluso.
 
=== Collegamenti esterni ===
Il progetto di base del Transputer includeva dei link seriali che gli permettevano di comunicare con altri Transputer (fino a quattro), ognuno a 5, 10 o 20 Mbit/s, una velocità davvero molto elevata per quegli anni. Ogni gruppo di transputer poteva essere connesso assieme ad altri su link anche più lunghi (decine di metri) per formare una singola "[[computing farm]]". Una tipica macchina desktop poteva avere due ''"low end"'' Transputer a controllare i compiti di [[Input/output|I/O]] con alcune delle sue linee seriali (connesse all'hardware appropriato) mentre dialogavano con uno dei loro "fratelli maggiori" funzionante come [[CPU]] su un'altra. I Transputer potevano essere inizializzati su link di rete (diversamente dalla memoria in molte macchine), cosicché un singolo Transputer poteva far partire l'intera rete.
 
Riga 23:
 
=== Scheduler ===
A supportare i link era una parte di circuito addizionale che trattava l'ordine del traffico che vi passava. I processi che aspettavano comunicazione erano automaticamente messi in pausa mentre il circuito di rete finiva le sue letture o scritture. Il tempo di elaborazione sarebbe stato dato ad altri processi, e ciò includeva due livelli di priorità per evitare i [[deadlock]]. Lo stesso sistema logico era usato per comunicare fra programmi in esecuzione sullo stesso Transputer, implementato come una "rete virtuale" in memoria. Quindi un programma in richiesta di un [[input/output|input]] o un [[input/output|output]] automaticamente veniva messo in pausa mentre l'operazione era completata, un compito che normalmente richiedeva che il sistema operativo funzionasse come arbitro per l'hardware. I sistemi operativi sul transputer non dovevano occuparsi dello [[scheduling]]: in pratica si poteva pensare che il chip avesse egli stesso un sistema operativo all'interno.
 
Per poter includere tutte queste funzionalità su un singolo chip, il [[Core (informatica)|core]] del Transputer era molto più semplice della maggior parte delle [[CPU]]: usava un'architettura RISC, ma diversamente dalle più comuni CPU RISC basate su un pesante utilizzo dei registri, il transputer usava molto lo [[Pila (informatica)|stack]]. Questo permetteva di eseguire rapidamente il [[context switch]] semplicemente spostando lo [[stack pointer]] sulla parte di memoria assegnata a un altro programma (una tecnica usata da molti sistemi contemporanei). Il Transputer inoltre includeva tre registri "normali", ma questi erano di fatto le copie delle prime tre celle dello stack, usate per permettere le istruzioni a indirizzo zero.
 
=== Set di istruzioni ===
Il set di istruzioni del Transputer era formato da istruzioni di 8 bit divise in due [[nibble]]. Quello superiore conteneva la codifica dell'istruzione, rendendolo un vero RISC con solo 16 istruzioni di base, quello inferiore conteneva una costante o più comunemente un'[[offset]] relativo allo stack pointer. Costanti e offset più lunghi potevano essere usati, ma richiedevano byte di indirizzo addizionali in fase di ''[[instruction fetch|fetch]]'' e decodifica. Inoltre le istruzioni meno frequentemente utilizzate erano supportate tramite la codifica di istruzioni chiamata ''Operate'' (Opr), la quale decodificava la costante di dati come un codice di operazione esteso, fornendo un'espansione del set di istruzione facile e quasi infinita, introdotta con una nuova implementazione del Transputer. I processi con ''context'' più piccoli giravano più velocemente, ma l'idea intera del Transputer era comunque di far girare molti piccoli processi.
 
=== Programmazione ad alto livello ===
Riga 37:
D'accordo con il loro ruolo come dispositivo simile a un [[microcontrollore]], includevano 2kB di RAM e un RAM controller integrato, che permetteva di aggiungere memoria senza altro hardware. A differenza di altre architetture i Transputer includevano una [[Memory management unit|MMU]], anche se in un sistema basato sullo stack questo non è molto importante, poiché gli indirizzi sono quasi sempre offset e non richiedono modifiche complesse.
 
=== [[16-bit]] ===
Il prototipo a 16 bit del transputer fu l<nowiki>{{'</nowiki>}}'''S43''', senza lo scheduler e senza il trasferimento dei blocchi sui link su [[Direct Memory Access|DMA]]. Al momento del lancio il '''T212''' e il '''M212''' (fornito di un disk controller) erano le offerte a 16 bit.
 
=== [[32-bit]] ===
Al momento del lancio l'offerta a 32-bit consisteva nel '''T414'''. La RAM fu più tardi portata a 4K nel '''T424''', che includeva anche un'istruzione JO trap per aiutare il [[debug]].
 
=== [[Virgola mobile]] ===
La successiva versione fu il '''T800''', nel [[1987]], la quale includeva un'unità a [[virgola mobile]] da [[64-bit]] e tre registri dedicati a questo tipo di calcolo. Inoltre la RAM veniva aumentata a 4k. Molte nuove generazioni di queste CPU, conosciute come famiglie T-2, T-4 e T-8, furono messe in commercio nei successivi anni per migliorare la programmazione e il debug. Lo switch a 32 link '''C004''' fu inoltre aggiunto alla linea di prodotti.
 
== Competizione ==
 
Nonostante il Transputer fosse semplice e tuttavia potente rispetto a molte architetture contemporanee, non riuscì mai ad avvicinarsi al suo obiettivo di essere usato universalmente sia come CPU sia come microcontrollore. Il secondo campo era dominato da macchine a 8-bit e il costo era il solo parametro considerato. Anche il T-2s era troppo potente e costoso per la maggior parte degli utenti. La mancanza di supporto del Transputer per la memoria virtuale impedì il [[porting]] delle principali varianti dei sistemi operativi [[Unix]] (anche se vennero prodotte varianti come [[Minix]] e [[Idris (sistema operativo)|Idris]] di [[Whitesmiths]].)
 
Nel campo [[Computer desktop|desktop]] / [[workstation]] il Transputer era abbastanza veloce, operando a circa 10 [[MIPS (unità di misura)|MIPS]] a 20MHz20&nbsp;MHz, un'eccellente ''performance'' per i primi anni Ottanta, ma, al momento in cui venne venduto il T800, fornito di una [[Floating Point Unit|FPU]], le altre architetture RISC l'avevano già sorpassato. Questo avrebbe potuto essere mitigato dalla possibilità di creare macchine con più Transputer, ma il T800 costava circa 400$ al pezzo quando venne messo in commercio, quindi il rapporto prezzo/potenza era svantaggioso.
 
== T9000 ==
Line 59 ⟶ 58:
Tuttavia l'INMOS non aveva i fondi necessari per continuare lo sviluppo su questa strada non essendo riuscita a conquistare in precedenza significative quote di mercato, e quindi di ricavi. Di qui l'inevitabile crisi di liquidità a causa della quale infine la compagnia fu venduta alla [[ST Microelectronics|SGS-Thomson]] (oggi [[ST Microelectronics]] ) che eliminò il T9000 e produsse l'architettura 212/414 per linee di microcontrollori come le famiglie '''ST10''' e '''ST20''', ora non più in produzione, anche se parti di questa tecnologia sono incluse in chipset per applicazioni speciali (ad esempio [[GPS]], macchine fotografiche e decoder per la TV digitale).
 
Ironicamente, fu in gran parte grazie al parallelismo che le architetture delle CPU convenzionali divennero più veloci. Invece di usare un pesante sistema esplicito come il Transputer, le CPU moderne lavorano in parallelo solo a livello di istruzioni, dividendo il codice fra un numero fissato di core. Pare che questaQuesta forma di parallelismo, conosciuta come [[microprocessore superscalare|superscalarità]], siaè di fatto molto più adatta al calcolo d'uso generale in quanto non richiede una specifica programmazione parallela e si possono compilare ed eseguire direttamente i programmi classici basati su algoritmi sequenziale.
 
== Bibliografia ==
* {{RivistaVG|mc|100|191-196|10|1990|titolo=Transputer e OCCAM - un binomio per la programmazione parallela}}
* {{RivistaVG|mc|101|174-177|11|1990|titolo=INMOS T.I.K. - Transputer Introduction Kit - Sistema di sviluppo o scheda acceleratrice?}}
 
== Voci correlate ==
*[[Architettura parallela]]
*[[Calcolatore della quinta generazione]]
*[[Linguaggiooccam (linguaggio di programmazione Occam)]]
 
== Altri progetti ==
{{interprogetto|commons=Category:Transputer}}
 
== Collegamenti esterni ==
* {{FOLDOC|transputer|transputer}}
 
{{Controllo di autorità}}
{{Portale|informatica}}