백스 | 1977
VAX
VAX는 Digital Equipment Corporation(DEC)에서 개발한 32비트 명령어 집합 아키텍처(ISA)와 가상 메모리를 특징으로 하는 컴퓨터 시리즈이다. VAX-11/780은 1977년 10월 25일에 처음 소개되었으며, VAX ISA를 구현한 인기 있고 영향력 있는 컴퓨터의 첫 번째 모델이다. VAX 가족은 DEC의 큰 성공을 거두었고, 마지막 모델은 1990년대 초에 출시되었다. VAX는 DEC Alpha로 대체되었으며, 이는 VAX에서의 포팅을 용이하게 하기 위해 여러 기능을 포함하고 있다.
VAX는 16비트 PDP-11의 후속으로 설계되었으며, PDP-11과의 하위 호환성을 제공하면서 32비트 구현으로 메모리를 확장하고 수요 기반 가상 메모리를 추가하였다. VAX라는 이름은 새로운 메모리를 활용할 수 있는 가상 주소 확장 개념을 나타내며, 수정되지 않은 사용자 모드 PDP-11 코드와의 호환성을 유지한다. VAX ISA는 복잡한 명령어 집합 컴퓨터(CISC) 설계로 간주된다.
DEC는 PDP-11 호환성이 더 이상 주요 관심사가 아니게 되면서 −11 브랜드를 빠르게 포기하였다. VAX 라인은 VAX 9000과 같은 고급 메인프레임과 VAXstation 시리즈와 같은 워크스테이션 규모 시스템으로 확장되었다. VAX 가족은 궁극적으로 10개의 독특한 설계와 100개 이상의 개별 모델을 포함하고 있으며, 모두 서로 호환되고 일반적으로 VAX/VMS 운영 체제를 실행한다.
VAX는 매우 많은 어셈블리 언어 프로그래머 친화적인 주소 지정 모드와 기계 명령어, 고도로 직교적인 명령어 집합 아키텍처, 큐 삽입 또는 삭제, 숫자 형식 지정, 다항식 평가와 같은 복잡한 작업을 위한 명령어로 인해 전형적인 CISC ISA로 인식된다.
VAX라는 이름은 가상 주소 확장을 의미하는 약어로, VAX가 이전의 16비트 PDP-11의 32비트 확장으로 여겨졌기 때문이다. 초기 VAX 프로세서의 버전은 PDP-11의 많은 명령어를 에뮬레이트하는 "호환 모드"를 구현하였으며, 후속 버전에서는 호환 모드와 덜 사용되는 CISC 명령어를 운영 체제 소프트웨어의 에뮬레이션으로 오프로드하였다.
VAX 명령어 집합은 강력하고 직교적으로 설계되었으며, 초기에는 많은 프로그램이 어셈블리 언어로 작성되었기 때문에 "프로그래머 친화적인" 명령어 집합이 중요하였다. 시간이 지나면서 더 많은 프로그램이 고급 프로그래밍 언어로 작성되면서 명령어 집합은 덜 가시화되었고, 이에 대해 걱정하는 사람은 컴파일러 작성자뿐이었다.
VAX 명령어 집합의 한 가지 특이한 점은 각 서브프로그램의 시작 부분에 레지스터 마스크가 존재한다는 것이다. 이는 서브프로그램으로 제어가 전달될 때 어떤 레지스터를 보존할지를 지정하는 임의의 비트 패턴이다. 대부분의 아키텍처에서는 컴파일러가 필요한 데이터를 저장하기 위한 명령어를 생성해야 하며, 일반적으로 임시 저장을 위해 호출 스택을 사용한다. VAX에서는 16개의 레지스터가 있어 데이터를 저장하기 위해 16개의 명령어가 필요할 수 있으며, 복원하기 위해 또 다른 16개가 필요하다. 마스크를 사용하면 단일 16비트 값이 내부적으로 하드웨어에서 동일한 작업을 수행하여 시간과 메모리를 절약할 수 있다.
레지스터 마스크는 실행 가능한 코드 내에 데이터가 포함된 형태이기 때문에 기계 코드를 선형으로 파싱하는 것을 어렵게 만들 수 있다. 이는 기계 코드에 적용되는 최적화 기술을 복잡하게 만들 수 있다.
VAX의 기본 운영 체제는 Digital의 VAX/VMS이며, 1991년 또는 1992년 초에 Alpha로 포팅되면서 OpenVMS로 이름이 변경되었다. VAX 아키텍처와 VMS 운영 체제는 서로 최대한의 이점을 얻기 위해 "동시 엔지니어링"되었으며, VAXcluster 시설의 초기 구현도 마찬가지이다.
1980년대에는 VAX 아키텍처를 위한 하이퍼바이저인 VMM(가상 머신 모니터)이 개발되었으며, 이는 동일한 하드웨어에서 여러 개의 격리된 VMS 및 ULTRIX 인스턴스를 실행할 수 있도록 하였다. VMM은 TCSEC A1 준수를 달성하기 위해 설계되었으며, 1980년대 후반에는 VAX 8000 시리즈 하드웨어에서 운영되었지만 고객에게 출시되기 전에 중단되었다.
기타 VAX 운영 체제로는 다양한 Berkeley Software Distribution(BSD) UNIX 버전, Ultrix-32, VAXELN, Xinu 등이 있으며, 최근에는 NetBSD와 OpenBSD가 다양한 VAX 모델을 지원하고 Linux를 VAX 아키텍처로 포팅하는 작업도 진행되었다. OpenBSD는 2016년 9월에 이 아키텍처에 대한 지원을 중단하였다.
VAX는 Digital Equipment Corporation(DEC)에서 개발한 32비트 명령어 집합 아키텍처(ISA)와 가상 메모리를 특징으로 하는 컴퓨터 시리즈이다. VAX-11/780은 1977년 10월 25일에 처음 소개되었으며, VAX ISA를 구현한 인기 있고 영향력 있는 컴퓨터의 첫 번째 모델이다. VAX 가족은 DEC의 큰 성공을 거두었고, 마지막 모델은 1990년대 초에 출시되었다. VAX는 DEC Alpha로 대체되었으며, 이는 VAX에서의 포팅을 용이하게 하기 위해 여러 기능을 포함하고 있다.
VAX는 16비트 PDP-11의 후속으로 설계되었으며, PDP-11과의 하위 호환성을 제공하면서 32비트 구현으로 메모리를 확장하고 수요 기반 가상 메모리를 추가하였다. VAX라는 이름은 새로운 메모리를 활용할 수 있는 가상 주소 확장 개념을 나타내며, 수정되지 않은 사용자 모드 PDP-11 코드와의 호환성을 유지한다. VAX ISA는 복잡한 명령어 집합 컴퓨터(CISC) 설계로 간주된다.
DEC는 PDP-11 호환성이 더 이상 주요 관심사가 아니게 되면서 −11 브랜드를 빠르게 포기하였다. VAX 라인은 VAX 9000과 같은 고급 메인프레임과 VAXstation 시리즈와 같은 워크스테이션 규모 시스템으로 확장되었다. VAX 가족은 궁극적으로 10개의 독특한 설계와 100개 이상의 개별 모델을 포함하고 있으며, 모두 서로 호환되고 일반적으로 VAX/VMS 운영 체제를 실행한다.
VAX는 매우 많은 어셈블리 언어 프로그래머 친화적인 주소 지정 모드와 기계 명령어, 고도로 직교적인 명령어 집합 아키텍처, 큐 삽입 또는 삭제, 숫자 형식 지정, 다항식 평가와 같은 복잡한 작업을 위한 명령어로 인해 전형적인 CISC ISA로 인식된다.
VAX라는 이름은 가상 주소 확장을 의미하는 약어로, VAX가 이전의 16비트 PDP-11의 32비트 확장으로 여겨졌기 때문이다. 초기 VAX 프로세서의 버전은 PDP-11의 많은 명령어를 에뮬레이트하는 "호환 모드"를 구현하였으며, 후속 버전에서는 호환 모드와 덜 사용되는 CISC 명령어를 운영 체제 소프트웨어의 에뮬레이션으로 오프로드하였다.
VAX 명령어 집합은 강력하고 직교적으로 설계되었으며, 초기에는 많은 프로그램이 어셈블리 언어로 작성되었기 때문에 "프로그래머 친화적인" 명령어 집합이 중요하였다. 시간이 지나면서 더 많은 프로그램이 고급 프로그래밍 언어로 작성되면서 명령어 집합은 덜 가시화되었고, 이에 대해 걱정하는 사람은 컴파일러 작성자뿐이었다.
VAX 명령어 집합의 한 가지 특이한 점은 각 서브프로그램의 시작 부분에 레지스터 마스크가 존재한다는 것이다. 이는 서브프로그램으로 제어가 전달될 때 어떤 레지스터를 보존할지를 지정하는 임의의 비트 패턴이다. 대부분의 아키텍처에서는 컴파일러가 필요한 데이터를 저장하기 위한 명령어를 생성해야 하며, 일반적으로 임시 저장을 위해 호출 스택을 사용한다. VAX에서는 16개의 레지스터가 있어 데이터를 저장하기 위해 16개의 명령어가 필요할 수 있으며, 복원하기 위해 또 다른 16개가 필요하다. 마스크를 사용하면 단일 16비트 값이 내부적으로 하드웨어에서 동일한 작업을 수행하여 시간과 메모리를 절약할 수 있다.
레지스터 마스크는 실행 가능한 코드 내에 데이터가 포함된 형태이기 때문에 기계 코드를 선형으로 파싱하는 것을 어렵게 만들 수 있다. 이는 기계 코드에 적용되는 최적화 기술을 복잡하게 만들 수 있다.
VAX의 기본 운영 체제는 Digital의 VAX/VMS이며, 1991년 또는 1992년 초에 Alpha로 포팅되면서 OpenVMS로 이름이 변경되었다. VAX 아키텍처와 VMS 운영 체제는 서로 최대한의 이점을 얻기 위해 "동시 엔지니어링"되었으며, VAXcluster 시설의 초기 구현도 마찬가지이다.
1980년대에는 VAX 아키텍처를 위한 하이퍼바이저인 VMM(가상 머신 모니터)이 개발되었으며, 이는 동일한 하드웨어에서 여러 개의 격리된 VMS 및 ULTRIX 인스턴스를 실행할 수 있도록 하였다. VMM은 TCSEC A1 준수를 달성하기 위해 설계되었으며, 1980년대 후반에는 VAX 8000 시리즈 하드웨어에서 운영되었지만 고객에게 출시되기 전에 중단되었다.
기타 VAX 운영 체제로는 다양한 Berkeley Software Distribution(BSD) UNIX 버전, Ultrix-32, VAXELN, Xinu 등이 있으며, 최근에는 NetBSD와 OpenBSD가 다양한 VAX 모델을 지원하고 Linux를 VAX 아키텍처로 포팅하는 작업도 진행되었다. OpenBSD는 2016년 9월에 이 아키텍처에 대한 지원을 중단하였다.
VAX-11/780은 1977년 10월 25일 Digital Equipment Corporation의 주주 연례 회의에서 소개된 첫 번째 VAX 모델로, Bill Strecker가 아키텍처를 담당하였다. 이후 다양한 가격, 성능 수준 및 용량을 가진 여러 모델이 개발되었으며, VAX 슈퍼 미니컴퓨터는 1980년대 초에 매우 인기가 있었다.
VAX-11/780은 한동안 CPU 벤치마크의 기준으로 사용되었으며, 초기에는 1 MIPS 머신으로 설명되었다. 실제로 1초에 실행된 명령어 수는 약 500,000개였으며, 이는 마케팅 과장에 대한 불만을 초래하였다. VAX MIPS라는 정의가 생겨났으며, 27 VAX MIPS로 작동하는 컴퓨터는 VAX-11/780보다 약 27배 빠르게 동일한 프로그램을 실행할 수 있었다.
Digital 커뮤니티 내에서는 VUP(VAX Unit of Performance)라는 용어가 더 일반적으로 사용되었으며, MIPS는 서로 다른 아키텍처 간 비교가 잘 되지 않았다. VAX-11/780은 독립형 LSI-11 컴퓨터를 포함하여 마이크로코드 로드, 부팅 및 진단 기능을 수행하였으나, 이후 VAX 모델에서는 이 기능이 제거되었다.
VAX는 여러 가지 구현을 거쳤으며, 원래 VAX 11/780은 TTL로 구현되어 4x5 피트 캐비닛을 차지하였다. 1980년대에는 고급 모델이 지속적으로 개선되었고, VAX 9000이 1989년 10월에 도입되었으나, 너무 복잡하고 비쌌기 때문에 곧 중단되었다. VAX 8600 및 8800 슈퍼미니와 VAX 9000 메인프레임 클래스 머신은 여러 개의 ECL 게이트 배열 또는 매크로셀 배열 칩으로 구성된 CPU 구현을 포함하였다.
MicroVAX I는 VAX 가족 내에서 중요한 전환점을 나타내었다. MicroVAX I는 복잡한 VAX 명령어를 에뮬레이션 소프트웨어로 이동시키는 첫 번째 VAX 구현이었다. MicroVAX II는 MicroVAX 아키텍처의 전체 VLSI 구현을 제공하였으며, 78032 CPU와 78132 FPU를 포함하였다. MicroVAX II는 단일 쿼드 크기 프로세서 보드에서 작동하였고, 1MB의 온보드 메모리와 DMA 전송을 지원하는 Q22 버스 인터페이스를 특징으로 하였다.
이후 VAX 마이크로프로세서는 V-11, CVAX, Rigel, Mariah 및 NVAX 구현 형태로 이어졌다. VAX 마이크로프로세서는 저렴한 워크스테이션으로 아키텍처를 확장하였고, 고급 VAX 모델을 대체하였다. 1980년대 후반까지 VAX 마이크로프로세서는 성능이 향상되어 분리형 설계와 경쟁할 수 있게 되었다.
DEC의 제품군에서 VAX 아키텍처는 결국 RISC 기술로 대체되었으며, 1989년 DEC는 MIPS Computer Systems의 프로세서를 사용하는 Ultrix를 실행하는 워크스테이션과 서버를 도입하였다. 1992년 DEC는 Alpha AXP라는 RISC 명령어 집합 아키텍처를 도입하였다.
2000년 8월, Compaq는 남아 있는 VAX 모델이 연말까지 단종될 것이라고 발표하였으나, 구형 시스템은 여전히 널리 사용되고 있다. VMS는 현재 VMS Software Incorporated에 의해 개발되고 있으며, Alpha, HPE Integrity 및 x86-64 플랫폼에 대해서만 지원된다.
