불균일 기억 장치 접근
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
불균일 기억 장치 접근(NUMA)은 다중 프로세서 시스템에서 각 프로세서가 자체 메모리를 가지고, 다른 프로세서의 메모리에 접근할 때 지연 시간이 발생하는 메모리 아키텍처이다. CPU 속도가 메모리 접근 속도를 따라가지 못하는 문제를 해결하기 위해 개발되었다. NUMA는 캐시 일관성을 유지하는 ccNUMA(cache-coherent NUMA) 형태로 발전했으며, 인텔, AMD 등의 CPU에서 지원된다. NUMA는 클러스터 컴퓨팅과 유사하며, 운영체제와 소프트웨어에서 NUMA를 지원하여 성능을 최적화한다.
더 읽어볼만한 페이지
- 병렬 컴퓨팅 - 슈퍼컴퓨터
슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다. - 병렬 컴퓨팅 - 컴퓨터 클러스터
컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다. - 컴퓨터 메모리 - 플래시 메모리
플래시 메모리는 전기적으로 데이터의 쓰기 및 삭제가 가능한 비휘발성 메모리 기술로, 마스오카 후지오 박사가 발명하여 카메라 플래시와 유사한 소거 방식으로 인해 명명되었으며, NOR형과 NAND형으로 나뉘어 각기 다른 분야에 적용된다. - 컴퓨터 메모리 - 메모리 계층 구조
메모리 계층 구조는 CPU 데이터 접근 속도 향상을 위해 레지스터, 캐시, RAM, 보조 기억 장치 등으로 구성되며, 속도, 용량, 비용이 다른 계층들을 통해 효율적인 메모리 관리를 가능하게 한다.
불균일 기억 장치 접근 | |
---|---|
불균일 기억 장치 접근 | |
유형 | 병렬 처리 컴퓨터 메모리 설계 |
개요 | |
설명 | 불균일 기억 장치 접근(Non-Uniform Memory Access, NUMA)은 병렬 처리 컴퓨터 아키텍처의 한 유형으로, 메모리 접근 시간이 메모리 위치에 따라 달라지는 것이 특징이다. NUMA 아키텍처에서는 프로세서가 자체 로컬 메모리에 더 빠르게 접근할 수 있지만, 다른 프로세서의 메모리(원격 메모리)에 접근하는 데는 더 많은 시간이 소요된다. |
특징 | |
주요 특징 | 메모리 접근 시간 불균일성 프로세서별 로컬 메모리 원격 메모리 접근 가능 |
장점 | 시스템 확장성 향상 프로세서 간 메모리 공유 가능 |
단점 | 메모리 관리 복잡성 증가 원격 메모리 접근 시 성능 저하 가능성 |
활용 분야 | |
주요 활용 분야 | 고성능 컴퓨팅 대규모 데이터베이스 시스템 서버 가상화 |
2. 기본 개념
현대 CPU는 주 메모리보다 훨씬 빠르게 작동한다. 초창기에는 CPU가 자체 메모리보다 느리게 실행되었지만, 1960년대 슈퍼컴퓨터가 등장하면서 CPU와 메모리의 성능 격차가 벌어지기 시작했다. 그 이후로 CPU는 메모리에서 데이터를 가져오는 동안 대기해야 하는 "데이터 부족" 현상을 겪게 되었다. (폰 노이만 병목 현상 참조)
1980년대와 1990년대의 많은 슈퍼컴퓨터 설계는 빠른 프로세서보다 고속 메모리 접근을 제공하는 데 중점을 두었다. 현대 컴퓨터에서 높은 성능을 내기 위해서는 메모리 접근 횟수를 제한하는 것이 중요하다. 일반 프로세서는 고속 캐시 메모리를 설치하고 캐시 미스를 피하기 위해 정교한 알고리즘을 사용한다. 그러나 운영 체제와 응용 프로그램의 크기가 커지면서 캐시 처리 개선 효과가 줄어들었다.
NUMA가 없는 다중 프로세서 시스템은 한 번에 하나의 프로세서만 메모리에 접근할 수 있기 때문에, 여러 프로세서가 동시에 데이터 부족을 겪는 문제가 발생한다.[3] NUMA는 각 프로세서에 별도의 메모리를 제공하여 이러한 문제를 해결한다. 분산 데이터 관련 작업(주로 서버 등)에서 NUMA는 단일 공유 메모리에 비해 프로세서 수(또는 별도 메모리 뱅크)만큼 성능을 향상시킬 수 있다.[4] 멀티 채널 메모리 아키텍처는 메모리 채널 수를 늘려 메모리 접근 동시성을 높이는 또 다른 방법이다.[5]
하지만 모든 데이터가 단일 작업에 국한되지 않기 때문에, 둘 이상의 프로세서가 동일한 데이터를 필요로 할 수 있다. NUMA 시스템은 이러한 경우를 처리하기 위해 메모리 뱅크 간에 데이터를 이동하는 추가 하드웨어나 소프트웨어를 포함한다. 이 작업은 해당 뱅크에 연결된 프로세서의 속도를 늦추므로, NUMA로 인한 전체 속도 증가는 실행 중인 작업의 특성에 따라 달라진다.[4]
학술적으로 NUMA는 여러 개의 프로세서와 메모리 쌍(노드)을 인터커넥트로 연결한 것을 의미한다. 공유 메모리 방식이므로 각 프로세서는 모든 노드의 메모리를 사용할 수 있으며, 각 노드의 메모리는 모든 프로세서에 공통적인 물리적 주소 공간에 매핑될 수 있어야 한다. 프로세서에서 볼 때 동일 노드의 메모리는 "로컬" 메모리, 다른 노드의 메모리는 "리모트" 메모리라고 한다. 일반적으로 로컬 메모리 접근 지연 시간이 리모트 메모리 접근 지연 시간보다 짧다.
소규모 대칭형 멀티프로세싱(SMP) 시스템에서는 모든 프로세서와 메모리가 단일 버스에 존재하지만, 버스의 특성상 여러 프로세서가 동시에 메모리에 접근할 수 없다. 프로세서가 증가함에 따라 메모리 접근 대기 시간이 늘어나 성능 저하가 발생한다. 또한 단일 버스에 연결되는 프로세서가 많아지면 버스 신호선의 물리적 길이가 증가하여 버스 클럭 향상을 저해한다.
메모리 인터리빙은 메모리를 여러 뱅크로 분할하고 프로세서와 메모리 뱅크 사이를 크로스바 스위치 등으로 연결하는 방법이지만, 로컬 버스에 비해 항상 큰 지연 시간으로 접근하게 된다. 또한 메모리 측을 멀티 포트로 고려할 수도 있지만, 동시 접근에 의한 지연을 방지하기 위해 포트를 늘리면 비용이 증가한다.
2. 1. 캐시 일관성 NUMA (ccNUMA)
AMD는 하이퍼트랜스포트를 사용하여 옵테론 프로세서에 NUMA를 구현했다.[6] 인텔은 네할렘 및 투킬라 프로세서부터 x86 및 아이테니엄 서버에 NUMA를 적용했으며, 프로세서 간 상호 연결은 인텔 퀵패스 인터커넥트(QPI)를 사용한다.[7]
대부분의 CPU는 참조 지역성을 활용하기 위해 캐시를 사용하는데, NUMA에서는 공유 메모리 전체에서 캐시 일관성을 유지하는 데 상당한 오버헤드가 발생한다.[8] ccNUMA는 캐시 컨트롤러 간의 프로세서 간 통신을 통해 캐시 일관성을 유지한다. 따라서 여러 프로세서가 동일한 메모리 영역에 빠르게 연속적으로 접근하면 ccNUMA의 성능이 저하될 수 있다. 운영체제의 NUMA 지원은 NUMA 친화적인 방식으로 프로세서와 메모리를 할당하여 이러한 접근 빈도를 줄이려고 시도한다.[9]
MESIF 프로토콜과 같은 캐시 일관성 프로토콜은 캐시 일관성을 유지하는 데 필요한 통신을 줄이려고 시도한다. 확장 가능한 일관 인터페이스(SCI)는 디렉토리 기반 캐시 일관성 프로토콜을 정의하는 IEEE 표준이다.[10][11]
3. NUMA와 클러스터 컴퓨팅
NUMA는 클러스터 컴퓨팅의 긴밀하게 결합된 형태로 볼 수 있다. 가상 메모리 페이징을 클러스터 아키텍처에 추가하면 소프트웨어만으로 NUMA를 구현할 수 있다. 그러나 소프트웨어 기반 NUMA의 노드 간 지연 시간은 하드웨어 기반 NUMA보다 몇 배 더 크다.
4. NUMA의 역사
현대 CPU는 사용하는 주 메모리보다 훨씬 빠르게 작동한다. 1980년대와 1990년대의 많은 슈퍼컴퓨터 설계는 고속 메모리 접근을 제공하는 데 중점을 두었다. 현대 컴퓨터에서 높은 성능을 추출하는 핵심은 메모리 접근 횟수를 제한하는 것이다. 일반 프로세서의 경우, 이는 점점 더 많은 양의 고속 캐시 메모리를 설치하고 캐시 미스를 피하기 위해 정교한 알고리즘을 사용하는 것을 의미했다. 그러나 운영 체제와 응용 프로그램의 크기가 커지면서 캐시 처리 개선을 압도했다. NUMA가 없는 다중 프로세서 시스템은 한 번에 하나의 프로세서만 컴퓨터의 메모리에 접근할 수 있기 때문에 문제를 더 악화시킨다.[3]
NUMA는 각 프로세서에 별도의 메모리를 제공하여 이 문제를 해결하려고 시도한다. 분산 데이터 관련 문제의 경우 NUMA는 단일 공유 메모리에 비해 성능을 향상시킬 수 있다.[4] 이 문제를 해결하는 또 다른 방법은 멀티 채널 메모리 아키텍처이다.[5] 물론 모든 데이터가 단일 작업에 국한되는 것은 아니며, 둘 이상의 프로세서가 동일한 데이터를 필요로 할 수 있다. 이러한 경우를 처리하기 위해 NUMA 시스템에는 메모리 뱅크 간에 데이터를 이동하는 추가 하드웨어 또는 소프트웨어가 포함되어 있다. 이 작업은 해당 뱅크에 연결된 프로세서의 속도를 늦추므로 NUMA로 인한 전체 속도 증가는 실행 중인 작업의 특성에 크게 의존한다.[4]
학술적으로는 여러 개의 프로세서와 메모리 쌍(노드)을 인터커넥트로 연결한 것을 NUMA라고 정의한다. 각 프로세서가 모든 노드의 메모리를 사용할 수 있어야 하며, 각 노드의 메모리를 모든 프로세서에 공통적인 물리적 주소 공간에 매핑할 수 있어야 한다. 어떤 프로세서에서 보았을 때 동일 노드의 메모리를 "로컬" 메모리, 다른 노드의 메모리를 "리모트" 메모리라고 부른다. 일반적으로 로컬 메모리 접근 지연 시간이 리모트 메모리 접근 지연 시간보다 짧다.
소규모 대칭형 멀티프로세싱 (SMP) 시스템에서는 단일 버스에 모든 프로세서와 메모리가 함께 존재하지만, 버스의 특성상 여러 프로세서에 의한 메모리 동시 접근이 불가능하다. 따라서 SMP 시스템의 병렬도를 높여 스케일 업할 경우, 프로세서는 대부분의 시간을 메모리 접근 대기 시간에 소비하게 된다.
초기 NUMA 시스템은 4웨이 정도의 소규모 SMP 시스템을 비교적 고속·저지연 인터커넥션으로 연결하여 구성되었다. 현재 주류 CPU에서는 칩 레벨에서 NUMA 아키텍처를 채택하는 경우가 많다(인텔의 아이테니엄, 네할렘 계열 등이나, AMD의 옵테론 프로세서 등). 이러한 프로세서에서는 메모리 버스가 프로세서 칩과 직결되어 있어 메모리와 조합하여 단일 NUMA 노드를 구성하고, 원격 메모리 액세스를 수행하기 위한 칩 간 고속 인터커넥션 포트가 온칩으로 구현되어 있다.
5. NUMA의 소프트웨어 지원
NUMA는 메모리 접근 성능에 큰 영향을 미치므로, 스레드와 프로세스를 메모리 내 데이터에 가깝게 스케줄링할 수 있도록 특정 소프트웨어 최적화가 필요하다. 운영 체제는 NUMA 친화적인 방식으로 프로세서와 메모리를 할당하고, NUMA에 적합하지 않은 액세스를 줄이는 스케줄링 및 잠금 알고리즘을 사용해야 한다.[12][13][14][15][16][17][18][19][20]
- 마이크로소프트의 윈도우 7 및 윈도우 서버 2008 R2는 64개 이상의 논리 코어에 대한 NUMA 아키텍처 지원을 추가했다.[12]
- 자바 7은 NUMA 인식 메모리 할당자 및 가비지 컬렉션을 지원한다.[13]
- 리눅스 커널:
- 버전 2.5는 기본적인 NUMA 지원을 제공했으며,[14] 이후 커널 릴리스에서 더욱 개선되었다.
- 리눅스 커널 버전 3.8은 이후 커널 릴리스에서 보다 효율적인 NUMA 정책 개발을 가능하게 하는 새로운 NUMA 기반을 도입했다.[15][16]
- 리눅스 커널 버전 3.13은 프로세스를 해당 메모리 근처에 배치하는 것을 목표로 하는 수많은 정책을 도입했으며, 프로세스 간에 공유되는 메모리 페이지 또는 투명한 거대 페이지 사용과 같은 경우를 처리한다. 새로운 sysctl 설정을 통해 NUMA 밸런싱을 활성화 또는 비활성화하고 다양한 NUMA 메모리 밸런싱 매개변수를 구성할 수 있다.[17][18][19]
- OpenSolaris는 lgroup으로 NUMA 아키텍처를 모델링한다.
- FreeBSD는 버전 9.0에서 NUMA 아키텍처 지원을 추가했다.[20]
- 실리콘 그래픽스의 IRIX (2021년 현재 지원 중단)는 Origin 서버 시리즈에서 1240개의 CPU를 통해 ccNUMA 아키텍처를 지원한다.
대부분의 메모리 접근은 특정 영역에 집중되어 있는 참조의 지역성이 있기에, 운영 체제가 적절하게 메모리를 할당함으로써 프로세서가 빈번하게 참조해야 하는 데이터를 접근 비용이 낮은 메모리에 배치하고, 접근 비용이 높은 메모리에는 빈번하게 참조하지 않는 데이터를 배치할 수 있다.
그것에 의해, 실제로는 불균일한 메모리 접근 비용을 갖는 아키텍처의 시스템(실제의 SMP적 시스템)에서도 이상적인 SMP 시스템에 가까운 성능을 발휘할 수 있다.
NUMA 시스템은 소프트웨어적으로 (적어도 사용자 애플리케이션에서는) 통상의 SMP 시스템과 동등하게 보이며, 따라서 SMP 시스템용으로 개발된 애플리케이션이 그대로 가동된다. 단, 운영 체제가 NUMA를 의식한 메모리 관리를 하지 않는 경우에는 성능 저하를 피할 수 없다.
6. NUMA의 하드웨어 지원
AMD는 하이퍼트랜스포트를 사용하여 자사의 옵테론 프로세서(2003년)에 NUMA를 구현했다. 인텔은 2007년 말 네할렘 및 투킬라 CPU를 통해 x86 및 아이테니엄 서버에 대한 NUMA 호환성을 발표했다.[6] 두 인텔 CPU 제품군은 공통 칩셋을 공유하며, 상호 연결은 인텔 퀵패스 인터커넥트(QPI)라고 불리며, 이는 높은 온보드 확장성을 가능하게 하는 극도로 높은 대역폭을 제공한다. 스카이레이크(2017년) 출시와 함께 인텔 울트라패스 인터커넥트라는 새로운 버전으로 대체되었다.[7]
거의 모든 CPU 아키텍처는 메모리 접근에서 참조 지역성을 활용하기 위해 캐시라고 하는 소량의 매우 빠른 비공유 메모리를 사용한다. NUMA에서는 공유 메모리 전체에서 캐시 일관성을 유지하는 데 상당한 오버헤드가 발생한다. 설계 및 구축이 더 간단하지만, 비 캐시 일관성 NUMA 시스템은 표준 폰 노이만 아키텍처 프로그래밍 모델에서 프로그래밍하기가 지나치게 복잡해진다.[8]
일반적으로 ccNUMA는 둘 이상의 캐시가 동일한 메모리 위치를 저장할 때 일관된 메모리 이미지를 유지하기 위해 캐시 컨트롤러 간의 프로세서 간 통신을 사용한다. 이러한 이유로 여러 프로세서가 동일한 메모리 영역에 빠르게 연속적으로 액세스하려고 시도하면 ccNUMA의 성능이 저하될 수 있다. 운영체제의 NUMA 지원은 NUMA 친화적인 방식으로 프로세서와 메모리를 할당하고 NUMA에 적합하지 않은 액세스를 필요하게 만드는 스케줄링 및 잠금 알고리즘을 피함으로써 이러한 종류의 접근 빈도를 줄이려고 시도한다.[9]
또는 MESIF 프로토콜과 같은 캐시 일관성 프로토콜은 캐시 일관성을 유지하는 데 필요한 통신을 줄이려고 시도한다. 확장 가능한 일관 인터페이스(SCI)는 이전 멀티프로세서 시스템에서 발견된 확장성 제한을 피하기 위해 디렉토리 기반 캐시 일관성 프로토콜을 정의하는 IEEE 표준이다. 예를 들어, SCI는 NumaConnect 기술의 기반으로 사용된다.[10][11]
2011년 기준으로 ccNUMA 시스템은 외부 로직 없이 구현할 수 있는 AMD 옵테론 프로세서와 NUMA를 지원하는 칩셋이 필요한 인텔 아이테니엄 프로세서를 기반으로 하는 멀티 프로세서 시스템이다. ccNUMA 지원 칩셋의 예로는 SGI 셔브(Super hub), 인텔 E8870, HP sx2000 (Integrity 및 Superdome 서버에 사용) 및 NEC 아이테니엄 기반 시스템에서 발견되는 칩셋이 있다. 실리콘 그래픽스와 같은 이전 ccNUMA 시스템은 MIPS 프로세서와 DEC 알파 21364 (EV7) 프로세서를 기반으로 했다.
참조
[1]
간행물
Non-uniform+memory+access
FOLDOC
[2]
웹사이트
Non-Uniform Memory Access (NUMA)
https://web.archive.[...]
New York University
2010-05-04
[3]
웹사이트
A Case for NUMA-aware Contention Management on Multicore Systems
https://www.usenix.o[...]
Simon Fraser University
2011-05-02
[4]
웹사이트
Memory System Performance in a NUMA Multicore Multiprocessor
https://web.archive.[...]
ACM
[5]
웹사이트
Intel Dual-Channel DDR Memory Architecture White Paper
http://www.kingston.[...]
Infineon Technologies North America and Kingston Technology
2003-09
[6]
간행물
Intel QuickPath Architecture
http://www.intel.com[...]
Intel Corp.
2008
[7]
뉴스
Gelsinger Speaks To Intel And High-Tech Industry's Rapid Technology Caden
http://www.intel.com[...]
Intel Corporation
2007-09-18
[8]
웹사이트
ccNUMA: Cache Coherent Non-Uniform Memory Access
http://www.slideshar[...]
slideshare.net
[9]
웹사이트
Comparative Performance Evaluation of Cache-Coherent NUMA and COMA Architectures
http://www.cs.berkel[...]
ACM
[10]
웹사이트
The Scalable Coherent Interface and Related Standards Projects
http://www.slac.stan[...]
Stanford Linear Accelerator Center
1991-09
[11]
웹사이트
The NumaChip enables cache coherent low cost shared memory
https://web.archive.[...]
Numascale.com
[12]
문서
NUMA Support (MSDN)
http://msdn.microsof[...]
[13]
문서
Java HotSpot Virtual Machine Performance Enhancements
http://docs.oracle.c[...]
[14]
웹사이트
Linux Scalability Effort: NUMA Group Homepage
http://lse.sourcefor[...]
2002-11-20
[15]
웹사이트
Linux kernel 3.8, Section 1.8. Automatic NUMA balancing
http://kernelnewbies[...]
2013-02-08
[16]
웹사이트
NUMA in a hurry
https://lwn.net/Arti[...]
LWN.net
2012-11-14
[17]
웹사이트
Linux kernel 3.13, Section 1.6. Improved performance in NUMA systems
http://kernelnewbies[...]
2014-01-19
[18]
웹사이트
Linux kernel documentation: Documentation/sysctl/kernel.txt
https://www.kernel.o[...]
kernel.org
[19]
웹사이트
NUMA scheduling progress
https://lwn.net/Arti[...]
LWN.net
2013-10-01
[20]
웹사이트
numa(4)
https://www.freebsd.[...]
2020-12-03
[21]
문서
9.81 不均一メモリー・アクセス(NUMA)システムでの仮想マシンのライブ・マイグレーション後のCPUアフィニティ
https://docs.oracle.[...]
[22]
문서
non-uniform memory access の意味・使い方|英辞郎 on the WEB
https://eow.alc.co.j[...]
[23]
간행물
Intel QuickPath Architecture
http://www.intel.com[...]
Intel Corp.
2008
[24]
뉴스
Gelsinger Speaks To Intel And High-Tech Industry's Rapid Technology Caden
http://www.intel.com[...]
Intel Corporation
2007-09-18
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com