KR20210019577A - 비-휘발성 메모리에서 데이터 유효성 추적 - Google Patents

비-휘발성 메모리에서 데이터 유효성 추적 Download PDF

Info

Publication number
KR20210019577A
KR20210019577A KR1020217003903A KR20217003903A KR20210019577A KR 20210019577 A KR20210019577 A KR 20210019577A KR 1020217003903 A KR1020217003903 A KR 1020217003903A KR 20217003903 A KR20217003903 A KR 20217003903A KR 20210019577 A KR20210019577 A KR 20210019577A
Authority
KR
South Korea
Prior art keywords
data
validity
granularity
memory
processing device
Prior art date
Application number
KR1020217003903A
Other languages
English (en)
Other versions
KR102281750B1 (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 마이크론 테크놀로지, 인크.
Publication of KR20210019577A publication Critical patent/KR20210019577A/ko
Application granted granted Critical
Publication of KR102281750B1 publication Critical patent/KR102281750B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0662Virtualisation aspects
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile 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
    • 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

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)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

컴퓨터 디바이스는 유효성을 추적할 데이터의 단위들의 입도를 식별하는 표시자를 구성 파일로부터 판독한다. 입도는 범위가 하나의 단위의 데이터로부터 많은 단위들의 데이터에 이르는 복수의 입도들 중 하나이다. 컴퓨터 디바이스는 메모리 시스템의 프로세싱 디바이스가 복수의 데이터 유효성 카운터들을 사용하여 식별된 입도로 유효성을 추적하게 하도록 구성된 기계-판독 가능한 파일을 생성하며 상기 복수의 데이터 유효성 카운터들에서의 각각의 데이터 유효성은 식별된 입도로 데이터의 단위들의 그룹의 유효성을 추적한다. 컴퓨터 디바이스는 기계-판독 가능한 파일을 메모리 시스템의 메모리로 전달한다.

Description

비-휘발성 메모리에서 데이터 유효성 추적
본 개시는 일반적으로 비-휘발성 메모리에 관한 것이며, 보다 구체적으로 데이터 유효성을 추적하는 것에 관한 것이다.
메모리 서브시스템은 고체-상태 드라이브(SSD)와 같은 저장 시스템일 수 있으며, 데이터를 저장하는 하나 이상의 메모리 구성요소들을 포함할 수 있다. 메모리 구성요소들은, 예를 들어, 비-휘발성 메모리 구성요소들 및 휘발성 메모리 구성요소들일 수 있다. 일반적으로, 호스트 시스템은 메모리 구성요소들에 데이터를 저장하기 위해 및 메모리 구성요소들로부터 데이터를 검색하기 위해 메모리 서브시스템을 이용할 수 있다. 프로그램 가능한 프로세싱 디바이스들은 메모리 서브시스템의 동작을 제어한다. 이들 프로세싱 디바이스들의 프로그래밍을 변경하는 것은 메모리 서브시스템의 동작을 변경할 수 있다.
본 개시는 이하에서 제공된 상세한 설명으로부터 및 본 개시의 다양한 실시예들의 수반된 도면들로부터 더 완전하게 이해될 것이다. 그러나, 도면들은 본 개시를 특정한 실시예들에 제한하기 위해 취해지지 않아야 하며, 단지 설명 및 이해를 위한 것이다.
도 1은 본 개시의 몇몇 실시예들에 따른 메모리 서브시스템을 포함하는 예시적인 컴퓨팅 환경을 예시한다.
도 2a 내지 도 2d는 본 개시의 몇몇 실시예들에 따른 데이터의 단위들의 다양한 입도들로 데이터 유효성을 추적하는 대표적인 데이터 유효성 맵들을 예시한다.
도 3은 본 개시의 몇몇 실시예들에 따른 다양한 입도들로 데이터 유효성을 추적하기 위한 기계-판독 가능한 파일을 생성하기 위한 예시적인 방법의 흐름도이다.
도 4는 본 개시의 몇몇 실시예들에 따른 회수 프로세스의 대표적인 블록도이다.
도 5는 본 개시의 몇몇 실시예들에 따른 메모리의 미사용 부분들을 회수하기 위한 예시적인 방법의 흐름도이다.
도 6은 본 개시의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 양상들은 비-휘발성 메모리 서브시스템에서 데이터 유효성 추적을 추적하는 것에 관한 것이다. 메모리 서브시스템은 여기에서 이후 "메모리 디바이스"로 불리운다. 메모리 서브시스템의 예는 고체-상태 드라이브(SSD)와 같은, 저장 시스템이다. 몇몇 실시예들에서, 메모리 서브시스템은 하이브리드 메모리/저장 서브시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 구성요소들을 포함하는 메모리 서브시스템을 이용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있으며 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
데이터를 저장하고 메모리 서브시스템으로부터 검색하기 위한 호스트 시스템의 능력을 가능하게 하기 위해, 메모리 서브시스템은 인코딩 및 디코딩, 에러 복구, 압축, 어드레스 변환, 데이터 삭제 등과 같은 동작을 수행하는 하나 이상의 프로세싱 디바이스들을 포함한다. 이들 하나 이상의 프로세싱 디바이스들의 프로그래밍을 변경하는 것은 메모리 서브시스템의 동작을 변경한다.
하나 이상의 프로세싱 디바이스들에 의해 수행된 동작들 중 많은 것은 계산 비용(메모리를 판독하거나 또는 그것에 기록하기 위해 호스트 시스템에 의해 요구된 시간에 지연들을 더할 수 있는) 및 메모리 비용(메모리의 몇몇 부분을 예약하고 그에 의해 호스트 시스템에 이용 가능한 양을 감소시킬 수 있는) 모두를 갖는다. 데이터 회수는 하나의 이러한 동작이다. 때때로 "가비지 컬렉션(garbage collection)" 또는 "폴딩(folding)"으로 불리우는, 데이터 회수는 메모리의 미사용 부분들을 회수하기 위해 플래시-메모리 서브시스템들에 광범위하게 배치된 프로세스이다. 데이터 회수는 새로운 데이터를 그것에 기록하기 전에 블록들로 플래시-메모리를 삭제하기 위한 요구를 처리한다. 메모리 서브시스템에 저장된 데이터가 더 이상 요구되지 않을 때(예컨대, 호스트 시스템이 그것을 "삭제하거나" 또는 재기록하였기 때문에), 데이터는 즉시 삭제되지 않으며 오히려 더 이상 요구되지 않는 것으로(예컨대, "스테일(stale)") 플래깅된다. 스테일 데이터는 블록으로 삭제되는 메모리의 일 부분에서 다른 비-스테일 데이터와 함께 저장될 수 있기 때문에, 데이터 회수 프로세스는 메모리의 블록이 삭제되며 새로운 데이터에 대해 이용 가능해질 수 있도록 가끔 비-스테일 데이터를 메모리의 또 다른 부분으로 이동시킨다. 따라서, 데이터 회수 프로세스는 스테일 또는 "무효" 데이터와 연관된 공간을 자유롭게 하면서 비-스테일 또는 "유효" 데이터를 보존한다.
메모리 서브시스템 내에 포함된 프로세싱 디바이스(들)에 대한 이용 가능한 계산 및 메모리 리소스들에 의존하여, 메모리 서브시스템의 프로그래밍은 하나의 데이터 회수 접근법과 연관된 계산 및 메모리 비용이 하나의 작업부하에 대해 설계된 메모리 서브시스템으로 가능하지만 또 다른 작업부하에 대해 설계된 또 다른 메모리 서브시스템으로는 가능하지 않을 수 있기 때문에 달라질 수 있다. 예를 들어, 기업-레벨 저장 애플리케이션들을 향해 타겟팅된 메모리 서브시스템은 소비자-레벨 메모리 서브시스템에 대한 증가된 리소스 예산으로 인해 더 높은 성능을 제공하는 메모리 서브시스템 동작들을 지원하기 위해 더 큰 계산 및 메모리 예산을 가질 수 있다. 따라서, 메모리 서브시스템들의 동작(및 그에 따른 프로그래밍)은 하나의 메모리 서브시스템 설계에서 또 다른 것으로 달라진다. 그 결과, 메모리 서브시스템 제조사는 그것의 생산 라인 내에서 각각의 변화 또는 버전에 대한 많은 상이한 코드 버전들을 개발한다. 더욱이, 메모리 서브시스템 제조사는 업데이트들, 수리들 등을 통합하기 위해 각각의 코드 버전을 유지하여, 상이한 메모리 서브시스템들에 대한 코드 베이스의 유지를 복잡하게 한다.
본 개시의 양상들은 메모리-서브시스템에서 데이터 회수 동작들을 제어하는 펌웨어 및/또는 소프트웨어를 자동으로 및 동적으로 준비함으로써 상기 및 다른 결점들을 처리한다. 이러한 방식으로, 상이한 계산 및 메모리 예산들을 가진 상이한 메모리 서브시스템들은 각각의 메모리 서브시스템에 대한 상이한 코드 베이스들의 개발 및 유지를 요구하지 않는다. 부가적으로, 본 개시의 양상들은 연관된 메모리 비용을 감소시키면서 데이터 회수 프로세스의 계산 비용을 유지할 수 있는 데이터 회수 프로세스의 다양한 구현들을 통해 상기 및 다른 결점들을 처리한다. 감소된 메모리 비용은 어떤 데이터가 스테일/비-스테일인지를 데이터 회수 프로세스에 알리는 유효성 테이블의 풋프린트 및 호스트 시스템으로부터의 판독 또는 기록 명령들과 연관된 "논리" 어드레스들을 데이터가 실제로 저장되는 메모리 서브시스템 내에서의 위치 또는 위치들에 대응하는 "물리" 어드레스들로 변환하기 위해 동작 동안 사용되는 어드레스 변환 테이블들의 풋프린트를 감소시키는 것을 포함할 수 있다.
도 1은 본 개시의 몇몇 실시예들에 따른 메모리 서브시스템(110)을 포함하는 예시적인 컴퓨팅 환경(100)을 예시한다. 메모리 서브시스템(110)은 메모리 구성요소들(112A 내지 112N)과 같은, 미디어를 포함할 수 있다. 메모리 구성요소들(112A 내지 112N)은 휘발성 메모리 구성요소들, 비-휘발성 메모리 구성요소들, 또는 그것의 조합일 수 있다. 몇몇 실시예들에서, 메모리 서브시스템은 저장 시스템이다. 저장 시스템의 예는 SSD이다. 몇몇 실시예들에서, 메모리 서브시스템(110)은 하이브리드 메모리/저장 서브시스템이다. 몇몇 실시예들에서, 컴퓨팅 환경(100)은 새로운 또는 업데이트된 프로그래밍을 메모리 서브시스템(110)으로 전달할 수 있는 컴퓨터 시스템(120)을 포함한다. 예를 들어, 컴퓨터 시스템(120)은 프로그래밍 정보를 컨트롤러 메모리(119)로 저장할 수 있다. 다른 실시예들에서, 컴퓨터 시스템(120)은 메모리 구성요소들(112A 내지 112N)로부터의 데이터 저장 및 검색 동작들을 위해 메모리 서브시스템(110)을 사용한다. 예를 들어, 컴퓨터 시스템(120)은 데이터를 메모리 서브시스템(110)으로 기록하며 메모리 서브시스템(110)으로부터 데이터를 판독할 수 있다.
컴퓨터 시스템(120)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 메모리 프로그래밍 디바이스, 네트워크 서버, 이동 디바이스, 또는 프로세싱 디바이스(121) 및 메모리(122)를 포함하는 이러한 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스일 수 있다. 컴퓨터 시스템(120)은 컴퓨터 시스템(120)이 메모리 서브시스템(110)으로부터 데이터를 판독하거나 또는 그것으로 데이터를 기록할 수 있도록 메모리 서브시스템(110)을 포함하거나 또는 그것에 결합될 수 있다. 컴퓨터 시스템(120)은 물리 인터페이스를 통해 메모리 서브시스템(110)에 결합될 수 있다. 몇몇 실시예들에서, 컴퓨터 시스템(120)은, 메모리 서브시스템의 제조 이전 또는 그 동안, 컨트롤러 메모리(119)와 같은, 메모리 서브시스템(110)의 구성요소에 결합된다. 여기에서 사용된 바와 같이, "~에 결합된"은 일반적으로 전기적, 광학, 자기 등과 같은 연결들을 포함하여, 유선 또는 무선이지에 관계없이, 간접적인 통신 연결 또는 직접적인 통신 연결(예컨대, 매개 구성요소들이 없는)일 수 있는, 구성요소들 간의 연결을 나타낸다. 물리 인터페이스의 예들은, 이에 제한되지 않지만, 직렬 고급 기술 접속(SATA) 인터페이스, 물리 구성요소 상호연결 고속(PCIe) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 파이버 채널, 직렬 접속 SCSI(SAS), JTAG IEEE 1149 등을 포함한다. 물리 인터페이스는 컴퓨터 시스템(120)과 메모리 서브시스템(110) 사이에서 데이터를 송신하기 위해 사용될 수 있다. 컴퓨터 시스템(120)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 컴퓨터 시스템(120)과 결합될 때 메모리 구성요소들(112A 내지 112N)을 액세스하기 위해 NVM 고속(NVMe) 인터페이스를 추가로 이용할 수 있다. 물리 인터페이스는 메모리 서브시스템(110)과 컴퓨터 시스템(120) 사이에서 제어, 어드레스, 데이터, 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
컴퓨터 시스템(120)의 예시된 실시예에서, 메모리(122)는 코드(124) 및 구성 데이터(125)를 포함한다. 예를 들어, 코드(124)는 인간-판독 가능한 소프트웨어(예컨대, C, C++ 등으로 기록됨) 및/또는 펌웨어(예컨대, 하드웨어 디스크립션 언어 등으로 기록됨) 및 다수의 상이한 메모리 서브시스템들을 지원하기 위해 개발된 다른 파일들(예컨대, 라이브러리들 등)일 수 있다. 구성 데이터(125)는 이하에서 설명되는 바와 같이, 데이터 유효성이 추적되는 입도를 조정하기 위해 구성 파라미터(126)를 포함한다. 컴퓨터 시스템(120)에서 실행된 컴파일러 또는 다른 개발 툴(도시되지 않음)은 여기에서 설명된 기능들을 수행하도록 컨트롤러(115)를 프로그램하고 및/또는 구성하기 위해 구성 데이터(125)를 사용하여, 인간-판독 가능한 소프트웨어/펌웨어를, 인스트럭션들 또는 구성 데이터를 포함한 하나 이상의 기계-판독 가능한 파일들로 변환한다. 다른 실시예들에서, 컴퓨터 시스템(120)은 메모리 서브시스템(110)을 사용하지만, 프로그래밍하지 않는다(예컨대, 메모리(122)는 코드(124) 및 구성 데이터(125)를 포함하지 않는다).
메모리 구성요소들(112A 내지 112N)은 상이한 유형들의 비-휘발성 메모리 구성요소들 및/또는 휘발성 메모리 구성요소들의 임의의 조합을 포함할 수 있다. 비-휘발성 메모리 구성요소들의 예는 네거티브-앤드(NAND) 형 플래시 메모리를 포함한다. 메모리 구성요소들(112A 내지 112N)의 각각은 단일 레벨 셀들(SLC들) 또는 다중-레벨 셀들(MLC들)(예컨대, 삼중 레벨 셀들(TLC들) 또는 사중-레벨 셀들(QLC들))과 같은 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 몇몇 실시예들에서, 특정한 메모리 구성요소는 메모리 셀들의 SLC 부분 및 MLC 부분 모두를 포함할 수 있다. 메모리 셀들의 각각은 컴퓨터 시스템(120)에 의해 사용된 하나 이상의 비트들의 데이터(예컨대, 데이터 블록들)를 저장할 수 있다. NAND 형 플래시 메모리와 같은 비-휘발성 메모리 구성요소들이 설명되지만, 메모리 구성요소들(112A 내지 112N)은 휘발성 메모리와 같은 임의의 다른 유형의 메모리에 기초할 수 있다. 몇몇 실시예들에서, 메모리 구성요소들(112A 내지 112N)은 이에 제한되지 않지만, 랜덤-액세스 메모리(RAM), 판독-전용 메모리(ROM), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 상 변화 메모리(PCM), 마그네토 RAM(MRAM), 네거티브-or(NOR) 플래시 메모리, 전기적으로 삭제 가능한 프로그램 가능 판독-전용 메모리(EEPROM), 및 비-휘발성 메모리 셀들의 교차-점 어레이일 수 있다. 비-휘발성 메모리의 교차-점 어레이는 스택형 교차-그리드 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 부가적으로, 많은 플래시-기반 메모리들과 대조적으로, 교차-점 비-휘발성 메모리는 제자리 기록 동작을 수행할 수 있으며, 여기에서 비-휘발성 메모리 셀은 비-휘발성 메모리 셀이 이전에 삭제되지 않고 프로그래밍될 수 있다. 더욱이, 메모리 구성요소들(112A 내지 112N)의 메모리 셀들은 데이터를 저장하기 위해 사용된 메모리 구성요소의 단위를 나타낼 수 있는 메모리 페이지들 또는 데이터 블록들로서 그룹핑될 수 있다.
메모리 서브시스템 컨트롤러(115)(이후 "컨트롤러"로 불리움)는 메모리 구성요소들(112A 내지 112N)에서 데이터를 판독하는 것, 데이터를 기록하는 것, 또는 데이터를 삭제하는 것과 같은 동작들 및 다른 이러한 동작들을 수행하기 위해 메모리 구성요소들(112A 내지 112N)과 통신할 수 있다. 컨트롤러(115)는 하나 이상의 집적 회로들 및/또는 별개의 구성요소들, 버퍼 메모리, 또는 그것의 조합과 같은 하드웨어를 포함할 수 있다. 컨트롤러(115)는 마이크로컨트롤러, 특수 목적 논리 회로부(예컨대, 필드 프로그램 가능한 게이트 어레이(FPGA), 애플리케이션 특정 집적 회로(ASIC) 등), 또는 다른 적절한 프로세서일 수 있다. 컨트롤러(115)는 컨트롤러 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세서(프로세싱 디바이스)(117)를 포함할 수 있다. 예시된 예에서, 컨트롤러(115)의 컨트롤러 메모리(119)는 메모리 서브시스템(110)과 컴퓨터 시스템(120) 사이에서 통신들을 핸들링하는 것을 포함하여, 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스들, 동작들, 논리 흐름들, 및 루틴들을 수행하기 위한 인스트럭션들을 저장하도록 구성된 내장형 메모리를 포함한다. 몇몇 실시예들에서, 컴퓨터 시스템(120)은 이들 인스트럭션들을 컨트롤러 메모리(119)에 저장한다. 몇몇 실시예들에서, 컨트롤러 메모리(119)는 메모리 포인터들, 인출된 데이터 등을 저장한 메모리 레지스터들을 포함할 수 있다. 컨트롤러 메모리(119)는 또한 컴퓨터 시스템(120)으로부터 수신된 코드(예컨대, 마이크로코드)를 저장하기 위한 판독-전용 메모리(ROM)를 포함할 수 있다. 몇몇 실시예들에서, 인스트럭션들/구성 데이터(118)는 컴퓨터 시스템(120)에 의해 컴파일러 또는 다른 개발 툴에 의해 생성된 기계-판독 가능한 파일들로부터의 데이터를 포함한다. 인스트럭션들/구성 데이터(118)는 프로세서(117) 또는 회수 매니저(113)와 같은, 메모리 서브시스템(110)의 구성요소들에 의해 실행될 수 있거나 또는 이를 구성할 수 있다. 도 1에서의 예시적인 메모리 서브시스템(110)은 컨트롤러(115)를 포함하는 것으로 예시되었지만, 본 개시의 또 다른 실시예에서, 메모리 서브시스템(110)은 컨트롤러(115)를 포함하지 않을 수 있으며, 대신에 외부 제어(예컨대, 외부 호스트에 의해, 또는 메모리 서브시스템으로부터 분리된 프로세서 또는 컨트롤러에 의해 제공됨)에 의존할 수 있다.
몇몇 실시예들에서, 컨트롤러 메모리(119)는 또한 컨트롤러(115)에 의해 수행된 다양한 프로세스들, 동작들, 논리 흐름들, 및 루틴들에 대한 데이터를 저장하기 위해 DRAM 및/또는 정적 RAM(SRAM)을 포함할 수 있다. 하나의 이러한 유형의 데이터는 유효성 맵(116)이다. 이하에서 설명되는 바와 같이, 유효성 맵(116)은 유효 및 무효 데이터를 식별하기 위해 데이터 회수 프로세스 동안 사용된 데이터를 포함한다.
일반적으로, 컨트롤러(115)는 컴퓨터 시스템(120)으로부터 명령들 또는 동작들을 수신할 수 있으며 메모리 구성요소들(112A 내지 112N)로의 원하는 액세스를 달성하기 위해 명령들 또는 동작들을 인스트럭션들 또는 적절한 명령들로 변환할 수 있다. 몇몇 실시예들에서, 컨트롤러(115)는 컴퓨터 시스템(120)이 컨트롤러 메모리(119)를 프로그래밍하도록 허용하기 위해 명령 지원을 포함한다. 컨트롤러(115)는 마모 균등화(wear leveling) 동작들, 가비지 컬렉션 동작들, 에러 검출 및 에러-정정 코드(ECC) 동작들, 암호화 동작들, 캐싱 동작들, 및 메모리 구성요소들(112A 내지 112N)과 연관되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환들과 같은 다른 동작들을 책임질 수 있다. 몇몇 실시예들에서, 컨트롤러(115)는 미디어(예컨대, 메모리 구성요소들(112A 내지 112N))의 일 부분에 하나 이상의 어드레스 색인 테이블들을 유지한다. 몇몇 실시예들에서, 컨트롤러(115)는 컨트롤러 메모리(119)에서 테이블(들)의 부분들을 인출하고 캐싱할 수 있다. 논리-대-물리 어드레스 색인 테이블을 사용하여, 컨트롤러(115)는 그것의 논리 어드레스(예컨대, 컴퓨터 시스템(120)으로부터의)를 고려하여 데이터의 물리 어드레스를 획득할 수 있다. 데이터 유효성이 추적되는 입도의 레벨에 의존하여, 컨트롤러(115)는 특정한 물리 어드레스에 대한 논리 어드레스를 찾아보기 위해(예컨대, 여기에서 설명된 바와 같이, 데이터 회수 동안) 물리-대-논리 어드레스 색인 테이블을 사용할 수 있다. 몇몇 실시예들에서, 물리-대-논리 어드레스 색인 테이블은 여기에서 설명된 바와 같이, 컨트롤러(115)가 데이터 유효성을 추적하는 입도가 충분히 미세하다면 필요하지 않을 수 있다.
컨트롤러(115)는 물리 인터페이스를 통해 컴퓨터 시스템(120)과 통신하기 위해 인터페이스 회로부를 추가로 포함할 수 있다. 인터페이스 회로부는 메모리 구성요소들(112A 내지 112N)을 액세스하기 위해 컴퓨터 시스템(120)으로부터 수신된 명령을 명령 인스트럭션들로 변환할 뿐만 아니라 메모리 구성요소들(112A 내지 112N)과 연관된 응답들을 컴퓨터 시스템(120)을 위한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 예시되지 않은 부가적인 회로부 또는 구성요소들을 포함할 수 있다. 몇몇 실시예들에서, 메모리 서브시스템(110)은 캐시 또는 버퍼(예컨대, DRAM) 및 컨트롤러(115)로부터 어드레스를 수신하며 메모리 구성요소들(112A 내지 112N)을 액세스하기 위해 어드레스를 디코딩할 수 있는 어드레스 회로부(예컨대, 로우 디코더 및 컬럼 디코더)를 포함할 수 있다.
메모리 서브시스템(110)은 유효성 맵(116)에 기초하여 미디어의 부분들을 회수하기 위해 사용될 수 있는 회수 매니저 구성요소(113)를 포함한다. 몇몇 실시예들에서, 컨트롤러(115)는 회수 매니저 구성요소(113)의 적어도 일 부분을 포함한다. 예를 들어, 컨트롤러(115)는 여기에서 설명된 동작들을 수행하기 위해 컨트롤러 메모리(119)에 저장된 인스트럭션들을 실행하도록 구성된 프로세서(117)(프로세싱 디바이스)를 포함할 수 있다. 몇몇 실시예들에서, 회수 매니저 구성요소(113)는 컴퓨터 시스템(120), 애플리케이션, 또는 운영 시스템의 부분이다.
회수 매니저 구성요소(113)는 회수될 메모리의 일 부분을 식별하고, 상기 메모리의 부분 내에서의 어떤 데이터가 사용되는지 대 어떤 데이터가 사용되지 않는지를 결정하고, 사용된 데이터를 메모리의 또 다른 부분으로 이동시키며, 회수된 메모리의 부분을 삭제할 수 있다. 회수 매니저 구성요소(113)의 동작들에 관한 추가 세부사항들은 이하에서 설명된다.
다양한 데이터 조직화 기법들이 미디어의 관리를 돕기 위해 이용될 수 있다. 일 실시예에서, 변환 단위(TU)는 어드레스 변환 층에 걸쳐(논리에서 물리 어드레스들로 및 그 반대) 추적된 최소 입도이다. TU는 메타데이터 및 사용자 데이터로 구성된다. 몇몇 실시예들에서, TU에서 사용자 데이터의 크기는 정수배의 논리 블록 어드레싱 섹터 크기이다. 예를 들어, 논리 어드레스 공간에서의 각각의 어드레스가 512-킬로바이트 섹터를 식별한다면, 사용자 데이터의 크기는 섹터 크기의 8배, 또는 4,096-킬로바이트들일 수 있다. TU에서 메타데이터는 사용자 데이터에 대한 논리 어드레스 정보를 포함한다. 따라서, 컴퓨터 시스템(120)이 사용자 데이터를 논리 어드레스에서의 메모리 서브시스템에 기록할 때, 컨트롤러는 미디어 내에서의 특정한 물리 위치에, 사용자 데이터 및 논리 어드레스를 식별하는 메타데이터를 포함한, TU를 저장한다.
TU들은 더 대략적인 레벨들의 입도로 더 높은 논리 그룹들을 형성하기 위해 그룹핑될 수 있다. 예를 들어, 4개의 TU들은 페이지로 그룹핑될 수 있다. 4개의 페이지들은 다중평면을 형성하기 위해 그룹핑될 수 있다. 다중평면들은 단일 메모리 구성요소(112) 상에 존재하거나 또는 페이지 스트라이프를 형성하기 위해 다수의 메모리 구성요소들(112A 내지 112N)을 스패닝할 수 있다. 다수의 페이지 스트라이프들은 블록 스트라이프를 형성하기 위해 그룹핑될 수 있다. 다른 실시예들은 상이한 그룹 크기들, 상이한 수들의 입도 레벨들, 및 상이한 레이아웃들을 포함할 수 있다.
컨트롤러(115)는 가변 레벨들의 성능을 조건으로, 가변 레벨들의 입도로 판독 또는 기록 동작들을 발행할 수 있다. 예를 들어, 몇몇 실시예들은 입도에서의 각각의 증가에 따라 증가된 대기시간을 보일 수 있다(예컨대, TU 판독 동작은 페이지 판독 동작보다 빠르고; 페이지 판독 동작은 다중평면 판독 동작보다 빠르다 등). 다른 실시예들은 다수의 레벨들의 입도에 대해 비교 가능한 동작 대기시간을 가질 수 있다. 예를 들어, TU, 페이지, 및 다중평면이 단일 메모리 구성요소(112) 내에 존재하는 실시예들에서, 이들 논리 그룹들과 연관된 판독 대기시간은 비교 가능할 수 있다(예컨대, 100 마이크로초). 블록 스트라이프가 다수의 메모리 구성요소들(112A 내지 112N)을 스패닝한다면, 블록 스트라이프와 연관된 판독 대기시간은 메모리 구성요소들의 수가 증가함에 따라(예컨대, 100N 마이크로초, 여기에서 N은 블록 스트라이프가 스패닝하는 메모리 구성요소들(112)의 수이다) 위로 스케일링할 수 있다.
도 2a 내지 도 2d는 본 개시의 몇몇 실시예들에 따라 데이터의 단위들의 다양한 입도들로 데이터 유효성을 추적하는 대표적인 데이터 유효성 맵들을 예시한다. 구성 데이터(125)에 의존하여, 컨트롤러(115)는 상이한 레벨들의 입도로 데이터 유효성을 추적한다. 도 2a 내지 도 2d에서 대표적인 유효성 맵들(116)은 상기 설명된 4개의 레벨들의 입도(TU, 페이지, 다중평면, 블록 스트라이프)에 기초하며 페이지당 4개의 TU들, 다중평면당 4개의 페이지들, 및 블록 스트라이프당 4개의 다중평면들로 64개 TU들을 포함하는 블록 스트라이프 크기를 가정한다.
도 2a에서, 구성 데이터(125)는 유효성 맵이 TU 레벨의 데이터 입도로 데이터를 추적한다고 특정한다. 유효성 맵(116A)은 TU 레벨의 입도에서의 유효성 맵을 예시한다. 유효성 맵(116A)은 각각의 블록 스트라이프의 각각의 TU에 대한 카운터를 포함한다. 카운터는 유효 데이터를 가진 TU들의 수를 나타낸다. 이 예에서 입도가 하나의 TU이기 때문에, 단일 비트 카운터(205A)는 TU의 유효성을 나타낸다(예컨대, '1'은 유효이고, '0'은 무효를 의미한다). 64-TU 크기 블록 스트라이프에 기초하여, 컨트롤러 메모리(119)에서 유효성 맵(116A)에 대한 총 풋프린트는 따라서 미디어 내에서 적합한 블록 스트라이프들의 수의 64배이다(64비트들×블록 스트라이프들의 수).
도 2b에서, 구성 데이터(125)는 유효성 맵이 페이지 레벨의 데이터 입도로 데이터를 추적한다는 것을 특정한다. 유효성 맵(116B)은 페이지 레벨의 입도에서 유효성 맵을 예시한다. 유효성 맵(116B)은 각각의 블록 스트라이프의 각각의 페이지에 대한 카운터를 포함한다. 카운터는 유효 데이터를 가진 페이지 내에서 TU들의 수를 나타낸다. 이 예에서 입도가 하나의 페이지이기 때문에(및 페이지당 4개의 TU들이 있다고 가정하면), 유효성 맵(116B)은 5개의 가능한 상태들(예컨대, 유효 TU들 없음, 하나의 유효 TU, 두 개의 유효 TU들, 3개의 유효 TU들, 또는 4개의 유효 TU들)을 나타내기 위해 페이지당 3-비트 카운터(205B)를 저장한다. 64-TU 크기 블록 스트라이프에 기초하여, 컨트롤러 메모리(119)에서 유효성 맵(116B)에 대한 총 풋프린트는 따라서 미디어 내에서 적합한 블록 스트라이프들의 수의 48배이다(3비트들/페이지×16페이지들×블록 스트라이프들의 수).
도 2c에서, 구성 데이터(125)는 유효성 맵이 다중평면 레벨의 데이터 입도로 데이터를 추적한다는 것을 특정한다. 유효성 맵(116C)은 다중평면 레벨의 입도에서 유효성 맵을 예시한다. 유효성 맵(116C)은 각각의 블록 스트라이프의 각각의 다중평면에 대한 카운터를 포함한다. 카운터는 유효 데이터를 가진 다중평면 내에서 TU들의 수를 나타낸다. 이 예에서 입도는 하나의 다중 평면이기 때문에(및 다중평면당 16개 TU들이 있다고 가정하면), 유효성 맵(116C)은 17개의 가능한 상태들(예컨대, 유효 TU들 없음, 1개의 유효 TU, 2개의 유효 TU들, 16개까지의 유효 TU들)을 나타내기 위해 다중평면당 5-비트 카운터(205C)를 저장한다. 64-TU 크기 블록 스트라이프에 기초하여, 컨트롤러 메모리(119)에서 유효성 맵(116B)에 대한 총 풋프린트는 따라서 미디어 내에서 적합한 블록 스트라이프들의 수의 20배이다(5비트들/다중평면×4 다중 평면들×블록 스트라이프들의 수).
도 2d에서, 구성 데이터(125)는 유효성 맵이 블록 스트라이프 레벨의 데이터 입도로 데이터를 추적하는 것을 특정한다. 유효성 맵(116D)은 블록 스트라이프 레벨의 입도에서 유효성 맵을 예시한다. 유효성 맵(116D)은 각각의 블록 스트라이프에 대한 카운터를 포함한다. 카운터는 유효 데이터를 가진 블록 스트라이프 내에서의 TU들의 수를 나타낸다. 이 예에서 입도는 하나의 블록 스트라이프이기 때문에(및 블록 스트라이프 당 64개 TU들이 있다고 가정하면), 유효성 맵(116D)은 65개의 가능한 상태들(예컨대, 유효 TU들 없음, 하나의 유효 TU, 두 개의 유효 TU들, 64개까지의 유효 TU들)을 나타내기 위해 블록 스트라이프 당 7-비트 카운트(205D)를 저장한다. 64-TU 크기 블록 스트라이프에 기초하여, 컨트롤러 메모리(119)에서 유효성 맵(116B)에 대한 풋프린트는 따라서 미디어 내에서 적합한 블록 스트라이프들의 수의 7배이다(7비트들/블록 스트라이프×블록 스트라이프들의 수).
유효성 맵들(116A 내지 116D)의 상기 설명이 예시한 바와 같이, 데이터 유효성이 추적되는 입도가 대략적일수록, 컨트롤러 메모리(119) 내에서 유효성 맵의 메모리 풋프린트는 더 낮다. 따라서, 컨트롤러(115)는 구성 데이터(125)에 기초하여 유효성 맵(116)에 대한 메모리에서의 공간의 양을 공급한다.
도 3은 본 개시의 몇몇 실시예들에 따른 다양한 입도들로 데이터 유효성을 추적하기 위한 기계-판독 가능한 파일을 생성하기 위한 예시적인 방법의 흐름도이다. 방법(300)은 하드웨어(예컨대, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예컨대, 프로세싱 디바이스 상에서 구동되거나 또는 실행된 인스트럭션들), 또는 그것의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 몇몇 실시예들에서, 방법 'Y00은 도 1의 프로세서(121)에 의해 수행된다. 특정한 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는다면, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하며, 예시된 프로세스들은 상이한 순서로 수행될 수 있고, 몇몇 프로세스들은 동시에 수행될 수 있다. 부가적으로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
몇몇 실시예들에서, 프로세스는 개발자와 같은 사용자로부터의 명령에 응답하여 시작한다. 블록 310에서, 프로세싱 디바이스는 메모리 서브시스템을 제어하는 펌웨어 및/또는 소프트웨어를 생성하기 위해 사용된 코드(예컨대, 코드(124))를 포함한 하나 이상의 파일들을 판독한다. 이들 파일들은 다수의 상이한 메모리 서브시스템들을 지원하는 단일 코드 베이스의 부분이다.
블록 310에서, 프로세싱 디바이스는 구성 데이터(125)와 같은 구성 데이터를 추가로 판독한다. 구성 데이터는 단일 메모리 서브시스템에 특정적이거나 또는 코드 베이스에 의해 지원된 메모리 서브시스템들의 적절한 서브세트와 연관될 수 있다. 프로세싱 디바이스는 유효성을 추적할 데이터의 단위들의 입도를 식별하는 표시자를 획득한다. 표시자는 여기에서 설명된 TU, 페이지, 다중평면, 또는 블록 스트라이프와 같은, 데이터의 다양한 단위들, 또는 몇몇 다른 데이터 조직화 기법에 기초하여 단위들 중 하나를 지정할 수 있다. 몇몇 실시예들에서, 표시자는 유효성 맵에 대한 이용 가능한 공간의 양에 대하여 유효성이 추적되는 메모리의 총 양을 특정하는 구성 데이터에 기초하여 동적으로 산출된다. 예를 들어, 구성 데이터는 미디어가 1,000개의 유효성-추적 블록 스트라이프들에 대한 공간을 포함하며 유효성 맵이 10 킬로비트들의 메모리를 초과할 수 없음을 나타낼 수 있다. 여기에서 설명된 데이터 조직화 및 도 2a 내지 도 2b를 참조하여 설명된 유효성 맵들에 기초하여, 프로세싱 디바이스는 유효성 맵 크기(7,000 비트들) 대 블록 스트라이프 카운트(1,000)의 연관된 7:1 비가 10 킬로비트들 내에서 적절하기 때문에 유효성이 블록 스트라이프 레벨에서 추적된다고 결정하지만, 다중평면-레벨 입도로 추적된 유효성 맵에 대한 20:1 비는 이용 가능한 것보다 많은 메모리를 요구할 것이다.
블록(310)에서 판독된 파일들 중 하나 이상은 제조사 또는 코드 개발자에 의해 유지된 버전-제어된 저장 리포지터리에 저장될 수 있다.
블록 315에서, 프로세싱 디바이스는 메모리 서브시스템과 연관된 프로세싱 디바이스가 복수의 데이터 유효성 카운터들을 사용하여 식별된 입도로 유효성을 추적하게 하도록 구성된 기계-판독 가능한 파일을 생성하며, 복수의 데이터 유효성 카운터들에서 각각의 데이터 유효성 카운터는 식별된 입도로 데이터의 단위들의 그룹의 유효성을 추적한다. 파일은 이진 파일, 실행 가능한 파일, 또는 컨트롤러(115)에 의해 판독 가능한 몇몇 다른 파일에서의 펌웨어 및/또는 소프트웨어일 수 있다. 블록 320에서, 프로세싱 디바이스는 생성된 파일(또는 여기에 포함된 데이터)을 메모리 서브시스템의 구성요소로 전달한다. 예를 들어, 컴퓨터 시스템(120)은 생성된 파일을 메모리 서브시스템(110)으로 전달하며, 이것은 컨트롤러(115)(또는 회수 매니저(113) 또는 프로세서(117)와 같은, 그것의 구성요소들)가 여기에서 설명된 바와 같이 데이터 유효성을 추적하게 하는, 인스트럭션들/구성 데이터(118)로서 컨트롤러 메모리(119)에 전달된 데이터를 저장한다. 몇몇 실시예들에서, 프로세싱 디바이스는 메모리 서브시스템의 완전한 어셈블리 이전에 메모리 서브시스템의 메모리로 생성된 파일을 전달한다.
컨트롤러(115)가 미디어 내에서 데이터를 이동시킴에 따라 또는 컴퓨터 시스템(120)이 데이터를 미디어에 기록함에 따라, 컨트롤러(115)는 유효성 맵에서 카운터들을 업데이트한다. 예를 들어, 컨트롤러(115)가 데이터의 전체 블록 스트라이프를 미디어로 기록할 때, 컨트롤러(115)는 블록 스트라이프 내에서의 TU들 모두가 유효하다는 것을 반영하기 위해 상기 블록 스트라이프와 연관된 카운터들 모두를 설정한다. 데이터가 이동되거나 또는 삭제됨에 따라, 컨트롤러(115)는 컨트롤러 메모리(119)에서 유효성 맵(116)으로부터 영향을 받은 TU(들)와 연관된 유효성 카운터를 판독하고, 카운터를 증분시키거나 또는 감소시키며, 업데이트된 카운터를 다시 유효성 맵(116)으로 기록한다.
미디어 내에서 데이터를 이동시키는 것은 미디어가 데이터의 유효 및 무효의 패치워크가 되게 한다. 회수 프로세스는 원래 위치가 삭제되며 데이터를 기록하기 위해 이용 가능해질 수 있도록 메모리에서의 새로운 위치로 유효 데이터를 이동시킨다. 예를 들어, 회수 매니저(113)는 데이터의 블록 스트라이프들을 프로세싱할 수 있다. 고-레벨로, 회수 매니저(113)는 무효 데이터를 포함하는 하나 이상의 "희생자(victim)" 블록 스트라이프들 및 기록을 위해 이용 가능한 타겟 블록 스트라이프를 식별한다. 회수 매니저는 희생자 블록 스트라이프들이 삭제될 수 있도록 유효 데이터를 타겟 블록 스트라이프로 이동시키기 위해 유효성 맵(116)에 기초하여 희생자 블록 스트라이프(들) 내에서 유효 데이터를 식별한다.
도 4는 본 개시의 몇몇 실시예들에 따른 회수 프로세스의 대표적인 블록도이다. 이러한 실시예들에서, 회수 매니저(113)는 논리-대-물리 매니저(405), 판독-기록(RW) 매니저(410), 미디어 인터페이스(415), 및 잠금 매니저(420)를 포함한 하나 이상의 다른 구성요소들과 통신하거나 또는 이를 포함한다. 이들 구성요소들의 각각은 컨트롤러(115)의 부분일 수 있다(도 1에 구체적으로 예시되지 않지만). 둘러싸인 글자들 "A" 내지 "F"는 이 예에서 회수 프로세스의 전체 흐름을 예시한다.
원 A에서, 회수 매니저(113)는 회수를 위한 후보 블록 스트라이프들을 식별하기 위해 유효성 맵(116)을 판독한다. 몇몇 실시예들에서, 회수 매니저(113)는 예컨대, 다수의 무효 TU들을 나타내는 카운터를 갖고 블록 스트라이프(들)를 탐색함으로써 유효성 맵(116) 내에 저장된 유효성 카운트들에 기초하여 희생자 블록 스트라이프(들)를 식별한다. 일단 회수 매니저(113)가 희생자 블록 스트라이프를 식별하였다면, 회수 매니저(113)는 희생자 블록 스트라이프 내에서 몇몇 수의 TU들에 대한 유효성 카운트를 판독한다. 유효성 카운트가 유효성 카운트에 의해 표현된 입도 내에서 유효 TU들이 없음을 나타낸다면, 회수 매니저(113)는 상기 TU들의 그룹 내에서 데이터 중 임의의 것을 이동시킬 필요가 없다. 유효성 카운트가 유효성 카운트에 의해 표현된 입도 내에서 하나 이상의 유효 TU들을 나타낸다면, 회수 매니저(113)는 카운트와 연관된 데이터의 단위들의 그룹 내에서의 어떤 TU(들)가 유효 데이터를 포함하는지를 결정한다. 유효성 카운트가 TU 레벨의 입도에 있으며 카운터가 TU가 유효함(예컨대, '1')을 나타낸다면, 회수 매니저(113)는 원 E로 진행한다. 유효성 카운트가 TU보다 높은 레벨의 입도에 있다면, 카운터 값은 유효 데이터를 포함하는 TU들의 총 수를 나타내지만 어떤 TU들이 유효 데이터를 포함하고 어떤 TU들이 포함하지 않는지를 나타내지 않는다. 상기 경우에, 회수 매니저는 원 B로 진행한다.
원 B에서, 회수 매니저(113)는 유효성 카운트와 연관된 TU들의 그룹을 판독하기 위해 판독을 미디어 인터페이스(415)로 발행한다. 예를 들어, 유효성 카운트가 페이지 레벨의 입도에 있다면, 회수 매니저(113)는 페이지를 판독하기 위해 페이지 판독을 미디어 인터페이스(415)로 발행한다. 회수 매니저(113)는 미디어 내에서의 그것의 위치에 기초하여 각각의 TU와 연관된 물리 어드레스를 결정한다. 예를 들어, 회수 매니저(113)는 알려진 물리 어드레스로 회수되는 블록 스트라이프 내에서의 상대적인 위치에 기초하여 TU의 물리 어드레스를 결정할 수 있다. 회수를 위한 64-TU 블록 스트라이프가 미디어에서 특정한 어드레스에 위치된다면, 블록 스트라이프 내에서의 각각의 TU의 위치는 어드레스 오프셋에 기초하여 결정될 수 있다. 그룹 내에서의 각각의 TU에 대해, 회수 매니저(113)는 연관된 메타데이터로부터 논리 어드레스를 추출하며 원 C 내지 원 I를 참조하여 이하에서 설명된 동작들을 수행한다.
원 C에서, 회수 매니저(113)는 논리-대-물리 매니저(405)로부터의 TU 메타데이터로부터 획득된 논리 어드레스와 연관된 물리 어드레스를 요청한다. 논리-대-물리 매니저(405)가 TU 메타데이터로부터의 논리 어드레스를 포함하는 논리-대-물리 어드레스 색인 테이블의 일 부분을 캐싱하지 않았다면, 논리-대-물리 매니저(405)는 원 D에 의해 표시된 바와 같이, 미디어 인터페이스(415)를 통해 논리-대-물리 어드레스 색인 테이블의 적절한 부분을 판독한다. 일단 논리-대-물리 매니저(405)가 TU 메타데이터에 저장된 논리 어드레스와 연관된 색인으로부터 TU의 물리 어드레스를 반환한다면, 회수 매니저는 원 B에서 판독된 것으로서 미디어 내에서의 그것의 위치로부터 결정된 바와 같이 TU의 물리 어드레스와 상기 어드레스를 비교한다. 매칭되는 물리 어드레스들은 TU가 유효 데이터를 포함한다는 것을 나타내지만(논리 어드레스 변환이 여전히 물리 어드레스 위치를 나타내므로), 상이한 물리 어드레스들은 TU가 무효 데이터를 포함한다는 것을 나타낸다.
원 E에서, 회수 매니저(113)가 유효 TU를 식별하였을 때, 회수 매니저(113)는 회수 프로세스가 완료될 때까지 상기 TU에 대한 수정들을 방지하기 위해 잠금 매니저(420)로부터 TU의 잠금을 요청한다. 원 F에서, 회수 매니저(113)는 TU를 타겟 블록 스트라이프로 기록하기 위해(또는 기록을 위해 큐잉하도록) 명령을 RW 매니저(410)로 전송한다. 원 G에서, RW 매니저(410)는 타겟 블록 스트라이프 내에서 TU의 새로운 물리 어드레스로 논리-대-물리 어드레스 색인 테이블을 업데이트하기 위해 메시지를 논리-대-물리 매니저(405)로 전송한다.
원 H에서, 논리-대-물리 매니저(405)는 오래된 TU 위치(희생자 블록 스트라이프에서)와 및 컨트롤러 메모리(119)에서 유효성 맵(116)으로부터의 새로운 TU 위치(타겟 블록 스트라이프에서)와 연관된 유효 카운트들을 판독하고, 전자에서 유효 카운트를 감소시키며 후자에서 유효 카운트를 증분시키고, 유효 카운트들을 다시 유효성 맵(119)으로 기록한다. 몇몇 실시예들에서, 유효성 맵에 대한 이들 업데이트들은 원 B에서의 판독과 연관된 TU들의 전체 그룹(및 그룹에서 TU들의 수에 의해 업데이트된 새로운 및 오래된 위치들과 연관된 유효 카운트)이 완료된 후까지 큐잉될 수 있다. 원 I에서, RW 매니저(410)는 이전된 TU들을 타겟 블록 스트라이프로 기록하며 잠금 매니저(420)는 TU(들)에 대한 잠금을 해제한다.
상기 흐름에서, 회수 매니저(113)는 회수 매니저(113)가 미디어(원 B)로부터의 유효성 카운트와 연관된 TU들을 판독할 수 있었기 때문에 물리-대-논리 어드레스 색인 테이블을 찾아볼 필요는 없다. 몇몇 경우들에서, 입도 레벨은 너무 대략적이어서(예컨대, 너무 많은 TU들을 커버하는) TU들 모두의 판독 동작(그것들의 연관된 논리 어드레스들을 식별하는 메타데이터를 획득하기 위해)은 회수 매니저(113)의 성능에 부정적인 영향을 줄 수 있다. 예를 들어, 유효성 맵이 블록 스트라이프 레벨의 입도로 유효성을 추적한다면, 전체 블록 스트라이프의 판독을 수행하는 것은 다른 미디어 동작들(예컨대, 컴퓨터 시스템(120) 액세스들) 등을 상당히 지연시킬 수 있다. 이와 같이, 특정한 레벨 이하에서 유효성 카운트 입도들을 이용한 몇몇 실시예들에서, 물리-대-논리 어드레스 색인 테이블은 생략될 수 있다. 이들 경우들에서, 컨트롤러(115)는 물리-대-논리 어드레스 색인 테이블에 대한 미디어(예컨대, 메모리 구성요소들(112A 내지 112N))에서의 공간을 공급하는 것을 피하여, 다른 목적들을 위해 미디어 리소스들을 자유롭게 한다.
도 5는 본 개시의 몇몇 실시예들에 따른 메모리의 미사용 부분들을 회수하기 위한 예시적인 방법의 흐름도이다. 방법(500)은 하드웨어(예컨대, 프로세싱 디바이스, 회로부, 전용 로직, 프로그램 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예컨대, 프로세싱 디바이스 상에서 구동되거나 또는 실행된 인스트럭션들), 또는 그것의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 몇몇 실시예들에서, 방법 'Y00은 도 1의 회수 매니저 구성요소(113)에 의해 수행된다. 특정한 시퀀스 또는 순서로 도시되지만, 달리 특정되지 않는다면, 프로세스들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 단지 예들로서 이해되어야 하고, 예시된 프로세스들은 상이한 순서로 수행될 수 있으며, 몇몇 프로세스들은 동시에 수행될 수 있다. 부가적으로, 하나 이상의 프로세스들은 다양한 실시예들에서 생략될 수 있다. 따라서, 모든 프로세스들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 흐름들이 가능하다.
하나 이상의 폴딩 희생자들 및 폴딩 타겟을 식별하였다면, 블록 505에서, 프로세싱 디바이스는 희생자들 중 하나(예컨대, 블록 스트라이프)와 연관된 유효성 맵으로부터 유효성 카운트를 판독한다. 유효성 카운트는 인스트럭션들/구성 데이터(118)로부터 메모리 서브시스템(110)에 의해 실행된 인스트럭션들 또는 그의 구성에 기초한 입도로 데이터의 단위들의 그룹의 유효성을 나타낸다. 예를 들어, 희생자가 4개의 다중평면들을 포함하는 블록 스트라이프이며 유효성 맵 입도가 다중평면 레벨에 있다면, 카운트는 다중평면 내에서 유효 TU들의 수를 나타낸다.
블록 510에서, 프로세싱 디바이스는 미디어로부터 유효성 카운트와 연관된 데이터의 단위들의 그룹을 판독한다. 판독 데이터는 그룹 내에서 각각의 단위 TU의 논리 어드레스를 식별하는 메타데이터를 포함한다. 예를 들어, 유효성 카운트가 다중평면 레벨에 있다면, 그룹은, 각각이 대응하는 논리 어드레스를 식별하는 메타데이터를 갖는, 16개 TU들을 포함한다. 프로세싱 디바이스는 희생자 블록 스트라이프 내에서의 그것의 상대적인 위치에 기초하여(예컨대, 블록 스트라이프의 물리 어드레스에 대한 오프셋에 기초하여) 그룹에서 각각의 TU의 물리 어드레스를 결정할 수 있다는 것을 주의하자.
블록 515에서, 프로세싱 디바이스는 논리-대-물리 어드레스 색인으로부터 데이터의 단위의 또 다른 물리 어드레스를 획득한다. 이러한 제 2 물리 어드레스는 논리-대-물리 어드레스 변환 테이블에서 데이터의 단위와 연관된 메타데이터에 저장된 논리 어드레스의 색인에 기초한다.
블록 520에서, 프로세싱 디바이스는 단위가 유효 데이터를 갖는지를 결정한다. 그렇게 하기 위해, 프로세싱 디바이스는 데이터의 단위의 오프셋-기반 물리 어드레스(예컨대, 희생자 블록 스트라이프 내에서의 데이터의 위치의 단위로부터의)를 논리-대-물리 색인-기반 물리 어드레스(예컨대, 어드레스 변환 테이블로부터의)에 비교한다. 논리 어드레스로의 기록들이 메모리에서 기존의 데이터를 겹쳐 쓰기보다는 메모리에서의 새로운 위치로 기록되기 때문에(논리-대-물리 어드레스 변환 테이블로의 대응하는 업데이트를 갖고), 오프셋-기반 물리 어드레스가 논리-대-물리 색인-기반 물리 어드레스에 매칭되지 않는다면, 데이터의 단위는 더 이상 유효하지 않다.
블록 525에서, 프로세싱 디바이스는 유효 데이터를 갖는 것으로 결정된 각각의 단위를 타겟 블록 스트라이프 내에서의 새로운 위치로 기록하며 타겟 블록 스트라이프 내에서의 단위의 새로운 물리 어드레스를 테이블 내에서의 대응하는 논리 어드레스 위치로 기록함으로써 각각의 재기록된 단위에 대한 논리-대-물리 어드레스 테이블을 업데이트한다. 일단 희생자 블록 스트라이프에서의 유효 데이터 모두가 이동되었다면, 블록 스트라이프는 삭제될 수 있다.
블록 530에서, 프로세싱 디바이스는 희생자 및 타겟 블록 스트라이프(들)에서 TU들과 연관된 유효성 카운트들을 증분시키고 및/또는 감소시킴으로써 유효성 맵을 업데이트한다. 예를 들어, 유효성 맵이 다중평면 레벨에서 유효성을 추적한 카운터들을 포함하며 희생자 블록 스트라이프에서의 다중평면으로부터의 4개의 유효 TU들을 타겟 블록 스트라이프에서의 다중평면으로 이전하였다면, 프로세싱 디바이스는 희생자 블록 스트라이프에서의 다중평면과 연관된 카운터를 감소시키며 타겟 블록 스트라이프에서의 다중평면과 연관된 카운터를 증분시킨다. 증분 또는 감소는 최소 입도의 데이터의 각각의 이동 후(예컨대, -/+ 1만큼 TU가 이동될 때마다), 카운터 입도 내에서의 데이터의 단위들 모두가 이동되었을 때(예컨대, -/+ X 여기에서 X는 1 내지 카운터 입도 내에서의 데이터의 단위들의 수 사이에 있다), 또는 몇몇 다른 방식으로 발생할 수 있다. 몇몇 실시예들에서, 프로세싱 디바이스는 희생자 블록 스트라이프 내에서 모든 유효 데이터를 이동시키며 블록 스트라이프가 삭제될 때 대응하는 유효성 카운터들 모두를 리셋한다(감소 없이).
도 6은 기계가 여기에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위해 인스트럭션 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 기계를 예시한다. 몇몇 실시예들에서, 컴퓨터 시스템(600)은 메모리 서브시스템(예컨대, 도 1의 메모리 서브시스템(110))을 포함하고, 그것에 결합되거나, 또는 그것을 이용하는 컴퓨터 시스템(예컨대, 도 1의 컴퓨터 호스트 시스템(120))에 대응할 수 있거나 또는 컨트롤러의 동작들을 수행하기 위해(예컨대, 도 1의 회수 매니저 구성요소(113)에 대응하는 동작들을 수행하도록 운영 시스템을 실행하기 위해) 사용될 수 있다. 대안적인 실시예들에서, 기계는 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷에서 다른 기계들로 연결될 수 있다(예컨대, 네트워킹될 수 있다). 기계는 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 기계로서, 또는 클라우드 컴퓨팅 기반시설 또는 환경에서 서버 또는 클라이언트 기계로서, 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량에서 동작할 수 있다.
기계는 개인용 컴퓨터(PC), 태블릿 PC, 셋-탑 박스(STB), 개인용 디지털 보조기(PDA), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 상기 기계에 의해 취해질 동작들을 특정하는 인스트럭션 세트(순차적 또는 기타)를 실행할 수 있는 임의의 기계일 수 있다. 뿐만 아니라, 단일 기계가 예시되지만, 용어 "기계"는 여기에서 논의된 방법들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 기계들의 임의의 모음을 포함하기 위해 취해질 것이다.
예시적인 컴퓨터 시스템(600)은 프로세싱 디바이스(602), 메인 메모리(604)(예컨대, 판독-전용 메모리(ROM), 플래시 메모리, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(RDRAM과 같은 동적 랜덤 액세스 메모리(DRAM) 등), 정적 메모리(606)(예컨대, 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(618)을 포함하며, 이것들은 버스(630)를 통해 서로 통신한다.
프로세싱 디바이스(602)는 마이크로프로세서, 중앙 프로세싱 유닛 등과 같은 하나 이상의 범용 프로세싱 디바이스들을 나타낸다. 보다 특히, 프로세싱 디바이스는 복잡한 인스트럭션 세트 컴퓨팅(CISC) 마이크로프로세서, 축소 인스트럭션 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 인스트럭션 워드(VLIW) 마이크로프로세서, 또는 다른 인스트럭션 세트들을 구현한 프로세서, 또는 인스트럭션 세트들의 조합을 구현한 프로세서들일 수 있다. 프로세싱 디바이스(602)는 또한 애플리케이션 특정 집적 회로(ASIC), 필드 프로그램 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수-목적 프로세싱 디바이스들일 수 있다. 프로세싱 디바이스(602)는 여기에서 논의된 동작들 및 단계들을 수행하기 위한 인스트럭션들(626)을 실행하도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위해 네트워크 인터페이스 디바이스(608)를 추가로 포함할 수 있다.
데이터 저장 시스템(618)은 하나 이상의 세트들의 인스트럭션들(626) 또는 여기에서 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구체화한 소프트웨어가 저장되는 기계-판독 가능한 저장 매체(624)(또는 컴퓨터-판독 가능한 매체로서 알려짐)를 포함할 수 있다. 인스트럭션들(626)은 또한 기계-판독 가능한 저장 미디어를 구성하는 컴퓨터 시스템(600), 메인 메모리(604) 및 프로세싱 디바이스(602)에 의해 그것의 실행 동안 메인 메모리(604) 내에 및/또는 프로세싱 디바이스(602) 내에 완전히 또는 적어도 부분적으로 또한 존재할 수 있다. 기계-판독 가능한 저장 매체(624), 데이터 저장 시스템(618), 및/또는 메인 메모리(604)는 도 1의 메모리 서브시스템(110)에 대응할 수 있다.
일 실시예에서, 인스트럭션들(626)은 회수 매니저 구성요소(예컨대, 도 1의 회수 매니저 구성요소(113))에 대응하는 기능을 구현하기 위한 인스트럭션들을 포함한다. 기계-판독 가능한 저장 매체(624)가 예시적인 실시예에서 단일 매체인 것으로 도시되지만, 용어 "기계-판독 가능한 저장 매체"는 하나 이상의 세트들의 인스트럭션들을 저장하는 단일 매체 또는 다수의 미디어를 포함하는 것으로 취해져야 한다. 용어 "기계-판독 가능한 저장 매체"는 또한 기계에 의한 실행을 위해 인스트럭션 세트를 저장하거나 또는 인코딩할 수 있으며 기계가 본 개시의 방법들 중 임의의 하나 이상을 수행하도록 하는 임의의 매체를 포함하는 것으로 취해질 것이다. 용어 "기계-판독 가능한 저장 매체"는 따라서 이에 제한되지 않지만, 고체-상태 메모리들, 광학 미디어, 및 자기 미디어를 포함하는 것으로 취해질 것이다.
이전 상세한 설명들의 몇몇 부분들은 컴퓨터 메모리 내에서의 데이터 비트들에 대한 동작들의 알고리즘들 및 심볼 표현들에 대하여 제공되었다. 이들 알고리즘 설명들 및 표현들은 그 작업의 본질을 이 기술분야의 다른 숙련자들에게 가장 효과적으로 전달하기 위해 데이터 프로세싱 기술들에서의 숙련자들에 의해 사용된 방식들이다. 알고리즘은 여기에서, 일반적으로, 원하는 결과로 이어지는 동작들의 일관성 있는 시퀀스인 것으로 인지된다. 동작들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 보통, 반드시는 아니지만, 이들 양들은 저장되고, 조합되고, 비교되며, 그 외 조작될 수 있는 전기 또는 자기 신호들의 형태를 취한다. 때로는, 주로 일반적인 사용의 이유들로, 이들 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 나타내는 것이 편리하다는 것이 증명되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되며 단지 이들 양들에 적용된 편리한 라벨들이라는 것을 유념해야 한다. 본 개시는 컴퓨터 시스템의 레지스터들 및 메모리들 내에서의 물리적 (전자) 양들로서 표현된 데이터를 조작하고 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장 시스템들 내에서의 물리적 양들로서 유사하게 표현된 다른 데이터로 변환하는, 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 동작 및 프로세스들을 나타낼 수 있다.
본 개시는 또한 여기에서의 동작들을 수행하기 위한 장치에 관한 것이다. 이러한 장치는 의도된 목적들을 위해 특별하게 해석될 수 있거나, 또는 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성된 범용 컴퓨터를 포함할 수 있다. 예를 들어, 컴퓨터 시스템 또는 컨트롤러(115)와 같은 다른 데이터 프로세싱 시스템은 그것의 프로세서가 메모리 또는 다른 비-일시적 기계-판독 가능한 저장 매체에 포함된 컴퓨터 프로그램(예컨대, 인스트럭션들의 시퀀스)을 실행하는 것에 응답하여 컴퓨터-구현된 방법(500)을 실행할 수 있다. 또 다른 예로서, 컴퓨터 시스템 또는 프로세서(121)와 같은, 다른 데이터 프로세싱 시스템은 그것의 프로세서가 메모리 또는 다른 비-일시적 기계-판독 가능한 저장 매체에 포함된 컴퓨터 프로그램(예컨대, 인스트럭션들의 시퀀스)을 실행하는 것에 응답하여 컴퓨터-구현된 방법(300)을 실행할 수 있다. 이러한 컴퓨터 프로그램은 이에 제한되지 않지만, 각각이 컴퓨터 시스템 버스에 결합되는, 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크들을 포함한 임의의 유형의 디스크, 판독-전용 메모리들(ROM들), 랜덤 액세스 메모리들(RAM들), EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 인스트럭션들을 저장하기에 적합한 임의의 유형의 미디어와 같은, 컴퓨터 판독 가능한 저장 매체에 저장될 수 있다.
여기에서 제공된 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정한 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템들은 여기에서의 교시들에 따라 프로그램들과 함께 사용될 수 있거나, 또는 그것은 방법을 수행하도록 더 특수화된 장치를 구성하는 것이 편리하다는 것을 증명할 수 있다. 다양한 이들 시스템들에 대한 구조는 이하에서의 설명에서 제시된 것으로 나타날 것이다. 또한, 본 개시는 임의의 특정한 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어들은 여기에서 설명된 바와 같이 본 개시의 교시들을 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시는, 본 개시에 따른 프로세스를 수행하도록 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그램하기 위해 사용될 수 있는, 인스트럭션들을 저장한 기계-판독 가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품, 또는 소프트웨어로서 제공될 수 있다. 기계-판독 가능한 매체는 기계(예컨대, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 몇몇 실시예들에서, 기계-판독 가능한(예컨대, 컴퓨터-판독 가능한) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 미디어, 광학 저장 미디어, 플래시 메모리 구성요소들 등과 같은 기계(예컨대, 컴퓨터) 판독 가능한 저장 매체를 포함한다.
앞서 말한 명세서에서, 본 개시의 실시예들은 그것의 특정 예시적인 실시예들을 참조하여 설명되었다. 다양한 수정들이 다음의 청구항들에서 제시된 바와 같이 본 개시의 실시예들의 더 넓은 사상 및 범위로부터 벗어나지 않고 그것에 대해 이루어질 수 있다는 것이 명백할 것이다. 명세서 및 도면들은, 따라서, 제한적인 의미보다는 예시적인 의미로 간주될 것이다.

Claims (14)

  1. 비-일시적 컴퓨터-판독 가능한 저장 매체로서, 컴퓨터 디바이스에 의해 실행 시, 상기 컴퓨터 디바이스가,
    구성 파일로부터 표시자를 판독하되, 상기 표시자는 유효성을 추적할 데이터의 단위들의 입도를 식별하며, 상기 입도는 범위가 하나의 단위의 데이터에서 많은 단위들의 데이터에 이르는 복수의 입도들 중 하나이고;
    메모리 시스템의 프로세싱 디바이스가 복수의 데이터 유효성 카운터들을 사용하여 상기 식별된 입도로 유효성을 추적하도록 구성된 기계-판독 가능한 파일을 생성하되, 상기 복수의 데이터 유효성 카운터들에서의 각각의 데이터 유효성 카운터는 상기 식별된 입도로 데이터의 단위들의 그룹의 유효성을 추적하고;
    상기 기계-판독 가능한 파일을 상기 메모리 시스템의 메모리로 전달하도록 하는 인스트럭션들을 포함하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  2. 청구항 1에 있어서, 상기 입도가 상기 복수의 입도들로부터 제 1 입도를 식별하면, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 논리-대-물리 어드레스 변환 테이블 및 물리-대-논리 어드레스 변환 테이블에 대한 비-휘발성 메모리 어레이에서의 공간을 공급하도록 더 구성되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  3. 청구항 1에 있어서, 상기 입도가 상기 복수의 입도들로부터 제 2 입도를 식별하면, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 논리-대-물리 어드레스 변환 테이블에 대한 비-휘발성 메모리 어레이에서의 공간을 공급하도록 하고 물리-대-논리 어드레스 변환 테이블을 제외하도록 더 구성되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  4. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서, 상기 기계-판독 가능한 파일은 또한 상기 프로세싱 디바이스가 유효성 테이블에 대한 휘발성 메모리에서의 공간을 공급하도록 하되, 상기 유효성 테이블은 상기 복수의 데이터 유효성 카운터들에 각각의 유효성 카운터의 값을 저장하도록 더 구성되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  5. 청구항 4에 있어서, 상기 기계-판독 가능한 파일은 제 1 유효성 카운터에 의해 추적된 상기 데이터의 단위들의 그룹 내에서 데이터의 제 1 데이터의 단위가 스테일(stale)로 플래깅될 때 상기 프로세싱 디바이스가 상기 유효성 테이블에서의 상기 제 1 유효성 카운터의 제 1 값을 업데이트하도록 더 구성되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  6. 청구항 4에 있어서, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 상기 유효성 테이블에 부분적으로 기초하여 비-휘발성 메모리 어레이의 일 부분을 회수하도록 더 구성되는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  7. 청구항 6에 있어서, 상기 비-휘발성 메모리 어레이의 일 부분을 회수하기 위해, 상기 프로세싱 디바이스는,
    상기 유효성 테이블로부터 상기 복수의 유효성 카운터들에서의 제 1 유효성 카운터의 값을 판독하되, 상기 제 1 유효성 카운터는 상기 식별된 입도로 제 1 데이터의 단위들의 그룹의 유효성을 추적하고;
    상기 제 1 유효성 카운터의 상기 값이 0 또는 상기 식별된 입도의 데이터의 단위들의 총 수와 같지 않다면,
    상기 제 1 데이터의 단위들의 그룹과 연관된 메타데이터를 판독하고;
    상기 메타데이터 내에 저장된 상기 제 1 데이터의 단위의 논리 어드레스에 기초하여 논리-대-물리 어드레스 색인으로부터 상기 제 1 데이터의 단위들의 그룹 내에서 상기 제 1 데이터의 단위의 제 1 물리 어드레스를 결정하고;
    상기 제 1 데이터의 단위들의 그룹 내에서의 상기 제 1 데이터의 단위의 위치에 기초하여 상기 제 1 데이터의 단위들의 그룹 내에서 상기 제 1 데이터의 단위의 제 2 물리 어드레스를 결정하고;
    상기 제 1 물리 어드레스가 상기 제 2 물리 어드레스와 매칭된다면, 상기 비-휘발성 메모리 어레이에서 상기 제 1 데이터의 단위를 이동시키도록 하는, 비-일시적 컴퓨터-판독 가능한 저장 매체.
  8. 시스템에 있어서,
    메모리 서브시스템의 프로세싱 디바이스; 및
    상기 프로세싱 디바이스와 동작 가능하게 결합된 컴퓨터 수단으로서,
    구성 파일로부터 표시자를 판독하되, 상기 표시자는 유효성을 추적할 데이터의 단위들의 입도를 식별하고, 상기 입도는 범위가 하나의 단위의 데이터로부터 많은 단위들의 데이터에 이르는 복수의 입도들 중 하나이고;
    상기 프로세싱 디바이스가 복수의 데이터 유효성 카운터들을 사용하여 상기 식별된 입도로 유효성을 추적하도록 구성된 기계-판독 가능한 파일을 생성하되, 상기 복수의 데이터 유효성 카운터들에서 각각의 데이터 유효성 카운터는 상기 식별된 입도로 데이터의 단위들의 그룹의 유효성을 추적하고;
    상기 기계-판독 가능한 파일을 상기 메모리 시스템의 메모리로 전달하도록 하는, 상기 컴퓨터 수단을 포함하는, 시스템.
  9. 청구항 8에 있어서, 상기 입도가 상기 복수의 입도들로부터 제 1 입도를 식별한다면, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 논리-대-물리 어드레스 변환 테이블 및 물리-대-논리 어드레스 변환 테이블에 대한 비-휘발성 메모리 어레이에서의 공간을 공급하도록 더 구성되는, 시스템.
  10. 청구항 8에 있어서, 상기 입도가 상기 복수의 입도들로부터 제 2 입도를 식별한다면, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 논리-대-물리 어드레스 변환 테이블에 대한 비-휘발성 메모리 어레이에서의 공간을 공급하도록 하고 물리-대-논리 어드레스 변환 테이블을 제외하도록 더 구성되는, 시스템.
  11. 청구항 8 내지 청구항 10 중 어느 한 항에 있어서, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 유효성 테이블에 대한 휘발성 메모리에서의 공간을 공급하도록 하되, 상기 유효성 테이블은 상기 복수의 데이터 유효성 카운터들에 각각의 유효성 카운터의 값을 저장하도록 더 구성되는, 시스템.
  12. 청구항 11에 있어서, 상기 기계-판독 가능한 파일은 제 1 유효성 카운터에 의해 추적된 상기 데이터의 단위들의 그룹 내에서의 제 1 데이터의 단위가 스테일로 플래깅될 때 상기 프로세싱 디바이스가 상기 유효성 테이블에서 제 1 유효성 카운터의 제 1 값을 업데이트하도록 더 구성되는, 시스템.
  13. 청구항 11에 있어서, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가 상기 유효성 테이블에 부분적으로 기초하여 비-휘발성 메모리 어레이의 일부분을 회수하도록 더 구성되는, 시스템.
  14. 청구항 13에 있어서, 상기 비-휘발성 메모리 어레이의 일부분을 회수하기 위해, 상기 기계-판독 가능한 파일은 상기 프로세싱 디바이스가,
    상기 유효성 테이블로부터 상기 복수의 유효성 카운터들에서의 제 1 유효성 카운터의 값을 판독하되, 상기 제 1 유효성 카운터는 상기 식별된 입도로 제 1 데이터의 단위들의 그룹의 유효성을 추적하고;
    상기 제 1 유효성 카운터의 값이 0 또는 상기 식별된 입도의 데이터의 단위들의 총 수와 같지 않다면,
    상기 제 1 데이터의 단위들의 그룹과 연관된 메타데이터를 판독하고;
    상기 메타데이터 내에 저장된 상기 제 1 데이터의 단위의 논리 어드레스에 기초하여 논리-대-물리 어드레스 색인으로부터 상기 제 1 데이터의 단위들의 그룹 내에서 상기 제 1 데이터의 단위의 제 1 물리 어드레스를 결정하고;
    상기 제 1 데이터의 단위들의 그룹 내에서의 상기 제 1 데이터의 단위의 위치에 기초하여 상기 제 1 데이터의 단위들의 그룹 내에서 상기 제 1 데이터의 단위의 제 2 물리 어드레스를 결정하고;
    상기 제 1 물리 어드레스가 상기 제 2 물리 어드레스와 매칭된다면, 상기 비-휘발성 메모리 어레이에서 상기 제 1 데이터의 단위를 이동시키도록 더 구성되는, 시스템.
KR1020217003903A 2018-08-10 2019-07-26 비-휘발성 메모리에서 데이터 유효성 추적 KR102281750B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/101,288 2018-08-10
US16/101,288 US10795828B2 (en) 2018-08-10 2018-08-10 Data validity tracking in a non-volatile memory
PCT/US2019/043628 WO2020033167A1 (en) 2018-08-10 2019-07-26 Data validity tracking in a non-volatile memory

Publications (2)

Publication Number Publication Date
KR20210019577A true KR20210019577A (ko) 2021-02-22
KR102281750B1 KR102281750B1 (ko) 2021-07-28

Family

ID=69407017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217003903A KR102281750B1 (ko) 2018-08-10 2019-07-26 비-휘발성 메모리에서 데이터 유효성 추적

Country Status (5)

Country Link
US (2) US10795828B2 (ko)
EP (1) EP3834091A4 (ko)
KR (1) KR102281750B1 (ko)
CN (1) CN112534415B (ko)
WO (1) WO2020033167A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181837A (zh) * 2020-09-30 2021-01-05 深圳市元征科技股份有限公司 一种信息处理方法、信息处理装置及终端设备
CN115617706A (zh) * 2021-07-13 2023-01-17 美光科技公司 优化使用逻辑到物理表搜索的垃圾回收
US11775422B2 (en) * 2021-08-11 2023-10-03 Micron Technology, Inc. Logic remapping techniques for memory devices
WO2023159400A1 (en) * 2022-02-23 2023-08-31 Huawei Technologies Co.,Ltd. Usage driven memory mapping

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060053254A1 (en) * 2002-10-04 2006-03-09 Koninklijke Philips Electronics, N.V. Data processing system and method for operating the same
US20120054746A1 (en) * 2010-08-30 2012-03-01 Vmware, Inc. System software interfaces for space-optimized block devices
US20130227236A1 (en) * 2011-03-18 2013-08-29 Fusion-Io, Inc. Systems and methods for storage allocation
US20140189206A1 (en) * 2012-12-31 2014-07-03 Alan Welsh Sinclair Method and system for managing block reclaim operations in a multi-layer memory
US20150347026A1 (en) * 2014-05-28 2015-12-03 Sandisk Technologies Inc. Method and system for interleaving pieces of a mapping table for a storage device
US20170039203A1 (en) * 2014-04-22 2017-02-09 Huawei Technologies Co., Ltd. File Management Method and File System
US20170300249A1 (en) * 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection
US20180004650A1 (en) * 2016-06-29 2018-01-04 HGST Netherlands B.V. Unified Paging Scheme for Dense and Sparse Translation Tables on Flash Storage Systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2619641B1 (fr) * 1987-08-22 1992-05-07 Nec Corp Dispositif de cache hierarchique
JPH04248645A (ja) * 1991-02-05 1992-09-04 Fujitsu Ltd キャッシュメモリ
US7831783B2 (en) * 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8938563B2 (en) * 2011-12-27 2015-01-20 Kaminario Technologies Ltd. Modified I/Os among storage system layers
US9251055B2 (en) * 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US9141534B2 (en) * 2012-12-14 2015-09-22 Sandisk Technologies Inc. Tracking read accesses to regions of non-volatile memory
US9021188B1 (en) * 2013-03-15 2015-04-28 Virident Systems Inc. Small block write operations in non-volatile memory systems
US9653184B2 (en) * 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
CN107797934B (zh) * 2016-09-05 2022-07-22 北京忆恒创源科技股份有限公司 处理去分配命令的方法与存储设备
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置
US10997066B2 (en) * 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060053254A1 (en) * 2002-10-04 2006-03-09 Koninklijke Philips Electronics, N.V. Data processing system and method for operating the same
US20120054746A1 (en) * 2010-08-30 2012-03-01 Vmware, Inc. System software interfaces for space-optimized block devices
US20130227236A1 (en) * 2011-03-18 2013-08-29 Fusion-Io, Inc. Systems and methods for storage allocation
US20140189206A1 (en) * 2012-12-31 2014-07-03 Alan Welsh Sinclair Method and system for managing block reclaim operations in a multi-layer memory
US20170039203A1 (en) * 2014-04-22 2017-02-09 Huawei Technologies Co., Ltd. File Management Method and File System
US20150347026A1 (en) * 2014-05-28 2015-12-03 Sandisk Technologies Inc. Method and system for interleaving pieces of a mapping table for a storage device
US20170300249A1 (en) * 2016-04-15 2017-10-19 Western Digital Technologies, Inc. Validity tracking for garbage collection
US20180004650A1 (en) * 2016-06-29 2018-01-04 HGST Netherlands B.V. Unified Paging Scheme for Dense and Sparse Translation Tables on Flash Storage Systems

Also Published As

Publication number Publication date
CN112534415A (zh) 2021-03-19
US11586561B2 (en) 2023-02-21
KR102281750B1 (ko) 2021-07-28
US10795828B2 (en) 2020-10-06
EP3834091A4 (en) 2022-04-20
US20200409870A1 (en) 2020-12-31
WO2020033167A1 (en) 2020-02-13
US20200050556A1 (en) 2020-02-13
CN112534415B (zh) 2022-04-01
EP3834091A1 (en) 2021-06-16

Similar Documents

Publication Publication Date Title
JP2023524014A (ja) 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること
US10725930B2 (en) Logical to physical memory address mapping tree
KR102281750B1 (ko) 비-휘발성 메모리에서 데이터 유효성 추적
US10761978B2 (en) Write atomicity management for memory subsystems
US11561902B2 (en) Cache operations in a hybrid dual in-line memory module
US11727969B2 (en) Memory sub-system managing remapping for misaligned memory components
CN113934666B (zh) 数据接口桥的预取
US11971816B2 (en) Host system notification based on entry miss
US11797198B2 (en) Memory instruction for memory tiers
CN113012741A (zh) 用于存储器子系统的媒体管理的弹性缓冲器
CN114077404B (zh) 使存储器单元与主机系统解除关联
CN113010448B (zh) 维持用于存储器子系统的媒体管理的序列性
CN113010447A (zh) 用于存储器子系统的媒体管理的快照读取优化
CN115729858A (zh) 存储器中用于数据分享的散列操作

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant