불균일한 메모리 액세스

Non-uniform memory access
HP Z820 워크스테이션의 메인보드에는 2개의 CPU 소켓이 탑재되어 있으며, 각각 소켓 주위에8개의 DIMM 슬롯이 있습니다.

NUMA(Non-Uniform Memory Access)는 멀티프로세싱에 사용되는 컴퓨터 메모리 설계로 메모리 액세스 시간은 프로세서에 상대적인 메모리 위치에 따라 달라집니다.NUMA에서는 프로세서가 로컬이 아닌 메모리(다른 프로세서의 로컬 메모리 또는 프로세서 간에 공유되는 메모리)보다 자신의 로컬 메모리에 더 빨리 액세스할 수 있습니다.NUMA의 이점은 특정 워크로드, 특히 데이터가 특정 작업 또는 [1]사용자와 강하게 연관된 서버에서 제한됩니다.

NUMA 아키텍처는 SMP(symmetric multiprocessing) 아키텍처에서 논리적으로 확장됩니다.1990년대에 유니시스, 콘벡스 컴퓨터(나중에 Hewlett-Packard), 허니웰 정보 시스템 이탈리아(HISI) (나중에 Groupe Bull), 실리콘 그래픽스(나중에 실리콘 그래픽스 인터내셔널), 시퀀트 컴퓨터 시스템(나중에 IBM), 데이터 제너럴(나중에 EMC), 디지털 테크놀로지스(Dell Technologies)에 의해 상업적으로 개발되었다.HPE)가 개발한 기술은 이후 다양한 Unix 계열 운영체제에서 채택되었으며 Windows NT에서도 어느 정도 채택되었습니다.

NUMA 기반의 Unix 시스템을[where?] 최초로 상용화한 것은 Honeywell Information Systems 이탈리아 VAST Corporation의 Dan Gielan이 설계한 Symmetrical Multi Processing XPS-100 시리즈 서버입니다.

개요

NUMA 시스템의 가능한 아키텍처 중 하나입니다.프로세서는 다양한 두께/번호의 연결부를 통해 버스 또는 크로스바에 연결됩니다.이는 CPU마다 상대적인 위치에 따라 메모리에 대한 액세스 우선순위가 다르다는 것을 나타냅니다.

최신 CPU는 사용하는 메인 메모리보다 상당히 빠르게 동작합니다.컴퓨팅과 데이터 처리 초기에는 CPU의 동작 속도가 일반적으로 자체 메모리보다 느렸습니다.프로세서와 메모리의 성능 라인은 1960년대에 최초의 슈퍼컴퓨터의 등장으로 교차했다.그 이후 CPU는 점점 더 "데이터에 굶주려" 메모리로부터 데이터가 도착하기를 기다리는 동안 멈춰야 했습니다(예: Von-Neumann 아키텍처 기반 컴퓨터의 경우 Von Neumann 병목 현상 참조).1980년대와 1990년대의 많은 슈퍼컴퓨터 설계는 고속 프로세서가 아닌 고속 메모리 액세스를 제공하는 데 초점을 맞추어 컴퓨터가 다른 시스템이 접근할 수 없는 속도로 대용량 데이터 세트에서 작업할 수 있도록 했습니다.

메모리 액세스의 수를 제한하는 것이 최신 컴퓨터에서 고성능을 끌어내는 열쇠가 되었습니다.범용 프로세서의 경우 고속 캐시 메모리의 양이 계속 증가하고 캐시 누락이 발생하지 않도록 고도의 알고리즘이 사용되었습니다.그러나 운영 체제와 운영 체제에서 실행되는 애플리케이션의 크기가 급격하게 증가함에 따라 일반적으로 이러한 캐시 프로세싱 개선 사항이 압도적으로 증가했습니다.NUMA가 없는 멀티프로세서 시스템은 문제를 크게 악화시킵니다.[2]번에 컴퓨터의 메모리에 액세스 할 수 있는 프로세서는 1개뿐이기 때문에, 동시에 복수의 프로세서가 부족할 가능성이 있습니다.

NUMA는 각 프로세서에 별도의 메모리를 제공하여 이 문제를 해결하려고 시도하므로 여러 프로세서가 동일한 메모리를 처리하려고 할 때 성능 저하를 방지할 수 있습니다.분산 데이터(서버 및 유사한 애플리케이션에 공통)와 관련된 문제의 경우, NUMA를 사용하면 단일 공유 메모리(또는 개별 [3]메모리 뱅크)의 대략적인 수만큼 성능을 향상시킬 수 있습니다.이 문제에 대처하기 위한 또 다른 접근방식은 멀티채널 메모리아키텍처입니다이 아키텍처에서는 메모리채널 수가 선형적으로 증가하면 메모리액세스의 동시성이 [4]선형적으로 증가합니다.

물론 모든 데이터가 하나의 작업으로 한정되는 것은 아닙니다.즉, 여러 프로세서가 동일한 데이터를 필요로 하는 경우가 있습니다.이러한 경우를 처리하기 위해 NUMA 시스템에는 메모리 뱅크 간에 데이터를 이동하는 추가 하드웨어 또는 소프트웨어가 포함되어 있습니다.이 작업을 수행하면 이러한 뱅크에 연결된 프로세서가 느려지므로 NUMA로 인한 전반적인 속도는 실행 중인 [3]작업의 특성에 따라 크게 달라집니다.

실장

AMD는 HyperTransport를 사용하여 Opteron 프로세서(2003)에 NUMA를 구현했습니다.인텔은 2007년 후반에 NehalemTukwila CPU를 [5]탑재한 x86 및 Itanium 서버의 NUMA 호환성을 발표했습니다.두 인텔 CPU 패밀리는 공통 칩셋을 공유합니다.인터커넥트는 인텔 QuickPath Interconnect (QPI)라고 불리며 높은 온보드 확장성을 실현하기 위해 매우 높은 대역폭을 제공하며 Skylake (2017)[6] 출시와 함께 인텔 UltraPath Interconnect라는 새로운 버전으로 대체되었습니다.

캐시 일관성 있는 NUMA(ccNUMA)

hwloc의 lstopo 도구를 사용하여 추출된 ccNUMA Buldozer 서버의 토폴로지.

거의 모든 CPU 아키텍처는 캐시라고 하는 매우 빠른 비공유 메모리를 소량 사용하여 메모리 액세스에서의 참조 인접성을 이용합니다.NUMA를 사용하는 경우 공유 메모리 전체에서 캐시 일관성을 유지하려면 상당한 오버헤드가 발생합니다.캐시 일관성이 없는 NUMA 시스템은 설계 및 구축이 간단하지만 표준 von Neumann 아키텍처 프로그래밍 [7]모델에서는 프로그래밍이 매우 복잡합니다.

일반적으로 ccNUMA는 여러 캐시가 동일한 메모리 위치를 저장할 때 캐시 컨트롤러 간의 프로세서 간 통신을 사용하여 일관된 메모리 이미지를 유지합니다.이 때문에, 복수의 프로세서가 같은 메모리 영역에 연속적으로 액세스 하려고 하면, ccNUMA 의 퍼포먼스가 저하하는 일이 있습니다.운영 체제에서 NUMA를 지원하면 NUMA에 친숙한 방식으로 프로세서와 메모리를 할당하고 NUMA에 비우호적인 액세스가 [8]필요한 스케줄링 및 잠금 알고리즘을 방지하여 이러한 유형의 액세스 빈도를 줄일 수 있습니다.

대안으로, MESIF 프로토콜과 같은 캐시 일관성 프로토콜은 캐시 일관성 유지에 필요한 통신을 줄이려고 시도합니다.Scalable Cohency Interface(SCI)는 디렉토리 기반 캐시 일관성 프로토콜을 정의하는 IEEE 표준으로, 이전의 멀티프로세서 시스템에서 볼 수 있는 확장성 제한을 방지합니다.예를 들어 SCI는 NumaConnect [9][10]기술의 기반으로 사용됩니다.

NUMA와 클러스터 컴퓨팅의 비교

NUMA는 긴밀하게 결합된 클러스터 컴퓨팅 형태로 볼 수 있습니다.클러스터 아키텍처에 가상 메모리 페이징을 추가하면 NUMA를 완전히 소프트웨어로 구현할 수 있습니다.그러나 소프트웨어 기반 NUMA의 노드 간 지연 시간은 하드웨어 기반 [1]NUMA보다 몇 배나 더 느립니다.

소프트웨어 지원

NUMA는 메모리 액세스 성능에 큰 영향을 미치기 때문에 메모리 내 데이터에 가까운 스레드 및 프로세스를 스케줄링하려면 특정 소프트웨어 최적화가 필요합니다.

  • Microsoft Windows 7 및 Windows Server 2008 R2에서는 64개 이상의 논리 [11]코어가 있는 NUMA 아키텍처에 대한 지원이 추가되었습니다.
  • Java 7에서는 NUMA 인식 메모리 할당기 및 가비지 [12]컬렉터에 대한 지원이 추가되었습니다.
  • Linux 커널:
    • 버전 2.5에서는 기본 NUMA [13]지원이 제공되었으며 이후 커널 릴리스에서 더욱 개선되었습니다.
    • Linux 커널 버전 3.8에는 이후 [14][15]커널 릴리스에서 보다 효율적인 NUMA 정책을 개발할 수 있는 새로운 NUMA 기반이 추가되었습니다.
    • Linux 커널 버전 3.13에서는 프로세스 간에 메모리 페이지를 공유하거나 투명하게 큰 페이지를 사용하는 등의 처리와 함께 프로세스를 메모리 근처에 배치하는 것을 목적으로 하는 수많은 정책이 도입되었습니다.새로운 sysctl 설정을 통해 NUMA 밸런싱을 활성화 또는 비활성화할 수 있으며 다양한 NUMA 메모리 구성도 가능합니다.ory 밸런싱 파라미터.[16][17][18]
  • OpenSolaris는 NUMA 아키텍처를 lgroup으로 모델링합니다.
  • FreeBSD는 버전 9.[19]0에서 NUMA 아키텍처에 대한 지원이 추가되었습니다.
  • 실리콘 그래픽스 IRIX(2021년부로 중단)는 오리진 서버 시리즈를 탑재한 1240 CPU 이상의 ccNUMA 아키텍처를 지원합니다.

하드웨어 지원

2011년 현재 ccNUMA 시스템은 AMD Opteron 프로세서인텔 Itanium 프로세서를 기반으로 하는 멀티프로세서 시스템입니다.NUMA를 지원하는 칩셋에는 SGI Shub(슈퍼허브), 인텔 E8870, HP 2000의 Integrity가 있습니다.서버) 및 NEC Itanium 기반 시스템에서 볼 수 있는 서버입니다.Silicon Graphics와 같은 이전의 CCNUMA 시스템은 MIPS 프로세서와 DEC Alpha 21364(EV7) 프로세서기반으로 했습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Nakul Manchanda; Karan Anand (2010-05-04). "Non-Uniform Memory Access (NUMA)" (PDF). New York University. Archived from the original (PDF) on 2013-12-28. Retrieved 2014-01-27.
  2. ^ Sergey Blagodurov; Sergey Zhuravlev; Mohammad Dashti; Alexandra Fedorov (2011-05-02). "A Case for NUMA-aware Contention Management on Multicore Systems" (PDF). Simon Fraser University. Retrieved 2014-01-27.
  3. ^ a b Zoltan Majo; Thomas R. Gross (2011). "Memory System Performance in a NUMA Multicore Multiprocessor" (PDF). ACM. Archived from the original (PDF) on 2013-06-12. Retrieved 2014-01-27.
  4. ^ "Intel Dual-Channel DDR Memory Architecture White Paper" (PDF) (Rev. 1.0 ed.). Infineon Technologies North America and Kingston Technology. September 2003. Archived from the original (PDF, 1021 KB) on 2011-09-29. Retrieved 2007-09-06.
  5. ^ 인텔 (2008년 (2008년)인텔 QuickPath 아키텍처 [화이트 페이퍼]http://www.intel.com/pressroom/archive/reference/whitepaper_QuickPath.pdf 에서 취득했습니다.
  6. ^ 인텔 코퍼레이션(2007년 9월 18일).인텔과 하이테크 산업의 래피드 테크놀로지 캐든에게 말하는 겔싱어[보도자료]http://www.intel.com/pressroom/archive/releases/2007/20070918corp_b.htm 에서 취득했습니다.
  7. ^ "ccNUMA: Cache Coherent Non-Uniform Memory Access". slideshare.net. 2014. Retrieved 2014-01-27.
  8. ^ Per Stenstromt; Truman Joe; Anoop Gupta (2002). "Comparative Performance Evaluation of Cache-Coherent NUMA and COMA Architectures" (PDF). ACM. Retrieved 2014-01-27.
  9. ^ David B. Gustavson (September 1991). "The Scalable Coherent Interface and Related Standards Projects" (PDF). SLAC Publication 5656. Stanford Linear Accelerator Center. Retrieved January 27, 2014.
  10. ^ "The NumaChip enables cache coherent low cost shared memory". Numascale.com. Archived from the original on 2014-01-22. Retrieved 2014-01-27.
  11. ^ NUMA 지원(MSDN)
  12. ^ Java HotSpot™ 가상 시스템 성능 향상
  13. ^ "Linux Scalability Effort: NUMA Group Homepage". sourceforge.net. 2002-11-20. Retrieved 2014-02-06.
  14. ^ "Linux kernel 3.8, Section 1.8. Automatic NUMA balancing". kernelnewbies.org. 2013-02-08. Retrieved 2014-02-06.
  15. ^ Jonathan Corbet (2012-11-14). "NUMA in a hurry". LWN.net. Retrieved 2014-02-06.
  16. ^ "Linux kernel 3.13, Section 1.6. Improved performance in NUMA systems". kernelnewbies.org. 2014-01-19. Retrieved 2014-02-06.
  17. ^ "Linux kernel documentation: Documentation/sysctl/kernel.txt". kernel.org. Retrieved 2014-02-06.
  18. ^ Jonathan Corbet (2013-10-01). "NUMA scheduling progress". LWN.net. Retrieved 2014-02-06.
  19. ^ "numa(4)". www.freebsd.org. Retrieved 2020-12-03.

외부 링크