KR102649184B1 - 최적의 패리티 공유 구역을 위한 식별된 구역 - Google Patents

최적의 패리티 공유 구역을 위한 식별된 구역 Download PDF

Info

Publication number
KR102649184B1
KR102649184B1 KR1020210082727A KR20210082727A KR102649184B1 KR 102649184 B1 KR102649184 B1 KR 102649184B1 KR 1020210082727 A KR1020210082727 A KR 1020210082727A KR 20210082727 A KR20210082727 A KR 20210082727A KR 102649184 B1 KR102649184 B1 KR 102649184B1
Authority
KR
South Korea
Prior art keywords
zones
channels
zone
storage device
memory
Prior art date
Application number
KR1020210082727A
Other languages
English (en)
Other versions
KR20220033415A (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 KR20220033415A publication Critical patent/KR20220033415A/ko
Application granted granted Critical
Publication of KR102649184B1 publication Critical patent/KR102649184B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

저장 디바이스들은 구역들에 걸쳐 패리티 블록들을 공유하기 위한 구역들을 식별할 수 있다. 활성 구역들은 유사한 구역 속성들을 갖는 다수의 활성 구역들에 걸쳐 분리될 수 있고, 패리티 버퍼들이 공유될 수 있도록 그룹화될 수 있다. 최적의 패리티 공유를 위한 구역들을 식별함으로써, 저장 디바이스들 및 시스템들은: (i) 초기 구역 기록들 동안(즉, 데이터가 페이지들에 직접 기록되고 구역들에는 기록되지 않을 때의 소거된 상태 동안) 모든 구역들에 대한 독립적인 패리티를 유지할 수 있고, (ii) 구역 기록 포인터들 및 구역들에서의 기록들의 빈도를 추적할 수 있고, (iii) 더 높은 상관관계를 갖는 구역들을 분리하고 이들을 함께 그룹화할 수 있고, (iv) 함께 그리고 동일한 속도로 기록되는 구역들을 포함하는, 높은 상관관계들을 갖는 구역들이 패리티 버퍼들을 공유하도록, 다양한 채널들에 걸쳐 배치된 이들 그룹화들을 활용할 수 있고, (v) 모든 구역들에 걸친 최적의 패리티 공유를 위한 개개의 패리티 버퍼들을 로딩 및 XOR할 수 있다.

Description

최적의 패리티 공유 구역을 위한 식별된 구역{IDENTIFIED ZONES FOR OPTIMAL PARITY SHARING ZONES}
우선권
본 출원은 전체적으로 본 명세서에 포함된, 2020년 9월 9일자로 출원된 미국 가출원 제63/076,233호에 대한 이득 및 우선권을 주장한다.
기술분야
본 개시내용의 실시예들은 저장 디바이스들에 관한 것이다. 보다 구체적으로, 실시예들은 구역(zone)들에 걸친 최적의 패리티 공유를 위한 식별된 구역들을 갖는 저장 디바이스들에 관한 것이다.
비휘발성 메모리는 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM)를 포함하는 많은 형태들로 생산된다. EEPROM은 한 번에 하나의 바이트 대신에 블록들로 소거 및 재프로그래밍될 수 있다. 전형적인 플래시 메모리는 다수의 메모리 셀들을 포함하는 메모리 어레이를 포함한다. 셀들은 보통 "소거 블록들"로 알려진 섹션들로 그룹화된다. 소거 블록 내의 셀들 각각은 전기적으로 프로그래밍될 수 있다. 소거 블록 내의 모든 메모리 셀들은 단일 동작으로 소거된다.
플래시 메모리 디바이스들은 컴퓨터 시스템들에서 일차 및 이차 저장소로 널리 사용된다. 플래시 메모리의 밀도 및 크기는 반도체 스케일링에 따라 증가하였다. 결과적으로, 셀 크기가 감소되었고, 이는 차세대 상용 플래시 메모리 디바이스들에 대한 낮은 고유 내구성을 초래한다. 플래시 메모리 디바이스들의 낮은 내구성은 플래시 메모리들이 사용될 수 있는 응용들을 심하게 제한할 수 있고, 솔리드 스테이트 드라이브(SSD) 저장 디바이스들에 대해 심각한 영향을 줄 수 있다.
보다 최근에는, 기록 증폭을 감소시키기 위한 접근법들을 포함하는, SSD들의 내구성을 개선하기 위한 접근법들은, 클러스터링 및 구역 맵들의 사용(또는 구역 매핑)을 포함한다. 클러스터링은 테이블의 관련 데이터를 인접한 온-디스크 데이터 블록(contiguous on-disk data block)들에서 정렬된 순서로 저장하는 것을 지칭한다. 이어서, 클러스터링된 데이터를 온-디스크에 저장된 것으로서 인덱싱하기 위해 구역 맵이 추가된다. 구체적으로, 구역 맵은 클러스터링된 데이터를, 인접한 디스크 블록들의 인접한 온-디스크 "영역(region)들" 또는 "구역(zone)들"로 분할한다. 구역 매핑은 SSD들이 데이터를 물리적 매체에 적절하게 매핑할 수 있게 한다.
구역 매핑의 경우, 호스트들은 구역화된 커맨드들의 최소의 레이턴시들을 갖는 SSD 디바이스들의 전체 대역폭을 활용할 필요가 있다. 기존의 접근법들은 전형적으로, 구역 매핑을 위해 패리티 버퍼들을 활용하는 것 및 구역들의 물리적 위치에 기초하여 그들을 공유하는 것을 수반한다. 그러나, 이들 접근법은 전형적으로 단일-레벨 셀(single-level cell, SLC) 캐시로부터의 연속적인 패리티 로딩 및 스래싱(thrashing)을 포함하는, 바람직하지 않은 결과들을 갖는다. 실제로, SLC에 대한 더 높은 기록 동작들은 더 높은 기록 증폭으로 이어져, DRAM 버퍼들의 비효율적인 사용을 초래한다. 따라서, SSD들의 내구성을 연장하는 내구성 관리 기법들이 요구된다.
본 개시내용의 여러 실시예들의 상기 및 다른 양태들, 특징들, 및 이점들은 도면의 하기 여러 도면들과 관련하여 제시된 하기 설명으로부터 더욱 명백해질 것이다.
도 1a는 본 개시내용의 일 실시예에 따른, 비휘발성 메모리 시스템의 예시적인 블록도를 도시한다.
도 1b는 본 개시내용의 일 실시예에 따른, 저장 시스템을 갖는 저장 모듈의 예시적인 블록도를 도시한다.
도 1c는 본 개시내용의 일 실시예에 따른, 계층적 저장 시스템의 예시적인 블록도를 도시한다.
도 2는 본 개시내용의 일 실시예에 따른, 호스트-컴퓨팅 디바이스 및 저장 디바이스를 갖는 시스템의 개략적인 블록도를 도시한다.
도 3a는 본 개시내용의 일 실시예에 따른, 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하도록 구성된 저장 디바이스의 제어기의 일 실시예의 개략적인 블록도를 도시한다.
도 3b는 본 개시내용의 일 실시예에 따른, 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하도록 구성된 저장 디바이스의 비휘발성 메모리 디바이스의 일 실시예의 개략적인 블록도를 도시한다.
도 4는 본 개시내용의 일 실시예에 따른, 메모리 구조 내의 평면들의 개략적인 블록도를 도시한다.
도 5a 내지 도 5e는 본 개시내용의 일 실시예에 따른, 도 6의 프로세스 동안 제어기에 의해 사용되는, 블록들, 구역들, 패리티들, 및 다이들을 포함하는, 구역화된 맵 구조들을 도시하는 예시적인 블록도들을 도시한다.
도 6은 본 개시내용의 일 실시예에 따른, 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하기 위한 프로세스를 도시하는 흐름도를 도시한다.
도 7a 내지 도 7d는 본 개시내용의 일 실시예에 따른, 블록들, 구역들, 패리티들, 및 다이들을 포함하는, 구역화된 맵 구조들을 도시하는 예시적인 블록도들을 도시한다.
도 8a 및 도 8b는 본 개시내용의 일 실시예에 따른, 블록들, 구역들, 패리티들, 및 다이들을 포함하는, 구역화된 맵 구조들을 도시하는 예시적인 블록도들을 도시한다.
본 명세서에 설명된 실시예들은 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하기 위한 저장 디바이스들, 시스템들, 및 관련 방법들에 관한 것이다. 아래에서 더 상세히 설명되는 바와 같이, 이들 실시예는 또한 유사한 구역 속성들을 갖는 다수의 활성 구역들(즉, 더 높은 상관관계를 갖는 구역들)을 분리하는(segregate) 것, 및 패리티 버퍼들을 공유하기 위해 이들을 그룹화하는 것을 포함한다. 최적의 패리티 공유를 위한 구역들을 식별함으로써, 이들 실시예는 저장 디바이스들 및 시스템들이: (i) 초기 구역 기록들 동안(즉, 구역들이 패리티를 공유하고 있지 않는 초기 소거 상태) 모든 구역들에 대한 독립적인 패리티를 유지할 수 있게 하고, (ii) 구역 기록 포인터들 및 구역들에서의 기록들의 빈도를 추적할 수 있게 하고, (iii) 더 높은 상관관계를 갖는 구역들을 분리하고 이들을 함께 그룹화할 수 있게 하고, (iv) 더 높은 상관관계를 갖는 구역들(즉, 함께 그리고 동일한 속도로 기록되는 구역들)이 패리티 버퍼들을 공유하도록, 다양한 채널들에 걸쳐 배치된 이들 그룹들을 활용할 수 있게 하고, (v) 모든 구역들에 걸친 최적의 패리티 공유를 위한 개개의 패리티 버퍼들을 로딩 및 XOR할 수 있게 한다.
그러한 실시예들은 궁극적으로, DRAM 버퍼들의 사용을 최적화하고 SLC 캐시와 DRAM 사이의 패리티 로딩 및 스래싱을 감소시키는 이점으로 저장 디바이스들 및 시스템들을 용이하게 한다. 또한, 연속적인 패리티 로딩 및 스래싱의 감소는 추가로, 아래의 실시예들에서 설명되는 바와 같이, 기록 증폭을 낮추고 저장 디바이스들 및 시스템들의 전체 성능을 증가시킬 수 있다.
본 개시내용의 양태들은 장치, 시스템, 방법, 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 따라서, 본 개시내용의 양태들은 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함), 또는 소프트웨어 양태와 하드웨어 양태를 조합한 실시예의 형태를 취할 수 있는데, 이들은 모두 일반적으로 본 명세서에서 "기능", "모듈", "장치", 또는 "시스템"으로 지칭될 수 있다. 게다가, 본 개시내용의 양태는 컴퓨터 판독가능 및/또는 실행가능 프로그램 코드를 저장하는 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체로 구체화되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 본 명세서에 설명되는 기능 유닛들 중 많은 것이 그들의 구현 독립성을 보다 구체적으로 강조하기 위해 기능들로서 라벨링되었다. 예를 들어, 기능은 맞춤형 VLSI 회로 또는 게이트 어레이, 기성(off-the-shelf) 반도체, 예컨대 로직 칩, 트랜지스터, 또는 다른 별개의 컴포넌트를 포함하는 하드웨어 회로로서 구현될 수 있다. 기능은 또한, 프로그램가능 하드웨어 디바이스에서, 예컨대 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 로직, 프로그램가능 로직 디바이스 등을 통해 구현될 수 있다.
기능들은, 또한, 다양한 유형의 프로세서들에 의한 실행을 위해 적어도 부분적으로 소프트웨어로 구현될 수 있다. 실행가능 코드의 식별된 기능은, 예를 들어, 컴퓨터 명령어들의 하나 이상의 물리적 또는 로직 블록들을 포함할 수 있는데, 이들은 예를 들어 객체, 절차, 또는 기능으로서 편성될 수 있다. 그럼에도 불구하고, 식별된 기능의 실행가능 코드들은 물리적으로 함께 위치될 필요가 없지만, 함께 논리적으로 접속될 때, 기능을 포함하고 기능에 대한 진술된 목적을 달성하는, 상이한 위치들에 저장된 이종의 명령어들을 포함할 수 있다.
실제로, 실행가능 코드의 기능은 단일 명령어, 또는 많은 명령어들을 포함할 수 있고, 심지어, 여러 상이한 코드 세그먼트들을 통하여, 상이한 프로그램들 사이에, 여러 저장 디바이스들에 걸쳐서 등으로 분배될 수 있다. 기능 또는 기능의 부분들이 소프트웨어로 구현되는 경우, 소프트웨어 부분들은 하나 이상의 컴퓨터 판독가능 및/또는 실행가능 저장 매체에 저장될 수 있다. 하나 이상의 컴퓨터 판독가능 저장 매체들의 임의의 조합이 활용될 수 있다. 컴퓨터 판독가능 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것들의 임의의 적합한 조합을 포함할 수 있지만 이들로 제한되지 않으며, 전파 신호는 포함하지 않을 것이다. 본 명세서의 맥락에서, 컴퓨터 판독가능 및/또는 실행가능 저장 매체는 명령어 실행 시스템, 장치, 프로세서, 또는 디바이스에 의해 또는 그와 연결하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형적(tangible) 및/또는 비일시적 매체일 수 있다.
본 개시내용의 양태들을 위한 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 파이산(Python), 자바(Java), 스몰토크(Smalltalk), C++, C#, 오브젝티브 C(Objective C) 등과 같은 객체 지향 프로그래밍 언어, 종래의 절차형 프로그래밍 언어, 예컨대 "C" 프로그래밍 언어, 스크립팅 프로그래밍(scripting programming) 언어, 및/또는 다른 유사한 프로그래밍 언어를 포함한 하나 이상의 프로그래밍 언어들의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 데이터 네트워크 등을 통해 사용자의 컴퓨터 및/또는 원격 컴퓨터 또는 서버 중 하나 이상에서 부분적으로 또는 전체적으로 실행될 수 있다.
본 명세서에서 사용되는 바와 같은 컴포넌트는 유형적, 물리적, 비일시적 디바이스를 포함한다. 예를 들어, 컴포넌트는 맞춤형 VLSI 회로, 게이트 어레이, 또는 다른 집적 회로를 포함한 하드웨어 로직 회로; 기성 반도체, 예컨대 로직 칩, 트랜지스터, 또는 다른 별개의 디바이스; 및/또는 다른 기계적 또는 전기적 디바이스로서 구현될 수 있다. 컴포넌트는, 또한, 프로그램가능 하드웨어 디바이스, 예컨대 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 로직, 프로그램가능 로직 디바이스 등으로 구현될 수 있다. 컴포넌트는 PCB(printed circuit board) 등의 전기 라인을 통해 하나 이상의 다른 컴포넌트와 전기적으로 통신하는 하나 이상의 실리콘 집적 회로 디바이스(예컨대, 칩, 다이, 다이 평면, 패키지) 또는 다른 별개의 전기 디바이스를 포함할 수 있다. 본 명세서에 설명되는 기능들 및/또는 모듈들 각각은, 소정 실시예들에서, 대안적으로, 컴포넌트에 의해 구체화될 수 있거나 또는 컴포넌트로서 구현될 수 있다.
본 명세서에서 사용되는 바와 같은 회로는 전류를 위한 하나 이상의 경로를 제공하는 하나 이상의 전기 및/또는 전자 컴포넌트들의 세트를 포함한다. 소정 실시예들에서, 회로는 전류를 위한 귀환 경로를 포함할 수 있어서, 회로는 폐루프이다. 그러나, 다른 실시예에서, 전류를 위한 귀환 경로를 포함하지 않는 컴포넌트들의 세트가 회로(예를 들어, 개루프)로 지칭될 수 있다. 예를 들어, 집적 회로는 집적 회로가 (전류를 위한 귀환 경로로서) 접지에 결합되는지 여부에 관계없이 회로로 지칭될 수 있다. 다양한 실시예들에서, 회로는 집적 회로의 일부, 집적 회로, 집적 회로들의 세트, 집적 회로 디바이스를 갖거나 갖지 않는 비통합 전기 및/또는 전기 컴포넌트들의 세트 등을 포함할 수 있다. 일 실시예에서, 회로는 맞춤형 VLSI 회로, 게이트 어레이, 로직 회로, 또는 다른 집적 회로; 기성 반도체, 예컨대 로직 칩, 트랜지스터, 또는 다른 별개의 디바이스; 및/또는 다른 기계적 또는 전기적 디바이스를 포함할 수 있다. 회로는 또한 프로그램가능 하드웨어 디바이스, 예컨대 필드 프로그램가능 게이트 어레이, 프로그램가능 어레이 로직, 프로그램가능 로직 디바이스 등에서 합성 회로로서(예를 들어, 펌웨어, 넷리스트 등으로서) 구현될 수 있다. 회로는 PCB(printed circuit board) 등의 전기 라인을 통해 하나 이상의 다른 컴포넌트와 전기적으로 통신하는 하나 이상의 실리콘 집적 회로 디바이스(예컨대, 칩, 다이, 다이 평면, 패키지) 또는 다른 별개의 전기 디바이스를 포함할 수 있다. 본 명세서에 설명되는 기능들 및/또는 모듈들 각각은, 소정 실시예들에서, 회로에 의해 구체화될 수 있거나 또는 회로로서 구현될 수 있다.
본 명세서 전반에 걸친 "하나의 실시예", "실시예", 또는 유사한 언어에 대한 언급은 그 실시예와 관련하여 설명되는 특정한 특징, 구조, 또는 특성이 본 개시내용의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서 전반에 걸친 "하나의 실시예에서", "실시예에서", 그리고 유사한 언어의 문구의 등장은 모든 문구가 동일한 실시예를 지칭할 수 있지만 반드시 그러한 것은 아니며, 명시적으로 달리 특정되지 않는다면 "모든 실시예는 아니지만 하나 이상의 실시예"를 의미할 수 있다. 용어 "포함하는(including, comprising)", "갖는(having)" 및 이들의 변형은 명시적으로 달리 특정되지 않는다면 "~를 포함하지만 그로 제한되지 않음"을 의미한다. 아이템들의 열거된 목록은 명시적으로 달리 특정되지 않는다면 아이템들 중 임의의 것 또는 전부가 상호 배타적이고/이거나 상호 포괄적임을 암시하지 않는다. 단수형("a", "an", 및 "the")의 용어는, 또한, 명시적으로 달리 특정되지 않는다면, "하나 이상"을 지칭한다.
또한, 본 명세서에 사용되는 바와 같이, 데이터를 판독, 기록, 저장, 버퍼링, 및/또는 이송하는 것에 대한 언급은 데이터의 전체, 데이터의 일부분, 데이터의 세트, 및/또는 데이터의 서브세트를 포함할 수 있다. 마찬가지로, 비-호스트 데이터를 판독, 기록, 저장, 버퍼링, 및/또는 이송하는 것에 대한 언급은 비-호스트 데이터의 전체, 비-호스트 데이터의 일부분, 비-호스트 데이터의 세트, 및/또는 비-호스트 데이터의 서브세트를 포함할 수 있다.
마지막으로, 본 명세서에 사용되는 바와 같은 용어들 "또는" 및 "및/또는"은 임의의 하나 또는 임의의 조합을 포함하거나 의미하는 것으로 해석되어야 한다. 따라서, "A, B 또는 C" 또는 "A, B 및/또는 C"는, "A; B; C; A와 B; A와 C; B와 C; A, B 및 C 중 임의의 하나"를 의미한다. 이러한 정의에 대한 예외는, 요소들, 기능들, 단계들, 또는 작용들의 조합이 일부 방식으로 본질적으로 상호 배타적일 때에만 발생할 것이다.
본 개시내용의 양태들은 본 개시내용의 실시예들에 따른 방법, 장치, 시스템, 및 컴퓨터 프로그램 제품의 개략적인 흐름도 및/또는 개략적인 블록도를 참조하여 하기에 설명된다. 개략적인 흐름도 및/또는 개략적인 블록도의 각각의 블록, 및 개략적인 흐름도 및/또는 개략적인 블록도 내의 블록들의 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있음이 이해될 것이다. 이들 컴퓨터 프로그램 명령어는 머신을 생성하도록 컴퓨터의 프로세서 또는 다른 프로그램가능 데이터 처리 장치에 제공되어, 프로세서 또는 다른 프로그램가능 데이터 처리 장치를 통해 실행되는 명령어들이 개략적인 흐름도 및/또는 개략적인 블록도의 블록 또는 블록들에서 특정된 기능 및/또는 작용을 구현하기 위한 수단을 생성하게 할 수 있다.
또한, 일부 대안적인 구현예들에서, 블록에서 언급된 기능은 도면에서 언급된 순서를 벗어나서 발생할 수 있음에 유의해야 한다. 예를 들어, 연속으로 도시된 2개의 블록이 사실상 실질적으로 동시에 실행될 수 있거나, 또는 블록이, 때때로, 수반된 기능성에 따라, 역순으로 실행될 수 있다. 예시된 도면의 하나 이상의 블록 또는 그들의 일부에 대해 함수, 로직, 또는 효과 면에서 등가인 다른 단계 및 방법이 고려될 수 있다. 다양한 화살표 유형 및 라인 유형이 흐름도 및/또는 블록도에서 채용될 수 있지만, 이들은 대응하는 실시예의 범위를 제한하지 않는 것으로 이해된다. 예를 들어, 화살표는 도시된 실시예의 열거된 단계들 사이의 특정되지 않은 지속기간의 대기 또는 모니터링 기간을 나타낼 수 있다.
하기의 상세한 설명에서, 첨부 도면들을 참조한다. 전술한 발명의내용은 단지 예시적인 것이며, 어떠한 방식으로든 제한하는 것으로 의도되지 않는다. 전술된 예시적인 양태, 실시예, 및 특징 외에도, 추가의 양태, 실시예, 및 특징이 도면 및 하기의 상세한 설명을 참조하여 명백해질 것이다. 각각의 도면에서의 요소에 대한 설명은 선행 도면의 요소를 지칭할 수 있다. 유사한 도면 부호들은 유사한 요소들의 대안적인 실시예들을 비롯해, 도면들 내의 유사한 요소들을 지시할 수 있다.
본 명세서에 개시된 시스템들 및 방법들이 사용될 수 있는 적합한 비휘발성 메모리 배열들의 예들이 도 1a 내지 도 1c에 도시되어 있다. 즉, 하기의 실시예들은 최소 QoS 요건들에 기초하여 다양한 호스트 애플리케이션들(예컨대, 데이터 스트림들)을 동적으로 관리하기 위한 비휘발성 메모리 시스템들 및 디바이스들 및 관련 방법들을 개시한다. 이들 및 다른 실시예들을 참조하기 전에, 하기의 단락들은 그러한 실시예들에서 사용될 수 있는 일부 예시적인 비휘발성 메모리 시스템들, 저장 디바이스들, 및 저장 모듈들을 제공한다. 비휘발성 메모리 시스템들, 디바이스들, 및/또는 저장 모듈들의 임의의 다른 적합한 실시예들이, 제한 없이, 단독으로 또는 그와 조합하여 사용될 수 있다는 것이 이해될 것이다.
이제 도 1a를 참조하면, 일부 실시예들에 따른, 비휘발성 메모리 시스템(100)의 예시적인 블록도가 도시된다. 비휘발성 메모리 시스템(100)은 제어기(102), 및 하나 이상의 비휘발성 메모리 디바이스(104)(NV 메모리, 메모리, 메모리 다이들 등으로도 지칭됨)로 구성될 수 있는 비휘발성 메모리를 갖는 저장 디바이스(120)(또는 비휘발성 저장 디바이스)를 포함한다. 일 실시예에서, 비휘발성 메모리 디바이스(104)는, 단일 반도체 기판 상에 형성되는 비휘발성 메모리 셀들의 세트 - 및 그러한 비휘발성 메모리 셀들의 물리적 동작을 관리하기 위한 연관된 회로부(또는 로직) - 를 포함할 수 있다.
일 실시예에서, 제어기(102)는 호스트(112)와 인터페이싱하고, 판독, 프로그래밍, 및 소거 동작들을 위한 커맨드 시퀀스들을 비휘발성 메모리 디바이스(104)로 송신한다. 제어기(102)는 프로세싱 회로부, 마이크로프로세서 또는 프로세서, 및 예를 들어, (마이크로)프로세서, 로직 게이트들, 스위치들, 주문형 집적 회로(ASIC), 프로그램가능 논리 제어기, 및 임베디드 마이크로컨트롤러에 의해 실행가능한 컴퓨터 판독가능 프로그램 코드(예를 들어, 소프트웨어 또는 펌웨어)를 저장하는 컴퓨터 판독가능 매체의 형태를 취할 수 있다. 제어기(102)는 아래에서 설명되고 흐름도들에 도시된 다양한 기능들을 수행하기 위한 다양한 하드웨어 및/또는 펌웨어로 구성될 수 있다. 또한, 제어기(102) 내부 또는 외부에 있는 것으로 도시된 컴포넌트들 중 일부는 제어기 외부 또는 내부에 각각 저장될 수 있고, 다른 컴포넌트들이 사용될 수 있다.
일부 실시예들에서, 제어기(102)는 플래시 메모리 제어기 등일 수 있다. 플래시 메모리 제어기는, 플래시 메모리 상에 저장된 데이터를 관리하고 컴퓨터 또는 전자 디바이스와 같은 호스트와 통신하는 디바이스일 수 있다. 플래시 메모리 제어기는 본 명세서에서 설명되는 특정 기능성에 더하여 기능성을 가질 수 있다. 예를 들어, 플래시 메모리 제어기는 메모리가 적절하게 동작하고 있음을 보장하도록, 불량한(bad) 플래시 메모리 셀들을 매핑 아웃(mapping out)하도록, 그리고 향후의 결함(failed) 셀들을 대신하기 위한 여분의 셀들을 할당하도록 플래시 메모리를 포맷화할 수 있다. 여분의 셀들의 일부는, 플래시 메모리 제어기를 동작시키고 다른 특징들을 구현하기 위하여 펌웨어를 보유하는 데 사용될 수 있다. 동작 시, 호스트가 플래시 메모리로부터 데이터를 판독하거나 그에 데이터를 기록할 필요가 있는 경우, 이는 플래시 메모리 제어기와 통신할 것이다. 호스트가, 데이터가 판독/기록될 논리적 어드레스를 제공하는 경우, 플래시 메모리 제어기는 호스트로부터 수신된 논리적 어드레스를 플래시 메모리 내의 물리적 어드레스로 변환할 수 있다. 대안적으로, 호스트는 물리적 어드레스를 제공할 수 있다는 것에 유의한다. 플래시 메모리 제어기는 또한, 웨어 레벨링(wear leveling)(즉, 그렇지 않으면 반복적으로 기록될 메모리의 특정 블록들의 웨어링(wearing)을 피하도록 기록들을 분산시킴), 가비지 수집(즉, 블록이 풀(full)이 된 후에, 데이터의 유효 페이지들만을 새로운 블록으로 이동시켜, 풀 블록이 소거 및 재사용될 수 있게 함), 및/또는 임의의 다른 유사한 메모리 관리 기능들과 같은, 그러나 이들로 제한되지 않는, 다양한 메모리 관리 기능들을 수행할 수 있다.
일부 실시예들에서, 비휘발성 메모리 디바이스(104)는 NAND 플래시 메모리 셀들 및/또는 NOR 플래시 메모리 셀들을 포함하는 임의의 적합한 저장 디바이스, 매체, 또는 요소를 포함할 수 있다. 메모리 셀들은 솔리드 스테이트(예컨대, 플래시) 메모리 셀들의 형태를 취할 수 있고, 1회 프로그램가능, 수회 프로그램가능, 또는 여러 번 프로그램가능할 수 있다. 추가적으로, 전술한 바와 같이, 메모리 셀들은 또한 단일-레벨 셀들(SLC들), 다중-레벨 셀들(MLC들), 삼중-레벨 셀들(TLC들), 쿼드-레벨 셀들(QLC들)일 수 있거나, 또는 현재 알려져 있거나 나중에 개발되는 임의의 다른 메모리 기술들을 사용할 수 있다. 또한, 메모리 셀들은, 제한 없이, 2차원 또는 3차원 구성으로 배열될 수 있다.
제어기(102)와 비휘발성 메모리 디바이스(104) 사이의 인터페이스는 더블 데이터 레이트(double data rate, DDR) 인터페이스 등과 같은 임의의 적합한 플래시 인터페이스일 수 있다. 일 실시예에서, 비휘발성 메모리 시스템(100)은 카드 기반 시스템, 예컨대, SD(시큐어 디지털) 또는 마이크로 시큐어 디지털(micro-SD) 카드일 수 있다. 대안적인 실시예에서, 비휘발성 메모리 시스템(100)은 임베디드 메모리 시스템의 일부일 수 있다.
또한, 도 1a에 도시된 바와 같이, 비휘발성 메모리 시스템(100)은 제어기(102)와 비휘발성 메모리 디바이스(104) 사이에 단일 채널을 포함한다는 것에 유의해야 한다. 예시된 실시예가 단일-메모리 채널을 도시하지만, 본 개시내용의 사상 및 범주를 넘어서지 않고 임의의 수의 채널들이 활용될 수 있다. 예를 들어, 일부 NAND 메모리 시스템 아키텍처들에서, 2개, 4개, 8개 또는 그 이상의 NAND 채널들이, 제어기 능력들에 기초하여, 제어기(102)와 NAND 메모리 디바이스(들) 사이에 존재할 수 있다. 이와 같이, 도면들에 단일 채널이 도시되어 있더라도, 본 명세서에서 설명된 임의의 다른 실시예들에는, 제어기와 메모리 다이(들) 사이에 단일 채널 및/또는 2개 이상의 채널들이 존재할 수 있다.
일부 실시예들에서, 비휘발성 메모리 디바이스(104) 및 제어기(102)와 함께 저장 디바이스(120)는 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별할 수 있도록 구성될 수 있다. 예를 들어, 아래의 실시예들에서 더 상세히 설명되는 바와 같이(예컨대, 적어도 도 5a 내지 도 5e, 도 6, 도 7a 내지 도 7d, 도 8a 및 도 8b에서), 제어기(102), 비휘발성 메모리 디바이스(104), 및 저장 디바이스(120) 중 하나 이상은: (i) 초기 구역 기록들 동안 모든 구역들에 대한 독립적인 패리티를 유지하고(즉, 초기 소거된 상태 동안, 데이터는 초기에 페이지들 또는 워드 라인들에 직접 기록되고 있음(예컨대, 흔히 크기가 4 내지 8 KB로)), (ii) 구역 기록 포인터들, 기록들의 빈도, 및 동시에 함께 기록된 구역들을 추적하고, (iii) 함께 그리고 동일한 속도로 기록되는 구역들, 즉, 더 높은 상관관계를 갖는 구역들을 분리하고 이들을 상이한 그룹들로 그룹화하고, (iv) 더 높은 상관관계를 갖는 구역들이 패리티 버퍼들을 공유하도록 다양한 채널들에 걸쳐 배치되는 이들 그룹들을 활용하고, (v) 모든 구역들에 걸친 최적의 패리티 공유를 위해 XOR된 개개의 패리티 버퍼들을 로딩하도록 구성될 수 있다.
이제 도 1b를 참조하면, 일부 실시예들에 따른, 저장 모듈(200)의 예시적인 블록도가 도시된다. 저장 모듈(200)은 일부 실시예들에 따른, 복수의 저장 디바이스들(120)을 갖는 저장 시스템(204)을 포함한다. 이와 같이, 저장 모듈(200)은 도 1a의 비휘발성 메모리 시스템(100)과 유사한 하나 이상의 비휘발성 메모리 시스템들을 포함할 수 있다. 일 실시예에서, 저장 모듈(200)은 저장 디바이스들(120), 비휘발성 메모리 디바이스들(104), 및 제어기들(102)로 구성된 비휘발성 메모리 시스템들을 포함하는 저장 시스템(204), 및 호스트(111)와 인터페이싱하는 저장 제어기(202)를 포함할 수 있다. 저장 제어기(202)와 비휘발성 메모리 시스템들(또는 저장 디바이스들(120)) 사이의 인터페이스는 SATA(serial advanced technology attachment) 또는 PCIe(peripheral component interface express) 인터페이스와 같은 버스 인터페이스일 수 있다. 일부 실시예들에서, 저장 모듈(200)은 랩톱 컴퓨터들 및 태블릿 컴퓨터들과 같은 휴대용 컴퓨팅 디바이스들에서 발견되는 바와 같은, 솔리드 스테이트 드라이브(SSD)일 수 있다.
이제 도 1c를 참조하면, 일부 실시예들에 따른, 계층적 저장 시스템(210)의 예시적인 블록도가 도시된다. 일 실시예에서, 계층적 저장 시스템(210)은 복수의 저장 제어기들(202)을 포함할 수 있으며, 이들 각각은 각자의 저장 시스템(204)을 제어한다. 또한, 계층적 저장 시스템(210)은 버스 인터페이스(또는 이와 유사한 것)를 통해 계층적 저장 시스템(210) 내의 메모리들에 액세스할 수 있는 하나 이상의 호스트들(112)(또는 호스트시스템들)에 통신가능하게 결합될 수 있다. 일 실시예에서, 버스 인터페이스는 NVMe(non-volatile memory express), FCoE(fiber channel over Ethernet) 인터페이스 등일 수 있다. 일 실시예에서, 도 1c에 도시된 계층적 저장 시스템(210)은, 데이터 센터에서 또는 대용량 저장이 필요한 다른 위치들에서 발견되는 바와 같이, 다수의 호스트 컴퓨터들에 의해 액세스가능한 랙 장착가능 대용량 저장 시스템일 수 있다.
도 2는 일부 실시예들에 따른, 호스트-컴퓨팅 디바이스(205) 및 저장 시스템(224)을 갖는 컴퓨팅 시스템(201)의 개략적인 블록도를 도시한다. 컴퓨팅 시스템(201)은 제어기(102)를 통해 호스트-컴퓨팅 디바이스(205)에 통신가능하게 결합되는 저장 시스템(224) 내의 하나 이상의 저장 디바이스들(120)을 포함할 수 있다. 호스트-컴퓨팅 디바이스(205)는 도 1a 내지 도 1c와 관련하여 전술된 호스트(112)와 유사할 수 있다. 호스트-컴퓨팅 디바이스(205)는 프로세서(211), 휘발성 메모리(212), 및 통신 인터페이스(213)를 포함할 수 있다. 프로세서(211)는 하나 이상의 중앙 프로세싱 유닛, 하나 이상의 범용 프로세서, 하나 이상의 특수 용도 프로세서, 하나 이상의 가상 프로세서(예컨대, 호스트-컴퓨팅 디바이스(205)가 호스트 내에서 동작하는 가상 머신일 수 있음), 하나 이상의 프로세서 코어 등을 포함할 수 있다. 통신 인터페이스(213)는 호스트-컴퓨팅 디바이스(205) 및/또는 저장 디바이스(120)의 제어기(102)를 네트워크(215)(또는 통신 네트워크), 예컨대 IP(Internet Protocol) 네트워크, SAN(Storage Area Network), 무선 또는 유선 네트워크 등에 통신가능하게 결합하도록 구성된 하나 이상의 네트워크 인터페이스들을 포함할 수 있다.
일부 실시예들에서, 저장 디바이스(120)는 호스트-컴퓨팅 디바이스(205)에 대해 하나 이상의 상이한 위치들에 배치될 수 있다. 다른 실시예들에서, 저장 디바이스(120)는 저장 시스템(224) 내에 엄격하게 배치될 수 있으며, 여기서 저장 시스템(224) 및 호스트-컴퓨팅 디바이스(205)는 버스 등을 통해 통신하는 별개의 컴포넌트들이다. 일 실시예에서, 저장 디바이스(120)는 하나 이상의 비휘발성 메모리 디바이스들(또는 다이들)(104), 예컨대 하나 이상의 PCB들, 저장소 하우징들, 및/또는 다른 기계적 및/또는 전기적 지지 구조들 상에 배치되는 반도체 디바이스들 및/또는 임의의 다른 유사하게 집적된 회로 디바이스들을 포함한다. 예를 들어, 저장 디바이스(120)는 하나 이상의 DIMM(direct inline memory module) 카드들, 하나 이상의 확장 카드들 및/또는 도터 카드들, SSD 또는 다른 하드 드라이브 디바이스를 포함할 수 있고/있거나, 다른 메모리 및/또는 저장소 폼 팩터를 가질 수 있다. 저장 디바이스(120)는 호스트-컴퓨팅 디바이스(205)와 통합될 수 있고/있거나 호스트-컴퓨팅 디바이스(205)의 마더보드 상에 실장될 수 있거나, 호스트-컴퓨팅 디바이스(205)의 포트 및/또는 슬롯 내에 설치될 수 있거나, 상이한 호스트-컴퓨팅 디바이스(205) 및/또는 네트워크(215) 상의 전용 저장 어플라이언스 상에 설치될 수 있거나, 외부 버스(예컨대, 외부 하드 드라이브 등)를 통해 호스트-컴퓨팅 디바이스(205)와 통신할 수 있거나, 등등일 수 있다.
추가의 실시예들에서, 저장 디바이스(120)는 프로세서(211)의 메모리 버스 상에(예컨대, 휘발성 메모리(212)와 동일한 메모리 버스 상에, 휘발성 메모리(212)와는 상이한 메모리 버스 상에, 휘발성 메모리(212) 대신에, 등등으로) 배치될 수 있다. 추가 실시예에서, 저장 디바이스(120)는 호스트-컴퓨팅 디바이스(205)의 주변기기용 버스, 예컨대 PCI Express 또는 PCIe(peripheral component interconnect express) 버스, 예컨대 SATA(serial Advanced Technology Attachment) 버스, PATA(parallel Advanced Technology Attachment) 버스, SCSI(small computer system interface) 버스, 파이어와이어 버스, 파이버 채널 접속부, USB(Universal Serial Bus), PCIe-AS(PCIe Advanced Switching) 버스 등과 같은, 그러나 이들로 제한되지 않는 것들 상에 배치될 수 있다. 다른 실시예에서, 저장 디바이스(120)는 이더넷 네트워크, 인피니밴드(Infiniband) 네트워크, 네트워크를 통한 SCSI RDMA, SAN(storage area network), LAN(local area network), WAN(wide area network), 예컨대 인터넷, 다른 유선 및/또는 무선 네트워크 등과 같은 네트워크(215) 상에 배치될 수 있다.
호스트-컴퓨팅 디바이스(205)는 컴퓨터 판독가능 저장 매체(214)를 추가로 포함할 수 있다. 컴퓨터 판독가능 저장 매체(214)는 호스트-컴퓨팅 디바이스(205)(예컨대, 프로세서(211))가 본 명세서에 개시되는 방법들 중 하나 이상의 방법들의 단계들을 수행하게 하도록 구성된 실행가능 명령어들을 포함할 수 있다. 추가적으로, 또는 대안으로, 버퍼링 컴포넌트(250)는 컴퓨터 판독가능 저장 매체(214) 상에 저장된 하나 이상의 컴퓨터 판독가능 명령어들로서 구체화될 수 있다.
일부 실시예들의 경우, 제어기(102)(또는 디바이스 드라이버)는 논리적 어드레스 공간(234)을 호스트 클라이언트들(216)에 제시할 수 있다. 논리적 어드레스 공간(234)은 복수의(예컨대, 소정 범위의) 논리적 어드레스들을 포함할 수 있다. 논리적 어드레스 공간(234)은 하기를 포함하지만 이들로 제한되지 않는 메모리 리소스(예컨대, 데이터)를 참조하기 위한 임의의 식별자를 지칭할 수 있다: LBA(logical block address), CHS(cylinder/head/sector) 어드레스, 파일명, 객체 식별자, 아이노드(inode), UUID(Universally Unique Identifier), GUID(Globally Unique Identifier), 해시 코드, 서명, 인덱스 입력, 범위, 규모 등.
저장 디바이스(120)를 위한 제어기(102)(또는 드라이버)는 (또는 논리적-물리적 어드레스 매핑 구조와 같은 메타데이터(235)를 유지하여, 논리적 어드레스 공간(234)의 논리적 어드레스들을 저장 디바이스(들)(120) 상의 매체 저장 위치들에 매핑시킬 수 있다. 제어기(102)는 하나 이상의 호스트 클라이언트들(216)에 저장 서비스들을 제공하도록 구성될 수 있다. 호스트 클라이언트들(216)은 호스트-컴퓨팅 디바이스(205) 상에서 동작하는 로컬 클라이언트들, 및/또는 네트워크(215) 및/또는 통신 인터페이스(213)를 통해 액세스가능한 원격 클라이언트들(217)(또는 원격 호스트 클라이언트들)을 포함할 수 있다. 호스트 클라이언트들(216)은 하기를 포함할 수 있지만 이들로 제한되지 않는다: 운영 체제, 파일 시스템, 데이터베이스 애플리케이션, 서버 애플리케이션, 커널-레벨(kernel-level) 프로세스, 사용자-레벨 프로세스, 애플리케이션 등.
제어기(102)는 솔리드 스테이트 저장 디바이스, 반도체 저장 디바이스, SAN 저장 리소스 등과 같은, 그러나 이들로 제한되지 않는, 상이한 유형들 및 구성들의 저장 디바이스들(120)을 포함할 수 있는 하나 이상의 저장 시스템들(224)에 추가로 통신가능하게 결합될 수 있다. 하나 이상의 저장 디바이스들(120)은 하나 이상의 각자의 제어기들(102) 및 비휘발성 메모리 채널들(222)을 포함할 수 있다. 제어기(102)는 SATA 및 PCIe와 같은, 그러나 이들로 제한되지 않는, 임의의 호환가능한 프로토콜들 또는 인터페이스(233)를 통해 하나 이상의 저장 디바이스들(120)에의 액세스를 제공할 수 있다. 메타데이터(235)는 프로토콜들 또는 인터페이스들(233)을 통해 수행되는 데이터 동작들을 관리 및/또는 추적하는 데 사용될 수 있다. 논리적 어드레스 공간(234)은 하나 이상의 저장 디바이스들(120)의 각자의 매체 위치들에 각각 대응하는 복수의 논리적 어드레스들을 포함할 수 있다. 제어기(102)는 논리적 어드레스들과 매체 위치들 사이의 애니-투-애니(any-to-any) 매핑들을 포함하는 메타데이터(235)를 유지할 수 있다.
제어기(102)는 하기를 포함할 수 있지만 이들로 제한되지 않는 버스(225)를 통해 데이터, 커맨드, 및/또는 질의(query)를 하나 이상의 저장 디바이스들(120)로 이송하도록 구성된 저장 디바이스 인터페이스(239)를 추가로 포함할 수 있고/있거나 그와 통신할 수 있다: 프로세서(211)의 메모리 버스, PCI Express 또는 PCIe 버스, 직렬 ATA(Advanced Technology Attachment) 버스, 병렬 ATA 버스, SCSI(small computer system interface), 파이어와이어, 파이버 채널, USB(Universal Serial Bus), PCIe-AS(PCIe Advanced Switching) 버스, 네트워크(215), 인피니밴드, SCSI RDMA 등. 저장 디바이스 인터페이스(239)는 IO-CTL(input-output control) 커맨드(들), IO-CTL 커맨드 확장(들), 원격 직접 메모리 액세스 등을 이용하여 하나 이상의 저장 디바이스들(120)과 통신할 수 있다.
통신 인터페이스(213)는 호스트-컴퓨팅 디바이스(205) 및/또는 제어기(102)를 네트워크(215)에 그리고/또는 하나 이상의 원격 클라이언트들(217)에 통신가능하게 결합하도록 구성된 하나 이상의 네트워크 인터페이스들을 포함할 수 있다. 호스트-컴퓨팅 디바이스(205)는 일부 애플리케이션들에 필요한 최소 처리율과 같은 QoS 요건들을 갖는 애플리케이션들을 이송하는 데 사용될 수 있는 한 쌍의 버스 인터페이스(245, 255)를 통해 저장 디바이스(120)와 통신할 수 있다. 제어기(102)는 하나 이상의 저장 디바이스들(120)의 일부일 수 있고/있거나 그들과 통신할 수 있다. 또한, 도 2가 단일 저장 디바이스(120)를 도시하지만, 컴퓨팅 시스템(201) 및/또는 저장 시스템(224)은 이와 관련하여 제한되지 않으며, 임의의 수의 저장 디바이스들(120)을 포함하도록 구성될 수 있다.
저장 디바이스(120)는 하기를 포함할 수 있지만 이들로 제한되지 않는 비휘발성 메모리 채널들(222)의 하나 이상의 비휘발성 메모리 디바이스들(104)을 포함할 수 있다: ReRAM, 멤리스터(Memristor) 메모리, 프로그램가능 금속화 셀 메모리, 상변화 메모리(PCM, PCME, PRAM, PCRAM, 오보닉(ovonic) 통합 메모리, 칼코겐화물 RAM, 또는 C-RAM), NAND 플래시 메모리(예컨대, 2D NAND 플래시 메모리, 3D NAND 플래시 메모리), NOR 플래시 메모리, 나노 RAM(nano RAM 또는 NRAM), 나노결정 유선-기반 메모리, 실리콘-산화물 기반 10 나노미터 이하(sub-10 nanometer) 프로세스 메모리, 그래핀(graphene) 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS), 프로그램가능 금속화 셀(PMC), CBRAM(conductive-bridging RAM), MRAM(magneto-resistive RAM), 자기 저장 매체(예컨대, 하드 디스크, 테이프), 광학 저장 매체 등. 비휘발성 메모리 채널들(222)의 하나 이상의 비휘발성 메모리 디바이스들(104)은, 소정 실시예들에서, 저장 클래스 메모리(storage class memory, SCM)(예컨대, 제자리 기록 메모리(write in place memory) 등)를 포함할 수 있다.
비휘발성 메모리 채널들(222)이 다양한 실시예들에서 "메모리 매체"로 지칭될 수 있지만, 비휘발성 메모리 채널들(222)은, 보다 일반적으로, 데이터를 기록할 수 있는 하나 이상의 비휘발성 기록 매체를 포함할 수 있는데, 이는 비휘발성 메모리 매체, 비휘발성 저장 매체 등으로 지칭될 수 있다. 또한, 저장 디바이스(120)는, 다양한 실시예들에서, 비휘발성 기록 디바이스, 비휘발성 메모리 어레이, 어레이 내의 복수의 상호접속된 저장 디바이스들 등을 포함할 수 있다.
비휘발성 채널들(222)은 하기를 포함할 수 있지만 이들로 제한되지 않는 하나 이상의 비휘발성 메모리 디바이스들(104)을 포함할 수 있다: 칩, 패키지, 평면, 다이 등. 제어기(102)는 비휘발성 메모리 채널들(222) 상에서의 데이터 동작들을 관리하도록 구성될 수 있고, 하나 이상의 프로세서들, 프로그램가능 프로세서들(예컨대, FPGA들), ASIC들, 마이크로컨트롤러들 등을 포함할 수 있다. 일부 실시예들에서, 제어기(102)는 비휘발성 메모리 채널들(222) 상에 데이터를 저장하고/하거나 그로부터 데이터를 판독하도록, 저장 디바이스(120)로/로부터 데이터를 이송하도록, 등등이도록 구성될 수 있다.
제어기(102)는 버스(227)를 통해 비휘발성 메모리 채널들(222)에 통신가능하게 결합될 수 있다. 버스(227)는 비휘발성 메모리 디바이스들(104)로/로부터 데이터를 통신시키기 위한 I/O 버스를 포함할 수 있다. 버스(227)는 비휘발성 메모리 디바이스들(104)에 어드레싱 및 다른 커맨드 및 제어 정보를 통신시키기 위한 제어 버스를 추가로 포함할 수 있다. 일부 실시예들에서, 버스(227)는 비휘발성 메모리 디바이스들(104)을 병렬로 제어기(102)에 통신가능하게 결합할 수 있다. 이러한 병렬 액세스는 비휘발성 메모리 디바이스들(104)이 그룹으로서 관리되어 비휘발성 메모리 어레이(229)를 형성하는 것을 허용할 수 있다. 비휘발성 메모리 디바이스들(104)은 그들 각자의 로직 메모리 유닛들(예컨대, 로직 페이지들) 및/또는 로직 메모리 분할들(예컨대, 로직 블록들 및 로직 평면들) 내에 격납될 수 있다. 로직 메모리 유닛들은 각각의 비휘발성 메모리 디바이스들(104)의 물리적 메모리 유닛들을 논리적으로 조합함으로써 형성될 수 있다.
제어기(102)는, 소정 실시예들에서, 워드 라인들의 어드레스들을 사용하여 비휘발성 메모리 디바이스(104) 내의 워드 라인들의 블록을 편성하여, 워드 라인들이 단조 증가 시퀀스로 논리적으로 편성되도록 할 수 있다(예컨대, 워드 라인들에 대한 어드레스들을 단조 증가 시퀀스로 디코딩하고/하거나 변환하도록 하는 것 등). 추가 실시예에서, 비휘발성 메모리 디바이스(104) 내의 블록의 워드 라인들은 워드 라인 어드레스들의 단조 증가 시퀀스로 물리적으로 배열될 수 있는데, 이때 연속으로 어드레싱된 워드 라인들은 또한 물리적으로 인접해 있다(예컨대, 도 4에서 하기에 WL0, WL1, WL2, ... WLN로 도시된 바와 같이).
제어기(102)는 호스트-컴퓨팅 디바이스(205) 상에서 실행되고 있는 디바이스 드라이버와 타협 및/또는 통신할 수 있다. 예를 들어, 제어기(102) 및/또는 그러한 디바이스 드라이버는 하나 이상의 인터페이스들(233)을 통해 호스트 클라이언트들(216)에 저장 서비스들을 제공할 수 있다. 마찬가지로, 제어기(102) 및/또는 그러한 디바이스 드라이버는 전술된 바와 같이, 버스(225)를 통해 제어기(102)로 데이터, 커맨드, 및/또는 질의를 이송하도록 구성되는 저장 디바이스 인터페이스(239)를 추가로 포함할 수 있다.
이제 도 3a를 참조하면, 시스템(300)의 개략적인 블록도는 일부 실시예들에 따른, 저장 디바이스(120)의 예시적인 컴포넌트들을 더 상세히 도시한다. 제어기(102)는 호스트와 인터페이싱하는 프론트-엔드 모듈(front-end module)(308), 비휘발성 메모리 디바이스(들)(또는 다이(들))(104)와 인터페이싱하는 백-엔드 모듈(back-end module)(310), 및 비휘발성 메모리 시스템(100)의 다양한 기능들을 수행하는 다양한 다른 모듈들을 포함할 수 있다.
일반적으로, 모듈은 하드웨어 또는 하드웨어와 소프트웨어의 조합일 수 있다. 예를 들어, 각각의 모듈은 ASIC, FPGA(field programmable gate array), 회로, 디지털 논리 회로, 아날로그 회로, 이산 회로들의 조합, 게이트들, 또는 임의의 다른 유형의 하드웨어 또는 이들의 조합을 포함할 수 있다. 추가적으로 또는 대안적으로, 각각의 모듈은 모듈의 특징들 중 하나 이상을 구현하기 위해 프로세서 또는 프로세서 회로부로 실행가능한 명령어들을 포함하는 메모리 하드웨어를 포함할 수 있다. 하나 이상의 모듈들 중 임의의 것이 프로세서로 실행가능한 명령어들을 포함하는 메모리의 부분을 포함할 때, 모듈은 프로세서를 포함할 수 있거나 포함하지 않을 수 있다. 일부 예들에서, 각각의 모듈은 단지 임의의 다른 하드웨어를 포함하는 모듈 없이 대응하는 모듈의 특징들을 구현하기 위해 프로세서로 실행가능한 명령어들을 포함하는 메모리의 부분일 수 있다. 각각의 모듈이 적어도 몇몇 하드웨어를 포함하기 때문에, 포함된 하드웨어가 소프트웨어를 포함할 때에도, 각각의 모듈은 하드웨어 모듈로 상호 교환적으로 지칭될 수 있다.
제어기(102)는 RAM(random access memory)(316) 내의 버퍼들을 관리하고 제어기(102)의 내부 통신 버스(317) 상의 통신을 위한 내부 버스 중재를 제어하는 버퍼 관리/버스 제어기(314)를 포함할 수 있다. ROM(read only memory)(318)은 시스템 부트 코드를 저장하고/하거나 그에 액세스할 수 있다. 또한, 도 3a의 RAM(316) 및 ROM(318) 둘 모두가 제어기(102)와는 별개로 위치된 것으로 도시되어 있지만, RAM(316) 및/또는 ROM(318)은 다른 실시예들에서 제어기(102) 내에 위치될 수 있다. 또 다른 실시예에서, RAM(316) 및/또는 ROM(318)의 부분들이 제어기(102) 내부와 그리고 제어기(102) 외부 둘 모두에 위치될 수 있다. 추가로, 일부 구현예들에서, 제어기(102), RAM(316), 및 ROM(318)은 별개의 반도체 디바이스들(또는 다이들) 상에 위치될 수 있다.
추가적으로, 프론트-엔드 모듈(308)은, 호스트 또는 다음 레벨의 저장 제어기와의 전기적 인터페이스를 제공하는 호스트 인터페이스(320) 및 물리 계층 인터페이스(322)를 포함할 수 있다. 호스트 인터페이스(320)의 유형의 선택은 사용되는 메모리의 유형에 의존할 수 있다. 호스트 인터페이스(320)의 예시적인 유형들은 SATA, SATA 익스프레스, SAS, 파이버 채널, USB, PCIe, 및 NVMe를 포함할 수 있지만 이들로 제한되지 않는다. 호스트 인터페이스(320)는 전형적으로 데이터, 제어 신호들, 및 타이밍 신호들에 이송을 용이하게 할 수 있다.
백-엔드 모듈(310)은 ECC(error correction controller) 엔진(324)을 포함할 수 있고, ECC 엔진(324)은 호스트로부터 수신된 데이터 바이트들을 인코딩하고 비휘발성 메모리 디바이스(들)(104)로부터 판독된 데이터 바이트들을 디코딩하고 에러 정정한다. 아래에서 논의되는 바와 같이, ECC 엔진(324)은, 예컨대,
모드에 기초하여 변화하는 양의 ECC 데이터를 생성하기 위해(예컨대, 정상 프로그래밍 모드에서 정상 모드 ECC 데이터를 생성하고 혼합 모드 프로그래밍 모드에서 혼합 모드 ECC 데이터를 생성하기 위해 - 이때 혼합 모드 ECC 데이터는 정상 모드 ECC 데이터보다 더 큼), 조정가능할 수 있다. 백-엔드 모듈(310)은 또한 비휘발성 메모리 디바이스(들)(104)로 송신될, 프로그램, 판독 및 소거 커맨드 시퀀스들과 같은, 커맨드 시퀀스들을 생성하는 커맨드 시퀀서(326)를 포함할 수 있다.
추가적으로, 백-엔드 모듈(310)은, RAID(Redundant Array of Independent Drives) 패리티의 생성 및 결함 데이터의 복구를 관리하는 RAID 모듈(128)을 포함할 수 있다. RAID 패리티는 비휘발성 메모리 시스템(100)에 기록되는 데이터에 대한 무결성 보호(integrity protection)의 추가 레벨로서 사용될 수 있다. 일부 경우들에서, RAID 모듈(328)은 ECC 엔진(324)의 일부일 수 있다. 메모리 인터페이스(330)는 커맨드 시퀀스들을 비휘발성 메모리 디바이스(들)(104)에 제공하고 비휘발성 메모리 디바이스(들)(104)로부터 상태 정보를 수신한다. 커맨드 시퀀스들 및 상태 정보와 함께, 비휘발성 메모리 디바이스(들)(104) 내로 프로그래밍되고 그로부터 판독될 데이터는 메모리 인터페이스(130)를 통해 통신될 수 있다. 일 실시예에서, 메모리 인터페이스(330)는 더블 데이터 레이트(DDR) 인터페이스일 수 있다. 플래시 제어 계층(332)은 백-엔드 모듈(310)의 전체 동작을 제어할 수 있다.
도 2a에 도시된 비휘발성 메모리 시스템(100)의 추가 모듈들은 비휘발성 메모리 디바이스(104)의 메모리 셀들의 웨어 레벨링을 수행하는 매체 관리 계층(338)을 포함할 수 있다. 비휘발성 메모리 시스템(100)은, 또한, 제어기(102)와 인터페이싱할 수 있는 외부 전기적 인터페이스들, 외부 RAM, 저항기들, 커패시터들, 또는 다른 컴포넌트들과 같은 다른 개별 컴포넌트들(340)을 포함할 수 있다. 대안적인 실시예들에서, RAID 모듈들(328), 매체 관리 계층(338) 및 버퍼 관리/버스 제어기(314) 중 하나 이상은 제어기(102)에서 필요하지 않을 수 있는 선택적인 컴포넌트들이다.
도 3b를 참조하면, 개략적인 블록도는 일부 실시예들에 따른, 저장 디바이스(120)의 예시적인 컴포넌트들을 더 상세히 도시한다. 저장 디바이스(120)는 제어기(102)를 이용해 호스트에 통신가능하게 결합될 수 있다. 비휘발성 메모리 디바이스(104)는 비휘발성 메모리 어레이(342)를 포함할 수 있다. 비휘발성 메모리 어레이(342)는 복수의 비휘발성 메모리 요소들 또는 셀들을 포함할 수 있으며, 각각은 하나 이상의 비트의 데이터를 저장하도록 구성된다. 비휘발성 메모리 요소들 또는 셀들은, NAND 플래시 메모리 셀들 및/또는 NOR 플래시 메모리 셀들을 2차원 구성 및/또는 3차원 구성으로 포함하는, 임의의 적합한 비휘발성 메모리 셀들일 수 있다. 메모리 셀들은 솔리드 스테이트 (예컨대, 플래시) 메모리 셀들의 형태를 취할 수 있고, 1회 프로그램가능, 수회 프로그램가능, 또는 여러 번 프로그램가능할 수 있다. 추가로, 전술된 바와 같이, 메모리 요소들 또는 셀들은, 셀당 단일 비트의 데이터를 저장하는 SLC들, 셀당 다수의 비트의 데이터를 저장하는 다중-레벨 셀(MLC)들, 또는 이들의 조합들로서 구성될 수 있다. 예를 들어, 이들 실시예에서, MLC들은 셀당 3개, 4개, 및 4개 초과의 비트의 데이터를 저장하는 TLC들, QLC들 등을 포함한다.
추가적으로, 플래시 메모리 셀은, 플로팅 게이트 및 제어 게이트를 갖는 플로팅 게이트 트랜지스터(FGT)를 비휘발성 메모리 어레이(342) 내에 포함할 수 있다. 플로팅 게이트는, 플로팅 게이트 내의 전하를 보유하는 것을 돕는 절연체 또는 절연 재료에 의해 둘러싸인다. 플로팅 게이트 내부의 전하들의 존재 또는 부재는 FGT의 임계 전압에서의 시프트를 야기할 수 있으며, 이는 로직 레벨들을 구별하는 데 사용된다. 즉, 각각의 FGT의 임계 전압은 메모리 셀에 저장된 데이터를 나타낼 수 있다. 이하, FGT, 메모리 요소 및 메모리 셀은 동일한 물리적 엔티티를 지칭하기 위해 상호교환가능하게 사용될 수 있다.
예를 들어, SLC들 및 MLC들은 메모리 셀들의 로우(row) 및 컬럼(column)의 매트릭스-유사 구조에 따라 비휘발성 메모리 어레이(342) 내에 배치될 수 있다. 로우 및 컬럼의 교차점에 FGT(또는 메모리 셀)가 있다. FGT들의 컬럼은 스트링(string)으로 지칭될 수 있다. 스트링 또는 컬럼 내의 FGT들은 직렬로 전기적으로 접속될 수 있는 반면, FGT들의 로우는 페이지로 지칭될 수 있다. 페이지 또는 로우 내의 FGT들의 제어 게이트들은 함께 전기적으로 접속되거나 달리 결합될 수 있다.
비휘발성 메모리 어레이(342)는 또한 FGT들에 접속된 워드 라인들 및 비트 라인들을 포함할 수 있다. FGT들의 각각의 페이지는 워드 라인에 결합된다. 특히, 각각의 워드 라인은 페이지 내의 FGT들의 제어 게이트들에 결합될 수 있다. 추가로, FGT들의 각각의 스트링은 비트 라인에 결합될 수 있다. 또한, 단일 스트링이 다수의 워드 라인들을 가로질러 걸쳐 있을 수 있고, 스트링 내의 FGT들의 수는 블록 내의 페이지들의 수와 동일할 수 있다.
일부 실시예들에서, 비휘발성 메모리 디바이스들(104)은 제어기(102)에 상태 정보를 제공하는 상태 기계(352)를 갖는 주변 회로부(341)를 포함할 수 있다. 비휘발성 메모리 디바이스(104)는 데이터를 캐싱하는 데이터 캐시(356)를 추가로 포함한다. 비휘발성 메모리 디바이스(104)는 또한 로우 어드레스 디코더(348) 및 컬럼 어드레스 디코더(350)를 포함할 수 있다. 로우 어드레스 디코더(348)는, 비휘발성 메모리 어레이(342) 내의 메모리 셀들로/로부터 데이터를 판독하거나 기록할 때 비휘발성 메모리 어레이(342)에서 로우 어드레스를 디코딩하고 특정 워드 라인을 선택할 수 있다. 컬럼 어드레스 디코더(350)는, 데이터 캐시(344)에 전기적으로 결합되도록 비휘발성 메모리 어레이(342) 내의 특정 그룹의 비트 라인들을 선택하기 위해 컬럼 어드레스를 디코딩할 수 있다.
데이터 캐시(356)는 비휘발성 메모리 어레이(342)의 메모리 페이지 내의 데이터의 각각의 비트에 대한 데이터 래치들(357)의 세트들을 포함할 수 있다. 따라서, 데이터 래치들(357)의 각각의 세트는 폭이 페이지일 수 있고, 데이터 래치들(357)의 복수의 세트들이 데이터 캐시(356)에 포함될 수 있다. 또한, 다른 실시예들에서, 제어기(102)는 단일 집적 회로 칩으로서 구현될 수 있고, 하나 이상의 커맨드 채널들을 통해 비휘발성 메모리 디바이스(104) 내의 메모리의 하나 이상의 상이한 계층들과 통신할 수 있다. 다른 실시예들에서, 본 명세서에 설명된 바와 같은 메모리 관리 명령어들을 구현하기 위한 제어기 실행가능 코드는 비휘발성 플래시 메모리에 저장될 수 있다는 것에 유의한다.
또한, 본 명세서에 설명된 바와 같이, 비휘발성 메모리 어레이(342)는, 메모리 셀들의 한 블록이 소거 단위 - 즉, 함께 물리적으로 소거가능한 가장 작은 수의 메모리 셀들 - 인 메모리 셀들의 블록들로 배열될 수 있다. 그러나, 증가된 병행성을 위해, 블록들은 더 큰 메타블록(metablock, MB) 단위로 동작될 수 있다. 메모리 셀들의 적어도 2개의 평면들 각각으로부터의 하나의 블록은 함께 논리적으로 접속되어 메타블록을 형성할 수 있다.
이제 도 4를 참조하면, 일부 실시예들에 따른, 2개의 평면들(400, 402)의 블록도가 도시된다. 평면들(400, 402)은 메모리 구조 등의 일부일 수 있다. 예를 들어, 평면들(400, 402)은 도 1a, 도 2, 도 3a, 및 도 3b에 도시된 비휘발성 메모리 디바이스(104)의 일부일 수 있으며, 여기서 비휘발성 메모리 디바이스(104)는 복수의 다른 평면들과 함께 평면들(400, 402)을 포함할 수 있다.
일부 실시예들에서, 평면들(400, 402)은 다수의 블록들(408, 410)(예컨대, 블록들 0 내지 1023, 또는 다른 양)로 분할될 수 있다. 각각의 블록(408, 410)은 복수의 메모리 셀들을 포함한다. 일 실시예에서, 각각의 블록(408, 410)은 소거 단위이므로, 때때로 소거 블록으로 지칭된다. 즉, 각각의 블록은 함께 소거되는 최소 수의 메모리 셀들을 포함한다. 다른 소거 단위들이 또한 사용될 수 있다. 블록은 비트 라인들(예컨대, 비트 라인들(BL0 내지 BL69,623)) 및 워드 라인들(WL0, WL1, WL2, WL3)을 통해 액세스되는 NAND 스트링들의 세트를 포함한다. 예를 들어, 블록 I는 NAND 스트링을 형성하기 위해 직렬로 접속된 4개의 메모리 셀들을 도시한다. 4개의 메모리 셀들이 각각의 NAND 스트링에 포함되는 것으로 도시되어 있지만, 4개 초과 또는 그 미만의 메모리 셀들이 사용될 수 있다(비제한적인 예로서, 16, 32, 64, 128, 256개 또는 다른 수의 메모리 셀들을 포함함). NAND 스트링의 하나의 단자는 (선택 게이트 드레인 라인(select gate drain line, SGD)에 접속된) 드레인 선택 게이트를 통해 대응하는 비트 라인에 접속되고, 다른 단자는 (선택 게이트 소스 라인(select gate source line, SGS)에 접속된) 소스 선택 게이트를 통해 소스 라인에 접속된다. 69624개의 비트 라인들이 도 4에 도시되지만, 임의의 수의 비트 라인들이 또한 제한 없이 사용될 수 있다는 것이 이해될 것이다. 추가적으로, 위에서 논의된 바와 같이, 블록은 NAND 플래시 메모리 이외의 비휘발성 저장 기술들을 구현할 수 있다.
각각의 블록(408, 410)은 전형적으로 복수의 페이지들로 분할된다. 일 실시예에서, 페이지는 프로그래밍 단위이다. 다른 프로그래밍 단위들이 또한 사용될 수 있다. 데이터의 하나 이상의 페이지들이 전형적으로 메모리 셀들의 하나의 로우에 저장된다. 예를 들어, 데이터의 하나 이상의 페이지들이 공통 워드 라인에 접속된 메모리 셀들에 저장될 수 있다. 페이지의 일례는 공통 워드 라인에 그리고 공통 블록에서 접속된 메모리 셀들 내에 저장된 모든 데이터일 수 있다. 페이지의 다른 예는 공통 워드 라인에 그리고 공통 블록에서 접속된 메모리 셀들의 분율(예컨대, ¼, ½, ⅓) 또는 그들 메모리 셀들에 저장된 비트들의 분율이다. 페이지는 사용자 데이터 및 오버헤드 데이터(시스템 데이터로도 지칭됨)를 포함한다. 오버헤드 데이터는 전형적으로 섹터의 사용자 데이터로부터 계산된 헤더 정보 및 ECC를 포함한다. 제어기(또는 다른 컴포넌트)는 데이터가 어레이 내에 프로그래밍되고 있을 때 ECC를 계산하고, 또한 데이터가 어레이로부터 판독되고 있을 때 ECC를 검사한다.
상기에서 논의된 메모리 시스템들은 소거, 프로그래밍, 및 판독될 수 있다. (검증에 의한) 성공적인 프로그래밍 프로세스의 종료 시, 메모리 셀들의 임계 전압들은, 적절하게, 프로그래밍된 메모리 셀들에 대한 임계 전압들의 하나 이상의 분포들 내에 또는 소거된 메모리 셀들에 대한 임계 전압들의 분포 내에 있어야 한다. 예를 들어, 메모리 시스템들은 각각의 메모리 셀이 3 비트의 데이터를 저장할 때 메모리 셀 어레이에 대한 임계 전압 분포들을 사용할 수 있다. 그러나, 다른 실시예들은 (예컨대, 메모리 셀당 1 비트, 2 비트, 4 비트, 또는 5 비트의 데이터와 같이) 메모리 셀당 다른 데이터 용량들을 사용할 수 있다.
본 명세서에 개시된 디바이스들, 시스템들, 및 관련 방법들이 사용될 수 있는 다중-셀 소거 블록들 및 다중-블록 구역들(또는 논리 구역들)을 포함하는 적합한 비휘발성 메모리 배열들(또는 구조들)의 예들이 도 5a 내지 도 5e, 도 7a 내지 도 7d, 도 8a 및 도 8b에 도시된다. 일부 실시예들은 다중-셀 소거 블록들의 어레이를 갖는 비휘발성 메모리 시스템 및/또는 디바이스를 포함할 수 있으며, 여기서 어레이는 복수의 다중-블록 구역들로 논리적으로 분할될 수 있고, 각각의 구역의 블록들은 물리적으로 인접할 수 있다.
또한, 아래에 도시된 하기의 예시적인 실시예들은 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하기 위해 알고리즘을 사용할 수 있다. 즉, 후술되는 이들 실시예에서, 더 높은 상관관계를 갖는 구역들은 모든 구역들에 걸친 패리티 공유를 위한 구역들의 그룹화를 용이하게 하기 위해 식별된다. 일부 실시예들에서, 고도로 상관된 구역들과의 이러한 최적의 패리티 공유는, DRAM 버퍼들의 최적화된 사용 및 저하된 패리티 로딩 및 스래싱으로 본 명세서에 설명된 저장 디바이스들 및 시스템들을 용이하게 한다.
이제 도 5a를 참조하면, 일부 실시예들에 따른, 초기 구역 기록들 동안의 메모리 구조(500)의 예시적인 개략적 블록도가 도시된다. 메모리 구조(500)는 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하도록 구현될 수 있다. 메모리 구조(500)는 비휘발성 메모리 디바이스 및/또는 시스템의 일부일 수 있다. 예를 들어, 메모리 구조(500)는 RAM 등(예컨대, DRAM)일 수 있다. 또한, 도 5a 내지 도 5e의 메모리 구조(500)는 도 1a 내지 도 1c, 도 2, 도 3a, 도 3b, 및 도 4에서 전술된 저장 디바이스들, 시스템들, 및/또는 모듈들 중 하나 이상의 일부일 수 있다(또는 이와 유사할 수 있다).
일부 실시예들에서, 메모리 구조(500)는 복수의 물리적 블록들(520)(도 5a에서 B0 내지 B1로서 도시됨), 복수의 각자의 구역들(510)(도 5a에서 Z1 내지 Z8로서 도시됨), 복수의 패리티 버퍼들(550)(도 5a에서 P1 내지 P8로서 도시됨) 및 메타블록들(560 내지 561)을 포함한다. 또한, 메모리 구조(500)는 서로 인접하게 그리고 그들 각자의 채널들(540)(도 5a에서 CH0 내지 CH3으로서 도시됨)과 일렬로 위치되는 다이들(530)(도 5a에서 D0 내지 D3으로서 도시됨)을 포함할 수 있다. 또한, 메모리 구조(500)는 하나의 물리적 블록(520)이 하나의 각자의 구역(510)에 직접 매핑되는 구성을 가질 수 있다. 예를 들어, 호스트 등은, 하나의 구역 크기가 하나의 물리적 블록 크기(520)와 대략 동일한 것을 구현할 수 있다. 그럼에도 불구하고, 도 5a 내지 도 5e에서 하나의 구역 크기가 하나의 물리적 블록 다이 크기와 동일하게 배열될 수 있지만, 메모리 구조(500)에 대한 임의의 다른 적합한 구성, 예컨대 상이한 크기, 양, 위치 등이 제한 없이 사용될 수 있다는 것이 이해될 것이다.
또한, 도 5a에 도시된 바와 같이, 메모리 구조(500)는 초기 구역 기록들(즉, 몇 개의 페이지들 또는 워드 라인들에의 기록들) 동안 모든 구역들(510)과는 독립적인 패리티 버퍼들(550)을 유지하도록 구성될 수 있다. 일부 실시예들에서, 패리티 버퍼들(550)은 기록 시퀀스의 시작 시에 모든 구역들과 독립적으로 머물도록 유지될 수 있다(즉, 독립적인 패리티 버퍼들은 도 5a에서 작은 px로 표시됨). 그러나, 다른 실시예들에서, 패리티 버퍼들(550)은, 사용되는 아래에 놓인 NAND에 기초하여 그들 각자의 블록(520) 내에서, 다른 평면들/페이지들/워드라인들과, 또는 다른 다이들(530)과 - 각자의 구역(510)이 다수의 다이들(530)을 갖는 경우 - 공유할 수 있다.
이제 도 5b를 참조하면, 일부 실시예들에 따른, 상이한 구역 그룹들을 식별하는 메모리 구조(500)의 예시적인 개략적 블록도가 도시된다. 메모리 구조(500)의 실시예들은 기록되고 있는 모든 구역들(510)에 대한 기록 커맨드 속성들을 추적하도록 구성될 수 있는데, 이는 구역 기록 포인터들, 기록들의 빈도, 대부분의 시간 동안 함께 기록된 구역들, 초기 기록된 데이터 등을 포함하지만 이들로 제한되지 않는다. 이제, 상이한 블록들(520) 상의 이들 구역화된 기록들에 기초하여, 잠재적인 구역 그룹들(551, 552)(예컨대, 잠재적인 구역 후보들이 동일한 패턴화로 도 5b에 도시됨)은, 추적된 기록 커맨드 속성들 및 임의의 다른 원하는/관찰된 기록 상관관계들에 기초하여 모든 구역들(510)에 대해 개시될 수 있다. 예를 들어, 도 5b에 도시된 바와 같이, 대부분의 구역들(510)은 상이한 속도들로 기록되고 있어서, 추적된 속성은 다른 속성들만큼 설득력 있지 않을 수 있다. 또한, 단지 2개의 잠재적인 구역 그룹들만이 도 5b에 도시되어 있지만, 메모리 구조(500)는 필요에 따라 2개 미만의 또는 2개 초과의 잠재적인 구역 그룹들을 활용할 수 있다.
이제 도 5c를 참조하면, 일부 실시예들에 따른, 높은 상관관계를 갖는 구역들을 분리 및 그룹화하는 메모리 구조(500)의 예시적인 개략적 블록도가 도시된다. 메모리 구조(500)의 실시예들은 높은 상관관계를 갖는 구역들을 분리하고 이어서 이들을 상이한 구역 그룹들(515, 525)로 함께 그룹화하도록 구성될 수 있다. 예를 들어, 높은 상관관계를 갖는 구역들은, 함께 그리고 동일한 속도로 기록되었던 구역들을 포함하지만 이로 제한되지 않는다. 또한, 도 5c에 도시된 바와 같이, 메모리 구조(500)는 8개의 구역들을 분리하였고, 이들을 2개의 상이한 구역 그룹들(515, 525)로 그룹화하였다. 예를 들어, 제1 분리된 구역 그룹(515)은 구역들 Z1, Z5, Z9, 및 Z13을 포함하고, 제2 분리된 구역 그룹(525)은 구역들 Z2, Z6, Z11, 및 Z16을 포함한다. 일부 실시예들에서, 제1 및 제2 구역 그룹들(525, 525)은 다양한 구역 기록 커맨드들을 조합한 후에 함께 그룹화되었고, 어떻게 구역들이 다른 구역들과 함께 기록되고 있고, 구역들은 유사한 속성들로 개방된다(opened).
이제 도 5d 및 도 5e를 참조하면, 일부 실시예들에 따른, 메모리 구조(500)의 예시적인 개략적 블록도가 도시된다. 메모리 구조(500)의 실시예들은 다양한 채널들(540)에 걸쳐 배치되는 구역 그룹들(535, 545)을 활용하도록 구성될 수 있어서, 더 높은 상관관계를 갖는 구역들이 패리티 버퍼들(550)을 공유하도록 한다. 추가적으로, 메모리 구조(500)의 실시예들은 개개의 패리티 버퍼들(550)을 로딩하고, 구역 그룹들(551, 552)에 걸친 패리티 공유를 위해 로딩된 개개의 패리티 버퍼들을 XOR하도록 구성될 수 있고, 여기서 새롭게 공유된 패리티 버퍼들(580, 590)은 이제 시퀀싱되고 상이한 구역들(550)에 걸쳐 공유된다(즉, 공유된 패리티 버퍼들(580, 590)은 도 5e에서 큰(big) P'x로 표시됨). 이들 실시예에서, 구역들(550)의 물리적 위치와 함께 상기 정보를 사용하여, 구역 그룹들이 형성되고, 그들의 개개의 패리티 버퍼들은 도 5e에 도시된 바와 같이 결과적인 패리티 버퍼(580, 590)를 얻기 위해 XOR된다. 또한, 이제, 이들 압축된 패리티 버퍼들(P'x)은 DRAM에 캐싱될 수 있고, 구역 그룹들을 가짐으로써 패리티 스래싱 및 로딩이 실질적으로 최소화된다. 전술된 바와 같이, 구역들에 걸친 이러한 공유된 패리티는 DRAM 버퍼들의 사용을 최적화하는 것 및 더 적은 패리티 로딩 및 스래싱으로 이어지며, 이는 궁극적으로 최적의 디바이스 성능을 제공한다.
이제 도 6을 참조하면, 일부 실시예들에 따른, 모든 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하기 위한 예시적인 프로세스(600)의 고레벨 흐름도가 도시된다. 도 6의 프로세스(600)는 도 5a 내지 도 5e와 관련하여 전술된 프로세스 흐름의 예시들을 도시한다. 예를 들어, 프로세스(600)는 도 5a 내지 도 5e에서 전술된 메모리 구조(500), 또는 본 명세서에 설명된 임의의 다른 저장 디바이스들 및 시스템들을 사용하여 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하도록 구성될 수 있다.
초기에, 블록(610)에서, 프로세스(600)는 초기 구역 기록들(즉, 몇 개의 페이지들 또는 워드 라인들에의 기록들) 동안 모든 구역들에 대해 독립적인 패리티를 유지한다. 블록(620)에서, 프로세스(600)는 구역 기록 포인터들, 기록들의 빈도, 및 대부분의 시간 동안 함께 기록된 구역들을 추적한다. 블록(630)에서, 프로세스(600)는 높은 상관관계를 갖는 구역들(즉, 함께 그리고 동일한 속도로 기록되는 구역들)을 분리하고, 분리된 구역들을 상이한 구역 그룹들로 그룹화한다. 블록(640)에서, 프로세스(600)는 다양한 채널들에 걸쳐 배치된 구역 그룹들을 활용하여, 구역 그룹들로부터의 더 높은 상관관계를 갖는 구역들이 각자의 패리티 버퍼들을 공유하게 한다. 마지막으로, 블록(650)에서, 프로세스(600)는 개개의 패리티 버퍼들을 로딩하고, 구역들에 걸친 패리티 공유를 위한 로딩된 개개의 패리티 버퍼들을 XOR한다.
이제 도 7a 내지 도 7d를 참조하면, 일부 실시예들에 따른, 메모리 구조(700)의 예시적인 개략적 블록도가 도시된다. 메모리 구조(700)는 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하면서, 또한 임의의 패리티(P1) 생성들을 위한 RAM 시간을 감소시키도록 구현될 수 있다. 메모리 구조(700)는 도 5a 내지 도 5e에서 전술된 메모리 구조(500)와 실질적으로 유사할 수 있다. 이와 같이, 메모리 구조(700)의 구역들, 블록들, 채널들, 다이들, 메타블록들, 및 패리티 버퍼들은 도 5a 내지 도 5e에서의 메모리 구조(500)의 컴포넌트들과 실질적으로 유사하게 활용될 수 있다.
도 7d에 도시된 바와 같이, 메모리 구조(700)는 도 5e에 도시된 구성과 유사한 공유된 패리티 구역 그룹들(751, 752)과 같이, 높은 상관관계를 갖는 구역들을 식별하고 이들을 함께 그룹화함으로써 구역에 걸친 최적의 패리티 공유를 위한 구역들을 유사하게 식별하도록 구성된다. 그러나, 일부 실시예들에서, 메모리 구조(700)는 다른 구역들(753)으로부터의 일부 유사한 호스트 기록 작업부하들을 갖지만, 요구되는 빈번한 패리티 버퍼들(750)은 P1 및 P2이며, 이들은 DRAM에 캐싱되고 패리티 스래싱 및 로딩은 최소화된 채로 유지된다. 이러한 경우, 다른 구역들(753)에의 가끔의 액세스는, 임시 위치에 패리티 버퍼를 로딩하고 이전 패리티 버퍼들(750)(P1, P2)을 축출하지(evict) 않음으로써 관리된다. 다시 말하면, 캐시 내의 데이터 임계치를 초과하는 데이터 사용의 결과로서, 패리티 버퍼들(750)(P1, P2)은 새로운 데이터를 위한 새로운 공간을 생성하기 위해 이들이 해제되거나 "축출"될 때까지 캐시에 로딩되지 않는다.
추가적으로, 도 7d에 도시된 바와 같이, 메모리 구조(700)에서의 패리티 생성은 지연되고, 버퍼들은 더 긴 기간 동안 DRAM에서 머물 있다. 그러나, 공유 패리티 버퍼들(750)을 높은 상관관계 구역들(751, 752)과 공유되게 함으로써, 동일한 속도로 기록하는 구역들을 가질 확률이 또한 증가하며, 이는 필요한 것보다 더 오래 RAM에서 패리티를 유지하는 것을 방지하는 데 도움이 된다. 즉, 더 높은 상관관계를 갖는 구역들(751, 752)에 걸쳐 패리티 버퍼들(750)을 공유하는 것은 이제, 기록 포인터들이 유사한 오프셋 영역에 있게 하고, 그러한 버퍼들은 신속하게 생성될 수 있고 DRAM에서 유지하지 않으면서 SLC 캐시에 덤핑될 수 있다.
이제 도 8a 및 도 8b를 참조하면, 일부 실시예들에 따른, 메모리 구조(800)의 예시적인 개략적 블록도가 도시된다. 메모리 구조(800)는 구역들에 걸친 최적의 패리티 공유를 위한 구역들을 식별하고/하거나, 효율적인 캐시 관리를 위해 그러한 공유된 패리티 구역 그룹들을 활용하도록 구현될 수 있다. 메모리 구조(800)는 도 5a 내지 도 5e에서 전술된 메모리 구조(500)와 실질적으로 유사할 수 있다. 이와 같이, 메모리 구조(800)의 구역들, 블록들, 채널들, 다이들, 메타블록들, 및 패리티 버퍼들은 도 5a 내지 도 5e에서의 메모리 구조(500)의 컴포넌트들과 실질적으로 유사하게 활용될 수 있다.
이들 실시예에서, 메모리 구조(800)가 동일한 패리티 버퍼들을 구역 그룹(851, 852) 내의 모든 구역들에 할당할 수 없는 경우(예컨대, 기본 물리적 속성들, 복구 시간 고려사항 등), 메모리 구조(800)는 효율적인 캐시 관리를 위해 여전히 이것을 활용한다. 예를 들어, P2가 높은 상관관계 등을 갖는 구역들에 걸쳐 공유되고 있기 때문에, 메모리 구조(800)는 기록 동작들이 그의 공유 구역들로 지향되고 있지 않을 때에도 P2를 축출하는 것을 피하도록 구성될 수 있다. 결과적으로, P2는 캐싱에 대한 선호도를 얻을 것이고, 축출되지 않을 것이다. 추가적으로, DRAM 공유와 함께, 메모리 구조(800)는 또한 내부 제어기 메모리 SRAM에 유사한 선호도를 제공할 수 있고, 동일한 로직을 사용하여 데이터를 캐싱할 수 있다.
본 명세서에 도시되고 상세히 설명되는 정보는 본 개시내용의 전술된 목적, 본 개시내용의 현재 바람직한 실시예를 완전히 달성할 수 있으며, 따라서 본 개시내용에 의해 광범위하게 고려되는 주제를 대표한다. 본 개시내용의 범주는 당업자에게 명백하게 될 수 있는 다른 실시예들을 완전히 포괄하며, 이에 따라, 첨부된 청구범위 이외의 것에 의해 제한되지 않는다. 단수형으로 이루어진 요소에 대한 임의의 언급은 명시적으로 그렇게 언급되지 않는 한, "하나 및 오직 하나"를 의미하는 것이 아니라 오히려 "하나 이상"을 의미하도록 의도된다 당업자에 의해 고려되는 바와 같은 전술된 바람직한 실시예 및 추가적인 실시예들의 요소들에 대한 모든 구조적 및 기능적 등가물들은 본 명세서에 명백히 참고로 포함되며, 본 청구범위에 의해 포괄되도록 의도된다.
더욱이, 본 개시내용에 의해 해결하고자 하는 각각의 그리고 모든 문제를 해결하는 시스템 또는 방법에 대한 요건은 존재하지 않으며, 그러한 문제들에 대한 해결책들은 본 청구범위에 의해 포괄된다. 또한, 본 개시내용에서의 요소, 컴포넌트, 또는 방법 단계는 그 요소, 컴포넌트, 또는 방법 단계가 청구범위에 명시적으로 언급되어 있는지에 상관없이 대중에 전용되는 것으로 의도되지 않는다. 당업자에게 명백할 수 있는 바와 같이, 첨부된 청구범위에 기재된 바와 같이, 본 개시내용의 사상 및 범주로부터 벗어나지 않고 형태, 재료, 가공물, 및 제조 재료 세부사항에 있어서의 다양한 변화 및 수정이 이루어질 수 있으며, 또한 본 개시내용에 의해 포괄된다.

Claims (20)

  1. 저장 디바이스로서,
    하나 이상의 메모리들; 및
    하나 이상의 제어기들을 포함하며, 상기 하나 이상의 제어기들은:
    초기 구역 기록 커맨드에서 제1 구역(zone)들에 대한 독립적인 패리티 블록들을 유지하고;
    상기 제1 구역들과 연관된 복수의 기록 커맨드 속성들을 추적하고;
    상기 제1 구역들로부터 복수의 제2 구역들을 분리하고(segregate) - 상기 복수의 제2 구역들은 초기에 제1 채널들과 연관됨 -;
    상기 복수의 제2 구역들을 구역 그룹들로 그룹화하고;
    복수의 채널들에 걸쳐 상기 구역 그룹들로부터 상기 복수의 제2 구역들을 재할당하여, 상기 독립적인 패리티 블록들이 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 구역들에 기초하여 상기 구역 그룹들 중 상기 복수의 제2 구역들과 공유되게 하도록 구성되는, 저장 디바이스.
  2. 제1항에 있어서, 상기 구역 그룹들에 걸쳐 공유하기 위해 XOR 회로를 이용하여 상기 독립적인 패리티 블록들을 로딩하는 것을 추가로 포함하는, 저장 디바이스.
  3. 제1항에 있어서, 상기 복수의 채널들은 상기 제1 채널들 및 제2 채널들을 포함하는, 저장 디바이스.
  4. 제3항에 있어서, 상기 복수의 제2 구역들과 연관된 상기 제1 채널들 중 하나 이상은 상기 복수의 제2 구역들의 상기 제2 채널들과 동일하지 않은, 저장 디바이스.
  5. 제1항에 있어서, 상기 복수의 기록 커맨드 속성들은 구역 기록 포인터들, 기록들의 빈도, 및 절반 이상의 시간 동안 함께 기록된 구역들 중 적어도 하나 이상으로 구성되는, 저장 디바이스.
  6. 제1항에 있어서, 상기 제1 구역들로부터 상기 복수의 제2 구역들을 분리하는 것은 상기 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 상기 구역들에 기초하는, 저장 디바이스.
  7. 제6항에 있어서, 상기 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 상기 구역들은 함께 그리고 동일한 속도로 기록되는 구역들로 구성되고, 상기 독립적인 패리티 블록들은 구역들의 물리적 위치 대신 상기 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 상기 구역들에 기초하여 상기 구역 그룹들 중 상기 복수의 제2 구역들과 공유되는, 저장 디바이스.
  8. 제1항에 있어서, 상기 구역 그룹들로부터의 상기 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 상기 구역들은 동일한 독립적인 패리티 블록들을 공유하는, 저장 디바이스.
  9. 저장 디바이스에서 패리티 공유를 위한 구역들을 식별하는 방법으로서,
    초기 구역 기록 커맨드에서 제1 구역들에 대한 독립적인 패리티 블록들을 유지하는 단계;
    상기 제1 구역들과 연관된 복수의 기록 커맨드 속성들을 추적하는 단계;
    상기 제1 구역들로부터 복수의 제2 구역들을 분리하는 단계 - 상기 복수의 제2 구역들은 초기에 제1 채널들과 연관됨 -;
    상기 복수의 제2 구역들을 구역 그룹들로 그룹화하는 단계;
    복수의 채널들에 걸쳐 상기 구역 그룹들로부터 상기 복수의 제2 구역들을 재할당하여, 상기 독립적인 패리티 블록들이 상기 구역 그룹들의 상기 복수의 제2 구역들과 공유되도록 하는 단계; 및
    상기 독립적인 패리티 블록들을 XOR 회로를 통해 로딩하여, 상기 구역 그룹들에 걸쳐 공유하기 위한 로딩된 패리티 블록들을 형성하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 복수의 제2 구역들의 그룹화는 구역 기록 커맨드들, 다른 구역들과 함께 기록된 구역들, 및 유사한 속성들로 개방되는(opened) 구역들 중 임의의 하나에 기초하고, 상기 유사한 속성들은 동일한 제1 워드 라인을 갖는 구역들을 포함하는, 방법.
  11. 제9항에 있어서, 상기 복수의 채널들은 상기 제1 채널들 및 제2 채널들을 포함하는, 방법.
  12. 제11항에 있어서, 상기 복수의 제2 구역들과 연관된 상기 제1 채널들 중 하나 이상은 상기 복수의 제2 구역들의 상기 제2 채널들과 동일하지 않은, 방법.
  13. 제9항에 있어서, 상기 복수의 기록 커맨드 속성들은 구역 기록 포인터들, 기록들의 빈도, 및 동일한 타임 스탬프들로 기록된 구역들 중 적어도 하나 이상으로 구성되는, 방법.
  14. 제9항에 있어서, 상기 제1 구역들로부터 상기 복수의 제2 구역들을 분리하는 것은 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 구역들에 기초하는, 방법.
  15. 제13항에 있어서, 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 상기 구역들은 함께 기록되는 구역들 및 동일한 속도로 기록되는 구역들로 구성되는, 방법.
  16. 제9항에 있어서, 상기 구역 그룹들로부터의 복수의 상관관계들 중 하나 이상의 상관관계들을 갖는 상기 구역들은 동일한 독립적인 패리티 블록들을 공유하는, 방법.
  17. 저장 디바이스로서,
    하나 이상의 메모리들; 및
    하나 이상의 제어기들을 포함하며, 상기 하나 이상의 제어기들은:
    초기 구역 기록 커맨드에서 제1 구역들에 대한 독립적인 패리티 블록들을 유지하는 것;
    상기 제1 구역들과 연관된 복수의 기록 커맨드 속성들을 추적하는 것;
    상기 제1 구역들로부터 복수의 제2 구역들을 분리하는 것 - 상기 복수의 제2 구역들 각각은 초기에 제1 채널들과 연관됨 -;
    상기 복수의 제2 구역들을 구역 그룹들로 그룹화하는 것;
    복수의 채널들에 걸쳐 상기 구역 그룹들로부터 상기 복수의 제2 구역들을 재할당하여, 상기 독립적인 패리티 블록들이 상기 구역 그룹들의 상기 복수의 제2 구역들과 공유되게 하는 것; 및
    상기 독립적인 패리티 블록들을 XOR 회로를 통해 로딩하여, 상기 구역 그룹들에 걸쳐 공유하기 위한 로딩된 패리티 블록들을 형성하는 것을 야기하도록 구성되는, 저장 디바이스.
  18. 제17항에 있어서, 상기 복수의 제2 구역들의 그룹화는 구역 기록 커맨드들, 다른 구역들과 함께 기록된 구역들, 및 유사한 속성들로 개방되는 구역들 중 임의의 하나에 기초하고, 상기 유사한 속성들은 동일한 제1 워드 라인을 갖는 구역들을 포함하는, 저장 디바이스.
  19. 제17항에 있어서, 상기 복수의 채널들은 상기 제1 채널들 및 제2 채널들을 포함하는, 저장 디바이스.
  20. 제19항에 있어서, 상기 복수의 제2 구역들과 연관된 상기 제1 채널들 중 하나 이상은 상기 복수의 제2 구역들의 상기 제2 채널들과 동일하지 않은, 저장 디바이스.
KR1020210082727A 2020-09-09 2021-06-24 최적의 패리티 공유 구역을 위한 식별된 구역 KR102649184B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063076233P 2020-09-09 2020-09-09
US63/076,233 2020-09-09
US17/186,764 US11442646B2 (en) 2020-09-09 2021-02-26 Identified zones for optimal parity sharing zones
US17/186,764 2021-02-26

Publications (2)

Publication Number Publication Date
KR20220033415A KR20220033415A (ko) 2022-03-16
KR102649184B1 true KR102649184B1 (ko) 2024-03-18

Family

ID=80266813

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210082727A KR102649184B1 (ko) 2020-09-09 2021-06-24 최적의 패리티 공유 구역을 위한 식별된 구역

Country Status (4)

Country Link
US (2) US11442646B2 (ko)
KR (1) KR102649184B1 (ko)
CN (1) CN114237968A (ko)
DE (1) DE102021115373A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789611B2 (en) 2020-04-24 2023-10-17 Netapp, Inc. Methods for handling input-output operations in zoned storage systems and devices thereof
US11340987B1 (en) 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US11816358B2 (en) * 2021-08-24 2023-11-14 Micron Technology, Inc. Preserving application data order in memory devices
US11797377B2 (en) * 2021-10-05 2023-10-24 Netapp, Inc. Efficient parity determination in zoned solid-state drives of a storage system
US11803329B2 (en) 2021-11-22 2023-10-31 Netapp, Inc. Methods and systems for processing write requests in a storage system
US11816359B2 (en) 2021-12-16 2023-11-14 Netapp, Inc. Scalable solid-state storage system and methods thereof
US11797183B1 (en) * 2022-06-27 2023-10-24 Western Digital Technologies, Inc. Host assisted application grouping for efficient utilization of device resources
CN117435535A (zh) * 2022-07-13 2024-01-23 北京超弦存储器研究院 一种存储系统、主控芯片、数据存储方法及数据读取方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200125294A1 (en) 2018-10-18 2020-04-23 Western Digital Technologies, Inc. Using interleaved writes to separate die planes

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0612015A1 (en) * 1993-02-16 1994-08-24 International Business Machines Corporation Improved disk array system having special parity groups for data blocks with high update activity
US20020156973A1 (en) 2001-01-29 2002-10-24 Ulrich Thomas R. Enhanced disk array
US8914670B2 (en) 2012-11-07 2014-12-16 Apple Inc. Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks
US9244761B2 (en) * 2013-06-25 2016-01-26 Microsoft Technology Licensing, Llc Erasure coding across multiple zones and sub-zones
US9378084B2 (en) * 2013-06-25 2016-06-28 Microsoft Technology Licensing, Llc Erasure coding across multiple zones
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
DE102020116363A1 (de) * 2019-11-05 2021-05-06 Western Digital Technologies, Inc. Anwenden von haltbarkeitsgruppen auf zonierte namensräume
US11726679B2 (en) * 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces
US11797433B2 (en) * 2019-12-20 2023-10-24 Sk Hynix Nand Product Solutions Corp. Zoned namespace with zone grouping
US11768620B2 (en) * 2020-04-24 2023-09-26 Netapp, Inc. Methods for handling storage devices with different zone sizes and devices thereof
US11500727B2 (en) * 2020-05-27 2022-11-15 Western Digital Technologies, Inc. ZNS parity swapping to DRAM
US11550727B2 (en) * 2020-06-18 2023-01-10 Micron Technology, Inc. Zone-aware memory management in memory subsystems
US11340987B1 (en) * 2021-03-04 2022-05-24 Netapp, Inc. Methods and systems for raid protection in zoned solid-state drives
US20220004342A1 (en) * 2021-09-22 2022-01-06 Intel Corporation Ssd with multiple bandwidth tiers based on physical characteristics

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200125294A1 (en) 2018-10-18 2020-04-23 Western Digital Technologies, Inc. Using interleaved writes to separate die planes

Also Published As

Publication number Publication date
US11789630B2 (en) 2023-10-17
DE102021115373A1 (de) 2022-03-10
KR20220033415A (ko) 2022-03-16
CN114237968A (zh) 2022-03-25
US20220365698A1 (en) 2022-11-17
US11442646B2 (en) 2022-09-13
US20220075545A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
KR102649184B1 (ko) 최적의 패리티 공유 구역을 위한 식별된 구역
US10635580B2 (en) Buffering storage device data in a host memory buffer
US11037627B2 (en) Cell block allocation for hybrid dual write
US10319445B1 (en) Programming unprogrammed upper page during lower page programming of multi-level storage cells
US11934675B2 (en) Mixed mode block cycling for intermediate data
US10331555B1 (en) Dynamic memory compaction
US10347315B2 (en) Group read refresh
US10380015B2 (en) Logical address range mapping for storage devices
US11721402B2 (en) Method and system for improving word line data retention for memory blocks
US10679718B2 (en) Error reducing matrix generation
US12001678B2 (en) Address translation metadata compression in memory devices
US11816350B2 (en) Managing overwrite data within solid state drives
US20240061778A1 (en) Memory sub-system cache extension to page buffers of a memory array
US11640336B2 (en) Fast cache with intelligent copyback
US20240069728A1 (en) Address translation metadata compression in memory devices
US11983442B2 (en) Data storage device and method for multi-level conditional prediction of future random read commands
US20240176501A1 (en) Data Storage Device and Method for Swap Defragmentation
US20240160561A1 (en) Exposed Physical Partitions in Solid-State Storage Devices
US11126545B2 (en) Memory system and operating method thereof
US20240036729A1 (en) Efficient Sub-Block Erasing
US20230393741A1 (en) Storage device and electronic system
US20230333761A1 (en) Tracking Data Usage in Storage Devices
US20230153238A1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
CN113126899A (zh) 完全多平面操作启用

Legal Events

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