3. Alpha CPUs

현재, Alpha 아키텍쳐를 수행하는 2세대 CPU 코어는:

개인적으로 "EV"가 나타내는 것(편집자 주: "Electro Vlassic" - 12절 참고)과는 다르지만, 숫자는 코어가 수행되는 Digital CMOS 기술의 처음 세대를 나타낸다. 그래서, EV4는 원래 CMOS4에서 수행된다. 시간이 경과하면서, CPU는 광학적으로 다음 세대의 CMOS 프로세스에서 줄어들며 중간 나이의 성능을 내는 경향이 있다. EV45는 CMOS5 프로세스에서 작동되는 EV4 코어이다. 디자인을 특정 기술로 줄이는것과 처음부터 그 기술에서 수행하는것과는 차이가 있다.(그러나 나는 지금 거기에 언급하길 원하지 않는다.) 여기에 다른 몇가지가 더 있다: CMOS4S(광학적으로 CMOS4로 줄어들었다.) 그리고 CMOS5L.

기술적으로 CMOS4는 0.75 micron 프로세스, CMOS5는 0.5 micron 프로세스 그리고 CMOS6는 0.35 micron 프로세스이다.

이 CPU 코어를 우리가 가지고 있는 chips에 대응하기 위해:

21064-150,166

EV4 (원래), EV4S (현재)

21064-200

EV4S

21064A-233,275,300

EV45

21066

LCA4S (EV4 FPU를 가지고 있는 EV4 코어)

21066A-233

LCA45 (EV45 FPU를 가지고 있는 EV4 코어)

21164-233,300,333

EV5

21164A-417

EV56

21264

EV6

EV4 코어는 정수 단위, 부동소수점 단위 그리고 분기 예상을 가지는 dual-issue(CPU 클럭당 2개의 명령어를 낸다.) superpipeline 코어이다. EV4는 완전히 우회되며 64-bit 내부 데이터 경로를 가지며 명령어와 데이터 당 8byte 캐시를 연결한다. 캐시는 write-through이다(캐시는 더러워지지 않는다.)

EV45 코어는 여러부분 향상된 EV4 코어이다.: EV45 코어는 향상된 부동 소수점 유닛과 명령어와 데이터(캐시 패리티도 가지고 있다.)당 16kb 캐시를 가지고 있다. (편집자 주: Neal Crook은 분할자(divider)의 성능을 향상시키도록 floating point unit(FPU)를 바꾸도록 분리된 메일을 가리킨다. EV4 FPU divider는 단일-정밀도 분할을 위해 34 사이클을 가지며 더블 정밀도 분할(데이터 의존이 아니다)을 위해 63 사이클을 가진다. 대조적으로, EV45 분할자는 전형적으로 단일-정밀도 분할을 위해 19 사이클(최대 34 사이클)을 가지며 더블-정밀도 분할(데이타 의존)을 위해 29 사이클(최대 64 사이클)을 가진다.

EV5 코어는 quad-issue 코어이며, 또한 superpipeline이며, 그밖의 것들은 완전히 무시한다. I와 D 당 8kbyte 캐시를 단단히 연결한다. 또한 3-way 집합 결합과 write-back인 칩내 96kbyte 2차 캐시(Scache)를 단단히 연결한다. EV4->EV5 성능 향상은 클럭 스피드 향상만이 아니다. 캐시 증가와 quad issue 뿐만 아니라, 몇몇 경로에서 producer/consumer 대기 시간을 줄이기 위한 마이크로아키텍쳐적 향상이 있다.

EV56 코어는 기본적으로 EV5와 같은 마이크로 아키텍쳐이다. 그러나 EV56 코어는 8 비트와 16 비트 로드, 저장을 위한 몇몇 새로운 명령어를 추가했다. (8절을 참조해라.). 이것은 주로 디바이스 드라이버에 의해 사용되기 위해서이다. EV56 코어는 CMOS6에서 수행되며 2.0V 프로세스이다.

21064는 1992년에 발표되었다. 이것은 128-비트 버스 인터페이스인 EV4 코어이다. 버스 인터페이스는 256-비트 블럭 크기를 가지는 외부 2차 캐시와 쉽게 연결된다. Bcache 타이밍은 완전히 소프트웨어적으로 설정가능하다. 21064는 64-비트 외부 버스를 사용하도록 설정할수 있다.(그러나 어떤 shipping system이 이 버스를 사용하는지는 확실히 알지 못한다.) 21064는 Bcache에 어떠한 정책도 부여하지 않았지만, 보통 write-back 캐시로 설정된다. 21064는 Bcache와 내부 캐시에서 캐시 일관성을 유지하기 위해서 외부 하드웨어를 허용 하기 위한 훅을 포함하지만, 조잡하다.

21066은 EV4 코어를 사용하며 메모리 콘트롤러와 PCI 호스트 브릿지를 통합하였다. 핀을 줄이기 위해, 메모리 콘트롤러는 64-비트 테이터 버스(그러나 내부 캐시는 21064처럼 256 비트 블럭 크기를 가진다. 그러므로 블럭은 버스내 4 beat를 가지고 채운다.)를 가진다. 메모리 콘트롤러는 외부 Bcache와 외부 DRAM을 지원한다. Bcache 타이밍과 DRAMS은 완전히 소프트웨어적으로 설정되며 CPU 클럭 기간의 분해를 제어할수 있다. cache 블럭을 채우기 위해 4-beat 프로세스를 가지는 것은 들리는 것만큼 나쁘지는 않다. 왜냐하면 DRAM 액세스는 패이지 모드에서 행해지기 때문이다. 불행하게도, 메모리 콘트롤러는 새로운 DRAM(SDRAM, EDO, BEDO)이나 동기화 캐시 RAM을 지원하지 않는다. PCI 버스 인터페이스는 완전히 rev2.0를 따르며 33MHZ 까지 된다.

21164는 128-비트 데이터 버스를 가지며 어떤때든지 2 읽기를 가지며, 읽기 분리를 지원한다.(이것은 최상의 조건에서 100% 데이터 버스 이용률을 허용한다. 즉, 여러분은 이론적으로 매 버스 클럭당 128-비트의 데이터 전송을 할수 있다.) 21164는 외부 3차 캐시(Bcache)의 쉬운 연결을 지원하며 모든 캐시에서 완전한 캐시 일관성을 유지하기 위해 외부 시스템을 허용하기 위한 훅을 가지고 있다. 그러므로, SMP 디자인은 쉽다.

21164A는 1995년 10월에 발표되었다. EV56 코어를 사용한다. 보통 21164와 핀이 호환되지만, 분리된 파워 레일을 요구한다.; 21164의 +3.3V 파워가 있는 모든 파워 핀들은 2 그룹으로 나누어진다.; 한 그룹은 CPU 코어에 2.0V 파워를 제공하며, 다른 그룹은 I/O 셀에 3.3V를 제공한다. 예전과는 달리, 21164 핀은 5V-tolerant가 아니다. 이러한 변화의 최종 결과는 21164 시스템은 일반적으로 21164A로 업그레이드가 가능하지 않다는 것이다.(비록 21164를 수용할수 있는 21164A 시스템을 디자인하는 것이 상대적으로 쉽다고 할지라도.) 21164A는 또한 새로운 8 비트, 16 비트 로드와 저장을 지원하기 위해 한쌍의 새로운 핀을 가지고 있다. 외부 Bcache를 수행하도록 동기식 SRAM 사용을 위해 21164를 향상시켰다.