RAM SPD Programmer 로 메모리 SPD 추가/수정 하기

사건의 발단 – 부팅이 안된다

 

한 때 가성비로 주목받아 구매하는 사람들이 많았던 KingBank(왕은행..)라는 제조사가 있습니다.

특히 DDR5로 넘어오면서 논바이너리라고 불리는 24Gb 칩을 이용한 48, 96GB 패키지가 출시되면서 32GB 용량은 작고, 64GB나 128GB는 가격 때문에 부담스러웠던 경우에서 하나의 옵션으로 자리잡게 되었는데요. 저도 그래서 하이닉스 M 다이의 6800MHz의 CL34 24GB x 2 패키지를 구매했었습니다.

 

 

가격이 제법 저렴한 편이었다 보니까 많은 사람들이 구매한 것으로 알고 있는데, 제 지인도 구매를 했었습니다. 이쪽은 6800MHz CL32에 RGB 히트싱크를 가진 놈이었습니다. 하이닉스 M다이인건 동일했구요.

그런데 AMD에서 AGESA가 1.3.0.0으로 올라간 후부터 Bank Refresh Mode의 기본값을 Mixed Mode로 변경하고 나서부터 킹뱅크 논바이너리 메모리들이 부팅이 안된다는 글이 올라오기 시작합니다. 저야 인텔 플랫폼에서 쓰고 있어서 아무래도 상관이 없는 이야기라 크게 신경을 안쓰고 있었는데 인텔에서 AMD로 넘어가려던 지인의 메모리가 인식이 안되는 사건이 생깁니다.

 

[제 서브 PC에 물려본 지인의 램 부팅 불가 확인]

 

 

무슨 이유에서 그랬을까

 

결국 원인을 알아보려던 중 위의 이야기를 기억하고 있었기에 커뮤니티에서 관련 글을 검색하던 중 이유를 확인했습니다.

 

[KingBank Hynix M die 6800MHz CL34의 순정 클럭(4800MHz) 프로필]

 

위에 이야기했던 AMD 메인보드에서 뱅크 리프래시 모드가 Mixed로 바뀌면서 tRFC1/2/csb의 값이 중요해지게 되는데, 24Gb 칩 표준값이 아닌 16Gb 칩의 표준값을 그대로 넣어버려서 발생한 일이었습니다. 한마디로 순정값이 아닌 타이밍이 조여진 상태로 부팅을 시도했더니 보드 입장에선 오버 실패의 의미로 부팅이 안되던 것이었습니다.

 

[2020년 7월의 JEDEC Standard에서의 tRFC 파라미터 정의]

 

이는 JEDEC Standard DDR5 Spec JESD79-5의 칩 밀도별 tRFC 파라미터 정의에서 알 수 있는데 16Gb 칩의 값과 완전히 동일하게 들어간 걸 알 수 있습니다. 이것으로 예상할 수 있는 제조사가 부린 추태의 원인을 예상 해보자면-

 

  1. 제품 출시 당시에 해당 칩의 JEDEC 스탠다드 문서가 존재하지 않았다. 그래서 16Gb의 정보를 그대로 넣을 수 밖에 없었다
  2. JEDEC 스탠다드 문서 살 돈이 없어서 그냥 16Gb 칩의 정보를 아무렇게나 넣었다

 

킹뱅크 24Gb 칩 탑재 제품의 판매 시기와 JEDEC 스탠다드의 리비전별 24Gb 칩의 세부 타이밍에 대한 정의가 정해진 시기를 참고해보면 1번의 추정은 가능성이 없다고 보여집니다. SK 하이닉스의 24Gb 칩 출하 시점이 2021년 12월이고, JEDEC 스탠다드에 해당 칩의 세부 스펙 반영이 JESD79-5B(2022년 8월)부터 시작되었고, 킹뱅크의 제품 판매 시기는 아무리 이르게 잡아도 2023년 하반기로 봐야 하지 않나싶구요.

 

결론적으로 JEDEC 스탠다드 최신 리비전의 구매 비용을 쓰기 싫었거나 귀찮아서 16Gb의 정보를 그대로 복붙 하지 않았을까 하는 의심이 듭니다.

 

그럼 이를 해결하기 위해서는 또 고민을 해야 합니다.

 

  1. 킹뱅크에 RMA를 보내 SPD 수정을 요구한다: 수정을 해서 보내줄지, 교체를 해서 보내줄지, 내가 보낸 것과 동일한 모듈(하이닉스 M 다이)를 보내줄지 CXMT같은 (우리 입장에서) 듣보잡 메모리로 바꿔서 보내줄지 모름
  2. 바이오스를 이전 버전으로 되돌린다: 성능 개선이나 이젠 보안까지 신경써야 하는 수준이 되니 업데이트를 안할 수가 없죠
  3. 다른 메모리가 있다면 일단 부팅을 시킨 다음에 Bank Refresh Mode를 Normal로 돌린다: MSI 등 일부 제조사가 시행한 것으로 아는데, AMD의 표준값은 Mixed니 찜찜해짐
  4. 내가 직접 고친다(!)

 


SPD Programmer를 써보자

 

사실 이전부터 궁금한게 있기도 했지만 종종 생기는 고장난 DDR4 RDIMM의 원인 분석을 위한 수단을 챙겨둘 겸 해서 구매를 고려하고 있었는데, 마침 킹뱅크 메모리 건이 생겼으니 결심하고 구매하기로 합니다.

 

 

본래 전문 SPD Writer는 가격이 상당히 비쌉니다. 비싸서 그런지 외관도 신경 쓰는 모습(거대하다는 뜻)인 것에 비해 중국산의 SPD 프로그래머는 PCB에 램 슬롯이 반토막 난 채로 올려져 있는 특이한 모습을 하고 있습니다.

 

 

처음에는 판매자가 관련 프로그램을 다운받는 링크 같은걸 전혀 안내해주지 않아서 일일이 찾아다녀봤을 때 알 수 있었던 사실은 아두이노를 기반으로 작동한다는 것이었습니다. 램의 SPD를 읽고 쓸 수 있는 프로그램과, 덤프 뜬 SPD 이미지 파일을 수정할 수 있는 에디터가 모두 GitHub에서 찾을 수 있어서 굳이 중국 업체가 보내주는 프로그램을 쓸 필요도 없었습니다.

허나 나중에 결국 프로그램을 받긴 했는데, 시리얼을 읽고 쓸 수 있는 것 외엔 SPD를 읽고 덤프를 수정하는건 위에 언급한 프로그램을 여전히 쓰고 있어서 거의 기능이 없습니다. 버그도 보이고요. 자세한건 밑에서 설명합니다.

뭔가 본격적인 시설에서 생산하는게 아닌 것 같다는 느낌이 드는게 뒤집어보면 플럭스 마른 자국이 그대로 있습니다. MSI보다 심함

 

 

 

DDR4와 5를 모두 지원하긴 하지만 동시에 읽을 순 없습니다. SPD값이 담긴 EEPROM을 읽어들이는 데에는 슬롯의 반만 있어도 되나봅니다.

참고로 ECC 계열의 물건들은 DDR5의 경우 핀 배열이 달라 사용이 불가능하지만 DDR4의 경우엔 동일하기 때문에 ECC/REG(RDIMM)까지 읽고 쓸 수 있습니다.
(DDR5 ECC까지 지원하는 제품은 있지만 같은 제작자가 아닌 듯하게 레이아웃이 완전히 다르고 가격이 훨씬 비쌈)

 

 

 

하드웨어 자체는 윈도우11 기준으로 자동으로 인식합니다. 윈도우10이나 특별한 상황에 따라서는 드라이버가 필요할 수 있는데 제 PC의 경우 자동으로 잡네요.

여기서 램을 슬롯의 모양을 잘 보고 꽂은 상태에서 USB 포트에 연결 하고 난 뒤에 Connect를 눌러주면

 

 

 

위와 같은 창이 뜹니다.

 

  1. Select Device 창에서 잠시 대기하면 장치가 인식되어 뜨게 되는데, Connect를 눌러주면 Connect 글자 대신에 연결된 장치의 COM포트 번호가 뜨게 됩니다
  2. Read를 누르면 장착된 램의 SPD를 드디어 불러오게 됩니다. 창 하단의 상태표시줄에 “CRC OK”라고 뜨게 되면 정상적으로 불러왔다는 뜻입니다
  3. 이제 Save를 누르면 .bin 형식의 덤프 된 SPD 파일을 저장할 수 있게 됩니다.

 

덤프 된 파일은 사실상 원본이기 때문에 확실하게 이름으로 구분지어 잘 저장하도록 합니다.

 

 

 

DDR4와 DDR5는 서로 다른 SPD 에디터 프로그램을 사용합니다. 허나 수정 방법은 사실상 차이가 없으므로 필요한 값을 넣어주고 저장하면 되는식입니다. 기본적으로 위 프로그램들은 저장할 때 원본 보존을 위해 Save 기능이 다른 이름으로 저장할 수 있게 되니 참고하세요.

 

 

 

이제 어떤 값을 변경하고 저장할지 선택해야 하는데, 킹뱅크 메모리의 경우 기본 클럭인 4800MHz에서부터 부팅이 안되기 때문에 JEDEC 프로필을 수정해줍니다. 핵심적인 tRFC1, tRFC2, tRFCsb(프로그램 상에서는 tRFC라고 되어 있음)를 수정해야 하므로 이를 JEDEC 표준에 맞게 수정해야 합니다(Value를 수정합니다).

 

tRFC1 410
tRFC2 220
tRFCsb 190

[32Gb 칩을 탑재한 메모리도 동일한 값이 적용됩니다]

 

Mixed 모드에서는 사실 tRFC1은 참고하지 않는데, 그래도 넣어주는게 나을 것입니다. 앞으로 어떻게 될지 모르니까요.

그리고 프로그램이 버그인건지 계산식에 따라 자동으로 수정하려 해서 그런지는 모르겠습니다만, 마우스로 값을 클릭하면 입력 후에 자동으로 다른 값으로 바뀌는 경우가 있습니다. 안전하게 하기 위해서는 다른 값을 수정할 때 마우스 클릭이 아닌 키보드 탭 키를 이용해서 이동해서 수정하면 괜찮습니다.

이렇게 수정이 다 되었다면 Save를 눌러 반드시 새로운 이름으로 저장합니다. 원본은 보존 해야 하니까요.

 

  • XMP나 EXPO 프로필 값도 수정해야 하나
    – 메인보드의 성향에 따라 달라질 수 있는 문제라고 할 수도 있습니다만, 테스트를 해보지 않아 모르겠습니다
    – 저같은 경우에는 JEDEC 프로필의 값만 변경했는데 ASUS TUF B650EM-E WiFi에서 EXPO 프로필로 적용을 했음에도 tRFC값들이 JEDEC값들이 들어가 있었습니다
    – 이같이 XMP/EXPO 프로필을 적용해도 일부 값만 수정하고 나머지는 AUTO로 두는 메인보드도 있는 반면 모든 프로필값을 적용시키는 메인보드도 존재할 수 있기 때문에 사용자가 직접 테스트를 해야 하는 부분입니다

 

성공적으로 수정이 완료되었다면 이제 다시 메모리에 덮어야 할 때입니다.

 

 

다시 SPD-RW 프로그램으로 돌아와서 Open을 눌러 수정했던 파일을 불러옵니다. Verify 메뉴는 파일이 멀쩡한지가 아니라 현재 메모리의 SPD값과 불러온 파일의 SPD값이 일치하는지 보는 메뉴지 파일이 멀쩡한지 체크하는 부분은 아니니 참고하시고, 이대로 Write를 누르면 100% 실패합니다. DDR5의 경우 쓰기 프로텍트가 걸려있기 때문입니다.

 

항목 설명
Clear RSWP 프로텍트를 전체 해제합니다.
Set RSWP 프로텍트를 블록별로 설정/해제를 선택적으로 할 수 있습니다.
모든 블록은 SPD 전용이 아니며, 예를 들어 RGB가 탑재된 제품인 경우 그것과 관련된 블록이 존재할 수 있습니다. 때문에 순정 상태에서도 모든 블록이 프로텍트가 걸린 상태가 아닐 가능성이 매우 높으며, 이 때문에 순정 상태에서 어떤 블록이 프로텍트가 걸려 있는지, 해제되어 있는 상태인지 기억 해야 합니다.

 

이왕 이렇게 된거 전부 해제하고 쓰겠다고 하신다면 그냥 Clear RSWP를 눌러서 전체 해제를 하고 Write를 누르면 되겠습니다. 그렇게 하고싶지 않다면 우선 기본값을 기억하고 전체 해제를 한 후에 Write를 한 뒤에 기억해놨던 프로텍트 설정을 걸 Block을 체크 하고 Set RSWP 하면 됩니다.

 

 

이 슬라이드 쇼에는 JavaScript가 필요합니다.

 

이렇게 해서 정상 부팅이 된걸 확인합니다. 이제 남은 하나 더 해야죠?

 


 

주의사항 총 정리

 

  1. SPD Editor에서 값 수정시 맨 처음을 제외하고는 탭 키를 이용하여 이동해서 수정한다
    – 프로그램 버그인지 알 수 없으나 마우스 클릭시 이상한 값이 들어가는 경우가 있습니다.
  2. SPD-RW에서 SPD를 덤프를 뜰 때에는 반드시 다음의 과정을 지켜야 한다
    – 개별 메모리마다 덤프를 개별적으로 저장: 덤프 내에 일련번호 등의 해당 메모리 고유값이 포함될 수 있습니다.
    – 수정한 덤프를 저장할 때 원본을 덮어쓰지 말 것: 프로그램 자체적으로도 덮어씌우는걸 방지하고 있습니다만 그래도 주의를 철저히 합시다.
  3. SPD-RW 내의 RSWP 상태를 기억(저장)한다
    – 락을 전부 풀고 쓰실 분은 상관없습니다만 그게 아닐 경우 블록마다 락 여부가 다르므로 기록하는 것이 좋습니다.

 


 

응용편(시금치에 XMP/EXPO 넣기)

 

한편 궁금해서 해본게 XMP나 EXPO가 있을 리가 없는 제조사 순정램(시금치)에 XMP나 EXPO 프로필을 집어넣을 수 있는지 테스트 해봤습니다.

대상 메모리는 삼성의 4800MHz 16GB. 평소에 아무것도 손 안대고 5600MHz로 오버해서 쓰고 있었는데 그 값을 기준으로(라고 해봤자 5600B JEDEC 프로필이지만) EXPO 프로필을 생성 해봤습니다.

 

 

너무나 잘 됩니다;;;

이로서 우리가 사용하는 메모리들의 EEPROM에는 오버 프로필을 개별적으로 생성할 수 있다는 것을 알았습니다. SPD Editor에 의하면 추가 가능한 프로필은 DDR4는 XMP 2개, DDR5는 XMP 3개, EXPO 2개입니다.

 

 


 

SPD Programmer 제작자의 프로그램

 

 

 

중국산 아니랄까봐 파일과 폴더명을 중국어로 정해놓는 센스를 자랑합니다. 제가 받은 버전은 3.1인데 사용자들의 말로는 3.1에 포함된 드라이버가 설치가 안되는 경우가 있다고 합니다. 저같은 경우엔 자동으로 장치를 잡았으니 드라이버가 필요 없었지만요.

 

 

다행히도 프로그램은 한국어를 지원하고, 생각보다 말끔한 UI를 가지고 있습니다.

(SPD Editor에 다 표시되지만) 일련번호 등의 정보도 바로 표시되는 점은 편리한데 덤프를 메모리에 쓸 때 저 값이 안바뀌는 경우가 종종 있어서 쓰기 전에 반드시 확인을 해야 합니다.

그리고 메모리의 SPD를 불러올 때 이상하게 CRC 오류라고 “무조건” 띄우는데 또 CRC 수정 버튼을 누르면 수정이 됐다고 뜹니다(????).

SPD를 불러올 땐 SPD-RW를 이용하는 것으로 보이고, XMP/EXPO 수정을 누르면 그냥 SPD Editor가 실행됩니다. SPD 잠금 해제를 누르면 SPD-RW가 그냥 실행되기만 합니다(Clear RSWP는 알아서 눌러야 함).

단순한 중계 프로그램정도로 이해해서 저는 쓰지 않았고, 다른 분들은 알아서 판단하셔야겠지만 저는 쓰질 않길 추천합니다.

댓글 남기기