PA-8000

섬네일|HP PA-8000 마이크로프로세서
PA-8000(PCX-U), 코드명 오닉스(Onyx)는 휴렛 팩커드(HP)가 개발하고 제작한 마이크로프로세서로, PA-RISC 2.0 명령어 집합(ISA)을 구현했다. 이전 PA-RISC 마이크로프로세서에서 파생된 회로 없이 완전히 새로운 설계였다. PA-8000은 1995년 11월 2일 Precision RISC Organization(PRO) 회원들에게 배송이 시작되면서 출시되었다. PRO 회원들만 독점적으로 사용했으며 상업 시장에서는 판매되지 않았다. 이후의 모든 PA-8x00 프로세서(PA-8200부터 PA-8900까지, 아래에서 더 자세히 설명)는 기본 PA-8000 프로세서 코어를 기반으로 한다.

PA-8000은 다음 기업에서 사용되었다.

 HP는 HP 9000 및 HP 3000 워크스테이션 및 서버에 사용
 NEC는 TX7/P590 서버에 사용
 스트라투스 테크놀로지스(Stratus Technologies)는 Continuum 무정지 서버에 사용

설명
PA-8000은 명령어를 비순차적 명령어 처리 방식으로 투기적 실행하는 4방향 슈퍼스칼라 마이크로프로세서이다. 이러한 기능은 이전 PA-RISC 구현에서는 찾아볼 수 없었으며, PA-8000은 단순한 마이크로아키텍처와 높은 클록 속도 구현을 사용하여 성능을 달성하는 전통을 깬 최초의 PA-RISC CPU가 되었다.

명령어 인출 장치
PA-8000은 4단계 프론트엔드를 가지고 있다. 처음 두 단계 동안 명령어 인출 장치(IFU)에 의해 명령어 캐시에서 4개의 명령어가 인출된다. IFU에는 프로그램 카운터, 분기 이력 테이블(BHT), 분기 대상 주소 캐시(BTAC) 및 4개 엔트리 변환 색인 버퍼(TLB)가 포함되어 있다. TLB는 명령어 캐시에 접근하기 위해 가상 주소를 물리 주소로 변환하는 데 사용된다. TLB 미스 발생 시, 주 TLB에서 변환을 요청한다.

분기 예측
PA-8000은 정적 또는 동적 방법을 사용하여 분기 예측을 수행한다. PA-8000이 어떤 방법을 사용했는지는 각 TLB 엔트리의 비트에 의해 선택되었다. 정적 예측은 대부분의 역방향 분기를 수행된 것으로, 순방향 분기는 수행되지 않은 것으로 간주한다. 정적 예측은 또한 컴파일러가 명령어 자체에 인코딩한 힌트를 검사하여 분기의 결과를 예측했다.

동적 예측은 분기의 기록된 이력을 사용하여 수행 여부를 결정한다. 이 정보는 256개 엔트리 BHT에 저장된다. 각 BHT 엔트리는 3비트 시프트 레지스터이다. PA-8000은 다수결 투표 알고리즘을 사용했으며, 3비트 중 다수가 설정되면 분기가 수행된 것으로, 비어 있으면 수행되지 않은 것으로 예측한다. 잘못 예측된 분기는 5사이클의 페널티를 발생시킨다. BHT는 분기 결과가 알려지면 업데이트된다. PA-8000은 사이클당 두 개의 분기 명령어를 실행할 수 있지만, BHT가 구현을 단순화하기 위해 듀얼 포트가 아니므로 하나의 결과만 기록된다.

PA-8000은 올바르게 예측된 분기에 대해 2사이클의 버블을 가지고 있는데, 이는 분기의 대상 주소가 명령어 캐시로 전송되기 전에 계산되어야 하기 때문이다. 이 버블의 발생을 줄이기 위해 PA-8000은 32개 엔트리 완전 연관 BTAC을 사용한다. BTAC은 분기의 대상 주소를 캐시한다. 동일한 분기가 발생하고 수행된 것으로 예측되면 주소는 지연 없이 인출이 시작될 수 있도록 즉시 명령어 캐시로 전송된다.

BTAC의 효율성을 극대화하기 위해 예측된 분기의 대상 주소만 캐시된다. 분기가 수행되지 않은 것으로 예측되었지만 대상 주소가 BTAC에 캐시된 경우 해당 엔트리는 삭제된다. BTAC이 가득 차서 새로운 엔트리를 기록해야 하는 경우, 교체되는 엔트리는 라운드 로빈 교체 정책을 사용하여 선택된다.

명령어 캐시
명령어 캐시는 외부 캐시이며 256KB에서 4MB의 용량을 지원한다. 명령어는 캐시에 들어가기 전에 각 명령어에 5비트가 추가되어 미리 디코딩된다. 이 비트는 파이프라인 후반에 명령어를 디코딩하는 데 필요한 시간을 줄여준다. 명령어 캐시는 세트 연관 캐시의 복잡성을 피하기 위해 다이렉트 맵드 방식이며, 148비트 버스를 통해 접근된다. 캐시의 태그도 외부이다. 동기 SRAM(SSRAM)으로 구성된다.

디코드 및 명령어 재정렬 버퍼
세 번째 단계에서 명령어는 디코딩된다. 네 번째 단계에서 명령어 재정렬 버퍼(IRB)에 배치된다. IRB의 목적은 레지스터 이름 변경, 비순차적 실행, 투기적 실행을 구현하고 명령어가 은퇴될 때까지 결과를 저장할 임시 공간을 제공하는 것이다. IRB는 5단계 동안 어떤 명령어가 발행될지 결정한다.

IRB는 두 개의 버퍼로 구성되는데, 하나는 정수 및 부동소수점 명령어를 위한 것이고 다른 하나는 로드 및 저장 명령어를 위한 것이다. 일부 명령어는 두 버퍼 모두에 배치된다. 이 명령어는 분기 명령어 및 특정 시스템 명령어이다. 각 버퍼에는 28개의 엔트리가 있다. 각 버퍼는 사이클당 최대 4개의 명령어를 받아들일 수 있으며, 사이클당 최대 2개를 해당 기능 장치로 발행할 수 있다.

실행
모든 명령어는 10개의 기능 장치에서 6단계 동안 실행을 시작한다. 곱셈을 제외한 정수 명령어는 두 개의 산술 논리 장치(ALU)와 두 개의 시프트/병합 장치에서 실행된다. 이 장치에서 실행되는 모든 명령어는 1사이클 지연 시간을 가지며, 그 결과는 7단계에서 대상 레지스터에 기록된다.

부동소수점 명령어 및 정수 곱셈 명령어는 두 개의 곱셈-누산 퓨즈(FMAC) 장치와 두 개의 나눗셈/제곱근 장치에서 실행된다. FMAC 장치는 파이프라인화되어 있으며 3사이클 지연 시간을 가진다. 곱셈은 6단계에서 수행되고, 덧셈은 7단계에서, 반올림은 8단계에서, 그리고 쓰기 백은 9단계에서 수행된다. 곱셈과 누산 단계 사이에는 반올림이 없다. FMAC 장치는 개별 곱셈 및 덧셈 명령어 또한 실행하며, 단정밀도 및 배정밀도 변형 모두에 대해 3사이클의 지연 시간을 가진다. 나눗셈/제곱근 장치는 파이프라인화되어 있지 않으며 17사이클의 지연 시간을 가진다. 레지스터 포트 제한으로 인해 클록 사이클당 하나의 명령어만 발행할 수 있지만, 서로 및 FMAC 장치와 병렬로 작동할 수 있다.

정수 및 부동소수점 로드 및 저장 명령어는 두 개의 전용 주소 덧셈기에서 실행된다.

변환 색인 버퍼
변환 색인 버퍼(TLB)는 96개의 엔트리를 포함하며 듀얼 포트와 완전 연관 방식이다. 사이클당 두 개의 가상 주소를 변환할 수 있다. 이 TLB는 명령어와 데이터 모두에 대한 주소를 변환한다. IFU의 TLB가 미스될 때, 이 TLB가 변환을 제공한다. 로드 및 저장에 대한 변환은 명령어에 대한 변환보다 우선순위가 높다. 각 TLB 엔트리는 4KB에서 16MB까지의 크기를 가지는 페이지에 매핑될 수 있으며, 이는 4의 배수로 증가한다.

데이터 캐시
PA-8000은 최대 4MB 용량의 데이터 캐시를 가지고 있다. 데이터 캐시는 듀얼 포트이므로 매 사이클마다 두 번의 읽기 또는 쓰기를 수행할 수 있다. 두 개의 캐시 뱅크를 구현하여 듀얼 포트화되었으므로, 두 번의 읽기 또는 쓰기가 동일한 뱅크를 참조하는 경우 충돌이 발생하여 하나의 작업만 수행할 수 있으므로 진정한 의미의 듀얼 포트는 아니다. 각 뱅크에 하나씩, 두 개의 64비트 버스로 접근된다. 캐시 태그는 외부이다. 각 뱅크에서 독립적인 접근을 허용하기 위해 캐시 태그의 두 개의 사본이 있다. 데이터 캐시는 명령어 캐시와 동일한 이유로 다이렉트 맵드 방식이다. SSRAM으로 구성된다.

런웨이 버스
외부 인터페이스는 64비트 주소 및 데이터 다중화 버스인 런웨이 버스이다. PA-8000은 40비트 물리 주소를 사용하므로 1TB의 물리 메모리를 주소 지정할 수 있다.

물리적 특성
섬네일|upright=2.2|HP PA-8000 마이크로프로세서 (상단 및 하단)
PA-8000은 380만 개의 트랜지스터를 가지고 있으며 크기는 17.68mm x 19.10mm로, 면적은 337.69mm2이다. HP에서 CMOS-14C 공정으로 제조되었는데, 이는 CMOS-14 공정의 게이트를 10% 축소한 것이다. CMOS-14C 공정은 0.5μm, 5단 알루미늄 인터커넥트, 상보성 금속 산화물 반도체(CMOS) 공정이었다. 다이에는 신호용으로 704개의 솔더 범프와 전원 또는 접지용으로 1,200개의 솔더 범프가 있다. 1,085개의 패드를 가진 플립칩 알루미나 세라믹 랜드 그리드 배열(LGA)로 패키징되었다. PA-8000은 3.3V 전원 공급 장치를 사용한다.

PA-8200
섬네일|HP PA-8200 마이크로프로세서
PA-8200(PCX-U+), 코드명 벌컨(Vulcan)은 PA-8000의 추가 개발이었다. PA-8200을 사용한 첫 번째 시스템은 1997년 6월에 출시되었다. PA-8200은 200~240MHz로 작동했으며 주로 알파 21164와 경쟁했다. 분기 예측과 TLB가 개선되었다. 분기 예측은 BHT 엔트리 수를 4배 늘려 1,024개로 만들었으며, 이는 주변 회로 재설계 없이 수용하기 위해 2비트 알고리즘을 사용해야 했다. 또한 두 개의 분기 결과가 BHT에 기록될 수 있도록 쓰기 큐를 구현하여 개선되었다. TLB 엔트리 수는 96개에서 120개로 증가하여 TLB 미스를 줄였다. 클록 주파수도 사소한 회로 재설계를 통해 개선되었다. PA-8200의 다이 크기는 PA-8000과 동일했는데, 이는 다이의 빈 공간을 활용하여 개선이 이루어졌기 때문이다. CMOS-14C 공정으로 제조되었다.

PA-8500
섬네일|HP PA-8500 마이크로프로세서 (상단 및 하단)
PA-8500(PCX-W), 코드명 바라쿠다(Barracuda)는 PA-8200의 추가 개발이다. 1998년 초에 테이프 아웃되었고 1998년 말에 시스템 내에서 출시되었다. 생산 버전은 300~440MHz 주파수로 작동했지만, 500MHz까지 작동하도록 설계되었고 실제로 그렇게 작동했다. 가장 주목할 만한 개선 사항은 더 높은 작동 주파수와 주 캐시의 온-다이 통합이다. 더 높은 작동 주파수와 코어와 동일한 다이에 주 캐시를 통합하는 것은 0.25μm 공정으로의 전환 덕분이었다. 새로운 공정에서 PA-8500 코어는 10.8mm x 11.4mm(123.12mm2)를 측정했으며, 0.5μm PA-8200의 절반 미만 면적이었다. 이로 인해 캐시 통합에 사용할 수 있는 면적이 확보되었다.

PA-8500은 512KB 명령어 캐시와 1MB 데이터 캐시를 가지고 있다. 마이크로아키텍처의 다른 개선 사항으로는 PA-8200의 두 배 용량인 2,048개의 엔트리를 포함하는 더 큰 BHT와 160개의 엔트리를 포함하는 더 큰 TLB가 있다. PA-8500은 새로운 버전의 런웨이 버스를 사용한다. 새로운 버전은 125MHz로 작동하며 클록 신호의 상승 및 하강 에지 모두에서 데이터를 전송(이중 데이터 전송률, 또는 DDR)하여 240MT/s 또는 2GB/s의 대역폭을 제공한다. 런웨이 버스는 주소와 데이터를 전송하는 데 사용되므로 사용 가능한 대역폭은 2GB/s의 80% 또는 약 1.6GB/s이다.

PA-8500은 1억 4천만 개의 트랜지스터를 포함하며 21.3mm x 22.0mm(468.6mm2)를 측정한다. 인텔(Intel Corporation)에서 5단계 알루미늄 인터커넥트를 사용하는 0.25μm CMOS 공정으로 제조되었다. 2.0V 전원 공급 장치를 사용한다. HP는 이전 PA-RISC 마이크로프로세서를 제조하는 데 사용된 CMOS-14C보다 새로운 공정을 구현하기 위해 팹 업그레이드를 중단했기 때문에 PA-8500을 직접 제조하지 않았다.

PA-8500은 더 작은 544패드 랜드 그리드 배열(LGA)로 패키징되었는데, 이는 온-다이 주 캐시 통합으로 인해 외부 캐시와 통신하는 두 개의 128비트 버스와 관련 I/O 패드가 제거되었기 때문이다.

PA-8600
섬네일|HP PA-8600 마이크로프로세서
PA-8600(PCX-W+), 코드명 랜드샤크(Landshark)는 2000년 1월에 출시된 PA-8500의 추가 개발이다. PA-8600은 2000년 중반에 출시될 예정이었다. PA-8500의 미세 조정 버전으로 480~550MHz의 더 높은 클록 주파수에 도달할 수 있도록 했다. 명령어 캐시에 준 최소 최근 사용(LRU) 제거 정책을 사용하여 마이크로아키텍처를 개선했다. 인텔에서 제조했다.

PA-8700
섬네일|HP PA-8700 마이크로프로세서
PA-8700(PCX-W2), 코드명 피라냐(Piranha)는 PA-8600의 추가 개발이다. 2001년 8월에 출시되었으며 625~750MHz로 작동했다. 개선 사항으로는 데이터 프리페칭 구현, 데이터 캐시에 대한 준 LRU 교체 정책, 그리고 16TB의 물리 메모리를 주소 지정할 수 있는 더 큰 44비트 물리 주소 공간이 있었다. PA-8700은 또한 더 큰 명령어 및 데이터 캐시를 가지고 있으며, 용량이 각각 50% 증가하여 0.75MB와 1.5MB가 되었다. PA-8700은 IBM 마이크로일렉트로닉스(IBM Microelectronics)에서 7단계 구리 인터커넥트와 저유전율 유전체를 사용하는 0.18μm 실리콘 온 인슐레이터(SOI) CMOS 공정으로 제조되었다.

PA-8700+
PA-8700+는 PA-8700의 추가 개발이었으며 2002년 중반에 시스템에 도입되었다. 875MHz로 작동했다.

PA-8800
섬네일|HP PA-8800 마이크로프로세서
섬네일|left|4개의 ESRAM이 있는 PA-8000 CPU 모듈
PA-8800, 코드명 마코(Mako)는 PA-8700의 추가 개발이다. 2004년에 출시되었으며 HP의 C8000 워크스테이션 및 HP 9000 Superdome 서버에 사용되었다. 0.8, 0.9, 1.0GHz로 제공되었다. PA-8800은 단일 다이에 두 개의 수정된 PA-8700+ 마이크로프로세서로 구성된 듀얼 코어 설계였다. 각 코어는 768KB 명령어 캐시와 768KB 데이터 캐시를 가지고 있다. 주 캐시는 두 코어를 동일한 다이에 장착할 수 있도록 PA-8700보다 작다.

PA-8700에 비해 개선된 점은 향상된 분기 예측과 외부 32MB 통합 2차 캐시의 포함이다. 2차 캐시는 10GB/s의 대역폭과 40사이클의 지연 시간을 가진다. 4방향 세트 연관, 물리적으로 인덱싱되고 물리적으로 태그되며 라인 크기는 128바이트이다. 세트 연관성은 I/O 핀 수를 줄이기 위해 선택되었다. L2 캐시는 4개의 72Mbit(9MB) Enhanced Memory Systems Enhanced SRAM(ESRAM) 칩을 사용하여 구현되었는데, 이름과는 달리 SRAM과 유사한 인터페이스를 가진 1T-SRAM – 동적 램(DRAM)의 구현이다. 각 코어의 이 캐시에 대한 접근은 온-다이 컨트롤러에 의해 중재되며, 1MB의 2차 캐시 태그 또한 SRAM으로 온-다이에 상주하며 ECC에 의해 보호된다. PA-8800은 맥킨리 아이테니엄 마이크로프로세서와 동일한 프런트 사이드 버스를 사용했으며, 6.4GB/s의 대역폭을 제공하고 HP의 zx1과 같은 아이테니엄 칩셋과 호환된다.

3억 개의 트랜지스터로 구성되었으며, 그 중 2천 5백만 개는 로직용으로 23.6mm x 15.5mm(365.8mm2) 다이에 위치했다. IBM에서 구리 인터커넥트와 저유전율 유전체를 사용하는 0.13μm SOI 공정으로 제조되었다. PA-8800은 네 개의 ESRAM과 함께 인쇄 회로 기판(PCB)에 장착된 세라믹 볼 그리드 어레이로 패키징되어 초기 아이테니엄 마이크로프로세서에서 사용된 것과 유사한 모듈을 형성한다.

PA-8900
섬네일|HP PA-8900 마이크로프로세서
섬네일|left|4개의 ESRAM이 있는 PA-8000 CPU 모듈
PA-8900, 코드명 쇼트핀(Shortfin)은 PA-8800의 파생 제품이었다. 개발된 마지막 PA-RISC 마이크로프로세서였으며, 마이크로프로세서를 사용하는 시스템이 출시된 2005년 5월 31일에 출시되었다. HP 9000 서버와 C8000 워크스테이션에 사용되었다. 0.8, 0.9, 1.0, 1.1GHz로 작동했다. 이전에 소문났던 것처럼 PA-8800의 다이 슈링크는 아니다. L2 캐시 용량은 64MB로 두 배가 되었고, 지연 시간이 더 낮으며, 캐시의 오류 감지 및 수정 기능이 향상되었다. 맥킨리 시스템 버스를 사용했으며 HP zx1과 같은 아이테니엄 2 칩셋과 호환되었다. 마이크로아키텍처 변경은 없었지만, 부동소수점 장치와 온-다이 캐시 회로가 전력 소비를 줄이기 위해 재설계되었으며, 각 코어는 이후 1.0GHz에서 약 35W를 소모했다.

내용주

 각주 
 Barnes, Phillip (1999년 2월 26일). "A 500 MHz 64 bit RISC CPU with 1.5Mbyte on chip Cache". Proceedings of the International Solid State Circuits Conference.
 ComputerWire (2002년 6월 28일). "HP readying dual-core PA-8800". 더 레지스터.
 Gaddis, N.; Lotz, J. (1996년 11월). "A 64-b quad-issue CMOS RISC microprocessor". IEEE Journal of Solid-State Circuits 31 (11): pp. 1697–1702.
 Gwennap, Linley (1994년 11월 14일). "PA-8000 Combines Complexity and Speed". Microprocessor Report, Volume 8, Number 15.
 Gwennap, Linley (1996년 10월 28일). "HP Pumps Up PA-8x00 Family". Microprocessor Report, Volume 10, Number 14.
 Gwennap, Linley (1997년 11월 17일). "PA-8500's 1.5M Cache Aids Performance". Microprocessor Report.
 휴렛 팩커드 (1995년 11월 2일). HP Announces Release of PA-8000 to PRO Partners. (보도 자료)
 Hill, J. Michael and Lachman, Jonathan (2000). "A 900MHz 2.25MByte Cache with On Chip CPU - Now in SOI/Cu". 2000 International Solid-State Circuits Conference.
 Hunt, D. (1995). "Advanced performance features of the 64-bit PA-8000". Proceedings of CompCon. pp. 123–128.
 Johnson, David J. C. (2001년 10월 16일). "HP's Mako Processor". 2001 Microprocessor Forum.
 Krewell, Kevin (2000년 5월 22일). "HP Extends PA-RISC With 8700". Microprocessor Report.
 Kumar, Ashok (1996년 8월 19일). "The HP PA-8000 RISC CPU". Proceedings of Hot Chips VIII.
 Lesartre, Greg; Hunt, Doug (1997). "PA-8500: The Continuing Evolution of the PA-8000 Family". Proceedings of CompCon.
 Pountain, Dick (1995년 7월). "HP's Speedy RISC". 바이트 (잡지).
 Scott, Anne P. et al. (1997년 8월). "Four-Way Superscalar PA-RISC Processors". Hewlett-Packard Journal.
 Tsai, Li C. (2001년 2월 16일). "A 1GHz PA-RISC Processor". International Solid State Circuits Conference.
 Wermer, Sandra (1999년 3월 8일). "HP's PA-8600 processor earlier to ship than expected". HOISe.

더 읽어보기
 Burch, C. (1997). "PA-8000: a case study in static and dynamic branch prediction". Proceedings of International Conference on Computer Design. pp. 97–105.
 Gaddis, N.B. et al. (1996). "A 56-entry instruction reorder buffer". ISSCC Digest of Technical Papers. pp. 212–213, 447.
 Heikes, C.; Colon-Bonet, G. (1996). "A dual floating point coprocessor with an FMAC architecture". ISSCC Digest of Technical Papers. pp. 354–355, 472.
 Kumar, A. (1997년 3월). "The HP PA-8000 RISC CPU". IEEE 마이크로. pp. 27–32.
 Lotz, J. et al. (1996). "A quad-issue out-of-order RISC CPU". ISSCC Digest of Technical Papers. pp. 210–211, 446.
 Naffzinger, S. (1996). "A sub-nanosecond 0.5 μm 64 b adder design". ISSCC Digest of Technical Papers. pp. 362–363.
 PA-8000 PA-RISC 프로세서 OpenPA.net
 PA-8200 PA-RISC 프로세서 OpenPA.net
 PA-8500 PA-RISC 프로세서 OpenPA.net
 PA-8600 PA-RISC 프로세서 OpenPA.net
 PA-8700 PA-RISC 프로세서 OpenPA.net
 PA-8800 PA-RISC 프로세서 OpenPA.net
 PA-8900 PA-RISC 프로세서 OpenPA.net

분류:HP의 마이크로프로세서
분류:슈퍼스칼라 마이크로프로세서
분류:64비트 컴퓨터