(51) Int. Cl. G06F 12/06 (2006.01) (19) 대한민국특허청 (KR) (12) 공개특허공보 (A) (11) 공개번호 (43) 공개일자 10-2007-0068807 2007 년 07 월 02 일 (21) 출원번호 10-2005-0130822 (22) 출원일자 2005년12월27일 심사청구일자 2005년12월27일 (71) 출원인삼성전자주식회사경기도수원시영통구매탄동 416 (72) 발명자신동군서울관악구봉천 6 동 1681-21 민상렬서울서초구방배동대우효령아파트 105 동 906 호이시윤서울강남구역삼 2 동역삼래미안아파트 102 동 503 호김장환서울송파구잠실동 299-8 대훈연립 401 호송동현경기용인시풍덕천 1 동풍림아파트 106 동 1008 호김정은경기광명시하안 3 동하안주공 12 단지아파트 1211 동 212 호 (74) 대리인정상빈특허법인가산 전체청구항수 : 총 30 항 (54) 비휘발성메모리가캐쉬로사용되는저장장치및그동작방법 (57) 요약 본발명은비휘발성메모리가캐쉬로사용되는저장장치및그동작방법에관한것으로서, 더욱상세하게는전원이차단된경우에도데이터가남아있는비휘발성메모리가캐쉬로사용되는저장장치및그동작방법에관한것이다. 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치는, 주저장매체, 상기주저장매체의캐쉬로사용되며, 데이터의고정여부에따라고정영역및비고정영역을포함하는비휘발성메모리, 및상기비휘발성메모리에할당되는블록을관리하는블록관리부를포함한다. 대표도 도 2 특허청구의범위 - 1 -
청구항 1. 주저장매체 ; 상기주저장매체의캐쉬로사용되며, 데이터의고정여부에따라고정영역및비고정영역을포함하는비휘발성메모리 ; 및 상기비휘발성메모리에할당되는블록을관리하는블록관리부를포함하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 2. 제 1 항에있어서, 상기블록관리부는, 상기비휘발성메모리의영역을원형구조로변환하여관리하며, 상기원형구조에서상기고정영역및상기비고정영역을구분하기위한두지점을설정하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 3. 제 2 항에있어서, 상기두지점은, 상기고정영역및상기비고정영역에서블록이할당되기시작하는지점 ; 및 상기블록이할당되는마지막지점을포함하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 4. 제 3 항에있어서, 상기블록관리부, 상기고정영역및상기비고정영역에블록을할당하는블록할당부 ; 상기할당된블록을회수하는블록회수부 ; 상기비휘발성메모리의각블록에대한사용빈도를조절하는사용빈도조절부 ; 및 상기비휘발성메모리의정전시복구를위한정전복구부를포함하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 5. 제 4 항에있어서, 상기블록할당부는, 상기블록이할당되기시작하는지점을기준으로상기고정영역및상기비고정영역에블록을서로반대방향으로순차할당하는비휘발성메모리가캐쉬로사용되는저장장치. - 2 -
청구항 6. 제 5 항에있어서, 상기블록할당부, 상기비고정영역은상기두지점을순환하도록블록을할당하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 7. 제 5 항에있어서, 상기블록할당부는, 상기블록할당후, 마지막으로할당된블록의위치를나타내는종점을설정하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 8. 제 4 항에있어서, 상기블록회수부는, 상기고정영역의블록회수시, 상기고정영역에서블록이할당되기시작하는지점을상기비고정영역측으로소정블록만큼이동시킨다음, 데이터를순차적으로이동시키는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 9. 제 8 항에있어서, 상기블록회수부는, 마지막으로할당된블록의위치를나타내는종점을상기블록회수시마지막으로이동된블록의위치로변경하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 10. 제 4 항에있어서, 상기블록회수부는, 상기비고정영역블록회수시, 기할당된블록의시점을상기비고정영역측으로소정블록만큼이동시킨다음, 데이터를순차적으로이동시키는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 11. 제 10 항에있어서, 상기블록회수부는, 마지막으로할당된블록의위치를나타내는종점을상기블록회수시마지막으로이동된블록의위치로변경하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 12. 제 4 항에있어서, - 3 -
상기정전복구부는, 상기고정영역및상기비고정영역에서마지막으로할당된블록의위치를나타내는종점다음위치에복구마크를기록하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 13. 제 12 항에있어서, 상기정전복구부는, 전원차단시, 상기블록이할당되기시작하는지점부터상기복구마크가나올때까지순차적으로스캐닝을수행하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 14. 제 13 항에있어서, 상기정전복구부는, 상기스캐닝을통해소정블록및해당블록의논리블록주소를통해주소변환테이블을생성하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 15. 제 14 항에있어서, 상기정전복구부는, 다수의동일한논리블록주소를가지는블록이존재하는경우, 마지막으로사용된블록이활성화된데이터인것으로판단하는비휘발성메모리가캐쉬로사용되는저장장치. 청구항 16. 소정의주저장매체의캐쉬로사용되는비휘발성메모리의영역을데이터의고정여부에따라고정영역및비고정영역으로구분하는단계 ; 및 상기구분된고정영역및상기비고정영역으로할당되는블록을관리하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 17. 제 16 항에있어서, 상기블록을관리하는단계는, 상기비휘발성메모리의영역을원형구조로변환하는단계 ; 및 상기원형구조에서상기고정영역및상기비고정영역을구분하기위한두지점을설정하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 18. 제 17 항에있어서, 상기두지점은, 상기고정영역및상기비고정영역에서블록이할당되기시작하는지점 ; 및 - 4 -
상기블록이할당되는마지막지점을포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 19. 제 17 항에있어서, 상기블록을관리하는단계는, 상기고정영역및상기비고정영역에블록을할당하는단계 ; 상기할당된블록을회수하는단계 ; 상기비휘발성메모리의각블록에대한사용빈도를조절하는단계 ; 및 상기비휘발성메모리의정전시정전복구를수행하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 20. 제 19 항에있어서, 상기블록을할당하는단계는, 상기블록이할당되기시작하는지점을기준으로상기고정영역및상기비고정영역에블록을서로반대방향으로순차할당하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 21. 제 19 항에있어서, 상기블록을할당하는단계는, 상기비고정영역은상기두지점을순환하도록블록을할당하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 22. 제 20 항에있어서, 상기블록을할당하는단계는, 상기고정영역및상기비고정영역에서마지막으로할당된블록의위치를나타내는종점을설정하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 23. 제 19 항에있어서, 상기블록을회수하는단계는, 상기고정영역의블록회수시, 상기고정영역에서블록이할당되기시작하는지점을상기비고정영역측으로소정블록만큼이동시킨다음, 데이터를순차적으로이동시키는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 24. - 5 -
제 23 항에있어서, 상기블록을회수하는단계는, 마지막으로할당된블록의위치를나타내는종점을상기블록회수시마지막으로이동된블록의위치로변경하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 25. 제 19 항에있어서, 상기블록을회수하는단계는, 상기비고정영역블록회수시, 기할당된블록의시점을상기비고정영역측으로소정블록만큼이동시킨다음, 데이터를순차적으로이동시키는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 26. 제 25 항에있어서, 상기블록을회수하는단계는, 마지막으로할당된블록의위치를나타내는종점을상기블록회수시마지막으로이동된블록의위치로변경하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장방법. 청구항 27. 제 19 항에있어서, 상기정전복구를수행하는단계는, 상기고정영역및상기비고정영역에서마지막으로할당된블록의위치를나타내는종점다음위치에복구마크를기록하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 28. 제 27 항에있어서, 상기정전복구를수행하는단계는, 전원차단시, 상기블록이할당되기시작하는지점부터상기복구마크가나올때까지순차적으로스캐닝을수행하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 29. 제 28 항에있어서, 상기정전복구를수행하는단계는, 상기스캐닝을통해소정블록및해당블록의논리블록주소를통해주소변환테이블을생성하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 청구항 30. 제 29 항에있어서, - 6 -
상기정전복구를수행하는단계는, 다수의동일한논리블록주소를가지는블록이존재하는경우, 마지막으로사용된블록이활성화된데이터인것으로판단하는단계를포함하는비휘발성메모리가캐쉬로사용되는저장장치의동작방법. 명세서 발명의상세한설명 발명의목적 발명이속하는기술및그분야의종래기술 본발명은비휘발성메모리가캐쉬로사용되는저장장치및그동작방법에관한것으로서, 더욱상세하게는전원이차단된경우에도데이터가남아있는비휘발성메모리가캐쉬로사용되는비휘발성메모리가캐쉬로사용되는저장장치및그동작방법에관한것이다. 일반적인저장장치 (10) 는도 1 과같이, 호스트 (11), 데이터버퍼 ( 캐쉬 )(12) 및주저장매체 (13) 를포함할수있다. 호스트 (11) 는사용자의명령에따라주저장매체 (13) 와데이터를주고받는역할을하게되며, 일반적으로호스트 (11) 와주저장매체 (13) 사이의속도차이를완충시키고, 저장장치 (10) 의액세스효율을높이기위해주저장매체 (13) 보다작고빠른메모리를데이터버퍼 (12) 로사용하게된다. 데이터를쓸때는속도가느린주저장매체 (13) 에직접기록하는것이아니라, 속도가빠른데이터버퍼 (12) 에기록하여기록속도를향상시킬수있고, 주저장매체 (13) 의일부데이터를데이터버퍼 (12) 에미리가져다놓음으로써읽기속도를향상시킬수있다. 다시말해서, 호스트 (11) 로부터전송된데이터는주저장매체 (13) 에기록될때까지데이터버퍼 (12) 에저장되며, 주저장매체 (13) 로부터전송된데이터는호스트 (11) 로전송될때까지데이터버퍼 (12) 에저장되는것이다. 이러한저장장치 (10) 에서데이터버퍼 (12) 는일반적으로휘발성메모리로구성되어있기때문에저장장치 (10) 로공급되는전원이차단되는경우데이터버퍼 (12) 에존재하는데이터는모두사라지게된다. 액세스효율을높이기위해데이터버퍼 (12) 의크기를키울경우, 전원차단으로인해발생가능한손실데이터의양도늘어나고, 손실을줄이기위해주저장매체 (13) 에항상전원을공급해야하기때문에소비전력의양을감소시키는데한계가있다는문제점이있다. 따라서, 최근에는저장장치 (10) 에비휘발성메모리를캐쉬로사용하여호스트 (11) 가비휘발성메모리에저장된데이터를읽고쓸때는주저장매체 (13) 의전원을차단하여소비되는전력이감소될수있도록하고있다. 그러나, 비휘발성메모리를저장장치 (10) 의캐쉬로사용하는경우, 데이터의고정여부, 즉소정데이터가비휘발성메모리에항상고정위치되는고정영역과빈번하게변경되는비고정영역에대한데이터를효과적으로관리하고, 갑작스런전원차단으로부터데이터를안전하게보호하기위한방안이요구되고있다. 또한, 주저장매체 (13) 로전원이공급되는시간을최소화시키기위한블록회수방안및비휘발성메모리에서각물리블록에대한사용빈도를고려하여비휘발성메모리의수명을증가시킬수있는방안등이요구되고있다. 일본공개특허 2003-256289 는어드레스지정가능한플래시메모리시스템에있어, 블록으로편성된상기플래시메모리지정위치를원형시퀀스 ( 물리섹터어드레스의최하위와최상의두곳에서기록과삭제가일어남 ) 에따라주기적으로블록지정삭제를수행함으로써플래시메모리의 Wear levels 의일관성을유지할수있는시스템을개시하고있으나, 고정영역및비고정영역에대한데이터를효과적으로관리하고, 갑작스런전원차단으로부터데이터를보호하며, 블록회수및사용빈도조절을통한수명연장에대한방안은제안되고있지않다. 발명이이루고자하는기술적과제 본발명은저장장치의캐쉬로사용되는비휘발성메모리에저장되는데이터를데이터의고정여부에따라분리하여관리하고, 갑작스런전원차단시데이터를안전하게복구할수있는비휘발성메모리가캐쉬로사용되는저장장치및그동작방법을제공하는데그목적이있다. - 7 -
또한, 본발명은비휘발성메모가캐쉬로사용되는저장장치에서비휘발성메모리의블록할당및회수방법과사용빈도를고려하여비휘발성메모리의수명이증가되도록하는휘발성메모리가캐쉬로사용되는저장장치및그동작방법을제공하는데그목적이있다. 본발명의목적은이상에서언급한목적들로제한되지않으며, 언급되지않은또다른목적들은아래의기재로부터당업자에게명확하게이해되어질수있을것이다. 발명의구성 상기목적을달성하기위하여, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치는, 주저장매체, 상기주저장매체의캐쉬로사용되며, 데이터의고정여부에따라고정영역및비고정영역을포함하는비휘발성메모리, 및상기비휘발성메모리에할당되는블록을관리하는블록관리부를포함한다. 또한, 상기목적을달성하기위하여, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치의동작방법은, 소정의주저장매체의캐쉬로사용되는비휘발성메모리의영역을데이터의고정여부에따라고정영역및비고정영역으로구분하는단계, 및상기구분된고정영역및상기비고정영역으로할당되는블록을관리하는단계를포함한다. 기타실시예들의구체적인사항들은상세한설명및도면들에포함되어있다. 본발명의이점및특징, 그리고그것들을달성하는방법은첨부되는도면과함께상세하게후술되어있는실시예들을참조하면명확해질것이다. 그러나본발명은이하에서개시되는실시예들에한정되는것이아니라서로다른다양한형태로구현될수있으며, 단지본실시예들은본발명의개시가완전하도록하고, 본발명이속하는기술분야에서통상의지식을가진자에게발명의범주를완전하게알려주기위해제공되는것이며, 본발명은청구항의범주에의해정의될뿐이다. 명세서전체에걸쳐동일참조부호는동일구성요소를지칭한다. 이하, 본발명의실시예들에의하여비휘발성메모리가캐쉬로사용되는저장장치및그동작방법을설명하기위한블록도또는처리흐름도에대한도면들을참고하여본발명에대해설명하도록한다. 이때, 처리흐름도도면들의각블록과흐름도도면들의조합들은컴퓨터프로그램인스트럭션들에의해수행될수있음을이해할수있을것이다. 이들컴퓨터프로그램인스트럭션들은범용컴퓨터, 특수용컴퓨터또는기타프로그램가능한데이터프로세싱장비의프로세서에탑재될수있으므로, 컴퓨터또는기타프로그램가능한데이터프로세싱장비의프로세서를통해수행되는그인스트럭션들이흐름도블록 ( 들 ) 에서설명된기능들을수행하는수단을생성하게된다. 이들컴퓨터프로그램인스트럭션들은특정방식으로기능을구현하기위해컴퓨터또는기타프로그램가능한데이터프로세싱장비를지향할수있는컴퓨터이용가능또는컴퓨터판독가능메모리에저장되는것도가능하므로, 그컴퓨터이용가능또는컴퓨터판독가능메모리에저장된인스트럭션들은흐름도블록 ( 들 ) 에서설명된기능을수행하는인스트럭션수단을내포하는제조품목을생산하는것도가능하다. 컴퓨터프로그램인스트럭션들은컴퓨터또는기타프로그램가능한데이터프로세싱장비상에탑재되는것도가능하므로, 컴퓨터또는기타프로그램가능한데이터프로세싱장비상에서일련의동작단계들이수행되어컴퓨터로실행되는프로세스를생성해서컴퓨터또는기타프로그램가능한데이터프로세싱장비를수행하는인스트럭션들은흐름도블록 ( 들 ) 에서설명된기능들을실행하기위한단계들을제공하는것도가능하다. 또한, 각블록은특정된논리적기능 ( 들 ) 을실행하기위한하나이상의실행가능한인스트럭션들을포함하는모듈, 세그먼트또는코드의일부를나타낼수있다. 또, 몇가지대체실행예들에서는블록들에서언급된기능들이순서를벗어나서발생하는것도가능함을주목해야한다. 예컨대, 잇달아도시되어있는두개의블록들은사실실질적으로동시에수행되는것도가능하고또는그블록들이때때로해당하는기능에따라역순으로수행되는것도가능하다. 도 2 는본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치가도시된도면이다. 도시된바와같이, 본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치 (100) 는, 주저장매체 (110), 비휘발성메모리 (120), 블록관리부 (130), 주소변환테이블저장부 (140) 및활성데이터리스트저장부 (150) 를포함할수있다. 주저장매체 (110) 는하드디스크드라이브 (Hard Disk Drive) 등과같이대용량의저장매체를의미하며, 비휘발성메모리 (120) 는주저장매체 (110) 의캐쉬로사용되는플래시메모리등을의미한다. - 8 -
본발명의실시예에서비휘발성메모리 (120) 는플래시메모리가사용된경우를예를들어설명하기로하며, 데이터가비휘발성메모리 (120) 에고정저장되는고정영역및데이터의이동이빈번하게발생되는비고정영역으로나뉘어진경우를예를들어설명하기로한다. 이때, 비휘발성메모리 (120) 에서고정영역과비고정영역의크기는용도및필요에따라변경될수있다. 블록관리부 (130) 는블록할당부 (131), 블록회수부 (132), 사용빈도조절부 (133) 및정전복구부 (134) 를포함할수있다. 블록할당부 (131) 는고정영역및비고정영역에블록을할당하며, 비휘발성메모리 (120) 의영역을원형구조로변환한후블록을할당할수있다. 구체적으로, 블록할당부 (131) 는도 3 과같이비휘발성메모리 (120) 의영역을원형구조로변환하고, 변환된원형구조에서고정영역과비고정영역을구분하기위한제 1A 지점및제 2A 지점을설정할수있다. 이때, 제 1A 지점은각영역이시작되는지점을의미하고, 제 2A 지점은각영역이끝나는지점을의미하며, 블록할당부 (131) 는제 1A 지점으로부터순차적으로블록을할당할수있다. 따라서, 고정영역과비고정영역은제 1A 지점을기준으로서로반대방향으로블록이순차할당되는것으로이해될수있다. 또한, 블록할당부 (131) 는각영역에서마지막을블록이할당된위치를관리할수있다. 본발명의실시예에서고정영역과비고정영역에서마지막으로블록이할당된위치를각각제 1A 종점및제 2A 종점이라칭하기로한다. 또한, 고정영역과비고정영역에서활성화된데이터가위치하는첫번째블록의위치를나타내는포인터를각각제 1A 시점및제 2A 시점이라칭하기로한다. 다시말해서, 각영역은제 1A 지점으로부터활성화된데이터가위치할수도있으나, 해당영역내의소정지점으로부터활성화된데이터가위치할수도있기때문에활성화된데이터가위치하는첫번째블록의위치를나타내는제 1A 시점및제 2A 시점이사용되는것이다. 이때, 블록할당부 (131) 는전술한제 1A 지점, 제 2A 지점, 제 1A 시점, 제 2A 시점, 제 1A 종점및제 2A 종점을정상적인전원차단시나변경시마다저장하여비휘발성메모리 (120) 의소정영역에저장하여차후비정상적인전원차단이발생한경우, 이를복구하는데사용되도록한다. 본발명의실시예에서는전술한제 1A 지점, 제 2A 지점, 제 1A 시점, 제 2A 시점, 제 1A 종점및제 2A 종점등이비휘발성메모리 (120) 의소정블록에저장되는경우를예를들어설명하기로한다. 한편, 블록할당부 (131) 는고정영역에비하여비고정영역의블록에대한사용빈도가높은점을감안하여비고정영역에서의블록할당은회전식블록할당을사용할수있다. 구체적으로, 도 4 와같이, 블록할당부 (131) 는비고정영역에서제 2A 종점이제 2A 지점에근접하거나동일하게되면, 제 2A 종점을제 1A 지점으로이동시켜회전식블록할당을하게할수있다. 이때, 블록할당부 (131) 는비고정영역에에서제 1A 지점의블록에활성화된데이터가위치하는경우에는해당블록의데이터를주저장매체 (110) 로이동시킨다음블록을할당하게된다. 블록회수부 (132) 는비휘발성메모리 (120) 에서는데이터의업데이트시, 기존데이터를수정하지않고새로운데이터를추가하는방식을사용하기때문에기존데이터는비활성화된데이터로판단하고, 이비휘발성데이터가위치하는블록을회수하여새로운블록할당시에사용할수있게한다. 이러한블록회수는, 고정영역과비고정영역에서서로다르게이루어질수있으며, 우선고정영역에대한블록회수에대해상세하게살펴보기로한다. 고정영역에위치한데이터들은대부분주저장매체 (110) 로이동되지않는특성을갖기때문에블록회수는필수적이라할수있다. 구체적으로, 블록회수부 (132) 는고정영역에대한블록회수를위해주소변환테이블저장부 (140) 로부터활성데이터리스트를생성하고, 생성된활성데이터리스트를활성데이터리스트저장부 (150) 에저장할수있다. 이때, 블록회수부 (132) 는고정영역에서제 1A 지점이위치한블록에활성화된데이터가존재하는경우에만도 5a 와같이, 제 1A 지점을제 1B 지점으로비고정영역측으로소정블록만큼이동시키고, 그사이의비고정영역의데이터는주저장매체 (110) 로이동시키게된다. 이후, 도 5b 와같이, 블록회수부 (132) 는제 1A 지점에위치한활성화된데이터를제 1B 지점의블록으로이동시키다. 이후, 활성화데이터리스트에따라순차적으로활성화데이터를이동시킨다. 이때, 블록회수부 (132) 는활성화된데이터이동시, 비활성화된데이터는무시하게된다. 블록회수부 (132) 는활성화된데이터의이동이완료되면, 블록회수부 (132) 는도 5c 와같이, 마지막으로이동된활성화된데이터가위치한블록을제 1B 종점으로설정하게된다. 또한, 블록회수부 (132) 는도 5d 와같이, 제 1B 지점및제 1B 종점을다시제 1A 지점및제 1A 종점으로설정한후, 블록을할당할수있도록한다. - 9 -
이때, 본발명의실시예에서제 1A 지점및제 1A 지점이실제적으로관리되는지점이고, 제 1B 지점및제 1B 종점은활성화된데이터를이동시키기위해임시적으로사용된지점으로이해될수있다. 한편, 본발명의실시예에서제 1A 지점이제 1B 지점으로이동됨에따라제 2A 지점또한비고정영역측으로이동될수있다. 이와같이, 블록회수부 (132) 가기존의제 1A 지점을제 1B 지점으로이동시키는것은, 고정영역에비하여상대적으로사용빈도가높은비고정영역에대해고정영역과의사용빈도 (Wear Level) 를균등하게하기위함이다. 다음으로, 비고정영역에대한블록회수를통해비활성데이터가위치한블록을회수하여새로할당하여, 주저장매체 (110) 로데이터가이동되는횟수를줄일수있다. 고정영역에대한블록회수와같은방법을이용한비고정영역에대한블록회수는비어있는블록의개수가소정개수이하이거나비활성화데이터가차지하는블록의개수가소정개수이상일경우사용될수있다. 구체적으로, 비고정영역에대한블록회수는, 먼저전술한고정영역에대한블록회수와마찬가지로, 블록회수부 (132) 는고정영역에대한블록회수를위해주소변환테이블저장부 (140) 로부터활성화데이터리스트를생성하고, 생성된활성화데이터리스트를활성화데이터리스트저장부 (150) 에저장할수있다. 이때, 블록회수부 (132) 는도 6a 와같이, 제 2A 시점의블록에활성화된데이터가존재하는경우에만고정영역방향으로소정블록만큼제 2A 시점을이동시킨제 2B 시점을설정한다. 한편, 본발명의실시예에서전술한블록할당부 (131) 는 N 개의빈블록미리할당한후, 블록을할당하기때문에제 2B 시점이제 2A 시점에비하여소정블록고정영역측으로이동될수있는것이다. 또한, 본발명의실시예에서제 2B 시점은제 2A 시점에비하여 1 블록만큼고정영역측으로이동된경우를예를들어설명하기로한다. 제 1A 지점과제 2A 시점이동일한경우에는 N 개블록에위치한데이터를주저장매체 (110) 로이동시키게된다. 이때, 블록회수부 (132) 는도 6b 와같이, 활성화데이터리스트의순서에따라제 2B 시점부터데이터를순차적으로이동시키게되며마지막으로할당된블록의위치를나타내는제 2B 종점을설정하게된다. 이후, 블록회수부 (132) 는제 2B 시점및제 2B 종점을각각제 2A 시점및제 2A 종점으로변경하게된다. 이때, 회수된데이터에대한정보는활성데이터리스트에서삭제된다. 한편, 비고정영역에대한블록회수에서제 2A 시점및제 2A 종점이실제적으로사용되는지점이고, 제 2B 시점및제 2B 종점은활성화된데이터를이동시키기위해임시적으로사용된지점으로이해될수있다. 사용빈도조절부 (133) 는전술한블록회수부 (132) 에의한블록회수시각블록의사용빈도의균등화하기위해각블록에대한사용빈도에대한정보를저장하고있으며, 블록회수부 (132) 는사용빈도조절부 (133) 에저장된각블록에대한사용빈도를고려하여블록회수를하게된다. 다시말해서, 블록회수부 (132) 는블록회수시마다사용빈도조절부 (133) 의정보를근거로하여고정영역에서제 1A 시점을비고정영역측으로소정블록만큼이동시키며블록회수를수행하게된다. 따라서, 고정영역에비하여상대적으로사용빈도가높은비고정영역에대한사용빈도를고정영역과균등하게조절할수있게된다. 정전복구부 (134) 는예상치못한비정상적인전원차단시, 복구를수행하게되며, 이러한정전복구는, 전술한블록할당부 (131) 에의해관리되는제 1A 지점, 제 2A 지점, 제 1A 시점, 제 2A 시점, 제 2A 종점및제 2A 종점과각블록의스패어영역에기록된논리블록주소 (Logical Block Address) 를이용한다. 제 1A 지점과제 2A 지점은변경될때마다비휘발성메모리의소정블록에기록되고, ㅊ제 1A 종점과제 2A 종점은블록할당시마다바로그다음블록에복구마크를기록하게된다. 이때, 정전복구부 (134) 는제 1A 지점으로부터고정영역및비고정영역에서복구마크를발견할때까지순차적으로읽게되고, 동일한 LBA 의경우에는나중에쓰여진데이터를활성화된데이터로추출하게된다. 이는비휘발성메모리 (120) 에서블록수정시, 기존데이터의수정이아닌새로운블록을할당하여추가하는방법을사용하기때문에동일한 LBA 인경우에는나중에쓰여진데이터가갱신된데이터이기때문이다. 이후, 정전복구부 (134) 는추출된데이터를기반으로주소변환테이블을복구하게된다. 구체적으로, 정전복구부 (134) 는도 7 과같이, 비고정영역에서제 2A 종점의바로뒤에위치한블록에복구마크를기록해둔다. 이때, 비정상적인전원차단발생시, 정전복구부 (134) 는제 1A 지점부터순차적으로복구마크가나올때까지스캐닝을하게되고, 전술한스패어영역에기록된 LBA 를통해주소변환테이블을다시생성하게된다. 한편, 도 7 에서동일한 LBA 를가지는블록 (211, 212, 213) 이 3 개가존재하게되는데, 정전복구부 (134) 는마지막으로쓰여진블록의 LBA (213) 를활성화된데이터로추출하게된다. - 10 -
도 8 은본발명의실시예에따른비휘발성메모리의블록할당방법이도시된도면이다. 도시된바와같이, 본발명의실시예에따른비휘발성메모리의블록할당방법은, 먼저블록할당부 (131) 는비휘발성메모리 (120) 의영역을원형구조로변형하고, 비휘발성메모리 (120) 의영역을데이터가고정되는고정영역과데이터가빈번하게변경되는비고정영역으로나누기위한제 1A 지점및제 2A 지점을설정한다 (S110). 이때, 제 1A 지점및제 2A 지점에의해나뉘어지는고정영역및비고정영역의크기는용도및필요에따라변경될수있다. 이후, 블록할당부 (131) 는제 1A 지점을기준으로각각고정영역및비고정영역의블록을순차적으로할당하게된다 (S120). 블록할당부 (131) 는고정영역및비고정영역에블록할당이완료되었는지의여부를판단하고 (S130), 판단결과블록할당이완료된경우마지막으로할당된블록의위치를나타내는지점을설정하게된다 (S140). 다시말해서, 블록할당부 (131) 는전술한도 3 과같이, 고정영역및비고정영역에서마지막으로할당된블록의위치를나타내는제 1A 종점및제 2A 종점을설정하게된다. 또한, 블록할당부 (131) 는제 1A 지점, 제 2A 지점, 제 1A 종점및제 2A 종점등을정상적인전원차단시나필요에따라비휘발성메모리 (120) 의소정영역에저장하게된다. 도 9 는본발명의실시예에따른비휘발성메모리의고정영역에대한블록회수방법이도시된도면이다. 이때, 도 9 의고정영역에대한블록회수방법은전술한도 5a 내지도 5d 의블록회수방법으로이해될수있다. 도시된바와같이, 본발명의실시예에따른비휘발성메모리의고정영역에대한블록회수방법은, 먼저블록회수부 (132) 는주소변환테이블저장부 (140) 에저장된주소변환테이블로부터활성화된데이터의리스트를생성하고, 생성된활성데이터리스르를활성데이터리스트저장부 (150) 에저장한다 (S210). 이후, 블록회수부 (132) 는고정영역과비고정영역을구분하고, 블록이할당되기시작하는지점인제 1A 시점의블록에활성화된데이터가존재하는경우 (S220), 제 1A 지점을기준으로비고정영역측의소정개수의블록을주저장매체 (110) 로이동시킨다 (S230). 비고정영역측의데이터를주저장매체 (110) 로이동시킨후, 블록회수부 (132) 는제 1A 지점을비고정영역측으로이동시켜제 1B 지점으로이동시키게된다 (S240). 또한, 전수한 S220 단계에서제 1A 지점의블록에활성화된데이터가존재하지않는경우에는바로제 1A 지점을비고정영역측의제 1B 지점으로설정하게된다. 블록회수부 (132) 는활성데이터리스트의순서에따라활성데이터를제 1B 지점으로부터순차적으로이동시키고 (S250), 이동한활성화된데이터에대한정보를활성데이터리스트에서삭제한다 (S260). 블록회수부 (132) 는활성데이터리스트가빌때까지활성화된데이터를이동시키고해당정보를할성데이터리스트에서삭제하는과정을반복적으로수행하게된다 (S270). 블록회수부 (132) 는활성데이터리스트가비게되면, 마지막으로이동된블록을제 1B 종점으로설정하고 (S280), 마지막으로제 1B 지점을제 1A 지점으로변경하고제 1B 종점을제 1A 종점으로변경하게된다 (S290). 도 10 은본발명의실시예에따른비휘발성메모리의비고정영역에대한블록회수방법이도시된도면이다. 이때, 도 10 의비고정영역에대한블록회수방법은, 전술한도 6a 및도 6b 의블록회수방법으로이해될수있다. 도시된바와같이, 본발명의실시예에따른비휘발성메모리의비고정영역에대한블록회수방법은, 먼저블록회수부 (132) 는주소변환테이블저장부 (140) 에저장된주소변환테이블로부터활성화된데이터의리스트를생성하고, 생성된활성데이터리스트를활성데이터리스트저장부 (150) 에저장한다 (S310). 블록회수부 (132) 는활성데이터가페이지를포함하는블록이제 2A 시점에존재하는지의여부를판단한다 (S320). 이때, 블록회수부 (132) 는제 2A 시점에활성데이터가존재하는경우, 제 1A 지점과제 2A 시점이동일한지의여부를판단한다 (S330). - 11 -
한편, 블록회수부 (132) 는제 1A 지점과제 2A 시점이다른경우, 제 2A 시점을고정영역측으로소정블록만큼이동시켜제 2B 시점으로이동시킨다 (S340). 이후, 블록회수부 (132) 는활성데이터리스트의순서에따라활성화된데이터를제 2B 시점으로부터순차적으로이동시키게된다 (S350). 이동된활성데이터에대한정보는활성데이터리스트에서삭제되고 (S360), 활성데이터리스트가완전히비워질때까지순차적으로활성데이터를이동하고이동된활성데이터의정보를활성데이터리스트에서삭제하는과정 (S350 및 S360) 을반복적으로수행한다 (S370). 활성데이터의이동이완료되면, 블록회수부 (132) 는마지막으로이동된블록의위치를제 2B 종점으로설정하고 (S380), 마지막으로제 2B 시점을제 2A 시점으로, 제 2B 종점을제 2A 종점으로변경하게된다 (S390). 상기 ' 부 ' 는소프트웨어또는 Field Programmable Gate Array(FPGA) 또는주문형반도체 (Application Specific Integrated Circuit, ASIC) 과같은하드웨어구성요소를의미하며, 부는어떤역할들을수행한다. 그렇지만부는소프트웨어또는하드웨어에한정되는의미는아니다. 부는어드레싱할수있는저장매체에있도록구성될수도있고하나또는그이상의프로세서들을실행시키도록구성될수도있다. 따라서, 일예로서부는소프트웨어구성요소들, 객체지향소프트웨어구성요소들, 클래스구성요소들및태스크구성요소들과같은구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램코드의세그먼트들, 드라버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터구조들, 테이블들, 어레이들, 및변수들을포함한다. 구성요소들과부들에서제공되는기능은더작은수의구성요소들및부들로결합되거나추가적인구성요소들과부들로더분리될수있다. 이상과같이본발명에따른비휘발성메모리가캐쉬로사용되는저장장치및그동작방법을예시된도면을참조로하여설명하였으나, 본명세서에개시된실시예와도면에의해본발명은한정되지않으며그발명의기술사상범위내에서당업자에의해다양한변형이이루어질수있음은물론이다. 발명의효과 상기한바와같은본발명의비휘발성메모리가캐쉬로사용되는저장장치및그동작방법에따르면다음과같은효과가하나혹은그이상있다. 비휘발성메모리에저장되는데이터를고정영역및비고정영역으로분리하여관리하기때문에캐쉬로사용되는비휘발성메모리의효율적으로관리할수있는장점이있다. 또한, 고정영역및비고정영역에대한블록회수및사용빈도를고려하여비휘발성메모리의수명을증가시킬수있는장점도있다. 도면의간단한설명 도 1 은일반적인저장장치가도시된도면. 도 2 는본발명의실시예에따른비휘발성메모리가캐쉬로사용되는저장장치가도시된도면. 도 3 은본발명의실시예에따라원형구조로변형된비휘발성메모리의영역이도시된도면. 도 4 는본발명의실시예에따라회전식블록할당을사용하는비고정영역이도시된도면. 도 5a 는본발명의실시예에따른고정영역의블록회수시, 제 1A 지점이비고정영역으로이동된도면. 도 5b 는본발명의실시예에따른고정영역의블록회수시, 제 1A 지점의활성화된데이터가제 1B 지점으로이동된도면. 도 5c 는본발명의실시예에따른고정영역의블록회수시, 활성화된데이터를제 1B 지점부터순차적으로이동시키고마지막으로이동된활성화된데이터가위치한블록을나타내는제 2B 종점이도시된도면. - 12 -
도 5d 는본발명의실시예에따른고정영역의블록회수시, 제 1A 지점이제 1B 지점으로, 제 1A 종점이제 1B 종점으로이동된도면. 도 6a 는본발명의실시예에따른비고정영역의블록회수시, 제 2A 시점을고정영역으로이동시킨제 2B 시점이도시된도면. 도 6b 는본발명의실시예에따른비고정영역블록회수시, 제 2B 시점부터활성화된데이터가순차적으로이동된도면. 도 7 은본발명의실시예에따른정전복구시스캐닝방향이도시된도면. 도 8 은본발명의실시예에따른비휘발성메모리의블록할당방법이도시된도면. 도 9 는본발명의실시예에따른비휘발성메모리의고정영역에대한블록회수방법이도시된도면. 도 10 은본발명의실시예에따른비휘발성메모리의비고정영역에대한블록회수방법이도시된도면. < 도면의주요부분에관한부호의설명 > 110: 주저장매체 120: 비휘발성메모리 130: 블록관리부 131: 블록할당부 132: 블록회수부 133: 사용빈도조절부 134: 정전복구부 140: 주소변환테이블저장부 150: 활성데이터리스트저장부 도면 도면 1 도면 2-13 -
도면 3 도면 4-14 -
도면 5a 도면 5b - 15 -
도면 5c 도면 5d - 16 -
도면 6a 도면 6b - 17 -
도면 7 도면 8-18 -
도면 9-19 -
도면 10-20 -