반응형

 멀티프로세서 시스템에서 사용되고 있는 컴퓨터 메모리 설계 방법중의 하나로, 메모리에 접근하는 시간이 메모리와 프로세서간의 상대적인 위치에 따라 달라진다. NUMA구조에서 프로세서는 자기의 로컬 메모리에 접근할 때가 원격 메모리에 접근할 때보다 더 빠르다. 원격 메모리는 다른 프로세서에 연결되어 있는 메모리를 말하고 로컬 메모리는 자기 프로세서에 연결되어 있는 메모리를 말한다.

NUMA 아키텍처는 이론적으로 SMP아키텍처로부터 확장된 개념이다. Burroughs large systems에 의해서 첫 상용화되었으며 이후 유니시스, Convex Computer(이후 휴렛 패커드), 실리콘 그래픽스, Sequent Computer Systems, Data General 그리고 DEC에서 상품화되었다. 이러한 회사들이 개발해 놓은 기술들은 유닉스 계열 운영 체제에 도입되었으며 일부는 윈도 NT에도 도입되었다.[위키백과]


NUMA는 각각의 프로세서에 독립적인 별도의 메모리를 제공함으로써 이러한 문제를 해결하려 한다. 이렇게 하면 여러 프로세서들이 동일 메모리 주소에 접근하려 할때 성능 충돌을 피할 수 있다. 서버와 애플리케이션에서 아주 일반적인 펼쳐진 데이터를 처리하는 문제의 경우에, NUMA는 하나의 공유 메모리의 경우 대비 대략적으로 프로세서의 수나 아니면 메모리 뱅크수 만큼 성능을 향상시킬 수 있다. 그렇지만 하나 이상의 프로세서가 동일 데이터를 필요로 하는 경우에 NUMA시스템은 메모리 뱅크들 사이로 데이터를 이동시켜야 하는 경우가 발생한다. 이러한 동작은 NUMA의 성능을 떨어뜨리는 요인이다. 따라서 전반적인 성능은 주어진 시간에 동작하고 있는 일의 특성에 달려있다. 어떻게 프로세스가 원격 메모리 대신 로컬 메모리를 사용하게 하느냐가 프로그램의 최적화에 대한 문제이다.[위키백과]


[NUMA 시스템의 한예. 프로세서들은 버스나 크로스바로 연결되어 있음을 주목하세요. ]
[각각의 프로세서들은 그 위치에 따라 메모리에 접근하는 우선순위가 다름을 보여준다.]

일단 NUMA를 알기전에 메모리에 대해서 공부해야된다.

 CPU가 RAM에 접근하려면 I/O가 발생해서 성능이 내려간다. 이때문에 캐쉬 메모리라는 개념이 도입되는데

캐쉬메모리는 CPU와 램 사이에 위치한 고속 메모리다. 메모리 i/o할때 주위의 메모리까지 함께 저장해놓은 메모리이다.

이 때문에 컴퓨터의 성능이 증가하였다.


멀티프로세서 시스템의 시작으로 기본적인 구조는 SMP(대칭 다중 처리)라는 구조를 사용한다.

이때 캐쉬메모리의 L2/L3캐쉬와 메모리버스를 공유하는 방식인데 여러 프로세서가 동시에 RAM에 접근하는건 매우 부담스럽다.

그래서 NUMA는 4개의 프로세서마다 캐쉬메모리인 L3가 존재하고 이를 사용하는 방식이라고 한다. 

(프로세서 8개 이상의 컴퓨터에서 사용한다고한다.)



자료를 더 찾다가 msdn에 요약이 잘 된게 있어서 가져온다.

NUMA의 주된 이점은 확장성입니다. NUMA 아키텍처는 SMP 아키텍처의 확장성 제한을 극복하기 위해 고안되었습니다. SMP를 사용하면 모든 메모리 액세스가 같은 공유 메모리 버스에 게시됩니다. CPU 수가 비교적 적을 때는 문제가 없지만 공유 메모리 버스 액세스를 위해 수십 개나 수백 개의 CPU가 경쟁할 경우에는 이 기능이 제대로 작동하지 않습니다. NUMA는 특정 메모리 버스의 CPU 개수를 제한하고 고속 연결로 여러 개의 노드를 연결하여 이러한 병목 현상을 완화합니다.[msdn]

반응형

+ Recent posts