플래시 마모 계산기

얼마나 자주 쓰는지, 몇 개 섹터에 걸쳐 쓰기를 분산하는지를 바탕으로 플래시·EEPROM이 정격 program/erase 사이클 한계에 도달하기까지 걸리는 시간을 예측하세요.

플래시 마모 계산기

결과

쓰기 빈도-
마모까지 총 쓰기 횟수-
예상 수명-

플래시·EEPROM이 마모되는 이유

소거 사이클을 거칠 때마다 플래시 셀에서 전하를 가두는 산화막에 스트레스가 가해지고, 충분히 많은 사이클이 지나면 셀이 프로그래밍된 상태를 더 이상 안정적으로 유지하지 못하게 됩니다. 데이터시트는 이를 절대적인 한계가 아니라 보장되는 최소 program/erase 사이클 수로 명시하지만, 그 수치를 훨씬 넘겨 쓰면 데이터 손상 위험이 커집니다.

웨어레벨링이 그렇게 중요한 이유

매번 같은 물리적 위치에만 쓴다면 그 위치 혼자 모든 마모를 떠안게 되어, 칩의 나머지 부분은 멀쩡한데 그 위치만 먼저 고장날 수 있습니다. N개 섹터에 걸쳐 쓰기를 고르게 분산하면 실효 내구성이 N배로 늘어나는데, 이것이 플래시용으로 설계된 파일시스템이나 로깅 라이브러리가 고정된 한 지점을 계속 덮어쓰지 않고 거의 항상 쓰기 위치를 순환시키는 이유입니다.

현실적인 쓰기 간격 정하기

대부분의 실제 설계에서는 내구성 규격보다 쓰기 간격이 더 중요합니다. 하루에 한 번 로깅하는 센서는 일반적인 제품 수명 동안 보급형 플래시조차 의미 있게 마모시키지 않지만, 같은 플래시를 매초 쓰면 몇 시간 만에 마모됩니다. 그래서 데이터 로깅이나 웨어레벨링 파일시스템처럼 쓰기가 잦은 용도에서는 내구성 수치를 진지하게 고려해야 합니다.

FAQ

내구성 계산에서 '쓰기 1회'는 무엇을 의미하나요?

같은 물리적 위치에 대한 program/erase 사이클 1회를 의미하며, 블록 단위 소거 방식의 플래시에서는 몇 바이트만 바뀌었더라도 보통 페이지나 섹터 전체를 소거하고 다시 프로그래밍해야 하므로, 단순히 바이트 하나를 바꾸는 것과는 다릅니다.

플래시를 읽기만 해도 마모되나요?

아니요. 내구성 규격은 명확히 program/erase 사이클에 대한 것입니다. 플래시 셀을 아무리 여러 번 읽어도 쓰기 내구성은 소모되지 않지만, 일부 NAND 플래시에서는 매우 많은 읽기 횟수가 read disturb라는 별개의 현상을 일으킬 수 있습니다.

내 설계에는 웨어레벨링 섹터를 몇 개로 가정해야 하나요?

전적으로 사용 중인 파일시스템이나 라이브러리에 달려 있습니다. 전용 플래시 영역에 걸친 단순 라운드로빈 방식은 섹터 몇 개만 쓸 수도, 여유 공간 전체를 쓸 수도 있으므로, 임의의 숫자를 가정하지 말고 사용 중인 플래시 파일시스템의 문서를 확인하세요.

코인셀로 동작하는 장치가 플래시 쓰기를 아예 피하는 경우가 있는 이유는 무엇인가요?

플래시 쓰기는 짧지만 비교적 큰 전류 스파이크를 만들기 때문에, 배터리 용량이 제한적인 저전력 설계에서는 FRAM이나 배터리 백업 RAM을 선호하는 경우가 있습니다. 이들은 쓰기 속도가 더 빠르고 쓰기당 소비 전력도 훨씬 적으며 사이클 내구성도 훨씬 높습니다.

10,000 사이클이 어떤 마이크로컨트롤러의 내장 플래시에나 믿을 만한 수치인가요?

아니요. 흔히 인용되는 수치이긴 하지만 실제 데이터시트는 제각각입니다. 일부 보급형 마이크로컨트롤러 제품군은 1,000 사이클밖에 명시하지 않는 반면, 최신 부품의 일부 고내구성 메모리 영역은 100,000 사이클 이상을 명시하기도 합니다. 항상 사용 중인 부품의 데이터시트로 수치를 확인하세요.

관련 도구