인터리브 메모리
Interleaved memory![]() |
컴퓨팅에서 인터리브 메모리(interleaved memory)는 메모리 뱅크에 메모리 주소를 균등하게 분산하여 DRAM(dynamic random-access memory) 또는 코어 메모리의 상대적으로 느린 속도를 보상하는 설계입니다.그런 방식으로 연속적인 메모리 읽기 및 쓰기는 각 메모리 뱅크를 차례로 사용하므로 메모리 뱅크가 작동 준비를 위해 대기하는 시간이 줄어 메모리 처리량이 증가합니다.
주로 인터리브 메모리가 메인 메모리와 메모리 컨트롤러 사이에 더 많은 채널을 추가하지 않기 때문에 다중 채널 메모리 아키텍처와는 다릅니다.그러나 채널 인터리빙(channel interleaving)도 가능합니다(예: freescalei).MX6 프로세서, 두 채널 간에 인터리빙이 가능합니다.[citation needed]
개요
인터리브 메모리를 사용하면 메모리 주소가 각 메모리 뱅크에 차례로 할당됩니다.예를 들어, 두 개의 메모리 뱅크가 있는 인터리브 시스템(워드 어드레스 가능 메모리로 가정)에서 논리 주소 32가 뱅크 0에 속한다면 논리 주소 33은 뱅크 1에 속하고 논리 주소 34는 뱅크 0에 속합니다.인터리빙 메모리는 뱅크가 n개이고 메모리 위치가 뱅크 모드에 있을 때 n-웨이 인터리빙이라고 합니다.

인터리브 메모리는 멀티미디어 및 프로그램 실행 시 공통적으로 사용되는 연속 읽기 및 연속 쓰기(스토리지 또는 통신 버퍼를 채울 때 자주 사용되는)를 동일한 메모리 뱅크를 반복적으로 사용하는 대신 실제로 각 메모리 뱅크를 차례로 사용하게 됩니다.따라서 각 뱅크에서 읽기와 쓰기 사이에 대기 시간이 최소화되므로 메모리 처리량이 크게 향상됩니다.
인터리브 DRAM
메인 메모리(Random-access memory, RAM)는 일반적으로 DRAM 메모리 칩 모음으로 구성되며, 여기서 다수의 칩이 함께 그룹화되어 메모리 뱅크를 형성할 수 있습니다.그러면 인터리빙을 지원하는 메모리 컨트롤러를 사용하면 메모리 뱅크가 인터리빙되도록 이러한 메모리 뱅크를 배치할 수 있습니다.
DRAM의 데이터는 페이지 단위로 저장됩니다.각 DRAM 뱅크에는 해당 뱅크의 모든 페이지에 액세스하기 위한 캐시 역할을 하는 행 버퍼가 있습니다.DRAM 뱅크의 페이지를 읽기 전에 먼저 행 버퍼에 로드됩니다.페이지를 행 버퍼(또는 행 버퍼 히트)에서 즉시 읽어오면 한 번의 메모리 주기 중 가장 짧은 메모리 액세스 지연 시간을 갖게 됩니다.행 버퍼 충돌이라고도 하는 행 버퍼 누락인 경우, 새 페이지를 읽기 전에 행 버퍼에 로드해야 하므로 속도가 느립니다.동일한 뱅크의 서로 다른 메모리 페이지에 있는 액세스 요청이 서비스됨에 따라 행 버퍼 누락이 발생합니다.행 버퍼 충돌은 메모리 액세스에 상당한 지연을 초래합니다.반대로, 다른 뱅크에 대한 메모리 액세스는 높은 처리량과 함께 병렬적으로 진행될 수 있습니다.
로우 버퍼 충돌 문제는 효과적인 해결책으로 잘 연구되어 왔습니다.[1]행 버퍼의 크기는 일반적으로 운영 체제에서 관리하는 메모리 페이지의 크기입니다.행 버퍼 충돌 또는 누락은 동일한 메모리 뱅크의 다른 페이지에 대한 일련의 액세스에서 발생합니다.이 연구는[1] 기존의 메모리 인터리빙 방법이 캐시 수준의 주소 매핑 충돌을 메모리 주소 공간으로 전파하여 메모리 뱅크에서 행 버퍼 미스를 유발한다는 것을 보여줍니다.순열 기반 인터리브 메모리 방식은 사소한 마이크로아키텍처 비용으로 문제를 해결했습니다.[1]썬 마이크로시스템즈는 이를 제품에 빠르게 퍼뮤테이션 인터리빙 방식을 채택했습니다.[2]이 특허가 없는 방법은 AMD, Intel 및 NVIDIA와 같은 임베디드 시스템, 노트북, 데스크톱 및 엔터프라이즈 서버용 많은 상용 마이크로프로세서에서 찾을 수 있습니다.[3]
기존의 (플랫) 레이아웃에서, 메모리 뱅크는 연속된 블록의 메모리 주소를 할당받을 수 있는데, 이는 메모리 컨트롤러의 경우 매우 간단하며 인터리빙을 통해 달성된 성능 수준과 비교할 때 완전 랜덤 액세스 시나리오에서 동등한 성능을 제공합니다.그러나 실제로 메모리 읽기는 참조의 지역성 때문에 무작위적인 경우가 드물며, 밀접한 접근을 위해 최적화하는 것이 인터리브 레이아웃에서 훨씬 더 나은 성능을 제공합니다.
메모리 주소 지정 방식은 이미 캐시된 메모리 위치에 대한 액세스 시간에 영향을 주지 않으며 DRAM에서 검색해야 하는 메모리 위치에만 영향을 미칩니다.
역사
인터리브 메모리에 대한 초기 연구는 IBM 7030 Stretch 컴퓨터와 관련하여 60년대와 70년대에 IBM에서 수행되었지만,[4] 현대적인 구현을 위해 설계, 유연성 및 성능을 개선하기 위해 수십 년 동안 개발이 계속되었습니다.
참고 항목
참고문헌
- ^ a b c Zhao Zhang, Zhichun Zhu, and Xiaodong Zhang (2000). A Permutation-based Page Interleaving Scheme to Reduce Row-buffer Conflicts and Exploit Data Locality. MICRO' 33.
{{cite conference}}
: CS1 유지 : 여러 이름 : 저자 목록 (링크) - ^ "Sun letter to the Director of the Technology Transfer Office of the College of William and Mary" (PDF). July 15, 2005.
- ^ "Professor Xiaodong Zhang Receives 2020 ACM Microarchitecture Test of Time Award". Department of Computer Science and Engineering, College of Engineering, Ohio State University. January 19, 2021.
- ^ Mark Smotherman (July 2010). "IBM Stretch (7030) — Aggressive Uniprocessor Parallelism". clemson.edu. Retrieved 2013-12-07.