KR20110046232A - 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법 - Google Patents

데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법 Download PDF

Info

Publication number
KR20110046232A
KR20110046232A KR1020100042065A KR20100042065A KR20110046232A KR 20110046232 A KR20110046232 A KR 20110046232A KR 1020100042065 A KR1020100042065 A KR 1020100042065A KR 20100042065 A KR20100042065 A KR 20100042065A KR 20110046232 A KR20110046232 A KR 20110046232A
Authority
KR
South Korea
Prior art keywords
storage device
invalidation command
host
cmd
invalidation
Prior art date
Application number
KR1020100042065A
Other languages
English (en)
Inventor
오상진
최은진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020100042065A priority Critical patent/KR20110046232A/ko
Priority to US12/911,082 priority patent/US20110271037A1/en
Publication of KR20110046232A publication Critical patent/KR20110046232A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 데이터 저장 장치는, 데이터를 저장하기 위한 저장 매체, 그리고 호스트로부터의 무효화 명령에 따라 상기 저장 매체에 저장된 데이터를 무효화하는 스토리지 컨트롤러를 포함하되, 상기 무효화 명령은 상기 저장 매체의 프리 블록의 상태에 따라 하달된다.

Description

데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법{STORAGE DEVICE PERFORMING DATA INVALIDATION OPERATION AND DATA INVALIDATION METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 삭제된 파일에 대응하는 데이터를 무효화하는 저장 장치 및 그것의 데이터 무효화 방법에 관한 것이다.
사용자 장치(User device)는 퍼스널 컴퓨터, 디지털 카메라, 캠코더, 휴대 전화, MP3, PMP, PDA 등과 같은 호스트뿐만 아니라, 메모리 카드, USB 메모리, 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD) 등과 같은 저장 장치를 포함할 수 있다. 사용자 장치는 호스트 내부에 저장 장치를 포함할 수도 있다. 저장 장치는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리(Flash Memory) 등과 같은 불휘발성 메모리를 포함할 수 있다.
일반적으로 사용자 장치는 호스트(Host)와 저장 장치(Storage Device)로 구성될 수 있다. 호스트는 저장 장치에 저장된 파일을 삭제할 수 있다. 파일의 생성이나 삭제는 호스트의 파일 시스템(File system)에 의해서 제어된다. 파일 시스템은 삭제될 파일을 저장 장치에서 실질적으로 삭제하지 않고 메타 데이터를 정정하여 삭제된 파일로 지정한다. 즉, 삭제될 파일의 내용이 파일 시스템에서는 무효한 데이터로 처리되는 반면에 저장 장치에서는 유효한 데이터로 남아있게 된다. 이러한 이유로, 저장 장치는 삭제된 파일의 데이터를 포함한 메모리 블록을 유효한 블록으로 인식할 것이다. 따라서, 머지/가비지 컬렉션(Merge/Garbage collection) 등과 같은 작업이 삭제된 파일에 대해서 행해지며, 그 결과 저장 장치 또는 사용자 장치의 성능이 저하될 것이다.
이러한 저장 장치의 성능 저하를 방지하기 위해서, 호스트는 삭제된 파일의 내용이 저장 장치에서 실질적으로 무효화되도록 무효화 명령(Invalidation Command, 또는, Trim Command)을 제공할 수 있다. 무효화 명령은 삭제될 영역을 지정하기 위한 정보(예를 들면, 어드레스 정보)를 포함할 것이다. 무효화된 파일은 머지/가비지 컬렉션 등과 같은 작업에서 배제된다. 따라서, 무효화 명령에 의해서 처리된 파일은 저장 장치의 성능에 더 이상 영향을 미치지 않는다.
하지만, 호스트에서 데이터가 삭제될 때마다 무효화 명령이 제공되면 저장 장치 및 파일 시스템의 부담이 증가할 수 있다. 게다가, 빈번하게 업데이트되는 파일이나 빈번하게 업데이트되는 메모리 영역이 존재할 수 있다. 그러한 경우에 파일이 삭제되는 시점마다 무효화 명령이 제공되고, 따라서 저장 장치의 부담은 급격히 증가할 수 있다. 무효화 명령을 통해서 저장 장치의 성능 개선 효과가 분명히 존재하지만, 과도한 무효화 명령의 발생은 호스트나 저장 장치 모두의 성능을 감소시킬 수 있다. 따라서, 무효화 명령을 보다 효율적으로 사용하기 위한 기술에 대한 요구가 절실한 실정이다.
본 발명의 목적은 호스트로부터 제공되는 무효화 명령의 제공 횟수를 줄여 호스트 및 저장 장치의 부담을 줄일 수 있는 사용자 장치를 제공하는 데 있다.
본 발명의 다른 목적은 호스트로부터 제공되는 무효화 명령을 선택적으로 실행하여 효율적으로 구동될 수 있는 저장 장치를 제공하는 데 있다.
본 발명에 따른 데이터 저장 장치는, 데이터를 저장하기 위한 저장 매체, 그리고 호스트로부터의 무효화 명령에 따라 상기 저장 매체에 저장된 데이터를 무효화하는 스토리지 컨트롤러를 포함하되, 상기 무효화 명령은 상기 저장 매체의 프리 블록의 상태에 따라 하달된다.
본 발명에 따른 호스트와 저장 장치를 포함하는 사용자 장치의 파일 무효화 방법은, 상기 저장 장치의 프리 블록 상태(Free Block Status)를 파악하는 단계, 그리고 상기 프리 블록 상태(Free Block Status)에 따라 상기 무효화 명령을 하달하는 단계를 포함한다.
본 발명의 다른 특징에 따른 사용자 장치는, 삭제된 파일에 대한 무효화 명령을 하달하는 호스트, 그리고 상기 무효화 명령에 따라 상기 삭제된 파일을 무효화하는 저장 장치를 포함하되, 상기 무효화 명령은 상기 저장 장치의 프리 블록 상태에 따라 하달된다.
본 발명의 또 다른 특징에 따른 저장 장치는, 데이터를 저장하기 위한 저장 매체, 그리고 호스트로부터의 무효화 명령에 따라 상기 저장 매체에 저장된 데이터를 무효화하는 컨트롤러를 포함하되, 상기 컨트롤러는 특정 영역 또는 특정 데이터에 대한 상기 무효화 명령의 발생 빈도를 참조하여 선택적으로 무효화 또는 로깅(Logging) 한다.
본 발명에 따르면, 호스트로부터의 무효화 명령의 회수를 줄임으로써 사용자 장치의 성능을 높일 수 있다. 그리고 무효화 명령의 회수는 동일하더라도 무효화 동작을 효율적으로 수행하는 저장 장치를 제공할 수 있다.
도 1은 파일 무효화 동작을 보여주는 테이블;
도 2는 본 발명에 따른 사용자 장치를 보여주는 블록도;
도 3은 도 2의 컨트롤러의 일 예를 보여주는 블록도;
도 4는 도 2의 컨트롤러의 다른 예를 보여주는 블록도;
도 5는 본 발명의 제 1 실시 예에 따른 파일 무효화 방법을 보여주는 도면;
도 6a는 도 5에서의 호스트 동작을 상세하게 보여주는 순서도;
도 6b는 도 5에서의 저장 장치 동작을 상세하게 보여주는 순서도;
도 7은 본 발명의 제 2 실시 예에 따른 파일 무효화 방법을 보여주는 도면;
도 8a는 도 7에서의 호스트 동작을 상세하게 보여주는 순서도;
도 8b는 도 7에서의 저장 장치 동작을 상세하게 보여주는 순서도;
도 9는 본 발명의 제 3 실시 예에 따른 빈번한 업데이트 영역을 검출하기 위한 비트맵 구성을 보여주는 도면;
도 10a 및 도 10b는 본 발명의 제 3 실시 예에 따른 파일 무효화 방법을 보여주는 순서도들;
도 11은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도; 및
도 12는 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 저장 장치로 솔리드 스테이트 드라이브(SSD)를 한 예로서 사용할 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 플래시 메모리를 예로 들어 설명될 것이나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
그리고 본 발명에서는 소거 후 쓰기 방식으로 메모리 영역이 관리되는 저장 장치에서, '프리 블록(Free block)'이란 용어가 사용될 것이다. 블록 단위로 삭제되는 불휘발성 메모리 장치에서 '프리 블록'은 머지(Merge) 동작 후에 소거된 메모리 블록을 지칭할 수 있다. 또는, '프리 블록'은 소거된 블록에 더하여 데이터가 무효화된 메모리 블록을 포함하는 개념으로 사용될 수 있다. 즉, '프리 블록'은 저장 장치가 필요한 시점에 즉시 데이터를 기입할 수 있는 메모리 영역을 의미한다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 파일의 무효화 절차를 보여주는 테이블이다. 도 1을 참조하면, 파일의 삭제와 생성에 따라 물리 블록(Physical block)의 상태가 표로 도시되어 있다.
먼저, 상태 0(State 0)는 파일(File 1)이 삭제되기 이전 저장 장치의 물리 블록의 상태와 어드레스 맵핑을 보여준다. 삭제될 파일(File 1)은 논리 주소(LBN 0, 1)에 대응하도록, 그리고 물리 주소(PBN 0, 1)에 맵핑되어 있다고 가정한다.
상태 1(State 1)은 파일(File 1)이 삭제된 상태를 보여준다. 호스트의 파일 시스템에 의해서 파일(File 1)이 삭제되면, 호스트는 저장 장치에 삭제된 파일을 실질적으로 무효화하기 위하여 무효화 명령(Invalidation Command)을 전달한다. 무효화 명령에 따라 물리 블록들 (0, 1)에 기록된 파일(File 1)에 해당하는 데이터는 실질적으로 무효화된다. 따라서, 물리 블록들 (0, 1)에 기록된 파일(File 1)에 해당하는 데이터는 머지/가비지 컬렉션 작업에서 제외된다. 그리고 논리 주소 (LBN 0, 1)는 새로운 파일을 할당받을 수 있는 상태가 될 것이다. 물리 주소(PBN 0, 1)는 무효화된 것으로 저장 장치의 맵핑 테이블에 마킹(IV) 될 것이다. 이러한 무효화 동작은 저장 장치 내부의 삭제된 파일(File 1)에 대한 메타 데이터(Meta data)의 업데이트를 통해서 구현될 수 있다.
이러한 상태에서 삭제된 파일(File 1)과 유사한 사이즈의 새로운 파일이 생성되면, 저장 장치는 상태 2(State 2)와 같은 데이터 상태로 변경될 수 있다. 생성된 파일(File 2)은 논리 주소 LBN(0, 1)에 할당되고, 그리고 논리 주소 LBN(0, 1)는 물리 주소 PBN(2, 3)에 맵핑될 수 있다. 이때, 논리 주소 LBN(0, 1)에 할당되는 파일 (File 2)은 복수의 프리 블록들(Blocks 2~7) 중 프리 블록(Block 2, 3)에 실질적으로 저장될 것이다.
이와 같이 프리 블록(Free Block)의 수가 생성된 파일을 수용하기에 충분한 상태라 하더라도, 호스트는 삭제된 파일(File 1)에 대한 무효화 명령을 저장 장치에 전달할 것이다. 무효화 명령(Invalidation Command)은 덮어쓰기가 불가능한 불휘발성 메모리를 저장 매체로 사용하는 저장 장치에서, 삭제된 데이터로부터 야기되는 부담을 줄이기 위해 사용된다. 즉, 무효화 명령은 파일 시스템에서 삭제된 파일을 저장 장치가 무효한 데이터로 인식하도록 하기 위한 것이다. 또한, 무효화 명령에 의해서 저장 장치는 무효화된 데이터 영역을 프리 블록으로 확보할 수 있다.
그러나 호스트에서 데이터가 삭제될 때마다 무효화 명령이 제공되면, 저장 장치와 호스트 모두에게 부담으로 작용할 수 있다. 도 1과 같이 프리 블록의 수가 충분한 경우에도 삭제된 파일에 대한 무효화 명령이 빈번하게 제공되는 경우, 호스트는 빈번한 명령어 생성과 그에 따르는 메타 데이터의 업데이트를 부담해야 한다. 빈번한 무효화 명령의 전달에 따라, 저장 장치는 프리 블록의 수가 충분함에도 빈번하게 메타 데이터를 업데이트해야 하는 부담을 갖게 될 것이다.
본 발명의 실시 예에 따른 저장 장치 및 그것의 파일 무효화 방법에 따르면, 과도한 무효화 명령의 발생을 억제하여 저장 장치 및 호스트의 성능 저하를 막을 수 있다. 또한, 호스트 측에서 과도하게 무효화 명령이 발생하더라도, 로깅 동작을 사용하는 저장 장치에 의해서 선택적 무효화 동작이 가능하다.
도 2는 본 발명의 실시 예에 따른 사용자 장치(100)를 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 사용자 장치(100)는 호스트(110, Host)와 저장 장치(120, Storage Device)를 포함한다. 저장 장치(120)는 스토리지 컨트롤러(121), 버퍼 메모리(122) 및 불휘발성 메모리(123)를 포함한다.
호스트(110)는 데이터의 교환을 포함하는 제반 동작시에 저장 장치(120)를 제어한다. 호스트(110)는, 예를 들면, 개인용/휴대용 컴퓨터, PDA, PMP, MP3 플레이어 등과 같은 휴대용 전자 장치들, HDTV, 그리고 그와 같은 것을 포함할 것이다. 저장 장치(120)에 저장된 파일이 호스트(110)에서 삭제되면, 호스트(110)는 삭제된 파일에 대한 무효화 명령(Inv_CMD)을 저장 장치(120)에 전달한다. 이 무효화 명령(Inv_CMD)에 의하여 저장 장치(120)는 무효화된 파일에 대응하는 데이터 또는 데이터 영역을 실질적으로 무효화시킨다.
저장 장치(120)는 호스트(100)의 제어에 응답하여 동작할 것이다. 저장 장치(120)는 전원이 차단되더라도 저장된 데이터를 유지할 것이다. 저장 장치(120)는, 예를 들면, 솔리드 스테이트 드라이브(Solid State Drive, 이하 SSD라 칭함)로 구성될 수 있을 것이다. 하지만, 저장 장치(120)가 SSD에 국한되지 않음은 잘 이해될 것이다. 호스트(110)로부터의 무효화 명령(Inv_CMD)에 응답하여, 저장 장치(120)는 내부에 저장된 데이터를 무효화시킨다. 무효화된 데이터 또는 무효화된 데이터 영역은 머지/가비지 컬렉션의 작업에서 배제된다. 데이터 또는 데이터 영역이 일단 무효화되면, 저장 장치(120)는 저장 장치(120)의 내부에 무효화된 데이터가 더 이상 존재하지 않는 것으로 간주한다.
본 발명의 사용자 장치(100)는 다양한 방식으로 무효화 명령(Inv_CMD)의 과도한 발생을 억제할 수 있다. 이러한 동작 방법은 후술하게 되는 제 1 실시 예와 제 2 실시 예에서 상세히 설명될 것이다. 게다가, 특정 데이터나 데이터 영역에 대한 무효화 명령(Inv_CMD)이 빈번하게 발생하면, 저장 장치(120)는 무효화 명령(Inv_CMD)을 무시하고 로깅(Logging) 한다. 로깅된 무효화 명령(Inv_CMD)은 더 이상 특정 데이터 영역에 대한 추가적인 무효화 명령(Inv_CMD)이 발생하지 않는 시점에 실행될 수 있다. 또는, 유휴 시간(Idle time)에 저장 장치(120)는 로깅된 무효화 명령들을 한꺼번에 실행할 수 있다. 이러한 동작 방법은 후술하게 되는 제 3 실시 예에서 상세히 설명될 것이다.
저장 장치(120)는 스토리지 컨트롤러(121), 버퍼 메모리(122) 및 불휘발성 메모리(123)를 포함한다. 스토리지 컨트롤러(121)는 호스트(100)로부터의 요청에 응답하여 불휘발성 메모리(123)를 제어할 것이다. 스토리지 컨트롤러(121)는 호스트(110)와 저장 장치(120)와의 연결을 제공한다. 특히, 스토리지 컨트롤러(121)는 호스트(110)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, 스토리지 컨트롤러(121)는 불휘발성 메모리(123) 또는 버퍼 메모리(122)를 액세스하거나 제어한다.
버퍼 메모리(122)에는 호스트(110)로부터 제공되는 쓰기 데이터(Write data) 또는 불휘발성 메모리(123)로부터 읽혀진 데이터(Read data)가 일시 저장된다. 일반적으로, 호스트(110)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 스토리지 컨트롤러(121)와 불휘발성 메모리(123) 간의 전송 속도보다 월등히 빠르다. 즉, 호스트(110)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(122)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 줄일 수 있다.
불휘발성 메모리(123)는 저장 장치(120)의 저장 매체(Storage Medium)로서 제공된다. 예를 들면, 불휘발성 메모리(123)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 구성될 수 있다. 또는, 불휘발성 메모리(123)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리로 구성될 수 있다. 또는, 불휘발성 메모리(123) 중 일부 또는 전부가 휘발성인 DRAM이나 SRAM으로도 구성될 수 있음은 물론이다.
여기서, 호스트(110)는 저장 장치(120)의 프리 블록 상태(Free Block Status, 이하, FBS)를 고려하여 무효화 명령(Inv_CMD)을 선택적으로 제공할 수 있다(제 1 실시 예). 또는, 저장 장치(120) 내부의 프리 블록 상태(FBS)가 기준치에 미달하는 것으로 판단되면, 저장 장치(120)가 호스트(110)로 무효화 명령(Inv_CMD)을 요청할 수 있다(제 2 실시 예). 또는, 저장 장치(120)에서 호스트로부터 빈번하게 무효화 명령(Inv_CMD)이 전달되면, 저장 장치(120)는 무효화 명령(Inv_CMD)을 무시하고 로깅하는 방법을 사용할 수 있다(제 3 실시 예).
도 3은 도 2에 도시된 스토리지 컨트롤러(121)의 일 예를 보여주는 블록도이다. 도 3을 참조하면, 본 발명의 스토리지 컨트롤러(121a)는 중앙처리장치(210), 호스트 인터페이스(220), 버퍼 매니저(230) 및 플래시 인터페이스(240)를 포함한다.
중앙처리장치(210)는 읽기/쓰기 동작에 필요한 다양한 제어 정보를 호스트 및 플래시 인터페이스(240)의 레지스터들에 전달한다. 예를 들면, 외부에서 명령어가 입력되면 호스트 인터페이스(220)의 레지스터(미도시됨)에 저장된다. 호스트 인터페이스(220)는 저장된 명령에 따라 중앙처리장치(210)에 읽기/쓰기 명령이 입력되었음을 알려준다. 이러한 동작은 중앙처리장치(210)와 플래시 인터페이스(240) 사이에서도 발생한다. 중앙처리장치(210)는 저장 장치(120)를 구동하기 위한 펌웨어(Firm ware)에 따라서 각각의 구성들을 제어한다.
호스트 인터페이스(220)는 호스트(Host)와 사용자 장치(100)와의 물리적 연결을 제공한다. 즉, 호스트 인터페이스(220)는 호스트의 버스 포맷(Bus format)에 대응하여 저장 장치(120)와의 인터페이싱을 제공한다. 호스트(110)의 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등으로 구성될 수 있다.
버퍼 매니저(230)는 버퍼 메모리(122, 도 2 참조)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(230)는 쓰기 데이터(Write data)나 읽기 데이터(Read data)를 버퍼 메모리(122)에 일시 저장한다.
플래시 인터페이스(240)는 불휘발성 메모리(123)와 데이터를 교환한다. 플래시 인터페이스(240)는 버퍼 메모리(122)로부터 전달되는 데이터를 각각의 메모리 채널들(CH1, CH2,…, CHn)로 스캐터링(Scattering)한다. 그리고 메모리 채널을 통하여 제공되는 불휘발성 메모리(123)로부터의 읽기 데이터(Read data)는 플래시 인터페이스(240)에 의해서 취합된다. 취합된 데이터는 이후 버퍼 메모리(122)에 저장될 것이다.
도 4는 도 2에 도시된 스토리지 컨트롤러의 다른 예를 보여주는 블록도이다. 도 4를 참조하면, 스토리지 컨트롤러(121b)는 호스트 인터페이스(220), 플래시 인터페이스(240), 복수의 중앙처리장치들(210-1, 210-2, …, 210-m), 그리고 버퍼 매니저(230)를 포함할 것이다. 호스트 인터페이스(220), 플래시 인터페이스(240), 그리고 버퍼 매니저(230)는 도 3에 도시된 동일한 참조 부호의 구성들과 실질적으로 동일할 것이다. 따라서, 이것들에 대한 설명은 생략하기로 한다.
또한, 스토리지 컨트롤러(121b)의 구성 요소들이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 스토리지 컨트롤러(121b)는 불휘발성 메모리(123)에 저장된 데이터의 에러를 검출 및 정정하기 위한 에러 정정 블록(ECC)이나, 롬(ROM)을 더 포함할 수 있음은 잘 이해될 것이다.
복수의 중앙처리장치들(210-1, 210-2, …, 210-m)은 스토리지 컨트롤러(121b)의 동작을 전반적으로 제어한다. 복수의 중앙처리장치들(210-1, 210-2, …, 210-m) 각각은 스토리지 컨트롤러(121b)의 제어 동작을 분할하여 처리할 수 있다. 즉, 복수의 중앙처리장치들(210-1, 210-2, …, 210-m)에 의하여 저장 장치(120)는 멀티 태스킹(Multi-tasking)을 수행할 수 있다. 게다가, 복수의 중앙처리장치들(210-1, 210-2, …, 210-m)을 포함하는 스토리지 컨트롤러(121b)는 병렬 처리(Parallel Processing)를 수행할 수 있다. 병렬 처리에 의하여, 스토리지 컨트롤러(121b)는 상대적으로 낮은 주파수의 클록으로 구동되더라도 고성능으로 동작할 수 있을 것이다.
도 5는 본 발명의 제 1 실시 예에 따른 사용자 장치의 동작을 간략히 보여주는 동작 처리도이다. 도 5를 참조하면, 호스트(110)가 저장 장치(120)의 프리 블록 상태(FBS)를 참조하여 무효화 명령(Inv_CMD)의 하달(Issue) 여부를 결정한다. 좀더 자세히 설명하면 다음과 같다.
호스트(110)는 무효화 명령(Inv_CMD)을 하달할 필요가 있을 때 저장 장치(120)에 프리 블록 상태(FBS)를 요청할 수 있다. 또는, 호스트(110)는 주기적으로 저장 장치(120)에 프리 블록 상태(FBS)를 요청할 수 있다. 본 발명의 제 1 실시 예에 따르면, 호스트(110)는 파일을 삭제할 때마다 저장 장치(120)로 무효화 명령(Inv_CMD)을 전달하지 않는다. 호스트(110)는 특정 주기마다 또는 필요시마다 저장 장치(120)로 무효화 명령(Inv_CMD)을 내릴 수 있다. 여기서, 무효화 명령(Inv_CMD)이 필요한 경우로는 저장 장치(120)의 액세스 속도가 감소하는 경우를 예로 들 수 있다.
호스트(110)로부터 요청에 따라 저장 장치(120)는 프리 블록 상태(FBS)를 파악한다. 그리고 저장 장치(120)는 파악된 프리 블록 상태(FBS)를 호스트(110)로 전달한다. 프리 블록 상태(FBS)는 저장 장치(120)에서 언제든지 데이터를 기입할 수 있는 프리 블록(Free Block)의 수를 포함한다. 또는, 프리 블록 상태(FBS)는 저장 장치(120)에 포함되는 전체 블록 수에 대한 프리 블록 수의 비율로 나타낼 수 있다. 하지만, 프리 블록 상태(FBS)에 의미는 여기의 개시에만 국한되지 않음은 잘 이해될 것이다.
호스트(110)는 저장 장치(120)로부터 프리 블록 상태(FBS)를 수신하여 무효화 명령(Inv_CMD)을 내려야 할지 판단한다. 판단을 위해 호스트(110)는 프리 블록 상태(FBS)와 기준치(Reference)를 비교한다. 프리 블록 상태(FBS)가 프리 블록의 수를 나타내는 경우, 기준치(Reference)는 저장 장치(120)의 성능이 보장되는 최소 프리 블록의 수를 나타낼 수 있다. 프리 블록 상태(FBS)가 전체 메모리 블록에 대한 프리 블록의 비율을 나타내는 경우, 기준치(Reference)는 저장 장치(120)의 성능이 보장되는 최소 비율을 나타낼 수 있다.
프리 블록 상태(FBS)가 기준치 미만인 경우(Yes 방향), 호스트(110)는 현재까지 파일 시스템에서는 삭제되었지만 무효화되지 않은 파일들에 대한 무효화 명령(Inv_CMD)을 저장 장치(120)에 전달한다. 그러면, 저장 장치(120)는 파일 시스템에서는 삭제되었지만 저장 장치(120) 내부에서는 유효하게 관리되는 데이터를 무효화 처리한다. 무효화 처리된 데이터는 저장 장치(120)에서 실질적으로 삭제된 것으로 간주될 것이다. 반면, 프리 블록 상태(FBS)가 기준치(Reference)와 같거나 높으면(No 방향), 호스트(110)는 무효화 명령(Inv_CMD)을 내리지 않는다. 이미 충분한 수의 프리 블록이 저장 장치(120)에 존재하기 때문이다.
이상의 도 5에서 설명된 제 1 실시 예에 따르면, 호스트(110)는 파일 시스템에서 파일이 삭제되더라도 삭제된 파일에 대한 무효화 명령을 즉시 하달하지 않는다. 즉, 호스트(110)는 주기적으로 또는 필요시에 저장 장치(120)에 프리 블록 상태(FBS)를 요청한다. 호스트(110)는 저장 장치(120)로부터 제공되는 프리 블록 상태(FBS)를 참조하여 무효화 명령(Inv_CMD)의 하달 여부를 판단한다.
도 6a 및 도 6b 각각은 본 발명의 제 1 실시 예에 따른 호스트 및 저장 장치의 동작을 설명하는 순서도들이다. 도 6a는 본 발명의 제 1 실시 예에 따른 호스트의 동작을 좀더 구체적으로 보여주는 순서도이다. 도 6a를 참조하면, 호스트(110)에 의해서 무효화 명령(Inv_CMD)의 필요성이 판단되고 저장 장치(120)에 하달된다.
단계 S110에서, 호스트(110)는 무효화 명령(Inv_CMD)을 내릴 필요가 있는지를 모니터링한다. 호스트(110)는 필요시에만 무효화 명령(Inv_CMD)을 저장 장치(120)에 하달하게 될 것이다. 즉, 파일 시스템에서 파일이 삭제되더라도 호스트(110)는 삭제된 파일에 대한 무효화 명령(Inv_CMD)을 즉시 내리지 않는다. 파일 시스템에서 파일이 삭제되면, 호스트(110)는 삭제된 파일에 대응하는 무효화 명령들(Inv_CMDs)을 테이블 방식으로 저장할 수 있다.
여기서, 호스트(110)가 무효화 명령(Inv_CMD)을 내릴 필요성이 있는지를 결정하기 위해서는 적어도 2가지의 방법이 사용될 수 있다. 첫째 방법으로는, 호스트(110)가 저장 장치(120)의 성능을 모니터링하여 무효화 명령(Inv_CMD)의 필요성을 판단할 수 있다. 예를 들면, 저장 장치(120)의 액세스 속도가 낮아지면, 호스트(110)는 무효화 명령(Inv_CMD)의 필요 시점으로 판단할 수 있다. 두 번째 방법으로는, 호스트(110)는 파일 시스템에서 데이터가 삭제되더라도 무효화 명령(Inv_CMD)을 하달하지 않고, 특정 주기마다 무효화 명령(Inv_CMD)을 내리도록 설정될 수 있다. 즉, 호스트(110)는 특정 주기마다 무효화 명령(Inv_CMD)을 내릴지 판단하도록 설정될 수 있다. 하지만, 호스트(110)에 의한 무효화 명령(Inv_CMD)의 필요성을 판단하는 방법은 상술한 2가지에만 국한되지 않음은 잘 이해될 것이다.
단계 S120에서, 호스트(110)는 무효화 명령(Inv_CMD)의 필요성의 유무를 판단한다. 즉, 저장 장치(120)의 액세스 성능이 저하되거나 또는 무효화 명령(Inv_CMD)을 제공할 주기가 도래하면, 무효화 명령(Inv_CMD)이 필요한 시점으로 간주될 수 있다. 무효화 명령(Inv_CMD)이 필요한 것으로 판단되면, 절차는 단계 S130으로 이동한다. 반면, 무효화 명령(Inv_CMD)의 필요하지 않은 경우, 절차는 단계 S110으로 이동한다.
단계 S130에서, 호스트(110)는 저장 장치(120)에 프리 블록 상태(FBS)를 요청한다. 호스트(110)로부터의 요청에 응답하여 저장 장치(120)는 현재 메모리 블록들 중에서 프리 블록으로 관리되는 메모리 블록의 수를 카운트한다. 또는, 저장 장치(120)는 카운트 된 프리 블록들의 전체 메모리 블록들에 대한 비율을 계산할 수 있다. 저장 장치(120)는 호스트(110)에 프리 블록의 수 또는 전체 메모리 블록에 대한 프리 블록의 비율을 프리 블록 상태(FBS)로 제공한다.
단계 S140에서, 호스트(110)는 저장 장치(120)로부터 제공되는 프리 블록 상태(FBS)를 수신한다.
단계 S150에서, 호스트(110)는 저장 장치(120)로부터 수신된 프리 블록 상태(FBS)와 기준치(Reference)를 비교한다. 호스트(110)는 비교 결과에 따라 무효화 명령(Inv_CMD)의 하달 여부를 결정한다. 프리 블록(Free Block)의 수나 비율이 기준치(Reference) 이상인 경우, 절차는 단계 S110으로 이동한다. 하지만, 프리 블록(Free Block)의 수나 비율이 기준치(Reference) 미만이면, 절차는 단계 S160으로 이동한다.
단계 S160에서, 호스트(110)는 부족한 프리 블록(Free block)의 수를 확충하기 위하여 저장 장치(120)에 무효화 명령(Inv_CMD)을 전송한다. 무효화 명령(Inv_CMD)에 응답하여, 저장 장치(120)는 지금까지 호스트(110)에서는 삭제되었으나 저장 장치(120)에서는 무효화되지 못한 데이터에 대한 무효화 동작을 한꺼번에 수행한다. 무효화된 데이터는 저장 장치(120)의 머지/가비지 컬렉션 작업의 대상에서 제외될 것이다.
여기서, 호스트(110)는 파일 시스템에서 삭제된 파일들에 대한 지연된 무효화 명령들(Inv_CMDs)을 모두 누적해 두어야 할 것이다. 이러한 무효화 명령들을 호스트(110)에서 누적하는 방식은 호스트(110)에 의한 로깅(Logging)으로 간주될 수 있을 것이다.
도 6b는 본 발명의 제 1 실시 예에 따른 저장 장치(120)의 동작을 좀더 구체적으로 보여주는 순서도이다. 도 6b를 참조하면, 저장 장치(120)는 호스트(110)의 요청에 따라 프리 블록 상태(FBS)를 제공하거나, 호스트(110)로부터 제공되는 무효화 명령(Inv_CMD)을 실행한다.
단계 S210에서, 저장 장치(120)는 호스트(110)로부터 프리 블록 상태(FBS)를 출력하도록 요청받는다.
단계 S220에서, 저장 장치(120)는 호스트(110)로부터의 요청에 응답하여 현재 메모리 블록들 중에서 프리 블록으로 관리되는 메모리 블록의 수를 카운트한다. 또는, 저장 장치(120)는 카운트 된 프리 블록들의 전체 메모리 블록들에 대한 비율을 계산할 수 있다. 저장 장치(120)는 호스트(110)에 프리 블록의 수 또는 전체 메모리 블록에 대한 프리 블록의 비율을 프리 블록 상태(FBS)로 제공한다. 이때, 호스트(110)는 프리 블록 상태(FBS)에 따라 무효화 명령(Inv_CMD)의 하달 여부를 결정할 것이다. 호스트(110)는 무효화 명령(Inv_CMD)의 실행이 필요하다고 판단되면, 저장 장치(110)에 무효화 명령(Inv_CMD)을 제공한다. 하지만, 무효화 명령(Inv_CMD)의 실행이 필요하지 않다고 판단되면, 호스트(110)는 무효화 명령(Inv_CMD)을 생성하지 않는다.
단계 S230에서, 저장 장치(120)는 무효화 명령(Inv_CMD)이 제공되지 않으면, 무효화 동작을 위한 절차를 종료한다. 반면에, 호스트(110)로부터 하나 또는 둘 이상의 파일에 대한 무효화 명령(Inv_CMD)이 제공되면, 절차는 단계 S240으로 이동한다.
단계 S240에서, 호스트(110)로부터 무효화 명령(Inv_CMD)이 전달되면, 저장 장치(120)는 무효화 명령(Inv_CMD)에 의해서 지정되는 데이터 또는 데이터 영역을 실질적으로 무효화시킨다. 이때, 호스트(110)로부터 제공되는 무효화 명령(Inv_CMD)은 하나 또는 둘 이상의 파일에 대응될 수 있다. 따라서, 저장 장치(120)는 복수의 무효화 명령들(Inv_CMDs)이 제공되면, 한꺼번에 복수 파일에 대응하는 데이터 또는 데이터 영역을 무효화시킬 수 있다. 저장 장치(120)에 의해서 무효화된 데이터는 저장 장치(120)의 머지/가비지 컬렉션 연산으로부터 배제될 것이다.
도 7은 본 발명의 제 2 실시 예에 따른 사용자 장치(100)의 동작을 간략히 보여주는 동작 처리도이다. 도 7을 참조하면, 저장 장치(120)가 프리 블록 상태(FBS)를 참조하여 무효화 명령(Inv_CMD)의 필요 여부를 결정한다. 좀더 자세히 설명하면 다음과 같다.
호스트(110)는 무효화 명령(Inv_CMD)을 내릴 필요가 있을 때, 또는 주기적으로 저장 장치(120)의 데이터 무효화 동작의 필요 여부를 질의한다. 호스트(110)는 저장 장치(120)로부터 무효화 명령(Inv_CMD)에 대한 요청이 있을 때에만 무효화 명령(Inv_CMD)을 저장 장치(120)에 제공한다. 호스트(110)는 삭제된 파일이 존재하더라도 저장 장치(120)로부터의 무효화 명령(Inv_CMD)에 대한 요청(Request)을 받기 전까지는 무효화 명령(Inv_CMD)을 제공하지 않는다.
호스트(110)로부터 질의에 따라 저장 장치(120)는 프리 블록 상태(FBS)를 파악한다. 저장 장치(120)는 파악된 프리 블록 상태(FBS)를 참조하여 무효화 명령(Inv_CMD)의 필요성을 판단한다. 앞서 설명된 바와 같이, 프리 블록 상태(FBS)는 저장 장치(120)에서 언제든지 데이터를 기입할 수 있는 프리 블록(Free Block)의 수를 포함한다. 또는, 프리 블록 상태(FBS)는 저장 장치(120)에 포함되는 전체 블록에 대한 프리 블록의 비율을 포함할 수 있다. 하지만, 프리 블록 상태(FBS)에 의미는 여기의 개시에만 국한되지 않음은 잘 이해될 것이다.
저장 장치(120)는 프리 블록 상태(FBS)와 기준치(Reference)를 비교한다. 프리 블록 상태(FBS)가 프리 블록의 수를 나타내는 경우, 기준치(Reference)는 저장 장치(120)의 성능이 보장되는 최소 프리 블록의 수를 나타낼 수 있다. 프리 블록 상태(FBS)가 전체 메모리 블록에 대한 프리 블록의 비율을 나타내는 경우, 기준치(Reference)는 저장 장치(120)의 성능이 보장되는 최소 비율을 나타낼 수 있다. 여기서, 저장 장치(120)는 기준치(Reference)를 저장하기 위한 레지스터(Register)와 같은 구성을 더 포함할 수 있다. 그리고 사용자가 레지스터(Register)에 저장되는 기준치(Reference)를 세팅(Setting)할 수 있을 것이다.
프리 블록 상태(FBS)가 기준치 미만인 경우(Yes 방향), 저장 장치(120)는 호스트(110)로 무효화 명령(Inv_CMD)의 하달(Issue)을 요청한다. 그러면, 호스트(110)는 저장 장치(120)로 무효화 명령(Inv_CMD)을 전달한다. 반면, 프리 블록 상태(FBS)가 기준치 이상인 경우(No 방향), 저장 장치(120)는 프리 블록을 추가로 확보하기 위한 무효화 명령(Inv_CMD)의 하달을 요청하지 않을 것이다.
이상의 도 7에서 설명된 제 2 실시 예에 따르면, 저장 장치(120)가 프리 블록 정보(또는, 가용 자원)를 참조하여 무효화 명령(Inv_CMD)의 하달 여부를 판단한다. 만일 무효화 명령(Inv_CMD)이 필요하면, 저장 장치(120)는 호스트(110)에 무효화 명령(Inv_CMD)의 하달(Issue)을 요청한다.
도 8a 및 도 8b 각각은 상술한 도 7에서 설명된 제 2 실시 예에 따른 호스트 및 저장 장치의 동작을 보여주는 순서도들이다.
도 8a는 본 발명의 제 2 실시 예에 따른 호스트(110)의 동작을 보여준다. 도 8a를 참조하면, 호스트(110)는 저장 장치(120)에 무효화 명령(Inv_CMD)의 필요성에 대해 질의한다. 그리고 호스트(110)는 저장 장치(120)의 응답에 따라 무효화 명령(Inv_CMD)을 제공한다.
단계 S310에서, 호스트(110)는 무효화 명령(Inv_CMD)을 내릴 필요가 있는지를 모니터링한다. 호스트(110)는 필요시에만 무효화 명령(Inv_CMD)을 저장 장치(120)에 하달하게 될 것이다. 즉, 파일 시스템에서 파일이 삭제되더라도 호스트(110)는 삭제된 파일에 대한 무효화 명령(Inv_CMD)을 즉시 내리지 않는다. 파일 시스템에서 파일이 삭제되면, 호스트(110)는 삭제된 파일에 대응하는 무효화 명령들(Inv_CMDs)을 누적한다.
여기서, 호스트(110)가 무효화 명령(Inv_CMD)을 내릴 필요성이 있는지를 결정하기 위해서는 적어도 2가지의 방법이 사용될 수 있다. 한가지 방법으로는, 호스트(110)는 파일 시스템에서 데이터가 삭제되더라도 무효화 명령(Inv_CMD)을 하달하지 않고, 특정 주기마다 저장 장치(120)에 무효화 명령(Inv_CMD)의 필요성 여부를 질의한다. 다른 방법으로는, 호스트(110)가 저장 장치(120)의 성능을 모니터링하여 무효화 명령(Inv_CMD)의 필요성을 판단할 수 있다. 예를 들면, 저장 장치(120)의 액세스 속도가 낮아지면, 호스트(110)는 무효화 명령(Inv_CMD)의 필요 시점으로 판단할 수 있다.
단계 S320에서, 무효화 명령(Inv_CMD)이 필요한 조건에 부합되지 않으면, 절차는 단계 S310으로 이동하여 모니터링을 지속한다. 호스트(110)에 의해서 무효화 명령(Inv_CMD)이 필요하다고 판단되면, 절차는 단계 S330으로 이동한다.
단계 S330에서, 호스트(110)는 저장 장치(120)에 무효화 동작의 필요 여부를 질의한다. 그러면, 저장 장치(120)는 프리 블록 정보(FBS)를 체크한다. 프리 블록 정보(FBS)의 체크 결과, 무효화 명령(Inv_CMD)의 하달이 필요한 것으로 판단되면, 저장 장치(120)는 호스트(110)에 무효화 명령(Inv_CMD)을 요청한다. 하지만, 기준치 이상의 수나 비율의 프리 블록이 존재하는 것으로 검출되면, 저장 장치(120)는 호스트(110)에 무효화 명령(Inv_CMD)의 하달을 요청하지 않는다.
단계 S340에서, 호스트(110)는 저장 장치(120)로부터의 무효화 명령(Inv_CMD) 요청 여부에 따라 무효화 명령(Inv_CMD)을 하달한다. 저장 장치(120)로부터의 무효화 명령(Inv_CMD)이 요청되면, 절차는 단계 S350으로 이동한다. 반면, 저장 장치(120)로부터의 무효화 명령(Inv_CMD)의 요청이 없으면, 무효화 명령(Inv_CMD)에 대한 호스트(110)의 제반 질의 절차는 종료된다.
단계 S350에서, 호스트(110)는 요청된 무효화 명령(Inv_CMD)을 생성하여 저장 장치(120)에 전달한다. 여기서, 호스트(110)는 파일 시스템에서 삭제되었지만, 지연된 무효화 명령들(Inv_CMDs)을 모두 저장 장치(120)에 전달할 수 있다.
도 8b는 제 2 실시 예에 따른 저장 장치의 동작 방법을 보여주는 순서도이다. 도 8b를 참조하면, 제 2 실시 예에서는 저장 장치(120)에 의해서 무효화 명령(Inv_CMD)의 제공 여부가 판단되고 요청된다.
단계 S410에서, 저장 장치(120)는 호스트(110)로부터 무효화 명령(Inv_CMD)의 필요성에 대한 질의(Inquiry)를 받는다. 이를 위하여 호스트(110)는 주기적으로 무효화 명령(Inv_CMD)의 필요성에 대한 질의(Inquiry)를 저장 장치(120)에 전달할 수 있다. 또는, 호스트(110)는 저장 장치(120)의 성능을 모니터링하여 무효화 명령(Inv_CMD)의 필요성을 판단할 수 있다. 예를 들면, 저장 장치(120)의 액세스 속도가 낮아지면, 호스트(110)는 무효화 명령(Inv_CMD)에 대한 질의(Inquiry)를 저장 장치(120)에 전달할 시점으로 판단할 수 있다. 즉, 호스트(110)는 파일 시스템에서 파일이 삭제되더라도 무효화 명령(Inv_CMD)을 생성하지 않는다. 호스트(110)는 주기적으로 또는 필요시에 저장 장치(120)에 무효화 명령(Inv_CMD)을 내릴지 질의(Request)한다.
단계 S420에서, 저장 장치(120)는 호스트(110)로부터의 질의에 응답하여 현재 메모리 블록들 중에서 프리 블록으로 관리되는 메모리 블록의 수를 카운트한다. 또는, 저장 장치(120)는 프리 블록들의 전체 메모리 블록에 대한 비율을 계산할 수 있다. 그리고 저장 장치(120)는 프리 블록 상태(FBS)와 기준치(Reference)를 비교하여 무효화 명령(Inv_CMD)의 요청 여부를 결정한다. 프리 블록(Free Block)의 수나 비율이 기준치(Reference)보다 많거나 높으면, 절차는 단계 S410으로 이동한다. 하지만, 프리 블록(Free Block)의 수나 비율이 기준치(Reference)보다 적거나 낮으면, 절차는 단계 S430으로 이동한다.
단계 S430에서, 저장 장치(120)는 호스트(110)에 부족한 프리 블록(Free block)의 수를 확충하기 위한 무효화 명령(Inv_CMD)의 하달을 요청한다.
단계 S440에서, 저장 장치(120)에 의하여 무효화 명령(Inv_CMD)이 요청됨에 따라 호스트(110)는 이전의 무효화 동작 이후부터 현재까지 누적된 무효화 명령들(Inv_CMD)을 저장 장치(120)로 전달한다. 그러면, 저장 장치(120)는 호스트(110)로부터 전달되는 무효화 명령(Inv_CMD)을 수신하여 디코딩하게 될 것이다.
단계 S450에서, 저장 장치(120)는 무효화 명령(Inv_CMD)에 응답하여 데이터 무효화 동작을 수행한다. 즉, 저장 장치(120)는 호스트(110)에서는 삭제되었으나 저장 장치(120)에서는 실질적으로 무효화되지 않은 데이터에 대한 무효화 연산을 수행한다. 무효화된 데이터는 저장 장치(120)의 머지/가비지 컬렉션 연산으로부터 배제될 것이다.
도 9는 본 발명의 제 3 실시 예에 따른 저장 장치의 특징을 보여주는 도면이다. 본 발명의 제 3 실시 예에 따른 저장 장치(120)는 호스트(110)로부터의 무효화 명령(Inv_CMD)을 데이터 영역 단위로 모니터링하기 위한 비트맵(Bitmap)을 포함한다. 비트맵(Bitmap)을 참조하여, 저장 장치(120)는 빈번하게 무효화 명령(Inv_CMD)이 발생하는 데이터 영역에 대해서는 로깅 스킴(Logging Scheme)을 적용할 수 있다.
비트맵(Bitmap)의 비트들 각각은 호스트(110)의 지정된 논리 어드레스(LBA) 영역에 대응하도록 구성될 수 있다. 그리고 비트맵(Bitmap)의 비트들 각각은, 대응하는 논리 어드레스 영역에 대한 무효화 명령(Inv_CMD)의 발생이나 무효화 명령(Inv_CMD)의 실행 여부에 따라 설정될 수 있다. 저장 장치(120)는 비트맵(Bitmap)의 비트들 각각의 설정 빈도를 모니터링할 수 있다. 모니터링 결과에 따라, 저장 장치(120)는 빈번하게 업데이트되는 데이터 영역을 인식할 수 있다. 저장 장치(120)는 빈번하게 업데이트되는 데이터 영역에 대한 무효화 명령(Inv_CMD)을 선택적으로 실행할 수 있다. 좀더 자세히 설명하면 다음과 같다.
호스트(110)에서 특정 파일이 삭제되면, 삭제된 파일에 대응하는 무효화 명령(Inv_CMD)이 생성된다. 무효화 명령(Inv_CMD)에는 삭제된 파일이나 무효화되어야 할 영역에 대응하는 논리 어드레스(LBA) 정보가 포함된다. 저장 장치(120)는 무효화 명령(Inv_CMD)에 의해서 지정된 논리 어드레스에 대응하는 비트맵을 논리 '1'로 설정한다. 그리고 저장 장치(120)는 무효화 명령(Inv_CMD)의 실행이 완료되면, 지정된 데이터 영역에 대응하는 비트맵의 비트값을 논리 '0'으로 리셋한다.
좀더 구체적인 예를 들면, 호스트(110)가 섹터 130(LBA, Sector 130)에 대응하는 데이터 영역을 무효화하기 위한 무효화 명령(Inv_CMD)을 저장 장치(120)에 전달했다고 가정하자. 그러면, 무효화 명령(Inv_CMD)을 수신한 저장 장치(120)는 비트맵에서는 바이트 0(Byte 0)의 3번째 비트를 논리 '1'로 셋팅한다. 그리고 섹터 130(LBA, Sector 130)에 대응하는 데이터 영역에 대한 무효화 동작이 완료되면, 저장 장치(120)는 비트맵의 바이트 0(Byte 0)의 3번째 비트를 논리 '0'로 리셋한다.
비트맵에서 동일 비트에 대한 논리 '1'로의 셋팅이 한정된 시간 동안 기준 회수 이상 발생하면, 저장 장치(120)는 해당하는 영역을 빈번하게 업데이트되는 데이터 영역으로 간주한다. 이런 경우, 저장 장치(120)는 입력되는 무효화 명령(Inv_CMD)을 무시하고 후술하게 되는 로깅(Logging) 절차를 진행한다. 로깅된 무효화 명령(Inv_CMD)은 유휴 시간이나 더 이상 해당 데이터 영역에 대한 무효화 명령(Inv_CMD)이 발생하지 않는 시점에 실행될 수 있다.
이하에서는 본 발명의 이해를 돕기 위해 특정 데이터 영역에 대한 빈번한 무효화 명령(Inv_CMD)이 발생하는 예들 중 몇 가지를 설명하기로 한다.
빈번한 무효화 명령(Inv_CMD)이 발생하는 첫 번째 예로서, 호스트(110)의 파일 시스템에서 관리하는 로그 파일(Log file)을 들 수 있다. 파일 시스템 상에서 로그 파일(Log file)이 할당되는 논리 어드레스 영역(LBA)은 빈번하게 업데이트될 수 있다. 로그 파일(Log file)에는 파일 시스템에 의한 파일의 생성과 소거에 대한 히스토리 또는 복구 정보가 빈번하게 업데이트된다. 호스트의 워킹 메모리에서 생성된 로그 파일(Log file)은 주기적 또는 필요시에 불휘발성 메모리(123)에 업데이트되어야 한다. 파일의 생성 요청이 발생하면, 파일 시스템은 파일 생성 연산의 실행 전에 로그 파일(Log file)을 구성하여 히스토리 또는 복구 정보를 먼저 기록한다. 파일의 생성이 완료되면, 기록된 로그 파일(Log file)은 삭제될 것이다.
여기서, 로그 파일(Log file)은 일반적으로 특정 논리 어드레스 구간(예를 들면, Sector0 ~ Sector63)에 할당된다. 따라서, 로그 파일(Log file)이 할당되는 논리 어드레스 구간과 맵핑되는 저장 장치(120)의 데이터 영역은 빈번하게 업데이트될 것이다. 따라서, 로그 파일(Log file)이 저장된 저장 장치(120)의 데이터 영역에 대한 무효화 명령(Inv_CMD)은 빈번하게 발생할 수 있다. 그 결과로, 로그 파일(Log fiel)에 대응하는 논리 어드레스(LBA)에 대응하는 비트맵의 특정 비트는 빈번하게 셋팅될 것이다.
빈번한 무효화 명령(Inv_CMD)이 발생하는 두 번째 예로는, 동일한 파일이 서로 다른 사이즈의 파일로 빈번하게 업데이트되는 경우가 이에 해당한다. 큰 사이즈의 파일이 더 작은 사이즈의 파일로 업데이트되면, 그 차이만큼의 데이터 영역을 무효화하기 위한 무효화 명령(Inv_CMD)이 생성될 것이다. 결국, 특정 파일이 서로 다른 사이즈의 파일로 빈번하게 업데이트되면, 무효화 명령(Inv_CMD)도 빈번하게 발생할 것이다.
빈번한 무효화 명령(Inv_CMD)이 발생하는 세 번째 예로는, 동일한 파일이 아니라 하더라도, 파일의 생성과 삭제가 빈번하면 특정 논리 어드레스에 대한 무효화 명령(Inv_CMD)의 발생 빈도가 증가할 확률이 커진다. 이러한 예는 직관적으로 유추될 수 있을 것이다.
상술한 예들을 포함하여, 빈번한 무효화 명령(Inv_CMD)의 발생은 호스트(110) 뿐만 아니라 저장 장치(120)의 부담을 가중시킨다. 빈번하게 업데이트되는 데이터 영역을 감지하여 무효화 명령(Inv_CMD)들을 로깅하면 저장 장치(120)의 부담을 줄일 수 있다. 즉, 저장 장치(120)는 비트맵을 이용하여 빈번하게 업데이트되는 데이터 영역을 검출할 수 있다. 저장 장치(120)는 이때에 발생하는 무효화 명령(Inv_CMD)을 무시할 수 있을 것이다. 그리고 유휴 시간(Idle Time)이나 또는 더 이상 업데이트가 발생하지 않는 시간에 무시되었던 모든 무효화 명령들을 실행함으로써, 저장 장치(120)의 성능을 높일 수 있다.
이상에서, 빈번하게 업데이트되는 영역에 대한 검출 방법으로 비트맵 구조를 예시적으로 설명하였으나, 본 발명은 이에 국한되지 않음은 잘 이해될 것이다.
도 10a 및 도 10b는 빈번한 무효화 명령들(Inv_CMD)을 저장 장치에서 로깅 방식으로 처리하는 제 3 실시 예를 설명하는 순서도들이다. 도 10a는 유휴 모드(Idle mode)에 로깅된 무효화 명령(Inv_CMD)을 처리하는 방법을 보여주는 순서도이다. 도 10b는 입력되는 무효화 명령(Inv_CMD)에 대한 실행 또는 로깅 방법을 보여주는 순서도이다. 본 발명의 제 3 실시 예에 따른 저장 장치(120)는 현재 입력되는 무효화 명령(Inv_CMD)을 빈번하게 업데이트되는 데이터 영역에 대응하는지의 여부에 따라 선택적으로 수행한다.
여기서, 기준에 부합되는 무효화 명령(Inv_CMD)은 저장 장치(120)에 의해서 무시되고, 무효화될 데이터의 위치 정보가 로깅 정보(300)에 업데이트 또는 누적된다. 이러한 동작은 로깅(Logging)이라 한다. 또한, 로깅 정보(300)는 무효화 명령(Inv_CMD)에 의해서 무효화될 데이터의 위치 정보를 포함한다. 로깅 정보(300)는 저장 장치(120)의 버퍼 메모리(122, 도 2 참조)에 테이블로 구성될 수 있다. 또한, 로깅 정보(300)에는 빈번하게 업데이트되는 데이터 영역의 어드레스, 무효화 명령(Inv_CMD)이 입력된 횟수와 시점 등에 관한 정보가 기록될 수 있다.
단계 S510에서, 저장 장치(120)는 구동 모드가 유휴 모드(Idle mode) 인지 또는 정상 모드(Normal mode) 인지를 판단한다. 저장 장치(120)는 가장 최근에 입력된 명령어의 입력된 시점으로부터 경과 시간(Elapsed time)을 카운트한다. 여기서, 가장 최근에 입력된 명령어는 무효화 명령(Inv_CMD)일 수 있다.
단계 S520에서, 경과 시간(Elapsed time)이 제 1 기준 시간(Z)보다 길면, 절차는 단계 S530으로 이동한다. 반면에, 제 1 기준 시간(Z)이 경과하기 이전에 무효화 명령(Inv_CMD)이 입력되면, 절차는 현재 입력된 무효화 명령(Inv_CMD)을 처리하기 위한 단계 (A)로 이동한다. 현재 입력된 무효화 명령(Inv_CMD)을 로깅(Logging)하거나 실행하기 위한 단계 (A)에 대한 설명은 후술하는 도 10b에서 자세히 기술될 것이다.
단계 S530에서, 저장 장치(120)는 로깅된 무효화 명령(Inv_CMD)이 존재하는지를 체크한다. 로깅된 무효화 명령(Inv_CMD)의 존재 여부는 로깅 정보(300)를 검색하여 알 수 있다.
단계 S540에서, 로깅된 무효화 명령(Inv_CMD)이 존재하지 않는 것으로 판단되면 절차는 종료된다. 반면, 실행되지 않고 로깅된 무효화 명령(Inv_CMD)이 하나 이상 존재하는 것으로 판단되면, 절차는 단계 S550으로 이동한다.
단계 S550에서, 저장 장치(120)는 로깅된 모든 무효화 명령들(Inv_CMDs)을 처리한다. 저장 장치(120)는 로깅 정보(300)를 참조하여 빈번하게 업데이트되는 파일들에 대한 어드레스 정보를 패치(Fetch)한다. 그리고 저장 장치(120)는 로깅(Logging)에 의하여 실질적으로 무효화되지 않은 데이터의 위치를 파악한다. 저장 장치(120)는 그동안 로깅에 의하여 무시되었던 하나 이상의 무효화 명령들(Inv_CMDs)을 한꺼번에 실행한다. 로깅된 무효화 명령들(Inv_CMDs)에 대한 실행 이후에는 로깅 정보(300)는 초기화될 것이다.
도 10b는 제 1 기준 시간(Z) 이내에 무효화 명령(Inv_CMD)이 발생하는 경우의 처리 절차를 보여준다. 도 10b는 도 10a의 단계 (A)에서 이어진다.
단계 S610에서, 저장 장치(120)는 입력된 무효화 명령어(Inv_CMD)를 수신한다. 여기서, 무효화 명령(Inv_CMD)은 특정 데이터 영역에 대한 빈번한 업데이트에 의하여 발생되는 명령일 수 있다. 또는, 무효화 명령(Inv_CMD)은 일반적인 파일의 삭제에 따라 호스트(110)에서 하달되는 명령일 수도 있다.
단계 S620에서, 저장 장치(120)는 무효화 명령(Inv_CMD)을 디코딩한다. 그리고 저장 장치(120)는 디코딩된 무효화 명령(Inv_CMD)에 포함되는 어드레스가 빈번하게 업데이트되는 데이터 영역에 대응하는지를 검출한다. 여기서, 저장 장치(120)는 도 9에서 설명된 비트맵을 이용하여 이러한 검출 동작을 수행할 수 있다. 또는, 저장 장치(120)는 빈번하게 업데이트되는 영역에 대한 정보를 로깅 정보(300)로부터 획득할 수 있다. 비트맵은 로깅 정보(Logging Information)에 포함될 수 있다.
단계 S630에서, 저장 장치(120)는 현재 입력된 무효화 명령(Inv_CMD)이 빈번하게 업데이트되는 영역에 해당하는지 판단한다. 예를 들면, 저장 장치(120)는 비트맵 또는 로깅 정보(300)를 참조하여 현재 입력된 무효화 명령(Inv_CMD)이 빈번하게 업데이트되는 영역에 대응하는지 검출할 수 있다.
만일, 현재 입력되는 무효화 명령(Inv_CMD)이 빈번하게 업데이트되는 영역과 관계없는 것으로 판단되면, 절차는 현재 입력된 무효화 명령(Inv_CMD)을 실행하는 단계(S670)로 이동한다. 반면, 현재 입력되는 무효화 명령(Inv_CMD)이 빈번하게 업데이트되는 영역에 대한 것이라면, 절차는 단계 S640으로 이동한다.
단계 S640에서, 저장 장치(120)는 빈번하게 업데이트되는 영역에 대응하는 무효화 명령(Inv_CMD)과 그 바로 이전에 입력된 무효화 명령(Recent Inv_CMD) 간의 시간 간격(Time interval)을 계산한다. 여기서, 저장 장치(120)는 빈번하게 업데이트되는 영역에 대한 현재 입력된 무효화 명령(Inv_CMD)과 그 이전에 입력된 복수의 무효화 명령들(Inv_CMD)을 모두 고려하여 로깅 여부를 결정할 수도 있다. 즉, 현재로부터 특정 시간(Time X) 이전까지 빈번하게 업데이트되는 영역에 대한 복수의 무효화 명령들(Inv_CMD)이 발생하는 횟수(Y회)를 고려하여 로깅 여부를 결정할 수도 있다. 또는, 현재 입력되는 무효화 명령(Inv_CMD)과 그 바로 이전에 입력된 무효화 명령(Recent Inv_CMD) 간의 시간 간격(Time interval)만을 기준으로 로깅 여부를 결정할 수도 있다.
단계 S650에서, 계산된 시간 간격(Time interval)이 제 2 기준 시간(T)보다 작으면, 절차는 단계 S660으로 이동한다. 또는, 특정 시간(Time X) 동안 빈번하게 업데이트되는 영역에 대한 무효화 명령들(Inv_CMD)의 발생 횟수(Y)가 기준 횟수를 초과할 때, 절차는 단계 S660으로 이동할 수 있다.
하지만, 계산된 시간 간격(Time interval)이 제 2 기준 시간(T)보다 크거나 같으면, 절차는 현재 입력되는 무효화 명령(Inv_CMD)을 실행하기 위한 단계 S670으로 이동할 수 있다. 또는, 특정 시간(Time X) 동안 빈번하게 업데이트되는 영역에 대한 무효화 명령들(Inv_CMD)의 발생 횟수(Y)가 기준 횟수 미만인 경우, 절차는 현재 입력되는 무효화 명령(Inv_CMD)을 실행하기 위한 단계 S670으로 이동할 수 있다. 여기서, 제 2 기준 시간(T)은 앞서 기술된 제 1 기준 시간(Z)에 비하여 상대적으로 짧다.
단계 S660에서, 저장 장치(120)는 현재 입력된 무효화 명령(Inv_CMD)을 무시(Ignore) 한다. 저장 장치(120)는 현재 입력된 무효화 명령(Inv_CMD)에 대한 정보를 로깅 정보(300)에 저장한다. 로깅 정보(300)는 버퍼 메모리(122)와 같은 워킹 메모리에 테이블로 구성될 수 있다. 로깅된 무효화 명령(Inv_CMD)은 이후의 저장 장치(120)의 유휴 모드(Idle mode)에 실행될 수 있을 것이다. 즉, 저장 장치(120)가 유휴 모드(Idle mode)에 돌입하면, 그동안 무시되었던 복수의 무효화 명령들(Inv_CMDs)이 실행될 수 있을 것이다.
단계 S670에서는, 저장 장치(120)는 무효화 명령(Inv_CMD)을 즉시 실행한다. 무효화된 데이터는 저장 장치(120)의 머지/가비지 컬렉션과 같은 작업들로부터 배제될 것이다.
도 11은 본 발명의 무효화 명령을 효율적으로 실행하는 사용자 장치의 다른 예를 간략히 보여주는 블록도이다. 도 11을 참조하면, 본 발명에 따른 사용자 장치(1000)는 호스트(1100)와 메모리 카드(1200)를 포함한다.
호스트(1100)는 실질적으로 앞서 설명된 제 1 내지 제 3 실시 예들 중 어느 하나에 의거하여 무효화 명령(Inv_CMD)을 생성한다. 예를 들면, 파일 시스템(File System: FS)에 의해서 삭제된 파일에 대해 호스트(1100)는 무효화 명령(Inv_CMD)을 메모리 카드(1200)에 전송할 수 있다. 호스트(1100)는 필요에 따라 또는 주기적으로 메모리 카드(1200)의 프리 블록 상태(FBS)에 대한 정보를 요청할 수 있다. 호스트(1100)는 프리 블록 상태(FBS)를 참조하여 메모리 카드(1200)에 무효화 명령(Inv_CMD)을 전송할 수 있다.
메모리 카드(1200)는 불휘발성 메모리 장치(1220)와 메모리 컨트롤러(1210)를 포함할 것이다. 메모리 컨트롤러(1210)는 도 2에서 설명된 컨트롤러(120)와 동일하게 불휘발성 메모리 장치(1220)를 제어하도록 구성될 것이다. 메모리 컨트롤러(1210)는 USB, MMC, PCI-E, ATA, SATA, PATA, SCSI, ESDI, IDE, SAS 그리고 E-IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
SRAM(1211)은 프로세싱 유닛(1212)의 동작 메모리로써 사용된다. 호스트 인터페이스(1213)는 메모리 카드(1200)와 접속되는 호스트(1100)의 데이터 교환 프로토콜을 구비한다. 에러 정정 블록(1214)은 불휘발성 메모리 장치(1220)로부터 독출된 데이터에 포함되는 에러를 검출 및 정정한다. 메모리 인터페이스(1215)는 본 발명의 불휘발성 메모리 장치(1220)와 인터페이싱 한다. 프로세싱 유닛(1212)은 메모리 컨트롤러(1210)의 데이터 교환을 위한 제반 제어 동작을 수행한다.
비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 카드(1200)는 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 불휘발성 메모리 장치(1220)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다.
이상의 본 발명의 실시 예에 따른 사용자 장치(1000)는 삭제된 파일 또는 빈번하게 업데이트되는 파일에 대한 무효화 명령(Inv_CMD)의 발생 횟수를 줄일 수 있다. 또는 본 발명의 실시 예에 따른 사용자 장치(1000)는 삭제된 파일 또는 빈번하게 업데이트되는 파일에 대한 무효화 명령(Inv_CMD)을 로깅하여 실질적으로 무효화 동작의 회수를 줄일 수 있다. 따라서, 사용자 장치(1000)는 과도한 무효화 명령(Inv_CMD)의 발생을 억제하거나, 또는, 과도한 무효화 명령(Inv_CMD)이 발생하더라도 성능의 저하를 차단할 수 있다.
도 12에는 본 발명에 따른 대용량 저장 장치(Mess Storage)를 장착하는 컴퓨팅 시스템이 예시적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(2000)은 시스템 버스(2700)에 전기적으로 연결되는 네트워크 어댑터(2100), 중앙처리장치(2200), 대용량 저장 장치(2300), 램(2400), 롬(2500) 그리고 사용자 인터페이스(2600)를 포함한다.
네트워크 어댑터(2100)는 컴퓨팅 시스템(2000)과 외부의 네트워크들 간의 인터페이싱을 제공한다. 중앙처리장치(2200)는 램(2400)에 상주하는 운영 체제(Operating System)나 응용 프로그램(Application Program)을 구동하기 위한 제반 연산처리를 수행한다. 대용량 저장 장치(2300)는 컴퓨팅 시스템(2000)에서 필요한 제반 데이터를 저장한다. 예를 들면, 대용량 저장 장치(2300)에는 컴퓨팅 시스템(2000)을 구동하기 위한 운영 체제(Operating System), 응용 프로그램(Application Program), 다양한 프로그램 모듈(Program Module), 프로그램 데이터(Program data) 그리고 유저 데이터(User data) 등이 저장된다.
램(2400)은 컴퓨팅 시스템(2000)의 워킹 메모리로 사용될 수 있다. 부팅시에 램(2400)에는 대용량 저장 장치(2300)로부터 읽혀진 운영 체제(Operating System), 응용 프로그램(Application Program), 다양한 프로그램 모듈(Program Module)과 프로그램들의 구동에 소요되는 프로그램 데이터(Program data)가 로드된다. 롬(2500)에는 부팅시 운영 체제(Operating System)가 구동되기 이전부터 활성화되는 기본적인 입출력 시스템인 바이오스(BIOS: Basic Input/Output System)가 저장된다. 유저 인터페이스(2600)를 통해서 컴퓨팅 시스템(2000)과 사용자 사이의 정보 교환이 이루어진다. 이외에도, 컴퓨팅 시스템(2000)은 배터리(Battery)나 모뎀(Modem) 등을 더 포함할 수 있다. 또한, 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
대용량 저장 장치(2300)는 앞서 기술한 바와 같이, SSD(Solid State Drive), MMC 카드(Multimedia Card), SD 카드(Secure Digital Card), 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card) 등으로 구성될 수 있다.
본 발명에 따른 메모리 장치 그리고/또는 스토리지 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 메모리 장치 그리고/또는 SSD 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 호스트 120 : 저장 장치
121 : 컨트롤러 122 : 버퍼 메모리
123 : 불휘발성 메모리
210, 2101, 212, …, 210-m : 중앙처리장치
220 : 호스트 인터페이스 230 : 버퍼 매니저
240 : 플래시 인터페이스 300 : 로깅 정보
1100 : 호스트 1200 : 메모리 카드
1210: 메모리 컨트롤러 1211 : 에스램
1212 : 프로세싱 유닛 1213 : 호스트 인터페이스
1214 : 에러 정정 블록 1215 : 메모리 인터페이스
1220 : 불휘발성 메모리 장치 2000 : 컴퓨터 시스템
2100 : 네트워크 어뎁터 2200 : 중앙처리장치
2300 : 대용량 저장 장치 2400 : RAM
2500 : ROM 2600 : 유저 인터페이스

Claims (25)

  1. 데이터를 저장하기 위한 저장 매체; 그리고
    호스트로부터의 무효화 명령에 따라 상기 저장 매체에 저장된 데이터를 무효화하는 스토리지 컨트롤러를 포함하되,
    상기 무효화 명령은 상기 저장 매체의 프리 블록의 상태에 따라 하달되는 저장 장치.
  2. 제 1 항에 있어서,
    상기 무효화 명령은 상기 프리 블록의 수, 또는 전체 메모리 블록에서 상기 프리 블록이 차지하는 비율이 기준치보다 낮은 경우에 하달되는 저장 장치.
  3. 제 2 항에 있어서,
    상기 호스트는 주기적으로 또는 필요한 시점에 상기 프리 블록의 상태 정보를 상기 스토리지 컨트롤러에 요청하는 저장 장치.
  4. 제 3 항에 있어서,
    상기 호스트는 상기 프리 블록의 상태가 기준치에 미달하는지 판단하고, 판단의 결과에 따라 상기 무효화 명령을 하달하는 저장 장치.
  5. 제 2 항에 있어서,
    상기 스토리지 컨트롤러는 상기 프리 블록의 상태가 기준치에 미달하는지 판단하고, 그 결과에 따라 상기 호스트에 상기 무효화 명령을 요청하는 저장 장치.
  6. 제 5 항에 있어서,
    상기 기준치를 저장하기 위한 레지스터를 더 포함하는 저장 장치.
  7. 제 6 항에 있어서,
    상기 기준치는 사용자에 의해서 세팅 가능한 저장 장치.
  8. 제 1 항에 있어서,
    상기 저장 매체는 불휘발성 메모리 장치로 구성되며, 상기 저장 매체와 상기 스토리지 컨트롤러는 솔리드 스테이트 드라이브(SSD)로 구성되는 저장 장치.
  9. 호스트와 저장 장치를 포함하는 사용자 장치의 파일 무효화 방법에 있어서:
    상기 저장 장치의 프리 블록 상태(Free Block Status)를 파악하는 단계; 그리고
    상기 프리 블록 상태에 따라 상기 무효화 명령을 하달하는 단계를 포함하는 무효화 방법.
  10. 제 9 항에 있어서,
    상기 호스트가 상기 프리 블록 상태에 대한 정보를 상기 저장 장치에 요청하는 단계를 더 포함하는 무효화 방법.
  11. 제 10 항에 있어서,
    상기 무효화 명령을 하달하는 단계에서,
    상기 호스트는 상기 프리 블록 상태와 기준치를 비교하고, 비교 결과에 따라 상기 무효화 명령을 하달하는 무효화 방법.
  12. 제 11 항에 있어서,
    상기 호스트는 상기 프리 블록 상태가 상기 기준치에 미달하는 경우에 상기 무효화 명령을 하달하는 무효화 방법.
  13. 제 9 항에 있어서,
    상기 저장 장치는 상기 프리 블록 상태와 기준치를 비교하고, 비교 결과에 따라 상기 호스트에 상기 무효화 명령을 요청하는 무효화 방법.
  14. 제 13 항에 있어서,
    상기 호스트가 상기 저장 장치에 상기 무효화 명령의 필요 여부를 질의하는 단계를 더 포함하는 무효화 방법.
  15. 삭제된 파일에 대한 무효화 명령을 하달하는 호스트; 그리고
    상기 무효화 명령에 따라 상기 삭제된 파일을 무효화하는 저장 장치를 포함하되,
    상기 무효화 명령은 상기 저장 장치의 프리 블록 상태에 따라 하달되는 사용자 장치.
  16. 제 15 항에 있어서,
    상기 호스트는 주기적으로 또는 필요한 시점에 상기 프리 블록 상태에 대한 정보를 상기 저장 장치에 요청하는 사용자 장치.
  17. 제 16 항에 있어서,
    상기 호스트는 상기 프리 블록 상태를 참조하여 상기 무효화 명령의 하달 여부를 결정하는 사용자 장치.
  18. 제 15 항에 있어서,
    상기 저장 장치는 상기 프리 블록 상태를 참조하여 상기 무효화 명령의 하달 여부를 결정하는 사용자 장치.
  19. 제 18 항에 있어서,
    상기 무효화 명령의 필요시, 상기 저장 장치는 상기 호스트의 상기 무효화 명령의 하달을 요청하는 사용자 장치.
  20. 데이터를 저장하기 위한 저장 매체; 그리고
    호스트로부터의 무효화 명령에 따라 상기 저장 매체에 저장된 데이터를 무효화하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는 특정 영역 또는 특정 데이터에 대한 상기 무효화 명령의 발생 빈도를 참조하여 무효화하거나 또는 로깅하는 저장 장치.
  21. 제 20 항에 있어서,
    상기 컨트롤러는 상기 특정 영역 또는 특정 데이터에 대한 무효화 명령이 기준 시간 이내에 기준 횟수를 초과하여 발생하는 경우에 상기 무효화 명령을 무시하고 로깅하는 저장 장치.
  22. 제 21 항에 있어서,
    상기 로깅 시에는 상기 특정 영역 또는 특정 데이터의 위치 정보가 저장되는 저장 장치.
  23. 제 21 항에 있어서,
    상기 위치 정보는 비트맵(Bitmap) 구조로 관리되는 저장 장치.
  24. 제 21 항에 있어서,
    상기 스토리지 컨트롤러는 상기 무시된 무효화 명령을 유휴 시간에 실행하는 저장 장치.
  25. 제 21 항에 있어서,
    상기 스토리지 컨트롤러는 상기 특정 영역 또는 특정 데이터에 대한 무효화 명령이 기준 경과 시간 이내에 하달하지 않는 경우에 상기 무시된 무효화 명령을 실행하는 저장 장치.
KR1020100042065A 2009-10-27 2010-05-04 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법 KR20110046232A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100042065A KR20110046232A (ko) 2009-10-27 2010-05-04 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법
US12/911,082 US20110271037A1 (en) 2009-10-27 2010-10-25 Storage device performing data invalidation operation and data invalidation method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US61/255,119 2009-10-27
KR1020100042065A KR20110046232A (ko) 2009-10-27 2010-05-04 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법

Publications (1)

Publication Number Publication Date
KR20110046232A true KR20110046232A (ko) 2011-05-04

Family

ID=44241149

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100042065A KR20110046232A (ko) 2009-10-27 2010-05-04 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법

Country Status (2)

Country Link
US (1) US20110271037A1 (ko)
KR (1) KR20110046232A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150112074A (ko) * 2014-03-26 2015-10-07 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템의 동작 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386537B2 (en) * 2009-12-15 2013-02-26 Intel Corporation Method for trimming data on non-volatile flash media
US8661189B2 (en) * 2010-08-31 2014-02-25 Apple Inc. Systems and methods for trimming logical block addresses corresponding to a data structure residing in non-volatile memory
FR2969890A1 (fr) * 2010-12-23 2012-06-29 France Telecom Procede et dispositif de communication de donnees numeriques
JP5405513B2 (ja) 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
KR101824949B1 (ko) * 2011-11-23 2018-02-05 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
US8949512B2 (en) 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US9069806B2 (en) * 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US8788778B1 (en) * 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US10235079B2 (en) 2016-02-03 2019-03-19 Toshiba Memory Corporation Cooperative physical defragmentation by a file system and a storage device
US11914860B2 (en) * 2018-08-20 2024-02-27 Macronix International Co., Ltd. Data storage for artificial intelligence-based applications
US11327886B2 (en) * 2019-07-10 2022-05-10 Board Of Trustees Of The University Of Illinois Capturing time-varying storage of data in memory device for data recovery purposes

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10145601A (ja) * 1996-11-08 1998-05-29 Ricoh Co Ltd 画像処理装置
US7654466B2 (en) * 2003-09-18 2010-02-02 Panasonic Corporation Semiconductor memory card, semiconductor memory control apparatus, and semiconductor memory control method
US8046530B2 (en) * 2008-10-02 2011-10-25 Infineon Technologies Ag Process and method for erase strategy in solid state disks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150112074A (ko) * 2014-03-26 2015-10-07 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
US20110271037A1 (en) 2011-11-03

Similar Documents

Publication Publication Date Title
KR20110046232A (ko) 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법
US10592117B2 (en) Memory system and method for controlling nonvolatile memory
KR102667430B1 (ko) 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US10209894B2 (en) Memory system and method for controlling nonvolatile memory
KR102074329B1 (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
US8918580B2 (en) Storage device with buffer memory including non-volatile RAM and volatile RAM
KR102618699B1 (ko) 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102094236B1 (ko) 스토리지 디바이스 및 컴퓨터 시스템
TWI712881B (zh) 電子機器及其控制方法、電腦系統及其控制方法以及主機之控制方法
KR20210027642A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
US20110208898A1 (en) Storage device, computing system, and data management method
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
KR20150006614A (ko) 데이터 저장 장치 및 그것의 동작 방법
TWI726314B (zh) 資料儲存裝置與資料處理方法
US10528264B2 (en) Storage device and data processing system including the same
CN111108488A (zh) 内存块回收方法和装置
KR20200122685A (ko) 메모리 시스템 내에서 서로 다른 종류의 데이터를 처리하기 위한 장치 및 방법
KR20150020384A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN110908595B (zh) 存储装置及信息处理系统
KR101549569B1 (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
US11960411B2 (en) Apparatus for transmitting map information in memory system
US20220391093A1 (en) Memory system, data processing system including the same, and operating method thereof
US20200349086A1 (en) Logical And Physical Address Field Size Reduction By Alignment- Constrained Writing Technique
KR20220108342A (ko) 메모리 시스템 내 프리 블록을 확보하는 장치 및 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid