티스토리 뷰
IT 커리어의 대부분을 네트워크와 보안에 묶여 살다 보니, 사실 서버나 가상화 측면에서도 네트워크에 관심이 높은 것이 사실입니다.
그렇다 보니 x86 아키텍쳐에서도 개인적으로는 IO 구조에 참 관심이 많습니다.
이번 Sandy Bridge 아키텍쳐에서는 IO 구조의 빅뱅이 일어났다고 해도 과언이 아닙니다.
지난 Nehalem 아키텍쳐의 변화에서 이른바 메모리 허브가 사라지고, 프로세스가 직접 액세스하는 구조로 바뀐 것은 가히 혁명적인 일이었습니다.
이러한 NUMA(Non Uniformed Memory Architecture)는 프로세스가 직접 메모리를 액세스 함으로써 성능 뿐만 아니라 공식적인 OverClocking을 가능하게 했습니다.
이번 Sandy Bridge에서는 이른바 IO Integrated 를 구현함으로써 항상 그림에서 껄쩍찌근하게 보여지던 IO Hub를 제거 했습니다.
[그림 - 인텔 Sandy Bridge IO 구조]에서 처럼 IO Hub가 없는 그림...정말 깔끔해 졌습니다.
[그림 - 인텔 Sandy Bridge IO 구조]
x86에서 IO 기반의 연결 장치들은 대부분 네트워크 카드, HBA(Host Bus Adapter) 카드, 디스크, 그래픽 카드등이 주류를 이룹니다.
사실 인텔 CPU 성능이 최근 4~5년 동안 수십배 좋아 지다 보니, CPU 성능에 대한 아쉬움 보다는 IO 성능에 대한 아쉬움이 컸던 것이 사실입니다.
그래서 이번 아키텍쳐에서는 디스크나 네트워크 Latency의 주범인 IO Hub를 제거 하고 프로세스와 통합하도록 하였습니다. 이렇게 함으로써 실제 인텔은 IO Latency를 최대 30% 가까이 줄일 수 있었다고 합니다.
[그림 - 인텔 Sandy Bridge IO 성능 비교]
[그림 - 인텔 Sandy Bridge IO 성능 비교]을 보면, 기존 Nehalem/Westemere IO 구조에서의 PCIe Latency는 340nsec 정도입니다.
그런데 Sandy Bridge에서는 IO Hub 없이 Direct Access 하는 구조 이므로 , Local PCI를 Access 하는 경우255nsec으로 크게 향상되어 대략 25% 정도 향상을 가져오게 되었습니다.
여기서 아키텍쳐를 꽤 뚫는 분들은 그럼 Remote PCIe를 통할 경우, Latency가 오히려 줄어들지 않을까? 걱정하시는 분들이 계실 껍니다.
하지만 실제 이러한 구조에서도 320nsec 정도로 5% 이상 대기시간을 줄일 수 있습니다.
이러한 이유로 실제 QPI(Quick Path Interconnection)이 CPU 간 2개로 늘지 않았나...하는 제 사견입니다. DDR Channel이 늘어나고 PCIe가 Integration 되면서 QPI 대역폭에 대한 고민으로 기존 6.4GT/s에서 8GT/s로...그리고 두개의 QPI로 증가 시킨 걸로 보입니다.
이러한 구조는 Network Latency를 줄이는 효과로 인해 증권사의 HFT(High Frequency Trading)이나 HPC등에 더욱 각광을 받을 기술로 보입니다.
또하나의 IO 개선 프로세스는 바로 Intel Data Direct IO구현입니다.
네트워크 인터페이스를 통한 전통적인 IO 전송 구조를 보면,
1. 네트워크 인터페이스로 들어오는 데이터는 메인 메모리로 이동 시켜 저장합니다.
2. 이후에 데이터 처리를 위해 CPU 캐쉬로 전송합니다.
3. 이후에 데이터 처리가 완료 됩니다.
4. 데이터 처리가 완료된 데이터는 다시 캐쉬로 돌아가고,
5. 메인 메모리로 다시 한번 이동하게 됩니다.
6. 이후에 네트워크 인터페이스 카드로 전송이 됩니다.
이러한 구조는 기본적으로 메인 메모리가 개입을 해야 되는 구조이며, 이러한 이유로 IO 대기 시간이 길어지는 결정적 원인을 제공합니다.
뿐만 아니라 메인 메모리의 잦은 개입으로 인해 , 메모리 사용률이 높아지며 이것은 시스템 전력 사용에도 영향을 주는 결과를 가져 옵니다.
[그림 - 인텔 Sandy Bridge IO 구조]에서 처럼 Data Direct IO 구조를 통해 IO 전송구조를 혁신적으로 변화 시킬 수 있습니다. 변화된 처리 과정은 다음과 같습니다. 1. 네트워크 인터페시읏에서 프로세스 캐쉬로 데이터를 직접 전송합니다. 2. 이후에 데이터 처리가 완료 됩니다. 3. 데이터 처리가 완료된 데이터는 다시 캐쉬로 돌아가고, 4. 이후 네트워크 인터페이스 카드로 전송됩니다. 따라서 기존과 다르게 메인메모리의 개입이 사라지는 효과를 얻을 수 있습니다. 이렇게 되면 IO 대기시간과 메모리 개입을 제거하여 시스템 전력 사용도 절감할 수가 있습니다. IO Hub하나를 없앴을 뿐인데...이런 엄청난 일들이 벌어지게 되는 거죠. 마지막으로 IO구조에서 PCIe 2.0 에서 PCIe 3.0으로 업그레이드하여 설계 된 것이 특징입니다. 과거 IOH 기반 최대 수용할 수 있는 Lane이 36Lane, Lane당 4GT/s 이었다면, CPU당 40 Lane에 PCIe 3.0 이므로 8GT/s 전송속도를 가지게 되므로 2배 이상의 전송 속도를 보장하게 되었습니다. 이렇게 Sandy Bridge는 IO에 있어서 전송 속도라는 성능 측면과 IO 대기 시간 감소 및 시스템 전력 사용 절감이라는 세마리 토끼를 한꺼번에 잡는 획기적인 아키텍쳐로 거듭났습니다. 왜 제가 IO 측면을 극찬했는지 아시겠죠? ^^
'서버 아키텍쳐 > x86' 카테고리의 다른 글
Intel Sandy Bridge 정복 - 2 (0) | 2012.04.02 |
---|---|
Intel Sandy Bridge 정복 - 1 (0) | 2012.04.02 |