DEC PRISM

**PRISM** (**P**arallel **R**educed **I**nstruction **S**et **M**achine)은 디지털 이큅먼트 코퍼레이션(DEC)이 개발한 32비트 RISC 명령어 집합(ISA)이다. 이는 1982년에서 1985년 사이의 여러 DEC 연구 프로젝트의 결과물이었으며, 프로젝트는 계속해서 변화하는 요구 사항과 계획된 용도로 인해 도입이 지연되었다. 이 과정에서 결국 새로운 유닉스 워크스테이션 라인업에 이 설계를 사용하기로 결정되었다.

**microPrism** 버전의 산술 논리 장치(ALU)는 1988년 4월에 설계를 마쳤고 샘플이 제작되었으나, 부동소수점 장치(FPU) 및 메모리 관리 장치(MMU)와 같은 다른 구성 요소의 설계는 그해 여름까지도 완료되지 않았다. 이때 DEC 경영진은 MIPS 기반 시스템을 지지하며 프로젝트를 취소하기로 결정했다. PRISM 아키텍처를 위해 MICA라는 코드명의 운영체제가 개발되었는데, 이는 PRISM에서 VAX/VMS와 ULTRIX를 모두 대체할 목적이었다. 하지만 MICA의 원래 목표였던 다중 퍼스낼리티 구현이 불가능한 것으로 드러나면서 결국 독립적인 PRISM용 ULTRIX 이식판이 만들어졌다.

PRISM의 취소는 DEC 내부에 큰 영향을 미쳤다. 다음 해에 많은 팀원이 회사를 떠났으며, 특히 데이비드 커틀러는 마이크로소프트로 옮겨 윈도우 NT 개발을 이끌었다. MIPS 기반 워크스테이션은 기존 DEC의 Ultrix 사용자들 사이에서는 어느 정도 성공을 거두었으나, 썬 마이크로시스템즈와 같은 회사들과의 경쟁에서는 거의 성공하지 못했다. 한편, DEC의 수익원이었던 VAX 라인업은 새로운 RISC 설계들이 최상위 모델인 VAX 9000보다 뛰어난 성능을 보이면서 점차 성능 경쟁력을 잃어갔다. 회사가 VAX의 미래를 모색하던 중, 몇 가지 변경 사항을 더한 PRISM과 유사한 프로세서가 이러한 시장 요구를 모두 해결할 수 있다는 결론을 내렸다. PRISM이 중단된 지점에서 시작하여 1989년에 DEC 알파 프로그램이 시작되었다.

## 역사
### 배경
1977년에 도입된 VAX는 DEC에 엄청난 성공을 안겨주었으며, IBM에 이어 세계 2위의 컴퓨터 업체로서의 입지를 굳혔다. VAX는 복잡한 마이크로코드로 구현된 풍부한 명령어 집합(ISA)으로 유명했다. VMS 운영체제는 이 ISA 위에 구축되었으며, 이로 인해 인터럽트 처리 및 메모리 페이징에 사용되는 메모리 모델에 대한 특정 요구 사항을 갖게 되었다. 1980년대 초까지 VAX 시스템은 "많은 기술 중심 회사의 컴퓨팅 허브가 되었으며, RS-232 케이블을 바퀴살처럼 뻗어 과학 및 엔지니어링 부서를 운영하는 VT-100 터미널의 테두리로 연결했다."

이러한 행복한 상황은 무어의 법칙에 따른 반도체 제조 기술의 끊임없는 발전으로 인해 뒤집혔다. 1980년대 초에 이르러 초기 VAX 기기들과 성능이 비슷하면서도 데스크톱 피자 박스 폼 팩터에 들어갈 수 있는 성능 좋은 32비트 단일 칩 마이크로프로세서들이 다수 등장했다. 썬 마이크로시스템즈와 같은 회사들은 모토로라 68000 시리즈 기반의 유닉스 워크스테이션을 도입하여, 거대한 다중 사용자 VAX 기기를 더 높은 성능을 제공하면서도 필요한 모든 사용자가 구매할 수 있을 만큼 저렴한 기기로 대체할 수 있게 했다. DEC 자체 마이크로프로세서 팀도 더 낮은 가격대의 VAX 구현체들을 선보이고 있었지만, 시스템의 가성비(가격 대비 성능 비)는 계속 저하되었다. 1980년대 후반에 이르러 DEC는 기술 시장에서 소외되고 있음을 깨달았다.

### RISC
1970년대 동안 IBM은 자사 컴퓨터 시스템의 성능에 대한 연구를 수행했고, 놀랍게도 컴퓨터 시간의 80%가 단 5가지 작업에만 소비된다는 사실을 발견했다. 마이크로코드를 사용하여 구현된 ISA의 수백 가지 다른 명령어는 거의 전혀 사용되지 않았다. 마이크로코드의 존재는 명령어가 해독될 때 지연을 유발했으므로, 그 5가지 명령어 중 하나를 직접 호출하더라도 마이크로코드가 없을 때보다 느리게 실행되었다. 이는 최초의 현대적 RISC 프로세서인 IBM 801 설계로 이어졌다.

비슷한 시기인 1979년, 데이비드 패터슨은 캘리포니아 대학교 버클리에서 사바티칼을 떠나 DEC의 서부 해안 팀이 VAX 마이크로코드를 개선하는 것을 돕고 있었다. 패터슨은 코딩 과정의 복잡성에 충격을 받았고 그것이 유지 불가능하다는 결론을 내렸다. 그는 처음에 마이크로코딩을 개선하는 방법에 대한 논문을 썼으나, 나중에 마음을 바꿔 마이크로코드 자체가 문제라고 판단했다. 그는 곧 Berkeley RISC 프로젝트를 시작했다. RISC의 등장은 컴퓨터 업계 내에서 그 장점에 대한 오랜 논쟁을 불러일으켰다. 패터슨이 1980년에 이 개념에 대한 논거를 처음 제시했을 때 DEC는 이를 일축하는 반대 의견을 발표했으나, 1980년대 중반에 이르러 DEC 내부의 합의는 RISC가 CISC보다 최소 두 배는 더 효율적이라는 것이었다. 회사에는 두 가지 선택지가 있었다. 32비트 주소 공간의 한계로 인해 교체가 불가피한 1999년경까지 VAX를 최대한 개선하거나, 가능한 한 빨리 RISC를 개발하는 것이었다.

1980년대 중반까지 프로세서 설계 부서를 가진 거의 모든 회사가 RISC 접근 방식을 탐구하기 시작했다. 공식적인 무관심에도 불구하고 DEC도 예외는 아니었다. 1982년부터 1985년 사이, 서로 다른 DEC 부서에서 RISC 칩을 만들려는 시도가 적어도 네 차례 있었다. 팰로앨토에 있는 DEC 서부 연구소(WRL)의 **Titan**은 1982년 4월에 시작된 고성능 ECL 기반 설계로, 유닉스를 실행할 목적으로 1985년 12월에 이 목표를 달성했다. Titan은 프로세스와 메모리 관리 기능이 재작성된 Tunix(Titan Unix)라는 수정된 Ultrix 버전을 실행했다. 이 RISC 기반 Titan 서버를 포함한 WRL의 서버와 클라이언트로 사용되는 VAX 기반 워크스테이션 사이의 지속적인 성능 격차는 결국 MIPS 기반 DECstation 개발을 촉진하게 되었다.

Titan과 병행하여 1984년 중반부터 1988년 1월까지 MultiTitan 프로젝트가 진행되었는데, 이는 명령어 수준 병렬성, 공유 메모리 다중 처리, 명시적 캐시 관리, 고성능 부동소수점 산술, 통합 스칼라 및 벡터 처리, 그리고 아키텍처를 위한 "소프트웨어 정의" 사용을 탐구했다. 1988년 4월, 이 노력은 CMOS 공정을 사용하여 제조된 마이크로프로세서 샘플을 제공했으며, 이는 기존 Titan 아키텍처 내에서 테스트되었다. 개별 부품에 따라 70MHz에서 90MHz 사이의 주파수에서 작동할 수 있었으나 목표치인 100MHz에는 미치지 못했다. 동반되는 부동소수점 및 캐시 관리 칩 없이는 벤치마킹을 수행할 수 없었으며, 단지 20 MIPS의 성능 추정치만이 도출되었다.

**SAFE**(Streamlined Architecture for Fast Execution)는 1982년에 시작된 64비트 설계로, (스페이스워!로 유명한) 앨런 코톡과 데이브 오비츠가 설계했으며 VMS를 실행할 목적이었다. **HR-32**(Hudson, RISC, 32-bit)는 1984년 매사추세츠주 허드슨 팹의 리치 위텍과 단 도버풀에 의해 시작되었으며, VAX 기기의 코프로세서로 사용될 예정이었다. 같은 해 데이비드 커틀러는 워싱턴주 벨뷰의 DECwest에서 **CASCADE** 프로젝트를 시작했다.

### PRISM
DEC은 VAX에서 얻은 막대한 이익을 여러 경쟁 프로젝트에 자금을 지원하는 데 사용했으며, 이는 지연과 불확실성을 초래했다. 결국 커틀러는 1985년에 단일 RISC 프로젝트를 정의해 달라는 요청을 받았고, 리치 위텍을 수석 설계자로 선정했다. 1985년 8월에 상위 레벨 설계의 초안이 나왔고 상세 설계 작업이 시작되었다. PRISM 사양은 데이비드 커틀러, 데이브 오비츠, 리치 위텍, 딜립 반다르카르, 웨인 카르도자로 구성된 5인 팀에 의해 수개월에 걸쳐 개발되었다. 이 초기 기간 동안 회사 내부에서 32비트로 할지 64비트로 할지, 상업용을 목표로 할지 기술용 워크로드를 목표로 할지 등을 두고 논쟁이 벌어지면서 설계가 끊임없이 변경되었다.

이러한 지속적인 변경으로 인해 최종 ISA 사양은 1986년 9월에야 완성되었다. 당시 기본 개념의 두 가지 버전을 생산하기로 결정되었는데, DECwest는 **Crystal**로 알려진 하이엔드 ECL 구현 작업을 맡았고, 반도체 고급 개발 팀은 CMOS 버전인 **microPRISM** 작업을 맡았다. 이 작업은 1985~86년까지 98% 완료되었으며, 대규모 VAX클러스터에서 피트 베누아의 시뮬레이션을 통해 집중적인 지원을 받았다.

이 시대에 DEC 엔지니어링 전반에는 RISC가 정말 더 빠른 것인지, 아니면 성능 시연에 사용되는 사소한 5줄짜리 프로그램에서만 단순히 빠른 것인지에 대한 상당한 회의론이 여전히 존재했다. Crystal 설계를 바탕으로 1986년에 당시 개발 중이던 가장 빠른 기기인 VAX 8800과 비교가 이루어졌다. 결론은 명확했다. 동일한 양의 투자를 한다면 RISC 설계가 VAX보다 2대 1로 성능이 뛰어날 것이라는 점이었다.

1987년 중반에 두 설계 모두 64비트로 한다는 결정이 내려졌으나, 이는 몇 주밖에 가지 못했다. 1987년 10월, 썬은 Sun-4를 출시했다. 패터슨의 RISC 설계를 상용화한 16MHz SPARC를 탑재한 이 기기는 20MHz 모토로라 68020을 사용하는 이전 최상위 모델인 Sun-3보다 4배나 빨랐다. 이 출시와 함께 DEC은 다시 한번 PRISM의 목표를 워크스테이션 시장 전용으로 변경했다. 그 결과 microPRISM은 32비트 시스템으로 다시 사양이 정해졌고 Crystal 프로젝트는 취소되었다. 이로 인해 더 많은 지연이 발생하여 프로젝트는 일정보다 훨씬 뒤처지게 되었다.

1988년 초까지도 시스템은 여전히 완성되지 않았다. CPU 설계는 거의 끝났으나 VAX용 동시대 Rigel 칩셋을 기반으로 한 FPU와 MMU는 여전히 설계 중이었다. 팀은 해당 부분의 작업을 중단하고 오직 CPU에만 집중하기로 결정했다. 설계는 1988년 3월에 완료되었으며 4월에 테이프아웃되었다.

### 취소
PRISM 기간 내내 DEC은 회사의 향후 방향을 두고 중대한 논쟁에 휘말려 있었다. 새로운 RISC 기반 워크스테이션이 도입됨에 따라 VAX의 성능 이점은 계속해서 침식되었고 가성비는 완전히 무너졌다. 회사 내의 서로 다른 그룹이 대응 방안을 두고 논쟁했다. 일부는 VAX를 하이엔드 시장으로 옮기고 로우엔드 시장은 썬과 같은 워크스테이션 업체들에 내주자고 주장했다. 이는 내부적으로 "IBM 킬러"라 불린 VAX 9000 프로그램으로 이어졌다. 다른 이들은 PRISM이나 범용 프로세서를 사용하여 워크스테이션 시장에 진출할 것을 제안했다. 또 다른 이들은 RISC 프로세서상에 VAX를 재구현할 것을 제안했다.

더 저렴하고 빠른 경쟁 기기들에 대한 손실이 늘어나는 것에 좌절한 중앙 엔지니어링 외부의 팰로앨토 소재 워크스테이션 및 유닉스/Ultrix 중심 소규모 스컹크워크 그룹은 독자적으로 기성 RISC 프로세서를 사용하여 새로운 워크스테이션 제품군을 만드는 아이디어를 검토했다. 이 그룹은 실사를 거쳐 결국 MIPS R2000을 선택했다. 이들은 개발 기기를 확보하고 시스템에 Ultrix를 이식하는 프로토타입을 만들었다. MIPS와의 첫 회의부터 프로토타입 기기가 나오기까지 단 90일이 걸렸다. DEC 버전의 전체 생산은 이르면 1989년 1월에 시작될 수 있었던 반면, PRISM 기반 기기가 준비되려면 적어도 1년은 더 걸릴 상황이었다.

이 문제가 DEC 본사에서 제기되었을 때 회사는 어떤 접근 방식이 더 나은지를 두고 갈라졌다. 밥 수프닉은 다가오는 프로젝트 검토를 위해 이 문제를 고려해 달라는 요청을 받았다. 그는 PRISM 시스템이 더 빨라 보이지만, MIPS 방식이 비용이 적게 들고 시장 출시도 훨씬 빠를 것이라고 결론지었다. 1988년 7월 회사 집행 위원회의 격렬한 검토 회의에서 회사는 Prism을 취소하고 MIPS 워크스테이션과 하이엔드 VAX 제품을 계속하기로 결정했다. 이 워크스테이션은 DECstation 3100으로 출시되었다.

이 무렵 microPRISM의 샘플이 도착했고 대부분 작동하는 것으로 확인되었다. 또한 R2000의 16~20MHz와 비교하여 50~80MHz의 속도로 작동할 수 있음이 입증되었다. 이러한 관찰에 기반한 성능 예측은 다른 업체들이 발표한 기존 RISC 제품보다 상당한 성능 향상을 시사했다. 그러나 설계가 중단된 부동소수점 장치나 그러한 주파수에서 작동하는 데 필요한 캐시 인터페이스 칩(취소된 프로젝트의 일부)이 없었기 때문에 부동소수점 성능 예측은 가설로 남았다.

### 유산
1988년 7월 회의 무렵, 회사는 RISC 접근 방식이 워크스테이션용이라는 입장으로 거의 완전히 기울어 있었다. 그러나 PRISM의 성능은 최신 VAX 기기들과 비슷했고 RISC 개념은 성장 가능성이 상당했다. 회의가 끝날 때 켄 올슨은 수프닉에게 디지털이 VMS 시스템의 성능을 RISC 기반 유닉스 시스템과 경쟁할 수 있게 유지할 방법을 조사해 달라고 요청했다.

엔지니어 그룹이 이 문제를 탐구하기 위해 "RISCy VAX" 또는 "Extended VAX"(EVAX) 태스크 포스라고 불리는 팀을 구성했다. 늦여름까지 이 그룹은 세 가지 개념을 탐구했다. RISC와 유사한 코어를 가진 VAX ISA의 서브셋, 네이티브 VAX 코드를 실행하면서 이를 실시간으로 RISC 코드로 변환하여 캐시에 저장하는 번역형 VAX, 그리고 훨씬 더 높은 성능의 CISC 구현인 울트라파이프라인 VAX였다. 이러한 접근 방식들은 모두 단순한 RISC 기기와 경쟁하기에는 무리가 있는 문제점들을 안고 있었다.

다음으로 그룹은 기존 VAX 단일 칩 솔루션과 성능을 위한 RISC 칩을 결합한 시스템을 고려했다. 이러한 연구 결과, 시스템이 필연적으로 저성능 부품에 발목을 잡히게 되며 설득력 있는 이점을 제공하지 못할 것임을 시사했다.

이 시점에서 낸시 크로넨버그는 사람들이 VAX가 아니라 VMS를 실행하는 것이며, VMS는 인터럽트 모델링과 메모리 페이징에 기반한 몇 가지 하드웨어 의존성만 가지고 있을 뿐이라고 지적했다. 이러한 모델의 작은 부분들만 보존된다면 VMS를 RISC 칩으로 이식하지 못할 강력한 이유는 없어 보였다. 이 개념에 대한 추가 작업 결과 이것이 실행 가능한 접근 방식임이 드러났다.

수프닉은 1989년 2월에 전략 태스크 포스에 결과 보고서를 제출했다. 두 가지 질문이 제기되었다. 결과적으로 나온 RISC 설계가 유닉스 시장에서도 성능 리더가 될 수 있는가, 그리고 그 기기가 개방형 표준이어야 하는가? 이에 따라 적절한 수정을 거친 PRISM 아키텍처를 채택하기로 결정했고, 이것이 결국 알파가 되었으며 VMS를 새로운 아키텍처로 이식하는 작업이 시작되었다.

PRISM과 MICA가 취소되었을 때 데이비드 커틀러는 디지털을 떠나 마이크로소프트로 옮겼으며, 그곳에서 훗날 윈도우 NT로 알려진 것의 개발을 맡았다. 커틀러의 NT 아키텍처는 MICA의 많은 측면에서 큰 영감을 받았다.

## 설계
정수 연산 측면에서 PRISM 아키텍처는 MIPS 설계와 유사했다. 명령어의 32비트 중 상위 6비트와 하위 5비트가 명령어였으며, 워드의 나머지 21비트는 상수 또는 레지스터 위치를 인코딩하는 데 남겨두었다. MIPS의 32개와 대조적으로 64개의 32비트 레지스터가 포함되었으나 그 외의 사용법은 유사했다. PRISM과 MIPS 모두 다른 주요 RISC 설계인 Berkeley RISC의 특징인 레지스터 윈도가 없다.

PRISM 설계는 명령어 집합의 몇 가지 측면에서 주목할 만했다. 특히 PRISM은 여러 구현에 걸쳐 운영체제에 안정적인 ABI를 제공하기 위한 여러 "특수" 명령어를 정의한 **Epicode**(extended processor instruction code)를 포함했다. Epicode에는 사용할 수 있는 별도의 22개 32비트 레지스터 세트가 주어졌다. 나중에 일련의 벡터 처리 명령어들도 추가되었으며, 이는 다양한 방식으로 사용될 수 있는 추가적인 16개의 64비트 벡터 레지스터에 의해 지원되었다.

## 각주

### 참고 문헌
* 
* 
* 

* Prism documents at bitsavers.org

## 더 읽어보기
* Bhandarkar, Dileep P. (1995). Alpha Architecture and Implementations. Digital Press.
* Bhandarkar, D. et al. (1990. "High performance issue orientated architecture". Proceedings of Compcon Spring '90, pp.&nbsp;153&ndash;160.
* Conrad, R. et al. (1989). "A 50 MIPS (peak) 32/64 b microprocessor". ISSCC Digest of Technical Papers, pp.&nbsp;76&ndash;77.

분류:정보기술 프로젝트
분류:명령어 집합 구조