NAND의 많이 읽은 데이터보다 덜 읽은 이웃 셀이 위험해지는 이유
NAND의 page A를 자주 읽었다. 그런데 오류 증가가 A보다 같은 block의 page B에서 더 크다면 데이터를 안 건드렸으니 안전하다는 기대가 틀린 것이다. Read Disturb에서는 unselected cell도 읽기에 필요한 전압을 받는다. 직접 반환된 data의 개수와 물리적 bias를 받은 횟수는 다르다.
NAND string은 cell들이 직렬로 연결된다. A의 selected wordline에서 state를 판별하려면 나머지 wordline의 cell들을 켜서 전류 경로를 만들어야 한다. 이때 unselected wordline에 pass 전압을 반복 가한다. 정상 read 한 번에서 변화가 작아도 누적된 bias가 threshold를 이동시킬 수 있다.
Errors in Flash-Memory-Based Solid-State Drives 3.5절은 unread cell의 threshold가 반복 read에 따라 바뀌는 현상과 그림 19의 분포 변화를 설명한다. 일부 낮은 threshold state가 더 취약한 실험 결과도 있지만 그 표본의 정량값을 모든 3D NAND의 고정 수명으로 옮기면 안 된다.
access count를 받는 cell의 관점으로 세기
가상으로 A wordline을 1000번, B wordline을 1번 array read 했다고 하자. A를 읽는 동안 B는 1000번 unselected pass bias를 받는다. B를 읽을 때 A는 1번 받는다. 자신을 읽은 횟수만 주소별로 기록하면 A가 더 위험해 보이지만 pass bias 관점에서는 B의 누적이 훨씬 크다.
실제 block에는 많은 wordline이 있고 read page에 필요한 여러 reference와 retry가 추가될 수 있다. host read 한 번이 NAND array read 한 번이라는 가정도 확인해야 한다. controller cache hit라면 array read가 없을 수 있고, cache miss 뒤 retry를 네 번 하면 물리적 읽기는 여러 번 발생한다.
누적 threshold 이동을 한 번당 0.2 μV로 단순화한 toy에서는 100000회 후 20mV가 된다. 실제 disturb가 linear이고 모든 cell의 increment가 같다고 주장하는 값은 아니다. 작은 영향도 많은 반복 뒤에 분류 경계에 가까운 tail cell을 넘길 수 있다는 산술 예다.
평균 분포보다 경계 근처 cell이 먼저 드러난다
threshold가 20mV 움직였다고 모든 bit가 바뀌는 것은 아니다. reference에서 멀리 있던 cell은 같은 state로 읽힐 수 있고 경계 근처 cell은 잘못 분류될 수 있다. raw error 증가를 평균 threshold 이동으로만 예측하면 tail의 민감도를 놓친다. 원래 분포와 state별 이동을 함께 봐야 한다.
또 같은 read count라도 wear, retention, 온도와 pass bias 조건이 다르면 오류는 달라질 수 있다. count 한계 하나를 제품 외부의 실험에서 가져와 보증값으로 쓰면 안 된다. 보호 정책은 대상 device와 environment에서 remaining ECC margin을 포함해 평가해야 한다.
hot page의 이웃을 관리하는 방향
read가 많은 block의 data를 새 위치로 옮기는 reclaim은 disturb가 쌓인 cell을 그대로 두지 않는 방법이다. 이동에는 추가 program·erase와 bandwidth가 들어간다. 물리적 read count를 추적하고 오류 margin을 관찰하면 불필요하게 모든 block을 동일 주기로 옮기는 비용을 줄일 수 있다.
Vpass를 낮춰 disturb를 줄일 수 있는 경우도 있지만 unselected cell이 통과해야 하는 minimum을 지켜야 한다. bias를 줄였는데 즉시 read 경로가 막히는 오류는 장기 disturb와 다른 실패다. 둘을 같은 read error 통계에만 합치면 어느 방향의 수정이 도움 되는지 알기 어렵다.
Read Disturb를 진단할 때는 많이 읽은 logical page뿐 아니라 같은 physical block의 다른 wordline을 확인하자. 그들의 threshold와 error trend가 array read 이력에 따라 어떻게 움직이는지 보면 전달된 data 밖의 stress가 드러난다. 안 읽은 셀도 읽기 경로를 만드는 데 동원된다는 사실이 hot data와 이웃의 위험을 연결한다.