VAX (acrónimo de Virtual Address eXtension ) es una serie de computadoras 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 finales del siglo XX. El VAX-11/780 , presentado el 25 de octubre de 1977, fue el primero de una gama de computadoras populares e influyentes que implementaron VAX ISA. La familia VAX fue un gran éxito para DEC, y los últimos miembros llegaron a principios de la década de 1990. El VAX fue sucedido por el DEC Alpha , que incluía varias características de las máquinas VAX para facilitar la transferencia desde el VAX.
VAX fue diseñado como sucesor del PDP-11 de 16 bits , uno de los miniordenadores de mayor éxito de la historia con aproximadamente 600.000 unidades vendidas. El sistema fue diseñado para ofrecer compatibilidad con versiones anteriores del PDP-11 y al mismo tiempo ampliar la memoria a una implementación completa de 32 bits y agregar memoria virtual paginada bajo demanda . El nombre VAX se refiere a su concepto de extensión de dirección virtual que permitía a los programas hacer uso de esta memoria recientemente disponible sin dejar de ser compatible con el código PDP-11 en modo de usuario no modificado. Se eligió el nombre "VAX-11", utilizado en los primeros modelos, para resaltar esta capacidad. El VAX ISA se considera un diseño de computadora con conjunto de instrucciones complejas (CISC).
DEC abandonó rápidamente la marca −11 porque la compatibilidad con PDP-11 ya no era una preocupación importante. La línea se expandió tanto a mainframes de alta gama como el VAX 9000 como a sistemas a escala de estación de trabajo como la serie VAXstation . En última instancia, la familia VAX contenía 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 CISC ISA por excelencia, [3] con su gran número de modos de direccionamiento e instrucciones de máquina fáciles de usar en lenguaje ensamblador , arquitectura de conjunto de instrucciones altamente ortogonal e instrucciones para operaciones complejas como inserción o eliminación de colas , formato de números. y evaluación polinomial . [4]
El nombre "VAX" se originó como un acrónimo de Virtual Address eXtension , tanto porque el VAX fue 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 gestionar 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, dándole el 11 en VAX-11 para resaltar esta compatibilidad. Las versiones posteriores descargaron el modo de compatibilidad y algunas de las instrucciones CISC menos utilizadas para emularlas 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 inicio de cada subprograma. Estos son patrones de bits arbitrarios que especifican, cuando se pasa el control al subprograma, qué registros deben conservarse. En la mayoría de las arquitecturas, corresponde al compilador 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. Usando 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. Esto puede complicar las técnicas de optimización que se aplican en código de máquina. [9]
El sistema operativo VAX nativo 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 el uno del otro, al igual que la implementación inicial de la instalació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 ejecutar múltiples instancias aisladas de VMS y ULTRIX en el mismo hardware. [11] VMM tenía como objetivo lograr el cumplimiento de TCSEC A1. A finales 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 soportado varios modelos VAX y se ha trabajado en la migración de Linux a la arquitectura VAX. [14] OpenBSD suspendió el 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 Asamblea 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 los años 1980.
Durante un tiempo el VAX-11/780 se utilizó como estándar en los benchmarks de CPU . Inicialmente se describió como una máquina de un MIPS , porque su rendimiento era equivalente a un IBM System/360 que se ejecutaba en un MIPS, y las implementaciones de System/360 habían sido previamente estándares de rendimiento de facto. El número real de instrucciones ejecutadas en 1 segundo fue de aproximadamente 500.000, lo que generó quejas de exageración en el marketing. El resultado fue la definición de un "VAX MIPS", la velocidad de un VAX-11/780; una computadora que funcione a 27 MIPS VAX 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 ( Unidad de rendimiento VAX ) era el término más común, porque los MIPS no se comparan bien entre diferentes arquitecturas. El término relacionado VUP de clúster se utilizó 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, un conjunto de análisis de rendimiento incluido en la distribución del software de modelado sólido BRL-CAD). El VAX-11/780 incluía un estándar subordinado. sola computadora LSI-11 que realizaba funciones de carga, arranque y diagnóstico de microcódigo para la computadora principal. Esto se eliminó de los modelos VAX posteriores. Por lo tanto, los usuarios emprendedores del VAX-11/780 podrí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 procesador de densidad única). unidad de disquete).
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 . Durante la década de 1980, la gama alta de la familia fue mejorando 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 fue abandonado poco después. introducción. Las implementaciones de CPU que consistían en una matriz de compuertas lógica de emisor acoplado múltiple (ECL) o chips de matriz de macroceldas incluían los 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 personalizados MOSFET incluían las máquinas de clase 8100 y 8200. Las máquinas VAX 11-730 y 725 de gama baja se construyeron utilizando componentes de segmento 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 algunos 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 en mover 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 requerido y se denominó arquitectura "MicroVAX". En el MicroVAX I, la ALU y los registros se implementaron como un chip de matriz de puerta única , mientras que el resto del control de la máquina era lógica convencional.
Llegó una implementación VLSI ( microprocesador ) completa de la arquitectura MicroVAX con la CPU 78032 (o DC333) y la FPU 78132 (DC335) del MicroVAX II. El 78032 fue el primer microprocesador con una unidad de administración de memoria incorporada [19] El MicroVAX II se basó en una sola placa de procesador de tamaño cuádruple que llevaba los chips del procesador y ejecutaba los sistemas operativos MicroVMS o Ultrix -32 . La máquina presentaba 1 MB de memoria integrada y una interfaz de bus Q22 con transferencias DMA . El MicroVAX II fue sucedido por muchos otros modelos MicroVAX con rendimiento y memoria mucho mejores.
Siguieron otros procesadores VLSI VAX en forma de implementaciones V-11, CVAX , CVAX SOC ("System On Chip", un CVAX de un solo chip), Rigel , Mariah y NVAX . Los microprocesadores VAX ampliaron la arquitectura a estaciones de trabajo económicas y más tarde también suplantaron a los modelos VAX de alta gama. Esta amplia gama de plataformas (desde mainframe hasta estaciones de trabajo) que utilizaban una arquitectura era única en la industria informática en ese momento. Se grabaron diversos gráficos en el chip del microprocesador CVAX. La frase CVAX... cuando te importa lo suficiente como para robar lo mejor fue grabada en un ruso entrecortado como un juego de palabras con el eslogan de Hallmark Cards , con la intención de ser un mensaje para los ingenieros soviéticos que eran conocidos por robar computadoras DEC para aplicaciones militares y reversa. diseñar el diseño de su chip. [20] [21] A finales de la década de 1980, los microprocesadores VAX habían aumentado su potencia para ser competitivos con los diseños discretos. Esto llevó al abandono de las series 8000 y 9000 y su reemplazo por modelos 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 finalmente fue reemplazada por la tecnología RISC . En 1989, DEC introdujo una gama de estaciones de trabajo y servidores que ejecutaban Ultrix , DECstation y DECsystem respectivamente, utilizando procesadores de MIPS Computer Systems . En 1992, DEC introdujo su propia arquitectura de conjunto de instrucciones RISC, Alpha AXP (posteriormente 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 dejarían de fabricarse a finales de año, [22] pero los sistemas antiguos siguen utilizándose de forma generalizada. [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 uno tiene un tamaño de un gigabyte (en el contexto del direccionamiento, 2 30 bytes):
Para VMS, se usó P0 para el espacio de proceso del usuario, P1 para la pila de procesos, S0 para el sistema operativo y se reservó S1.
El VAX tiene cuatro modos de privilegios implementados en hardware:
La palabra larga del estado del proceso contiene 32 bits:
El primer sistema basado en VAX fue el VAX-11/780 , miembro de la familia VAX-11 . El VAX 8600 de gama alta reemplazó al VAX-11/780 en octubre de 1984 y a mediados de la década de 1980 se le unieron las minicomputadoras MicroVAX de nivel básico y las estaciones de trabajo VAXstation . 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 fallos , 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ó la capacidad de otorgar acceso de escritura a más de una CPU DEC, pero no al mismo tiempo, a un disco compartido. Implementaron una mejora llamada SImultaneous Machine ACceSs ( SIMACS ), [24] [25] que permitió a su controlador de disco especial establecer un indicador de semáforo para el acceso al disco, permitiendo múltiples ESCRITURAS en los mismos archivos; el disco es compartido por varios sistemas DEC. SIMACS también existía en los sistemas PDP-11 RSTS .
Los sistemas cancelados incluyen el BVAX , un VAX de alta gama basado en lógica de emisor acoplado (ECL), y otros dos modelos VAX basados en ECL: Argonaut y Raven . [26] Raven fue cancelado en 1990. [27] También se canceló un VAX llamado Gemini , que era un recurso alternativo en caso de que fallara el Scorpio basado en LSI . Nunca se envió.
Se produjeron varios clones de VAX, tanto autorizados como no autorizados. Ejemplos incluyen:
... arquitecturas de conjuntos de instrucciones, elegimos VAX como conjunto de instrucciones fácil de programar, una ventaja
Esp. destaca por su gran conjunto de instrucciones fáciles de usar para programadores ensambladores, una ventaja que