본문 바로가기

Programming

NUMA, ccNUMA, hUMA 설명

NUMA(Non-Uniformed Memory Access)

불균일 기억장치 접근


메모리에 접근하는 시간이 CPU와 메모리의 상대적인 위치에 따라 달라지는 컴퓨터 메모리 설계 방법. 
각 CPU는 메모리의 일부를 자신의 지역 메모리(Local Memory)로 가지고 있으며 이 지역 메모리에 접근하는 속도는 원격 메모리(Remote Memory)에 접근하는 속도보다 훨씬 빠르다.

NUMA 개략도


간단히 예를 들어 시스템에 CPU 소켓이 네 개 있고, 512GB의 메모리가 설치되어 있다면 물리 주소 0~128G-1번지까지의 메모리는 0번 소켓의, 128G~256G-1번지까지의 메모리는 1번 소켓의 지역 메모리가 되는 방식. 각 소켓에서 지역 메모리에 접근할 때에는 원격 메모리에 접근할 때보다 훨씬 빠르게 데이터를 읽고 쓸 수 있다. 하나의 CPU 소켓에 코어 여러개가 들어가 있을 수 있기에 같은 지역 메모리를 사용하는 CPU 코어들을 묶어서 하나의 NUMA 노드로 친다. 8코어 4소켓 CPU라면 (하이퍼스레딩을 가정하지 않을 때에) 0~7번 코어는 NUMA 노드 0번, 8~15번 코어는 NUMA 노드 1번과 같은 방식.

RAM 항목에 설명되어있듯이 본래 '임의 접근 메모리'는 메모리상의 어느 위치에든 제한없이 접근할 수 있다. 그런데 소켓 여러개에 CPU를 꽂거나 아예 CPU 하나에 연산 장치를 다수 박아 사용하면서 모든 메모리에 동일하게 접근하게 되면 한 번에 하나의 프로세서만이 메모리 버스를 점유할 수 있게 되어 다른 프로세서들은 그 동안 대기하여야 하는 현상이 발생한다. 만일 알고리즘을 잘 설계해서 각 CPU가 메모리의 서로 다른 위치에 접근하게 하고 CPU간에 간섭이 없이 각 메모리에 접근하여 병렬로 데이터를 처리한다면 그만큼의 성능 향상을 얻을 수 있게 된다. 여기에서 각 CPU 전용 메모리라는 개념이 생기게 되었다.

그리고 CPU의 작동 속도가 빨라지면서 CPU와 메모리 사이의 물리적인 거리가 메모리 접근 속도에 영향을 끼치기 시작하였다. 2GHz로 작동하는 CPU라면 바로 코앞에 있는 메모리에 접근할 때보다 15cm 거리가 있는 메모리에 접근할 때 한 클럭을 더 낭비하게 된다.[2] 메인보드에 CPU 여러 개를 꽂을 수 있다면 CPU와 메모리 뱅크가 번갈아가며 배치되어 있는 것을 볼 수 있는데 이것이 각 CPU 소켓에 메모리를 최대한 가까이 설치하려는 설계이다.

NUMA System

 

인텔 네할렘 CPU의 NUMA 구조도


ccNUMA

 

Cache-Coherent NUMA. NUMA이면서 캐시 일관성을 가지는 시스템. 프로그래머가 캐시를 직접 제어할 방법이 없다면 하드웨어가 무조건 ccNUMA여야 한다. 현대의 NUMA 하드웨어는 모두 ccNUMA이다.

 

hUMA

 

hUMA(heterogeneous Uniform Memory Access) 
서로 다른 프로세서(CPU와 GPU)의 메모리 영역을 통일하여 메모리 영역을 공유한다는 개념이다. 한마디로 GPU가 CPU와 같은 수준으로 다루어지며, 동일한 메모리에 액세스할 수 있다는 것이다.
CPU + GPU 처럼 이기종 프로세서의 메모리 공유

 

장점: 간단한 작업 스케줄로, 관리가 편하다.

그 동안은 CPU와 GPU 사이의 데이터 전달을 OS가 관리하는 방법을 썼기 때문에 데이터 추적이 어려운데, 데이터 처리 단계가 적어 작업 스케줄이 단순하며, 복사할 필요가 없음으로써 데이터 추적이 간단하고 메모리 관리가 훨씬 편하다.
이에 따라 줄어든 작업 스케줄만큼 더 빠른 처리가 되고, 불필요한 메모리 액세스가 줄어들어 전력 소비도 줄일 수 있다.
또한 프로그래머 입장에서는 하드웨어 사이의 데이터 전달시의 데이터 사이의 동기화와 일관성 문제를 신경 쓸 필요가 없다.

단점: 시대를 역행한 기술이었다.
GPU 전용 메모리인 GDDR은 일반 DRAM보다 월등히 빠른 속도로 동작한다. 그런데 주메모리에 GPU 메모리 영역을 통합시킨다면 GPU의 동작 속도도 덩달아 떨어진다. 이 점은 이 기술이 내장 그래픽 전용 기술이 될 수밖에 없는 이유이다. 인텔의 하스웰부터는 L4 캐시라고도 부르는 128MB의 eDRAM이 탑재됨으로써 브로드웰, 스카이레이크 세대에 들어서야 'IRIS' 라고 불리는 고성능 내장그래픽을 탑재한 모델에 한하여 AMD/APU를 뛰어넘는 내장그래픽 성능을 낼 수 있는 CPU를 만들었다.

 

Symmetric Multi Processing

 


다수의 CPU를 하나의 운영체제의 관리하에 두고, 하나의 프로그램(프로세스)가 여러개의 CPU 자원을 동시에 사용해서 수행하는 방식이다. 2개 또는 4개 정도의 CPU 를 장착해서 사용하는 작은 서버는 이런 구조로 동작한다.

멀티코어 프로세서와는 다르다. 멀티코어 프로세서는 어쨌든 하나의 CPU 내에서 연산이 이뤄지기 때문이다.

 

출처

https://namu.wiki/w/NUMA

https://namu.wiki/w/SMP

 

 

 

반응형
LIST