메모리 인터리빙이 무엇일까?

박승우·2024년 6월 14일

자 마흔 여덟 번째 키워드인 '메모리 인터리빙'을 알아 볼 것이다.

OOP 개발 원칙이 끝나고 컴퓨터 이론으로 다시 돌아 왔는데 이론 중심으로 알아보았다.

메모리 인터리빙이 뭐에요

메모리 인터리빙(Memory Interleaving) 은 메모리 시스템의 효율성을 극대화하기 위해 데이터를 여러 메모리 뱅크에 분산시켜 병렬로 접근할 수 있게 하는 기법이다.
CPU의 메모리 접근 대기 시간을 줄이고, 시스템의 전반적인 성능을 향상시킨다.

메모리 인터리빙의 메커니즘

메모리 인터리빙은 기본적으로 메모리를 여러 개의 뱅크로 나누고, 연속적인 메모리 주소를 순차적으로 다른 뱅크에 할당함으로써 동작한다. 이렇게 하면, CPU가 하나의 뱅크에서 데이터를 읽거나 쓸 때 다른 뱅크에서 동시에 다른 데이터를 준비할 수 있다.

1. 뱅크 (Bank)

메모리를 여러 개의 독립적인 뱅크로 나누는 것이 인터리빙의 핵심이다. 각 뱅크는 독립적으로 동작할 수 있으며, 동시에 여러 뱅크에 접근할 수 있도록 하여 병렬 처리를 가능하게 한다.

2. 주소 매핑 (Address Mapping)

메모리 주소를 각 뱅크에 어떻게 배분할지를 결정하는 방식이다. 주소 매핑은 주로 두 가지 방식으로 나뉜다.

  • 저차원 인터리빙 (Low-order Interleaving): 주소의 하위 비트를 사용하여 뱅크를 선택합니다.
  • 고차원 인터리빙 (High-order Interleaving): 주소의 상위 비트를 사용하여 뱅크를 선택합니다.

메모리 인터리빙 방식

1. 저차원 인터리빙 (Low-order Interleaving)

저차원 인터리빙은 메모리 주소의 하위 비트를 이용해 뱅크를 선택하는 방식이다.
예를 들어, 4-way 인터리빙에서는 2비트를 사용하여 뱅크를 결정한다. 주소의 하위 2비트를 이용하여 뱅크를 선택하는 예시는 다음과 같다.

주소 0: 0b00 -> 뱅크 0
주소 1: 0b01 -> 뱅크 1
주소 2: 0b10 -> 뱅크 2
주소 3: 0b11 -> 뱅크 3
주소 4: 0b00 -> 뱅크 0
주소 5: 0b01 -> 뱅크 1
(계속 반복)

이 방식의 장점은 연속적인 메모리 접근이 여러 뱅크에 분산되므로 병렬 처리가 용이하다는 것이다.

2. 고차원 인터리빙 (High-order Interleaving)

고차원 인터리빙은 메모리 주소의 상위 비트를 이용해 뱅크를 선택하는 방식이다. 이 방식은 특정 접근 패턴에 유리할 수 있지만, 저차원 인터리빙보다 더 복잡한 하드웨어 설계를 요구한다.

구체적인 예시

4-way 인터리빙 시스템
4개의 메모리 뱅크가 있고, 각 뱅크의 크기가 1KB인 시스템을 가정한다면 아래와 같다.

메모리 주소 매핑

주소 0~3: 각각 뱅크 0, 1, 2, 3에 할당
주소 4~7: 각각 뱅크 0, 1, 2, 3에 할당
이런 식으로 계속 순환

CPU 접근 시나리오

CPU가 주소 0의 데이터를 읽을 때, 뱅크 0에서 데이터를 가져온다.
CPU가 다음 주소 1의 데이터를 읽을 때, 뱅크 1에서 데이터를 가져온다.
동시에, 뱅크 0은 다음 주소 4의 데이터를 준비할 수 있다.

이 과정에서 CPU는 각기 다른 뱅크에 순차적으로 접근하므로, 병렬 처리가 가능해진다.

메모리 인터리빙의 이점과 한계

이점

  1. 성능 향상
    여러 뱅크에 병렬로 접근할 수 있어 데이터 전송 속도가 향상된다.
    CPU의 메모리 접근 대기 시간이 줄어든다.

  2. 병목 현상 감소
    특정 뱅크에 집중되지 않고, 메모리 접근이 분산된다.
    결과적으로 특정 메모리 영역의 병목 현상을 줄일 수 있다.

한계

  1. 설계 복잡성
    메모리 컨트롤러의 설계가 복잡해지고, 추가적인 하드웨어 자원이 필요하다.
    주소 매핑과 데이터 분산을 위한 로직이 추가된다.

  2. 효율성 저하 가능성
    특정 접근 패턴에서는 인터리빙의 장점이 감소할 수 있다.
    예를 들어, 순차적인 접근이 아닌 임의 접근 패턴에서는 인터리빙이 큰 이점을 제공하지 못할 수 있다.

실제 활용 예시

고성능 컴퓨팅 시스템, 서버, 데이터 센터 등에서 메모리 인터리빙은 중요한 역할을 한다고 한다.
특히 대규모 데이터 처리와 빠른 메모리 접근이 필요한 응용 프로그램에서 메모리 인터리빙을 통해 성능을 최적화할 수 있다.

결론 - 느낀 점

몸은 이해했는데 머리가 이해하지 못한 키워드가 메모리 인터리빙 이었다.

"아니 이걸 그래서 어떻게 어디서 써야 최고의 효율이 나오는데?" 라는 의문을 주었는데,
각종 자료나 정리해둔 사이트를 보며 이해했다.

많은 기술을 접할 수록 머리가 터지는 기분을 느낀다....

profile
게임을 좋아하는 사람 입니다!

0개의 댓글