KR102502322B1 - 서브 블록들의 동적 할당 - Google Patents
서브 블록들의 동적 할당 Download PDFInfo
- Publication number
- KR102502322B1 KR102502322B1 KR1020200072535A KR20200072535A KR102502322B1 KR 102502322 B1 KR102502322 B1 KR 102502322B1 KR 1020200072535 A KR1020200072535 A KR 1020200072535A KR 20200072535 A KR20200072535 A KR 20200072535A KR 102502322 B1 KR102502322 B1 KR 102502322B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- sub
- memory
- storage
- full
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
서브-블록들의 동적 할당을 위한 시스템, 장치, 및 방법. 먼저, 비휘발성 메모리 어레이는 기입 커맨드들의 세트를 수신한다. 비휘발성 메모리 어레이는 메타블록들로 조직화된 다수의 메모리 다이들을 포함한다. 메타블록들은 2개 이상의 메모리 다이들에 걸쳐 있도록 구성된다. 스트림 관리자는 기입 커맨드들의 세트에 대한 워크로드 유형을 결정한다. 블록 할당 관리자는 워크로드 유형에 기초하여 기입 커맨드들의 세트를 수신하기 위해 타깃 저장 블록을 선택한다. 선택된 타깃 저장 블록은 워크로드 유형에 대한 데이터 블록들을 수신하도록 구성되고, 블록 할당 관리자는 기입 커맨드들의 세트를 타깃 저장 블록으로 보낸다.
Description
3차원 NAND 메모리 어레이들이 더 진보됨에 따라, 각각의 NAND 스트링 내의 워드 라인들의 수는 각 세대마다 증가한다. 예를 들어, 종래의 메모리 어레이는 64개의 워드 라인들 상에 데이터를 저장할 수 있는 반면, 미래의 메모리 기술들은 데이터 저장을 위한 96개의 워드 라인들을 가질 수 있다. 워드 라인 카운트의 이러한 증가는 더 큰 저장 블록 크기를 야기한다. 동일한 용량을 갖는 메모리 다이들의 경우, 저장 블록들의 수는 감소되어 시스템 레벨에서 문제가 될 수 있다. 2-계층(tier) 메모리 홀(two-tier memory hole)의 개념은 워드 라인들의 수를 대략 2배로 만들 수 있도록 구현될 수 있다. 이러한 구성에서, 제조 조인트(fabrication joint)가 다이 내의 메모리 층들의 2개의 계층들 사이에 위치될 수 있다.
멀티-다이 구성에서, 제조 조인트의 양측 상의 메모리 셀 층들의 수의 확장으로, 저장 블록(메타블록들로도 지칭됨)이 종래의 구성들에 비해 매우 커질 수 있다. 더 큰 메타블록들은, 각각의 실패에 의한 더 큰 용량 손실로 인해, 메모리 수율, 불량 블록 관리, 및 블록 실패 취급에 관련된 다수의 문제들 및 제약들을 초래할 수 있다. 따라서, 더 큰 물리적, 및 이에 따라 더 큰 논리적, 메모리 분할들/메타블록들을 설계하고 취급하기 위한 해결책이 필요하다.
본 개시내용은 서브-블록(sub-block)들의 동적 할당을 위한 방법에 관한 것이다. 먼저, 기입 커맨드들의 세트가 비휘발성 메모리 어레이에 의해 수신된다. 비휘발성 메모리 어레이는 메타블록들로 조직화된 다수의 메모리 다이들을 포함한다. 메타블록들은 2개 이상의 메모리 다이들에 걸쳐 있도록 구성된다. 기입 커맨드들의 세트에 대해 워크로드 유형이 결정된다. 타깃 저장 블록이, 워크로드 유형에 기초하여 기입 커맨드들의 세트를 수신하도록 선택된다. 선택된 타깃 저장 블록은 워크로드 유형에 대한 데이터 블록들을 수신하도록 구성되고, 기입 커맨드들의 세트는 타깃 저장 블록으로 보내진다(directed).
본 개시내용은 또한 스트림 관리자 회로, 메타블록 관리 회로, 모드 회로, 추적 회로, 및 판독/기입 회로를 포함하는 장치에 관한 것이다. 스트림 관리자 회로는 기입 커맨드들을 모니터링하고 기입 커맨드들의 세트가 순차적 워크로드 유형에 상관된다고 결정하도록 구성된다. 메타블록 관리 회로는 기입 커맨드들의 세트에 대한 데이터를 수신하기 위해 프리 메타블록을 지정하도록 그리고 풀-블록(full-block) 모드에서 프리 메타블록을 소거하도록 구성된다. 모드 회로는 프리 메타블록의 일부분을 포함하는 다수의 메모리 다이들에 풀-블록 모드 커맨드를 전송하도록 구성된다. 메모리 다이들은 인터페이스 버스에 병렬로 결합된다. 추적 회로는 프리 메타블록을 메모리 다이들 각각 상의 한 쌍의 시스터 서브-블록들과 연관시키도록 구성된다. 판독/기입 회로는 기입 커맨드들의 세트가 순차적 워크로드 유형일 때 풀-블록 모드에서 프리 메타블록에 데이터를 기입하도록 구성된다.
마지막으로, 본 개시내용은 비휘발성 메모리 어레이, 논리적 소거 블록들의 세트, 기입 데이터 파이프라인, 스트림 관리자, 블록 할당 관리자, 및 열린 블록 관리자를 포함하는 시스템에 관한 것이다. 비휘발성 메모리 어레이는 적어도 하나의 로우 및 2개 이상의 컬럼들로 조직화된 다수의 메모리 다이들을 포함한다. 논리적 소거 블록들은 비휘발성 메모리 어레이의 로우의 각각의 메모리 다이로부터의 물리적 소거 블록을 포함하고, 각각의 물리적 소거 블록은 2개의 시스터 서브-블록들을 포함한다.
"물리적 소거 블록"은 단일 소거 동작으로 소거되도록 구성된 물리적 페이지들의 세트를 지칭한다. 소정 실시예들에서, 물리적 소거 블록은 2개 이상의 서브-블록들로 추가로 분할될 수 있다. 그러한 실시예에서, 각각의 서브-블록은 동일한 물리적 소거 블록을 공유하는 다른 서브-블록들과 독립적으로 소거가능할 수 있다. 물리적 소거 블록들의 집합은 논리적 소거 블록을 형성하는 데 사용될 수 있다.
기입 데이터 파이프라인은 기입 커맨드들을 수신하고, 서브-블록 모드에서 논리적 소거 블록들 중 하나에 데이터를 기입하도록 구성된다. 기입 커맨드들 각각은 논리적 블록 어드레스를 포함한다. 스트림 관리자는 순차적으로 수신되는 기입 커맨드들을 모니터링하여, 워크로드 유형을 결정하도록 구성된다. "순차(sequence)"는 소정 활동, 이벤트, 또는 동작이 수행되거나 이행되는 순서를 지칭한다.
스트림 관리자는 기입 커맨드들로부터의 논리적 블록 어드레스들을 이전 기입 커맨드들의 논리적 블록 어드레스들과 비교한다. 스트림 관리자는 이어서, 논리적 블록 어드레스들의 비교에 기초하여 워크로드 유형이 순차적이라고 결정한다. 블록 할당 관리자는 풀-블록 모드에서 저장 동작들을 위해 논리적 소거 블록들 중 하나를 재구성하고, 순차적 워크로드 유형의 기입 커맨드들을 재구성된 논리적 소거 블록으로 보낸다. 블록 할당 관리자는 풀-블록 모드에서 데이터를 재구성된 논리적 소거 블록에 기입할 것을 기입 데이터 파이프라인에 지시한다. 마지막으로, 열린 블록 관리자는 풀-블록 모드에서 재구성된 논리적 소거 블록을 관리한다.
임의의 특정 구성요소 또는 작용의 논의를 용이하게 식별하기 위하여, 도면 부호 내의 최대 유효 숫자 또는 숫자들은 구성요소가 먼저 도입된 도면 번호를 참조한다.
도 1은 일 실시예에 따른 저장 시스템(100)을 도시한다.
도 2는 일 실시예에서의 예시적인 저장소 디바이스(102)의 블록도이다.
도 3은 일 실시예에 따른 메모리 어레이(300)를 도시한다.
도 4는 NAND 스트링(400)의 일 실시예를 도시하는 개략적인 블록도이다.
도 5는 일 실시예에 따른 메모리 어레이(500)를 도시한다.
도 6은 일 실시예에 따른 시스템(600)을 도시한다.
도 7은 일 실시예에 따른 저장 제어기(700)를 도시한다.
도 8은 일 실시예에 따른 저장 제어기(800)를 도시한다.
도 9는 일 실시예에 따른 메타블록 추적 테이블(900)을 도시한다.
도 10은 일 실시예에 따른 루틴(1000)을 도시한다.
도 11은 소정 실시예들을 포함할 수 있는 컴퓨팅 디바이스(1100)의 예시적인 블록도이다.
도 1은 일 실시예에 따른 저장 시스템(100)을 도시한다.
도 2는 일 실시예에서의 예시적인 저장소 디바이스(102)의 블록도이다.
도 3은 일 실시예에 따른 메모리 어레이(300)를 도시한다.
도 4는 NAND 스트링(400)의 일 실시예를 도시하는 개략적인 블록도이다.
도 5는 일 실시예에 따른 메모리 어레이(500)를 도시한다.
도 6은 일 실시예에 따른 시스템(600)을 도시한다.
도 7은 일 실시예에 따른 저장 제어기(700)를 도시한다.
도 8은 일 실시예에 따른 저장 제어기(800)를 도시한다.
도 9는 일 실시예에 따른 메타블록 추적 테이블(900)을 도시한다.
도 10은 일 실시예에 따른 루틴(1000)을 도시한다.
도 11은 소정 실시예들을 포함할 수 있는 컴퓨팅 디바이스(1100)의 예시적인 블록도이다.
크기가 커지는 메모리 어레이들로 인해 제기되는 난제들을 극복하기 위해, 서브-블록 모드가 개시되며, 여기서 각각의 물리적 블록은 2개 이상의 물리적 시스터 서브-블록들로 분할될 수 있다. 시스터 서브-블록들은 서로 독립적으로 사용(프로그래밍, 소거, 및 판독)될 수 있다. 2-계층 메모리 홀 아키텍처의 계층들 사이의 제조 조인트는 물리적 블록을 조인트의 양측 상의 격리된 서브-블록들로 분할하는 데 사용될 수 있다. 이 해결책은, 서브-블록이 실패하는 경우, 풀 물리적 블록은 폐기(retire)될 필요가 없어서, 그러한 실패가 저장 블록 예산에 미치는 영향을 줄일 수 있다는 이점을 갖는다.
"서브-블록"은 물리적 소거 블록의 일부분인 논리적 구조를 지칭한다. 소정 실시예들에서, 서브-블록은 물리적 소거 블록의 컬럼들을 구성하는 NAND 스트링들의 드레인 측과 조인트 사이의 또는 소스 측과 조인트 사이의 물리적 소거 블록의 워드 라인들 또는 물리적 페이지들의 각각이다.
일 실시예에서, 메모리 어레이는 워드 라인들의 로우들 및 NAND 스트링들의 컬럼들로 조직화된 저장 셀들의 세트를 포함한다. 각각의 NAND 스트링은 소스-측, 드레인-측, 및 이들 사이의 조인트를 갖는다. 메모리 어레이의 워드 라인들의 소정 로우들은 함께 물리적 소거 블록을 형성한다. 조인트와 물리적 소거 블록의 소스-측 사이의 워드 라인들은 서브-블록을 형성하고, 조인트와 물리적 소거 블록의 드레인 측 사이의 워드 라인들은 다른 서브-블록을 형성한다.
서브-블록은 물리적으로 동일한 물리적 소거 블록의 일부이지만, 하나의 서브-블록의 일부가 아닌 물리적 소거 블록의 저장 셀들에 대한 영향이 거의 없거나, 최소이거나, 관리가능하거나, 또는 어떠한 영향도 갖지 않으면서 그 하나의 서브-블록 상에서 저장 동작을 수행하는 데 사용될 수 있다. 단일 서브-블록에 영향을 주는 저장 동작들은 본 명세서에서 서브-블록 모드 저장 동작들, 또는 서브-블록 모드에서 서브-블록을 사용하는 것으로서 지칭된다.
소정 실시예들에서, 저장 제어기 또는 다이 제어기는 저장 동작 동안 메모리 어레이의 저장 셀들에 결합된 제어 라인들에 사용되는 구성 설정들에 의해 서브-블록들을 관리, 동작, 및 제어할 수 있다. 하나 이상의 특정 값들을 갖는 특정 세트의 구성 설정들은 물리적 소거 블록 내에서 서브-블록들을 동작시키는 데 사용될 수 있다. 일 실시예에서, 이 구성 설정들은 풀-블록 모드 구성 설정들과 구별하기 위해 서브-블록 모드 구성 설정들 또는 서브-블록 구성 설정들로 지칭된다.
일 실시예에서, 단일 물리적 소거 블록은 2개의 서브-블록들을 포함할 수 있는데, 각각은 물리적 소거 블록의 저장 셀들의 절반을 포함하도록 크기설정된다. 다른 실시예에서, 단일 물리적 소거소거 블록은 2개 초과의 서브-블록들을 포함할 수 있는데, 각각은 물리적 소거 블록의 저장 셀들의 일부분을 포함하도록 크기설정된다.
"메모리"는 데이터를 유지하도록 구성, 프로그래밍, 설계, 배열, 또는 엔지니어링된 임의의 하드웨어, 회로, 컴포넌트, 모듈, 로직, 디바이스, 또는 장치를 지칭한다. 소정 유형의 메모리는 데이터를 저장 및 유지하기 위해 일정 전원의 이용가능성을 요구한다. 다른 유형의 메모리는 전원이 이용불가능할 때 데이터를 유지하고/하거나 저장한다.
"메모리 어레이"는 로우들 및 컬럼들을 갖는 어레이 구조로 조직화된 메모리 셀들(저장 셀들로도 지칭됨)의 세트를 지칭한다. 결과적으로, 비휘발성 메모리 어레이는, 저장된 데이터를 나타내는 데 사용되는 메모리 셀의 특성(예컨대, 임계 전압 레벨, 저항 레벨, 전도성 등)이 특성을 유지하기 위해 전원을 사용할 필요가 없이 메모리 셀의 속성을 유지하도록 구성된 메모리 셀들을 갖는 메모리 어레이이다.
메모리 어레이는 로우 식별자 및 컬럼 식별자를 사용하여 어드레스가능하다. 당업자는, 메모리 어레이가 평면 내의 메모리 셀들의 세트, 메모리 다이 내의 메모리 셀들의 세트, 평면들의 세트 내의 메모리 셀들의 세트, 메모리 다이의 세트 내의 메모리 셀들의 세트, 메모리 패키지 내의 메모리 셀들의 세트, 메모리 패키지들의 세트 내의 메모리 셀들의 세트, 또는 다른 알려진 메모리 셀 세트 아키텍처들 및 구성들을 포함할 수 있음을 인식한다.
메모리 어레이는 저장 또는 메모리 시스템 내에서 다수의 레벨의 조직에서의 메모리 셀들의 세트를 포함할 수 있다. 일 실시예에서, 평면 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다. 일 실시예에서, 메모리 다이의 복수의 평면들 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다. 일 실시예에서, 메모리 디바이스의 복수의 메모리 다이들 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다. 일 실시예에서, 저장 시스템의 복수의 메모리 디바이스들 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다.
"메모리 셀"은, 메모리 셀에 마지막으로 저장된 이진 값(들)이 무엇이었는지를 결정하기 위해 저장 매체가 감지, 판독, 또는 검출될 때 저장 매체의 결정가능한 물리적 특성에 의해 하나 이상의 이진 값들을 나타내도록 구성된 저장 매체의 유형을 지칭한다. 메모리 셀 및 저장 셀은 본 명세서에서 상호교환가능하게 사용된다.
"평면"은 소정 물리적 로우 어드레스들 및 소정 물리적 컬럼 어드레스들을 사용하여 두 평면들 모두 상에서 소정 저장 동작들이 수행될 수 있게 하는 메모리 어레이의 분할을 지칭한다.
"저장 매체"는 하나 이상의 데이터 비트들을 저장하도록 조직화되고 구성된 임의의 물리적 매체를 지칭한다. 일 실시예에서, 저장 매체는 휘발성 메모리 매체에서 사용되는 물리적 저장 셀들 및/또는 메모리 셀들을 지칭한다. 다른 실시예에서, 저장 매체는 비휘발성 메모리 매체에서 사용되는 물리적 저장 셀들 및/또는 메모리 셀들을 지칭한다.
"저장 동작"은 저장 셀의 상태 특성에 의해 나타내어진 데이터의 값을 변경 또는 획득하기 위해 저장 셀 또는 메모리 셀 상에서 수행되는 동작을 지칭한다. 저장 동작들의 예들은 저장 셀로부터 데이터를 판독하는 것(또는 저장 셀의 상태를 감지하는 것), 저장 셀에 데이터를 기입하는 것(또는 프로그래밍하는 것), 및/또는 저장 셀에 저장된 데이터를 소거하는 것을 포함하지만, 이들로 제한되지 않는다.
메모리 시스템에서 서브-블록 모드 해결책을 구현하기 위해, 소정 파라미터들은 각각의 시스터 서브-블록에 독립적으로 액세스하기 위해 설정 및/또는 수정될 필요가 있을 수 있다. 이 모드가 구현될 때마다 서브-블록 모드에 대한 그러한 파라미터들을 설정하는 것은, 상당한 성능 영향을 갖기에 충분한 시간이 걸릴 수 있다. 이러한 이유로, 서브-블록 모드-특정 파라미터들은 디폴트로서 사용될 수 있다.
일부 실시예들에서, 서브-블록 모드를 사용할 때의 소거 시간은, 본 기술 분야에서 잘 이해되는 메모리 아키텍처들에서의 제약들로 인해 풀-블록 모드에서의 소거 시간의 2배일 수 있다. 다시 말하면, 동일한 양의 기입된 데이터에 대해, 풀-블록 모드에서의 동작들과 비교하여 서브-블록 모드에서 동작할 때 소거 동작들의 수의 2배, 및 따라서 소거 시간의 2배가 필요할 수 있어서, 기입 워크로드가 다수의 순차적 또는 의사-순차적 기입들을 포함할 때 상당한 성능 영향을 야기한다. "워크로드"는 비휘발성 저장 디바이스에 의해 수신 및/또는 서비스되는 저장 커맨드들의 수 및 유형, 및 그러한 저장 커맨드들을 서비스하는 것으로부터의 결과 또는 결과들을 지칭한다. 워크로드는 또한 저장 커맨드들에 대한 임의의 통계치를 포함할 수 있다.
서브-블록 모드에서 물리적 블록을 사용하는 것은 또한 비소거된 서브-블록 교란(unerased sub-block disturb, USBD)과 같은 문제들을 야기할 수 있는데, 여기서 그의 시스터 서브-블록을 소거하지 않고서 소정 임계 값을 넘어서 서브-블록을 소거하는 것은 시스터 서브-블록 상에 저장된 데이터를 교란시킬 수 있다. "임계치"는, 그 위에서는 조건이 참이거나 발생할 것이고, 그 아래에서는 조건이 참이 아니거나 발생하지 않게 될, 레벨, 지점, 또는 값을 지칭한다. ("임계치(threshold)." Merriam-Webster.com. 메리엄 웹스터, 2019. Web. 14 Nov. 2019. 편집됨)
"교란"은 저장 동작 및/또는 저장 동작의 단계 동안, 또는 그 후에, 또는 그 결과로서 생성되는 전자 간섭 및/또는 자기 간섭의 유형을 지칭한다. 이러한 이유로, 시스터 서브-블록들 사이의 소거 사이클들은 소정 델타 값 내에서 수행될 필요가 있을 수 있으며, 이는 추가적인 가비지 수집 동작들을 야기하여, 성능, 기입 증폭(write amplification), 및 특정 데이터 저장 용량에 필요한 블록들의 수에 영향을 줄 수 있다.
"기입 증폭"은, 제1 인스턴스에서 초기에 데이터를 초기에 기입하는 것보다 더 여러 번 임의의 데이터, 및 특히 사용자 데이터를 기입하는 것을 야기하는, 비휘발성 저장 디바이스 상에서 수행되는 기입/프로그래밍 동작들의 척도를 지칭한다. 소정 실시예들에서, 기입 증폭은 비휘발성 저장 디바이스 상에 저장된 데이터를 관리 및 유지하기 위해 비휘발성 저장 디바이스에 의해 수행되는 기입 동작들의 수를 카운트할 수 있다. 다른 실시예들에서, 기입 증폭은 비휘발성 저장 디바이스 상의 데이터의 초기 저장을 넘어서 기입되는 기입된, 데이터의 양, 비트들의 수를 측정한다.
"가비지 수집 동작"은 저장 용량 복구 동작을 지칭한다. 1회-기입 저장 매체인, NAND와 같은 비휘발성 메모리 매체에서, 저장된 데이터에 대한 변화들 또는 데이터를 삭제하기 위한 긍정 명령어들은 저장 블록의 데이터 블록들이 무효 데이터가 되게 한다.
가비지 수집 동작은 저장 블록으로부터 새로운 저장 위치로 유효 데이터를 복사하고, 저장 블록의 소거를 준비한다. 가비지 수집 동작은 저장 블록의 소거 동작을 수행하거나, 또는 후속 소거를 위해 저장 블록을 표시할 수 있다. 가비지 수집 동작은 본 명세서에서 압축 동작으로 지칭될 수 있다.
"무효 데이터"는, 호스트가 확정적으로 삭제했거나, 또는 데이터가 데이터의 새로운 또는 변경된 버전에 의해 대체되었기 때문에 삭제될 수 있거나 더 이상 필요하지 않다고 표시한, 저장 블록에 저장된 데이터를 지칭한다. 1회 기입 저장 매체(write once storage media)인 저장 셀들을 포함하는 비휘발성 저장 매체에서. 데이터가 호스트에 의해 수정되는 경우, 데이터의 수정된 버전은 1회 기입 저장 매체에 저장된 원래 데이터가 무효 데이터가 되게 하며, 데이터는 그것이 더 이상 데이터의 현재 버전을 나타내지 않으므로 무효화된다.
"유효 데이터"는, 호스트에 의해 저장되었고 호스트가 데이터가 더 이상 필요하지 않고 삭제될 수 있거나 삭제되어야 한다고 나타낼 때까지 보존 및 유지되어야 하는 저장 블록의 데이터를 지칭한다.
"저장 블록"은 저장 동작들이 저장 셀들의 그룹들 상에서 병렬로 수행될 수 있도록 조직화된 저장 셀들의 세트를 지칭한다. 저장 셀들의 세트의 조직화는 물리적 레벨 또는 논리적 레벨에서 구현될 수 있다. 따라서, 저장 블록은, 일 실시예에서, 워드 라인과 같은 물리적 페이지, 평면들 및/또는 메모리 다이에 걸쳐 있는 물리적 페이지들을 포함하는 논리적 페이지, 물리적 페이지들의 세트를 포함하는 물리적 소거 블록, 논리적 페이지들의 세트를 포함하는 논리적 소거 블록(logical erase block, LEB) 등을 포함할 수 있다. 저장 블록은 본 명세서에서 "블록", "메모리 블록", "메타블록", 또는 LEB로 지칭될 수 있다.
"저장 셀"은 메모리 셀의 결정가능한 특성에 의해 나타내어지거나, 저장된, 이진 값(들)을 결정하기 위해 저장 매체가 감지, 판독, 또는 검출될 때 저장 매체의 결정가능한 특성에 의해 하나 이상의 이진 값들을 나타내도록 구성된 저장 매체의 유형을 지칭한다. 저장 셀 및 메모리 셀은 본 명세서에서 상호교환가능하게 사용된다.
메모리 셀에 데이터를 저장하는 데 사용되는 결정가능한 특성의 유형은 사용되는 메모리 또는 저장 기술의 유형에 따라 달라질 수 있다. 예를 들어, 각각의 메모리 셀이 소스 리드, 드레인 리드 및 게이트를 갖는 트랜지스터를 포함하는 플래시 메모리 셀들에서, 결정가능한 특성은, 게이트에 인가될 때, 메모리 셀로 하여금 드레인 리드와 소스 리드 사이에서 전류를 전도하게 하는 전압 레벨이다. 이 예에서, 전압 레벨은 본 명세서에서 임계 전압으로 지칭된다. 임계 전압은 또한 제어 게이트 기준 전압(control gate reference voltage, CGRV), 판독 전압, 판독 레벨, 또는 기준 전압으로 지칭될 수 있다.
결정가능한 물리적 특성의 예들은, 트랜지스터에 대한 임계 전압, 메모리 셀의 전기 저항 레벨, 메모리 셀을 통하는 전류 레벨, 자극 배향, 스핀-전달 토크 등을 포함하지만, 이들로 제한되지 않는다.
"트랜지스터"는 신호 증폭기로서 또는 전자 스위치로서의 역할을 하도록 구성된 전자 컴포넌트를 지칭한다. 트랜지스터는 게이트 단자, 소스 단자, 드레인 단자, 및 바디 단자 또는 단지 바디를 포함한다. 트랜지스터는 개별 전자 또는 반도체 컴포넌트를 포함할 수 있거나, 또는 집적 회로 또는 반도체 컴포넌트 또는 반도체 디바이스 내에 내장된 구조물들 또는 구조물들의 부분들 또는 디바이스들을 포함할 수 있다.
스위치로서 동작하는 트랜지스터는 소스 단자가 제1 전기 구조물에 전기적으로 접속하고 드레인 단자가 제2 전기 구조물에 전기적으로 접속하도록 구성된다. 스위치 구성에서, 트랜지스터의 게이트 단자는 제어 라인에 접속한다. 트랜지스터는 제어 라인 상의 전압을 임계 전압으로, 또는 그 초과로 증가시킴으로써 활성화되고, 제어 라인 상의 전압을 임계 전압 미만으로 감소시킴으로써 비활성화된다. 제어 라인에 의한 트랜지스터의 활성화는 본 명세서에서 트랜지스터를 온(on) 상태에 배치하는 것으로 지칭된다.
트랜지스터의 활성화는 전기 전도성 경로를 형성하고/하거나, 트랜지스터로 하여금 전류를 전도하고/하거나 전압 또는 바이어스가 소스 단자와 드레인 단자 사이에서 전달되게 한다.
본 명세서에 개시된 해결책은 이러한 문제들을 서브-블록 모드 사용으로 해결할 수 있고, 이들 문제를 극복하기 위해 서브-블록 모드 및 풀-블록 모드를 혼합하는 방식을 제공할 수 있다. "서브-블록 모드"는, 어레이의 제1 세트의 저장 셀들 상의 저장 동작들이 제1 세트의 저장 셀들과 동일한 물리적 어레이 내의 제2 세트의 저장 셀들 상의 저장 동작들과는 독립적이도록 저장 셀들의 어레이를 동작시키는 방식, 프로세스, 방법, 또는 방식을 지칭한다.
일 실시예에서, 메모리 어레이는 워드 라인들의 로우들 및 NAND 스트링들의 컬럼들로 조직화된 저장 셀들의 세트를 포함하며, 각각의 NAND 스트링은 소스-측, 드레인-측, 및 이들 사이의 조인트를 갖는다. 메모리 어레이의 워드 라인들의 소정 로우들은 함께 물리적 소거 블록을 형성한다. 다이 제어기가 서브-블록 모드에서 물리적 소거 블록을 동작시킬 때, 조인트와 물리적 소거 블록의 소스-측 사이의 워드 라인들은 제1 서브-블록을 형성하고, 조인트와 물리적 소거 블록의 드레인-측 사이의 워드 라인들은 제2 서브-블록을 형성한다.
일 실시예에서, 다이 제어기는, 하나의 서브-블록을 수반하는 저장 동작들이 물리적으로 동일한 물리적 소거 블록의 일부인 다른 서브-블록 내의 저장 셀들에 대한 어떠한 영향도 없고/없거나 최소의 영향을 갖고/갖거나 완화된 영향을 갖도록, 물리적 소거 블록에 결합된 제어 라인들을 바이어싱함으로써 서브-블록 모드에서 물리적 소거 블록을 동작시킨다. 달리 말하면, 다이 제어기는, 하나의 서브-블록 상에 저장 동작의 실행이 동일한 물리적 소거 블록 내의 제2 서브-블록의 데이터 또는 저장 셀 설정들에 최소의 교란을 야기하거나, 교란을 야기하지 않도록 저장 동작의 부분들에 대한 타이밍 및 제어 라인들의 바이어싱과 함께, 그러한 방식으로 물리적 소거 블록을 동작시킨다.
"풀-블록 모드"는 메모리 어레이의 저장 셀들의 세트의 저장 셀들에 인코딩된 데이터 값들이 단일 소거 저장 동작에서 소거가능하도록 저장 셀들의 어레이를 동작시키는 방식, 프로세스, 방법, 또는 방식을 지칭한다.
일 실시예에서, 어레이는 워드 라인들의 로우들 및 NAND 스트링들의 컬럼들로 조직화된 저장 셀들의 세트를 포함하며, 각각의 NAND 스트링은 소스-측, 드레인-측, 및 이들 사이의 조인트를 갖는다. 메모리 어레이의 워드 라인들의 소정 로우들은 함께 물리적 소거 블록을 형성한다. 다이 제어기가 풀-블록 모드에서 물리적 소거 블록을 동작시킬 때, 조인트와 소스-측 사이의 워드 라인들 및 조인트와 드레인-측 사이의 워드 라인들은 함께, 물리적 소거 블록을 형성한다.
일 실시예에서, 다이 제어기는, 소거 저장 동작이 물리적 소거 블록의 저장 셀들을 한 유닛으로서 영향을 주도록, 물리적 소거 블록에 결합된 제어 라인들을 바이어싱함으로써 풀-블록 모드에서 물리적 소거 블록을 동작시킨다. 소정 실시예들에서, 풀-블록 모드에서 물리적 소거 블록을 동작시키는 것은, 물리적 소거 블록의 저장 셀들로부터 데이터를 판독하는 것, 그에 데이터를 기입하는 것, 및 그를 소거하는 것과 유사하다.
소정 실시예들에서, 풀-블록 모드 저장 동작은 단일 메모리 다이의 저장 셀들의 단일 어레이의 단일 물리적 소거 블록 상에서 수행될 수 있다. 대안적으로 또는 추가로, 풀-블록 모드 저장 동작은, 저장 제어기로부터의 단일 저장 동작이 복수의 물리적 소거 블록들 상에서 병렬로 동작하도록 조직화되고 구성된 복수의 메모리 다이들의 저장 셀들의 복수의 어레이들의 복수의 물리적 소거 블록들 상에서 수행될 수 있다. 그러한 실시예 및 구성에서, 복수의 물리적 소거 블록들은 논리적 소거 블록들, 메타블록들, 또는 수퍼블록들로 지칭된다.
"논리적 소거 블록"은 저장 블록에 대한 다른 용어를 지칭한다. 소정 실시예들에서, 논리적 소거 블록은 평면들, 메모리 다이, 및/또는 칩들에 걸쳐 있는 논리적 페이지들의 세트를 지칭한다. 저장 셀들의 이러한 조직화는 '논리적'인 것으로 간주되는데, 그 이유는 물리적 페이지들이 서로 직접 결합되지 않을 수 있기 때문이다. 물리적 페이지들 사이의 논리적 관계는 테이블 또는 다른 맵핑에서 추적될 수 있거나, 메모리 다이 또는 메모리 어레이 내의 물리적 페이지들의 위치 및 다수의 메모리 다이 또는 메모리 어레이들을 접속시킨 아키텍처로 인해 고유할 수 있다.
물리적 페이지들은 워드 라인들을 포함할 수 있고, 마치 이들이 메모리 다이 및/또는 메모리 평면들 및/또는 메모리 어레이들에 걸쳐 있는 단일 논리적 페이지인 것처럼 병렬로 동작된다. 유사한 방식으로, 메모리 다이 및/또는 메모리 평면들 및/또는 메모리 어레이들에 걸쳐 있는 다수의 물리적 소거 블록들은, 마치 이들이 단일 소거 블록인 것처럼 병렬로 동작될 수 있으며 따라서 논리적 소거 블록들로 지칭된다. 논리적 소거 블록, 메타블록, 및 수퍼 블록이라는 용어들은 본 명세서에서 상호교환가능하게 사용된다.
"논리적 페이지"는 저장 동작들을 위해 단일 페이지로 취급되는 물리적 페이지들의 집합을 지칭한다.
"메타블록"은 저장 동작들이 저장 셀들의 그룹들 상에서 병렬로 수행될 수 있도록 조직화된 저장 셀들의 세트를 지칭한다. 메타블록은 저장 셀들의 세트를 논리적 레벨에서 조직화하는 논리적 구조이다. 일 실시예에서, 메타블록은 단일 소거 저장 동작에서 소거될 수 있는 가장 작은 저장 유닛이다.
일 실시예에서, 메타블록은 2개 이상의 상이한 물리적 평면들, 메모리 다이, 또는 칩들로부터의 물리적 소거 블록들의 집합이다. 따라서, 메타블록은, 일 실시예에서, 메모리 어레이의 메모리 평면들, 메모리 다이, 또는 메모리 칩들에 걸쳐 있을 수 있다. 일 실시예에서, 메타블록은 메모리 다이의 메모리 어레이의 로우를 따르는 물리적 소거 블록들의 집합이다. 메타블록은 본 명세서에서 "블록", "메모리 블록", "논리적 소거 블록", 또는 LEB로 지칭될 수 있다.
도 1은 개시된 해결책에 따른 저장 디바이스를 포함하는 저장 시스템(100)의 일 실시예를 도시하는 개략적인 블록도이다. 저장 시스템(100)은 저장 디바이스(102), 저장 제어기(104), 메모리 다이(106), 호스트(108), 사용자 애플리케이션(110), 저장 클라이언트(112), 데이터 버스(114), 버스(116), 및 네트워크(118)를 포함한다. "호스트"는 저장 커맨드들을 전송 및 수신하도록 구성된 임의의 컴퓨팅 디바이스 또는 컴퓨터 디바이스 또는 컴퓨터 시스템을 지칭한다. 호스트의 예들은 컴퓨터, 랩톱, 모바일 디바이스, 어플라이언스, 가상 머신, 기업 서버, 데스크톱, 태블릿, 메인 프레임 등을 포함하지만, 이들로 제한되지 않는다.
"저장 커맨드"는 저장 동작과 관련된 임의의 커맨드를 지칭한다. 저장 커맨드들의 예들은 판독 커맨드들, 기입 커맨드들, 유지 커맨드들, 구성 커맨드, 관리 커맨드, 진단 커맨드들, 테스트 모드 커맨드들, 대책 커맨드, 및 저장 제어기가 호스트로부터 수신하거나 다른 컴포넌트, 디바이스, 또는 시스템에 발행할 수 있는 임의의 다른 커맨드를 포함하지만, 이들로 제한되지 않는다.
"기입 커맨드"는 하드 디스크 드라이브, 비휘발성 메모리 매체 등과 같은 영구 저장 매체 상에 하나 이상의 데이터 블록들을 기입하거나 저장할 것을 수신자에 지시하도록 구성된 저장 커맨드를 지칭한다. 기입 커맨드는 데이터가 저장 디바이스의 물리적 저장 매체에 기입되게 하는 것을 야기할 수 있는 임의의 저장 커맨드를 포함할 수 있다. 기입 커맨드는 하나 이상의 데이터 블록들을 채우기에 충분한 데이터를 포함할 수 있거나, 또는 기입 커맨드는 하나 이상의 데이터 블록들의 일부분을 채우기에 충분한 데이터를 포함할 수 있다. 일 실시예에서, 기입 커맨드는 시작 LBA, 및 저장 매체 상에 기입할 데이터의 LBA의 수를 나타내는 카운트를 포함한다.
저장 시스템(100)은 버스(116)에 의해 접속된 저장 제어기(104) 및 하나 이상의 메모리 다이들(106)을 포함하는 적어도 하나의 저장 디바이스(102)를 포함한다. "저장 제어기"는 비휘발성 메모리 매체 상에서의 데이터 동작들을 관리하도록 구성된 하드웨어, 디바이스, 컴포넌트, 요소, 또는 회로를 지칭하며, 하나 이상의 프로세서들, 프로그램가능 프로세서들(예컨대, FPGA들), ASIC들, 마이크로컨트롤러들 등을 포함할 수 있다. 일부 실시예들에서, 저장 제어기는 비휘발성 메모리 매체 상에 데이터를 저장하고/하거나 그로부터 데이터를 판독하도록, 비휘발성 메모리 디바이스로/로부터 데이터를 전송하도록, 등등이도록 구성된다.
"메모리 다이"는 주어진 기능 회로가 제조되는 반도체 재료의 작은 조각을 지칭한다. 전형적으로, 집적 회로들은 포토리소그래피와 같은 공정들을 통해 전자 등급 실리콘(electronic-grade silicon, EGS) 또는 다른 반도체(예컨대 GaAs)의 단일 웨이퍼 상에 큰 배치(batch)로 생성된다. 웨이퍼는 다수의 조각들로 절단(다이싱)되며, 각각은 회로의 하나의 사본을 포함한다. 이들 조각 각각은 다이 또는 메모리 다이로 불린다. (2019년 10월 9일 Wikipedia.com에서 "다이(집적 회로)"로 검색. 2019년 11월 18일에 액세스함.)
메모리 다이는, 일 실시예에서, 비휘발성 메모리 매체 및/또는 비휘발성 메모리 어레이로서 동작하기 위한 하나 이상의 기능 회로들을 포함하는 다이이다. "비휘발성 메모리 어레이"는 로우들 및 컬럼들을 갖는 어레이 구조로 조직화된 비휘발성 저장 셀들(메모리 셀들 또는 비휘발성 메모리 셀들로도 지칭됨)의 세트를 지칭한다. 메모리 어레이는 로우 식별자 및 컬럼 식별자를 사용하여 어드레스가능하다.
"비휘발성 메모리 매체"는 일차 전원이 제거된 후에 0 또는 1의 이진 값을 나타내는 데 사용되는 변경가능한 물리적 특성을 유지하도록 구성된 임의의 하드웨어, 디바이스, 컴포넌트, 요소, 또는 회로를 지칭한다. 변경가능한 물리적 특성의 예들은, 트랜지스터에 대한 임계 전압, 메모리 셀의 전기 저항 레벨, 메모리 셀을 통한 전류 레벨, 자극 배향, 스핀-전달 토크 등을 포함하지만, 이들로 제한되지 않는다.
변경가능한 물리적 특성은, 일단 설정되면, 비휘발성 메모리 매체에 대한 일차 전원이 이용불가능할 때, 이진 값이 판독, 검색, 또는 감지될 때 변경가능한 물리적 특성이 측정, 검출, 또는 감지될 수 있도록, 물리적 특성이 충분히 고정된 상태로 유지되도록 한다. 달리 말하면, 비휘발성 메모리 매체는, 비휘발성 메모리 매체에 대한 전원이 제거되고 이어서 복원된 후에 비휘발성 메모리 매체 상에 저장된 데이터가 검색가능하도록 구성된 저장 매체이다. 비휘발성 메모리 매체는 하기를 포함할 수 있지만 이들로 제한되지 않는 하나 이상의 비휘발성 메모리 요소들을 포함할 수 있다: 칩, 패키지, 평면, 메모리 다이 등.
비휘발성 메모리 매체의 예들은 하기를 포함하지만 이들로 제한되지 않는다: ReRAM, 멤리스터(Memristor) 메모리, 프로그래밍가능 금속화 셀 메모리, 상변화 메모리(PCM, PCME, PRAM, PCRAM, 오보닉(ovonic) 통합 메모리, 칼코겐화물 RAM, 또는 C-RAM), NAND 플래시 메모리(예컨대, 2D NAND 플래시 메모리, 3D NAND 플래시 메모리), NOR 플래시 메모리, 나노 랜덤 액세스 메모리(나노 RAM 또는 NRAM), 나노결정 유선 기반 메모리, 실리콘 산화물 기반 10 나노미터 이하(sub-10 nanometer) 프로세스 메모리, 그래핀(graphene) 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS), 프로그래밍가능 금속화 셀(PMC), CBRAM(conductive-bridging RAM), MRAM(magneto-resistive RAM), 자기 저장 매체(예컨대, 하드 디스크, 테이프), 광학 저장 매체 등.
비휘발성 메모리 매체가 본 명세서에서 "메모리 매체"로 지칭되는 한편, 다양한 실시예들에서, 비휘발성 메모리 매체는 더 일반적으로는 비휘발성 메모리로 지칭될 수 있다. 비휘발성 메모리 매체는 전원이 제거될 때 데이터를 저장할 수 있기 때문에, 비휘발성 메모리 매체는 기록 매체, 비휘발성 기록 매체, 비휘발성 저장 매체, 저장소, 비휘발성 메모리, 휘발성 메모리 매체, 비휘발성 저장 매체, 비휘발성 저장소 등으로도 지칭될 수 있다.
소정 실시예들에서, 비휘발성 메모리 매체에 저장된 데이터는 블록 레벨에서 어드레스가능하며, 이는 비휘발성 메모리 매체 내의 데이터가 고유한 논리적 어드레스(예컨대, LBA)를 각각 갖는 데이터 블록들로 조직화된다는 것을 의미한다. 다른 실시예들에서, 비휘발성 메모리 매체에 저장된 데이터는 바이트 레벨에서 어드레스가능하며, 이는 비휘발성 메모리 매체 내의 데이터가 논리적 어드레스와 같은 고유 어드레스를 각각 갖는 데이터의 바이트들(8 비트들)로 조직화된다는 것을 의미한다. 바이트 어드레스가능 비휘발성 메모리 매체의 일례는 저장소 클래스 메모리(storage class memory, SCM)이다. "비휘발성 메모리 어레이"는 로우들 및 컬럼들을 갖는 어레이 구조로 조직화된 비휘발성 저장 셀들(메모리 셀들 또는 비휘발성 메모리 셀들로도 지칭됨)의 세트를 지칭한다. 메모리 어레이는 로우 식별자 및 컬럼 식별자를 사용하여 어드레스가능하다.
일부 실시예들에서, 각각의 저장 디바이스(102)는 플래시 메모리, 나노 랜덤 액세스 메모리("나노 RAM 또는 NRAM"), 자기-저항성 RAM("MRAM"), 동적 RAM("DRAM"), 상변화 RAM("PRAM") 등과 같은 2개 이상의 메모리 다이들(106)을 포함할 수 있다. 추가의 실시예들에서, 데이터 저장 디바이스(102)는 동적 RAM("DRAM"), 정적 RAM("SRAM"), 자기 데이터 저장소, 광학 데이터 저장소, 및/또는 다른 데이터 저장 기술들과 같은 다른 유형의 비휘발성 및/또는 휘발성 데이터 저장소를 포함할 수 있다.
본 명세서에서 저장 디바이스로도 지칭되는 저장 디바이스(102)는 여기에 도시된 바와 같이 호스트(108) 내의 컴포넌트일 수 있고, 주변 컴포넌트 상호접속 익스프레스(peripheral component interconnect express, "PCI-e") 버스, 직렬 어드밴스드 기술 부착(Serial Advanced Technology Attachment, "직렬 ATA") 버스 등과 같은 데이터 버스(114)를 사용하여 접속될 수 있다. 다른 실시예에서, 저장 디바이스(102)는 호스트(108)의 외부에 있고, 접속되거나, 범용 직렬 버스(universal serial bus, "USB") 접속, 전기 전자 기술자 협회(Institute of Electrical and Electronics Engineers, "IEEE") 1394 버스("파이어와이어(FireWire)") 등. 다른 실시예들에서, 저장 디바이스(102)는 주변 컴포넌트 상호접속("PCI") 익스프레스 버스를 사용하여 전기 또는 광학 버스 확장 또는 버스 네트워킹 해결책, 예컨대 인피니밴드(InfiniBand) 또는 PCI 익스프레스 어드밴스드 스위칭("PCI-AS") 등을 사용하여 호스트(108)에 접속된다.
다양한 실시예들에서, 저장 디바이스(102)는 듀얼-인라인 메모리 모듈(dual-inline memory module, "DIMM"), 도터 카드(daughter card), 또는 마이크로-모듈의 형태일 수 있다. 다른 실시예에서, 저장 디바이스(102)는 랙-장착형 블레이드(rack-mounted blade) 내의 컴포넌트이다. 다른 실시예에서, 저장 디바이스(102)는 상위-레벨 어셈블리(예컨대, 마더 보드, 랩톱, 그래픽 프로세서) 상에 직접 통합되는 패키지 내에 포함된다. 다른 실시예에서, 저장 디바이스(102)를 포함하는 개별 컴포넌트들은 중간 패키징 없이 상위-레벨 어셈블리 상에 직접 통합된다. 저장 디바이스(102)는 도 2와 관련하여 더 상세히 설명된다.
"프로세서"는 기계 명령어들을 수신, 해석, 디코딩, 및 실행하도록 구성된 임의의 회로부, 컴포넌트, 칩, 다이, 패키지, 또는 모듈을 지칭한다. 프로세서의 예들은 중앙 처리 유닛, 범용 프로세서, 애플리케이션 특정 프로세서, 그래픽 프로세싱 유닛(GPU), 필드 프로그램가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 시스템 온 칩(SoC), 가상 프로세서, 프로세서 코어 등을 포함할 수 있지만, 이들로 제한되지 않는다.
추가의 실시예에서, DAS로서 호스트(108)에 직접 접속되는 대신에, 데이터 저장 디바이스(102)는 데이터 네트워크를 통해 호스트(108)에 접속될 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 저장 영역 네트워크("SAN") 저장 디바이스, 네트워크 부착 저장소(network attached storage, "NAS") 디바이스, 네트워크 공유 등을 포함할 수 있다. 일 실시예에서, 저장 시스템(100)은 인터넷, 광역 네트워크("WAN"), 도시권 네트워크("MAN"), 로컬 영역 네트워크("LAN"), 토큰 링, 무선 네트워크, 파이버 채널 네트워크, SAN, NAS, ESCON 등과 같은 데이터 네트워크, 또는 네트워크들의 임의의 조합을 포함할 수 있다. 데이터 네트워크는 또한 이더넷, 토큰 링, Wi-Fi, Wi-Max 등과 같은 IEEE 802 계열의 네트워크 기술들로부터의 네트워크를 포함할 수 있다. 데이터 네트워크는 서버, 스위치, 라우터, 케이블링, 라디오(radio), 및 호스트(108)와 데이터 저장 디바이스(102) 사이의 네트워킹을 용이하게 하는 데 사용되는 다른 장비를 포함할 수 있다.
저장 시스템(100)은 저장 디바이스(102)에 접속된 적어도 하나의 호스트(108)를 포함한다. 다수의 호스트들(108)이 사용될 수 있고, 서버, 저장 영역 네트워크("SAN")의 저장 제어기, 워크스테이션, 개인용 컴퓨터, 랩톱 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 또는 어플라이언스, 데이터베이스 또는 저장 어플라이언스, 데이터 획득 또는 데이터 캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 휴대용 전자 디바이스, 무선 디바이스 등을 포함할 수 있다. 다른 실시예에서, 호스트(108)는 클라이언트일 수 있고, 저장 디바이스(102)는 호스트(108)로부터 전송된 데이터 요청들을 서비스하도록 자율적으로 동작한다. 이 실시예에서, 호스트(108) 및 저장 디바이스(102)는 컴퓨터 네트워크, 시스템 버스, 직접 부착 저장소(Direct Attached Storage, DAS), 또는 컴퓨터와 자율 저장 디바이스(102) 사이의 접속에 적합한 다른 통신 수단을 사용하여 접속될 수 있다.
도시된 실시예는 호스트(108)의 일부로서 저장 클라이언트(112)와 통신하는 사용자 애플리케이션(110)을 도시한다. 일 실시예에서, 사용자 애플리케이션(110)은 저장 클라이언트(112) 상에서 또는 그와 함께 동작하는 소프트웨어 애플리케이션이다. "저장 클라이언트"는 저장 서비스들을 사용하기 위해 저장 디바이스와 통신하도록 구성된 임의의 하드웨어, 소프트웨어, 펌웨어, 또는 논리 컴포넌트 또는 모듈을 지칭한다. 저장 클라이언트의 예들은 운영 체제, 파일 시스템, 데이터베이스 애플리케이션, 데이터베이스 관리 시스템(database management system, "DBMS"), 서버 애플리케이션, 서버, 볼륨 관리자, 커넬-레벨 프로세스, 사용자-레벨 프로세스, 애플리케이션, 모바일 애플리케이션, 스레드, 프로세스 등을 포함하지만, 이들로 제한되지 않는다. "소프트웨어"는 기계 메모리(예를 들어, 판독/기입 휘발성 메모리 매체 또는 비휘발성 메모리 매체)에서 프로세서-실행가능 명령어들로서 구현되는 로직을 지칭한다.
저장 클라이언트(112)는 파일들 및 데이터를 관리하고, 저장 제어기(104) 및 관련 메모리 다이들(106)의 기능들 및 특징들을 이용한다. 저장 클라이언트들의 대표적인 예들은 서버, 파일 시스템, 운영 체제, 데이터베이스 관리 시스템("DBMS"), 볼륨 관리자 등을 포함하지만, 이들로 제한되지 않는다. 저장 클라이언트(112)는 저장 디바이스(102) 내의 저장 제어기(104)와 통신한다. 일부 실시예들에서, 저장 클라이언트(112)는 호스트(108) 상에서 동작하거나 네트워크(118)를 통해 달리 액세스가능한 원격 저장 클라이언트들을 포함할 수 있다. 저장 클라이언트들은 운영체제, 파일 시스템, 데이터베이스 애플리케이션, 서버 애플리케이션, 커널-레벨 프로세스, 사용자-레벨 프로세스, 애플리케이션 등을 포함할 수 있지만 이들로 제한되지 않는다.
일 실시예에서, 저장 시스템(100)은 하나 이상의 컴퓨터 네트워크들(118)을 통해 하나 이상의 호스트들(108)에 접속된 하나 이상의 클라이언트들을 포함한다. 호스트(108)는 서버, SAN의 저장 제어기, 워크스테이션, 개인용 컴퓨터, 랩톱 컴퓨터, 핸드헬드 컴퓨터, 수퍼컴퓨터, 컴퓨터 클러스터, 네트워크 스위치, 라우터, 또는 어플라이언스, 데이터베이스 또는 저장 어플라이언스, 데이터 획득 또는 데이터 캡처 시스템, 진단 시스템, 테스트 시스템, 로봇, 휴대용 전자 디바이스, 무선 디바이스 등일 수 있다. 네트워크(118)는 인터넷, 광역 네트워크("WAN"), 도시권 네트워크("MAN"), 로컬 영역 네트워크("LAN"), 토큰 링, 무선 네트워크, 파이버 채널 네트워크, SAN, 네트워크 부착 저장소(NAS), ESCON 등, 또는 네트워크들의 임의의 조합을 포함할 수 있다. 네트워크(118)는 또한 이더넷, 토큰 링, WiFi, Wi-Max 등과 같은 IEEE 802 계열의 네트워크 기술들로부터의 네트워크를 포함할 수 있다.
네트워크(118)는 서버, 스위치, 라우터, 케이블링, 라디오, 및 호스트(108) 또는 호스트들 및 호스트(108) 또는 클라이언트들을 네트워킹하는 것을 용이하게 하는 데 사용되는 다른 장비를 포함할 수 있다. 일 실시예에서, 저장 시스템(100)은 네트워크(118)를 통해 피어로서 통신하는 다수의 호스트들을 포함한다. 다른 실시예에서, 저장 시스템(100)은 네트워크(118)를 통해 피어로서 통신하는 다수의 메모리 디바이스들(102)을 포함한다. 당업자는 하나 이상의 클라이언트들 또는 하나 이상의 메모리 디바이스들(102) 또는 하나 이상의 호스트들에 접속된 하나 이상의 메모리 디바이스들(102)을 갖는 다른 컴퓨터 사이에 단일 또는 중복 접속을 갖는 하나 이상의 네트워크들 및 관련 장비를 포함하는 다른 컴퓨터 네트워크들을 인식할 것이다. 일 실시예에서, 저장 시스템(100)은 호스트(108) 없이 네트워크(118)를 통해 호스트(108)에 접속되는 2개 이상의 메모리 디바이스들(102)을 포함한다.
일 실시예에서, 저장 클라이언트(112)는 입력/출력(I/O) 인터페이스를 포함하는 호스트 인터페이스를 통해 저장 제어기(104)와 통신한다. 예를 들어, 저장 디바이스(102)는 ATA 인터페이스 표준, ATA 패킷 인터페이스("ATAPI") 표준, 소형 컴퓨터 시스템 인터페이스("SCSI") 표준, 및/또는 국제 정보기술 표준화 위원회("INCITS")에 의해 유지되는 파이버 채널 표준을 지원할 수 있다.
소정 실시예들에서, 메모리 디바이스의 저장 매체는 볼륨들 또는 파티션들로 분할된다. 각각의 볼륨 또는 파티션은 복수의 섹터들을 포함할 수 있다. 전통적으로, 섹터는 512 바이트의 데이터이다. 하나 이상의 섹터들은 블록(본 명세서에서 블록 및 데이터 블록 둘 모두로 상호교환가능하게 지칭됨)으로 조직화된다. "데이터 블록"은 저장 커맨드를 사용하여 액세스가능하고/하거나 어드레스가능한 물리적 저장 매체 상의 가장 작은 물리적 양의 저장 공간을 지칭한다. 물리적 저장 매체는 휘발성 메모리 매체, 비휘발성 메모리 매체, 영구 저장소, 비휘발성 저장소, 플래시 저장 매체, 하드 디스크 드라이브 등일 수 있다. 소정의 종래 저장 디바이스들은 물리적 저장 매체를 볼륨들 또는 논리적 파티션들(파티션들로도 지칭됨)로 분할한다. 각각의 볼륨 또는 논리적 파티션은 복수의 섹터들을 포함할 수 있다. 하나 이상의 섹터들은 블록(데이터 블록으로도 지칭됨)으로 조직화된다. 윈도우(Windows)® 운영 체제와 인터페이싱하는 것들과 같은 소정 저장 시스템들에서, 데이터 블록들은 클러스터들로 지칭된다. 유닉스(UNIX), 리눅스(Linux) 또는 유사한 운영 체제와 인터페이싱하는 것들과 같은 다른 저장 시스템들에서, 데이터 블록들은 단순히 블록들로 지칭된다. 데이터 블록 또는 클러스터는 저장 제어기에 의해 관리되는 저장 매체 상의 가장 작은 물리적 양의 저장 공간을 나타낸다. 블록 저장 디바이스는 물리적 저장 매체에 걸쳐 사용자 데이터 저장을 위해 이용가능한 n개의 데이터 블록들을, 0에서 n까지 번호가 매겨진 논리적 블록 어드레스(LBA)와 연관시킬 수 있다. 소정 블록 저장 디바이스들에서, 논리적 블록 어드레스들은 볼륨 또는 논리적 파티션 당 0 내지 n의 범위일 수 있다. 종래의 블록 저장 디바이스들에서, 논리적 블록 어드레스는 단지 하나의 데이터 블록에 직접 맵핑된다. "논리적 블록 어드레스"는 저장 매체에 걸쳐 사용자 데이터 저장을 위해 이용가능한 n개의 논리적 블록들 각각을 논리적 어드레스와 연관시키기 위해 블록 저장 디바이스에서 사용되는 값을 지칭한다. 소정 블록 저장 디바이스들에서, 논리적 블록 어드레스들(LBA들)은 볼륨 또는 파티션 당 0 내지 n의 범위일 수 있다. 블록 저장 디바이스들에서, 각각의 LBA는 특정 데이터 블록에 직접 맵핑되고, 각각의 데이터 블록은 특정 세트의 물리적 섹터들, 또는 물리적 저장 매체 상의 물리적 데이터 블록 어드레스들에 맵핑된다. "사용자 데이터"는 호스트가 비휘발성 저장 디바이스에게 저장 또는 기록할 것을 지시하는 데이터를 지칭한다.
하나의 예시적인 실시예에서, 데이터 블록은 4 KB인 8개의 섹터들을 포함한다. 윈도우(Windows)® 운영 체제와 인터페이싱하는 것들과 같은 소정 저장 시스템들에서, 데이터 블록들은 클러스터들로 지칭된다. 유닉스, 리눅스 또는 유사한 운영 체제와 인터페이싱하는 것들과 같은 다른 저장 시스템들에서, 데이터 블록들은 단순히 블록들로 지칭된다. 블록 또는 데이터 블록 또는 클러스터는 저장 제어기, 저장 시스템, 저장 유닛, 저장 디바이스 등과 같은 저장 관리자에 의해 관리되는 저장 매체 상의 가장 작은 물리적 양의 저장 공간을 나타낸다.
일부 실시예들에서, 저장 제어기(104)는 메모리 다이(106) 내의 솔리드 스테이트 저장 메모리 셀들과 같은 하나 이상의 비대칭, 1회-기입 저장 매체 상에 데이터를 저장하도록 구성될 수 있다. "1회 기입 저장 매체"는 새로운 데이터 또는 데이터에 대한 변경이 그 위에 기입되거나 프로그래밍되기 전에 재초기화되는(예를 들어, 소거되는) 저장 셀과 같은 저장 매체를 지칭한다. 다시 말하면, 1회 기입 저장 매체의 데이터는 덮어쓰기될 수 없으며, 1회 기입 저장 매체는 1회 기입 저장 매체에 데이터를 후속적으로 기입하기 전에 소거되어야 한다. "비대칭 저장 매체"는 상이한 저장 동작들에 대한 상이한 레이턴시들을 갖는 저장 매체를 지칭한다. 많은 유형의 솔리드 스테이트 저장 매체(예를 들어, 메모리 다이들)는 비대칭이며; 예를 들어, 판독 동작은 기입/프로그램 동작보다 훨씬 더 빠를 수 있고, 기입/프로그램 동작은 소거 동작보다 훨씬 더 빠를 수 있다(예를 들어, 저장 매체를 판독하는 것은 소거하는 것보다 수백 배 더 빠를 수 있고, 저장 매체를 프로그래밍하는 것보다 수십 배 더 빠를 수 있다).
"프로그램"은 메모리 셀의 특성이 제1 상태(종종, 소거 상태)로부터 제2 상태로 변화되는 저장 동작을 지칭한다. 프로그램 저장 동작은 또한 본 명세서에서 기입 동작으로 지칭될 수 있다.
소정 실시예들에서, 프로그램 저장 동작은 적어도 타깃 변화 레벨이 달성될 때까지 특성을 증분식으로 변화시키는 일련의 반복들을 포함할 수 있다. 다른 실시예들에서, 프로그램 저장 동작은 속성이 단일 반복으로 타깃 레벨로 변화하게 할 수 있다.
메모리 다이(106)는, 특히 메모리 다이(106)의 비대칭 속성들 등을 고려하기 위해 그룹(예를 들어, 소거 블록들)으로서 소거될 수 있는 메모리 분할들로 분할될 수 있다. 이와 같이, 인-플레이스(in-place)에서 단일 데이터 세그먼트를 수정하는 것은 데이터를 포함하는 전체 소거 블록을 소거하는 것, 및 수정된 데이터를 원래의 변화되지 않은 데이터와 함께 소거 블록에 재기입하는 것을 요구할 수 있다 이는 비효율적인 기입 증폭을 야기할 수 있으며, 이는 메모리 다이(106)를 과도하게 마모시킬 수 있다.
"소거 블록"은 논리적 소거 블록 또는 물리적 소거 블록을 지칭한다. 일 실시예에서, 물리적 소거 블록은 (예를 들어, 메모리 다이 상의 저장 셀들의 배선으로 인해) 주어진 시간에 소거될 수 있는 주어진 메모리 다이 내의 가장 작은 저장 유닛을 나타낸다. 일 실시예에서, 논리적 소거 블록들은 소거 커맨드를 수신하는 것에 응답하여 저장 제어기에 의해 소거가능한, 가장 작은 저장 유닛 또는 저장 블록을 나타낸다. 그러한 실시예에서, 저장 제어기가 특정 논리적 소거 블록을 특정하는 소거 커맨드를 수신할 때, 저장 제어기는 논리적 소거 블록 내의 각각의 물리적 소거 블록을 동시에 소거할 수 있다. 주어진 논리적 소거 블록 내의 물리적 소거 블록들은 그들이 별개의 다이들에 상주할지라도 물리적 어드레스 공간 내에서 인접한 것으로 간주될 수 있다는 것에 유의한다. 따라서, 용어 "인접한"은 동일한 물리적 매체 내에 저장된 데이터뿐만 아니라, 별개의 매체 내에 저장된 데이터에도 적용가능할 수 있다.
따라서, 일부 실시예들에서, 저장 제어기(104)는 아웃-오브-플레이스(out-of-place)에서 데이터를 기입하도록 구성될 수 있다. 본 명세서에 사용되는 바와 같이, "아웃-오브-플레이스"에서 데이터를 기입하는 것은 "인-플레이스"에서 데이터를 덮어쓰기(예컨대, 데이터의 원래 물리적 위치를 덮어쓰기)보다는 상이한 매체 저장 위치(들)에 데이터를 기입하는 것을 지칭한다. 아웃-오브-플레이스에서 데이터를 수정하는 것은, 수정될 데이터를 갖는 소거 블록 상의 기존의 유효 데이터는 소거되고 재복사될 필요가 없으므로, 기입 증폭을 피할 수 있다. 또한, 아웃-오브-플레이스에서 데이터를 기입하는 것은 많은 저장 동작들의 레이턴시 경로로부터 소거를 제거할 수 있다(예를 들어, 소거 레이턴시는 더 이상 기입 동작의 중요 경로의 일부가 아니다).
저장 관리자에 의한 데이터 블록의 관리는 판독 동작, 기입 동작, 또는 유지 동작을 위한 특정 데이터 블록을 구체적으로 다루는 것을 포함한다. "유지 동작"은 비휘발성 저장 디바이스 및/또는 그에 저장된 데이터의 수명을 개선 또는 연장하도록 구성, 설계, 교정, 또는 배열되는 비휘발성 저장 디바이스 상에서 수행되는 동작을 지칭한다.
블록 저장 디바이스는 저장 매체에 걸쳐 사용자 데이터 저장을 위해 이용가능한 n개의 블록들을, 0에서 n까지 번호가 매겨진 논리적 어드레스와 연관시킬 수 있다. 소정 블록 저장 디바이스들에서, 논리적 어드레스들은 볼륨 또는 파티션 당 0 내지 n의 범위일 수 있다. "논리적 어드레스"는 하기를 포함하지만 이들로 제한되지 않는 메모리 리소스(예컨대, 데이터)를 참조하기 위한 임의의 식별자를 지칭한다: LBA(logical block address), CHS(cylinder/head/sector) 어드레스, 파일명, 객체 식별자, 아이노드(inode), UUID(Universally Unique Identifier), GUID(Globally Unique Identifier), 해시 코드, 시그너처, 인덱스 입력, 범위, 규모 등. 논리적 어드레스는 저장 매체 상의 데이터의 물리적 위치를 나타내지 않지만, 데이터에 대한 추상적 참조이다.
종래의 블록 저장 디바이스들에서, 논리적 어드레스는 물리적 저장 매체 상의 특정 데이터 블록에 직접 맵핑된다. 종래의 블록 저장 디바이스들에서, 각각의 데이터 블록은 물리적 저장 매체 상의 물리적 섹터들의 특정 세트에 맵핑된다. 그러나, 소정 저장 디바이스들은 논리적 어드레스들을 소정 물리적 데이터 블록들과 직접 또는 반드시 연관시키지는 않는다. 이들 저장 디바이스들은 블록 저장 클라이언트(112)와의 호환성을 유지하기 위해 종래의 블록 저장 인터페이스를 에뮬레이팅할 수 있다.
일 실시예에서, 저장 제어기(104)는 블록 디바이스 인터페이스 또는 API로서 기능하는 블록 I/O 에뮬레이션 층을 제공한다. 이 실시예에서, 저장 클라이언트(112)는 이러한 블록 디바이스 인터페이스를 통해 저장 디바이스와 통신한다. 일 실시예에서, 블록 I/O 에뮬레이션 층은 이 블록 디바이스 인터페이스에 따라 저장 클라이언트(112)로부터 커맨드들 및 논리적 어드레스들을 수신한다. 그 결과, 블록 I/O 에뮬레이션 층은 블록 저장 클라이언트(112)와의 저장 디바이스 호환성을 제공한다.
일 실시예에서, 저장 클라이언트(112)는 직접 인터페이스를 포함하는 호스트 인터페이스를 통해 저장 제어기(104)와 통신한다. 이 실시예에서, 저장 디바이스는 비휘발성 저장 디바이스들에 특정되는 정보를 직접 교환한다. "비휘발성 저장 디바이스"는 일차 전원이 제거된 후에 0 또는 1의 이진 값을 나타내는 데 사용되는 변경가능한 물리적 특성을 유지하도록 구성된 임의의 하드웨어, 디바이스, 컴포넌트, 요소, 또는 회로를 지칭한다. 비휘발성 저장 디바이스의 예들은 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 비휘발성 메모리 매체 등을 포함하지만, 이들로 제한되지 않는다.
직접 인터페이스를 사용하는 저장 디바이스는 블록, 섹터, 페이지, 논리적 블록, 논리적 페이지, 소거 블록, 논리적 소거 블록, ECC 코드워드, 논리적 ECC 코드워드, 또는 메모리 다이(106)의 기술적 특성들에 유리한 임의의 다른 포맷 또는 구조를 포함하지만 이들로 제한되지 않는, 다양한 조직 구성들을 사용하여 메모리 다이(106)에 데이터를 저장할 수 있다. "특성"은 물체 또는 사물의 임의의 속성, 특성, 품질 또는 특징을 지칭한다. 특성들의 예들은 조건, 사용 준비, 사용 준비되지 않음, 크기, 무게, 조성, 특징 세트 등을 포함하지만 이들로 제한되지 않는다.
저장 제어기(104)는 저장 클라이언트(112)로부터 논리적 어드레스 및 커맨드를 수신하고, 메모리 다이(106)에 관련하여 대응하는 동작을 수행한다. 저장 제어기(104)는 블록 I/O 에뮬레이션, 직접 인터페이스, 또는 둘 모두를 지원할 수 있다.
도 2는 예시적인 저장 디바이스(102)의 블록도이다. "저장 디바이스"는 데이터를 일정 기간 동안 저장하고 저장 디바이스가 전원으로부터의 전력을 사용하지 않는 동안 저장 디바이스 내에 데이터를 유지하도록 구성, 프로그래밍, 설계, 또는 엔지니어링된 임의의 하드웨어, 시스템, 서브시스템, 회로, 컴포넌트, 모듈, 비휘발성 메모리 매체, 하드 디스크 드라이브, 저장 어레이, 디바이스, 또는 장치를 지칭한다. 저장 디바이스들의 예들은 하드 디스크 드라이브, 플래시 메모리, MRAM 메모리, 솔리드 스테이트 저장 디바이스, JBOD(Just a Bunch Of Disks), JBOF(Just a Bunch Of Flash), 외부 하드 디스크, 내부 하드 디스크 등을 포함하지만, 이들로 제한되지 않는다.
저장 디바이스(102)는 저장 제어기(104) 및 메모리 어레이(202)를 포함할 수 있다. 메모리 어레이(202) 내의 각각의 메모리 다이(106)는 다이 제어기(204) 및 3차원 메모리 어레이 형태의 적어도 하나의 비휘발성 메모리 어레이(206), 및 판독/기입 회로들(208)을 포함할 수 있다. "3차원 메모리 어레이"는 2차원(2-D) 메모리 어레이와 대조를 이루는 메모리 어레이의 컴포넌트들의 물리적 배열을 지칭한다. 2-D 메모리 어레이들은 반도체 웨이퍼 또는 다른 기판의 평면 표면을 따라 형성된다. 3차원(3-D) 메모리 어레이는 웨이퍼 표면/기판으로부터 위로 연장되고, 일반적으로 z-방향으로 상향으로 연장되는 메모리 셀들의 스택들 또는 컬럼들을 포함한다. 3-D 메모리 어레이에서 워드 라인들은 메모리 어레이가 상향으로 연장됨에 따라 서로 적층된 층들을 포함한다. 다양한 3-D 배열들이 가능하다. 하나의 배열에서, NAND 스트링은 웨이퍼 표면에서 하나의 단부(예컨대, 소스)를 갖고 상부에서 다른 단부(예컨대, 드레인)를 가지면서 수직으로 형성된다.
"임계 전압"은 트랜지스터의 게이트 전극에 인가될 때 트랜지스터로 하여금 드레인 전극과 소스 전극 사이에 전류를 전도하게 하는 전압 레벨을 지칭한다.
결과적으로, 비휘발성 메모리 어레이는, 저장된 데이터를 나타내는 데 사용되는 메모리 셀의 특성(예컨대, 임계 전압 레벨, 저항 레벨, 전도성 등)이 특성을 유지하기 위해 전원을 사용할 필요가 없이 메모리 셀의 속성을 유지하도록 구성된 메모리 셀들을 갖는 메모리 어레이이다.
메모리 어레이는 로우 식별자 및 컬럼 식별자를 사용하여 어드레스가능하다. 당업자는, 메모리 어레이가 평면 내의 메모리 셀들의 세트, 메모리 다이 내의 메모리 셀들의 세트, 평면들의 세트 내의 메모리 셀들의 세트, 메모리 다이들의 세트 내의 메모리 셀들의 세트, 메모리 패키지 내의 메모리 셀들의 세트, 메모리 패키지들의 세트 내의 메모리 셀들의 세트, 또는 다른 알려진 메모리 셀 세트 아키텍처들 및 구성들을 포함할 수 있음을 인식한다.
메모리 어레이는 저장 또는 메모리 시스템 내에서 다수의 레벨의 조직에서의 메모리 셀들의 세트를 포함할 수 있다. 일 실시예에서, 평면 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다. 일 실시예에서, 메모리 다이의 복수의 평면들 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다. 일 실시예에서, 메모리 디바이스의 복수의 메모리 다이들 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다. 일 실시예에서, 저장 시스템의 복수의 메모리 디바이스들 내의 메모리 셀들은 메모리 어레이로 조직화될 수 있다.
비휘발성 메모리 어레이(206)는 로우 디코더(210)를 통해 워드 라인에 의해 그리고 컬럼 디코더(212)를 통해 비트 라인에 의해 어드레스가능하다. "비트 라인"은 메모리 어레이의 컬럼에 전압을 전달하고/하거나 전류를 전도하도록 구성된 회로 구조를 지칭한다. 일 실시예에서, 컬럼은 NAND 스트링 또는 메모리 스트링을 포함하고, 채널로도 지칭될 수 있다. 일 실시예에서, 컬럼은 NAND 스트링으로 지칭되고, NAND 스트링은 채널을 포함한다. 일 실시예에서, 비트 라인은 NAND 스트링의 드레인 단부 또는 드레인 측에서 NAND 스트링에 접속된다. 메모리 어레이는 메모리 어레이의 워드 라인들을 따라 각각의 메모리 셀에 대해 하나의 비트 라인을 가질 수 있다. "워드 라인"은 메모리 셀들의 세트를 포함하는 메모리 어레이 내의 구조물을 지칭한다. 메모리 어레이는 워드 라인의 동작 메모리 셀들이 판독 동작 동안 판독 또는 감지되도록 구성된다. 유사하게, 메모리 어레이는 워드 라인의 동작 메모리 셀들이 판독 동작 동안 판독 또는 감지되도록 구성된다. 워드 라인은 또한 물리적 페이지, 또는 간략히 말해서 페이지로 지칭될 수 있다.
"채널"은 소스 측으로부터 드레인 측으로 연장되는 메모리 어레이 내의 구조물을 지칭한다. 일 실시예에서, 채널은 NAND 스트링의 일 단부에 결합된 소스 라인과 NAND 스트링의 다른 단부에 결합된 비트 라인 사이에 전도성 경로를 형성하는 메모리 어레이 내의 수직 칼럼이다. 채널은 예를 들어 폴리실리콘을 포함하는 다양한 재료로부터 형성될 수 있다.
일 실시예에서, NAND 스트링 내의 채널은 NAND 스트링을 따라 하나 이상의 메모리 셀들(예컨대, 하나 이상의 선택된 메모리 셀들 및 비선택된 메모리 셀들), 및 하나 이상의 제어 구조물들(예컨대, NAND 스트링의 일 단부(예컨대, 소스 측)에 접속된 소스 라인과 NAND 스트링의 다른 단부(예컨대, 드레인 측)에 접속된 감지 증폭기 또는 비트 라인 사이의 선택 게이트들(소스 및/또는 드레인)을 활성화함으로써 전도성 경로를 생성한다.
"선택 게이트"는 트랜지스터의 소스 단자에 접속된 제1 전기 구조물을 드레인 단자에 접속된 제2 전기 구조물에 전기적으로 접속시키기 위한 스위치로서 기능하도록 구조적으로 그리고/또는 전기적으로 구성된 트랜지스터를 지칭한다. 스위치로서 기능할 때, 트랜지스터는 본 명세서에서 '선택 게이트'로 지칭되며, 제1 전기 구조물과 제2 전기 구조물 사이에 전류가 흐르거나 전압이 통과하는 시기 및 그 양을 (선택적으로) 게이팅하거나 제어하는 역할을 한다. 문맥에 따라, 본 명세서에서 선택 게이트에 대한 언급은 전체 트랜지스터 또는 트랜지스터의 게이트 단자를 지칭할 수 있다.
판독/기입 회로들(208)은 다수의 감지 블록들(SB1, SB2, … , SBp)(감지 회로부)을 포함하고 메모리 셀들의 페이지가 병렬로 판독되거나 프로그래밍될 수 있게 한다. "회로부"는 적어도 하나의 개별 전기 회로를 갖는 전기 회로부, 적어도 하나의 집적 회로를 갖는 전기 회로부, 적어도 하나의 주문형 집적 회로를 갖는 전기 회로부, 컴퓨터 프로그램에 의해 구성된 범용 컴퓨팅 디바이스를 형성하는 회로부(예컨대, 본 명세서에 기술된 프로세스들 또는 디바이스들을 적어도 부분적으로 수행하는 컴퓨터 프로그램에 의해 구성된 범용 컴퓨터, 또는 본 명세서에 기술된 프로세스들 또는 디바이스들을 적어도 부분적으로 수행하는 컴퓨터 프로그램에 의해 구성된 마이크로프로세서), 메모리 디바이스를 형성하는 회로부(예컨대, 랜덤 액세스 메모리의 형태들), 또는 통신 디바이스(예컨대, 모뎀, 통신 스위치, 또는 광학-전기 장비)를 형성하는 회로부를 지칭한다. 소정 실시예들에서, 메모리 어레이의 로우에 걸친 각각의 메모리 셀은 함께 물리적 페이지를 형성한다. "판독/기입 회로"는 저장 어레이의 저장 셀들과 같은 저장 매체로부터 데이터를 판독하고 그에 데이터를 기입하도록 구성되고/되거나 동작가능한 디바이스, 컴포넌트, 요소, 모듈, 시스템, 서브시스템, 회로부, 로직, 하드웨어, 또는 회로를 지칭한다.
물리적 페이지는 단일 평면에 대한 또는 단일 메모리 다이에 대한 메모리 어레이의 로우를 따르는 메모리 셀들을 포함할 수 있다. 일 실시예에서, 메모리 다이는 2개의 동일한 크기의 평면들로 구성된 메모리 어레이를 포함한다. 일 실시예에서, 메모리 다이의 하나의 평면의 물리적 페이지는 4개의 데이터 블록들(예컨대, 16KB)을 포함한다. 일 실시예에서, 메모리 다이의 물리적 페이지("다이 페이지"로도 지칭됨)는 각각 4개의 데이터 블록들(예컨대, 32KB)을 갖는 2개의 평면들을 포함한다.
커맨드들 및 데이터가 데이터 버스(114)를 통하여 호스트(108)와 저장 제어기(104) 사이에서 전달되고, 버스(116)를 통하여 저장 제어기(104)와 하나 이상의 메모리 다이들(106) 사이에서 전달된다. 저장 제어기(104)는 도 1과 관련하여 더 상세히 설명되는 논리 모듈들을 포함할 수 있다.
비휘발성 메모리 어레이(206)는 2차원(2D - 단일 제조 평면에 레이아웃됨) 또는 3차원(3D - 다수의 제조 평면에 레이아웃됨)일 수 있다. 비휘발성 메모리 어레이(206)는 3D 어레이를 포함하는 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 일 실시예에서, 비휘발성 메모리 어레이(206)는 다수의 메모리 레벨들이 개재된 기판들 없이 웨이퍼와 같은 단일 기판 위에 형성되는 (그리고 그 내에는 형성되지 않는) 모놀리식 3차원 메모리 구조(3D 어레이)를 포함할 수 있다. 비휘발성 메모리 어레이(206)는 실리콘 기판 위에 배치된 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 이상의 물리적 레벨들에 모놀리식으로 형성되는 임의의 유형의 비휘발성 메모리를 포함할 수 있다. 비휘발성 메모리 어레이(206)는, 연관된 회로가 기판 위에 있든지 또는 기판 내에 있든지 간에, 메모리 셀들의 동작과 연관된 회로부를 갖는 비휘발성 솔리드 스테이트 드라이브 내에 있을 수 있다.
워드 라인들은 기판 위의 층들에 배치된, 메모리 셀들을 포함하는 층들의 섹션들을 포함할 수 있다. 다수의 워드 라인들은 트렌치들 또는 다른 비전도성 격리 특징부들에 의해 단일 층 상에 형성될 수 있다.
다이 제어기(204)는 판독/기입 회로들(208)과 협력하여 비휘발성 메모리 어레이(206)의 메모리 셀들에 대한 메모리 동작들을 수행하고, 상태 기계(214), 어드레스 디코더(216), 및 전력 제어(218)를 포함한다. 상태 기계(214)는 메모리 동작들의 칩-레벨 제어를 제공한다. "다이 제어기"는 다이의 동작을 관리하도록 구성된 회로들, 회로부, 로직, 또는 컴포넌트들의 세트를 지칭한다. 일 실시예에서, 다이 제어기는 집적 회로이다. 다른 실시예에서, 다이 제어기는 개별 컴포넌트들의 조합이다. 다른 실시예에서, 다이 제어기는 하나 이상의 집적 회로들 및 하나 이상의 개별 컴포넌트들의 조합이다.
어드레스 디코더(216)는 호스트 또는 저장 제어기(104)에 의해 사용되는 것과 로우 디코더(210) 및 컬럼 디코더(212)에 의해 사용되는 하드웨어 어드레스 사이의 어드레스 인터페이스를 제공한다. "하드웨어"는 아날로그 및/또는 디지털 회로부로서 구현되는 기능 요소들을 지칭한다.
전력 제어(218)는 메모리 동작들 동안 다양한 제어 라인들에 공급되는 전력 및 전압들을 제어한다. "제어 라인"은 소스로부터 목적지로 전류 및/또는 전압을 전달하도록 구성된 구조물, 회로, 회로부, 및/또는 관련 로직을 지칭한다. 소정 실시예들에서, 제어 라인을 통해 공급되거나 방전되는 아날로그 전압들, 전류들, 바이어스들, 및/또는 디지털 신호들은 스위치들, 선택 게이트들, 및/또는 다른 전기 컴포넌트들을 제어하는 데 사용된다. 소정 제어 라인들은 제어 라인이 회로의 어떤 부분들을 제어하는지, 또는 제어 라인이 다른 회로들에 결합 또는 접속되는 위치에 기초하여 특정 이름을 가질 수 있다. 명명된 제어 라인들의 예들은 워드 라인, 비트 라인, 소스 제어 라인, 드레인 제어 라인 등을 포함한다.
"소스 제어 라인"은 NAND 스트링의 소스 측을 소스 라인 및/또는 다른 회로에 결합시키기 위해 선택 게이트를 동작시키도록(예컨대, 선택 게이트를 턴온시키고, 활성화시키고, 오프시키고, 비활성화시키도록) 구성된 제어 라인을 지칭한다.
"소스 측"은 메모리 다이 상의 소스 층 또는 라인에 접속된 3차원 메모리 어레이의 NAND 스트링 또는 측의 단부를 지칭한다. 이 용어는 전계 효과 트랜지스터 또는 유사한 컴포넌트의 소스 단자에서 유래한다. 데이지 체인 방식의 트랜지스터들의 스트링에서, 제1 트랜지스터의 소스 단자는 소스 라인, 접지 또는 어떤 다른 더 낮은 전압 라인에 접속될 수 있고, 드레인 단자는 다음 트랜지스터의 소스 단자에 접속될 수 있고, 그 트랜지스터의 드레인 단자는 다음 소스 단자 등에 접속될 수 있고, 이때 최종 트랜지스터의 드레인 단자는 더 높은 전압 신호 또는 전력 라인에 접속된다. 이어서, 각각의 트랜지스터의 게이트 단자는 전류가 소스로부터 드레인으로 트랜지스터를 통해, 그리고 소스 라인으로부터 비트 라인으로 스트링을 통해 흐르는지 여부를 제어할 수 있다.
"소스 라인"은 공급원으로부터 관련 NAND 스트링들의 하나 이상의 채널들로 전류 및/또는 전압을 전달하도록 구성된 구조물, 회로, 회로부, 및/또는 관련 로직을 지칭한다. 소정 실시예들에서, 소스 라인은 동시에 다수의 NAND 스트링들에 전압을 전달하고/하거나 그로부터 전압을 방전하도록 구성된다. 다른 실시예들에서, 소스 라인은 연속하여(in series) 다수의 NAND 스트링들에 전압을 전달하고/하거나 그로부터 전압을 방전하도록 구성된다.
소정 실시예들에서, 소스 제어 라인은 소스 라인과 하나 이상의 NAND 스트링들 사이에 있는 하나 이상의 소스-측 선택 게이트들에 결합되고, 소스 제어 라인은 전압 또는 전류가 소스 라인과 NAND 스트링 사이를 지나가는지 여부를 관리한다. 그러한 실시예에서, 소스 라인은 또한 공통 소스 라인으로 지칭될 수 있다.
"소스-측 선택 게이트"는 NAND 스트링 및/또는 NAND 스트링의 채널에 소스 라인을 전기적으로 접속시키기 위한 스위치로서 기능하는 선택 게이트를 지칭한다. 소스 라인들의 예들은 소스-측 선택 게이트들, 더미 워드 라인 선택 게이트들 등을 포함한다. 소정 실시예들에서, 소스-측 선택 게이트는 단지 소스-측 선택 게이트들(예컨대, SGS0, SGS1 등)을 포함할 수 있다. 다른 실시예들에서, 소스-측 선택 게이트는 단지 더미 워드 라인 선택 게이트들(예컨대, DWLS0, DWLS1 등)을 포함할 수 있다. 또 다른 실시예들에서, 소스-측 선택 게이트는 소스-측 선택 게이트들(예컨대, SGS0, SGS1 등) 및 더미 워드 라인 선택 게이트들(예컨대, DWLS0, DWLS1 등) 둘 모두를 포함할 수 있다. NAND 스트링의 소스 측 상의 NAND 스트링과 소스 라인 사이에 위치된 선택 게이트는 소스-측 선택 게이트로 지칭된다.
"드레인 제어 라인"은 NAND 스트링의 드레인 측을 비트 라인 및/또는 감지 회로에 결합시키기 위해 선택 게이트를 동작시키도록(예컨대, 선택 게이트를 턴온시키고, 활성화시키고, 오프시키고, 비활성화시키도록) 구성된 제어 라인을 지칭한다. "드레인 측"은 비트 라인(들)에 접속된 3차원 메모리 어레이의 NAND 스트링 또는 측의 단부를 지칭한다. 이 용어는 전계 효과 트랜지스터 또는 유사한 컴포넌트의 드레인 단자에서 유래한다. 데이지 체인 방식의 트랜지스터들의 스트링에서, 제1 트랜지스터의 소스 단자는 소스 라인, 접지 또는 어떤 다른 더 낮은 전압 라인에 접속될 수 있고, 드레인 단자는 다음 트랜지스터의 소스 단자에 접속될 수 있고, 그 트랜지스터의 드레인 단자는 다음 소스 단자 등에 접속될 수 있고, 이때 최종 트랜지스터의 드레인 단자는 더 높은 전압 신호 또는 전력 라인에 접속된다. 이어서, 각각의 트랜지스터의 게이트 단자는 전류가 소스로부터 드레인으로 트랜지스터를 통해, 그리고 소스 라인으로부터 비트 라인으로 스트링을 통해 흐르는지 여부를 제어할 수 있다.
"드레인-측 선택 게이트"는 NAND 스트링 및/또는 NAND 스트링의 채널에 비트 라인을 전기적으로 접속시키기 위한 스위치로서 기능하는 선택 게이트를 지칭한다. NAND 스트링의 드레인 측 상의 NAND 스트링과 비트 라인 사이에 위치된 선택 게이트는 드레인-측 선택 게이트로 지칭된다.
"로직"은 기계 메모리 회로, 비일시적 기계 판독가능 매체, 및/또는 그의 재료 및/또는 재료-에너지 구성에 의해 제어 및/또는 절차적 신호들, 및/또는 디바이스의 동작에 영향을 주도록 적용될 수 있는 설정들 및 값들(예컨대, 저항, 임피던스, 커패시턴스, 인덕턴스, 전류/전압 정격 등)을 포함하는 회로부를 지칭한다. 자기 매체, 전자 회로, 전기 및 광학 메모리(휘발성 및 비휘발성 둘 모두), 및 펌웨어가 로직의 예들이다. 로직은 구체적으로 순수 신호(pure signal)들 또는 소프트웨어 그 자체를 배제한다(그러나, 소프트웨어를 포함하여 물질의 구성을 형성하는 기계 메모리는 배제하지 않는다).
전력 제어(218) 및/또는 판독/기입 회로들(208)은 워드 라인들, 소스 게이트 선택(SGS) 트랜지스터들, 드레인 게이트 선택(DGS) 트랜지스터들, 비트 라인들, 기판들(2D 메모리 구조의), 전하 펌프들, 및 소스 라인들을 위한 드라이버들을 포함할 수 있다. 소정 실시예들에서, 전력 제어(218)는 전력의 급격한 손실을 검출하고 예방 조치를 취할 수 있다. 전력 제어(218)는 본 명세서에 기술된 전압들을 생성하기 위해 다양한 제1 전압 생성기들(예를 들어, 드라이버들)을 포함할 수 있다. 감지 블록들은 하나의 접근법에서 비트 라인 드라이버들 및 감지 증폭기들을 포함할 수 있다.
일부 구현예들에서, 컴포넌트들 중 일부가 조합될 수 있다. 다양한 설계들에서, 비휘발성 메모리 어레이(206) 이외의 컴포넌트들 중 하나 이상은 (단독으로 또는 조합하여) 본 명세서에 기술된 기법들을 수행하도록 구성된 적어도 하나의 제어 회로 또는 제어기로 고려될 수 있다. 예를 들어, 제어 회로는 다이 제어기(204), 상태 기계(214), 어드레스 디코더(216), 컬럼 디코더(212), 전력 제어(218), 감지 블록들(SB1, SB2, … , SBp), 판독/기입 회로들(208), 저장 제어기(104) 등 중 임의의 하나 또는 이들의 조합을 포함할 수 있다.
일 실시예에서, 호스트(108)는 하나 이상의 프로세서, 본 명세서에 기술된 방법들을 수행하도록 저장 제어기(104)를 프로그래밍하기 위한 프로세서 판독 가능 코드(예를 들어, 소프트웨어)를 저장하는 하나 이상의 프로세서 판독가능 저장 디바이스(RAM, ROM, 플래시 메모리, 하드 디스크 드라이브, 솔리드 스테이트 메모리)를 포함하는 컴퓨팅 디바이스(예를 들어, 랩톱, 데스크톱, 스마트폰, 태블릿, 디지털 카메라)이다. 호스트는 또한 하나 이상의 프로세서뿐만 아니라, 당업계에 잘 알려진 다른 컴포넌트들과 통신하는 추가적인 시스템 메모리, 하나 이상의 입력/출력 인터페이스 및/또는 하나 이상의 입력/출력 디바이스를 포함할 수 있다.
연관된 회로부가 전형적으로 메모리 셀들의 동작을 위해 그리고 메모리 셀들과의 통신을 위해 요구된다. 비제한적인 예로서, 메모리 디바이스들은 프로그래밍 및 판독과 같은 기능들을 달성하기 위해 메모리 셀들을 제어하고 구동하는 데 사용되는 회로부를 가질 수 있다. 이러한 연관된 회로부는 메모리 셀들과 동일한 기판 상에 그리고/또는 별개의 기판 상에 있을 수 있다. 예를 들어, 메모리 판독-기입 동작들을 위한 저장 제어기는 별개의 저장 제어기 칩 상에 그리고/또는 메모리 셀들과 동일한 기판 상에 위치될 수 있다.
당업자는 개시된 기법들 및 디바이스들이 설명된 2차원 및 3차원의 예시적인 구조들로 제한되는 것이 아니라 본 명세서에 기술된 바와 같은 그리고 당업자에 의해 이해되는 바와 같은 본 기술의 사상 및 범위 내의 모든 관련된 메모리 구조들을 포함한다는 것을 인식할 것이다.
도 3은 일 실시예에 따른 메모리 어레이(300)를 도시한다. 메모리 어레이(300)는 다이 0(302), 다이 1(304) 등으로부터 다이 N(306)까지 포함한다. 도시된 실시예에서, 메모리 어레이(300)는, 논리적 소거 블록/메타블록 0(308) 및 논리적 소거 블록/메타블록 N(310)에 의해 도시된 바와 같이, 논리적 소거 블록들(LEB들)(본 명세서에서 "메타블록들"("MB들") 또는 "수퍼블록들"로도 지칭됨)로 조직화된다. 이러한 LEB들은 물리적 소거 블록 0(312), 물리적 소거 블록 n-1(314), 물리적 소거 블록 n(316), 물리적 소거 블록 0(318), 물리적 소거 블록 n-1(320), 물리적 소거 블록 n(322), 물리적 소거 블록 0(324), 물리적 소거 블록 n-1(326), 및 물리적 소거 블록 n(328)에 의해 도시된 다수의 물리적 소거 블록들(PEB들)을 포함한다. LEB는, 모든 다이들에 걸쳐 PEB0 로우 내의 PEB들을 통합하는, 논리적 소거 블록/메타블록 0(308)과 같은, 단일 로우 내의 PEB들을 포함할 수 있다. 대안적으로, LEB는 물리적 소거 블록 n(316), 물리적 소거 블록 n(322), 및 물리적 소거 블록 n-1(326)을 포함하는 다이들에 걸친 다른 PEB들을 포함하는, 논리적 소거 블록/메타블록 N(310)과 같은, 다른 로우들로부터의 PEB들을 포함할 수 있다.
물리적 소거 블록들은 다이 0(302), 다이 1(304), 및 다이 N(306)으로서 도시된 별개의 저장 다이들에 위치될 수 있다. 소정 실시예들에서, 다이는 평면들로 분할될 수 있다. 물리적 소거 블록들은 2-계층 메모리 아키텍처를 사용하여 구성될 수 있고, 따라서 물리적 소거 블록 0(312)을 분할하는 제조 조인트(370), 물리적 소거 블록 0(318)을 분할하는 제조 조인트(372), 및 물리적 소거 블록 0(324)을 분할하는 제조 조인트(374)와 같은 제조 조인트에 의해 분할될 수 있다. 제조 조인트의 양측의 물리적 및 논리적 페이지들은 도시된 서브-블록 0(376) 및 서브-블록 1(378)과 같은 서브-블록으로 그룹화될 수 있다.
당업자는 물리적 소거 블록들 및 논리적 소거 블록들 사이의 관계 및 차이를 이해하고, 약칭 버전인 소거 블록, 블록, 또는 저장 블록을 사용함으로써 하나 또는 다른 것 또는 둘 모두를 지칭할 수 있다. 당업자는, 물리적 소거 블록이 참조되고 있든 논리적 소거 블록(또는 메타블록 또는 수퍼블록)이 참조되고 있든지 간에, 소거 블록에 대한 참조의 맥락으로부터 이해한다. 본 기술 분야에 사용되는 개념들 및 기법들 및 청구범위에 인용된 것들은 물리적 소거 블록들 또는 논리적 소거 블록들 중 어느 하나에 동일하게 적용될 수 있다.
본 명세서에 사용되는 바와 같이, 물리적 페이지, 물리적 워드 라인, 물리적 소거 블록, 물리적 평면, 물리적 메모리 다이 등과 같은 "물리적" 구조는, 시스템의 제어기, 관리자, 모듈, 또는 다른 로직 컴포넌트가 디바이스, 시스템, 또는 장치의 조직에서 물리적 추상화의 하나 이상의 레벨들 내의 소정 레벨에서 제어 및/또는 통신할 수 있는 단일 물리적 구조를 지칭한다. 유사하게, 논리적 페이지, 논리적 워드 라인, 논리적 소거 블록, 논리적 평면, 논리적 메모리 다이 등과 같은 "논리적" 구조는, 시스템의 제어기, 관리자, 모듈, 또는 다른 로직 컴포넌트가 디바이스, 시스템, 또는 장치의 조직에서 물리적 추상화의 하나 이상의 레벨들 내의 소정 레벨에서 제어 및/또는 통신할 수 있는 그 동일한 유형의 2개 이상의 단일 물리적 구조들의 집합을 지칭한다. "물리적" 구조 및 "논리적" 구조 중 하나 또는 다른 것 또는 둘 모두는 유사한 성질 및 유형의 다른 구조들에 대비해 하나의 "물리적" 구조 또는 "논리적" 구조를 식별하는 데 사용될 수 있는 별개의 어드레스들을 가질 수 있다는 것에 유의해야 한다. "물리적 페이지"는 단일 동작으로 기입될 수 있는, 메모리 다이와 같은, 주어진 메모리 다이 및/또는 평면 내의 가장 작은 물리적 유닛 또는 저장 블록을 지칭한다. 소정 실시예들에서, 물리적 페이지는 저장 셀들의 메모리 어레이 내의 로우인 워드 라인을 포함한다.
논리적 소거 블록/메타블록 0(308)과 같은 논리적 소거 블록은 다수의 논리적 페이지들(논리적 페이지(330), 논리적 페이지(332), 논리적 페이지(334), 논리적 페이지(336), 및 논리적 페이지(338))로 추가로 분할되며, 이는 이어서, 물리적 페이지 0(340), 물리적 페이지 1(342), 물리적 페이지 2(344), 물리적 페이지 n-1(346), 물리적 페이지 n(348), 물리적 페이지 0(350), 물리적 페이지 1(352), 물리적 페이지 2(354), 물리적 페이지 n-1(356), 물리적 페이지 n(358), 물리적 페이지 0(360), 물리적 페이지 1(362), 물리적 페이지 2(364), 물리적 페이지 n-1(366), 및 물리적 페이지 n(368)과 같은 다수의 물리적 페이지들을 포함한다.
일 실시예에서, 물리적 페이지는 주어진 시간에 기입될 수 있는 주어진 다이 내의 가장 작은 저장 블록을 표현한다. 일 실시예에서, 논리적 페이지는 저장 제어기에 의해 지원되는 가장 작은 기입가능 저장 블록이다. (일 실시예에서, 저장 제어기는 데이터의 하나의 논리적 페이지까지 저장하도록 구성된 버퍼를 포함할 수 있고; 버퍼를 채울 때, 저장 제어기는 버퍼의 내용을 단일 논리적 페이지에 동시에 기입할 수 있다.) 일부 경우들에서, 다수의 다이들에 걸쳐 논리적 페이지를 분할하는 것은 다수의 다이들이 병렬로 액세스될 때 데이터의 세트에 대한 더 빠른 액세스 시간을 야기할 수 있다. 논리적 페이지 구성들은, 논리적 소거 블록들과 마찬가지로, 다이 상의 임의의 물리적 페이지에, 또는 복수의 메모리 다이들에 걸쳐 맵핑될 수 있다.
일부 실시예들에서, 저장 제어기(예컨대, 도 1에 도시된 저장 제어기(104))는 매체 특성들로도 지칭되는 메타데이터를 하나 이상의 저장 블록들(논리적 소거 블록들, 물리적 소거 블록들, 논리적 페이지들, 및/또는 물리적 페이지들, 서브-블록들 등)과 연관시킬 수 있다. "메타데이터"는 비휘발성 저장 디바이스의 동작을 용이하게 하는 데 사용가능한 시스템 데이터를 지칭한다. 메타데이터는, 예를 들어, 애플리케이션에 의해 생성된 데이터(즉, "애플리케이션 데이터") 또는 운영 체제에 의해 "사용자 데이터"로 간주될 데이터의 형태들과 대조된다.
예를 들어, 구역(zone) 또는 논리적 소거 블록은 사용 통계치(예컨대, 그 구역 또는 논리적 소거 블록 상에서 수행되는 프로그램 소거 사이클들의 수, 건전성(health) 통계치(예컨대, 손상된 데이터가 그 구역 또는 논리적 소거 블록으로부터 얼마나 자주 판독되었는지를 나타내는 값), 보안 또는 액세스 제어 파라미터들, 시퀀스 정보(예컨대, 시퀀스 표시자), 지속적 메타데이터 플래그(예컨대, 극소(atomic) 저장 동작에 포함됨을 나타냄), 트랜잭션 식별자 등을 제한 없이 특정하는 메타데이터를 포함할 수 있다. 일부 실시예들에서, 구역 또는 논리적 소거 블록은 구역 또는 논리적 소거 블록이 데이터를 저장하는 논리적 어드레스들뿐만 아니라, 구역 내의 각각의 논리적 블록 또는 섹터에 대한 저장된 데이터 블록들/패킷들의 각각의 개수들을 식별하는 메타데이터를 포함한다.
소정 실시예들에서, 메타데이터는 구역에 대한 교차 온도(cross temperature), 비휘발성 저장 디바이스의 열린 구역들에 대한 평균 교차 온도, 온도 변화율, 구역에 대한 평균 프로그램 소거 카운트, 구역에 대한 수정불가 비트 오류율(uncorrectable bit error rate, UBER), 구역에 대한 실패 비트 카운트, 및 전하 누설율을 포함한다.
"매체 특성"은 특정 저장 셀들의 세트에 대한 속성 또는 통계치, 예컨대 저장 셀들의 세트에 대한 프로그램/소거 사이클 카운트, 저장 셀들의 세트에 대한 판독 카운트, 저장 셀들의 세트에 대한 이전 기입 이후의 유지 시간(retention time)(데이터 유지 시간으로도 알려짐), 논리적 또는 물리적 소거 블록과 같은 저장 셀들의 세트에 대한 체류 시간(dwell time)(예컨대, 소거 블록의 프로그래밍 및 소거 블록의 소거 사이의 시간), 저장 셀들의 세트에 대한 다수의 이전의 체류 시간들의 평균, 저장 셀들의 세트에 대한 오류 통계치 등을 지칭한다.
저장 셀들의 세트에 대한 매체 특성은 실질적으로 정적일 수 있거나, 또는 동적일 수 있고 시간 경과에 따라 변화할 수 있다. 일 실시예에서, 매체 특성은 통계적, 발견적(heuristic), 수학적 모델, 변환, 또는 비휘발성 메모리 매체의 속성과 연관된 다른 디스크립터이다.
일 실시예에서, 매체 특성은 저장 디바이스 및/또는 비휘발성 메모리 매체에 대한 제조사(make), 모델, 제조자, 제품 버전 등을 포함하거나 그에 관련된다. 추가의 실시예에서, 매체 특성은, 저장 디바이스 및/또는 비휘발성 메모리 매체의 환경 조건 또는 사용, 예컨대 온도, 사용 사례(예를 들어, 캐시 사용 사례, 기록 보존(archival) 사용 사례, 서버 사용 사례, 기업 사용 사례, 소비자 사용 사례 등) 등을 포함하거나 그에 관련될 수 있다.
저장 제어기는 논리적 소거 블록이 데이터를 저장하는 논리적 어드레스들뿐만 아니라, 논리적 어드레스 공간 내의 각각의 논리적 소거 블록, 데이터 블록, 또는 섹터에 대한 저장된 데이터 패킷들의 각각의 개수들을 식별하는 메타데이터를 관리할 수 있다. "논리적 어드레스 공간"은 메모리 리소스의 논리적 표현을 지칭한다. 논리적 어드레스 공간은 복수의(예컨대, 소정 범위의) 논리적 어드레스들을 포함할 수 있다. 저장 제어기는, 비휘발성 메모리 매체 상에, 휘발성 메모리 내에, 각각의 논리적 소거 블록으로 저장된 구조 내에 등을 포함하는 다양한 위치들에 메타데이터 또는 매체 특성 데이터를 저장할 수 있다.
도 4는 드레인-측 선택 게이트들(402), 소스-측 선택 게이트들(404), 및 그들의 소스 단자들 및 드레인 단자들에 의해 데이지 체인으로 연결된 일련의 또는 한 세트의 메모리 셀들(406)(예컨대, n=4, 8, 16 또는 그 이상)을 포함하는 NAND 스트링(400)을 도시하는 회로도이다. "NAND 스트링"은 복수의 메모리 셀들을 포함하는 회로부를 지칭한다. NAND 스트링은 각각의 메모리 셀의 소스 전극들 및 드레인 전극들에 의해 데이지 체인으로 연결된 트랜지스터(예컨대, n=4, 8, 16 또는 그 이상)로서 구성된 일련의 메모리 셀들을 포함한다. 적어도 한 쌍의 선택 트랜지스터들(예컨대, 선택 게이트들)은 메모리 트랜지스터 체인, NAND 스트링을, NAND 스트링의 드레인 전극에 의해 바이어스 소스에 그리고 NAND 스트링의 소스 전극에 의해 접지 소스에 접속시킨다.
간략함을 위해 10개의 메모리 셀들이 NAND 스트링(400)에 도시되어 있지만, 일부 NAND 스트링들은 임의의 수의 메모리 셀들(예컨대, 32개, 64개, 또는 그 초과)을 포함할 수 있다. 메모리 셀들(406)은 드레인 측(408)으로부터 소스 측(410)으로 체인 연결될(chained) 수 있다. 드레인 측(408)에서, NAND 스트링(400)은 비트 라인(412)에 접속될 수 있다. 소스 측(410)에서, NAND 스트링(400)은 소스 라인(414)에 접속될 수 있다. NAND 구조를 사용하는 메모리 어레이를 위한 아키텍처는 상당한 수의 NAND 스트링들을 포함할 수 있다.
하나 이상의 드레인 측 선택 트랜지스터들(드레인-측 선택 게이트(402))은 메모리 트랜지스터 체인들을, NAND 스트링의 드레인 단자에 의해 바이어스에 그리고 소스 단자에 의해 접지 소스에 접속시킨다.
메모리 어레이에서, 소스-측 선택 게이트들(404)이 턴온될 때, 소스 단자는 소스 라인(414)에 결합된다. 유사하게, 소스-측 선택 게이트들(404)이 턴온될 경우, NAND 스트링의 드레인 단자는 메모리 어레이의 비트 라인(412)에 결합된다. 소스 제어 라인들(416)(SGS 및 SGSB)은 소스-측 선택 게이트들(404)(트랜지스터들)을 제어하는 데 사용될 수 있다. NAND 스트링(400)은, 일 실시예에서, 도시된 바와 같이 드레인-측 선택 게이트들(402)에 의해 그의 비트 라인(412)에 접속된다. 드레인-측 선택 게이트들(402)은 드레인 제어 라인(418)(SGD)에 의해 제어될 수 있다. 일부 실시예들에서, 소스 제어 라인들(416) 및 드레인 제어 라인(418)(총칭하여 제어 라인들로 지칭됨)은 NAND 스트링들 사이에서 반드시 공통으로 구성될 필요는 없을 수 있으며; 즉, 상이한 제어 라인들이 상이한 NAND 스트링들에 대해 제공될 수 있다.
메모리 셀들(406)은 제어 게이트 및 전하 트랩 층을 포함하는 트랜지스터들일 수 있다. 각각의 메모리 트랜지스터의 제어 게이트는 판독 및 기입 동작들에 대한 제어를 허용할 수 있다. 전하 트랩 층은 의도된 메모리 상태를 나타내도록 주어진 양의 전하를 저장하는 전하 저장 요소를 포함할 수 있다. "메모리 상태"는 하나 이상의 데이터 비트 값들에 대한 인코딩을 나타내도록 설계 및/또는 구성된 메모리 셀의 조건을 지칭한다. 소정 실시예들에서, 메모리 상태는 저장 동작을 사용함으로써 변화될 수 있다. 비휘발성 메모리 셀에서, 메모리 셀은 전원 없이 그의 메모리 상태를 유지한다. 메모리 어레이의 로우(각각의 NAND 스트링으로부터의 것)의 대응하는 메모리 트랜지스터들의 제어 게이트들은 모두 동일한 워드 라인에 접속된다. 유사하게, 선택 트랜지스터들 각각의 제어 게이트는 그의 소스 단자 및 드레인 단자를 통해 각각 NAND 스트링에 대한 제어된 액세스를 제공한다.
NAND 스트링 내의 어드레싱된 메모리 셀(예컨대, 메모리 셀(406))이 프로그래밍 동안 판독되거나 검증될 때, 그의 제어 게이트는 기준 전압 또는 판독 전압으로도 지칭되는 적절한 전압을 공급받는다. "판독 전압"은 어떤 메모리 셀들이 전압 레벨에서 전도하는지 테스트 또는 체크하도록 구성된 전압 레벨을 지칭한다. 소정 실시예들에서, 메모리 셀들은 트랜지스터들을 포함할 수 있고, 판독 전압은 메모리 셀이 전류를 전도하게 하는 메모리 셀들에 대한 임계 전압의 또는 그 초과의 전압 레벨이다.
소정 실시예들에서, 메모리 셀에 데이터를 저장하는 데 사용되는 인코딩의 유형 및 각각의 메모리 셀 상에 인코딩된 비트들의 수에 따라, 단일 판독 전압을 사용하는 단일 판독/감지 동작은 메모리 셀의 메모리 상태의 결정 요인일 수 있다. 다른 실시예들에서, 상이한 판독 전압 레벨들에서 각각 수행되는 다수의 판독/감지 동작들이 메모리 셀의 메모리 상태를 결정하는 데 사용될 수 있다. 이어서, 결정된 메모리 상태는 메모리 셀에 의해 저장된 데이터 비트들의 표현으로 디코딩될 수 있다. "판독 전압"은 "판독 임계 전압"에 대한 약칭이다. "판독 레벨"은 "판독 전압"을 기술하는 데 일반적으로 사용되는 다른 용어이며, 두 용어는 본 명세서에서 상호교환가능하게 사용된다.
동시에, NAND 스트링(400) 내의 어드레싱되지 않은 메모리 셀들의 나머지는 그들의 제어 게이트들 상에서의 충분한 전압(패스 전압이라고도 지칭됨)의 인가에 의해 완전히 턴온된다. 이러한 방식으로, 전도성 경로가 개별 메모리 셀의 소스로부터 NAND 스트링(400)의 소스 단자(예컨대, 소스 라인(414))로 그리고 마찬가지로 개별 메모리 셀의 드레인에 대해 메모리 셀의 드레인 단자(예컨대, 비트 라인(412))로 효과적으로 생성된다. 이러한 전도성 경로는 NAND 스트링의 하나 이상의 구조물들을 통해 이동할 수 있고, 본 명세서에서 채널(420)로 지칭된다. 물리적 메모리 다이 상에서, 채널(420)이 NAND 스트링(400)의 소스 측(410)으로부터 드레인 측(408)으로 연장된다.
"패스 전압"은 메모리 셀 상에 저장된/유지된 메모리 상태에 상관없이 메모리 셀들을 활성화시키도록(전도시키게 하도록) 구성된 전압 레벨을 지칭한다. 패스 전압은, 패스 전압이 트랜지스터로서 구현된 메모리 셀의 게이트에 공급될 때 높은 임계 전압(예를 들어, 6 볼트 초과)을 갖는 메모리 셀들이 활성화/전도되기에 충분히 높은 전압으로 설정된다.
소정 실시예들에서, 패스 전압의 목적은, 메모리 셀을 포함하는 NAND 스트링의 일 단부에서 비트 라인에 접속된 감지 증폭기(채널로도 지칭됨)와 NAND 스트링의 다른 단부에서 접속된 소스 라인 사이에 전도 경로를 생성하는 것이다. 전도 경로는 선택된 워드 라인에 결합된 NAND 스트링을 따르는 메모리 셀이 판독, 감지, 또는 프로그래밍될 수 있도록 요구될 수 있다. 일 실시예에서, 선택된 워드 라인의 메모리 셀들 상에서 저장 동작이 수행될 수 있도록, 패스 전압이 비선택된 워드 라인들에 제공된다. 소정 실시예들에서, 메모리 셀의 메모리 상태를 판독하기 위해 패스 전압이 사용되지 않는다.
도시된 바와 같이, 워드 라인들(422) WL0 내지 WLn - 여기서, WLn은 드레인-측 선택 게이트들(402)에 가장 가까운 워드 라인임 - 각각은 하나 이상의 메모리 셀들(406)을 포함한다. 각각의 비트 라인(412) 및 메모리 어레이 내의 각자의 NAND 스트링(400)은 NAND 스트링(400)들의 컬럼들, 저장 블록, 소거 블록 등을 포함할 수 있다. 이들 컬럼은 채널로도 지칭될 수도 있다. 일부 실시예들에서, 워드 라인들(422) WL0 내지 WLn은 NAND 스트링(400)의 로우들, 저장 블록, 소거 블록 등을 포함한다. 각각의 워드 라인 WL0 내지 WLn은, 일부 실시예들에서, 로우 내의 각각의 메모리 셀(406)의 제어 게이트들을 접속시킨다. 대안적으로, 제어 게이트들은 워드 라인들(422) WL0 내지 WLn 자체에 의해 제공될 수 있다. 일부 실시예들에서, 워드 라인은 수십, 수백, 수천, 수백만 개 등의 메모리 셀들(406)을 포함할 수 있다. 소정 실시예들에서, 워드 라인들(422) WL0 내지 WLn은 워드 라인들(422) WL0 내지 WLn 사이의 중간에 위치된 제조 조인트(370)와 같은 제조 조인트를 포함할 수 있다.
메모리 어레이에서, 워드 라인들은 메모리 어레이가 효율적으로 사용되도록 순차적 순서로 사용을 용이하게 하도록 조직화되거나 설계될 수 있다. "순차적 순서"는 소정 시퀀스로 행해지도록 배열되는 단계들, 동작들, 하위 단계들, 또는 이벤트들의 세트를 지칭한다.
동일한 또는 상이한 시퀀스들이 저장 동작들 중 임의의 것에 대해 사용될 수 있다. 예를 들어, 일 실시예에서, 메모리 어레이의 워드 라인들은, 소스 라인에 가장 가까운 워드 라인으로부터 시작하여, 선택 게이트 드레인 및/또는 비트 라인에 가장 가까운 워드 라인을 향해 각각의 인접한 프로그래밍되지 않은 워드 라인으로 순차적으로 진행하는, 순차적 순서로 프로그래밍될 수 있다. 다른 예에서, 일 실시예에서, 메모리 어레이의 워드 라인들은, 선택 게이트 드레인 및/또는 비트 라인에 가장 가까운 워드 라인으로부터 시작하여, 소스 라인 및/또는 소스 선택 게이트에 가장 가까운 워드 라인을 향해 각각의 인접한 프로그래밍되지 않은 워드 라인으로 순차적으로 진행하는, 순차적 순서로 프로그래밍될 수 있다. 또 다른 예들에서, 마지막 프로그래밍된 워드 라인 이후 프로그래밍할 워드 라인을 선택하기 위한 시퀀스는 순차적 이외의 패턴을 따를 수 있다.
메모리 어레이에서, 결합 효과는 메모리 셀들, NAND 스트링 채널들, 선택 게이트들 등을 포함하는, 메모리 어레이의 다양한 구조물들 및/또는 회로 컴포넌트들에 바람직하지 않은 효과들을 야기할 수 있다. "결합 효과"는 2개의 회로들, 회로들의 부분들, 회로부, 또는 반도체들을 포함하는 다른 전자 컴포넌트들 사이의 바이어스, 전위, 전압, 및/또는 전자기장의 변화를 지칭한다. 따라서, 결합 효과는, 적어도 부분적으로 이들 원하지 않는 효과로 인한, 교란의 유형으로서 본 명세서에서 지칭될 수 있다. 결합 효과는, 효과가 언제 그리고/또는 어떻게 발생하는지에 따라, 프로그래밍 교란, 프로그램 교란, 또는 판독 교란으로 지칭될 수 있다. "프로그램 교란"은 프로그래밍 저장 동작 및/또는 프로그래밍 저장 동작의 단계 동안, 또는 그 후에, 또는 그 결과로서 생성되는 전자 간섭 및/또는 자기 간섭의 유형을 지칭한다.
결합 효과는 NAND 스트링들의 채널들 내의 바이어스 레벨을 관리하는 데 사용되는 선택 게이트들에 영향을 줄 수 있다. 예를 들어, 선택 게이트들에 결합된 하나 이상의 제어 라인들 상의 바이어스는, 제어 라인들에서 신호에 의해 생성된 전자기장의 영향으로 인해 채널의 전압을 위로(또는, 바이어스의 부호에 따라, 아래로) 결합시키는 채널 내의 전압 레벨 상에 충분히 강한 전위를 도입할 수 있다.
이러한 방식으로, 본 명세서에 청구된 장치는, 복수의 드레인 측 더미 워드 라인들(424)로부터 소스 측 더미 워드 라인들(426)로 진행하는 시퀀스로 각각의 워드 라인을 프로그래밍함으로써 3차원 메모리 어레이의 워드 라인들을 프로그래밍하도록 구성되는 다이 제어기를 포함할 수 있다. "더미 워드 라인"은, 메모리 셀에 데이터를 저장하는 워드 라인처럼 구성된 메모리 어레이 내의 구조물을 지칭하지만, 더미 워드 라인은 데이터를 저장하는 데 규칙적으로 사용되지 않고, 대신에, 더미 워드 라인 주위에 위치된 전기 회로부로부터의 전기적 간섭 또는 교란에 대해 보상하거나, 완화시키거나, 그에 대해 버퍼링하도록 메모리 어레이 내에 위치되고, 제어되고, 관리된다. 일 실시예에서, 더미 워드 라인은 더미 워드 라인과 NAND 스트링의 교차점에 위치된 메모리 셀들의 세트를 포함하며, 각각의 메모리 셀은 더미 워드 라인 선택 게이트에 의해 더미 워드 라인에 결합된다. 더미 워드 라인 상에서 전송된 제어 신호는 더미 워드 라인 선택 게이트들에 대한 임계 전압 이상에서의 전압을 가질 수 있어서, 바이어스 또는 전류가 활성화된 바와 같이 NAND 스트링의 채널 내에서 그리고 메모리 셀의 소스 단자와 드레인 단자 사이에서 통과할 수 있게 할 수 있다. 이러한 방식으로, 더미 워드 라인은 제어 라인으로서의 역할을 할 수 있다.
일 실시예에서, 각각의 메모리 셀은 데이터를 저장하도록 구성된다. 예를 들어, 1 비트의 디지털 데이터를 저장할 때, 각각의 메모리 셀의 가능한 임계 전압들("Vt")의 범위는 논리적 데이터 "1" 및 "0"이 할당되는 2개의 범위들로 분할될 수 있다. 본 명세서에서 사용되는 바와 같이, 임계 전압은 메모리 셀이 활성화되게 하기에 충분한 메모리 셀의 게이트에 인가되는 전압의 크기를 지칭한다. 메모리 셀이 NAND 트랜지스터인 실시예들에서, 임계 전압은, 트랜지스터로 하여금 그의 소스 단자 및 드레인 단자 사이에서 전류를 전도하게 하는, 트랜지스터의 게이트 단자에 인가되는 충분한 전압이다. NAND 형 플래시 메모리의 일례에서, Vt는 메모리 셀들이 소거되고 로직 "1"로서 정의된 후에 네거티브일 수 있다. 일 실시예에서, 프로그램 동작 후의 Vt는 포지티브이고 로직 "0"으로서 정의된다.
Vt가 네거티브이고 판독이 시도될 때, 일부 실시예들에서, 메모리 셀들은 턴온되어, 로직 "1"이 저장되고 있음을 나타낼 것이다. Vt가 포지티브이고 판독 동작이 시도될 때, 추가 실시예에서, 메모리 셀은 턴온되지 않을 것이며, 이는 로직 "0"이 저장됨을 나타낸다. 각각의 메모리 셀은 또한 다수의 레벨의 정보, 예를 들어, 다수의 비트의 디지털 데이터를 저장할 수 있다. 그러한 실시예에서, Vt 값의 범위는 데이터의 레벨들의 수로 분할된다. 예를 들어, 4개의 레벨의 정보가 각각의 메모리 셀에 저장될 수 있는 경우, 데이터 값들 "11", "10", "01", 및 "00"에 할당되는 4개의 Vt 범위가 있을 것이다.
NAND 형 메모리의 일례에서, 소거 동작 후의 Vt는 네거티브일 수 있고 "11"로서 정의될 수 있다. 포지티브 Vt 값들은 "10", "01", 및 "00"의 상태들에 사용될 수 있다. 일 실시예에서, 메모리 셀들에 프로그래밍된 데이터와 메모리 셀들의 임계 전압 범위들 사이의 특정 관계는 메모리 셀들에 대해 채택된 데이터 인코딩 방식에 의존한다.
도 5는 일 실시예에 따른 서브-블록 0(502) 및 서브-블록 1(504)을 갖는 메모리 어레이(500)를 도시한다. 메모리 어레이(500)는 다수의 NAND 스트링 세트들(506)을 포함할 수 있다. NAND 스트링 세트들(506)은 3차원 메모리 어레이를 위한 페이지 내로 연장되는 NAND 스트링들의 그룹화를 포함할 수 있다. NAND 스트링 세트들(506)의 각각의 NAND 스트링은 다수의 워드 라인들 및 더미 워드 라인들, 예컨대 제조 조인트(512)의 양측에 배열된 하부 워드 라인들(508) 및 상부 워드 라인들(510)을 구현할 수 있다.
서브-블록 모드에서 사용될 때, 여기서 도시된 것과 같은 메모리 어레이 구조는, 도시된 바와 같이 서브-블록 0(502) 및 서브-블록 1(504)과 같은 제조 조인트(512)의 양측 상의 2개의 시스터 서브-블록들로 분할될 수 있다. 다른 메모리 아키텍처들에서, 사용되는 메모리 다이의 구조 및 능력들에 따라, 2개 초과의 시스터 서브-블록들이 구현될 수 있다.
"시스터 서브-블록"은 동일한 물리적 소거 블록 내에 있는 2개 이상의 서브-블록들 중 하나를 지칭한다. 소정 실시예들에서, 서브-블록 및 그의 시스터 서브-블록은 함께, 이들을 포함하는 단일 물리적 소거 블록과 구조적으로 상이하지 않을 수 있다. 그러한 실시예들에서, 다이 제어기는, 다이 제어기가 시스터 서브-블록들을 포함하는 물리적 소거 블록에 결합된 제어 라인들을 관리하는 방식에 의해, 각각의 시스터 서브-블록 상에서 독립적인 저장 동작들을 수행할 수 있다. 소정 실시예들에서, 다이 제어기는 물리적 소거 블록에 대해 정의된 구성 설정들을 통해 시스터 서브-블록들을 포함하는 물리적 소거 블록에 결합된 제어 라인들을 관리할 수 있다.
"구성 설정"은 인터페이스를 통해 수정가능한 한 세트의 저장 셀들의 파라미터를 지칭한다. 구성 설정의 예들은 판독 임계치 또는 판독 레벨, 기입 또는 프로그램 임계치, 소거 임계치, 프로그래밍에 사용할 프로그래밍 펄스 반복들의 개수, 프로그래밍 펄스들 사이의 단계 설정, 프로그램 펄스 지속시간, 패스 전압 레벨, 선택 게이트 전압 레벨, 소거 전압 레벨, 소거 펄스 지속시간, 소거 동작 방법, 저장 셀이 하나의 비트 또는 하나 초과의 비트를 저장하는지 여부 등을 포함하지만, 이들로 제한되지 않는다. 소정 실시예들에서, 구성 설정들은 "트림(trim)" 파라미터들로 지칭될 수 있다. 이러한 트림 파라미터들은 프로세스 변동, 전압 레벨 차이, 및 온도 차이(PVT)로 인한 저장 셀들의 세트들에서의 차이들을 고려하기 위해 저장 제어기에 의해 이루어지는 설정들 및 조정들을 포함할 수 있다.
소정 실시예들에서, 구성 설정들은 저장 셀들의 비휘발성 메모리 어레이의 하나 이상의 제어 라인들에 대해, 하나 이상의 소스 선택 게이트들, 드레인 선택 게이트들, 비선택된 워드 라인들, 선택된 워드 라인, 소스 라인, 비트 라인 등에 대한 전압 레벨들 및 타이밍 설정들을 포함한다.
구성 설정을 수정하기 위한 인터페이스는 프로그램가능 데이터 레지스터, 메모리 위치, 비휘발성 메모리 어레이에 대한 제어 버스의 커맨드 인터페이스, 저장 디바이스의 디바이스 드라이버의 API, 저장 제어기에 대한 제어 파라미터 등을 포함할 수 있다.
소정 실시예들에서, 메모리 어레이(500)에 대한 구성 설정들은 서브-블록 1(504)과 독립적으로 서브-블록 0(502)을 동작시키기 전에 설정된다. 대안적으로, 구성 설정들은 서브-블록 0(502) 및 서브-블록 1(504)을 단일 물리적 소거 블록 또는 논리적 소거 블록으로서 처리하도록 설정될 수 있다. 소정 실시예들에서, 메모리 어레이(500)는 데이터 워드 라인의 양측 상의 하나 또는 2개의 더미 워드 라인들, 예컨대 소스 측 상의 DWLS 0 및 DWLS1, 드레인 측 상의 DWLD 0 및 DWLD1, 제조 조인트(512)의 하부 측 상의 더미 워드 라인 DWLL, 및 제조 조인트(512)의 상부 측 상의 더미 워드 라인 DWLU를 포함할 수 있다.
도 6은 일 실시예에 따른 시스템(600)을 도시한다. 이 시스템은 저장 디바이스(102), 저장 제어기(104), 및 메모리 다이들(106)의 세트를 포함하는, 본 명세서에 개시된 해결책에 대한 기능을 포함한다. 저장 제어기(104)는 기입 데이터 파이프라인(602), 판독 데이터 파이프라인(604), 스트림 관리자(606), 제어 회로(608), 블록 할당 관리자(610), 및 열린 블록 관리자(612)를 포함할 수 있다.
저장 디바이스(102), 저장 제어기(104), 및 메모리 다이(106)는 전술된 바와 같이 효과적으로 기능할 수 있다. 메모리 다이들(106)은 적어도 하나의 로우 및 적어도 2개의 컬럼들을 갖는 어레이로 배열될 수 있다. 개시된 해결책을 구현하기 위해, 저장 제어기(104)는 호스트로부터 기입 커맨드들(614)을 수용할 수 있고, 상세히 기술되는 로직의 구현을 통해 본 명세서에 개시된 방식으로 그러한 기입 커맨드들을 프로세싱할 수 있다. 메모리 다이들(106)은 논리적 소거 블록들의 세트들로 분할될 수 있으며, 각각은 비휘발성 메모리 어레이의 로우의 각각의 메모리 다이로부터의 물리적 소거 블록을 포함한다. 논리적 소거 블록을 형성하는 각각의 물리적 소거 블록은 도 5에 도시된 바와 같이 2개의 시스터 서브-블록들을 포함할 수 있다.
저장 제어기(104)는 기입 커맨드들(614)을 수신하고 솔리드 스테이트 저장소(예컨대, 저장 디바이스(102))에 데이터(시스템 및 사용자 둘 모두)를 기입하기 위한 기입 데이터 파이프라인(602), 및 솔리드 스테이트 저장소(예컨대, 저장 디바이스(102)) 상에 저장된 데이터(시스템 및/또는 사용자)를 검색하기 위한 판독 데이터 파이프라인(604)을 포함할 수 있다. 기입 데이터 파이프라인(602)은 솔리드 스테이트 저장소에 기입될 데이터(데이터 세그먼트로도 지칭됨)를 수신하고 솔리드 스테이트 저장소에 대해 크기가 정해진 하나 이상의 데이터 패킷을 생성하는 패킷화기(packetizer)를 포함할 수 있다. 각각의 데이터 패킷은 데이터 세그먼트로부터의 헤더 및 데이터를 포함할 수 있다. 기입 데이터 파이프라인(602)은, 데이터 패킷들을 솔리드 스테이트 저장소에 기입하기 전에 패킷화기로부터 수신된 하나 이상의 데이터 패킷에 대한 하나 이상의 ECC 코드 워드를 생성하는 ECC 생성기를 포함할 수 있다. 기입 데이터 파이프라인(602)은 개시된 해결책에서 논리적 블록 어드레스들을 포함하는 기입 커맨드들(614)을 수신할 수 있고, 기입 커맨드(614)의 데이터를 서브-블록 모드에서 하나의 세트의 논리적 소거 블록들에 기입하도록 구성될 수 있다.
판독 데이터 파이프라인(604)은 솔리드 스테이트 저장소로부터 검색된 하나 이상의 ECC 코드 워드들을 하나 이상의 데이터 패킷으로 변환하고 디코딩된 데이터 내의 오류들을 정정 및/또는 식별하는 ECC 디코더를 포함할 수 있다. 판독 데이터 파이프라인(604)은, ECC 디코더로부터 디코딩된 데이터(또한 오류 정정될 수 있음)를 수신하고, 하나 이상의 데이터 패킷을 판독 커맨드를 서비스하는 데 사용될 수 있는 데이터(사용자 또는 시스템)로 변환하는 디패킷화기(depacketizer)를 포함할 수 있다.
스트림 관리자(606)는 저장 디바이스(102)가 취급하고 있는 워크로드들에 관한 정보를 결정하기 위해 저장 디바이스(102)에 의해 수신된 기입 커맨드들(614)을 추적 또는 모니터링한다. "스트림"은 공통 워크로드 속성을 갖는, 입력/출력(I/O) 저장 커맨드들의 세트, 및 연관된 데이터를 지칭한다. 예를 들어, 워크로드 속성이 IO 저장 커맨드들이 순차적 워크로드 유형에 대한 것이라는 경우, 순차적 워크로드 유형과 연관된 스트림은 순차적 스트림으로 지칭될 수 있다. 워크로드 속성이 IO 저장 커맨드들이 랜덤 워크로드 유형에 대한 것이라는 경우, 랜덤 워크로드 유형과 연관된 스트림은 랜덤 스트림으로 지칭될 수 있다.
"워크로드 속성"은 워크로드에 관한 임의의 품질, 특성(characteristic), 속성(attribute), 특징, 거동, 특성(trait), 또는 속성(property)을 지칭한다. 워크로드 속성은, 예를 들어 저장 클라이언트에 의해 명시적으로 식별되고 정의될 수 있다. 대안적으로, 워크로드 속성은 암시될 수 있고, 다른 정보에 기초하여 도출될 수 있다. 워크로드 속성들의 예들은, 저장 커맨드에서 액세스된 데이터가 순차적 오름차순, 순차적 내림차순, 또는 랜덤으로 식별된 LBA들, LBA 기준 클러스터링, 또는 다른 유사한 속성들에 따라 액세스되는지 여부에 관계없이, 업데이트/액세스 빈도를 포함하지만, 이로 제한되지 않는다.
"워크로드 유형"은 저장 제어기가 호스트로부터 수신하고 있는 저장 커맨드들의 유형에 대한 지정을 지칭한다. 다양한 워크로드 유형들이, 서비스의 품질 및 순서화된 저장 커맨드들의 시퀀스로 수신된 논리적 블록 어드레스들의 순서화를 포함하는 다양한 메트릭들에 기초하여 존재할 수 있다. 워크로드 유형의 예들은 순차적 워크로드 유형 및 랜덤 워크로드 유형을 포함한다.
저장 디바이스(102)는 기입 커맨드들(614)에 더하여 다른 저장 커맨드들을 취급할 수 있다. 본 명세서에서 사용되는 바와 같은 저장 커맨드들은 판독 커맨드, 기입 커맨드, 유지 커맨드, 진단 커맨드, 테스트 모드 커맨드, 및 저장 제어기(104)가 수신할 수 있는 임의의 다른 커맨드를 포함한다. 본 명세서에서 사용되는 바와 같은 "워크로드"는 저장 디바이스(102)에 의해 수신 및/또는 서비스되는 기입 커맨드들(614)의 수 및 유형, 및 그러한 기입 커맨드들(614)을 서비스하는 것으로부터의 결과 또는 결과들이다. 워크로드는 또한 기입 커맨드들(614)에 대한 임의의 통계치를 포함할 수 있다. 일 실시예에서, 스트림 관리자(606)는 특정 기간에 걸쳐 얼마나 많은 기입 커맨드들이 수신되었는지, 얼마나 많은 기입 커맨드들이 성공했는지, 얼마나 많은 기입 커맨드들이 실패했는지 등을 포함하지만 이에 제한되지 않는, 기입 커맨드들(614)에 대한 통계치를 유지한다.
스트림 관리자(606)가 (입력 IO 트랜잭션들로도 지칭되는 다른 저장 커맨드들과 함께) 기입 커맨드들(614)을 모니터링함에 따라, 스트림 관리자(606)는 워크로드들을 정의하거나, 기술하거나, 또는 특성화하는 하나 이상의 워크로드 속성들을 추적한다. 본 명세서에서 사용되는 바와 같이, "워크로드 속성"은 워크로드에 관한 임의의 품질, 특성, 속성, 특징, 거동, 특성, 또는 속성이다. 워크로드 속성은, 예를 들어 저장 클라이언트에 의해 명시적으로 식별되고 정의될 수 있다. 대안적으로, 워크로드 속성은 암시될 수 있고, 다른 정보에 기초하여 도출될 수 있다.
일 실시예에서, 스트림 관리자(606)는 하나 이상의 워크로드 속성을 검토 또는 분석하고, 워크로드 속성들에 기초하는 저장 커맨드들 사이의 패턴들, 유사성들, 관계들, 및/또는 공통성들을 결정한다. 소정 실시예들에서, 이러한 패턴들, 유사성들, 관계들, 및/또는 공통성들은 힌트들로 지칭되고, 저장 디바이스(102)의 성능을 개선하는 데 사용될 수 있다. 소정 실시예들에서, 스트림 관리자(606)는 저장 커맨드들 사이의 관계를 결정하거나 도출한다. 관계는 제2 세트의 저장 커맨드들에 관련한 제1 세트의 저장 커맨드들의 워크로드 속성들 사이의 임의의 관련성 또는 연관성이다. 소정 실시예들에서, 관계는 명시적이며, 워크로드 속성들의 검토에 기초하여 결정된다. 다른 실시예들에서, 관계는 암시적이며, 워크로드 속성들의 검토에 기초하여 도출된다.
본 개시내용의 시스템에서 스트림 관리자(606)는 기입 커맨드들(614)의 세트에 대한 워크로드 유형 속성을 결정할 수 있다. 그렇게 하기 위해, 스트림 관리자(606)는 기입 커맨드들(614)이 호스트로부터 순차적으로 수신됨에 따라 기입 커맨드들(614)을 모니터링할 수 있다. 스트림 관리자(606)는 이어서 착신 기입 커맨드들(614)의 논리적 블록 어드레스들을 이전 기입 커맨드들(614)의 논리적 블록 어드레스들과 비교할 수 있다. 순차적 워크로드 유형은 순차적 기입 커맨드들(614)의 논리적 블록 어드레스들이 도착함에 따라 순차적 순서로 있을 때 결정될 수 있다. "순차적 워크로드 유형"은 수신된 각각의 저장 커맨드가 순차적 순서로 다음 LBA를 참조하도록 수신된 저장 커맨드들에 대한 논리적 블록 어드레스들(LBA들)의 세트를 지칭한다.
저장 제어기(104)의 제어 회로(608)는 가비지 수집기(616)를 포함할 수 있다. 메모리 다이(106)의 각각의 논리적 소거 블록은 서브-블록 모드에서 데이터를 저장하도록 구성될 수 있고, 따라서 적어도 2개의 시스터 서브-블록들을 포함할 수 있다. 가비지 수집기(616)는 하나의 시스터 서브-블록으로부터 유효 데이터를 통합하고, 유효 데이터를 다른 저장 블록으로 이동시킬 수 있다. 하나의 시스터 서브-블록 상의 가비지 수집 동작 동안, 대응하는 시스터 서브-블록 내의 데이터는 대응하는 시스터 서브-블록에 남아 있을 수 있고 영향을 받지 않을 수 있다.
블록 할당 관리자(610)는 메모리 다이(106) 상에 데이터를 기입하기 위한 물리적 위치를 결정하기 위해 스트림 관리자(606) 및 열린 블록 관리자(612)와 협력한다. "블록 할당 관리자"는 비휘발성 저장 디바이스 내에서 데이터를 어디에 저장할지를 결정하도록 구성, 프로그래밍, 설계, 배열, 또는 엔지니어링된 임의의 하드웨어, 소프트웨어, 펌웨어, 회로, 컴포넌트, 모듈, 로직, 디바이스, 또는 장치를 지칭한다. 소정 실시예들에서, 블록 할당 관리자는 착신 기입 데이터를 위해 사용할 저장 블록을 결정한다.
블록 할당 관리자(610)는 풀-블록 모드에서 저장 동작을 위해 한 세트의 논리적 소거 블록들 중 하나를 재구성할 수 있다. 이를 수행하기 위해, 블록 할당 관리자(610)는 풀-블록 모드 커맨드와 같은 구성 커맨드를 논리적 소거 블록을 포함하는 메모리 다이들(106)에 전송할 수 있다. "구성 커맨드"는 저장 디바이스, 저장 제어기, 다이 제어기 등이 하나 이상의 구성 설정을 변화시키도록 지시하는 저장 커맨드의 유형을 지칭한다. "풀-블록 모드 커맨드"는, 다이 제어기로 하여금, 논리적 소거 블록이 2개 이상의 메모리 평면들 및/또는 메모리 다이로부터의 2개 이상의 물리적 소거 블록들로 구성되는 풀 논리적 소거 블록으로서 저장 블록을 동작시키게 하는 구성 커맨드의 유형을 지칭한다. 풀-블록 모드 커맨드는, 다이 제어기로 하여금, 함께 2개 이상의 메모리 평면들 및/또는 메모리 다이에 걸쳐 있는 서브-블록들의 세트로서 저장 블록을 동작시키게 하는 구성 커맨드의 유형인 서브-블록 모드 커맨드와는 반대 커맨드이다. 각각의 저장 블록을 형성하는 서브-블록들은 물리적 소거 블록의 논리적 분할이다.
블록 할당 관리자(610)는 순차적 워크로드 유형을 갖는 기입 커맨드들(614)을 재구성된 논리적 소거 블록으로 보낼 수 있다. 블록 할당 관리자(610)는 풀-블록 모드에서 데이터를 재구성된 논리적 소거 블록에 기입할 것을 기입 데이터 파이프라인(602)에 지시할 수 있다. 풀-블록 모드에서 논리적 소거 블록을 동작시키는 것은, 논리적 소거 블록의 각각의 메모리 다이의 시스터 서브-블록들 둘 모두가 단일 물리적 소거 블록으로서 사용됨을 의미한다. 블록 할당 관리자(610)는, 랜덤 워크로드 유형을 갖는 기입 커맨드들이 스트림 관리자(606)에 의해 결정/검출될 때까지 풀-블록 모드에서 논리적 소거 블록에 데이터를 기입할 것을 기입 데이터 파이프라인(602)에 지시할 수 있다. "랜덤 워크로드 유형"은 수신된 각각의 저장 커맨드가 랜덤 순서, 의사 랜덤 순서, 또는 순차적 순서 이외의 순서로 다음 LBA를 참조하도록 수신된 저장 커맨드들에 대한 논리적 블록 어드레스들(LBA들)의 세트를 지칭한다.
랜덤 워크로드 유형이 결정될 때까지, 타깃 저장 블록의 2개 이상의 메모리 다이에 대한 구성 설정들은 풀-블록 모드 구성 설정들로부터 서브-블록 모드 서브-블록 모드 구성 설정들로 변화될 수 있다. 구성 설정들을 변화시키는 것은 메모리 다이의 모든 저장 블록들에 영향을 주는 동작이라는 것에 유의해야 한다. 개시된 해결책으로, 소정 저장 블록들은 풀-블록 모드에서 구성 및 사용될 수 있는 반면, 동일한 메모리 다이 상의 다른 것들은 서브-블록 모드에서 구성 및 사용될 수 있다.
"타깃 저장 블록"은 데이터를 기입하는 데 사용하기 위해 선택, 선정, 지정, 또는 식별된 하나 또는 2개의 메타블록들의 세트를 지칭한다. 일 실시예에서, 타깃 저장 블록은 메모리 어레이의 2개 이상의 평면들 및/또는 메모리 다이로부터의 서브-블록들로 구성된 단일 메타블록을 포함한다. 다른 실시예에서, 타깃 저장 블록은 메모리 어레이의 2개 이상의 평면들 및/또는 메모리 다이로부터의 단일 물리적 소거 블록의 시스터 서브-블록들로 구성된 2개의 메타블록들을 포함한다. 또 다른 실시예에서, 타깃 저장 블록은 메모리 어레이의 2개 이상의 평면들 및/또는 메모리 다이에 걸쳐 있는 단일 메타블록 또는 2개의 메타블록들(한 쌍의 메타블록들) 중 어느 하나를 포함한다. 따라서, 타깃 저장 블록이 어떻게 사용되는지, 풀-블록 모드 또는 서브-블록 모드에 따라, 타깃 저장 블록은 메모리 어레이의 각각의 메모리 다이로부터의 단일 시스터 서브-블록 또는 메모리 어레이의 각각의 메모리 다이로부터의 한 쌍의 인접한 시스터 서브-블록들 중 어느 하나를 포함한다.
"풀-블록 모드 구성 설정"은, 소거 블록(물리적 소거 블록 및/또는 논리적 소거 블록 둘 모두) 상에서의 저장 동작들이 소거 블록을 풀-블록으로서 사용할 수 있게 하도록 구성, 설계, 조정, 및/또는 설정된 구성 설정들을 지칭한다. "서브-블록 모드 구성 설정"은, 소거 블록(물리적 소거 블록 및/또는 논리적 소거 블록 둘 모두)의 서브-블록 상에서의 저장 동작들을 가능하게 하도록 구성, 설계, 및/또는 설정된 구성 설정들을 지칭한다.
개시된 해결책을 구현하기 위해, 블록 할당 관리자(610)는 도 9와 관련하여 더 상세히 기술된 메타블록 추적 테이블(618)을 포함할 수 있다. 메타블록 추적 테이블(618)은 스트림 관리자(606)에 의해 결정된 워크로드 유형에 기초하여 착신 기입 데이터에 대한 타깃 저장 블록을 등록하는 데 사용될 수 있다. 스트림 관리자(606)가 워크로드가 순차적 워크로드 유형이라고 결정할 때, 블록 할당 관리자(610)는 타깃 저장 블록으로서 사용하기 위해 프리 메타블록 풀(free metablock pool)(622)로부터 프리 메타블록(620)을 선택할 수 있다. "프리 메타블록"은, 유효 데이터를 저장하는 데 사용되고 있지 않고 현재 또는 향후 기입 커맨드들의 데이터를 저장하는 데 이용가능한 메타블록을 지칭한다. "프리 메타블록 풀"은 저장 제어기에 의해 사용되도록 식별, 제조, 및/또는 지정된 프리 메타블록들의 세트를 지칭한다.
타깃 저장 블록의 메모리 다이들(106)에 대한 구성 설정들은 메모리 다이들(106)의 그들 부분들이 풀-블록 모드에서 동작할 것임을 나타내도록 설정될 수 있다. 일 실시예에서, 디폴트 구성 설정들은 메모리 다이들(106)이 서브-블록 모드에서 동작되어야 함을 나타낼 수 있고, 이러한 설정들은 풀 블록들이 필요할 때 업데이트될 수 있다. 타깃 저장 블록은 풀-블록 모드에서 소거되어 데이터를 수신하도록 준비되고, 이어서 메타블록 추적 테이블(618)에서 풀 저장 블록(full storage block)으로서 등록될 수 있다. "풀 저장 블록"은 단일 유닛으로서 프로그래밍 및/또는 소거되도록 구성된 한 쌍의 메타블록들을 지칭한다. 하나의 실시예에서, 풀 저장 블록은 메모리 어레이의 2개 이상의 평면들 및/또는 메모리 다이로부터의 단일 물리적 소거 블록의 시스터 서브-블록들로 구성된 2개의 메타블록들을 포함한다. 메타블록 추적 테이블(618)에서 타깃 저장 블록을 등록하는 것은, 타깃 저장 블록을 풀 저장 블록으로서 식별하도록 메타블록 추적 테이블(618)을 업데이트하는 것, 및 기입 커맨드들의 세트에 대한 데이터를 수신한 후에 타깃 저장 블록이 소거될 때까지 타깃 저장 블록을 풀 저장 블록으로서 관리하는 것을 포함할 수 있다. 일 실시예에서, 블록 할당 관리자(610)는 열린 블록 관리자(612)에게 현재 열린 소거 블록들 내에서 기입 데이터를 저장할 위치를 지시한다.
열린 블록 관리자(612)는 메모리 다이들(106)에 걸쳐 있는 어떤 메타블록들이 열린 메타블록(open metablock)들(624)이고, 어떤 것들이 닫힌 메타블록들(626)이고, 그리고 어떤 것들이 프리 메타블록들(620)인지를 관리한다. "열린 메타블록"은 하나 이상의 기입 커맨드들에 대한 데이터 블록을 수신하도록 구성되는 메타블록을 지칭한다. 전형적으로, 열린 메타블록은 하나 이상의 추가 데이터 블록에 대한 저장 공간을 포함한다. 소정 실시예들에서, 열린 메타블록은 스트림과 같은 데이터의 특정 세트와 연관될 수 있다.
열린 블록 관리자(612)는 각각의 메모리 다이(106) 내의 물리적 어드레스를 추적하고 - 여기서 후속 페이지(물리적 또는 논리적)가 그 특정 열린 메타블록(624)에 기입될 수 있음 -, 데이터가 열린 메타블록들(624)에 기입됨에 따라 이 물리적 어드레스를 추적하는 포인터를 전진시킨다. 열린 블록 관리자(612)는 열린 메타블록들(624)이 풀이 되려 할 때를 결정하고, 열린 메타블록들(624)을 닫아서 닫힌 메타블록들(626)을 형성하고, 프리 메타블록들(620)을 열린 메타블록들(624)로 변환하고, 충분한 프리 메타블록들(620)이 이용가능함을 보장하도록 저장 제어기(104)의 다른 컴포넌트들과 협력한다. 열린 블록 관리자(612)는 재구성된 논리적 소거 블록을 풀-블록 모드에서 관리하도록 추가로 구성될 수 있다.
도 7은 일 실시예에 따른 저장 제어기(700)를 도시한다. 저장 제어기(700)는 스트림 관리자 회로(702), 메타블록 관리 회로(704), 모드 회로(706), 추적 회로(708), 및 판독/기입 회로(710)를 포함한다.
스트림 관리자 회로(702)는 기입 커맨드들을 모니터링하도록 구성될 수 있다. 그렇게 함으로써, 스트림 관리자 회로(702)는 그것이 모니터하는 기입 커맨드들의 세트가 순차적 워크로드 유형과 상관된다고 결정할 수 있다. 일 실시예에서, 스트림 관리자 회로(702)는, 기입 커맨드들이 순차적 워크로드 유형보다는 랜덤 워크로드 유형과 상관된다고 결정하도록 추가로 구성될 수 있다.
메타블록 관리 회로(704)는 기입 커맨드들의 세트에 대한 데이터를 수신하기 위해 프리 메타블록을 지정하도록 구성될 수 있다. 메타블록 관리 회로(704)는 풀-블록 모드에서 그렇게 지정된 프리 메타블록을 소거하도록 추가로 구성될 수 있다. 풀-블록 모드에서 프리 메타블록을 소거하는 것은 프리 메타블록의 시스터 서브-블록들 둘 모두가 단일 소거 동작에서 소거됨을 의미한다. 이러한 소거 동작은, 예를 들어, 프리 메타블록이 서브-블록 모드에서 사용되는 경우, 프리 메타블록의 각각의 시스터 서브-블록을 개별적으로 소거하는 것보다 2배 빠르다. 메타블록 관리 회로(704)는 또한 기입 커맨드들의 제2 세트에 대한 데이터를 수신하기 위해 제2 프리 메타블록을 지정하도록 구성될 수 있다. 이어서, 메타블록 관리 회로(704)는 서브-블록 모드에서 제2 프리 메타블록을 소거할 수 있다. 프리 메타블록들은 복수의 메모리 다이들의 서브-부분들을 포함할 수 있다.
메모리 다이들은 도 1에 도시된 바와 같이 인터페이스 버스에 병렬로 결합될 수 있다. 모드 회로(706)는 풀-블록 모드 커맨드 또는 서브-블록 모드 커맨드를, 프리 메타블록의 부분들을 포함하는 메모리 다이들에 전송할 수 있다. "서브-블록 모드 커맨드"는, 다이 제어기로 하여금 함께 2개 이상의 메모리 평면들 및/또는 메모리 다이에 걸쳐 있는 서브-블록들의 세트로서 저장 블록을 동작시키게 하는 구성 커맨드의 유형을 지칭한다. 각각의 저장 블록을 형성하는 서브-블록들은 물리적 소거 블록의 논리적 분할이다. 서브-블록 모드 커맨드는, 다이 제어기로 하여금 논리적 소거 블록이 2개 이상의 메모리 평면들 및/또는 메모리 다이로부터의 2개 이상의 물리적 소거 블록들로 구성되는 풀 논리적 소거 블록으로서 저장 블록을 동작시키게 하는 구성 커맨드의 유형인 풀-블록 모드 커맨드와는 반대 커맨드이다.
서브-블록 모드 커맨드는 메모리 다이 구성 설정들을 풀-블록 모드로부터 서브-블록 모드 설정들로 변화시키도록 구성될 수 있다. 풀-블록 모드 커맨드는 메모리 다이 설정들을 서브-블록 모드 또는 일부 다른 디폴트 모드로부터 변화시키도록 구성될 수 있다. 일부 실시예들에서, 서브-블록 모드는 복수의 메모리 다이들의 전부 또는 일부에 대한 디폴트 모드일 수 있다. 일 실시에에서, 모드 회로(706)는 오직 모니터링된 기입 커맨드들의 후속 세트들에 대한 워크로드 유형의 변화에 응답하여, 풀-블록 모드 커맨드 또는 서브-블록 모드 커맨드를 발행할 수 있다.
추적 회로(708)는 프리 메타블록을, 프리 메타블록의 일부분을 포함하도록 구성된 메모리 다이들 각각 상의 한 쌍의 시스터 서브-블록들과 연관시킬 수 있다. 제1 및 제2 프리 메타블록들은 각각 제1 쌍의 시스터 서브-블록들 및 제2 쌍의 시스터 서브-블록들과 각각 연관될 수 있다. 도 3 및 도 5에 도시된 바와 같이, 각각의 쌍의 시스터 서브-블록들은 특정 물리적 소거 블록과 연관될 수 있다.
판독/기입 회로(710)는 기입 커맨드들의 세트가 순차적 워크로드 유형에 상관되어 수신될 때 풀-블록 모드에서 프리 메타블록에 데이터를 기입하도록 구성될 수 있다. 판독/기입 회로(710)는 기입 커맨드들의 제2 세트가 랜덤 워크로드 유형에 상관되는 것에 응답하여 서브-블록 모드에서 제2 프리 메타블록에 데이터를 기입할 수 있다.
도 8은 일 실시예에 따른 저장 제어기(800)를 도시한다. 저장 제어기(800)는 스트림 관리자 회로(802), 메타블록 관리 회로(804), 모드 회로(806), 추적 회로(808), 판독/기입 회로(810), 및 휘발성 메모리(812)를 포함한다. 스트림 관리자 회로(802), 메타블록 관리 회로(804), 모드 회로(806), 추적 회로(808), 및 판독/기입 회로(810)는 도 7에 도시된 저장 제어기(700)의 유사한 요소들과 유사한 방식으로 동작할 수 있다. "휘발성 메모리"는 휘발성 메모리 매체에 대한 약칭을 지칭한다. 소정 실시예들에서, 휘발성 메모리는 휘발성 메모리 매체, 및 휘발성 메모리 매체를 관리하고 휘발성 메모리 매체에 대한 액세스를 제공하는 로직, 제어기들, 프로세서(들), 상태 기계(들), 및/또는 다른 주변 회로들을 지칭한다.
휘발성 메모리(812)는 풀-블록 모드 구성 설정들(816) 및 서브-블록 모드 구성 설정들(818)을 포함하는 구성 설정들(814)을 저장할 수 있다. 구성 설정들(814)은 구성 설정들을 변경하기 위해 메모리 다이들에 전송될 수 있다.
대안적으로, 또는 다른 실시예에서, 복수의 메모리 다이들(도시되지 않음)은 도 2에 도시된 다이 제어기(204)와 같은 다이 제어기 상에서 휘발성 메모리(812) 내에 풀-블록 모드 구성 설정들(816) 및 서브-블록 모드 구성 설정들(818)을 저장할 수 있다. 모드 회로(806)에 의해 발행된 풀-블록 모드 커맨드는 복수의 메모리 다이들 중 각각의 메모리 다이의 다이 제어기로 하여금 그 다이의 서브-블록 모드 구성 설정들을 풀-블록 모드 구성 설정들로 교환하게 하도록 구성될 수 있다. 서브-블록 모드 커맨드는 관련된 메모리 다이들에 대해 반대 동작을 수행하도록 구성될 수 있다. 구성 설정들(814)이 다이 제어기의 휘발성 메모리에 저장되면, 서브-블록 모드 구성 설정들(818)로부터 풀-블록 모드 구성 설정들(816)으로의 변화가 빠르게 이루어질 수 있다.
도 9는 일 실시예에 따른 메타블록 추적 테이블(900)을 도시한다. "메타블록 추적 테이블"은 메타블록들에 관한 메타데이터를 유지하는 데 사용되는 데이터 구조를 지칭한다. 메타블록 추적 테이블에서의 메타데이터의 예들은 메타블록에 대한 다수의 프로그램 및 소거 동작들, 메타블록이 서브-블록 모드 또는 전체-블록 모드에서 사용되어야 하는지의 여부, 메타블록이 프리 메타블록인지 또는 이용불가능한 메타블록인지 여부, 메타블록의 데이터에 대한 기입 온도 등을 포함한다.
메타블록 추적 테이블(900)은 종래의 어드레스 맵핑 테이블에 더하여 구현될 수 있다. "어드레스 맵핑 테이블"은 논리적 블록 어드레스들을 비휘발성 메모리 어레이 상에 저장된 데이터의 물리적 어드레스들과 연관시키는 데이터 구조를 지칭한다. 테이블은 인덱스, 맵, b-트리, 컨텐츠 어드레스가능 메모리(content addressable memory, CAM), 이진 트리, 및/또는 해시 테이블 등으로서 구현될 수 있다. 어드레스 맵핑 테이블은 그룹 할당 테이블(Group Allocation Table, GAT)으로서 상호교환가능하게 지칭될 수 있다.
메타블록 추적 테이블(900)은 어느 메타블록들 또는 논리적 소거 블록들이 메모리 다이들의 어느 부분들로 구성되는지, 메타블록들/논리적 소거 블록들이 어느 모드에서 동작될 수 있는지, 그리고 어느 메타블록들/논리적 소거 블록들이 이용가능한지에 관한 정보를 포함할 수 있다. 예시된 메타블록 추적 테이블(900)에서, 뒤에 숫자가 붙는 "MB"는 특정 메타블록 또는 저장 블록 또는 논리적 소거 블록을 지정하는 데 사용될 수 있다. "블록 모드"로 라벨링된 컬럼은 메타블록이 어느 모드에서 사용되고 있는지를 나타낸다. 이 컬럼에서 "1"은 메타블록이 풀-블록 모드(full-block mode, FBM)에서 사용되고 있음을 나타낸다. 이 컬럼에서 "0"은 메타블록이 서브-블록 모드(sub-block mode, SBM)에서 사용되고 있음을 나타낸다. 데이터가 메타블록에 마지막으로 기입되었을 때의 온도(기입 온도(Write Temp)(902)), 메타블록이 프로그래밍되고 소거된 횟수(PE 카운트(904)) 등과 같은, 소정 다른 메타데이터가 메타블록 추적 테이블(900)에 저장될 수 있다.
저장 제어기 내의 블록 할당 관리자는 메타블록 추적 테이블(900)을 참조하여, 논리적 소거 블록들/메타블록들/저장 블록들의 세트 중 어느 것이 이용가능한 논리적 소거 블록/이용가능한 메타블록(906)인지 - 예컨대, 도시된 바와 같이, "블록 이용가능성" 아래에 "1로" 표시된 것들 - 를 결정할 수 있다. 이용가능한 논리적 소거 블록/이용가능한 메타블록(906)은, 이용가능한 논리적 소거 블록/이용가능한 메타블록(906)이 2개의 시스터 서브-블록들(910)을 각각 포함하는 물리적 소거 블록들을 포함할 때 풀-블록 모드에서 순차적 워크로드 유형을 갖는 기입 커맨드들로부터 데이터를 수신하도록 지정될 수 있다. 이용가능한 논리적 소거 블록/이용가능한 메타블록(906) MB8은, MB9 내의 대응하는 잠재적인 시스터 서브-블록들이 이용가능한 것으로 표시됨에 따라, 풀-블록 모드에서의 사용을 위해 지정될 수 있다. 일단 풀 저장 블록(908)이 지정되면, 그것은 도시된 풀 저장 블록들(908)에 대한 MB0 및 MB6과 같은 그의 제1 지정자에 의해 참조될 수 있다. 제2 지정자(예컨대, MB1 및 MB7)는 사용되지 않을 수 있는데, 그 이유는 그들의 서브-블록들이 풀-블록 모드에서 그들의 시스터들과는 별개로 액세스되지 않을 수 있기 때문이다.
도시된 예에서, 이용가능한 논리적 소거 블록/이용가능한 메타블록(906) MB2 및 MB5는 순차적 워크로드 유형 기입 커맨드들에 대해 풀-블록 모드에서 사용되지 않을 수 있는데, 그 이유는 그들의 시스터 서브-블록들(각각 MB3 및 MB4)이 이용불가능한 논리적 소거 블록들/메타블록들이기 때문이다.
일 실시예에서, 순차적 워크로드 유형이 결정될 수 있지만, 프리 메타블록 풀은 대응하는 메모리 다이들 상에서 공통 물리적 소거 블록을 공유하는 한 쌍의 서브-블록들을 포함하지 않을 수 있다. 그러한 경우에, MB2와 같은 프리 메타블록이 타깃 저장 블록으로서 선택될 수 있다. 이어서, 이 타깃 저장 블록을 구성하는 것은, 타깃 저장 블록의 2개 이상의 메모리 다이들에 대한 설정들을 서브-블록 모드 구성 설정들로서 유지하는 것을 포함할 수 있다. 타깃 저장 블록은 서브-블록 모드에서 소거될 수 있고 서브-블록 모드에서 사용하기 위해 등록될 수 있다. 타깃 저장 블록에 대한 설정들은 일단 그들이 변화되면 자동으로 디폴트로 복귀하지 않을 수 있다. 오히려, 이러한 설정들은 상이한 워크로드 유형이 검출될 때까지 특정 워크로드 유형에 대해 설정된 상태로 유지될 수 있다.
도 10은 서브-블록들에 대한 동적 할당을 위한 루틴(1000)을 도시한다. 본 명세서에 개시된 시스템 및 장치는 이 루틴(1000)을 통해 개시된 방법을 구현하도록 구성될 수 있다.
블록(1002)에서, 저장 제어기는 복수의 메모리 다이들을 포함하는 비휘발성 메모리 어레이에 대한 기입 커맨드들의 세트를 수신할 수 있다. 메모리 다이들은 복수의 메모리 다이들 중 2개 이상의 메모리 다이들에 걸쳐 있도록 구성되는 메타블록들로 조직화될 수 있다.
블록(1004)에서, 저장 제어기는 기입 커맨드들의 세트에 대한 워크로드 유형을 결정할 수 있다. 기입 커맨드들의 세트가 순차적 순서로 진행하는 논리적 블록 어드레스들을 각각 참조하는 경우, 저장 제어기는 기입 커맨드들의 세트가 순차적 워크로드 유형인 것으로 결정할 수 있다. 참조된 논리적 블록 어드레스들이 순차적 순서로 도달하지 않는 경우, 세트는 랜덤 워크로드 유형인 것으로 결정될 수 있다.
블록(1006)에서, 저장 제어기는 워크로드 유형에 기초하여 기입 커맨드들의 세트를 수신하기 위해 타깃 저장 블록을 선택할 수 있다. 저장 블록들이 서브-블록 모드에서 동작하도록 디폴트로 구성되는 실시예에서, 그리고 랜덤 워크로드 유형의 커맨드들이 수신되는 한, 타깃 저장 블록들은 이용가능한 논리적 소거 블록들 또는 프리 메타블록들의 세트 중 임의의 것에 할당될 수 있다. 순차적 워크로드 유형의 커맨드들이 수신될 때, 저장 제어기는 풀-블록 모드에서 사용하기에 적합한 이용가능한 논리적 소거 블록들을 위치시키고 이들을 가능한 경우 타깃 저장 블록으로서 할당하려고 시도할 수 있다.
일단 블록(1006)에서 타깃 저장 블록이 결정되면, 블록(1004)에서 검출된 워크로드 유형에 대한 데이터 블록들을 수신하도록 타깃 저장 블록은 블록(1008)에서 구성될 수 있다. 타깃 저장 블록은 순차적 워크로드 유형의 데이터 블록들을 수신하기 위해 풀-블록 모드에서 동작하도록 구성될 수 있다. 타깃 저장 블록은 랜덤 워크로드 유형의 데이터 블록들을 수신하기 위해 서브-블록 모드에서의 동작을 위해 유지되거나 재구성될 수 있다.
블록(1010)에서, 일단 타깃 저장 블록이 구성되면, 저장 제어기는 기입 커맨드들의 세트를 타깃 저장 블록으로 보낼 수 있다. 타깃 저장 블록은, 워크로드 유형의 변화가 검출되거나, 타깃 저장 블록이 풀이 되거나, 일부 다른 이벤트가 상이한 타깃 저장 블록을 지정할 필요성을 트리거할 때까지, 기입 커맨드들의 세트와 연관된 향후 기입 커맨드들이 타깃 저장 블록에 저장되도록 구성될 수 있다.
도 11은 해결책의 실시예들을 포함할 수 있는 컴퓨팅 디바이스(1100)의 예시적인 블록도이다. 도 11은 본 명세서에 기술된 기술적 프로세스들의 양태들을 수행하기 위한 기계 시스템의 예시일 뿐이며, 청구범위의 범주를 제한하지 않는다. 당업자는 다른 변형들, 수정들 및 대안들을 인식할 것이다. 소정 실시예들에서, 컴퓨팅 디바이스(1100)는 데이터 프로세싱 시스템(1102), 통신 네트워크(1104), 통신 네트워크 인터페이스(1106), 입력 디바이스(들)(1108), 출력 디바이스(들)(1110) 등을 포함한다.
도 11에 도시된 바와 같이, 데이터 프로세싱 시스템(1102)은 하나 이상의 프로세서(들)(1112) 및 저장 서브시스템(1114)을 포함할 수 있다. 프로세서(들)(1112)는 버스 서브시스템(1116)을 통해 다수의 주변 디바이스들과 통신한다. 이러한 주변 디바이스들은 입력 디바이스(들)(1108), 출력 디바이스(들)(1110), 통신 네트워크 인터페이스(1106), 및 저장 서브시스템(1114)을 포함할 수 있다. 저장 서브시스템(1114)은, 일 실시예에서, 하나 이상의 저장 디바이스 및/또는 하나 이상의 메모리 디바이스를 포함한다.
일 실시예에서, 저장 서브시스템(1114)은 휘발성 메모리(1118) 및 비휘발성 메모리(1120)를 포함한다. 휘발성 메모리(1118) 및/또는 비휘발성 메모리(1120)는, 프로세서(들)(1112)에 적용되고 그에 의해 실행될 때 본 명세서에 개시된 프로세스들의 실시예들을 구현하는 로직(1122)을 단독으로 또는 함께 형성하는 컴퓨터 실행가능 명령어들을 저장할 수 있다.
입력 디바이스(들)(1108)는 데이터 프로세싱 시스템(1102)에 정보를 입력하기 위한 디바이스들 및 메커니즘들을 포함한다. 이들은 키보드, 키패드, 그래픽 사용자 인터페이스에 통합된 터치 스크린, 음성 인식 시스템과 같은 오디오 입력 디바이스, 마이크로폰, 및 다른 유형의 입력 디바이스를 포함할 수 있다. 다양한 실시예들에서, 입력 디바이스(들)(1108)는 컴퓨터 마우스, 트랙볼, 트랙 패드, 조이스틱, 무선 리모트, 드로잉 태블릿, 음성 명령 시스템, 눈 추적 시스템 등으로서 구현될 수 있다. 입력 디바이스(들)(1108)는 전형적으로 사용자가 버튼의 클릭 등과 같은 커맨드를 통해 그래픽 사용자 인터페이스 상에 나타나는 객체, 아이콘, 제어 영역, 텍스트 등을 선택할 수 있게 한다.
출력 디바이스(들)(1110)는 데이터 프로세싱 시스템(1102)으로부터의 정보를 출력하기 위한 디바이스들 및 메커니즘들을 포함한다. 이들은 당업계에서 잘 이해되는 바와 같은, 그래픽 사용자 인터페이스, 스피커, 프린터, 적외선 LED 등을 포함할 수 있다. 소정 실시예들에서, 그래픽 사용자 인터페이스는 유선 접속에 의해 직접 버스 서브시스템(1116)에 결합된다. 다른 실시예들에서, 그래픽 사용자 인터페이스는 통신 네트워크 인터페이스(1106)에 의해 데이터 프로세싱 시스템(1102)에 결합된다. 예를 들어, 그래픽 사용자 인터페이스는 데스크톱, 서버, 또는 모바일 디바이스와 같은 별개의 컴퓨팅 디바이스(1100) 상의 커맨드 라인 인터페이스를 포함할 수 있다.
통신 네트워크 인터페이스(1106)는 통신 네트워크들(예컨대, 통신 네트워크(1104)) 및 데이터 프로세싱 시스템(1102) 외부의 디바이스들에 대한 인터페이스를 제공한다. 통신 네트워크 인터페이스(1106)는 다른 시스템들로부터 데이터를 수신하고 다른 시스템들로 데이터를 송신하기 위한 인터페이스로서 기능할 수 있다. 통신 네트워크 인터페이스(1106)의 실시예들은 이더넷 인터페이스, 모뎀(전화기, 위성, 케이블, ISDN), (비동기) 디지털 가입자 회선(DSL), 파이어와이어, USB, 블루투스 또는 WiFi와 같은 무선 통신 인터페이스, 근거리 통신 무선 인터페이스, 셀룰러 인터페이스 등을 포함할 수 있다.
통신 네트워크 인터페이스(1106)는 안테나, 케이블 등을 통해 통신 네트워크(1104)에 결합될 수 있다. 일부 실시예들에서, 통신 네트워크 인터페이스(1106)는 데이터 프로세싱 시스템(1102)의 회로 보드 상에 물리적으로 통합될 수 있거나, 또는 일부 경우들에서 "소프트 모뎀" 등과 같은 소프트웨어 또는 펌웨어로 구현될 수 있다. "펌웨어"는 휘발성 메모리 매체 및/또는 비휘발성 메모리 매체 상에 저장된 프로세서-실행가능 명령어들로서 구현되는 로직을 지칭한다.
컴퓨팅 디바이스(1100)는 HTTP, TCP/IP, RTP/RTSP, IPX, UDP 등과 같은 프로토콜들을 사용하여 네트워크를 통한 통신을 가능하게 하는 로직을 포함할 수 있다.
휘발성 메모리(1118) 및 비휘발성 메모리(1120)는 본 명세서에 기술된 프로세스들의 다양한 실시예들을 구현하기 위한 컴퓨터 판독가능 데이터 및 명령어들을 저장하도록 구성된 유형적 매체의 예들이다. 다른 유형의 유형적 매체는 탈착가능한 메모리(예컨대, 플러그가능한 USB 메모리 디바이스, 모바일 디바이스 SIM 카드), CD-ROM, DVD와 같은 광학 저장 매체, 플래시 메모리와 같은 반도체 메모리, 비일시적 판독 전용 메모리(ROM), 배터리-지원(backed) 휘발성 메모리, 네트워킹된 저장 디바이스 등을 포함한다. 휘발성 메모리(1118) 및 비휘발성 메모리(1120)는 개시된 프로세스들 및 본 발명의 범주 내에 속하는 다른 실시예들의 기능을 제공하는 기본 프로그래밍 및 데이터 구성들을 저장하도록 구성될 수 있다.
해결책의 실시예들의 하나 이상의 부분들을 구현하는 로직(1122)은 휘발성 메모리(1118) 및/또는 비휘발성 메모리(1120)에 저장될 수 있다. 로직(1122)은 휘발성 메모리(1118) 및/또는 비휘발성 메모리(1120)로부터 판독되고, 프로세서(들)(1112)에 의해 실행될 수 있다. 휘발성 메모리(1118) 및 비휘발성 메모리(1120)는 또한 로직(1122)에 의해 사용되는 데이터를 저장하기 위한 저장소를 제공할 수 있다.
휘발성 메모리(1118) 및 비휘발성 메모리(1120)는 프로그램 실행 동안 명령어들 및 데이터를 저장하기 위한 메인 랜덤 액세스 메모리(RAM) 및 판독 전용 비일시적 명령어들이 저장되어 있는 판독 전용 메모리(ROM)를 비롯한 다수의 메모리들을 포함할 수 있다. 휘발성 메모리(1118) 및 비휘발성 메모리(1120)는 프로그램 및 데이터 파일들을 위한 영구 (비휘발성) 저장소를 제공하는 파일 저장 서브시스템을 포함할 수 있다. 휘발성 메모리(1118) 및 비휘발성 메모리(1120)는 탈착가능한 플래시 메모리와 같은 탈착가능한 저장 시스템들을 포함할 수 있다.
버스 서브시스템(1116)은 데이터 프로세싱 시스템(1102)의 다양한 컴포넌트들 및 서브시스템들이 의도된 대로 서로 통신할 수 있게 하기 위한 메커니즘을 제공한다. 비록 통신 네트워크 인터페이스(1106)가 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템(1116)의 일부 실시예들은 다수의 별개의 버스들을 이용할 수 있다.
컴퓨팅 디바이스(1100)가 스마트폰, 데스크톱 컴퓨터, 랩톱 컴퓨터, 랙-장착형 컴퓨터 시스템, 컴퓨터 서버, 또는 태블릿 컴퓨터 디바이스와 같은 디바이스일 수 있다는 것이 당업자에게 용이하게 명백할 것이다. 당업계에 일반적으로 알려진 바와 같이, 컴퓨팅 디바이스(1100)는 다수의 네트워킹된 컴퓨팅 디바이스들의 집합으로서 구현될 수 있다. 또한, 컴퓨팅 디바이스(1100)는 전형적으로 운영 체제 로직(도시되지 않음)을 포함할 것이며, 그의 유형들 및 성질은 당업계에 잘 알려져 있다.
본 명세서에 사용되는 용어들은 관련 기술에서의 그들의 통상적인 의미, 또는 문맥에서 그들의 사용에 의해 나타나는 의미에 부합되어야 하지만, 명백한 정의가 제공되는 경우, 그 의미는 조정된다.
본 개시내용에서, 상이한 개체들(이는 "유닛들", "회로들", 기타 컴포넌트들 등으로 다양하게 지칭될 수 있음)은 하나 이상의 태스크 또는 동작을 수행하도록 "구성된" 것으로 기술되거나 또는 청구될 수 있다. 이 표현-[하나 이상의 태스크를 수행]하도록 구성된 [개체]-은 본 명세서에서 구조(즉, 전자 회로와 같은 물리적인 것)를 지칭하는 데 사용된다. 더 구체적으로는, 이 표현은 이 구조가 동작 동안 하나 이상의 태스크를 수행하도록 배열되어 있음을 나타내도록 사용된다. 구조는 그 구조가 현재 동작되고 있지 않더라도 일부 태스크를 수행하도록 "구성된다"고 말할 수 있다. "복수의 프로세서 코어들에 크레딧을 분배하도록 구성된 크레딧 분배 회로"는, 예를 들어, 문제의 집적 회로가 현재 사용되고 있지 않더라도(예컨대, 전원이 연결되어 있지 않음) 동작 동안 이 기능을 수행하는 회로부를 갖는 집적 회로를 커버하도록 의도된다. 따라서, 일부 태스크를 수행하도록 "구성된" 것으로 기술되거나 또는 인용된 개체는 디바이스, 회로, 태스크를 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리와 같은 물리적인 것 등을 지칭한다. 이 문구는 본 명세서에서 무형의 어떤 것을 지칭하는 데 사용되지 않는다.
용어 "~하도록 구성된"은 "~하도록 구성 가능한"을 의미하도록 의도되지 않는다. 프로그래밍되지 않은 FPGA는, 예를 들어, 그것이 프로그래밍 이후에 일부 특정 기능을 수행"하도록 구성가능"할 수 있더라도, 그 기능을 수행"하도록 구성된" 것으로 간주되지 않을 것이다.
첨부된 청구항들에서 소정 구조가 하나 이상의 태스크를 수행"하도록 구성"된다고 언급하는 것은 명백하게 그 청구항 요소에 대해 35 U.S.C. § 112(f)를 적용하지 않도록 의도된다. 따라서, [기능을 수행]"하기 위한 수단" 구조를 다른 방식으로 포함하지 않는 본 출원의 청구범위들은 35 U.S.C §(112)(f) 하에서 해석되지 않아야 한다.
본 명세서에 사용되는 바와 같이, 용어 "~에 기초하여"는 결정에 영향을 미치는 하나 이상의 인자를 기술하는 데 사용된다. 이 용어는 추가적인 인자들이 결정에 영향을 미칠 수 있는 가능성을 배제하지 않는다. 즉, 결정은 명시된 인자들에만 기초할 수 있거나 또는 명시된 인자들뿐만 아니라 다른 명시되지 않은 인자들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려해보자. 이 문구는 B가 A를 결정하는 데 사용되는 또는 A의 결정에 영향을 미치는 인자인 것을 명시한다. 이 문구는 A의 결정이 또한 C와 같은 어떤 다른 인자에 기초할 수 있다는 것을 배제하지 않는다. 이 문구는 또한 A가 오로지 B에 기초하여 결정되는 실시예를 포함하도록 의도된다. 본 명세서에서 사용된 바와 같이, 문구 "~에 기초하여"는 문구 "~에 적어도 부분적으로 기초하여"와 동의어이다.
본 명세서에 사용된 바와 같이, 문구 "~에 응답하여"는 효과를 트리거하는 하나 이상의 인자를 기술한다. 이 문구는 추가적인 인자들이 효과에 영향을 미치거나 달리 효과를 트리거할 수 있는 가능성을 배제하지 않는다. 즉, 효과는 이러한 인자들에만 응답할 수 있거나, 또는 명시된 인자들뿐만 아니라 다른, 명시되지 않은 인자들에 응답할 수 있다. 문구 "B에 응답하여 A를 수행한다"를 고려해보자. 이 문구는 B가 A의 수행을 트리거하는 인자인 것을 명시한다. 이 문구는 A를 수행하는 것이 또한 C와 같은 어떤 다른 인자에 응답하여 이루어질 수 있다는 것을 배제하지 않는다. 이 문구는 또한 A가 오로지 B에 응답하여 수행되는 실시예를 포함하도록 의도된다.
본 명세서에 사용된 바와 같이, 용어 "제1", "제2" 등은 그것들이 선행하는 명사들에 대한 라벨들로서 사용되고, 달리 언급되지 않는 한 어떠한 유형의 순서화(예컨대, 공간적, 시간적, 논리적 등)를 암시하지 않는다. 예를 들어, 8개의 레지스터들을 갖는 레지스터 파일에서, 용어 "제1 레지스터" 및 "제2 레지스터"는, 예를 들어, 단지 논리적 레지스터들 0 및 1을 지칭하는 것이 아니라 8개의 레지스터들 중 임의의 2개를 지칭하는 데 사용될 수 있다.
청구범위에 사용될 때, 용어 "또는" 은 포괄적인 '또는'으로서 사용되고 배타적인 '또는'으로서 사용되지 않는다. 예를 들어, 문구 "x, y 또는 z 중 적어도 하나"는 x, y 및 z 중 어느 하나뿐만 아니라 이들의 임의의 조합을 의미한다.
Claims (20)
- 방법으로서,
복수의 메모리 다이들 중 2개 이상의 메모리 다이들에 걸쳐 있도록 구성된 메타블록들로 조직화된 상기 복수의 메모리 다이들을 포함하는 비휘발성 메모리 어레이에 대한 기입 커맨드들의 세트를 수신하는 단계;
상기 기입 커맨드들의 세트에 대한 워크로드 유형을 결정하는 단계;
상기 워크로드 유형에 기초하여 상기 기입 커맨드들의 세트를 수신하기 위한 타깃 저장 블록을 결정하는 단계;
상기 워크로드 유형에 대한 데이터 블록들을 수신하도록 상기 타깃 저장 블록을 구성하는 단계 - 상기 워크로드 유형을 결정하는 단계에 기초하여, 상기 구성하는 단계는, 상기 타깃 저장 블록을 풀-블록(full-block) 모드에서 서브-블록(sub-block) 모드로 또는 서브-블록 모드에서 풀-블록 모드로 변화시키는 단계를 포함함 -; 및
상기 기입 커맨드들의 세트를 상기 타깃 저장 블록으로 보내는(direct) 단계 - 상기 타깃 저장 블록은 2개 이상의 서브-블록들을 포함하는 물리적 블록이고, 상기 2개 이상의 서브-블록들은 조인트(joint)에 의해 물리적으로 조인(join)되고, 상기 타깃 저장 블록은 상기 서브-블록들이 함께 동작하는 상기 풀-블록 모드와 상기 서브-블록들이 독립적으로 동작하는 상기 서브-블록 모드에서 동작하도록 구성됨 -
를 포함하는, 방법. - 제1항에 있어서, 상기 워크로드 유형은 순차적 워크로드 유형을 포함하고, 상기 타깃 저장 블록을 결정하는 단계는,
상기 타깃 저장 블록으로서 사용하기 위해 프리 메타블록 풀(free metablock pool)로부터 메타블록을 선택하는 단계를 추가로 포함하며,
상기 타깃 저장 블록을 구성하는 단계는,
상기 타깃 저장 블록의 상기 2개 이상의 메모리 다이들에 대한 구성 설정들을 풀-블록(full-block) 모드 구성 설정들로 설정하는 단계;
상기 풀-블록 모드에서 상기 타깃 저장 블록을 소거하는 단계; 및
상기 타깃 저장 블록을 풀 저장 블록(full storage block)으로서 등록하는 단계를 포함하는, 방법. - 제2항에 있어서, 상기 구성 설정들을 풀-블록 모드 구성 설정들로 설정하는 단계는 상기 타깃 저장 블록의 상기 2개 이상의 메모리 다이들에 대한 구성 설정들을 서브-블록(sub-block) 모드 구성 설정들로부터 상기 풀-블록 모드 구성 설정들로 변화시키는 단계를 포함하는, 방법.
- 제2항에 있어서, 상기 타깃 저장 블록을 풀 저장 블록으로서 등록하는 단계는,
상기 타깃 저장 블록을 풀 저장 블록으로서 식별하도록 메타블록 추적 테이블을 업데이트하는 단계; 및
상기 기입 커맨드들의 세트에 대한 데이터를 수신한 후에 상기 타깃 저장 블록이 소거될 때까지 상기 타깃 저장 블록을 풀 저장 블록으로서 관리하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 워크로드 유형은 순차적 워크로드 유형을 포함하고, 상기 타깃 저장 블록을 결정하는 단계는,
상기 메타블록들의 프리 메타블록 풀이, 상기 2개 이상의 메모리 다이들 각각에서 공통 물리적 소거 블록을 공유하는 한 쌍의 서브-블록들을 포함하는 어떠한 프리 메타블록들도 포함하지 않는다고 결정하는 단계;
상기 타깃 저장 블록으로서 프리 메타블록 풀로부터 메타블록을 선택하는 단계를 추가로 포함하며,
상기 타깃 저장 블록을 구성하는 단계는,
상기 타깃 저장 블록의 상기 2개 이상의 메모리 다이들에 대한 구성 설정들을 서브-블록 모드 구성 설정들로서 유지하는 단계;
상기 서브-블록 모드에서 상기 타깃 저장 블록을 소거하는 단계; 및
상기 서브-블록 모드에서 사용하기 위해 상기 타깃 저장 블록을 등록하는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 워크로드 유형은 랜덤 워크로드 유형을 포함하고, 상기 타깃 저장 블록을 구성하는 단계는,
상기 타깃 저장 블록의 상기 2개 이상의 메모리 다이들에 대한 구성 설정들을 풀-블록 모드 구성 설정들로부터 서브-블록 모드 구성 설정들로 변화시키는 단계를 포함하는, 방법. - 제1항에 있어서, 상기 타깃 저장 블록을 결정하는 단계는, 열린 메타블록(open metablock)들의 세트로부터 열린 메타블록을 선택하는 단계 및 상기 선택된 열린 메타블록을 상기 타깃 저장 블록으로서 지정하는 단계를 추가로 포함하며, 상기 워크로드 유형은 순차적 워크로드 유형을 포함하고, 상기 선택된 열린 메타블록은 상기 풀-블록 모드에서 동작하도록 구성되는, 방법.
- 제1항에 있어서, 상기 타깃 저장 블록을 결정하는 단계는, 열린 메타블록들의 세트로부터 열린 메타블록을 선택하는 단계 및 상기 선택된 열린 메타블록을 상기 타깃 저장 블록으로서 지정하는 단계를 추가로 포함하며, 상기 워크로드 유형은 랜덤 워크로드 유형을 포함하고, 상기 선택된 열린 메타블록은 상기 서브-블록 모드에서 동작하도록 구성되는, 방법.
- 제1항에 있어서, 상기 기입 커맨드들의 세트와 연관된 향후 기입 커맨드들이 상기 타깃 저장 블록에 저장되도록, 상기 타깃 저장 블록을 상기 기입 커맨드들의 세트와 연관시키는 단계를 포함하는, 방법.
- 제1항에 있어서, 상기 기입 커맨드들의 세트에 대한 상기 워크로드 유형을 결정하는 단계는,
상기 기입 커맨드들의 세트를 포함하는 복수의 기입 커맨드들을 모니터링하는 단계 - 상기 복수의 기입 커맨드들은 순차적으로 수신됨 -;
상기 복수의 기입 커맨드들의 논리적 블록 어드레스들을 상기 기입 커맨드들의 세트에 대한 논리적 블록 어드레스들과 비교하는 단계; 및
상기 기입 커맨드들의 세트에 대한 상기 비교된 논리적 블록 어드레스들이 상기 복수의 기입 커맨드들의 상기 논리적 블록 어드레스들에 대해 순차적 순서인 것에 기초하여 상기 워크로드 유형이 순차적 워크로드 유형이라고 결정하는 단계를 포함하는, 방법. - 장치로서,
기입 커맨드들을 모니터링하고 상기 모니터링된 기입 커맨드들의 기입 커맨드들의 세트가 순차적 워크로드 유형에 상관된다고 결정하도록 구성된 스트림 관리자 회로;
프리 메타블록 - 상기 프리 메타블록은 한 쌍의 물리적 시스터 서브-블록(sister sub-block)들을 포함하는 물리적 블록이며, 상기 프리 메타블록은 상기 한 쌍의 물리적 시스터 서브-블록들이 함께 동작하는 풀-블록(full-block) 모드와 상기 한 쌍의 물리적 시스터 서브-블록들이 독립적으로 동작하는 서브-블록(sub-block) 모드에서 동작하도록 구성됨 -;
상기 기입 커맨드들의 세트에 대한 데이터를 수신하기 위해 상기 프리 메타블록을 지정하도록 구성되고, 상기 풀-블록 모드에서 상기 프리 메타블록을 소거하도록 구성된 메타블록 관리 회로;
상기 결정에 기초하여, 상기 프리 메타블록을 상기 풀-블록 모드에서 상기 서브-블록 모드로 또는 상기 서브-블록 모드에서 상기 풀-블록 모드로 변화시키도록 구성되는 블록 할당 관리자;
상기 프리 메타블록의 일부분을 포함하는 복수의 메모리 다이들에 풀-블록 모드 커맨드를 전송하도록 구성된 모드 회로 - 상기 메모리 다이들은 인터페이스 버스에 병렬로 결합됨 -;
상기 프리 메타블록을 상기 복수의 메모리 다이들의 각각의 메모리 다이 상의 상기 한 쌍의 물리적 시스터 서브-블록들과 연관시키도록 구성된 추적 회로; 및
상기 기입 커맨드들의 세트가 상기 순차적 워크로드 유형에 상관되는 것에 응답하여 상기 풀-블록 모드에서 상기 프리 메타블록에 데이터를 기입하도록 구성된 판독/기입 회로를 포함하는, 장치. - 제11항에 있어서, 상기 복수의 메모리 다이들은 서브-블록 모드 구성 설정들 및 풀-블록 모드 구성 설정들을 다이 제어기의 휘발성 메모리에 저장하도록 구성되고, 풀-블록 모드 커맨드는 상기 복수의 메모리 다이들의 각각의 메모리 다이의 다이 제어기로 하여금 상기 서브-블록 모드 구성 설정들을 상기 풀-블록 모드 구성 설정들로 교환하게 하도록 구성되는, 장치.
- 제11항에 있어서, 상기 스트림 관리자 회로는,
랜덤 워크로드 유형에 상관되는 상기 모니터링된 기입 커맨드들 중 기입 커맨드들의 제2 세트를 결정하도록 추가로 구성되며,
상기 메타블록 관리 회로는 상기 기입 커맨드들의 제2 세트에 대한 데이터를 수신하기 위해 제2 프리 메타블록을 지정하도록 구성되고, 상기 서브-블록 모드에서 상기 제2 프리 메타블록을 소거하도록 구성되며, 상기 복수의 메모리 다이들은 상기 제2 프리 메타블록 및 상기 프리 메타블록을 포함하고;
상기 모드 회로는 상기 복수의 메모리 다이들에 서브-블록 모드 커맨드를 전송하도록 구성되고, 상기 서브-블록 모드 커맨드는 상기 복수의 메모리 다이들의 구성 설정들을 풀-블록 모드 구성 설정들로부터 서브-블록 모드 구성 설정들로 변화시키도록 구성되고;
상기 추적 회로는 상기 제2 프리 메타블록을, 상기 제2 프리 메타블록의 일부분을 포함하도록 구성된 상기 복수의 메모리 다이들 각각 상의 한 쌍의 시스터 서브-블록들 중 하나와 연관시키도록 구성되고;
상기 판독/기입 회로는 상기 기입 커맨드들의 제2 세트가 상기 랜덤 워크로드 유형에 상관되는 것에 응답하여 상기 서브-블록 모드에서 상기 제2 프리 메타블록에 데이터를 기입하도록 구성되는, 장치. - 제11항에 있어서, 상기 모드 회로는, 오직 상기 모니터링된 기입 커맨드들 중 기입 커맨드들의 후속 세트들에 대한 워크로드 유형의 변화에 응답하여, 풀-블록 모드 커맨드 및 서브-블록 모드 커맨드 중 하나를 발행하도록 구성되는, 장치.
- 제11항에 있어서, 상기 풀-블록 모드 커맨드는 상기 복수의 메모리 다이들의 구성 설정들을 서브-블록 모드 구성 설정들로부터 풀-블록 모드 구성 설정들로 변화시키도록 구성되는, 장치.
- 시스템으로서,
적어도 하나의 로우 및 2개 이상의 컬럼들로 조직화된 복수의 메모리 다이들을 포함하는 비휘발성 메모리 어레이;
상기 비휘발성 메모리 어레이의 로우의 각각의 메모리 다이로부터의 물리적 소거 블록을 포함하는 논리적 소거 블록들의 세트 - 각각의 물리적 소거 블록은 2개의 물리적 시스터 서브-블록(sister sub-block)들을 포함하는 논리적 소거 블록을 형성하고, 상기 2개의 물리적 시스터 서브-블록들은 조인트(joint)에 의해 물리적으로 조인(join)되고, 타깃 저장 블록은 상기 2개의 물리적 시스터 서브-블록들이 함께 동작하는 풀-블록(full-block) 모드와 상기 2개의 물리적 시스터 서브-블록들이 독립적으로 동작하는 서브-블록(sub-block) 모드에서 동작하도록 구성됨 -;
기입 커맨드들을 수신하고 상기 서브-블록 모드에서 상기 기입 커맨드들의 데이터를 상기 논리적 소거 블록들의 세트 중 하나 내에 기입하도록 구성된 기입 데이터 파이프라인 - 상기 기입 커맨드들 각각은 논리적 블록 어드레스를 포함함 -;
스트림 관리자 - 상기 스트림 관리자는,
상기 기입 커맨드들을 모니터링하여 워크로드 유형을 결정하고 - 상기 기입 커맨드들은 순차적으로 수신됨 -;
상기 기입 커맨드들의 논리적 블록 어드레스들을 이전 기입 커맨드들의 논리적 블록 어드레스들과 비교하고;
상기 비교된 기입 커맨드들의 논리적 블록 어드레스들에 기초하여 상기 워크로드 유형이 순차적 워크로드 유형이라고 결정하도록 구성됨 -;
블록 할당 관리자 - 상기 블록 할당 관리자는,
상기 풀-블록 모드에서 저장 동작들을 위해 상기 논리적 소거 블록들의 세트의 논리적 소거 블록을 재구성하고 - 상기 결정하는 것에 기초하여, 상기 재구성하는 것은, 상기 논리적 소거 블록을 상기 서브-블록 모드에서 상기 풀-블록 모드로 또는 상기 풀-블록 모드에서 상기 서브-블록 모드로 변화시키는 것을 포함함 -;
순차적 워크로드 유형을 갖는 기입 커맨드들을 상기 재구성된 논리적 소거 블록으로 보내고;
상기 풀-블록 모드에서 상기 재구성된 논리적 소거 블록에 데이터를 기입할 것을 상기 기입 데이터 파이프라인에 지시하도록 구성됨 - ; 및
상기 풀-블록 모드에서 상기 재구성된 논리적 소거 블록을 관리하도록 구성된 열린 블록 관리자를 포함하는, 시스템. - 제16항에 있어서, 상기 블록 할당 관리자는, 메타블록 추적 테이블을 참조하여 상기 논리적 소거 블록들의 세트 중 이용가능한 논리적 소거 블록을 결정하여, 상기 이용가능한 논리적 소거 블록이 2개의 시스터 서브-블록들을 각각 포함하는 물리적 소거 블록을 포함하는 것에 응답하여 순차적 워크로드 유형을 갖는 기입 커맨드들에 대해 상기 이용가능한 논리적 소거 블록을 지정하도록 구성되는, 시스템.
- 제16항에 있어서, 상기 서브-블록 모드에서 데이터를 저장하도록 구성된 각각의 논리적 소거 블록은 제1 시스터 서브-블록 및 제2 시스터 서브-블록을 포함하고, 상기 시스템은, 가비지 수집(garbage collection) 동작 동안 상기 제1 시스터 서브-블록으로부터 유효 데이터를 통합하고(consolidate) 상기 제2 시스터 서브-블록의 데이터를 유지하도록 구성된 가비지 수집기를 추가로 포함하는, 시스템.
- 제16항에 있어서, 상기 블록 할당 관리자는 상기 논리적 소거 블록을 포함하는 상기 복수의 메모리 다이들에 풀-블록 모드 커맨드를 전송함으로써 상기 논리적 소거 블록을 재구성하도록 구성되는, 시스템.
- 제16항에 있어서, 상기 블록 할당 관리자는 순차적 워크로드 유형을 갖는 기입 커맨드들을 상기 재구성된 논리적 소거 블록으로 보내고, 랜덤 워크로드 유형을 갖는 기입 커맨드들이 상기 스트림 관리자에 의해 결정될 때까지 상기 풀-블록 모드에서 상기 논리적 소거 블록에 데이터를 기입할 것을 상기 기입 데이터 파이프라인에 지시하도록 구성되는, 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/828,532 US11287989B2 (en) | 2020-03-24 | 2020-03-24 | Dynamic allocation of sub blocks |
US16/828,532 | 2020-03-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210119252A KR20210119252A (ko) | 2021-10-05 |
KR102502322B1 true KR102502322B1 (ko) | 2023-02-21 |
Family
ID=77552880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200072535A KR102502322B1 (ko) | 2020-03-24 | 2020-06-15 | 서브 블록들의 동적 할당 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11287989B2 (ko) |
KR (1) | KR102502322B1 (ko) |
CN (1) | CN113448497B (ko) |
DE (1) | DE102020116362B3 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12039195B2 (en) * | 2021-03-30 | 2024-07-16 | EMC IP Holding Company LLC | Provisioning zoned storage devices to sequential workloads |
US11211094B1 (en) * | 2021-05-11 | 2021-12-28 | Western Digital Technologies, Inc. | Data storage device duplicating an ECC sub-block in downstream ECC super-block |
EP4180970A1 (en) * | 2021-11-15 | 2023-05-17 | Samsung Electronics Co., Ltd. | Storage device operating in zone unit and data processing system including the same |
US12061819B2 (en) * | 2021-12-06 | 2024-08-13 | Micron Technology, Inc. | Managing single-level and multi-level programming operations |
US11733878B1 (en) | 2022-03-29 | 2023-08-22 | Western Digital Technologies, Inc. | Data error correction for magnetic disks |
US12099734B2 (en) * | 2022-06-22 | 2024-09-24 | Micron Technology, Inc. | Memory block utilization in memory systems |
US11990185B2 (en) | 2022-08-15 | 2024-05-21 | Sandisk Technologies Llc | Dynamic word line reconfiguration for NAND structure |
US20240295981A1 (en) * | 2023-03-03 | 2024-09-05 | Western Digital Technologies, Inc. | Data Storage Device and Method for Host-Assisted Efficient Handling of Multiple Versions of Data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
US20110093680A1 (en) * | 2009-10-15 | 2011-04-21 | Freescale Semiconductor, Inc. | Flexible memory controller for autonomous mapping of memory |
US20170139839A1 (en) * | 2015-11-18 | 2017-05-18 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
WO2019089838A1 (en) | 2017-10-31 | 2019-05-09 | Pure Storage, Inc. | Overlapping raid groups |
US20190348129A1 (en) | 2018-05-08 | 2019-11-14 | Sandisk Technologies Llc | Non-volatile memory with bit line controlled multi-plane mixed sub-block programming |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7818493B2 (en) * | 2007-09-07 | 2010-10-19 | Sandisk Corporation | Adaptive block list management |
KR101662827B1 (ko) | 2010-07-02 | 2016-10-06 | 삼성전자주식회사 | 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
KR101734200B1 (ko) | 2010-12-03 | 2017-05-11 | 삼성전자주식회사 | 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
KR101997572B1 (ko) | 2012-06-01 | 2019-07-09 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법 |
US9053808B2 (en) | 2012-06-21 | 2015-06-09 | Sandisk Technologies Inc. | Flash memory with targeted read scrub algorithm |
US9466382B2 (en) * | 2012-11-14 | 2016-10-11 | Sandisk Technologies Llc | Compensation for sub-block erase |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US20140297921A1 (en) | 2013-03-26 | 2014-10-02 | Skymedi Corporation | Method of Partitioning Physical Block and Memory System Thereof |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9312026B2 (en) | 2014-08-22 | 2016-04-12 | Sandisk Technologies Inc. | Zoned erase verify in three dimensional nonvolatile memory |
US9582201B2 (en) * | 2014-09-26 | 2017-02-28 | Western Digital Technologies, Inc. | Multi-tier scheme for logical storage management |
US9870153B2 (en) * | 2014-12-29 | 2018-01-16 | Sandisk Technologies Llc | Non-volatile memory systems utilizing storage address tables |
KR102301772B1 (ko) | 2015-03-09 | 2021-09-16 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법 |
US10002073B2 (en) | 2015-11-06 | 2018-06-19 | SK Hynix Inc. | Selective data recycling in non-volatile memory |
US10157680B2 (en) | 2015-12-22 | 2018-12-18 | Sandisk Technologies Llp | Sub-block mode for non-volatile memory |
US10268387B2 (en) * | 2017-01-04 | 2019-04-23 | Sandisk Technologies Llc | Meta-groups in non-volatile storage based on performance times |
US10101942B1 (en) * | 2017-04-17 | 2018-10-16 | Sandisk Technologies Llc | System and method for hybrid push-pull data management in a non-volatile memory |
CN107273303B (zh) | 2017-05-23 | 2020-06-26 | 建荣半导体(深圳)有限公司 | 一种闪存数据管理系统、方法、闪存芯片及存储装置 |
US10649661B2 (en) * | 2017-06-26 | 2020-05-12 | Western Digital Technologies, Inc. | Dynamically resizing logical storage blocks |
JP7074453B2 (ja) * | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US11024390B1 (en) * | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
KR20190083148A (ko) * | 2018-01-03 | 2019-07-11 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 |
KR102549545B1 (ko) * | 2018-03-22 | 2023-06-29 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102603916B1 (ko) * | 2018-04-25 | 2023-11-21 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치 |
KR102691851B1 (ko) * | 2018-08-29 | 2024-08-06 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 |
JP2021033847A (ja) * | 2019-08-28 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2020
- 2020-03-24 US US16/828,532 patent/US11287989B2/en active Active
- 2020-06-15 KR KR1020200072535A patent/KR102502322B1/ko active IP Right Grant
- 2020-06-18 CN CN202010557457.8A patent/CN113448497B/zh active Active
- 2020-06-22 DE DE102020116362.2A patent/DE102020116362B3/de active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
US20110093680A1 (en) * | 2009-10-15 | 2011-04-21 | Freescale Semiconductor, Inc. | Flexible memory controller for autonomous mapping of memory |
US20170139839A1 (en) * | 2015-11-18 | 2017-05-18 | Silicon Motion, Inc. | Data storage device and data maintenance method thereof |
WO2019089838A1 (en) | 2017-10-31 | 2019-05-09 | Pure Storage, Inc. | Overlapping raid groups |
US20190348129A1 (en) | 2018-05-08 | 2019-11-14 | Sandisk Technologies Llc | Non-volatile memory with bit line controlled multi-plane mixed sub-block programming |
Also Published As
Publication number | Publication date |
---|---|
KR20210119252A (ko) | 2021-10-05 |
DE102020116362B3 (de) | 2021-09-23 |
CN113448497B (zh) | 2024-08-16 |
CN113448497A (zh) | 2021-09-28 |
US11287989B2 (en) | 2022-03-29 |
US20210303185A1 (en) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102502322B1 (ko) | 서브 블록들의 동적 할당 | |
US20210182166A1 (en) | Zoned namespace management of non-volatile storage devices | |
US11385984B2 (en) | Variable read scan for solid-state storage device quality of service | |
CN110447009B (zh) | 用于自适应命令获取聚合的系统和方法 | |
US9442670B2 (en) | Method and system for rebalancing data stored in flash memory devices | |
US10877900B1 (en) | Enabling faster and regulated device initialization times | |
US10998041B1 (en) | Calibrating non-volatile memory read thresholds | |
US10795827B2 (en) | Adaptive management of intermediate storage | |
US11210031B1 (en) | Thermal region tags and thermal region outlier detection | |
US11231883B1 (en) | Detecting last page written in multi-plane non-volatile memory | |
US10776268B2 (en) | Priority addresses for storage cache management | |
US20190278500A1 (en) | Error characterization for control of non-volatile memory | |
US11138071B1 (en) | On-chip parity buffer management for storage block combining in non-volatile memory | |
US11436083B2 (en) | Data address management in non-volatile memory | |
US11513950B2 (en) | Wear leveling in non-volatile memory | |
US11527300B2 (en) | Level dependent error correction code protection in multi-level non-volatile memory | |
US20240045597A1 (en) | Storage device and operation method thereof | |
CN108255416B (zh) | 具有驱动器内数据分析的非易失性存储系统 | |
CN116917854A (zh) | 跨多个协议管理持久性存储器区域 | |
WO2021041004A1 (en) | Managing attributes of memory components | |
US11080059B1 (en) | Reducing firmware size and increasing firmware performance | |
KR20230114671A (ko) | 공간 증명 블록체인 시스템들에서의 저장 디바이스 스로틀링 |
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 |