비균일 메모리 액세스(누마)는 오늘날의 다중 처리 시스템에서 사용되는 공유 메모리 아키텍처이다. 시스템 익스플로러는 저희의 데이터베이스를 통해 실행 중인 프로세스를 검사할 수 있는 쉬운 방법을 제공하는 최고의 프리웨어입니다. 로컬 메모리 액세스는 낮은 대기 시간-높은 대역폭 성능을 제공합니다. 다른 프로세서가 소유 한 메모리에 액세스하는 동안 대기 시간이 더 높고 대역폭 성능이 낮습니다. 가상 머신 구성을 염두에두고 누마 아키텍처와 함께 수행해야합니다. 특정 가상 머신에 대해 잘못된 설계,결과적이지 않은 동작 또는 전반적인 성능 저하가 발생하는 경우 또는 최악의 경우 해당 가상 머신에서 실행되는 모든 가상 머신에 대해 발생합니다.
이 시리즈는 중앙 처리 장치 아키텍처,메모리 서브 시스템 및 중앙 처리 장치 및 메모리 스케줄러에 대한 통찰력을 제공하는 것을 목표로한다. 높은 서비스를위한 토대를 마련하고 비율을 통합 증가 고성능 플랫폼을 만드는 당신을 허용. 최신 컴퓨팅 아키텍처에 도달하기 전에 공유 메모리 다중 프로세서 아키텍처의 역사를 검토하여 오늘날 누마 시스템을 사용하는 이유를 이해하는 것이 도움이됩니다.
지난 수십 년 동안의 공유 메모리 멀티 프로세서 아키텍처의 진화
일관된 낮은 대기 시간,높은 대역폭 플랫폼을 설계 할 때 균일 한 메모리 액세스라는 아키텍처가 더 적합 할 것으로 보인다. 그러나 현대 시스템 아키텍처는 진정으로 균일하지 못하도록 제한 할 것입니다. 이 뒤에 이유를 이해하기 위해 우리는 병렬 컴퓨팅의 핵심 드라이버를 식별하기 위해 다시 역사에 갈 필요가있다.
70 년대 초 관계형 데이터베이스가 도입됨에 따라 다수의 동시 사용자 운영과 과도한 데이터 생성에 서비스를 제공할 수 있는 시스템에 대한 필요성이 주류가 되었다. 인상적인 유니프로세서 성능 속도에도 불구하고 멀티프로세서 시스템은 이 워크로드를 처리할 수 있는 더 나은 장비를 갖추고 있었습니다. 비용 효율적인 시스템을 제공하기 위해 공유 메모리 주소 공간이 연구의 초점이되었습니다. 초기에 크로스바 스위치를 사용하는 시스템이 옹호되었지만 이러한 설계 복잡성은 프로세서의 증가와 함께 확장되어 버스 기반 시스템을 더욱 매력적으로 만들었습니다. 버스 시스템의 프로세서는 버스에서 요청을 전송하여 전체 메모리 공간에 액세스 할 수 있으므로 사용 가능한 메모리를 최대한 최적으로 사용할 수있는 매우 비용 효율적인 방법입니다.
그러나 버스 기반 시스템에는 자체 확장 성 문제가 있습니다. 주요 문제는 제한된 대역폭이며,이는 버스가 수용 할 수있는 프로세서 수를 제한합니다. 두 가지 주요 관심 분야를 소개합니다:
- 노드당 사용 가능한 대역폭은 각 중앙 처리 장치가 추가됨에 따라 감소합니다.
- 더 많은 프로세서를 추가 할 때 버스 길이가 증가하여 대기 시간이 증가합니다.
프로세서의 성능 증가,특히 프로세서와 메모리 성능 사이의 속도 간격은 다중 프로세서에 대해 여전히 파괴적이었습니다. 프로세서와 메모리 사이의 메모리 갭이 증가 할 것으로 예상 되었기 때문에 메모리 시스템을 관리하기위한 효과적인 전략을 개발하는 데 많은 노력이 필요했습니다. 이러한 전략 중 하나는 메모리 캐시를 추가하는 것이 었습니다. 이러한 문제를 해결하는 것은 여전히 중앙 처리 장치 디자인 팀의 주요 초점이며,캐시 누락을 피하기 위해 캐싱 구조 및 정교한 알고리즘에 대한 많은 연구가 수행됩니다.
캐싱 스눕 프로토콜 소개
각 중앙 처리 장치에 캐시를 연결하면 여러 가지 방법으로 성능이 향상됩니다. 메모리를 중앙 처리 장치에 더 가깝게 만들면 평균 메모리 액세스 시간이 단축되고 동시에 메모리 버스의 대역폭 부하가 줄어듭니다. 공유 메모리 아키텍처에서 각 중앙 처리 장치에 캐시를 추가하는 문제는 메모리 블록의 여러 복사본이 존재할 수 있다는 것입니다. 이를 캐시 일관성 문제라고합니다. 이 문제를 해결하기 위해 캐싱 스눕 프로토콜은 버스의 모든 대역폭을 먹어 치우려고하지 않고 올바른 데이터를 제공하는 모델을 만들려고 시도했습니다. 가장 인기있는 프로토콜,쓰기 무효화,로컬 캐시를 쓰기 전에 다른 모든 데이터 복사본을 지 웁니다. 다른 프로세서가 이 데이터를 이후에 읽으면 해당 로컬 캐시에서 캐시 미스를 감지하고 가장 최근에 수정된 데이터가 포함된 다른 프로세서의 캐시에서 서비스됩니다. 이 모델은 많은 버스 대역폭을 절약하고 1990 년대 초에 균일 한 메모리 액세스 시스템이 등장 할 수있게했습니다.최신 캐시 일관성 프로토콜은 3 부에서 자세히 설명합니다.시스템 내의 모든 메모리 모듈에 대해 동일한 균일 액세스 시간을 경험하는 버스 기반 멀티프로세서의 프로세서는 종종 균일 메모리 액세스 시스템 또는 대칭 멀티프로세서라고 불린다.시스템 버스(앞쪽 버스)를 통해 노스브릿지와 연결된다. 노스브릿지에는 메모리 컨트롤러가 포함되어 있으며 메모리와의 모든 통신은 노스브릿지를 통과해야 합니다. 모든 장치에 대한 입출력 관리를 담당하는 입출력 컨트롤러는 노스브릿지에 연결됩니다. 따라서 모든 입출력은 중앙 프로세서에 도달하기 위해 노스브릿지를 통과해야 합니다.
여러 버스 및 메모리 채널을 사용하여 사용 가능한 대역폭을 두 배로 늘리고 노스 브릿지의 병목 현상을 줄입니다. 메모리 대역폭을 더욱 증가시키기 위해 일부 시스템은 외부 메모리 컨트롤러를 노스 브릿지에 연결하여 대역폭을 개선하고 더 많은 메모리를 지원합니다. 그러나 노스 브릿지의 내부 대역폭과 초기 스누피 캐시 프로토콜의 방송 특성으로 인해 우마는 제한된 확장 성을 가진 것으로 간주되었습니다. 오늘날의 고속 플래시 장치를 사용하여 초당 수십만 개의 입출력 장치를 사용함에 따라 이 아키텍처가 향후 워크로드를 위해 확장되지 않을 것이라는 것은 절대적으로 옳았습니다.
비균일 메모리 액세스 아키텍처
확장성 및 성능 향상을 위해 공유 메모리 멀티프로세서 아키텍처에 세 가지 중요한 변경 사항이 적용됩니다;
- 비균일 메모리 액세스 구성
- 지점 간 상호 연결 토폴로지
- 확장 가능한 캐시 일관성 솔루션
1: 비 균일 메모리 액세스 조직
누마는 중앙 집중식 메모리 풀에서 벗어나 토폴로지 속성을 도입합니다. 프로세서에서 메모리까지의 신호 경로 길이에 대한 메모리 위치 기반을 분류함으로써 대기 시간 및 대역폭 병목 현상을 피할 수 있습니다. 이는 프로세서 및 칩셋의 전체 시스템을 재 설계하여 수행됩니다. 누마 아키텍처는 90 년대 말 크레이 오리진 2000 과 같은 슈퍼컴퓨터에서 사용되었을 때 인기를 얻었다. 누마 메모리의 위치를 식별하는 데 도움이,이 시스템의 경우,그들은 섀시는 메모리 비트를 보유하고있는 메모리 영역을 궁금해했다.
1000 년 상반기에 누마는 우마시스템이 최고로 군림하는 기업환경에 이르렀다. 2003 년에 옵테론 제품군이 도입되었으며,각 프로세서가 지정된 메모리 뱅크를 소유하는 통합 메모리 컨트롤러가 특징입니다. 각 프로세서에는 이제 자체 메모리 주소 공간이 있습니다. 로컬 메모리 액세스를 위해 최적화하는 동시에 두 메모리 주소 공간에서 메모리를 소비하는 작업 부하를 허용합니다. 단일 시스템 내에서 로컬 및 원격 메모리 액세스의 구분을 명확히하기 위해 두 개의 중앙 처리 장치 시스템의 예를 사용합시다.
메모리 컨트롤러에 연결된 메모리는 로컬 메모리로 간주됩니다. 메모리는 외부 또는 원격으로 간주됩니다. 원격 메모리 액세스는 상호 연결(지점 간 링크)을 통과하고 원격 메모리 컨트롤러에 연결해야하므로 로컬 메모리 액세스에 대한 추가 대기 시간 오버 헤드가 있습니다. 다른 메모리 위치의 결과로,이 시스템은”비 균일”메모리 액세스 시간을 경험한다.2:포인트-투-포인트 인터커넥트
는 옵테론 마이크로아키텍처와의 포인트-투-포인트 연결 하이퍼트랜스포트를 도입했다. 인텔은 2007 년 네할렘 프로세서 제품군 디자인에 퀵패스 아키텍처를 도입함으로써 이중 독립 버스 아키텍처에서 벗어났습니다.
네할렘 아키텍처는 인텔 마이크로아키텍처 내에서 중요한 설계 변화였으며 인텔 코어 시리즈의 첫 번째 진정한 세대로 간주됩니다. 현재 브로드 웰 아키텍처는 인텔 코어 브랜드(인텔 제온 5 버전 4)의 4 세대이며,마지막 단락은 마이크로 아키텍처 세대에 대한 자세한 정보가 포함되어 있습니다. 메모리 컨트롤러는 메모리 컨트롤러로 이동하여 시스템 내의 데이터 링크로 포인트-투-포인트 인터커넥트를 도입했다.
네할렘 마이크로아키텍처는 레거시 프론트 사이드 버스를 대체할 뿐만 아니라 전체 서브시스템을 서버 중앙처리장치의 모듈형 설계로 재구성했다. 이 모듈 식 설계는”언 코어”로 도입되었으며 캐싱 및 상호 연결 속도를위한 빌딩 블록 라이브러리를 생성합니다. 전면 버스를 제거하면 대역폭 확장 성 문제가 개선되지만 엄청난 양의 메모리 용량과 대역폭을 처리 할 때 프로세서 내 및 프로세서 간 통신을 해결해야합니다. 통합 메모리 컨트롤러와 퀵 패스 상호 연결은 모두 언 코어의 일부이며 모델 별 레지스터입니다. 그들은 내부 및 프로세서 간 통신을 제공하는 무선 네트워크에 연결합니다. 인텔은 2016 년 인텔 브로드웰 마이크로아키텍처에서 초당 6.4 기가 전송,8.0 기가 전송,9.6 기가 전송 기능을 제공합니다. 이러한 관점에서 볼 때,마지막으로 사용된 전면 버스는 1.6 기가비트/초 또는 12.8 기가비트/초의 플랫폼 대역폭을 제공했습니다. 샌디 브릿지 인텔은 시스템 에이전트에 언 코어를 재 브랜드 도입 할 때,아직 용어 언 코어는 여전히 현재 문서에서 사용된다. 2 부에서 퀵 패스 및 언 코어에 대한 자세한 내용을 찾을 수 있습니다.
3:확장 가능한 캐시 일관성
각 코어에는 엘 3 캐시에 대한 전용 경로가 있습니다. 각 경로는 천 개의 와이어로 구성되어 있으며 캐시에 액세스하려는 코어를 늘리면서 나노 미터 제조 프로세스를 줄이려면 이것이 잘 확장되지 않는다고 상상할 수 있습니다. 확장할 수 있도록 샌디 브릿지 아키텍처는 언코어에서 엘 3 캐시를 이동시키고 확장 가능한 링 온다이 인터커넥트를 도입했습니다. 이를 통해 인텔은 3 캐시를 동일한 조각으로 분할하고 배포 할 수있었습니다. 이는 더 높은 대역폭과 연관성을 제공합니다. 각 슬라이스는 2.5 메가바이트이며 하나의 슬라이스는 각 코어와 연결됩니다. 링을 통해 각 코어는 다른 모든 슬라이스에 액세스 할 수 있습니다. 이 구성 요소는 2015 년 11 월 15 일에 확인함.
이 캐싱 아키텍처에는 캐시 일관성을 보장하기 위해 분산 로컬 캐시와 시스템의 다른 프로세서를 모두 통합하는 스누핑 프로토콜이 필요합니다. 시스템에 더 많은 코어가 추가되면 스눕 트래픽의 양이 증가합니다. 이 패키지에는 디버깅 심볼이 들어 있습니다. 언 코어,확장 가능한 링 온 다이 인터커넥트에 대한 심층적 인 견해와 누마 성능에 대한 캐싱 스눕 프로토콜의 중요성은 파트 3 에 포함될 것입니다.
비 인터리브 사용 누마=스마
물리적 메모리는 마더보드에 분산되어 있지만,시스템은 두 누마 노드 사이에 메모리를 인터리브하여 단일 메모리 주소 공간을 제공할 수 있다. 이를 노드 인터리빙이라고합니다(설정은 2 부에서 다룹니다). 노드 인터리빙이 활성화되면 시스템은 충분히 균일 한 메모리 아키텍처가됩니다. 시스템의 프로세서 및 메모리의 토폴로지 정보 및 특성을 운영 체제로 릴레이하는 대신 전체 메모리 범위를 4 킬로바이트 주소 지정 가능 영역으로 나누고 각 노드에서 라운드 로빈 방식으로 매핑합니다. 이는 메모리 주소 공간이 노드에 분산되는’인터리브’메모리 구조를 제공합니다. 가상 머신에 메모리를 할당할 때 두 개의 서로 다른 노드에 있는 실제 메모리를 할당합니다.
흥미로운 점은 스마 시스템이 균일 한 메모리 액세스 시간을 제공한다는 것입니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다. 인텔 메모리 대기 시간 검사기는 동일한 시스템에 누마 및 스마 구성의 차이점을 입증하는 데 사용되었다.
이 테스트는 각 소켓에서 시스템의 다른 소켓까지의 유휴 대기 시간(나노초)을 측정합니다. 소켓 0 에 의해 메모리 노드 0 이 보고된 지연 시간은 로컬 메모리 액세스이고,메모리 노드 1 의 소켓 0 으로부터의 메모리 액세스는 누마로 구성된 시스템에서 원격 메모리 액세스이다.
메모리 노드 0 | 메모리 노드 1 | – | 메모리 노드 0 | 메모리 노드 1 | ||
소켓 0 | 75.7 | 132.0 | – | 소켓 0 | 105.5 | 106.4 |
소켓 1 | 131.9 | 75.8 | – | 소켓 1 | 106.0 | 104.6 |
예상대로 인터리빙은 큐피피 링크를 일정하게 통과하면 영향을 받습니다. 유휴 메모리 테스트는 최상의 시나리오이며 더 흥미로운 테스트는로드 된 대기 시간을 측정하는 것입니다. 그것은 나쁜 투자 되었을 것 이다 만약 당신의 서버 공회전,그에 대 한 시스템 데이터를 처리 하는 가정할 수 있습니다. 로드된 대기 시간을 측정하면 시스템이 정상 부하에서 어떻게 수행되는지에 대한 통찰력을 얻을 수 있습니다. 테스트 중에 부하 주입 지연은 2 초마다 자동으로 변경되며 대역폭과 해당 대기 시간이 모두 해당 수준에서 측정됩니다. 이 테스트는 100%읽기 트래픽을 사용합니다.왼쪽에 누마 테스트 결과,오른쪽에 스마 테스트 결과.
누마 시스템에 대해 보고된 대역폭은 누마로 구성된 시스템보다 더 높은 대기 시간을 유지하면서 더 낮습니다. 따라서 시스템의 특성을 활용하기 위해 가상 머신 크기를 최적화하는 데 중점을 두어야 합니다.
네할렘&핵심 마이크로아키텍처 개요
2008 년 네할렘 마이크로아키텍처가 도입되면서 인텔은 넷버스트 아키텍처에서 벗어났다. 네 할렘 마이크로 아키텍처는 누마에 인텔 고객을 소개했다. 수년 동안 인텔은 유명한 틱 톡 모델에 따라 새로운 마이크로 아키텍처 및 최적화를 도입했습니다. 모든 틱과 함께 최적화가 이루어지고 프로세스 기술이 축소되며 모든 틱과 함께 새로운 마이크로 아키텍처가 도입됩니다. 인텔은 2012 년 이후 일관된 브랜딩 모델을 제공하지만,사람들은 인텔 아키텍처의 코드 네임에 따라 프로세서 틱 및 톡 세대에 대해 논의하는 경향이 있습니다. 이 시리즈에서는 브랜딩 이름과 아키텍처 코드명이 모두 사용됩니다:
Microarchitecture DP servers | Branding | Year | Cores | LLC (MB) | QPI Speed (GT/s) | Memory Frequency | Architectural change | Fabrication Process |
Nehalem | x55xx | 10-2008 | 4 | 8 | 6.4 | 3xDDR3-1333 | Tock | 45nm |
Westmere | x56xx | 01-2010 | 6 | 12 | 6.4 | 3xDDR3-1333 | Tick | 32nm |
Sandy Bridge | E5-26xx v1 | 03-2012 | 8 | 20 | 8.0 | 4xDDR3-1600 | Tock | 32nm |
Ivy Bridge | E5-26xx v2 | 09-2013 | 12 | 30 | 8.0 | 4xDDR3-1866 | Tick | 22 nm |
Haswell | E5-26xx v3 | 09-2014 | 18 | 45 | 9.2018 년 11 월 15 일-2018 년 12 월 15 일-2018 년 12 월 15 일 | |||
브로드웰 | 03-2016 | 22 | 55 | 9.6 | 2018 년 11 월 15 일 |
다음은 2 부:시스템 아키텍처
2016 년 누마 딥 다이브 시리즈:
파트 0:소개 누마 딥 다이브 시리즈
파트 1:우마에서 누마
파트 2:시스템 아키텍처
파트 3:캐시 일관성
파트 4:로컬 메모리 최적화
파트 5: