메모리 인터리빙

컴퓨팅에서 인터리빙 메모리(interleaved memory)는 동적 램(DRAM) 또는 코어 메모리의 상대적으로 느린 속력을 보완하기 위해 메모리 뱅크에 메모리 주소를 고르게 분산시키는 설계이다. 이렇게 하면 연속적인 메모리 읽기 및 쓰기 작업이 각 메모리 뱅크를 차례로 사용하게 되어, 메모리 뱅크가 작업 준비를 기다리는 시간을 줄여 메모리 처리량을 높일 수 있다.

이는 다중 채널 메모리 구조와는 다르다. 주요 차이점은 인터리빙 메모리가 주기억장치와 메모리 컨트롤러 사이에 더 많은 채널을 추가하지 않는다는 점이다. 그러나 채널 인터리빙도 가능하며, 예를 들어 프리스케일 I.MX6 프로세서에서는 두 채널 간의 인터리빙이 허용된다.

 개요 
인터리빙 메모리에서는 메모리 주소가 각 메모리 뱅크에 번갈아 할당된다. 예를 들어, 두 개의 메모리 뱅크가 있는 인터리빙 시스템(워드 주소 지정 가능한 메모리라고 가정)에서 논리 주소 32가 뱅크 0에 속한다면, 논리 주소 33은 뱅크 1에, 논리 주소 34는 뱅크 0에 속하는 식으로 이어진다. 인터리빙 메모리는 개의 뱅크가 있고 메모리 위치 가 뱅크 에 있을 때 n-way 인터리빙이라고 한다.

섬네일|4개의 뱅크를 사용한 메모리 인터리빙 예시. 빨간색 뱅크는 새로고침 중이므로 사용할 수 없다.

인터리빙 메모리는 (멀티미디어와 프로그램 실행 모두에서 흔한) 연속적인 읽기 작업과 (저장 또는 통신 버퍼를 채울 때 자주 사용되는) 연속적인 쓰기 작업이 동일한 뱅크를 반복적으로 사용하는 대신 각 메모리 뱅크를 차례로 사용하도록 만든다. 이로 인해 각 뱅크가 읽기 및 쓰기 사이에 최소 대기 시간을 가지므로 메모리 처리량이 상당히 높아진다.

 인터리빙 DRAM 
주기억장치(랜덤 액세스 메모리, RAM)는 일반적으로 DRAM 메모리 칩 컬렉션으로 구성되며, 여러 칩을 함께 묶어 메모리 뱅크를 형성할 수 있다. 그런 다음 인터리빙을 지원하는 메모리 컨트롤러를 사용하여 이러한 메모리 뱅크를 인터리빙되도록 배치할 수 있다.

DRAM의 데이터는 페이지 단위로 저장된다. 각 DRAM 뱅크에는 뱅크 내의 페이지에 접근하는 캐시 역할을 하는 행 버퍼가 있다. DRAM 뱅크의 페이지를 읽기 전에 먼저 행 버퍼로 로드된다. 페이지가 행 버퍼에서 즉시 읽히면(또는 행 버퍼 히트), 한 메모리 주기에서 가장 짧은 메모리 접근 지연 시간을 갖는다. 만약 행 버퍼 미스, 즉 행 버퍼 충돌이 발생하면, 새 페이지를 읽기 전에 행 버퍼로 로드해야 하므로 더 느리다. 행 버퍼 미스는 동일한 뱅크 내의 다른 메모리 페이지에 대한 접근 요청이 처리될 때 발생한다. 행 버퍼 충돌은 메모리 접근에 상당한 지연을 초래한다. 반대로, 다른 뱅크에 대한 메모리 접근은 높은 처리량으로 병렬로 진행될 수 있다.

행 버퍼 충돌 문제는 효과적인 해결책과 함께 잘 연구되었다. 행 버퍼의 크기는 일반적으로 운영 체제에서 관리하는 메모리 페이지의 크기와 같다. 행 버퍼 충돌 또는 미스는 동일한 메모리 뱅크 내의 다른 페이지에 대한 일련의 접근에서 발생한다. 연구에 따르면 기존의 메모리 인터리빙 방식은 캐시 수준의 주소 매핑 충돌을 메모리 주소 공간으로 전파하여 메모리 뱅크에서 행 버퍼 미스를 유발할 수 있다. 순열 기반 인터리빙 메모리 방식은 사소한 마이크로아키텍처 비용으로 이 문제를 해결했다. 썬 마이크로시스템즈는 이 순열 인터리빙 방식을 자사 제품에 빠르게 채택했다. 이 특허 없는 방식은 AMD, Intel 및 엔비디아와 같은 많은 상업용 마이크로프로세서에서 임베디드 시스템, 노트북, 데스크탑 및 엔터프라이즈 서버에 사용된다.

기존의 (평면) 레이아웃에서는 메모리 뱅크에 연속적인 메모리 주소 블록을 할당할 수 있는데, 이는 메모리 컨트롤러에 매우 간단하며, 인터리빙을 통해 달성되는 성능 수준과 비교할 때 완전한 무작위 접근 시나리오에서 동일한 성능을 제공한다. 그러나 실제로는 참조 국부성으로 인해 메모리 읽기가 무작위인 경우는 드물며, 근접 접근에 대한 최적화는 인터리빙 레이아웃에서 훨씬 더 나은 성능을 제공한다.

메모리가 주소 지정되는 방식은 이미 캐시된 메모리 위치의 접근 시간에는 영향을 미치지 않으며, DRAM에서 검색해야 하는 메모리 위치에만 영향을 미친다.

 역사 
인터리빙 메모리에 대한 초기 연구는 60년대와 70년대 IBM에서 IBM 7030 스트레치 컴퓨터와 관련하여 수행되었지만, 현대적인 구현을 위해 설계, 유연성 및 성능을 향상시키기 위한 개발은 수십 년 동안 계속되었다.

 같이 보기 
 불균일 기억 장치 접근

 각주 

 외부 링크 
 Centris 650 & Quadra 800의 인터리빙 메모리에 대한 데일 애덤스
 하비 G. 크래곤의 메모리 시스템 및 파이프라인 프로세서

분류:컴퓨터 메모리
분류:메모리 관리