El ROMP es un microprocesador de conjunto de instrucciones reducido (RISC) diseñado por IBM a finales de la década de 1970. También se lo conoce como Research OPD Miniprocessor (en honor a las dos divisiones de IBM que colaboraron en su creación, IBM Research y Office Products Division (OPD)) y 032. [ 1] El ROMP se desarrolló originalmente para equipos de oficina y computadoras pequeñas, [2] con la intención de que fuera una continuación del microprocesador IBM OPD Mini Processor de mediados de la década de 1970 , [ cita requerida ] que se utilizó en el sistema de procesamiento de textos IBM Office System/6 . Los primeros ejemplos estuvieron disponibles en 1981, y se utilizó por primera vez comercialmente en el IBM RT PC anunciado en enero de 1986. Durante un tiempo, se planeó que el RT PC fuera un ordenador personal , y que el ROMP reemplazara al Intel 8088 que se encontraba en el IBM Personal Computer . Sin embargo, el RT PC se reposicionó más tarde como un ordenador de estación de trabajo científico y de ingeniería . Una versión CMOS posterior del ROMP se utilizó por primera vez en la placa de coprocesador del Sistema Académico IBM 6152 presentado en 1988, y más tarde apareció en algunos modelos de PC RT.
El trabajo de arquitectura del ROMP comenzó a fines de la primavera de 1977, como una derivación del procesador RISC 801 de IBM Research (de ahí el nombre "Research" en el acrónimo). La mayoría de los cambios arquitectónicos se realizaron para reducir costos, como agregar instrucciones de 16 bits para lograr una mayor eficiencia en el uso de bytes. El ROMP original tenía una arquitectura de 24 bits, pero el conjunto de instrucciones se cambió a 32 bits unos años después de comenzar el desarrollo. [3]
Los primeros chips estuvieron listos a principios de 1981, lo que convirtió a ROMP en el primer RISC industrial. El procesador se reveló en la Conferencia Internacional de Circuitos de Estado Sólido en 1984 [4] ROMP apareció por primera vez en un producto comercial como el procesador para la estación de trabajo IBM RT PC , que se presentó en 1986. Para proporcionar ejemplos para la producción de RT PC, la producción en volumen de ROMP y su MMU comenzó en 1985. [4] El retraso entre la finalización del diseño de ROMP y la introducción de RT PC fue causado por planes de software demasiado ambiciosos para RT PC y su sistema operativo (OS). Este SO virtualizaba el hardware y podía albergar varios otros sistemas operativos. Esta tecnología, llamada virtualización , aunque común en los sistemas mainframe , solo comenzó a ganar terreno en sistemas más pequeños en el siglo XXI. Una versión CMOS mejorada de ROMP se utilizó por primera vez en la estación de trabajo IBM 6152 Academic System , y más tarde en algunos modelos de RT PC.
IBM Research utilizó el ROMP en su Research Parallel Processor Prototype (RP3), un multiprocesador de memoria compartida escalable experimental temprano que admitía hasta 512 procesadores detallado por primera vez en 1985; y la versión CMOS en su ACE, un multiprocesador NUMA experimental que estuvo operativo en 1988. [5]
La arquitectura del ROMP se basaba en la versión original del miniordenador IBM Research 801. Las principales diferencias eran un mayor tamaño de palabra (32 bits en lugar de 24) y la inclusión de memoria virtual . [6] La arquitectura admitía números enteros de 8, 16 y 32 bits, direccionamiento de 32 bits y un espacio de direcciones virtuales de 40 bits . Tenía un registro de puntero de instrucciones y dieciséis registros de propósito general de 32 bits . El microprocesador estaba controlado por 118 instrucciones simples de 16 y 32 bits. [7]
La memoria virtual de la ROMP tiene un espacio de direcciones segmentado de 40 bits (1 TB) que consta de 4096 segmentos de 256 MB. La dirección virtual de 40 bits se forma en la MMU concatenando un identificador de segmento de 12 bits con 28 bits de orden inferior de una dirección virtual de 32 bits calculada mediante ROMP. El identificador de segmento se obtiene de un conjunto de 16 identificadores de segmento almacenados en la MMU, direccionados por los cuatro bits de orden superior de la dirección virtual de 32 bits calculada mediante ROMP. [8]
El ROMP es un procesador escalar con una secuencia de tres etapas. [7] En la primera etapa, si hay instrucciones en el búfer de precarga de instrucciones de 16 bytes, se buscaba una instrucción, se decodificaba y se leían los operandos del archivo de registro de propósito general. El búfer de precarga de instrucciones leía una palabra de 32 bits de la memoria siempre que el ROMP no estuviera accediendo a ella. [7] Las instrucciones se ejecutaban en la segunda etapa y se volvían a escribir en el archivo de registro de propósito general en la tercera etapa. El ROMP usaba una red de derivación y programaba adecuadamente las lecturas y escrituras del archivo de registro para admitir la ejecución consecutiva de instrucciones dependientes. [7] La mayoría de las instrucciones de registro a registro se ejecutaban en un ciclo; de las 118 instrucciones, 84 tenían una latencia de un solo ciclo. [9] El ROMP tenía un circuito integrado complementario desarrollado por IBM que recibió el nombre en código Rosetta durante el desarrollo. [10] Rosetta era una unidad de gestión de memoria (MMU) y proporcionaba a la ROMP funciones de traducción de direcciones, un búfer de traducción y un búfer de almacenamiento. [7]
El ROMP y Rosetta se implementaron originalmente en una tecnología NMOS de compuerta de silicio de 2 μm de IBM con dos niveles de interconexión de metal. [11] [4] El ROMP consta de 45.000 transistores y tiene un tamaño de 7,65 × 7,65 mm (58,52 mm 2 ), mientras que Rosetta consta de 61.500 transistores y tiene un tamaño de 9,02 × 9,02 mm (81,36 mm 2 ). Ambos están empaquetados en matrices de rejilla de pines cerámicos de 135 pines . [4] Posteriormente se desarrolló una versión CMOS del ROMP y Rosetta (llamada ROMP-C y Rosetta-C).