IBM POWER 아키텍처

**IBM POWER**는 IBM이 개발한 축소 명령어 집합 컴퓨터(RISC) 명령어 집합(ISA)이다. 이 이름은 Performance Optimization With Enhanced RISC의 두문자어이다.

이 ISA는 1990년대 IBM의 하이엔드 마이크로프로세서의 기반으로 사용되었으며, IBM의 수많은 서버, 미니컴퓨터, 워크스테이션 및 슈퍼컴퓨터에 사용되었다. 이러한 프로세서들을 POWER1 (RIOS-1, RIOS.9, RSC, RAD6000) 및 POWER2 (POWER2, POWER2+ 및 P2SC)라고 부른다.

이 ISA는 파워PC 명령어 집합 구조로 진화하였으며, 1998년 IBM이 주로 32/64비트 파워PC 프로세서이면서 하위 호환성을 위해 IBM POWER 아키텍처를 포함한 POWER3 프로세서를 선보이면서 폐기되었다. 이후 원래의 IBM POWER 아키텍처는 버려졌다. 파워PC는 2006년에 세 번째인 Power ISA로 진화했다.

[섬네일|다양한 [IBM 파워 명령어 집합 아키텍처|POWER, 파워PC 및 Power ISA의 진화 과정을 보여주는 차트]]
IBM은 자사의 ASIC(응용 프로그램 특화 집적 회로) 제품군에 사용하기 위한 파워PC 마이크로프로세서 코어를 계속해서 개발하고 있다. 많은 대량 생산 애플리케이션에 파워PC 코어가 내장되어 있다.

## 역사
### 801 연구 프로젝트

1974년, IBM은 초당 최소 300통의 전화를 처리할 수 있는 잠재 용량을 갖춘 대규모 전화 교환 네트워크를 구축한다는 설계 목표로 프로젝트를 시작했다. 실시간 응답을 유지하면서 각 통화를 처리하는 데 20,000개의 기계 명령어가 필요할 것으로 예상되었으므로, 12 MIPS 성능을 가진 프로세서가 필요하다고 간주되었다. 이 요구 사항은 당시로서는 매우 야심찬 것이었으나, 이 기계는 입출력, 분기, 레지스터 간 덧셈, 레지스터와 메모리 간 데이터 이동만 수행하면 되고 과도한 산술 연산을 수행하기 위한 특수 명령어가 필요하지 않았기 때문에 현대 CPU의 복잡성 중 상당 부분을 덜어낼 수 있다는 점이 인식되었다.

복잡한 연산의 각 단계를 하나의 기계 명령어로 명시적으로 지정하고, 모든 명령어가 동일한 상수 시간 내에 완료되도록 요구하는 이 단순한 설계 철학은 나중에 RISC로 알려지게 된다.

1975년에 전화 교환기 프로젝트는 시제품 없이 취소되었다. 그러나 프로젝트 첫해에 생성된 시뮬레이션 추정치에 따르면 이 프로젝트를 위해 설계된 프로세서가 매우 유망한 범용 프로세서가 될 수 있을 것으로 보였고, 이에 따라 IBM 왓슨 연구소 801번 건물에서 801 프로젝트 작업이 계속되었다.

### 1982년 치타 프로젝트
왓슨 연구소에서 2년 동안 801 설계의 슈퍼스칼라 한계를 탐구했는데, 예를 들어 IBM 시스템/360 모델 91 및 CDC 6600에서 수행된 것과 유사하게 성능 향상을 위해 여러 기능 단위를 사용하여 설계를 구현할 수 있는지의 타당성(모델 91은 CISC 설계를 기반으로 했음에도 불구하고)을 조사하여, RISC 기계가 사이클당 여러 명령어를 유지할 수 있는지 또는 다중 실행 단위를 허용하기 위해 801 설계에 어떤 설계 변경이 필요한지 결정하고자 했다.

성능을 높이기 위해 치타(Cheetah)는 별도의 분기, 고정소수점 및 부동소수점 실행 단위를 가졌다. 다중 실행 단위를 허용하기 위해 801 설계에 많은 변경이 이루어졌다. 치타는 원래 바이폴라 이미터-결합 논리(ECL) 기술을 사용하여 제조될 계획이었으나, 1984년경 CMOS(상보성 금속 산화물 반도체) 기술이 트랜지스터 논리 성능을 향상시키는 동시에 회로 집적 수준을 높일 수 있게 되었다.

### 아메리카 프로젝트
1985년, IBM 왓슨 연구소에서 2세대 RISC 아키텍처에 대한 연구가 시작되어 "AMERICA 아키텍처"가 탄생했다. 1986년, IBM 오스틴은 해당 아키텍처를 기반으로 RS/6000 시리즈 개발을 시작했다.

### POWER

1990년 2월, POWER 명령어 집합을 탑재한 IBM의 첫 번째 컴퓨터들이 "RISC System/6000" 또는 RS/6000이라는 이름으로 출시되었다. 이 RS/6000 컴퓨터들은 워크스테이션과 서버라는 두 가지 클래스로 나뉘었으며, 이에 따라 POWERstation 및 POWERserver로 도입되었다. RS/6000 CPU는 "RIOS-1" 및 "RIOS.9"(또는 더 일반적으로는 "POWER1" CPU)라고 불리는 2가지 구성을 가졌다. RIOS-1 구성은 명령어 캐시 칩, 고정소수점 칩, 부동소수점 칩, 4개의 데이터 캐시 칩, 저장 장치 제어 칩, 입출력 칩, 클록 칩 등 총 10개의 개별 칩으로 구성되었다. 저가형 RIOS.9 구성은 명령어 캐시 칩, 고정소수점 칩, 부동소수점 칩, 2개의 데이터 캐시 칩, 저장 장치 제어 칩, 입출력 칩, 클록 칩 등 8개의 개별 칩을 가졌다.

저가형 RS/6000을 위해 RIOS의 단일 칩 구현인 RSC(RISC Single Chip)가 개발되었으며, RSC를 사용한 첫 번째 기계는 1992년에 출시되었다.

### POWER2

IBM은 텍사스주 오스틴에서 1991년 애플/IBM/모토로라 얼라이언스가 결성되기 2년 전부터 POWER1의 후속 제품으로 POWER2 프로세서 작업을 시작했다. 애플/IBM/모토로라의 노력을 시작하기 위해 자원이 분산되는 영향에도 불구하고, POWER2는 시작부터 시스템 출하까지 5년이 걸렸다. 두 번째 고정소수점 장치, 두 번째 부동소수점 장치 및 기타 성능 향상을 설계에 추가함으로써, POWER2는 1993년 11월 발표 당시 업계 최고의 성능을 보유했다.

명령어 집합에도 새로운 명령어가 추가되었다.
* 쿼드 워드 저장 명령어. 쿼드 워드 로드 명령어는 두 개의 인접한 배정밀도 값을 두 개의 인접한 부동소수점 레지스터로 이동시킨다.
* 하드웨어 제곱근 명령어.
* 부동소수점에서 정수로의 변환 명령어.

1996년 RS/6000 및 RS/6000 SP2 제품군을 지원하기 위해, IBM은 애플/IBM/모토로라 얼라이언스 외부에서 IBM의 가장 발전되고 정밀한 CMOS-6S 공정으로 POWER2의 단일 칩 버전인 P2SC("POWER2 Super Chip")를 자사 설계팀을 통해 구현했다. P2SC는 별도의 모든 POWER2 명령어 캐시, 고정소수점, 부동소수점, 저장 제어 및 데이터 캐시 칩을 하나의 거대한 다이에 통합했다. 도입 당시 P2SC는 업계에서 가장 크고 트랜지스터 수가 가장 많은 프로세서였다. 크기, 복잡성 및 고급 CMOS 공정의 어려움에도 불구하고 프로세서의 첫 번째 테이프 아웃 버전이 출하될 수 있었으며, 발표 당시 선도적인 부동소수점 성능을 가졌다. P2SC는 체스 그랜드마스터 가리 카스파로프를 꺾은 1997년 IBM 딥 블루 체스 슈퍼컴퓨터에 사용된 프로세서였다. 정교한 트윈 MAF 부동소수점 장치와 거대하고 넓으며 대기 시간이 짧은 메모리 인터페이스를 갖춘 P2SC는 주로 공학 및 과학 애플리케이션을 겨냥했다. P2SC는 결국 POWER3로 계승되었으며, POWER3는 P2SC의 정교한 트윈 MAF 부동소수점 장치 외에도 64비트, SMP 기능 및 파워PC로의 완전한 전환을 포함했다.

## 아키텍처
섬네일|300px|right|POWER 아키텍처 역사
POWER 설계는 최초의 진정한 RISC 프로세서 설계로 널리 간주되는 801의 CPU에서 직접 파생되었다. 801은 IBM 하드웨어 내부의 여러 애플리케이션에 사용되었다.

PC/RT가 출시될 무렵, IBM은 시장에서 가장 강력한 CPU를 설계하기 위해 아메리카 프로젝트(America Project)를 시작했다. 그들은 주로 801 설계의 두 가지 문제를 해결하는 데 관심이 있었다.

* 801은 모든 명령어가 하나의 클록 사이클 내에 완료되도록 요구하여 부동소수점 명령어를 배제했다.
* 이러한 단일 사이클 연산의 부수적 효과로 디코더가 파이프라인화되었지만, 슈퍼스칼라 효과를 사용하지는 않았다.

부동소수점은 아메리카 프로젝트의 중점이 되었으며, IBM은 1980년대 초에 개발된 새로운 알고리즘을 사용하여 단일 사이클에서 64비트 배정밀도 곱셈과 나눗셈을 지원할 수 있었다. 설계의 FPU 부분은 명령어 디코더 및 정수 부분과 분리되어 있어 디코더가 FPU와 ALU(정수) 실행 장치 모두에 동시에 명령어를 보낼 수 있었다. IBM은 한 명령어를 가져오고, 다른 명령어를 디코딩하며, 동시에 ALU와 FPU에 하나씩 명령어를 보낼 수 있는 복잡한 명령어 디코더로 이를 보완하여, 사용 중인 최초의 슈퍼스칼라 CPU 설계 중 하나를 만들어냈다.

시스템은 각각 고유한 장치에 32개의 32비트 정수 레지스터와 또 다른 32개의 64비트 부동소수점 레지스터를 사용했다. 분기 장치에는 프로그램 카운터를 포함하여 자체적으로 사용하기 위한 여러 "전용" 레지스터도 포함되었다.

아키텍처의 또 다른 흥미로운 특징은 모든 주소를 52비트 공간으로 매핑하는 가상 주소 시스템이다. 이 방식을 통해 애플리케이션은 "평면적인" 32비트 공간에서 메모리를 공유할 수 있으며, 모든 프로그램은 각각 32비트의 서로 다른 블록을 가질 수 있다.

PowerPC 아키텍처 북 제1권 부록 E: PowerPC 사용자 명령어 집합 아키텍처 버전 2.02는 POWER 및 POWER2 명령어 집합 아키텍처와 POWER5에 의해 구현된 파워PC 명령어 집합 아키텍처 버전 간의 차이점을 설명한다.

## 같이 보기
* Power ISA

## 각주

;내용주
*
*  - POWER1, POWER2 및 POWER3에 대한 자세한 정보 제공
* 

## 더 읽어보기
*  관련 섹션: 제1장 (POWER 아키텍처), 제2장 (아키텍처 구현 방법), 제6장 (POWER2 아키텍처에서 도입된 추가 사항), 부록 A 및 C (모든 POWER 명령어 설명), 부록 F (POWER와 파워PC 아키텍처의 차이점 설명)
*  제12장에서 POWER 아키텍처(이전 이름인 RIOS로 언급됨)와 그 기원을 설명함

## 외부 링크
*  - IBM의 POWER 및 파워PC 역사
*  - Frank Soltis의 POWER 아키텍처 역사
* 

분류:명령어 집합 구조