INMOS Transputer: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Implementazioni: rimossi wl secondo linee guida vedi Wikipedia:Wikilink#Wikilink nei titoli di sezioni e sottosezioni |
|||
(33 versioni intermedie di 23 utenti non mostrate) | |||
Riga 1:
{{F|microprocessori|marzo 2013|Nessuna fonte}}
[[
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
== Background ==
Nei primi anni '80 sembrava che le [[CPU]] convenzionali avessero raggiunto il loro limite riguardo alle ''performance''. Fino a quel momento i progettisti erano stati limitati principalmente dall'ammontare di circuiti che potevano piazzare su un [[Circuito integrato|chip]] a causa di problemi di costruzione. Ma con il continuo migliorare dei processi produttivi il problema mutò: i chip potevano contenere più circuiti di quelli che i progettisti sapevano sfruttare. Presto le tradizionali architetture [[Complex instruction set computer|CISC]] avrebbero raggiunto il loro limite massimo possibile, e non era ben chiaro se si sarebbe potuto superarlo.
Sembrò che l'unico modo fosse implementare l'uso del parallelismo, cioè l'uso di svariate CPU che avrebbero lavorato assieme per compiere diversi compiti allo stesso tempo. Tutto ciò dipendeva dalla possibilità della macchina di essere in grado di eseguire più processi allo stesso tempo, capacità nota come [[multitasking]], troppo difficile da eseguire fino ad allora, ma supportata dai processori di nuova generazione. Fu chiaro che in futuro questa caratteristica sarebbe stata supportata da tutti i [[sistema operativo|sistemi operativi]].
Line 9 ⟶ 10:
Un effetto collaterale di molte architetture ''multitasking'' è che spesso permette di eseguire i processi su CPU fisicamente differenti, nel qual caso il processo è noto come ''[[multiprocessing]]''. Una CPU a basso costo, pensata in quest'ottica, avrebbe permesso di aumentare la velocità di calcolo di una macchina aggiungendo altri processori simili, scelta potenzialmente molto più economica di una basata su un singolo e più potente processore.
==
Il Transputer ('''Trans'''istor Com'''puter''') fu il primo microprocessore ad uso generico progettato specificatamente per essere usato in sistemi di calcolo parallelo. L'obiettivo era di produrre una famiglia di chip, limitati in costo e potenza, che avrebbero potuto poi essere connessi tra loro per formare un computer completo. Il nome era stato scelto per indicare il ruolo che il singolo Transputer avrebbe avuto: molti di loro sarebbero stati usati come "mattoni di base", proprio come i transistor lo erano stati precedentemente.
Originariamente il piano era di far costare i Transputer solo pochi dollari a unità. La INMOS li vide usati praticamente per tutto (operazioni tipiche di una CPU per quanto riguardava un computer e funzioni di [[channel controller]] per i disk drive nella stessa macchina). I cicli inutilizzati su ognuno di questi Transputer avrebbero potuto essere usati per altri compiti, accrescendo grandemente le ''performance'' complessive delle macchine.
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 ===
Line 22 ⟶ 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
=== Programmazione ad alto livello ===
Per la programmazione dei transputer, la INMOS aveva progettato un linguaggio apposito, ispirato al paradigma di comunicazione a passaggio di messaggi [[Communicating Sequential Processes|CSP]] (Communicating Sequential Processes) ideato dal britannico [[C. A. R. Hoare]] e chiamato [[linguaggio di programmazione Occam|Occam]]. In effetti è più corretto dire che il Transputer fu progettato specificatamente per eseguire codice Occam, mentre la
== Implementazioni ==
I primi modelli di Transputer furono annunciati nel [[1983]] e
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.
===
Il prototipo a 16 bit del transputer fu l
===
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]].
===
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
== 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
== T9000 ==
Riga 56:
Il T9000 usava una [[Pipeline dati|pipeline]] a cinque stadi per aumentare la velocità. Un'interessante aggiunta fu il ''raggruppatore'' che raccoglieva le istruzioni in uscita dalla cache e le raggruppava in pacchetti più larghi, da 4 bytes, per alimentare più velocemente la pipeline. I gruppi venivano poi completati in un singolo ciclo, come se fossero una singola istruzione più grossa su una CPU più veloce.
Tuttavia l'
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
== 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]]
*[[
== Altri progetti ==
{{interprogetto
== Collegamenti esterni ==
[[Categoria:Microprocessori]]▼
* {{FOLDOC|transputer|transputer}}
{{Controllo di autorità}}
{{Portale|informatica}}
▲[[Categoria:Microprocessori]]
|