안녕하세요.
다름이 아니라, NAND는 ERASE 할 때 BLOCK 단위로 지운다고 알고 있습니다.
하지만, 제가 개발하는 제품 특성 상, 각각의 데이터 저장되어있기 때문에, 블록 단위로 지우면
안되고, 덮어씌어야할 하나의 데이터만 지워야 합니다. 하지만 덮어쓰기 전 데이터를 어떻게든 백업 시켜서
데이터가 보존되도록 해야하는데요. 혹시 NAND에서 이렇게 원하는 데이터를 백업시켜서 다시 재활용할 수
있는 방법이나, 블록 전체를 지우는 것이 아니라 덮어써야할 한개의 데이터만 삭제할 수 있는 방법이 있을까요?
전문가님들의 조언 부탁드립니다.
댓글 1
-
학생
2014.10.02 21:55
안녕하세요, 전문가는 아니지만 현재 대학원에서 배운지식을 말씀드리자면쓰기 전에 일단 지우는 연산이 필요한데 블록단위로 지워지기 때문에 그 블록내에 있는 유효한 데이터는 다른 블록에 쓰고 그 쓴 다른 블록 내에 덮어씁니다. 그래서 프리블록내에 있는 유효한 데이터 들의 주소들은 이제 수정전의 블록 주소로 가지고 오고 이렇게 물리적 주소는 동적으로 변하게 되어 FTL이 필요한 것입니다. 그리고 그 옮기기전의 블록은 invalid block이 되어 나중에 garbage collection에 의해 empty블록이 됩니다. 그렇기 때문에 낸드에서는 적어도 하나의 엠티 블록이 있어야 합니다.예를들어 1001이라는 데이터에 주소를 0x0000이라 가정하고 1001에서 두번째 데이터만 0에서 1로 바꾸고 싶다면 저 블록전체를 다른 엠티블록인 프리 블록에 1101을쓰고 이때 주소는 0x0000이 되는 것입니다.저도 전문가는 아니고 아직 석사과정중인 학생이라 잘설명했는지는 모르겠지만 도움이 되길 바랍니다.
.