Los transputers son una serie de microprocesadores pioneros de la década de 1980, destinados a la computación paralela . Para apoyar esto, cada transputer tenía su propia memoria integrada y enlaces de comunicación en serie para intercambiar datos con otros transputers. Fueron diseñados y producidos por Inmos , una empresa de semiconductores con sede en Bristol , Reino Unido . [1]
Durante algún tiempo, a fines de la década de 1980, muchos [2] consideraron que el transputer sería el próximo gran diseño para el futuro de la informática. Si bien el transputer no logró cumplir con esta expectativa, su arquitectura fue muy influyente al provocar nuevas ideas en la arquitectura informática , varias de las cuales han resurgido en diferentes formas en los sistemas modernos. [3]
A principios de los años 1980, las unidades centrales de procesamiento (CPU) convencionales parecían haber alcanzado un límite de rendimiento. Hasta ese momento, las dificultades de fabricación limitaban la cantidad de circuitos que podían caber en un chip. Las mejoras continuas en el proceso de fabricación habían eliminado en gran medida esta restricción. En una década, los chips podían albergar más circuitos de los que los diseñadores sabían utilizar. Los diseños tradicionales de computadoras con conjuntos de instrucciones complejos (CISC) estaban llegando a una meseta de rendimiento, y no estaba claro que se pudiera superar. [4]
Parecía que la única manera de avanzar era aumentar el uso del paralelismo, el uso de varias CPU que trabajaran juntas para resolver varias tareas al mismo tiempo. Esto dependía de que dichas máquinas pudieran ejecutar varias tareas a la vez, un proceso denominado multitarea . Esto había sido generalmente demasiado difícil de manejar para los diseños de microprocesadores anteriores, pero los diseños más recientes pudieron lograrlo de manera efectiva. Estaba claro que en el futuro, esta sería una característica de todos los sistemas operativos (OS).
Un efecto secundario de la mayoría de los diseños multitarea es que a menudo también permiten que los procesos se ejecuten en CPU físicamente diferentes, en cuyo caso se denomina multiprocesamiento . Una CPU de bajo costo diseñada para multiprocesamiento podría permitir aumentar la velocidad de una máquina agregando más CPU, potencialmente de manera mucho más económica que utilizando un diseño de CPU más rápido.
Los primeros diseños de transputadores se debieron al científico informático David May y al consultor de telecomunicaciones Robert Milne. En 1990, May recibió un doctorado honorario en ciencias de la Universidad de Southampton , seguido en 1991 por su elección como miembro de la Royal Society y la concesión de la Medalla Patterson del Instituto de Física en 1992. Tony Fuge, entonces ingeniero líder en Inmos, recibió el Premio Príncipe Felipe de Diseñadores en 1987 por su trabajo en el transputador T414. [5]
El transputer fue el primer microprocesador de propósito general diseñado específicamente para ser utilizado en sistemas de computación paralela . El objetivo era producir una familia de chips de distintos niveles de potencia y costo que pudieran conectarse entre sí para formar una computadora paralela completa. El nombre, de " trans istor" y "computadora " , [6] fue seleccionado para indicar el papel que desempeñarían los transputers individuales: se utilizarían varios de ellos como bloques básicos de construcción en un sistema integrado más grande, tal como se habían utilizado los transistores en diseños anteriores.
Originalmente, el plan era que el transputer costara sólo unos pocos dólares por unidad. Inmos pensó que se utilizarían para prácticamente todo, desde funcionar como la CPU principal de una computadora hasta actuar como un controlador de canal para las unidades de disco en la misma máquina. En una máquina tradicional, la capacidad de procesamiento de un controlador de disco, por ejemplo, estaría inactiva cuando no se estuviera accediendo al disco. Por el contrario, en un sistema de transputer, los ciclos libres en cualquiera de estos transputers podrían usarse para otras tareas, lo que aumentaría enormemente el rendimiento general de las máquinas.
El transputer tenía una gran memoria en chip, lo que lo convertía esencialmente en un procesador en memoria . Incluso un transputer tendría todos los circuitos necesarios para funcionar por sí solo, una característica más comúnmente asociada con los microcontroladores . La intención era permitir que los transputers se conectaran entre sí lo más fácilmente posible, sin necesidad de un bus complejo o una placa base . Se debía suministrar energía y una señal de reloj simple, pero poco más: memoria de acceso aleatorio (RAM), un controlador de RAM, soporte de bus e incluso un sistema operativo en tiempo real (RTOS) estaban todos integrados. De esta manera, los últimos transputers fueron micronúcleos reutilizables (RMC) individuales en el entonces emergente mercado de SoC .
El transputer original utilizaba una arquitectura muy simple y bastante inusual para lograr un alto rendimiento en un área pequeña. Utilizaba microcódigo como el método principal para controlar la ruta de datos, pero a diferencia de otros diseños de la época, muchas instrucciones solo necesitaban un ciclo para ejecutarse. Los códigos de operación de las instrucciones se utilizaban como puntos de entrada a la memoria de solo lectura (ROM) del microcódigo y las salidas de la ROM se enviaban directamente a la ruta de datos. Para las instrucciones de varios ciclos, mientras la ruta de datos realizaba el primer ciclo, el microcódigo decodificaba cuatro opciones posibles para el segundo ciclo. La decisión sobre cuál de estas opciones se utilizaría realmente se podía tomar cerca del final del primer ciclo. Esto permitía una operación muy rápida manteniendo la arquitectura genérica. [7]
La frecuencia de reloj de 20 MHz era bastante alta para la época y los diseñadores estaban muy preocupados por la viabilidad de distribuir una señal de reloj tan rápida en una placa. Se utilizó un reloj externo más lento de 5 MHz, y se multiplicó hasta la frecuencia interna necesaria utilizando un bucle de enganche de fase (PLL). El reloj interno en realidad tenía cuatro fases no superpuestas y los diseñadores tenían libertad para utilizar la combinación de estas que quisieran, por lo que podría argumentarse que el transputador en realidad funcionaba a 80 MHz. Se utilizó lógica dinámica en muchas partes del diseño para reducir el área y aumentar la velocidad. Desafortunadamente, estos métodos son difíciles de combinar con la prueba de escaneo de generación automática de patrones de prueba , por lo que cayeron en desuso para los diseños posteriores.
Prentice-Hall publicó un libro [8] sobre los principios generales del transputador.
El diseño básico del transputer incluía enlaces seriales conocidos como "os-link" [9] [10] que le permitían comunicarse con hasta otros cuatro transputers, cada uno a 5, 10 o 20 Mbit/s, lo cual era muy rápido para la década de 1980. Cualquier número de transputers podía conectarse entre sí a través de enlaces (que podían extenderse decenas de metros) para formar una granja de computación . Una hipotética máquina de escritorio podría tener dos de los transputers de "gama baja" manejando tareas de entrada/salida (E/S) en algunas de sus líneas seriales (conectadas al hardware apropiado) mientras se comunicaban con uno de sus primos más grandes que actuaba como CPU en otra.
El tamaño de un sistema que se podía construir de esta manera tenía sus límites. Como cada transputador estaba conectado a otro en un esquema punto a punto fijo, enviar mensajes a un transputador más distante requería que cada chip de la línea los retransmitiera. Esto introducía un retraso con cada "salto" en un enlace, lo que generaba grandes retrasos en redes grandes. Para resolver este problema, Inmos también proporcionó un conmutador de retardo cero que conectaba hasta 32 transputadores (o conmutadores) en redes aún más grandes.
Los transputers podían arrancar desde la memoria, como es el caso de la mayoría de las computadoras, pero también podían arrancar a través de sus enlaces de red . Un pin especial en los chips, BootFromROM, indicaba qué método debía usar. Si BootFromROM estaba activado cuando se reiniciaba el chip, comenzaría a procesar en la instrucción dos bytes desde la parte superior de la memoria, que normalmente se usaba para realizar un salto hacia atrás en el código de arranque. Si este pin no estaba activado, el chip esperaría a que se recibieran bytes en cualquier enlace de red. El primer byte que se recibía era la longitud del código a seguir. Los bytes siguientes se copiaban en la memoria baja y luego se saltaba a ella una vez que se había recibido esa cantidad de bytes.
El concepto general del sistema era que un transputer actuara como autoridad central para arrancar un sistema que contenía varios transputers conectados. El transputer seleccionado tendría el BootFromROM activado permanentemente, lo que haría que comenzara a ejecutar un proceso de arranque desde la ROM al iniciarse. Los otros transputers tendrían el BootFromROM activado en un nivel bajo y simplemente esperarían. El cargador arrancaría el transputer central, que luego comenzaría a enviar el código de arranque a los otros transputers de la red y podría personalizar el código enviado a cada uno, por ejemplo, enviando un controlador de dispositivo al transputer conectado a los discos duros.
El sistema también incluía las longitudes de código "especiales" de 0 y 1 que estaban reservadas para PEEK y POKE . Esto permitía la inspección y el cambio de RAM en un transputador que no se había iniciado. Después de un peek, seguido de una dirección de memoria, o un poke, con una dirección y una sola palabra de datos, el transputador volvería a esperar un arranque. Este mecanismo se utilizaba generalmente para la depuración.
Se agregó un circuito que programaba el tráfico a través de los enlaces. Los procesos que esperaban comunicaciones se detenían automáticamente mientras el circuito de red terminaba sus lecturas o escrituras. A los demás procesos que se ejecutaban en el transputador se les daba ese tiempo de procesamiento. Incluía dos niveles de prioridad para mejorar el funcionamiento en tiempo real y multiprocesador . Se utilizaba el mismo sistema lógico para comunicarse entre programas que se ejecutaban en un transputador, implementado como enlaces de red virtuales en memoria. De modo que los programas que solicitaban cualquier entrada o salida se detenían automáticamente mientras se completaba la operación, una tarea que normalmente requería que un sistema operativo se encargara de gestionarla como árbitro del hardware. Los sistemas operativos en el transputador no necesitaban gestionar la programación; se podía considerar que el chip tenía un SO en su interior.
Para incluir todas estas funciones en un chip, la lógica básica del transputer era más simple que la de la mayoría de las CPU. Si bien algunos lo han llamado computadora de conjunto de instrucciones reducidas (RISC) debido a su naturaleza bastante dispersa, y porque esa era una palabra de moda en el marketing , estaba altamente microcodificada , tenía un conjunto de registros limitado e instrucciones complejas de memoria a memoria, todo lo cual lo coloca firmemente en el campo CISC . A diferencia de las CPU RISC con gran carga/almacenamiento de registros , el transputer tenía solo tres registros de datos, que se comportaban como una pila. Además, un puntero de espacio de trabajo apuntaba a una pila de memoria convencional, fácilmente accesible a través de las instrucciones Load Local
y Store Local
. Esto permitía un cambio de contexto muy rápido simplemente cambiando el puntero de espacio de trabajo a la memoria utilizada por otro proceso (un método utilizado en varios diseños contemporáneos, como el TMS9900 ). El contenido de la pila de tres registros no se conservaba más allá de ciertas instrucciones, como Jump, cuando el transputer podía hacer un cambio de contexto.
El conjunto de instrucciones del transputer constaba de instrucciones de 8 bits ensambladas a partir de nibbles de operando y código de operación . El nibble superior contenía los 16 posibles códigos de instrucción primaria, lo que lo convertía en uno de los pocos ordenadores comercializados con conjunto de instrucciones mínimo . El nibble inferior contenía el operando constante inmediato, comúnmente utilizado como desplazamiento relativo al puntero del espacio de trabajo (pila de memoria). Dos instrucciones de prefijo permitían la construcción de constantes más grandes anteponiendo sus nibbles inferiores a los operandos de las instrucciones siguientes. Se admitían más instrucciones a través del código de instrucción Operate ( ), que decodificaba el operando constante como un código de operación de operando cero extendido, lo que proporcionaba una expansión del conjunto de instrucciones casi infinita y sencilla a medida que se introducían nuevas implementaciones del transputer.Opr
Las 16 instrucciones de un operando 'primarias' fueron:
Todas estas instrucciones toman una constante, que representa un desplazamiento o una constante aritmética. Si esta constante es menor que 16, todas estas instrucciones se codifican en un byte.
Las primeras 16 instrucciones de operando cero 'secundarias' (que utilizan la instrucción primaria OPR) fueron:
Para proporcionar un medio sencillo de prototipado, construcción y configuración de sistemas con múltiples transputadores, Inmos introdujo el estándar TRAM (TRAnsputer Module) en 1987. Un TRAM era esencialmente una placa base que comprendía un transputador y, opcionalmente, memoria externa y/o dispositivos periféricos, con conectores estandarizados simples que proporcionaban energía, enlaces de transputador, reloj y señales del sistema. Se definieron varios tamaños de TRAM, desde el TRAM básico de tamaño 1 (3,66 pulgadas por 1,05 pulgadas) hasta el tamaño 8 (3,66 pulgadas por 8,75 pulgadas). Inmos produjo una gama de placas base TRAM para varios buses host como Industry Standard Architecture (ISA), MicroChannel o VMEbus . Los enlaces TRAM funcionan a 10 Mbit/s o 20 Mbit/s. [11]
Los transputers fueron pensados para ser programados usando el lenguaje de programación occam , basado en el cálculo de procesos de comunicación secuencial (CSP) . [12] El transputer fue construido para ejecutar Occam específicamente, más de los diseños CISC contemporáneos fueron construidos para ejecutar lenguajes como Pascal o C. Occam admitía concurrencia y comunicación entre procesos o entre procesadores basada en canales como parte fundamental del lenguaje. Con el paralelismo y las comunicaciones integradas en el chip y el lenguaje interactuando directamente con él, escribir código para cosas como controladores de dispositivos se convirtió en una trivialidad; incluso el código más básico podía vigilar los puertos seriales para E/S y se suspendería automáticamente cuando no hubiera datos.
El entorno de desarrollo inicial de Occam para el transputador fue el Inmos D700 Transputer Development System (TDS). Se trataba de un entorno de desarrollo integrado poco convencional que incorporaba un editor, un compilador, un enlazador y un depurador (post-mortem). El TDS era una aplicación de transputador escrita en Occam. El editor de texto TDS se destacaba por ser un editor plegable , que permitía ocultar y revelar bloques de código para hacer más evidente la estructura del código. Desafortunadamente, la combinación de un lenguaje de programación desconocido y un entorno de desarrollo igualmente desconocido no contribuyó a la popularidad temprana del transputador. Más tarde, Inmos lanzaría compiladores cruzados de Occam más convencionales, los Occam 2 Toolsets .
Más tarde, Inmos y otros proveedores también lanzaron implementaciones de lenguajes de programación más comunes, como C, FORTRAN , Ada , Forth y Pascal. Por lo general, incluían extensiones o bibliotecas de lenguaje que proporcionaban, de una manera menos elegante, concurrencia similar a la de Occam y comunicación basada en canales.
La falta de compatibilidad del transputador con la memoria virtual impidió la adaptación de variantes convencionales del sistema operativo Unix , aunque se produjeron versiones de sistemas operativos similares a Unix (como Minix e Idris de Whitesmiths ). Perihelion Software también diseñó específicamente para sistemas multitransputador un avanzado sistema operativo distribuido similar a Unix , Helios .
Los primeros transputers se anunciaron en 1983 y se lanzaron en 1984.
En consonancia con su función como dispositivos similares a microcontroladores , incluían una memoria RAM integrada y un controlador de memoria RAM incorporado que permitía añadir más memoria sin necesidad de hardware adicional. A diferencia de otros diseños, los transputers no incluían líneas de E/S: estas debían añadirse con hardware conectado a los enlaces seriales existentes. Había una línea de "Evento", similar a la línea de interrupción de un procesador convencional. Considerados como un canal, un programa podía "entrar" desde el canal de eventos y continuar sólo después de que se activara la línea de eventos.
Todos los transputers funcionaban desde una entrada de reloj externa de 5 MHz; ésta se multiplicaba para proporcionar el reloj del procesador.
El transputer no incluía una unidad de gestión de memoria (MMU) ni un sistema de memoria virtual .
Las variantes de Transputer (excepto el T9000 cancelado) se pueden clasificar en tres grupos: la serie T2 de 16 bits , la serie T4 de 32 bits y la serie T8 de 32 bits con soporte de punto flotante IEEE 754 de 64 bits .
El prototipo de transputador de 16 bits fue el S43 , que carecía del planificador y de la transferencia de bloques controlada por DMA en los enlaces. En el momento del lanzamiento, el T212 y el M212 (este último con un controlador de disco integrado) eran las ofertas de 16 bits. El T212 estaba disponible con velocidades de reloj de procesador de 17,5 y 20 MHz. El T212 fue reemplazado por el T222 , con una RAM en chip ampliada de 2 KB a 4 KB, y, más tarde, por el T225 . Este agregó compatibilidad con puntos de interrupción de depuración (al extender la instrucción "Yo 0") más algunas instrucciones adicionales del conjunto de instrucciones T800. Tanto el T222 como el T225 funcionaban a 20 MHz.
Lanzado en octubre de 1985, el T414 empleaba el equivalente a 900.000 transistores y se fabricaba con un tamaño de característica de 1,5 micrómetros . Era un diseño de 32 bits, capaz de procesar unidades de datos de 32 bits y de direccionar hasta 4 GB de memoria principal. [13] Originalmente, la primera variante de 32 bits iba a ser el T424 , pero las dificultades de fabricación hicieron que se rediseñara como el T414 con 2 KB de RAM incorporada en lugar de los 4 KB previstos. El T414 estaba disponible en variedades de 15 y 20 MHz. La RAM se restableció más tarde a 4 KB en el T425 (en variedades de 20, 25 y 30 MHz), que también agregó laYo 0Soporte de puntos de interrupción e instrucciones T800 adicionales. El T400 , lanzado en septiembre de 1989, era un derivado del T425 de 20 MHz de bajo costo con 2 KB y dos enlaces en lugar de cuatro, destinado al mercado de sistemas integrados .
El transputer T800 de segunda generación , introducido en 1987, tenía un conjunto de instrucciones ampliado. La adición más importante fue una unidad de coma flotante (FPU) de 64 bits y tres registros adicionales para coma flotante, implementando el estándar de coma flotante IEEE 754-1985 . También tenía 4 KB de RAM incorporada y estaba disponible en versiones de 20 o 25 MHz. El soporte de punto de interrupción se agregó en los posteriores T801 y T805 , el primero con buses de dirección y datos separados para mejorar el rendimiento. El T805 también estuvo disponible más tarde como una parte de 30 MHz.
Se planeó un T810 mejorado , que habría tenido más RAM, más enlaces y más rápidos, instrucciones adicionales y un microcódigo mejorado, pero esto se canceló alrededor de 1990.
Inmos también produjo una variedad de chips de soporte para los procesadores transputer, como el conmutador de enlace de 32 vías C004 y los "adaptadores de enlace" C011 y C012 que permitían interconectar los enlaces del transputer con un bus de datos de 8 bits.
Parte de la estrategia original de Inmos era fabricar CPU tan pequeñas y baratas que pudieran combinarse con otra lógica en un solo dispositivo. Aunque los sistemas en chip (SoC), como se los denomina comúnmente, son omnipresentes ahora, el concepto era casi inaudito a principios de los años 80. En 1983 se iniciaron dos proyectos: el M212 y el TV-toy . El M212 se basaba en un núcleo T212 estándar con la adición de un controlador de disco para los estándares ST 506 y ST 412 Shugart. El TV-toy iba a ser la base de una consola de videojuegos y fue un proyecto conjunto entre Inmos y Sinclair Research .
Los enlaces de los transputadores T212 y T414/T424 tenían motores de DMA de hardware para que las transferencias pudieran realizarse en paralelo con la ejecución de otros procesos. Se diseñó una variante del diseño, denominada T400, que no debe confundirse con un transputador posterior del mismo nombre, en el que la CPU manejaba estas transferencias. Esto redujo considerablemente el tamaño del dispositivo, ya que 4 motores de enlace tenían aproximadamente el mismo tamaño que la CPU completa. El T400 estaba destinado a ser utilizado como núcleo en lo que entonces se llamaban dispositivos de sistemas en silicio (SOS), ahora denominados y mejor conocidos como sistemas en un chip (SoC). Este diseño fue el que formaría parte de TV-toy. El proyecto se canceló en 1985.
Aunque los proyectos SoC anteriores habían tenido un éxito limitado (el M212 se vendió durante un tiempo), muchos diseñadores todavía creían firmemente en el concepto y en 1987 se inició un nuevo proyecto, el T100, que combinaba una versión de 8 bits de la CPU transputer con lógica configurable basada en máquinas de estados. El conjunto de instrucciones del transputer se basa en instrucciones de 8 bits y se puede utilizar fácilmente con cualquier tamaño de palabra que sea múltiplo de 8 bits. El mercado objetivo para el T100 eran los controladores de bus como Futurebus y una actualización para los adaptadores de enlace estándar (C011, etc.). El proyecto se detuvo cuando se inició el T840 (que más tarde se convertiría en la base del T9000).
TPCORE es una implementación del transputador, incluidos los enlaces del sistema operativo, que se ejecuta en una matriz de puertas programables en campo (FPGA). [9] [14]
Inmos mejoró el rendimiento de los transputadores de la serie T8 con la introducción del T9000 (cuyo nombre en código durante el desarrollo era H1 ). El T9000 compartía la mayoría de las características con el T800, pero trasladaba varias piezas del diseño al hardware y añadía varias características para el soporte superescalar . A diferencia de los modelos anteriores, el T9000 tenía una verdadera caché de alta velocidad de 16 KB (usando reemplazo aleatorio) en lugar de RAM, pero también permitía que se utilizara como memoria e incluía una funcionalidad similar a la de una MMU para manejar todo esto (denominada PMI ). Para obtener más velocidad, el T9000 almacenaba en caché las 32 ubicaciones superiores de la pila, en lugar de las tres de las versiones anteriores.
El T9000 utilizaba un pipeline de cinco etapas para lograr una velocidad aún mayor. Una adición interesante era el agrupador [15] , que recolectaba instrucciones de la memoria caché y las agrupaba en paquetes más grandes de hasta 8 bytes para alimentar el pipeline más rápido. Los grupos se completaban en un ciclo, como si fueran instrucciones individuales más grandes que funcionan en una CPU más rápida.
El sistema de enlace se actualizó a un nuevo modo de 100 MHz, pero a diferencia de los sistemas anteriores, los enlaces ya no eran compatibles con versiones anteriores. Este nuevo protocolo de enlace basado en paquetes se denominó DS-Link [ 16] y más tarde formó la base del estándar de interconexión en serie IEEE 1355. El T9000 también agregó hardware de enrutamiento de enlaces llamado VCP (procesador de canal virtual) que cambió los enlaces de punto a punto a una red real, lo que permitió la creación de cualquier número de canales virtuales en los enlaces. Esto significó que los programas ya no tenían que ser conscientes de la disposición física de las conexiones. También se desarrolló una gama de chips de soporte DS-Link, incluido el conmutador de barra cruzada de 32 vías C104 y el adaptador de enlace C101 .
Los largos retrasos en el desarrollo del T9000 hicieron que los diseños de carga y almacenamiento más rápidos ya lo superaran en rendimiento cuando se iba a lanzar. No logró alcanzar su propio objetivo de rendimiento de superar al T800 por un factor de diez. Cuando finalmente se canceló el proyecto, todavía estaba logrando solo unos 36 MIPS a 50 MHz. Los retrasos en la producción dieron lugar a la broma de que la mejor arquitectura de host para un T9000 era un retroproyector.
Esto fue demasiado para Inmos, que no tenía la financiación necesaria para continuar con el desarrollo. Para entonces, la empresa había sido vendida a SGS-Thomson (ahora STMicroelectronics ), cuyo enfoque era el mercado de sistemas integrados, y finalmente el proyecto T9000 fue abandonado. Sin embargo, más tarde se produjo un transputer de 32 bits completamente rediseñado destinado a aplicaciones integradas, la serie ST20 , utilizando alguna tecnología desarrollada para el T9000. El núcleo ST20 se incorporó a chipsets para decodificadores y aplicaciones de sistemas de posicionamiento global (GPS).
Aunque no era estrictamente un transputador, el ST20 estaba muy influenciado por el T4 y el T9 y formó la base del T450, que podría decirse que fue el último de los transputadores. La misión del ST20 era ser un núcleo reutilizable en el entonces emergente mercado de SoC. El nombre original del ST20 era el Reutilizable Micro Core (RMC). La arquitectura se basaba vagamente en la arquitectura T4 original con una ruta de datos controlada por microcódigo. Sin embargo, fue un rediseño completo, utilizando VHDL como lenguaje de diseño y con un compilador de microcódigo optimizado (y reescrito). El proyecto fue concebido ya en 1990 cuando se dieron cuenta de que el T9 sería demasiado grande para muchas aplicaciones. El trabajo de diseño real comenzó a mediados de 1992. Se realizaron varios diseños de prueba, que iban desde una CPU de estilo RISC muy simple con instrucciones complejas implementadas en software a través de trampas hasta un diseño superescalar bastante complejo similar en concepto al algoritmo de Tomasulo . El diseño final parecía muy similar al núcleo T4 original, aunque se agregaron algunas agrupaciones de instrucciones simples y un caché de espacio de trabajo para ayudar con el rendimiento.
Si bien el transputer era simple pero poderoso en comparación con muchos diseños contemporáneos, nunca estuvo cerca de cumplir con su objetivo de ser utilizado universalmente tanto en funciones de CPU como de microcontrolador. En el mercado de microcontroladores, el mercado estaba dominado por máquinas de 8 bits donde el costo era la consideración más importante. En este caso, incluso los T2 eran demasiado potentes y costosos para la mayoría de los usuarios.
En el campo de las computadoras de escritorio y estaciones de trabajo , el transputer era bastante rápido (operaba a aproximadamente 10 millones de instrucciones por segundo (MIPS) a 20 MHz). Este fue un rendimiento excelente para principios de la década de 1980, pero cuando se lanzó el T800 equipado con una unidad de punto flotante (FPU), otros diseños RISC lo habían superado. Esto se podría haber mitigado en gran medida si las máquinas hubieran utilizado múltiples transputers como estaba previsto, pero los T800 costaban alrededor de $400 cada uno cuando se introdujeron, lo que significaba una mala relación precio/rendimiento. Se diseñaron pocos sistemas de estaciones de trabajo basados en transputers; el más notable probablemente fue el Atari Transputer Workstation .
El transputer tuvo más éxito en el campo de la computación paralela masiva , donde varios proveedores produjeron sistemas basados en transputer a fines de la década de 1980. Estos incluyeron Meiko Scientific (fundada por ex empleados de Inmos), Floating Point Systems , Parsytec , [17] y Parsys. Varias instituciones académicas británicas fundaron actividades de investigación en la aplicación de sistemas paralelos basados en transputer, incluido el Bristol Transputer Centre de Bristol Polytechnic y el Edinburgh Concurrent Supercomputer Project de la Universidad de Edimburgo . Además, los sistemas de adquisición de datos y disparo de segundo nivel del experimento ZEUS de física de altas energías para el colisionador Hadron Elektron Ring Anlage (HERA) en DESY se basaron en una red de más de 300 transputers sincronizados divididos en varios subsistemas. Estos controlaban tanto la lectura de la electrónica del detector personalizado como ejecutaban algoritmos de reconstrucción para la selección de eventos físicos.
Las capacidades de procesamiento paralelo del transputer fueron utilizadas comercialmente para el procesamiento de imágenes por la mayor empresa de impresión del mundo, RR Donnelley & Sons , a principios de los años 90. La capacidad de transformar rápidamente imágenes digitales para prepararlas para la impresión le dio a la empresa una importante ventaja sobre sus competidores. Este desarrollo fue liderado por Michael Bengtson en el Centro de Tecnología de RR Donnelley. En pocos años, la capacidad de procesamiento incluso de las computadoras de escritorio terminó con la necesidad de sistemas de multiprocesamiento personalizados para la empresa. [ cita requerida ]
La empresa alemana Jäger Messtechnik utilizó transputadores para sus primeros productos de adquisición y control de datos en tiempo real ADwin . [18]
Una empresa francesa construyó la supercomputadora Archipel Volvox con hasta 144 transputadores T800 y T400. Estaba controlada por un Silicon Graphics Indigo2 que ejecutaba UNIX y una tarjeta especial que se conectaba a las placas base Volvox.
Los transputers también encontraron uso en analizadores de protocolo como el Siemens/Tektronix K1103 y en aplicaciones militares donde la arquitectura de matriz era adecuada para aplicaciones como el radar y los enlaces seriales (que eran de alta velocidad en la década de 1980) sirvieron bien para ahorrar costos y peso en las comunicaciones del subsistema.
El transputer también apareció en productos relacionados con la realidad virtual como el sistema ProVision 100 fabricado por Division Limited de Bristol, que presentaba una combinación de procesadores Intel i860 , 80486 /33 y Toshiba HSP, junto con transputers T805 o T425, implementando un motor de renderizado al que luego se podía acceder como servidor mediante sistemas PC , Sun SPARCstation o VAX . [19] [20]
Myriade , una plataforma satelital miniaturizada europea desarrollada por Astrium Satellites y CNES y utilizada por satélites como Picard , está basada en el T805 con un rendimiento de alrededor de 4 MIPS y está previsto que permanezca en producción hasta aproximadamente 2015. [21] [22]
El funcionamiento asincrónico de las comunicaciones y la computación permitió el desarrollo de algoritmos asincrónicos, como el algoritmo "Asychronous Polynomial Zero Finding" de Bane. [23] Es probable que el campo de los algoritmos asincrónicos y la implementación asincrónica de los algoritmos actuales desempeñen un papel clave en la transición hacia la computación a exaescala .
La nave espacial High Energy Transient Explorer 2 (HETE-2) utilizó cuatro transputadores T805 y ocho DSP56001 que ofrecían un rendimiento de aproximadamente 100 millones de instrucciones por segundo (MIPS). [24]
El creciente paralelismo interno ha sido una de las fuerzas impulsoras de las mejoras en los diseños de CPU convencionales. En lugar de un paralelismo explícito a nivel de subprocesos (como se utiliza en el transputer), los diseños de CPU explotaban el paralelismo implícito a nivel de instrucciones, inspeccionando las secuencias de código en busca de dependencias de datos y emitiendo múltiples instrucciones independientes a diferentes unidades de ejecución. Esto se denomina procesamiento superescalar . Los procesadores superescalares son adecuados para optimizar la ejecución de fragmentos de código construidos secuencialmente. La combinación de procesamiento superescalar y ejecución especulativa proporcionó un aumento tangible del rendimiento en los cuerpos de código existentes, que en su mayoría estaban escritos en Pascal, Fortran, C y C++. Dadas estas mejoras sustanciales y regulares del rendimiento del código existente, había pocos incentivos para reescribir el software en lenguajes o estilos de codificación que expusieran un mayor paralelismo a nivel de tareas.
Sin embargo, el modelo de procesadores concurrentes cooperativos todavía se puede encontrar en los sistemas de computación en clúster que dominan el diseño de supercomputadoras en el siglo XXI. A diferencia de la arquitectura transputer, las unidades de procesamiento en estos sistemas suelen utilizar CPU superescalares con acceso a cantidades sustanciales de memoria y almacenamiento en disco, que ejecutan sistemas operativos e interfaces de red convencionales. Como resultado de los nodos más complejos, la arquitectura de software utilizada para coordinar el paralelismo en dichos sistemas suele ser mucho más pesada que en la arquitectura transputer.
El motivo fundamental del transputer sigue vigente, pero estuvo enmascarado durante más de 20 años por la repetida duplicación del número de transistores. Inevitablemente, los diseñadores de microprocesadores finalmente se quedaron sin usos para los mayores recursos físicos, casi al mismo tiempo que la escalabilidad de la tecnología comenzó a alcanzar sus límites. El consumo de energía y, por lo tanto, las necesidades de disipación de calor, hacen que los aumentos adicionales de la velocidad de reloj sean inviables. Estos factores llevaron a la industria hacia soluciones que en esencia no se diferenciaban mucho de las propuestas por Inmos.
Algunas de las supercomputadoras más potentes del mundo, basadas en diseños de la Universidad de Columbia y construidas como IBM Blue Gene , son encarnaciones reales del sueño del transputador. Son enormes conjuntos de SoC idénticos y de rendimiento relativamente bajo.
Las tendencias recientes también han intentado resolver el dilema del transistor de maneras que habrían sido demasiado futuristas incluso para Inmos. Además de agregar componentes a la matriz de la CPU y colocar múltiples matrices en un sistema, los procesadores modernos colocan cada vez más múltiples núcleos en una matriz. Los diseñadores de transputadores lucharon por encajar incluso un núcleo en su presupuesto de transistores. Hoy en día, los diseñadores, trabajando con un aumento de 1000 veces en densidades de transistores, ahora normalmente pueden colocar muchos. Uno de los desarrollos comerciales más recientes ha surgido de la empresa XMOS , que ha desarrollado una familia de procesadores multinúcleo multihilo integrados que resuenan fuertemente con el transputador e Inmos. Existe una clase emergente de procesadores multinúcleo/muchos núcleos que adoptan el enfoque de una red en un chip (NoC), como el procesador Cell , la arquitectura Adapteva Epiphany, Tilera, etc.
El transputer e Inmos ayudaron a establecer Bristol , Reino Unido, como un centro para el diseño y la innovación microelectrónica.
• SUPERNODE - Proyecto UE Esprit-1085 (1985-1988) [1]