벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] 명확해진 Core Microarchitecture

tware 2006. 3. 11. 20:30

 

Pentium M 때와 크게 다른 Core Microarchitecture 기술 공개

 Intel은 미국 샌프란시스코에서 개최한 기술 컨퍼런스 "Intel Developer Forum (IDF)"에서 차세대 CPU 마이크로 아키텍쳐 "Core Microarchitecture (코어 마이크로 아키텍처) "의 개요를 밝혔다. IDF의 1일째 (3월 7일)는 대략적인 모습이 밝혀졌을 뿐이었지만, 2일째와 3일째의 기술 세션에서는 어느 정도 깊이있는 정보가 공개되었다. 대부분 기술 개요를 분명히 하지 않았던 이전 Pentium M (Banias) 아키텍처 때와는 상당히 태도에 차이가 있다.

 새로 명확해진 정보를 기반으로 먼저 파이프 라인의 개요를 정리해 보고 싶다. 아울러, 지금까지 보고 했던 과실을 정정하고 싶다.

 아래는 Core Microarchitecture의 "마지막으로 확인 된"블록 다이어그램이다. IDF 동안 이것과는 다른 다이어그램이 나타 났지만 이 구성이 정확한 것이라고 한다. 프롬 스크래치 (처음부터)에서 개발된 Core Microarchitecture는 종래의 "NetBurst (Pentium 4)"와"Banias (Pentium M)"의 어느 쪽과도 다른 구성을 가지고 간다. 그러나 기준선은 Banias 계의 흐름을 계승하고 있다.

 

 

Architecture Block Diagram


 파이프 라인의 처음에 있는 것은 " 인스트럭션 (명령) 페치 (Instruction Fetch)" 와 "프리 디코딩 (PreDecode)." x86 명령의 페치 (가져 오기)를 행하는 명령 페쳐는 1 단위의 명령어 프리 페처 (Instruction Prefetcher)가 부속된다. 프리 디코딩은 가변 길이의 x86 명령어의 구분을 명확히 하고, 또한 명령 유형을 판별한다. 후술하는 Macro-Fusion 할 수 있는지 여부도 이 단계에서 검출한다.

 페치 / 프리 디코더에서 최대 6명령 / 사이클 "인스트러션 큐 (Instruction Queue)"에 x86 명령이 전송된다. 큐에 대기한 명령은 최대 5명령 / 사이클로 "명령 디코더 (Decoder)"에 로드 된다.

 Pentium III / Banias / Yonah 계에서는 디코더는 2개의 심플 디코더와 하나의 컴플렉스 디코더로 구성되어 있다. NetBurst 계는 L1 명령 캐쉬인 트레이스 캐쉬 앞에 대형 디코더를 포함한다. 대조적으로, Core Microarchitecture에서는 4개의 디코더를 갖추어 그 중 1개가 컴플렉스 디코더로 되어있다.

 아래는 디코더 부분의 그림이다. Intel은 디코더의 개요 차트는 보여주고 있지 않다. 그러나 이 그림은 설계자의 한명인 Bob Valentine 씨 (Architect, Intel Architecture Group) 에게 직접 보여, 그의 지적을 넣어 수정, 확인을 취했기 때문에, 실수는 없다고 생각한다.

 

 

 

Architecture Decoder



4개의 디코더는 전부 퓨전이 가능

 디코더에 대해서는 후의 보고서에서 좀 더 자세히 설명 하겠지만, 1 개의 디코더만 최대 4개의 uOPs를 생성 할 수있어 이 디코더가 마이크로 코드 시퀀서와도 연결되어 있다. 나머지 3개의 디코더도 후술하는 융합 uOPs "Fused uOPs"를 생성 할 수 있기 때문에 지금까지 의미의 단순 디코더와 다르다.

 Core Microarchitecture 디코더는 "Macro-Fusion (또는 Macro-OPs Fusion)" 과 "Micro-OPs Fusion" 의 2개의 퓨전 기술을 구현한다. x86 계열의 out-of-order (비 순차 ) 형 CPU 아키텍처는 일반적으로 x86 명령어를 (여러개의) RISC 식의 내부 명령 "Micro-OPs (uOPs)"로 변환한다(분해한다). Micro-OPs Fusion는 보통 2개의 uOPs를 1개의 융합 uOP "Fused uOP"로 융합된다.

 또 하나의 Macro-Fusion은 복수의 x86 명령어(Macro-OPs)를 1개 Fused uOP 융합 시킨다. 최초의 Core Microarchitecture의 구현은 x86 명령 중 비교 명령인 cmp 또는 test와 조건 분기 명령 (jcc)의 조합만 융합시킨다. 이에 따라 많은 프로그램에서 최대 15%의 uOPs의 삭감이 가능하다고 한다.

 디코더는 Micro-OPs Fusion과 Macro-Fusion 양쪽을 조합하는 것이 가능하다. 예를 들어, 레지스터와 메모리의 값을 비교해 그 결과로 점프하는 경우, 지금까지의 아키텍처 (NetBurst)에서는 일반적으로 3개의 uOPs가 생성되었다. 메모리에서 레지스터로 "로드 uOP" 두 레지스터 값을 비교하는 "비교 uOP" 결과에 따라 점프하는 "조건부 uOP" 3개다. Core Microarchitecture는 Micro-OPs Fusion과 Macro-Fusion 의해 3개의 uOPs를 1 개의 Fused uOP로 정리할 수 있다. 이전 기사에서는 Macro-Fusion이 가능한 조합은 1세트 / 사이클 이라고 추측해 썼지만, 이것은 실수로 최대 2 세트 / 사이클까지 Macro-Fusion이 가능하다.

 


스케줄러로 분리되어 발행되는 Fused uOPs

 디코더에서 최대 4uOPs / 사이클 대역으로 명령어가 하단 파이프에 보내진다. 리네임 (Rename)과 얼로케이트 (Allocate)에서 자원 할당이 거행 된 뒤에 uOPs는 out-of-order 부의 스케줄러로 보내진다. 스케줄러는 uOPs를 실행 가능한 순서로 실행 유닛에 발행한다. x86 계열 CPU의 경우 정수 연산 파이프와 부동 소수점 연산 파이프로 스케줄러가 분리되어 있는 것이 많지만, Core Microarchitecture는 통합된 스케줄러를 가진다.

 스케줄러가 로드하는 uOPs는 최대 4uOPs / 사이클 임에도, 연산 유닛 어레이에 발행되는 uOPs 수는 4uOPs / 사이클보다 많아진다. Fused uOPs 가 실행될 때에 사실상 분해되기 때문이다. 1개 Fused uOP 가운데 복수의 기능은 각각 다른 타이밍에 실행 유닛에 발행된다. 예를 들어, 레이턴시가 긴 로드는 먼저 로딩 유닛에 발행되고, 레지스터에 데이터가 로드 된 것을 감지한 후, 연산형 명령이 발행된다. Macro-Fusion으로 융합 된 비교 uOP 조건 분기 uOP 관해서는 동일한 실행 유닛에 1 사이클로 발행된다.

 Valentine 씨에 따르면, 실행 유닛군 중 Macro-Fusion으로 융합된 Fused uOP를 실행할 수는 있는 것은 그림의 가장 왼쪽 1개만. 이것은 왼쪽의 실행 유닛만 분기 유니트를 준비하기 때문이다.

 

Macro (OPs)-Fusion의 개요


 실행 유닛의 구성은 5에 머문다. 연산계 유닛 군이 3,로드 및 스토어가 각각 1개씩. 전에 쓴대로, SIMD (Single Instruction, Multiple Data) 계의 부동 소수점 연산은 2 개의 실행 유닛에서 가능하다. 왼쪽에서 2번째의 유닛으로 128bit SIMD 덧셈, 중앙의 유닛으로 128bit SIMD 곱셈을 할수 있다. 모두 1 사이클 throughput 으로 단정밀도 (32bit) 부동 소수점 데이터 4개에 대해 덧셈과 곱셈을 병렬로 수행이 가능하다. 최대 8 오퍼레이션이 병렬로 가능하다.

 사전 보고서 Core Microarchitecture 에서는 SIMD의 적화산이(FMA) 가능하다 썼지만, 이것은 잘못이다. 사실, Core Microarchitecture 에 대해서는 이전부터 적화산이 가능하다는 소문이 있어, 물음표를 붙이면서 곱셈 uOP와 가산 uOP를 융합시킬 수 있는 가능성이 있다고 말했다. 최초 Intel이 IDF 세션에서 보여준 Core Microarchitecture 블록 다이어그램에서는 부동 소수점 연산 유닛이 1 개로 그려져 있었고, 그것을 보여줬다. 명확하게 쓰지 않았지만, 1 유닛으로, 8 개의 부동 소수점 연산 작업이 1 사이클 throughput으로 가능하게된다면, SIMD 적화 연산을 실행할 수 있다고 추측하게 된다. 그러나 정확한 Core Microarchitecture의 구성이 밝혀져, 이것은 잘못인 것이 명확하게 되었다. 최초의 Macro-Fusion 구현에서는 비교 플러스 점프만 가능하다.

 

 

투기 로드를 가능하게 하는 예측기구를 탑재

 데이터 로드는 하드웨어 기반 데이터 프리 페치가 가능하다. Core Microarchitecture는 2 유닛의 데이터 프리페처 (Data Prefetcher)를 포함한다. 또 이 밖에 L2 캐시 컨트롤러에 공유 프리페처가 2 유닛 구현​​되어있다. 각 CPU 코어가 각각 1 유닛의 명령 프리페처와 2 유닛의 데이터 프리페처를 갖추고, L2에 2 유닛의 프리페처가 있어, 토탈 8개의 프리 페처가 듀얼코어 안에 존재한다.

 또한 Core Microarchitecture는 메모리상의 데이터 의존관계의 애매함 (ambiguity)을 해결하는 "Memory Disambiguation" 을 구현한다. 이에 따라 로드 명령을 스토어 명령 보다 더 앞에 투기(예)적으로 실행이 가능해 진다. Core Microarchitecture 에서 이것은 완전히 하드웨어 기반으로 행한다. 따라서 Memory Disambiguation 예측 유닛 "Memory Disambiguation Predictor "이 구현되어 있다.

 Memory Disambiguation 에서는 조건 분기 명령에 대한 분기 예측과 같이,로드 명령에 대해서 정말 데이터 의존이 발생하는가를 예측. 데이터 의존이 발생하지 않는 것으로 예측된 로드 명령은 스케줄러에 의해 가능한 앞에서 실행된다. 투기(예측)적으로 실행된 로드는 리타이어먼트 때에 체크되고 (즉, 검사가 끝날 때까지는 리타이어되지 않음), 예측이 빗나 갔을 경우는 다시 로드 명령이 실행된다. Core Microarchitecture 에서는 Memory Disambiguation 결과를 모니터 하고, 자동으로 기능을 on / OFF 한다. 예측 오류가 계속될 경우에는 일정 시간 OFF 하는 것으로 손실을 억제한다.

 아웃 오더부에서의 uOPs의 리타이어먼트는 4uOPs / 사이클. 리타이어 한 uOPs는 리오더된 인 오더가 된다. 즉, Core Microarchitecture 5 명령 디코드로 프론트 엔드부는 4uOPs / 사이클 대역, out-of-order부 에는 4uOPs / 사이클 대역으로 uOPs 스케쥴 & 리타이어가 되는 머신이 되는 것이다.

 

 

pc watch 2006년 3월 11일 기사 입니다.

 

(콘로의 블럭 다이어그램은 아래의 네할렘 기사가 더 잘 나와있습니다.)

 

[고전 2005.08.25] Intel이 차세대 마이크로 아키텍처 CPU를 공개

 

 

[분석정보] Intel의 차세대 CPU 아키텍처 Core Microarchitecture

 

 

[분석정보] 차세대 CPU Conroe의 내부 구성이 명확히

 

 

[아키텍처] Core Microarchitecture 속도의 비밀은 CISC의 아름다움

 

 

[아키텍처] Intel의 차기 CPU "Nehalem"의 설계 개념은 "1 for 1"

 

 

 

[벤치리뷰] 인텔 코어2 듀오 제국의 역습