KR101854020B1 - 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 - Google Patents
비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 Download PDFInfo
- Publication number
- KR101854020B1 KR101854020B1 KR1020157017154A KR20157017154A KR101854020B1 KR 101854020 B1 KR101854020 B1 KR 101854020B1 KR 1020157017154 A KR1020157017154 A KR 1020157017154A KR 20157017154 A KR20157017154 A KR 20157017154A KR 101854020 B1 KR101854020 B1 KR 101854020B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- die
- delete delete
- layer
- memory
- 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/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
- 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
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7202—Allocation control and policies
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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)
- Read Only Memory (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
대량 저장 메모리 시스템 및 동작 방법이 개시된다. 메모리는 호스트 시스템으로부터 데이터를 수신하게 구성된 인터페이스, 복수의 플래시 메모리 다이, 및 제어기를 포함하고, 제어기는 제1 코맨드를 수신하고 제1 코맨드에 기초하여 복수의 다이에 걸쳐 동기식으로 데이터를 판독하거나 기입하고, 제2 코맨드를 수신하고 제2 코맨드에 기초하여 각 다이에서 비동기적으로 그리고 독립적으로 데이터를 판독 혹은 기입하게 구성된다. 제어기는 복수의 플래시 메모리 다이 개개에 대한 최대 프로그래밍 유닛에 데이터를 프로그램할 수 있다. 제어기는 복수의 제어기들일 수 있고 각각은 다이의 배타적 서브세트 중 어느 다이를 서브세트 내 다이의 특징에 기초하여 데이터를 기입할 것인지를 선택하게 구성된다. 복수의 다이는 층당 다수-층, 및 다수-파티션 플래시 메모리 다이일 수 있다.
Description
플래시 메모리와 같은 비휘발성 메모리 시스템은 소비자 제품에서 사용하기 위해 널리 채택되어졌다. 플래시 메모리는 서로 다른 형태들, 예를 들면 호스트 장치들 간에 옮겨질 수 있는 휴대형 메모리 카드 형태로, 혹은 호스트 장치 내 내장되는 고체상태 디스크(SSD)로서 발견될 수 있다. 플래시 메모리에서 발견되는 2개의 일반적인 메모리 셀 아키텍처는 NOR 및 NAND를 포함한다. 전형적인 NOR 아키텍처에서, 메모리 셀은 컬럼 방향으로 확장하는 인접 비트라인 소스와 드레인 확산부들 간에 연결되고 제어 게이트는 셀 행을 따라 확장하는 워드라인에 연결된다. 메모리 셀은 소스와 드레인 사이에 셀 채널 영역의 적어도 한 부분 상에 위치된 적어도 한 저장 요소를 포함한다. 이에 따라 저장 요소들 상에 프로그램되는 전하 레벨은 셀의 동작 특징을 제어하며, 이는 이어 어드레스된 메모리 셀에 적합한 전압을 인가함으로써 판독될 수 있다.
전형적인 NAND 아키텍처는 셀 컬럼을 형성하기 위해 비트라인과 기준 전위 간에 하나 이상의 선택 트랜지스터와 함께 연결된, 2 이상의 직렬-연결된 메모리 셀, 이를테면 16 혹은 32개의 스트링을 이용한다. 워드라인은 대다수의 이들 컬럼 내에 셀에 걸쳐 확장한다. 컬럼 내에 개개의 셀은 스트링을 통하는 전류가 어드레스된 셀에 저장된 전하 레벨에 따르도록 스트링 내 나머지 셀들을 턴 온 되게 함으로써 프로그램하는 동안 판독 및 검증된다.
플래시 메모리는 일반적으로, 셀당 데이터 비트 수가 셀당 1비트를 저장하는 단일 레벨 셀(SLC) 플래시라고도 알려진 2진 플래시와 같이 가장 적을 때 가장 큰 성능을 제공한다. 다중-레벨 셀(MLC) 플래시라고도 알려진, 셀당 1 이상의 비트를 저장하게 구성되는 플래시 메모리는 셀당 2 이상의 비트의 정보를 저장할 수 있다. SLC 플래시 메모리가 일반적으로 MLC 플래시보다 더 나은 판독 및 기입 성능(예를 들면, 속도 및 내구성)을 갖는 것으로 알려져 있지만, MLC 플래시는 더 많은 저장 용량을 제공하며 일반적으로 제작하기가 덜 비싸다. MLC 플래시의 내구성 및 성능은 주어진 MLC의 셀당 비트 수가 증가함에 따라 감소하는 경향이 있다. 이들 유형혀의 플래시 메모리 셀을 사용하여 플래시 메모리 장치의 설계에서 성능, 용량 및 비용의 요구되는 균형을 얻는데 있어 지속적인 해결과제가 있다.
위에 언급된 과제를 해결하고 SSD에서 저장 융통성을 제공하기 위해서 메모리 및 메모리 관리의 방법이 제공된다.
일 측면에 따라, 대량 저장 메모리 시스템은, 호스트 시스템으로부터 데이터를 수신하게 구성된 인터페이스; 복수의 플래시 메모리 다이; 및 인터페이스 및 복수의 플래시 메모리 다이와 통신하는 제어기를 포함한다. 제어기는 호스트 시스템으로부터 제1 요청을 수신한 것에 응하여, 복수의 플래시 메모리 다이에 데이터를 완전히 병렬로 판독 혹은 기입하게 구성된다. 제어기는 호스트 시스템로부터 제2 요청을 수신한 것에 응하여, 데이터를 복수의 플래시 메모리 다이 각각에서의 동시적 동작들에 독립적으로 그리고 비동기적으로 판독 혹은 기입하게 더욱 구성된다. 상이한 구현예들에서, 제어기는 복수의 플래시 메모리 다이 개개에 대한 최대 프로그래밍 유닛과 동일한 량으로 데이터를 관리하게 구성될 수 있다. 다른 구현예들에서, 제어기는 복수의 제어기들일 수 있고, 복수의 다이는 복수의 제어 채널들 각각에 그룹들로 연결되고, 복수의 제어기들 각각은 복수의 제어 채널들의 각각의 단일의 채널 상에 일 그룹의 복수의 다이하고만 통신한다.
시스템은 복수의 층들을 갖는 플래시 메모리 다이를 포함할 수 있고, 복수의 층들 각각은 셀당 상이한 비트 데이터 용량 및 복수의 메모리 블록들을 갖는다. 일 구현예에서, 복수의 플래시 메모리층들 각각은 복수의 파티션들을 포함하고, 층에 복수의 메모리 블록들의 각 프로그램된 블록은 플래시 메모리층에 복수의 파티션들 각각에 있는 것으로서 배타적으로 분류된다. 복수의 제어기들 각각이 복수의 서로 다른 제어 채널들 각각에 연관된 플래시 메모리 다이의 부분을 배타적으로 관리하는 대안적 구현예들에서, 제어기들은 수신된 데이터의 호스트 LBA 어드레스에 무관한 기준들에 기초하여 수시된 데이터를 기입할 자신의 각각의 제어 채널에 연결된 다이를 독립적으로 선택할 수 있다. 다이 선택 기준들은 다이가 가장 짧은 계류중의 데이터 기입 큐를 갖는 것일 수 있는 것으로, 다수의 층들 및 층당 다수의 파티션들을 갖는 다이에 대해서, 선택은 다이가 특정 층에 특정 파티션에 연관된 데이터의 유형에 대해 가장 짧은 큐를 갖는 것일 수 있다.
또 다른 측면에 따라, 플래시 메모리에서 배경 유지관리 절차들을 수행하는 방법이 개시된다. 방법은 대량 저장 메모리 시스템의 제어기가 대량 저장 메모리 시스템에 복수의 플래시 메모리 다이에 아이들 다이를 확인하는 것을 포함하고, 복수의 플래시 메모리 다이 각각은 복수의 층들을 포함하고, 특정 다이에 복수의 층들 각각은 셀당 상이한 비트 용량을 갖는다. 아이들 다이를 확인한 후에, 제어기는 아이들 다이에 복수의 층들에 층이 배경 유지관리 기준을 만족시키는지를 판정한다. 이어 방법은 층이 배경 유지관리 기준을 만족시키는 것으로 판정한 것에 응하여, 제어기에 관리되는 다른 플래시 메모리 다이에 임의의 다른 동작에 무관하고 비동기적으로 층에서 배경 유지관리 동작을 실행하는 것을 포함한다. 배경 유지관리 동작을 실행하는 것은 배경 유지관리 기준들을 충족시키는 층에 블록들 간에 유효 데이터를 재배치함으로써만 달성될 수 있다.
일 측면에서, 배경 유지관리 기준은 층 내 자유 블록들 내 미사용된 데이터 용량 대 층의 총 미사용된 데이터 용량의 비에 기초할 수 있고, 비가 층에 대한 임계 비 미만일 때만 층이 배경 유지관리 기준을 만족하는 것으로 판정한다. 각 유지관리 동작은 동일 층에 한 재배치 블록을 채우기 위해 층에 재활용 블록들로부터 충분한 데이터를 재배치하는 것만을 포함할 수 있다. 또한, 배경 유지관리 기준을 만족시키는 층의 확인은 배경 유지관리 기준을 만족시키는 층에 파티션을 선택하고, 이어 층의 파티션에 블록들 간에 데이터를 재배치함으로써만 유지관리 동작을 실행하는 것을 더 포함할 수 있다.
다른 구현예들에서, 방법은 개별적 유지관리 동작이 서로 무관하게 다수의 아이들 다이 배경 유지관리 사이클들에서 동시에 실행할 수 있게, 대량 저장 메모리 시스템의 제어기가 다수의 플래시 메모리 다이를 아이들로서 확인하고 확인된 아이들 다이 각각에서 적합한 층을 독립적으로 그리고 동시에 선택하는 것을 포함할 수 있다. 기술된 방법을 실행하게 구성된 대량 저장 메모리 시스템이 또한 개시된다.
또 다른 측면에서, 대량 저장 메모리 시스템은 호스트 시스템 및 복수의 제어 채널들로부터 데이터를 수신하게 구성된 인터페이스를 포함한다. 제1 그룹의 플래시 메모리 다이는 복수의 제어 채널들 중 제1 채널과 통신하고, 제2 그룹의 플래시 메모리 다이는 복수의 제어 채널들 중 제2 채널과 통신하고, 제2 그룹의 플래시 메모리 다이에 다이의 수는 제1 그룹에 다이의 수보다 크다. 복수의 제어 채널들 각각은 논리 블록 어드레스 범위의 고유 서브세트에 연관되며; 논리 블록 어드레스들의 고유 서브세트의 크기 대 제1 그룹의 플래미 메모리 다이에 대한 다이의 수의 비는 논리 블록 어드레스들의 고유 서브세트의 크기 대 제2 그룹의 플래시 메모리 다이에 대한 다이의 수의 비와 동일하다.
또 다른 측면에 따라서, 대량 저장 메모리 시스템은 복수의 플래시 메모리 다이 및 복수의 제어 채널들을 포함한다. 복수의 제어 채널들 각각은 복수의 플래시 메모리 다이의 각각의 고유 서브세트에 연결되고, 복수의 제어 채널들 각각은 복수의 플래시 메모리 제어기들 각각에 연관된다. 복수의 제어 채널들 중 적어도 하나는 복수의 제어 채널들 중 다른 것보다 더 많은 수의 복수의 플래시 메모리 다이에 연관된다. 복수의 플래시 메모리 다이는 대량 저장 메모리 시스템에 대한 총 물리적 저장 용량을 정의하며, 대량 저장 메모리 시스템에 총 논리 저장 용량은 총 물리적 저장 용량 미만이다. 논리 블록 어드레스 스플리터는 호스트 시스템로부터 수신된 데이터를 수신된 데이터의 호스트 논리 어드레스에 기초하여 복수의 제어기들 각각에 보내게 구성된다. 또한, 논리 블록 어드레스 스플리터는 복수의 제어 채널들 각각에서 논리 용량 대 물리 저장 용량의 비가 동일하게 되게 데이터를 보내게 구성된다.
또 다른 측면에서, 대량 저장 메모리 시스템를 관리하는 방법이 개시된다. 대량 저장 메모리 시스템은 프로세서, 및 총 논리 용량보다 큰 총 물리적 저장 용량을 갖는 복수의 플래시 메모리 다이를 가질 수 있다. 플래시 메모리 다이의 제1 부분은 제1 제어 라인 및 제1 제어기에 배타적으로 연관되고, 플래시 메모리 다이의 제2 부분은 제2 제어 라인 및 제2 제어기에 배타적으로 연관된다. 제1 부분에 플래시 메모리 다이의 수는 제2 부분에 플래시 메모리 다이의 수의 것보다 크다. 프로세서는 호스트 시스템으로부터 호스트 논리 블록 어드레스들에 연관된 데이터를 수신하고, 일 범위의 호스트 논리 블록 어드레스들의 제1 서브세트에 연관된 수신된 데이터를 플래시 메모리 다이의 제1 부분에만 보내고 일 범위의 호스트 논리 블록 어드레스들의 제2 서브세트에 연관된 수신된 데이터를 플래시 메모리 다이의 제2 부분에만 보낸다. 프로세서는 플래시 메모리 다이의 제2 부분에서 제2 총 물리적 저장 용량 대 제2 총 논리 용량의 비와 동일한, 플래시 메모리 다이의 제1 부분에서 제1 총 물리적 저장 용량 대 제1 총 논리 용량의 비를 유지관리한다.
또 다른 측면에 따라서, 호스트 시스템으로부터 데이터를 수신하게 구성된 인터페이스를 가진 대량 저장 메모리 시스템이 개시된다. 시스템은 복수의 층들을 가진 플래시 메모리를 포함하고, 복수의 층들 각각은 셀당 상이한 비트 데이터 용량 및 복수의 메모리 블록들을 갖는다. 복수의 층들 각각은 복수의 파티션들을 포함하고, 층 내 복수의 메모리 블록들의 각각의 프로그램된 블록은 플래시 메모리층 내 복수의 파티션들 각각에 있는 것으로서 배타적으로 분류된다. 시스템은 또한 인터페이스, 및 호스트 시스템으로부터 수신된 데이터를 플래시 메모리의 복수의 층들 내 복수의 파티션들 중 하나에 보내게 구성된 플래시 메모리와 통신하는 제어기를 포함한다. 시스템은 층 및 파티션 구조를 가진 다수의 메모리 다이를 포함할 수 있고, 또한 개별적 하드웨어 및 소프트웨어 제어기들이든 아니면 동일 혹은 공유된 하드웨어 상에 개별적 소프트웨어 스레드들이든 간에, 각각이 메모리 시스템에 개별 세트의 다수-층 다이를 개별적으로 관리하는 다수 제어기 인스턴스들을 포함할 수 있다.
대안적 구현예들에서, 대량 저장 메모리 시스템의 제어기는 호스트 시스템 으로부터 수신된 데이터의 속성을 판정하고 판정된 속성에 기초하여 복수의 플래시 메모리층들 중 하나에 복수의 파티션들 중 하나에 블록에 보내게 구성된다. 속성을 판정하기보다는, 제어기는 수신된 데이터에 관한 속성을 호스트 시스템으로부터 수신하고 수신된 데이터를 수신된 속성에 기초하여 복수의 파티션들 중 하나에 블록에 보낸다.
도 1은 발명의 측면들을 구현할 수 있는 시스템의 블록도이다.
도 2는 도 1의 저장 장치의 예시적인 물리적 메모리 구성을 도시한 것이다.
도 3은 도 2의 물리적 메모리의 부분의 확대도이다.
도 4a는 일 실시예에 따라 도 1의 저장 장치의 다수-층 메모리 구성을 도시한 것이다.
도 4b는 도 4a의 다수-층 메모리의 대안적 물리적 배열을 도시한 것이다.
도 5는 다수-층 메모리를 동작시키기 위한 방법을 도시한 흐름도이다.
도 6은 도 1의 시스템에서 이용될 수 있는 LBA 어드레스 공간 및 연관된 DLBA 어드레스 공간의 예이다.
도 7은 호스트로부터 수신된 데이터에 대한 LBA 대 DLBA 매핑의 예를 도시한 것이다.
도 8은 DLBA 어드레스 공간 내 데이터 재배치 동작 및 물리적 어드레스 공간 내 대응하는 업데이트 블록을 도시한 것이다.
도 9는 도 8의 데이터 재배치 동작 다음에 제2 데이터 재배치 동작을 도시한 것이다.
도 10은 각 층이 다수의 파티션을 포함하는 다수-층 메모리 구성을 가진 저장 장치의 실시예를 도시한 것이다.
도 11은 다수의 파티션을 가진 다수-층 메모리의 층에서 데이터 흐름 패턴을 도시한 것이다.
도 12는 두 파티션을 가진 3층 메모리의 데이터 경로를 도시한 것이다.
도 13은 두 파티션을 가진 2층 메모리에 대한 데이터 흐름을 도시한 것이다.
도 14는 도 13의 2층, 2 파티션 메모리의 대안적 실시예에 대한 데이터 흐름 경로를 도시한 것이다.
도 15는 8개의 서로 다른 채널들 각각 상에 동일 수의 다이를 가진 NAND 다이 어레이를 도시한 것이다.
도 16은 8 제어기 인스턴스들 각각이 개별적 채널들 상에 4 다이를 관리하는 도 15의 NAND 다이 어레이를 관리하기 위한 동기식 다이 관리 배열을 도시한 것이다.
도 17은 메모리 어레이 및 다수 제어기 인스턴스들을 가진 도 4a의 다수-층 메모리 시스템의 대안적 배열을 도시한 것이다.
도 17a는 메모리 어레이 및 단일 제어기를 가진 도 4a의 다수-층 메모리 시스템의 대안적 배열을 도시한 것이다.
도 18은 도 17의 다수-층 메모리 시스템의 STAR 제어기들에 의해 구현되는 비동기 다이 관리 수법을 도시한 것이다.
도 19는 4개의 상이한 채널들 각각 상에 서로 같지 않은 수의 다이를 가진 NAND 다이 어레이를 도시한 것이다.
도 20은 채널당 서로 같지 않은 다이 분포를 갖는 NAND 다이의 어레이를 관리하기 위한 LBA 그룹화의 실시예를 도시한 것이다.
도 21은 도 19의 서로 같지 않은 다이 배열에서 과잉 용량의 균등한 분포를 제공하기 위해 LBA 그룹들을 할당하는 일 실시예의 표를 도시한 것이다.
도 22는 도 20-도 21의 LBA 할당을 구현하기 위한 LBA 스플리터의 블록도이다.
도 23은 다수-층 다이에서 동시적 랜덤 및 순차적 프로그램 사이클들의 가능한 조합을 도시한 것이다.
도 24는 층들 간에 데이터를 이동시키기거나 다수-층 메모리 다이의 층들 내에 데이터를 재배치하기 위한 판단 프로세스를 도시한 프로그램 사이클 차트의 실시예이다.
도 25는 한 프로그램 사이클 동안 다수-층 메모리 다이의 각 층에서 호스트 기입 및 유지관리 동작들 간에 인터리빙의 예를 도시한 것이다.
도 26은 도 25의 예에 호스트 데이터 기입 및 유지관리 기입의 대안적 인터리빙 패턴이다.
도 27은 다이에서 중첩하는 프로그램 사이클들의 예이다.
도 28은 다수-층 메모리에서 제어기의 예시적 메시지 흐름도이다.
도 29는 블록 재활용 사이클의 흐름도이다.
도 30은 도 29의 방법에 따른 예시적 재활용 사이클의 블록도이다.
도 31은 다수-층 메모리의 다이 층에서 예시적 데이터 용량 분포를 도시한 것이다.
도 32는 다이 층에서 지속된 배경 유지관리 동작 후에 도 31의 다이 층에서 용량 분포를 도시한 것이다.
도 33은 일 실시예에 따라 최대 허용가능한 데이터 용량에 다이 층을 도시한 것이다.
도 34는 다이에서 배경 유지관리 프로세스의 흐름도이다.
도 35는 일 실시예에 따라 다수-층 메모리에서 트리플-층 다이의 구성을 도시한 블록도이다.
도 36은 다수-층 메모리에서 연대하여 패키지된 다이 쌍들의 구성을 도시한 블록도이다.
도 37은 다수-층 메모리에서 개별적으로 패키지된 다이 쌍들의 구성을 도시한 블록도이다.
도 2는 도 1의 저장 장치의 예시적인 물리적 메모리 구성을 도시한 것이다.
도 3은 도 2의 물리적 메모리의 부분의 확대도이다.
도 4a는 일 실시예에 따라 도 1의 저장 장치의 다수-층 메모리 구성을 도시한 것이다.
도 4b는 도 4a의 다수-층 메모리의 대안적 물리적 배열을 도시한 것이다.
도 5는 다수-층 메모리를 동작시키기 위한 방법을 도시한 흐름도이다.
도 6은 도 1의 시스템에서 이용될 수 있는 LBA 어드레스 공간 및 연관된 DLBA 어드레스 공간의 예이다.
도 7은 호스트로부터 수신된 데이터에 대한 LBA 대 DLBA 매핑의 예를 도시한 것이다.
도 8은 DLBA 어드레스 공간 내 데이터 재배치 동작 및 물리적 어드레스 공간 내 대응하는 업데이트 블록을 도시한 것이다.
도 9는 도 8의 데이터 재배치 동작 다음에 제2 데이터 재배치 동작을 도시한 것이다.
도 10은 각 층이 다수의 파티션을 포함하는 다수-층 메모리 구성을 가진 저장 장치의 실시예를 도시한 것이다.
도 11은 다수의 파티션을 가진 다수-층 메모리의 층에서 데이터 흐름 패턴을 도시한 것이다.
도 12는 두 파티션을 가진 3층 메모리의 데이터 경로를 도시한 것이다.
도 13은 두 파티션을 가진 2층 메모리에 대한 데이터 흐름을 도시한 것이다.
도 14는 도 13의 2층, 2 파티션 메모리의 대안적 실시예에 대한 데이터 흐름 경로를 도시한 것이다.
도 15는 8개의 서로 다른 채널들 각각 상에 동일 수의 다이를 가진 NAND 다이 어레이를 도시한 것이다.
도 16은 8 제어기 인스턴스들 각각이 개별적 채널들 상에 4 다이를 관리하는 도 15의 NAND 다이 어레이를 관리하기 위한 동기식 다이 관리 배열을 도시한 것이다.
도 17은 메모리 어레이 및 다수 제어기 인스턴스들을 가진 도 4a의 다수-층 메모리 시스템의 대안적 배열을 도시한 것이다.
도 17a는 메모리 어레이 및 단일 제어기를 가진 도 4a의 다수-층 메모리 시스템의 대안적 배열을 도시한 것이다.
도 18은 도 17의 다수-층 메모리 시스템의 STAR 제어기들에 의해 구현되는 비동기 다이 관리 수법을 도시한 것이다.
도 19는 4개의 상이한 채널들 각각 상에 서로 같지 않은 수의 다이를 가진 NAND 다이 어레이를 도시한 것이다.
도 20은 채널당 서로 같지 않은 다이 분포를 갖는 NAND 다이의 어레이를 관리하기 위한 LBA 그룹화의 실시예를 도시한 것이다.
도 21은 도 19의 서로 같지 않은 다이 배열에서 과잉 용량의 균등한 분포를 제공하기 위해 LBA 그룹들을 할당하는 일 실시예의 표를 도시한 것이다.
도 22는 도 20-도 21의 LBA 할당을 구현하기 위한 LBA 스플리터의 블록도이다.
도 23은 다수-층 다이에서 동시적 랜덤 및 순차적 프로그램 사이클들의 가능한 조합을 도시한 것이다.
도 24는 층들 간에 데이터를 이동시키기거나 다수-층 메모리 다이의 층들 내에 데이터를 재배치하기 위한 판단 프로세스를 도시한 프로그램 사이클 차트의 실시예이다.
도 25는 한 프로그램 사이클 동안 다수-층 메모리 다이의 각 층에서 호스트 기입 및 유지관리 동작들 간에 인터리빙의 예를 도시한 것이다.
도 26은 도 25의 예에 호스트 데이터 기입 및 유지관리 기입의 대안적 인터리빙 패턴이다.
도 27은 다이에서 중첩하는 프로그램 사이클들의 예이다.
도 28은 다수-층 메모리에서 제어기의 예시적 메시지 흐름도이다.
도 29는 블록 재활용 사이클의 흐름도이다.
도 30은 도 29의 방법에 따른 예시적 재활용 사이클의 블록도이다.
도 31은 다수-층 메모리의 다이 층에서 예시적 데이터 용량 분포를 도시한 것이다.
도 32는 다이 층에서 지속된 배경 유지관리 동작 후에 도 31의 다이 층에서 용량 분포를 도시한 것이다.
도 33은 일 실시예에 따라 최대 허용가능한 데이터 용량에 다이 층을 도시한 것이다.
도 34는 다이에서 배경 유지관리 프로세스의 흐름도이다.
도 35는 일 실시예에 따라 다수-층 메모리에서 트리플-층 다이의 구성을 도시한 블록도이다.
도 36은 다수-층 메모리에서 연대하여 패키지된 다이 쌍들의 구성을 도시한 블록도이다.
도 37은 다수-층 메모리에서 개별적으로 패키지된 다이 쌍들의 구성을 도시한 블록도이다.
발명의 측면들을 구현하는데 사용하기에 적합한 시스템이 도 1에 도시되었다. 호스트 시스템(100)은, 물리적 저장 장치(102)에 저장되고 이로부터 인출되는 데이터를 제어한다. 저장 장치(102)는 고체상태 디스크(SSD) 드라이브와 같은 호스트 내 내장된 플래시 장치, 혹은 호스트에서 떨어져 있는 외부 저장 장치, 혹은 호스트(100)에 착탈가능하게 연결되는 메모리 카드 또는 이외 다른 착탈가능한 플래시 드라이브일 수 있고, 다수의 가용한 유선 혹은 무선 인터페이스 중 어느 것을 사용하여 컨넥터(103, 104)와 같은 기계 및 전기 컨넥터를 통해, 혹은 무선으로, 통신할 수 있다. 호스트(100)는 태블렛 컴퓨터, 모바일 전화, 개인용 디지털 보조장치, 홈 네트워크 라우터, 개인용 컴퓨터(PC), 혹은 이외 어떤 다른 유형의 데이터 취급 장치와 같은, 데이터 취급 장치일 수 있다.
호스트 시스템(100)은 저장 장치(102)에 관련되는 한, 회로와 소프트웨어와의 조합으로 구성된 2개의 주요 부분들을 갖는 것으로서 간주될 수 있다. 이들은 애플리케이션 부분(105), 및 저장 장치(102)와 인터페이스하는 드라이버 부분(106)이다. PC에서, 예를 들어, 애플리케이션 부분(105)은 호스트(100) 상에서 데이터를 관리하기 위한 파일 시스템(110)뿐만 아니라, 워드 프로세싱, 그래픽스, 제어 혹은 이외 다른 인기있는 애플리케이션 소프트웨어를 실행하는 프로세서(109)를 포함할 수 있다. 카메라, 셀룰라 전화, 혹은 주로 한 단일 세트의 기능들을 수행하는데 전용되는 다른 호스트 시스템에서, 애플리케이션 부분(105)은 사진을 찍거나 저장하기 위한 카메라, 전화를 걸거나 받기 위한 셀룰라 전화, 등을 동작시키는 소프트웨어를 포함한다.
저장 장치(102)는 비휘발성 메모리(107)를 내장한다. 비휘발성 메모리(107)는 단일 레벨 셀(SLC) 유형의 플래시 메모리 및/또는 다중-레벨 셀(MLC) 유형의 플래시 메모리와의 조합으로 구성될 수 있다. 저장 장치(102)는 또한 프로세서, 프로세서를 동작시키기 위한 명령 및 논리 블록 대 물리 블록 변환 테이블을 포함할 수 있는 호스트 인터페이스 및 제어기(108)를 포함한다.
비휘발성 플래시 메모리는 메모리 셀 블록들로 배열될 수 있다. 한 메모리 셀 블록은 소거 유닛, 즉, 함께 물리적으로 소거할 수 있는 최소 수의 메모리 셀들이다. 그러나, 증가된 병행도를 위해서, 블록들은 더 큰 메타블록 유닛으로 운영될 수 있다. 메타블록을 형성하기 위해 메모리 셀의 적어도 두 플레인 각각으로부터 한 블록이 함께 논리적으로 링크될 수 있다. 도 2를 참조하면, 대표적인 플래시 메모리 셀 어레이의 개념도가 도시되었다. 4개 플레인 혹은 부-어레이(200, 202, 204, 206)의 메모리 셀들이 단일의 집적된 메모리 셀 칩 상에, 혹은 두 칩(각 칩 상에 2개의 플레인) 상에, 혹은 4개의 개별적인 칩들 상에 일 수 있다. 구체적 배열은 이하 논의에 중요하지 않으며 다른 수의 플레인들이 시스템에 존재할 수 있다. 플레인은 각각의 플레인(200, 202, 204, 206) 내 위치된, 블록(208, 210, 212, 214)과 같은 장방형으로 도 2에 도시된 메모리 셀 블록들로 개별적으로 분할된다. 각 플레인에 수 십 혹은 수 백개의 블록들이 있을 수 있다. 블록은 단일의 유닛으로서 소거될 수 있는 메타블록을 형성하기 위해 논리적으로 함께 링크될 수 있다. 예를 들면, 블록(208, 210, 212, 214)은 제1 메타블록(216)을 형성할 수 있다. 블록(220, 222, 224, 226)으로 구성된 제2 메타블록(218)으로 보인 바와 같이, 메타블록을 형성하기 위해 사용되는 블록들은 이들의 각각의 플레인 내에 동일 상대적 위치들로 제약될 필요가 없다.
다음엔 개개의 블록들은 도 3에 도시된 바와 같이, 운영 목적을 위해 메모리 셀 페이지들로 분할된다. 블록(208, 210, 212, 214) 각각의 메모리 셀은 예를 들면, 각각 8개의 페이지(P0-P7)로 분할된다. 대안적으로, 각 블록 내에 메모리 셀들의 16, 32 혹은 그 이상의 페이지들이 있을 수 있다. 페이지는 한 번에 프로그램되는 최소 데이터량을 내포하는, 한 블록 내 데이터 프로그래밍 유닛이다. 한 번에 판독될 수 있는 최소 데이터 유닛은 한 페이지 미만일 수도 있다. 4개의 블록(208, 210, 212, 214) 각각에 대해 한 물리적 페이지로 형성되는 메타페이지(328)가 도 3에 도시되었다. 메타페이지(328)는 4개 블록 각각 내에 페이지(P2)를 포함하는데, 그러나 한 메타페이지의 페이지들은 반드시 블록들 각각 내에 동일 상대적 위치를 가질 필요는 없다. 메타페이지는 최대 프로그래밍 유닛이다. 도 2-도 3에 개시된 블록을 본원에서는 이들이 위에 논의된 바와 같이 물리적 메모리 셀들의 그룹들에 관계되기 때문에 물리적 블록들이라 칭한다. 본원에서 사용되는 바와 같이, 논리 블록은 물리 블록과 동일한 크기를 갖게 정의된 가상의 어드레스 공간 유닛이다. 각 논리 블록은 호스트(100)로부터 수신된 데이터에 연관된 일 범위의 논리 블록 어드레스(LBA)를 포함한다. 이어, LBA는 데이터가 물리적으로 저장되는 저장 장치(102) 내에 하나 이상의 물리 블록들에 매핑된다.
이제 도 4a를 참조하면, 각 층이 셀당 상이한 비트 용량을 갖는 3개 층의 플래시 메모리 셀(402, 404, 406)을 포함할 수 있는 비휘발성 메모리(401)를 갖는 도 1의 저장 장치(102)의 일 실시예가 도시되었다. 도시된 바와 같이, 제1 플래시 메모리층(402)은 셀당 단일 비트의 용량을 갖는 2진 플래시로서 구성될 수 있다. 제1 플래시 메모리층을 본원에서는 X1 플래시라고도 한다. 제2 플래시 메모리층(404)은 예를 들면 셀당 2비트 용량을 갖는 MLC 플래시로서 구성될 수 있고 본원에서는 X2 플래시라고도 한다. 제3 플래시 메모리층(406) 또한 MLC 플래시로서 구성될 수 있는데, 그러나 제2 플래시 메모리층(404)보다는 셀당 더 많은 비트의 용량을 갖는다. 이 예에서 제3 플래시 메모리층은 셀당 3비트의 MLC 플래시로서 예시되고 본원에서는 X3 플래시라고도 한다.
서로 상이한 플래시 층들(402, 404, 406)은 모두가 동일 물리적 다이 상에 배치될 수 있고, 각 층은 각각의 별도의 다이 상에 제조될 수 있고, 혹은 층들은 단일 플래시 층 다이 및 조합된 플래시 층 다이의 조합 상에 제조될 수 있다. 1, 2 및 3 비트의 셀당 특정 비트 구성들이 예시되었을지라도, 제1 플래시 메모리층이 제2 플래시 메모리층보다 셀당 적은 비트 구성을 가지며 다음에 제2 플래시 메모리층이 제3 플래시 메모리층보다 셀당 적은 비트 구성을 갖는 다른 조합이 구상된다. 도 4b는 제1 및 제2 플래시 메모리층(402, 404)이 한 다이(440) 상에 위치되고 제3 플래시 메모리층(406)이 별도의 다이(442) 상에 위치되는 도 4a의 비휘발성 메모리(401)를 도시한다. 또한, 3개의 층이 도 4a 및 도 4b에 도시되었을지라도, 더 많은 수의 층들이 다른 실시예에서 구현될 수도 있다.
제어기(424)의 동적 랜덤 액세스 메모리(DRAM) 버퍼(408)는 직렬 어드밴스드 기술 어태치먼트(Serial ATA 혹은 SATA라고도 알려진) 인터페이스와 같은 인터페이스(434)를 통해 호스트(100)로부터 데이터를 수신한다. DRAM 버퍼(408)는 제어기의 프로세서(424)로부터 지휘 하에, 인터페이스(434)에 호스트로부터 수신된 데이터를 저장 장치 내 다수-층 비휘발성 메모리(401)에 보낸다. 저장 장치 내 DRAM 기입 버퍼(408)는 제1 및 제2 플래시 메모리층들(402, 404)과 통신한다. 또한, 제1 플래시 메모리층(402)은 제2 플래시 메모리층(404)과 통신하고 제2 플래시 메모리층(404)은 제3 플래시 메모리층(406)과 통신한다.
제어기(424)는 단일 집적회로 칩 내 구현될 수 있고, 하나 이상의 코맨드 채널(436)을 통해 비휘발성 메모리(401) 내 서로 다른 층들(402, 404, 406)과 통신할 수 있다. 제어기는 시스템을 초기화("부팅")하기 위한 코드를 내포하는 제어기(424) 내 비휘발성 메모리(432), DRAM(408), 인터페이스(434), 및 다수-층 플래시 메모리(401)와 호스트 간에 제어기를 통과하는 데이터에 대해 오류 정정 코드(ECC)를 계산하고 체크하는 회로(430)를 링크하는 자기 자신의 내부 버스를 가질 수 있다. 본원에 기술된 바와 같은 메모리 관리 명령을 구현하기 위한 제어기 실행가능의 코드는 다수-층 플래시 메모리(401), 예를 들면 제1 플래시 메모리층(402) 내에 저장될 수 있다. 다수-층 메모리 장치의 버전들에 관한 추가의 상세는 앞에 언급된 출원의 전체를 본원에 참조로 포함시키는 2011년 3월 31일에 출원되고 미국 공개번호 2012/0254574로서 공개된 미국 출원번호 13/077,487에서 찾아볼 수 있다.
도 5를 참조하여, 데이터를 플래시 층들에 및/또는 플래시 층들 간에 이동하기 위한 저장 장치의 제어기에 의해 구현되는 예시적 방법이 개시된다. 일 구현예에서, 데이터가 호스트 기입으로부터 수신되었을 때(502에서), 제어기는 호스트로부터 데이터를 수신할 메모리층을 선택한다. 선택은 SATA 인터페이스와 같은 인터페이스로부터 DRAM에 수신되는 호스트로부터의 데이터가 순차인지 아니면 비-순차인지 여부에 기초할 수 있다(504에서). 예를 들면, 수신된 데이터가 호스트 LBA 어드레스들로 순차적으로 어드레스된다면, 제어기는 DRAM으로부터 데이터를 곧바로 제2 플래시 메모리층에 보낼 수 있다(506에서). 반대로, 데이터가 랜덤 혹은 비-순차적으로 어드레스된 데이터라면, 이 데이터는 DRAM으로부터 곧바로 제1 플래시 메모리층에 보내질 수 있다(508에서). 일 구현예에서, 호스트로부터 언제라도 수신된 데이터는 수신된 데이터의 호스트 LBA 데이터 어드레스들이 다수-층 메모리 내 메타블록의 한 완전한 메타페이지를 채우기에 충분한 데이터량에 대해 순차적이라면 순차적인 것으로 간주된다.
플래시 메모리층들 각각에서, 저장 장치의 제어기는 플래시 메모리층 전송 기준들을 모니터한다. 예를 들면, 플래시 메모리층 전송 기준들은 플래시 메모리층 내 남은 충분한 자유 블록 및 플래시 메모리층 내에 내포된 총 유효 데이터량이 있는지 여부일 수 있다. 일단 자유 블록 수가 플래시 메모리층에 대해 최소 임계 미만인 것으로 제어기가 판정하면, 다음에 제어기는 플래시 메모리층 내 유효 데이터 량이 전송 임계 이상인지를 판정한다. 플래시 메모리층 내 자유 블록 수가 최소 임계 미만이고, 이 플래시 메모리층 내 총 유효 데이터량이 임계량에 도달할 때, 제어기는 이 플래시 메모리층으로부터 데이터가 이 플래시 메모리층에 전달되게 할 수 있다. 이에 따라, 다음 플래시 메모리층으로의 전송을 위한 기준들이 제1 플래시 메모리층에서 만족된다면, 제1 플래시 메모리층 내 공간을 비워두기 위해서 데이터를 제2 플래시 메모리층으로 카피할 이전에 프로그램된 데이터의 블록이 제어기로부터 선택된다(510, 512, 506에서). 유사하게, 제2 플래시 메모리층 내 블록들은 제2 플래시 메모리층이 다음 플래시 층에 전송하기 위한 자신의 기준들을 충족하였을 때 제2 플래시 메모리층 내 블록들을 비워두기 위해 데이터를 제3 플래시 메모리층으로 전달되게 할 수 있다(516, 518, 522에서).
소스 메모리층에서 목적지 층으로 언제 데이터를 전송할지를 판정하기 위한 기준들은 최소 수의 자유 블록 및 유효 데이터 임계 량 미만을 갖는 것을 포함할 수 있는 것으로, 각 층에 대해 동일하거나 상이할 수 있다. 마지막 층, 이 예에서 제3 플래시 메모리층은 데이터를 보낼 다음 더 큰 용량의 MLC 층을 갖지 않을 것이며 그러므로 배당된 전송 기준들을 갖지 않을 것이다.
일 예에서, 제1 및 제2 플래시 메모리층들에 대한 전송 기준 임계는 층이 현재 유효 데이터의 적어도 소정의 백분률, 이를테면 90%을 내포함을 확인하는 것일 수 있다. 또 다른 실시예에서, 전송 기준들은 현재 층 내에 임계 수의 자유 블록만이 있다는 것과 다음 메모리층으로 전달할 데이터를 갖게 할 층 내 블록이 선택되기 전에 이 층이 적어도 소정의 백분률의 유효 데이터를 내포하는 것 둘 다일 수 있다. 임계 수의 자유 블록은 하나 이상의 자유 블록과 같은 최소 수일 수 있다. 소스에서 다음 플래시 메모리층으로 재배치하기 위해 선택된 데이터는 바람직하게는 최소로 최근에 프로그램된, 혹은 "가장 콜드한(cold)" 호스트 데이터를 가진 블록으로부터이다. 제어기는 블록을 관련 층 내 각각의 이전에 프로그램된 블록에 대해 유지관리된 프로그래밍 정보의 순서에 기초하여 선택할 수 있다.
이하 더 상세히 개시되는 바와 같이, 모든 수신된 호스트 데이터가 초기에, 제1 플래시 메모리층 내에서 이동되기 전에 제1 플래시 메모리층으로 보내지거나, 혹은 후속 층으로 보내질 수 있는 일 구현예가 예시된다. 또 다른 구현예에서, 호스트로부터 수신된 데이터는 수신된 데이터가 랜덤한 LBA 순서로 있을 때(라인(410)에서) DRAM(408)에서 제1 플래시 메모리층(402)으로 보내지거나, 수신된 데이터가 순차적인 LBA 순서로 있을 때(라인(412)에서) 제1 플래시 메모리층을 우회하여 DRAM(408)에서 직접 제2 플래시 메모리층으로 보내진다. 제어기는 제1 플래시 메모리층(402)로부터 데이터를 점차적으로 제2 플래시 메모리층(404)으로(라인(414)에서), 그리고 적합한 시간에 제2 플래시 메모리층에서 제3 플래시 메모리층으로 이동할 수 있다(416에서). 또한, 데이터가 플래시 메모리층 내에서 재순환되게 바람직하게는 각 플래시 메모리층 내에 새로운 자유 블록을 생성하기 위해 가비지 수거가 수행된다(라인(418, 420, 422)에서).
기술된 위에 방법 및 구조를 구현하기 위해서, 제어기는 블록들이 각 플래시 메모리층 내에 프로그램되었던 순서를 기록하기 위해 이 층 내에 데이터 블록들의 링크된 목록을 유지관리할 수 있다. 또한, 제어기는 데이터 전송 및 메모리 사용의 효율을 더 향상시키기 위해서 층들 각각 내에 저장 어드레스 재-매핑(STAR)이라고 하는 어드레스 변환 알고리즘을 구현할 수 있다.
다수의 공지된 메모리 관리 기술들 중 어느 것이든 본원에 기술된 다수-층 메모리 시스템을 구현하기 위해 사용될 수 있을지라도, STAR 기술을 이용하게 구성된 제어기가 여기에서 기술된다. STAR의 한 잇점은 개인용 컴퓨터에서 고체상태 디스크(SSD) 응용에서 일어날 수 있는, 데이터의 짧은 버스트를 장치의 논리 블록 어드레스(LBA) 어드레스 공간 내 관계없는 영역에 기입할 필요성에 의해 특징지워지는, 랜덤 기입 응용에서 메모리 시스템의 성능을 증가시키는 능력이다. STAR 기술의 일 구현예에서, 호스트 데이터는 호스트에 의해 배당되는 제1 논리 어드레스에서 제2 논리 어드레스 공간 내 인접해 있는 논리 어드레스들의 블록들에 매핑된다. 완전히 프로그램된 어드레스들의 블록들에 연관된 데이터를 폐용이 되게 하였을 때, 제어기가 최소량의 유효 데이터를 갖거나 임계량의 유효 데이터 미만을 갖는 층 내에 이전에 완전히 프로그램된 블록을 선택하고 더 많은 데이터를 기입하는데 사용하기 위한 블록들을 비워두기 위해 이들 블록들 내 유효 데이터를 재배치하는 데이터 재배치 절차가 개시된다. 재배치된 데이터는 호스트에 의해 배당된 논리 어드레스에 관계없이 데이터 재배치를 필요로 하는 소스 블록 내 발생하였던 순서로 동일 메모리층 내 재배치 블록에 서로 인접되게 기입된다. 이러한 식으로 하여, 오버헤드는 호스트에 의해 배당된 논리 어드레스 런들을 의도적으로 합체하지 않음으로써(전형적인 가비지 수거에서와 같이) 감소될 수 있다. 호스트에 의해 배당된 논리 어드레스와 제2 논리 어드레스 간에 매핑과 후속하여 메모리층에서 재배치에 기인하여 매핑 내에 후속된 변경들을 추적하기 위해 저장 어드레스 테이블(SAT)이 사용된다.
호스트로부터 데이터를 받아들이거나, 혹은 제1 층에서 다음 셀당 더 많은 비트 용량 층으로 데이터를 전송함과 동시에, 제어기는 유효 및 폐용 데이터 둘 다를 가진 이전에 프로그램된 블록들로부터 유효 데이터를 카피하고 이어 모든 유효 데이터가 카피되어진 블록들을 리사이클링함으로써 블록들을 재활용한다. 이 블록 재활용 절차는 데이터의 그룹들이 함께 유지되고 동일 어드레스 런에 새로운 데이터가 수신되는 대로 합체되는 표준 가비지 수거 기술 형태일 수 있고, 혹은, 이하 더 논의되는 바와 같이, 데이터가 동일 어드레스 그룹들로 합체되지 않는 재배치 절차일 수도 있다. 가비지 수거 혹은 재배치 절차는 바람직하게는 플래시 메모리층들 각각에서 독립적으로 제어기에 의해 구현된다. 유효 데이터 카피 프로세스는, 가비지 수거이든 재배치이든, 프로세스에서 이동되는 데이터가 바람직하게는 동일 플래시 메모리층에 유지관리되게 각 층 내에 구현된다. 도 5에 도시된 바와 같이, 제어기는 제1 층 내에 충분한 수의 자유 블록이 존재하는지를 알기 위해 체크하며, 아니라면, 유효 데이터를 합체하고 추가의 자유 블록을 생성하기 위해 제1 층 내에서 데이터의 블록들에 대해 카피 동작을 수행한다(510, 514에서). 이 데이터 카피 프로세스는 제2 및 제3 층에서도 독립적으로 실행된다(516, 520, 524, 526에서).
위에 언급된 방법은 우선적으로 동일 플래시 메모리층 내에 데이터를 재배치하고 현재 층이 유효 데이터로 거의 채워진 경우에만 데이터를 후속 층으로 이동한다. 또한, 소스 층 내 최소로 최근에 프로그램된 블록으로부터 오는 층들 간에 데이터를 이동함으로써, 데이터는 "핫(hot)" 데이터가 제1 플래시 메모리층에 놓여지게 되고, 덜 활성적으로 업데이트된 데이터가 제2 플래시 메모리층에 놓여지게 되고, "콜드" 데이터가 주로 제3 및 최종의 플래시 메모리층에 놓여지게, 제1 플래시 메모리층에서 제3 플래시 메모리층으로 필터링되는 경향이 있다. 데이터는 이것이 매우 최근에 업데이트되어진 데이터라면, 이 데이터가 활발히 사용 중에 있고 짧은 기간 내에 다시 업데이트될 것이 가능성이 많을 수 있기 때문에, "핫"한 것으로 간주된다.
도 6-도 9를 참조하면, 저장 어드레스 재-매핑(STAR) 어드레스 변환 알고리즘의 예가 도시되었다. 한 주어진 시간에, LBA 어드레스 공간(602) 내 호스트 자유 클러스터 맵 및 본원에서 장치 논리 어드레스 공간 혹은 DLBA 어드레스 공간(604)이라고 하는 것인 제2 논리 어드레스 공간 내 자유 클러스터 맵의 가정된 섹션을 도 6에 도시된 바와 같이 나타낼 수 있다. LBA 어드레스 공간(602)에서 자유 클러스터(606)는 근본적으로 랜덤한 위치들에 분산된다. DLBA 어드레스 공간(604)에서, 2개의 자유 블록(608)이 가용하며, 개수가 서로 상이한 폐용 (자유) 클러스터(606)를 가진 3개의 이전의 프로그램된 블록(610)이 있다.
호스트가 다음에 저장 장치에 기입할 데이터를 가질 때, LBA 어드레스 공간(602)을 이것이 가용할 경우 언제든 할당한다. 도 7은 저장 어드레스 재-매핑 알고리즘이 어떻게 기입 블록(702)이 될 가용한 자유 블록(170) 중 하나를 할당하고, 기입 블록(702) 내 가용한 DLBA 공간 내 순차적 클러스터에 각 LBA 어드레스가 어떻게 매핑되는가를 보여준다. DLBA 공간 내 기입 블록(702)은, LBA 어드레스 위치에 관계없이, LBA 어드레스들이 기입되는 순서로 기입된다. 이 예에서 용이한 예시를 위해 호스트가 자유 LBA 클러스터들을 사용하였던 시간적 순서가 어드레스 순서와 동일한 것으로 가정하지만, 그러나, 저장 어드레스 재-매핑 알고리즘을 구현하는 제어기는 LBA 어드레스 수 순서와는 무관하게, LBA 어드레스들이 사용되는 시간적 순서로 기입 블록(702)에 DLBA 어드레스들을 배당할 것이다. 데이터는 하나 이상의 DLBA 런으로 기입 블록에 기입된다. DLBA 런은 동일 LBA 런으로 서로 인접한 LBA 어드레스들에 매핑되는 한 세트의 인접한 DLBA 어드레스들이다. DLBA 런은 DLBA 어드레스 공간(604) 내 블록 경계에서 종지되어야 한다. 기입 블록(702)이 채워지게 되었을 때, 자유 블록(608)은 다음 기입 블록(702)으로서 할당된다.
DLBA 블록은 플래시 메모리의 물리 어드레스 공간(706) 내 블록(704)과 정렬되고, 따라서 DLBA 블록 크기 및 물리 어드레스 블록 크기는 동일하다. 또한, DLBA 기입 블록(702) 내 어드레스들의 배열은 물리 어드레스 공간 내 대응하는 업데이트 블록의 배열과 동일하다. 이 대응에 기인하여, 일반적으로 가비지 수거라고 하는, 어떠한 별도의 데이터 합체도, 물리 업데이트 블록에선 전혀 필요하지 않다.
일반적인 가비지 수거 동작들에서, 한 블록의 논리 어드레스들은 논리 블록 내 특정한 한 범위의 LBA 어드레스들을 유지하기 위해 일반적으로 항시 재조립되는데, 이는 물리 블록에도 반영된다. 구체적으로, 일반 가비지 수거 동작들을 이용하는 메모리 시스템이 특정 물리 블록 내 섹터에 대응하는 업데이트된 섹터의 정보를 수신하였을 때, 메모리 시스템은 업데이트된 섹터 또는 섹터들을 수신할 물리 메모리 내 업데이트 블록을 할당하고 이어 원래의 물리 블록으로부터 모든 남은 유효 데이터를 업데이트 블록 나머지에 합체할 것이다. 이러한 식으로 하여, 표준 가비지 수거는 특정 어드레스 범위에 대응하는 데이터가 항시 공통 물리 블록에 합체되어지도록 특정 LBA 어드레스 범위에 대해 데이터의 블록들을 영속되게 할 것이다. 이하 더 상세히 논의되는 재배치 동작은 동일 어드레스 범위 내 데이터의 합체를 요구하지 않는다. 대신에, 재배치 동작은 여러 물리 블록들로부터 일단의 데이터일 수 있는 새로운 데이터 블록들을 생성하기 위해 어드레스 재-매핑을 수행하는데, 특정 LBA 어드레스 범위의 데이터는 의도적으로 합체되지 않는다.
앞에서 언급된 바와 같이, STAR 알고리즘은 순차적 기입 알고리즘이 동작하기에 충분한 자유 블록들의 공급이 가용함을 보증하게 동작한다. STAR 알고리즘은 유효 및 폐용 데이터가 혼재된 이전에 프로그램된 블록들로부터 유효 데이터를 재배치 블록(802)으로서 알려진 특별한 기입 블록에 재배치함으로써 자유 블록의 생성을 관리한다(도 8). 재배치를 위해 현재 선택된 이전에 프로그램된 블록을 재활용 블록이라 한다.
이제 도 7-도 8을 참조하면, 데이터 재배치 프로세스의 예가 도시되었다. 저장 어드레스 재-매핑 알고리즘은 자유 블록을 재배치 블록(802)으로서 지정하고, 이에 데이터가, 선택된 이전에 프로그램된 블록들로부터 재배치되어져 추가의 자유 블록을 생성한다. 재활용 블록(도 7의 블록 A) 내 유효 데이터는 유효 데이터가 재활용 블록에 나타나는 순서로 선택되고 재활용 블록을 자유 블록(608)으로 전환하기 위해, 재배치 블록(802)에 순차적이고 서로 인접한 어드레스들에 재배치된다. 물리 어드레스 공간(706) 내 대응하는 업데이트 블록(704)은 또한 재배치된 데이터를 수신하기 위해 배당된다. 호스트로부터 수신된 새로운 데이터를 위해 사용되는 업데이트 블록(704)에서와 같이, 재배치된 데이터를 수신하기 위한 업데이트 블록(704)은 재배치 동작이 이미 DLBA 어드레스 공간(604)에서 합체를 달성하였기 때문에 유효 데이터를 합체하기 위해 가비지 수거 동작을 결코 요구하지 않을 것이다.
다음 재활용 블록(도 8의 이전에 프로그램된 블록 B)은 도 9에 도시된 바와 같이 남은 이전에 프로그램된 블록들로부터 확인된다. 최소의 유효 데이터를 가진 이전에 프로그램된 블록은 다시 재활용 블록으로서 지정되고 재활용 블록의 유효 데이터는 오픈 재배치 블록에 순차적 위치들에 전송된다. 업데이트 블록(704) 내 물리 어드레스들의 병렬 배당 또한 행해진다. 다시, 재배치 블록(802)에 매핑되는 물리 업데이트 블록(704)에서 어떠한 데이터 합체도 요구되지 않는다. 이전에 프로그램된 블록에 대한 재배치 동작은 기입 블록으로서 지정되는 자유 블록의 소비를 보상하기에 충분한 레이트로 자유 블록을 생성하기 위해 배경 동작으로서 수행된다. 도 6-도 9의 예는 물리 어드레스 공간 내 각각의 개별적 업데이트 블록들과 더불어, 호스트로부터 새로운 데이터에 대해서, 그리고 이전에 프로그램된 블록들로부터의 재배치된 데이터에 대해서 기입 블록 및 재배치 블록이 어떻게 개별적으로 유지관리될 수 있는가를 도시한 것이다. 호스트로부터 수신된 새로운 데이터를 연관시키기 위한 새로운 기입 블록의 할당은 현재 기입 블록이 완전히 프로그램되었을 때만 수행된다. 유사하게, 새로운 재배치 블록은 바람직하게는 이전의 재배치 블록이 완전히 프로그램되어진 후에만 할당된다. 새로운 재배치 블록은 바람직하게는 미기입된 용량만을 내포하는데, 즉 소거할 준비가 된 폐용 데이터에만 연관되거나, 할당시 이미 소거되었고 유효 데이터를 전혀 내포하지 않는다.
위에 언급된 구현예에서, 호스트로부터 새로운 데이터는 호스트로부터 다른 새로운 데이터만을 수신할 기입 블록에 연관되고, 재배치 동작에서 이전에 프로그램된 블록으로부터 재배치된 유효 데이터는 하나 이상의 이전에 프로그램된 블록으로부터 유효 데이터만을 내포할 재배치 블록으로 이동된다. 다른 구현예에서, 새로운 데이터 및 재배치된 데이터는 별도의 기입 및 재배치 블록들에 대한 필요성 없이 단일 기입 블록에 전송될 수 있다.
제어기에 의해 재활용 블록으로서 이전에 프로그램된 블록의 선택은 임계(고정된 임계이거나 혹은 현재 이전에 프로그램된 블록들에 대한 평균 유효 데이터량과 같은 변수일 수 있는) 미만인 유효 데이터량에 연관된 이전에 프로그램된 블록들의 리스트 상에 임의의 이전에 프로그램된 블록을 선택함으로써 달성될 수 있고, 혹은 가용한 이전에 프로그램된 블록의 특정한 랭킹(이전에 프로그램된 블록에 연관된 유효 데이터량에 기초하여)에 기초하여 선택함으로써 달성될 수 있다. 본원에 개시된 시스템 및 방법에 사용할 수 있는 STAR 기술의 버전에 관한 추가의 상세는 앞에 언급된 출원의 전체를 본원에 참조로 포함시키는 2008년 2월 22일에 출원되고 미국 공개번호 2008/0307192로서 공개된 미국 출원번호 12/036,014에서 찾아 볼 수 있다.
도 6-도 9에 기술된 재배치 동작은 "핫" 데이터를 폐용이 되게 하였던 블록으로부터 비교적 "콜드"한 데이터를 유사한 비교적 콜드한 데이터를 내포하는 재배치 블록에 재배치한다. 이것은 개별적인 비교적 핫한 블록 집단 및 비교적 콜드한 블록 집단을 생성하는 효과를 갖는다. 재활용될 블록은 최소 량의 유효 데이터를 내포하는 핫 블록으로서 항시 선택된다. 핫 블록 집단의 생성은 재배치될 필요가 있는 데이터량을 감소시킴으로써 메모리 스트레스 팩터를 감소시킨다.
다수-층 메모리 및 방법의 실시예에서, 제어기(108)는 도 6-도 9에 도시된 STAR 기술을 각각의 플래시 메모리층들 각각에 구현한다. 도 4a의 저장 장치의 대안적 실시예에서, 제1 플래시 메모리층이 제2 플래시 메모리층보다 셀당 더 적은 비트 용량을 가지며, 제2 플래시 메모리층이 제3 플래시 메모리층보다 셀당 더 적은 비트 용량을 갖는, 다수층 메모리 시스템의 STAR-가능 버전이 예시된다. 도 4a의 예에서, 셀당 다른 증가하는 일련의 비트 메모리층들이 사용될 수 있을지라도, 셀당 1-비트, 2-비트 및 3-비트 플래시 메모리층들이 다른 증가 증분들로 예시되었다.
메모리층에
파티션
일 실시예에서, 도 10에 도시된 바와 같이, 플래시 메모리의 층(1002, 1004, 1006) 각각은 복수의 파티션을 포함할 수 있고, 각 파티션은 특정 유형의 데이터에 배당된다. 도 10의 예에서, 층당 두 개의 파티션으로서 순차 데이터에 배당되는 순차적 파티션(1008, 1012, 1016) 및 랜덤 데이터에 배당되는 랜덤 파티션(1010, 1014, 1018)이 있다. 각 메모리층 내 NAND 블록은 영구히 층에 할당되지만, 동작의 각 사이클 동안 어느 한 파티션에 동적으로 할당될 수 있다. 동작 사이클은 여기에서 더 상세히 개별적으로 기술될 것이다. 층당 두 파티션이 도 10에 도시되었을지라도, 층 내 각 파티션은 상이한 데이터 유형에 연관되는 다른 실시예들에서 층당 2 이상의 파티션이 구현될 수도 있다. 모든 층 내에 모든 파티션이 있을 필요가 있는 것은 아니며, 층 내 파티션의 크기는 특정 데이터 유형에 대한 데이터량에 기초하여 동적으로 각 동작 사이클에서 다를 수 있다.
다음 예에서, 순차 데이터는 저장 장치에 대한 플래시 관리 알고리즘에 의해 취급되는 적어도 메타페이지 분량의 데이터를 위한 순차적 호스트 논리 블록 어드레스(LBA)를 갖는 데이터이다. 예를 들면, 저장 장치의 플래시 관리 알고리즘에 의해 관리되는 메타페이지 크기가 128k이라면, 적어도 128k의 순차적으로 어드레스된 런들은 순차 데이터인 것으로 간주될 것이고 요망되는 층의 순차적 파티션(1008, 1012, 1016)에 보내질 것이며 반면 순차적 LBA의 128k 미만의 데이터는 요망되는 메모리층의 랜덤 파티션에 의해 취급될 것이다. 128k 임계는 메타페이지 크기가 플래시 관리 시스템들마다 상이할 수 있기 때문에 단순히 예로서 제공된다.
다른 실시예에서, 인입 데이터를 순차적 혹은 랜덤으로서 자격을 부여하는 런에 대해 인입 데이터의 LBA들을 분석하기보다는 제어기 내 플래시 관리 알고리즘은 다른 혹은 추가의 파티션들이 서로 상이한 메모리층들에서 지원될 수 있게 할, 데이터에 대한 다른 데이터 유형 특징에 관한 호스트로부터의 정보를 수신할 수 있다. 다른 데이터 유형 특징에 관한 이 정보는 임시 데이터, 장기적인 데이터, 판독/기입 레이턴시, 부팅 프로세스 동안 요구되는 데이터, 등등과 같은 데이터 유형들에 대한 것일 수 있다. 이들 데이터 유형에 관한 정보는 제어기에 의해 결정될 수도 있고 혹은 호스트가 이들 다른 데이터 유형을 정의하는 프로토콜을 사용하여 데이터와 함께 저장 장치에 특정 속성을 따라 전달할 수 있는 "호스트 힌트"를 통해 제공될 수도 있다.
층 및 파티션을 가진 플래시 메모리 장치는 2차원을 가진 저장 매트릭스를 생성한다. 저장 장치의 물리 메모리는 메모리 유형(예를 들면, 셀당 단일 비트(X1), 셀당 2비트(X2) 및 셀당 3비트(X3))에 따라 다수 층(1002, 1004, 1006)으로 세분된 물리 메모리를 가지며, 각 층 내 저장되는 데이터는 제어기에 의해 결정되거나 호스트에 의해 제공되는 데이터 유형에 의해 파티션들로 분할된다.
도 11을 참조하면, 도 10의 랜덤 파티션과 순차적 파티션을 가진 3 층 메모리의 한 층(1102)의 일반적인 구조가 도시되었다. 층(1102)은 층 밖으로부터 기입되는 데이터에 대해, 2개의 가용한 기입 블록, 순차적 기입 블록(1104) 및 랜덤 기입 블록(1106)을 포함한다. 순차적 및 랜덤으로서 지정되는 데이터는 서로 다른 기입 블록들에 보내진다. 두 기입 블록들의 인스턴스들은 동시에 오픈될 필요가 없거나, 또는 동시에 오픈되게 허용되지 않을 수 있다. 예를 들면, 한번에 한 블록만이 X3 층에서 프로그램하기 위해 오픈되게 허용될 수 있다. 유사하게, 하나는 순차 데이터(1108)를 위한 것이고 또 하나는 랜덤 데이터(1110)를 위한 것인, 2개의 가용한 재배치 블록들은 동일 층 내로부터 재배치되는 데이터를 위해 존재할 수 있다. 층에 처음 기입될 때 순차적 및 랜덤으로서 지정되는 데이터는 각각의 서로 다른 재배치 블록들에 보내진다. 한 재배치 블록만이 한번에 오픈될 것이며, 일 구현예에서, 재배치 블록(1108, 1110)은 X3 층 내 기입 블록으로서 같은 시간에 오픈되지 않을 수 있다.
순차적 및 랜덤 블록들로서 기입되는 블록의 정체들은 개별적으로 유지관리된다. 순차적 및 랜덤 데이터를 위한 블록의 2개의 체인(1112, 1114)은 이들의 블록이 프로그램되었던 순서를 기록한다. 이들 체인(1112, 1114)은 도 10에 관하여 논의된 바와 같이 층에 대한 순차적 및 랜덤 파티션들로서 지정된다. 단일 풀(pool)의 자유 블록(1116)은 기입 혹은 재배치 블록들로서 순차적 혹은 랜덤 파티션에 할당을 위한 블록들을 제공한다.
자유 블록 풀 내 블록의 수가 최소 임계 레벨에 도달하였을 때, 혹은 층 내 유효 데이터 볼륨이 층의 LBA 용량과 같은 임계량을 초과하였을 때, 층에 유지관리 동작이 수행되어야 한다.
유지관리 동작은 선택된 재활용 블록(1118, 1120))으로부터 대응하는 재배치 블록(1108, 1110)으로 데이터가 층 내에서 재배치될 것을 요구할 수 있다. 일 실시예에서, 층에서 데이터의 재배치는 데이터가 층 내 동일 파티션에 남아 있게 관리된다. 이에 따라, 데이터는 동작이 수행되고 있는 파티션에 따라, 통상적으로는 랜덤 재배치 출력 (RRO) 포트에서 랜덤 재배치 입력 (RRI) 포트로, 혹은 순차적 재배치 출력 (SRO) 포트에서 순차적 재배치 입력 (SRI) 포트로 라우팅된다. 그러나, 일부 실시예에서, 두 파티션들로부터 재배치된 데이터를 단일 재배치 블록으로 결합하게 데이터 라우팅을 구성할 수 있게 한다.
대안적으로, 유지관리 동작은 선택된 파티션 내에 순차적 이동 블록(1122) 혹은 랜덤 이동 블록(1124)으로서 지정된 최소로 최근에 프로그램된 블록에서, 다음 층 내 대응하는 기입 블록으로(예를 들면 X1에서 X2로) 데이터가 이동될 것을 요구할 수 있다. 데이터는 통상적으로는, 동작이 수행되고 있는 파티션에 따라, 랜덤 이동 출력 (RMO) 포트로부터 다음 층의 (RWI) 포트 내 랜덤 기입으로, 혹은 순차적 이동 출력 (SMO) 포트로부터 다음 층의 (SWI) 포트 내 순차적 기입으로 라우팅된다. 한 파티션 내 데이터가 바람직하게는 동일 층 및 파티션 내 또 다른 블록으로만 재배치되거나, 다른 층 내 동일 파티션 내 블록으로 이동될지라도, 일부 실시예에서, 서로 다른 파티션들로부터 데이터가 다음 층 내 단일 기입 블록으로 결합될 수도 있을 것으로 생각된다.
도 12을 참조하면, 도 10의 2개의 파티션(본원에서는 트리오 다이(1200)라고도 함)을 갖는 3개 층 메모리에 대한 데이터 흐름의 일 실시예가 도시되었다. 제어기는 도시된 바와 같이 경로(1202 - 1232)를 사용할 수 있게 할 것이지만 일 실시예에서 트리오 다이(1200) 구현예에서 경로(1206, 1214, 1224)는 사용되지 않는, 본원에서는 3개 층 구현예에서 트리오 알고리즘이라고 지칭하는, 층들 간 데이터 전송 알고리즘을 지원할 수 있다.
호스트로부터 표준 순차 기입 트랜잭션들이 층 2(X2) 상에서 직접 실행될지라도, 층 1(X1)은 호스트로부터 랜덤 기입 트랜잭션 및 연속 순차 기입 트랜잭션의 실행을 위해 사용될 수 있다. 그러므로, 층 1은 데이터 블록의 순차 파티션 및 랜덤 파티션 둘 다를 유지관리한다. 그러므로 층 2 또는 층 3으로 데이터를 이동하는 각 유지관리 동작은 순차적인 혹은 랜덤한 단일 유형의 데이터를 포함한다. 랜덤 데이터는 층 1에서 재배치될 수 있지만, 도 12의 실시예에서 층 1에서 순차 데이터의 재배치는 없다.
층 2는 순차 파티션 및 랜덤 파티션 둘 다를 유지관리하며, 그러므로 층 3(X3)으로 데이터를 이동하거나 층 2에서 데이터를 재배치하는 각각의 유지관리 동작은 순차적이거나 랜덤한 단일 유형의 데이터를 포함한다. 층 3은 순차 파티션 및 랜덤 파티션 둘 다를 유지관리하며, 그러므로 층 3 내에 데이터를 재배치하는 각 유지관리 동작은 순차적이거나 랜덤한 단일 유형의 데이터를 포함한다. 데이터는 다음 더 상위의 층이 없기 때문에 층 3으로부터 이동될 수 없다. 또한, 일 실시예에서, 층 3 내 단일의 블록만이 언제든 프로그램하기 위해 오픈될 수 있다.
도 12에 관한 위에 설명은 위에 기술된 바와 같이 셀당 X1, X2 및 X3 비트 밀도를 갖는 트리오 다이(1200)를 가정한다. 다른 실시예에서, 다이의 트리플 층 배열은 별도의 다이 상에 배열될 수 있고, 혹은 이중 층 다이만이 있을 수도 있다. X1 층 및 X2 층(본원에서는 듀오2 다이(1300)라고도 함)만을 갖는 2층 다이에 대한 데이터 흐름의 예가 도 13에 도시되었다. 유사하게, X1 층 및 X3 층(본원에서는 듀오3 다이(1400)라고도 함)만을 갖는 2개 층 다이에 대한 데이터 흐름의 예가 도 14에 도시되었다. 도 12에 것들과 동일한 도 13 및 도 14에 데이터 경로에는 도 12와의 용이한 비교를 위해 동일한 참조부호가 주어졌다. 듀오3 다이(1400)에서, 호스트로부터 순차 랜덤 트랜잭션 및 랜덤 기입 트랜잭션은 데이터가 호스트로부터 X3 층으로 직접 프로그램될 수 없기 때문에, 둘 다가 층 1 상에서 실행된다. 그러므로 층 1은 두 파티션의 데이터 블록을 포함한다. 그러므로 데이터를 층 3으로 이동하는 각 유지관리 동작는 순차적이거나 랜덤한 단일 유형의 데이터를 포함한다. 랜덤 데이터는 층 1 내에서 재배치될 수 있지만, 층 1에서 순차 데이터의 재배치는 없다. 다이(1400)의 층 3은 트리오 다이에서 트리플 층 메모리에 대해서 정확히 구성된다.
다수-층 메모리에서 특정 층 및 파티션 배열을 갖는 플래시 다이에 대해서, 호스트 기입 동작에 의해 트리거될 수 있는 고정된 수의 유지관리 동작들의 유형들이 있다. 호스트 기입 동작과 유지관리 동작의 조합을 프로그래밍 세트라고 칭한다. 표1-표3에 나타낸 바와 같이, 두 데이터 파티션을 관리하기 위해 배열된 트리오 다이, 듀오2 다이 및 듀오3 다이의 모든 가능한 프로그래밍 세트의 일 실시예가 개시되었다. 표1-표3에서, 프로그래밍 세트의 첫 번째 글자는 호스트에 의해 기입되는 랜덤 데이터 (R) 혹은 순차 데이터 (S)를 나타낸다. R 혹은 S 다음에 첫번째 숫자는 호스트 데이터가 프로그램되는 층을 나타낸다. 두 번째, 3 번째 및 4 번째 숫자는, 있을 때, 연속적인 결과적인 유지관리 동작들 동안 데이터가 프로그램되는 층들을 나타낸다. 예를 들면, "R1233"라 표시된 표1 내 프로그래밍 세트는 층 1에서 층 2로 데이터를 이동하는 유지관리 동작, 층 2에서 층 3으로 데이터를 이동하는 유지관리 동작, 층 3 내에서 데이터를 재배치하는 유지관리 동작을 트리거하는 트리오 다이 내 층 1 내 랜덤 파티션에 보내지는 랜덤 호스트 데이터를 지칭한다.
프로그래밍 세트 | 호스트 데이터 유형 | 호스트 데이터 기입층 | 유지관리 동작 | ||
제1 동작 | 제2 동작 | 제3 동작 | |||
R1 | 랜덤 | L1 | |||
R11 | 랜덤 | L1 | L1 대 L1 데이터 재배치 | ||
R12 | 랜덤 | L1 | L1 대 L2 데이터 이동 | ||
R122 | 랜덤 | L1 | L1 대 L2 데이터 이동 | L1 대 L2 데이터 재배치 | |
R123 | 랜덤 | L1 | L1 대 L2 데이터 이동 | L2 대 L3 데이터 이동 | |
R1233 | 랜덤 | L1 | L2 대 L3 데이터 이동 | L3 대 L3 데이터 재배치 | |
S1 | 순차 | L1 | |||
S13 | 순차 | L1 | L1 대 L3 데이터 이동 | ||
S133 | 순차 | L1 | L1 대 L3 데이터 이동 | L3 대 L3 데이터 재배치 | |
S2 | 순차 | L2 | |||
S22 | 순차 | L2 | L2 대 L2 데이터 재배치 | ||
R23 | 순차 | L2 | L2 대 L3 데이터 이동 | ||
R233 | 순차 | L2 | L2 대 L3 데이터 이동 | L3 대 L3 데이터 재배치 |
* 트리오 다이에 프로그래밍 세트
프로그래밍 세트 | 호스트 데이터 유형 | 호스트 데이터 기입층 | 유지관리 동작 | ||
제1 동작 | 제2 동작 | 제3 동작 | |||
R1 | 랜덤 | L1 | |||
R11 | 랜덤 | L1 | L1 대 L1 데이터 재배치 | ||
R12 | 랜덤 | L1 | L1 대 L2 데이터 이동 | ||
R122 | 랜덤 | L1 | L1 대 L2 데이터 이동 | L2 대 L2 데이터 재배치 | |
S2 | 순차 | L2 | |||
S22 | 순차 | L2 | L2 대 L2 데이터 재배치 |
* 듀오2 다이에서 프로그래밍 세트
프로그래밍 세트 | 호스트 데이터 유형 | 호스트 데이터 기입층 | 유지관리 동작 | ||
제1 동작 | 제2 동작 | 제3 동작 | |||
R1 | 랜덤 | L1 | |||
R11 | 랜덤 | L1 | L1 대 L1 데이터 재배치 | ||
R13 | 랜덤 | L1 | L1 대 L3 데이터 이동 | ||
R133 | 랜덤 | L1 | L1 대 L3 데이터 이동 | L3 대 L3 데이터 재배치 | |
S1 | 순차 | L1 | |||
S13 | 순차 | L1 | L1 대 L3 데이터 이동 | ||
S133 | 순차 | L1 | L1 대 L3 데이터 이동 | L3 대 L3 데이터 재배치 |
* 듀오3 다이에서 프로그래밍 세트
서로 다른 실시예들에서, 각 층이 어떤 유형 혹은 어떤 속성의 데이터에 연관된 복수의 파티션을 갖는, 각 다이 내 다수 층의 특질에 관하여, 블록이 속하는 파티션은 제어기에 의해서 혹은 블록 내 저장된 데이터의 LBA에 연관된 속성을 제공하는 호스트에 의해 결정될 수 있다. 대안적으로, 메모리 시스템은 블록이 어떤 파티션에 속하는가를 정의된 동작 동안 메모리 시스템의 상태의 속성에 기초하여 결정할 수 있다. 다수-층, 다수-파티션 구조 및 제어기는 층들 내에서 데이터의 재배치 및 층들 간에 데이터의 재배치 뿐만 아니라, 호스트로부터 각각의 요망되는 초기 층 및 파티션으로 데이터의 블록들의 라우팅을 취급할 수 있다. 층 내 복수의 블록은 층 밖에 소스로부터의 데이터가 기입될 수 있고 복수의 블록들 각각은 층 내 상이한 파티션에 기입될 수 있다.
다수-층, 다수-파티션 다이에서 유지관리 동작 동안 데이터를 재배치하거나 데이터를 이동하기 위한 블록의 선택은 위에 도 4-도 5에 관하여 기술된 다수-층 다이에 대한 것과 동일한 기준을 사용하여 달성될 수 있다. 또한, 데이터의 재배치 및 이동은 하나 이상의 유지관리 동작을 트리거한 호스트 데이터가 보내지는 파티션과는 다른 파티션들로부터 올 수 있다. 파티션은 동적이고 층 내 자유 블록은 요구시 추가의 자유 블록을 필요로 하는 어떤 파티션에든 이에 배당되기 때문에, 유지관리 동작은 블록이 또 다른 층으로 이동하거나 층 내에서 재배치할 다이 층만을 전체로서 살펴볼 수 있다.
앞서 언급된 블록 선택 기준들 외에도, 유지관리 동작을 위한 대안적 블록 선택 기준들이 고찰된다. 최소로 최근에 프로그램된 블록을 블록이 프로그램되었던 순서에 기초하여 선택하는 대신에, 층들 간에 이동할 블록을 선택하기 위해서, 이동 블록은 이전에 프로그램된 블록 내 데이터의 경년에 기초하여 선택될 수 있다. 즉, 각 이전에 프로그램된 블록 내 각 데이터 요소(섹터, 클러스터 혹은 추적되고 있는 그외 다른 부-블록 데이터 입도(granularity))에 대해 경년 데이터에 기초하여 가장 오래된 평균 데이터를 갖는 이전에 프로그램된 블록을 선택한다. 이전에 프로그램된 블록 내 데이터의 경년은 저장 어드레스 테이블(SAT) 혹은 논리 및/또는 물리 어드레스를 매핑하는 다른 리스트의 부분으로서 제어기에 의해 제어 데이터 구조에 유지될 수 있다. 일 구현예에서, 데이터에 대한 경년 정보는 상대적 경년일 수 있는데, 여기에서 블록 내 특정한 하나의 데이터에 대한 경년은 이것이 호스트로부터 저장 장치에 처음 기입되었던 순서를 나타내는 숫자로서 기록된다. 제어기는, 앞에서 논의되었던 것들과 같은 전송 기준들이 만족되었다고 가정하면, 데이터의 가장 오래된 평균 경년을 가진 블록을 선택할 것이다. 이동 블록을 선택하기 위한이 대안적 기술의 잇점은 플래시 메모리층들 간에 "콜드" 및 "핫" 데이터를 격리시키는 더 철저한 작업을 행할 수 있다. 유일한 기준들로서 최소로 최근에 프로그램된 블록을 사용하는 것은 플래시 메모리층 내에서 재배치되어졌고 이에 따라 현재 더 최근의 이전에 프로그램된 블록의 부분이 된 더 오래된 데이터를 놓칠 수도 있을 것이다.
또 다른 대안적 실시예에서, 도 11을 다시 참조하면, 메모리층 내에 별도의 재활용 블록(1118, 1120), 및 이동 블록(1122, 1124)을 갖는 대신에, 별도의 재활용 이동 및 이동 블록은 각 층 내에 이동 블록(도시되지 않음)만으로 대체될 수 있고, 층에 대한 이동 블록 내 데이터의 부분은 다음 더 큰 용량 층으로 전송에 전용되고, 데이터의 남은 부분은 층을 위한 각각의 재배치 블록(1108, 1110)에 재배치된다. 이 대안적 실시예에서, 조합된 이동/재활용 블록(트리오 다이를 위한 제1 층 제2 층 각각에서)의 선택은 최소로 최근에 프로그램된 블록을 선택함으로써, 혹은 가장 오래된 평균 데이터를 가진 블록을 선택함으로써 달성될 수 있다. 선택된 조합된 이동/재활용 블록으로부터 전송할 데이터량은 고정된 량 또는 백분률일 수 있는데, 예를 들면 블록 내 유효 데이터의 50 퍼센트가 다음 층으로 전송을 위해 지정될 수 있고 남은 50 퍼센트는 층 내에서 재배치될 수 있다. 확인된 이동/재활용 블록으로부터 어느 50 퍼센트를 전송할 것인지의 선택은 메모리 시스템을 위한 제어 데이터 구조에서 제어기에 의해 추적된 데이터의 경년에 기초하여 행해질 수 있다.
다른 대안적 실시예에서, 다음 층으로 데이터를 전송할지 하지 않을지에 관한 추가의 고려사항은 위에 언급된 프로그래밍 순서 혹은 혹은 데이터 경년 고려사항과 겹칠 수 있다. 예를 들면, 일 실시예에서, 셀당 더 적은 비트 용량 플래시 메모리층 내 더 오래된(즉 "더 콜드한") 데이터가 자주 판독진다면, 이 데이터를 유지함으로써 성능을 증가시키는 것이 이익이 될 수도 있다. 데이터 혹은 데이터 블록들에 대한 판독 카운트는 또한 메모리 시스템을 위한 제어 데이터 구조에서와 같이 다수-층, 다수-파티션 메모리에 유지될 수 있다. 판독 카운트 정보는 최소로 빈번히 프로그램된 블록, 혹은 가장 오래된 평균 데이터 경년을 가진 블록으로부터 데이터가이 데이터에 대한 판독 동작의 횟수가 소정의 임계 이상이라면 다음 셀당 더 많은 비트의 층으로 전송하기 위해 선택되지 않게 되도록, 데이터 전송 기준들을 보완하기 위해 사용될 수 있다.
비동기
다이
관리
각 층 내 파티션을 가진 다수-층 메모리는 단일의 제어기를 가진 단일의 메모리의 맥락에서 위에 기술되어졌으나, 그러나 층당 다수-층 및 다수-파티션 메모리의 개념은 메모리 다이 어레이(1500)가 도시된 도 15 및 도 16에 도시된 바와 같은 메모리 다이 어레이로 확장가능하다. 예를 들면, 4x8 어레이(1500)에서, 4 NAND 다이는 8개의 서로 상이한 채널(1502) 각각 상에 배열된다.
일 구현예에서, 저장 장치에 8개의 개별적인 제어기들이 있을 수 있는데, 각 제어기에는 제어기에 배당되는 다이가 각각 상이한 채널 상에 있게 한 행에 4개의 다이가 배당된다. 제어기는 각각이 이들의 자신의 프로세서, 혹은 각각이 제어기 인스턴스에 연관된 각각의 다이를 위한 제어기 소프트웨어의 서로 상이한 소프트웨어 인스턴스들을 실행하는 것인 하나 이상의 프로세서들을 가진 개별적인 물리적 제어기들일 수 있다. 도 16은 각 제어기(NAND 관리자)(1602)가 각각의 서로 다른 채널들 상에 병렬로 4개의 다이를 제어하는 동기식 다이 관리 배열을 도시한다. 제어기에 의해 관리되는 다이 각각에 걸쳐 데이터를 스트립하는 크기의 메타블록은 순차적으로 어드레스된 데이터를 병렬로 효율적으로 프로그램할 수 있기 때문에 도 16에 도시된 바와 같은 배열은 지속된 순차적 기입들의 매우 효율적인 처리를 제공할 수 있다.
동기식 다이 관리 알고리즘에서, 동일 제어기에 의해 관리되는 다수의 NAND 다이는 프로그램 동작 및 소거 동작을 동기식으로 수행한다. 이러한 아키텍처에서, 단일 제어기는 다수의 다이를 취급하며, 다이 각각은 개별적인 한 채널에 배당되며, 다수의 다이로부터 다수의 블록은 메타블록으로 링크되는데, 이것은 NAND 프로그램 관리의 기본 유닛이 된다. 이 예에서, 데이터는 128KB 크기의 메타페이지 유닛들에서 병렬로 프로그램되는데, 32 KB은 이들의 개별적 제어기 채널들 상에 4개의 다이 각각에 걸쳐 기입된다. 프론트-엔드에서 NAND로, 시스템 내 모든 레벨에서 데이터를 기입하기 위한 트랜잭션은이 NAND 메타페이지와 동일한 데이터 길이, 즉 128KB을 갖는다.
동기식 아키텍처에서, 일단 기입 동작이 시작되면, 모든 4개의 다이는 이 4 다이 세트 내 다이 중 가장 느린 것이 이의 32KB의 데이터를 기입하는 것을 종료할 때까지 "비지"인 것으로 간주된다. 이것은 호스트가 가장 느린 다이에 있는 동안 세트 내 나머지 다이에서 다른 동작들(프로그래밍 혹은 판독 활동)을 개시하는 것을 차단 혹은 방지할 수 있다. 128KB 기입을 위해 한 제어기 하에 개별적 채널들 상에 4개의 개별적 다이를 함께 묶는 것으로부터 비롯될 수 있는 또 다른 문제는 한 완전한 기입이 4 다이 각각으로부터의 블록으로 구성된 메타블록을 요구한다는 것이다. 따라서, 한 다이가 4 다이 그룹 내 다른 다이보다 더 적은 양호한 블록을 갖는다면, 제어기는 최소수의 양호한 블록을 가진 그룹 내 다이의 용량까지 기입 동작을 위한 액세스만을 갖는다. 이 그룹에 대한 최소의 양호한 블록을 가진 다이 내 양호한 블록 수 이상의, 이 그룹에 대한 다이의 다른 내 임의의 가외의 양호한 블록들은 128KB 기입 크기 때문에 기입 동작을 위해 사용될 수 없다.
수신된 기입 코맨드가 더 적은 랜덤한 데이터 기입을 위한 것인 인스턴스들에서, 효율은 동기식 다이 관리 아키텍처에서는 감소된다. 예를 들면, 지속된 랜덤 기입이 있다면, 큰 트랜잭션 크기는 개개의 NAND 관리자(제어기 인스턴스들)(1602)가 이들의 각각의 동작으로 비지 상태에 있는 현저한 시간차에 기인하여 호스트 인터페이스의 차단을 야기할 수 있다. 또한, 도 16의 큰 메타블록 크기 및 병렬 채널 다이 제어는 또한 소량의 데이터를 가진 혼재된 판독 및 기입들에 대해선 비효율적일 수 있다. 도 16에서 각 기입 트랜잭션은 4 다이를 비지상태로 유지할 것이며 이에 따라 임의의 계류중의 판독 트랜잭션들로부터 4 다이를 차단한다.
일 실시예에서, 다수의 다이로부터 다수의 블록이 제어기가 동기식으로 프로그램 혹은 소거하는 메타블록에 링크되는 위에 논의된 동기식 제어기 배열 대신에, 비동기 아키텍처가 고찰된다. 도 17, 도 17a 및 도 18에 도시된 바와 같이, 비동기 아키텍처에서, 각 제어기에는 단일 채널(도 17) 상에 다이가 배당되거나, 단일 제어기는 모든 채널(도 17a) 상에 모든 다이에 배당될 수 있다. 도 17에 메모리 시스템(1700)은 도 4a의 것의 동일 특징들의 대다수를 포함하지만, 그러나 단일 제어기 채널(1704)에 연관된 NAND 다이 컬럼이 별도의 제어기(1706)에 의해 제어되는 NAND 다이 어레이(1702)를 도시한다. 각 제어기 인스턴스는 다이별 레벨로 데이터 프로그래밍을 취급할 수 있고, STAR 제어기의 각 인스턴스는 특별한 동작을 위해 단일 채널 상에 최상의 다이를 이의 사용가능성에 기초하여 선택할 수 있다.
도 17의 다수 제어기 실시예에서, 제어기(1706)는 도 6-도 9에 관하여 위에 논의된 STAR 어드레스 변환 알고리즘(1708)을 사용할 수 있고, 위에 개시되어진 다이 메모리층에, 이들 내에서 그리고 이들 사이에 데이터의 이동을 관리하기 위해 본원에 논의된 비동기 다이 관리 알고리즘(1712)과 트리오 알고리즘(1714)을 탑재하는 이하 더 상세히 논의되는 프로그램 스케쥴링 알고리즘(1710)을 이용한다. 단일 제어기(1706)가 하나 혹은 많은 채널(1704) 상에 모든 NAND 다이를 관리하는 도 17a의 실시예에서 단일 제어기를 가진 메모리 시스템(1700A)에서, 제어기는 도 17의 다수-제어기 실시예와 동일한 알고리즘(1708, 1710, 1712, 1714)을 가진 동일 유형의 제어기이다. 단일 제어기 실시예는 채널당 한 별도의 제어기를 갖는 다수-제어기 실시예에 관하여 논의된 바와 같은 특정 제어기/채널에 연관된 특정 LBA 어드레스 범위에서 데이터를 수신하기보다는 단순히 NAND 어레이(1702) 내 모든 데이터를 위한 다이 및 채널에 대해 전체 어드레스 매핑을 관리한다. 용이한 예시를 위해서, 그리고 반복을 피하기 위해서, 이하 기술되는 특징들은 일반적으로 도 17의 다수 제어기 배열의 맥락에서 설명된다. 그러나, 본원에 개시된 모든 특징들은 도 17a의 단일 제어기 실시예에 똑같이 적용될 수 있음이 이해될 것이다.
본 발명의 일 실시예에서, STAR 제어기(1706)는 시스템 전체에 걸쳐 데이터 프로그래밍 병행도 및 기입 트랜잭션이 2-플레인 다이 내 전형적으로 32KB인 한 다이 내에서 달성가능한 최대 프로그래밍 병행도의 유닛들로 관리되는 비동기 다이 알고리즘(1712)을 포함한다. 각 STAR 제어기(1706)는 동기식 아키텍처에서처럼 개별 채널들 상에 다이가 아니라, 단지 한 채널(1704) 상에 다이에 연관된다. 따라서, 다수의 다이는 요구될 때 완전히 병렬로 동작할 수 있거나, 각각이 관계없는 동작들을 수행하는 것과 비동기적으로 동작할 수 있다. 또한, 비동기 동작은 동일 채널 상에서 관리하는 각 한 세트의 다이에 대해서 STAR 제어기가 데이터를 수신하기에 최상으로 적합한 다이, 예를 들면 기입될 데이터의 가장 짧은 큐를 가진 다이를 선택할 수 있게 한다. 도 17a의 실시예에서, 단일 제어기(1706)는 모든 다이 모든 채널을 관리하며 데이터를 수신하기에 최상으로 적합한 임의의 다이를 선택할 수 있다.
비동기 다이 알고리즘은 불규칙한 I/O 크기 혹은 혼재된 판독/기입 특징을 가진 작업부하에 호스트 코맨드의 실행 및 개선된 성능을 위한 감소된 레이턴시를 제공할 수 있다. 동기식 다이 알고리즘에 비해 비동기 다이 알고리즘의 타이밍, 액세스가능성 및 볼록킹(즉 감소된 동작 블록킹) 잇점들이 있을 수 있지만, NAND 메모리에서 I/O 동작의 독립적인 관리는 랜덤 및 순차적 작업부하 모두에 대해 평균 다이 활용 및 평균 성능을 증가시킨다. 비동기 다이 알고리즘은 동시에 다수의 다이(예를 들면 위에 논의된 동기식 알고리즘에서 4개의 다이)에 파티션들을 조정하는 것에 비해 한번에 한 다이에서 파티션들을 관리하는 더 큰 용이성 때문에 다이의 각 층에서 다수의 파티션들의 더 나은 관리를 할 수 있게 한다. 또한, 판독 및 기입 동작의 조합이 수신되고 있을 때 판독 동작에 대해 메모리 시스템에 다이의 개선된 사용가능성이 있을 수 있다.
STAR 제어기에 연관된 각 다이의 비동기 동작은 각 다이 내에 모든 양호한 블록이 활성이 될 수 있게 한다. 그러므로 각 다이의 수행은 이에 가용한 전체 물리적 오버헤드를 이용함으로써 최대화되고, 그럼으로써 드라이브의 수행을 최대화한다. 주어진 다이 내에 블록들의 이용이 증가될 가능성의 예는 각 STAR 제어기가 동일 채널(또한 도 17 참조) 상에 4개의 상이한 다이에 배당되는 도 18에 도시된 것과 같은 동기식 다이 알고리즘과 비교하였을 때 알 수 있다. 용이한 예시를 위해서, 도 17의 복수의 STAR 제어기(1706) 중 두 개만을 도 18에 도시하였고 몇몇 요소들은 생략되었다.
데이터가 메모리 시스템에 인입되었을 때, 메모리 시스템은 적합한 호스트 LBA 범위에 연관된 STAR 제어기를 위한 버퍼에 데이터를 보내고 STAR 제어기는 이것이 관리하고 있는 일군의 다이 내 최상의 다이를 선택할 것이다. 도 18에서, 특정 STAR 제어기에 연관된 LBA 범위에서 각각이 이 실시예에서 32 KB의 데이터를 가진 4개의 개별적 기입 코맨드(1802)는 STAR 제어기들인 STAR0(1706A) 및 STAR7(1706B)에 보내진다. 비동기 다이 관리 알고리즘(1712)을 이용하여, STAR0 제어기(1706A)는 각 코맨드에 대해서 동일 채널 상에서 관리하고 있는 다이(1804)로부터 임의의 가용한 개개의 NAND 다이를 선택하고, 각 기입 코맨드(1802)에 대한 데이터를 각각의 다이(1804)에 보낸다. STAR0 제어기(1706A)에 의한 NAND 다이(1804)의 선택은 STAR7 제어기(1706B) 혹은 다른 제어기들에 보내지는 데이터에 대한 메모리 시스템 내 임의의 다른 제어기에 의해 관리되는 별도의 다이의 다이 선택과는 무관하다. 도 18에 도시된 바와 같이, STAR0 제어기(1706A)에 의해 선택된 다이의 순서는 각각 데이터 코맨드 1 - 코맨드 4에 대해 NAND 다이 2, 4, 1 및 3이다. STAR 제어기(1706B)는, 이것이 관리하는 NAND 다이에 대해이 제어기가 갖는 상황 정보에 기초하여, NAND 다이(1804)(NAND 다이 4, 1, 3, 2)의 상이한 순서를 선택하였다.
각 STAR 제어기에 트리오 알고리즘(1714)는 호스트 데이터 프로그램 트랜잭션이 다이에 대해 발행될 수 있는지 여부를 나타내는, 각 다이에 대한 상황 정보를 비동기 다이 알고리즘(1712)에 제공한다. 상황 정보는 NAND 드라이버(1806) 내에 다이에 대한 큐잉된 트랜잭션 수, 및 호스트 데이터 프로그램 동작에 유지관리 카피 동작의 요구된 인터리빙이 만족되었는지 여부에 기초할 수 있다. 이 상황 정보에 기초하여, STAR 제어기의 각 인스턴스는 이의 비동기 다이 알고리즘(1712)을 이용하여 이의 프론트-엔드 큐로부터 호스트 데이터 기입 트랜잭션을 이를 받아들일 준비가 된 상기 STAR 제어기에 의해 관리되는 임의의 다이에 발행할 수 있다.
비동기 다이 알고리즘(1712)에 의해 구현되는 다이 선택 기준들은 트리오 알고리즘(1714)으로부터 제공된 다이의 상황 정보가 계류중의 트랜잭션과 동일한 부류(예를 들면 랜덤 혹은 순차적 데이터 유형)의 호스트 데이터 프로그램 동작에 유지관리 카피 동작의 요구된 인터리빙이 만족되어졌음을 나타내는 경우에만 다이를 STAR 제어기가 선택하는 것을 포함할 수 있다. 단독으로 혹은 조합하여 사용될 수 있는 다른 기준들은 목표 부류(예를 들면 랜덤 기입 트랜잭션을 위한 큐)에 대해 미이행 트랜잭션들의 수가 명시된 한계를 초과하지 않는 경우에만 다이를 선택하는 것; 목표 부류에 대해 최소수의 미이행 트랜잭션을 가진 가용한 다이를 선택하는 것; 목표 부류에 대해 활성인 가장 적은 프로그램 사이클 유형을 가진 가용한 다이를 우선적으로 선택하는 것; 및/또는 가장 적은 논리적 충만성을 가진 가용한 다이를 선택하는 것을 포함할 수 있다.
특정 STAR 제어기가 호스트 LBA 어드레스 공간의 특정한 서브세트 내에서만 LBA들을 가진 데이터를 관리하지만, STAR 제어기 인스턴스에서 LBA와 NAND 다이 수 간에 상관은 없다. 유사하게, 두 STAR 제어기에 의해 관리되는 개별적 다이에 걸친 LBA들의 스트립 내에 연속한 LBA 메타페이지들을 순차적으로 프로그램하기 위해 연속한 STAR 제어기들에 의해 사용되는 NAND 다이 수들 간에 상관은 없다. 각 STAR 제어기가 비동기 아키텍처의 일 실시예에서 한 특정한 제어기 채널 상에 자신의 다이를 독립적으로 관리할지라도, 비동기 다이 알고리즘은 또한 데이터 전송 및 NAND 코맨드 실행을 위해 STAR 제어기들에 걸쳐 완전한 병행도를 달성할 수 있다. LBA 메타페이지에 NAND 판독 혹은 프로그램 동작은 완전히 동기식 데이터 전송 및 NAND 액세스 동작들과 함께, STAR 제어기 각각에서 실행될 수 있다. 이것은 순차적 판독 및 기입 동작 모드에서 일어나는 것과 같이, 모든 STAR 제어기에 걸친 LBA 어드레스 스트립에 관계된 판독 및 프로그램 동작의 완전히 동기식 실행을 가능하게 한다.
비동기 다이 관리를 구현하는 STAR 제어기에 연관된 LBA 범위에 걸친 2개의 연속한 LBA 스트립에 관계된 판독 및 프로그램 동작은 동일 채널 상에 2개의 다이에서 완전히 병렬로는 아니지만, 동시에 실행될 수 있다. 두 다이에 혹은 이로부터 데이터 전송은 이들이 동일 채널을 공유하고 있기 때문에, 직렬화되어야 한다. 그러므로, 2개의 다이에서 판독 혹은 프로그램 동작은 완전히 병렬로는 아니지만, 중첩된다.
위에 기술된 비동기 다이 동작은 STAR 제어기당 서로 같지 않은 수의 다이를 가진 동작을 가능하게는 특징이다. 그러므로, 이하 기술되는 것과 같은 다수-층 메모리 시스템의 설계에서 총 물리적 오버 프로비저닝(over provisioning)은 한 다이, 혹은 다이-쌍의 입도로 정의될 수 있는데, 이는 특정 레벨의 수행에 대해 드라이브의 비용을 최소화할 수 있다.
STAR 제어기들 각각에서 실행되는 비동기 다이 알고리즘(1712)에 의해 수신되는 입력들의 유형은 판독 코맨드, 기입 코맨드 및 트림 코맨드를 포함할 수 있다. 비동기 다이 알고리즘이 층당 다수의 파티션들을 갖는 다수-층 드라이브에서 사용되는 실시예에서, 수신되는 기입 코맨드는 위에 기술된 랜덤 및 순차 데이터 유형들과 같은, 서로 다른 데이터 유형들에 대한 기입 코맨드로 더욱 분할될 수 있다. 일 실시예에서, 어떤 트랜잭션의 실행은 기입 코맨드 및 트림 코맨드가 수신된 순서로 처리되는 반면, 판독 트랜잭션은 즉시 처리되게 하는 순서로 될 수 있다. 다이 메타페이지가 32KB인 실시예에서, 판독 트랜잭션은 최대 한 다이 메타페이지까지 2KB의 임의의 배수에 대한 것일 수 있고, 기입 트랜잭션은 한 메타페이지이며, 트림 트랜잭션은 한 메타페이지의 데이터 페이로드 길이를 갖는다.
비동기 다이 알고리즘이 다수-층 및 다수-파티션 메모리 시스템을 갖는 메모리 시스템에서 구현될 수 있을지라도, 다른 실시예에서, 비동기 다이 관리 알고리즘은 또한 파티션을 가진 혹은 없이 단일 층 다이를 갖는 더 단순한 메모리 시스템에 구현될 수 있다.
채널당 서로 같지 않은 수의
다이
위에 기술된 것과 같은 비동기 다이 관리 프로토콜을 이용하는 플래시 메모리 시스템의 한 이익은 메모리 시스템이 채널당 서로 같지 않은 수의 다이를 가질 수 있게 한번에 메모리 한 다이를 확장하는 능력이다. 즉, STAR 제어기의 한 인스턴스는 STAR당 다이의 수가 서로 같지 않을 수 있게 메모리 시스템 내 STAR 제어기의 임의의 다른 인스턴스와는 다른 수의 다이에 연관될 수 있다. 앞에 언급된 바와 같이, 다수의 메모리 다이를 포함하는 일부 플래시 메모리 시스템에서, 고 기입 수행은 이를테면 동기식 다이 관리 아키텍처에서와 같이, 데이터가 증가된 병행도로 프로그램되는 메타블록에 다수의 다이로부터의 블록들을 링크함으로써 달성된다. 그러므로, 시스템 내 총 다이 수는 다이 수의 배수이며 -이에 걸쳐 메타블록들이 형성된다-, 물리적 오버헤드라고도 하는 것인, 물리적 용량 오버 프로비저닝을 정밀하게 제어하는 것은 가능하지 않다.
다시 도 15를 참조하면, 채널당 같은 수의 다이의 예는 8 채널(1502) 각각이 4 NAND 다이를 포함하는 NAND 어레이(1500)에서 볼 수 있다. 동기식 다이 관리 수법, 예를 들면 도 16에 도시된 것과 같은 제어기(1602)에 채용된 동기식 다이 관리 알고리즘에서, 한 어레이의 8개 제어기(1602) 각각은 각 제어기(1602)에 의한 기입 동작이 증가된 병행도를 위해 모든 4 NAND 다이에 걸쳐 스트립하는 메타페이지를 이용하도록 서로 다른 채널들(1502) 상에 각각 한 다이로, 어레이(1500)로부터 4 다이를 관리한다. 이 유형의 동기식 다이 관리는 다수의 다이를 요구하기 때문에, 채널당 서로 같지 않은 수의 다이를 취급할 수 없다.
비동기 다이 관리 알고리즘을 사용하는 것은 메모리 채널들에 부착된 서로 같지 않은 수의 다이로 동작을 할 수 있게 함으로써, 플래시 메모리 시스템 내 다이의 수가 하나의 정밀도로 제어될 수 있게 한다. 비동기 다이 관리 알고리즘을 통한 제어의 다이 레벨 입도는 SSD의 총 물리적 오버헤드를 관리하는데 도움을 줄 수 있다. 플래시 저장 장치의 총 물리적 오버헤드는(Physical_capacity - LBA_capacity)/LBA_capacity으로서 정의된다.
일부 물리적 오버헤드는 다수의 이유로 플래시 저장 장치에서 요구된다. 이것은 가비지 수거 동안 데이터 재배치 량을 감소시키기 위해서 드라이브 내 폐용 데이터의 축적을 위한 공간을 허용한다. 물리적 오버헤드는 또한 오류 관리를 위한 예비 용량을 공급할 뿐만 아니라, 제어 데이터 및 시스템 데이터의 저장을 위한 공간을 허용한다. 또한, 물리적 오버헤드는 주 데이터 저장층에서보다 셀당 더 적은 비트를 가진 NAND 기술을 사용하여 추가의 데이터 저장층, 예를 들면 위에 언급된 듀오2 혹은 듀오3 다이와 같은 2개 다이 층으로 구성된 SSD와 같은, 듀오 드라이브에서 X1 층, 혹은 3 다이 층을 갖는 트리오 드라이브에서 X1 및 X2 층의 사용을 허용할 수 있다.
메모리 시스템을 위한 랜덤 기입 능력은 일반적으로 메모리 시스템에서 가용한 물리적 오버헤드에 관계된다. 이에 따라, 추가의 물리적 오버헤드는 메모리 시스템의 수행을 개선하는데 도움을 줄 수 있다. 가비지 수거와 같은 유지관리 동작에서, 제어기는 블록 내 유효 데이터를 재배치할 필요가 있고, 이 동작을 행하기 위한 오버헤드 시간은 유효 데이터를 내포하는 블록들의 백분률에 달려있다. 더 많은 오버 프로비저닝(예를 들면 물리적 공간 대 논리적 공간의 더 큰 비)를 갖고, 주어진 블록으로부터 덜 유효한 데이터가 재배치될 필요가 있을 수 있다.
추가의 물리적 용량(고정된 논리적 용량을 넘어선)을 갖는 것으로부터 이익을 얻을 수 있는 메모리 시스템에서 다른 작업들은 메모리 시스템의 허용오류가 개선될 수 있는 패리티 수법과 같은 작업을 포함한다. 기입된 각 페이지에 대해 배타적 또는 (XOR) 동작이 수행되고 결과가 저장된다면, 시스템은 한 완전한 페이지의 유실에(데이터를 저장하는 오류 정정 코드(ECC)는 더 적은 유실된 데이터만을 정정할 있다) 관대할 수 있다. 과잉의 물리적 용량은이 혹은 다른 작업들을 위해 사용될 수 있다. 패리티와 같은 이유로 시스템에 대해 추가의 물리적 저장이 필요하다면, 채널당 서로 같지 않은 수의 다이을 포함하는 능력은, 위에 논의된 동기식 알고리즘에서와 같이이 예에서 메타블록 기입에 필요한 완전한 한 세트의 4 다이를 추가할 필요없이, 특정한 필요성에 맞춘 물리적 용량에 증가를 허용한다. 임의의 한 채널에 단일 다이만을 추가하는 능력은 비용 공간 절연을 제공할 수 있다.
채널당 서로 같지 않은 다이 배열의 예가 도 19에 도시되었다. 도 19의 예에서, 메모리 어레이(1900)는 채널 C1-채널 C3에 4 NAND 다이(1902)와 채널 CO에 5 NAND 다이(1902)를 가진 4 채널 어레이(채널 C0-채널 C3 참조)이다. 이 예에서, 개별 STAR 제어기가 각 채널에 배당되며, STAR 제어기들이 도 17-도 18에 관하여 도시되고 기술된 바와 같이 비동기 다이 알고리즘 능력을 탑재하는 것으로 가정한다. 용이한 예시를 위해서, 도 19 내 각 다이는 특정 다이(2002)를 관리하는 STAR 제어기 번호(S0-S3)로 표기되었다.
비동기 다이 관리 알고리즘을 이용하여, 다수의 다이는 한 STAR 제어기에 의해 관리되는 한 채널 상에서 비동기적으로 동작할 수 있다. 특정 메모리 시스템 내 서로 다른 STAR 제어기들은 동일 논리적 용량을 가질 필요가 없기 때문에, 다이 카운트는 STAR 제어기에서 비대칭으로 증가될 수 있고, 물리적 오버헤드는 도 20에 도시된 바와 같이 한 다이의 배수로 조율될 수 있다. STAR 제어기들 간에 논리 블록 어드레스(LBA)의 할당을 취급하고 물리적 용량이 하나, 혹은 전부보다 소수의 STAR 제어기에서 증가되고 있을 때 전체 메모리 시스템을 위한 물리적 오버헤드를 조절하기 위해서, STAR 제어기에 LBA 할당을 위한 수법이 고찰된다.
도 20 및 도 21을 참조하면 도 19에 도시된 서로 같지 않은 다이 할당을 가진 NAND 어레이(1900)에서 사용하기 위한 한 이러한 LBA 할당 수법이 도시되었다. LBA 할당을 관리하기 위해서, LBA 메타페이지(2002)는 LBA 그룹(2004)이라고 하는 세트들 내 연속한 STAR 제어기들에 걸쳐 스트립된다. 도 19에 과외의 물리적 용량이 다이(1904)로부터 제1 채널 CO에만 추가될지라도, 전체 메모리 어레이(1900)는 다이 각각에 대해 똑같이 고정된 량의 논리 어드레스 공간을 재할당함으로써 오버 프로비저닝으로부터 이익을 얻게 한다.
도 20에 LBA 그룹의 구조는 도 19에 STAR 제어기에(즉 각 채널에) 다이 할당에 있어서의 비대칭을 반영한다. 도시된 바와 같이, 연속한 STAR 제어기에 LBA 할당에 있어서의 불연속성은 LBA 그룹들(2004) 간에 경계에서 일어난다. 이에 따라, 고정된 수의 LBA 어드레스들은 물리적 오버헤드 백분률이 각 STAR 제어기에 대해 동일하게 되도록 STAR 제어기 각각에 프론트 엔드에 배당된다. 도 19의 예에 있어서 LBA 어드레스(2002)의 할당은 또한 도 21-도 22에서 호스트 LBA(다이 메타페이지에) 수(2102), 연관된 STAR 제어기 ID(2104)(이 예에서 S0-S3) 및 각각의 STAR 제어기에서 LBA 메타페이지(2104)의 오프셋(2106)의 형태로 도시되었다. 이 채널당 서로 같지 않은 다이 배열에서 여러 STAR 제어기들에 LBA 할당의 관리는 수신된 LBA(각 다이 메타페이지에 대해)에 연관된 데이터에 대해 STAR ID STAR 오프셋을 출력하는 메모리 장치 내 프로세서에 의해 실행되는 LBA 스플리터 기능(2200)에 의해 구현될 수 있다.
프로그램 사이클 수법
프로그램 사이클은 표1-표3에서 위에 기술된 바와 같이 단일의 완전한 프로그래밍 세트가 수행되는 한 다이 내에 소정의 프로그램 동작들의 버스트이다. 이것은 정의된 량의 호스트 데이터가 한 다이-층 내 기입 블록들에 프로그램되게 하며 소정의 결과적인 유지관리 프로그래밍 동작이 다른 다이 층 각각에서 필요하다면 수행되게 한다.
다수층 메모리의 층 각각에서 요구되는 유지관리 동작은 호스트 데이터 기입 및 유지관리 동작의 최적 스케쥴링을 허용하기 위해 미리 알려질 필요가 있다. 유지관리 동작 제어를 위한 현존의 수법은 주도적이지 않고 호스트 행동에 반응적이다.
일 실시예에서, 본원에서 기술되는 프로그램 사이클 방법은 호스트로부터 데이터를 프로그램할 때 겪게되는 최대 레이턴시를 감소시키기 위해서 메모리층들 각각에서 프로그램 동작을 스케쥴링하기 위한 수법이다. 프로그램 스케쥴링은 프로그램 사이클이라고 하는 프로그래밍 버스트에서 관리되며, 이는 모든 메모리층에 걸쳐 있을 수 있다. 유지관리 동작은 프로그램 사이클 동안에 층에 새로운 데이터를 기입할 때 소비되는 것들을 대체할 자유 블록을 생성하기 위해 사전에 결정되며, 각 프로그램 사이클은 새로운 호스트 데이터의 기입을 소정의 유지관리 동작과 인터리브한다. 프로그램 사이클 동안, 고정된 량의 호스트 데이터는 프로그램되고 유지관리 동작들 사이에 똑같이 점재될 수 있다. 이것은 상황들의 임의의 드문 조합 하에서, 호스트 코맨드가 메모리 시스템으로부터 수락불가하게 긴 응답 시간을 겪는 것을 방지하기 위해 행해진다. 일 구현예에서, 프로그램 사이클 동안, 유지관리 동작을 위한 호스트 데이터 및 데이터의 버스트는 드라이브의 현재 동작 상태에 따라, 꾸준한 레이트로 인터리브된다.
층당 두 파티션을 가진 위에 기술된 트리오 다이와 같은 다이는 통상적으로 동시에 활성인 두 프로그램 사이클을 가지며 이 중 하나는 각각의 상이한 파티션을 위한 것이어야 한다. 여기에서 한 사이클은 랜덤 호스트 데이터를 위해 활성일 수 있고 다른 하나는 순차적 호스트 데이터를 위해 활성일 수 있다. 다이는 일반적으로 물리적 한계에 기인하여 한번에 단일 동작만을 실행할 수 있기 때문에, 다이에서 두 프로그램 사이클의 인터리빙 또한 명확히 제어된다.
일 실시예에서, 호스트 데이터 동작 및 유지관리 동작이 다양한 가능한 시나리오를 감안하기 위해 소정의 조합으로 배열되는 프로그램 사이클 방법을 구현하기 위해서, 공통의 프로그래밍 유닛이 사용된다. 특정 다이 층에 대한 단일 메타블록의 프로그램 유닛은 프로그래밍 동작이 다이의 한 층에만 영향을 미친다면, 혹은 메타블록 내 데이터의 량이 다이의 모든 층들 간에 일정하였다면 수락가능할 것이다. 그러나, 프로그래밍 동작은 서로 다른 층들 내 셀당 상이한 비트 밀도가 있는 서로 다른 층들 상에서 연속되는 동작에 이르게 할 수 있기 때문에, 한 층 내 메타블록 데이터는 동일 다이 내 셀당 더 많은 비트 밀도 층에서 메타블록 데이터 미만이다. 이에 따라, 프로그램 사이클이 취급할 수 있는 데이터 유닛은 호스트 데이터 기입 동작이 호스트 데이터가 수신되는 층 밖에서 유지관리 동작을 초래하지 않을 것이라면 메타블록의 호스트 데이터일 수 있고, 혹은 다이의 모든 층들에 효율적으로 작동하는 크기의 프로그램 유닛일 수 있다.
본원에서 사용되는 바와 같이, 프로그램 유닛(PU)은 각 유형의 다이, 즉 트리오, 듀오2 및 듀오3에 대해 일정한 량의 데이터이다. PU는 다이 층(X1, X2 & X3)에서 개개의 메타블록 유형들에서 메타페이지 수의 최소 공배수인 고정된 수의 메타페이지를 포함한다. 이것은 프로그램 사이클 동안 층에 기입되는 혹은 층들 간에 이동되는 데이터가 항시 프로그램되는 층 내에 메타블록 크기의 배수가 될 수 있게 한다. 특정 다이 유형에 대한 PU 크기의 예는 트리오, 듀오2, 및 듀오3 다이에 대해 표4-표6에 예시되었다.
Nand | 프로그램 유닛(PU) | |||
다이 유형 | 워드라인/블록 | 메타블록 | 메타페이지 | |
X1층 | eX3 | 86 | 6 | 516 |
X2층 | eX3 | 86 | 3 | 516 |
X3층 | eX3 | 86 | 2 | 516 |
* 트리오 다이에서 PU의 정의
Nand | 프로그램 유닛(PU) | |||
다이 유형 | 워드라인/블록 | 메타블록 | 메타페이지 | |
X1층 | eX3 | 86 | 6 | 516 |
X2층 | eX3 | 86 | 3 | 516 |
* 듀오2 다이에서 PU의 정의
Nand | 프로그램 유닛(PU) | |||
다이 유형 | 워드라인/블록 | 메타블록 | 메타페이지 | |
X1층 | eX3 | 86 | 3 | 258 |
X2층 | eX3 | 86 | 1 | 258 |
* 듀오3 다이에서 PU의 정의
트리오 다이 및 듀오2 다이의 층들 각각에 정수 개수의 메타블록들로 구성되는 최소 공배수의 메타페이지들은 516 메타페이지이고, 반면 듀오3 다이 내 최소 공배수는 258 메타페이지이다. 이에 따라, 트리오 및 듀오2에 대한 PU는 516 메타페이지이고 듀오3에 대해선 258 메타페이지이다.
특정 다이에 적합한 PU를 이용하여, 특정 다이를 위한 STAR 제어기는 메모리 장치에 한 PU 분량의 데이터의 다음 호스트 기입을 취급하기 위해 소정의 수의 프로그램 사이클 유형들 중 어느 것이 실행될 것인지를 판정할 수 있다. 도 23을 참조하면, 3-층 및 2-층 메모리 다이에 대한 트리오 알고리즘의 실시예에서 완전한 한 세트의 가능한 프로그램 사이클 유형들이 예시되었다. 이들 프로그램 사이클 유형들은 위에 표1-표3에 정의된 프로그래밍 세트에 대응한다. 다이는 일 실시예에서, 동시에 랜덤 프로그램 사이클 및 순차적 프로그램 사이클을 실행할 수 있기 때문에, 반대되는 부류의 사이클들은 도 23에 각 다이에서 임의의 쌍이 되어졌다. 동작하는 메모리의 다이에서 임의의 주어진 시간에 쌍이 된 특정 사이클들은, 계류중에 있는 호스트 데이터 기입들의 유형 및 다이의 여러 층의 상태(예를 들면 자유 블록의 수 및 유효 데이터 대 LBA 용량의 비, 등등)에 의존할 것이다.
이제 도 24를 참조하면, 다이 층 상황(예를 들면 자유 블록 수 및 각 층 내 LBA 용량에 관련하여 유효 데이터의 량)에 기초하여, 트리오 알고리즘을 구현하는 STAR 제어기를 위한 판단 프로세스의 차트(2402)가 예시되었다. 도 24에 열거된 프로그램 사이클 유형들은 표1에 정의된 프로그래밍 세트에 대응한다. STAR 제어기는 바람직하게는 도 24에 도시된 바와 같이 다이 층 상황의 제약 내에서, 가능한 가정 적은 수의 다이 층을 포함하는 프로그램 사이클 유형을 선택한다. 앞서 언급된 바와 같이, 임의의 주어진 층에서 데이터를 이동 혹은 재배치할지 여부에 대한 판단 기준들은 상이하거나 같을 수 있다. 또한, 특정 기준들(예를 들면 최소수의 자유 블록)의 임계값은 각 층에서 같거나 상이할 수 있다. 도 24의 N 블록 혹은 N PU에서 "N"이라는 용어는 한 자유 블록의 순이익을 달성하기 위해 재활용 사이클에서 완전히 채워져야 하는 재배치 블록들의 수를 지칭한다. 선택된 프로그램 사이클에서 다이-층들을 링크하기 위해 사용될 수 있는 데이터 경로가 도 12에 기술되었다. 앞서 언급된 바와 같이, STAR 제어기는 한번에, 각 파티션에 대해 하나씩인, 다이에서 활성인 두 프로그램 사이클을 가질 수 있고, 두 프로그램 사이클 각각은 다른 것과 인터리브된다.
프로그램
스케쥴링
수법
위에 언급된 바와 같이, 다음 호스트 데이터 기입을 위해 필요한 프로그램 사이클은 다음 호스트 데이터 기입에 앞서 판정된다. 프로그램 사이클이 도 24에 가용한 프로그램 사이클 유형들에 따라 정의되어졌을 때, 프로그램 사이클 과정에서, 다이-층 각각에서 프로그램될 메타페이지들의 정확한 수는 미리 알려진다. 그러나, 일 실시예에서, 다이는 통상적으로 완전히 비동기적으로 개시되어졌던, 2개의 동시에 활성인 프로그램 사이클들(각 파티션에 하나)만을 갖는다. 그러므로 개시되고 있는 프로그램 사이클에 대해 유지관리 프로그래밍 동작 및 호스트 데이터 프로그래밍 동작들 간에 인터리브 비는 이미 활성인 프로그램 사이클에서 미이행 프로그램 동작을 고려하여야 한다. 활성인 프로그램 사이클에 대해선 인터리브 비에 어떠한 변경도 행해지지 않는다.
다음 원리에 따른 프로그램 인터리브 수법은 호스트 데이터의 흐름 및 유지관리 프로그램 동작을 생성하기 위해 다이에서 두 프로그램 사이클에 대한 인터리빙 동작을 위해 채택된다. 다이에서 프로그램 사이클은 같은 부류(랜덤 혹은 순차적)의 이전의 사이클이 완료된 후에만 개시될 수 있다. 프로그램 사이클은 반대 부류(랜덤 혹은 순차적)의 프로그램 사이클이 다이에서 이미 활성일 때 다이에서 개시될 수 있고, 두 사이클은 중첩할 수 있다.
중첩하는 프로그램 사이클이 동일 다이-층에서 유지관리 동작을 가질 때, 제1 사이클에서 유지관리 동작은 제2 사이클에서 유지관리 동작이 시작될 수 있기 전에 완료되어야 한다. 중첩하는 프로그램 사이클이, 서로 다른 다이-층들에서 유지관리 동작들을 가질 때, 다이 층들에서 유지관리 동작들은 동시에 수행될 수도 있다. 개시되는 프로그램 사이클에서 호스트 데이터 기입 동작들은 동일 사이클에서 유지관리 동작들과 중첩되고 있는 활성 사이클에서 미이행 유지관리 동작 둘 다와 인터리브되어야 한다.
프로그램 사이클이 개시될 때, 사이클에서 호스트 데이터 기입 동작에 대해 수행되어야 하는 각 다이-층 내 최소수의 유지관리 동작에 대해 별도의 인터리브 비가 정의된다. 프로그램 사이클의 실행 동안, 호스트 데이터 기입 동작은 이전 호스트 기입 동작에 대해 각 다이-층에서 이미 수행되는 유지관리 동작들의 수가 각 다이 층에 대한 요구되는 인터리브 비보다 크거나 같을 경우에만 허용된다.
또한, 배경 사이클이 다른 파티션에서 활성인 동안 프로그램 사이클이 개시된다면, 새로운 프로그램 사이클에 대해 수립된 인터리브 비는, 이 사이클에서 모든 유지관리 동작을, 배경 사이클에 관한 단락에서 이하 더 상세히 논의되는 바와 같이, 배경 사이클에서 모든 미이행 유지관리 동작과 함께 포함하여 한다.
STAR 제어기가 관리하고 있는 각 다이에 대해이 제어기에 의해 실행되는 프로그램 스케쥴링 알고리즘의 목적은 가능한 한 균일한 호스트 데이터 기입 레이트를 제공하는 방식으로 각 프로그램 사이클 동안 호스트 데이터의 기입 및 유지관리 동작을 함께 스케쥴링하는 것이다. 이것은 호스트 기입 및 유지관리 기입이 균등하게 분포되도록 호스트 데이터가 기입되는 레이트를 근본적으로 감소시킴으로써 달성된다. 제어기에서 프로그램 스케쥴링 알고리즘은 프로그램 사이클 혹은 중첩하는 프로그램 사이클 동안 다이에서 기입(호스트 혹은 유지관리 기입)되고 있는 다수 PU들을 제어기가 균형을 맞출 수 있게 할 것이다. 프로그램 스케쥴링 알고리즘은 호스트 데이터가 특정 다이에서 수신될 수 있을 미지의 레이트들을, 그리고 특정 다이 상에서 동시에 실행되는 프로그램 사이클을 보상할 수 있다. 프로그램 스케쥴링 방법의 부분으로서, 제어기는 유지관리 동작이 한 주어진 프로그램 사이클 동안 호스트 기입 비에 요구되는 유지관리 동작을 종종 앞설 수 있도록 호스트 데이터가 지연된다면 유지관리 동작이 프로그램 사이클에서 진행할 수 있게 할 것이지만, 다이에서 유지관리 동작을 만회할 필요성이 없게 되도록 유지관리 동작 대 호스트 기입 동작의 요구되는 비 내에 있게 호스트 기입 동작을 제한할 것이다.
한 프로그램 사이클(이 예에서 도 23 및 도 24에 개시된 바와 같은 R1233 사이클) 동안 각 층에서 호스트 기입 동작과 유지관리 동작 간에 인터리빙하는 예가 도 25 및 도 26에 도시되었다. 도 25에서, X1 , X2 및 X3 층들 각각이 별도의 다이 상에 있고 트랜잭션을 위한 PU가 516 메타페이지인 것으로 가정한다. 이에 따라, 도 25에 모든 층에서 프로그래밍은 동시에 일어날 수 있다. 그러나, X1 층에 기입되는 호스트 데이터 량은 X3 층에서 더 느린 유지관리 프로세스가 요구하는 시간 동안 X1 호스트 데이터 기입을 더 넓히기 위해서 다른 다이의 X2 층 및 X3 층에서 동시적인 유지관리 활동들과 인터리브된다. 이에 따라, 호스트 데이터의 한 PU는 모두 동시에 기입되지 않고, 대신에 도 25에서 시간적으로 간격을 두며, 특정 프로그램 사이클 동안 유지관리 데이터의 페이지 기입에 호스트 데이터의 페이지 기입의 각 층(X1, X2, X3)에 대한 인터리브 비가 유지되고 초과되지 않도록 프로그램 사이클에 대해 요구되는 X2 및 X3 유지관리 동작과 인터리브된다. 제어기에서 프로그램 스케쥴링 알고리즘은 각 층에 대한 인터리브 비가 프로그램 사이클 내에서 호스트 기입 동작 대 유지관리 동작의 수를 결코 초과하지 않게 제어기가 PU 내에서 호스트 페이지 기입(여기에서는 X1에) 레이트를 감소시킬 수 있게 할 것이다. 도 26에 도시된 바와 같이, 모든 3개의 층이 동일 다이 상에 있다면, 각 층에의 기입들은 인터리브되는데, 그러나, 단일 다이 상에서 한번에 한 동작만이 실행할 수 있는 일반적인 물리적 제한 때문에 스태거된 방식으로 인터리브된다.
특정 다이에서 프로그램 사이클들의 중첩의 예가 도 27에 도시되었다. 도 27에서, 다이는 트리오 다이(3개 층)이고 어떤 프로그램 사이클을 이행할지를 선택하기 위한 특정 다이를 관리하는 제어기에 의해 사용되는 판단 프로세스는 도 24의 프로세스인 것으로 가정한다. 도 27에 도시된 일련의 프로그래밍 사이클들은 R1233 프로그래밍 사이클(PC1), S23 프로그래밍 사이클(PC2) 및 R123 프로그래밍 사이클(PC3)이다. 이 예의 목적을 위해서, PC1은 그외 어떤 다른 프로그램 사이클도 다이에서 활성이 아닐 때 개시되고, 그러므로 자신에만 관계된 인터리브 비로 동작한다. 이 경우에 1 PU의 데이터는 X2 층에 기입되고 3 PU의 데이터는 X3 층에 기입된다. 이에 따라, X2:호스트 인터리브 비는 1이고 X3:호스트 인터리브 비는 3이다.
유형 S23의 프로그램 사이클(PC2)은 200 메타페이지의 호스트 데이터가 PC1에서 프로그램되어진 후에 개시(임의로)되고 PC1과 중첩한다. PC2 에서 호스트 데이터 프로그램 동작과 인터리브되어야 하는 X3에서 유지관리 동작의 수는 PC1에 미이행 948 메타페이지와 PC2에 516 메타페이지를 포함하여, 1464 메타페이지이다. 이에 따라, X3:호스트 인터리브 비는 2.84(=X3으로의 남은 유지관리 메타페이지/X2로의 호스트 데이터 = 1464/516 = 2.84)이다.
유형 R123의 프로그램 사이클 PC3은 PC1이 완료되었을 때 개시되지만, X3에서 이의 유지관리 동작은 PC2에 대한 것들이 완료되기 전까진 시작될 수 없다. 그러나, X2에서 유지관리 동작은 X2에서 어떠한 중첩하는 프로그램 사이클도 수행되고 있지 않기 때문에, 즉시 시작할 수 있다. 이 시점에서, X2:호스트 인터리브 비는 1이고 X3:호스트 인터리브 비는 2이다.
호스트 데이터의 도착 레이트가 프로그램 사이클 동안 인터리브 비에 의해 요구되는 유지관리 동작 수행 레이트와 부합하거나 이를 초과한다면 사이클은 호스트 데이터 메타페이지 및 유지관리 메타페이지의 버스트의 균일한 인터리빙을 갖고 진행한다. 이 경우에, 프로그램 사이클은 유지관리 데이터의 마지막 메타페이지가 프로그램되어졌을 때 완료된다.
그러나, 호스트 데이터의 누적적 도착 레이트가 이의 요구되는 인터리브 비에 따라 프로그램 사이클에 의해 수용될 수 있는 것보다 낮다면, 모든 요구되는 호스트 데이터는 유지관리 데이터의 마지막 메타페이지가 프로그램되어졌을 때 프로그램되어져 있을 않게 될 것이다. 그러므로 프로그램 사이클은 완료되지 않는다. 프로그램 사이클은 이의 호스트 데이터 기입 블록이 오픈하여 있지만 유지관리는 비활성이어서 오픈된 채로 있는다. 추가의 호스트 데이터는 인터리브된 유지관리 동작에 대한 필요성없이 프로그램 사이클에 기입될 수 있다. 프로그램 사이클은 프로그램 사이클 유형에 따라, 모든 요구되는 호스트 데이터가 프로그램되어졌을 때, 즉 전체 메타블록 혹은 전체 PU가 프로그램되어졌을 때만 완료된다.
위에 논의된 프로그램 사이클 수법의 잇점은 후속되는 호스트 기입보다 앞서 프로그래밍 유닛 분량의 공간을 비워두기 위한 필요한 유지관리 동작의 앞당겨진 결정을 허락한다는 것이다. 프로그램 스케쥴링 수법의 부분으로서, 한 프로그램 사이클이 수행되어질 복수의 다이 내에 한 세트의 링크된 층들이 확인된다. 링크된 층들은 한 다이 내에 혹은 복수의 다이 내에 있을 수 있다. 프로세스는 다이 내에 층이 특정 유형의 데이터(예를 들면 랜덤 혹은 순차적)에 대해 단지 한 프로그램 사이클에만 포함될 수 있게 하며 다이 내에 층이, 서로 다른 유형들의 데이터에 대해 두 프로그램 사이클에 포함될 수 있게 한다.
위에 언급된 바와 같이, 호스트 데이터 기입 및 유지관리 동작의 최적의 스케쥴링을 허용하기 위해 다수-층 메모리의 층들 각각에서 어떤 유지관리 동작들이 요구되는가를 미리 아는 것이 잇점이 있다. 유지관리 제어를 위한 현존의 수법은 일반적으로 주도적이지 않고, 호스트 행동에 반응적이다. 일 실시예에서, 데이터를 다른 블록에 재배치하기 위한 호스트 데이터 프로그래밍 동작 및 유지관리 프로그래밍 동작은 곧 시작될 일련의 동작에 대해 미리 결정된다. 각 프로그래밍 시퀀스는 고정된 길이의 호스트 데이터(예를 들면, 한 프로그램 유닛) 및 가변 길이의 유지관리 데이터(다수의 프로그램 유닛)를 포함한다. 호스트 데이터 프로그래밍에 관하여 유지관리 프로그래밍의 모든 유형들에 대한 요구되는 인터리브 비들은 미리 결정되며, 호스트 데이터 프로그래밍은 모든 인터리브 비 요건을 만족시키기 위해 충분한 유지관리 프로그래밍이 완료되어졌을 때만 허용된다. 이 메커니즘은 호스트 데이터 프로그램 동작이 유지관리 프로그램 동작들 간에 균일하게 스케쥴링되어질 수 있게 한다. 이에 따라, 호스트 데이터에 대한 최소 레벨의 응답성은 프로그램 사이클별로 유지된다.
메모리 시스템에 호스트 데이터의 프로그래밍과 메모리 시스템 내 블록들 간에 데이터의 재배치를 인터리빙하는 방법은 동작 시퀀스 동안 프로그램될 호스트 데이터량 및 재배치된 데이터량을 사전에 결정하는 것을 포함할 수 있다. 재배치된 데이터로 프로그램될 각 유형의 블록에 대해서, 호스트 데이터에 대한 이의 요구되는 프로그램 인터리브 비를 사전에 결정한다. 프로그램 사이클 동안 제어기는 프로그램되는 각 층에 대해 호스트 데이터에 관한 현재의 누적 프로그램 인터리브 비를 판정하여 각 층에 대한 현재 누적 프로그램 인터리브 비가 이의 요구되는 프로그램 인터리브 비를 초과할 경우 호스트 데이터가 프로그램될 수 있게 한다.
이 누적 프로그램 인터리브 비는 특정 프로그램 사이클 동안 호스트 데이터에 대한 페이지 기입 대 유지관리 동작 기입의 비이다. 제어기는 프로그램 사이클 동안 호스트 데이터를 수신하는데 있어 지연이 있다면 유지관리 동작 기입 수가 인터리브 비를 초과하게 하지만 호스트 데이터 기입이 인터리브 비를 초과하진 않게 할 것이다. 층에서 일어나는 동시적 중첩하는 프로그램 사이클들이 있을 때, 특정한 요구되는 인터리브 비는 다이 층에 대한 제2 파티션에서 진행중의 프로그램 사이클과 중첩된 프로그램 사이클(PC2)(비 = 2.84)에 대해 도 27에서 계산된 것과 같이, 수정된 인터리브 비일 수 있다. 이들 인스턴스들에서, 제어기에 의해 실행되는 프로그램 스케쥴링 알고리즘은 사이클에서 기입 동작이이 수정된 인터리브 비를 초과하지 않음을 확실히 하기 위해 사이클 동안 누적 인터리브 비를 수정된 인터리브 비과 비교할 것이다.
도 28을 참조하면, NAND 드라이버(2808)에 의해 실행되어질 프로그램및 카피 트랜잭션을 스케쥴링 하기 위해 각 STAR 제어기(2806) 내에서 비동기 다이 알고리즘(2802) 및 트리오 알고리즘(2804)이 어떻게 함께 동작하는가를 예시한 도 17의 메모리 시스템의 부분이 도시되었다. 트리오 알고리즘(2804)은 프로그램 사이클을 정의 및 개시하고 이들 내에서 유지관리를 관리한다. NAND 다이에서 프로그램 동작은 비동기 다이 알고리즘(2802)에 의해 발행되는 호스트 데이터 프로그램 트랜잭션(기입 트랜잭션(2810)) 및 유지관리 동작을 위해 트리오 알고리즘에 의해 발행된 카피 트랜잭션(2812) 둘 다에 의해 트리거된다. 이들은 NAND 드라이버(2808)에 의해 데이터경로 및 NAND 성분들을 제어하기 위해 디스크립터로 전환된다.
트리오 알고리즘은 호스트 데이터 프로그램 동작들과 함께 수행되어야 하는 임의의 유지관리 동작들을 사전에 결정하고, 프로그램 스케쥴링 알고리즘은 NAND 드라이버(2808)에 의한 실행을 위해 호스트 데이터 프로그램(2816) 및 유지관리 카피 트랜잭션(2812)의 인터리빙을 관리한다.
트리오 알고리즘(2804)으로부터 인에이블 신호(2814)는 비동기 다이 알고리즘(2802)이 호스트 데이터 프로그램 트랜잭션을, 트리오 알고리즘(2804)에 의해 생성되는 유지관리 카피 트랜잭션(2812)과 언제 인터리브할 수 있는지를 시그널링한다. 호스트 데이터 트랜잭션(2816)은 현재 프로그램 사이클 내에서 호스트 데이터 프로그램 트랜잭션(2816)의 수로 나누어진 트리오 알고리즘(2804)에 의해 발행된 유지관리 메타페이지 카피 트랜잭션의 수가 각 층에 대한 요구되는 인터리브 비보다 크거나 같을 때 이행된다.
프로그램 트랜잭션은 NAND 드라이버(2808) 내에서 카피 트랜잭션보다 더 높은 우선도를 가질 수 있고, 그러므로 큐잉된 카피 트랜잭션에 비해 실행에 대한 우선권을 갖는다. 이것은 트리오 알고리즘(2804)에 의해 이행되었을 때 비동기 다이 알고리즘(2802)에 의해 발행되는 호스트 데이터 프로그램 트랜잭션(2816)이 NAND 드라이버(2808) 내 이미 있는 파이프라인된 유지관리 카피 트랜잭션(2812)에 선행하여, 다음 트랜잭션으로서 실행되어질 것임을 의미한다. 트리오 알고리즘은 또한 비동기 다이 알고리즘(2802)이 트리오 다이에서 배경 동작을 이행할 수 있게 하기 위해 다이 상황(2818) 및 유지관리 상황(2020) 정보를 제공한다.
STAR 제어기(2806) 내에 스케쥴링 동작에 관하여, 판독, 프로그램, 소거 및 카피 트랜잭션들은 STAR 제어기(2806)에 의해 NAND 드라이버에 전달된다. NAND 드라이버에서 이들 트랜잭션에 대한 실행 우선도들은 다음과 같을 수 있다: 다이에 대한 미이행 판독 트랜잭션은이 다이에 대한 임의의 다른 트랜잭션 유형에 비해 절대 우선도를 갖는다. 다이에 대한 미이행 프로그램, 소거 & 카피 트랜잭션은 다음 바람직한 우선도를 갖고 실행된다: 프로그램, 소거, 카피.
NAND 드라이버(2808)는 한 트랙에서 병렬 동작을 위해 한 세트의 디스크립터를 구성할 때이 바람직한 우선도 순서에 우선할 수 있다. 다이-층에 대한 동일 유형의 트랜잭션은 이들이 NAND 드라이버에 발행되는 순서로 완료되어야 한다. 다이-층에 대한 서로 다른 유형들의 트랜잭션들은 이들이 NAND 드라이버에 발행되는 것과는 다른 순서로 완료될 수도 있다. 서로 다른 다이-층들에 대해 동일 유형의 트랜잭션들을 위한 프로그램 단계들의 실행은 다이-층들 간에 똑같이 사이클링할 것이다.
일 실시예에서, 시퀀서 디스크립터에 의해 개시되는 NAND 동작은 인터럽트될 수 없지만, NAND 드라이버에 보내지는 트랜잭션은 일부 경우에 있어선 인터럽트될 수도 있다. 그러나, X1 혹은 X2 다이-층에서 트랜잭션은 인터럽트될 수 없고, 진행중인 X3 다이-층에 대한 카피 트랜잭션은 동일 다이에 대한 임의의 미이행 판독 혹은 프로그램 코맨드에 의해 인터럽트될 수 있다. 미이행 판독 혹은 프로그램 코맨드는 현재 진행중인 프로그램 단계의 끝에서 실행될 수 있다.
NAND 드라이버(2808)로부터 응답에 관하여, 다음 응답은 STAR 제어기(2806)에 의해 NAND 드라이버에 보내지는 트랜잭션에 대해 NAND 드라이버에 의해 제공될 수 있다. 판독 트랜잭션에 있어서, 모든 데이터가 DRAM에 있을 때 단일의 응답이 보내진다. 소거 트랜잭션에 있어서, 블록 소거가 완료되었을 때 단일의 응답이 보내진다. X1 혹은 X2에서 프로그램 트랜잭션에 대해서, 다음의 응답이 보내질 수 있다: 트랜잭션의 실행에 관계된 모든 디스크립터가 데이터경로 하드웨어에 로딩되어졌을 때 제1 응답이 보내지고; 프로그램 동작이 완료되었을 때 최종 응답이 보내진다. X1 혹은 X2에서 카피 트랜잭션에 대해서, 다음 응답이 보내질 수 있다: 데이터가 판독되어 DRAM에 전송되어졌고 트랜잭션의 실행에 관계된 모든 디스크립터가 데이터경로 하드웨어에 로딩되어졌을 때 제1 응답이 보내지고; 프로그램 동작이 완료되었을 때 최종 응답이 보내진다. X3에서 카피 트랜잭션에 대해서, 다음 응답이 보내질 수 있다: 데이터가 판독되어 DRAM에 보내졌고 트랜잭션을 위한 제1 프로그램 단계의 실행에 관계된 모든 디스크립터가 데이터경로 하드웨어에 로딩되어졌을 때 제1 응답이 보내지고; 제1 프로그램 동작이 완료되었을 때 제2 응답이 보내지고; 제2 프로그램 동작이 완료되었을 때 제3 응답이 보내지고; 제3 프로그램 동작이 완료되었을 때 최종 응답이 보내진다. 다른 실시예에서, 미이행 중일 수 있는 다이당 각 유형의 최대수의 트랜잭션은 트랜잭션에 대한 최종 응답이 NAND 드라이버에 의해 발행되기 전에 설정될 수 있다.
위에 언급된 바와 같이, STAR 제어기의 인스턴스는 STAR 제어기의 임의의 다른 인스턴스들의 존재 혹은 상태를 모른다. 그러나, NAND 드라이버는 NAND 메모리에서 데이터 수율을 최대화하고 개개의 NAND 다이에서 아이들 시간을 최소화하는 목적을 갖고 시퀀서 하드웨어에 디스크립터의 발행을 스케쥴링한다. 트랙에 그룹화된 동작은 유사한 예상되는 기간을 가질 것이다. 일 구현예에서, 다음 규칙이 준수되어야 한다. 캐시된 프로그램 및 판독 코맨드는 다이에서 동시적 데이터 전송 및 NAND 프로그램 혹은 판독 동작을 허용하기 위해서 어느 곳에서든 사용되어야 한다. 트랙에서 디스크립터는 단일 유형의 동작 즉 판독, 프로그램 혹은 소거에 관계되어야 한다. 프로그램 동작에 관계된 트랙에서 디스크립터는 단일 NAND 유형, 즉, X1, X2 혹은 X3에 대한 것이어야 한다. 프로그램 동작에 관계된 트랙에서 디스크립터는 X2에서 동일 페이지 유형(하위 혹은 상위), 혹은 X3에서 동일 프로그램 단계 유형(LM, 연무(foggy) 혹은 미세(fine))에 대한 것이어야 한다.
재활용 사이클 수법
위에 언급된 바와 같이, 프로그램 사이클은 정의된 량의 호스트 데이터가 한 다이-층 내 기입 블록에 프로그램되게 하며 소정의 결과적인 유지관리 프로그래밍 동작이 각 다이에 대한 여러 다이 층에서 필요하다면 수행되게 한다. 두 유형의 유지관리 동작으로서, 다이 층들 간에 유효 데이터를 이동하는 것과, 재활용 블록으로서 지정된 선택된 클로즈된 블록(폐용 데이터를 가진 이전에 프로그램된 블록)으로부터 층 내에서 유효 데이터를 재배치함으로써 블록들을 재활용하는 것이 특히 기술되었다.
다시 도 8-도 9를 참조하면, STAR 제어기에서 재활용 동작에서 데이터의 일반적인 이동이 도시되었고, 여기에서 여러 선택된 재활용 블록으로부터 유효 데이터는 재배치 블록(802)으로 서로 인접하여 이동된다. 다수-층 다이 내 각 다이 층이 다수 파티션을 포함하는 실시예에서, 재활용 동작은 특정 파티션으로부터 데이터에 연관된 블록으로부터 데이터를 동일 층 내 이 파티션으로부터 데이터에 배타적으로 배당된 하나 이상의 재배치 블록에 재배치한다. 이어, 유효 데이터를 비워낸 재활용 블록은 소거되어 다이 층을 위한 자유 블록 풀에서 가용하게 되고, 나중에, 특정 데이터 유형을 위한 공간에 대한 현재 요구에 따라 어느 한 파티션 용으로 사용된다.
일부 유형의 NAND 메모리에서, 메모리의 층 내 어떠한 블록들도 이 층 내 블록들 내 폐용 데이터에 의해 점유된 용량을 재활용하기 위한 동작의 끝에서 부분적으로 프로그램된 채로 남아 있지 않아야 하는 요건이 있을 수 있다. 또한, 위에 기술된 프로그램 사이클의 효율을 달성하는데 사용하기 위해 모든 그룹의 재활용 동작을 위한 적어도 한 자유 블록의 순이익을 얻는 것이 바람직하다.
재활용 사이클 수법은 본원에서는 재활용 동작의 끝에서 어떠한 재배치 블록도 부분적으로 프로그램된 상태로 남아있지 않게 하는 기준 및 적어도 한 자유 블록의 순이익을 얻는 기준 둘 다를 만족시키기에 충분한 기간을 갖는 가변 기간 재활용 동작으로서 정의된다. 일 실시예에서, 재활용 사이클은 프로그램 사이클 내에 한 세트의 유지관리 동작이며, 이는 데이터가 다이-층 내에 하나 이상의 재활용 블록으로부터 동일 다이-층 내 하나 이상의 재배치 블록에 재배치되어지게 한다. 소거되는 재활용 블록의 수는 할당되고 채워지는 재배치 블록들의 수보다 적어도 하나 더 커야 하는데, 즉, 재활용 사이클은 적어도 한 자유 블록의 순이익을 보여야 한다.
도 29를 참조하면, 재활용 사이클은 제어기가 특정 다이에 대해 적합한 다이 층을 위한 자유 블록 풀로부터 블록을 재배치 블록으로서 할당하는 것을 포함할 수 있다(2902에서). 한 스트링의 선택된 재활용 블록으로부터 모든 유효 데이터는 현재 재배치 블록에 재배치된다(2904에서). 재배치 블록이 채워지게 되었을 때(2906에서), 자유 블록 풀 내 블록의 수가 재활용 사이클의 시작에서 수보다 하나 이상 더 많다면, 재활용 사이클은 완료된다(2908에서). 어느 한 현재의 재배치 블록이 채워지지 않았거나 한 자유 블록의 순이익이 없었다면, 재활용 블록들로부터 재배치 블록들로 데이터의 재배치는 계속된다.
이에 따라, 층 내에서 재배치를 위해, 제어기는 바람직하게는 메모리층 내 정수 개수의 목적지 블록을 채우기 위해서 동일 메모리층 내 복수의 소스 블록들로부터 데이터 재배치 동작을 수행하는데, 이는 메모리층 내 적어도 한 자유 블록을 생성한다. 이것은 다이의 층들 간에 데이터를 이동하기 위한 유지관리 동작과는 대조적이다. 이 인스턴스에서, 목적지 메모리층 내 한 블록을 채우기 위해서 소스 메모리층 내 복수의 블록으로부터 데이터 이동 동작은 소스 메모리층 내 적어도 한 자유 블록을 생성한다.
재활용 사이클에서, 정수 개수의 재배치 블록들은 채워져야 하는데, 그러나 데이터는 비-정수 개수의 재활용 블록들로부터 재배치될 수 있다. 도 29에 기술된 방법에 따라 수행되는 재활용 사이클의 예는 도 30에 도시되었다. 프로그래밍 시간라인을 참조하면, 제1 재배치 블록(재배치 블록 1)은 자유 블록 풀로부터 할당되고, 재활용 블록 1로부터 유효 데이터는 재배치 블록 1에 재배치된다. 이어 재활용 블록 1이 이의 모든 유효 데이터가 이동되어진 후에 비워지게 되었을 때, 자유 블록의 순이익은 한 자유 블록이 재배치 블록 1을 위해 사용되었기 때문에 0이며, 재활용 블록 1을 비우는 것은 단지 현재의 상황을 유지한다. 따라서, 도 30에서 재활용 사이클은 재배치 블록 2 및 재배치 블록 3의 할당을 계속하고, 다른 지정된 재활용 블록들로부터 유효 데이터의 인접한 재-매핑은 1 자유 블록의 순이익을 위해 4개의 재활용 블록(재활용 블록 1-4)을 비우면서, 재배치 블록 3을 채운다. 재배치 블록 3을 완전히 채우기 위해서 재활용 블록 5로부터 전부는 아니지만 몇몇이 필요하였음에 유의한다. 일단 정수 개수의 재배치 블록들을 완전히 채우고 한 자유 블록의 순이익을 달성하는 기준들이 재활용 블록 5로부터 유효 데이터의 재배치를 통해 어느 정도 달성되었다면, 재활용 사이클은 정지한다. 재활용 블록 5에서 나머지 유효 데이터는 후속 재활용 사이클에서 재배치될 수 있다. 도 30의 예가 5 재활용 블록이 3개의 완전한 재배치 블록을 다 채우고 한 자유 블록의 순이익을 달성하는데 필요한 상황을 보이지만, 재활용 사이클 수법은 두 기준들을 달성하기 위해서 재활용 및 재배치 블록의 서로 상이한 비들에 구성할 것이다. 서로 다른 재활용 블록들로부터 이동될 필요가 있는 서로 다른 량들의 유효 데이터는 재활용 사이클을 완료하는데 필요한 재활용 및 재배치 블록들의 수를 변경할 것이다.
재활용 사이클은 프로그램 사이클 및 배경 사이클 둘 다에서 사용된다. 배경 사이클에서, 이하 기술되는 바와 같이, 단지 한 재배치 블록만이 채워지고, 한 자유 블록의 순이익에 대한 요건은 없다.
배경 사이클 수법
기입 코맨드가 계류중에 프로그램 사이클 동안 발생하는 유지관리 동작(예를 들면 주어진 다이 층 내에서 블록 재활용 혹은 한 층에서 다음 층으로 데이터의 이동)에 더하여, 일 실시예에서 수정된 배경 사이클 수법이 고찰된다. 다이 내 배경 동작의 목적은 이의 다이-층 내 자유 블록의 수를 다이에서 전경 동작을 지원하기 위해 요구되는 최소수보다 크게 되게 증가시키는 것이다. 이것은 후속 전경 동작이 소수의 유지관리 동작으로 실행되어 결국에 메모리 시스템에 대해 더 높은 성능을 갖게 한다.
배경 동작은 아이들 다이에서만 실행될 수 있다. 다이는 다이에서 실행하기 위해 어떠한 호스트 데이터 기입 트랜잭션도 큐잉되지 않고 다이에서 어떠한 유지관리 동작도 활성이지 않을 경우에만 아이들이다. 배경 사이클은 임의의 수의 아이들 다이에서 동시에 활성일 수 있는데, 그러나 한번에 단지 하나의 배경 사이클만이 임의의 주어진 다이에서 활성일 수 있다. 비동기 다이 관리 알고리즘을 갖고 배열된 메모리 시스템 아키텍처, 예를 들면 도 17에 도시되고 위에 상세히 논의된 STAR 제어기들 중 하나에서, STAR 제어기는 다수의 아이들 다이에서 배경 사이클을 동시에 개시하고 관리할 수 있다.
배경 사이클은 단일 다이-층 내에서 동작한다. 이것은 위에 기술된 바와 같이 재활용 동작을 수행함으로써 다이-층 내에 자유 공간을 생성한다. 한 배경 사이클은 선택된 다이 층 내에 한 재배치 블록(예를 들면 메타블록)을 2 이상의 재활용 블록으로부터 재배치된 유효 데이터로 채워지게 한다. 다이의 층에서 단일 배경 사이클은 자유 블록의 순이익을 갖게 하지 않을 수 있지만, 다이-층에서 배경 사이클의 지속된 실행은 자유 블록 수에 점진적 증가를 야기함에 유의한다. 배경 사이클은 단일 다이-층 내에 데이터의 재배치를 수행한다. 데이터는 일 실시예에서 프로그램 사이클 내에서 다이-층들 간에 이동될 수 있을 뿐이며, 이는 전경 동작이다.
다이에서 배경 사이클은 비동기 다이 알고리즘으로부터 다이 아이들 조건이 시그널링되고 어떠한 배경 사이클도 현재 다이에서 활성이지 않을 때 개시될 수 있다. 배경 사이클은 바람직하게는 다이 층을 위한 총 유효 데이터량이 최대량을 초과하거나, 자유 블록으로서 존재하는 다이 층 내 미사용된 데이터 용량의 부분이("재활용 비") 소정의 임계 이상인 경우에 다이 층에서 개시되지 않을 것이다.
재활용 비는 공식: 재활용 비 = F/(F+O)에 따라 계산될 수 있는데, F는 층에 대한 자유 블록 내 자유 공간 량이고 O는 층 내 모든 클로즈된(완전히 프로그램된) 블록 내 폐용 데이터의 량이다. 도 31에 도시된 바와 같이, 다이-층(3102) 내 총 데이터 용량은 완전히 프로그램된 후에 클로즈되어진 데이터 블록에 대해 가용한 용량이다. 이것은 다이-층의 총 물리적 용량에서 유보된 블록(3104)에 의해 점유된 용량을 감한 것이다. 이들 유보된 블록은 호스트 데이터(예를 들면 제어 데이터) 이외의 정보를 위한 블록들, 부분적으로 프로그램되어졌지만 여전히 오픈인 데이터 블록들, 및 전경 동작을 위해 필요한 최소수의 자유 블록을 포함한다.
이 총 데이터 용량은 클로즈된 데이터 블록 내 유효 데이터(V), 클로즈된 데이터 블록 내 폐용 데이터(O), 및 과잉 자유 블록에 용량(F)에 의해 점유된 용량을 포함할 수 있다. 과잉 자유 블록은 전경 동작을 위해 요구되는 최소수의 자유 블록을 초과한 자유 블록이다. 배경 동작은 클로즈된 데이터 블록 내 폐용 데이터 용량을 재활용 동작을 수행함으로써 과잉 자유 블록에 용량으로 전환한다.
위에 언급된 바와 같이, 다이-층 내 비 F/(F+O)는 다이-층에 대한 재활용 비로서 알려지며, 자유 블록으로 전환되어진 미사용된 데이터 용량의 부분이다. 재활용 비에 대해 최대값이 존재하며, 이는 다이-층 내 유효 데이터의 어떤 볼륨에든 적용된다. 배경 사이클은 최대 재활용 비에 도달되지 않았다면 개시될 수 없고, 다이-층에서 배경 동작은 덮어쓰기 혹은 트림 동작에 의해 폐용 데이터가 더욱 생성되거나 자유 블록이 추가의 유효 데이터 기입들에 의해 소비될 때까지 정지해야 한다. 재활용 비는 메모리 장치에 설계된 정적인 수일 수 있다. 배경 사이클을 개시함에 있어 기준으로서 재활용 비의 사용은 폐용 데이터가 거의 없는 층에서 동작을 피하여 최소 이득을 가진 긴 동작을 방지함으로써 배경 동작을 더 효율적이게 한다. 재활용 비 임계는 다이 내 각 층 유형에 대해 동일하거나 상이할 수 있다.
도 32는 지속된 배경 재활용 동작의 후속되는 기간 후에 도 31과 동일한 다이-층 내 용량 분포를 도시한다. 여기에서, 일부 폐용 데이터 용량(O)은 도 31에 분포와 비교했을 때 자유 블록 용량(F)으로 전환되어졌다. 일 실시예에서, 배경 동작 또한, 다이-층 내 유효 데이터량이 도 33에 도시된 것과 같이, 최대 한계(3302)를 초과한다면 다이-층에서 개시될 수 없다. 이에 따라, 도 33은 유효 데이터량이 소정의 최대 하용가능한 한계(3302)에 도달되어진 지점에서 도 32에서와 동일한 다이-층을 도시한 것이다. 메모리 장치의 물리적 용량은 논리 용량을 초과해야 한다.
도 34는 다수-층 다이에서 배경 사이클을 구현하는 한 방법을 도시한다. 도 34의 프로세스는 다수 배경 프로세스가 STAR 제어기에 대해 동시에 활성이 될 수 있게 STAR 제어기에 의해 관리되는 각 다이에 대해 수행될 수 있다. 제어기가 예를 들면 비동기 다이 알고리즘으로부터 다이가 아이들인 것으로 판정한다면(3402에서), 제어기는 이의 재활용 비가 이의 층 유형에 대한 소정의 임계 미만인지를 알기 위해서 아이들 다이 내에 다이-층을 평가할 것이다. 일 구현예에서, 제어기는 트리오 다이에서 특정 다이의 X1 층이 마지막 라운드에서 배경 사이클을 위해 선택되었다면 제어기가 먼저 X2 다이 층을 평가할 것이며 다음 번 다이가 아이들이고 제어기가 평가하기 위해(3404에서) 다이 층을 선택하게 라운드 로빈 방식으로, 다이 층을 선택한다. 제어기는 선택된 층에 대해 위에 언급된 바와 같이 재활용 비를 계산하고 결과를 다이 층에 대한 소정의 최대 임계와 비교할 것이다(3406, 3408에서). 재활용 비가 임계를 초과한다면, 다음 다이 층은 이 사이클에서 체크되지 않았던 다이에 임의의 층들이 있다면 선택된다(3410에서). 재활용 비가 임계 미만이라면, 제어기는 선택된 층에서 한 배경 재활용 사이클을 수행할 것이다(3412에서). 이에 따라, 평가되는 다이-층은 이의 재활용 비가 이의 층 유형에 대한 정의된 최대 재활용 비 미만일 경우에만 선택되어야 하고 배경 사이클은 어떠한 다이 층도 선택될 수 없다면 종료된다.
또한, 다이 층 내에 파티션의 선택은 프로그램 사이클에서 전경 유지관리 동작에서 이동 및 재배치를 위한 파티션의 선택에 관하여 위에 논의된 동일 원리를 사용하여 행해질 수 있다. 예를 들면, 파티션 내에 클로즈된 블록들이 없거나, 파티션이 이의 클로즈된 블록들 내에 더 적은 폐용 데이터 용량을 내포한다면, 이 파티션은 이 다이 층에서 선택되지 않는다. 일반적으로, 선택된 다이 층에 대해서 제어기는 클로즈된 블록당 가장 적은 평균 유효 데이터 카운트를 가진 파티션을 선택할 수 있다. 선택된 다이 층의 선택된 파티션 내에서, 선택된 재활용 블록(즉 폐용 데이터을 가진 클로즈된 블록)은 최소량의 유효 데이터를 가진 것일 수 있다.
배경 사이클이 다이 상에서 활성인 동안 호스트 데이터 프로그램 트랜잭션이 다이에 발행된다면 호스트 데이터 프로그램 동작은 배경 사이클에서 사용되는 데이터 카피 동작보다 NAND 드라이버에서 더 높은 우선도를 갖는다. 그러므로 호스트 데이터 프로그래밍은 우선도를 가지며, 배경 사이클 데이터의 추가의 재배치는 어떠한 호스트 데이터 프로그램 트랜잭션도 계류중이 아닐 때에만 행해진다.
한 완전한 PU의 호스트 데이터가 기입되어졌고 동일 다이 내 배경 사이클이 완료되기 전에 프로그램 사이클이 완료되었다면, 다이에서 새로운 프로그램 사이클이 개시된다. 배경 사이클이 활성인 다이-층에 프로그램 사이클이 유지관리 동작을 포함하지 않는다면, 배경 사이클에 미이행 동작은 NAND 드라이버에 의해 같은 다이 내 유지관리 동작과 번갈아 인터리브된다. 그러므로 배경 동작은 프로그램 사이클의 인터리브 비에 명확히 포함됨이 없이 호스트 데이터 프로그램 동작과 자동으로 인터리브된다. 그러나, 배경 사이클이 활성인 다이-층에 프로그램 사이클이 유지관리 동작를 포함한다면, 배경 사이클에서 미이행 동작은 층에 유지관리 동작이 시작되기 전에 완료되어야 하고, 배경 동작은 프로그램 사이클에서 다이-층에 대한 인터리브 비의 계산에 포함될 수 있다.
다이
패키지 구성
트리오 드라이브라고도 하는, 3층 고체상태 드라이브(SSD)에서, 트리오 알고리즘에 의해 관리되는 개별적 유닛들로 저장의 3개 층의 물리적 구성, 및 개별적 패키지들로 유닛의 구성에 대한 다수의 선택들이 있다. 위에 논의된 바와 같이, 트리오 다이는 단일 eX3 다이이며, 이는 STAR 제어기의 인스턴스에 의해 물리적 저장의 독립적 영역으로서 관리되며, 고정된 3 세트의 블록이 X1, X2 및 X3 블록들로서 사용하기 위해 구성된다. 도 35는 8 STAR 제어기 인스턴스들을 가진 트리오 드라이브에 대한 플래시 메모리 구성을 도시한 것으로, 각 트리오 다이(3502) 내에 3개 층의 저장 블록과 8 패키지(3504) 각각 내에 다수의 트리오 다이를 갖는다.
한 패키지(3504) 내 모든 트리오 다이(3502)는 동일 제어기 채널에 연결되고, 일 실시예에서, 도 17에 도시된 것과 같이, 동일 STAR 제어기에 의해 관리된다. 제2 뱅크의 8 패키지(3504)가 더 큰 용량 드라이브에서 요구된다면, 이들은 유사하게 채널 0 내지 채널 7에 연결될 수 있다. 제2 뱅크의 패키지는 STAR 0 내지 STAR 7를 위한 용량 확장일 수 있고, 혹은 한 세트의 독립적인 STAR 제어기 인스턴스들 8 내지 15(도시되지 않음)일 수 있다.
도 36에 도시된 바와 같이, 3개 층 구조는 또한 연대하여 패키지된 트리오 다이-쌍을 사용하여 달성될 수 있다. 트리오 다이-쌍(3602)은 유닛을 형성하는 한 eX2 다이(3604) 및 한 eX3 다이(3606)이며, 이는 각각의 채널을 위해 STAR 제어기에 의해 물리적 저장의 독립적인 영역으로서 관리되고, 고정된 3개 세트의 블록은 X1, X2 및 X3 블록들로서 사용하기 위해 구성된다. 각 트리오 다이-쌍에 3개 층의 저장 블록과 8 패키지(3608) 각각에 다수의 트리오 다이-쌍을 가진, 8 STAR 제어기 인스턴스들을 가진 드라이브가 도 36에 도시되었다. 트리오 다이-쌍(3602)을 형성하는 두 다이(3604, 3606)는 동일 패키지(3608) 내에 있다. 한 패키지(3608) 내 모든 트리오 다이-쌍(3602)은 동일 제어기 채널에 연결되고, 동일 STAR 제어기 인스턴스에 의해 관리된다. 더 큰 용량 드라이브에서 제2 뱅크의 8 패키지가 요구된다면, 이들은 유사하게 채널 0 내지 채널 7에 연결될 것이다. 제2 뱅크의 패키지는 STAR 제어기 0 내지 7에 대한 용량 확장일 수 있고, 혹은 한 세트의 독립적인 STAR 제어기 8 내지 15일 수 있다.
도 37에 도시된 바와 같이, 3층 구조는 또한 개벽적으로 패키지된 다이-쌍을 사용하여 달성될 수 있다. 트리오 다이-쌍(3702)은 유닛을 형성하는 한 eX2 다이(3704) 및 한 eX3 다이(3706)이며, 이는 STAR 제어기에 의해 물리적 저장의 독립적인 영여으로서 관리되고, 고정된 3 세트의 블록은 X1, X2 및 X3 블록들로서 사용하기 위해 구성된다. 도 37에 시스템은 위에 도 35 및 도 36의 배열을 위해 취해진 8개가 아니라, 4 STARS를 가진 드라이브을 보이는 것으로, 각 트리오 다이-쌍(3702)에 3개 층의 저장 블록을 가지며 각 트리오 다이-쌍은 2 패키지(3708)에 걸쳐 있다. 트리오 다이-쌍을 형성하는 두 다이는 서로 다른 패키지들(3708) 내에 있고, 각 패키지는 eX2 다이만을 혹은 eX3 다이만을 포함한다. 한 패키지 내 모든 다이는 동일 제어기 채널에 연결되고, 동일 STAR 제어기에 의해 관리된다. 각 이웃한 쌍의 패키지는 동일 STAR에 의해 관리된다. 제2 뱅크의 4 패키지가 더 큰 용량 드라이브에서 요구된다면, 이들은 유사하게 채널 0 내지 채널 7에 연결될 것이다. 제2 뱅크의 패키지는 STAR 제어기 0 내지 3에 대한 용량 확장일 수 있고, 혹은 한 세트의 독립적인 STAR 제어기 4 내지 7일 수 있다.
시스템 및 방법은 다수-층, 다수-파티션 메모리 시스템을 위해 개시되었다. 일 실시예에서, STAR 제어기(하나 이상의 하드웨어 제어기 각각에서 실행되는 개별적 하드웨어 제어기들 혹은 소프트웨어의 다수의 인스턴스들일 수 있다)의 수정된 버전은 각 다이 혹은 X1, X2 및 X3 NAND 플래시 블록을 가진 다이-쌍에서 3개 층의 저장으로 동작하게 설계된다. 개시된 알고리즘들의 서브세트 또한 2 층 드라이브에서 사용될 수 있다. 예를 들면 도 17에 관하여 위에 기술된 전체 3 층 STAR 알고리즘은 특정 제어기 채널 상에 다이와 같은, 고체상태 디스크 드라이브 내 전용의 한 세트의 플래시 다이를 관리하기 위해 사용된다. 다수 인스턴스들의 3 층 STAR 알고리즘은 SSD 시스템 내에 존재할 것이며, 각각은 별도의 한 세트의 (채널) 플래시 메모리 다이를 관리한다.
위에 개시된 바와 같이, 3층 STAR 알고리즘의 동작은 4개의 알고리즘: 1) 비동기 다이 알고리즘; 2) 트리오 알고리즘; 3) 프로그램 스케쥴링 알고리즘; 및 4) 어드레스 변환 알고리즘으로 구성될 수 있다.
비동기
다이
알고리즘
시스템 전체에 걸쳐 데이터 프로그래밍 병행도 및 기입 트랜잭션은 한 다이 내에서 달성할 수 있는, 2-플레인 다이에서 전형적으로 32KB인, 최대 프로그래밍 병행도의 유닛들로 관리된다. 다수의 다이는 요구될 때 완전히 병렬로 동작할 수 있고, 혹은 관계없는 동작들을 수행하는 각각과 비동기적으로 동작할 수 있다.
비동기 다이 알고리즘은 불규칙한 I/O 크기 혹은 혼재된 판독/기입 특징을 가진 작업부하에 호스트 코맨드의 실행 및 개선된 성능을 위한 감소된 레이턴시를 제공하게 설계된다.
트리오 알고리즘으로부터 수신된 상황 정보에 기초하여, 비동기 다이 알고리즘은 호스트 데이터 기입 트랜잭션을 이의 프론트-엔드 큐로부터 이를 수신할 준비가 된 임의의 다이로 발행할 수 있다. 사용가능성은 NAND 드라이버에 발행된 호스트 데이터 기입 트랜잭션의 큐들의 깊이에 의해 표시된다. 트랜잭션은 우선적으로 가장 짧은 큐들을 가진 이들 다이에 발행되어야 한다.
트리오 알고리즘
트리오 다이내 메모리 공간은 NAND 블록 유형(X1, X2, X3)에 따라 3개의 메모리층으로, 그리고 또한 데이터 유형(랜덤 및 순차적)에 따라 2개의 파티션으로 분할된다.
트리오 다이의 층 및 파티션 구조 내에서, 호스트로부터 데이터는 층 1 및 층 2에 기입된다. 유지관리 프로그래밍 동작은 또한 데이터가 호스트로부터 기입되는 결과로서 다이 내 메모리층들 중 하나 혹은 둘에서 요구될 수 있다.
프로그램 사이클로서 알려진 일련의 소정의 프로그램 동작들은 정의된 량의 호스트 데이터가 다이의 한 층 내 기입 블록에 프로그램되게 하며 소정의 결과적인 유지관리 프로그래밍 동작이 동일한 다이의 하나 또는 두 층에서 필요하다면 수행되게 한다. 프로그램 사이클 동안, 유지관리 동작을 위한 호스트 데이터 및 데이터의 프로그래밍은 호스트 응답 시간들의 최상의 균일성을 얻게 하고 어떠한 호스트 코맨드도 상황들의 임의의 드문 조합 하에서, 수락불가하게 긴 응답 시간을 겪을 수 없음을 보증하기 위해서, 꾸준한 레이트로, 인터리브된다.
유지관리 동작은 새로운 데이터를 층에 기입할 때 재사용하기 위해 층에 자유 블록을 생성하며 한 층에서 다른 층으로 고정된 량의 데이터를 이동하거나, 층 내에서 한 블록에서 다른 블록으로 데이터를 재배치하는 것을 포함할 수 있다. 유지관리는 다이가 아이들일 때 전경 동작 혹은 배경 동작으로서 수행된다.
프로그램
스케쥴링
알고리즘
비동기 다이 알고리즘 및 트리오 알고리즘은 NAND 드라이버에 의해 실행되어질 프로그램 및 카피 트랜잭션들을 스케쥴링하기 위해서, 프로그램 스케쥴링 알고리즘 에 따라 각 STAR 내에서 함께 동작한다.
트리오 알고리즘은 호스트 데이터 프로그램 트랜잭션이 트리오에 의해 생성되는 유지관리 카피 트랜잭션과 언제 인터리브될 수 있는지를 정의하기 위해 정보를 비동기 다이 알고리즘에 제공한다. 호스트 데이터 프로그램 트랜잭션은 트리오 알고리즘에 의해 발행된 유지관리 메타페이지 카피 트랜잭션의 수와 현재 프로그램 사이클 내에서 발생된 호스트 데이터 프로그램 트랜잭션의 수 간에 비가 프로그램 사이클을 위해 사전에 결정된 요구되는 인터리브 비를 초과할 때 이행된다.
다이를 위한 미이행 판독 트랜잭션은이 다이를 위한 임의의 다른 트랜잭션 유형에 비해 NAND 드라이버에서 절대 우선도를 갖는다. 다이에 대한 다른 미이행 트랜잭션은 1) 프로그램; 2) 소거; 및 3) 카피의 상대적 우선도를 갖고 NAND 드라이버에서 실행된다.
호스트 데이터 프로그램 트랜잭션은 NAND 드라이버 내 이미 있는 큐잉된 유지관리 카피 트랜잭션보다 앞서 실행될 것이다.
어드레스 변환 알고리즘
인입 데이터에 연관된 호스트 LBA에 관계없이 호스트 논리 어드레스 공간이 별도의 저장 장치 논리 어드레스 공간에 서로 인접하여 매핑될 수 있는, 3개 층 STAR에서 사용되는 어드레스 변환 수법이 위에 기술되었다.
Claims (79)
- 대량 저장 메모리 시스템으로서,
호스트 시스템으로부터 데이터를 수신하도록 구성된 인터페이스;
복수의 메모리 다이들 - 상기 복수의 메모리 다이들은 각기의 그룹들 내에 배열되고, 상기 각기의 그룹들 각각은 복수의 제어 채널들의 각기의 제어 채널에 연결됨 -; 및
상기 복수의 제어 채널들을 통해 상기 인터페이스 및 상기 복수의 메모리 다이들과 통신하는 제어기
를 포함하고, 상기 제어기는,
상기 호스트 시스템으로부터 제1 요청을 수신한 것에 응하여, 상기 복수의 제어 채널들 중 상이한 제어 채널들에 연결된 상기 복수의 메모리 다이들의 일부에서 데이터를 완전히 병렬로 판독 혹은 기입하고;
상기 호스트 시스템으로부터 제2 요청을 수신한 것에 응하여, 상기 복수의 제어 채널들 중 동일한 제어 채널에서 상이한 메모리 다이에서의 동시적 동작들에 독립적으로 그리고 비동기적으로 데이터를 판독 혹은 기입하도록 구성된, 대량 저장 메모리 시스템. - 제1항에 있어서, 상기 제어기는 상기 복수의 메모리 다이들의 개별 다이에 대한 최대 프로그래밍 유닛과 동일한 양으로 데이터 기입들을 관리하도록 구성된, 대량 저장 메모리 시스템.
- 제2항에 있어서, 상기 제어기는 수신된 데이터의 호스트 논리 블록 어드레스(LBA)와는 무관한 기준들에 기초하여 상기 수신된 데이터를 기입할 메모리 다이를 선택하도록 구성된, 대량 저장 메모리 시스템.
- 제3항에 있어서, 상기 기준들은 메모리 다이가 가장 짧은 계류중의 데이터 기입 큐를 갖는 것을 포함하는, 대량 저장 메모리 시스템.
- 제3항에 있어서, 상기 복수의 메모리 다이들 중 적어도 하나는,
복수의 층들 - 각각의 층은 복수의 메모리 블록들을 갖고, 제1 층은 제1의 셀당 비트 데이터 용량을 포함하고, 제2 층은 상기 제1의 셀당 비트 용량보다 큰 제2의 셀당 비트 용량을 포함함 -; 및
상기 복수의 층들 각각 내의 복수의 파티션들 - 층 내의 상기 복수의 메모리 블록들 내의 각각의 프로그램된 메모리 블록은 상기 복수의 파티션들의 각기의 파티션에 있는 것으로서 배타적으로 분류됨 - 을 포함하는, 대량 저장 메모리 시스템. - 제5항에 있어서, 상기 제어기는, 상기 호스트 시스템으로부터 수신된 데이터에 연관된 데이터 유형을 확인하고 상기 확인된 데이터 유형에 대한 미이행 트랜잭션들의 수에 기초하여 메모리 다이를 선택하도록 구성된, 대량 저장 메모리 시스템.
- 제5항에 있어서, 상기 제어기는 수신된 데이터를 기입하기 위한, 최저의 논리적 충만성(a lowest logical fullness)을 갖는 메모리 다이를 선택하도록 구성된, 대량 저장 메모리 시스템.
- 제2항에 있어서, 상기 제어기는 복수의 제어기들을 포함하며, 상기 복수의 제어기들 각각은 단지 상기 복수의 제어기들의 각기의 상이한 제어기와만 통신하는, 대량 저장 메모리 시스템.
- 제8항에 있어서, 상기 복수의 제어기들 각각은 각기의 미리결정된 고유한 호스트 논리 블록 어드레스(LBA) 범위에 연관된 데이터를 관리하도록 구성된, 대량 저장 메모리 시스템.
- 제9항에 있어서, 수신된 데이터를 상기 복수의 제어기들 서로간에 무관하게 기입하기 위해 상기 복수의 제어기들 각각은 각기의 제어 채널에 연결된 메모리 다이를 독립적으로 선택하도록 구성된, 대량 저장 메모리 시스템.
- 데이터 관리 방법으로서,
호스트 시스템으로부터 데이터를 수신하도록 구성된 인터페이스, 각기의 그룹들 내에 배열된 복수의 메모리 다이들 - 상기 각기의 그룹들 각각은 복수의 제어 채널들의 각기의 제어 채널에 연결됨 -, 및 상기 인터페이스 및 상기 복수의 메모리 다이들과 통신하는 제어기를 포함하는 대량 저장 메모리 시스템에서,
상기 제어기가,
상기 호스트 시스템으로부터 제1 요청을 수신한 것에 응하여, 상기 복수의 제어 채널들 중 다수의 제어 채널들을 통해 상기 복수의 메모리 다이들의 일부에서 완전히 병렬로 데이터를 판독 혹은 기입하는 단계; 및
상기 호스트 시스템으로부터 제2 요청을 수신한 것에 응하여, 상기 복수의 제어 채널들 중 동일한 제어 채널에서 상이한 메모리 다이에서의 동시적 동작들에 독립적으로 그리고 비동기적으로 데이터를 판독 혹은 기입하는 단계
를 포함하는, 데이터 관리 방법. - 제11항에 있어서, 상기 제어기가 상기 복수의 메모리 다이들의 개별 메모리 다이에 대한 최대 프로그래밍 유닛과 동일한 양으로 데이터 기입들을 관리하는 것을 더 포함하는, 데이터 관리 방법.
- 제11항에 있어서, 상기 제어기가 수신된 데이터의 호스트 논리 블록 어드레스(LBA)와는 무관한 기준들에 기초하여 상기 수신된 데이터를 기입할 메모리 다이를 선택하는 것을 더 포함하는, 데이터 관리 방법.
- 제13항에 있어서, 상기 기준들은 메모리 다이가 가장 짧은 계류중의 데이터 기입 큐를 갖는 것을 포함하는, 데이터 관리 방법.
- 제13항에 있어서, 상기 복수의 메모리 다이들 중 적어도 하나는,
복수의 층들 - 각각의 층은 복수의 메모리 블록들을 갖고, 제1 층은 제1의 셀당 비트 데이터 용량을 포함하고, 제2 층은 상기 제1의 셀당 비트 용량보다 큰 제2의 셀당 비트 용량을 포함함 -; 및
상기 복수의 층들 각각 내의 복수의 파티션들
을 포함하고,
층 내의 상기 복수의 메모리 블록들 내의 각각의 프로그램된 메모리 블록은 상기 복수의 파티션들의 각기의 파티션에 있는 것으로서 배타적으로 분류되고,
상기 제어기는 층들 간의 이전에 저장된 데이터의 카피를 수신된 호스트 데이터의 기입과 인터리브하는, 데이터 관리 방법. - 제15항에 있어서, 상기 제어기가,
상기 호스트 시스템으로부터 수신된 데이터에 연관된 데이터 유형을 확인하는 단계; 및
상기 확인된 데이터 유형에 대한 미이행 트랜잭션들의 수에 기초하여 메모리 다이를 선택하는 단계를 더 포함하는, 데이터 관리 방법. - 제15항에 있어서, 상기 제어기가 상기 복수의 메모리 다이들 내의 최저의 논리적 충만성에 기초하여 수신된 데이터를 기입할 상기 다이를 선택하는 단계를 더 포함하는, 데이터 관리 방법.
- 제12항에 있어서, 상기 제어기는 복수의 제어기들을 포함하며, 상기 복수의 제어기들 각각은 단지 상기 복수의 제어 채널들의 각기의 단일의 제어 채널과만 통신하며; 상기 방법은,
상기 복수의 제어기들 각각에서 단지 각기의 미리결정된 고유한 호스트 논리 블록 어드레스(LBA) 범위에 연관된 데이터만을 수신하는 더 단계를 포함하는, 데이터 관리 방법. - 제18항에 있어서, 수신된 데이터를 상기 복수의 제어기들 서로 간에 무관하게 기입하기 위해 상기 복수의 제어기들 각각이 각기의 제어 채널에 연결된 다이를 독립적으로 선택하는 단계를 더 포함하는, 데이터 관리 방법.
- 대량 저장 메모리 시스템으로서,
호스트 시스템으로부터 데이터를 수신하도록 구성된 인터페이스;
복수의 제어 채널들;
복수의 플래시 메모리 다이들; 및
복수의 제어기들
을 포함하고,
상기 복수의 플래시 메모리 다이들은 그룹들로 분할되고, 각각의 그룹은 단지 상기 복수의 제어 채널들의 각기의 제어 채널에만 연결되며,
상기 복수의 제어기들 각각은 상기 복수의 제어 채널들의 각기의 제어 채널에 연결되고 상기 인터페이스와 통신하며, 각기의 제어기들 각각은,
상기 각기의 제어기에 연결된 상기 복수의 제어 채널의 각기의 제어 채널 상에 상기 복수의 플래시 메모리 다이들의 각각에서 동시적 동작들에 독립적으로 그리고 비동기적으로 데이터를 기입하고,
기입 동작에 대해, 상기 복수의 제어기들의 서로에 독립적으로 각기의 제어 채널에 연결된 다이를 선택하도록 구성되는, 대량 저장 메모리 시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (17)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261747646P | 2012-12-31 | 2012-12-31 | |
US201261747892P | 2012-12-31 | 2012-12-31 | |
US201261747916P | 2012-12-31 | 2012-12-31 | |
US201261747896P | 2012-12-31 | 2012-12-31 | |
US61/747,646 | 2012-12-31 | ||
US61/747,892 | 2012-12-31 | ||
US61/747,916 | 2012-12-31 | ||
US61/747,896 | 2012-12-31 | ||
US13/826,848 | 2013-03-14 | ||
US13/827,351 US9465731B2 (en) | 2012-12-31 | 2013-03-14 | Multi-layer non-volatile memory system having multiple partitions in a layer |
US13/827,499 US9223693B2 (en) | 2012-12-31 | 2013-03-14 | Memory system having an unequal number of memory die on different control channels |
US13/827,499 | 2013-03-14 | ||
US13/827,038 | 2013-03-14 | ||
US13/827,038 US9734050B2 (en) | 2012-12-31 | 2013-03-14 | Method and system for managing background operations in a multi-layer memory |
US13/827,351 | 2013-03-14 | ||
US13/826,848 US9734911B2 (en) | 2012-12-31 | 2013-03-14 | Method and system for asynchronous die operations in a non-volatile memory |
PCT/US2013/077493 WO2014105829A2 (en) | 2012-12-31 | 2013-12-23 | Method and system for asynchronous die operations in a non-volatile memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187011613A Division KR20180049148A (ko) | 2012-12-31 | 2013-12-23 | 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150102030A KR20150102030A (ko) | 2015-09-04 |
KR101854020B1 true KR101854020B1 (ko) | 2018-05-02 |
Family
ID=51022193
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157017154A KR101854020B1 (ko) | 2012-12-31 | 2013-12-23 | 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 |
KR1020187011613A KR20180049148A (ko) | 2012-12-31 | 2013-12-23 | 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187011613A KR20180049148A (ko) | 2012-12-31 | 2013-12-23 | 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 |
Country Status (4)
Country | Link |
---|---|
EP (2) | EP3176688B1 (ko) |
KR (2) | KR101854020B1 (ko) |
CN (1) | CN104903842B (ko) |
WO (1) | WO2014105829A2 (ko) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235056B2 (en) | 2014-09-26 | 2019-03-19 | Western Digital Technologies, Inc. | Storage device health diagnosis |
TWI556100B (zh) * | 2015-10-26 | 2016-11-01 | 點序科技股份有限公司 | 快閃記憶體裝置及其交錯存取方法 |
KR102664674B1 (ko) * | 2016-06-10 | 2024-05-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
KR102614083B1 (ko) * | 2016-08-31 | 2023-12-18 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10359955B2 (en) * | 2017-02-23 | 2019-07-23 | Western Digital Technologies, Inc. | Data storage device configured to perform a non-blocking control update operation |
US20180239532A1 (en) | 2017-02-23 | 2018-08-23 | Western Digital Technologies, Inc. | Techniques for performing a non-blocking control sync operation |
US11188456B2 (en) * | 2017-03-21 | 2021-11-30 | Western Digital Technologies Inc. | Storage system and method for predictive block allocation for efficient garbage collection |
US11269764B2 (en) | 2017-03-21 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for adaptive scheduling of background operations |
KR102200247B1 (ko) | 2017-03-27 | 2021-01-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US20180329815A1 (en) * | 2017-05-09 | 2018-11-15 | Western Digital Technologies, Inc. | Storage system and method for non-volatile memory command collision avoidance with explicit tile grouping |
CN107273303B (zh) * | 2017-05-23 | 2020-06-26 | 建荣半导体(深圳)有限公司 | 一种闪存数据管理系统、方法、闪存芯片及存储装置 |
CN110413206B (zh) * | 2018-04-28 | 2023-05-30 | 伊姆西Ip控股有限责任公司 | 存储系统中的操作控制方法、设备和计算机程序产品 |
KR102542299B1 (ko) * | 2018-08-22 | 2023-06-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
KR102520412B1 (ko) | 2018-09-19 | 2023-04-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US10770431B1 (en) * | 2019-02-27 | 2020-09-08 | Western Digital Technologies, Inc. | Memory die layouts for failure protection in SSDs |
KR20200114149A (ko) | 2019-03-27 | 2020-10-07 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11269552B2 (en) * | 2019-06-14 | 2022-03-08 | Micron Technology, Inc. | Multi-pass data programming in a memory sub-system having multiple dies and planes |
KR20210077443A (ko) | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 메모리 장치 및 그 동작 방법 |
US11275679B2 (en) | 2019-12-30 | 2022-03-15 | Micron Technology, Inc. | Separate cores for media management of a memory sub-system |
KR20210111120A (ko) | 2020-03-02 | 2021-09-10 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11281405B2 (en) | 2020-06-08 | 2022-03-22 | Western Digital Technologies, Inc. | Controlled die asymmetry during MLC operations for optimal system pipeline |
US11422745B2 (en) * | 2020-08-13 | 2022-08-23 | Micron Technology, Inc. | Addressing zone namespace and non-zoned memory based on data characteristics |
US11417411B2 (en) * | 2020-11-04 | 2022-08-16 | Micron Technology, Inc. | Systems and methods for power savings in row repaired memory |
US11561713B2 (en) * | 2021-03-11 | 2023-01-24 | Western Digital Technologies, Inc. | Simplified high capacity die and block management |
US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
US12039202B2 (en) * | 2022-09-16 | 2024-07-16 | Western Digital Technologies, Inc. | Dynamic ordering of memory die programming in a metablock |
US20240111422A1 (en) * | 2022-09-30 | 2024-04-04 | Samsung Electronics Co., Ltd | Method of optimizing quality of service (qos) in solid-state drives (ssds) and an ssd thereof |
CN116610597B (zh) * | 2023-07-20 | 2023-10-17 | 合肥康芯威存储技术有限公司 | 一种存储器件及其垃圾回收的控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090193200A1 (en) | 2008-01-24 | 2009-07-30 | Brittain Mark A | System to Support a Full Asynchronous Interface within a Memory Hub Device |
WO2009107426A1 (en) | 2008-02-29 | 2009-09-03 | Kabushiki Kaisha Toshiba | Memory system |
US20090228662A1 (en) | 2008-03-07 | 2009-09-10 | A-Data Technology Co., Ltd. | Multi-channel memory storage device and control method thereof |
WO2012158521A1 (en) | 2011-05-17 | 2012-11-22 | Sandisk Technologies Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5026213B2 (ja) * | 2007-09-28 | 2012-09-12 | 株式会社日立製作所 | ストレージ装置及びデータ重複排除方法 |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US20110107042A1 (en) * | 2009-11-03 | 2011-05-05 | Andrew Herron | Formatting data storage according to data classification |
US8335897B2 (en) * | 2009-12-15 | 2012-12-18 | Seagate Technology Llc | Data storage management in heterogeneous memory systems |
US8239617B1 (en) * | 2010-02-12 | 2012-08-07 | Emc Corporation | Enterprise data storage system using multi-level cell flash memory |
US8452911B2 (en) * | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
JP2014513850A (ja) * | 2011-05-17 | 2014-06-05 | サンディスク テクノロジィース インコーポレイテッド | 小さな論理グループがアクティブなslcおよびmlcメモリパーティションに分散させられる不揮発性メモリおよび方法 |
WO2012161659A1 (en) * | 2011-05-24 | 2012-11-29 | Agency For Science, Technology And Research | A memory storage device, and a related zone-based block management and mapping method |
-
2013
- 2013-12-23 EP EP16176480.8A patent/EP3176688B1/en active Active
- 2013-12-23 CN CN201380068977.0A patent/CN104903842B/zh active Active
- 2013-12-23 WO PCT/US2013/077493 patent/WO2014105829A2/en active Application Filing
- 2013-12-23 EP EP13826692.9A patent/EP2939100B1/en active Active
- 2013-12-23 KR KR1020157017154A patent/KR101854020B1/ko active IP Right Grant
- 2013-12-23 KR KR1020187011613A patent/KR20180049148A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090193200A1 (en) | 2008-01-24 | 2009-07-30 | Brittain Mark A | System to Support a Full Asynchronous Interface within a Memory Hub Device |
WO2009107426A1 (en) | 2008-02-29 | 2009-09-03 | Kabushiki Kaisha Toshiba | Memory system |
US20090228662A1 (en) | 2008-03-07 | 2009-09-10 | A-Data Technology Co., Ltd. | Multi-channel memory storage device and control method thereof |
WO2012158521A1 (en) | 2011-05-17 | 2012-11-22 | Sandisk Technologies Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
Also Published As
Publication number | Publication date |
---|---|
EP3176688B1 (en) | 2022-01-26 |
CN104903842A (zh) | 2015-09-09 |
EP3176688A1 (en) | 2017-06-07 |
WO2014105829A3 (en) | 2014-10-09 |
EP2939100B1 (en) | 2017-09-06 |
CN104903842B (zh) | 2018-08-14 |
EP2939100A2 (en) | 2015-11-04 |
WO2014105829A2 (en) | 2014-07-03 |
KR20180049148A (ko) | 2018-05-10 |
KR20150102030A (ko) | 2015-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101854020B1 (ko) | 비휘발성 메모리에서 비동기 다이 동작을 위한 방법 및 시스템 | |
US8873284B2 (en) | Method and system for program scheduling in a multi-layer memory | |
US9336133B2 (en) | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory | |
US9734050B2 (en) | Method and system for managing background operations in a multi-layer memory | |
US9734911B2 (en) | Method and system for asynchronous die operations in a non-volatile memory | |
US9348746B2 (en) | Method and system for managing block reclaim operations in a multi-layer memory | |
US9223693B2 (en) | Memory system having an unequal number of memory die on different control channels | |
US9465731B2 (en) | Multi-layer non-volatile memory system having multiple partitions in a layer | |
US9778855B2 (en) | System and method for precision interleaving of data writes in a non-volatile memory | |
US10133490B2 (en) | System and method for managing extended maintenance scheduling in a non-volatile memory | |
US10120613B2 (en) | System and method for rescheduling host and maintenance operations in a non-volatile memory | |
US8537613B2 (en) | Multi-layer memory system | |
US20170123666A1 (en) | System and method for managing maintenance scheduling in a non-volatile memory | |
US8769190B1 (en) | System and method for reducing contentions in solid-state memory access | |
US10884630B2 (en) | Storage system | |
US20100082917A1 (en) | Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method | |
US20100088461A1 (en) | Solid state storage system using global wear leveling and method of controlling the solid state storage system | |
US10929286B2 (en) | Arbitrated management of a shared non-volatile memory resource | |
JP2015503798A (ja) | Slc−mlc消耗バランシング | |
US10042553B2 (en) | Method and system for programming a multi-layer non-volatile memory having a single fold data path | |
US10747662B2 (en) | Staggered garbage collection unit (GCU) allocation across dies | |
US10552086B2 (en) | Global pool of garbage collection units (GCUs) in a shared non-volatile memory device | |
CN110888593A (zh) | 数据储存装置以及非挥发式存储器控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant |