개발 라이브러리 & 툴

MPP Concept #3 NUMA

하늘흐늘 2009. 9. 10. 22:05
반응형

이 글은 Wikipeida의

Non-Uniform Memory Access

를 요약하여 놓은 것입니다.
 Non-Uniform Memory Access or Non-Uniform Memory Architecture (NUMA)는 멀티프로세서에 사용되는 개념으로 각각의 프로세서는 자신의 로컬메모리를 가지게 되어 자신의 로컬메모리에 대한 처리가 굉장히 빠른 아키텍처를 말합니다. 이는 Symmetric Multi Processing(SMP, 멀티프로세서가 같은 메모리를 공유하는 일반적인 방식)에서 확장 되었으며 1990연대에 Unix계열의 H/W에서 채용되었습니다.

Basic Concept
 처음에는 메모리의 속도가 CPU의 속도보다 빨랐으나 기술 진보에 따라 이 현상의 역전되었다. CPU는 느린메모리 속도를 고속 캐쉬메모리와 정교한 앨고리듬을 이용하여 해결하려하였다. 이는 당시의 제한된 수의 메모리 억세스를 기반으로한 아이디어였다. OS와 프로그램 크기의 급격한 증가는 캐쉬에 의한 처리 향상을 무기력하게 만들었다. 멀티프로세서에서는 한번에 한개의 프로세스만이 메모리를 읽을 수 있어 문제는 더욱 심각했다.
 NUMA는 프로세스마다 각각의 메모리를 주어 이 문제를 해결하여 하였고 단일 태스크에 대하여 성능 향상을 보았다. 그라나 모든 데이터가 단일 태스크로 정의되지 않는 관계로 NUMA는 서로 다른 프로세서 메모리간에 데이터 이동을 위한 추가적인 H/W와 S/W를 포함하였고 NUMA의 성능은 실행되는 태스크들의 특성에 따라 매우 틀렸다.

Cache Coherent NUMA (ccNUMA, 캐쉬 일관성 NUMA)
 비록 non-cache-cohereent NUMA가 디자인 및 만들기 더 쉬웠지만 폰노이만 구조하에서 프로그래밍 하기에 금지될 정도로 복잡했다. 그래서 ccNUMA가 나왔다. 이는 각각의 프로세서가 각각의 캐쉬를 가지고 있으며 캐쉬는 일관성을 가지는 구조로 각각의 캐쉬와 메모리간의 일관성은 캐쉬컨트롤러에 의하여 보장받는다. 이런 구조의 특성으로 계속적으로 같은 메모리에 대한 억세스시 성능을 떨어뜨리는 약점을 가지고 있으며 OS는 NUMA의 단점에 의한 성능하락을 회피하도록 락킹과 스케줄링을 수행한다.
이런 ccNUMA는 AMD Opteron, Intel Nehalem, Itanum 등에 채용되었다. Intel의 CPU들은 일반적인 소켓을 공유하는데 이런 내부 연결을 Intel Quick Path Interconnect(QPI)라고 부른다.
 

ps. 휴~ MPP는 CPU와 Memory에 대한 기초 지식을 많이도 요구하는 듯 합니다...

반응형