(51) Int. Cl. G06F 12/08 (2006.01) (19) 대한민국특허청 (KR) (12) 공개특허공보 (A) (11) 공개번호 (43) 공개일자 10-2007-0068796 2007 년 07 월 02 일 (21) 출원번호 10-2005-0130795 (22) 출원일자 2005년12월27일 심사청구일자 2005년12월27일 (71) 출원인삼성전자주식회사경기도수원시영통구매탄동 416 (72) 발명자신동군서울관악구봉천 6 동 1681-21 이시윤서울강남구역삼 2 동역삼래미안아파트 102 동 503 호김장환서울송파구잠실동 299-8 대훈연립 401 호송동현경기용인시풍덕천 1 동풍림아파트 106 동 1008 호 (74) 대리인정상빈특허법인가산 전체청구항수 : 총 24 항 (54) 비휘발성메모리가캐쉬로사용되는저장장치및그관리방법 (57) 요약 본발명은비휘발성메모리가캐쉬로사용되는저장장치및그관리방법에관한것으로서, 더욱상세하게는전원이차단되어도데이터가남아있는비휘발성메모리를캐쉬로사용한비휘발성메모리가캐쉬로사용되는저장장치및그관리방법에관한것이다. 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치는, 저장매체, 상기주저장매체의캐쉬로사용되며, 데이터의고정여부에따라고정영역및비고정영역을포함하는비휘발성메모리, 및상기비휘발성메모리에할당되는물리블록을가상주소를통해관리하는블록관리부를포함한다. 대표도 도 2 특허청구의범위 청구항 1. - 1 -
주저장매체 ; 상기주저장매체의캐쉬로사용되며, 데이터의고정여부에따라고정영역및비고정영역을포함하는비휘발성메모리 ; 및 상기비휘발성메모리에할당되는물리블록을가상주소를통해관리하는블록관리부를포함하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 2. 제 1 항에있어서, 상기블록관리부는, 상기비휘발성메모리에물리블록을할당하는블록할당부 ; 상기할당된물리블록을회수하는블록회수부 ; 배드블록을관리하는배드블록관리부 ; 전원차단시정전복구를위한정전복구부 ; 상기물리블록번호와상기물리블록번호에할당된가상블록번호의맵핑관계를나타내는블록맵핑테이블을관리하는블록맵핑테이블관리부 ; 및 상기할당된물리블록에대한할당블록리스트및빈물리블록에대한자유블록리스트를저장하는리스트저장부를포함하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 3. 제 2 항에있어서, 상기블록할당부는, 상기자유블록리스트에서가장앞에위치한물리블록을상기고정영역및상기비고정영역에할당하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 4. 제 3 항에있어서, 상기자유블록리스트는, 각물리블록이사용빈도가적은순으로정렬되는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 5. 제 3 항에있어서, 상기블록할당부는, 상기할당된물리블록을상기할당블록리스트의마지막에위치시키는비휘발성메모리가캐쉬로사용되는저장장치. - 2 -
청구항 6. 제 5 항에있어서, 상기블록맵핑테이블관리부는, 상기할당블록리스트및상기자유블록리스트에포함된물리블록번호에서로반대방향으로부터가상블록번호를할당한블록맵핑테이블을저장하며, 상기할당블록리스트의마지막에위치한물리블록번호에가상블록번호를할당하여상기블록맵핑테이블을갱신하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 7. 제 2 항에있어서, 상기블록회수부는, 상기할당블록리스트내의각물리블록에서유효페이지수를산출하고, 상기산출결과상기유효페이지수가가장적은물리블록부터블록회수를수행하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 8. 제 7 항에있어서, 상기블록회수부는, 상기자유블록리스트의물리블록을상기할당블록리스트의마지막에위치시키며, 상기블록회수를수행할물리블록내의유효페이지를상기마지막에위치된물리블록으로이동시키는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 9. 제 8 항에있어서, 상기블록회수부는, 상기유효페이지가모두이동되어빈물리블록을사용빈도에따라상기자유블록리스트에추가하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 10. 제 2 항에있어서, 상기배드블록관리부는, 상기할당블록리스트내에서배드블록이발생한물리블록의데이터를상기자유블록리스트에서새로할당된물리블록에이동시키고, 상기배드블록이발생한물리블록은할당에서제외시키는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 11. 제 10 항에있어서, 상기배드블록관리부는, 상기배드블록이발생된물리블록의위치에상기자유블록리스트로부터새로할당된물리블록을삽입하고, - 3 -
상기블록맵핑테이블관리부는, 상기배드블록이발생한물리블록번호에할당된가상블록번호를상기삽입된물리블록번호에할당하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 12. 제 2 항에있어서, 상기정전복구부는, 전원차단시상기할당블록리스트를추출하여상기블록맵핑테이블을복구하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 13. 주저장매체의캐쉬로사용되는비휘발성메모리의영역을데이터의고정여부에따라고정영역및비고정영역으로구분하는단계 ; 및 상기고정영역및상기비고정영역에할당되는물리블록을각물리블록에할당되는가상주소를통해관리하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 14. 제 13 항에있어서, 상기물리블록을관리하는단계는, 상기비휘발성메모리에물리블록을할당하는단계 ; 상기할당된물리블록을회수하는단계 ; 배드블록을관리하는단계 ; 전원차단시정전복구를수행하는단계 ; 상기물리블록번호와상기물리블록번호에할당된가상블록번호의맵핑관계를나타내는블록맵핑테이블을관리하는단계 ; 및 상기할당된물리블록에대한할당블록리스트및빈물리블록에대한자유블록리스트를저장하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 15. 제 14 항에있어서, 상기블록을할당하는단계는, 상기자유블록리스트에서가장앞에위치한물리블록을상기고정영역및상기비고정영역에할당하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 16. 제 15 항에있어서, - 4 -
상기자유블록리스트는, 각물리블록이사용빈도가적은순으로정렬되는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 17. 제 15 항에있어서, 상기블록을할당하는단계는, 상기할당된물리블록을상기할당블록리스트의마지막에위치시키는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 18. 제 17 항에있어서, 상기블록맵핑테이블을관리하는단계는, 상기할당블록리스트및상기자유블록리스트에포함된물리블록번호에서로반대방향으로부터가상블록번호를할당한블록맵핑테이블을저장하는단계 ; 및 상기할당블록리스트의마지막에위치한물리블록번호에가상블록번호를할당하여상기블록맵핑테이블을갱신하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 19. 제 14 항에있어서, 상기블록을회수하는단계는, 상기할당블록리스트내의각물리블록에서유효페이지수를산출하는단계 ; 및 상기산출결과상기유효페이지수가가장적은물리블록부터블록회수를수행하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 20. 제 19 항에있어서, 상기블록을회수하는단계는, 상기자유블록리스트의물리블록을상기할당블록리스트의마지막에위치시키며, 상기블록회수를수행할물리블록내의유효페이지를상기마지막에위치된물리블록으로이동시키는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 21. 제 20 항에있어서, 상기블록을회수하는단계는, 상기유효페이지가모두이동되어빈물리블록을사용빈도에따라상기자유블록리스트에추가하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 22. - 5 -
제 14 항에있어서, 상기배드블록을관리하는단계는, 상기할당블록리스트내에서배드블록이발생한물리블록의데이터를상기자유블록리스트에서새로할당된물리블록에이동시키고, 상기배드블록이발생한물리블록은할당에서제외시키는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 23. 제 22 항에있어서, 상기배드블록을관리하는단계는, 상기배드블록이발생된물리블록의위치에상기자유블록리스트로부터새로할당된물리블록을삽입하는단계 ; 및 상기배드블록이발생한물리블록번호에할당된가상블록번호를상기삽입된물리블록번호에할당하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 청구항 24. 제 14 항에있어서, 상기정전복구를수행하는단계는, 전원차단시상기할당블록리스트를추출하여상기블록맵핑테이블을복구하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의관리방법. 명세서 발명의상세한설명 발명의목적 발명이속하는기술및그분야의종래기술 본발명은비휘발성메모리가캐쉬로사용되는저장장치및그관리방법에관한것으로서, 더욱상세하게는전원이차단되어도데이터가남아있는비휘발성메모리를캐쉬로사용한비휘발성메모리가캐쉬로사용되는저장장치및그관리방법에관한것이다. 일반적인저장장치 (10) 는도 1 과같이, 호스트 (11), 데이터버퍼 (12) 및주저장매체 (13) 를포함할수있다. 이때, 호스트 (11) 는사용자의명령에따라주저장매체 (13) 와데이터를주고받는역할을하게되며, 데이터버퍼 (12) 는호스트 (11) 와주저장매체 (13) 사이에속도의차이를완충시키는역할을하게된다. 다시말해서, 호스트 (11) 로부터전송된데이터는주저장매체 (13) 에기록될때까지데이터버퍼 (12) 에저장되며, 주저장매체 (13) 로부터전송된데이터는호스트 (11) 로전송될때까지데이터버퍼 (12) 에저장되는것이다. 이러한저장장치 (10) 에서데이터버퍼 (12) 는일반적으로휘발성메모리로구성되어있기때문에저장장치 (10) 로공급되는전원이차단되는경우데이터버퍼 (20) 에존재하는데이터는모두사라지게된다. 한편, 저장장치 (10) 는액세스효율을높이기위해캐쉬 (Cache) 를사용하게된다. 이러한캐쉬는주저장매체 (13) 에저장될데이터의일부가저장되어있어호스트 (11) 가캐쉬에저장된데이터를읽어올때는주저장매체 (13) 를액세스할필요가없기때문에액세스효율이높아지게된다. - 6 -
그러나, 데이터버퍼 (12) 는전원이차단되는경우, 데이터가모두사라지기때문에그크기를늘린다하더라도캐쉬로사용되기어렵다. 또한, 주저장매체 (13) 에항상전원이공급되어야하기때문에소비되는전력을감소시키는데한계가있다는문제점이있다. 따라서, 최근에는저장장치 (10) 에비휘발성메모리를캐쉬로사용하여호스트 (11) 가비휘발성메모리에저장된데이터를읽고쓸때는주저장매체 (13) 의전원을차단하여소비되는전력이감소될수있도록하고있다. 그러나, 비휘발성메모리를저장장치 (10) 의캐쉬로사용하는경우, 데이터의고정여부, 즉소정데이터가비휘발성메모리에항상고정위치되는고정영역과빈번하게변경되는비고정영역에대한데이터를효과적으로관리하고, 갑작스런전원차단으로부터데이터를안전하게보호하기위한방안이요구되고있다. 또한, 주저장매체 (13) 로전원이공급되는시간을최소화시키기위한블록회수방안및비휘발성메모리에서각물리블록에대한사용빈도를고려하여비휘발성메모리의수명을증가시킬수있는방안등이요구되고있다. 일본공개특허 2003-256289 는어드레스지정가능한플래시메모리시스템에있어, 블록으로편성된상기플래시메모리지정위치를원형시퀀스 ( 물리섹터어드레스의최하위와최상의두곳에서기록과삭제가일어남 ) 에따라주기적으로블록지정삭제를수행함으로써플래시메모리의 Wear levels 의일관성을유지할수있는시스템을개시하고있으나, 고정영역및비고정영역에대한데이터를효과적으로관리하고, 갑작스런전원차단으로인한데이터보호하며, 블록회수및사용빈도조절을통한수명연장에대한방안은제안되고있지않다. 발명이이루고자하는기술적과제 본발명은캐쉬로사용되는비휘발성메모리의영역을데이터의고정여부에따라고정영역및비고정영역으로관리하고, 블록회수를통해블록의사용빈도를균등화할수있는비휘발성메모리가캐쉬로사용되는저장장치및그관리방법을제공하는데그목적이있다. 또한, 본발명은갑작스런전원차단시복구를용이하게수행할수있는비휘발성메모리가캐쉬로사용되는저장장치및그관리방법을제공하는데그목적이있다. 본발명의목적은이상에서언급한목적들로제한되지않으며, 언급되지않은또다른목적들은아래의기재로부터당업자에게명확하게이해되어질수있을것이다. 발명의구성 상기목적을달성하기위하여, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치는, 주저장매체, 상기주저장매체의캐쉬로사용되며, 데이터의고정여부에따라고정영역및비고정영역을포함하는비휘발성메모리, 및상기비휘발성메모리에할당되는물리블록을가상주소를통해관리하는블록관리부를포함한다. 또한, 상기목적을달성하기위하여, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치의관리방법은, 주저장매체의캐쉬로사용되는비휘발성메모리의영역을데이터의고정여부에따라고정영역및비고정영역으로구분하는단계, 및상기고정영역및상기비고정영역에할당되는물리블록을각물리블록에할당되는가상주소를통해관리하는단계를포함한다. 기타실시예들의구체적인사항들은상세한설명및도면들에포함되어있다. 본발명의이점및특징, 그리고그것들을달성하는방법은첨부되는도면과함께상세하게후술되어있는실시예들을참조하면명확해질것이다. 그러나본발명은이하에서개시되는실시예들에한정되는것이아니라서로다른다양한형태로구현될수있으며, 단지본실시예들은본발명의개시가완전하도록하고, 본발명이속하는기술분야에서통상의지식을가진자에게발명의범수를완전하게알려주기위해제공되는것이며, 본발명은청구항의범주에의해정의될뿐이다. 명세서전체에걸쳐동일참조부호는동일구성요소를지칭한다. 이하, 본발명의실시예들에의하여비휘발성메모리가캐쉬로사용되는저장장치및그관리방법을설명하기위한블록도또는처리흐름도에대한도면들을참고하여본발명에대해설명하도록한다. 이때, 처리흐름도도면들의각블록과흐름도도면들의조합들은컴퓨터프로그램인스트럭션들에의해수행될수있음을이해할수있을것이다. 이들컴퓨터 - 7 -
프로그램인스트럭션들은범용컴퓨터, 특수용컴퓨터또는기타프로그램가능한데이터프로세싱장비의프로세서에탑재될수있으므로, 컴퓨터또는기타프로그램가능한데이터프로세싱장비의프로세서를통해수행되는그인스트럭션들이흐름도블록 ( 들 ) 에서설명된기능들을수행하는수단을생성하게된다. 이들컴퓨터프로그램인스트럭션들은특정방식으로기능을구현하기위해컴퓨터또는기타프로그램가능한데이터프로세싱장비를지향할수있는컴퓨터이용가능또는컴퓨터판독가능메모리에저장되는것도가능하므로, 그컴퓨터이용가능또는컴퓨터판독가능메모리에저장된인스트럭션들은흐름도블록 ( 들 ) 에서설명된기능을수행하는인스트럭션수단을내포하는제조품목을생산하는것도가능하다. 컴퓨터프로그램인스트럭션들은컴퓨터또는기타프로그램가능한데이터프로세싱장비상에탑제되는것도가능하므로, 컴퓨터또는기타프로그램가능한데이터프로세싱장비상에서일련의동작단계들이수행되어컴퓨터로실행되는프로세스를생성해서컴퓨터또는기타프로그램가능한데이터프로세싱장비를수행하는인스트럭션들은흐름도블록 ( 들 ) 에서설명된기능들을실행하기위한단계들을제공하는것도가능하다. 또한, 각블록은특정된논리적기능 ( 들 ) 을실행하기위한하나이상의실행가능한인스트럭션들을포함하는모듈, 세그먼트또는코드의일부를나타낼수있다. 또, 몇가지대체실행예들에서는블록들에서언급된기능들이순서를벗어나서발생하는것도가능함을주목해야한다. 예컨대, 잇달아도시되어있는두개의블록들은사실실질적으로동시에수행되는것도가능하고또는그블록들이때때로해당하는기능에따라역순으로수행되는것도가능하다. 도 2 는본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치가도시된도면이다. 도시된바와같이, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치 (100) 는, 주저장매체 (110), 주저장매체 (110) 의캐쉬로사용되는비휘발성메모리 (120) 및비휘발성메모리 (120) 의물리블록 (Physical Block, 이하 PB 라함 ) 을가상주소를통해관리하는블록관리부 (130) 를포함할수있다. 본발명의실시예에서주저장매체 (110) 는하드디스크드라이브 (Hard Disk Drive) 등의대용량저장매체로이해될수있으며, 비휘발성메모리 (120) 는전원이차단된경우에도데이터가사라지지않는플래시메모리등으로이해될수있다. 한편, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치 (100) 는사용자의명령에따라주저장매체 (110) 와데이터를송수신하는호스트 (140) 와연결될수있으며, 본발명의실시예에서호스트 (140) 는블록관리부 (130) 와연결될수있다. 비휘발성메모리 (120) 는데이터가고정되는고정영역및데이터가빈번하게변경되는비고정영역으로구분될수있다. 고정영역은주저장매체 (110) 의캐쉬로사용되는비휘발성메모리 (120) 에항상상주해야하는데이터가저장되는영역을의미하고, 비고정영역은주저장매체 (110) 와데이터의이동이빈번하게일어나는영역을의미한다. 블록관리부 (130) 는비휘발성메모리 (120) 에 PB 를할당하는블록할당부 (131), 할당된 PB 를회수하는블록회수부 (132), 배드블록을관리하는배드블록관리부 (133), 전원차단시정전복구를위한정전복구부 (134), 비휘발성메모리 (120) 의물리블록번호 (Physical Block Number, 이하 PBN 이라함 ) 와가상블록번호 (Virtual Block Number, 이하 VBN 이라함 ) 의맵핑관계를관리하는블록맵핑테이블관리부 (135), 할당블록리스트및자유블록리스트를저장하는리스트저장부 (136) 를포함할수있다. 블록할당부 (131) 는리스트저장부 (136) 에저장된자유블록리스트에따라비휘발성메모리 (120) 의고정영역및비고정영역에 PB 를할당할수있다. 이때, 자유블록리스트는데이터가존재하지않는빈 PB 를포함하며, 자유블록리스트는각 PB 의사용빈도 (Wear Level) 순에따른 PBN 순으로정렬될수있다. 다시말해서, 자유블록리스트는가장적게사용된 PBN 이가장앞에위치하게되며, 가장많이사용된 PBN 이가장뒤에위치하게되는것이다. 이러한자유블록리스트는일반적으로비휘발성메모리 (120) 의스패어 (Spare) 영역에저장되어있으며, 후술할정전복구부 (134) 는갑작스런전원차단후재부팅시에는스패어영역에저장된값을통해자유블록리스트를재구성할수있다. 도 3 은본발명의실시예에따른가상블록주소공간이도시된도면이다. 블록할당부 (131) 는비휘발성메모리 (120) 의고정영역및비고정영역에 PB 를할당할경우, 해당 PBN 에도 3 과같은가상블록주소공간의 VBN 을할당할수있다. 이러한가상블록주소공간의 VBN 은고정영역및비고정영역을구분하기위해서로반대방향으로부터순차적으로비휘발성메모리 (120) 의 PBN 과맵핑될수있다. 또한, 가상블록주소공간에서각 VBN 은다수의페이지로이루어질수있으며, 가상블록주소공간은물리주소공간에비하여큰크기를가질수있다. 이후, 블록할당부 (131) 는자유블록리스트에서가장앞에위치한 PB 를고정영역또는비고정영역에할당하게되며, 할당된 PB 의 PBN 과 VBN 의맵핑관계를기록한블록맵핑테이블을전술한블록맵핑테이블관리부 (135) 에저장할수있 - 8 -
다. 이러한블록맵핑테이블또한전술한가상블록주소공간과마찬가지로고정영역및비고정영역에따라서로반대방향으로순차적으로할당될수있다. 이때, 블록할당부 (131) 는자유블록리스트에서소정 PB 를고정영역또는비고정영역에할당한후, 리스트저장부 (136) 에저장된할당블록리스트및자유블록리스트를갱신하게된다. 구체적으로, 블록할당부 (131) 는고정영역또는비고정영역에할당된 PB 는자유블록리스트에서제거하게되며, 할당된 PB 는할당블록리스트의마지막에추가하게된다. 도 4 는본발명의실시예에따른할당블록리스트및자유블록리스트가도시된도면이다. 도시된바와같이, 본발명의실시예에따른할당블록리스트 (210) 는 PB(230) 의사용빈도 (231) 가가장적은 PBN 부터순차적으로할당된것을알수있다. 또한, 자유블록리스트 (220) 는 PB(230) 에서할당되지않은 PBN 이사용빈도 (231) 순에따라정렬된것을알수있다. 도 5 는전술한도 4 의할당블록리스트의물리블록번호와가상블록번호를맵핑한블록맵핑테이블이도시된도면이다. 도시된바와같이, 본발명의실시예에따른블록맵핑테이블 (240) 은, VBN 에 PBN 을맵핑하며, 고정영역및비고정영역에따라서로반대방향으로부터순차적으로맵핑되는것을알수있다. 한편, 비휘발성메모리 (120) 에데이터가기록될때에는데이터와더불어스패어영역에다양한메타데이터가함께저장될수있다. 본발명의실시예에서메타데이터는비휘발성메모리 (120) 의메타데이터저장부 (121) 에저장될수있다. 이때, 메타데이터저장부 (121) 에저장되는메타데이터로는, 논리블록주소 (Logical Block Address, 이하 LBA 라함 ), 고정영역및비고정영역데이터지시자, 블록의사용빈도, 복구마크등을포함할수있다. 이때, LBA 는할당블록리스트와각 PB 에맵핑된 LBA 를통해갑작스런전원차단시정전복구를위해사용될수있으며, 고정영역및비고정영역데이터지시자는고정영역및비고정영역을구분하고정전복구를위해사용될수있고, 사용빈도는사용빈도순으로자유블록리스트생성을위해사용될있으며, 복구마크는정전복구를위한것으로할당블록리스트와자유블록리스트가연결되어함께비휘발성메모리 (120) 에저장될경우, 자유블록리스트의처음에복구마크를기록하여할당블록리스트와자유블록리스를구분하기위해사용될수있다. 이때, 할당블록리스트와자유블록리스트가연결되어저장된다는것은, 실제할당블록리스트와자유블록리스트는하나의리스트로이루어진것으로이해될수있으며, 복구마크를자유블록리스트의처음에기록하여할당블록리스트와자유블록리스트를구분하게된다. 블록회수부 (132) 는할당블록리스트내각 PB 에서유효한페이지의수를산출한다. 이때, 블록회수부 (132) 는유효한페이지의수가가장적은 PB 부터블록회수를수행할수있다. 다시말해서, 블록회수부 (132) 는소정 PB 내에유효한페이지의수가가장적다라고하는것은, 유효한데이터가적다는것으로판단할수있고, 이로인해블록회수부 (132) 는유효한페이지가가장적은 PB 부터블록회수를수행하게된다. 블록회수부 (132) 는자유블록리스트에서가장앞에위치한 PB 을할당하여할당블록리스트의마지막에위치시키고, 블록회수를수행하려는 PB 내의유효한페이지를자유블록리스트를할당블록리스트의마지막에위치된블록으로이동시키게된다. 또한, 블록회수부 (132) 는할당블록리스트의마지막에위치된 PB 으로유효한페이지를모두이동된후, 블록회수가수행된 PB 는사용빈도순에따라다시자유블록리스트에추가하게된다. 이때, 블록할당부 (131) 는블록회수를위해할당블록리스트에마지막에위치된 PB 의 PBN 에가상블록주소공간의 VBN 를할당하여가상블록주소공간을갱신하게된다. 도 6 은본발명의실시예에따른블록회수이전의물리블록이도시된도면이다. 도시된바와같이, 할당블록리스트 (310) 는 PBN5, PBN0, PBN7, PBN2 를포함하고, 각 PBN 의유효페이지수 (311) 는 5, 4, 6, 3 인것을알수있다. 또한, 자유블록리스트 (320) 는 PBN3, PBN6, PBN1, PBN4 를포함하고, 블록맵핑테이블 (330) 은각 VBN 에고정영역및비고정영역에따라서로반대방향으로부터할당블록리스트 (310) 의 PBN 들이맵핑된것을알수있다. 도 7 은본발명의실시예에따라블록회수이후의물리블록이도시된도면이다. 이때, 도 7 은전술한도 6 에서 PBN0 의유효페이지는 PBN6 으로이동되고, PBN2 및 PBN5 의유효페이지는 PBN3 으로이동되어블록회수가수행된경우를예를들어설명하기로한다. - 9 -
도시된바와같이, 할당블록리스트 (310) 에서는전술한도 6 에서 PBN0, PBN2 및 PBN6 이블록회수가수행되었기때문에 PBN0, PBN2 및 PBN6 이제거된것을알수있으며, 자유블록리스트 (320) 에는블록회수가수행된 PBN0, PBN2 및 PBN6 이사용빈도에따라추가된것을알수있다. 또한, 블록맵핑테이블 (330) 은블록회수가수행되지않은 PBN7 은그대로유지되는반면, 블록회수가수행되어자유블록리스트 (320) 로부터할당블록리스트 (310) 에추가된 PBN3 및 PBN6 은새로운 VBN 과맵핑되었음을알수있다. 배드블록관리부 (133) 는할당블록리스트내의소정 PB 에서배드블록이발생하게되면, 해당 PB 를할당블록리스트에서제거하게되며, 제거되는 PB 에기록된데이터들은자유블록리스트로부터새로운 PB 를할당받아이동시키게된다. 이때, 배드블록관리부 (133) 는배드블록에기록된데이터를옮기기위해자유블록리스트로부터할당받은 PB 를제거되는배드블록의위치에삽입하게된다. 도 8 은본발명의실시예에따라발생된배드블록이도시된도면이다. 도시된바와같이, 배드블록관리부 (133) 는할당블록리스트 (410) 의 PBN5 에서배드블록이발생한경우, 자유블록리스트 (420) 으로부터 PB 를새로할당받게되며, 새로할당된 PB 로배드블록에기록된데이터를이동시키게된다. 이때, 배드블록이제거되기전에는블록맵핑테이블 (430) 에는 PBN5 가 VBN7 과맵핑되어있으나, 배드블록이제거되면서새로할당된 PB 에대한 PBN 이 VBN7 과맵핑된다. 도 9 는본발명의실시예에따라제거된배드블록이도시된도면이다. 도시된바와같이, 배드블록관리부 (133) 는전술한도 8 에서할당블록리스트 (410) 에서배드블록이발생한 PBN5 에기록된데이터를자유블록리스트 (420) 에서새로할당받은 PBN6 으로이동시키고, PBN6 을배드블록이발생한 PBN5 의위치에삽입하게된다. 이때, 배드블록이발생한 PBN5 는자유블록리스트 (420) 에추가되지않고더이상할당되지않게된다. 또한, 블록맵핑테이블 (430) 에서도배드블록인 PBN5 와맵핑된 VBN7 을새로할당된 PBN6 과다시맵핑하게된다. 정전복구부 (134) 는갑작스런전원차단시할당블록리스트와자유블록리스트를통해정전복구를수행할수있다. 이러한정전복구를수행하기위해서는할당블록리스트및자유블록리스트의순서를변경시키는요인인블록회수시와주저장매체 (110) 로의데이터이동시에변경된할당블록리스트및자유블록리스트를비휘발성메모리 (120) 의스패어영역에저장하게된다. 다시말해서, 할당블록리스트와자유블록리스트는일단저장되고나면, 갑작스런전원차단시에그순서에동일하게유지되기때문에 PB 가할당된순서를알수있으며, 스패어영역의 LBA 를바탕으로가장최근에데이터만을추출하게된다. 따라서, 블록회수시및주저장매체 (110) 로의데이터이동시에만할당블록리스트및자유블록리스트를저장하여용이하게정전복구를수행할수있다. 또한, 블록회수시에복구마크를기록하고, 다시할당할때는복구마크를지우기때문에할당블록리스트와자유블록리스트로구분할수있다. 이때, 블록맵핑테이블또한할당블록리스트를통해복구할수있게된다. 도 10 은본발명의실시예에따른블록할당방법이도시된도면이다. 도시된바와같이, 본발명의실시예에따른블록할당방법은, 먼저블록할당부 (131) 가자유블록리스트로부터고정영역또는비고정영역에새로할당할 PB 를선택하게된다 (S110). 이때, 블록할당부 (131) 는자유블록리스트에서가장앞에위치한 PB 를새로할당하게된다. 이는자유블록리스트가사용빈도순에따라정렬되어있기때문에자유블록리스트에서가장앞에위치한 PB 가사용빈도가가장적기때문이다. 블록할당부 (131) 는선택된 PBN 에 VBN 을할당하게된다 (S120). 이때, VBN 은고정영역및비고정영역에따라가상블록주소공간에서서로반대방향으로부터순차적으로할당된다. 또한, 블록할당부 (131) 는 PBN 과 VBN 의맵핑관계를나타내는블록맵핑테이블을갱신한다 (S130). 이후, 블록할당부 (131) 는선택된 PBN 을할당블록리스트의마지막에추가하고 (S140), 자유블록리스트에서선택된 PBN 을제거하게된다 (S150). 이때, 새로할당되는 PBN 을할당블록리스트의마지막에추가하는것은비휘발성메모리 (120) 의경우데이터업데이트시이전에쓰여진데이터를수정하지않고새로 PB 을할당받아추가하는방식을사용하게 - 10 -
된다. 따라서, 새로운 PB 가할당될때마다할당블록리스트의마지막에해당 PBN 을추가하는경우나중에쓰여진데이터가유효한데이터로판단될수있기때문이다. 이는전술한정전복구부 (134) 에의해정전복구가수행될경우적용될수있다. 도 11 은본발명의실시예에따른블록회수방법이도시된도면이다. 도시된바와같이, 본발명의실시예에따른블록회수방법은, 먼저블록회수부 (132) 가할당블록리스트내의각 PB 에포함된유효페이지수를산출한다 (S210). 다시말해서, 소정 PB 에포함된유효페이지수가적을수록해당 PB 에는유효하지않은페이지가많은것이므로 PB 을회수하여새로할당시사용하게된다. 블록회수부 (132) 는산출된유효페이지수에따라블록회수를수행할 PB 의순서를결정한다 (S220). 본발명의실시예에서는블록회수부 (132) 가유효페이지수가가장적은 PB 부터블록회수를수행하는경우를예를들어설명하기로한다. 또한, 본발명의실시예에서는블록회수부 (132) 가소정 PB 내에포함된유효페이지의수가소정개수이하이거나빈 PB 가소정개수이하인경우에블록회수를수행하는경우를예를들어설명하기로한다. 블록회수부 (132) 는결정된순서에따라유효페이지수가가장적은 PB 의블록회수를위해자유블록리스트에서가장앞에위치한 PBN 을할당블록리스트의마지막에위치시킨다 (S230). 블록회수부 (132) 는할당블록리스트의마지막에위치된 PB 로블록회수를수행하는 PB 의유효페이지를이동시키고 (S240), 유효페이지가이동되어빈 PB 를자유블록리스트에사용빈도에따라추가한다 (S250). 또한, 블록회수부 (132) 는할당블록리스트에새로추가된 PBN 에 VBN 을할당하여블록맵핑테이블을갱신하게된다 (S260). 블록회수부 (132) 는블록회수대상이되는 PB 의블록회수가모두완료되었는지의여부를판단하고 (S270), 블록회수대상이되는 PB 의블록회수가완료되지않은경우에는블록회수대상이되는 PB 의불록회수가모두완료될때까지그다음순서의 PB 에대한블록회수를수행하기위해자유블록리스트의가장앞에위치한 PB 를할당블록리스트의마지막에위치시키고 (S280), 할당블록리스트의마지막에위치된 PB 로블록회수를수행하는 PB 의유효페이지를이동시킨다음유효페이지가이동되어빈 PB 를자유블록리스트에사용빈도에따라추가한후, 할당블록리스트에새로추가된 PBN 에 VBN 을할당하여블록맵핑테이블을갱신하는과정 (S240 내지 S260) 을반복적으로수행하게된다. 도 12 는본발명의실시예에따른배드블록처리방법이도시된도면이다. 도시된바와같이, 본발명의실시예에따른배드블록처리방법은, 먼저배드블록관리부 (133) 가할당블록리스트내에배드블록이발생한 PB 가존재하는지의여부를판단한다 (S310). 배드블록관리부 (133) 는블록할당부 (131) 를통해자유블록리스트에서새로 PB 를할당받게된다 (S320). 이때, 새로할당되는 PB 는해당 PB 의사용빈도를고려하여자유블록리스트의가장앞에위치하는 PB 가된다. 본발명의실시예에서는자유블록리스트이가장앞에위치하는 PB 를할당받는경우를예를들어설명하고있으나, 전술한바와같이복구마크가기록되는자유블록리스트의가장앞에위치하는 PB 가빈번하게변경되는것을방지하기위해가장앞에위치한 PB 의바로뒤에위치한 PB 가할당될수도있다. 새로 PB 가할당되면, 배드블록관리부 (133) 는새로할당받은 PB 로배드블록이발생한 PB 의데이터를이동시킨다 (S330). 데이터이동이완료되면, 배드블록관리부 (133) 는데이터가이동된 PB 를배드블록이발생한 PB 의위치에삽입한다 (340). 또한, 배드블록관리부 (133) 는배드블록이발생한 PBN 에할당된 VBN 을배드블록이발생한 PB 의위치로삽입된 PBN 으로변경하게된다 (S350). 도 13 은본발명의실시예에따른정전복구방법이도시된도면이다. 도시된바와같이, 본발명의실시예에따른정전복구방법은, 먼저정전복구부 (134) 가갑작스런전원차단이발생한경우, 비휘발성메모리 (120) 의스패어영역에저장된할당블록리스트및자유블록리스트를추출한다 (S410). - 11 -
정전복구부 (134) 는추출된할당블록리스트를통해각 PB 가할당된순서를복구한다 (S420). 이때, 정전복구부 (134) 는동일한 LBA 를가지는 PB 의경우에는가장나중에쓰여진 PB 가유효한것을판단하게된다. 또한, 정전복구부 (143) 는할당블록리스트를통해블록맵핑테이블을복구하게된다 (S430). 상기 ' 부 ' 는소프트웨어또는 Field Programmable Gate Array(FPGA) 또는주문형반도체 (Application Specific Integrated Circuit, ASIC) 과같은하드웨어구성요소를의미하며, 부는어떤역할들을수행한다. 그렇지만부는소프트웨어또는하드웨어에한정되는의미는아니다. 부는어드레싱할수있는저장매체에있도록구성될수도있고하나또는그이상의프로세서들을실행시키도록구성될수도있다. 따라서, 일예로서부는소프트웨어구성요소들, 객체지향소프트웨어구성요소들, 클래스구성요소들및태스크구성요소들과같은구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램코드의세그먼트들, 드라버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터구조들, 테이블들, 어레이들, 및변수들을포함한다. 구성요소들과부들에서제공되는기능은더작은수의구성요소들및부들로결합되거나추가적인구성요소들과부들로더분리될수있다. 이상과같이본발명에따른비휘발성메모리가캐쉬로사용되는저장장치및그동작방법을예시된도면을참조로하여설명하였으나, 본명세서에개시된실시예와도면에의해본발명은한정되지않으며그발명의기술사상범위내에서당업자에의해다양한변형이이루어질수있음은물론이다. 발명의효과 상기한바와같은본발명의비휘발성메모리가캐쉬로사용되는저장장치및그관리방법에따르면다음과같은효과가하나혹은그이상있다. 비휘발성메모리의영역을데이터의고정여부에따라고정영역및비고정영역으로구분하여관리하여효율적인관리가가능하다는장점이있다. 또한, 비휘발성메모리에서의블록회수를통해각블록의사용빈도를균등화하기때문에비휘발성메모리의수명을증가시키고, 주저장매체의사용빈도를줄이기때문에주저장매체의동작시소비되는전원을감소시킬수있는장점도있다. 또한, 갑작스런전원차단시에도할당블록리스트를통해블록맵핑테이블을복구할수있기때문에안전하게데이터를복구할수있는장점도있다. 도면의간단한설명 도 1 은일반적인저장장치가도시된도면. 도 2 는본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치가도시된도면. 도 3 은본발명의실시예에따른가상블록주소공간이도시된도면. 도 4 는본발명의실시예에따른할당블록리스트및자유블록리스트가도시된도면. 도 5 는본발명의실시예에따른블록맵핑테이블이도시된도면. 도 6 은본발명의실시예에따른블록회수이전의할당블록리스트, 자유블록리스트및블록맵핑테이블이도시된도면. 도 7 은본발명의실시예에따른블록회수이후의할당블록리스트, 자유블록리스트및블록맵핑테이블이도시된도면. - 12 -
도 8 은본발명의실시예에따른배드블록처리이전의할당블록리스트, 자유블록리스트및블록맵핑테이블이도시된도면. 도 9 는본발명의실시예에따른배드블록처리이후의할당블록리스트, 자유블록리스트및블록맵핑테이블이도시된도면. 도 10 은본발명의실시예에따른블록할당방법이도시되도면. 도 11 은본발명의실시예에따른블록회수방법이도시된도면. 도 12 는본발명의실시예에따른배드블록처리방법이도시된도면. 도 13 은본발명의실시예에따른정전복구방법이도시된도면. < 도면의주요부분에관한부호의설명 > 110: 주저장매체 120: 비휘발성메모리 130: 블록관리부 131: 블록할당부 132: 블록회수부 133: 배드블록관리부 134: 정전복구부 135: 블록맵핑테이블관리부 136: 리스트저장부 140: 호스트 도면 도면 1 도면 2-13 -
도면 3 도면 4-14 -
도면 5-15 -
도면 6-16 -
도면 7-17 -
도면 8-18 -
도면 9-19 -
도면 10-20 -
도면 11-21 -
도면 12 도면 13-22 -