출처 : NUMA(Non-Uniform Memory Access) 이해하기 : 네이버 카페
[Tip] NUMA(Non-Uniform Memory Access) 이해하기
윈도우 7이 등장함에 따라 Windows API가 대폭 변화되었다. 그 중 하나가 NUMA 지원 강화 부분이다.
NUMA는 정확히 Windows XP SP2 때부터 지원하기 시작하였다.
▲ Windows XP SP2 이상 버전에서 제공하는 NUMA APIs (http://msdn.microsoft.com/ko-kr/library/aa363804(v=vs.85).aspx).
대부분의 API들은 Windows Vista 이상을 요구하고, 몇몇 API는 Windows 7을 요구하기도 한다.
NUMA를 알기 위해서는 먼저 캐쉬 메모리에 대해 이해할 필요가 있다.
우리의 컴퓨터에 장착된 RAM(Random Access Memory), 즉 메인 메모리는 CPU에 비해 한참 속도가 느리다.
그렇기 때문에 CPU가 RAM에 접근하려고 하면 RAM의 입출력을 기다려야 해서 성능상의 문제가 생겼다.
이런 문제때문에, 결국 컴퓨터 구조에 캐쉬 메모리라는 개념이 도입되었다.
Cache란 본래 '은닉하다'라는 뜻을 가진 단어인데, Cache memory라는 용어에서는 '임시 보관'의 개념으로 보는 것이 좋을 것 같다.
캐쉬 메모리는 CPU와 RAM 사이에 위치한 고속의 메모리로, 지역성(Locality - 데이터 입출력은 대부분 이전 데이터 입출력의 위치 주변에서 일어난다는 지역적인 성질)의 특성을 이용하여 메모리 입출력시 주위의 메모리까지 함께 미리 읽어내어 저장해놓는 메모리이다.
이 개념은 비단 RAM 뿐 아니라, 하드디스크를 읽고 쓰는데도 소프트웨어적으로 구현된 같은 논리적인 개념이 쓰인다.
아무튼, 이런 캐쉬 메모리가 도입됨으로써 컴퓨팅 성능은 비약적으로 증가하였다.
하지만, 듀얼코어 이상의 Multi Processor가 등장함으로써 문제가 발생하였다.
우선 멀티 프로세서 시스템에서는 기본적으로 SMP 아키텍쳐를 사용하는데, 이 아키텍쳐는 다수의 프로세서가 하나의 캐쉬 메모리(L2캐쉬/L3캐쉬)와 메모리 버스를 공유하는 방식으로 구현되어 있다. 그러다보니 여러 프로세서에서 동시에 RAM에 접근하는 일에 매우 부담이 커진다.
따라서 SMP 아키텍쳐에서는 NUMA라는 인터페이스를 지원한다. 이 인터페이스는 4개의 프로세서마다 각각의 캐쉬 메모리(L3캐쉬)가 존재하고, 이 각각의 캐쉬 메모리를 사용하는 방식이다.
이 NUMA라는 기술은 보통 프로세서가 8개 이상인 서버 컴퓨터에서 많이 활용되는 기술이다. 보통은 사용할 일이 없으니 이해만 하고 넘어가자.
'용어 설명' 카테고리의 다른 글
Xen이란? (Hypervisor, Para-Virtualization) (0) | 2015.01.08 |
---|---|
변환 색인 버퍼(Translation Lookaside Buffer, TLB) (0) | 2015.01.07 |
False positive vs. False negative (2) | 2012.04.03 |