Sep 11, 2007

하이퍼트랜스포트의 기술적 특징

하이퍼트랜스포트의 기술적 특징(1)


하이퍼트랜스포트의 사양


하이퍼트랜스포트의 기술적 사양은 다음과 같다.



하이퍼트랜스포트는 단방향 6.4GB/s, 양방향으로는 12.8GB/s의 대단히 큰 대역폭을 지원하는 고속의 버스이다. 현재 사용되고 있는 프로세서들 중 가장 넓은 대역폭을 사용한다는 533MHz FSB의 펜티엄4 프로세서조차도 4.3GB/s의 대역폭을 가지고 있다는 것을 생각해본다면, 하이퍼트랜스포트가 지원하는 양방향 12.8GB/s의 대역폭이 얼마나 큰 것인지 이해할 수 있을 것이다.


이제 각각의 특징들에 대해서 기술적인 면과 함께 검토해보자.


1. 시리얼 버스에 기반한 LVDS 데이터 전송


하이퍼트랜스포트는 기본적으로 시리얼 버스에 기반하고 있다. 시리얼 버스의 장점에 대해서는 앞에서도 누누히 언급한 바 있다. 기본적으로 저전압 디퍼런셜(Low Voltage Differential Signaling : LVDS) 기법을 사용하여 데이터를 전송한다. 또한 지금까지 사용되어 온 LVDS가 2.5V의 전압을 사용하고 있는 것에 반해, 이보다 더 낮은 1.2V의 전압을 사용한다.



LVDS의 특징과 높은 노이즈 면역성에 대해서는 앞서의 RDRAM 강좌와 시리얼 ATA 강좌에서 언급한 바 있다.


관련강좌 : RDRAM 강좌, 시리얼 ATA 강좌


LVDS가 제공하는 잇점은 단지 노이즈면역성의 증가에 그치지 않는다. 낮은 전압을 사용하기 때문에 EMI 발생이 줄어들며, 이는 근접한 회로에 주는 영향을 줄여줌과 동시에, 최근들어 더욱 엄격해지고 있는 전자파장해 검정에 보다 유리하게 작용한다.



1.2V의 LVDS를 사용한 하이퍼트랜스포트


기존의 버스구조
하이퍼트랜스포트에 비해서 컴포넌트가 늘어난다.


또한, 소모전력이 줄어든다. 기존의 2.5V LVDS보다 절반 이하의 전압을 사용하기 때문에 동일 클럭에서는 1/4 정도의 전력만을 사용한다. 즉, 클럭이 올라간다 하더라도 사용전력이 기존의 신호전송방식에 비해서 월등히 줄어드는 것이다. 3.3V를 사용하는 기존의 다른 I/O에 비하면 더욱 적다. 신호선의 종단에 위치하는 터미네이터를 칩 위에 집적시키는 것 역시 가능해진다. 기존의 다른 신호방식의 경우 높은 전압을 사용해서 칩 상에 터미네이터를 내장하는 것이 불가능했으며, 그 결과 보드 상에 일정공간의 면적을 차지한다. 그러나 하이퍼트랜스포트의 LVDS는 터미네이터를 칩상에 집적할 수 있으며, 그래서 보드 상에 장착되어야 하는 전원부의 컴포넌트 수가 상당수 줄어든다. 컴포넌트 수의 감소는 원가절감이라는 득을 주기도 하지만, 보드의 설계를 단순하게 한다는 잇점 역시 제공한다.


그래서 하이퍼트랜스포트는 기존의 고속 버스들과는 다르게, 4층기판에도 무난히 적용이 가능하다. 이로써 제조공정의 단축과 원가의 절감을 이룰 수 있다. 또한 시리얼 전송방식과 LVDS의 적용으로 인해서 매우 안정적인 데이터 신뢰도를 얻을 수 있으며, 또한 전체 회로의 길이를 800MHz 동작에서 최대 24"까지 늘일 수 있게 되었다. 대개의 ATX 메인보드가 9" × 12"의 크기임을 감안하면, 24"라는 길이는 서버용의 확장 ATX(Extended ATX) 메인보드에서도 대각선으로 지르고도 남는 길이이다.


다만, 여기서 한가지 의구심을 가질 수 있는 부분이 있다. 시리얼 전송방식이라고는 하지만, 16bit, 32bit까지 확장되는 버스 폭 때문에 병렬전송과 마찬가지의 문제가 발생할 여지가 있지 않겠는가이다. 그래서 하이퍼트랜스포트는 데이터 핀 중간중간에 클럭 및 제어신호 핀을 포함하고 있다. 이들을 통해서 전체적인 신호의 타이밍을 유지하는 것이다. 이 때문에 사용되는 핀의 수는 약간 늘어나서 다음과 같다.



이러한 특징으로 인해서 하이퍼트랜스포트는 하나의 핀에서 1.6Gbit/s의 데이터 전송이 가능해진다. 그래서 하이퍼트랜스포트는 최소 200MB/s, 최대 12.8GB/s의 매우 높은 성능을 지니게 되는 것이다. 버스 폭 별, 그리고 동작 클럭별로의 단방향 데이터 전송속도는 다음과 같다.



이것은 단방향으로의 데이터 전송속도라는 것을 상기해야 한다. 하이퍼트랜스포트의 또다른 특징중 하나는 보내는 신호와 받는 신호의 신호선이 분리되어 있다는 것이다. 즉, 2개의 버스가 존재가 한 쌍을 구성하며, 한쪽은 데이터를 보내기만 하고 한쪽은 데이터를 받아들이기만 한다. 이것은 시리얼 ATA에서 보았던 구조와 일견 유사하다. 그러나 시리얼 ATA에서는 한쪽에서 데이터를 전송하는 동안 다른 쪽에서는 데이터전송이 이루어지지 못하던 것에 반해서 하이퍼트랜스포트는 양방향으로 서로 다른 데이터가 전송될 수 있다는 특징을 갖는다.



이는 다수의 I/O에 연결되는 하이퍼트랜스포트의 특성에서, 지연시간을 최소화할 수 있다는 장점으로 이어진다.


결국, 양방향으로의 최대 데이터 전송속도는 12.8GB/s에 달하며, 이것은 현존하는 모든 인터페이스를 충분히 소화해낼 수 있는 방대한 대역폭이다. 뿐만 아니라 버스 폭과 동작 클럭의 선택에 따라서 200MB/s에서 12.8GB/s에 이르는 다양한 대역폭의 구성이 가능하다. 하이퍼트랜스포트를 여러 방면의 제조사들에서 지지하고 있는 이유가 바로 여기에 있다. 선택할 수 있는 대역폭의 종류가 많기 때문에 어디에도 적용될 수 있으며, 동시에 다양한 기기를 하나의 버스로 통일함으로써 전체적인 구조를 단순화하고 프로토콜의 전달과정에서의 지연시간을 최소화할 수 있다.


2. 포인트 투 포인트 토폴로지상에서 다양한 변형이 가해진다.


하이퍼트랜스포트는 기본적으로 시리얼 인터페이스이며, 포인트 투 포인트의 토폴로지를 갖는다. 가장 기본적인 형태는 두개의 디바이스가 서로간을 하이퍼트랜스포트로 연결한 상태라는 것이다. 그러나, 이러한 단순한 구조만으로는 시스템 내부의 브릿지 구조를 소화할 수 없다. 그래서 하이퍼트랜스포트를 구성하는 컴포넌트는 케이브(단일 링크 디바이스), 터널, 터널을 갖춘 브릿지, 터널이 없는 브릿지의 4가지 기본형태를 갖는다.



케이브(싱글 링크)는 가장 단순한 구조이다. 케이브 타입 2개가 맞물이면 바로 하나의 P2P 토폴로지가 완성된다. 다른 세가지는 이러한 기본 토폴로지상에서 다양한 브릿지구조로 확장하는데에 필요한 것들이다. 터널은 하이퍼트랜스포트 버스 상에서 다른 종류의 버스(AGP 등)로 이어지는 브릿지에 사용된다. 전체적인 하이퍼트랜스포트 채널을 그대로 유지하면서 중간에서 데이터의 이동경로를 만드는 것이다.


터널을 갖춘 브릿지는, 하이퍼트랜스포트 버스를 유지하면서 또하나의 하이퍼트랜스포트 버스를 추가하는데에 사용된다. 주로 하나의 버스상에서 그보다 느린 속도의 버스를 추가하기 위해 사용된다. 터널이 없는 브릿지는 상위 하이퍼트랜스포트 버스를 종결하면서 그 이후로 다른 속도의 하이퍼트랜스포트로 이어준다.


이러한 토폴로지 구성요소들을 사용하여 하이퍼트랜스포트로 이루어진 시스템 토폴로지를 구성하면 다음과 같은 사례가 만들어질 수 있다.



이러한 하이퍼트랜스포트 토폴로지는 '칩셋간 연결'이라는 것을 전제하고 있으므로, 단지 위와 같은 구조뿐만이 아니라, CPU끼리의 연결 역시 하이퍼트랜스포트로 가능해진다. 이에 대해서는 캐시 일치성과 함께 뒤에서 다시 언급될 것이다. 다양한 기본 구조를 적용해서 하이퍼트랜스포트의 토폴로지는 더욱 다양하게 확장될 수 있다.


이것은 하이퍼트랜스포트의 기본 목적인 탁월한 확장성(scalability)을 보장해주며, 앞으로 등장할 새로운 종류의 인터페이스에도 즉각적으로 대응할 수 있도록 한다. 또한 앞서 언급했던 다양한 데이터 전송 대역폭과 함께 하이퍼트랜스포트가 시스템 뿐만이 아니라 정보통신, 네트웍 등의 거의 모든 영역에 걸쳐서 사용될 수 있는 근거를 제시한다.



하이퍼트랜스포트의 기술적 특징(2)


3. 멀티프로세서 환경의 적극적인 지원


하이퍼트랜스포트가 개발된 목적은 무엇보다도 차세대 AMD 프로세서인 해머에 적용시키기 위함이다. 물론 개발목적 자체에 '해머를 위한 것이다'라고 쓰여있지는 않지만, 주변 정황이나 AMD가 하이퍼트랜스포트를 밀고나가는 모습을 보면, 이 아키텍쳐는 해머를 위한 것이구나라고 생각할 수 있을 정도이다.


AMD의 차세대 프로세서 아키텍쳐인 해머의 멀티프로세서 환경 구현은 기존의 어떠한 프로세서들과도 틀리다. 기존의 x86 기반의 멀티프로세서 환경은 인텔의 AGTL+ 버스구조와 AMD(컴팩)의 EV6 구조만이 존재했다. 이들 모두 프로세서가 노스브릿지(혹은 MCH)와 연결되어 있는 구조라는 점은 같지만, AGTL+가 프로세서들이 하나의 버스를 공유하는 셰어드(shared) 버스라면, EV6는 프로세서 하나하나에 독립적인 버스를 연결하는 P2P 구조라는 점이 틀리다. 이론적으로는 EV6 버스구조가 AGTL+에 비해서 월등히 뛰어나다. 이에 대해서는 이전에 AMD의 듀얼 시스템 아키텍쳐라는 제하로 강좌가 올라온 바 있다.


관련강좌 : AMD의 듀얼 시스템 아키텍쳐


보다 정확한 이야기를 위해서는 캐시 일치성에 대한 이해가 필요하다.


캐시 일치성(Cache Coherency)


x86 플랫폼 상의 멀티프로세서 환경이라는 것은 SMP(Symmetric MultiProcessing), 즉 병렬프로세싱을 의미한다. 다수의 프로세서(processor)가 하나의 프로세스(process)에서 분기되는 다수의 스레드(threads)를 나누어 처리한다는 것이 SMP의 골자이다.


x86에서의 멀티프로세싱은 430NX, 430HX 칩과 그 궤를 같이한다. 당시 펜티엄 프로세서를 듀얼로 묶어서 렌더링 등에 사용하곤 했다.



여기까지는 별 문제가 발생하지 않았다. 프로세서 버스 상에 연결되어 있는 L2 캐시는 두 프로세서에 의해서 공유되어서 사용되었기 때문이다.


문제는 6세대 프로세서 제품군이 등장하면서 발생했다. 이들 프로세서는 DIB(Dual Independent Bus) 아키텍쳐를 통해서 CPU 자체 패키지 내, 혹은 다이 위에 L2 캐시를 탑재했다.



단일 프로세서 구성이라면, DIB 아키텍쳐는 놀랄만한 성능향상을 이루게 해 준다. 그런데, 멀티프로세서 구성에서는 약간 골치아픈 문제를 만들어내는데, 바로 캐시가 분리되어 있다는 것이다. 두 프로세서 모두 캐시를 가지고 있다는 것까지는 좋으나, 문제는 이들 프로세서가 공동된 작업을 행한다는 것이다. 양쪽이 완전히 분리된 작업을 하는 것이 아닌만큼, 하나의 프로세서가 완료한 작업을 다른 프로세서가 이어받아서 수행할 수도 있다. 즉, 두 프로세서의 캐시에는 언제나 동일한 정보가 저장되어 있어야 한다는 것이며, 이것이 바로 캐시 일치성(Cache Coherency)이다.


인텔의 멀티프로세서 플랫폼은 위와 같은 구조를 지금까지도 계속 이어오고 있다. 이러한 구조 하에서 캐시 일치성을 유지시키기 위해서는 캐시의 정보는 프로세서 버스를 타고 노스브릿지까지 갔다가, 메모리를 거쳐서 다시 노스브릿지와 프로세서 버스를 지나서 다른 프로세서의 캐시로 들어간다. 즉, 단일 프로세서 상에서는 발생하지 않았던 불필요한 프로세서 버스/메모리 버스의 사용량이 급격히 증가하며, 이것은 성능을 저하시키는 원인으로 작용한다.


AMD의 경우는 인텔의 멀티프로세싱 구조와는 상당히 다른 구조를 채택하였다. 컴팩으로부터 라이선스받은 EV6 버스를 사용하여 노스브릿지와 프로세서 사이에 P2P 구조를 형성한 것이다.



이와 함께, MOESI 캐시 아키텍쳐를 통해서 메모리 버스가 캐시 일치성의 유지를 위해 낭비되는 것을 최소화하여 멀티프로세싱시의 효율을 향상시켰다.


그렇다 하더라도, 다수의 프로세서를 사용하는 멀티프로세싱 환경에서 캐시일치성을 유지시키기는 상당히 어렵다. 해머 아키텍쳐에 사용되는 하이퍼트랜스포트는 바로 이러한, 멀티프로세싱 환경에서의 캐시 일치성을 프로세서 버스나 메모리 버스의 낭비 없이 유지시킬 수 있게 해 준다.


해머 프로세서에서의 멀티프로세서 구성


해머 프로세서의 아키텍쳐에서 가장 특징적인 것은 프로세서 자체가 메모리 컨트롤러를 탑재하고 있으며, 하위 브릿지들과의 연결의 핵심이 되는 하이퍼트랜스포트 컨트롤러가 집적되어 있다는 것이다. 즉, 프로세서에 노스브릿지가 집적되어 있는것과 같다.(자세한것은 차후에 등장할 해머 아키텍쳐 강좌에서..)


프로세서 자체에서 하이퍼트랜스포트 버스를 직접 사용할 수 있어서 시스템 토폴로지에서 수직축을 이루는 하이퍼트랜스포트 버스의 시작점이 프로세서가 된다. 그리고, 무엇보다 특징적인 것은 여기에 Coherent HyperTransport(이하 cHT) 컨트롤러가 적용되어 있어서 프로세서 사이를 cHT가 연결하고 있다는 것이다.



cHT는 프로세서 사이를 고속의 버스로 연결한다. 프로세서 사이를 이어주는 이들 버스를 통해서 프로세서들은 메모리 버스 등에 무관하게 캐시를 동일하게 유지시킬 수 있다. 이러한 구조가 가지는 장점은 여러가지가 있지만, 무엇보다도 우선되는 것은 캐시 일치성을 유지시키면서 시스템의 성능을 저하시키지 않는다는 것이다.


기존의 AGTL+, EV6 구조 등에서는 캐시 일치성을 유지시키기 위해서 메모리버스, 프로세서 버스 등을 사용했고, 이는 실질적인 연산과는 무관한, 병렬연산을 유지시키기 위한 방법이었다. 그래서 병렬연산의 효율을 떨어뜨리는 가장 큰 원인을 제공하였다. 그러나 cHT가 적용된 해머 아키텍쳐에서는 이러한 문제가 일소된다.


cHT를 사용해서 프로세서간의 데이터 전송이 이루어지기 때문에 시스템의 다른 부분들은 전혀 영향을 받지 않는다. 즉, 멀티프로세싱 시의 효율을 최대로 유지할 수 있다. 뿐만 아니라, 양쪽 프로세서가 실시간으로 데이터를 교환하고 있기 때문에 각 프로세서가 가지는 버스는 각각의 최대의 효율을 발휘하면서 다수의 프로세서에 동시에 작용한다. 위의 일러스트를 보면 그 의미를 알 수 있다. 양쪽의 프로세서에는 서로 다른 하이퍼트랜스포트가 연결되어 있으며, 한쪽은 AGP 및 PCI 터널로, 다른 한쪽은 PCI-X 터널로 연결되어 있다.


기존대로라면, 이들은 하나의 축을 갖는 트리구조에서, 옆으로 뻗어나온 브릿지를 통해서 다양한 인터페이스를 지원해야한다. 그러나 하이퍼트랜스포트와 cHT가 적용된 해머의 멀티프로세서 환경에서는 '프로세서간의 실시간 데이터 전송'이 가능하기에 두 프로세서 중 한쪽에만 물려 있으면 정상적으로 동작할 수 있다는 이야기가 된다. 이것은 각종 인터페이스 터널/브릿지 뿐만 아니라 메모리에도 적용된다.


해머 프로세서 자체에 메모리 컨트롤러가 내장되어 있기 때문에 프로세서에서 메모리로 이어지는 채널은  프로세서의 개수에 따라 늘어난다.(물론 이것은 프로세서의 수가 적을때이며, 프로세서의 수가 많아지면 허브구조를 통해서 연결한다.) 즉, 다수의 프로세서에 연결된 다수의 메모리 버스라던가, 각종 하이퍼트랜스포트 버스, 그리고 하이퍼트랜스포트에서 터널 및 브릿지를 통해 연결되어 있는 다종다양의 인터페이스가 모두 병목현상이 없이 최대의 효율로 동작할 수 있게 된다. 결국, 토폴로지상에서 보자면 다수의 프로세서는 마치 하나의 프로세서처럼 일사불란하게 동작하게 된다. 이것은 (물론 아직은 이론적인것 뿐이지만) 병렬연산시스템에서 상당한 성능의 향상을 가져올 수 있다.


2웨이가 아닌 4웨이 및 그 이상에 대해서도 이러한 점은 거의 그대로 유지되며, 다수의 하이퍼트랜스포트를 사용함으로써 기존에는 클러스터링을 통해서야만이 가능했던 대규모 SMP를 보다 적은 크기의 시스템에서 안정적이고 효율적으로 구현할 수 있게 된 것이다.



하이퍼트랜스포트, 그리고 CPU 사이의 데이터 전송에 특화된 cHT는 AMD가 주장하는 '서버에서의 병목현상을 최소화하고 성능효율을 극대화한다'라는 취지를 단적으로 보여주는 부분이라고 할 수 있다. 현재 서버시장을 주름잡고 있는 인텔의 멀티프로세싱 플랫폼은 AGTL+ 버스를 고수하고 있기 때문에 8개 이상의 프로세서를 SMP로 구성시키기 위해서는 앞서 언급한 캐시 일치성의 문제가 심각하게 대두되며, 그래서 클러스터링을 사용해서 8개의 프로세서를 묶는 것을 볼 수 있다.


그러나 해머 프로세서와, 하이퍼트랜스포트 아키텍쳐가 적용된 서버는 8개 혹은 16개 이상의 대규모 SMP를 캐시일치성의 문제라던가 IO 대역폭의 부족으로 인해 발생하는 병목현상 없이 구현해낼 수 있다. 이는 AMD가 그간 줄곧 목표삼아왔던 서버 시장에서 인텔에 비해 우월한 프로세서아키텍쳐와 시스템 버스 아키텍쳐를 바탕으로 AMD 프로세서 기반의 엔터프라이즈 서버라는 새로운 시장을 태동시킬 수 있는 잠재력을 가지고 있다.