메모리 인터리빙
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
메모리 인터리빙은 메인 메모리 접근 속도를 향상시키기 위한 기술이다. 여러 DRAM 칩을 묶어 메모리 뱅크를 구성하고, 메모리 컨트롤러를 통해 뱅크들을 인터리빙되도록 배치한다. 데이터는 페이지 단위로 저장되며, 각 뱅크는 행 버퍼를 가지고 있어 페이지 접근 속도에 영향을 미친다. 행 버퍼 충돌 문제를 해결하기 위해 순열 기반 인터리빙 방식이 사용되며, 이는 AMD, 인텔, 엔비디아 등 다양한 상용 마이크로프로세서에서 활용된다. 2중 인터리빙은 짝수 및 홀수 주소를 가진 메모리를 별도 뱅크에 배치하여 동시 접근을 가능하게 한다.
더 읽어볼만한 페이지
메모리 인터리빙 | |
---|---|
개요 | |
명칭 | 메모리 인터리빙 |
유형 | 컴퓨터 기억 장치 아키텍처 |
목적 | 메모리 접근 속도 향상 |
원리 | 주소 공간 분할 및 병렬 접근 |
설명 | |
정의 | 컴퓨터 메모리 시스템에서 데이터 접근 속도를 향상시키기 위해 사용되는 기술 |
작동 방식 | 메모리 주소 공간을 여러 개의 모듈 또는 뱅크로 분할 연속적인 메모리 주소를 번갈아 가며 다른 뱅크에 할당 CPU가 연속된 주소에 접근할 때, 각기 다른 뱅크에 병렬적으로 접근하여 전체적인 메모리 접근 시간 단축 |
예시 | 4방향 인터리빙 (4개의 뱅크 사용) CPU가 주소 0, 1, 2, 3에 순차적으로 접근할 때, 각 주소는 서로 다른 메모리 뱅크에 위치하여 동시에 접근 가능 |
장점 | 메모리 대역폭 활용도 향상 캐시 미스와 페이지 폴트 감소 전반적인 시스템 성능 향상 |
단점 | 구현 복잡도 증가 특정 접근 패턴에서 성능 향상 효과 미미 |
활용 분야 | |
주요 사용처 | 고성능 컴퓨팅 시스템 그래픽 카드 메인보드 |
적용 예시 | 멀티 코어 프로세서 기반 시스템 대용량 데이터 처리 시스템 실시간 데이터 분석 시스템 |
추가 정보 | |
관련 용어 | 뱅크 (Bank) 메모리 컨트롤러 (Memory controller) 병렬 처리 (Parallel processing) |
참고 사항 | 메모리 인터리빙은 메모리 접근 패턴과 시스템 구조에 따라 성능 향상 효과가 달라질 수 있음 |
2. 역사
인터리빙 메모리에 대한 초기 연구는 1960년대와 1970년대에 IBM 7030 스트레치 컴퓨터와 관련하여 IBM에서 수행되었으며,[7][4] 이후 수십 년 동안 설계, 유연성 및 성능을 개선하여 현대적인 구현을 생산하기 위한 개발이 진행되었다.
인터리빙 메모리에서는 메모리 주소가 각 메모리 뱅크에 차례로 할당된다. 예를 들어, 2개의 메모리 뱅크가 있는 인터리빙 시스템에서 (워드 어드레싱 메모리라고 가정) 논리 주소 32가 뱅크 0에 속하면 논리 주소 33은 뱅크 1에 속하고, 논리 주소 34는 뱅크 0에 속하는 식이다. n개의 뱅크가 있고 메모리 위치 i가 뱅크 i mod n에 있으면 인터리빙 메모리를 ''n-웨이 인터리빙''이라고 한다.
3. 인터리빙 DRAM
인터리빙 메모리는 연속적인 읽기(멀티미디어 및 프로그램 실행에서 흔히 발생) 및 연속적인 쓰기(스토리지 또는 통신 버퍼를 채울 때 자주 사용)를 통해 동일한 뱅크를 반복해서 사용하는 대신 실제로 각 메모리 뱅크를 차례로 사용하게 한다. 이로 인해 각 뱅크가 읽기 및 쓰기 사이에 최소 대기 시간을 갖기 때문에 메모리 처리량이 상당히 높아진다.
메모리 주소 지정 방식은 이미 캐시된 메모리 위치의 접근 시간에 영향을 미치지 않으며, DRAM에서 검색해야 하는 메모리 위치에만 영향을 미친다.
3. 1. 행 버퍼 충돌 문제와 해결
메인 메모리(RAM)는 일반적으로 여러 개의 DRAM 메모리 칩으로 구성되며, 여러 개의 칩을 함께 묶어 메모리 뱅크를 형성할 수 있다. DRAM의 데이터는 페이지 단위로 저장되며, 각 DRAM 뱅크는 뱅크 내의 모든 페이지에 접근하기 위한 캐시 역할을 하는 행 버퍼를 가지고 있다.[1] DRAM 뱅크의 페이지를 읽으려면 먼저 행 버퍼에 로드해야 한다. 페이지가 행 버퍼에서 즉시 읽히면(행 버퍼 히트), 한 메모리 사이클 내에 가장 짧은 메모리 접근 지연 시간을 갖는다.
행 버퍼 미스(row-buffer miss)라고도 하는 행 버퍼 충돌은 새 페이지를 읽기 전에 행 버퍼에 로드해야 하므로 지연 시간이 더 길어진다. 행 버퍼 미스는 동일한 뱅크의 서로 다른 메모리 페이지에 대한 접근 요청이 처리될 때 발생한다. 행 버퍼 충돌은 메모리 접근에 상당한 지연을 발생시키지만,[1] 서로 다른 뱅크에 대한 메모리 접근은 높은 처리량으로 병렬 진행이 가능하다.
행 버퍼 충돌 문제는 효과적인 솔루션과 함께 잘 연구되어 왔다.[1] 기존의 메모리 인터리빙 방식은 캐시 레벨에서 메모리 주소 공간으로 주소 매핑 충돌을 전파하여 메모리 뱅크에서 행 버퍼 미스를 발생시킨다는 연구 결과가 있다.[1] 순열 기반 인터리빙 메모리 방식은 사소한 마이크로아키텍처 비용으로 이 문제를 해결했다.[1] 썬 마이크로시스템즈는 자사 제품에 이 순열 인터리빙 방식을 빠르게 채택했으며,[2] 이 특허가 없는 방법은 임베디드 시스템, 노트북, 데스크톱 및 엔터프라이즈 서버용 AMD, 인텔 및 엔비디아와 같은 많은 상용 마이크로프로세서에서 찾아볼 수 있다.[3]
3. 2. 다양한 시스템에서의 활용
메인 메모리(RAM)는 보통 여러 개의 DRAM 메모리 칩으로 구성되며, 여러 개의 칩을 함께 묶어 메모리 뱅크를 형성할 수 있다. 인터리빙을 지원하는 메모리 컨트롤러를 사용하면 이러한 메모리 뱅크를 인터리빙되도록 배치할 수 있다.
DRAM의 데이터는 페이지 단위로 저장된다. 각 DRAM 뱅크는 뱅크 내의 모든 페이지에 접근하기 위한 캐시 역할을 하는 행 버퍼를 가지고 있다. DRAM 뱅크의 페이지를 읽기 전에 먼저 행 버퍼에 로드한다. 페이지가 행 버퍼에서 즉시 읽히면(또는 행 버퍼 히트), 한 메모리 사이클 내에 가장 짧은 메모리 접근 지연 시간을 갖는다. 행 버퍼 미스(row-buffer miss)라고도 하는 행 버퍼 충돌이 발생하면 새 페이지를 읽기 전에 행 버퍼에 로드해야 하므로 더 느리다. 행 버퍼 미스는 동일한 뱅크의 서로 다른 메모리 페이지에 대한 접근 요청이 처리될 때 발생한다. 행 버퍼 충돌은 메모리 접근에 상당한 지연을 발생시킨다. 반대로, 서로 다른 뱅크에 대한 메모리 접근은 높은 처리량으로 병렬로 진행될 수 있다.
행 버퍼 충돌 문제는 효과적인 해결책과 함께 잘 연구되어 왔다.[1] 행 버퍼의 크기는 일반적으로 운영 체제에서 관리하는 메모리 페이지의 크기이다. 행 버퍼 충돌 또는 미스는 동일한 메모리 뱅크 내의 서로 다른 페이지에 대한 일련의 접근에서 발생한다. 연구[1]에 따르면 기존의 메모리 인터리빙 방식은 캐시 레벨에서 메모리 주소 공간으로 주소 매핑 충돌을 전파하여 메모리 뱅크에서 행 버퍼 미스를 발생시킨다. 순열 기반 인터리빙 메모리 방식은 사소한 마이크로아키텍처 비용으로 이 문제를 해결했다.[1] 썬 마이크로시스템즈(Sun Microsystems)는 자사 제품에 이 순열 인터리빙 방식을 빠르게 채택했다.[2] 이 특허가 없는 방법은 임베디드 시스템, 노트북, 데스크톱 및 엔터프라이즈 서버용 AMD, 인텔 및 엔비디아(NVIDIA)와 같은 많은 상용 마이크로프로세서에서 찾아볼 수 있다.[3]
기존 (플랫) 레이아웃에서 메모리 뱅크는 메모리 주소의 연속된 블록을 할당받을 수 있는데, 이는 메모리 컨트롤러에 매우 간단하며, 인터리빙을 통해 얻는 성능 수준과 비교했을 때 완전히 임의의 접근 시나리오에서 동일한 성능을 제공한다. 그러나 실제로는 참조 지역성으로 인해 메모리 읽기가 거의 임의적이지 않으며, 가까이 있는 접근에 대한 최적화는 인터리빙 레이아웃에서 훨씬 더 나은 성능을 제공한다.
메모리 주소 지정 방식은 이미 캐시된 메모리 위치의 접근 시간에 영향을 미치지 않으며, DRAM에서 검색해야 하는 메모리 위치에만 영향을 미친다.
4. 2중 인터리빙
2중 인터리빙에서는 홀수 번지 주소를 가진 메모리를 하나의 뱅크에 두고, 짝수 번지 주소를 가진 메모리를 또 다른 뱅크에 둔다. 이를 통해 서로 다른 뱅크에 있는 메모리에 동시에 접근할 수 있게 된다.
5. N-웨이 인터리빙
인터리빙 메모리에서는 메모리 주소가 각 메모리 뱅크에 차례로 할당된다. 예를 들어, 2개의 메모리 뱅크가 있는 인터리빙 시스템에서 (워드 어드레싱 메모리라고 가정), 논리 주소 32가 뱅크 0에 속하면 논리 주소 33은 뱅크 1에 속하고, 논리 주소 34는 뱅크 0에 속하는 식이다. `n`개의 뱅크가 있고 메모리 위치 `i`가 뱅크 `i mod n`에 있으면 인터리빙 메모리를 ''n-웨이 인터리빙''이라고 한다.
인터리빙 메모리는 연속적인 읽기(멀티미디어 및 프로그램 실행에서 흔히 발생) 및 연속적인 쓰기(스토리지 또는 통신 버퍼를 채울 때 자주 사용)를 통해 동일한 뱅크를 반복해서 사용하는 대신 실제로 각 메모리 뱅크를 차례로 사용하게 한다. 이로 인해 각 뱅크가 읽기 및 쓰기 사이에 최소 대기 시간을 갖기 때문에 메모리 처리량이 상당히 높아진다.
참조
[1]
학회
A Permutation-based Page Interleaving Scheme to Reduce Row-buffer Conflicts and Exploit Data Locality
https://ieeexplore.i[...]
[2]
웹사이트
Sun letter to the Director of the Technology Transfer Office of the College of William and Mary
http://web.cse.ohio-[...]
2005-07-15
[3]
웹사이트
Professor Xiaodong Zhang Receives 2020 ACM Microarchitecture Test of Time Award
https://cse.osu.edu/[...]
2021-01-19
[4]
웹사이트
IBM Stretch (7030) — Aggressive Uniprocessor Parallelism
http://people.cs.cle[...]
clemson.edu
2013-12-07
[5]
학술지
デスクトップ・ボード ― シングル / デュアル / フレックス / トリプル・メモリー・モード
http://www.intel.com[...]
[6]
학술지
UNIXサーバ メモリインターリーブ:用語解説 : 富士通
http://primeserver.f[...]
[7]
웹인용
IBM Stretch (7030) — Aggressive Uniprocessor Parallelism
http://people.cs.cle[...]
clemson.edu
2013-12-07
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com