KR101788332B1 - 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 - Google Patents
비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 Download PDFInfo
- Publication number
- KR101788332B1 KR101788332B1 KR1020120067822A KR20120067822A KR101788332B1 KR 101788332 B1 KR101788332 B1 KR 101788332B1 KR 1020120067822 A KR1020120067822 A KR 1020120067822A KR 20120067822 A KR20120067822 A KR 20120067822A KR 101788332 B1 KR101788332 B1 KR 101788332B1
- Authority
- KR
- South Korea
- Prior art keywords
- nvm
- file system
- logical addresses
- manager
- lba
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
파일 시스템의 마운트 시간에서 미사용 논리 어드레스들을 맵핑 해제하기 위한 시스템 및 방법이 제공된다. 비휘발성 메모리(NVM)를 포함하는 전자 장치는 NVM의 마운트 시간에서 할당되지 않은 NVM에 관련된 논리 어드레스들 전부를 식별하는 파일 시스템을 구현할 수 있다. 그 다음, 파일 시스템은 이 정보를 하나 이상의 맵팽 해제 요청 등에서와 같이, NVM 관리자에게 전달할 수 있다. 이것은 NVM 관리자가 파일 시스템에 의해 더 이상 요구되지 않는 논리 어드레스에 관련된 데이터를 유지하지 않을 것을 보장할 수 있다.
Description
NAND 플래시 메모리는 물론, 다른 유형의 비휘발성 메모리들(non-volatile memory, NVM)은 전자 장치 내에서 대용량 저장을 위해 흔하게 사용된다. 예를 들어, 휴대용 미디어 플레이어와 같은 가전 제품들은 종종 음악, 비디오 및 기타 미디어 프로그램을 저장하기 위해 NAND 플래시 메모리를 포함한다.
전자 장치는 NVM과 같은 그 장치의 메모리 컴포넌트들의 파일 및 폴더 구조를 관리하기 위해 파일 시스템을 구현할 수 있다. 파일 시스템은 NVM 내의 각각의 파일에 논리 어드레스들을 할당할 수 있다. 파일을 저장하거나 검색하기 위해, 파일 시스템은 파일의 논리 어드레스와 함께 판독 또는 기입 요청을 발행할 수 있다.
NVM 내에 저장된 파일이 더 이상 필요하지 않게 되고 파일 시스템 네임스페이스로부터 제거될 때, 파일 시스템은 관련된 논리 어드레스들을 할당 해제하고, NVM 시스템에 맵핑 해제(unmap) 요청을 송신할 수 있다. 맵핑 해제 요청이 NVM 시스템에 의해 적절하게 처리되지 않으면, NVM 시스템은 마치 그 논리 어드레스들이 여전히 사용되고 있는 것처럼 동작하기를 계속할 것이다. 그러므로, NVM 시스템은 파일 내에 저장되었던 데이터가 더 이상 필요하지 않고 파일 시스템에 의해 절대로 요청되지 않을 것임에도 불구하고, 그 데이터를 유지할 것이다. 구체적으로, NVM 시스템은 가비지 컬렉션(garbage collection) 및 웨어 레벨링(wear leveling) 동작 동안 데이터를 보유할 것이고, 이는 시스템의 동작 효율을 감소시킨다. 그것은 특정 논리 어드레스가 다른 파일의 내용에 의해 덮어쓰기될 때에만 재활용될 것이다.
따라서, 파일 시스템의 마운트 시간에서 미사용 논리 어드레스를 맵핑 해제하기 위한 시스템 및 방법이 제공된다. 이러한 방식으로, 파일 시스템에 의한 이전의 맵핑 해제 요청이 (예를 들어, 전력 상실, 사용자에 의한 갑작스러운 강제 종료 또는 커널 패닉으로 인한) 불완전 종료(unclean shutdown)로 인해 NVM 시스템에 의해 완전하게 처리되지 않은 경우, 이들 불일치가 정정될 수 있고, 시스템의 동작 효율이 최적화될 수 있다.
비휘발성 메모리를 포함하는 전자 장치는 운영 체제의 파일 시스템 및 NVM 관리자(예를 들어, NVM 드라이버)를 통해 비휘발성 메모리를 액세스 및 관리할 수 있다. 부팅 시와 같은 전자 장치의 동작 동안의 소정 시점에서, 운영 체제는 NVM 내에 저장된 파일들을 파일 시스템의 기존 파일 및 폴더 구조에 포함시키기 위해 마운트(mount)를 트리거할 수 있다. 이러한 시점은 파일 시스템 또는 NVM의 "마운트 시간(mount-time)"이라고 지칭될 수 있다.
마운트 시간에서, 파일 시스템은 NVM에 관련되어 있지만 현재 사용을 위해 할당되어 있지는 않은 논리 어드레스들(예를 들어, 논리 블록 어드레스(logical block address, LBA)들의 목록을 생성할 수 있다. 예를 들어, 파일 시스템은 어느 LBA들이 현재 할당되어 있는지를 나타내는 비트맵을 포함하는 LBA 할당 테이블을 유지할 수 있고, 파일 시스템은 미할당 논리 어드레스들의 목록을 생성하기 위해 비트맵 전체를 스캔할 수 있다. 일부 실시예들에서, 미할당 논리 어드레스들은 종종 "익스텐트들(extents)"로 그룹화되므로, 파일 시스템은 미할당 LBA 익스텐트들의 목록을 생성하기 위해 비트맵을 이용할 수 있으며, 여기에서 각각의 익스텐트는 그 익스텐트 내의 시작 LBA 및 LBA 개수에 의해 표현된다.
파일 시스템이 목록의 적어도 일부분의 생성을 완료하고 나면, 파일 시스템은 그 목록을 NVM 관리자에게 전달하기 시작할 수 있다. 마운트 시간에 NVM 관리자에게 이 정보를 제공함으로써, 드라이브의 사용 전에 파일 시스템과 NVM 관리자 사이의 임의의 LBA 할당 불일치가 NVM 관리자에 의해 정정될 수 있다. 더욱이, NVM 관리자가 자기 자신의 최신 LBA 할당 테이블을 반드시 유지할 필요 없이, LBA 동기화가 발생할 수 있다.
일부 실시예들에서, 미할당 논리 어드레스들의 목록을 NVM 관리자에게 전달하기 위해, 파일 시스템은 하나 이상의 맵핑 해제 요청을 발행할 수 있다. 목록이 포괄적이므로(즉, 할당되지 않은 모든 논리 어드레스를 포함하므로), NVM 관리자가 (예를 들어, 불완전 종료로 인해) 완료할 수 없었던 임의의 이전 맵핑 해제 요청이 효과적으로 재발행된다. 이것은 NVM 관리자에게 그 요청을 완료할 두번째의 기회를 제공한다. 다른 맵핑 해제 요청들은 NVM 관리자에 의해 이미 적절하게 할당 해제되었거나 시작할 할당이 이루어졌던 적이 없는 논리 어드레스들에 관련될 수 있고, 따라서 NVM 관리자는 이러한 요청들을 폐기하거나 무시할 수 있다.
상기한 것과 그 외의 본 발명의 양태들 및 이점들은 전체에 걸쳐서 유사한 참조 기호들이 유사한 부분들을 지칭하는 첨부 도면들과 함께 취해진 이하의 상세한 설명을 고찰해보면 분명해질 것이다.
도 1은 본 발명의 다양한 실시예들에 따라 구성된 비휘발성 메모리를 갖는 예시적인 전자 장치의 블록도이다.
도 2는 본 발명의 다양한 실시예들에 따라 구성된 비휘발성 메모리를 액세스 및 관리하기 위한 소프트웨어/펌웨어 모듈들의 흐름도이다.
도 3은 본 발명의 다양한 실시예들에 따른 예시적인 LBA 할당 테이블 및 대응하는 비트맵 표현의 그래픽 도면이다.
도 4는 본 발명의 다양한 실시예들에 따라 도 3의 비트맵에 기초하여 생성되고 파일 시스템에 의해 NVM 관리자에게 발행될 수 있는 예시적인 맵핑 해제 요청의 그래픽 도면이다.
도 5는 본 발명의 다양한 실시예들에 따라 파일 시스템과 NVM 관리자 사이의 LBA 할당 불일치를 정정하기 위한 예시적인 프로세스들의 흐름도이다.
도 6은 본 발명의 다양한 실시예들에 따라 파일 시스템으로부터 NVM 관리자에게 전달되기에 적합한 미할당 LBA 익스텐트들의 목록을 준비하기 위한 예시적인 프로세스의 흐름도이다.
도 1은 본 발명의 다양한 실시예들에 따라 구성된 비휘발성 메모리를 갖는 예시적인 전자 장치의 블록도이다.
도 2는 본 발명의 다양한 실시예들에 따라 구성된 비휘발성 메모리를 액세스 및 관리하기 위한 소프트웨어/펌웨어 모듈들의 흐름도이다.
도 3은 본 발명의 다양한 실시예들에 따른 예시적인 LBA 할당 테이블 및 대응하는 비트맵 표현의 그래픽 도면이다.
도 4는 본 발명의 다양한 실시예들에 따라 도 3의 비트맵에 기초하여 생성되고 파일 시스템에 의해 NVM 관리자에게 발행될 수 있는 예시적인 맵핑 해제 요청의 그래픽 도면이다.
도 5는 본 발명의 다양한 실시예들에 따라 파일 시스템과 NVM 관리자 사이의 LBA 할당 불일치를 정정하기 위한 예시적인 프로세스들의 흐름도이다.
도 6은 본 발명의 다양한 실시예들에 따라 파일 시스템으로부터 NVM 관리자에게 전달되기에 적합한 미할당 LBA 익스텐트들의 목록을 준비하기 위한 예시적인 프로세스의 흐름도이다.
도 1은 예시적인 전자 장치(100)의 블록도이다. 일부 실시예들에서, 전자 장치(100)는 휴대용 미디어 플레이어(예를 들어, 캘리포니아주 쿠퍼티노의 Apple Inc.에 의해 이용가능하게 된 iPod™), 셀룰러 전화기(예를 들어, Apple Inc.에 의해 이용가능하게 된 iPhone™), 포켓사이즈의 개인용 컴퓨터, PDA(personal digital assistance), 데스크탑 컴퓨터, 랩탑 컴퓨터 및 임의의 다른 적절한 유형의 전자 장치 또는 시스템일 수 있거나 그들을 포함할 수 있다.
전자 장치(100)는 SoC(system-on-a-chip)(110) 및 비휘발성 메모리(NVM)(120)를 포함할 수 있다. NVM(120)은 부동 게이트 또는 차지 트래핑(charge trapping) 기술에 기초하는 NAND 플래시 메모리, NOR 플래시 메모리, EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), FRAM(Ferroelectric RAM), MRAM(magnetoresistive RAM) 또는 그들의 임의의 조합을 포함할 수 있다.
NVM(120)은 소거가능한 최소 단위인 "블록"들로 조직될 수 있으며, 프로그래밍 또는 판독될 수 있는 최소 단위일 수 있는 "페이지"들로 더 조직될 수 있다. 일부 실시예들에서, NVM(120)은 복수의 집적 회로를 포함할 수 있으며, 각각의 집적 회로는 복수의 블록을 가질 수 있다. 대응하는 집적 회로들로부터의 블록들(예를 들어, 동일한 위치 또는 블록 번호를 갖는 블록들)은 "수퍼 블록(super block)"이라고 지칭되는 논리 단위들을 형성할 수 있다. NVM(120)의 각각의 메모리 위치(예를 들어, 페이지 또는 블록)는 물리 어드레스(예를 들어, 물리 페이지 어드레스 또는 물리 블록 어드레스)를 이용하여 어드레싱될 수 있다.
SoC(110)는 제어 회로망(112), 메모리(114) 및 NVM 버스 제어기(116)를 포함할 수 있다. 제어 회로망(112)은 일반적으로 SoC(110) 및 전자 장치(100)의 일반적인 동작들 및 기능들을 제어할 수 있다. 제어 회로망(112)은 하나 이상의 프로세서와 같은 임의의 적절한 컴포넌트, 회로망 또는 로직을 포함할 수 있다. 제어 회로망(112)은 메모리(114) 내에 로드되는 애플리케이션, 운영 체제 또는 NVM 드라이버와 같은 프로그램의 제어 하에서 동작할 수 있다.
메모리(114)는 RAM(random access memory)(예를 들어, SRAM(static RAM), DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double-data-rate) RAM), 캐시 메모리 또는 그들의 임의의 조합과 같은 임의의 적절한 유형의 휘발성 메모리를 포함할 수 있다. 일부 실시예들에서, 메모리(114)는 제어 회로망(112)의 일부로서 구현되는 임의의 프로세서들을 위한 메인 메모리로서의 역할을 할 수 있다.
일부 실시예들에서, 메모리(114)는 NVM(120)을 관리하는 데에 필요한 정보(때로는 "메타데이터"라고 지칭됨)의 적어도 일부를 저장하기 위해 이용될 수 있다. 예를 들어, NVM 관리자(예를 들어, NVM 드라이버)는 어느 논리 어드레스들이 파일 시스템에 의해 최근에 맵핑 해제되었는지를 추적하여, 소정의 후속 시간에서 NVM(120) 내의 관련 데이터가 가비지 컬렉션, 웨어 레벨링 또는 다른 NVM 관리 동작 동안 보유되지 않게 할 수 있다. 이 정보는 휘발성인 메모리(114) 내에 저장되고, NVM(120)의 영구적인 저장소 내에는 아직 반영되지 않았을 수 있으므로, 최근에 맵핑 해제된 논리 어드레스들을 나타내는 메타데이터는 (예를 들어, 전력 상실, 사용자에 의한 갑작스러운 강제 종료 또는 커널 패닉으로 인한) 불완전 종료 동안 상실될 수 있다. 이것은 동작 비효율성을 유발할 수 있고, 이는 아래에 설명되는 방안들을 이용하여 해결되고 정정된다.
NVM 버스 제어기(116)는 SoC(110)가 NVM(120) 및 그것의 메모리 위치들에 액세스하는 것을 가능하게 할 수 있고, 임의의 적절한 회로망 또는 컴포넌트들을 포함할 수 있다. 예를 들어, NVM 버스 제어기(116)는 NVM(120)의 버스 프로토콜(예를 들어, 데이터 레이트)과 호환가능할 수 있는 판독, 소거 및 프로그래밍 명령어들을 생성할 수 있다.
도 2는 NVM(120)(도 1) 내의 파일들로의 운영 체제 액세스를 제공하는 제어 회로망(112)(도 1)에 의해 실행될 수 있는 소프트웨어/펌웨어 모듈들(200)의 흐름도이다. 소프트웨어/펌웨어 모듈들(200)은 파일 시스템(210) 및 NVM 드라이버(220)를 포함할 수 있다. 파일 시스템(210)은 FAT(File Allocation Table) 파일 시스템 또는 HFS 파일 시스템과 같은 임의의 적절한 유형의 파일 시스템을 포함할 수 있으며, 운영 체제의 일부분일 수 있다. 파일 시스템(210)은 NVM(120)을 포함하는 전자 장치(100)(도 1)의 다양한 메모리 컴포넌트들을 위한 파일 및 폴더 구조를 관리할 수 있다. NVM(120)에 액세스하기 위해, 파일 시스템(210)은 적어도 3가지의 상이한 유형의 요청, 즉 판독, 기입 및 맵핑 해제 요청을 NVM 드라이버(220)에 발행할 수 있다. 각각의 유형의 요청을 이용하여, 파일 시스템(210)은 LBA와 같은 논리 어드레스를 제공할 수 있다.
파일 시스템(210)은 LBA 할당 테이블(212)을 유지할 수 있다. LBA 할당 테이블(212)은 NVM(120) 내에 저장된 파일들에 어느 논리 어드레스들이 할당되었는지를 나타낼 수 있다. NVM(120)에 파일을 기입하기 위한 기입 요청을 발행할 때, 파일 시스템(210)은 LBA 할당 테이블(212) 내에서 관련 논리 어드레스들을 할당된 것으로 표시할 수 있다. 파일을 삭제하기 위해 맵핑 해제 요청을 NVM 드라이버(220)에 발행할 때, 파일 시스템(210)은 LBA 할당 테이블(212) 내에서 관련 논리 어드레스들을 미할당으로서 표시할 수 있다. LBA 할당 테이블(212)이 논리 어드레스의 할당/할당 해제 시에 즉시 갱신되므로, LBA 할당 테이블(212)은 최신 상태로 유지된다.
일부 실시예들에서, 파일 시스템(210)은 LBA "익스텐트들"이라고 지칭되는 연속적인 그룹들 내에 LBA들을 할당하도록 구성될 수 있다. 예를 들어, 파일 시스템(210)은 LBA 익스텐트를 특정 파일에 할당할 수 있다. 도 3은 이러한 방식으로 LBA들을 할당하는 것이 LBA 할당 테이블(212)에 어떻게 반영될 수 있는지의 예를 제공한다. 구체적으로, 도 3은 소정 시점에서 LBA 할당 테이블(212)의 예시적인 상태의 그래픽 도면(300)을 제공한다. 그래픽 도면(300)은 NVM(120)에 관련된 LBA들의 전체 범위를 예시할 수 있다. LBA 할당 테이블(212)은 할당된 LBA 익스텐트들(302, 306 및 310)(그래픽 도면(300)의 음영 부분으로 표현됨)을 포함할 수 있다. 이것은 연속된 세그먼트들로 그룹화되는 미할당 LBA들을 남기고, 따라서 LBA 할당 테이블(212)은 (본 예에서) LBAa에서 시작하고 LBAa +N에서 종료하는 미할당 LBA 익스텐트(304), 및 LBAb에서 시작하고 LBAb +M에서 종료하는 미할당 LBA 익스텐트(308)를 더 포함할 수 있다. 미할당 익스텐트들은 "FREE"로서 표시된 그래픽 도면(300)의 비음영 섹션들에 의해 표현된다.
일부 실시예들에서, LBA 할당 테이블(212)은 비트맵을 포함하거나 비트맵의 형태를 취할 수 있다. 도 3의 예를 계속하면, LBA 할당 테이블(212)은 비트맵(320)을 포함하거나 그것의 형태를 취할 수 있다. 비트맵(320)에서, 각각의 LBA는 2진 숫자로 표현되는데, '1'은 관련된 LBA가 파일에 할당되어 있음을 나타내고, '0'은 관련된 LBA가 할당되어 있지 않음을 나타낸다. 따라서, 도 3에 도시되어 있는 바와 같이, 할당된 LBA 익스텐트(302)는 '1' 비트들의 시퀀스(322)에 의해 표현될 수 있으며, 익스텐트(302) 내의 LBA의 개수는 시퀀스(322) 내의 '1' 비트들의 개수에 반영된다. M+1개의 미할당 LBA를 포함하는 미할당 LBA 익스텐트(308)는 M+1개의 '0' 비트의 시퀀스(324)에 의해 표현될 수 있다.
다른 실시예들에서, LBA 할당 테이블(212)은 NVM에 관련된 LBA들의 상태를 표현하기 위해 비트맵이 아닌 포맷을 이용할 수 있다. 예를 들어, LBA 할당 테이블(212)은 익스텐트들의 트리 또는 링크된 목록 체인을 대신 이용할 수 있다. 그러나, 명확함을 위하여, 본 명세서에서는 다양한 실시예들이 비트맵을 이용하는 것으로서 설명된다. 그러한 설명들은 단지 예시를 위한 것이며, 본 발명을 한정하는 것으로서 해석되어서는 안 된다.
도 2로 되돌아가면, 파일 시스템(210)은 NVM 드라이버(220)와 인터페이스할 수 있다. NVM 드라이버(220)는 FTL(flash translation layer)과 같은 변환층(222)을 포함할 수 있다. 변환층(222)은 NVM(120)의 실제 메모리 위치(예를 들어, 페이지, 블록, 집적 회로 등)에 대응하는 물리 어드레스에 대한 논리 어드레스(예를 들어 LBA)의 맵핑을 유지할 수 있다. 변환층(222)은 판독, 기입 또는 맵핑 해제 요청에서 제공되는 논리 어드레스들을 그것에 관련된 물리 어드레스들로 변환하기 위해 이러한 맵핑을 이용할 수 있다. 각각의 NVM은 NVM의 크기 또는 벤더에 따라 상이한 레이아웃을 가질 수 있으므로, 이러한 변환 동작들은 메모리 및/또는 NVM 벤더 특유의 것일 수 있다. NVM 드라이버(220)는 논리-대-물리 어드레스 맵핑에 더하여 임의의 다른 적절한 기능들을 수행할 수 있다. 예를 들어, 변환층(222)은 가비지 컬렉션 및 웨어 레벨링과 같이 플래시 변환층들에 전형적일 수 있는 다른 기능들 중 임의의 것을 수행할 수 있다.
도 1 및 도 2는 지금까지 모든 NVM 관리가 SoC(110)(도 1) 상에서 수행되는 것으로서 도시되고 설명되었다. 그러한 NVM 관련 기능성은 이러한 방식으로 한정되지 않음을 이해해야 한다. 예를 들어, NVM 버스 제어기(116)(도 1) 및/또는 NVM 드라이버(220)(도 2)의 컴포넌트들 또는 기능성 중 임의의 것은 예를 들어 NVM(120)(도 1) 내에 포함된 별개의 메모리 제어기(예를 들어, 플래시 제어기)에 의해 구현되고 수행될 수 있다. 그러므로, NVM 관리는 컴포넌트들의 다른 조합들에 의해 수행될 수 있으므로, 비휘발성 메모리를 관리하도록 구성된 임의의 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합은 간단히 "NVM 관리자"라고 지칭될 것이다.
위에서 설명된 바와 같이, NVM 관리자(예를 들어, NVM 드라이버(220))는 파일 시스템(예를 들어, 파일 시스템(210))으로부터 논리 어드레스와 함께 맵핑 해제 요청을 수신할 수 있다. NVM 관리자는 파일 시스템이 자신의 LBA 할당 테이블 내에서 논리 어드레스를 할당 해제하였고, 그 논리 어드레스에 관련된 데이터를 더 이상 필요로 하지 않을 때 맵핑 해제 요청을 수신할 수 있다. 그러므로, 맵핑 해제 요청은 NVM 관리자에게, 가비지 컬렉션, 웨어 레벨링 또는 다른 NVM 관리 동작 동안 보유되어서는 안 되는 데이터가 NVM 내에 저장되어 있음을 알린다. 그러나, 맵핑 해제 요청을 수신한 것에 응답하여, NVM 관리자는 비휘발성 메모리 내에 어떠한 즉각적인 변경도 행하지 않고서 그 맵핑 해제 요청의 수신확인을 파일 시스템에게 보낼 수 있다. NVM 관리자는 대신에 휘발성 메모리(예를 들어, 메모리(114)) 내에서 맵핑 해제 요청을 추적할 수 있다. 예를 들어, NVM 관리자는 메모리(114) 내에 저장된 논리-대-물리 어드레스 맵핑 내의 대응하는 엔트리를 무효화할 수 있다. 맵핑 해제 요청이 휘발성 메모리 내에서만 반영되므로, 불완전 종료가 발생하여 NVM 관리자가 맵핑 해제 요청을 영구 메모리에 커밋할 기회를 갖지 않은 경우, 그 맵핑 해제 요청은 상실될 것이다. 이러한 상황들에서, 파일 시스템의 LBA 할당 테이블 내에 어느 LBA들이 할당되어 있는지와, NVM 관리자의 시점에서 어느 LBA들이 여전히 할당되어 있는지 사이에서 불일치가 존재할 수 있다. 그러한 불일치들은 NVM 관리자가 더 이상 필요하지 않은 데이터를 유지하기 위해 필요 이상의 가비지 컬렉션 동작을 수행하게 할 수 있다. 이러한 필요 이상의 동작들은 더 높은 기입 증폭(wAmp), 감소된 효율(즉, 더 낮은 성능과 더 높은 커맨드 대기시간), 및 더 많은 전력 인출과 같은 바람직하지 못한 시스템 효과들을 야기할 수 있다.
따라서, NVM의 마운트 시간에서, 파일 시스템(예를 들어, 파일 시스템(210))은 NVM 관리자(예를 들어, NVM 드라이버(220))에게 어느 논리 어드레스들이 할당되어 있지 않은지의 포괄적인 목록을 제공하도록 구성될 수 있다. 예를 들어, 일부 실시예들에서, 파일 시스템은 모든 미할당 LBA들에 대한 맵핑 해제 요청을 송신할 수 있다. 이러한 방식으로, 임의의 맵핑 해제 요청이 (예를 들어) 불완전 종료로 인해 이전에 상실되었던 경우, NVM 관리자는 맵핑 해제 요청을 효과적으로 다시 수신하고, 그 맵핑 해제 요청을 완수할 두번째의 기회를 갖는다. 마운트 시간에서 NVM 관리자에게 맵핑 해제된 LBA들에 대한 정보를 제공함으로써, 파일 시스템과 NVM 관리자 사이의 임의의 LBA 할당 불일치가 드라이브의 사용 전에 NVM 관리자에 의해 정정될 수 있다.
더욱이, 이러한 접근법을 이용하면, NVM 관리자가 반드시 자기 자신의 최신 LBA 할당 테이블을 비휘발성 메모리 내에 유지할 필요 없이, LBA 동기화가 발생할 수 있다. 대신에, 맵핑 해제 요청을 수신하면, NVM 관리자는 휘발성 메모리 내에서(예를 들어, 논리-대-물리 어드레스 변환 테이블 내에서) 관련 논리 어드레스들을 무효한 것으로서 표시하고, NVM 내에서(예를 들어, NVM의 인덱스 페이지들 내에 저장된 변환 테이블 내에서) 유사한 표시를 행하는 것을 지연시킬 수 있다. NVM 관리자는 또한 가비지 컬렉션 또는 웨어 레벨링 동작들과 같이, 맵핑 해제를 반영할 임의의 다른 변경들을 NVM에 행하는 것도 지연시킬 수 있다. NVM 관리자는 불완전 종료가 발생한 경우에 필요한 맵핑 해제 요청들을 다음 마운트에서 재수신하는 것에 의존할 수 있으므로, NVM 관리자는 맵핑 해제를 비휘발성 메모리에 즉각적으로 커밋하지 않고서도 파일 시스템과의 LBA 동기화를 유지할 수 있다.
파일 시스템은 임의의 적절한 포맷 또는 프로토콜을 이용하여 NVM 관리자에게 미할당 논리 어드레스들의 목록을 제공할 수 있다. 일부 실시예들에서, 파일 시스템은 하나 이상의 맵핑 해제 요청을 통해 목록을 보낼 수 있으며, 여기에서의 맵핑 해제 요청들은 전자 장치의 실행 시간(즉, 마운트 이후) 동안 발행되는 것들과 동일한 포맷을 갖는다. 요청들의 수는 전달될 필요가 있는 미할당 LBA 또는 LBA 익스텐트들의 수에 의존할 수 있다. 다른 실시예들에서, 파일 시스템은 특수한 커맨드(즉, 전형적인 실행 시간의 판독, 기입 또는 맵핑 해제 요청들과는 다른 것)를 이용하는 것과 같이 상이한 프로토콜을 이용하여 목록을 보낼 수 있다.
파일 시스템은 미할당 LBA들 또는 LBA 익스텐트들의 전체 목록을 NVM 관리자에게 한번에 보내려고 시도할 수 있다. 그러나, 전체 목록이 한번에 보내지는 것을 허용하는 구현은 최악의 시나리오의 목록(즉, 모든 다른 LBA가 미할당되어 다수의 단일 LBA 익스텐트가 존재하는 경우)을 저장할 수 있는 과도하게 큰 버퍼를 필요로 할 수 있다. 이와 같이 큰 버퍼는 심지어 메모리(예를 들어, 도 1의 메모리(114))의 크기를 초과할 수 있다. 그러므로, 이러한 구현은 특정한 상황 또는 실시예에서만 적합할 수 있다. 대안적으로, 파일 시스템은 반복적으로 부분 목록들을 생성하여 NVM 관리자에게 전달하여, 임의의 주어진 시간에서 기껏해야 미리 정해진 양의 메모리만이 이용되게 하도록 구성될 수 있다. 즉, 부분 목록들을 생성하고 전달하는 것은, 파일 시스템이 메모리의 적당히 적은 부분을 차지하는 작은 크기의 버퍼를 이용하는 것을 허용할 수 있다.
도 4는 마운트 시간에서 파일 시스템(예를 들어, 파일 시스템(210))이 미할당 논리 어드레스들의 목록을 NVM 관리자(예를 들어, NVM 드라이버(220))에게 제공할 수 있는 한 방식의 예를 제공한다. 구체적으로, 도 3에서 시작된 예를 계속 보면, 도 4는 그래픽 도면(300)에 도시된 LBA들의 상태들이 주어진 때, 파일 시스템이 NVM 관리자에게 발행할 수 있는 예시적인 맵핑 해제 요청(400)을 도시한다. 맵핑 해제 요청(400)은 NVM 관리자가 요청을 맵핑 해제 요청으로서 식별하는 것을 허용하는 헤더(402)를 포함할 수 있다.
그 다음, 맵핑 해제 요청(402)은 적어도 미할당 LBA 익스텐트들의 부분 목록을 제공할 수 있다. 맵핑 해제 요청(400)에서, 각각의 LBA 익스텐트는 (1) 익스텐트 내의 제1 LBA 및 (2) 익스텐트 내의 LBA의 개수(또는 익스텐트의 "길이")에 의해 목록 내에 표현된다. 예를 들어, 미할당 LBA 익스텐트(304)(도 3)는 시작 LBA(404) 및 길이(406)에 의해 기술될 수 있으며, 미할당 LBA 익스텐트(308)(도 3)는 시작 LBA(408) 및 길이(410)에 의해 기술될 수 있다.
맵핑 해제 요청(400)의 포맷은 예시적인 것에 지나지 않으며, 파일 시스템은 임의의 다른 적절한 접근법을 이용하여 미할당 LBA들 또는 LBA 익스텐트들을 전달할 수 있다. 예를 들어, 파일 시스템은 각각의 미할당 익스텐트를 시작 LBA 및 종료 LBA에 의해 표현할 수 있다. 다른 예로서, 파일 시스템은 미할당 LBA 익스텐트들을 전달하는 대신에, 각각의 개별 LBA를 나열할 수 있다.
이제 도 5 및 도 6을 참조하면, 본 발명의 다양한 실시예들에 따라 예시적인 프로세스들의 흐름도가 도시되어 있다.
먼저 도 5를 보면, 파일 시스템(예를 들어, 파일 시스템(210))과 NVM 관리자(예를 들어, NVM 드라이버(220)) 사이의 LBA 할당 불일치들을 정정하기 위한 예시적인 프로세스들(500 및 520)의 흐름도가 도시되어 있다. 프로세스(500)는 파일 시스템에 의해 수행될 수 있고, 프로세스(520)는 NVM 관리자에 의해 수행될 수 있다.
프로세스(500)는 NVM을 마운트하기 위해 운영 체제에 의해 트리거된 마운트 절차에 응답하여 단계(502)에서 시작할 수 있다. 단계(502)는 파일 시스템이 NVM 관리자를 통해 NVM으로의 액세스를 획득한 후에(즉, 이하에 논의되는 프로세스(520)의 단계(522) 후에) 발생할 수 있다. 일부 시나리오들에서, 운영 체제는 전자 장치의 부팅 동안 마운트 절차를 시작할 수 있다. 단계(504)에서, 파일 시스템은 LBA 할당 테이블에 액세스할 수 있고, 구체적으로는 NVM에 관련된 테이블 내의 엔트리들에 액세스할 수 있다. 일부 실시예들에서, 단계(504)는 비트맵에 액세스하는 것을 수반할 수 있다. 다음으로, 단계(506)에서, 파일 시스템은 미할당 LBA 익스텐트들의 목록과 같은 미할당 LBA들의 목록을 준비할 수 있다. 목록은 파일 시스템에 의해 현재 사용되고 있지 않은 NVM에 관련된 LBA들 전부를 포함한다는 점에서 포괄적일 수 있다. 단계(508)에서, 파일 시스템은 NVM 관리자에게 목록을 제공할 수 있다. 일부 실시예들에서, 목록은 하나 이상의 맵핑 해제 요청을 NVM 관리자에게 발행함으로써 제공될 수 있다.
이제 프로세스(520)를 보면, NVM 관리자는 NVM 드라이버의 로드 시, 또는 전자 장치의 부팅 시와 같은 임의의 적절한 시간에서, 프로세스(520)의 단계들의 실행을 시작할 수 있다. 단계(522)에서, NVM 관리자는 NVM의 각각의 페이지를 통하는 것과 같이, NVM의 메모리 위치들 전체를 스캔할 수 있다. 스캔 동안, NVM 관리자는 논리 어드레스들(예를 들어, LBA들)을 물리 어드레스들에 맵핑하는 변환 테이블들을 구성하는 단계(524)를 수행할 수 있다. 예를 들어, NVM의 유효한 프로그래밍된 페이지들은 각각 관련된 LBA를 저장할 수 있고, NVM 관리자는 저장된 LBA들을 이용하여 테이블을 채울 수 있다. 이러한 방식으로, NVM 관리자는 단계(526)에서 어느 LBA들이 이용 중인지를(즉, 할당되어 있는지를) 식별할 수 있다. 단계(522)가 완료되고, 할당된 LBA들이 식별되어(즉, 열거되어) 그들 각각의 물리 어드레스들에 맵핑되고 나면, NVM 관리자는 파일 시스템 요청들의 처리를 시작할 수 있다. 구체적으로, NVM 관리자는 LBA 할당 테이블에 대응하는 데이터를 판독하라는 파일 시스템 요청과 같은 판독, 기입 및 맵핑 해제 요청들을 처리할 수 있다 (즉, 위에서 논의된 프로세스(500)의 단계(504)에서).
단계(528)를 계속하면, NVM 관리자는 파일 시스템으로부터 미할당 LBA 익스텐트들 전부의 목록과 같은 미할당 LBA들의 목록을 수신할 수 있다. 이 정보는 예를 들어 파일 시스템의 마운트 시간에서 준비되고 발행된 하나 이상의 맵핑 해제 요청들을 통해 수신될 수 있다.
다음으로, 단계(530)에서, NVM 관리자는 단계(526)에서 NVM 관리자에 의해 할당된 것으로서 식별된 LBA들과, 파일 시스템이 실제로 할당되어 있지 않은 것으로 나타내는 LBA들 사이에 임의의 불일치가 존재하는지를 판정할 수 있다. 임의의 불일치가 존재하는 경우, 이것은 불완전 종료(예를 들어, 전력 상실, 사용자에 의한 갑작스러운 강제 종료 또는 커널 패닉) 동안 상실되었던 이전의 맵핑 해제 요청들로 인한 것일 수 있다. 단계(530)에서 결정된 불일치가 존재하지 않는 경우, 프로세스(520)는 어떠한 정정 조치도 취하지 않고서 단계(532)에서 종료할 수 있다. 예를 들어, 맵핑 해제 요청들에서 수신된 LBA들 중 어느 것도 논리-대-물리 어드레스 맵핑에 나타나지 않는 경우에는, NVM 관리자가 할 일이 없다. 따라서, NVM 관리자는 맵핑 해제 요청들을 실질적으로 무시하고 폐기하여, 휘발성 또는 비휘발성 메모리에 어떠한 변경도 행하지 않고서 프로세스(520)가 종료하는 것을 허용할 수 있다.
단계(530)에서 NVM 관리자가 그와 달리 LBA 할당 불일치들이 존재한다고 결정하는 경우, 프로세스(520)는 단계(534)로 계속될 수 있고, 거기에서 NVM 관리자는 불일치들을 제거하기 위한 정정 조치들을 수행할 수 있다. 일부 실시예들에서, 불일치는 단계(530)에서 NVM 관리자의 논리-대-물리 어드레스 맵핑에서 찾을 수 있는 LBA를 포함하는 맵핑 해제 요청이 수신될 때에 인식된다. 이러한 경우에서, NVM 관리자는 맵핑 해제 요청을 무시하는 대신에, 그 요청을 처리할 수 있다. 예를 들어, 단계(534)에서 NVM 관리자는 논리-대-물리 어드레스 맵핑 내에서, 수신된 LBA를 물리 어드레스와 연관 해제할 수 있고, 단계(536)에서 NVM 관리자는 관련된 NVM 메모리 위치들(예를 들어, 페이지들, 블록들 또는 수퍼 블록들)을 무효한 것으로서 표시할 수 있다. 이러한 정정 단계들은 필요하다면 휘발성 메모리 내에 변경들을 행함으로써 수행될 수 있는데, 왜냐하면 NVM 관리자는 다른 불완전 종료가 발생하는 경우에 파일 시스템이 미할당 LBA들의 목록을 재송신하는 것에 의존할 수 있기 때문이다. 이러한 방식으로, NVM 관리자는 가비지 컬렉션, 웨어 레벨링 또는 다른 NVM 관리 동작을 수행할 적절한 시간까지는 비휘발성 메모리에 변경을 행할 필요가 없다.
단계(536)에 후속하여, 프로세스(520)는 추가의 불일치들에 관하여 검사를 하기 위해 단계(530)로 복귀할 수 있다. 예를 들어, NVM 관리자는 맵핑 해제될 필요가 있는 LBA들을 포함하는 맵핑 해제 요청들을 찾아서 검사를 계속할 수 있다.
이제 도 6을 보면, 미할당 LBA 익스텐트들의 목록을 준비하기 위한 예시적인 프로세스(600)의 흐름도가 도시되어 있다. 프로세스(600)는 도 3의 비트맵(320)과 유사한 비트맵을 유지하는 도 2의 파일 시스템(210)과 같은 파일 시스템에 의해 수행될 수 있다. 일부 실시예들에서, 프로세스(600)는 파일 시스템이 어떻게 프로세스(500)(도 5)의 단계(506)를 완료할 수 있는지에 대한 더 상세한 보기를 제공할 수 있다. 그러므로, 프로세스(600)는 파일 시스템이 미할당 LBA 익스텐트들의 전부를 NVM 관리자(예를 들어, 도 2의 NVM 드라이버(220))에게 전달할 수 있게 하도록 수행될 수 있다.
프로세스(600)는 예를 들어 운영 체제가 파일 시스템의 마운트를 트리거하는 것에 후속하여 단계(602)에서 시작할 수 있다. 단계(604)에서, 파일 시스템은 NVM(예를 들어, 도 1의 NVM(120))에 관련된 LBA들의 비트맵에 액세스할 수 있다. 파일 시스템은 단계(606)에서 비트맵의 제1 비트를 선택한 다음, 단계(608)에서 이 제1 비트가 할당되어 있지 않은지를 판정할 수 있다. 예를 들어, 파일 시스템은 비트 값이 그 비트가 할당되어 있지 않음을 나타내는 '0'인지, 또는 비트 값이 그 비트가 할당되어 있음을 나타내는 '1'인지를 판정할 수 있다.
단계(608)에서, 파일 시스템이 제1 비트가 할당되어 있다고 판정한 경우, 이 비트는 NVM 관리자에게 전달될 필요가 있는 미할당 LBA 익스텐트의 부분이 아니다. 따라서, 프로세스(600)는 단계(606)으로 되돌아갈 수 있고, 거기에서 파일 시스템은 (단계(610)에서 비트맵 내에 추가의 비트가 있음을 확인한 후에) 비트맵 내의 다음 비트를 선택한다. 파일 시스템이 미할당 LBA에 관련된 비트(예를 들어 '0' 비트 값을 갖는 비트맵 내의 비트)를 만날 때까지, 파일 시스템은 단계들(606, 608 및 610) 사이를 계속하여 반복할 수 있다. 이 때, 파일 시스템은 비트맵 내의 현재 비트의 위치에 기초하여 미할당 LBA를 식별할 수 있다. 단계(614)에서 식별된 미할당 LBA는 파일 시스템이 NVM 관리자에게 전달할 미할당 LBA 익스텐트의 시작이다.
미할당 LBA 익스텐트의 시작이 확립되었으므로, 파일 시스템은 그 익스텐트가 얼마나 긴지를 결정할 수 있다. 현재 익스텐트의 길이를 추적하기 위해, 파일 시스템은 카운터를 유지할 수 있다. 파일 시스템은 할당된 LBA(예를 들어, 비트맵 내의 '1') 또는 비트맵의 끝을 만나지 않고서 다른 미할당 LBA(예를 들어, 비트맵 내의 '0')를 발견할 때마다 카운터를 증분시킨다. 구체적으로, 파일 시스템은 (단계(616)에서 비트맵 내에 추가의 비트들이 존재하는지를 확인한 후에) 단계(618)에서 비트맵 내의 다음 비트를 선택하고, 단계(620)에서 선택된 비트가 관련 LBA가 역시 할당되어 있지 않음을 나타내는지를 판정하고, LBA가 할당되어 있지 않은 경우 단계(622)에서 카운터를 증분시킬 수 있다.
단계(616) 내지 단계(620)는 현재의 미할당 LBA 익스텐트의 끝에 도달될 때까지 반복될 수 있다. 단계(616)에서 파일 시스템이 NVM에 관련된 비트맵 내에 더 이상의 비트가 존재하지 않음을 결정할 때, 또는 단계(620)에서 파일 시스템이 비트맵 내의 다음 비트가 할당된 LBA에 대응함을 결정할 때, 현재 익스텐트의 끝이 식별될 수 있다. 이 때, 프로세스(600)는 단계(616)로부터 단계(624)까지, 또는 단계(620)로부터 단계(626)까지 계속할 수 있다. 단계(624) 또는 단계(626)에서, 파일 시스템은 전체 익스텐트를 식별하기 위해 현재의 미할당 LBA 익스텐트에 관한 충분한 정보를 가지고 있고, 그 정보를 NVM 관리자에게 전달한다. 파일 시스템은 익스텐트 내의 시작 LBA(단계(610)에서 확립됨) 및 익스텐트의 길이(카운터에 의해 알려짐)를 제공하는 것과 같은 임의의 적절한 형태로 익스텐트를 식별하고 제공할 수 있다. 도 4의 맵핑 해제 요청(400)은 이러한 접근법을 이용하는 요청의 일례이다.
단계(624)로부터, 프로세스(600)는 비트맵의 끝에 도달하였고 NVM 관리자에게 전달할 더 이상의 미할당 LBA 익스텐트가 존재하지 않는 것으로 인해 단계(612)에서 종료할 수 있다. 그러나, 단계(626)로부터, 식별할 추가의 LBA 익스텐트들이 존재할 수 있고, 따라서 프로세스(620)는 단계(628)로 계속된다. 단계(628)에서, 파일 시스템은 다른 미할당 LBA 익스텐트를 찾기 위한 준비를 위해 카운터를 리셋할 수 있다. 다음으로, 프로세스(600)는 파일 시스템이 단계들(606, 608 및 610)에서 다른 미할당 LBA를 찾을 수 있는 시작으로 되돌아갈 수 있다. 찾을 추가의 미할당 LBA 익스텐트가 존재하지 않는 경우, 파일 시스템은 결국 단계(610)에서 비트맵의 끝을 만날 것이고, 그 다음 프로세스(600)는 단계(612)에서 종료할 수 있다.
도 5 및 도 6의 프로세스들(500/520 및 600)의 단계들은 각각 예시에 지나지 않음을 이해해야 한다. 본 발명의 범위를 벗어나지 않고서, 단계들 중 임의의 것이 수정, 제거 또는 결합될 수 있고, 추가의 단계들이 포함될 수 있다.
본 발명의 설명된 실시예들은 제한이 아닌 예시의 목적을 위해 제공된다.
Claims (7)
- 시스템으로서,
비휘발성 메모리(NVM); 및
운영 체제 및 NVM 관리자를 실행하도록 동작할 수 있는 회로망
을 포함하고, 상기 운영 체제는:
상기 운영 체제가 상기 NVM의 마운트를 트리거한 것에 응답하여, 상기 NVM에 관련된 미할당 논리 어드레스들의 파일 시스템 목록을 준비하고;
상기 미할당 논리 어드레스들의 파일 시스템 목록을 상기 NVM 관리자에게 전송하도록
구성되는 파일 시스템을 포함하고, 상기 NVM 관리자는:
논리 어드레스들의 물리 어드레스로의 맵핑들의 테이블을 관리하고;
논리 어드레스들이 이용 중인지를 식별하고;
상기 미할당 논리 어드레스들의 파일 시스템 목록을 수신하고;
상기 이용 중인 식별된 논리 어드레스들 중 어느 것이 상기 논리 어드레스들의 파일 시스템 목록에 포함되는지를 결정하고;
상기 논리 어드레스들의 파일 시스템 목록에 포함될 것으로 결정된 상기 식별된 논리 어드레스들을, 상기 논리 어드레스들의 물리 어드레스로의 맵핑들의 테이블 내에 그들 각자의 물리 어드레스들과 연결 해제하도록
동작하는 시스템. - 제1항에 있어서,
상기 운영 체제는 상기 시스템의 부팅 시에 상기 NVM의 마운트를 트리거하도록 구성되는 시스템. - 제1항에 있어서,
상기 파일 시스템은 상기 NVM에 관련된 논리 어드레스들 중 어느 것이 할당되는지를 나타내는 비트맵을 유지하도록 더 구성되고, 상기 파일 시스템은 상기 비트맵에 기초하여 상기 미할당 논리 어드레스들을 식별하도록 구성되는 시스템. - 제1항에 있어서,
상기 NVM은 NAND 플래시 메모리인 시스템. - 전자 장치로서,
비휘발성 메모리(NVM); 및
파일 시스템 및 NVM 관리자를 실행하도록 동작할 수 있는 제어 회로망
을 포함하고, 상기 파일 시스템은:
상기 NVM에 관련된 미할당 논리 어드레스들의 포괄적인 목록을 준비하고;
상기 미할당 논리 어드레스들의 포괄적인 목록을 할당 해제하라는 복수의 맵핑 해제 요청을 상기 NVM에게 발행하도록
구성되고, 상기 복수의 맵핑 해제 요청은:
상기 파일 시스템의 마운트 시간에서, 제1 논리 어드레스를 할당 해제하도록 상기 NVM 관리자에게 제1 기회를 제공하는 제1 맵핑 해제 요청; 및
상기 파일 시스템의 상기 마운트 시간에 후속하여, 상기 제1 논리 어드레스를 할당 해제하는 제2 맵핑 해제 요청 - 상기 제2 맵핑 해제 요청은 상기 제1 논리 어드레스를 할당 해제하도록 상기 NVM 관리자에게 제2 기회를 제공함 -
을 포함하는 전자 장치. - 제5항에 있어서,
상기 파일 시스템은 논리 어드레스 할당 테이블을 유지하도록 더 구성되고, 상기 제2 맵핑 해제 요청은 마운트 시간에 상기 제1 논리 어드레스가 상기 논리 어드레스 할당 테이블 내에 할당되어 있지 않다고 결정한 것에 응답하여 발행되는 전자 장치. - 제5항에 있어서,
휘발성 메모리를 더 포함하고,
상기 NVM 관리자는 제1 맵핑 해제 요청을 수신하는 것에 응답하여,
상기 휘발성 메모리에서, 상기 논리 어드레스를 무효한 것으로서 표시하고;
상기 논리 어드레스의 무효화에 관련된 상기 NVM 내의 변경들을 행하는 것을 지연시키도록
구성되는 전자 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/152,839 US9727570B2 (en) | 2011-06-03 | 2011-06-03 | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US13/152,839 | 2011-06-03 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20120059167A Division KR101484816B1 (ko) | 2011-06-03 | 2012-06-01 | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120135139A KR20120135139A (ko) | 2012-12-12 |
KR101788332B1 true KR101788332B1 (ko) | 2017-10-19 |
Family
ID=46147049
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20120059167A KR101484816B1 (ko) | 2011-06-03 | 2012-06-01 | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 |
KR1020120067822A KR101788332B1 (ko) | 2011-06-03 | 2012-06-25 | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20120059167A KR101484816B1 (ko) | 2011-06-03 | 2012-06-01 | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9727570B2 (ko) |
EP (1) | EP2530612B1 (ko) |
KR (2) | KR101484816B1 (ko) |
CN (1) | CN102855193B (ko) |
TW (2) | TWI516926B (ko) |
WO (1) | WO2012166308A1 (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756458B2 (en) | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
US9678966B2 (en) * | 2013-11-08 | 2017-06-13 | Samsung Electronics Co., Ltd. | Swat command and API for atomic swap and trim of LBAs |
US9747298B2 (en) * | 2014-05-02 | 2017-08-29 | Vmware, Inc. | Inline garbage collection for log-structured file systems |
US11334478B2 (en) | 2014-10-30 | 2022-05-17 | Kioxia Corporation | Memory system and nonvolatile memory medium in which program is stored to optimize operating life |
WO2018041258A1 (zh) * | 2016-09-05 | 2018-03-08 | 北京忆恒创源科技有限公司 | 去分配命令处理的方法与存储设备 |
CN107797938B (zh) * | 2016-09-05 | 2022-07-22 | 北京忆恒创源科技股份有限公司 | 加快去分配命令处理的方法与存储设备 |
CN107797934B (zh) * | 2016-09-05 | 2022-07-22 | 北京忆恒创源科技股份有限公司 | 处理去分配命令的方法与存储设备 |
KR101777660B1 (ko) * | 2016-10-25 | 2017-09-12 | 주식회사 티에스피글로벌 | 플래시 스토리지 디바이스 및 그 동작 제어 방법 |
KR20180047402A (ko) * | 2016-10-31 | 2018-05-10 | 삼성전자주식회사 | 멀티 네임스페이스를 관리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
KR102395538B1 (ko) * | 2017-04-28 | 2022-05-10 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10275361B2 (en) * | 2017-05-31 | 2019-04-30 | Seagate Technology Llc | Managing multiple namespaces in a non-volatile memory (NVM) |
CN109086219B (zh) * | 2017-06-14 | 2022-08-05 | 北京忆恒创源科技股份有限公司 | 去分配命令处理方法及其存储设备 |
TWI659304B (zh) | 2017-10-20 | 2019-05-11 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
US10437476B2 (en) | 2017-10-23 | 2019-10-08 | Micron Technology, Inc. | Namespaces allocation in non-volatile memory devices |
US10678703B2 (en) | 2017-11-16 | 2020-06-09 | Micron Technology, Inc. | Namespace mapping structual adjustment in non-volatile memory devices |
US11580034B2 (en) | 2017-11-16 | 2023-02-14 | Micron Technology, Inc. | Namespace encryption in non-volatile memory devices |
US11720283B2 (en) | 2017-12-19 | 2023-08-08 | Western Digital Technologies, Inc. | Coherent access to persistent memory region range |
US10929309B2 (en) | 2017-12-19 | 2021-02-23 | Western Digital Technologies, Inc. | Direct host access to storage device memory space |
CN110413201B (zh) * | 2018-04-28 | 2023-06-27 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
KR102711044B1 (ko) * | 2018-09-20 | 2024-09-27 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 |
KR20200072639A (ko) | 2018-12-12 | 2020-06-23 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
US20230289094A1 (en) * | 2022-03-11 | 2023-09-14 | Micron Technology, Inc. | Techniques for controlling command order |
US12061791B2 (en) | 2022-09-01 | 2024-08-13 | SanDisk Technologies, Inc. | System and method for retrimming removable storage devices |
CN117234959A (zh) * | 2023-08-29 | 2023-12-15 | 中电云计算技术有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080229428A1 (en) | 2005-03-07 | 2008-09-18 | Noam Camiel | System and Method For a Dynamic Policies Enforced File System For a Data Storage Device |
US20110078363A1 (en) | 2009-09-30 | 2011-03-31 | Phison Electronics Corp. | Block management method for a flash memory and flash memory controller and storage system using the same |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944742B1 (en) | 2000-04-28 | 2005-09-13 | Microsoft Corporation | Compressed file system for non-volatile RAM |
US6883114B2 (en) * | 2001-11-08 | 2005-04-19 | M-Systems Flash Disk Pioneers Ltd. | Block device driver enabling a ruggedized file system |
CN1447242A (zh) * | 2002-03-25 | 2003-10-08 | 太和科技股份有限公司 | 可适用于快闪存储卡的控制装置及其建构方法 |
US7036040B2 (en) | 2002-11-26 | 2006-04-25 | Microsoft Corporation | Reliability of diskless network-bootable computers using non-volatile memory cache |
TWI223145B (en) * | 2003-03-04 | 2004-11-01 | Megawin Technology Co Ltd | Method for detecting logical address of non-volatile storage medium |
US7493424B1 (en) | 2004-04-30 | 2009-02-17 | Netapp, Inc. | Network storage system with shared software stack for LDMA and RDMA |
JP4209820B2 (ja) * | 2004-07-15 | 2009-01-14 | 株式会社ハギワラシスコム | メモリカードシステム及び該メモリカードシステムで使用されるライトワンス型メモリカード、ホストシステムと半導体記憶デバイスとからなるシステム |
KR100876084B1 (ko) * | 2007-02-13 | 2008-12-26 | 삼성전자주식회사 | 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템 |
JP2007094900A (ja) * | 2005-09-29 | 2007-04-12 | Eastman Kodak Co | アクセス装置 |
JP2009519555A (ja) * | 2005-12-13 | 2009-05-14 | サンディスク コーポレイション | 論理アドレス形ファイル記憶 |
CN100428196C (zh) * | 2006-12-22 | 2008-10-22 | 清华大学 | 一种计算机系统快速还原的方法 |
CN100504814C (zh) | 2007-01-17 | 2009-06-24 | 忆正存储技术(深圳)有限公司 | 闪存的区块管理方法 |
US9396103B2 (en) * | 2007-06-08 | 2016-07-19 | Sandisk Technologies Llc | Method and system for storage address re-mapping for a memory device |
JP2009043030A (ja) * | 2007-08-09 | 2009-02-26 | Hitachi Ltd | ストレージシステム |
US8099544B2 (en) * | 2008-02-29 | 2012-01-17 | Kabushiki Kaisha Toshiba | Information processing apparatus and nonvolatile semiconductor memory drive |
JP4164118B1 (ja) * | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
US8130554B1 (en) * | 2008-09-29 | 2012-03-06 | Emc Corporation | Securely erasing flash-based memory |
JP5458568B2 (ja) * | 2008-12-25 | 2014-04-02 | ソニー株式会社 | 不揮発性記憶装置、情報記録システム、及び情報記録方法 |
CN104077174B (zh) * | 2009-03-27 | 2018-05-01 | 希捷科技有限公司 | 用于提供存储系统逻辑块地址的数据固化的方法及系统 |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
TWI408551B (zh) * | 2009-10-28 | 2013-09-11 | Phison Electronics Corp | 快閃記憶體儲存系統及其控制器與資料處理方法 |
TWI423024B (zh) * | 2009-11-23 | 2014-01-11 | Phison Electronics Corp | 用於快閃記憶體的資料儲存方法及其控制器與儲存系統 |
US8812816B2 (en) | 2010-03-23 | 2014-08-19 | Apple Inc. | Garbage collection schemes for index block |
US8589730B2 (en) * | 2010-08-31 | 2013-11-19 | Apple Inc. | Handling errors during device bootup from a non-volatile memory |
US8756458B2 (en) * | 2011-12-12 | 2014-06-17 | Apple Inc. | Mount-time reconciliation of data availability |
-
2011
- 2011-06-03 US US13/152,839 patent/US9727570B2/en active Active
-
2012
- 2012-05-09 WO PCT/US2012/037078 patent/WO2012166308A1/en active Application Filing
- 2012-05-31 EP EP12170327.6A patent/EP2530612B1/en not_active Not-in-force
- 2012-06-01 CN CN201210179225.9A patent/CN102855193B/zh not_active Expired - Fee Related
- 2012-06-01 TW TW102101274A patent/TWI516926B/zh not_active IP Right Cessation
- 2012-06-01 TW TW101119867A patent/TWI503664B/zh not_active IP Right Cessation
- 2012-06-01 KR KR20120059167A patent/KR101484816B1/ko active IP Right Grant
- 2012-06-25 KR KR1020120067822A patent/KR101788332B1/ko active Search and Examination
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080229428A1 (en) | 2005-03-07 | 2008-09-18 | Noam Camiel | System and Method For a Dynamic Policies Enforced File System For a Data Storage Device |
US20110078363A1 (en) | 2009-09-30 | 2011-03-31 | Phison Electronics Corp. | Block management method for a flash memory and flash memory controller and storage system using the same |
Also Published As
Publication number | Publication date |
---|---|
TWI516926B (zh) | 2016-01-11 |
TW201316169A (zh) | 2013-04-16 |
CN102855193B (zh) | 2015-08-12 |
CN102855193A (zh) | 2013-01-02 |
US20120311298A1 (en) | 2012-12-06 |
EP2530612B1 (en) | 2014-01-29 |
EP2530612A1 (en) | 2012-12-05 |
TWI503664B (zh) | 2015-10-11 |
TW201316170A (zh) | 2013-04-16 |
KR20120135103A (ko) | 2012-12-12 |
KR20120135139A (ko) | 2012-12-12 |
WO2012166308A1 (en) | 2012-12-06 |
KR101484816B1 (ko) | 2015-01-20 |
US9727570B2 (en) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101788332B1 (ko) | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 | |
US11042487B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10055345B2 (en) | Methods, devices and systems for solid state drive control | |
EP2605142B1 (en) | Lba bitmap usage | |
EP2965208B1 (en) | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive | |
US7594067B2 (en) | Enhanced data access in a storage device | |
JP5709814B2 (ja) | 不揮発性メモリを有するシステムのための高速ツリー平坦化 | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
KR20130066639A (ko) | 데이터 이용가능성의 마운트타임 조정 | |
US9348748B2 (en) | Heal leveling | |
US20210048948A1 (en) | Apparatus for Obsolete Mapping Counting in NAND-based Storage Devices | |
US11269534B2 (en) | Data storage device and non-volatile memory control method | |
US20220164135A1 (en) | Apparatus, method and computer program for managing memory page updates within non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination |