본문 바로가기
HW Knowledge

Memory/Interleaving

by 스쳐가는인연 2016. 6. 17.

메모리 인터리빙 기술 이해해 볼라고 ...


Interleaving

메모리의 데이터에 접근하는 방법은 위 그림 처럼, 가로행 주소를 찾고, 세로열 주소를 찾아 확인되는 특정 위치의 값을 읽어 들여 갖는 것으로 이해하면 된다.


The access paths from the memory controller to memory are limited; only one set of paths is available for address and data, respectively. Reading large data volumes from one memory chip can be time-consuming. For this reason, the internal memory architecture is configured in four layers (banks) to increase data read performance.


이 때, 기본적으로는 한 번에 한 개의 데이터만 접근할 수 있다. 이 것이 메모리 용량이 작은 경우는 곰방 찾는데, 용량이 큰 경우 검색에 시간이 걸리게 된다. (데이터가 착해서 순차적으로 들어있지 않다면 더욱 더 ...)


Interleaving is the set-up of the physical address space by alternating between multiple memory resources of the same type. First of all, the two memory controllers of a processor are eligible in the case of the Ivy Bridge-EX based servers. The first block of the local address space segment is in the first controller, the second one in the second, the third one back in the first, etc. This principle can then be continued on the level of the four memory channels per controller, and finally on the level of the ranks within the individual memory channel.


인터리빙 기술은 보다 빨리 데이터에 접근하고자 하는 기술로, 데이터가 포함되어 있는 주소만 확인되면, 데이터가 정상적으로 읽어졌다는 정보를 확인하지 않고(그 작업은 기존 Task에 맡겨두고), 바로 다른 데이터에 접근(새로운 Task)을 시작하는 것으로 이해하면 되겠다.



Node Interleaving


Node Interleaving disables the NUMA architecture properties of the system. All operating systems supported by this platform support NUMA architectures. In most cases, you can obtain optimum performance by disabling Node Interleaving. When this option is enabled, memory addresses are interleaved across the memory installed for each processor and some workloads may experience improved performance.

IMPORTANT: Enabling Node Interleaving may impact operating system performance. Enabling Node Interleaving requires that all nodes have equal memory sizes.


과거 UMA 아키텍쳐에서는 메모리 컨트롤러가 시스템 보드의 메인 칩셋(North Bridge)에 존재 했다.

메모리 컨트롤러가 별도로 존재했기에, 시스템의 CPU North Bridge를 통해 모든 메모리 영역을 접근/사용 가능했다.


NUMA 아키텍쳐에서는 메모리 컨트롤러가 CPU 내부에 존재하여, CPU 별로 메모리가 함께 그룹되어 사용된다.

메모리 컨트롤러가 CPU 내부에 존재하기 때문에, CPU는 다른 CPU의 동의(?) 없이는 다른 CPU와 연결된 메모리 영역을 접근/사용할 수 없다.


NUMA 아키텍쳐의 메모리 접근은,

특정 CPU에 대한 자료는 연결된 메모리 그룹에 상주하기 때문에, 빠르게 접근이 가능하고, CPU가 작업 중 불필요한 I/O를 줄일 수 있다.


그러나, 단점일 수 있는 것은, 특정 CPU에 연결된 메모리 그룹에 할당된 용량만 사용이 가능하고, 특정 CPU에서 하던 작업이 다른 CPU로 이동되는 경우 메모리 데이터 역시 전반적으로 재구성(I/O) 발생된다.

또한, 동일 데이터가 여러 메모리에 중복 상주하는 이벤트가 발생할 수 있다.


Node Interleaving”은 NUMA아키텍쳐상의 메모리 Addressing UMA 아키텍쳐와 같이 변환(에뮬레이트?) 해주는 기능으로 시스템에 있는 모든 메모리를 하나의 그룹으로 구성해주는 것이다.


이 기능의 장점은 각 CPU가 다른 CPU에 연결된 메모리에 접근 가능하게 된다는 것.

(메모리를 보다 많이 사용할 수 있고(시스템에 장착된 최대 용량만큼), 또한 NUMA가 아닌 것처럼 동작한다는 것)


단점으로는, 위에 언급된 것처럼, 연산에 필요한 데이터가 직접 연결된 CPU 공간에 있다면 문제되지 않겠지만, 다른 CPU에 연결된 메모리에 존재한다면해당 CPU를 통해 메모리를 접근해야 하기 때문에, 지연이 발생하게 된다.

(해당 CPU가 작업 중이라면 더욱 그러하다. (작업 끝날때까지 기다려야 하고, 데이터를 주고 받는 동안은 해당 CPU는 다른 작업을 못한다. 그냥 접근하는 것이 아니라, 메모리를 관리하는 CPU가 자료를 찾아 필요한 CPU QPI를 통해 전달해주는 형태로 동작하기 때문. CPU가 워낙 빠르고, QPI 역시 빠르기 때문에 인지할 수 없을지라도, 컴퓨터는 인지하겠 ... 쿨럭 ...) 따라서, 이러한 작업(다른 CPU에 연결된 메모리에 들어있는 데이터 요청)이 많아지면 CPU가 본연의 기능(연산)이 아니라 데이터 찾는 역할을 하느라 성능에 영향을 줄 수 있다는 것이겠다.





참고자료

Configuring and using DDR3 memory with HP ProLiant Gen8 Servers
http://h20195.www2.hp.com/v2/getpdf.aspx/4AA5-1046ENW.pdf


Understanding Non-Uniform Memory Access/Architectures (NUMA)
https://www.sqlskills.com/blogs/jonathan/understanding-non-uniform-memory-accessarchitectures-numa/


Memory Interleave for Increased Memory Access Efficiency
http://192.240.0.102/global/services/computing/server/unix/technology/performance/p-interleave.html


WP-Memory performance of Xeon E7-8800 / 4800 v2 (Ivy Bridge-EX) based systems
http://globalsp.ts.fujitsu.com/dmsp/Publications/public/wp-ivy-bridge-ex-memory-performance-ww-en.pdf

반응형