배드 블록 관리란?
배드 블록 관리는 배드 블록을 감지하고 표시하며, 불필요한 블록을 대체하기 위해 예비 여분 용량을 사용하여 배드 블록에 데이터가 쓰여지는 것을 막아 제품 신뢰성을 높입니다.
배드 블록의 2가지 종류
낸드 플래시 메모리 배드블록에는 초기 배드 블록과 사후 배드 블록의 두 가지 유형이 있습니다. 초기 배드 블록은 제조 과정에서 생성되는 것으로 일반적으로 용량의 약 1 %를 차지합니다. 이 배드 블록은 생산 과정에서 피할 수 없는 결과입니다. 사후 배드 블록은 반복적인 프로그램 및 지우기 사이클(P/E cycle)중에 발생하는 것으로 플래시 메모리의 사용기간 중 발생됩니다. 이를 대비하기 위해 플래시 제품에서는 전체 용량의 약 5 %는 사후 배드 블록을 대체하기 위한 버퍼 블록으로 설정됩니다.
배드 블록 관리 방법
초기 배드 블록의 경우, NAND 플래시 장치를 처음 사용할 때 배드 블록 표가 생성되고 컨트롤러에 내장 된 관리 프로그램이 모든 블록을 검사합니다. 배드 블록이 발견 된 경우 프로그램은 배드 블록 표에 해당 블록을 표시하여 데이터가 기록되는 것을 방지합니다. 사후 배드 블록은 NAND 플래시 장치 사용 중에 생성됩니다. 컨트롤러가 사후 배드 블록을 발견하면, 배드 블록 테이블에 추가하고, 원래 블록에 기록 된 데이터를 유효한 블록으로 이동시켜 데이터 손실을 방지합니다. 아래 그림을 참조하십시오.
그림과 같이 컨트롤러는 먼저 쓸 수 없는 블록에 대해 ECC (Error Correction Code) 알고리즘을 수행합니다. 이 작업이 실패하면 유효한 데이터는 사전 예약 된 예비 블록으로 이동됩니다. 데이터가 이동 된 후에 배드 블록이 표시되고 배드 블록 테이블에 기록되어 데이터가 이 블록에 다시 기록되지 않도록 합니다.
결론
반복되는 프로그램 / 지우기 사이클을 사용하면 양호한 블록이 점차적으로 줄어들기 때문에 지속적으로 사용할 수 없는 블록을 확인하고 이를 사용하지 않는 블록으로 대체하는 것이 중요합니다. 배드 블록 관리 기능은 플래시 장치의 수명 향상에 필수적이며, 읽기/쓰기 오류를 최소화하여 신뢰성을 높여주기 때문에 플래시 제품에 반드시 필요한 기능입니다.