답변:
NAND 플래시 칩에는 쓰기 및 지우기 작업에서 오류를 감지하는 컨트롤러가 내장되어 있으며 컨트롤러가 실패하면이를 경고합니다. 이 경우 컨트롤러는 다시 시도하거나 해당 블록을 불량으로 취급하고웨어 레벨링 알고리즘에서 매핑 할 수 있습니다. NAND 장치의 각 페이지에는 ECC 및 기타 형태의 오류 감지 및 허용 오차와 같은 메타 데이터를위한 예비 데이터 영역 과 함께 기본 데이터 영역이 있습니다. 컨트롤러는 예비 영역을 사용하여 자체 내결함성 체계를 결정할 수 있습니다. 해밍 코드 는 하나의 일반적인 체계이지만 간단한 패리티 비트 및 리드 솔로몬 코드를 포함하여 몇 가지가 있습니다.. 읽기 작업에서 일이 일치하지 않으면 컨트롤러는 원하는대로 자유롭게 할 수 있습니다. 이상적으로는 이러한 블록을웨어 레벨링 알고리즘에서 매핑하는 것이 좋으며 "너무 많은"블록이 실패 할 때까지 용량이 조금씩 줄어 듭니다. 여기서 "너무 많은"은 컨트롤러 내의 알고리즘 및 하드웨어 구조 크기에 따라 다릅니다. 많은 첫 번째 컷 컨트롤러 디자인은 단순히 운영 체제에 오류를 선언합니다.
이것은 MLC 관련 문제가 아닙니다. MLC 셀은 읽기 에러가 발생하기 쉬울 수 있지만, 에러에 대한 마진이 반드시 더 작기 때문에 SLC 셀은 거의 동일한 메커니즘으로 실패하며 컨트롤러에서 동일한 방식으로 처리 할 수 있습니다.
하드 디스크와 마찬가지로 운영 체제의 구현에 달려 있습니다. 컨트롤러는 단순히 쓰기 (삭제는 실제로 쓰기 작업 임)가 실패했다고보고하며 운영 체제 커널의 개발자 드라이버가 수행 할 작업을 결정합니다. 지금까지 내가 본 것에서 Microsoft와 Linux 구현은 단순히 오류 코드를 호출 응용 프로그램에 반환하므로 I / O 오류가 발생합니다.
한마디로 : 어떤 시점에서 "깨진"장치를 얻게됩니다.
SSD는 "웨어 레벨링 (wear leveling)"이라는 것을 사용하는데, 여기서 드라이브는 섹터 사용에 대한 통계를 유지하고 어느 시점에서 문제를 감지하면 일반 하드 드라이브에서와 같이 섹터를 예비로 이동시킵니다.