NAND 데이터가 오래될수록 최적 읽기 기준도 움직인다
쓰기 직후에는 잘 읽히던 NAND page가 오랫동안 그대로 둔 뒤 read retry를 자주 요구한다. 처음의 reference는 여전히 같은 전압이다. 변한 것은 comparator가 아니라 저장된 threshold 분포다. Retention Read Reference를 age에 맞추는 이유는 기록 순간의 좋은 경계가 미래에도 좋은 경계라는 보장이 없기 때문이다.
retention age는 마지막 programming 뒤 흐른 시간이다. 저장 charge가 변하면 state별 threshold 분포의 중심과 폭도 움직일 수 있다. 모든 state가 동일하게 이동하는 것은 아니므로 원래 reference로 판별한 raw error가 증가한다. 새로운 경계가 현재 분포를 더 잘 나누면 ECC에 들어가는 오류를 줄일 수 있다.
Data Retention in MLC NAND Flash Memory의 원저자 설명은 HPCA2015 연구의 2Y-nm MLC 표본에서 age별 분포와 optimal reference를 조사한다. 이 결과에서 reference가 낮아지는 경향은 그 표본의 조건에 한정된다. 모든 NAND 세대의 모든 경계가 똑같은 방향·속도로 움직인다는 법칙으로 쓰면 안 된다.
동일 분포 가정에서 계산하는 경계 이동
가상 두 state를 같은 variance와 같은 prior의 정규 분포로 두고 평균을 처음 1V와 3V로 놓자. 이 조건의 최소 분류 오류 경계는 가운데 2V다. 시간이 흐른 뒤 평균이 0.9V와 2.5V가 됐다고 하면 새 경계는 1.7V다. reference가 0.3V 내려가는 계산이다.
분산과 prior가 같다는 조건을 제거하면 경계가 항상 평균의 정중앙인 것은 아니다. 여러 state와 tail이 있는 실제 NAND에는 더 많은 조건이 필요하다. 이 예는 old reference 2V가 저장 분포의 변화를 반영하지 못할 수 있음을 보여 줄 뿐 실제 제품의 보정값을 추정하지 않는다.
낮은 쪽 state의 평균은 0.1V, 높은 쪽은 0.5V 이동했다. 한 state의 평균 이동만 모든 경계에 복사하는 방법도 맞지 않는다. 참고하는 두 분포와 오류 목표를 같은 조건에서 확인해야 한다.
page의 나이를 모르면 어떤 값을 적용할까
SSD에는 방금 쓴 page와 오래 읽기만 한 page가 함께 존재한다. host logical 주소가 가깝다는 이유로 age까지 같다고 단정할 수 없고, physical block의 page 구성과 program 정책을 알아야 한다. 원 연구의 block별 reference 정책도 장치의 저장 조직과 workload 특성을 활용하는 접근이다.
정책이 reference를 학습해 cache해 두면 read retry 초기 시도에서 더 좋은 출발점을 줄 수 있다. 그 대신 metadata와 갱신 비용, 대표 page가 다른 page를 얼마나 대변하는지에 대한 검증이 생긴다. block마다 reference 하나를 저장하는 방법과 page별로 저장하는 방법은 정밀도와 비용이 다르다.
오래된 data를 옮기는 것과 경계를 바꾸는 것
reference 조정은 현재 저장 정보를 더 잘 읽는 일이다. 새 block에 rewrite해 retention age를 다시 시작하는 일과 다르다. 경계를 바꿔 읽기에 성공해도 cell의 charge 상태가 다시 복원된 것은 아니다. 계속 age가 늘면 다시 조정하거나 다른 관리 작업이 필요할 수 있다.
또 retention 외의 disturb나 wear가 큰 경우에는 reference 이동만으로 충분하지 않다. 분포가 넓어져서 겹침이 커지면 좋은 경계를 골라도 남는 raw error가 있다. retry 성공과 cell 상태 회복을 같은 완료 조건으로 처리하면 storage 관리의 의무가 누락된다.
실무적인 비교에서는 age와 P/E, 온도를 맞춘 뒤 default와 보정 reference의 raw error, 초기 ECC 성공률, 추가 read 횟수를 기록하면 된다. 최적 reference를 정확히 찾았다는 이름보다 현재 data에서 어느 오류를 줄였는지가 판단 기준이다.
Retention Read Reference는 저장 시간에 따라 움직이는 분포를 비교 기준이 따라가게 하는 선택이다. 좋은 경계를 찾는 작업과 data를 다시 기록하는 작업을 구별하면 읽기 지연을 줄이는 이득과 남는 보존 위험이 함께 보인다. 처음의 정확한 읽기는 미래의 같은 reference에 대한 영구적인 보증이 아니다.