(51) Int. Cl. G11C 16/16 (2006.01) G11C 16/06 (2006.01) (19) 대한민국특허청 (KR) (12) 등록특허공보 (B1) (45) 공고일자 (11) 등록번호 (24) 등록일자 2007 년 06 월 07 일 10-0725410 2007 년 05 월 30 일 (21) 출원번호 10-2006-0006472 (65) 공개번호 (22) 출원일자 2006년01월20일 (43) 공개일자 심사청구일자 2006년01월20일 (73) 특허권자삼성전자주식회사경기도수원시영통구매탄동 416 (72) 발명자신동군서울관악구봉천 6 동 1681-21 (74) 대리인김동진정상빈 (56) 선행기술조사문헌 KR1019950015386 A KR1020010004353 A KR1019990047442 A 심사관 : 조명관 전체청구항수 : 총 10 항 (54) 전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법 (57) 요약 본발명은전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법에관한것으로서, 더욱상세하게는휴대용장치의전원상태를기초로블록회수의동작을조절함으로써, 휴대용장치의전력소모를줄일수있는전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법에관한것이다. 본발명의일실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치는, 소정데이터를저장되는비휘발성메모리와, 상기비휘발성메모리에할당된물리블록을휴대용장치의전원상태를기초하여회수하는전원관리부를포함한다. 대표도 도 2 특허청구의범위 - 1 -
청구항 1. 소정데이터를저장하는비휘발성메모리 ; 상기비휘발성메모리를구비한휴대용장치의전원상태를체크하는전원상태체크부 ; 및 상기체크된전원상태를기초로상기비휘발성메모리에할당된물리블록을회수하는블록회수부를포함하는전원상태에따라비휘발성메모리의블록회수를수행하는장치. 청구항 2. 제 1 항에있어서, 상기비휘발성메모리에물리블록을할당하는블록할당부 ; 및 상기비휘발성메모리내에할당된물리블록에대한할당블록리스트및빈물리블록에대한자유블록리스트를저장하는리스트저장부를포함하는전원상태에따라비휘발성메모리의블록회수를수행하는장치. 청구항 3. 제 1 항에있어서, 상기블록회수부는할당된블록회수시휴대용장치의전원상태를기초로블록회수코스트크기및블록회수의동작주기를조절하는전원상태에따라비휘발성메모리의블록회수를수행하는장치. 청구항 4. 제 1 항에있어서, 상기블록회수부는사용빈도를고려하여할당된물리블록을회수하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 청구항 5. 비휘발성메모리내의자유블록의개수를체크하는단계 ; 상기체크결과자유블록의개수가제 1 임계값보다작은경우, 휴대용장치의전원상태를체크하는단계 ; 상기체크결과전원이충분한경우, 블록회수코스트가큰물리블록까지회수하는단계 ; 및 상기체크결과전원이충분하지않은경우, 블록회수코스트가작은물리블록을회수하는단계를포함하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 청구항 6. 제 5 항에있어서, - 2 -
상기자유블록의개수가제 1 임계값이상인경우블록회수를수행하지않는단계를포함하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 청구항 7. 제 5 항에있어서, 상기물리블록회수시사용빈도를고려하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 청구항 8. 비휘발성메모리내의자유블록의개수를체크하는단계 ; 상기체크결과자유블록의개수가제 1 임계값보다작은경우, 휴대용장치의전원상태를체크하는단계 ; 상기체크결과전원이충분한경우, 블록회수주기를제 2 임계값보다짧게설정하는단계 ; 상기체크결과전원이충분하지않은경우, 블록회수주기를제 2 임계값보다길게설정하는단계 ; 및 상기설정된블록회수주기를기초로할당된물리블록을회수하는단계를포함하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 청구항 9. 제 8 항에있어서, 상기자유블록의개수가제 1 임계값이상인경우블록회수를수행하지않는단계를포함하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 청구항 10. 제 8 항에있어서, 상기할당된물리블록회수시사용빈도를고려하는전원상태에따라비휘발성메모리의블록회수를수행하는방법. 명세서 발명의상세한설명 발명의목적 발명이속하는기술및그분야의종래기술 본발명은전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법에관한것으로서, 더욱상세하게는휴대용장치의전원상태를기초로블록회수의동작을조절함으로써, 휴대용장치의전력소모를줄일수있는전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법에관한것이다. - 3 -
일반적으로, 플래시메모리는한번쓰여진 (write) 페이지에다른데이터를덮어쓸수없으며, 반드시블록단위의삭제 (erase) 를한후에새로운데이터를기록할수있다. 여기서, 플래시메모리는전원이차단된경우에도데이터가사라지지않는대표적인비휘발성메모리를말한다. 또한, 이미페이지에기록된데이터의변경이있을때는새로운데이터를다른페이지에기록하고, 이전의데이터는유효하지않은 (invalid) 영역으로관리한다. 이에, 블록회수 (Garbage Collection) 과정이요구된다. 도 1 은종래의플래시메모리에서블록회수를수행하는동작을나타낸도면이다. 도시된바와같이, 블록회수는특정블록내의유효한 (valid) 페이지만을다른블록에복사 (copy) 해두고, 해당블록은삭제 (erase) 함으로써, 다시사용할수있도록한다. 이에, 블록회수의과정이수행되기위해서는쓰기 (write) 와삭제 (erase) 라는과정이필연적으로요구된다. 그러나, 상기와같은블록회수의과정은시간도오래걸릴뿐만아니라, 하기 [ 표 1] 에서나타난바와같이전력도많이소모하게된다. [ 표 1] 동작 시간 전력 읽기 (1 페이지 ) 37uS 1.2uJ 프로그램 (1 페이지 ) 306uS 8.3uJ 삭제 (1 블록 ) 1.8Ms 21.9uJ 또한, 플래시메모리가무선단말기와같은배터리로동작하는이동용시스템에서이용되는경우, 블록회수과정수행시배터리의가용시간에큰영향을미친다. 종래의블록회수시스템은플래시메모리를자유블록 (Free Block) 과할당블록 (Used Block) 으로구분하고, 자유블록과할당블록을관리하는자유블록리스트 (Free Block List) 와할당블록리스트를포함한다. 또한, 블록회수시스템은할당블록리스트내에서할당블록을찾아내어삭제한후, 자유블록리스트로보내는블록회수부 (Garbage Collector), 및소정블록을할당하고, 블록회수부에게블록회수를요청하는블록할당부 (Block Allocator) 를포함한다. 예를들어, 초기에사용되지않은모든블록들은자유블록리스트에들어가고, 플래시메모리에서데이터를쓰기위해서새로운블록이필요하면블록할당부가자유블록리스트에새로운블록을요청한다. 이에, 자유블록리스트는자유블록중에하나를할당한다. 여기서, 할당된블록은할당블록리스트에추가된다. 이후, 블록할당부는자유블록리스트에자유블록이없는경우, 및새로저장할데이터에비해서비어있는자유블록 (free block) 이모자라는경우에블록회수부에게블록회수를요청한다. 이에, 블록회수부는할당블록리스트내에서할당블록을찾아내어삭제한후자유블록리스트로전송한다. 여기서, 블록회수부는외부로부터요청이없을경우에도타이머 (Timer) 를사용하여특정시간주기나, 또는시스템유휴검출부 (System Idle Detector) 를사용하여시스템이유휴상태일때블록회수과정을실행할수도있다. 그러나, 블록회수부는할당블록리스트에서모든할당블록을찾거나블록회수동작의시간을줄이기위해서특정개수의할당블록만을찾아자유블록리스트로보낸다. 즉, 블록회수부가할당블록을삭제하는개수는무선단말기의전원상태 (power state) 와는전혀무관하다. 따라서, 무선단말기의배터리전력이부족할때블록회수를수행할경우, 배터리의전력을더욱소진시키는문제점이있다. 한국공개특허 2004-0104203( 이동통신단말기의쓰레기데이터모음방법 ) 은이동통신단말기에서플래시메모리에대한쓰레기데이터모음이이루어지거나필요로할때, 단말기를잠시저전력모드 (Low power mode) 로전환함으로써외 - 4 -
부로부터의인터럽트를방지하고, 원활한쓰레기데이터모음이수행될수있도록함으로써, 단말기가안정적으로동작하도록하는이동통신단말기의쓰레기데이터모음방법을개시하고있으나, 이는무선단말기의전원상태를기초로블록회수를수행하는기술을전혀언급하고있지않다. 발명이이루고자하는기술적과제 본발명은휴대용장치의전원상태를기초로블록회수시블록회수코스트크기및동작주기를조절함으로써, 휴대용장치의전력을보다효율적으로소비할수있도록하는데그목적이있다. 본발명의목적들은이상에서언급한목적들로제한되지않으며, 언급되지않은또다른목적들은아래의기재로부터당업자에게명확하게이해되어질수있을것이다. 발명의구성 상기목적을달성하기위하여, 본발명의일실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치는, 소정데이터를저장하는비휘발성메모리와, 상기비휘발성메모리에할당된물리블록을휴대용장치의전원상태를기초하여회수하는전원관리부를포함한다. 또한, 본발명의다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는방법은, 비휘발성메모리내의자유블록의개수를체크하는단계와, 상기체크결과자유블록의개수가제 1 임계값보다작은경우, 휴대용장치의전원상태를체크하는단계와, 상기체크결과전원이충분한경우, 블록회수코스트가큰물리블록까지회수하는단계와, 상기체크결과전원이충분하지않은경우, 블록회수코스트가작은물리블록을회수하는단계를포함한다. 또한, 본발명의또다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는방법은, 비휘발성메모리내의자유블록의개수를체크하는단계와, 상기체크결과자유블록의개수가제 1 임계값보다작은경우, 휴대용장치의전원상태를체크하는단계와, 상기체크결과전원이충분한경우, 블록회수주기를제 2 임계값보다짧게설정하는단계와, 상기체크결과전원이충분하지않은경우, 블록회수주기를제 2 임계값보다길게설정하는단계와, 상기설정된블록회수주기를기초로할당된물리블록을회수하는단계를포함한다. 기타실시예들의구체적인사항들은상세한설명및도면들에포함되어있다. 본발명의이점및특징, 그리고그것들을달성하는방법은첨부되는도면과함께상세하게후술되어있는실시예들을참조하면명확해질것이다. 그러나본발명은이하에서개시되는실시예들에한정되는것이아니라서로다른다양한형태로구현될수있으며, 단지본실시예들은본발명의개시가완전하도록하고, 본발명이속하는기술분야에서통상의지식을가진자에게발명의범주를완전하게알려주기위해제공되는것이며, 본발명은청구항의범주에의해정의될뿐이다. 명세서전체에걸쳐동일참조부호는동일구성요소를지칭한다 이하, 본발명의실시예들에의하여전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법을설명하기위한블록도또는처리흐름도에대한도면들을참고하여본발명에대해설명하도록한다. 이때, 처리흐름도도면들의각블록과흐름도도면들의조합들은컴퓨터프로그램인스트럭션들에의해수행될수있음을이해할수있을것이다. 이들컴퓨터프로그램인스트럭션들은범용컴퓨터, 특수용컴퓨터또는기타프로그램가능한데이터프로세싱장비의프로세서에탑재될수있으므로, 컴퓨터또는기타프로그램가능한데이터프로세싱장비의프로세서를통해수행되는그인스트럭션들이흐름도블록 ( 들 ) 에서설명된기능들을수행하는수단을생성하게된다. 이들컴퓨터프로그램인스트럭션들은특정방식으로기능을구현하기위해컴퓨터또는기타프로그램가능한데이터프로세싱장비를지향할수있는컴퓨터이용가능또는컴퓨터판독가능메모리에저장되는것도가능하므로, 그컴퓨터이용가능또는컴퓨터판독가능메모리에저장된인스트럭션들은흐름도블록 ( 들 ) 에서설명된기능을수행하는인스트럭션수단을내포하는제조품목을생산하는것도가능하다. 컴퓨터프로그램인스트럭션들은컴퓨터또는기타프로그램가능한데이터프로세싱장비상에탑재되는것도가능하므로, 컴퓨터또는기타프로그램가능한데이터프로세싱장비상에서일련의동작단계들이수행되어컴퓨터로실행되는프로세스를생성해서컴퓨터또는기타프로그램가능한데이터프로세싱장비를수행하는인스트럭션들은흐름도블록 ( 들 ) 에서설명된기능들을실행하기위한단계들을제공하는것도가능하다. - 5 -
또한, 각블록은특정된논리적기능 ( 들 ) 을실행하기위한하나이상의실행가능한인스트럭션들을포함하는모듈, 세그먼트또는코드의일부를나타낼수있다. 또, 몇가지대체실행예들에서는블록들에서언급된기능들이순서를벗어나서발생하는것도가능함을주목해야한다. 예컨대, 잇달아도시되어있는두개의블록들은사실실질적으로동시에수행되는것도가능하고또는그블록들이때때로해당하는기능에따라역순으로수행되는것도가능하다. 도 2 는본발명의일실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치의내부블록도를나타낸도면이다. 도시된바와같이, 전원상태에따라비휘발성메모리의블록회수를수행하는장치는, 호스트 (100), 전원관리부 (200), 및비휘발성메모리 ( 즉, 플래시메모리 )(300) 를포함하여구성된다. 여기서, 전원상태에따라비휘발성메모리의블록회수를수행하는장치는사용자가이동하면서소정기능및정보를이용할수있는휴대용장치에장착되며, 휴대용장치는예를들어휴대폰 (Mobile Phone), PAD(Personal Digital Assistants), 및 SSD(Solid State Disk) 등을말한다. 이때, 본실시예에서사용되는 '~ 부 ' 라는용어는소프트웨어또는 FPGA 또는 ASIC 과같은하드웨어구성요소를의미하며, '~ 부 ' 는어떤역할들을수행한다. 그렇지만 '~ 부 ' 는소프트웨어또는하드웨어에한정되는의미는아니다. '~ 부 ' 는어드레싱할수있는저장매체에있도록구성될수도있고하나또는그이상의프로세서들을재생시키도록구성될수도있다. 따라서, 일예로서 '~ 부 ' 는소프트웨어구성요소들, 객체지향소프트웨어구성요소들, 클래스구성요소들및태스크구성요소들과같은구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램코드의세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터구조들, 테이블들, 어레이들, 및변수들을포함한다. 구성요소들과 '~ 부 ' 들안에서제공되는기능은더작은수의구성요소들및 '~ 부 ' 들로결합되거나추가적인구성요소들과 '~ 부 ' 들로더분리될수있다. 뿐만아니라, 구성요소들및 '~ 부 ' 들은디바이스또는보안멀티미디어카드내의하나또는그이상의 CPU 들을재생시키도록구현될수도있다. 호스트 (100) 는사용자의명령에따라비휘발성매체 (300) 와데이터를송수신한다. 전원관리부 (200) 는휴대용장치의전원상태를기초로블록회수를수행하는것으로, 휴대용장치의전원이충분한상태및충분하지않은상태인지판단하고, 판단결과에따라블록회수시블록회수코스트크기및동작주기를다르게수행한다. 여기서, 전원관리부 (200) 는블록할당부 (210), 블록회수부 (220), 전원상태체크부 (230), 리스트저장부 (240) 를포함하여구성된다. 블록할당부 (210) 는비휘발성메모리 (300) 에물리블록 (Physical Block) 을할당한다. 즉, 블록할당부 (210) 는리스트저장부 (240) 에저장된자유블록리스트에따라비휘발성메모리 (300) 에물리블록을할당할수있다. 여기서, 자유블록리스트는데이터가존재하지않는빈물리블록을포함한다. 블록회수부 (220) 는비휘발성메모리 (300) 에할당된물리블록을회수하는것으로, 본발명에서블록회수부 (220) 는물리블록회수시휴대용장치의전원상태를기초로수행한다. 즉, 블록회수부 (220) 는휴대용장치의전력소모를고려하여물리블록의회수를수행하는데, 휴대용장치의전원이충분한경우에는블록회수코스트크기가큰물리블록까지회수하고, 또한블록회수의주기를짧게설정하여블록회수작업을자주수행한다. 한편, 휴대용장치의전원이충분하지않은경우에는블록회수코스트크기가작은물리블록만을회수하고, 또한블록회수의주기를길게설정하여휴대용장치의전원이충분할때보다블록회수작업을적게수행한다. 이하, 도 3 및도 4 에서블록회수코스트크기및블록회수의주기를기초로블록회수를수행하는동작에대해설명한다. 또한, 블록회수부 (220) 는비휘발성메모리 (300) 에자유블록리스트에자유블록의개수가소정개수이하이거나, 비활성데이터가차지하는물리블록의개수가소정개수이상인경우블록회수를수행한다. 여기서, 블록회수부 (220) 는사용빈도 (Wear Level) 를고려하여블록회수를수행한다. 예를들어, 비휘발성메모리 (300) 에서는데이터의업데이트시, 기존데이터를수정하지않고새로운데이터를추가하는방식을사용하기때문에새로운데이터추가시비활성화데이터가차지하는블록의개수가많아지게된다. 이에, 블록회수부 (220) 는비휘발성데이터가위치하는블록을회수하여새로운블록할당시에사용할수있도록한다. - 6 -
또한, 블록회수부 (220) 는타이머 ( 도시되지않음 ), 및시스템유휴상태검색부 ( 도시되지않음 ) 을통해소정주기및시스템유휴상태인경우블록회수를수행한다. 여기서, 블록회수부 (220) 는휴대용장치의전원상태를기초로설정된블록회수주기를변경한후블록회수를수행할수도있다. 전원상태체크부 (230) 는휴대용장치의전원상태를체크하여블록회수부 (220) 로전송한다. 여기서, 전원상태는휴대용장치의배터리공급전압을기초로체크된휴대용장치의배터리충전상태를말한다. 리스트저장부 (240) 는비휘발성메모리 (300) 에할당된물리블록에대한할당블록리스트및빈물리블록에대한자유블록리스트를저장한다. 비휘발성메모리 (300) 는소정데이터가저장되는영역으로, 전원이차단된경우에도저장된데이터가사라지지않는다. 여기서, 비휘발성메모리는플래시메모리등으로이해될수있다. 도 3 은본발명의다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치에서블록회수코스트크기를기초로블록회수를수행하는예를나타낸도면이다. 휴대용장치의전원상태를체크하는전원상태체크부 (230) 로부터휴대용장치의전원상태정보가전송되면, 블록회수부 (220) 는도 3a 에도시된테이블을기초로블록회수를수행한다. 전송된휴대용장치의배터리충전상태가배터리충전중인경우, 블록회수부 (220) 는자유블록을설정된제 1 임계치이상으로유지하기위해블록회수코스트가큰물리블록까지블록회수를수행한다. 여기서, 배터리충전중인경우에는블록회수부 (220) 가회수할수있는모든할당된물리블록을회수한다. 또한, 제 1 임계치는소정데이터기록시필요한자유블록의개수를설정한값이며, 블록회수코스트가큰물리블록이란소정물리블록에유효한페이지의수가많은물리블록을말한다. 즉, 할당된물리블록에는유효한페이지와유효하지않은페이지가존재하고, 블록회수부 (220) 는유효한페이지는다른물리블록으로복사한후삭제하고, 유효하지않은페이지는바로삭제한다. 이때, 유효한페이지가많은물리블록인경우, 유효한페이지가적은물리블록보다유효한페이지를복사한후삭제하는과정을더많이수행해야하므로, 유효한페이지가적은물리블록을회수할때보다더많은전원이소모된다. 이에, 유효한페이지가많은물리블록은유효한페이지가적은페이지보다블록회수코스트가크다. 따라서, 블록회수부 (220) 는리스트저장부 (240) 에저장된할당블록리스트에서각물리블록내유효한페이지의수를산출하고, 산출결과유효한페이지가가장많은물리블록 ( 즉, 블록회수코스트가큰물리블록 ) 까지블록회수를수행한다. 예를들어, 도 3b 에도시된바와같이리스트저장부 (240) 에물리블록이 7 개존재할경우, 블록회수부 (220) 는물리블록 1 내지물리블록 7 내의유효한페이지수를산출한다. 산출결과물리블록 1 의유효한페이지는 5 개, 물리블록 3 의유효한페이지는 9 개, 물리블록 6 의유효한페이지는 3 개, 물리블록 7 의유효한페이지는 1 개임을알수있고, 물리블록 2, 물리블록 4, 및물리블록 5 의유효한페이지는 0 개로, 즉자유블록임을알수있다. 이에, 블록회수부 (220) 는물리블록 1, 물리블록 3, 물리블록 6, 및물리블록 7 에대하여블록회수를수행한다. 또한, 휴대용장치의배터리가충분히많은경우 ( 즉, 배터리충전상태 100), 블록회수부 (220) 는자유블록을설정된제 1 임계치이상으로유지하기위해블록회수코스트가크지않은물리블록 ( 예를들어, 물리블록 1, 물리블록 6, 및물리블록 7) 을회수한다. 여기서, 배터리가충분히많은경우에는리스트저장부 (240) 내에할당된물리블록중블록회수코스트가가장큰물리블록 ( 예를들어, 물리블록 3) 을제외한할당된물리블록들을회수한다. 또한, 휴대용장치의배터리가충분히많지않은경우 ( 즉, 배터리충전상태 50), 블록회수부 (220) 는자유블록을설정된제 1 임계치로유지하기위해블록회수코스트가크지않은물리블록 ( 예를들어, 물리블록 6, 및물리블록 7) 만을회수한다. - 7 -
또한, 휴대용장치의배터리가많이방전된경우 ( 즉, 배터리충전상태 20), 블록회수부 (220) 는자유블록을설정된제 1 임계치이하로유지하기위해블록회수코스트가작은물리블록 ( 예를들어, 물리블록 7) 만을회수한다. 따라서, 휴대용장치의배터리상태에따라블록회수를수행하기때문에휴대용장치의전력을보다적게소비할수있다. 도 4 는본발명의다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치에서블록회수의주기를조정하는예를나타낸도면이다. 휴대용장치의전원상태를체크하는전원상태체크부 (230) 로부터휴대용장치의전원상태정보가전송되면, 블록회수부 (220) 는도 4a 에도시된테이블을기초로블록회수를수행한다. 휴대용장치의배터리충전상태체크결과배터리충전중인경우, 블록회수부 (220) 는자유블록을설정된제 1 임계치이상으로유지하기위해, 블록회수주기를제 2 임계치보다짧게설정한후블록회수를수행한다. 여기서, 제 1 임계치는소정데이터기록시필요한자유블록의개수를설정한값이고, 제 2 임계치는블록회수의주기를설정한값이다. 예를들어, 도 4b 에도시된바와같이기본적으로설정된블록회수주기가 1 시간이고, 휴대용장치의배터리가충전중인경우, 블록회수부 (220) 는자유블록을설정된제 1 임계치이상으로유지하기위해블록회수주기를 30 분으로변경설정한다. 그다음, 블록회수부 (220) 는변경설정된블록회수주기 ( 예를들어, 30 분 ) 에따라블록회수를수행한다. 따라서, 블록회수가자주수행됨으로써, 자유블록을제 1 임계치이상으로유지할수있다. 또한, 휴대용장치의배터리가충분히많은경우 ( 즉, 배터리충전상태 100), 블록회수부 (220) 는자유블록을설정된제 1 임계치이상으로유지하기위해블록회수주기를제 2 임계치보다짧게설정 ( 예를들어, 30 분 ) 한후블록회수를수행한다. 또한, 휴대용장치의배터리가충분히많지않은경우 ( 즉, 배터리충전상태 50), 블록회수부 (220) 는자유블록을설정된제 1 임계치로유지하기위해블록회수주기를제 2 임계치로설정 ( 예를들어, 1 시간 ) 한후, 블록회수를수행한다. 또한, 휴대용장치의배터리가많이방전된경우 ( 즉, 배터리충전상태 20), 블록회수부 (220) 는자유블록을설정된제 1 임계치이하로유지하기위해블록회수주기를제 2 임계치보다길게설정한후블록회수를수행한다. 예를들어, 도 4b 에도시된바와같이기본적으로설정된블록회수주기가 1 시간이고, 휴대용장치의배터리가많이방전된경우, 블록회수부 (220) 는자유블록을설정된제 1 임계치로유지하기위해블록회수주기를 2 시간으로변경설정한다. 그다음, 블록회수부 (220) 는변경설정된블록회수주기 ( 예를들어, 2 시간 ) 에따라블록회수를수행한다. 따라서, 블록회수가적게수행됨으로써, 자유블록을설정된제 1 임계치이하로유지할수있다. 도 5 는본발명의또다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는방법중전원상태를기초로블록회수코스트를참조하여블록회수를수행하는예를나타낸순서도이다. 먼저, 블록회수부 (220) 는리스트저장부 (240) 에존재하는자유블록의개수를체크한다 (S500). 체크결과자유블록의개수가설정된제 1 임계값보다많은경우 (S510), 블록회수부 (220) 는블록회수를수행하지않는다 (S520). 여기서, 제 1 임계치는소정데이터작성시필요한자유블록의개수를설정한값이다. 체크결과자유페이지개수가제 1 임계값보다적은경우 (S510), 블록회수부 (220) 는전원상태체크부 (230) 를통해감지된휴대용장치의전원상태를체크한다 (S530). 체크결과휴대용전원이충분히많은경우 (S540), 블록회수부 (220) 는현재휴대용장치의배터리가충전중인지를판단한다 (S550). 판단결과배터리충전중인경우, 블록회수부 (220) 는리스트저장부 (240) 에자유블록이제 1 임계치이상으로유지되도록블록회수코스트가큰물리블록까지회수한다 (S560). 여기서, 블록회수코스트가큰물리블록이란소정물리블록에유효한페이지의수가많은물리블록을말한다. - 8 -
또한, 판단결과배터리충전중이아니지만배터리전원이충분히많은경우, 블록회수부 (220) 는리스트저장부 (240) 내에자유블록이제 1 임계치이상으로유지되도록블록회수코스트가크지않은물리블록을회수한다 (S570). 한편, 체크결과휴대용전원이충분히많지않은경우 (S540), 블록회수부 (220) 는리스트저장부 (240) 내에자유블록이제 1 임계치가유지되도록블록회수코스트가작은물리블록만을회수한다 (S580). 도 6 은본발명의또다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는방법중전원상태를기초로블록회수의주기를변경하는예를나타낸순서도이다. 먼저, 블록회수부 (220) 는리스트저장부 (240) 에존재하는자유블록의개수를체크한다 (S600). 체크결과자유블록의개수가설정된제 1 임계값보다많은경우 (S610), 블록회수부 (220) 는블록회수를수행하지않는다 (S620). 여기서, 제 1 임계치는소정데이터작성시필요한자유블록의개수를설정한값이다. 체크결과자유블록의개수가제 1 임계값보다적은경우 (S610), 블록회수부 (220) 는전원상태체크부 (230) 를통해감지된휴대용장치의전원상태를체크한다 (S630). 체크결과휴대용전원이충분히많은경우 (S640), 블록회수부 (220) 는리스트저장부 (240) 에자유블록이제 1 임계치이상으로유지되도록블록회수주기를제 2 임계값보다짧게설정한다 (S650). 여기서, 제 1 임계치는소정데이터기록시필요한자유블록의개수를설정한값이고, 제 2 임계치는블록회수의주기를설정한값이다. 또한, 휴대용전원이충분히많은경우는휴대용장치가충전중이거나, 배터리충전중은아니지만배터리가충분히충전된상태를말한다. 한편, 체크결과휴대용전원이충분히많지않은경우 (S640), 블록회수부 (220) 는리스트저장부 (240) 내에자유블록이제 1 임계치가유지되도록블록회수주기를제 2 임계값보다길게설정한다 (S660). 그다음, 블록회수부 (220) 는설정된블록회수주기로할당된물리블록을회수한다. 본발명에서는휴대용장치의전원상태를기초로블록회수할때, 블록회수코스트및동작주기를모두고려하여할당된물리블록에대한블록회수를수행할수도있다. 이상첨부된도면을참조하여본발명의실시예를설명하였지만, 본발명이속하는기술분야에서통상의지식을가진자는본발명이그기술적사상이나필수적인특징을변경하지않고서다른구체적인형태로실시될수있다는것을이해할수있을것이다. 그러므로이상에서기술한실시예들은모든면에서예시적인것이며한정적이아닌것으로이해해야만한다. 발명의효과 상기한바와같은본발명의전원상태에따라비휘발성메모리의블록회수를수행하는장치및그방법에따르면다음과같은효과가하나혹은그이상있다. 비휘발성메모리의블록회수시휴대용장치의전원상태를기초로블록회수코스트크기및동작주기를조절하여할당된블록을회수함으로써, 휴대용장치의전력을보다효율적으로이용할수있는장점이있다. 또한, 휴대용장치의전원상태를기초로블록회수를수행함으로써, 블록회수로인한휴대용장치의전력소모를줄일수있는장점이있다. 도면의간단한설명 도 1 은종래의플래시메모리에서블록회수부의동작을나타낸도면. 도 2 는본발명의일실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치의내부블록도를나타낸도면. - 9 -
도 3 은본발명의다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치에서블록회수코스트크기를기초로블록회수를수행하는예를나타낸도면. 도 4 는본발명의또다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는장치에서블록회수의주기를조정하는예를나타낸도면. 도 5 는본발명의또다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는방법중전원상태를기초로블록회수코스트를참조하여블록회수를수행하는예를나타낸순서도. 도 6 은본발명의또다른실시예에따른전원상태에따라비휘발성메모리의블록회수를수행하는방법중전원상태를기초로블록회수의주기를변경하는예를나타낸순서도. < 도면의주요부분에관한부호의설명 > 100 : 호스트 200 : 전원관리부 210 : 블록할당부 220 : 블록회수부 230 : 전원상태체크부 240 : 리스트저장부 300: 비휘발성메모리 ( 플래시메모리 ) 도면 - 10 -
도면 1-11 -
도면 2-12 -
도면 3a - 13 -
도면 3b - 14 -
도면 4a - 15 -
도면 4b - 16 -
도면 5-17 -
도면 6-18 -