KR20130057306A - 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 - Google Patents

플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 Download PDF

Info

Publication number
KR20130057306A
KR20130057306A KR20110123142A KR20110123142A KR20130057306A KR 20130057306 A KR20130057306 A KR 20130057306A KR 20110123142 A KR20110123142 A KR 20110123142A KR 20110123142 A KR20110123142 A KR 20110123142A KR 20130057306 A KR20130057306 A KR 20130057306A
Authority
KR
South Korea
Prior art keywords
trim
lba
area
memory
information
Prior art date
Application number
KR20110123142A
Other languages
English (en)
Other versions
KR101824949B1 (ko
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 KR1020110123142A priority Critical patent/KR101824949B1/ko
Priority to US13/682,964 priority patent/US9032138B2/en
Publication of KR20130057306A publication Critical patent/KR20130057306A/ko
Application granted granted Critical
Publication of KR101824949B1 publication Critical patent/KR101824949B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0608Saving storage space on storage systems
    • 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
    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

Abstract

본 발명의 실시 예에 따른 저장 장치는, 데이터를 저장하기 위한 플래시 메모리; 및 상기 플래시 메모리를 제어하며, 호스트의 트림 명령에 응답하여 무효화 동작을 수행하는 컨트롤러를 포함하되, 상기 컨트롤러는 무효화 동작 시에 상기 호스트로부터 받은 트림 정보를 트림 섹터 비트맵으로 구성하고, 상기 트림 섹터 비트맵을 영역별로 구분하여 관리할 수 있다. 상기 컨트롤러는 상기 트림 섹터 비트맵을 일정 크기의 LBA 영역 단위로 구분하여 관리하기 위한 LBA 영역 테이블을 포함할 수 있다. 본 발명에 의하면, LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 메모리 자원을 효율적으로 사용할 수 있다. 본 발명은 메모리 자원(DRAM 또는 SRAM)이 적어서 트림 정보를 모두 로깅할 수 없는 환경에도 적용할 수 있다.

Description

플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치{STORAGE DEVICE BASED ON A FLASH MEMORY AND USER DEVICE INCLUDING THE SAME}
본 발명은 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치에 관한 것이다.
사용자 장치(user device)는 퍼스널 컴퓨터, 디지털 카메라, 캠코더, 휴대 전화, MP3, PMP, PDA 등과 같은 호스트뿐만 아니라, 메모리 카드, USB 메모리, 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD) 등과 같은 저장 장치를 포함할 수 있다. 사용자 장치는 호스트 내부에 저장 장치를 포함할 수도 있다. 저장 장치는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리를 포함할 수 있다.
호스트에서 어떤 파일이 삭제될 경우, 파일 시스템에 의해서 그 파일은 삭제된 파일로 처리될 것이다. 파일이 삭제되었다는 것은 파일 시스템 관리 데이터로서 삭제된 파일의 메타 데이터가 변경되었음을 의미한다. 호스트에서 파일이 삭제되더라도(다시 말해서, 삭제된 파일의 메타 데이터가 파일 시스템에 의해서 변경되더라도), 저장 장치는 무효한 파일인지의 여부를 판단할 수 없다.
이러한 이유로, 저장 장치 내에서 무효한 파일에 대한 머지 동작(merge operation)이나 가비지 컬렉션 동작(Garbage Collection operation) 등이 수행될 수 있다. 이러한 동작은 저장 장치의 동작 성능을 저하할 것이다. 또한, 무효한 파일이 마치 유효한 데이터처럼 저장되어 있으므로, 저장 장치의 유효한 저장 공간이 감소될 것이다.
본 발명은 상술한 기술적 문제점을 해결하기 위해 제안된 것으로, 본 발명의 목적은 호스트의 트림 명령에 대한 응답 속도를 향상시킬 수 있는 저장 장치 및 그것을 포함한 사용자 장치를 제공하는 데 있다.
본 발명의 실시 예에 따른 저장 장치는, 데이터를 저장하기 위한 플래시 메모리; 및 상기 플래시 메모리를 제어하며, 호스트의 트림 명령에 응답하여 무효화 동작을 수행하는 컨트롤러를 포함하되, 상기 컨트롤러는 무효화 동작 시에 상기 호스트로부터 받은 트림 정보를 트림 섹터 비트맵으로 구성하고, 상기 트림 섹터 비트맵을 영역별로 구분하여 관리할 수 있다.
실시 예로서, 상기 컨트롤러는 상기 트림 섹터 비트맵을 일정 크기의 LBA 영역 단위로 구분하여 관리하기 위한 LBA 영역 테이블을 포함할 수 있다. 상기 트림 섹터 비트맵 및 상기 LBA 영역 테이블은 로컬 메모리 상에서 구동된다. 상기 LBA 영역 테이블은 상기 트림 정보를 받지 않은 영역이나 상기 트림 정보를 모두 받은 영역에 관한 정보가 저장될 수 있다. 상기 LBA 영역 테이블은 상기 트림 정보가 저장되는 상기 로컬 메모리의 어드레스와 상기 트림 섹터 비트맵에서 상기 트림 정보를 저장하는 데이터 비트 수가 저장될 수 있다.
실시 예로서, 상기 컨트롤러는 무효화 동작 시에 상기 LBA 영역 테이블을 참조하여 상기 트림 섹터 비트맵을 위해 상기 로컬 메모리를 별도로 할당하지 않는다. 즉, 상기 컨트롤러는 상기 트림 정보를 받지 않은 영역이나 상기 트림 정보를 모두 받은 영역인 경우에, 상기 트림 섹터 비트맵을 위해 상기 로컬 메모리를 할당하지 않는다.
본 발명의 실시 예에 따른 사용자 장치는, 트림 명령을 제공하는 호스트;
상기 트림 명령에 따라 무효화 동작을 수행하는 저장 장치를 포함하되, 상기 저장 장치는 상기 호스트로부터 받은 트림 정보를 트림 섹터 비트맵으로 구성하고, 상기 트림 섹터 비트맵을 영역별로 구분하여 관리할 수 있다.
실시 예로서, 상기 저장 장치는 데이터를 저장하기 위한 플래시 메모리; 및 상기 플래시 메모리를 제어하며, 상기 트림 섹터 비트맵을 영역별로 구분하여 로깅 동작을 수행하는 컨트롤러를 포함한다. 상기 컨트롤러는 상기 트림 섹터 비트맵을 일정 크기의 LBA 영역 단위로 구분하여 관리하기 위한 LBA 영역 테이블을 포함한다.
실시 예로서, 상기 컨트롤러는 로컬 메모리를 포함하고, 상기 트림 섹터 비트맵 및 상기 LBA 영역 테이블은 상기 로컬 메모리 상에서 구동되며, 상기 LBA 영역 테이블은 상기 트림 정보를 받지 않은 영역이나 상기 트림 정보를 모두 받은 영역에 관한 정보가 저장될 수 있다. 상기 컨트롤러는 상기 트림 정보를 받지 않은 영역이나 상기 트림 정보를 모두 받은 영역인 경우에, 상기 트림 섹터 비트맵을 위해 상기 로컬 메모리를 할당하지 않는다.
실시 예로서, 상기 컨트롤러는 상기 LBA 영역 테이블에 대한 정보를 저장하는 트림 영역 비트맵을 구동하기 위한 메모리를 더 포함하며, 상기 메모리는 상기 로컬 메모리보다 고속으로 동작한다.
본 발명에 실시 예에 따른 사용자 장치에 의하면, LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 메모리 자원을 효율적으로 사용할 수 있다. 본 발명은 메모리 자원(DRAM 또는 SRAM)이 적어서 트림 정보를 모두 로깅할 수 없는 환경에도 적용할 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 2는 도 1에 도시된 사용자 장치의 동작을 설명하기 위한 순서도이다.
도 3은 트림 명령을 이용하여 무효화 동작을 수행하는 사용자 장치를 예시적으로 보여주는 블록도이다.
도 4는 도 3에 도시된 트림 섹터 비트맵을 설명하기 위한 다이어그램이다.
도 5는 도 3에 도시된 트림 섹터 비트맵의 다른 실시 예를 보여주는 다이어그램이다.
도 6은 트림 명령을 이용하여 무효화 동작을 수행하는 사용자 장치의 다른 예를 보여주는 블록도이다.
도 7은 도 6에 도시된 사용자 장치의 트림 섹터 비트맵과 LBA 영역 테이블을 예시적으로 보여주는 다이어그램이다.
도 8은 트림 명령을 이용하여 무효화 동작을 수행하는 사용자 장치의 또 다른 예를 보여주는 블록도이다.
도 9는 도 8에 도시된 사용자 장치에서 트림 정보를 LBA 영역 단위로 로깅하고 관리하는 방법을 설명하기 위한 다이어그램이다.
도 10은 본 발명의 실시 예에 따른 사용자 장치를 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다.
도 11은 도 10에 도시된 SSD 컨트롤러(4210)의 구성을 예시적으로 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 사용자 장치를 전자 장치로 구현한 예를 보여주는 블록도이다.
도 13은 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다.
도 15는 도 14에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
도 16은 본 발명의 실시 예에 따른 사용자 장치를 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
사용자 장치(user device)는 호스트(host)와 저장 장치(storage device)를 포함한다. 사용자 장치는 하드웨어로 프로세서, 메인 메모리, 그리고 플래시 메모리를 포함할 수 있다. 여기에서, 프로세서나 메인 메모리는 호스트에 포함될 수 있고, 플래시 메모리는 저장 장치에 포함될 수 있다. 또한, 사용자 장치는 소프트웨어로, 사용자 애플리케이션(user application), O/S, 파일 시스템, FTL(Flash Translation Layer) 등을 포함할 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 1에 도시된 사용자 장치(100)는 로깅 방식을 이용하여 무효화 동작을 수행한다. 도 1을 참조하면, 사용자 장치(100)는 호스트(110)와 저장 장치(120)를 포함한다.
호스트(110)는 저장 장치(120)를 제어한다. 호스트(110)는 컴퓨터, PDA, PMP, MP3 플레이어, 카메라, 캠코더, 모바일 폰 등과 같은 휴대용 전자 장치를 포함한다. 호스트(110)는 필요에 따라 파일들의 무효화(또는, 삭제)를 저장 장치(120)로 통보한다. 이는 호스트(110)가 특정 명령을 저장 장치(120)로 전송함으로써 달성될 수 있다. 이러한 특정 명령을 "트림 명령"(TRIM command)이라고 한다. 트림 명령에는 삭제될 영역을 지정하기 위한 정보(예를 들면, 어드레스 정보)가 포함될 수 있다.
삭제될 파일에 대한 메타 데이터의 처리는 호스트(110)의 파일 시스템(도시되지 않음)에 의해서 행해질 것이다. 파일 시스템은 빠른 동작을 위해서, 파일의 내용을 삭제하는 것이 아니라, 파일의 메타 데이터만을 변경할 것이다. 삭제된 파일의 메타 데이터가 변경되는 경우, 호스트(110)의 파일 시스템에서는 삭제된 파일의 내용이 무효한 데이터로 처리되는 반면에, 저장 장치(120)에서는 유효한 데이터로 남아있게 된다.
이러한 이유로, 저장 장치(120)는 삭제된 파일의 데이터를 포함한 메모리 블록을 유효한 블록으로 인식할 것이다. 따라서, 삭제된 데이터에 대한 머지 동작이나 가비지 컬렉션 동작 등과 같은 불필요한 작업이 저장 장치(120)에서 수행될 수 있다. 이를 방지하기 위해서, 호스트(110)는 삭제된 파일의 내용이 실질적으로 무효화 되도록 저장 장치(120)로 트림 명령을 제공할 것이다.
계속해서 도 1을 참조하면, 저장 장치(120)는 전원이 차단되더라도 저장된 데이터를 유지할 수 있는 저장 매체(121)를 포함한다. 저장 장치(120)의 예로는 솔리드 스테이트 드라이브(Solid-State Drive: SSD)나 메모리 카드일 수 있다. 하지만, 저장 장치(120)가 SSD나 메모리 카드에 국한되지는 않는다.
저장 매체(121)는 복수의 플래시 메모리로 구성될 수 있다. 저장 매체(121)는 플래시 메모리 대신에 다른 불휘발성 메모리(예를 들면, PRAM, FRAM, MRAM 등)로 구성될 수 있다. 저장 매체(121)를 구성하는 불휘발성 메모리는 메모리 셀 당 하나의 비트 데이터 또는 2 비트 이상의 데이터를 저장할 수 있다. 또한, 저장 매체(121)를 구성하는 불휘발성 메모리는 3차원 구조의 메모리 셀 어레이를 가질 수도 있다.
컨트롤러(122)는 호스트(110)로부터의 요청에 응답하여 저장 매체(121)를 제어한다. 컨트롤러(1220)는 복수의 채널(CH1∼CHn)을 통해 저장 매체(121)와 연결될 수 있다. 각각의 채널에는 복수의 플래시 메모리가 연결될 수 있다. 컨트롤러(122)는 중앙처리장치와 메모리와 같은 하드웨어 장치(도시되지 않음), 그리고 호스트(110)의 트림 명령에 응답하여 무효화 동작을 수행하기 위한 하드웨어 또는 소프트웨어 장치(도시되지 않음)를 포함할 수 있다.
컨트롤러(122)는 호스트(110)로부터 트림 명령이 제공될 때, 삭제될 영역(또는 파일들)의 위치만을 기록하고, 요청된 트림 명령의 실행이 완료되었음을 호스트(110)에 통지한다. 다시 말해서, 저장 장치(120)는 삭제될 파일들의 영역을 바로 무효화시키는 것이 아니라, 무효한 파일들의 영역의 위치만을 기록함으로, 호스트(110)의 요청에 빠르게 응답할 수 있다. 저장 장치(120)의 빠른 응답을 통해 사용자 장치(100)의 성능이 향상될 수 있다.
도 2는 도 1에 도시된 사용자 장치의 동작을 설명하기 위한 순서도이다. 호스트(110)는 필요에 따라 저장 장치(120)로 트림 명령을 제공한다. 트림 명령은 저장 장치(120)에 저장된 파일들 중 무효한 내용을 갖는 파일들을 삭제하는 데 사용된다. 도 1 및 도 2를 참조하여, 사용자 장치(100)의 무효화 동작이 설명될 것이다.
S111 단계에서, 저장 장치(120)는 호스트(110)로부터 트림 명령(TRIM command)을 입력받는다. 트림 명령은 무효한 내용을 갖는 파일들의 영역을 알리는 정보(이하에서는 '트림 정보'라 함)를 포함할 것이다. 삭제될 파일 영역의 어드레스 정보는 트림 정보에 포함될 수 있다.
S112 단계에서, 저장 장치(120)의 컨트롤러(122)는 트림 명령에 따라 삭제될 영역의 용량이 기준 용량을 초과하는 지의 여부를 판별한다. 기준 용량은 하드웨어적으로 또는 소프트웨어적으로 가변 가능하도록 설정될 수 있다. 예를 들면, 기준 용량은 저장 장치(120)의 펌웨어의 업데이트를 통해 바꿀 수 있다.
또한, 기준 용량은 호스트(110)에 의해서 가변 가능하도록 설정될 수도 있다. 이 경우, 호스트(110)와 저장 장치(120) 사이의 인식 절차 동안 호스트 인터페이스의 레지스터(기준 용량을 저장하는 데 사용됨)에 기준 용량을 나타내는 특정 값을 저장함으로써 기준 용량을 설정하는 것이 가능할 것이다. 삭제될 영역은 논리적인 영역을 나타내며, 펌웨어(예를 들면, FTL)에 의해서 저장 매체(121)의 물리적인 영역으로 변환될 것이다.
한편, 트림 명령에 따라 삭제될 영역의 용량이 저장 장치(120)에 따라 제한될 수도 있다. 이러한 경우, 저장 장치(120)에는 트림 명령을 통해 삭제될 영역의 최대 용량이 기록되며, 호스트(110)는 저장 장치(120)에 기록된 삭제될 영역의 최대 용량을 나타내는 정보를 이용하여 트림 명령을 발생할 것이다.
계속해서 도 2를 참조하면, 삭제될 영역의 용량이 기준 용량을 초과하면 로깅 동작(S113 단계)이 수행된다. S113 단계에서, 삭제될 영역의 용량이 기준 용량을 초과하는 경우, 컨트롤러(122)는 삭제될 영역의 위치를 기록한다. 이러한 동작은 로깅(logging)이라 한다. 삭제될 영역의 위치가 기록된 후, S115 단계에서, 컨트롤러(122)는 트림 명령의 실행이 완료되었음을 호스트(110)에 통지한다. 이후, 절차는 종료될 것이다.
도 1에는 도시되어 있지 않지만, 컨트롤러(122)는 메모리(도시되지 않음)를 포함하며, 메모리에는 삭제될 영역의 위치를 나타내는 트림 정보(TRIM information)가 기록될 것이다. 트림 정보는 삭제될 영역을 비트맵 구조로 기록될 수 있다. 비트맵 구조는 도 3에서 좀 더 자세하게 설명될 것이다. 하지만, 트림 정보는 비트맵 구조 외에 다른 방식으로도 기록될 수 있다. 예를 들면, 삭제될 영역의 어드레스 정보를 기록하는 것도 가능하다.
삭제될 영역의 위치가 기록된 이력(history)은 주어진 시간마다 또는 필요에 따라 저장 매체(121)에 저장될 수 있다. 그렇게 저장된 이력은 파워-온 시 컨트롤러(122)의 메모리(도시되지 않음)에 로드될 것이다. 삭제될 영역의 위치가 기록된 이력은 컨트롤러(122) 밖의 버퍼 메모리(도시되지 않음)를 이용하여 관리될 수 있다. 유휴 시간이 생기면, 컨트롤러(122)는 버퍼 메모리 또는 저장 매체(121)에 저장된 이력을 이용하여 삭제될 영역을 무효화시킨다.
여기서, 무효화(invalidation)란 삭제될 영역에 기록된 데이터를 무효한 데이터로 처리하는 것을 의미한다. 이러한 무효화는 저장 매체(121)의 물리적인 블록들과 논리적인 블록들 사이의 사상이 기록된 맵핑 테이블을 관리함으로써 행해질 수 있다. 예를 들면, 무효화는 삭제될 영역에 대한 사상 정보를 맵핑 테이블에서 제외(map-out)함으로써 또는 삭제될 영역을 맵핑 테이블에 표시(marking)함으로써 행해질 수 있다. 맵핑 테이블의 관리는 플래시 변환 계층(FTL; Flash Translation Layer)에 의해서 행해질 수 있다.
계속해서 도 2를 참조하면, 삭제될 영역의 용량이 기준 용량을 초과하지 않은 경우에 무효화 동작이 수행된다. S114 단계에서, 컨트롤러(122)는 삭제될 영역의 위치를 기록하지 않고 삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리할 것이다. 이러한 무효화는, 앞서 언급된 바와 같이, 삭제될 영역에 대한 사상 정보를 맵핑 테이블에서 제외(map-out)함으로써 또는 맵핑 테이블에 삭제될 영역을 표시(marking)함으로써 행해질 수 있다.
삭제될 영역에 기록된 데이터를 바로 무효한 데이터로 처리한 후, S115 단계에서, 컨트롤러(122)는 트림 명령의 실행이 완료되었음을 호스트(110)에 통지할 것이다. 이후, 절차는 종료될 것이다.
다시 도 1을 참조하면, 저장 장치(120)는 로깅 방식을 통해 삭제될 영역의 용량에 관계없이 트림 명령을 호스트(110)의 주어진 시간(예를 들면, 호스트로부터의 명령을 처리하는 데 걸리는 시간) 내에 빠르게 처리할 수 있다. 또한, 무효화된 영역에 대한 프로그램 및 소거 동작들이 불필요하게 수행되는 것을 방지할 수 있다.
도 3은 트림 명령을 이용하여 무효화 동작을 수행하는 사용자 장치를 예시적으로 보여주는 블록도이다. 도 3에 도시된 사용자 장치(200)는 앞에서 설명한 로깅 방식을 이용하여 무효화 동작을 수행할 수 있다. 또한, 사용자 장치(200)는 트림 정보(TRIM information)를 트림 섹터 비트맵 구조로 관리할 수 있다.
도 3을 참조하면, 사용자 장치(1000)는 호스트(1100)와 저장 장치(1200)를 포함한다. 호스트(1100)와 저장 장치(1200)는 인터페이스(1001)를 통해 연결된다. 인터페이스(1001)에는 ATA, SATA, PATA, USB, SCSI, ESDI, IEEE 1394, IDE, 및/또는 카드 인터페이스와 같은 표준 인터페이스가 포함될 수 있다.
호스트(1100)는 프로세서(1110)와 메인 메모리(1120)를 포함한다. 프로세서(1110)와 메인 메모리(1120)는 어드레스/데이터 버스를 통해 연결될 수 있다. 호스트(1100)는 PDA(personal digital assistance), 컴퓨터, 디지털 오디오 플레이어, 디지털 카메라, 그리고 모바일 전화기기 등일 수 있다. 메인 메모리(1120)는 캐시, ROM, PROM, EPROM, EEPROM, 플래시, SRAM, 그리고 DRAM과 같은 형태의 불휘발성 또는 휘발성 메모리일 수 있다.
도 3을 참조하면, 메인 메모리(1120)는 복수의 소프트웨어 또는 펌웨어를 구동할 수 있다. 예로서, 메인 메모리(1120)는 운영 체제(OS; Operating System, 1121), 애플리케이션(application, 1122), 파일 시스템(File System, 1123)), 메모리 관리자(memory manager, 1124), 그리고 입출력 드라이버(I/O Drivers, 1125) 등을 구동할 수 있다.
운영 체제(1121)는 호스트(1100)의 소프트웨어 및/또는 하드웨어 자원(resource)을 제어할 수 있으며, 프로세서(1110)에 의한 프로그램 실행을 제어할 수 있다. 애플리케이션(1122)은 호스트(1100)에서 실행되는 다양한 응용 프로그램들을 나타낸다.
파일 시스템(1123)은 파일 또는 데이터를 메인 메모리(1120) 또는 저장 장치(1200)와 같은 저장 영역에 저장하는 경우에 이를 조직화한다. 파일 시스템(1123)은 트림 명령에 따른 트림 정보를 저장 장치(1200)로 제공할 수 있다. 파일 시스템(1123)은 호스트(1100)에서 실행되는 특정한 운영 체제(1121)에 따라 사용된다. 파일 시스템(1123)은 운영 체제(1121) 안에 포함될 수 있다.
메모리 관리자(1124)는 메인 메모리(1120)에서 수행되는 메모리 액세스 동작 및/또는 저장 장치(1200)와 같은 외부 장치에서 수행되는 메모리 액세스 동작을 제어한다. 입출력 드라이버(1125)는 저장 장치(1200)와 같은 다른 장치, 컴퓨터 시스템, 또는 네트워크(예를 들면, 인터넷) 및 호스트(1100) 사이의 정보 전달을 수행한다.
계속해서 도 3을 참조하면, 저장 장치(1200)는 플래시 메모리(1210)를 기반으로 하는 데이터 저장 장치일 수 있다. 예로서, 저장 장치(1200)는 플래시 메모리(1210), 컨트롤러(1220), 그리고 버퍼 메모리(1230)를 포함할 수 있다. 저장 장치(1200)는 메모리 카드 장치, SSD 장치, ATA 버스 장치, SATA 버스 장치, 멀티미디어 카드 장치, SD 장치, 메모리 스틱 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치일 수 있다.
플래시 메모리(1210)는 어드레스/데이터 버스를 통해 컨트롤러(1220)와 연결될 수 있다. 플래시 메모리(1210)는 메모리 블록 단위로 소거 동작이 수행되고, 페이지 단위로 읽기 또는 쓰기 동작이 이루어진다. 플래시 메모리(1210)는 쓰기 동작 전에 소거 동작이 수행된다. 플래시 메모리(1210)에 저장된 데이터는 호스트(1100) 상에서 무효화 되더라도, 덮어쓰기를 지원하지 않는 플래시 메모리(1210)의 특성으로 인해 실질적으로 그대로 유지될 수 있다. 이는 플래시 메모리(1210)의 물리적인 영역이 실질적으로 관리되는 것이 아니라, 플래시 변환 계층(FTL)을 통해 맵핑 정보만이 관리되기 때문이다.
계속해서 도 3을 참조하면, 플래시 메모리(1210)는 데이터 영역(1211)과 메타 영역(1212)으로 구분될 수 있다. 데이터 영역(1211)에는 일반적인 사용자 데이터 또는 메인 데이터가 저장되고, 메타 영역(1212)에는 사용자 데이터 외에 플래시 메모리(1210) 또는 저장 장치(1200)의 구동에 필요한 메타 데이터(예를 들면, FTL에 의한 맵핑 정보)가 저장될 수 있다.
컨트롤러(1220)는 어드레스/데이터 버스를 통해 플래시 메모리(1210) 또는 버퍼 메모리(1230)와 데이터를 주고 받을 수 있다. 컨트롤러(1220)는 중앙처리장치(1221)와 로컬 메모리(1222)를 포함할 수 있다. 컨트롤러(1220)는 트림 명령에 따라 삭제될 영역의 위치를 로컬 메모리(1222) 또는 버퍼 메모리(1230)에 기록할 수 있다. 즉, 컨트롤러(1220)는 트림 명령이 입력될 때마다 삭제될 영역의 위치를 메모리에 기록하는 로깅 동작을 수행할 수 있다. 로깅 동작에 따른 무효화 동작은 유휴 시간(idle time) 동안 수행될 수 있다.
계속해서 도 3을 참조하면, 중앙처리장치(1221)는 상업적으로 이용 가능한 또는 맞춤형 마이크로프로세서일 수 있다. 로컬 메모리(1222)는 캐시, ROM, PROM, EPROM, EEPROM, 플래시, SRAM, 그리고 DRAM을 포함할 수 있다. 로컬 메모리(1222)는 중앙처리장치(1221)의 제어에 따라, 플래시 변환 계층(FTL, 1223)과 트림 섹터 비트맵(1224) 등을 구동할 수 있다.
플래시 변환 계층(FTL; Flash Transition Layer, 1223)은 플래시 메모리(1210)를 효율적으로 사용하도록 한다. 플래시 변환 계층(1223)은 호스트(1100)에서 제공한 논리적 어드레스(logical address)를 플래시 메모리(1210)에서 사용 가능한 물리적 어드레스(Physical address)로 변환하는 역할을 한다. 플래시 변환 계층(1223)은 이러한 어드레스 변환을 맵핑 테이블을 통해 관리한다.
또한, 플래시 메모리(1210)의 허용 가능한 소거 횟수(예를 들면, 약 100,000번)는 미리 정해져 있다. 플래시 메모리(1210)는 특정 메모리 블록이 다른 메모리 블록들보다 빠르게 마모되는 것을 방지하기 위해, 소거 동작을 전체 메모리 블록에 분산한다. 이는 마모도 관리라고 불린다. 플래시 변환 계층(1223)은 플래시 메모리(1210)의 마모도를 관리하는 데 사용될 수 있다.
트림 섹터 비트맵(1224)은 플래시 변환 계층(1223)에 의해 관리될 수 있다. 트림 섹터 비트맵(1224)에는 트림 명령에 따라 삭제될 영역의 위치 또는 트림 정보가 기록될 수 있다. 예로서, 저장 장치(1200)는 호스트(1100)로부터 제공받은 트림 정보를 섹터 단위의 비트맵으로 구성하고, 로컬 메모리(1222) 상에서 유지 또는 관리할 수 있다.
버퍼 메모리(1230)는 플래시 메모리(1210)에 저장될 또는 플래시 메모리(1210)로부터 읽은 데이터를 임시 저장하는 데 사용될 수 있다. 버퍼 메모리(1230)는 앞에서 설명한 트림 섹터 비트맵을 저장하는 데 사용될 수도 있다. 버퍼 메모리(1230)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다.
도 4는 도 3에 도시된 트림 섹터 비트맵을 설명하기 위한 다이어그램이다. 저장 장치(1200)는 호스트(1100)로부터 트림 명령을 입력받을 때, 삭제될 영역의 위치를 트림 섹터 비트맵(1224)에 기록하는 로깅 동작을 수행하고, 유휴 시간(idle time) 동안에 무효화 동작을 수행할 수 있다.
도 4의 트림 섹터 비트맵에는 삭제될 영역의 위치 또는 트림 정보가 예시적으로 기록되어 있다. 호스트(1100)로부터 파일 A, B, C에 대한 트림 명령을 받은 경우에, 저장 장치(1200)는 파일 A, B, C에 대응하는 논리적 블록 어드레스(LBA; Logical Block Address)의 비트맵에 트림 정보를 기록한다. 도 4에서, 파일 A에 대한 트림 정보는 LBA_02, LBA_03, LBA_04의 비트맵에 기록되어 있다. 파일 B의 경우에는 LBA_13, LBA_14에 기록되어 있고, 파일 C의 경우에는 LBA_1N, LBA_21, LBA_22, LBA_2N에 기록되어 있다. 도 4에서, 트림 정보는 데이터 '1'로 표기되어 있다.
계속해서 도 4를 참조하면, 트림 섹터 비트맵은 일정 크기의 LBA 영역(LBA region)으로 구분될 수 있다. 도 4에서는 예로서, 3개의 LBA 영역(LBA region 1~3)이 도시되어 있다. LBA 영역은 이것보다 더 많은 수로 구성될 수 있다. 각각의 LBA 영역은 1부터 N(N은 자연수)까지의 LBA(Logical Block Address)로 구성되어 있다. 제 1 LBA 영역은 LBA_01~LBA_0N으로 구성되고, 제 2 LBA 영역은 LBA_11~LBA_1N으로 구성되며, 제 3 LBA 영역은 LBA_21~LBA_2N으로 구성된다.
여기에서, 파일 A에 해당하는 LBA_02, LBA_03, LBA_04는 제 1 LBA 영역에 속해 있다. 파일 B에 해당하는 LBA_13과 LBA_14는 제 2 LBA 영역에 속해 있다. 그리고 파일 C에 해당하는 LBA_1N, LBA_21, LBA_22, LBA_2N는 제 2 LBA 영역과 제 3 LBA 영역에 속해 있다.
이와 같이, 하나의 파일에 대한 트림 정보가 하나의 LBA 영역에 속해 있을 수 있고, 둘 이상의 LBA 영역에 속해 있을 수도 있다. 또한, 경우에 따라서는 어떤 LBA 영역에 하나의 트림 정보도 기록되어 있지 않을 수도 있고, 모든 비트에 트림 정보가 기록되어 있을 수도 있다. 이는 도 5에서 좀 더 상세하게 설명하기로 한다.
도 5는 도 3에 도시된 트림 섹터 비트맵의 다른 실시 예를 보여주는 다이어그램이다. 도 5를 참조하면, 트림 섹터 비트맵(1224)은 로컬 메모리(1222)에서 구동되며, 데이터 보존을 이해 플래시 메모리(1210)의 메타 영역(1212)에 저장될 수 있다.
로컬 메모리(1222)에 저장된 트림 섹터 비트맵(1224)은 저장 장치(1200)의 동작 중에 주기적으로 또는 유휴 시간(idle time) 등과 같은 특정 시간에 메타 영역(1212)에 저장될 수 있다. 또한, 메타 영역(1212)에 저장된 트림 섹터 비트맵(1224)은 사용자 장치(1000)의 파워 온 또는 기타 필요 시에 로컬 메모리로 로드될 수 있다.
도 5를 참조하면, 트림 섹터 비트맵(1224)은 일정한 크기의 LBA 영역으로 구분되어 있다. 여기에서, LBA 영역은 항상 일정한 크기로 구분되는 것은 아니다. 경우에 따라서는 LBA 영역이 서로 다른 크기를 가질 수도 있다.
제 M-1 LBA 영역은 모든 비트에 트림 정보 0이 기록되어 있다. 제 M LBA 영역은 각각의 비트에 트림 정보 0 또는 1이 기록되어 있다. 그리고 제 M+1 LBA 영역은 모든 비트에 트림 정보 1이 기록되어 있다. 여기에서, 트림 정보 0은 호스트(1100)로부터 트림 명령을 받지 않은 것을 나타내고, 트림 정보 1은 트림 명령을 받은 것을 나타낸다. 다시 말하면, 제 M-1 LBA 영역은 모두 트림 명령을 받지 않았고, 제 M+1 LBA 영역은 모두 트림 명령을 받았다. 그리고 제 M LBA 영역의 일부(1로 표기됨)는 트림 명령을 받았고, 나머지(0으로 표기됨)는 받지 않았다.
본 발명에 따른 사용자 장치(도 3 참조, 1000)는 LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 로컬 메모리(1224)나 버퍼 메모리(1230)를 효율적으로 사용할 수 있다. 트림 정보를 모두 받은 제 M+1 LBA 영역이나 트림 정보를 모두 받지 않은 제 M-1 LBA 영역을 특별하게 관리함으로 메모리를 좀 더 효율적으로 사용할 수 있다. 예를 들면, 본 발명에 따른 사용자 장치(1000)는 트림 정보를 LBA 영역 단위로 관리함으로, 메모리의 사용 공간을 늘릴 수 있고, 트림 명령 후에 이어지는 읽기나 쓰기 동작 시에 트림 정보를 좀 더 빠르게 이용할 수 있다.
도 6은 트림 명령을 이용하여 무효화 동작을 수행하는 사용자 장치의 다른 예를 보여주는 블록도이다. 도 6을 참조하면, 사용자 장치(2000)는 호스트(2100)와 저장 장치(2200)를 포함한다.
호스트(2100)는 프로세서(2110)와 메인 메모리(2120)를 포함한다. 메인 메모리(2120)는 운영 체제(OS; Operating System, 2121), 애플리케이션(application, 2122), 파일 시스템(File System, 2123)), 메모리 관리자(memory manager, 2124), 그리고 입출력 드라이버(I/O Drivers, 2125) 등이 포함될 수 있다.
저장 장치(2200)는 플래시 메모리(2210) 및 컨트롤러(2220)를 포함할 수 있다. 플래시 메모리(2210)는 데이터 영역(2211)과 메타 영역(2212)으로 구분될 수 있다. 데이터 영역(2211)에는 사용자 데이터가 저장되고, 메타 영역(2212)에는 트림 정보와 같은 메타 데이터가 저장될 수 있다.
컨트롤러(2220)는 중앙처리장치(2221)와 로컬 메모리(2222)를 포함할 수 있다. 로컬 메모리(2222)는 저장 장치(2200)를 동작시키기 위한 소프트웨어 또는 데이터를 구동할 수 있는 하나 또는 그 이상의 메모리 장치일 수 있다. 로컬 메모리(2222)에서는 플래시 변환 계층(FTL, 2223), 트림 섹터 비트맵(2224), 그리고 LBA 영역 테이블(2225) 등이 구동될 수 있다.
트림 섹터 비트맵(2224)은 플래시 변환 계층(2223)에 의해 유지될 수 있다. 트림 섹터 비트맵(2224)에는 트림 명령에 따라 삭제될 영역에 대한 정보가 기록될 수 있다. 예로서, 저장 장치(2200)는 호스트(2100)로부터 제공받은 트림 정보를 섹터 단위의 비트맵으로 구성하고, 로컬 메모리(2222) 상에서 유지 또는 관리할 수 있다. 트림 섹터 비트맵(2224)은 LBA 영역 단위로 관리될 수 있다.
LBA 영역 테이블(2225)은 LBA 영역에 대한 정보를 갖는다. 앞의 예에서, LBA 영역 테이블(2225)에는 트림 명령을 받지 않은 영역이나 트림 명령을 모두 받은 영역에 관한 정보가 저장될 수 있다. 또한, LBA 영역 테이블(2225)에는 트림 정보가 저장되는 메모리의 어드레스나 트림 섹터 비트맵(2224)에서 트림 정보를 저장하는 비트의 수 등이 저장될 수 있다.
도 7은 도 6에 도시된 사용자 장치의 트림 섹터 비트맵과 LBA 영역 테이블을 예시적으로 보여주는 다이어그램이다. 또한, 도 7은 트림 정보를 LBA 영역 단위로 관리하고 로깅하는 방법을 보여준다.
도 7을 참조하면, 트림 섹터 비트맵(도 6 참조, 2224)은 로컬 메모리(2222)에서 구동되며, 데이터 보존을 이해 플래시 메모리(2210)의 메타 영역(2212)에 저장될 수 있다. 제 M-1 LBA 영역은 모든 비트맵 데이터가 0으로 기록된 것으로, 트림 섹터 비트맵을 위해 로컬 메모리(2222)가 별도로 할당되지 않는다. 제 M+1 LBA 영역은 모든 비트맵 데이터가 1로 기록된 것으로, 트림 섹터 비트맵을 위해 로컬 메모리(2222)가 별도로 할당되지 않는다. 로컬 메모리(2222)는 제 M LBA 영역에 대해서만 할당된다. 제 M LBA 영역의 일부(1로 표기됨)는 트림 명령을 받았고, 나머지(0으로 표기됨)는 받지 않았다.
LBA 영역 테이블(도 6 참조, 2225)은 트림 섹터 비트맵을 저장할 메모리 어드레스와 트림 섹터의 수(예를 들면, '1'로 표기된 비트 수)를 나타낼 수 있다. 도 7에서는 예시적으로 각각 4 바이트(Byte)의 메모리 어드레스와 트림 섹터 수를 보여주고 있다. 한편, 모든 비트맵 데이터가 0인 제 M-1 LBA 영역의 경우에는, 메모리 어드레스에 'Null'이 표기되고 트림 섹터의 수에 '0'이 표기되어 있다. 그리고 모든 비트맵 데이터가 1인 제 M+1 LBA 영역의 경우에는, 메모리 어드레스에 'Null'이 표기되고 트림 섹터의 수에 'MAX'가 표기되어 있다.
트림 영역 테이블(2225)에는 각 LBA 영역별 트림 섹터 비트맵의 메모리 어드레스가 저장되어 있다. 따라서 저장 장치(2200)는 읽기 또는 쓰기 동작 시에 트림 정보를 참조하기 위해 어떤 어드레스로 접근해야 하는지를 알 수 있다. 메모리 어드레스가 Null인 경우에는, 트림 섹터 비트가 모두 '0'인지 'MAX'인지를 통해 해당 LBA의 트림 여부를 확인할 수 있다.
각각의 LBA 영역에 대한 트림 정보는 일정 조건 하에서 플래시 변환 계층(2223)의 맵핑 테이블에 반영될 수 있다. 어떤 LBA 영역의 트림 정보가 맵핑 테이블에 모두 반영되면, 트림 섹터의 수는 0이 되고 해당 LBA 영역은 트림 정보를 받지 않은 영역으로 된다. 즉, 트림 영역 테이블(2225)에서, 해당 LBA 영역의 메모리 어드레스는 'Null'로 표기된다. 본 발명은 명령 명령에 대한 응답을 빠르게 할 뿐 아니라, 메모리 제약 하에서도 읽기 또는 쓰기 동작 시에, 삭제될 영역을 빠르게 참조할 수 있다.
도 7에 도시된 사용자 장치의 로깅 방법은 LBA 영역을 일정한 크기로 나누고, LBA 영역을 트림 정보를 받지 않은 영역과, 트림 정보를 모두 받은 영역을 구분한다. 트림 정보를 모두 받은 LBA 영역은 트림 정보가 플래시 변환 계층(FTL, 2223)의 맵핑 테이블에 반영되기 때문에, 점차 트림 정보를 받지 않은 영역으로 변경될 수 있다. 예를 들면, 시간이 지남에 따라, 제 M+1 LBA 영역은 제 M LBA 영역으로 변경되고, 제 M LBA 영역은 제 M-1 LBA 영역으로 변경될 수 있다.
본 발명에 따른 사용자 장치(2000)는 LBA 영역을 일정한 크기로 나누고, 각 LBA 영역 내의 트림 정보에 따라 트림 섹터 비트맵을 위한 로컬 메모리 자원 할당 여부를 결정한다. 본 발명에 의하면, 트림 명령을 받지 않은 LBA 영역과 트림 명령을 모두 받은 LBA 영역에 대해서는 로컬 메모리(2222)를 할당하지 않기 때문에 메모리를 효율적으로 사용할 수 있다.
도 8은 트림 명령을 이용하여 무효화 동작을 수행하는 사용자 장치의 또 다른 예를 보여주는 블록도이다. 도 8을 참조하면, 사용자 장치(3000)는 호스트(3100)와 저장 장치(3200)를 포함한다.
호스트(3100)는 프로세서(3110)와 메인 메모리(3120)를 포함한다. 메인 메모리(3120)는 운영 체제(OS; Operating System, 3121), 애플리케이션(application, 3122), 파일 시스템(File System, 3123)), 메모리 관리자(memory manager, 3124), 그리고 입출력 드라이버(I/O Drivers, 3125) 등이 포함될 수 있다.
저장 장치(3200)는 플래시 메모리(3210) 및 컨트롤러(3220)를 포함할 수 있다. 플래시 메모리(3210)는 데이터 영역(3211)과 메타 영역(3212)으로 구분될 수 있다. 데이터 영역(3211)에는 사용자 데이터가 저장되고, 메타 영역(3212)에는 트림 정보와 같은 메타 데이터가 저장될 수 있다.
컨트롤러(3220)는 중앙처리장치(3221), 디램(DRAM, 3222), 그리고 에스램(SRAM, 3225)을 포함할 수 있다. 여기에서, 에스램(3225)은 디램(3222)에 비해 고속으로 동작한다. 도 8에 도시된 사용자 장치(3000)는 고속 메모리(예, SRAM)와 저속 메모리(예, DRAM)을 구별하여 사용함으로, 좀 더 효율적으로 트림 동작을 수행할 수 있다. 디램(3222)에는 트림 섹터 비트맵(3223)과 LBA 영역 테이블(3224)이 구동되고, 에스램(3225)에는 트림 영역 비트맵(3226)이 구동될 수 있다.
트림 섹터 비트맵(3223), LBA 영역 테이블(3224), 그리고 트림 영역 비트맵(3226)은 플래시 변환 계층(도시되지 않음)에 의해 유지 또는 관리될 수 있다. 트림 섹터 비트맵(3223)에는 트림 명령에 따라 삭제될 영역에 대한 정보가 기록될 수 있다. 예로서, 저장 장치(3200)는 호스트(3100)로부터 제공받은 트림 정보를 섹터 단위의 비트맵으로 구성하고, 디램(3222) 상에서 유지 또는 관리할 수 있다. 트림 섹터 비트맵(3223)은 LBA 영역 단위로 관리될 수 있다.
LBA 영역 테이블(3224)은 LBA 영역에 대한 정보를 갖는다. 예를 들면, LBA 영역 테이블(3224)에는 트림 섹터 비트맵을 저장할 메모리 어드레스와 트림 섹터의 수가 저장될 수 있다. 모든 비트맵 데이터가 0인 LBA 영역의 경우에는, 메모리 어드레스에 'Null'이 표기되고 트림 섹터의 수에 '0'이 표기될 수 있다. 그리고 모든 비트맵 데이터가 1인 LBA 영역의 경우에는, 메모리 어드레스에 'Null'이 표기되고 트림 섹터의 수에 'MAX'가 표기될 수 있다.
에스램(3225)의 트림 영역 비트맵(3226)에는 디램(3222)의 LBA 영역 테이블(3224)에 대한 정보가 저장될 수 있다. 예를 들면, LBA 영역 테이블(3224)이 'Null'로 표기된 영역을 별도로 관리함으로, 좀 더 효율적으로 트림 관리 동작을 수행할 수 있다. 이는 도 9를 참조하여 상세하게 설명될 것이다.
도 9는 도 8에 도시된 사용자 장치에서 트림 정보를 LBA 영역 단위로 로깅하고 관리하는 방법을 설명하기 위한 다이어그램이다. 도 9는 도 8에 도시된 디램(3222)에서 구동되는 트림 섹터 비트맵(3223)과 LBA 영역 테이블(3224), 그리고 에스램(3225)에서 구동되는 트림 영역 비트맵(3226)을 예시적으로 보여준다.
도 9를 참조하면, 트림 섹터 비트맵(3223)은 디램(3222)에서 구동되며, 데이터 보존을 이해 플래시 메모리(3210)의 메타 영역(3212)에 저장될 수 있다. 제 M-1 LBA 영역과 제 M+1 LBA 영역은 모든 LBA 비트 데이터가 '0' 또는 '1'로 기록된 것으로, 트림 섹터 비트맵을 위해 디램(3222)이 별도로 할당되지 않는다. 제 M LBA 영역의 일부(1로 표기됨)는 트림 명령을 받았고, 나머지(0으로 표기됨)는 받지 않았다.
LBA 영역 테이블(3224)은 트림 섹터 비트맵을 저장할 메모리 어드레스와 트림 섹터의 수(예를 들면, '1'로 표기된 비트 수)를 나타낼 수 있다. 모든 비트맵 데이터가 0인 제 M-1 LBA 영역의 경우에는, 메모리 어드레스에 'Null'이 표기되고 트림 섹터의 수에 '0'이 표기되어 있다. 그리고 모든 비트맵 데이터가 1인 제 M+1 LBA 영역의 경우에는, 메모리 어드레스에 'Null'이 표기되고 트림 섹터의 수에 'MAX'가 표기되어 있다.
트림 영역 비트맵(3226)은 비트맵 데이터가 모두 0인 경우와, 적어도 하나의 1을 포함하는 경우에 대한 정보를 갖는다. 도 9에서, 비트맵 데이터가 모두 0인 제 M-1 영역에 대해서는 0으로 기록하고, 적어도 하나의 1을 포함하는 제 M 영역 또는 제 M+1 영역에 대해서는 1로 기록한다. 트림 영역 비트맵(3226)에 0이 기록된 경우에는 디램(3222)의 트림 섹터 비트맵(3223)이나 LBA 영역 테이블(3224)을 읽어볼 필요가 없다. 이 경우에, 저장 장치(3200)는 플래시 변환 계층(도시되지 않음)의 맵핑 테이블을 읽고, 호스트(3100)로 응답 신호를 보낼 수 있다.
다시 도 8을 참조하면, 저장 장치(3200)는 호스트(3100)의 파일 시스템(3123)이 제공하는 트림 정보를 이용하여 플래시 메모리(3210)의 불필요한 동작을 줄일 수 있다. 하나의 트림 명령은 상당히 많은 삭제될 영역(예를 들면, 수십 메가 바이트)의 정보를 포함할 수 있다. 종래의 저장 장치는 그 영역을 모두 지우기까지는 상당히 많은 시간을 소요할 수 있고, 이로 인해 트림 명령에 대한 응답시간이 길어질 수 있다. 본 발명은 트림 명령을 입력받을 때 트림 정보를 로깅하고, 유휴 시간에 로깅된 영역을 무효화함으로, 트림 명령에 대한 성능 저하나 응답 시간 지연 현상을 줄일 수 있다.
한편, 종래의 저장 장치는 모든 트림 정보를 관리할 수 있을 정도로 로컬 메모리(DRAM 또는 SRAM)의 용량이 충분한 경우에 효율적이다. 그러나 본 발명에 따른 사용자 장치(3000)는 LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 디램(3222)을 효율적으로 사용할 수 있다. 본 발명은 저장 장치(3200) 내의 메모리 자원(DRAM 또는 SRAM)이 적어서 트림 정보를 모두 로깅할 수 없는 환경에도 적용할 수 있다.
또한, 사용자 장치(3000)는 고속의 에스램(3225)을 사용하여 트림 영역 비트맵(3226)을 구동함으로, 디램(3222)을 읽는 횟수를 줄일 수 있다. 본 발명은 트림 명령에 대한 응답을 빠르게 할 뿐 아니라, 뒤따르는 쓰기나 읽기 동작 시에 트림 정보를 빠르게 참조할 수 있다.
도 10은 본 발명의 실시 예에 따른 사용자 장치를 솔리드 스테이트 드라이브(SSD) 시스템에 적용한 예를 보여주는 블록도이다. 도 10을 참조하면, SSD 시스템(4000)은 호스트(4100)와 SSD(4200)를 포함한다. 호스트(4100)는 호스트 인터페이스(4111), 호스트 컨트롤러(4120), 그리고 디램(4130)을 포함한다.
호스트(4100)는 SSD(4200)에 데이터를 쓰거나, SSD(4200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(4120)는 커맨드, 어드레스, 제어 신호 등의 신호(SGL)를 호스트 인터페이스(4111)를 통해 SSD(4200)로 전송한다. 디램(4130)은 호스트(4100)의 메인 메모리이다.
SSD(4200)는 호스트 인터페이스(4211)를 통해 호스트(4100)와 신호(SGL)를 주고 받으며, 전원 커넥터(power connector, 4221)를 통해 전원을 입력받는다. SSD(4200)는 복수의 불휘발성 메모리(4201~420n), SSD 컨트롤러(4210), 그리고 보조 전원 장치(4220)를 포함할 수 있다. 여기에서, 복수의 불휘발성 메모리(4201~420n)는 낸드 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등으로 구현될 수 있다.
복수의 불휘발성 메모리(4201~420n)는 SSD(4200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리(4201~420n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(4210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 불휘발성 메모리가 연결될 수 있다. 하나의 채널에 연결되는 불휘발성 메모리는 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(4210)는 호스트 인터페이스(4211)를 통해 호스트(4100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(4210)는 호스트(4100)의 커맨드에 따라 해당 불휘발성 메모리에 데이터를 쓰거나 해당 불휘발성 메모리로부터 데이터를 읽어낸다. SSD 컨트롤러(4210)의 내부 구성은 도 11을 참조하여 상세하게 설명된다.
보조 전원 장치(4220)는 전원 커넥터(4221)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4220)는 호스트(4100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(4220)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4220)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.
도 11은 도 10에 도시된 SSD 컨트롤러(4210)의 구성을 예시적으로 보여주는 블록도이다. 도 11을 참조하면, SSD 컨트롤러(4210)는 NVM 인터페이스(4211), 호스트 인터페이스(4212), 트림 제어 로직(4213), 제어 유닛(4214), 그리고 에스램(4215)을 포함한다.
NVM 인터페이스(4211)는 호스트(4100)의 메인 메모리로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(4211)는 불휘발성 메모리(4201~420n)로부터 읽은 데이터를 호스트 인터페이스(4212)를 경유하여 호스트(4100)로 전달한다.
호스트 인터페이스(4212)는 호스트(4100)의 프로토콜에 대응하여 SSD(4200)와의 인터페이싱을 제공한다. 호스트 인터페이스(4212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(4100)와 통신할 수 있다. 또한, 호스트 인터페이스(4212)는 호스트(4100)가 SSD(4200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
트림 제어 로직(4213)은 앞에서 설명한 바와 같이 불휘발성 메모리(4201~420n)의 트림 동작(로깅 또는 무효화 동작)을 관리할 수 있다. 트림 제어 로직(4213)에는 트림 섹터 비트맵, LBA 영역 테이블, 또는 트림 영역 비트맵을 구동하기 위한 하드웨어 또는 소프트웨어가 모두 포함될 수 있다.
제어 유닛(4214)은 호스트(4100)로부터 입력된 신호(SGL)를 분석하고 처리한다. 제어 유닛(4214)은 호스트 인터페이스(4212)나 NVM 인터페이스(4211)를 통해 호스트(4100)나 불휘발성 메모리(4201~420n)를 제어한다. 제어 유닛(4214)은 SSD(4200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리(4201~420n)의 동작을 제어한다.
에스램(4215)은 불휘발성 메모리(4201~420n)의 효율적 관리를 위해 사용되는 소프트웨어(S/W)를 구동하는 데 사용될 수 있다. 또한, 에스램(4215)은 호스트(4100)의 메인 메모리로부터 입력받은 메타 데이터를 저장하거나, 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 에스램(4215)에 저장된 메타 데이터나 캐시 데이터는 보조 전원 장치(4220)를 이용하여 불휘발성 메모리(4201~420n)에 저장될 수 있다.
다시 도 10을 참조하면, 본 발명의 실시 예에 따른 SSD 시스템(4000)은 앞에서 설명한 바와 같이, 트림 제어 로직(4213)을 이용하여, LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 메모리 자원을 효율적으로 사용할 수 있다. 본 발명은 메모리 자원(DRAM 또는 SRAM)이 적어서 트림 정보를 모두 로깅할 수 없는 환경에도 적용할 수 있다.
도 12는 본 발명의 실시 예에 따른 사용자 장치를 전자 장치로 구현한 예를 보여주는 블록도이다. 여기에서, 전자 장치(5000)는 퍼스널 컴퓨터(PC)로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 12를 참조하면, 전자 장치(5000)는 사용자 장치(5100), 전원 장치(5200), 보조 전원 장치(5250), 중앙처리장치(5300), 디램(5400), 그리고 사용자 인터페이스(5500)를 포함한다. 사용자 장치(5100)은 플래시 메모리(5110) 및 메모리 컨트롤러(5120)를 포함한다. 사용자 장치(5100)는 전자 장치(5000)에 내장될 수 있다. 메모리 컨트롤러(5120)에는 트림 제어 로직(도시되지 않음)이 포함될 수 있다.
앞에서 설명한 바와 같이, 본 발명에 따른 전자 장치(5000)는 트림 제어 로직을 이용하여, LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 메모리 자원을 효율적으로 사용할 수 있다. 본 발명은 메모리 자원(DRAM 또는 SRAM)이 적어서 트림 정보를 모두 로깅할 수 없는 환경에도 적용할 수 있다.
본 발명의 실시 예에 따른 사용자 장치는 2차원 구조를 갖는 플래시 메모리 뿐만 아니라, 3차원 구조를 갖는 플래시 메모리에도 적용될 수 있다.
도 13은 본 발명에 사용되는 플래시 메모리를 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 플래시 메모리(6000)는 3차원 셀 어레이(6110), 데이터 입출력 회로(6120), 어드레스 디코더(6130), 그리고 제어 로직(6140)을 포함한다.
3차원 셀 어레이(6110)는 복수의 메모리 블록(BLK1~BLKz)을 포함한다. 각각의 메모리 블록은 3차원 구조 (또는 수직 구조)를 가질 수 있다. 2차원 구조 (또는 수평 구조)를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수평 방향으로 형성된다. 그러나 3차원 구조를 갖는 메모리 블록에서는, 메모리 셀들이 기판과 수직 방향으로 형성된다. 각각의 메모리 블록은 플래시 메모리(6100)의 소거 단위를 이룬다.
데이터 입출력 회로(6120)는 복수의 비트 라인(BLs)을 통해 3차원 셀 어레이(6110)와 연결된다. 데이터 입출력 회로(6120)는 외부로부터 데이터(DATA)를 입력받거나, 3차원 셀 어레이(6110)로부터 읽은 데이터(DATA)를 외부로 출력한다. 어드레스 디코더(6130)는 복수의 워드 라인(WLs) 및 선택 라인(GSL, SSL)을 통해 3차원 셀 어레이(6110)와 연결된다. 어드레스 디코더(6130)는 어드레스(ADDR)를 입력받고 워드 라인을 선택한다.
제어 로직(6140)은 플래시 메모리(6000)의 프로그램, 읽기, 소거 등의 동작을 제어한다. 예를 들면, 제어 로직(6140)은 프로그램 동작 시에, 어드레스 디코더(6130)를 제어함으로 선택 워드 라인으로 프로그램 전압이 제공되도록 하고, 데이터 입출력 회로(6120)를 제어함으로 데이터가 프로그램되도록 할 수 있다.
도 14는 도 13에 도시된 메모리 블록(BLK1)의 3차원 구조를 예시적으로 보여주는 사시도이다. 도 14를 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 14를 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 14에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 15는 도 14에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 15를 참조하면, 비트 라인(BL1~BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11~NS33)이 연결되어 있다. 각각의 낸드 스트링(예를 들면, NS11)은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀(MC1~MC8), 그리고 접지 선택 트랜지스터(GST)를 포함한다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(String Selection Line; SSL1~SSL3)에 연결되어 있다. 복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결되어 있다. 그리고 접지 선택 트랜지스터(GST)는 접지 선택 라인(Ground Selection Line; GSL1~GSL3)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결되어 있다.
계속해서 도 15를 참조하면, 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 접지 선택 라인(GSL1~GSL3) 및 스트링 선택 라인(SSL1~SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀(이하, 페이지라 함)을 프로그램하는 경우에는, 제 1 워드 라인(WL1)과 제 1 선택 라인(SSL1, GSL1)이 선택된다.
도 16은 본 발명의 실시 예에 따른 사용자 장치를 메모리 카드 시스템에 적용한 예를 보여주는 블록도이다. 메모리 카드 시스템(7000)은 호스트(7100)와 메모리 카드(7200)를 포함한다. 호스트(7100)는 호스트 컨트롤러(7110), 호스트 접속 유닛(7120), 그리고 디램(7130)을 포함한다.
호스트(7100)는 메모리 카드(7200)에 데이터를 쓰거나, 메모리 카드(7200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(7110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(7100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(7120)을 통해 메모리 카드(7200)로 전송한다. 디램(7130)은 호스트(7100)의 메인 메모리이다.
메모리 카드(7200)는 카드 접속 유닛(7210), 카드 컨트롤러(7220), 그리고 플래시 메모리(7230)를 포함한다. 카드 컨트롤러(7220)는 카드 접속 유닛(7210)을 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(3220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 플래시 메모리(7230)에 저장한다. 플래시 메모리(7230)는 호스트(7100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(7100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 16에 도시된 메모리 카드 시스템(7000)은 호스트 컨트롤러(7110), 카드 컨트롤러(7220), 또는 플래시 메모리(7230) 내에 트림 제어 로직(도시되지 않음)을 포함할 수 있다. 앞에서 설명한 바와 같이, 본 발명은 트림 제어 로직을 이용하여,
LBA 영역을 트림 정보를 받지 않은 LBA 영역과, 트림 정보를 모두 받은 LBA 영역을 구분함으로, 메모리 자원을 효율적으로 사용할 수 있다. 본 발명은 메모리 자원(DRAM 또는 SRAM)이 적어서 트림 정보를 모두 로깅할 수 없는 환경에도 적용할 수 있다.
비록 도면에는 도시되지 않았지만, 본 발명에 따른 사용자 장치에는 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
본 발명에 따른 저장 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리 및/또는 컨트롤러는 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) 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 예를 들어, 본 발명의 범위는 플래시 메모리 장치에 한정되지 않는다. 본 발명은 변환 계층에 의한 어드레스 변환이 사용되는 모든 저장 장치에 적용될 수 있다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000, 3000: 사용자 장치
1100, 2100, 3100: 호스트
1110, 2110, 3110: 프로세서
1120, 2120, 3120: 메인 메모리
1200, 2200, 3200: 저장 장치
1210, 2210, 3210: 플래시 메모리
1220, 2220, 3220: 컨트롤러

Claims (10)

  1. 데이터를 저장하기 위한 플래시 메모리; 및
    상기 플래시 메모리를 제어하며, 호스트의 트림 명령에 응답하여 무효화 동작을 수행하는 컨트롤러를 포함하되,
    상기 컨트롤러는 무효화 동작 시에 상기 호스트로부터 받은 트림 정보를 트림 섹터 비트맵으로 구성하고, 상기 트림 섹터 비트맵을 영역별로 구분하여 관리하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 컨트롤러는 상기 트림 섹터 비트맵을 일정 크기의 LBA 영역 단위로 구분하여 관리하기 위한 LBA 영역 테이블을 포함하는 저장 장치.
  3. 제 2 항에 있어서,
    상기 트림 섹터 비트맵 및 상기 LBA 영역 테이블은 로컬 메모리 상에서 구동하는 저장 장치.
  4. 제 3 항에 있어서,
    상기 LBA 영역 테이블은 상기 트림 정보를 받지 않은 영역이나 상기 트림 정보를 모두 받은 영역에 관한 정보가 저장되는 저장 장치.
  5. 제 4 항에 있어서,
    상기 LBA 영역 테이블은 상기 트림 정보가 저장되는 상기 로컬 메모리의 어드레스와 상기 트림 섹터 비트맵에서 상기 트림 정보를 저장하는 데이터 비트 수가 저장되는 저장 장치.
  6. 제 4 항에 있어서,
    상기 컨트롤러는 무효화 동작 시에 상기 LBA 영역 테이블을 참조하여 상기 트림 섹터 비트맵을 위해 상기 로컬 메모리를 별도로 할당하지 않는 저장 장치.
  7. 제 6 항에 있어서,
    상기 컨트롤러는 상기 트림 정보를 받지 않은 영역이나 상기 트림 정보를 모두 받은 영역인 경우에, 상기 트림 섹터 비트맵을 위해 상기 로컬 메모리를 할당하지 않는 저장 장치.
  8. 트림 명령을 제공하는 호스트;
    상기 트림 명령에 따라 무효화 동작을 수행하는 저장 장치를 포함하되,
    상기 저장 장치는 상기 호스트로부터 받은 트림 정보를 트림 섹터 비트맵으로 구성하고, 상기 트림 섹터 비트맵을 영역별로 구분하여 관리하는 사용자 장치.
  9. 제 8 항에 있어서,
    상기 저장 장치는
    데이터를 저장하기 위한 플래시 메모리; 및
    상기 플래시 메모리를 제어하며, 상기 트림 섹터 비트맵을 영역별로 구분하여 로깅 동작을 수행하는 컨트롤러를 포함하는 사용자 장치.
  10. 제 9 항에 있어서,
    상기 컨트롤러는 상기 트림 섹터 비트맵을 일정 크기의 LBA 영역 단위로 구분하여 관리하기 위한 LBA 영역 테이블을 포함하는 사용자 장치.
KR1020110123142A 2011-11-23 2011-11-23 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치 KR101824949B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110123142A KR101824949B1 (ko) 2011-11-23 2011-11-23 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
US13/682,964 US9032138B2 (en) 2011-11-23 2012-11-21 Storage device based on a flash memory and user device including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110123142A KR101824949B1 (ko) 2011-11-23 2011-11-23 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치

Publications (2)

Publication Number Publication Date
KR20130057306A true KR20130057306A (ko) 2013-05-31
KR101824949B1 KR101824949B1 (ko) 2018-02-05

Family

ID=48428068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110123142A KR101824949B1 (ko) 2011-11-23 2011-11-23 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치

Country Status (2)

Country Link
US (1) US9032138B2 (ko)
KR (1) KR101824949B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101465460B1 (ko) * 2013-11-25 2014-11-26 성균관대학교산학협력단 트림 방법 및 데이터 관리 장치
US10216439B2 (en) * 2016-02-02 2019-02-26 International Business Machines Corporation Protecting unallocated data within a storage volume

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558124B2 (en) * 2013-11-08 2017-01-31 Seagate Technology Llc Data storage system with passive partitioning in a secondary memory
US9740481B2 (en) * 2013-12-03 2017-08-22 Samsung Electronics Co., Ltd. Electronic device and method for memory allocation in electronic device
KR102211126B1 (ko) 2014-04-17 2021-02-02 삼성전자주식회사 동작 성능을 조절하는 메모리 시스템 및 메모리 시스템의 동작방법
KR102254392B1 (ko) * 2014-05-12 2021-05-25 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US9965383B2 (en) * 2014-08-05 2018-05-08 Netapp, Inc. File system indirection technique for directly managing solid state devices
US9436397B2 (en) 2014-09-23 2016-09-06 Sandisk Technologies Llc. Validating the status of memory operations
US9753649B2 (en) * 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9558125B2 (en) 2014-10-27 2017-01-31 Sandisk Technologies Llc Processing of un-map commands to enhance performance and endurance of a storage device
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
CN104391661A (zh) * 2014-12-12 2015-03-04 西安三星电子研究有限公司 向固态硬盘写入数据的方法及设备
KR102282952B1 (ko) 2014-12-15 2021-07-30 삼성전자주식회사 스토리지 장치의 동작 방법
US10296259B2 (en) * 2014-12-22 2019-05-21 Hand Held Products, Inc. Delayed trim of managed NAND flash memory in computing devices
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US10102146B2 (en) 2015-03-26 2018-10-16 SK Hynix Inc. Memory system and operating method for improving rebuild efficiency
US9645765B2 (en) 2015-04-09 2017-05-09 Sandisk Technologies Llc Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address
US9753653B2 (en) 2015-04-14 2017-09-05 Sandisk Technologies Llc High-priority NAND operations management
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
US10108344B1 (en) * 2015-05-06 2018-10-23 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with an SSD filtering or SSD pre-fetch algorithm
US10216418B2 (en) 2015-06-01 2019-02-26 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US11042328B2 (en) 2015-06-01 2021-06-22 Samsung Electronics Co., Ltd. Storage apparatus and method for autonomous space compaction
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US9880770B2 (en) 2015-09-02 2018-01-30 SK Hynix Inc. Supporting invalidation commands for non-volatile memory
KR102501751B1 (ko) 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
US10268385B2 (en) 2016-05-03 2019-04-23 SK Hynix Inc. Grouped trim bitmap
US10061708B2 (en) 2016-05-12 2018-08-28 SK Hynix Inc. Mapped region table
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
CN107797938B (zh) * 2016-09-05 2022-07-22 北京忆恒创源科技股份有限公司 加快去分配命令处理的方法与存储设备
CN107797934B (zh) * 2016-09-05 2022-07-22 北京忆恒创源科技股份有限公司 处理去分配命令的方法与存储设备
US9927999B1 (en) 2016-09-09 2018-03-27 Western Digital Technologies, Inc. Trim management in solid state drives
TWI634424B (zh) * 2017-05-08 2018-09-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
CN109086219B (zh) * 2017-06-14 2022-08-05 北京忆恒创源科技股份有限公司 去分配命令处理方法及其存储设备
KR102430791B1 (ko) * 2017-07-19 2022-08-10 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
TWI638263B (zh) * 2017-07-26 2018-10-11 大陸商深圳大心電子科技有限公司 資料備份方法、資料恢復方法以及儲存控制器
KR20190044968A (ko) * 2017-10-23 2019-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11036631B2 (en) * 2017-11-03 2021-06-15 Micron Technology, Inc. Configurable trim settings on a memory device
US11397672B2 (en) * 2017-11-29 2022-07-26 Beijing Memblaze Technology Co., Ltd Deallocating command processing method and storage device having multiple CPUs thereof
JP7080327B2 (ja) 2017-12-21 2022-06-03 マイクロン テクノロジー,インク. Nand論理対物理テーブル領域追跡
KR20200071282A (ko) * 2018-12-11 2020-06-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200106739A (ko) 2019-03-05 2020-09-15 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US11748023B2 (en) * 2019-11-29 2023-09-05 Silicon Motion, Inc. Data storage device and non-volatile memory control method
US11416163B2 (en) * 2020-04-09 2022-08-16 SK Hynix Inc. Systems and methods for dynamic logical block address distribution between multicores
KR20220046311A (ko) 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11625323B2 (en) * 2020-12-07 2023-04-11 Micron Technology, Inc. Generating and using session tables for session-based memory management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155461A (ja) 2004-12-01 2006-06-15 Sony Corp 情報処理装置、情報処理方法、並びにプログラム
KR101596833B1 (ko) 2009-05-08 2016-02-24 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
JP2011090496A (ja) 2009-10-22 2011-05-06 Hitachi Ltd 半導体記憶装置および制御方法
KR20110046232A (ko) * 2009-10-27 2011-05-04 삼성전자주식회사 데이터 무효화 동작을 수행하는 저장 장치 및 그것의 데이터 무효화 방법
US8386537B2 (en) 2009-12-15 2013-02-26 Intel Corporation Method for trimming data on non-volatile flash media
JP2011128998A (ja) 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101465460B1 (ko) * 2013-11-25 2014-11-26 성균관대학교산학협력단 트림 방법 및 데이터 관리 장치
US10216439B2 (en) * 2016-02-02 2019-02-26 International Business Machines Corporation Protecting unallocated data within a storage volume

Also Published As

Publication number Publication date
US9032138B2 (en) 2015-05-12
US20130132650A1 (en) 2013-05-23
KR101824949B1 (ko) 2018-02-05

Similar Documents

Publication Publication Date Title
KR101824949B1 (ko) 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
KR102579938B1 (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
US11188259B2 (en) Storage device and method of operating the storage device
KR101888009B1 (ko) 저장 장치
JP6134205B2 (ja) 記憶装置のデータ書き込み方法
US10229049B2 (en) Storage system that performs host-initiated garbage collection
KR101717081B1 (ko) 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
KR101869059B1 (ko) 저장 장치 및 그것의 메모리 컨트롤러
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
KR20130081534A (ko) 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
KR20150138528A (ko) 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
KR20130032155A (ko) 데이터 저장 장치 및 그것의 데이터 관리 방법
KR102387935B1 (ko) 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치
US20110040930A1 (en) Method for Accessing Flash Memory Device and Memory System Including the Same
KR20180019419A (ko) 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
KR102116258B1 (ko) 메모리 시스템 및 그것을 포함하는 유저 장치
US20120297117A1 (en) Data storage device and data management method thereof
US20110271037A1 (en) Storage device performing data invalidation operation and data invalidation method thereof
KR20200086143A (ko) 저장 장치 및 그것의 데이터 처리 방법
KR102435863B1 (ko) 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
US11556271B2 (en) Storage device storing data on key-value basis and operating method thereof
KR101465460B1 (ko) 트림 방법 및 데이터 관리 장치
US20230152968A1 (en) Storage devices including non-volatile memory devices

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant