Memory Interleaving (메모리 인터리빙)
Memory interleaving,
wikipedia 영문판에는 Interleaved memory 라고 되어 있고, 한글판에는 memory interleaving 이라고 되어 있다. 다소 용어에는 차이가 있지만 결론적으로 memory 를 interleaving 기법을 사용하여 성능을 향상시키는 방법을 의미한다.
일반적으로 메모리상에 존재하는 데이터에 접근할 때 메모리를 순차적으로 참조한다. 보통은 데이터가 메모리상에 올라갈 때는 순차적으로 올라가기 때문이다. 하지만 CPU가 한 워드(word)를 메모리상에서 읽어와서 조작하는 동안 해당 메모리는 접근할 수 없는 문제가 발생한다.
[No interleaving]
No-interleaving
위와 같이 No interleaving 상태에서는 1을 읽고 처리하는 동안 2에 접근할 수 없다.
이런 문제를 해결하기 위해서 Interleaving 이라는 기법이 도입된다. 서로 다른 memory bank에 번갈아 가며 연속적인 주소를 부여함으로써 1에 접근하여 처리하는 동안에도 다음 메모리 주소에 접근할 수 있게 된다.
[Interleaving]
Interleaving
이는 마치 memory 대역폭이 늘어나는 것과 같은 효과를 보여준다.
인터리빙의 종류에는 다음과 같은 것들이 있다.
상위 인터리빙 (High-Order Interleaving)
하위 인터리빙 (Low-Order Interleaving)
혼합 인터리빙 (High-Low-Order Interleaving)
상위 인터리빙 :
메모리 주소의 상위 비트들에 의해 모듈이 선택되고, 하위 비트들은 각 모듈 내의 기억 장소의 주소를 나타낸다.
장점 : 한 모듈에서 에러가 발생해도 해당 모듈만 영향을 받음
단점 : 동시 access 를 통한 성능 향상 어려움
하위 인터리빙 :
하위 비트들에 의해 모듈이 선택되고, 상위 비트들은 각 모듈 내의 주소를 나타낸다.
장점 : 다수의 모듈이 동시 동작 가능
단점 : 새로운 메모리 뱅크 추가시 전체에 영향을 주게됨
혼합 인터리빙 :
메모리 뱅크를 몇 개의 모듈로 나누어 구성. 메모리 뱅크 선택은 상위 인터리빙 방식을 따르지만 뱅크 선택 후 뱅크 내 모듈 간에는 하위 인터리빙 방식을 따름