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

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

tware 2008. 3. 28. 18:30


전력 효율면에서 뛰어난 SMT

 Intel은 다음주 상하이에서 개최되는 기술 컨퍼런스 "Intel Developer Forum (IDF) '에서 차기 CPU"Nehalem (네할렘) "마이크로 아키텍처의 개요를 밝힐 전망이다. Nehalem에 대해서는 지난 IDF에서 CPU 코어 이외의 인터페이스 부분과 명령 세트에 대해서는 어느정도 밝혀졌다. 그러나 CPU 코어 자체의 확장은 Intel은 비밀인 대로였다. 이번 IDF에서는 드디어 Nehalem의 내면이 공개된다. 그 IDF에 앞서 Intel은 Nehalem의 요점의 대략적인 개요 등을 밝혔다.

 Nehalem 마이크로 아키텍처의 하이라이트는 CPU 코어에 Hyper-Threading 동일한 SMT (Simultaneous Multithreading) 기술을 구현한 것이다. Nehalem에서는, 각 CPU 코어가 2 스레드를 동시 병행 실행 가능하다. Intel에 의하면, SMT 기술을 더한 것은 "SMT 가장 소비 전력 당 성능이 뛰어난 기능이기 때문" 이라고 한다. Nehalem에서는 단순히 성능을 올릴 뿐만 아닌, 고성능이며 전력 효율이 좋은 마이크로 아키텍처로 하는 것이 목적이었다. SMT는 그 열쇠가 되는 기술이라고 한다.

 SMT가 전력 효율에 효과가 있는 것은, 이전부터 지적됐다. 예를 들면, IBM은 2005년의 CPU 컨퍼런스 "Hotchips" 의 튜토리얼에서 SMT는 20% 가까운 성능 향상을, 24%의 전력 업으로 실현 가능한, 전력 효율이 높은 기술이라고 설명했다. 현재 최신 고성능 CPU의 대부분은 SMT 또는 어떤 멀티 스레딩 기술을 구현하는데, 그 이유 중 하나는 전력 효율면에서 유리하기 때문이다.

SMT는 성능과 전력 효율성을 향상


SMT의 전력 효율에 대한 결론



SMT VS CMP



 아웃 오브 오더 실행형 CPU의 경우, 원래 다양한 자원이 아웃 오브 오더 실행을 위해 다중화 되어 있기 때문에, SMT를 저렴한 비용으로 구현하기 쉽다고 말한다. 예를 들어, SMT에서는 두 개의 스레드 각각 레지스터가 필요하게 된다. 하지만 아웃 오브 오더 실행 CPU 에서는, 레지스터 경합을 피하기 위해 논리 레지스터 보다 더 많은 물리 레지스터를 구현하고 있기 때문에, 그것을 SMT로도 전용 할 수 있다. 추가 하드웨어가 적게 드는 만큼, 전력 소비도 억제가 쉽다.

 그렇지만, SMT를 효율 좋게 실행하려면, 역시 어느정도는 레지스터 등의 자원 증강은 시행하지 않으면 안된다는 것이다. 그것을 시사하는 것이, Nehalem 마이크로 아키텍처 상의 명령 윈도우와 스케줄러의 증강이다.

 현재 Intel의 Core Microarchitecture (Core MA)에서는, 인플라이트 제어 가능한 uOPs (CPU 내부 명령)의 수는 96개지만, Nehalem에서는 128개로 33% 확장된다. 파이프 라인 안에서 제어 가능한 uOPs 수가 늘어나기 때문에, 아웃 오브 오더 실행 가능한 uOPs의 명령 윈도우가 커진다. 보다 많은 uOPs 안에서 병렬로 실행 가능한 조합을 추출 할 수 있도록 되기 때문에, 원칙적으로 병렬성이 올라, IPC (instruction per cycle)가 향상된다.

 인플라이트 uOPs 수의 강화는, Nehalem이 SMT를 구현한 것과 관련되어 있다고 생각된다. 128개의 인플라이트 제어 명령 윈도우는, SMT의 2개의 스레드에서 공유한다고 생각된다. Nehalem에서는 SMT에 의해서, 병렬로 실행 가능한 uOPs 조합이 늘어, 실행 파이프 라인을 효율 좋게 채워지게 된다. 그러나 실행 자원을 효율 좋게 채우기 위해서는, 보다 많은 uOPs를 수시로 제어 할 필요가 있다. 그렇게 생각하면, 이 확장은 멀티 스레드 성능 향상으로 이어진다.

Nehalem에서, Core의 ua의 확장



멀티 스레드 지원의 요소인 트랜잭쇼널 메모리는 구현하지 않고?

 Intel은 Nehalem 에서는, 그 밖의 알고리즘의 확장 예를 두 가지 들었다.

 하나는 unaligned 캐시 액세스 (비정렬 캐시 액세스)의 고속화로, 기존의 CPU가 서투르게 해 온 부분이다. 이에 대해서는 구체적인 알고리즘의 구현은 밝히지 않았다. 그러나 Intel은 미디어 어플리케이션에서는, 데이터가 정렬되어 있지 않은 경우가 있어, 캐시 라인도 걸쳐 버리는 경우도 있다고 지적. Nehalem에서는 그러한 경우에도, 기존의 CPU와 비교하면 훨씬 고 스루풋으로 액세스 가능하다고 설명했다. 이는 보다 미디어 프로세싱에 적합한 확장이 이뤄지는 Sandy Bridge에서도 중요한 기능이라고 추측된다.

 다른 하나는 스레드간의 동기 고속화다. CPU가 멀티 코어 & 멀티 쓰레드화와 함께, 스레드 동기 문제는 중요하게 된다. "코어를 늘림에 따라 뛰어난 확장성을 얻기 위해서는, 동기화 포인트의 핸들로 애플리케이션을 고속화 하지 않으면 안된다"고 Intel은 설명한다. 그 때문에 Nehalem에서는 기존의 동기화를 원초적 고속화 하는 하드웨어를 더했다고 한다. 새로운 명령을 더하는 것이 아니라, 기존 LOCK과 XCHG 명령을 쓰는 동기를 고속화 한다고 한다.


 그러나 이것은 Intel이 Nehalem에서는 하드웨어 트랜잭셔널 메모리 (Transactional Memory)를 구현하지 않는 것을 시사한다. 트랜잭셔널 메모리에서는, 기존 방식에서의 락과 동기의 필요를 없애기 때문이다.

 트랜잭셔널 메모리에서는, 메모리를 락하는 대신에, 데이터를 일단 모으고, 트랜잭션 단위로 처리를 합쳐서 메모리에 전달(Commit)하여, 스레드 간의 병렬 처리를 가능하게 한다. 커밋 전에, 트랜잭션 간의 충돌을 감지해서, 충돌한 경우에는 트랜잭션을 재시작 시킨다. 예외가 거의 일어나지 않는 것을 전제로 하는, 작은 범위에서 쓰레드의 투기적인 실행이라고도 말할 수 있다. Intel은 이전 IDF에서, 동기하는 스레드 수가 많아지면, 트랜잭셔널 메모리의 이점이 강해진다고 설명. 소프트웨어 구현에서도, 8 스레드의 처리에서는 락 방식에 비해 압도적으로 유리하게 되는 것을 시현했다.

 트랜잭셔널 메모리 연구에는, Intel과 Sun Microsystems가 적극적이며, 지금까지도 2사가 컨퍼런스 등에서 연구 성과를 발표해 왔다. Sun은 차기 서버 CPU에서 하드웨어 트랜잭셔널 메모리를 구현한다. 그러나 Intel은 8스레드 이상에서는 트랜잭셔널 메모리가 유리하다고 설명하면서도, 8쓰레드를 동시에 실행시킬 수 있는 Nehalem 하드웨어 트랜잭셔널 메모리를 구현하지 않는다고 추측된다. 그렇다 하더라도, 트랜잭셔널 메모리가 이 문제에 대한 해답인 것은 틀림이 없을 것 같다. Nehalem이 기존의 동기화 기능을 고속화한 정도라고 하면, 이 점에서 Nehalem은 아직 중간 지점에 불과하게 된다.


Nehalem MA는 동적으로 확장 가능하고 혁신적인 디자인



계층화 Nehalem을 관통하는 철학

 Nehalem에서는 알고리즘 이외의 면도 강화 되었다. 하나는 CPU의 싱글 스레드 성능 향상의 열쇠가 되는 분기 예측 정확도 (Branch Prediction)의 향상이다.

 따라서 Nehalem에서는 분기 예측기를 2계층화 했다. " 2차 분기 예측기는 대단히 풋 프린트가 큰 코드에도, 분기 히스토리 캡처를 가능하게 한다. 현재의 작은 분기 예측기(의 버퍼)에서는, 코드 풋 프린트가 크면, 모든 히스토리는 납부 할 수 없다. 그러나 2차 분기 예측기을 더하는 것으로, 보다 큰 히스토리에서 예측이 가능하게 된다. 이것은 데이터베이스와 같은 응용 프로그램에서 이점이 있다 "고 Intel은 설명한다.

 참고로, 분기 예측기의 계층화는, 일찍이 Pentium III / Pentium 4의 아키텍트의 한명인 Andy Glew 씨가 이전부터 주장했다. Glew 씨는 한때 AMD의 아키텍트 팀 "AMD Architecture Review Board (ARB)"에 참가했었는데, 계층화 분기 예측기는, 그즈음의 AMD의 K10에 채용을 제안해서, AMD에 걷어 차였다고 설명한 기능의 하나다. Glew 씨는 현재는 Intel로 돌아와 있다. 이 밖에 Nehalem에서는 return 명령으로 되돌리는 포인터를 버퍼링 하는 Return Stack Buffer (RSB)는 리네임 기능이 추가되어, 예측 실수를 줄였다고 한다.

 또 Nehalem에서는 물리 메모리 주소를 캐시하는 "Translation Lookaside Buffer (TLB)"도 계층화 된다. " 2차 TLB 계층을 도입하는 것은, 응용 프로그램이 커짐에 따라, 전체 성능에서 TLB를 크게하는 것이 중요해지기 때문이다" 라고 한다. Nehalem에서는 2차 512 엔트리의 TLB가 추가된다.

확장된 캐시 서브 시스템



 Nehalem에서는 캐시가 한층 계층화 되어, 짧은 레이턴시에 작은 L2와 긴 레이턴시에 큰 L3로 분리했다. L2를 256KB로 작은 CPU 코어 점유 캐시로 한 것으로, L2 액세스 레이턴시는 지금까지의 십수 사이클에서, 10 사이클 이하로 줄었다고 추측된다. 그 한편으로, 아마 20 사이클 이상으로 저속이지만 대용량의 L3에 의해서, 풋 프린트가 큰 어플리케이션도 커버 가능하다.



Nehalem의 캐시 계층



캐시 계층 및 지연


 Nehalem에서는 이러한 캐시 계층화와 비슷한 계층화가 분기 예측기랑 TLB 등 마이크로 아키텍처 곳곳에서 진해되는 것을 알 수 있다. 그런 의미에서, 계층화가 Nehalem 마이크로 아키텍처의 특징 이라고 말할 수 있다.

 이렇게 보면, SMT 이외의 Nehalem의 확장의 다수는, 유효성은 높지만, 상대적으로 작은 기술로 보인다. Nehalem은 Intel이 지니던 기술의 집대성 이라고도 말할수 있지만, 어느쪽일까 라고 말하면, 모험은 피하고, 작은 개량으로 성능을 높이는 것이 가능한 기술에 집중한 것처럼 보인다. (이후 기사에도 나오지만, 인텔 아키텍트는 1% 전력과 회로로 최소 1% 성능을 얻을 수 있는 효율좋은 것만 택했다고 하죠.)

 물론 이 외에도 IDF에서 처음 발표하는 큰 확장이, 아직 숨겨져 있을 가능성은 있다. 그러나 Nehalem에서는 CPU 코어를 대수술 하기보다, 오히려 시스템 아키텍처를 변경하는 것으로 성능의 비약을 도모할 가능성이 쪽이 높은 것 같다. 이것은 Intel이 Nehalem을 어떻게 설계했는가, 라는 문제와 밀접하게 관련되어 있다.



Nehalem는 처음부터 디자인 합니까?

 Intel은 Nehalem이 기초에서 새롭게 만들어진 "그라운드 업"마이크로 아키텍처라 말하면서 "Core MA를 기반​​으로 한다"고도 설명한다. 모순되는 것 같지만, Intel은 최근들어 이 질문에 답했다.

 "기본적으로는 모두 옳다. Nehalem에서는 기존의 Core 마이크로 아키텍쳐의 조각을 도입하고 있어, 그 중에서 4와이드 실행 엔진은 큰 부분을 차지하고 있다.우리는 몇년에 걸쳐 개발한 마이크로 아키텍처를 활용한다. 그러나 그 위에, Simultaneous Multithreading (SMT) 같은 큰 새로운 특징을 입혔다. 따라서 (Nehalem의) 전체 설계는 기본적으로 프롬 스크래치가 된다.

 이상은 (CPU) 코어쪽의 이야기다. 다른 요소, 우리가 언 코어 (Un-Core)라고 부르는, CPU 코어 이외의 부분에 대해서는 완전히 새로운 설계가 되었다. 예를 들어, L3 캐시 등이다. 그러한 종류의 새로운 요소는 프럼 스크래치 설계되었다. (Nehalem은) 순수하게 프롬 스크래치로 설계한 것과 기존의 기술을 현저하게 확장한 것의 조합인데, 전체로 보면 거의 프롬 스크래치다"

 이 설명이라면, Nehalem의 CPU 코어는 Core MA를 베이스로, SMT 등의 큰 확장을 더해서 설계하고, 새로운 설계의 언 코어 부분과 조합시킨 것이 된다. Core MA의 "Micro-OPs Fusion / Macro-Fusion"과 중용인 파이프 라인 단수 등 기본적인 수법은 그대로 계승된다고 추측된다. 그렇다면 표현은 어쨌든, CPU 코어의 키 컨셉은 Core MA를 계승하는 것이 된다. Intel은 이전에 Core MA의 명령을 퓨전시키는 방법을 계속해서 발전 시킨다고 설명했으며, Core MA가 Nehalem도 포함한 차후 세대의 Intel CPU의 기반이 될 것 같다.

 그러나 이것은 조금 이례적인 방식이다. 왜냐하면 Core MA는 Intel의 Mobility Group에 속하는 이스라엘의 하이파 (Haifa)의 개발 센터에서 설계되고, Nehalem은 Intel의 Digital Enterprise Group에 속하는 미국 오리건주 힐스보로 (Hillsboro)의 개발 센터에서 설계 되었기 때문이다. 즉, Core MA는 개발 센터의 울타리를 넘어서 계승된다.

 Intel의 주력 CPU 개발 센터인 힐스보로는, 과거에 Pentium III (P6)와 Pentium 4 (NetBurst) 마이크로 아키텍처를 프롬 스크래치로 개발해 왔다. 밀수도 밀리지도 않는 Intel 제일의 CPU 개발 센터이며, 기존의 패턴이라면 힐스보로에서 CPU 개발하는 경우는 제로부터 개발을 시작하여, 기존의 마이크로 아키텍처는 계승하지 않는다. 기존 마이크로 아키텍처의 파생 제품을 개발하는 것은, Intel 속에서도 신흥 개발 센터이며, 이전에는 하이파가 그 역할을 담당했다.

 그것이 이번은 크게 확장한다고 말하지만, 하이파 설계의 Core MA를 힐스보로 Nehalem이 계승하는 것이 된다. 보기에 따라서는 하이파와 힐스보로의 입장이 역전 됐다고도 말할 수 있다. Intel의 Digital Enterprise Group이 Nehalem 디자인에 대해 "기본적으로는 프롬 스크래치하다"고 강조하는 이유는 이 부분에 있는것 같다.

Nehalem 패밀리의 내부 구성


CPU 아키텍처의 사이클



x86 CPU 코어의 비대화가 가져오는 폐해

 Nehalem이 Core MA를 베이스한 것은, x86 CPU 개발의 중요한 포인트를 시사한다. 하나는 CPU 개발이 점점 더 시간과 노력이 많이 드는 것이 되가고 있다는 점. 또 하나는 CPU 개발의 초점이 단일 스레드의 정수 연산 성능을 향상시키기 위한 마이크로 아키텍처의 확장보다, 멀티 스레드와 부동 소수점 연산 성능의 향상과 이를 위해 필요한 I / O와 메모리 확장에 초점이 옮겨진 것이다.

 힐스보로가 Nehalem 개발에 당시에 Core MA를 베이스로 한 것은, 그렇지 않으면 4년 정도로 CPU를 개발하는 것이 가능하지 않다는 사정이 있다고 추정된다. 잘 움직이는 마이크로 아키텍처를 개발 하려면, 방대한 시간과 노력이 필요하며, 개발 기간도 알 수 없다. Core MA가 훌흉해서 고성능을 달성하고 있다면, 그것을 사용하는 편이 유리한 계책이라 판단했다고 추측된다.

 특히 x86 CPU의 경우 레거시가 많아, CPU 설계가 복잡해지고 있기 때문에, 1개의 마이크로 아키텍쳐를 개발하는데 시간이 걸린다. 이 문제는 Intel에서 Pentium III / 4 등의 메인 아키텍트를 역임한 Bob Colwell (밥 콜웰) 씨가 2004년 미국 스탠포드 대학에서 진행한 강연 "Things CPU Architects Need To Think About" 에서 지적했다.

 Colwell 씨에 따르면, x86 CPU는 레거시 아키텍처를 이끈채로 무리한 확장을 거듭한 결과, 아키텍처 상의 취약성이 늘고있다고 한다. 예를 들면, 정확한 성능 분석이 가능한  단계가 되어서 문제가 발견 되더라도, 설계가 많이 진행되서 본질적인 수정이 가능하지 않다. 따라서 손재주의 수정을 더하지만, 복잡함 위에 복잡함을 거듭하게 되어, 다른 문제를 불러와 버려, 늪에 빠진 상태가 되어서 개발이 난항이 된다고 한다.

 이러한 배경을 감안하면, 잘 움직이는 마이크로 아키텍처가 있다면, 그것을 개량하는 쪽이 효율적이다. 서투르게 새로운 마이크로 아키텍처를 처음부터 만드려 개발 단계부터 실패 위험을 무릅쓰기 보다, 증명된 마이크로 아키텍처를 취하는 편이 안전하다. 따라서 최근에는 CPU 마이크로 아키텍처의 수명은 길어지고 있다. 베이스가 되는 아이디어가 같아서, 점진적으로 확장을 더해가는 패턴이다. AMD도 Phenom 세대에서 K8 마이크로 아키텍처의 기본은 유지하며 확장했다.

 지금까지 CPU 코어의 마이크로 아키텍쳐를 쇄신하는 원동력은, 단일 스레드, 특히 정수 연산 성능의 향상이었다. 그러나 코어 마이크로 아키텍쳐의 개량에 의한 단일 스레드 정수 연산 성능의 향상 곡선은 둔화하고 있다. 현재로서는 이를 위해 할애 해야할 자원을 생각하면,  성능/소비 전력에 합당하지 않게 된다고 한다. 컴퓨터 과학 연구자로서 유명한 David A. Patterson (데이비드 · A · 패터슨) 교수 (University of California at Berkeley)는 컨퍼런스와 공저서 "Computer Architecture Forth Edition" 중에서 CPU가 ILP의 벽 "ILP 월 (ILP Wall) "에 해당하고 있음을 강조했다.

Uniprocessor ​​성능 향상



컴퓨터 아키텍처의 상식



 그것에 비해서, 멀티 코어 & 멀티 스레드화에 의한 멀티 쓰레드 & 멀티 태스킹 성능의 향상과 부동 소수점 연산의 향상은 아직 얼마든지 여유가 있다. 또 현재의 CPU에서는, 병목 현상은 CPU 코어의 안 보다도 밖, 메모리 계층과 I / O에 있어, 그쪽을 개량하는 편이 성능에 미치는 영향이 크다. 따라서 Nehalem에서도 CPU 코어의 확장 포인트의 다수는 멀티 쓰레드 성능 및 노스 브릿지 (GMCH) 통합화에 의한 메모리 성능 향상에 초점이 맞춰져 있다. 소비 전력을 억제하며, 전체의 성능을 올리려면, 그쪽이 효율적이기 때문이다. 아마 이것은 향후 CPU의 흐름이 되어 갈 것이다.


2008년 3월 28일 기사.



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



[분석정보] 정식 발표된 라라비(Larrabee) 아키텍처



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



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



[분석정보] 왜 인텔은 샌디브릿지에 AVX를 구현하는가?



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



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