||1DDR2 메모리는 현재 제일 많이 쓰이는 메모리입니다. 따라서 보급된지도 꽤 많은 시간이 지났지만, DDR2 메모리 관련 글 한개 정도는 있어야 될 것 같아서 올립니다.

이 글의 내용은 예전에 올렸던 것들과 중복되는 부분이 좀 있습니다. 특히 DDR2 메모리의 특징이나 원리 같은건 100% 중복되기 때문에 빼버리고, 메모리 타이밍 설정 부분만 올렸습니다. 관심 있으신 분은 예전의 글들을 참조하시기 바랍니다.

램 타이밍 수치와 성능과의 관계
http://gigglehd.com/bbs/view.php?id=special&no=3

DDR3 메모리에서 달라진 것들, DDR3와 DDR2의 성능 비교
http://gigglehd.com/bbs/view.php?id=special&no=22

그래픽카드의 GDDR 메모리 종류와 구분
http://gigglehd.com/bbs/view.php?id=special&no=11

이 글의 출처는 www.ocer.net이고, 기글 하드웨어에서 번역했습니다.


메모리의 성능은 클럭과 타이밍에 의해 결정됩니다. 클럭이 높아도 타이밍이 나쁘다면 실제 효율은 떨어질 수밖에 없습니다. 그렇다면 어떻게 해야 클럭과 타이밍의 이상적인 타협점을 찾을 수 있을까요.

DDR2 메모리를 지원하는 AMD의 AM2 소켓 프로세서는 메모리 컨트롤러가 내장되어 있습니다. 메모리 컨트롤러 내장의 장점은 전송 레이턴시를 크게 낮춰 메모리의 작동 효율을 높일 수 있다는 것입니다. AM2의 시스템 버스는 200MHz지만 하이퍼트랜스포트 버스 클럭은 1GHz이니 DDR2-800 메모리를 충분히 사용할 수 있습니다. 싱글코어나 샘프론은 DDR2-667로도 충분하지요.

AM2 시스템에서 좋은 DDR2 메모리를 사용하는 것은 그리 쉬운 일은 아닙니다. 고클럭의 메모리를 안정적으로 작동시키기 위해 각종 셋팅들을 세심하게 조절해야 하고, 그렇지 않다면 블루 스크린의 번뇌에 시달리게 될 것입니다.

결국 안정성과 성능 중에서 해답을 찾아야 하는데, 어떻게 설정하는지 한번 DFI 랜파티 NF590 SLI-M2R/G를 대상으로 직접 보도록 하겠습니다. 다른 메인보드들도 이름은 약간씩 다르지만 설정 자체는 크게 다르지 않을 것입니다.

아래 리스트에서는 설정 항목을 굵은 글씨의 제목으로, 설정 가능한 옵션을 제목 뒤에 표기합니다. 옵션 중에서 굵은 글씨는 권장 값입니다.





1. 1T/2T Timing (Command Per Clock (CPC)) - Auto, 1T(Enable), 2T(Disable)

제일 중요한 설정 중에 하나이지만 메모리 타이밍이 아니라 클럭 뒤에 표기되는 경우가 많습니다. 성능과 안정성, 대역폭에 미치는 영향이 상당합니다.

만약 2T로 설정해서 클럭을 더 높이 올릴 수 있다고 해도 클럭 상승폭이 50Mhz가 넘지 못한다면, 그냥 1T로 설정하고 클럭을 낮추는게 더 낫습니다. 2T로 설정했을 경우 여러 제조사의 메모리를 같이 사용할때 호환성을 높여줍니다. 상당수의 메인보드들이 호환성을 위해 기본 설정이 2T로 되어 있는 경우가 많으니, 사용 메모리에 따라서 1T를 한번 시험해 보길 바랍니다.


2. CAS Latency Control (tCL) - Auto, 3, 4, 5, 6

메모리의 중요한 설정값 중에 하나입니다. 메모리의 타이밍 설정값을 말할때 제일 앞에 놓이게 되는데, 만약 4-3-2-5@500MHz라면 CL 4를 의미하는 것입니다. 숫자가 낮은수록(3) 좋은 성능을, 숫자가 높을수록(5) 안정성을 의미합니다.

CAS는 Column address Strobe 혹은 Column address Select의 준말로서, 하나의 명령을 실행하고 다음 명령을 받을 때까지의 시간을 조절합니다. CAS가 16진법 주소-혹은 메모리 배열(Array)중의 주소를 조절하기 때문에 제일 중요한 타이밍 값이기 때문에, 안정적으로 작동한다는 전제 하에 당연히 그 설정을 낮춰야만 합니다.

메모리는 행(Row)와 열(Column)을 통해 주소를 찾으며, 명령이 실행되면 제일 먼저 tRAS(Activeto Precharge Delay), 예비 충전 후에야 비로소 진정한 RAS 초기화를 시작하게 됩니다. 일단 tRAS가 활성화 되고 난 후에 RAS(Row address Strobe)에서 필요한 데이터의 주소를 찾기 시작합니다. 먼저 행(Row) 주소이고, 그 다음에 RCD를 초기화하며, 사이클이 끝나면 CAS를 통과하여 필요한 데이터의 정확한 16진법 주소에 접근하게 됩니다. 

CAS가 시작해서 CAS가 끝날때까지를 CAS 레이턴시라고 하며, CAS는 데이터를 찾을 때 제일 마지막 단계이고, 메모리 타이밍의 제일 중요한 값이라고 할 수 있겠습니다.

이 값은 메모리가 하나의 데이터를 읽어들이는 명령을 받은 후에, 몇 사이클을 기다리고 나서야 실제 명령을 실행하는지를 조절합니다. 또한 메모리가 버스트 전송 과정 중에 첫번째 부분을 전송하는데 걸리는 사이클을 결정하기도 합니다. 이 수치가 작을수록 메모리의 속도는 빠르게 됩니다.

이 값은 안정성과 성능에 영향을 미치며, 대역폭에도 약간 영향을 줍니다. 이 수치가 클수록 좋은건 아닙니다. 상당수의 메모리는 CL 6에서 정상 작동이 불가능할 것입니다. 일부 마이크론 메모리 중에는 설정값을 6으로 했을때 클럭 상승 폭을 최대로 설정할 수 있는 제품도 있습니다. CAS 3은 최근 공정을 개선한 DDR2-800 이상 메모리에서 설정이 가능하기도 합니다.


3. RAS to CAS Delay (tRCD) - Auto, 2, 3, 4, 5, 6

메모리 타이밍 설정의 두번째 수치입니다. 4-3-2-5@500MHz라면 tRCD는 바로 3입니다. 이 값은 RAS(Row address Strobe) 신호와 칼럼 주소 사이의 스트로브 신호 딜레이를 조절합니다. 메모리를 읽거나 쓰거나 업데이트할 때, 이 2가지 스트로브 신호 사이에 딜레이 클럭 사이클을 필요로 합니다.

JEDEC 표준에서는 최고 성능을 발휘할 수 있는 값을 2, 시스템에서 안정적으로 작동하지 않으면 3, 4, 혹은 5나 6으로 설정하게 합니다. 마찬가지로, 이 값을 높이면 메모리가 더 빠른 클럭으로 작동하여 전체 성능을 상승시킬 수 있으며, 메모리가 불안정할 경우 tRCD 값을 높여볼 필요가 있습니다.

이 값은 대역폭과 안정성, 그리고 성능에 주로 영향을 미치며, 최고 성능은 2지만 안정화나 오버클럭시에는 5나 6으로 설정하기도 합니다. 대다수의 메모리는 4 정도에서 안정적으로 작동합니다.


4. Row Precharge Timing(tRP) - Auto, 2, 3, 4, 5, 6

메모리 타이밍 설정의 세번째 수치입니다. 4-3-2-5@500MHz이라면 tRP는 바로 2입니다. tRP는 다른 행을 활성화 하기 전에 RAS에 필요한 충전 시간을 설정합니다.

tRP 설정값이 너무 크면 모든 행의 활성화 딜레이가 길어집니다. 2로 설정하면 충전 시간을 줄일 수 있으며 다음 행의 활성화를 더욱 빠르게 할 수 있습니다. 하지만 tRP를 2로 설정하는 것은 대다수 메모리에 부담이 크기 때문에, 활성화 이전에 데이터 손실이 있을 수 있고, 메모리 컨트롤러가 읽기/쓰기 조작을 완성할 수 없을 수도 있습니다. 따라서 안정적으로 작동한다는 전제 하에 tRP를 2로 설정하고, 안정적이지 못하다면 반드시 3이나 4, 혹은 5, 6까지 높여야 합니다.

일반적으로 tRP는 tRCD와 같거나 상대적으로 더 작은 값으로 설정됩니다.


5. MinRAS Active Timing (tRAS) - Auto, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15

메모리 타이밍 설정의 네번째 수치입니다. 4-3-2-5@500MHz라면 tRAS는 5입니다. 이 값은 메모리 주소를 활성화하는데 걸리는 클럭 사이클의 최소값을 조절하며, 주소가 활성화되어 원래대로 돌아오는데 걸리는 시간을 표시합니다.

tRAS가 너무 길면 성능에 심각한 영향을 미칩니다. tRAS를 줄이면 주소를 활성화여 더 빠른 복원이 가능하지만, tRAS 값이 너무 짧으면 버스트 전송을 처리할 시간이 부족하게 되어 데이터 손실을 초래하게 됩니다.

일반적으로 tRAS 값은 tCL+tRCD+2사이클이 됩니다. 즉, tCL이 4이고 tRCD가 3이라면 최적의 tRAS 값은 9가 되는 것입니다. 물론 이것은 이론적인 수치이며, 실제 테스트를 해보고 안정적인 값을 찾아야 되겠지요.

이 값은 대역폭 성능에 약간 영향을 미치며, 일부 메모리 안정성에 상당한 영향을 줍니다. 또한 일부 메모리에서는(엘피다) 이 값이 극한 오버클럭 안정성에 상당한 영향을 주지만, 일부 메모리(마이크론)에서는 0으로 설정해도 안정적으로 작동하는 경우도 있습니다.





6. Refresh Period Time (tREF) - Aut0, 3.9, 7.8, 15.6 (단위는 마이크로세컨드)

이 값은 갱신 시간의 간격을 설정합니다. Auto는 메모리 SPD 데이터대로 작동하며, 대부분의 경우 최고의 호환성을 위해 아주 느린 값으로 설정되어 있습니다. 숫자가 클수록 성능이 좋아지지만 너무 큰 값은 메모리 데이터의 손실을 초래하기 때문에 조금씩 설정값을 늘려가며 안정적인 값을 테스트하는 것이 제일 좋습니다.

초창기의 DDR 메모리 데이터시트에 의하면, 메모리에 저장된 1비트마다 모두 일정 주기로 갱신 충전이 필요했습니다. 제때 충전을 다시 해주지 않으면 데이터를 잃어버리기 때문이지요. DRAM은 사실 캐패시터라고 할 수 있으며, 제일 작은 저장 단위는 비트입니다. 만약 제때 충전을 하지 않으면 아주 짧은 시간만 데이터를 저장할 수 있습니다. 따라서 15.6마이크로세컨드마다 반드시 갱신을 한번 해줘야 하며, 갱신 작업에서 데이터를 한번 더 써주는 것입니다. 이것은 DRAM이 영구적인 데이터 저장장치가 아니기 때문에 필요한 것이기도 합니다.

일반적으로 RAS-only를 통과하는 갱신 방법(행, Row를 갱신)은 각각의 행 하나하나를 순서에 따라 갱신하게 됩니다. 예전에 쓰인 EDO 메모리는 하나의 행을 갱신하는데 15.6마이크로세컨드의 시간이 필요했는데, 따라서 1개에 2Kb의 메모리 메모리 Colum을 갱신하는데 걸리는 시간은 15.6마이크로세컨드x2048행=32밀리세컨드가 됩니다.

이 값은 안정성과 메모리 대역폭에 조금 영향을 주며, 다양한 프로그램의 설정에 따라 성능에도 일정한 영향이 있습니다. tREF와 tRAS와 마찬가지라 정확한 값이 딱 정해져 있는 것이 아니기 때문에 경험에 의해 설정해야 하며, 대게 15.6이나 3.9 정도면 안정적으로 작동하지만 너무 낮으면 메모리 대역폭이 떨어질 수 있습니다.

이 값은 안정성에 그리 큰 영향을 주진 않지만, 프로그램의 설정에 따라 다른 결과를 초래할 수 있습니다. 예를 들어 슈퍼 파이 1M같은 실행 시간이 짧은 프로그램에서는 3.9를 사용하며, 32M처럼 실행 시간이 긴 프로그램에서는 15.6을 선택합니다.


7. DRAM Bank Interleave - Enable, Disable

이것은 인터리브 모드의 사용 여부를 선택하는 것입니다. 인터리브 모드는 메모리 뱅크의 갱신과 방문 주기를 바꿀 수 있게 해줍니다. 하나의 뱅크를 갱신하면서 그와 동시에 다른 뱅크를 방문할 수 있는 것이지요. 실제로는 모든 메모리 뱅크의 갱신 주기를 전부 교차 배열함으로서 일종의 파이프라인 효과를 만들어내는 것입니다.

물론 인터리브 모드는 오직 연속된 다른 뱅크의 주소 탐색시에만 작동이 가능합니다. 만약 동일 뱅크에서 데이터 처리를 한다면 이터리브를 쓰지 않고도 똑같은 효과를 볼 수 있겠지요. CPU는 첫번째 데이터 처리를 끝내고 메모리 뱅크의 갱신을 할때 반드시 기다려야 하는데, 이때 다른 주소를 보낼 수가 있습니다.

지금은 거의 모든 메모리가 인터리브 모드를 지원하고 있으며, 이것을 사용하지 않을 경우 대역폭이 심각한 영향을 미칩니다.


8. IdleCycle Limit - Auto, 0~256

이 값은 메모리 페이징 강제 종료의 MemClock 수치를 나타냅니다. 메모피 페이지를 읽기 전에 충전을 다시 하는데 걸리는 최대 시간이라고 할 수도 있겠습니다.

대역폭에 약간, 주로 안정성에 영향을 줍니다. 일반 메모리는 Auto로 사용하지만 절대 다수의 메모리는 0에서도 안정적으로 작동합니다.


9. Dynamic Counter - Auto, Enable, Disable

이 기능을 사용하면 메모리 페이징에 들어가기 전에 내부 사이클을 제한하게 됩니다. 바로 앞에 나온 8번 IdleCycle Limit와 밀접한 상관이 있다고 할 수 있겠는데, 이것을 사용하면 충돌을 막기 위해 IdleCycle Limit 항목이 비활성화됩니다.

Auto는 곧 Disable입니다. 이것을 켜면 성능이 약간 상승하고, 끄면 더 안정적으로 작동합니다.


10. 32 Byte Granulation - Auto, Disable(8burst), Enable(4burst)

메모리 데이터 버스의 대역폭을 최적화 할 수 있는 값입니다. 대다수 상황에서 Auto와 Disable은 8burst입니다. 하지만 Enable로 하면 불안정한 경우가 많기 때문에 Disable을 권장합니다.





이 밖에도 터미네이터 저항 값이라던가, 드라이버 컨트롤러 전압, 클럭 신호의 강도 등을 설정할 수 있습니다만, 실제 사용 의의는 그리 크지 않습니다. 오버클럭을 할 때에는 위에서 소개한 설정의 일부와 전압을 늘리는 것만큼 더 큰 효과를 보는 것도 없기 때문입니다. 따라서 나머지 값들은 Auto나 기본값으로 두는 것이 나을 것입니다.

인텔의 경우, 메모리 컨트롤러가 노스브릿지에 내장되면서 그 호환성은 AM2 시스템보다 뛰어납니다만, 그만큼 조절한 항목의 수는 줄어들게 됐습니다. 1T/2T Timing(Command Per Clock)같은건 아예 설정이 불가능하지요. 일반 유저들에게는 매우 편한 일이지만, 성능을 극한까지 끌어다 쓰길 원하는 오버클럭커들에게는 유감인 일입니다.
기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.