블록의 주소를 이용하여 전원오류 복구가 가능하다. 사상 정보가 바뀌어 체크포인트를 기록할 때 체크포인트 블록내의 페이지들에 라운드-로빈(round-robin) 순서로 타임스탬프(timestamp)와 함께 기록한다. 전원이 꺼진 후 다시 켜질 때 FTL 은 사상 정보를 가져오기 위하여 시스템 블록을 읽어 체크포인트 블록의 주소를 얻은 후 체크포인트 블록을 찾는다. 이렇게 찾은 체크포인트 블록 내부 페이지들의 타임스탬프를 비교하여 가장 최신의 체크포인트 페이지를 찾아내면 전원이 꺼지기 직전의 사상 정보를 찾아내어 전원오류로부터 복구될 수 있다.
다음으로는 이와 같은 방법으로 전원오류 복구가 가능한 Vanilla FTL 의 전원오류 복구 시 정확성 기준을 알아본다.
체크포인트에서 보존하고 있기 때문에 전원이 켜질 시 이전의 사상정보를 읽어서 이전 값으로 복구가 가능하다. 반면 체크포인트를 쓰는 도중 전원오류가 발생하는 경우 체크포인트가 정상적으로 적히지 못한다면 데이터 블록과 사상 블록의 정보를 모두 잃기 때문에 전원이 다시 켜졌을 때 저장장치의 데이터를 복구할 수 없는 문제가 발생한다.
이러한 문제를 해결하기 위해 Vanilla FTL 에서는 체크포인트를 쓰는 도중 전원오류가 발생하는 경우 복구될 때 가장 최신의 체크포인트 읽는 방법을 사용한다. 체크포인트는 변경된 블록 사상 정보를 영구적으로 기록하기 위하여 플래시 메모리에 적힌다. 한 블록의 모든 섹터에 쓰기가 완료된 후에 변경된 사상 정보를 체크포인트 블록의 페이지에 적는 것이다. 따라서 정상적으로 적힌 체크포인트는 해당 블록 전체의 쓰기가 완료됨을 보장한다. 한 블록에 대한 쓰기가 완료된 후에만 체크포인트가 적히기 때문에 체크포인트가 완전히 적히기 전에 전원오류가 발생하면 해당 블록에 대한 쓰기를 보장할 수 없다. 따라서 전원오류가 발생하기 이전에 정상적으로 쓰인 체크포인트 중 최신의 체크포인트를 읽어서 데이터를 복구하면 해당 블록에 대한 쓰기가 전혀 진행되지 않고 이전의 데이터를 보존하고 있는 상태를 복구할 수 있다. 이와 같이 체크포인트는 가장 최신의 체크포인트를 읽어서 블록 단위로 이전의 값만 갖거나 새로운 값만 갖는 원자성(atomicity)를 제공한다.
따라서 Vanilla FTL 에서의 정확성은 최신의 체크포인트를 읽을 수 있는 경우 블록 단위로 이전 값 또는 새로운 값만을 갖는
상태를 갖는 것이다. 그림 16 은 3 개의 데이터 블록에 걸쳐있는 섹터들에 쓰기를 할 때 Vanilla FTL 에서 가질 수 있는 상태들을 보여준다.
이와 같이 전원오류 복구 시 최신의 체크포인트를 읽을 수 있으면 블록 단위의 원자성을 제공하는데, 고려하는 페이지 동작 모델의 종류와 플래시 메모리 셀의 구조에 따라 최신의 체크포인트 읽지 못하여 FTL 이 전원오류로부터 성공적으로 복구하지 못하는 경우가 생길 수 있다.
먼저, 고려할 수 있는 페이지 동작 모델로는 2 장에서 설명한 기본 페이지 모델과 3 장에서 설명한 확장 페이지 모델이 있고, 고려할 수 있는 셀 구조로는 SLC 와 MLC 가 있다. 전원오류 복구 과정에서 적용되는 페이지 모델에 따라 발생하는 문제와 셀 구조에 따라 발생하는 문제는 각각 독립적으로 발생할 수 있다. 표 3 은 여기서 생길 수 있는 각각의 경우 전원오류 복구 과정에서 생길 수 있는 문제를 설명한다.
...
New NewNew...
New Old Old...
경우 3)
...
New NewNew...
New NewNew...
경우 4)
...
New Old Old...
Old Old Old...
경우 2)
...
Old Old Old...
Old Old Old...
경우 1) 섹터 블록
그림 16 3개의 블록에 걸쳐 있는 섹터 쓰기를 수행했을 때 가 능한 경우
SLC MLC 기본
페이지 동작 모델
문제 없음
셀 구조상 짝을 이루는 관계에 의한 훼손되어 생기는
문제 발생
확장 페이지 동작 모델
부정확한 읽기에 의한 문제 발생
1) 셀 구조상 짝을 이루는 관계에 의한 훼손되어 생기는 문제 발생 2) 부정확한 읽기에 의한
문제 발생 표 3 Vanilla FTL에서 생길 수 있는 문제 상황
먼저, 2 장에서 설명한 기본 페이지 모델을 적용하고 셀 구조가 SLC 인 경우 전원오류 복구 시 체크포인트를 읽을 때 오류 상황이 발생하지 않는다. 반면 나머지 세 경우에서는 문제 상황이 발생할 수 있다.
4.2.2 짝을 이루는 관계에 의한 훼손으로 발생하는 문제 1 먼저 MLC 구조를 사용하는 경우 적용하는 동작 모델과 관계없이 짝을 이루는 관계에 의한 훼손이 문제를 일으킬 수 있다.
그림 17 은 MLC 셀의 구조상 짝을 이루는 관계에 있는 두 페이지가 연속되어 배치되어 있는 구조에서 문제 가능한 문제를 보여준다.
짝을 이루는 관계에 있는 두 페이지 중 한 페이지를 쓰다가 전원오류가 발생하면 해당 페이지와 짝을 이루는 관계에 있는 체크포인트 페이지의 성공적으로 쓰인 체크포인트 데이터까지 훼손시킬 수 있다. 이 경우 최신의 체크포인트(CP)를 잃고 그 전의 체크포인트의 사상정보는 이미 손상되었기 때문에 정상적인 전원오류 복구가 불가능하다. 이러한 문제 상황은 짝을 이루는 두 체크포인트 페이지 중 한 페이지에만 체크포인트를 적어, 마치 SLC 칩에서 체크포인트를 적는 것 같은 효과를 만들어서 해결이 가능하다.
4.2.3 짝을 이루는 관계에 의한 훼손으로 발생하는 문제 2 MLC 구조를 사용하는 경우 또 다른 문제가 발생할 수 있다.
그림 18 은 기본 페이지 동작 모델을 MLC 칩에 적용할 경우 발생 가능한 문제를 보여준다. 만약 FTL 에서 전원오류 복구 과정의
paired page CP0
CP1 CP2 CP3
Block A Block A
CP1 CP0
해결 방안
짝을 이루는 관계에 의한 붕괴
Unreliable state
최신체크포인트오류 발생
CP
체크포인트그림 17 짝을 이루는 관계에 의한 훼손으로 발생하는 문제 1
최신의 체크포인트(CP)를 검색하는 알고리즘이 각 체크포인트 블록의 첫 페이지들의 타임스탬프만 먼저 비교한다면 그림 18 과 같은 상황에서 문제가 발생할 수 있다. CP10 을 적는 도중 전원오류가 발생한 경우 CP9 를 찾아 읽어야 하지만 해당 체크포인트 블록의 첫 페이지인 CP8 가 짝 관계인 CP10 의 오류에 의해 훼손되어 체크포인트 검색 알고리즘이 CP9 를 찾지 못하고 CP7 을 최신의 체크포인트로 읽게 되어 정상적인 오류 복구가 불가능하게 된다. 이 문제는 검색 알고리즘을 수정함으로써 해결 가능하다.
페이지 상태에 확장 페이지 모델을 적용하는 경우 3 장에서 정의한 부정확한 읽기에 의한 문제가 발생할 수 있다. SLC 칩의 경우 부정확한 읽기에 의한 문제만 생기지만, MLC 칩의 경우는 부정확한 읽기에 의한 문제와 짝을 이루는 관계에 의한 훼손으로 발생하는 문제가 각각 독립적으로 발생된다. 따라서 부정확한 읽기에 의한 문제만을 알아보기 위해 SLC 칩에 확장 페이지 모델을 적용한 경우의 문제만 알아본다.
Unreliable state
CP4 CP1
CP2 CP3
Block A
CP5 CP6 CP7
Block B
CP8 CP9 CP10
Block C
CP0
짝을 이루는 관계에 의한 붕괴 체크포인트
CP
오류 발생 최신 체크포인트
그림 18 짝을 이루는 관계에 의한 훼손으로 발생하는 문제 2
4.2.4 부정확한 읽기에 의하여 발생하는 문제 1
확장 페이지 모델을 적용하면 SLC 칩을 이용하는 경우에도 4.2.3 에서 살펴본 전원오류 복구 과정의 최신의 체크포인트(CP)를 검색하는 알고리즘에서 부정확한 읽기가 발생할 경우에도 문제가 발생할 수 있는데 그림 19 가 이러한 문제 상황을 보여준다.
최신 체크포인트 검색 알고리즘에서 각 체크포인트 블록의 첫 페이지들의 타임스탬프만 먼저 비교 한다면 문제가 발생할 수 있다.
CP8 에서 부정확한 읽기가 발생하여 CP9 를 찾아 읽어야 하지만 해당 체크포인트 블록의 첫 페이지인 CP8 이 올바르지 않은 데이터로 읽히기 때문에 체크포인트 검색 알고리즘이 CP9 를 찾지 못하고 CP7 을 최신의 체크포인트로 읽게 되어 정상적인 오류 복구가 불가능하게 된다. 이 문제는 검색 알고리즘을 수정함으로써 해결 가능하다.
CP3
Block 0
CP0 CP2 CP1
CP7
Block 1
CP4 CP6 CP5
Block 2
CP8 CP9
ECC ERR
CP 체크포인트
데이터를 신뢰할 수 없는 상태 오류 발생
최신 체크포인트
그림 19 부정확한 읽기에 의하여 발생하는 문제 1
4.2.5 부정확한 읽기에 의하여 발생하는 문제 2
그림 20 은 데이터를 신뢰할 수 없는 상태에 있는 체크포인트 페이지에서 부정확한 읽기가 발생할 경우 가능한 두 가지의 전원오류 복구 과정을 나타낸다.
데이터를 신뢰할 수 없는 상태에 있는 CP2 에서 부정확한 읽기가 발생할 경우 CP2 가 정상적으로 읽히게 되어 CP2 의 최신 사상정보를 이용하여 정상적으로 전원오류 복구가 가능하다. 반면 CP2 가 올바르지 않은 데이터로 읽히게 되면 그 전 최신 체크포인트인 CP1 의 사상정보를 이용하여 정상적으로 전원오류 복구가 이루어 진다.
이처럼 부정확한 읽기가 발생하면 두 가지 방법으로 정상적인 전원오류 복구가 가능해 보이지만 문제가 발생할 수 있다. 그림 21 은 부정확한 읽기에 의하여 발생하는 또 다른 문제를 보여준다.
CP0 CP2 CP1
Block A
CP0 CP2 CP1
Block A 체크포인트 쓰기 (전원오류 발생)
CP0 CP2 CP1
Block A
CP0 CP2 CP1
Block A
ECC ERR ECC OK
부정확한 읽기 체크포인트 읽기 (전원오류 복구)
정상적으로 전원오류 복구
CP1을 다시 읽은 후 정상적으로 전원오류 복구
CP0 CP2 CP1
Block A
CP 체크포인트
데이터를 신뢰할 수 없는 상태 오류 발생 최신 체크포인트
그림 20 체크포인를 읽는 과정에서 발생하는 부정확한 읽기