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

[분석정보] IDF에서 공개된 "Nehalem"의 내부 구조

tware 2008. 4. 3. 19:30

 

 

L2 캐시까지 포함한 CPU 코어 블록

 

 Intel은 4월 2 ~ 3일 까지 중국 상하이에서 개최된 기술 컨퍼런스 "Intel Developer Forum (IDF)"에서 차기 CPU 마이크로 아키텍처 "Nehalem (네할렘)"의 개요를 발표했다.

 

 Nehalem은 한마디로 설명하면, 현재의 Core Microarchitecture (Core MA)의 골격에 새로 SMT (Simultaneous Multi-Threading)와 3계층의 캐시, 계층화 된 Translation Lookaside Buffer (TLB)와 분기 예측 유닛을 시작, 다양한 기능을 더해 CPU 코어의 성능 향상을 도모한 CPU다. 이에 더해, 고속 인터커넥트 "QuickPath Interconnect (QPI)"와 DDR3 DRAM 인터페이스를 구현하여, 시스템 아키텍처를 일신했다.

 

 전의 NetBurst (Pentium 4)에서 Core MA로의 전환은 마이크로 아키텍처의 기본 부분의 대혁신이었다. 반면 이번​​ Core MA에서 Nehalem으로 전환은 기본 부분에서의 변화는 작지만 다양한 테크닉을 구사하는 것으로, 대폭적인 성능 향상을 꾀하고 있다.

 

 Intel에 따르면, Nehalem의 목적은, 레거시 응용 프로그램과 새로운 응용 프로그램 양쪽을 고속화하는 것이라 한다. 게다가 성능을 향상할 뿐만 아니라 전력대비 성능도 향상시킨다. 게다가 제품화에는 모바일이나 데스크탑에서 서버까지 확장 전개 가능하도록 한다.

 

 IDF 기술 세션에서 Nehalem의 CPU 코어 블록에는 CPU 코어가 점유하는 L2 캐시도 포함되어 있는 것으로 밝혀졌다. 즉, Nehalem에서는, 각 CPU 코어의 점유 유닛 전부가 직사각형 블록으로 깨끗이 정리되어 있다. 따라서 CPU 코어 설계를 복제하는 것으로, 듀얼, 쿼드, 옥타까지의 멀티 코어 구성을 비교적 쉽게 설계 가능하다.

 

 

 

 

 

 

유사성이 강한 Core MA와 Nehalem의 블록 다이어그램

 

 


 위 그림은 IDF에서 나타난 Nehalem의 CPU 코어 평면도이다. 이 차트에는 기능 블록의 분할이 그려져 있지만, 실은 이것은 완전히 정확하지 않다. 잘 보면 아래 유닛의 경계와 전혀 일치하지 않는다. 어디까지나 개념도로 인식하길 바란다.

 

Nehalem에서 확장된 주요 기능은 다이 레이아웃의 둘레에 쓰여진 대로다.

 

New SSE4.2 Instructions
Improved Lock Support
Additional Caching Hierarchy
Deeper Buffers
Improved Loop Streaming
Simultaneous Multi-Threading
Faster Virtualization
Better Branch Prediction

 

 

 

 

IDF에서는 Nehalem의 간단한 블록 다이어그램 그램도 공개되었다. 위의 슬라이드가 그 것이다. 이 슬라이드를 기반으로 다른 요소를 보완하여 다시 만든 것이 아래의 그림이다. Intel의 오리지널 그림에 빠진 분기 예측이나 SMT (Simultaneous Multithreading)는 그림에 반영하지  않는다.

 

 

Nehalem 블록도 최신판

 


 Nehalem의 블록 다이어그램을 잠시 보면 깨닫는 것은, Core MA의 블록 다이어그램과의 유사성이다. Core MA의 블록 다이어그램을 Nehalem에 맞춰 Intel의 오리지널 그림에서 다소 변경한 것이 아래의 그림이다. 양쪽의 그림에서 묘사가 통일되지 않은 부분 (TLB의 표현 등)은 Intel이 보여준 각각의 CPU 오리지널 블록 다이어그램에 준한다. 표현상의 차이로, 기능적인  차이를 이것으로 나타낸 것은 아니다.

 

 

Core Architecture 블록도 최신판

 

두 그림을 비교하면, 유사성은 명확하다. 전체 구성은 비슷하다. 이것은 CPU 마이크로 아키텍쳐를 관통하는 철학이 공통인 것을 의미한다.

 

 

Pentium 4 개발센터 다운 개량이 더해진 프론트 엔드

 

 

위로부터 봐 오면, 우선 프런트 엔드 부분은 유사성이 특히 강하다. 디코더에서 x86 명령을 1 사이클에 최대 4명령 디코딩해 내부 명령인 "uOPs (micro-operations : 마이크로 옵스)"로 변환한다. NetBurst (Pentium 4)에서는 디코딩시 x86 명령을 미세한 오퍼레이션으로(내부명령으로) 분할해 버린다. 반면, Core MA에서는 여러 uOPs가 융합된 형태인 "Fused-uOPs (퓨즈드 uOPs)"로 거의 1대 1로 변환한다. Intel은 이것을 "Micro-OPs Fusion"라고 부르고 있는데, Nehalem에서도 이 특징은 그대로 계승된다.

 

 

 

 Core MA에서는 특정 x86 명령어 쌍을 1개의 Fused-uOP로 융합시키는 Macro-Fusion도 구현되었다. Nehalem에서는 이 기능을 계승하지만, 약간 확장했다. Macro-Fusion이 가능한  명령의 조합이 늘었다. 또 Core MA에서는 Macro-Fusion은 32-bit 모드에서만 활성화 되지만, Nehalem에서는 64-bit 모드에서도 Macro-Fusion이 된다.

 

 


 Nehalem를 개발한 것은, NetBurst를 개발한 오레곤 힐스보로의 개발팀이다. 따라서 Nehalem에는 여기저기 NetBurst를 방불케하는 기능이 보인다. 그 하나가 "Loop Stream Detector (LSD)"이다. 루프에서 같은 명령군이 반복 실행되는 경우 Loop Stream Detector는 명령어 페치와 분기 예측을 건너뛰고 이미 페치되어 있는 루프의 명령을 반복 실행시킨다. 명령어 페치와 분기 예측의 손실이 없어져 성능이 오른다.

 

 Core MA에서는 Loop Stream Detector는 명령 디코더의 앞에 있어, x86 명령을 버퍼하고  디코더에 보냈다. 반면, Nehalem에서는 Loop Stream Detector가 명령 디코더 뒤에 있어, uOPs를 저장한다. 따라서 x86 아키텍처의 최대의 관문인 명령 디코드를 건너뛰고 성능을 끌어 올릴 수 있다. 아래의 그림이 Core MA의 Loop Stream Detector, 한층 그 아래의 그림이 Nehalem의 Loop Stream Detector이다. 디코더의 건너뜀은 NetBurst의 기본 철학이며, Nehalem에는 일부 그것이 살아있다.

 

 

Core MA Loop Stream Detector

 

 

 

Nehalem Loop Stream Detector

 

분기 예측은 2레벨의 "Branch Predictor (브랜치 프리딕터) "와 "Renamed Return Stack Buffer (RSB)"가 구현되었다. 이것은 IDF의 프리뷰 컨퍼런스의 설명대로다.

 

 

 

 

 

 

 

명령 발행 포트는 5에서 6으로 증가

 

 Nehalem의 실행 엔진도 Core MA보다 강화되었다. 실행 엔진에 명령을 발행하는 포트 수가 Core MA의 5에서 Nehalem은 6포트로 늘어났다. 즉, 명령 스케줄러는 최대 6uOPs를 실행  유닛군에 보낼 수 있다. Core MA에서는 최대 5uOPs 였다.

 

 6개의 명령 발행 포트는 3개의 컴퓨테이셔널 오퍼레이션과 3개의 메모리 오퍼레이션으로 나뉜다. Nehalem에서는 부동 소수점 연산 성능이 비약하지만, 부동 소수점 연산 유닛 자체가 증가되는 것은 아니다. 부동 소수점 SIMD 연산의 가산은 1유닛, 곱셈은 1유닛으로, 모두 128bit 폭. 기본적인 유닛의 구성은 Core MA와 다르지 않다.

 

 

 

 

 

 Nehalem에서의 개선점은 몇개가 있다. 하나는 아웃 오브 오더 윈도우의 확대로, Nehalem은 128개의 uOPs를 즉시 제어 할 수있다. Core MA는 96개 였다. Nehalem에서는, 그 이외의 버퍼도 깊어졌다. 레저베이션 스테이션이나 로드 버퍼와 스토어 버퍼는 모두 Nehalem에서 엔트리 수가 증가했다.

 

 Nehalem에서 가장 큰 확장 포인트의 하나는 SMT (Simultaneous Multithreading)다. (펜티엄4에서) Hyper-Threading (이라 부르던 것)같이 두개의 스레드를 하나의 CPU 코어에서 실행시킬 수 있는 SMT가 Nehalem에는 구현되어 있다. (제품 발표후 네할렘의 인텔 제품사양 표기는 하이퍼쓰레딩. 일반적인 이름은 SMT인데, 인텔은 일반적인 이름을 잘 쓰지 않고, 자사가 명명한 이름을 따로 붙입니다. 그게 하이퍼스레딩. 하드디스크 레이드의 경우도 물론 확장된 기능이기는 하지만, 인텔 래피드 스토리지 테크놀러지 IRST 라고 부르죠. CPU들의 경우도 예전 ARM 계열을 만들 때도 Xscale 이라고 했고, HP와 최상위 서버용으로 공동 개발한 아이테니엄도 그냥 인텔 아이네티엄 IA-64라고 불렀죠 (HP와 같이 몇몇 제품을 개발을 한지 10년 정도 됐을 때 모든 권리와 설계팀 등을 인텔이 인수). 인텔 최초의 그래픽 카드인 i740도 록키드마틴의 Real3D와 칩스 앤드 트크놀로지와 (여기는 인수 했다다고 쳐도) 같이 만든건데 그냥 i740 이라고 붙이구요 (마케팅 상으로 이쪽이 더 나아서 그런 것도 있겠지만). 다른 기사에도 언급되는데, 인텔은 뭐든지 이름을 다 붙인다고 나오죠. 다만 아이테니엄의 경우 중기 이후의 제품은 멀티스레딩이 되는데, SMT 처럼 동시 멀티스레딩이 아닌데 하이퍼스레딩이라고 부르죠. 이쪽은 SMT 처럼 코어당 2개의 스레드 상태를 가지며 다룰 수 있지만, 실행은 동시에 1스레드만 처리. 이렇다고 해도 다른 스레드의 메모리 레이턴시 등이 있을 때 단일 스레드 프로세서와 달리 다른 스레드(태스크)를 즉각 실행 가능하기에 전체적인 처리 성능이 향상 아이테니엄은 명령을 가져오는 방법이 달라서 그렇기도 하구요. 동시에 실행가능한 (RISC형의 작은)여러 명령 묶은을 한 덩어리로 실행하기 때문이죠. x86은 복잡한 CISC 명령이라 CPU 내부에서 RISC형의 작은 명령으로 분해해서 CPU 내부의 스케쥴러에서 여러 (RISC형의 작은) 명령을 최대한 동시 실행 가능하게  스케쥴링 하고 비순차 실행을 하죠. 그럼에도 불구하고 1스레드로는 (1태스크로는) 모든 실행 포트에 동시에 다 실행 시킬 수 없을 때 비는 부분을 다른 스레드의(태스크의) 명령을 사이사이 끼워서 동시에 실행. 결과적으로 멀티스레드 (멀티 태스크, 멀티코어) 프로그램의 경우 20~30% 성능 향상. 아래 그림에도 설명이 나오죠.)

 

 Intel의 Nehalem 개발을 담당한 Ronak Singhal 씨에 따르면, Nehalem의 SMT 개발에 종사 한 것은, NetBurst에 SMT를 구현한 같은 팀이라 한다. 따라서 철학은 같고, Nehalem에서는  메모리 대역의 여유가 증가한 만큼, SMT에 의한 성능 향상이 더 현저하다고 한다. Nehalem의 SMT는 CPU 코어 부분의 다이 면적의 5 ~ 10%의 증가분으로 실현되고 있어, 매우 퍼포먼스 / 소비전력 효율이 좋다 한다.

 

 

 

 

 

 

메모리 부분도 Nehalem에서는 강화되었다. 물리 메모리 주소를 캐시하는 "Translation Lookaside Buffer (TLB)"는 2계층화 된다. 언아라인드 (unaligned) 캐쉬 액세스의 고속화와 다중 스레드 응용 프로그램에서 중요한 동기 프리미티브의 고속화도 실현된다.

 

 

 

 

 

 

 


낮은 Nehalem의 메​​모리 액세스 지연 시간

 

 Nehalem에서는, L1, L2, L3의 3계층의 캐시로 되었다. 각 CPU 코어마다 32KB의 L1 명령 캐시와 L1 데이터 캐시, 거기에 256KB의 전용 L2 캐시를 갖춘다. 여기에 3 번째 층으로, CPU 전체의 CPU 코어에서 공유하는 대용량 L3 캐쉬를 갖춘 구성이다. Singhal 씨에 따르면, 각 CPU 코어 점유의 L2 캐시를 도입한 이유는 레이턴시 감소와 확장성 때문이라 한다. 캐시를 소용량화 하는 것으로 고속 액세스를 가능하며, 확장성에 의한 제품의 차별화는 L3의 양으로  조정한다.

 

 Nehalem에서는 CPU에 메모리 인터페이스를 통합한 것으로, 메모리 액세스 레이턴시는 극적으로 감소했다고 한다. Nehalem에서는 CPU에 직결된 DRAM에 액세스하는 경우뿐만 아니라 멀티 프로세서 구성에서 다른 CPU에 연결된 DRAM에 액세스 하는 경우도 레이턴시가 비교적 짧다고 한다. 아래가 그 차트로 현재 서버 CPU "Harpertown"과 비교하면 멀티 프로세서의 다른 CPU의 메모리에 액세스하는 원격 액세스조차 더 고속인 것이 판명된다.

 

 

 

 

 

 

 

 Nehalem에서 CPU끼리 직접 연결하는 것은, 새로운 고속 인터커넥트 QuickPath Interconnect (QPI)다. QPI에 구현되었다고 말하는 새로운 캐쉬 coherency 프로토콜 "MESIF"에 대해서는 이번에는 설명이 없었다. 참고로, 전회의 MESIF의 설명은, 표의 일부가 결여되었다. 정확하게는 아래의 표가된다.

 

 

Cache line states
  state clean / dirty write forward transition to
M modified Dirty OK OK  
E exclusive Clean OK OK M,S,I,F 
S Shared Clean No No I
I
invalid
-
No
No
 
F forward Clean No Ok S,I 


 Nehalem에서는, 가상화 때의 레이턴시도 줄여서 고속화를 도모한다. "Virtual Processor ​​ID (VPID)"와 "Extended Page Table (EPT)"가 구현되었다. Nehalem에서는 새롭게 SSE4에 다 넣지 못하고 남은 명령군이 "SSE4.2"로 구현된다. 모두 매우 복잡한 처리 명령군으로, CPU 내부에서 마이크로 코드에 의해 일련의 uOPs 군으로 분해되는 것으로 추정된다.

 

 

 

 

 

 IDF에서 밝혀진 Nehalem의 개요를 보면, Core MA의 때와 같은 큰 변화는 아니지만, 많은 기술이 집대성되어 있는 것을 알게된다. 인터페이스 부의 개량에 시선을 빼앗기지만, CPU 내부  아키텍처 확장도 매우 다방면에 걸쳐있다. 견실히 성능을 끌어 올린 마이크로 아키텍처다.

 

2008년 4월 3일 기사

 

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

 

 

[정보분석] Penryn의 1.5배 CPU 코어를 가지는 차세대 CPU "Nehalem"

 

 

[분석정보] 인텔이 목표하는 네할렘 에서의 GPU와 CPU의 통합

 

 

[분석정보] 계층화가 Nehalem MA의 특징

 

 

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

 

 

[아키텍처] Nehalem(네할렘)으로 볼 수 있는 인텔 CPU 마이크로 아키텍처의 미래

 

 

[분석정보] Atom의 절전 기술도 탑재한 Nehalem

 

 

[분석정보] Intel이 개요를 밝힌 옥타 코어 CPU Nehalem-EX

 

 

[벤치리뷰] 인텔 코어 i5-750 코어 i7 870 프로세서

 

 

[벤치리뷰] 코어 i7 860 리뷰

 

 

[벤치리뷰] 인텔 코어 i5-760 CPU 리뷰

 

 

[벤치리뷰] 168종 CPU 벤치마크

 

 

[벤치리뷰] 185종 인텔 vs AMD CPU 벤치마크

 

 

 

[분석정보] x86에서의 탈피를 도모 Intel의 새로운 로드맵