모든 이야기

MRAM write verify가 신뢰성을 얻으며 잃는 지연의 형태

MRAM 쓰기가 가끔 실패한다면, 바로 읽어 확인하고 실패한 것만 다시 쓰면 된다. 직관적으로 좋은 해법이다. 하지만 MRAM Write Verify가 만드는 성능은 쓰기 한 번의 고정 지연보다, 대부분 짧고 일부가 길어지는 지연 분포에 가깝다. 재시도 횟수의 끝과 확인 자체의 정확성까지 정해야 신뢰성을 설명할 수 있다.

verify는 원하는 값이 실제로 저장되었는지 읽어 비교하는 단계다. 쓰기 명령을 보냈다는 사실을 완료 조건으로 삼지 않고 관측한 결과를 사용한다. 성공한 쓰기는 끝내고 실패한 쓰기만 다시 수행하므로, 모든 셀에 긴 pulse를 주는 방식과 다른 비용을 갖는다.

짧은 기본 쓰기에 확인을 붙인다

STT-MRAM testing 원문은 write-verify-write를 회로 수준의 완화 기법으로 설명한다. 쓰기 직후 읽어서 성공 여부를 검사하고, 실패하면 같은 데이터를 다시 쓴다. 신뢰성을 높이는 대신 에너지와 성능 비용이 따른다는 점도 명시한다. 원문 §VII-A, Challenges for Failure Mechanisms

계산용으로 한 번의 쓰기 시간이 10ns, verify가 4ns라고 하자. 매 쓰기는 성공 확률 p=0.99를 가지며, 재시도들도 같은 조건에서 서로 독립적이라고 정한다. verify는 성공과 실패를 완벽하게 구별한다고 먼저 가정한다. 최대 세 번 시도하고 모두 실패하면 오류를 보고한다.

첫 시도에 성공하면 14ns다. 두 번째에 성공하면 28ns, 세 번째에 성공하면 42ns다. 실패 확률 q=0.01이므로 각각의 확률은 0.99, 0.01×0.99=0.0099, 0.01²×0.99=0.000099다. 세 번 모두 실패할 확률은 q³=10⁻⁶이며 그 경우에도 42ns 뒤 실패를 보고한다.

이 모델에서 완료 시간의 99%는 14ns, 0.99%는 28ns, 나머지 0.01%는 42ns다. 마지막 구간에는 세 번째 성공과 최종 실패가 함께 있다. “세 번이면 성공”이 아니라 “세 번에서 성공 또는 실패를 확정하여 반환”하는 규칙이다.

평균 14.14ns가 최대 42ns를 지우지는 않는다

평균 시도 횟수는 첫 시도가 필요한 확률 1, 두 번째가 필요한 확률 q, 세 번째가 필요한 확률 q²를 더한 1+q+q²=1.0101이다. 한 시도와 verify가 14ns이므로 평균은 14.1414ns다. 최대 시도 시간 42ns와는 다른 지표다.

최대 세 번의 정책을 무시하고 무한 재시도를 허용하면 평균 횟수는 1/p로 계산할 수 있지만, 유한한 최대 시간 보장은 사라진다. 실제 시스템은 retry cap, 시간 제한과 최종 오류 처리 경로를 함께 정해야 한다. 큐 대기와 여러 bit를 쓰는 word 단위의 재시도까지 포함하면 외부에서 보는 최대 지연은 더 길어질 수 있다.

위 확률은 bit 하나를 쓰는 가상 모델이다. 여러 bit가 하나의 word 안에 있다면 전체 word가 verify에 통과할 확률은 별도다. 어떤 bit만 다시 쓰는지 word 전체를 다시 쓰는지도 전류와 지연 비용을 바꾼다. bit 실패 확률을 word 성공 확률로 그대로 사용할 수 없다.

두 번째 시도가 첫 번째 실패와 같은 조건인가

q³의 잔여 실패율은 독립 재시도 가정에서 나온다. 첫 실패가 너무 짧은 순간의 확률적 전환 때문이라면 다음 시도가 도움이 될 수 있다. 반대로 driver에 고정된 문제가 있거나 특정 셀의 조건이 계속 어렵다면 실패한 셀에 대한 다음 실패 확률이 더 높을 수 있다.

array의 평균 q를 세제곱하는 계산도 조심해야 한다. 예를 들어 아주 약한 셀들이 반복해서 실패한다면 같은 셀의 세 번은 평균 셀에서 새로 뽑은 세 번과 다르다. 원문도 제조 결함이나 극단적인 편차에서 생긴 영구 fault와 시행마다 나타나는 transient fault를 구별한다. 원문 §IV-A2 및 §IV-B2

재시도 사이에 pulse를 강하게 만드는 별도 정책이라면 각 단계의 실패 확률도 달라진다. 그때 잔여 실패율과 평균 시간은 단계별 조건으로 다시 계산해야 한다. 가상 모델의 14.14ns와 10⁻⁶을 다른 정책에 옮겨 붙일 수는 없다.

확인이 틀리면 재시도 기회도 사라진다

verify는 read이므로 sensing 오류와 상태 변화의 영향을 받을 수 있다. 실패한 쓰기를 성공했다고 읽으면 재시도를 하지 않는다. 가령 첫 쓰기 실패 확률 q=0.01이고, 실패한 쓰기에서 verify가 잘못 성공으로 인정할 조건부 확률 r=10⁻⁴라고 하자. 첫 단계에서 잘못 통과할 확률만 q×r=10⁻⁶이다. 이 역시 설명용 수치지만, 이상적인 세 번 재시도의 잔여 실패와 이미 같은 크기다.

원하는 값을 읽었다는 사실과 안정적인 저장 상태를 확보했다는 보장의 범위도 같지는 않다. verify 경로와 최종 실패 보고가 신뢰성 설계의 일부여야 한다. 반복 읽기나 ECC 등 추가 기법은 각각의 비용과 정확성을 따로 평가한다.

MRAM Write Verify의 장점은 쉬운 쓰기를 짧게 끝내고 어려운 쓰기에 시간을 더 주는 데 있다. 그 이득을 설명하려면 평균 시간, 최대 시간, retry cap 이후 실패와 verify 오류를 함께 내놓아야 한다. 확인과 재시도를 붙인 만큼 완료의 의미도 분명하게 만드는 것이 이 기법의 핵심이다.