본문 바로가기
DRAM

DRAM 신뢰성 문제: Row Hammer (행 해머)

by 토리윤 2022. 5. 15.

DRAM에서 발생할 수 있는 여러 가지 신뢰성 문제 중, 행 해머(Row Hammer)에 관한 대표적인 논문을 살펴보겠습니다. (본 포스팅은 논문 Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors에 기반하여 작성하였습니다)

 

DRAM의 행 해머에 관한 이야기를 하려면 해당 논문을 빼놓을 수 없을 정도로, 다른 행 해머 논문에도 항상 언급되는 논문입니다. 또한 발표 당시 구글 프로젝트 제로에서도 같이 이슈 되었고, 그로 인한 하드웨어 업계와 학계에서 상당한 여파가 있었던, 그리고 아직까지도 활발한 연구들이 진행 중인 이슈이기도 합니다. DRAM의 신뢰성 이슈를 다룬다면, 빠질 수 없는 주제이기에, 이번 기회에 해당 논문에 관해 정리해보도록 하겠습니다. 

 

DRAM의 미세 공정 기술이 나날이 발전함에 따라, 기존 제품에서는 볼 수 없던 현상들이 발견되곤 합니다. Row hammer error도 이 중 하나로써, DRAM cell 들의 전기적인 상호작용에 따라 문제가 발생하게 됩니다. 임의의 행 주소에 대하여 반복적으로 읽는 동작을 수행함으로써, 해당 행 주소 근처에 위치하는 셀에 데이터가 손상될 수 있다는 것을 이 논문에서 보이게 됩니다. 물론 한두 번의 접근으로 문제가 되는 것은 아닙니다. 해당 논문에서는 이런 악성 프로그램을 제작하여 일반 상용 PC에서조차 행 해머 문제가 발생한 것을 재현하였습니다. 삼성, 하이닉스, 마이크론과 같은 대표적인 DRAM 제조업체의 DRAM 모듈(칩이 아닌 모듈입니다) 129개를 테스트하였고, 이중에 110개에 달하는 모듈에서 해당 에러 현상을 발견한 것입니다. 이러한 DRAM의 오류는, 해당 DRAM이 설치된 시스템의 보안을 위협할 수 있는 위험한 현상입니다. 해당 논문에서는 그 근본 원인을 DRAM의 행을 반복적으로 접근할 때에, 인접한 행의 셀에서 나타날 수 있는 커플링 효과로 정의하였었습니다. 물론, 최근의 연구들에 의하면, 보다 근본적인 원인은 DRAM 셀에 존재하는 trap에 의하여 electron이 트랩 또는 방출되며 발생하는 것으로 연구되고 있습니다 (추후 관련된 논문에 관한 포스팅을 할 예정입니다). 많은 시스템이 행 해머에 의해 위험해 처할 수 있다는 연구 결과가 발표된 것입니다. 실험은 FPGA를 기반한 테스트 플랫폼에서 실행되었는데, 행 해머에 대한 특성을 분석하는데 그 중요성을 두었습니다. 본 논문에서 주장하는 주요 발견사항으로는, 행 해머 오류를 유도하는데 있어서 139k 번의 행 접근이 필요하였다는 사실과, 최소 1.7k 셀 당 1개의 오류가 발견되었다는 사실입니다. 그리고 결정적으로, 이 행 해머를 해결할 수 있을 것으로 생각되는 방법으로, 메모리 성능이나 면적에 최소한의 영향을 끼치는 해결책이 제시되어 있습니다.
이러한 문제가 발생하는 근본적인 원인은 DRAM의 집적화가 진행됨에 따라 셀 간의 간격이 더욱 가까워지기 때문입니다. 결국 고 집적도의 DRAM에서는 논문에서 말하는 disturbance 에러가 발생할 확률이 높아지는 것입니다. 제가 생각하는 이 논문의 가장 큰 기여는, 972개의 상용 DRAM 칩을 테스트 한 점입니다. 이 중에서 행 해머 에러가 발견된 칩이 836개나 되기 때문입니다. 이러한 에러가 발생하기까지 139k 번의 읽기 동작이 걸렸다고 하는데, DRAM의 동작 구조를 고려하였을 때 이는 그리 많은 횟수가 걸린 것이 아닙니다. 왜냐하면, DRAM의 경우 발생하는 자연적인 누설 전류로 인해, 데이터 보존을 위해 64 ms라는 시간 안에 주기적인 다시 쓰기 동작을(refresh) 하게끔 되어있습니다. 즉, 이 64 ms 시간 동안은 어떠한 일이 있어도 DRAM 셀은 그 값을 유지해야만 합니다. 만약 셀에 1이라는 값이 있었다면, refresh 명령이 없어도 이 값을 유지해야 하는 것이죠. 그러나 해당 논문에서 말한 139k 번의 읽기 동작을 수행하는 시간은 이 64 ms 보다도 훨씬 짧은 시간입니다. 이 부분이 행 해머 에러의 핵심 요소 중 한 가지인 것입니다. 즉, 일반적인 refresh 방법으로는 해당 에러가 발생하는 것을 막을 수 없다는 사실입니다. 이 논문의 저자들은 행 해머가 발생하는 것을 Intel 또는 AMD가 있는 실제 시스템에서 확인하였고, 또한 별도의 FPGA로 만들어진 테스트 플랫폼에서 해당 에러를 확인한 것입니다. 그렇게 함으로써, 이 에러가 어떻게 발생하게 되었는지를 파악하게 되었는데, 그 이유로 꼽히는 것이 바로 임의의 행을 반복적으로 접근하였을 때 발생한다는 것입니다. 그렇기에 이러한 에러를 막을 수 있는 방법으로, 확률적인 접근을 통한 행 활성화를 제시하였습니다. 물론, 단순하게 생각했을 때, 이러한 문제가 발생하면 주기적으로 행하는 refresh를 더욱 자주 하면 해결되지 않나 하고 생각할 수 있습니다. 그러나, DRAM에서 refresh 동작을 더 많이 수행할수록, 그 퍼포먼스와 에너지 효율은 떨어질 수밖에 없고, 이는 다른 타사 제품에 비교하여 시장에서 도태될 수밖에 없는 치명적인 결함 요소가 될 수 있습니다. 즉, 아무 생각 없이 추가적인 refresh를 하는 것은 해결 방안이 될 수 없는 것입니다. 한편, 그럼 이렇게 행 해머가 발생하는 셀을 미리 파악 후, 해당 행에 대해서만 refresh를 자주 해주면 되는 거 아냐?라고 생각할 수 있습니다. 방법적으론 틀린 이야기가 아니지만, 실제로 생산되는 모든 칩의 모든 행에 대하여 사전에 검사한다는 건 말도 안 되는 방법입니다. 그렇기에 이 논문에서는 확률적으로 접근하는 방법을 제시한 것입니다. 어느 임의의 행에 접근할 때 그 근접한 행에 대하여 어떠한 낮은 확률로써 refresh 하는 것입니다. 이때 이 임의의 행이 반복적으로 접근된다면, 이 낮은 확률로도 충분히 인접한 다른 행을 refresh 할 수 있다는 것이 이 논문에서 제시하는 해결방안의 주요 골자입니다. 물론, 확률적이기에 이 방법이 행 해머 에러가 발생하는 것을 완벽히 막을 수 없는 건 사실입니다. 그렇기에 논문에서는 해당 해결책을 0.001 확률로써 적용하였을 때, 발생할 수 있는 행 해머 에러율을 제시하였는데, 그 결과 50k 번의 해머링을 할 때, 64 ms에서는 1.4x10^-11이라고 밝히고 있습니다. 

 

현시점에서는 오늘 살펴본 이 논문 외에도, 행 해머에 대한 현상 연구나 이를 위한 보완 방법에 대한 여러 가지 연구들이 많이 있습니다. 기회가 되는대로 앞으로의 포스팅에서 다루도록 하겠습니다.

'DRAM' 카테고리의 다른 글

DRAM의 간단한 Read 와 Write 동작  (0) 2022.05.21
간단한 Sense Amplifier 동작 원리  (0) 2022.05.19
DRAM 회로의 구성과 기본 동작  (0) 2022.05.18

댓글