알파 21264

thumb|알파 21264 마이크로아키텍처.
**알파 21264**(Alpha 21264)는 코드명 **EV6**로도 알려져 있으며, 디지털 이큅먼트 코퍼레이션이 개발하여 1998년 10월 19일에 출시한 RISC 마이크로프로세서이다. 21264는 알파 명령어 집합 (ISA)을 구현했다.

## 설명
알파 21264는 비순차적 명령어 처리와 투기적 실행을 지원하는 4-이슈 슈퍼스칼라 마이크로프로세서이다. 사이클당 최대 6개의 명령어를 실행할 수 있었고, 사이클당 4개의 명령어를 지속적으로 실행할 수 있었다. 7단계 명령어 파이프라인을 가지고 있다.

### 비순차적 명령어 처리
어떤 단계에서든 마이크로프로세서는 최대 80개의 명령어를 다양한 실행 단계에서 처리할 수 있었는데, 이는 당시 다른 마이크로프로세서를 능가하는 수준이었다.

디코딩된 명령어는 명령어 큐에 보관되며, 피연산자가 사용 가능해지면 발행된다. 정수 큐는 20개의 항목을, 부동소수점 큐는 15개의 항목을 포함했다. 각 큐는 파이프라인 수만큼의 명령어를 발행할 수 있었다.

### Ebox
Ebox는 정수, 로드 및 스토어 명령어를 실행한다. 두 개의 정수 장치, 두 개의 로드 스토어 장치, 두 개의 정수 레지스터 파일을 가지고 있다. 각 정수 레지스터 파일은 80개의 항목을 포함했는데, 그 중 32개는 아키텍처 레지스터, 40개는 이름 변경 레지스터, 8개는 PAL 섀도우 레지스터였다. 알파 아키텍처에서 R31은 0으로 하드와이어되어 읽기 전용이기 때문에 R31을 위한 항목은 없었다.

각 레지스터 파일은 정수 장치와 로드 스토어 장치를 서비스했으며, 레지스터 파일과 두 장치는 "클러스터"라고 불린다. 두 클러스터는 U0와 U1로 지정되었다. 이 방식은 피연산자를 제공하고 결과를 받기 위해 필요한 쓰기 및 읽기 포트의 수를 줄여 레지스터 파일의 물리적 크기를 줄이고 마이크로프로세서가 더 높은 클록 주파수에서 작동할 수 있도록 했다. 따라서 레지스터 파일에 대한 쓰기는 동기화되어야 했고, 이는 완료하는 데 한 클록 사이클이 필요하여 성능에 1%의 부정적인 영향을 미쳤다. 동기화로 인한 성능 저하는 두 가지 방식으로 보상되었다. 첫째, 달성 가능한 더 높은 클록 주파수가 손실을 상쇄했다. 둘째, 명령어 발행을 담당하는 로직은 가능한 경우 다른 레지스터 파일에 있는 데이터에 의존하지 않는 명령어를 발행하여 레지스터 파일을 동기화해야 하는 상황을 피했다.

두 클러스터는 두 가지 차이점을 제외하고는 거의 동일하다. U1은 7사이클 파이프라인 곱셈기를 가지고 있는 반면, U0는 멀티미디어를 위한 단일 명령어 다중 데이터(SIMD) 명령어를 정의하는 알파 아키텍처 확장인 MVI(Motion Video Instructions)를 실행하기 위한 3사이클 파이프라인을 가지고 있다.

로드 스토어 장치는 메모리 접근을 위한 가상 주소를 계산하는 데 사용되는 간단한 산술 논리 장치이다. 또한 간단한 산술 및 논리 명령어를 실행할 수 있다. 알파 21264 명령어 발행 로직은 이 기능을 활용하여 해당 장치가 사용 가능할 때(주소 산술을 수행하지 않을 때) 명령어를 발행했다.

따라서 Ebox는 U1과 U0에 균등하게 분할된 네 개의 64비트 가산기, 네 개의 논리 장치, 두 개의 배럴 시프터, 바이트 조작 로직, 두 세트의 조건 분기 로직을 가지고 있다.

### Fbox
Fbox는 부동소수점 명령어 실행을 담당한다. 두 개의 부동소수점 파이프라인과 부동소수점 레지스터 파일로 구성된다. 파이프라인은 동일하지 않으며, 하나는 대부분의 명령어를 실행하고 다른 하나는 곱셈 명령어만 실행한다. 가산기 파이프라인에는 분할 장치와 제곱근 장치라는 두 개의 비파이프라인 장치가 연결되어 있다. 더하기, 곱하기 및 대부분의 다른 명령어는 4사이클 지연 시간을 가지며, 이중 정밀도 나누기는 16사이클 지연 시간, 이중 정밀도 제곱근은 33사이클 지연 시간을 가진다. 부동소수점 레지스터 파일은 72개의 항목을 포함하는데, 그 중 32개는 아키텍처 레지스터이고 40개는 이름 변경 레지스터이다.

### 캐시
알파 21264는 두 단계의 CPU 캐시를 가지고 있다. 주 캐시와 보조 캐시이다. 알파 21164의 레벨 3(L3, 또는 "피해자") 캐시는 대역폭 문제로 사용되지 않았다.

#### 주 캐시
주 캐시는 명령어와 데이터를 위한 별도의 캐시로 나뉘는데(수정된 하버드 아키텍처), 각각 I-캐시와 D-캐시이다. 두 캐시는 64KB 용량을 가진다. D-캐시는 클록 신호의 상승 에지와 하강 에지에서 모두 데이터를 전송하여 듀얼 포트 방식으로 작동한다. 이 듀얼 포트 방식은 모든 프로세서 사이클에서 캐시에 대한 읽기 또는 쓰기의 어떤 조합도 가능하게 했다. 또한 알파 21164처럼 캐시를 두 개로 복제하는 것을 피했다. 캐시를 복제하면 동일한 용량을 제공하기 위해 더 많은 트랜지스터가 필요하여 캐시 용량이 제한되고, 결과적으로 필요한 면적과 소비 전력이 증가했다.

#### B-캐시
B-캐시라고 불리는 보조 캐시는 1에서 16MB 용량의 외부 캐시이다. 마이크로프로세서에 의해 제어되며, 내부 클록 주파수의 2/3, 1/2, 1/3 또는 1/4로 작동하는 동기 정적 램 (SSRAM) 칩으로 구현되며, 500MHz에서 133~333MHz이다. B-캐시는 SSRAM과 동일한 클록 주파수 또는 더블 데이터 레이트 SSRAM을 사용하는 경우 클록 주파수의 두 배로 작동하는 전용 128비트 버스로 접근되었다. B-캐시는 직접 매핑 방식이다.

### 분기 예측
분기 예측은 토너먼트 분기 예측 알고리즘에 의해 수행된다. 이 알고리즘은 디지털의 서부 연구소(WRL)의 스콧 맥파링(Scott McFarling)이 개발했으며 1993년 논문에서 설명되었다. 이 예측기는 알파 21264가 최소 7사이클의 분기 오예측 페널티를 가지기 때문에 사용되었다. 명령어 캐시의 2사이클 지연 시간과 명령어 큐 때문에 평균 분기 오예측 페널티는 11사이클이다. 이 알고리즘은 로컬 및 글로벌이라는 두 개의 이력 테이블을 유지하며, 분기 결과를 예측하는 데 사용되는 테이블은 선택 예측기(Choice predictor)에 의해 결정된다.

로컬 예측기는 개별 분기의 이력을 기록하는 2단계 테이블이다. 1,024개 항목의 10비트 분기 이력 테이블로 구성된다. 예측 정확도가 더 큰 단일 단계 테이블과 비슷하면서도 더 적은 비트의 저장 공간을 필요로 하기 때문에 2단계 테이블이 사용되었다. 1,024개 항목의 분기 예측 테이블을 가지고 있다. 각 항목은 3비트 포화 카운터이다. 카운터 값은 현재 분기가 분기될지(taken) 또는 분기되지 않을지(not taken)를 결정한다.

글로벌 예측기는 단일 단계의 4096개 항목 분기 이력 테이블이다. 각 항목은 2비트 포화 카운터이며, 이 카운터 값은 현재 분기가 분기될지 또는 분기되지 않을지를 결정한다.

선택 예측기는 특정 분기에 대해 어떤 예측기가 가장 좋은지 결정하기 위해 로컬 및 글로벌 예측기의 이력을 기록한다. 4,096개 항목의 분기 이력 테이블을 가지고 있다. 각 항목은 2비트 포화 카운터이다. 카운터 값은 로컬 예측기가 사용될지 글로벌 예측기가 사용될지를 결정한다.

### 외부 인터페이스
외부 인터페이스는 양방향 64비트 더블 데이터 레이트 (DDR) 데이터 버스와 15비트 단방향 시간 다중화된 주소 및 제어 버스로 구성되었는데, 하나는 알파 21264에서 시작되는 신호용이고 다른 하나는 시스템에서 시작되는 신호용이었다. 디지털은 이 버스를 AMD에 라이선스했으며, 이후 AMD의 애슬론 마이크로프로세서에 사용되었고, 거기에서는 EV6 버스로 알려졌다.

## 메모리 주소 지정
알파 21264 CPU는 IPR 제어(VA_CTL 제어 레지스터 사용)하에 선택 가능한 48비트 또는 43비트 가상 주소(각각 256 TiB 또는 8 TiB 가상 주소 공간)를 지원한다. 알파 21264는 44비트 물리 주소(최대 16 TiB의 물리 메모리)를 지원한다. 이는 이전 알파 CPU(알파 21164의 43비트 가상 및 40비트 물리, 알파 21064의 43비트 가상 및 34비트 물리)보다 증가한 것이다.

## 제조
알파 21264는 1520만 개의 트랜지스터를 포함했다. 논리는 약 600만 개의 트랜지스터로 구성되었으며, 나머지는 캐시와 분기 이력 테이블에 포함되었다. 다이 크기는 16.7mm x 18.8mm (313.96mm²)였다. 6단계 상호 연결을 가진 0.35 μm 상보성 금속 산화물 반도체 (CMOS) 공정으로 제조되었다.

## 패키징
알파 21264는 587핀 세라믹 인터스티셜 핀 그리드 배열 (IPGA)로 패키징되었다.

알파 프로세서 주식회사(Alpha Processor, Inc.)는 나중에 B-캐시와 전압 레귤레이터가 있는 인쇄 회로 기판에 마이크로프로세서가 장착된 슬롯 B 패키지로 알파 21264를 판매했다. 이 설계는 인텔과 AMD의 슬롯 기반 마이크로프로세서의 성공을 활용하기 위한 것이었다. 슬롯 B는 원래 AMD의 애슬론에도 사용될 예정이었으므로, API는 더 넓은 시장 점유율을 확보하기 위해 알파 21264의 비용을 절감하기 위해 슬롯 B용 재료를 상품 가격으로 얻을 수 있었다. AMD가 슬롯 기반 애슬론에 슬롯 A를 사용하기로 결정하면서 이는 실현되지 않았다.

## 파생 제품
### 알파 21264A
thumb|알파 21264A
**알파 21264A**는 코드명 **EV67**으로, 1999년 말에 출시된 알파 21264의 축소판이었다. 600, 667, 700, 733, 750, 833MHz의 6가지 버전이 있었다. EV67은 팝카운트를 수행하는 명령어로 명령어 집합을 확장한 카운트 확장(CIX)을 구현한 최초의 알파 마이크로프로세서였다. 삼성전자에서 0.25 μm 트랜지스터와 0.35 μm 금속층을 가진 0.25 μm CMOS 공정으로 제조되었다. 다이 면적은 210mm²였다. EV68은 2.0V 전원 공급 장치를 사용했다. 600MHz에서 최대 73W, 667MHz에서 80W, 700MHz에서 85W, 733MHz에서 88W, 750MHz에서 90W를 소비했다.

### 알파 21264B
**알파 21264B**는 클록 주파수 증가를 위한 추가 개발품이다. IBM이 제조한 코드명 **EV68C** 모델과 삼성이 제조한 코드명 **EV68A** 모델 두 가지가 있었다.

EV68A는 알루미늄 인터커넥트를 가진 0.18 μm CMOS 공정으로 제조되었다. 다이 크기는 125 mm²로, 알파 21264A보다 3분의 1 작았고, 1.7 V 전원 공급 장치를 사용했다. 2001년에 750, 833, 875, 940 MHz의 클록 주파수로 대량 공급되었다. EV68A는 750 MHz에서 최대 60 W, 833 MHz에서 67 W, 875 MHz에서 70 W, 940 MHz에서 75 W를 소비했다.

EV68C는 구리 인터커넥트를 가진 0.18 μm CMOS 공정으로 제조되었다. 2000년 초에 샘플링되었으며, 최대 클록 주파수 1.25 GHz를 달성했다.

1998년 9월, 삼성은 0.18 μm 완전 공핍형 실리콘 온 인슐레이터 (SOI) 공정과 구리 인터커넥트를 사용하여 1.5 GHz 클록 주파수를 달성할 수 있는 알파 21264B의 변형을 제조할 것이라고 발표했다. 이 버전은 실현되지 않았다.

### 알파 21264C
**알파 21264C**는 코드명 **EV68CB**로, 알파 21264의 파생 제품이었다. 1.0, 1.25, 1.33 GHz의 클록 주파수로 제공되었다. EV68CB는 1550만 개의 트랜지스터를 포함하고 120 mm² 크기였다. IBM이 0.18 μm CMOS 공정과 7단계 구리 인터커넥트 및 저유전율 유전체를 사용하여 제조했다. 49.53 x 49.53 mm 크기의 675패드 플립 칩 세라믹 랜드 그리드 배열 (CLGA)로 패키징되었다. EV68CB는 1.7 V 전원 공급 장치를 사용했으며, 1.0 GHz에서 최대 64 W, 1.25 GHz에서 75 W, 1.33 GHz에서 80 W를 소비했다.

### 알파 21264D
**알파 21264D**는 코드명 **EV68CD**로, IBM이 제조한 더 빠른 파생 제품이다.

### 알파 21264E
**알파 21264E**는 코드명 **EV68E**로, 삼성에서 개발 중이었으나 취소된 파생 제품이다. 2000년 10월 10일 마이크로프로세서 포럼 2000에서 처음 발표되었으며, 2001년 중반경에 출시될 예정이었다. 개선 사항으로는 1.25 GHz의 더 높은 작동 주파수와 온다이 1.85 MB 보조 캐시 추가가 있었다. 구리 인터커넥트를 가진 0.18 마이크로미터 CMOS 공정으로 제조될 예정이었다.

## 칩셋
디지털과 AMD는 모두 알파 21264용 칩셋을 개발했다.

### 21272/21274
디지털의 **21272**는 **츠나미(Tsunami)**로도 알려져 있으며, 21274는 **타이푼(Typhoon)**으로도 알려져 있으며, 알파 21264용 최초의 칩셋이었다. 21272 칩셋은 1-2방향 멀티프로세싱과 최대 8GB 메모리를 지원했으며, 21274는 1, 2, 3, 4방향 멀티프로세싱, 최대 64GB 메모리를 지원했고, 둘 다 하나 또는 두 개의 64비트 33MHz PCI 버스를 지원했다. 128-512비트 메모리 버스는 83MHz로 작동하여 최대 5,312MB/s의 대역폭을 제공했다. 이 칩셋은 100MHz 레지스터드 ECC SDRAM을 지원했다.

이 칩셋은 C-칩, D-칩, P-칩의 세 가지 장치로 구성되었다. 칩셋을 구성하는 장치의 수는 칩셋 구성에 따라 달라졌다. C-칩은 메모리 컨트롤러를 포함하는 제어 칩이다. 마이크로프로세서당 하나의 C-칩이 필요했다.

P-칩은 33MHz PCI 버스를 구현하는 PCI 컨트롤러이다. 21272는 하나 또는 두 개의 P-칩을 가질 수 있었다.

D-칩은 DRAM 컨트롤러로, CPU와 P-칩 간의 접근을 구현한다. 21272는 두 개 또는 네 개의 D-칩을 가질 수 있었고, 21274는 두 개, 네 개 또는 여덟 개의 D-칩을 가질 수 있었다.

21272와 21274는 디지털, 컴팩, 휴렛팩커드에서 보급형부터 중급형 AlphaServer와 모든 AlphaStation 모델에 광범위하게 사용되었다. 또한 알파 프로세서 주식회사(나중에 API 넷웍스(API NetWorks)로 알려짐)의 UP2000+ 마더보드와 같은 타사 제품에도 사용되었다.

### 아이언게이트

AMD는 두 개의 알파 21264 호환 칩셋인 **아이언게이트(Irongate)** (**AMD-751**로도 알려짐)와 그 후속작인 **아이언게이트-2(Irongate-2)** (**AMD-761**로도 알려짐)를 개발했다. 이 칩셋은 애슬론 마이크로프로세서용으로 개발되었지만, AMD가 디지털로부터 알파에 사용된 EV6 버스를 라이선스했기 때문에, 애슬론과 알파 21264는 버스 프로토콜 측면에서 호환되었다. 아이언게이트는 삼성에서 UP1000 및 UP1100 마더보드에 사용되었다. 아이언게이트-2는 삼성에서 UP1500 마더보드에 사용되었다.

## 같이 보기
* 클러스터드 멀티스레딩
* 알파 21364
* 알파 21464

## 내용주

## 각주
* 컴팩 (1999년 7월). Alpha 21264 Microprocessor Hardware Reference Manual.
* 컴팩 (2001년 6월). 21264/EV68CB and 21264/EV68DC Hardware Reference Manual.
* 컴팩 (2002년 3월). 21264/EV67 Microprocessor Hardware Reference Manual.
* 컴팩 (2002년 3월). 21264/EV68A Microprocessor Hardware Reference Manual.
* Gronowski, Paul E. 외 (1998). "High Performance Microprocessor Design". IEEE Journal of Solid-State Circuits, Volume 33, Number 5, pp. 676&ndash;686.
* Gwennap, Linley (1996년 10월 28일). "Digital 21264 Sets New Standard". Microprocessor Report, Volume 10, Number 14. MicroDesign Resources.
* Kessler, R. E.; McLellan, E. J. and Webb, D. A. (1998) "The Alpha 21264 Microprocessor Architecture". Proceedings of the International Conference on Computer Design: VLSI in Computers and Processors. pp.&nbsp;90&ndash;95.
* Kessler, R. E. (1999). "The Alpha 21264 Microprocessor". IEEE Micro, 1999년 3월&ndash;4월. pp.&nbsp;24&ndash;36.
* Leibholz, Daniel and Razdan, Rahul (1997). "The Alpha 21264: A 500 MHz Out-of-Order Execution Microprocessor". Proceedings of Compcon '97. pp.&nbsp;28&ndash;36.
* Matson, M. 외 "Circuit Implementation of a 600MHz Superscalar RISC Microprocessor". Proceedings of the International Conference on Computer Design: VLSI in Computers and Processors. pp.&nbsp;104&ndash;110.

## 추가 자료

* Benschneider, B.J. 외 (2000). "A 1 GHz Alpha microprocessor". ISSCC Digest of Technical Papers, pp.&nbsp;86&ndash;87.
* Clouser, J. 외 (1999년 7월). "A 600-MHz superscalar floating-point processor". IEEE Journal of Solid-State Circuits **34** (7): pp.&nbsp;1026&ndash;1029.
* Fischer, T.; Leibholz, D. (1998). "Design trade offs in stall-control circuits for 600 MHz instruction queues". ISSCC Digest of Technical Papers, pp.&nbsp;232&ndash;234, 444.
* Gieseke, B.A. 외 (1997). "A 600 MHz superscalar RISC microprocessor with out-of-order execution". ISSCC Digest of Technical Papers, pp.&nbsp;176&ndash;177, 451.
* Gronowski, Paul E. 외 (1998년 5월). "High-performance microprocessor design". IEEE Journal of Solid-State Circuits **33** (5): pp.&nbsp;676&ndash;686.
* Hokinson, R. 외 (2001). "Design and migration challenges for an Alpha microprocessor in a 0.18&nbsp;μm copper process". ISSCC Digest of Technical Papers, pp.&nbsp;320&ndash;321, 460.

분류:DEC의 마이크로프로세서
분류:슈퍼스칼라 마이크로프로세서