Rekursiv era un procesador de computadora diseñado por David M. Harland a mediados de la década de 1980 en una división del fabricante de equipos de alta fidelidad Linn Products . Fue una de las pocas arquitecturas de computadora destinadas a implementar conceptos orientados a objetos directamente en hardware, una forma de arquitectura de computadora de lenguaje de alto nivel . El Rekursiv operaba directamente sobre objetos en lugar de bits, nibbles, bytes y palabras. La memoria virtual se utilizó como un almacén de objetos persistentes y, inusualmente, el conjunto de instrucciones del procesador admitía la recursividad (de ahí el nombre).
Para cuando el proyecto entregó su primera implementación, nuevos procesadores como Sun SPARC e Intel 486 habían superado su rendimiento, y el desarrollo se abandonó en 1988.
Historia
El proyecto Rekursiv comenzó como un esfuerzo para mejorar los controles de la línea de montaje en las fábricas de Linn en Glasgow , Escocia . Sus líneas se automatizaron utilizando un conjunto de sistemas VAX-11 , pero eran lentos y muy difíciles de programar con la flexibilidad que deseaba el fundador de Linn, Ivor Tiefenbrun . A principios de la década de 1980, Tiefenbrun se había convencido de que la programación orientada a objetos ofrecería soluciones a estos problemas. [1]
En 1981, Tiefenbrun contrató a varios programadores para escribir una versión del lenguaje seminal Smalltalk para los sistemas VAX, tomando prestada algo de sintaxis de ALGOL . Conocido como LINGO, el sistema funcionaba pero se ejecutaba muy lentamente en la plataforma VAX. Tiefenbrun concluyó que la solución al problema de rendimiento no era mejorar el lenguaje en el VAX, sino producir una CPU completamente nueva dedicada específicamente a ejecutar programas de objetos. [1]
En 1984, Tiefenbrun formó la subsidiaria Linn Smart Computing bajo la dirección del profesor de la Universidad de Strathclyde , David Harland, y nació el proyecto Rekursiv. La primera versión del sistema surgió en 1988. [1] Se produjo un pequeño número de prototipos de placas VMEbus , llamadas Hades , que comprenden estos cuatro chips más 80 MB de RAM. Se diseñaron para su instalación en un sistema host, como una estación de trabajo Sun-3 . Aunque el Rekursiv nunca se desarrolló por completo y no fue un éxito comercial, se utilizaron varios tableros Hades en proyectos de investigación académica en el Reino Unido . La última copia conocida de una computadora Rekursiv terminó en el fondo del canal Forth and Clyde en Glasgow. [2]
Según una publicación de un investigador de la Universidad de Strathclyde, mientras se desarrollaba el sistema Rekursiv, se escribió una nueva versión del lenguaje LINGO para el sistema Sun SPARC que surgió aproximadamente en esta época. Funcionó dos veces más rápido que el hardware Rekursiv, lo que hizo que el esfuerzo fuera inútil. [3] Algún tiempo después de eso, la empresa cerró. [a]
Descripción
Conceptos básicos
El concepto subyacente de la plataforma Rekursiv era proporcionar un almacén de objetos persistentes asistido por hardware , escribiendo de manera constante e invisible el estado de la memoria en el disco sin la intervención del sistema operativo o el programa del usuario. Un revisor lo describió como "un motor de base de datos de objetos para crear y administrar objetos persistentes". [5]
Para hacer que un sistema de este tipo funcione con un rendimiento razonable mientras se ejecutan programas complejos, Rekursiv fue diseñado para permitir al programador escribir su propia arquitectura de conjunto de instrucciones (ISA) dedicada al lenguaje que estaban usando. El conjunto de instrucciones de microcódigo se almacenó en RAM estática . [6] No hubo ISA defecto, aunque Linn suministra uno de los programas en el funcionamiento lenguaje de programación C . [7]
Manejo de memoria
El sistema no proporcionó el análogo de una dirección de memoria a los programas que se ejecutaban en él, en cambio, a los objetos se les dio un identificador de 40 bits que el chip Objekt procesó y usó como puntero a la memoria física. [8] Objekt también manejó el mapeo de la memoria del objeto al disco duro para almacenamiento permanente, implementando un sistema de memoria virtual . Para manejar la recolección de basura , Objekt dividió la RAM dinámica provista (memoria principal) en dos mitades, usando una para la creación de nuevos objetos y dejando la otra sin usar. Cuando un nuevo objeto requería más memoria de la que estaba libre en la parte utilizada, Objekt pausaba el sistema, copiaba cualquier objeto con un puntero válido en la mitad de la memoria no utilizada y luego cambiaba para convertir la mitad no utilizada anteriormente en la parte activa. En casos extremadamente limitados de memoria, Objekt primero intentaría poner algunos objetos en el disco, y si eso no lograba liberar suficiente espacio, usaría ambas mitades de la memoria. [9]
Los objetos son estructuras compuestas con múltiples valores dentro de ellos, que en la mayoría de los sistemas se implementan como una serie de punteros a las ubicaciones de memoria que contienen los valores. En Rekursiv, las direcciones se reemplazan por ID de objeto de 40 bits que apuntan a una sección de memoria asignada por Objekt. El bit más significativo (MSB) del puntero de 40 bits se estableció en 1 si el valor era un identificador de objeto, o 0 si era un valor binario sin tipo. El último se usó para almacenar grandes datos sin formato, como los datos de una imagen digital, y solo se podía usar dentro de objetos. [9]
En el caso de un objeto completo, se disponía de una simplificación adicional para almacenar campos cortos como valores dentro del propio puntero. Esto se indicó estableciendo también el segundo MSB en 0. En este caso, los siguientes cinco bits indicaron un tipo, definido por el ISA del programa, que podría ser "entero" o "fragmento de cadena". El valor real de este "objeto compacto" se colocó en los 32 bits inferiores del puntero. Esto permitió que valores tan simples se presentaran inmediatamente al procesador sin la necesidad de seguir un puntero a la ubicación física, lo que ahorró memoria y mejoró el rendimiento. [9] [b]
Debido a que los dos bits superiores del puntero de 40 bits se usaron para indicadores de estado, Objekt solo pudo identificar 2 38 objetos en total. Dado que los objetos se recolectaban constantemente como basura, muchos de estos valores podrían apuntar a objetos inexistentes, lo que significa que el sistema podría quedarse sin identificadores en el uso práctico. Para solucionar este problema, la imagen del sistema completo se escribía periódicamente en el disco, tiempo durante el cual todos los punteros se volvían a numerar para que fueran consecutivos. [9]
Microcódigo
El conjunto de instrucciones del procesador se almacenó en un área dedicada de RAM estática conocida como "almacén de control". Se accede a través de un bus dedicado de 16 bits, organizado en 16 384 palabras de 128 bits cada una. Una sección separada de "mapa de almacenamiento de control" de SRAM contiene una tabla numerada de puntos de entrada en las rutinas microcodificadas, mapeando un código de operación de 10 bits en una de las 2048 entidades. En un procesador convencional, el mapa se implementaría normalmente en lógica cableada en el decodificador de código de operación. [10]
Los códigos de operación pueden ser partes de objetos y almacenarse de la misma manera que cualquier otro dato estaría usando Objekt. Por razones de rendimiento, un banco de memoria separado conocido como NAM (y NAMARG) reservó 524,288 palabras de 40 bits que almacenan códigos de operación de 10 bits y argumentos de 30 bits. NAM conectado directamente al procesador a través de su propio bus, lo que lo hace actuar más como un caché en las arquitecturas modernas. [10]
En la práctica, el desarrollador de un lenguaje de programación primero delinearía el lenguaje ensamblador que deseaba, que sería la sintaxis subyacente del lenguaje con hasta 2048 instrucciones. Las rutinas de uso común, como las que se encuentran en stdlib en C, se codificarían usando ese lenguaje ensamblador y se escribirían en el NAM. Las simulaciones sugirieron que las rutinas Lisp escritas usando este estilo operaban unas 20 veces más rápido que una máquina Symbolics Lisp . La compañía también produjo sistemas de microcódigo similares para Smalltalk y Prolog, este último reduciendo la compleja operación de unificación de Prolog a un solo código de operación. [10]
Embalaje físico
El procesador Rekursiv constaba de cuatro chips de matriz de puertas llamados Numerik ( ALU de 32 bits ), Logik (secuenciador de instrucciones), Objekt ( unidad de gestión de memoria orientada a objetos ) y Klock (reloj del procesador y lógica de soporte). Las versiones originales tenían una frecuencia de 10 MHz. [10]
Linn tenía la intención de vender el conjunto de chips Rekursiv a los proveedores, así como producir su propia estación de trabajo con él. Inicialmente, el único producto era "HADES", el "Acelerador de hardware para sistemas expertos dinámicos", que consistía en una tarjeta VMEbus que podía conectarse a una estación de trabajo Sun-3 o Sun-4 . HADES incluyó los cuatro chips principales, 2 MB de SRAM de 45 nanosegundos (22 MHz) y 5 MB de DRAM de 100 ns (10 MHz). El acceso al disco se gestionaba mediante un programa que se ejecutaba en el sistema Sun subyacente, lo que perjudicaba significativamente el rendimiento. [10]
Notas
- ^ Según una persona que trabajaba en la empresa en ese momento, la gota que colmó el vaso fue cuando un camión Linn dañó el Porsche de Harland y dejó de ir a la oficina. [4]
- ^ El bit 33 no se menciona en ninguna de las fuentes y parece que no se utiliza.
Referencias
Citas
- ↑ a b c Pountain , 1988 , p. 341.
- ^ Rose, Seb (19 de abril de 2011). "Rekursiv" . slideshare.net . Slideshare . Consultado el 27 de febrero de 2017 .
- ^ La historia de Linn Rekursiv -REPOST
- ^ Lothian 1993 .
- ^ Fuente , 1988 , p. 348.
- ^ Fuente , 1988 , p. 342.
- ^ Pountain 1988 , págs. 348-349.
- ^ Fuente , 1988 , p. 346.
- ↑ a b c d Pountain , 1988 , p. 347.
- ↑ a b c d e Pountain , 1988 , p. 349.
Bibliografía
- Pountain, Dick (noviembre de 1988). "Rekursiv: una CPU orientada a objetos". BYTE . 13 (12): 341–349.
- Lothian, James (15 de marzo de 1993). "Re: chip Rekursiv (bastante largo)" . Grupo de noticias : comp.arch . Usenet: [email protected] .
Otras lecturas
- La página de Rekursiv del Museo de Computación Jim Austin
- The CPU Shack: chips extraños e innovadores
- Harland, David M. (agosto de 1988). Rekursiv: Arquitectura informática orientada a objetos (Serie Ellis Horwood en Computadoras y sus aplicaciones) . Ellis Horwood Ltd. ISBN 0-13-771965-5.
- Baines, Rupert (marzo de 1990). "Tomando RISCs". Mundo de la computadora personal . 13 (3): 136–140.
- Harland, David M .; Gunn, Hamish IE; Pringle, Ian A .; Beloff, Bruno (septiembre de 1986). "El Rekursiv: una arquitectura para la inteligencia artificial". Proc. AI Europa .
- Harland, David M .; Beloff, Bruno (diciembre de 1986). "Microcodificación de un conjunto de instrucciones orientadas a objetos". ACM SIGARCH Computer Architecture News . Asociación de Maquinaria Informática . 14 (5): 3. doi : 10.1145 / 18981.18982 . S2CID 17125054 .
- Harland, David M .; Beloff, Bruno (abril de 1987). "Objekt: un almacén de objetos persistentes con un recolector de basura integrado". Avisos ACM SIGPLAN . Asociación de Maquinaria Informática . 22 (4): 70. doi : 10.1145 / 24714.24723 . S2CID 14704178 .
- Rose, Seb. "Rekursiv" .
- Harland, David M. "Arquitectura de Computadora Orientada a Objetos: - Conceptos y Temas - La Arquitectura de Computadora Orientada a Objetos de REKURSIV" (PDF) .