메모리 인터리빙: 뱅크 병렬 접근으로 대역폭 확보하기

메모리 인터리빙의 주소 매핑 방식과 뱅크 충돌, 성능 제약을 정리하고 CPU·DRAM·GPU·CXL 환경에서의 활용을 다룬다.

2026-08-14 · 최초 발행 2026-01-05

연속 주소를 여러 뱅크로 나누는 이유

메모리 인터리빙은 물리 메모리를 독립적인 여러 뱅크로 나누고, 연속된 주소를 서로 다른 뱅크에 배치하는 구조다. 여러 뱅크가 동시에 읽기와 쓰기를 수행할 수 있으므로 메모리 대역폭을 높이고 CPU의 메모리 접근 대기 시간을 줄이는 데 쓰인다.

메모리 뱅크는 독립적으로 동작 가능한 메모리 모듈 단위다. 뱅크 수는 일반적으로 2의 제곱수인 2, 4, 8, 16개 등으로 구성하며, 각 뱅크는 개별 읽기·쓰기 요청을 처리한다.

주소 비트가 결정하는 배치 방식

저차 인터리빙은 주소의 하위 비트를 뱅크 선택에 사용한다. 순차적으로 주소를 읽을 때 요청이 서로 다른 뱅크로 분산되므로 캐시 라인 로딩이나 순차 데이터 처리에 맞는다.

주소 0 → 뱅크 0
주소 1 → 뱅크 1
주소 2 → 뱅크 2
주소 3 → 뱅크 3
주소 4 → 뱅크 0
주소 5 → 뱅크 1

고차 인터리빙은 상위 비트로 뱅크를 고른다. 연속 메모리 블록이 같은 뱅크에 놓이므로 대용량 블록 전송이나 특정 메모리 영역을 분리하는 경우에 사용할 수 있다.

주소 0-1023 → 뱅크 0
주소 1024-2047 → 뱅크 1
주소 2048-3071 → 뱅크 2
주소 3072-4095 → 뱅크 3
고차 인터리빙주소 블록 0-N뱅크 0주소 블록 N+1-2N뱅크 1주소 블록 2N+1-3N뱅크 2주소 블록 3N+1-4N뱅크 3저차 인터리빙연속 주소뱅크 0뱅크 1뱅크 2뱅크 3

병렬성은 충돌이 없을 때 가장 잘 드러난다

여러 메모리 요청을 병렬로 처리하면 연속 접근을 오버랩할 수 있다. N개 뱅크를 사용하면 이론상 대역폭은 N배까지 향상될 수 있다. 총 대역폭은 단일 뱅크 대역폭에 뱅크 수를 곱한 값으로 표현한다.

다만 같은 뱅크에 동시에 접근하려는 요청은 직렬화된다. 저차 인터리빙은 순차 접근에서 이런 뱅크 충돌을 줄이는 데 유리하다. 메모리 컨트롤러는 요청을 재배치하고 중재하지만, 이 과정 자체의 오버헤드도 실제 성능에 영향을 준다.

실제 효율은 뱅크 충돌 없는 접근 비율에 100%를 곱해 계산할 수 있고, 평균 동시 활성 뱅크 수도 병렬도를 판단하는 기준이 된다. 불규칙한 메모리 접근은 인터리빙 효율을 낮출 수 있다.

단일 뱅크: 1.0GB/s
4-뱅크 인터리빙: 3.2GB/s (이론상 4.0GB/s의 80%)
8-뱅크 인터리빙: 6.4GB/s (이론상 8.0GB/s의 80%)

주소에서 뱅크 번호를 꺼내는 구조

인터리빙은 메모리 주소의 특정 비트 조합으로 뱅크를 결정한다. 뱅크 번호는 주소를 뱅크 수로 나눈 나머지, 즉 주소 mod 뱅크 수로도 표현할 수 있다.

4-뱅크 저차 인터리빙에서는 하위 2비트가 뱅크 선택에 쓰인다.

메모리 주소: [Tag | Bank | Offset]
- Bank: 하위 2비트 (00, 01, 10, 11)
- Offset: 뱅크 내 주소
- Tag: 상위 주소 비트

주소는 뱅크 선택 비트와 오프셋 비트로 분할된다. 전자는 접근할 뱅크를, 후자는 해당 뱅크 내부의 주소를 결정한다.

메모리 주소비트 분할뱅크 선택 비트오프셋 비트뱅크 선택뱅크 주소 계산메모리 접근

캐시부터 CXL 메모리 풀링까지

CPU 캐시 시스템에서는 연속된 캐시 라인을 여러 뱅크에서 병렬로 로드하고, 다중 포트 캐시의 동시 접근을 지원한다. 대용량 L3 캐시도 인터리빙으로 대역폭을 확보한다.

DRAM 모듈에서는 DDR SDRAM의 채널 및 뱅크 인터리빙을 함께 활용할 수 있다. 다중 채널 수준의 인터리빙과 메모리 Rank 간 인터리빙도 이 구조의 적용 범위다.

GPU 메모리는 GDDR/HBM에서 광범위하게 인터리빙을 적용한다. 수백 개의 메모리 뱅크를 병렬로 운용하며, 그래픽 데이터와 텍스처 접근을 효율적으로 로드한다.

3D 적층 메모리의 HBM은 수직 적층 구조에서 극단적 인터리빙을 사용한다. TSV(Through-Silicon Via)는 뱅크 간 초고속 연결을 제공하고, 채널은 1024비트 이상의 광폭 메모리 버스로 확장된다.

AI 가속기에서는 행렬 연산에 맞춘 인터리빙 패턴, 연속 데이터 스트림의 병렬 로딩, 프로그래머블한 스크래치패드 메모리 제어가 활용된다. CXL(Compute Express Link) 메모리 확장에서는 메모리 풀링의 인터리빙, 분산 메모리 뱅크의 논리적 통합, 뱅크별 QoS 제어가 대상이 된다.

설계에서 함께 검토할 제약

뱅크 수를 늘리면 병렬성은 커지지만 하드웨어와 컨트롤러 중재 로직은 복잡해진다. 따라서 애플리케이션의 메모리 접근 특성과 비용·성능 균형을 함께 봐야 한다.

뱅크 내부 타이밍도 제약 조건이다. tRCD(Row to Column Delay)는 행 활성화 지연, tRP(Row Precharge time)는 뱅크 비활성화 시간, tRAS(Row Active time)는 최소 행 활성 시간을 뜻한다.

전력 관리에서는 뱅크를 독립적으로 제어해 사용하지 않는 뱅크의 전력을 차단할 수 있다. 활성 뱅크 수에 비례하는 동적 전력과 저전력 대기 모드 전환도 설계 대상이다.

메모리 인터리빙메모리 뱅크컴퓨터구조DRAM대역폭