램 듀얼채널 구성에 대한 기초 개념

램 듀얼채널, 메모리 듀얼채널.. 많이 들어봤다. 대략 어떤 것인지는 아는데 사실 내부적으로 어떤 원리가 숨어있는지 구체적으로 이해하기 위해 이 글을 쓴다. 


인터넷에서 정보를 아무리 찾아봐도 메인보드에 램을 꼽는 방법을 설명한 글만 있는 것 같아서 비록 부족한 내용이지만 몇자 끄적거려 본다.


우선 램을 이해하기 위해 알고있어야하는 용어들이 있다. 메모리 채널(memory channel), 메모리 뱅크(memory bank), 메모리 랭크(memory rank)가 그것이다. 


메모리 채널(Memory Channel)

메모리 채널은 메모리와 CPU의 캐시 간에 데이터 전달 통로다. 비유하자면 자동차 도로의 하나의 차로가 하나의 채널이라고 생각하면 된다. 자동차 하나하나를 데이터로 생각하면 1차로 보다는 2차로를 사용할 때 시간당 데이터 전달 양을 많이 할 수 있다. 이것을 대역폭(bandwidth)라고 한다. 2개의 채널을 사용하게 되면 1개의 채널을 사용할 때 보다 대역폭이 2배로 커지므로 캐시에 데이터를 더 많이 전달할 수 있다. 

그렇다고 데이터 전송 속도가 빨라지는 것은 아니므로 대역폭 증가가 처리속도 증가를 보장하지는 않는다. 1차로로 충분한 도로를 2차로로 바꿔도 목적지까지 빨리갈 수 있는 것이 아니기 때문이다.


메인보드마다 다르겠지만 메인보드에 메모리 슬롯을 위와 같은 형태를 이룬다. 물리적으로 채널1과 채널2가 구분되는데 보통 채널마다 2개의 색으로 구분해 놓는다. 보드마다 다르므로 참고만 하자.


그리고 우리는 보통 같은 색에는 동일한 제품의 동일한 사양의 메모리를 꼽는 것으로 듀얼채널을 구성할 수 있다고 알고 있다.


듀얼채널 구성듀얼채널 구성

메모리의 데이터는 채널을 거쳐 캐시로 전달된다. 메모리 뱅크1과 메모리 뱅크 2에 동일 메모리를 꼽아놓았다면 듀얼 채널이 구성되어 채널 1, 채널 2를 동시에 사용할 수 있다. 대역폭이 2배가 되는 것이다. 

이 경우 메모리에 데이터가 저장되는 방식은 메모리 뱅크 1에 짝수 번지 주소, 메모리 뱅크 2에 홀수번지 주소 이렇게 번갈아 가면서 저장이 된다. 


만약 메모리 뱅크 1과 메모리 뱅크 2에 다른 사양의 메모리를 꼽아 놓았다면 다음 그림과 같이 될 것이다.(추정)

싱글채널? 추정싱글채널? 추정

(싱글채널로 동작한다는 것은 알고 있지만 채널1과 채널2가 같이 쓰이는지 아니면 정말로 하나의 채널만 쓰이는지는 정확하게는 모른다. )


사실 싱글채널로 동작할 때 메모리 컨트롤러가 어떻게 동작하는 지에 대한 것은 추정이다. CPU회사들마다 아키텍쳐가 달라서 그런지 모범이 되는 정보에 대한 것은 찾을 수는 없었다. 따라서 2GB와 4GB의 메모리를 위와 같이 꼽아놓았을 때 두 채널을 같이 사용하면서 한쪽 채널이 활성화일 때 다른 쪽 채널이 사용되는 방식인지, 아에 하나의 채널만 사용하는지에 대한 것은 좀 더 조사해보아야 겠다.


확실한 것은 싱글채널은 두 채널이 동시에 사용되지 않는다는 것이다. 따라서 앞에서 말한 두 경우 말고는 없을 것 같다.


경우에 따라서 다르겠지만 실제로 듀얼과 싱글의 성능차이가 대단할 정도로 차이나는 것은 아니라고 한다. 그래도 1%의 성능이라도 더 올리고 싶다면 듀얼 채널을 사용하는 것이 맞다.


메모리 인터리빙(Memory Interleaving)

채널을 여러 개 사용하면 메모리 인터리빙이라는 기능을 통해서 한번에 미리 사용가능한 데이터를 다채널(듀얼채널)로 캐시에 전달해 놓을 수 있다. 채널1을 통해서 현재 사용하려는 데이터를 캐시에 전달했다면 채널 2를 통해서 다음에 사용할 가능성이 높은 데이터를 동시에 전달하는 것이다. 다음에 사용할 가능성이 높은 데이터는 바로 다음 주소의 데이터가 된다.

이렇게 할 수 있는 이유는 앞에서도 말했지만 듀얼 채널을 사용할 경우 메모리 뱅크 1과 메모리 뱅크 2 간에 주소 순서가 번갈아가면서 연결되기 때문이다.


아무튼 램(메모리) 듀얼채널을 사용하는 이유는 이런 효율성을 위한 것이다. 


메모리 뱅크(Memory Bank)

하나의 메모리 슬롯이라고 생각하면 된다.


메모리 랭크(Memory Rank)

메모리를 보면 1Rx8 또는 2Rx8 등과 같이 쓰여져있는데 여기서 R이 랭크(Rank)를 의미한다. 나머지 코드들에 대해서는 다음 포스팅에 설명할 기회가 있을 것이다.

노트북 메모리노트북 메모리


메모리는 여러개의 칩들이 붙어 있다. 메모리의 한쪽에만 붙어있는 경우도 있고 양쪽에 똑같이 붙어 있을 수도 있다. 


각 칩들은 4bit 또는 8bit, 16bit, .... 등의 대역폭을 갖는데 이 칩들이 모여서 64bit를 이루면 1R, 즉 하나의 랭크(Rank)를 의미한다. 하나의 채널이 64bit의 대역폭을 가지므로 1R(64bit)로 하나의 채널에 데이터를 보낼 수 있는 것이다. 


위 메모리는 1R이므로 1개의 랭크로 이루어진 메모리라는 뜻이다.


1R뒤에 x8은 칩의 bit수를 의미한다. 1Rx8이므로 하나의 칩당 8bit의 크기를 갖는다. 만약 1Rx4이라고 쓰여있다면  칩 하나당 4bit의 대역폭을 갖는다.

주의할 점은 표면상 보이는 칩의 개수가 더 적을 수도 있다는 것이다. 칩은 하나로 보이더라도 사실은 두 개의 레이어로 구성되어 있을 수도 있기 때문이다. 


2Rx8이라면 2개의 랭크를 갖는 메모리다. 칩 하나당 8bit의 대역폭을 갖으므로 하나의 레이어로 이루어진 칩들이라면 앞뒷면으로 각각 8개의 칩이 박혀있을 것이다. 


참고 : ECC(Error correcting code) 메모리의 경우는 랭크당 하나의 칩이 더 박혀있다. 패리티비트(에러 검출을 위해서 추가하는 비트)를 위한 칩인 것이다.

이 댓글을 비밀 댓글로
    • Park
    • 2019.06.19 14:12
    잘 읽었습니다, 이해하기 쉽게 정리하셨네요 :-)
    • huh
    • 2019.07.18 15:48
    관리자의 승인을 기다리고 있는 댓글입니다