VAX (acrónimo de Virtual Address eXtension ) es una serie de computadoras que cuentan con una arquitectura de conjunto de instrucciones (ISA) de 32 bits y memoria virtual que fue desarrollada y vendida por Digital Equipment Corporation (DEC) a fines del siglo XX. La VAX-11/780 , presentada el 25 de octubre de 1977, fue la primera de una gama de computadoras populares e influyentes que implementaron la ISA VAX. La familia VAX fue un gran éxito para DEC, y los últimos miembros llegaron a principios de la década de 1990. La VAX fue reemplazada por la DEC Alpha , que incluía varias características de las máquinas VAX para facilitar la portabilidad desde VAX.
VAX fue diseñado como sucesor del PDP-11 de 16 bits , uno de los miniordenadores más exitosos de la historia, con aproximadamente 600.000 unidades vendidas. El sistema fue diseñado para ofrecer compatibilidad con el PDP-11, al tiempo que ampliaba la memoria a una implementación completa de 32 bits y añadía memoria virtual paginada a demanda . El nombre VAX hace referencia a su concepto de extensión de dirección virtual , que permitía a los programas hacer uso de esta memoria recién disponible y al mismo tiempo seguir siendo compatible con el código PDP-11 en modo usuario sin modificar. El nombre "VAX-11", utilizado en los primeros modelos, fue elegido para destacar esta capacidad. El VAX ISA se considera un diseño de ordenador de conjunto de instrucciones complejo (CISC).
DEC abandonó rápidamente la marca −11, ya que la compatibilidad con PDP-11 ya no era una preocupación importante. La línea se expandió tanto a mainframes de gama alta como el VAX 9000 como a sistemas a escala de estación de trabajo como la serie VAXstation . La familia VAX finalmente incluyó diez diseños distintos y más de 100 modelos individuales en total. Todos ellos eran compatibles entre sí y normalmente ejecutaban el sistema operativo VAX/VMS .
VAX ha sido percibido como el ISA CISC por excelencia, [3] con su gran cantidad de modos de direccionamiento y de instrucciones de máquina amigables para el programador en lenguaje ensamblador , una arquitectura de conjunto de instrucciones altamente ortogonal e instrucciones para operaciones complejas como inserción o eliminación de colas , formateo de números y evaluación de polinomios . [4]
El nombre "VAX" se originó como un acrónimo de Virtual Address eXtension , tanto porque VAX era visto como una extensión de 32 bits del antiguo PDP-11 de 16 bits como porque fue (después de Prime Computer ) uno de los primeros en adoptar la memoria virtual para administrar este espacio de direcciones más grande.
Las primeras versiones del procesador VAX implementan un "modo de compatibilidad" que emula muchas de las instrucciones del PDP-11, y se le asigna el 11 en VAX-11 para resaltar esta compatibilidad. Las versiones posteriores transfirieron el modo de compatibilidad y algunas de las instrucciones CISC menos utilizadas a la emulación en el software del sistema operativo.
El conjunto de instrucciones VAX fue diseñado para ser potente y ortogonal . [5] Cuando se introdujo, muchos programas estaban escritos en lenguaje ensamblador, por lo que era importante tener un conjunto de instrucciones "amigable para el programador". [6] [7] Con el tiempo, a medida que se escribían más programas en lenguajes de programación de alto nivel , el conjunto de instrucciones se volvió menos visible y los únicos que se preocupaban mucho por él eran los escritores de compiladores.
Un aspecto inusual del conjunto de instrucciones VAX es la presencia de máscaras de registro [8] al comienzo de cada subprograma. Se trata de patrones de bits arbitrarios que especifican, cuando se pasa el control al subprograma, qué registros se deben conservar. En la mayoría de las arquitecturas, es el compilador el que debe producir instrucciones para guardar los datos necesarios, normalmente utilizando la pila de llamadas para el almacenamiento temporal. En el VAX, con 16 registros, esto podría requerir 16 instrucciones para guardar los datos y otras 16 para restaurarlos. Al utilizar la máscara, un único valor de 16 bits realiza las mismas operaciones internamente en el hardware, ahorrando tiempo y memoria. [5]
Dado que las máscaras de registro son una forma de datos integrados en el código ejecutable, pueden dificultar el análisis lineal del código de máquina, lo que puede complicar las técnicas de optimización que se aplican al código de máquina. [9]
El sistema operativo nativo VAX es VAX/VMS de Digital (renombrado a OpenVMS en 1991 o principios de 1992 cuando fue portado a Alpha , modificado para cumplir con los estándares POSIX y calificado como compatible con XPG4 por el consorcio X/Open ). [10] La arquitectura VAX y el sistema operativo VMS fueron " diseñados simultáneamente " para aprovechar al máximo cada uno de ellos, al igual que la implementación inicial de la función VAXcluster .
Durante la década de 1980, se desarrolló en Digital un hipervisor para la arquitectura VAX llamado VMM (Virtual Machine Monitor), también conocido como VAX Security Kernel , con el objetivo de permitir que se ejecutaran múltiples instancias aisladas de VMS y ULTRIX en el mismo hardware. [11] VMM tenía como objetivo lograr la conformidad con TCSEC A1. A fines de la década de 1980, estaba operativo en el hardware de la serie VAX 8000 , pero se abandonó antes de su lanzamiento a los clientes.
Otros sistemas operativos VAX han incluido varias versiones de Berkeley Software Distribution (BSD) UNIX hasta 4.3BSD , Ultrix -32, VAXELN y Xinu . Más recientemente, NetBSD [12] y OpenBSD [13] han admitido varios modelos VAX y se ha trabajado en la adaptación de Linux a la arquitectura VAX. [14] OpenBSD dejó de brindar soporte para la arquitectura en septiembre de 2016. [15]
El primer modelo VAX vendido fue el VAX-11/780 , que se presentó el 25 de octubre de 1977 en la Reunión Anual de Accionistas de Digital Equipment Corporation. [16] Bill Strecker, estudiante de doctorado de C. Gordon Bell en la Universidad Carnegie Mellon , fue el responsable de la arquitectura. [17] Posteriormente se crearon muchos modelos diferentes con diferentes precios, niveles de rendimiento y capacidades. Las superminicomputadoras VAX fueron muy populares a principios de la década de 1980.
Durante un tiempo, el VAX-11/780 se utilizó como estándar en las pruebas comparativas de CPU . Inicialmente se describió como una máquina de un MIPS , porque su rendimiento era equivalente al de un IBM System/360 que funcionaba a un MIPS, y las implementaciones del System/360 habían sido previamente estándares de rendimiento de facto. El número real de instrucciones ejecutadas en 1 segundo era de aproximadamente 500.000, lo que dio lugar a quejas de exageración de marketing. El resultado fue la definición de un "VAX MIPS", la velocidad de un VAX-11/780; un ordenador que funcionara a 27 VAX MIPS ejecutaría el mismo programa aproximadamente 27 veces más rápido que el VAX-11/780.
Dentro de la comunidad digital, el término VUP ( VAX Unit of Performance ) era el término más común, porque los MIPS no se comparan bien en diferentes arquitecturas. El término relacionado cluster VUPs se usó informalmente para describir el rendimiento agregado de un VAXcluster . (El rendimiento del VAX-11/780 todavía sirve como métrica de referencia en BRL-CAD Benchmark, una suite de análisis de rendimiento incluida en la distribución de software de modelado sólido BRL-CAD). El VAX-11/780 incluía una computadora LSI-11 independiente subordinada que realizaba funciones de carga de microcódigo, arranque y diagnóstico para la computadora principal. Esto se eliminó de los modelos VAX posteriores. Por lo tanto, los usuarios emprendedores del VAX-11/780 podían ejecutar tres sistemas operativos diferentes de Digital Equipment Corporation: VMS en el procesador VAX (desde los discos duros) y RSX-11S o RT-11 en el LSI-11 (desde el disquete de unidad única de densidad única).
El VAX pasó por muchas implementaciones diferentes. El VAX 11/780 original se implementó en TTL y llenó un gabinete de cuatro por cinco pies [18] con una sola CPU . A lo largo de la década de 1980, la gama alta de la familia se mejoró continuamente utilizando componentes discretos cada vez más rápidos, una evolución que terminó con la introducción del VAX 9000 en octubre de 1989. Este diseño resultó demasiado complejo y costoso y finalmente se abandonó poco después de su introducción. Las implementaciones de CPU que consistían en múltiples chips de matriz de compuertas de lógica acoplada a emisor (ECL) o matriz de macroceldas incluyeron las superminis VAX 8600 y 8800 y finalmente las máquinas de clase mainframe VAX 9000. Las implementaciones de CPU que consistían en múltiples chips MOSFET personalizados incluyeron las máquinas de clase 8100 y 8200. Las máquinas de gama baja VAX 11-730 y 725 se construyeron utilizando componentes de rebanada de bits AMD Am2901 para la ALU.
El MicroVAX I representó una transición importante dentro de la familia VAX. En el momento de su diseño, todavía no era posible implementar la arquitectura VAX completa como un único chip VLSI (o incluso unos pocos chips VLSI como se hizo más tarde con la CPU V-11 del VAX 8200/8300). En cambio, el MicroVAX I fue la primera implementación de VAX que trasladó algunas de las instrucciones VAX más complejas (como el decimal empaquetado y los códigos de operación relacionados) al software de emulación. Esta partición redujo sustancialmente la cantidad de microcódigo necesario y se denominó la arquitectura "MicroVAX". En el MicroVAX I, la ALU y los registros se implementaron como un único chip de matriz de puertas, mientras que el resto del control de la máquina era lógica convencional.
Una implementación completa de VLSI ( microprocesador ) de la arquitectura MicroVAX llegó con la CPU 78032 (o DC333) y la FPU 78132 (DC335) del MicroVAX II. El 78032 fue el primer microprocesador con una unidad de gestión de memoria incorporada [19]. El MicroVAX II se basaba en una única placa de procesador de tamaño cuádruple que transportaba los chips del procesador y ejecutaba los sistemas operativos MicroVMS o Ultrix -32 . La máquina presentaba 1 MB de memoria incorporada y una interfaz de bus Q22 con transferencias DMA . El MicroVAX II fue sucedido por muchos otros modelos MicroVAX con un rendimiento y una memoria muy mejorados.
Los procesadores VAX VLSI posteriores siguieron en forma de V-11, CVAX , CVAX SOC ("System On Chip", un CVAX de un solo chip), Rigel , Mariah y NVAX . Los microprocesadores VAX extendieron la arquitectura a estaciones de trabajo económicas y más tarde también suplantaron a los modelos VAX de gama alta. Esta amplia gama de plataformas (desde mainframe hasta estación de trabajo) que usaban una arquitectura era única en la industria informática en ese momento. Varios gráficos se grabaron en la matriz del microprocesador CVAX. La frase CVAX... cuando te importa lo suficiente como para robar lo mejor fue grabada en ruso defectuoso como un juego de palabras con un eslogan de Hallmark Cards , con la intención de enviar un mensaje a los ingenieros soviéticos que eran conocidos por robar computadoras DEC para aplicaciones militares y realizar ingeniería inversa del diseño de sus chips. [20] [21] A fines de la década de 1980, los microprocesadores VAX habían crecido en potencia para ser competitivos con los diseños discretos. Esto llevó al abandono de las series 8000 y 9000 y su reemplazo por modelos del VAX 6000 impulsados por Rigel, y más tarde por sistemas VAX 7000 impulsados por NVAX .
En la oferta de productos de DEC, la arquitectura VAX fue finalmente reemplazada por la tecnología RISC . En 1989, DEC presentó una gama de estaciones de trabajo y servidores que ejecutaban Ultrix , DECstation y DECsystem respectivamente, utilizando procesadores de MIPS Computer Systems . En 1992, DEC presentó su propia arquitectura de conjunto de instrucciones RISC, Alpha AXP (más tarde rebautizada como Alpha), y su propio microprocesador basado en Alpha, el DECchip 21064 , un diseño de 64 bits de alto rendimiento capaz de ejecutar OpenVMS.
En agosto de 2000, Compaq anunció que los modelos VAX restantes se descontinuarían a fines de año, [22] pero los sistemas antiguos siguen siendo ampliamente utilizados. [23] Los emuladores VAX basados en software Stromasys CHARON-VAX y SIMH siguen estando disponibles. VMS ahora es desarrollado por VMS Software Incorporated, aunque solo para las plataformas Alpha , HPE Integrity y x86-64 .
La memoria virtual VAX se divide en cuatro secciones. Cada una tiene un tamaño de un gigabyte (en el contexto del direccionamiento, 230 bytes ):
Para VMS, P0 se utilizó para el espacio de proceso del usuario, P1 para la pila de procesos, S0 para el sistema operativo y S1 estaba reservado.
El VAX tiene cuatro modos de privilegio implementados en hardware:
La palabra larga del estado del proceso contiene 32 bits:
El primer sistema basado en VAX fue el VAX-11/780 , un miembro de la familia VAX-11 . El VAX 8600 de gama alta reemplazó al VAX-11/780 en octubre de 1984 y se le unieron las minicomputadoras MicroVAX de nivel de entrada y las estaciones de trabajo VAXstation a mediados de la década de 1980. El MicroVAX fue reemplazado por el VAX 4000 , el VAX 8000 fue reemplazado por el VAX 6000 a fines de la década de 1980 y se introdujo el VAX 9000 de clase mainframe . A principios de la década de 1990, se introdujo el VAXft tolerante a fallas , al igual que el VAX 7000/10000 compatible con Alpha . Se vendió una variante de varios sistemas basados en VAX como VAXserver .
System Industries desarrolló una capacidad para otorgar a más de una CPU DEC, pero no al mismo tiempo, acceso de escritura a un disco compartido. Implementaron una mejora llamada SIMULTANEUS MÁQUINA ACCEs ( SIMULCS ), [24] [25] que permitió que su controlador de disco especial estableciera un indicador de semáforo para el acceso al disco, lo que permite múltiples ESCRITURAS en los mismos archivos; el disco es compartido por múltiples sistemas DEC. SIMACS también existía en los sistemas PDP-11 RSTS .
Entre los sistemas cancelados se encuentran el BVAX , un VAX de alta gama basado en lógica acoplada a emisores (ECL), y otros dos modelos de VAX basados en ECL: Argonaut y Raven . [26] Raven fue cancelado en 1990. [27] También se canceló un VAX llamado Gemini , que era una alternativa en caso de que fallara el Scorpio basado en LSI . Nunca se envió.
Se produjeron varios clones de VAX, tanto autorizados como no autorizados. Algunos ejemplos son:
... arquitecturas de conjuntos de instrucciones, elegimos el VAX como conjunto de instrucciones fácil de usar para el programador, un activo
Destaca especialmente por su amplio conjunto de instrucciones, fácil de usar para programadores ensambladores, una ventaja que