KR20130121165A - 메모리 시스템 내 적어도 반 자율적인 모듈 및 방법 - Google Patents
메모리 시스템 내 적어도 반 자율적인 모듈 및 방법 Download PDFInfo
- Publication number
- KR20130121165A KR20130121165A KR1020137022158A KR20137022158A KR20130121165A KR 20130121165 A KR20130121165 A KR 20130121165A KR 1020137022158 A KR1020137022158 A KR 1020137022158A KR 20137022158 A KR20137022158 A KR 20137022158A KR 20130121165 A KR20130121165 A KR 20130121165A
- Authority
- KR
- South Korea
- Prior art keywords
- module
- memory
- function
- memory system
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/7206—Reconfiguration of flash memory system
-
- 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
호스트 디바이스와 디지털 데이터 통신을 하며 데이터 저장 용량을 제공하기 위한 메모리 시스템이 기술된다. 본 시스템은 제어기와 복수의 모듈을 포함하며, 각 모듈은 비휘발성 메모리 디바이스를 포함하며, 상기 모듈은 파라미터에 적어도 부분적으로 기초하여 상기 모듈에 대하여 관리 기능을 수행하도록 구성된다. 상기 파라미터는 제어기 및/또는 모듈에 의해 제공된다. 시스템 및 모듈은 하나의 특징으로 모듈에 수반된 다수의 동시적인 형태의 데이터 액세스를 지원할 수 있다.
Description
본 발명은 일반적으로 솔리드 스테이트 드라이브(solid-state drive)("SSD") 및 다른 저장 디바이스와 같은 비휘발성 메모리를 사용하는 메모리 시스템 분야에 관한 것으로, 보다 상세하게는 메모리 시스템에 사용하기 위한 적어도 반 자율적인 모듈 및 연관된 방법, 및 관련된 특징에 관한 것이다.
종래 기술의 솔리드 스테이트 드라이브는 일반적으로 표준 호스트 디바이스 및 복수의 플래시 메모리 디바이스와 인터페이싱될 수 있는 제어기를 포함한다. 플래시 메모리 디바이스는 일반적으로 각각 메모리 다이(memory die) 형태이다. 제어기와 플래시 메모리 디바이스 사이의 연결성은 일반적으로 플래시 지향 인터페이스 형태이고 각 메모리 디바이스는 플래시 지향 인터페이스에 개별적으로 연결된다. 제어기는 복수의 플래시 지향 인터페이스를 구비할 수 있고 이들 각 인터페이스는 복수의 메모리 디바이스에 연결된다. 출원인은 이 종래 기술의 구성에, 특히 더 큰 용량의 솔리드 스테이트 드라이브에 다수의 단점이 있다는 것을 인식하였다. 예를 들어, 제어기는 다수의 개별적인 메모리 디바이스를 제어하여야 한다. 다른 예로서, 제어기에 요구되는 신호 연결점의 수는 드라이브의 용량에 비례하여 증가한다. 또 다른 예에서, 제어기는 제어기와 메모리 디바이스 사이의 인터페이스가 이들 기능에 관한 트래픽에 의하여 부담이 지어지도록 관리 기능(예를 들어, 마모 레벨링(wear leveling)과 같은 오버헤드 기능)을 담당한다. 더 다른 예로서, 제어기에 의해 다수의 메모리 디바이스를 테스트하고 모니터링하는 것은 복잡한 작업이다.
출원인은 또한 블록 지향 비휘발성 메모리에 종래 기술의 비휘발성 메모리를 사용하는 것과 관련된 우려를 더 인식하였다. 블록 지향 비휘발성 메모리의 액세스에 종래 기술의 지배적인 접근법은 유저 데이터 플러스 이에 수반하는 여분의 정보를 정확히 물리적 페이지에 할당하는 것이다. 본 설명을 위하여 "블록 지향(block-oriented)"이라는 용어는 일반적으로 페이지 길이와 같은 길이인 유저 데이터 블록을 사용하여 이용되는 페이지 기반 메모리를 사용하는 것에 관련된다. 더 설명되는 바와 같이 블록 지향 메모리에서 일부 페이지는 하나의 페이지 길이 미만인 유저 데이터 블록에 기초하여 부분적으로 미사용될 수 있으나 유저 데이터 블록은 페이지 길이보다 더 길지 않다. 비제한적인 예로서, NAND 플래시는 일반적으로 이런 유형의 블록 지향 메모리로 되도록 구성된다. 블록 지향 메모리에서 이런 유형의 융통성이 없는 할당은 각 물리적 페이지를 포함하는 저장 셀의 수와 저장된 정보 사이에 정확한 대응관계를 생성하며 산업계에서는 셀 메모리당 단일 비트(Single Bit per Cell memory) 및 셀 메모리당 다중 비트(Multi-Bit per Cell memory)가 일반적이다.
출원인은 나아가 이러한 접근법이 특정 메모리 디바이스에서 유저 데이터를 페이지 유닛(page unit)으로 매칭하는데 융통성이 없다는 것을 더 인식하였다. 물리적 페이지 사이즈는 메모리의 설계 파라미터이고 변경될 수 없다. 물리적 페이지에서 저장 셀의 수와 애플리케이션에 의해 블록마다 요구되는 셀의 수 사이에 미스매치가 있는 경우에 페널티(penalty)가 초래된다. 이 페널티는 ECC 요구조건을 충족하기에는 불충분한 셀의 형태이어서 애플리케이션의 신뢰성을 불량하게 하거나 또는 각 물리적 페이지에서 요구되는 셀의 수보다 더 많이 있는 경우 저장 비효율성의 형태일 수 있다. 따라서, 비휘발성 메모리 디바이스, 예를 들어, NAND 플래시의 설계자는 메모리가 심지어 생성되기 전에 필요한 페이지 사이즈를 예측하도록 시도할 것을 요구한다. 대부분 불가피하게 주어진 페이지 사이즈는 메모리를 사용할 애플리케이션의 적어도 일부 서브세트에 잘 적합하지 않다.
관련 기술 및 이와 관련된 제한의 전술된 예는 예시적인 것일 뿐 제한하려는 것이 전혀 아니다. 관련 기술의 다른 제한은 명세서를 판독하고 도면을 살펴볼 때 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다.
예시적인 실시예가 도면에 예시된다. 본 명세서에 개시된 실시예와 도면은 제한하는 것이 아니라 예시하려는 것으로 의도된다.
도 1은 전체 시스템의 일부로서 도시된 본 발명의 일 실시예에 따라 생성된 SSD를 예시한 블록도;
도 2는 본 발명의 일 실시예에 따른 SSD의 다른 상세를 도시한 블록도;
도 3은 도 1 및/또는 도 2의 SSD와 같은 SSD에 사용되는 모듈의 일 실시예를 도시한 블록도;
도 4는 도 3의 모듈과 같은 모듈에 사용하기 위한 모듈 인터페이스의 일 실시예를 도시한 블록도;
도 5는 메모리 디바이스에서 메모리 섹션(memory section)의 예시적인 배열과 함께 모듈의 메모리 디바이스를 도식적으로 예시한 블록도;
도 6은 도 3의 모듈과 같은 모듈에 사용될 수 있는 기능 엔진(function engine)의 일 실시예의 블록도;
도 7은 도 6의 기능 엔진을 사용하여 수행될 수 있는 마모 레벨링 기능의 일 실시예를 예시한 흐름도;
도 8은 도 6의 기능 엔진을 사용하여 수행될 수 있는 가비지 수집 기능(garbage collection function)의 일 실시예를 도시한 흐름도;
도 9는 도 6의 기능 엔진을 사용하여 수행될 수 있는 비트 밀도 구성 기능의 일 실시예를 도시한 흐름도;
도 10은 도 6의 기능 엔진을 사용하여 수행될 수 있는 FTL(Flash Translation Layer) 기능의 일 실시예를 도시한 흐름도;
도 11은 도 6의 기능 엔진과 협력하여 수행될 수 있는 판독 동작의 일 실시예를 도시한 흐름도;
도 12는 도 6의 기능 엔진과 협력하여 수행될 수 있는 기록 동작의 일 실시예를 도시한 흐름도;
도 13은 도 6의 기능 엔진과 협력하여 수행될 수 있는 소거 기능의 일 실시예를 도시한 흐름도;
도 14는 물리적 페이지의 길이와 상이한 길이의 유저 데이터 블록을 도시한 도면;
도 15는 하나의 물리적 페이지의 길이 미만의 길이를 각각 포함하는 유저 데이터 블록의 세트를 저장하는 연속적인 물리적 페이지 세트를 도식적으로 예시한 블록도;
도 16은 하나의 물리적 페이지의 길이를 초과하는 길이를 각각 포함하는 유저 데이터 블록 세트를 저장하는 연속적인 물리적 페이지 세트를 도식적으로 예시한 블록도;
도 17은 도 15 및 도 16의 상황에서 설명되고 블록 길이와 페이지 길이가 상이할 수 있는 데이터 구조를 달성하는 방식으로 유저 데이터 블록을 저장/기록하는 방법의 일 실시예를 도시한 흐름도;
도 18은 도 15 및 도 16의 상황에서 전술되고 블록 길이와 페이지 길이가 상이할 수 있는 데이터 구조로부터 유저 데이터 블록을 판독하는 방법의 일 실시예를 도시한 다른 흐름도.
도 1은 전체 시스템의 일부로서 도시된 본 발명의 일 실시예에 따라 생성된 SSD를 예시한 블록도;
도 2는 본 발명의 일 실시예에 따른 SSD의 다른 상세를 도시한 블록도;
도 3은 도 1 및/또는 도 2의 SSD와 같은 SSD에 사용되는 모듈의 일 실시예를 도시한 블록도;
도 4는 도 3의 모듈과 같은 모듈에 사용하기 위한 모듈 인터페이스의 일 실시예를 도시한 블록도;
도 5는 메모리 디바이스에서 메모리 섹션(memory section)의 예시적인 배열과 함께 모듈의 메모리 디바이스를 도식적으로 예시한 블록도;
도 6은 도 3의 모듈과 같은 모듈에 사용될 수 있는 기능 엔진(function engine)의 일 실시예의 블록도;
도 7은 도 6의 기능 엔진을 사용하여 수행될 수 있는 마모 레벨링 기능의 일 실시예를 예시한 흐름도;
도 8은 도 6의 기능 엔진을 사용하여 수행될 수 있는 가비지 수집 기능(garbage collection function)의 일 실시예를 도시한 흐름도;
도 9는 도 6의 기능 엔진을 사용하여 수행될 수 있는 비트 밀도 구성 기능의 일 실시예를 도시한 흐름도;
도 10은 도 6의 기능 엔진을 사용하여 수행될 수 있는 FTL(Flash Translation Layer) 기능의 일 실시예를 도시한 흐름도;
도 11은 도 6의 기능 엔진과 협력하여 수행될 수 있는 판독 동작의 일 실시예를 도시한 흐름도;
도 12는 도 6의 기능 엔진과 협력하여 수행될 수 있는 기록 동작의 일 실시예를 도시한 흐름도;
도 13은 도 6의 기능 엔진과 협력하여 수행될 수 있는 소거 기능의 일 실시예를 도시한 흐름도;
도 14는 물리적 페이지의 길이와 상이한 길이의 유저 데이터 블록을 도시한 도면;
도 15는 하나의 물리적 페이지의 길이 미만의 길이를 각각 포함하는 유저 데이터 블록의 세트를 저장하는 연속적인 물리적 페이지 세트를 도식적으로 예시한 블록도;
도 16은 하나의 물리적 페이지의 길이를 초과하는 길이를 각각 포함하는 유저 데이터 블록 세트를 저장하는 연속적인 물리적 페이지 세트를 도식적으로 예시한 블록도;
도 17은 도 15 및 도 16의 상황에서 설명되고 블록 길이와 페이지 길이가 상이할 수 있는 데이터 구조를 달성하는 방식으로 유저 데이터 블록을 저장/기록하는 방법의 일 실시예를 도시한 흐름도;
도 18은 도 15 및 도 16의 상황에서 전술되고 블록 길이와 페이지 길이가 상이할 수 있는 데이터 구조로부터 유저 데이터 블록을 판독하는 방법의 일 실시예를 도시한 다른 흐름도.
이하 상세한 설명은 이 기술 분야에 통상의 지식을 가진 자로 하여금 본 발명을 실시하고 사용할 수 있게 하기 위하여 제공된 것이며 특허 출원 및 그 요구조건의 상황에서 제공된다. 설명된 실시예에 대한 여러 변형은 이 기술 분야에 통상의 지식을 가진 자에게는 용이하게 명백할 것이며 본 명세서에 개시된 일반 원리는 다른 실시예에도 적용될 수 있다. 따라서, 본 발명은 도시된 실시예로 제한되는 것으로 의도된 것이 전혀 아니며 오히려 첨부된 청구범위 내에 한정된 변형과 균등물을 포함하는 본 명세서에 설명된 원리와 특징에 따르는 최광의 범위에 일치시키려는 것이다. 도면은 축척에 맞게 그려져 있지 않고 관련된 특징을 최상으로 예시하는 것으로 생각되는 방식으로 특성상 도식화되어 있는 것으로 이해된다. 설명적인 용어는 도면에 제공된 여러 조망에 대하여 독자의 이해를 돕기 위하여 채용된 것일 뿐 발명을 제한하려고 의도된 것이 전혀 아니다.
이제 여러 도면에 걸쳐 동일한 항목은 동일한 성분(component)을 나타낼 수 있는 도면을 참조한다. 도 1은 솔리드 스테이트 드라이브(SSD)가 호스트(20)와 인터페이싱하는 것인 전체 시스템(12)의 일부를 형성하는, 본 발명의 일 실시예에 따라 생성된 솔리드 스테이트 드라이브(SSD)(10)의 블록도이다. 도 2의 예시적인 실시예에서, SSD(10)의 저장 용량은 총 20개의 모듈로 제공되며, 그 일부는 참조 부호(30)로 지시된다. 임의의 적절한 개수의 모듈이 본 명세서에 개시 내용의 범위 내에서 사용될 수 있다. 각 모듈은 플래시 메모리일 수 있는 비휘발성 메모리(non-volatile memory)("NVM") 섹션(예를 들어, 다수의 NVM 디바이스, 에를 들어, 다수의 NVM 다이)을 포함하지만, 임의의 적절한 메모리 기술, 예를 들어, 위상 변화 메모리(phase change memory)("PCM") 및 가변 저항 메모리의 다른 형태의 다른 형태가 사용될 수 있다. 도 1의 모듈 배열은 모듈의 총 개수 중 일부 모듈의 사용의 손상을 대비하기 위하여 "스패어(spare)" 모듈의 사용을 지원한다. SSD의 총 용량이 일 테라바이트(1TB)를 목표로 하는 경우, 각 모듈이 64기가바이트(64GB)의 용량을 가지는 16개의 모듈이 이 목표를 만족시키는 것을 볼 수 있다. 따라서, 총 20개의 모듈은 스패어로서 취급될 수 있는 5개의 모듈을 여분으로 제공할 수 있다. 단일 모듈에 다수의 NVM 디바이스를 포함하는 것은 메모리 모듈에 NVM 다이의 수의 인수(factor)만큼 판독 및 기록 동작 동안 제어기에 직접 연결된 개별 메모리 디바이스의 수를 감소시킬 수 있다.
볼 수 있는 바와 같이, 모듈과의 통신은 모듈 인터페이스를 통해 제공된다. 모듈 인터페이스는 점대점 인터페이스(point-to-point interface)일 수 있고, 모듈 인터페이스의 독립적인 인스턴스(instance)가 시스템의 각 모듈에 제공될 수 있다. 이것은 모듈 핀 카운트(low module pin count)가 낮은 것으로 인해 실용적일 수 있다. 낮은 핀 카운트는 많은 모듈 인터페이스 포트(port)로 하여금 ASIC 형태로 SSD 제어기의 종래의 패드-링 제약(pad-ring constraint) 내에서 제공될 수 있게 하고, 각 포트는 하나의 모듈에 인터페이스를 제공한다. 모듈과 SSD 제어기 포트의 점대점 상호연결은 특정 모듈 인터페이스의 자원을 SSD 제어기와 특정 모듈 사이의 트랜잭션(transaction)에 전용 할당할 수 있게 한다. 메인 제어기와 각 모듈 사이의 모듈 인터페이스에 의해 수립된 상호연결이 전용일 때, 메인 제어기와 모듈 사이의 트랜잭션은 다른 모듈과 인터페이스의 자원을 공유하지 않고, 이들 트랜잭션은 그리하여 각 모듈 인터페이스의 최대 대역폭에서 실행될 수 있다. 또한 연결이 하나의 모듈에 전용일 때, 하나를 초과하는 모듈에 인터페이스가 연결되는 경우 필요할 수 있었던 중재 및 자원 공유가 회피될 수 있다. 이것은 인터페이스를 통해 전달되는 데이터의 양과 트랜잭션의 수에 성능을 증가시키는 것에 의해 시스템 성능을 개선시킬 수 있다.
도 1을 더 참조하면, 제어기(40)는 각 모듈에 모듈 인터페이스(42)(이들 중 몇 개만이 참조 부호를 사용하여 지시된다)를 통해 각 모듈(30)과 인터페이싱된다. 제어기는 예를 들어, 컴퓨터에 메모리 시스템을 부착하기 위한 여러 인터페이스 중 어느 것일 수 있는 적절한 하이 레벨 호스트 인터페이스(44)를 통해 호스트(20)에 인터페이싱된다. 예를 들어, 호스트 인터페이스(44)는 일부 시스템(12)에 대해 SATA(직렬 ATA) 인터페이스일 수 있다. 다른 시스템(12)은 SAS(직렬 부착 SCSI) 인터페이스의 사용을 이용할 수 있거나 인터페이스는 예를 들어 PCI 익스프레스(Express)를 사용하는 것과 같은 백플랜 지향(back plane oriented) 일 수 있다. 이런 점에서 호스트 인터페이스의 적절한 형태는 특정 최종 사용을 고려하여 선택될 수 있다.
전체 SSD 시스템(10)에 성능 개선을 제공하기 위하여 캐시(46)가 포함될 수 있다. 캐시는 SDRAM, PCM, 고속 플래시(fast flash)(예를 들어, SBC), 등과 같은 임의의 적절한 메모리 디바이스를 부착하는 것에 의해 실현될 수 있다. SSD 제어기(40)는 하나 이상의 캐시 디바이스와 통신하기 위한 전용 인터페이스를 구비할 수 있다. 특정 SSD 설계를 위해 선택된 캐시 기술의 특성에 따라, 이 인터페이스는 캐시에 전용일 수 있다. 캐시 디바이스(46)가 모듈인 경우, 캐시 인터페이스는 NVM 모듈 인터페이스와 동일하거나 유사할 수 있다.
제어기(40)는 종래 기술의 SSD를 위한 제어기와 비교할 때 간략화된 것으로 볼 수 있다. 시스템(10)에서 모듈은 아래에 더 설명될 상세 관리 기능을 구비하므로, SSD 제어기는 종래 기술의 제어기에 의해 일반적으로 수행되는 많은 기능의 부담이 경감될 수 있다. 오프로드(offloaded)되는 기능의 비제한적인 예로는 적어도 (1) 마모 레벨링, (2) 가비지 수집, (3) 논리적-물리적 어드레스 변환, (4) 물리적 페이지-논리적 블록 추상화(block abstraction), (5) ECC 기능, 및 (6) 메모리 컨디셔닝 및 신호 처리를 포함할 수 있다. 상기 나열된 바와 같은, 종래 기술의 SSD 제어기에서 무거운 CPU 및 다른 지원 활동을 요구할 수 있는 기능들 중 많은 기능이 감소되거나 제거될 수 있으므로, SSD 제어기의 대역폭은 호스트 및 연결된 모듈 사이에 유저 데이터를 전달하는 것에 상대적으로 더 많이 전용될 수 있다.
도 1과 함께 도 2를 참조하면, 도 2는 제어기(40)의 일 실시예를 도시한 블록도이다. 제어기는 복수의 제어기 모듈 포트(100)를 포함하며, 각 제어기 모듈 포트는 복수의 저장 모듈(30)(도 1)과 통신하는 모듈 인터페이스(42)를 제공한다. 각 제어기 모듈 포트(100)는 하나의 제어기 모듈 포트로부터 그 다음 제어기 모듈 포트로의 것과 동일한 것인 연관된 인터페이스 신호 연결의 일 세트를 제공한다. 비제한적인 예로서, 제어기(40)는 도 1에 도시된 바와 같이 20개의 개별 모듈 인터페이스(42)를 통해 20개의 모듈(30)과 통신할 수 있다. SSD 제어기에서 제어기 모듈 포트의 수는 변할 수 있다. 주어진 SSD 제어기에서 구현되는 제어기 모듈 포트의 특정 개수는 SSD 제어기 그 자체를 수반하는 설계 상의 고려사항 및 SSD 시스템에 의존할 수 있다. 이들 설계 고려사항은 SSD의 원하는 저장 용량, 원하는 성능, 및 원하는 비용을 수반할 수 있다. 제어기 모듈 인터페이스의 이익은 특정 실시예의 SSD 제어기에 구현된 제어기 모듈 포트의 개수에 상관없이 제공된다.
메인 제어기(40)의 설명을 계속하면, 데이터 경로 및 제어 논리 섹션(120)은 버스 연결(122) - 이들 중 일부만 참조 부호로 지시된다 - 과 같은 양방향 데이터 경로를 사용하여 각 활성 제어기 모듈 포트(100)와, SSD 제어기의 나머지 성분 사이에 데이터 전송을 수행하도록 구성된다. 제어 버스(124)는 메모리(132)에 저장된 코드를 사용하여 동작하는 마이크로프로세서(130)와, SSD 제어기를 구성하는 논리 블록에 포함된 레지스터(134) 사이에 데이터 경로를 제공할 수 있다. 각 제어기 모듈 포트는 마이크로프로세서(130)에 의한 제어를 가능하게 하기 위해 버스(124)에 연결된다. 따라서, 마이크로프로세서(130)는 각 모듈 포트 내 레지스터(136)로부터 판독하거나 이에 기록할 수 있으며, 이를 수행할 때 각 제어기 모듈 포트의 동작을 관리(예를 들어, 설정, 시작, 종료, 및 모니터링)할 수 있다. 데이터 버퍼 섹션(140)은 제어기 모듈 포트(100) 중 하나를 통해 모듈로 전달되도록 예정된 기록 데이터로서 또는 호스트 인터페이스 포트(144)를 통해 호스트로 전달되도록 예정된 판독 데이터로서 SSD 제어기를 통해 흐르는 데이터의 블록을 준비하는 메모리를 제공할 수 있다. 양방향 데이터 경로(146)(이들 중 일부만이 참조 부호를 사용하여 지시된다)는 데이터 경로와 제어 섹션(120) 및 데이터 버퍼 섹션(140) 사이에 제공될 수 있다. 양방향 데이터 경로(146)의 개수와 제어기 모듈 포트(100)의 개수 사이에 일대일 대응 관계가 요구되지 않는 것으로 이해된다. 이런 점에서 이산 양방향 데이터 경로(146)의 충분한 개수가 충분한 총 데이터 대역폭을 보장하기 위하여 존재할 수 있다. 즉, 양방향 데이터 경로(146)의 총 개수는 모듈 포트의 총 개수 미만이거나 제어기 모듈 포트의 총 개수와 같거나 또는 제어기 모듈 포트의 총 개수를 초과할 수 있다.
메모리(132)는 하나 이상의 모듈로부터 수신된 데이터의 에러로 인해, SSD 제어기에서 예외적 상황(예를 들어, 자원의 충돌, 버퍼 메모리 에러 등)으로 인해, 및 다른 정상 동작 과정 동안 발생하는 예상치 못한 문제로 인해 발생하는 것을 포함하여 SSD 제어기의 정상 동작 동안 발생할 수 있는 관리 에러 및 예외 사항과 같은 SSD 제어기를 관리하는 기능을 수행하기 위하여 마이크로프로세서(130)에 의해 액세스가능하다.
버스(150)와 같은 고속 데이터 경로는 버퍼 섹션(140)과 호스트 인터페이스 포트(144) 사이에 데이터를 전송하는 데 사용될 수 있다. 이 버스는 예를 들어 호스트 인터페이스를 통해 전송 율(transfer rate)을 결합하는 것; 호스트 인터페이스를 통해 송신되는 명령과 이들 명령에 대한 응답 사이의 레이턴시(latency); 및 다수의 명령의 동시적 실행을 지원하는 동시성(concurrency)에 대하여 SSD 시스템의 요구조건을 지원하는 임의의 적절한 설계일 수 있다. 호스트 인터페이스 포트(144)는 마이크로프로세서가 호스트 인터페이스(44)를 관리(예를 들어, 제어 및/또는 모니터링)하도록 제어 버스(124)를 통해 마이크로프로세서(130)와 통신한다. 단일 호스트 인터페이스(44)만이 도 2에 도시되어 있으나, 하나를 초과하는 호스트 인터페이스가 주어진 SSD 제어기 실시예에 존재할 수 있다. 다수의 호스트 인터페이스를 가지는 실시예에서, 호스트 인터페이스의 각 인스턴스는 동일한 유형의 인터페이스(다수의 SAS 포트를 가지는 경우)일 수 있거나 또는 상이한 인스턴스는 상이한 유형(예를 들어, SAS, SATA, 및 PCI 익스프레스)의 일부 조합과 같은)일 수 있다.
SSD 제어기 인터페이스(44)에 대한 호스트는 호스트 인터페이스 포트(144)에 의해 제공될 수 있다. 이러한 포트(144)는 호스트 인터페이스 정의에 의해 요구되는 모든 동작을 수행하도록 구성된 신호 연결 및/또는 회로를 포함한다. SAS 또는 SATA 인터페이스가 호스트 인터페이스 포트(144)에 의해 제공되는 경우, 물리적 연결은 2개의 차동 쌍(differential pair)으로 구성된 최소 4개의 신호 연결로 이루어질 수 있다. 다른 실시예에서, 예를 들어 SAS가 사용되고 제2 인터페이스 신호 연결이 사용되는 경우에 추가적인 차동 신호 쌍이 존재할 수 있다. SAS의 경우에, 하나를 초과하는 호스트 포트가 사용될 수 있고, 이 실시예에서, 2개의 물리적 커넥터 세트가 하나의 물리적 커넥터 세트 대신에 존재할 수 있다.
이제 본 발명의 일 실시예에 따라 생성된 모듈(30)(또한 도 1 참조)을 도시한 블록도인 도 3을 참조한다. 이 모듈은 복수의 메모리 디바이스(170)를 포함할 수 있다. 메모리 디바이스의 총 개수는 1개 내지 8개 또는 그 이상으로 변할 수 있으며 메모리 디바이스는 임의의 적절한 기술에 기초할 수 있다. 일부 실시예에서 메모리 기술은 NAND 플래시이다. 모듈의 전체 메모리를 구성하는 디바이스는 모듈에 사용하기 위해 커스터마이징(customized)될 수 있는 표준으로 상업적으로 이용가능한 부분 또는 디바이스일 수 있다. 다수의 메모리 디바이스(170)가 미디어 포트(176)에 부착되어 부착된 메모리 디바이스의 동시 동작을 증가시키거나 및/또는 SSD에서 데이터 처리량을 증가시킬 수 있다. 도 3에 도시된 바와 같이, 일부 실시예에서, 각 미디어 포트(176)는 메모리 디바이스 그룹에 인터페이스를 제공할 수 있다.
도 3을 더 참조하면, 각 미디어 포트(176)는 복수의 메모리 디바이스와 통신하는데 사용될 수 있는 메모리 디바이스 인터페이스(180)를 제공한다. 나아가, 각 모듈(30)은 다수의 미디어 포트(176)를 포함할 수 있다. 일부 실시예에서, 미디어 포트의 개수는 2개 또는 4개이다. 각 미디어 포트(176)는 예를 들어, 표준 NAND 플래시 디바이스와 통신하는 ONFI(Open NAND Flash Interface)와 같은 산업 표준 인터페이스를 제공할 수 있거나 또는 각 미디어 포트는 커스터마이징된 메모리 디바이스와 통신하도록 의도된 커스텀 인터페이스를 제공할 수 있다. 전술된 바와 같이 하나 이상의 메모리 디바이스(170)는 각 메모리 디바이스 인터페이스(180)를 통해 통신할 수 있다. 일부 실시예에서, 개수는 1 내지 4에 이를 수 있다. 나아가, 동일한 개수의 메모리 디바이스가 각 미디어 포트에 연결될 필요는 없다. 나아가, 일부 경우에, 특정 미디어 포트는 이에 연결된 임의의 메모리 디바이스를 구비하지 않을 수 있다. 이 상황은 예를 들어, 특정 모듈 배열이 모든 이용가능한 미디어 포트를 사용하지 않을 때 발생할 수 있다.
데이터 경로와 제어 섹션(190)은 모듈(30)의 일부를 형성하고, 미디어 포트 그 자체와 함께 여러 시스템 자원을 사용하여 다수의 미디어 포트로 및 이 미디어 포트로부터 데이터 트래픽을 관리(예를 들어, 조정)하는 방식으로 미디어 포트(176)로 및 이 미디어 포트로부터 데이터 트래픽을 향하게 하도록 구성될 수 있다. 다수의 데이터 경로는 각 미디어 포트(176)와 나머지 모듈 사이에 데이터 흐름으로 지원될 수 있다. 디코더 판독 데이터 경로(200)는 디코더(202)에 데이터 경로; 데이터 버퍼 섹션(210)에 직접 데이터 경로(204); 판독 논리(212)에 데이터 경로; 및 데이터 경로 및 제어 유닛(190)을 통해 적어도 흐르는 하나의 미디어 포트(판독 모드에서)로부터 다른 미디어 포트(기록 모드에서)로의 데이터 경로를 포함한다. 기록 데이터 경로는 인코더(220)로부터 데이터 경로; 데이터 버퍼 섹션(210)으로부터 직접 데이터 경로(230); 및 기록 논리(222)로부터 데이터 경로를 포함할 수 있다. 이들 여러 데이터 경로에서 발생할 수 있는 전부는 아니지만 대부분의 데이터 흐름은 모든 다른 데이터 흐름과 동시에 유지될 수 있다는 것이 주목된다. 본 동시성이 유지될 수 있는 방식 중 일부가 다음에 설명된다:
a. 하나의 미디어 포트(176)는 이에 부착된 메모리 디바이스(170) 중 하나에 제1 기록 기능을 수행하는데 사용된다. 제1 기록 기능에 의해 사용된 데이터 경로는 모듈에서 이용가능한 기록 데이터 경로 중 하나이다. 동시에, 다른 미디어 포트(176)는 이에 부착된 메모리 디바이스(170) 중 하나에 제2 기록 기능을 수행하는데 사용된다. 제2 기록 기능에 사용된 데이터 경로는 제1 기록 기능에 의해 아직 사용되지 않은 나머지 기록 데이터 경로 중 어느 것일 수 있다. 2개의 미디어 포트는 동시 기록 기능을 수행하므로, 기록 모드 데이터를 수신하는 2개의 메모리 디바이스는 별개이다. 이 시나리오는 각 메모리 디바이스는 단 하나의 미디어 포트에만 부착되므로 단일 메모리 디바이스가 2개의 미디어 포트로부터 동시 명령 타깃이 되는 것은 가능하지 않은 것으로 이해된다.
b. 제1 미디어 포트(176)는 이에 부착된 메모리 디바이스(170) 중 하나에 기록 기능을 수행하는데 사용된다. 기록 기능에 의해 사용된 데이터 경로는 모듈에서 이용가능한 기록 데이터 경로 중 하나이다. 동시에 제2 미디어 포트(176)는 이에 부착된 메모리 디바이스 중 하나로부터 판독 기능을 수행하는데 사용된다. 판독 데이터 경로는 제2 미디어 포트에 이용가능한 임의의 판독 데이터 경로일 수 있다.
c. 단일 미디어 포트(176)는 하나를 초과하는 명령을 동시에 수행하는데 사용될 수 있다. 이것은 동일한 미디어 포트(176)에 부착된 2개 이상의 메모리 디바이스 각각에 활성 명령(active command)으로 발생하거나 또는 동일한 미디어 포트(176)에 부착된 단일 메모리 디바이스에 다수의 명령으로 발생할 수 있다. 어느 상황이든, 명령의 동시성은 모듈의 특정 미디어 포트(176)와 데이터 경로 및 제어 섹션(190)에 의해 제공되는 단일 미디어 인터페이스(192)를 통해 동시적인 데이터 흐름을 요구한다. 데이터 흐름의 이러한 동시성은 임의의 단일 시점에서 단 하나의 데이터 값만이 특정 미디어 포트 인터페이스(192)에서 존재할 수 있다는 사실에 의해 부과되는 시간적 제약이 있다는 점에서 상기 (a) 및 (b)에 설명된 경우와는 다르다. 다수의 데이터 흐름을 유지하기 위하여 특정 미디어 포트 인터페이스(192)는 다른 활성 명령 중 하나를 양산하기 전에 제한된 시간 동안 각 활성 명령이 데이터를 전송하도록 허용되도록 시간에 따라 공유되도록 동작할 수 있다. 이 개념을 언급하는 데 데이터 통신 기술에서 공통적으로 사용되는 용어는 이 기술 분야에 통상의 지식을 가진 자에게 친숙한 "시간 영역 다중화(time domain multiplexing)"이다.
d. 다수의 미디어 포트(176)는 단일 데이터 유닛(예를 들어, 블록)이 파티셔닝(partitioned)되고 하나를 초과하는 메모리 디바이스에 걸쳐 기록되는 경우 단일 판독 또는 기록 명령을 협력하여 수행하는데 사용될 수 있다. 데이터는 본 발명의 상황에서 여러 방식으로 파티셔닝될 수 있다, 즉 하나의 가능한 파티션은 인터리빙(interleaving)에 의하여 2개 이상의 파티션으로 블록을 분리하는 것을 수반한다. 인터리빙은 비트 또는 바이트 경계를 따라 또는 더 큰 유닛, 예를 들어, 워드, 더블 워드, 섹터, 등과 같은 유닛을 사용하여 수행될 수 있다. 인터리빙은 기록 동작에 인코딩하기 전이나 후에 수행될 수 있다. 인터리빙 단계가 인코딩 전에 발생하는지 또는 인코딩 후에 발생하는지는 디코더에서 대응하는 순서를 결정한다. 인터리빙이 인코딩 전에 수행되는 경우 별개의 인코딩 단계가 각 파티션에 대해 수행되며 이는 파티션만큼 많은 인코더가 기능을 지원하는데 필요하다는 것을 의미할 수 있다. 다수의 메모리 디바이스에 걸쳐 단일 블록을 기록/판독하는 데 인터리빙 기능의 하나의 이점은 이것이 비 인터리빙된 접근법으로 가능할 수 있는 것보다 데이터 처리량이 훨씬 더 높은 것을 초래한다는 것이다.
모듈(30)은 하나 이상의 디코더(202)를 포함한다. 본 실시예에서 데이터 경로 자원으로서, 각 디코더(202)는 다수의 디코더가 도 3에 의해 도시된 바와 같이 모듈 실시예에 제공될 때 상이한 전송의 다수의 동시적 디코딩이 일어날 수 있도록 한번에 단 하나의 전송(예를 들어, 데이터 블록 또는 데이터 파티션)을 지원할 수 있다. 다수의 디코더의 존재는 2개의 상이한 전송의 진정한 동시적인 디코딩 능력을 제공한다.
디코더의 구성은 메모리 디바이스들이 사용되고 있는 방식에 따라 변할 수 있으며 그래서 모듈에 다수의 변형이 존재할 수 있다. 일례로서, 특정 모듈의 메모리 디바이스가 플래시 기술에 기초하는 경우 상이한 유형의 플래시 메모리가 사용될 수 있다. 나아가, 이용가능한 플래시의 유형 내에서 각 플래시 유형에 대해 하나 이상의 사용 모드들이 있을 수 있다. 예를 들어, 상업적으로 이용가능한 플래시 디바이스가 선택되는 경우 메모리 디바이스(또는 메모리 디바이스의 일부)는 셀당 단일 비트(SBC) 모드 또는 셀당 다수의 비트(MBC) 모드에서 사용될 수 있다. 일 실시예에서, 데이터는 어느 모드가 사용되고 있는지에 상관없이 대수 에러 정정 코드(algebraic error correcting code)("대수 ECC")로 인코딩되어 기록될 수 있다. 여기서 이 경우에 대해 적절한 디코더는 적용된 특정 코드를 디코딩하고 이 특정 코드에 의해 허용된 정도까지 에러를 정정하는 것이다. 다른 경우로서, SBC 또는 MBC 메모리를 위한 모듈에 의해 사용되는 특정 대수 코드는 SBC 또는 MBC 메모리가 메모리 디바이스의 페이지 구조에 직접 대응하는 유닛으로 액세스되는지에 더 의존하거나 또는 모듈이 호스트의 관점(view)으로부터 페이지 레벨 상세를 제거하는 호스트를 위한 추상화 서비스( 및 관리 담당)를 수행하는 경우 의존할 수 있다. 어느 경우이든 상이한 디코더 실시예를 수반할 수 있다.
다른 예는 판독, 기록, 및 소거와 관련된 메모리 디바이스의 내부 기능에 대하여 가시성, 액세스 및 제어를 제공하는데 메모리 디바이스를 사용하는 것에 있다. 이 메모리 디바이스로 구성된 모듈은 바로 전에 설명된 예를 나타내는 표준 메모리보다 더 우수한 정밀도로 기록되고 판독될 수 있다. 더 큰 정밀도는 더 큰 정보 저장 밀도를 제공할 뿐만 아니라 디코딩 기능에서 이점으로 사용될 수 있는 추가적인 정보를 제공할 수 있다. 이 추가적인 정보는 플래시 메모리로 기록되거나 플래시 메모리로부터 판독되는 데이터에 추가적인 정밀도 비트의 형태로 존재할 수 있고, 데이터 통신 기술에서 통상의 지식을 가진 자에게 친숙한 용어인 "소프트 비트(soft bit)"라고 언급될 수 있다. 이러한 메모리는 또한 데이터의 판독 또는 기록 관련 왜곡을 보상하여 판독 및 기록 기능의 구성(예를 들어, 적응 및/또는 정정)을 위한 능력을 제공하여 더 높은 데이터 저장 밀도(셀당 더 많은 비트)와 더 높은 신뢰성(플래시 메모리에서 증가된 프로그램/소거 사이클이라고 종종 나타나는) 중 하나 또는 둘 모두를 제공하는 기능을 더 가능하게 한다. 이러한 언급된 능력은 디코더(들)의 상이한 구성을 요구할 수 있다.
이들 예를 고려하여 모듈의 일 실시예에 대한 하나의 기준은 상이한 유형의 메모리 디바이스의 사용에 융통성을 제공하는 것이라면, 모듈에서 대응하는 디코딩 배열이 다중 모드 기능을 제공할 수 있다. 예상될 수 있는 특정 변형의 일부는,
a) 하나 이상의 비트 에러 용량 설정을 가지는 BCH(Bose Chaudhuri Hoquenghem) 디코딩만,
b) 하나 이상의 심볼 에러 용량 설정을 가지는 RS(Reed Solomon) 디코딩만,
c) 순차 디코딩(예를 들어, 콘볼루션)의 적절한 형태와 결합된 BCH 디코딩, 및
d) 순차 디코딩의 적절한 형태와 결합된 RS 디코딩을 포함한다.
하나를 초과하는 디코더 기능을 제공하도록 구성될 수 있는 모듈은 특정 모드에서 디코더의 특정 인스턴스를 동작시킬 수 있다. 예를 들어, 2개 디코더 모듈은 2개의 데이터 경로에 진정한 디코딩 동시성을 지원할 수 있다. 모듈에서 다수의 디코더에 의해 부여되는 융통성의 일부는, 주어진 시간에 비 제한적인 예로서 하나의 디코더가 BCH 단독 디코더로 구성될 수 있는 반면, 다른 디코더는 리드 솔로몬(Reed-Solomon) 디코더와 결합된 종래의 디코더(비터비(Viterbi) 디코더)로 구성될 수 있다는 사실로부터 발생한다.
도 3의 인코더(220)에 대하여 바로 전술된 설명은 2개의 기능이 바로 유사한 것으로 인해 적어도 일반적으로 인코더와 인코딩 기능으로 확장될 수 있다. 따라서, 메모리 사용, 디코더 모드, 융통성, 및 동시성에 대하여 바로 전술된 설명은 인코딩의 경우에도 동일하게 적용된다.
판독 논리(212)는 저장 서브시스템으로 모듈의 적어도 반 자율 능력을 위해 동작 지원으로 제공될 수 있다. 판독 논리(212)에 의해 수행되는 기능은 예를 들어 평균값(mean value)과 같은 교정 또는 보상과 함께 사용되는 데이터 처리, 및 이 교정 및/또는 보상 기능이 그 내부 동작에 특정 제어를 부여하는 메모리 디바이스에 대해 공동 소유되고 공동 계류 중인 미국 특허 출원 일련 번호 12/888,585(출원일 : 2010년 9월 23일, 발명의 명칭: MEMORY QUALITY MONITOR BASED COMPENSATION METHOD AND APPARATUS)(이하, '585 출원이라고 언급함)에 설명된 어레이 프로세서 기능을 예로서 포함할 수 있다. 특히, 보상은 메모리 디바이스의 물리적 배열과 연관된 파라미터를 사용하여 신호 처리를 수반할 수 있는 반면, 교정은 직접 소프트웨어 제어 하에서 하드웨어 기능으로 수행될 수 있는 다수의 메트릭 수집 분석 기능을 수반할 수 있다.
기록 논리(222)에서, 판독 논리(212) 및 바로 위에서 설명된 판독 기능에 관한 설명은 기록 논리와 기록 기능으로 적어도 일반적으로 확장될 수 있다. 일부 경우에 판독 모드 대신에 기록 모드에서 보상이나 적응과 연관된 동작을 수행하는 특정 이유 또는 이점이 있을 수 있다. 이 적응에서 예를 들어 신호 대 잡음비(signal-to-noise ratio)("SNR") 관련 데이터와 같은 정보는 후속하는 파라미터 값에 대한 기초로 수집될 수 있다. 비트 밀도 구성의 경우에 및 비제한적인 예로서, 모듈은 이 영역이 재할당될 때 이 영역의 비트 밀도를 구성하는데 가비지 수집 기능에 의해 재사용되는 메모리의 특정 물리적 영역에 대해 SNR 통계(statistics)를 사용할 수 있다. 이것은 기록 기능과 판독 기능 사이의 주된 차이일 수 있다. 모듈은 기록 기능과 판독 기능의 임의의 적절한 조합을 포함할 수 있다. 따라서, 주어진 모듈에서, 기록 기능은 구성가능한 것인데 반해, 판독 기능은 구성가능하지 않거나; 또는 판독기능은 구성가능한 것인데 반해 기록 기능은 구성가능하지 않을 수 있다. 일부 실시예에서 판독 기능과 기록 기능은 모두 구성가능한 것으로 제공될 수 있다.
데이터 버퍼 섹션(210)으로부터 데이터 경로 및 제어 섹션(190)으로 직접 기록 데이터 경로(230)는 필요 시 낮은 레이턴시 데이터 통신을 제공할 수 있음은 물론 디코드 기능이나 판독 기능을 요구하지 않는 전송을 위한 대안적인 데이터 전송 경로를 제공할 수 있다. 직접 기록 경로는 데이터 전송이 미디어 포트(176) 및 연관된 메모리 디바이스(170) 중 하나로 가는 것이라는 점에서 기록 경로이다.
직접 판독 데이터 경로(204)는 직접 기록 경로(230)와 유사하며, 데이터 경로 및 제어 섹션(190)으로부터 데이터 버퍼 섹션(210)으로 연장되어, 필요시에 낮은 레이턴시 데이터 통신을 제공함은 물론 인코딩 기능이나 기록 기능을 요구하지 않는 전송을 위한 대안적인 데이터 전송 경로를 제공한다. 직접 판독 경로는 데이터 전송이 미디어 포트(176) 및 연관된 메모리 디바이스(170) 중 하나로부터 오는 것이라는 점에서 판독 경로이다.
데이터 버퍼 섹션(210)은 모듈 인터페이스(42)(도 1 및 도 2 참조)의 일 인스턴스를 제공하는 제어기 포트(240)에 연결된다. 데이터 버퍼 섹션은 데이터 버퍼와 모듈 인터페이스 사이에 뿐만 아니라 데이터 버퍼와 미디어 포트 사이에 전송을 준비하는 데이터를 제공하는 데이터 버퍼 기능을 구현한다. 이러한 데이터 버퍼 기능은 예를 들어 버퍼로 및 버퍼로부터 전송들 사이에 속도 매칭을 제공할 수 있다. 예를 들어, 임의의 플래시 판독 명령은 메모리 디바이스 데이터를, (1) 메모리 디바이스(170)에서 발신되고 버퍼(210)에서 종료하는 이산 전송, 및 (2) 버퍼(210)에서 발신되고 모듈 인터페이스(42)를 통해 흐르는 후속 전송의 조합으로 모듈 인터페이스에 전송하는 것을 수반할 수 있다. 그 역으로, 메모리 디바이스에 기록하는 임의의 기능은 (1) 모듈 인터페이스(42)를 통해 진입(enter)하고 데이터 버퍼(210)에서 종료하는 이산 전송, 및 및 (2) 데이터 버퍼(210)에서 발신되고 메모리 디바이스(170)에서 종료하는 후속 전송의 조합을 수반할 수 있다.
데이터 버퍼 섹션(210)은 데이터를 데이터 버퍼로 및 데이터 버퍼로부터 흐르는 것을 제어하도록 구성된 DMA 부분(242)을 포함할 수 있는 것으로 이해된다. 일반적으로 DMA 자원은 시작 오프셋, 카운트로 구성되고, 시퀀싱 기능은 각 가능한 데이터 경로에 할당된다.
도 3을 계속 참조하면, 각 모듈(30)은 프로그램 메모리(302)로부터 동작하는 내장된 마이크로프로세서(300)를 포함하며, 이 마이크로프로세서는 예시의 명료함을 위하여 도시되지 않았으나 존재하는 것으로 이해되는 마이크로프로세서 버스를 통해 모듈을 구성하는 여러 성분에 연결된다. 특히, 이 마이크로프로세서는 여러 성분 내 레지스터에 액세스할 수 있다. 프로그램 메모리(302)에 저장된 소프트웨어는 특정 실시예에 기초하여 변할 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 주어진 기능을 위한 하드웨어 지원의 범위는 변할 수 있다는 것을 인식할 수 있을 것이다. 그리하여, 관리 기능을 수행할 때 소프트웨어와 하드웨어 사이에 협력이 다음 사항의 변화에 응답하여 구성될 수 있다:
a. 메모리 디바이스 유형.
b. 인코딩 및 디코딩 기능(예를 들어, 알고리즘).
c. 보상 기능(판독 데이터에 보상을 적용하고 데이터를 기록하기 전에 보상을 적용한다).
d. 플래시 메모리에 블록 소거 기능.
e. 모듈 인터페이스 지원(명령 실행) 기능.
f. 모듈이 메인 제어기와는 독립적인 독립식 기능으로 마모 레벨링을 실행하는, 자율 마모 레벨링 기능.
g. 메인 제어기가 모듈 인터페이스를 통해 모듈에 관련 파라미터 및 명령을 제공하는 것에 의해 마모 레벨링 기능을 제어하는, 반 자율적인 마모 레벨링 기능.
h. 국부 자율 플래시 변환 층(FTL) 구현.
i. 메인 제어기가 모듈 인터페이스를 통해 모듈에 관련 파라미터 및 명령을 제공하는 것에 의해 플래시 변환 동작을 제어하는, 지시된 플래시 변환 층(호스트에 의해 제어되는) 구현.
j. 호스트에 의해 지시되는 물리적 메모리 액세스. 호스트는 메인 제어기에 적절한 명령을 발송하는 것에 의해 복수의 모듈 내 물리적 메모리에 액세스할 수 있고, 메인 제어기는 적절한 직접 액세스 명령을 선택된 모듈에 부착된 메모리 디바이스 중 하나에 발송하는 것에 의해 이 명령에 응답할 수 있다.
k. 호스트에 논리적 블록 추상화를 가지는 모듈에 의해 지시된 물리적 메모리 액세스.
l. 자율적인 가비지 수집(통상적으로 국부 FTL에 적용됨).
m. 메인 제어기가 제어가 가해지는 모듈에 적절한 파라미터를 기록하는 것에 의해 메인 제어기에 부착된 모듈 중 하나 이상의 모듈의 가비지 수집 기능에 제어를 가하는, 반 자율적인 가비지 수집.
n. 메인 제어기가 각 모듈의 각 모듈의 모듈 인터페이스를 통해 복수의 모듈의 적어도 일부 서브세트에 적절한 파라미터를 기록하는 것에 의해 가비지 수집 기능을 제어하는, 지시된 가비지 수집(내부 블록 복사 기능과 같은)을 위한 지원.
o. 부착된 메모리 디바이스의 국부 자체 테스트.
p. 자율적인 전력 관리 기능
상기 리스트는 단지 예로서 제공된 것일 뿐 모든 것을 전부 포함하는 것이라거나 발명을 제한하려는 것으로 의도된 것이 전혀 아닌 것으로 이해된다. 따라서, 모듈 구성은 임의의 적절한 조합으로 모듈 동작의 적어도 상기 측면의 선택 및 재구성을 지원한다.
도 3을 더 참조하면, 모듈(30)은 자원으로서 프로그램 메모리(302)와 CPU(300)를 통해 제공된 임의의 적절한 기능의 조합을 수행(예를 들어, 제공)하는데 사용될 수 있는 기능 엔진(320)을 포함한다. 기능 엔진(320)의 실시예는 예를 들어 전술된 여러 관리 기능의 하나 이상을 수행할 수 있다. 예를 들어, 마모 레벨링, FTL, 및 가비지 수집, 및 원하거나 및/또는 요구될 수 있는 다른 기능이 일 실시예에 제공될 수 있다. 나아가, 기능 엔진은 제어기(40)로부터 및/또는 기능을 구성하는 모듈 자체로부터 제공된 파라미터 세트를 수신할 수 있다. 즉, 모듈의 관리 기능은 제어기 또는 모듈 그 자체로부터 제공된 파라미터에 기초하여 적어도 어느 정도 구성가능하다. 예를 들어, 제어기가 관리 기능을 지시하는 범위는 제어기에 의해 설정될 수 있는 파라미터에 기초하여 구성될 수 있다. 그러나, 파라미터가 수립되면, 관리 기능은 일 실시예에서 자율적으로 동작할 수 있다. 파라미터 우선순위는 이후 적절한 지점에서 상세히 설명된다. 그러나, 어느 경우이든, 기능 엔진은 더 설명되는 바와 같이 관련 기능(들)을 수행하도록 구성된다. 메인 제어기(40)는 제어기가 기능 엔진의 공유된 파라미터 섹션(322)에 제공하는 구성 파라미터 세트를 통해 주어진 기능에 대해 동작 특성을 결정할 수 있다. 공유 파라미터 섹션은 예를 들어 제어기(40)(도 2)에 응답하여 및 모듈(30)(도 3)의 모듈 인터페이스(42)에 응답하여 식재(populated)될 수 있다. 이들 구성 파라미터는 기능 엔진이 예를 들어, 마모 레벨링, 가비지 수집 및 비트 밀도 구성과 같은 각 기능을 수행(예를 들어, 초기화 및/또는 동작)할 수 있는 방법을 결정한다. 각 기능에 파라미터에 의해 한정된 구성은 모듈과 메인 제어기에 의해 수행될 활동을 위한 요구조건을 한정할 수 있다. 예를 들어, 적어도 반 자율적인 마모 레벨링은 원래의 구성을 따라 메인 제어기로부터 최소 관련된 통신을 가지는 모듈에 의해 수행될 수 있다. 한편, 지시된 마모 레벨링은 모듈로부터 보고하는 일부 형태를 통해 제어기에 의해 마모 레벨링 활동을 모니터링하는 것에 의해 동반되는 제어기로부터 연속적이거나 주기적인 구성을 요구할 수 있다. 이러한 보고는 예를 들어 이후 더 설명될 보고 섹션(reporting section)을 통해 제공되는 출력 파라미터 값을 업데이트하는 것을 통해 모듈에 의해 동반될 수 있다. 따라서, 각 모듈의 기능 엔진은 하나 이상의 모듈 입력 파라미터에 적어도 부분적으로 기초하여 이 모듈만의 비휘발성 메모리 디바이스에 관리 기능을 수행하도록 구성될 수 있다. 메인 제어기는 호스트 디바이스와 디지털 데이터 통신을 제공하며, 모듈 중 하나로 및 모듈 중 하나로부터 흐르는 임의의 데이터가 제어기를 통해 흐르도록 복수의 모듈 내 각 모듈과 모듈 디지털 데이터 통신을 제공한다. 나아가, 제어기는 관련된 각 기능의 적어도 반 자율적인 실행을 구성하도록 각 모듈에 입력 파라미터를 제공하도록 구성될 수 있다.
모듈 인터페이스(42)로부터 데이터 버퍼(210)로 입력 데이터 경로(330)는 모듈 인터페이스로부터 데이터 및 제어 정보를 버퍼 섹션으로 전송한다. 이 데이터 경로는, 입력 경로(330)가 데이터 버퍼 섹션(210)으로부터 데이터 경로 및 제어 섹션(190)으로 복수의 데이터 경로를 사용할 수 있으므로, 예를 들어 버퍼 섹션(210)과 데이터 경로 및 제어 섹션(190) 사이에 연장하는 적어도 일부 다른 데이터 경로에 비해 상대적으로 더 고속일 수 있다.
출력 데이터 경로(340)는 버퍼 섹션으로부터 모듈 인터페이스로 데이터 및 제어 정보를 전송하기 위해 데이터 버퍼 섹션(210)으로부터 제어기 포트(240)로 연장하며, 제어기 포트(240)에 의해 제공된 모듈 인터페이스(42)를 통해 모듈(30)로부터 SSD 제어기(40)로 출력 데이터 경로의 일부를 형성한다. 데이터 경로(340)는, 데이터 경로(330)와 같이 복수의 다른 데이터 경로가 출력 데이터 경로(340)에 의해 사용될 수 있으므로, 버퍼 섹션(210)으로 또는 버퍼 섹션(210)으로부터 다른 데이터 경로와는 더 높은 대역폭일 수 있다.
모듈 인터페이스(42)의 실시예에 대한 상세는 도 2의 제어기(40)의 모듈 포트(100)와 도 3에 도시된 모듈(30)의 제어기 포트(240) 사이에 연장하는 인터페이스 연결을 구비하여 도 4의 블록도로 도시된다. 제어기 포트와 모듈 포트는 각 모듈 인터페이스(42)를 구성하는 각 모듈(30)과 제어기(40) 사이에 명령 및 데이터 연결을 제공한다. 데이터 송신 경로(400)는 명령, 데이터, 상태, 및 다른 정보를 제어기로부터 모듈로 송신하는 통신 경로를 제공한다. 물론, 이들 항목은 호스트 디바이스(20)(도 1)로부터 발신될 수 있다. 일 실시예에서, 데이터 송신 경로는 상이한 신호에 의해 수립될 수 있어서 2개의 물리적 신호가 데이터 송신 경로를 구성할 수 있다. 데이터 송신 경로는 역방향으로의 동작이 더 설명될 데이터 수신 경로의 데이터 전송 능력에 성능 개선으로 작용할 수 있도록 양방향 신호 쌍의 형태로 선택적으로 구현될 수 있다.
데이터 수신 경로(402)는 데이터, 상태, 및 다른 정보를 모듈(30)로부터 제어기(40)로 송신하는 통신 경로를 제공한다. 데이터 송신 경로(400)와 같이, 경로(402)는 일 실시예에서 차동 신호에 의해 수립될 수 있어서 2개의 물리적 신호가 데이터 수신 경로를 구성한다. 일 실시예에서, 데이터 수신 경로는 역방향으로 동작할 때 데이터 송신 경로의 데이터 전송 용량에 성능 개선으로 작용할 수 있도록 양방향 신호 쌍으로 구현될 수 있다.
차동 신호 쌍이 모듈 인터페이스(42)를 통해 클록(410)을 제공할 수 있다. 클록 쌍으로 지시되는 클록 신호는 호스트에서 생성될 수 있고 이는 또한 데이터 송신 및 수신을 동기화하기 위해 호스트에 의해 사용될 수 있다. 모듈 인터페이스를 통해 제공된 차동 클록 신호는 모듈에서 데이터 송신 및 수신을 동기화하는데 사용될 수 있다. 모듈에 의해 수신된 클록은 호스트에 의해 생성되고 이 호스트에 의해 사용되는 클록과 직접 관련된다. 송신 지연 및 다른 회로의 영향 때문에, 모듈에 의해 수신된 클록 신호는 호스트에 의해 사용된 신호와 위상이 어긋날 수 있어서 호스트와 모듈 내 샘플링 회로는 클록과 데이터 신호 사이에 최적의 정렬을 달성하기 위하여 동적으로 구성(예를 들어, 적응)될 수 있는 DLL 또는 PLL과 같은 클록 정렬 회로에 의해 지원될 수 있다.
전술된 인터페이스를 사용하면 상당히 더 적은 수의 핀이 SSD 제어기에 의해 요구될 수 있다. 각 메모리 모듈은 8개의 플래시 칩(flash chip)을 지원할 수 있는 반면, 모듈을 SSD 인터페이스에 연결하는 것은 하나의 감소된 핀 카운트 모듈 인터페이스를 통해 수행될 수 있다. 이런 방식으로, 시스템 내 모든 플래시 디바이스를 제어하는데 필요한 핀의 개수는 각 메모리 디바이스가 제어기에 직접 연결된 종래 기술의 구현에 비해 감소될 수 있다. 도 1 및 도 4에 도시된 실시예는 제어기에 필요한 핀의 개수를 모듈 연결로 제한하는 것에 의해 더 적은 수의 핀을 가능하게 한다. 즉, 도 4의 감소된 핀 카운트 모듈 인터페이스는 예를 들어, ONFI와 같은 종래 기술의 인터페이스와 비교할 때 더 적은 수의 핀으로 제어기에 연결을 제공한다. 이런 방식으로, SSD 제어기는 SSD 애플리케이션에 적절한 트랜잭션 율과 데이터 처리 율을 달성하면서 (ONFI와 같은 대안물에 비해) 제어기에 더 적은 수의 핀으로 많은 모듈에 연결되고 이 많은 모듈을 제어할 수 있다. 본 명세서에 설명된 모듈 인터페이스는 더 높은 레벨의 SSD 기능으로부터 낮은 레벨의 플래시 기능의 추상화를 제공한다. 따라서, 제어기는 예를 들어, 명령 실행의 하이 레벨 측면으로만 구성되는 것에 의해 부담을 경감될 수 있다. 물리적 플래시 특성과 관련된 것과 같은 낮은 레벨의 기능이 모듈 레벨에서 수행될 수 있다. SSD 성능은 메모리 디바이스를 관리하기 위해 적어도 반 자율적인 기능을 사용하여 부착된 메모리 디바이스의 개수를 증가시켜서 개선될 수 있는 것으로 이해된다. 단일 하드웨어 구성(특정 SSD 제어기와 미리 구성된 모듈의 특정 조합)에서 SSD는 제어기의 역할이 모듈 내 논리적으로 어드레싱된 데이터 유닛에 액세스하는 것에 있는 적어도 반 자율적인 엔티티(entity)이다. 이러한 시스템에서 관리에 있어서 제어기의 역할은 기본적으로 각 모듈에 의해 제공된 저장기능을 모듈 유닛의 결합으로 더 큰 단일 볼륨으로 관리하는 것일 수 있다.
모듈 인터페이스는 의도된 애플리케이션을 SSD 사용으로 커스터마이징하는 명령 및 프로토콜 레벨에 특징 및 능력을 포함할 수 있다. 이들 특징 및 능력은 낮은 레이턴시 판독 및 기록 기능의 지원, 높은 데이터 처리량의 지원, 명령 큐잉(command queuing) 및 동시 동작 명령의 지원, 다중 블록 전송 동작을 포함하는 데이터 블록의 비순차적 전송(out of order transfer)의 지원, 상이한 레벨의 블록 추상화 명령의 지원, 및 간단한 더 개선된 높은 성능 프로토콜을 포함할 수 있으며, 이들 각각은 바로 이후에 설명된다.
낮은 레이턴시 판독 및 기록 기능의 지원
낮은 레이턴시는 제어기(40)로부터 수신된 명령에 제일 빠른 응답일 수 있는 것을 지원하는 것에 의해 모듈(30)에서 지원된다. 이것은 적어도 2가지 접근법을 취하는 실시예를 사용하여, 즉, 첫째, 명령을 동시에 실행하는 지원을 통해, 둘째, 짧은 데이터 패킷의 옵션을 통해 모듈 인터페이스(42)에 의해 달성될 수 있다. 제1 접근법에서, 명령은 제어기(40)로부터 모듈(30)로 발송될 수 있고 하나 이상의 다른 명령이 이미 실행하고 있는 경우에도 바로 동작될 수 있다. 이것은 (이는 동일한 메모리 디바이스로의 명령에 의하여 아직 액세스되지 않는다면) 명령이 타깃 메모리 디바이스에 바로 액세스할 수 있게 하고, 다른 명령이 실행 시작하기 전에 현재 활성인 명령이 완료를 요구하는 경우 가능할 수 있는 것보다 보다 신속히 모듈 내 제어기(40)와 메모리 디바이스(170) 사이에 데이터 전송을 시작하게 한다. 명령 큐잉 및 동시 명령 실행을 위한 인터페이스 지원은 이 동시 실행 능력을 가능하게 할 수 있다. 제2 접근법에서, 판독 또는 기록 명령의 데이터 전송 단계는 보다 신속히 시작하여 더 긴 패킷을 사용하는 것에 비해 보다 신속히 완료할 수 있다. 제2 접근법과, 더 짧은 패킷이 아니라 더 긴 패킷을 사용하는 접근법 사이의 차이는 더 짧은 패킷이 긴 패킷에 대해 짧은 패킷의 전송 시간이 더 짧은 것으로 인해 더 낮은 레이턴시를 가능하게 한다는 것이다; 그리하여 모든 동시 실행 전송이 낮은 레이턴시에 기초하여 버퍼 대역폭에 할당된다. 주어진 명령은 더 긴 데이터 패킷이 사용되는 경우 잠재적으로 더 오래 기다리는 것과 비교할 때 인터페이스가 짧은 데이터 패킷에 액세스하여 더 짧은 대기 시간이 제공될 수 있다. 데이터 패킷의 길이는 구성가능할 수 있다. 그러나, 특정 실시예에서 데이터 패킷의 길이는 예를 들어 패킷 길이에 따라 액세스 레이턴시에 대해 우선순위를 가지는 섹션 할당 시간에 사용된 파라미터에 의해 지시될 수 있다. 그리하여, 최대 패킷의 길이는 주어진 모듈 구성에 대해 제어기(40)에 의해 결정될 수 있다. 또한 제2 접근법에 의하여 도 4의 데이터 송신 경로(400)와 데이터 수신 경로(402)에 대하여 설명된 방향 스위칭 기능이 사용될 수 있다. 선택될 때 방향 스위칭 기능은 모든 패킷 사이즈의 더 빠른 송신을 가능하게 하여 처리량과 레이턴시 성능을 모두 증가시킬 수 있다.
높은 데이터 처리량의 지원
높은 처리량 및 낮은 레이턴시는 더 큰 패킷이 높은 처리량에 요구되는 경우 종종 목적이 충돌한다. 짧은 패킷 사이즈는 레이턴시 성능을 개선시키지만 이들은 또한 인터페이스의 고유한 오버헤드가 더 큰 패킷보다 작은 데이터 패킷에 비례하여 더 크므로 처리량 성능을 저하시키는 경향이 있다. 즉, 짧은 패킷은 긴 패킷에 비해 더 낮은 전송 효율을 달성하며 그리하여 인터페이스에 놓인 요구가 인터페이스의 대역폭 용량에 접근할 때 더 우수한 데이터 처리량이 짧은 패킷에서보다 긴 패킷에서 달성된다. 구성 옵션으로서, 패킷 사이즈를 선택하는 능력은 또한 높은 처리량과 낮은 레이턴시의 경쟁 이익을 해결하기 위하여 높은 데이터 처리량을 지원하는 측면이 된다.
명령 큐잉 및 동시 동작 명령의 지원
명령 큐잉 기능(command queuing function)은 일 실시예에서 기본적으로 하드웨어 기능으로 모듈 인터페이스(42)에 제공될 수 있다. 실행하는 각 명령은 명령 전송, 데이터 전송, 및 핸드쉐이킹 트랜잭션의 상태를 포함하는 명령의 실행에 수반되는 모든 트랜잭션을 지원하여야 한다. 이들 트랜잭션은 처리시 DMA 자원과 같은 시설(utility)을 사용할 수 있다. 이 하드웨어 자원은 명령 큐잉 기능을 가능하게 하는데 요구되는 정도까지 모듈 인터페이스 정의에 제공될 수 있다. 명령 큐잉에 추가적인 기능은 큐 태그(queue tag)의 생성과 체크일 수 있다. 큐 태그는 명령에 요구되는 전술된 하드웨어 자원을 해결하는데 사용되는 정수(integer)를 나타내는 짧은 이진 값이다. 큐 태그는 호스트로부터 디바이스로 송신된 각 새로운 명령 코드와 함께 송신되고, 명령이 계속 실행되는 한, 활성으로 유지된다. 명령이 종료된 후에, 큐 태그는 더 이상 활성이지 않고 그래서 후속 명령이 발송될 때 재할당에 이용가능하게 된다.
다중 블록 전송 동작을 포함하는 데이터 블록의 비순차 전송의 지원
모듈 인터페이스 프로토콜은 블록의 비순차 송신이 긴 다중 블록 전송 내에서 일어날 수 있게 하는 모듈과 제어기 사이에 트랜잭션 모델을 지원할 수 있다. 트랜잭션 모델은 판독 또는 기록 명령이 하나 이상의 "연결"로 구성될 것을 제공할 수 있다. 각 연결은 더 긴 전송의 일부에 어드레싱과 카운팅 제어를 할당하는 가상 구성(virtual construct)이다. 그리하여, 연결은, 명령의 일부 부분(통상적으로 데이터 전송)을 유지하기 위해 존재하며 그 존재에 시간적 제약이 있는 것으로 인해 종료하여야 하는 시간적 실체(temporal entity)로 존재한다. 시간적 제약은 또한 활성일 수 있는 다른 명령에 인터페이스가 이용가능한 것을 보장하기 위해 존재한다. 이 제약은 고정되거나 가변적일 수 있다. 판독 또는 기록 전송은 단일 연결만을 요구할 수 있거나 또는 이것은 많은 연결을 요구할 수 있다. 명령에 요구되는 연결의 수는 판독 또는 기록 명령의 총 바이트 길이 및 시간적 제약의 사이즈의 함수이다. 연결의 수의 이러한 결정은 모듈에서 실행되는 명령 처리 소프트웨어에 의해 이루어질 수 있다. 연결은 주어진 시간에 주어진 명령 내에 단 하나의 연결만이 존재하도록 한번에 하나씩 수립될 수 있거나 또는 주어진 명령은 다수의 활성 연결을 구비하되, 각 연결은 명령의 전체 전송 길이의 상이한 부분을 전송할 수 있다. 비순차 (블록) 전송은 예를 들어, 명령에 의해 전송되는 블록의 전체 범위 내에서 오프셋되어 비순차적일 수 있는 하나의 블록 또는 수 개의 블록을 전송하는 연결을 수립하는 것에 의해 지원될 수 있다.
각 연결은 전체 명령의 실행의 일부로 수립될 수 있다. 연결은 (명령에 대하여 한정된) 블록일 수 있는 데이터의 할당된 길이를 전송할 만큼만 충분히 길게 존재하거나 또는 명령 코드에 카운트 필드에 의해 한정된 바이트의 수로 존재한다. 연결은 한정된 데이터 길이가 전송된 후에 종료한다.
상이한 레벨의 블록 추상화 명령의 지원
제어기(40)는 모듈(30)에 부착된 메모리 디바이스에 액세스하기 위해 상이한 접근법을 사용할 수 있다. 변형이 있을 수 있으나, 2개의 실시예가 유력하고 이는 바로 이후에 설명된다.
제1 실시예에서, 제어기는 표준 미디어(media)로서 모듈 인터페이스(42)를 통해 모듈에 부착된 메모리 디바이스에 액세스하며 여기서 메모리 디바이스는 최저 레벨의 계층에 페이지와 및 더 높은 레벨의 계층에 소거 블록을 가지는 계층으로 배열된 메모리를 포함한다. 판독 또는 기록 액세스는 고정된 양의 데이터를 가지는 페이지로 특정 페이지를 타깃으로 하며 ECC 패리티를 위해 통상적으로 사용되는 추가적인 비트를 포함할 수 있다. 다른 유형의 액세스는 소거 블록을 타깃으로 하는 소거이다. 소거 블록은 플래시 메모리에서 페이지보다 훨씬 더 큰 구조체이다. 사실, 소거 블록은 일정 정수개의 페이지를 포함하며, 이 수는 변할 수 있다. 대표적인 값은 소거 블록당 128개의 페이지이다. 페이지는 일반적으로 유닛으로 기록되어야 하며, 소거는 일반적으로 전체 소거 블록에 수행되어야 한다. 페이지는 메모리 디바이스로부터 전체적으로 또는 부분적으로 판독될 수 있으나, 부분 페이지 판독은 ECC 인코딩과 디코딩 기능에 영향을 미칠 수 있다. 일부 ECC 인코딩 기능은 전체 페이지를 인코딩할 수 있어서 ECC 디코딩이 수행되기 위하여 전체 페이지가 판독될 것을 요구한다. 다른 ECC 인코딩 기능은 인코딩과 디코딩이 페이지로 데이터를 서브 분할(subdivision)한 것에 수행되도록 구현될 수 있으며, 이 경우에 부분 페이지 판독은 ECC 디코딩이 수행되기 위하여 하나 이상의 서브 분할을 판독할 수 있다. 전체 페이지 판독이 수행될지 또는 부분 페이지 판독이 수행될지에 상관없이, 또는 전체 페이지 기록이 수행될지에 상관없이 물리적 페이지의 어드레싱이 물리적 어드레스를 사용하여 수행된다. 물리적 어드레스의 사용은 타깃 모듈에 부착된 각 메모리 디바이스에서 페이지의 물리적 배열의 명령의 발송기(이 경우에, 제어기(40))에 지식을 요구한다.
제1 실시예는 모듈에서 인코딩, 디코딩 및 데이터 경로 하드웨어에 의해 지원된다. 어드레싱, 판독, 기록, 및 ECC 인코딩, 및 디코딩은 모두 지금까지 볼 수 없었던 방식으로 선택가능한 구성으로 모듈에서 지원될 수 있다.
제2 실시예는 메모리 디바이스가 (물리적이 아니라) 논리적 어드레스를 가지는 논리적 섹터 또는 논리적 블록으로 구성된 논리적 유닛으로 어드레싱되고 액세스되는 것이다. 데이터 길이는 이 접근법에서 페이지의 물리적 길이에 의해 제약되지 않아서 모듈은 논리적 구조가 물리적 구조에 맵핑되도록 물리적 페이지와 소거 블록을 관리할 수 있으며 이에 제어기는 원하는 데이터를 전송하기 위하여 명령에 논리적 어드레스만을 추가할 필요가 있다. 이런 논리적 액세스 형태를 지원하는 모듈의 기능(종종 블록 추상화라고 언급된다)은 도 3에 대해 설명된 바와 같이 인코더 및 디코더 구성의 여러 측면을 포함한다. 도 3에 대해 설명된 이런 지원의 다른 측면은 데이터 경로 배열, 및 보상 및 교정과 관련된 여러 판독 및 기록 기능을 포함한다. 소프트웨어 특징과 기능은 이런 지원의 일체형 부분이며, 이는 소프트웨어가 블록 추상화 능력에 수반되거나 이와 관련이 있는 기능을 지원하기 때문이다. 이들 기능 중 일부는 국부 플래시 변환층(FTL), 소거 동작에 대한 제어(예를 들어, 가비지 수집), 마모 레벨링, 비트 밀도 구성(예를 들어, 인코더/디코더 구성) 등이다. 블록 추상화에 대한 보다 추가적인 상세는 더 설명될 도 5에 대하여 제공된다.
간단한 더 높은 성능 프로토콜
가장 본질적인 기능만을 구현하는 것에 의해 모듈 인터페이스는 그렇지 않은 경우 가능할 수 있는 것보다 더 낮은 명령 오버헤드에서 동작할 수 있다. 인터페이스가 점대점 연결만의 형태를 취하므로, 프로토콜은 다중 디바이스 지원 부담이 경감된다. 호스트가 디바이스와 트랜잭션을 개시하고 실행하고 모니터링하기 위하여 디바이스 어드레스가 생성되거나 기록되거나 또는 사용될 필요가 없다. 유사하게, 모듈 인터페이스에 의해 구현되는 점대점 물리적 연결은 (명령 실행의 일부로서 전술된 유한 시간 논리/가상 연결과는 별개의 것으로서) 동적으로 수립되는 것이 아니라 전용으로 사용된다. 자기 자신의 모듈 인터페이스를 통해 각 호스트/디바이스 연결을 구성하는 것은 제조시에 수립되어서 호스트는 전력 투입 시에 디바이스를 구성할 필요가 없다.
나아가, 인터페이스는 진정한 동시(동시 독립 전송) 및 시간 영역 다중화 동시를 모두 지원한다. 진정한 동시는 하나 이상의 판독 명령 및 하나 이상의 기록 명령이 동시에 실행될 때 일어난다. 인터페이스 동시는 판독 및 기록 명령을 위한 데이터 전송 단계가 함께 발생할 때 발생하여 데이터 송신 경로(400)가 제어기(40)로부터 모듈(30)로 데이터를 능동적으로 전송함과 동시에 모듈 인터페이스의 데이터 수신 경로(402)(도 7)가 모듈(30)로부터 제어기(40)로 데이터를 능동적으로 전송한다. 이런 유형의 동시는 전술된 방향 스위칭 기능이 수행되지 않는 명령이나 구성에서만 발생하는 것임이 주목된다.
동시의 시분할 다중화된 형태는 종종 모듈 인터페이스에 의해 달성될 수 있다. 이것은 예를 들어 하나 이상의 활성 명령이 모듈 인터페이스를 통해 데이터 패킷을 사용하여 데이터 단계 트랜잭션을 실행하는 연결을 수립할 때 발생한다. 다수의 능동 연결이 수립될 수 있는 경우에도, 최대 하나의 패킷이 단일 데이터 송신 또는 데이터 수신 신호 쌍을 따라 임의의 순간에 송신될 수 있다. 능동 연결이 교대로 데이터 패킷을 전송하므로 시간 영역 동시성이 발생하며, 여기서 하나의 연결은 하나의 순간에 데이터 패킷을 전송하고 다른 연결은 다른 순간에 데이터 패킷을 전송한다. 이런 방식으로 다수의 명령은 데이터 패킷을 동시에 전송할 수 있으나, 물리적 전송 연결에 액세스를 공유하는 것에 의해 이렇게 한다. 예를 들어, 도 4에서 보는 바와 같이, 패킷(P1, P2, P3)은 데이터 수신 경로(402)를 통해 직렬 방식으로 전송되고, 여기서 각 패킷은 전체 데이터 전송의 상이한 부분을 형성한다. 동일한 전송은 또한 데이터 송신 경로(400)에 걸쳐 지원될 수 있다. 일 실시예에서, 이러한 패킷 전송은 데이터 송신 경로와 데이터 수신 경로에서 동시적일 수 있다.
SSD는 제어기가 상이한 모듈에 대해 상이한 양의 관리 감독(management oversight)을 제공하도록 구성될 수 있다. 이러한 실시예는 모듈에 대해 혼합된 모드 접근법이라고 언급될 수 있는데, 이 접근법에서 모듈의 하나의 부분은 예를 들어, 마모 레벨링, 가비지 수집 및 비트 밀도 구성과 같은 기능을 수행하는 데 있어 제어기와 적어도 일부 상호작용으로 관리될 수 있고, 모듈의 다른 부분은 이들 기능의 상세 관리에 있어 자율적으로 동작할 수 있다.
비트 밀도 구성에 대하여 각 모듈은 고밀도 동작(예를 들어, 셀당 2비트 초과)일 수 있는 메모리 디바이스를 포함할 수 있고, 일 실시예에서, 모듈에 포함된 모든 메모리 디바이스에 걸쳐 고밀도 모드에서 동작하거나 저밀도 모드(예를 들어, 셀당 2비트 이하)에서 동작하도록 제어기에 의해 구성될 수 있다. 일부 실시예에서, 모듈은 고밀도 모드(예를 들어 셀당 2비트 초과)에서 일부 메모리 디바이스를 동작시키고 저밀도 모드(예를 들어 셀당 2비트 이하)에서 다른 메모리 디바이스를 동작시키도록 제어기에 의해 구성될 수 있다. 모듈이 저밀도 동작(예를 들어, 셀당 1 또는 2비트)일 수 있는 메모리 디바이스를 포함하는 경우, 이 모듈은 저밀도 동작과 일치하는 인코딩 및 디코딩 구성으로 동작하도록 제어기에 의해 구성될 수 있다. 이 선택을 위한 구성 파라미터는 각 ECC 인코딩 및 디코딩 유닛에 적용된 데이터 길이, 및 각 ECC 인코딩 및 디코딩 유닛에 포함된 다수의 패리티 비트를 포함할 수 있다. 나아가, 저밀도 메모리가 셀당 하나의 비트 또는 2개의 비트로 구성되면, 모듈은 선택된 저밀도 모드를 사용하도록 제어기에 의해 구성될 수 있다.
전술된 바와 같이, 적어도 반 자율적인 메모리 모듈은 독립적으로 여러 기능을 수행할 수 있다. 나아가, 마모 레벨링의 기능을 더 고려하면 각 메모리 모듈은 모듈에 제공된 파라미터에 기초하여 자기 자신의 메모리 칩 세트 내에 마모 레벨링을 수행하는 일을 담당할 수 있는 것으로 이해된다. 분배된 마모 레벨링 제어는 제어기 모니터를 구비하는 부담을 대부분 제거하고 각 개별 메모리 칩에 대한 마모를 조절한다.
비 제한적인 예로서 다른 기능은 본 발명에 따라 모듈에 의해 적어도 반 자율적으로 취급될 수 있다. 예를 들어, 각 메모리 모듈은 자기 자신의 전력 소비를 관리할 수 있다. 메모리 모듈이 비활성이거나 가벼운 부하인 경우 메모리 모듈에서 전력 관리 회로는 모듈에 기초하여 전력 소비를 감소시키도록 작동될 수 있다. 이것은 제어기의 오버헤드가 각 메모리 모듈의 전력 상태를 모니터링하고 제어함이 없이 전력 관리를 분배되게 한다.
다른 예로서, 각 메모리 모듈은 자기 자신의 메모리 칩 세트 내에서 데이터를 모니터링하고 리프레시(refreshing)하는 일을 담당할 수 있다. 이것은 제어기가 각 메모리 칩에서 데이터 품질을 모니터링하는 부담을 제거한다.
또 다른 예로서, 각 메모리 모듈은 자기 자신의 NVM 칩에 요구되는 모든 에러 정정을 취급할 수 있다. 이 분배 에러 정정 처리는 제어기가 종래의 SSD에서와 같이 모든 에러 정정을 담당하게 만들어진 경우 달성될 수 있는 것보다 훨씬 더 높은 처리량을 초래한다. 에러 정정 처리가 SSD 내에서 분배될 수 있으므로, 적용될 수 있는 에러 정정의 양은 종래의 SSD에서보다 훨씬 더 높을 수 있고, 이는 일부 실시예의 개별 메모리 칩 내에 더 높은 데이터 밀도를 초래할 수 있다.
본 명세서에서 드러난 메모리 모듈의 분배된 처리 전력으로 인해, 이 모듈을 포함하는 SSD의 처리량은 종래의 SSD 아키텍처에 의해 달성되는 처리량에 비해 수 배 증가될 수 있다. SSD 제어기는 예를 들어, 에러 정정, 데이터 리프레시 및 낮은 레벨 마모 레벨링과 같은 기능이 부담되지 않는다(또는 적어도 감소된 부담을 갖는다). 각 메모리 모듈은 메모리 모듈당 예를 들어 적어도 8NVM 다이까지 제어할 수 있는 것으로 인해 높은 데이터 율을 취급할 수 있다. 높은 데이터 율은 제어기로부터 각 버스에 다수의 메모리 모듈이 있을 수 있다는 사실에 의해 배가(multiplied)될 수 있다. 이것은 다시 제어기와 메모리 모듈 사이에 병렬로 실행되는 수 개의 버스가 있을 수 있다는 사실에 의해 더 배가될 수 있다. 그 결과 전체적인 결과는 기존의 SSD 또는 하드 드라이브의 데이터 율(처리량)의 수 배를 달성할 수 있는 SSD를 초래한다.
모듈 인터페이스는 제어기 인터페이스로의 모듈이 제어기의 담당이 아니라 분배된 방식으로 각 모듈에 의해 이제 적어도 반 자율적으로 수행되는 낮은 레벨의 기능과 관련된 많은 양의 데이터를 운반할 필요성이 적어도 경감될 수 있다는 이유 때문에 종래 기술을 사용하여 달성될 수 있는 것보다 더 높은 성능을 가능하게 할 수 있다. 따라서, 제어기는 낮은 레벨의 기능의 부담 없이 자유로이 동작하여서 SSD 제어기에 의해 높은 레벨의 SSD 기능의 더 간단하고 더 효율적인 실행을 제공한다. 처리 듀티의 이러한 분리 결과는 더 효율적이고 높은 성능의 SSD 시스템을 초래한다.
도 3과 함께 도 5를 참조하면, 도 5는 예를 들어 참조 부호 500으로 집합적으로 언급된 모듈 NVM을 가지는 도 3의 하나의 메모리 모듈(30)의 다수의 메모리 디바이스를 도식적으로 도시한 블록도이다. 본 예에서, 모듈 NVM 메모리는 NVM 1 내지 NVM 8로 지시된 8개의 메모리 디바이스를 포함한다. 8개의 메모리 디바이스를 사용하는 것은 단지 예시적인 것이며 발명을 제한하는 것으로 의도된 것이 아니며 다른 모듈은 본 명세서의 개시 내용의 범위 내에 있으면서 상이한 방식으로 구성된 상이한 개수의 메모리 디바이스를 포함할 수 있는 것으로 이해된다. 따라서, 모듈 NVM 메모리(500)는 일정 개수의 섹션으로 구성되는 제어기(40)(도 2)에 의해 구성될 수 있다. 제어기는 여러 기준 중 어느 것에 의하여 다수의 메모리 디바이스를 섹션으로 파티셔닝할 수 있고 이는 아래에 더 설명된다. 섹션은 매우 융통성있게 8개의 메모리 디바이스 중에서 할당될 수 있다. 초기에, 하나의 모듈을 그 다음 모듈로 메모리의 섹션을 할당하는 것은 두 모듈이 NVM의 동일한 특성 유형을 포함하는 경우에도 물리적 영역과 비트 밀도들이 완전히 상이하고 독립적일 수 있다. 제1 예로서, 제1 메모리 섹션(502)은 메모리 디바이스(NVM1)만을 포함한다. 제2 예로서, 제2 메모리 섹션(504)은 메모리 디바이스(NVM2 및 NVM4)를 포함한다. 제3 예로서, 제3 메모리 섹션(506)은 메모리 디바이스(NVM3)의 일부와, 메모리 디바이스(NVM5)의 전부를 포함한다. 제4 예로서, 전방 메모리 섹션(508)은 메모리 디바이스(NVM8)의 일부를 포함한다. 이들 예를 위하여, 섹션 밖에 도시된 메모리 디바이스의 일부는 할당되지 않는 것으로 가정될 수 있다. 따라서, 하나의 섹션은 임의의 원하는 조합으로 개별 메모리 디바이스의 일부 및/또는 하나 이상의 메모리 디바이스의 전부를 포함할 수 있다. NAND 플래시 메모리 디바이스를 사용하는 실시예에서, 섹션의 사이즈의 하한은 단일 소거 블록에 저장될 수 있는 데이터의 크기일 수 있다. 따라서, 모듈을 구성하는 메모리 디바이스는 예를 들어, 저장 용량, 저장 유지, 프로그램/소거 사이클, 데이터 처리량, 또는 이들의 일정 조합과 같은 파라미터에 기초하여 주어진 메모리 디바이스 세트에서 이용가능한 저장 공간을 최적화하기 위하여 파티셔닝될 수 있다. 메모리 디바이스를 파티셔닝하는 것은 사용가능한 수명에 걸쳐 메모리 디바이스를 관리하는데 요구되는 메모리의 특정 물리적 부분을 할당, 할당 해제, 및 재할당을 가능하게 하는 동적 능력일 수 있다. 선택을 사용하는 것은 예를 들어, 마모 이력(wear history)과 물리적 크기의 내재된 특성에 따라 메모리의 물리적 특성이나 유형에 기초하여 메모리 디바이스의 최적의 사용을 가능하게 할 수 있다.
도 5를 참조하면, 블록 추상화는 일반적으로 페이지 경계에 걸쳐 브리지(bridge)하는 방식으로 하나를 초과하는 페이지의 기록과 판독을 수반하고 페이지 랩핑(page wrapping)이라고 언급될 수 있는 것으로 이해된다. 이런 점에서 비제한적인 예로서, NUM1은 물리적으로 인접한 페이지(510a 내지 510d)를 포함하는 것으로 도시된다. 판독 또는 기록 동작이 페이지(510a)의 해치된(hatched) 제2 절반과 페이지(510b)의 제1 해치된 절반을 포함하는 경우, 판독 또는 기록 동작은 페이지(510a, 510b)의 전체를 판독하거나 기록하는 것을 수반할 수 있다. 예를 들어, 이들 페이지의 해치된 영역은 도 3의 인코더(220)와 디코더(202)에 의해 사용된 코드워드(codeword)를 나타낼 수 있다. 따라서, 페이지 랩핑은 동작을 위하여 페이지 간에 물리적 불연속이 없는 것처럼 페이지 경계에 걸쳐 연장하는 인코드 및 디코드 기능을 제공한다.
이제 도 6을 참조하면, 도 6은 도 3에 도시된 모듈(30)의 기능 엔진(320)의 일 실시예를 도시한 블록도이다. 기능 엔진의 성분과 그 상호 연결이 도시된다. 하드웨어와 소프트웨어의 임의의 적절한 조합이 도시된 여러 성분의 기능을 달성하기 위하여 사용될 수 있는 것으로 이해된다. 일 실시예에서, CPU(300)와 프로그램 메모리(302)는 기능 엔진의 동작을 포함할 수 있다. 기능 엔진의 공통 시설(예를 들어, 영역)(602)은 예를 들어, 마모 레벨링 기능(610), 가비지 수집 기능(612), 비트 밀도 구성 기능(614) 및 FTL 기능(616)에 의하여 공통 또는 공유 방식으로 사용되고 수정되는 파라미터(예를 들어, 파라미터를 포함하는 데이터 테이블)를 포함하는 데이터 구조 세트를 구성할 수 있다. 이들 기능 각각은 특정 입력 파라미터에 적어도 부분적으로 기초하여 할당된 작업을 실행하도록 구성된다. 공유된 파라미터 섹션(322)(도 3)은 공통 시설(602)의 일부를 형성하는 것으로 도시되어 있어서 도 3 또는 도 6을 참조하여 언급될 수 있는 것임이 주목된다. 이들 입력 파라미터를 요구하는 것이 아니라, 각 기능은 전체적으로 다른 모듈 또는 SSD 시스템 및 제어기에 대하여 자율적으로 동작할 수 있다. 공통 시설(602)은 일부 경우에 여러 기능이 정보를 공유하고 협력해서 동작하므로 기능 중에서 정보 도관(information conduit)으로 기능한다. 일반적으로, 각 기능은 그 작업을 완료하기 위하여 공통 시설 내 데이터 구조체로부터 최신 정보에 액세스한다. 예를 들어, FTL 기능(616)은 데이터 유닛의 논리적 어드레스가 주어질 때 이 데이터 유닛의 물리적 위치를 리턴(return)하는 기능을 제공하기 위하여 예를 들어, 테이블 영역(620)에 저장될 수 있는 최신 논리적-물리적 어드레스 변환을 사용한다. 나아가, 공통 시설에 유지되는 정보의 예는 이후 적절한 지점에서 제공된다. 본 실시예에서, 공통 시설은 모듈의 비휘발성 메모리와 관련된 하나 이상의 출력 파라미터(예를 들어, 사용 통계를 나타냄)를 보고하도록 구성된 보고 섹션(reporting section)(624)을 더 포함한다. 사용 통계는 메인 제어기와 기능 엔진 그 자체에 이용가능하고 판독 동작 동안 획득되는 판독 값의 세트에 기초할 수 있다. 사용 통계는 예를 들어 재판독(read-back) 값 세트에 대해 재판독 동작에 기초하여 생성될 수 있는 판독 값 세트에 대한 평균 재판독값(mean read-back value) 및 재판독값 세트에 대한 표준 편차(standard deviation) 중 적어도 하나를 포함할 수 있다. 사용 통계는 판독 동작이 블록 에러 정정 코드를 디코드하는 경우에 예를 들어, 누적 에러 카운트 및 블록당 에러 카운트와 같은 에러 정정 통계를 더 포함할 수 있다. 에러 정정 통계는 하나 이상의 디코더(202)(도 3)에 의하여 생성될 수 있고 이로부터 보고 섹션이 통계 정보를 획득할 수 있는 것으로 이해된다. 사용 통계에 기초하여 기능 엔진은 사용 통계에 의하여 지시된 메모리의 건전성(health)을 고려하여 파라미터를 설정 및/또는 선택할 수 있다. 예를 들어, 사용 통계가 상당한 수의 프로그램/소거 사이클에 기초하여 메모리의 열화를 나타내는 경우, 메모리에 대한 비트 밀도가 저하될 수 있다. 일 실시예에서, 프로그램/소거 사이클의 개수는 사용되는 특정 비휘발성 메모리에 지정된 임계 프로그램 소거 파라미터를 초과할 수 있다.
일부 실시예에서, 모듈의 서브세트의 모듈의 보고 섹션은 사용 통계에 기초하여 모듈의 비휘발성 메모리에 관한 건전성 지표를 제공하도록 구성될 수 있다. 예를 들어, 파라미터는 기존의 데이터를 이 부분으로부터 복사하고; 이 부분을 소거하고; 이후 이 부분에 더 기록하는 것이 더 낮은 비트 밀도에서 있을 수 있도록 상대적으로 더 낮은 비트 밀도로 이 부분을 재할당하는 것에 의해 더 높은 비트 밀도로 이전에 할당된 메모리의 일부를 퇴거(retiring)하는 것에 의해 기능 엔진이 응답하는 임계값을 지정할 수 있다. 이 활동은 적어도 일부 제어기 파라미터, 예를 들어, 메모리의 진행중인 마모에 기초하여 초기 구성에 제공된 파라미터를 무시(override)할 수 있다. 일 실시예에서, 제어기는 건전성 지표에 액세스하고 모니터링하여, 전술된 바와 같이 메모리의 일부 부분을 퇴거하도록 메모리에 지시하는 파라미터 제어를 제공할 수 있다. 물론, 이들 여러 활동은 기능 엔진에 의해 제공되는 기능의 사용을 호출하고 아래 적절한 지점에서 보다 상세히 설명된다.
상기한 바를 고려하여, 제어기 파라미터(630)는 메인 제어기(40)에 의해 제공되는 반면, 모듈 파라미터(632)는 모듈 그 자체 내에서 발신되는 것으로 이해된다. 후자의 비제한적인 예는 디코더(202)(도 3)에 의해 생성된 사용 통계를 포함한다. 제어기 파라미터와 모듈 파라미터는 공통 시설(602)에 제공된다. 파라미터는 4개의 도시된 기능 그 자체에 의해 기본적으로 사용되고, 각 기능의 구성에 영향을 미칠 수 있다.
도 6을 더 참조하면 마모 레벨링 기능(610)은 모듈 내 모든 메모리 디바이스에 걸쳐 사용 사이클의 수를 균일하게 최대화하는 것에 관한 것이다. 이 기술 분야에 통상의 지식을 가진 자라면 마모 레벨링 기능의 구성의 기본 원리에 친숙하고 이 기능에 대한 필요성은 특정 형태의 비휘발성 메모리가 제한된 개수의 프로그램/소거 사이클에 견디는 제한된 수명을 나타낸다는 사실에 존재한다는 것을 이해할 수 있을 것이다. 이 마모 레벨링 기능은 특정 모듈의 메모리 디바이스의 사용가능한 수명을 연장하는 것과 관련된다.
가비지 수집 기능(612)은 더 이상 필요없는 데이터로 기록된 메모리 유닛(섹션, 블록, 또는 페이지)을 식별하고, 이 메모리를 새로운 데이터로 후속하여 기록하는데 이용가능한 메모리 유닛의 풀(pool)로 리턴한다. 마모 레벨링 기능과 같이, 이 기술 분야에 통상의 지식을 가진 자라면 가비지 수집 기능의 구성의 기본 원리에 친숙할 것이다.
비트 밀도 구성 기능(614)은 메모리의 각 적용가능한 물리적 부분에서 바람직한 비트 밀도 구성에 대해 더 설명될 기준에 만들어진 선택 결과로 결정된 비트 밀도 구성에 메모리 유닛을 할당한다. 일 실시예에서, 메모리 유닛은 블록으로 이루어진 섹션일 수 있다.
FTL 기능(616)은 특정 데이터 유닛의 논리적 어드레스에만 기초하여 이 특정 데이터 유닛(섹션, 블록 또는 페이지)의 물리적 위치를 제공한다. 마모 레벨링, 가비지 수집, 및 비트 밀도 구성은 모두 어드레스 변환 테이블에 영향을 미치는 진행 중인 업데이트를 야기하는 동적 기능일 수 있으므로, FTL 및 다른 기능은 공통 시설(602)에 최신 상태를 유지하기 위하여 실시간으로 서로 협력할 수 있다.
동일한 파라미터들이 제어기 파라미터(630)와 모듈 파라미터(632)의 일부를 형성하는 경우, 일 실시예에서 우선순위는 제어된 파라미터에 일반적으로 제공된다. 이런 점에서, 파라미터는 임의의 적절한 및 융통성 있는 방식으로 구성될 수 있다. 예를 들어, 일부 실시예에서, 파라미터는 서브세트로 구성될 수 있는데 여기서 동일한 파라미터의 일 서브세트는 제어기(40)로부터의 값에 우선순위를 제공하고 동일한 파라미터의 다른 서브세트는 모듈(30)로부터의 값에 우선순위를 제공한다.
이제 도 7을 참조하면, 도 6의 마모 레벨링 기능(610)의 일 실시예는 참조 부호 (700)에 의해 일반적으로 지시된다. 마모 레벨링 기능은 기능 엔진의 공유된 파라미터 섹션(322)(도 3 및 도 6)에 의해 포함된 바와 같이 (702)에서 메인 제어기(40)로부터 이용가능한 파라미터 및 (704)에서 모듈로부터 이용가능한 내부 파라미터에 기초하여 동작할 수 있다. 따라서, 파라미터의 특정 소스에 관한 한, 마모 레벨링 기능의 성능에 상당한 융통성이 제공된다. 파라미터 소스에 상관없이 마모 레벨링 기능은 일반적으로 이들 메모리 디바이스가 일정 수의 프로그램 및 소거 동작 후에 열화되는 저장 셀로 이루어질 때 모듈의 메모리 디바이스의 동작 수명 시간을 최대화하는 것과 관련된다.
공유된 파라미터 섹션(322)에 제공된 파라미터의 선택을 통해, 메인 제어기(40)(도 2)는 마모 레벨링 기능에서 마모 레벨링 기능에 더 많거나 더 적은 제어를 선언할 수 있다. 전술된 바와 같이, 메인 제어기에 의해 수립된 파라미터는 모듈에 의해 제공된 파라미터에 우선권(precedence)을 가질 수 있다. 제어기와 모듈로부터 제공된 파라미터는 (708)에서 선택된 초기화 파라미터 및 (710)에서 선택된 동작 파라미터에서 특성화될 수 있고 초기 동작 후에 진행 중인 마모 레벨링에 적용가능하다. 초기화 파라미터의 예는 총 블록 면에서, 및 총 블록 수 중 데이터 저장에 초기에 이용가능하게 만들어진 서브세트 면에서 모듈의 메모리 용량의 초기 범위를 한정하는 어드레스를 포함할 수 있다. 초기화 파라미터는 단계(720, 724, 730)가 섹션 및 섹션 내 블록을 초기 메모리 배열에 할당하는 시퀀스에 대한 지시로 사용되는 섹션 사이즈, 섹션 할당 순서, 블록 할당 순서, 등과 같은 파라미터를 더 포함할 수 있다. 초기화 파라미터의 선택(708)은 전체 공정의 초기화 분기(712)의 시작을 포함하는 것이 주목된다. 초기화 파라미터는 메인 제어기에 의해 일반적으로 제공되고 그 동작의 시작시에 마모 레벨링 기능의 구성을 수립한다. 일반적으로, 초기화는 모듈의 원래의 마모 레벨링 구성을 수립하기 위하여 한번 수행될 수 있다. 메인 제어기로부터 동작 파라미터는 마모 레벨링 기능의 비-초기화 측면에 적용될 수 있다. 일부 실시예에서 모듈에 의해 제공된 동작 파라미터는 메인 제어기로부터 초기 파라미터에 기초하여 초기 동작에 후속하여 진행중인 마모 레벨링 활동을 한정할 수 있다. 마모 레벨링 기능의 비-초기화 측면에 대해 포함될 수 있는 파라미터의 종류의 예로는 섹션 및 블록 할당 및 재할당의 정렬 지시를 포함한다. 다른 예로는 블록이나 섹션이 재할당되기 전에 정적 데이터를 얼마나 오래 포함할 수 있는지에 대한 수치적 기준을 포함하거나, 또는 마모 레벨링 재할당 결정이 이루어질 수 있는 누적된 기록/소거 사이클의 수, 에러 정정 통계 등과 같은 다른 기준을 포함한다.
(720)에서, 초기화 분기(712)는 섹션 할당 초기화를 수행하는 것에 의해 모듈의 메모리 디바이스 중에서 원래의 섹션 세트를 할당하는 것으로 계속된다. 블록 할당 기능(724)은 각 섹션 내 블록 세트를 할당하도록 수행된다. 섹션 할당의 예는 도 5에 도시되고 이에 대하여 전술되어 있다.
(724) 이후, 초기 구성이 수립되고, 이는 (730)에서 예를 들어 기능 엔진의 공유된 파라미터 섹션(322)(도 3 및 도 6)에 저장된다. 따라서, 초기 구성이 종료되고 참조를 위해 이용가능하고 마모 레벨링 기능의 동작 분기(740) 동안 업데이트된다.
(744)에서, 검색 구성 공정이 수행된다. 초기화 분기(712) 후에 초기화 구성은 (730)에서 저장된 구성에 의해 수립된 바와 같이 검색될 수 있다. 이후 및 진행 중인 동작을 통해 구성은 동작 분기(740)에 의해 관리될 수 있다. 진행 중인 동작 동안, 현재 FTL 테이블 정보는 기능 엔진의 예를 들어 테이블 영역(620)(도 6)으로부터 FTL 업데이트 경로(748)를 통해 검색될 수 있다. FTL 업데이트는 더 상세히 설명될 기록 및 소거 활동의 결과 발생하고, 여기서 FTL 기능에 의한 물리적 어드레스의 추가 또는 삭제는 마모 레벨링 기능에 필연적으로 영향을 미친다. 경로(748)는 FTL 기능을 업데이트하기 위하여 양방향인 것으로 이해된다. 마모 레벨링 기능은 또한 예를 들어 테이블 영역(620)의 FTL 영역을 편집하는 것에 의해 FTL 기능에 가시적인 변화를 만들 수 있다. 일례로서, 기록 동작 전에, FTL은 마모 레벨링 기능으로부터 기록할 바람직한 위치를 획득한다. 이것은 더 상세히 설명되는 바와 같이 모든 이용가능한 위치 내로부터 각 새로운 기록 동작에 물리적 위치를 한정하는데 마모 레벨링 기능의 역할로 인한 것이다. 가비지 수집 기능(612)으로부터 업데이트는 가비지 수집 업데이트 경로(750)에서 이용가능하다. 이들 업데이트는 마모 레벨링 기능에 의해 배타적으로 사용하기 위해 통상적인 FTL 및 가비지 수집 업데이트에 추가될 수 있다. 마모 레벨링 기능이 예를 들어 테이블 영역(620)을 통해 가비지 수집 기능에 가시성을 가지고 있으므로, 마모 레벨링 기능은 가비지 수집 기능에 의하여 이용가능한 상태로 리턴한 메모리로부터 새로운 기록을 할 물리적 어드레스를 할당할 수 있다. 경로(750)는 가비지 수집 기능을 업데이트하기 위하여 양방향인 것으로 이해된다.
(760)에서 각 기록 동작은 메모리 구성 내에 기록할 물리적 위치를 수립하기 위하여 마모 레벨링 기능의 검색 구성 단계(744)와 인터페이싱할 수 있다. 더 설명되는 바와 같이, 마모 레벨링 기능은 기록 기능(메인 제어기(40)(도 2)로부터 기록 명령에 의해 개시된)과 FTL 기능과 통상적으로 통신하며 그리하여 경로(748, 760)는 양방향이다. 새로운 기록 데이터 위치가 기록 기능에 의해 사용될 때, 이 새로운 위치는 기록 데이터를 위한 논리적 어드레스에 대응하는 물리적 위치로서 FTL 에 추가되어야 한다. 기존의 논리적 데이터 유닛이 기록 명령에 의해 덮어쓰기(overwritten)되고 있다면, 마모 레벨링 기능은 논리적 덮어쓰기가 새로운 물리적 어드레스에 데이터를 기록하는 것에 대응(NAND 플래시에 적용가능한)할 뿐만 아니라 구성을 업데이트하기 위하여 데이터의 현재 물리적 위치의 할당 해제에도 대응한다는 것을 알고 있어야 한다.
기록 동작과 같이 소거 동작은 마모 레벨링과 FTL 기능이 수용하여야 하는 변화를 호출하는 물리적 동작을 수반한다. 따라서, (770)에서, 각 기록 동작은 검색 구성 단계(744)와 인터페이싱하며 메모리 구성 내에서 소거할 물리적 위치를 수립한다. 경로(770)는 소거 기능을 업데이트하기 위하여 양방향인 것으로 이해된다. 논리적 소거는 기존의 물리적 데이터 유닛의 할당 해제를 수반할 수 있다. 물리적 소거는 메모리의 물리적 크기의 실제 소거에 대응하여 새로운 기록에 이용가능한 것으로 본 메모리를 리턴한다.
(774)에서, 섹션 할당 단계는 검색된 구성에 기초하여 모듈 내 결합 메모리 디바이스에 대해 현재 섹션 구성을 조사하고 새로운 섹션의 할당이 필요한지 여부를 결정한다. 현재 섹션 구성에 임의의 섹션을 추가하는 것은 마모 레벨링 구성으로 업데이트된다. 후자는 예를 들어 기능 엔진의 테이블 영역(620)(도 6)에 저장될 수 있다.
(776)에서, 각 섹션 내에서 블록 구성은 현재 미할당된 블록이 할당을 요구하는지 여부를 결정하기 위해 분석된다. 임의의 추가는 마모 레벨링 구성의 적절한 부분에 추가하는 것을 초래한다. 또한 변화는 FTL 및 가비지 수집 기능을 말할 수 있다.
(778)에서, 폐기 블록(obsolete block)으로 차 있는 섹션은 재할당될 수 있다. NAND 플래시에서 이것은 소거 단계 후에 이용가능한 섹션 세트에 새로이 소거된 메모리를 추가하는 것 또는 새로운 섹션에 재할당을 기다리는 빈 저장매체에 새로이 소거된 메모리를 추가하는 것이 후속하는 것에 대응할 수 있다.
(780)에서, 섹션 내 각 블록은 블록이 재할당을 요구하는지를 결정하기 위해 평가할 수 있다. 재할당은 통상적으로 블록이 폐기 데이터(기록되었으나 더 이상 유효하지 않은 것으로 플래그된(flagged) 것)로 기록된 결과 발생하고, 이 경우에 블록은 소거될 수 있고 빈 블록은 새로운 기록에 이용가능한 것으로 플래그된다. 최종 구성은 (730)에서 저장되고 동작 분기(740)는 종료하고 재실행이 필요할 때까지 대기한다.
도 8을 참조하면, 도 6의 가비지 수집 기능(612)의 일 실시예는 일반적으로 참조 부호 (800)으로 도시된다. 가비지 수집 기능은 기능 엔진의 공유된 파라미터 섹션(322)(도 3)으로 포함된 바와 같이, (804)에서 메인 제어기(40)로부터 이용가능한 파라미터(801)의 서브세트와, (806)에서 모듈로부터 이용가능한 내부 파라미터에 기초하여 동작할 수 있다. 파라미터의 소스에 상관없이, 가비지 수집 기능은 이전에 기록된 메모리 위치를 재사용하고 이 메모리 위치를 마모 레벨링 기능과 함께 이후 기록을 위해 액세스가능한 것으로 만드는 것과 관련된다. 본 명세서에서 사용된 바와 같이 메모리는 최저 레벨에 페이지를 갖는 유닛의 계층으로 사용하도록 할당된다. 제한된 개수의 페이지가 블록으로 결합된다. 페이지에 저장된 데이터의 양은 비트 밀도 구성에 따라 변할 수 있지만 페이지는 통상적으로 고정된 개수의 물리적 저장 셀로 구성된다. 섹션은 다수의 블록으로 이루어지고, 섹션에서 블록의 개수는 섹션마다 변할 수 있다. 각 모듈은 여러 방식으로 모듈의 메모리 디바이스에 걸쳐 할당될 수 있는 일정 개수의 섹션을 포함한다(도 5 참조).
비휘발성 메모리의 동작은 메모리 디바이스의 물리적 구조(makeup)를 처리해야 하는 규칙에 일반적으로 종속되는 것으로 이해된다. 본 설명을 위하여 비 제한적인 예로서, NAND 플래시 메모리의 거동과 일반적으로 일치하는 규칙이 적용될 수 있으나, 본 설명은 이 기술 분야에 통상의 지식을 가진 자에 의해 용이하게 다른 비휘발성 메모리 기술에 적용될 수 있다. 예를 들어, NAND 디바이스와 같은 메모리 디바이스를 판독하고 기록하는 일반화된 규칙은 다음과 같다:
a. 페이지는 한번에 기록될 수 있는 최소 물리적 메모리 크기이다. 부분적으로 페이지에 기록하는 것은 허용되지 않는다.
b. 블록에 기록하기 시작하기 전에 블록에 모든 페이지를 채우기에 충분한 데이터를 수집하고 (그러나, 항상 그러해야 하는 것은 아니다); 이후 모든 데이터를 유닛으로 블록에 기록하는 것이 바람직하다. 이것은 페이지-페이지 간섭 메커니즘에 대한 보상을 수용한다.
c. 블록은 한번에 소거될 수 있는 메모리의 최소 유닛이다.
상기 규칙은 판독 및 기록 액세스에 블록 중심 메커니즘을 의미한다. 그리하여, 가비지 수집 단계는 활성 데이터 페이지로부터 페이지의 통합을 통해 모든 활성 데이터 페이지 또는 모든 폐기 데이터 페이지를 포함하는 블록으로 폐기 페이지를 분리하는 것에 의해 저장 용량을 검색하는 일을 담당할 수 있다. 단지 폐기 데이터 페이지만을 포함하는 블록은 소거될 수 있고 이용가능한 상태로 리턴될 수 있다. 여기서 현재 상황에서 "폐기(obsolute)"라는 용어는 값으로 기록되었으나 모듈에 의해 더 이상 유효한 것으로 인식되지 않는 셀을 가지는 메모리 유닛(페이지, 블록 또는 섹션)을 말하는 것으로 이해된다. 이것은 모듈에 의해 유효한 것으로 인식되는 기록된 데이터의 대안적인 경우와 대비되는 것이다. 이 후자의 경우는 "활성" 데이터(active data)라고 말한다. 셀에서 소거 상태가 아닌 기록 값을 현재 포함하지 않는 데이터 유닛은 "이용가능한" 것으로 정의된다.
도 8을 더 참조하면, 메인 제어기(40)와 모듈(30)로부터 획득된 파라미터(801)의 서브세트 및 다른 구성 파라미터는 마모 레벨링 기능에 적용된다. 다른 구성 파라미터는 메모리 구성과 마모 레벨링 구성에 관한 정보를 포함할 수 있다. 메모리 구성은 모듈의 메모리 디바이스의 할당된 부분에 걸쳐 섹션, 블록 및 페이지의 배열을 포함하며, 마모 레벨링 구성은 가비지 수집 기능과 마모 레벨링 기능 사이의 관계를 수반하는 파라미터를 포함할 수 있다.
가비지 수집은 폐기 페이지의 식별, 폐기 페이지를 폐기 블록으로 통합 및 블록 소거를 초래하는 동작 세트를 수반한다. 이 기능은 폐기 데이터 유닛이 섹션으로 통합되고 이는 다시 섹션의 구성 블록의 소거에 의해 이용가능한 섹션으로 이동되는 섹션 레벨에서 또한 동작할 수 있다. 가비지 수집 기능과 소거 기능은 메모리 내 블록에 영향을 미치는 업데이트 정보를 교환하도록 통신하는 것으로 이해된다. 소거 기능(802)은 가비지 수집 기능이 소거 대기 블록 리스트로부터 이 소거 블록을 제거하게 하는 블록 소거 완료를 가비지 수집 기능에 통지한다. (803)에서, 양방향 통신은 가비지 수집 기능(612)과 마모 레벨링 기능(800) 사이에 파라미터(801)를 통해 수행된다. 예를 들어, 마모 레벨링 기능은 기록 완료 및 소거 완료를 가비지 수집 기능에 신호한다. 이 통지는 가비지 수집 기능으로 하여금 기록되고 있는 블록과 소거 대기 블록에 관해 유지되는 구성 정보를 업데이트하게 한다. 가비지 수집 기능은 이들 변화를 마모 레벨링 기능에 통지하여 이에 의해 마모 레벨링 기능이 이용가능한 물리적 어드레스의 리스트를 기록할 그 다음 위치로 우선순위에 따라 정렬하게 한다.
가비지 수집 기능은 (810)에서 시작하고 (812)에서 섹션마다 발생하며 여기서 제1 단계는 제1 섹션의 상태를 검색하는 것이다. (814)에서, 섹션 기준이 적용되어 섹션 상태에 의해 반영된 섹션 상태를 측정한다. 섹션은 (a) 유효한 블록으로 완전히 구성되거나; (b) 폐기 블록과 유효 블록의 혼합으로 구성되거나; (c) 폐기 블록으로 완전히 구성될 수 있다. (a) 경우가 적용되는 경우, 현재 섹션에 마모 레벨링 활동이 필요 없으나 섹션 내에서 이 섹션의 성분 블록에 가비지 수집이 적용될 필요성이 있으며 이는 블록 상태 취득 단계(816)에서 시작하는 블록 레벨 공정으로 제어 전송을 초래한다. (b) 경우가 (814)에서 적용되는 경우, 섹션 기준이 긍정적(affirmative)이고 폐기 블록의 개수가 현재 섹션의 특정 구성에 적용되는 블록 임계 파라미터(818)와 비교된다. 폐기 블록의 수가 임계값을 초과하면, 공정은 (820)에서 섹션을 재할당하는 것으로 취해진다. 일 실시예에서, 재할당은 현재 섹션과 동일한 구성의 새로운 섹션의 할당을 수반하고 현재 섹션으로부터 새로운 섹션으로 더 유효한 블록을 복사한 후; 현재 섹션 내 모든 블록을 폐기 블록으로 지정하는 것을 수반할 수 있다. 현재 섹션은 블록 각각을 소거하는 것에 의해 소거될 수 있다. 이들 단계 후에 현재 섹션은 미할당된 메모리의 풀로 리턴할 수 있다. (c) 경우가 (814)에서 적용되면, 섹션 기준은 긍정적이어서, 모든 블록이 폐기 블록이므로 폐기 블록의 개수는 임계값을 초과한다. (820)에서 재할당은 모든 블록을 소거하고 미할당된 메모리의 풀로 현재 섹션을 리턴할 수 있다. 동작은 (822)로 진행할 수 있고 여기서 다른 섹션이 이용가능한지 여부를 결정한다. 이용가능하지 않다면, 공정은 (824)에서 종료한다. 다른 섹션이 이용가능하다면, 동작은 (812)로 리턴하고, 여기서 이 섹션은 현재 섹션이 된다. 공정은 모든 할당된 섹션이 처리될 때까지 반복된다.
(816)에서 블록 레벨 공정에 진입한 섹션에 대해 전술된 바와 같이 블록 레벨 공정은 섹션 내에서 동작한다. 일부 경우에, 모든 섹션은 전체 모듈에 걸쳐 블록 레벨 공정의 완료가 이 모듈의 섹션 각각에서 연속적으로 블록 레벨 처리를 수행할 수 있도록 블록 레벨 처리를 요구할 수 있다.
블록 기준의 결정(830)은 블록의 재할당을 호출하는 블록 내 폐기 페이지의 수의 페이지 임계 파라미터(832)를 호출한다. 블록 레벨 공정은 관련된 폐기 유닛이 섹션을 구성하는 블록 대신에 블록을 구성하는 페이지인 것을 제외하고는 (814)의 섹션 기준에 대하여 전술된 바와 같이 (a), (b), 및 (c) 경우에서의 섹션 레벨 공정과 유사하다. (830)에서, 페이지의 임계값(832)을 초과하는 값이 (b) 및 (c) 경우에 대응하는 현재 블록 내에 폐기된 경우, 새로운 블록이 (836)에서 현재 섹션 내에 할당된다. 새로운 블록은 현재 블록으로부터 아직 활성인 페이지를 수신한다. 활성 페이지로 새로이 할당된 블록을 채우기 위하여 이 단계는 다수의 현재 블록에 걸쳐 동시에 실행될 수 있어서 새로이 할당된 블록이 다수의 현재 블록으로부터 활성인 페이지를 포함할 수 있는 것으로 이해된다. 활성 페이지가 이동되는 기준인 현재 블록(또는 현재 블록의 조합)은 소거될 수 있으나 이 경우 섹션 내 이용가능한 저장영역으로 소거된 블록을 리턴하는 것이 동반될 수 있다. 따라서, 새로운 블록 또는 블록들은 소거용으로 지정된 블록으로부터 유효 페이지를 수신하기 위해 현재 섹션 내에 할당된다. 이 할당된 블록은 활성 데이터 페이지를 포함한다.
블록 재할당이 완료될 때, 동작은 (840)으로 진행하고 여기서 마지막 블록을 체크한다. 다른 블록이 이용가능한 경우, 동작은 (816)으로 리턴하고, 블록 레벨 처리를 위하여 그 다음 블록을 현재 블록으로 할당한다. 다른 블록이 이용가능하지 않다면, 동작은 (842)로 진행하고 여기서 다른 섹션을 테스트한다. 다른 섹션이 이용가능하다면, 동작은 (812)로 리턴한다. 한편, 다른 섹션이 이용가능하지 않다면, 동작은 (824)에서 종료한다. 따라서, 블록 레벨 공정은 블록 레벨 처리를 받은 섹션 내 모든 블록에 대해 실행되지만 활성 데이터 또는 폐기 페이지의 일정 부분을 포함하는 블록만이 공정에 의해 조사된다. 활성 데이터 페이지와 폐기 데이터 페이지 중 그 어느 것도 전혀 포함하지 않는 블록은 이 공정에서 조사될 것을 요구하지 않으나, 이들 블록은 이 공정에서 할당되는데 이용가능하다.
(824)에서, 마지막 섹션이 완료되면 마모 레벨링 기능의 하나의 애플리케이션이 완료된다. 일부 실시예는 마모 레벨링 기능이 모듈에 의해 명시적인 호출에 의해서만 실시될 수 있을 것을 요구할 수 있고; 다른 실시예는 연속적으로 실행되는 배경 작업으로서 마모 레벨링 기능을 사용할 수 있다. 마모 레벨링이 완료된 경우에, 블록 레벨에서 또는 섹션 레벨에서 업데이트(750)(도 7)는 마모 레벨링 기능(700)(도 7)에 보이거나 이에 영향을 미칠 수 있는 가비지 수집 기능 또는 더 상세히 설명될 FTL 기능에 의해 적용될 수 있다.
도 9를 참조하면, 도 6의 비트 밀도 구성 기능(614)의 일 실시예는 참조 부호 (900)으로 일반적으로 지시되고, 모듈의 비휘발성 메모리의 비트 밀도를 구성하는 기능을 예시한 흐름도로 도시된다. 비트 밀도 구성 기능은 기능 엔진의 공유된 파라미터 섹션(322)(도 3)에 포함될 수 있는 바와 같이 (904)에서 메인 제어기(40)로부터 이용가능한 파라미터(902) 및 (906)에서 모듈로부터 이용가능한 내부 파라미터의 서브세트에 기초하여 동작할 수 있다. 이 실시예에 따라, 섹션이 특정 비트 밀도에서 동작하기 위해 모듈 내에 할당되는 기능은 가비지 수집 기능에 의해 섹션을 초기 할당에 후속하는 것으로 도시된다. 많은 상이한 비트 밀도가 이용가능할 수 있고, 이용가능한 비트 밀도는 판독 및 기록 동작 동안 사용되는 인코딩/디코딩 기능 및 모듈의 메모리 디바이스의 메모리 기술 모두에 적어도 부분적으로 기초하여 결정될 수 있는 것으로 이해된다. 비트 밀도 구성은 셀 구성당 단일 비트로부터 셀 구성당 다중 비트로 변할 수 있다. 셀당 저장된 비트에 있어 각 비트 밀도 값은 또한 인코딩 및 디코딩 기능에 의해 사용되는 추가적인 오버헤드의 유형과 양, 및 인코딩 및 디코딩 접근법을 처리해야 하는 변형을 더 구비할 수 있다. 인코딩 및 디코딩 접근법은 적용된 오버헤드의 양의 함수로서 결과를 달성하는 전술된 바와 같은 코드의 조합을 수반할 수 있다. 콘볼루션 코드와 블록 코드는 여러 오버헤드 레벨에서 동작할 수 있고, 특정 양의 오버헤드는 제어기 설정시에 이 코드를 구현하는 것에 적용된 파라미터에 의해 결정된다. 오버헤드의 양은 통상적으로 메모리 디바이스 섹션의 임SNR 및 의의 다른 열화 메커니즘 특성에도 불구하고 최적의 성능을 위해 미리 지정된다. 비트 밀도는 NAND 플래시에서 적어도 블록 유닛의 레벨 아래에 적용될 수 있는 속성으로 적용될 수 있다. 궁극적으로, 비트 밀도 구성의 입도(granularity)는 모듈의 메모리 디바이스에서 메모리 기술과 선택된 인코딩 및 디코딩 기능의 함수일 수 있다. 본 명세서에 제공된 예에서, 비트 밀도 구성은 제공된 섹션 내에 있는 모든 블록이 이 섹션을 위해 선택된 비트 밀도에서 동작하도록 섹션 레벨로 설정된다. 섹션은 단일 블록으로 포함될 수 있는 것으로 이해되고; 이것은 개별 비트 밀도 구성이 단일 블록만큼 작은 데이터 보유 유닛에 적용되는 NAND 플래시의 사용과의 관련을 나타낼 수 있다.
방법(900)은 초기화 분기(910)와 업데이트 분기(912)를 포함한다. 초기화 분기(910)는 새로운 섹션이 할당될 때마다 실행된다(또는 예를 들어 가비지 수집 및 메모리 재구성으로 인해 재할당된다). 업데이트 분기(912)는 섹션 아래 물리적 메모리의 영역에 적용되는 비트 밀도 구성을 위해 모듈 수명 동안 주기적으로 실행될 수 있다. 메모리 디바이스의 수명 동안 물리적 메모리의 특정 크기는 상이한 시간에 상이한 섹션에 속할 수 있으나, 임의의 주어진 시간에 특정 크기는 최대 하나의 섹션에 속할 수 있다. 능동 사용된 섹션에서 비트 밀도 구성 기능은 섹션을 구성하는 물리적 메모리의 상태를 모니터링할 수 있다. 예를 들어, 특정 비트 밀도 구성에서 동작하는 물리적 메모리의 일부 부분을 모니터링하는 비트 밀도 구성 기능은 물리적 메모리의 열화를 검출하여 동일한 물리적 메모리를 후속적으로 재할당한 것이 열화의 결과 더 낮은 SNR(signal-to-noise ratio)에 더 내성 있는 비트 밀도 구성을 요구할 수 있도록 할 수 있다.
메인 제어기(40)(도 2)로부터의 파라미터는 모듈에 의해 공급되는 파라미터에 비해 우선권을 가질 수 있다. 일부 경우에 메인 제어기는 제어기 파라미터에 기초하여 기능 엔진에 의하여 수행되는 비트 밀도 구성 기능의 대부분 또는 모두를 커스터마이징할 수 있다. 다른 경우에, 메인 제어기는 비트 밀도 구성 기능이 모듈 파라미터에 의해 한정되도록 모듈에 관리를 위임할 수 있다. 또 다른 경우에, 파라미터의 지배 세트는 제어기와 모듈 파라미터의 협력적인 조합일 수 있다. 그러나, 임의의 경우에, 실제 비트 밀도 구성 기능은 파라미터들이 일단 수립되면, 예를 들어 자율적으로 파라미터의 특정 소스에 상관없이 모듈에 의해 수행된다. 파라미터 값이 각 섹션에 대해 비트 밀도 구성을 선택하는 것과 및 하나의 비트 밀도 구성으로부터 다른 비트 밀도 구성으로 교대하는 것에 대하여, 및 (프로그램/소거 사이클의 최대 개수를 초과하는 것으로 인해 성분 메모리가 "마모"된 경우와 같이) 심지어 능동 메모리 풀로부터 섹션을 할당 해제하는 것에 대하여 비트 밀도의 측면을 결정할 수 있는 것으로 이해된다.
파라미터(902)의 서브세트는 전부 나열한 것으로 의도된 것이 아닌 것으로 이해된다. 대부분의 파라미터 카테고리는 용량, 밀도, 및 수명 수준(예를 들어, 프로그램/소거 사이클의 개수)을 포함하는 타깃 사용 모드를 포함한다. 파라미터에 의해 명시된 다른 기준은 할당, 재할당 및 할당 해제를 수행하도록 비트 밀도 구성 기능에 의해 사용되는 메모리의 물리적 특성이다. 다른 파라미터 카테고리는 가능한 구성을 한정하고, 이것은 섹션 레벨에서 비트 밀도 구성을 포함한다. 다수의 제어 지시는 비트 밀도 구성 변화를 결정하기 위한 에러 율과 다른 메트릭에 적용되는 임계값을 한정하는 파라미터와 함께 사용될 수 있다. 이들 제어 지시는 임계 기준에 대하여 일정 동작을 취하도록(또는 취하지 않도록) 기능 엔진에 지시할 수 있다. 일례로서, 페이지 내 정정된 에러 율이 일정 한정된 임계값을 초과하기 시작할 때 연관된 제어 지시는 가비지 수집 기능이 메모리의 영향을 받은 섹션에 대해 공정을 개시하도록 할 수 있다.
도 9를 계속 참조하면, 초기화 분기(910)는 모듈 동작의 개시 시작시에 실행되는 공정에 적용된다. 초기화는 일반적으로 계속된 비트 밀도 구성이 모듈 메모리의 동작 수명 동안 여러 에이징 및 마모 메커니즘으로부터 발생하는 것과 같은 파라미터의 진행 중 유지보수에 의존하는 것으로 인해 단 한번만 발생한다. (920)에서, 모듈 내 특정 메모리의 능력에 대한 결정을 할 수 있게 하는 메모리 능력 데이터의 형태로 정보가 수집된다. 메모리 능력 데이터는 파라미터(예를 들어, 메트릭)들이 국부화된 각 부분에 존재하도록 모듈 내 메모리 디바이스의 국부화된 부분에 대하여 구성될 수 있다. 이 국부화의 입도는 구현에 따라 좌우되고 심지어 단일 모듈 내에서도 변할 수 있다. 초기 메모리 능력 정보는 비트 밀도 구성에 대하여 메모리의 능력을 결정하기 위하여 메인 제어기 또는 모듈에 의하여 수행되는 자체 테스트 또는 다른 기능의 하나의 결과로서 얻어질 수 있다. 하나의 유용한 파라미터는 그 자체가 메모리 셀이 저장할 수 있는 비트의 수의 지시자(indicator)인 메모리의 SNR(signal-to-noise ratio)의 척도이다. 모듈의 메모리 디바이스의 사용 이력이 누적됨에 따라 추가적인 파라미터(예를 들어, 비트 밀도 구성 기능에 업데이트 동안 수집된 사용 통계)는 각 메모리 디바이스의 각 물리적 크기에 대한 비트 밀도 구성 및 재구성에 대하여 후속적인 결정을 할 수 있게 한다. 다른 사용 통계는 예를 들어 디코더(202)(도 3)로부터 이용가능하다. 품질 메트릭과 및 관련된 사용 통계는 예를 들어 상기 병합된 '585 출원 건에 설명된 바와 같이 초기화 및 동작을 위하여 생성될 수 있다. 메모리 성능과 관련된 파라미터(예를 들어, 측정된 정보 세트)에 본 명세서에서 적용된 일반적인 용어는 전술된 바와 같이 메모리 능력 데이터인 것으로 이해된다.
메모리 능력 데이터의 초기 세트가 초기화 분기(910)에 의하여 획득된 후에, 모듈에 대한 비트 밀도 구성 메뉴를 나타내는 비트 밀도 구성 파라미터(예를 들어, 템플릿(template))의 세트가 (924)에서 조립될 수 있다. 메뉴 선택은 인코딩 및 디코딩 기능에 의하여 사용하기 위한 파라미터의 전체 조합을 나타내는 비트 밀도 구성의 미리 한정된 세트로부터 직접 취해지거나 이로부터 유도될 수 있다. 본 실시예에서, 각 메뉴 선택은 메모리의 섹션에 적용가능하지만, 다른 실시예에서, 메뉴 선택은 메모리 계층 내 블록 레벨 이하의 레벨에 적용될 수 있다. 넓은 범위의 파라미터는 메뉴 선택에서 가능하지만 각 파라미터는 메모리 셀에서 적어도 비트 수, 인코딩/디코딩 파라미터 및 사용될 패리티의 양을 한정할 수 있다.
(928)에서, 섹션 맵은 서브세트(902)로부터의 다른 파라미터와 함께 (924)로부터의 비트 밀도 구성 파라미터를 적용하는 것에 의해 생성된다. 섹션 맵은 각 할당된 섹션의 위치, 크기, 및 구성을 나열할 수 있는 도 5에 도식적으로 도시된 바와 같은 데이터 구조이다. 이 결과는 모듈(도 5)의 메모리 디바이스에 걸쳐 맵핑된 섹션 세트이며, 여기서 각 섹션은 고유한 비트 밀도 구성으로 적어도 잠재적으로 구성될 수 있다. 섹션에 비트 밀도 구성을 적용하는 것은 동일한 비트 밀도 구성, 예를 들어, 메모리 셀당 4비트를 사용하여 매 섹션의 경우로부터 상이한 비트 밀도 구성을 사용하는 매 섹션으로 연장하는 넓은 범위의 변형을 포함할 수 있다.
(930)에서, 섹션 맵이 생성된 후에 비트 밀도 구성은 섹션 할당의 일부로 적용된다. 이것은 논리적 어드레스에 대응하는 물리적 메모리의 위치와 크기를 한정하는 공유된 파라미터 섹션(322)(도 3)에서 FTL 테이블에 업데이트를 포함할 수 있다. 나아가, 비트 밀도 구성(비트 밀도 구성 템플릿 중 하나로부터)과 그 대응하는 섹션 사이에 연관이 이루어질 수 있다. 이 연관은 후속적으로 판독, 기록, 및 소거 기능이 올바른 논리적-물리적 맵핑을 식별할 수 있게 하여 메인 제어기로부터의 명령에 액세스하게 할 뿐만 아니라 모듈 내 판독/기록 설정을 올바르게 구성할 수 있게 한다.
섹션 할당(930)에 의해 한정된 각 섹션은 궁극적으로 블록 세트로 구성되고 그 개수는 한정되어야 한다. (934)에서 블록 할당은 예를 들어 섹션을 포함하는 정확한 개수의 블록을 수용하기 위해 테이블 영역(620) 내 테이블 구조를 업데이트하는 것에 의해 각 섹션에 대해 수행된다.
(936)에서, 모듈의 섹션 구성이 저장된다. 섹션 구성은 모듈의 섹션 구조를 완전히 한정하고 수반될 수 있는 여러 비트 밀도 구성의 메모리 인식 동작을 가능하게 할 뿐만 아니라 계속적 사용으로부터 발생하는 에이징 및 마모 효과에 의해 요구될 수 있는 차후 업데이트를 가능하게 하는 적절한 파라미터(예를 들어, 테이블 및) 템플릿을 포함할 수 있다.
이제 비트 밀도 구성 기능의 업데이트 분기(912)에 대한 설명으로 돌아가면, 업데이트 분기는 일부 실시예에서 모듈의 수명에 걸쳐 간격을 두고 실행될 수 있다. 초기화 공정의 경우에서와 같이, 적용되는 파라미터는 메인 제어기와 모듈 그 자체 중 어느 하나 또는 둘 모두에 의해 제공될 수 있다. 다시, 메인 제어기(40)(도 2)로부터 파라미터는 모듈에 의해 공급되는 것에 비해 우선권을 가질 수 있다. 비트 밀도 구성 기능은 제어기 제공된 파라미터, 모듈 제공된 파라미터, 또는 이들의 임의의 적절한 조합으로 한정될 수 있다. 그러나, 임의의 경우에 실제 비트 밀도 구성 기능은 파라미터의 특정 소스에 상관없이 모듈에 의해 수행된다. 업데이트 분기(912)는 비트 밀도 구성에 대한 변화가 기존의 섹션에 요구될 때마다 통상적으로 수행된다. 예는 마모 레벨링 및 가비지 수집 동작으로 인해 또는 메모리 에이징에 의해 요구되는 비트 밀도 구성 수정으로 인해 섹션을 할당 해제 및/또는 할당할 필요성을 포함한다.
(940)에서, 업데이트 분기는 초기화 분기(910)에 의해 원래 생성된 메모리 능력 데이터를 수정하는 것에 의해 시작한다. 가비지 수집 및 마모 레벨링 기능은 (942) 및 (944)에서의 입력을 각각 단계(940)로 제공하며 이는 이들 기능이 메모리 능력 데이터에 영향을 미치기 때문이다. 전술된 바와 같이, 메모리 능력 데이터는 여러 비트 밀도로 데이터를 저장 및 유지하기 위해 메모리의 능력의 지시자인 파라미터로 구성된다. 가비지 수집 및 마모 레벨링 기능으로부터의 입력으로, 메모리 능력 데이터는 수정된다. 수정된 메모리 능력 데이터를 고려하여 (946)에서 현재 섹션에 대한 현재 할당과 비교해서 현재 섹션에 대한 비트 밀도 구성의 변화를 반영하는 재할당 맵이 결정된다. 이 맵은 (가비지 수집 결과로부터) 새로운 할당에 요구되는 섹션이 어느 섹션인지 수립하고 (마모 레벨링으로부터) 이들 섹션이 어디에 배치될 수 있는지를 수립한다.
단계(946)로부터 재할당 맵을 사용하여 단계(948)는 현재 할당으로부터 섹션 맵의 현재 수정에 변화를 추가한 새로운 할당(여기서 현재 할당은 초기화 분기(910) 또는 업데이트 분기(912)를 통해 이전 패스(pass)에 의해 결정되었다)으로 변화를 지정하는 것에 의해 업데이트된 섹션 맵을 생성한다. (950)에서 새로운 섹션은 새로운/업데이트된 섹션 맵에 의해 지정된 메모리에 할당된다. 업데이트는 예를 들어 테이블 영역(620)(도 6) 내 데이터 구조에 업데이트를 기록하는 것에 의해 달성될 수 있다. 블록 할당은 전술된 바와 같이 (934)에서 진행된다.
도 10을 참조하면, 도 6의 플래시 변환층(FTL) 기능(616)의 일 실시예가 참조 부호 (1000)으로 일반적으로 도시되고, 본 발명의 모듈 중 하나의 비휘발성 메모리에 관한 플래시 변환층을 관리하는 흐름도로 도시된다. FTL 기능 서비스는 명령에 제공된 논리적 어드레스에 기초하여 데이터에 물리적 할당을 찾는 것에 의해 메인 제어기 명령을 사용한다. 이런 점에서 도 6을 참조하면 마모 레벨링 기능(610), 가비지 수집 기능(612), 및 비트 밀도 구성 기능(614)의 활동은 모듈 내 저장된 데이터의 물리적 배치를 동적으로 하게 하는 것으로 이해된다. 따라서, FTL 기능은 정적 물리적 배치를 위한 단지 논리적-물리적 어드레스 변환보다 더 복잡하지만 다른 기능으로부터 생성된 파라미터를 사용하여 섹션, 블록 및 페이지 내 데이터 배치에 대응하는 동적 FTL 데이터 구조를 결정하여, 활성 데이터 유닛이 대응하는 논리적 어드레스에만 기초하여 항상 위치될 수 있게 한다. 이들 동적 데이터 구조는 도 6의 테이블 영역(620)에 저장될 수 있는 것으로 이해된다.
기능 엔진의 공유된 파라미터 섹션(322)(도 3)의 일부를 형성할 수 있는 FTL 파라미터 섹션(1002)은 (1004)에서 메인 제어기로부터의 파라미터, 및 (1006)에서 모듈로부터의 모듈 파라미터를 수신한다. 이들 파라미터의 값은 모듈에 의해 가해지는 커스터마이징의 양과는 대조적으로 메인 제어기에 의해 FTL 기능의 상대적인 커스터마이징 정도에 영향을 미칠 수 있다. 다른 기능에서와 같이 전술된 바와 같이 일부 파라미터 값은 메인 제어기로 하여금 모듈에 대해 FTL에 더 큰 영향력을 가지게 할 수 있는 반면, 다른 파라미터는 모듈에 의한 영향력을 지원하는 경향이 있다. 메인 제어기 또는 모듈에 의한 영향력의 정도에 상관없이, 기능 엔진은, 예를 들어 파라미터 입력에만 기초하여 자율적으로 FTL 기능을 수행할 수 있다.
FTL 파라미터 섹션(1002)은 (1010)에서 마모 레벨링 기능(700)(도 7); (1012)에서 가비지 수집 기능(800)(도 8); 및 (1014)에서 비트 밀도 구성 기능(900)(도 9)에 의하여 생성된 정보를 더 수신한다. FTL 기능의 초기화 분기(1020)는 모듈을 제일 먼저 사용하기 전에 및 유저 데이터 저장 동작의 실행시에 메인 제어기에 의해 액세스하기 전에 실행된다. (1024)에서, FTL 파라미터 섹션(1002)에 의해 반영된 마모 레벨링 기능으로부터의 입력(1010)과 비트 밀도 구성 기능으로부터의 입력(1014)은 논리적 테이블 엔트리의 생성으로 시작하여 초기 데이터 구조의 구성을 가능하게 한다. 이들 데이터 구조는 섹션, 블록, 및 페이지 레벨에서 맵핑을 제공하기 위하여 특성상 다중 레벨일 수 있다. 또한 새로운 데이터가 모듈에 기록되고 및 이전에 기록된 데이터가 덮어쓰여지거나 소거되는 것으로 인해 유효하지 않을 때 필연적으로 수정된 것으로 의도되므로 맵핑은 특성상 동적이다.
(1028)에서, 논리적-물리적 맵 엔트리는 물리적 위치가 데이터 구조에서 각 논리적 엔트리에 대응하도록 각 논리적 어드레스에 대해 생성된다. 초기화 분기는 실제 데이터가 모듈에 기록되기 전에 발생하므로, 논리적 엔트리는 이미 할당된 것으로 지시되지만 모듈 메모리에는 여전히 빈 영역을 나타낸다. 따라서, 이 점에서 데이터 구조는 아직 데이터를 포함하지 않는, 메인 제어기에 액세스가능한 메모리 볼륨을 형성하는 섹션 세트를 말할 수 있다. 볼륨 내 논리적 데이터 블록과 물리적 블록 및 페이지 사이에 연결을 통해 이들 데이터 구조를 증대시키는 것은 후속적으로 판독, 기록 및 소거 기능의 작업이다.
(1030)에서 초기화 이후에 정상 동작이 진입되고 여기서 메모리는 데이터를 저장하도록 액세스가능하다. 판독, 기록, 및 소거 동작은 FTL 기능과의 상호작용인 인 것으로 설명되는 것으로 이해된다. 이 기술 분야에 통상의 지식을 가진 자라면 이들 동작의 다른 측면과 친숙하다. 기능의 판독 분기(1034)는 판독 명령에 응답하여 실행되는 반면, (1036)에서 기능의 소거/기록 분기는 기록 명령 또는 소거 명령에 응답하여 실행될 수 있으며 이는 이후 더 설명된다.
판독 분기(1034)는 판독 동작이 저장된 데이터를 변경하지 않으므로 FTL 데이터 구조를 업데이트할 것이 요구되지 않는 것으로 이해된다. 따라서, (1038)에서, 판독 분기는 이에 제시된 각 논리적 어드레스에 대해 물리적 어드레스를 리턴한다. 그리하여, 모듈이 메인 제어기로부터 판독 데이터 명령을 수신할 때, FTL 기능의 결과적인 호출은 물리적 어드레스 룩업(look-up) 동작만을 수반한다. 판독 분기를 통한 하나를 초과하는 패스는 단일 판독 명령에 응답하여 발생할 수 있으며 이는 판독 명령에 요구되는 데이터가 다수의 논리적 어드레스에 존재하는 데이터에 포함될 수 있기 때문이다.
소거/기록 분기(1036)는 이전에 기록되지 않은 데이터 블록이 기록되고 있을 때 또는 현재 기록된 논리적 어드레스에 존재하는 데이터가 덮어쓰여지고 있을 때 실행될 수 있다. 전자의 경우에 논리적 어드레스 또는 어드레스들은 메모리 내 물리적 위치에 할당되어야 하며, 이것은 필연적으로 물리적 메모리가 기존의 섹션으로부터 특정 블록 및 페이지로 지정될 것을 요구한다. 필요한 만큼 많은 소거/기록 분기를 통한 패스가 명령에 의해 대응하는 물리적 위치에 기록되도록 모든 데이터를 할당하기 위하여 실행될 수 있다. (1040)에서, 기록 동작을 위한 물리적 메모리가 할당될 수 있다. (1042)에서, FTL 테이블은 기록 동작을 반영하도록 업데이트된다. 소거 동작이 필요하다면, 후자의 경우에, 단계(1040)는 논리적 어드레스(들)에 대응하는 물리적 어드레스(들)에 이전에 기록된 데이터를 무효화하기 위하여 본 메모리 위치의 소거를 수행할 수 있다. 단계(1042)는 기록 기능에 앞서 무효 데이터를 포함하는 것으로 본 메모리 위치를 지정하기 위해 FTL 테이블을 업데이트할 수 있다. FTL 소거 기능은 메인 제어기로부터 모듈로 기록 명령 또는 소거 명령과 함께 수행될 수 있다. 소거/기록 분기(1036)의 FTL 소거 기능은 대응하는 논리적 어드레스의 물리적 소거를 달성하는 것이 아니라 오히려 논리적 어드레스와 물리적 위치 사이에 대응관계가 더 이상 유효하지 않는 것을 보여주기 위해 테이블 구조를 업데이트한다. 따라서, 소거/기록 분기(1036)를 통한 제1 패스는 FTL 구조 면에서 소거를 수행할 수 있는 반면, 제2 패스는 대응하는 기록 동작을 수행할 수 있다. 테이블 엔트리는 차후에 폐기 물리적 데이터 유닛을 식별할 때 가비지 수집 기능(612)에 의해 업데이트될 수 있고, 후속적으로 기록하는데 이용가능한 것으로 영향을 받은 물리적 데이터 유닛을 리턴하기 위해 물리적 블록 소거를 수행할 수 있다. 정상 동작은 (1044)에서 진행된다.
이제 도 11을 참조하면, 판독 동작의 일 실시예는 블록도 형태로 도시되고 기능 엔진(320)(도 6)과 판독 동작의 보충적 상호작용을 예시하기 위하여 참조 부호 (1100)으로 일반적으로 지시된다. (1102)에서, 판독 동작이 개시된다. 개별 메모리 셀에 액세스하고 이를 판독하는 것에 관한 한, 판독 동작의 메카닉스(mechanics)는 이 기술 분야에 통상의 지식을 가진 자에게 친숙하며 이를 위해 여러 다양한 적절한 공정이 사용될 수 있는 것으로 이해된다. 각 판독 동작은 논리적 어드레스와 관련된 것이다. 논리적 어드레스는 판독을 수행하기 위해 명령의 일부로서 호스트로부터 외부에서 획득되었을 수 있거나 또는 모듈 내부에서 획득되었을 수 있다. 어느 경우이든 (1104)에서 실제 데이터가 판독될 수 있기 전에 판독 동작은 논리적 어드레스를 FTL 기능(616)(도 6 및 도 10)에 송신한다. (1106)에서, FTL 기능(616)은 판독 동작으로부터 논리적 어드레스를 수신하는 것에 응답하여 물리적 어드레스를 판독 기능으로 리턴한다. 이것은 판독 동작이므로, 테이블 섹션(620)(도 6)에서 FTL 테이블에 업데이트 및 마모 레벨링 및 가비지 수집 기능은 메모리에 변화가 이루어지고 있지 않으므로 요구되지 않는다. 물리적 어드레스를 취득하면, (1108)에서, 판독 동작은 판독 데이터를 획득하기 위하여 실행된다. 도 11은 설명의 명확화를 위하여 단일 논리적 또는 물리적 어드레스의 교환에 기초하여 판독 동작을 말하는 것으로 보이지만, 판독 동작은 다수의 어드레스를 수반할 수 있는 것으로 이해된다. 따라서, 도시된 판독 동작의 여러 단계는 물리적 어드레스 각각에 대해 대응하는 판독 단계로 다수의 논리적-물리적 어드레스 변환을 수반할 수 있다. (1110)에서, 판독 동작은 완료되고 정상 동작이 재개된다.
도 12를 참조하면, 기록 동작의 일 실시예가 블록도 형태로 도시되고 기능 엔진(320)(도 6)과 기록 동작의 보충적 상호작용을 예시하기 위하여 참조 부호 (1200)으로 일반적으로 지시된다. (1202)에서, 기록 동작이 개시된다. 개별 메모리 셀에 액세스하고 이에 기록하는 것에 관한 한, 기록 동작의 메카닉스는 이 기술 분야에 통상의 지식을 가진 자에게 친숙하고 여러 다양한 적절한 공정이 이를 위해 사용될 수 있는 것으로 이해된다. 기록 동작은 메모리의 일정 크기가 기록되는 것을 초래한다. 이러한 동작은 이전에 기록되지 않은 논리적 어드레스에 이루어지는 것이거나 또는 현재 기록된 논리적 어드레스에 이루어지는 것일 수 있다. 어느 경우이든 기록 동작은 (1204)에서 타깃 논리적 어드레스를 FTL 기능(616)(도 6 및 도 10)으로 송신한다. FTL 기능은 (1206)에서 기록 데이터를 메모리에 물리적으로 기록하는 물리적 어드레스를 리턴하는 것에 의해 응답한다. 기록이 (이전에 기록되지 않은 논리적 어드레스에 기록하는) 새로운 것이든 또는 (현재 기록된 논리적 어드레스를 타깃으로 하는) 덮어쓰기하는 것이든 간에 FTL 기능은 기록될 물리적 어드레스를 리턴한다. 어느 경우이든 마모 레벨링 기능(610)(도 6 및 도 7) 및 가비지 수집 기능(612)(도 6 및 도 8)에 가시적인 FTL 기능에 의해 FTL 구성에 업데이트를 초래한다. (1208)에서, 기록 동작에 의해 사용하기 위해 물리적 어드레스의 리턴에 응답하여 기록 동작이 실행된다. 도 12는 설명의 명료함을 위하여 단일 논리적 또는 물리적 어드레스의 교환에 기초하여 기록 동작을 말하는 것으로 보이지만, 기록 동작은 다수의 어드레스를 수반할 수 있는 것으로 이해된다. 따라서, 도시된 기록 동작의 여러 단계는 물리적 어드레스 각각에 대해 대응하는 기록 단계로 다수의 논리적-물리적 어드레스 변환을 수반할 수 있다. 또한, FTL, 마모 레벨링, 및 가비지 수집 파라미터는 기록 동작에 의해 기록된 다수의 물리적 어드레스를 반영하도록 업데이트된다. (1210)에서 정상 동작이 재개된다.
도 13을 참조하면, 소거 동작의 일 실시예가 블록도 형태로 도시되고 기능 엔진(320)(도 6)과 소거 동작의 보충적 상호작용을 예시하기 위하여 참조 부호 (1300)으로 일반적으로 지시된다. (1302)에서, 소거 동작이 개시된다. 개별 메모리 셀에 액세스하고 이를 소거하는 것에 관한 한, 소거 동작의 메카닉스는 이 기술 분야에 통상의 지식을 가진 자에게 친숙하고 이 목적을 위하여 넓은 다양한 적절한 공정이 사용될 수 있는 것으로 이해된다.
여기에 도시된 소거 동작의 결과는 메모리 크기의 물리적 소거이다. 그리하여, 이 동작은 호스트로부터 송신된 소거 명령으로부터 초래될 수 있는 논리적 소거와는 다르지만, 호스트 소거 명령은 이 동작을 궁극적으로 호출할 수 있다. 그리하여, 이 물리적 소거는 호스트로부터가 아니라 모듈로부터 지시될 수도 있다.
도 6 및 도 13을 참조하면, (1304)에서, 현재 가비지 수집 구성 파라미터가 예를 들어 기능 엔진의 테이블 섹션(620)(도 6)으로부터 액세스되어 (이용가능한 경우) 소거될 물리적 블록의 위치를 획득한다. 소거될 물리적 위치의 식별은 가비지 수집 기능(612)(도 6)에 의해 생성될 수 있다. (1306)에서, 블록이 소거에 이용가능한지 여부에 대한 결정이 이루어진다. 이 블록 어드레스가 현재 이용가능하지 않은 경우, 소거 과정은 (1310)에서 종료하고 정상 동작으로 리턴한다. 블록 어드레스가 이용가능한 경우, 소거 과정은 가비지 수집 기능에 의해 지정된 바와 같이 소거에 이용가능한 그 다음 블록 어드레스를 획득하기 위하여 (1312)로 진행한다. (1314)에서, 소거 기능은 액세스할 소거 동작을 실행하고 (1312)에서 획득된 물리적 어드레스에 있는 블록을 소거한다. 소거가 완료된 후에, 동작은 (1316)으로 이동하고 여기서 예를 들어, 테이블 섹션(620)을 통해 가비지 수집 기능(612)에 완료 상태를 제공한다. 일 실시예에서, 완료 상태는 가비지 연결 기능으로 직접 제공될 수 있고 이는 가비지 수집 기능으로 하여금 그 구성을 업데이트할 수 있게 한다. (1310)에서 소거 동작은 종료하고 정상 동작 상태로 리턴한다.
도 3 및 도 6을 참조하면, 각 모듈(30)은 제어기 파라미터(630)에 응답하여 여러 모드에서 동작하도록 구성될 수 있다. 일 실시예에서, 모듈은 제어기로부터 모듈 입력 파라미터의 제1 세트에 기초하여 기능 중 선택된 기능에 대해 제1 모드에서 동작하고, 제어기로부터 모듈 입력 파라미터의 제2 세트에 기초하여 선택된 기능에 대해 제2 모드에서 동작할 수 있으며, 여기서 모듈 입력 파라미터의 제1 세트는 모듈 입력 파라미터의 제2 세트와는 다르다. 파라미터 세트는 예를 들어 공유된 파라미터 섹션(322)에 의해 저장될 수 있다. 모듈은 예를 들어 제1 모드를 모듈의 주어진 비휘발성 메모리 섹션의 제1 부분(예를 들어, 섹션)에 적용하고 제2 모드를 모듈 입력 파라미터에 기초하여 주어진 비휘발성 메모리 섹션의 제2 부분(예를 들어, 섹션) - 여기서 제1 부분은 제2 부분과 다른 것이다 - 에 적용하도록 구성될 수 있다. 따라서, 도 5에서, NVM 1(섹션 502)은 제1 비트 밀도에서 데이터를 저장하도록 구성될 수 있는 반면, NVM 2 및 NVM 4(섹션 504)는 입력 파라미터에 기초하여 제1 비트 밀도와는 다른 제2 비트 밀도에서 데이터를 저장하도록 구성될 수 있다. 일 실시예에서, 전체 비휘발성 메모리의 부분은 제어기 파라미터(630)에 기초하여 결정될 수 있는 반면, 비트 밀도는 모듈의 비휘발성 메모리의 하나 이상의 모듈 파라미터(예를 들어, 모니터링된 특성)에 기초하여 결정될 수 있다. 일부 실시예에서, 모듈 파라미터는 예를 들어, 디코더에 의해 생성된 에러 정정 통계일 수 있으며 이는 아래에서 더 설명된다.
일부 실시예에서, 하나 이상의 모듈은 이렇게 구성된 각 모듈이 예를 들어 제어기로부터 감독 없이 또는 제어기와 상호 작용하여 자율적으로 기능을 수행하도록 공유된 파라미터 섹션(322)(도 3 및 도 6)을 통해 제어기로부터 모듈 입력 파라미터의 제1 세트에 기초하여 기능의 선택된 기능에 대해 제1 모드에서 동작할 수 있고, 이렇게 구성된 각 모듈이 제어기로부터 적어도 부분적인 제어 하에 제2 모드에서 기능을 수행하도록 공유된 파라미터 섹션(322)으로부터 모듈 입력 파라미터의 제2 세트에 기초하여 선택된 기능에 대해 제2 모드에서 동작할 수 있으며, 여기서 모듈 입력 파라미터의 제1 세트는 모듈 입력 파라미터의 제2 세트와는 다르다. 예를 들어, 제1 모드에서, 모듈은 국부 플래시 변환 층이 제어기에 의해 액세스될 수 있으나 변경되지 않도록 제어기와 독립적으로 테이블 영역(620)(도 6) 내 플래시 변환 층을 자율적으로 관리할 수 있는 반면, 제2 모드에서 모듈은 예를 들어 제어기가 모든 여러 모듈의 플래시 변환 층에 가시성을 가지므로 모듈 플래시 변환 층의 모듈 부분에 변화를 야기하는 것과 같은 제어기로부터의 일정 기여를 하며 전체 플래시 변환 층의 모듈 부분을 관리할 수 있다.
도 5에 대하여 전술된 바와 같이 본 명세서는 페이지 경계에 걸쳐 브리지할 수 있는 블록 추상화를 제공한다. 블록 추상화에 대해 추가적인 상세는 이제 도 14를 참조하여 제공된다. 도 14는 물리적 페이지(1402)보다 더 짧은 제1 유저 데이터 블록(1404)과 물리적 페이지(1402)보다 더 긴 제2 유저 데이터 블록(1406)에 대하여 일반적인 휘발성 메모리에 의해 제공된 물리적 페이지(1402)를 도시하며, 여기서 길이는 연관된 데이터의 양을 나타낸다. 전술된 바와 같이 종래 기술은 물리적 페이지 사이즈와 블록 사이즈 사이에 정확한 매치를 일반적으로 부과한다. 블록이 페이지보다 더 짧은 경우에, 필러 비트가 채워져 있지 않은 페이지 내 빈 공간을 채우는데 사용될 수 있으나, 블록이 페이지보다 더 긴 경우에는 블록은 종래 기술의 종래의 제약 아래에서는 저장가능하지 않다. 종래 기술에서 이들 상황 하에서 저장하기 위해 각 및 모든 페이지의 적어도 일부 부분은 미사용될 수 있으며, 이 미사용된 부분의 사이즈는 블록 사이즈와 및 더 큰 페이지 사이즈 사이의 미스매치의 정도에 의존한다. 따라서, 종래 기술의 경우에 유저 데이터의 페이지 사이즈 유닛은 매우 특정된 데이터 양이다. 그러나, 도 14의 유저 데이터 블록 각각은 도시된 물리적 페이지보다 길이가 상이하다. 물리적 페이지 내 총 셀의 개수보다 더 작은 개수를 사용하는 유저 데이터 블록의 경우에, 종래 기술은 미사용된 셀이 있어서 저장 효율이 손실되더라도 블록을 하나의 물리적 페이지에 맞추는 것에 의해 상황에 대처할 수 있다. 유저 데이터 블록이 물리적 페이지의 크기를 초과할 때에는 종래 기술은 유저 블록을 단일 물리적 페이지에 맞추는 것이 가능하지 않으므로 상황에 대처할 수 없다.
그러나, 본 발명은 각 블록을 단일 물리적 페이지에 맞추도록 사이즈 정할 필요 없이 비휘발성 메모리 디바이스에 정보 블록을 저장하는 것에 의해 종래 기술의 제약을 일소(sweep aside)한다. 예를 들어, 유저 데이터 블록은 각 물리적 페이지가 포함하는 스패어 비트가 얼마나 많은지에 상관없이 물리적 메모리에 할당될 수 있다. 이런 점에서, 각 페이지는 예를 들어 패리티 데이터에 관한 것일 수 있는 스패어 비트, 논리적 블록 어드레스를 포함하나 이로 제한되지 않는 여러 형태의 메타데이터, 및 FTL, 마모 레벨링, 및 가비지 수집 기능에 의해 사용될 수 있는 여러 플래그, 포인터 및 카운터로 일반적으로 할당될 수 있는 것으로 이해된다. 본 명세서의 개시 내용을 통해 결합된 유저 데이터 비트 플러스 물리적 페이지 내 각 스패어 비트는 효과적으로 모두 유저 데이터, ECC 패리티 또는 메타데이터로서 사용에 상관 없이 각 페이지 내 저장 공간이 된다. 따라서, 도 14의 유저 데이터 블록에서 실제 유저 데이터와 오버헤드 데이터 사이에 차별이 발생하지 않는다. 그러나, 연관된 오버헤드와 유저 정보의 블록은 제1 유저 데이터 블록(1404)에서와 같이 물리적 페이지(1402)보다 더 작거나, 또는 제2 유저 데이터 블록(1406)에서와 같이 물리적 페이지(1402)보다 더 클 수 있다. 볼 수 있는 바와 같이 어느 경우이든 다중 유저 블록 시퀀스는 유저 블록의 수 및 물리적 페이지의 수 사이에 대응관계 없이 물리적 페이지의 그룹으로 맞춰질 수 있다. 비제한적인 예로서, 유저 데이터 블록은 연관된 오버헤드를 가지는 하나 이상의 512 바이트 유닛(섹터)으로 정의될 수 있고; 블록이 하나의 섹터 또는 다수의 섹터로 구성되는지 여부는 블록이 임의의 원하는 사이즈일 수 있으므로 중요치 않다. 특정 페이지 내 각 블록의 원점(예를 들어, 시작점)은 지정된 오프셋(offset)을 특징으로 한다. 오프셋의 추적은 펌웨어, 하드웨어, 또는 이 둘 모두의 임의의 적절한 조합으로 구현될 수 있다. 유저 블록이 하나의 물리적 페이지를 초과할 때, 블록의 나머지 부분이 후속하는 물리적 페이지에 할당된다. 이것이 발생할 때 유저 블록 내 중단(break) 위치가 유저 블록의 원점이 추적되는 것과 동일한 방식으로 애플리케이션에 의해 추적되며, 이는 이후 보다 상세히 설명된다.
이제 도 15를 참조하면, 도 15는 비휘발성 메모리의 일부를 형성하는 연속하는 4개의 물리적 페이지(PP1 내지 PP4)를 도식적으로 표시하는 참조 부호 (1500)으로 일반적으로 지시된 블록도이다. 연속적인 물리적 페이지에서, 이러한 물리적 페이지 세트는 예를 들어 하나의 페이지로부터 그 다음 페이지로 주어진 양만큼 물리적 어드레스를 증분시키는 것에 의해 연속적으로 물리적으로 어드레싱될 수 있다. 이 예에서, 유저 데이터 블록(B1 내지 B4)이 사용되고, 각 유저 데이터 블록은 도 14의 제1 유저 데이터 블록(1404)에 의해 예시된 길이를 구비하고, 여기서 유저 데이터 블록은 물리적 페이지보다 더 짧다. 예시를 명확히 하기 위하여, 블록 길이(BL)는 페이지 길이(PL)의 0.75인 것으로 가정된다. 보이는 바와 같이 블록(B1)은 물리적 페이지(PP1)에 완전히 포함된다. 블록(B2)은 블록(B1)의 길이에 대응하는 페이지의 시작으로부터 오프셋된 물리적 페이지(PP1)의 최종 1/4 지점에 저장된 제1 부분(1510)(즉, 3/4 PL)과, PP2의 제1 절반을 채우기 위하여 PP2의 시작으로부터 시작하여 블록(B2)의 최종 2/3을 나타내는 물리적 페이지(PP2)에 저장된 제2 부분(1512)을 포함한다. 블록(B3)의 초기 부분(1520)은 PP2의 시작으로부터 1/2 PL만큼 오프셋된 물리적 페이지(PP2)의 제2 절반에 저장되는 반면, 블록(B3)의 최종 1/3 부분(1522)은 물리적 페이지(PP3)의 제1 1/4에 저장된다. 블록(B4)은 물리적 페이지(PP3)의 나머지 부분(1524)을 채운다. 블록(B5)은 PP4의 시작으로부터 1/4 PL만큼 오프셋된 물리적 페이지(PP4)의 초기 3/4 부분(1526)을 채운다. PP4의 최종 1/4 부분(1528)은 빈 것으로 도시되어 있으나 이는 후속 블록의 일부로 채워지거나 비어있을 수 있다. 본 예에서, 5개의 유저 블록은 4개의 물리적 페이지에 저장된다. 볼 수 있는 바와 같이 물리적 페이지는 심지어 블록 길이가 페이지 길이보다 더 짧더라도, 완전히 사용될 수 있다. 나아가, 블록은 페이지 경계를 브리지하는 방식으로 저장될 수 있다. 도 15에 의해 예시된 저장은 임의의 개수의 유저 데이터 블록 동안 계속하거나 또는 시퀀스에서 마지막 유저 데이터 블록이 저장될 때까지 계속할 수 있다. 일부 경우에, 시퀀스에서 마지막 물리적 페이지는 미사용된 메모리 셀을 포함할 수 있으나, 모든 이전의 물리적 페이지들이 완전히 사용될 수 있어서 종래 기술의 경우에 비해 순 효율 증가를 초래할 수 있다.
도 16은 비휘발성 메모리의 일부를 형성하는 4개의 연속적인 물리적 페이지(PP1 내지 PP4)를 도식적으로 도시하는 참조 부호 (1600)으로 일반적으로 지시된 블록도이다. 이 예에서, 유저 데이터 블록(B1 내지 B3)이 사용되고, 각 유저 데이터 블록은 도 14의 제2 유저 데이터 블록(1406)에 의해 예시된 길이를 구비하며, 유저 데이터 블록은 물리적 페이지보다 더 길다. 물론 종래 기술은 상대적으로 더 긴 블록을 저장할 수 없다. 본 예에서 예시의 명확화를 위하여 블록 길이(BL)는 페이지 길이(PL)의 1.25배인 것으로 가정된다. 보이는 바와 같이 초기 블록(B1)은 물리적 페이지(PP1)에 부분적으로 포함되고 B1의 최종 부분(1610)(20퍼센트)은 물리적 페이지(PP2)에 포함된다. 블록(B2)의 초기 부분(1612)은 물리적 페이지(PP2)의 시작으로부터 1/4 PL만큼 오프셋된 물리적 페이지(PP2)의 나머지 부분을 채우며 블록(B2)의 최종 부분(1614)은 물리적 페이지(PP3)의 처음 50퍼센트를 채운다. 블록(B3)의 초기 부분(1616)은 PP3의 시작부터 1/2 PL만큼 오프셋된 물리적 페이지(PP3)의 최종 50퍼센트를 채우며 블록(B3)의 최종 부분(1618)은 물리적 페이지(PP4)의 초기 75퍼센트를 채운다. PP4의 최종 25퍼센트는 더 이상의 블록이 이용가능하지 않은 경우 미사용되거나 후속 블록에 의해 사용될 수 있다. 본 예에서, 3개의 유저 블록은 4개의 물리적 페이지에 저장된다. 물리적 페이지는 블록 길이가 페이지 길이보다 더 긴 경우에도 완전히 사용될 수 있다. 다시, 블록은 페이지 경계를 브리지하는 방식으로 저장될 수 있다. 이런 점에서, 유저 데이터 블록 사이즈와 물리적 페이지 사이즈의 관계는 본 명세서에서 드러난 개시 내용에 기초하여 수용될 수 있다. 제공된 융통성은 종래 기술에서 가능한 것에 비해 저장 효율을 증가시키거나 최대화할 수 있다. 이 융통성은 주어진 메모리에 물리적 페이지의 사이즈에 대응하는 증가를 요구함이 없이 유저 블록 포맷에 ECC 패리티를 추가하는 것과 같은 유저 블록 사이즈를 변경하는 능력을 제공한다. 저장 효율은 주어진 메모리 디바이스에서 물리적 페이지 자원을 충분히 사용하는 경향에 의해 최적화될 수 있다.
도 17은 도 15 및 도 16의 상황에서 전술된 데이터 구조를 달성하는 방식으로 유저 데이터 블록을 저장/기록하는 방법의 일 실시예를 도시하는 참조 부호 (1700)으로 일반적으로 지시된 흐름도이다. 초기에, 기록 동작을 포함하는 유저 데이터 블록의 시퀀스 또는 시리즈는 도 15 및 도 16에 도시된 바와 같이 공정에 의해 수신가능하며 여기서 블록 길이와 페이지 길이는 상이할 수 있는 것으로 이해된다. 방법은 (1702)에서 시작하고 (1704)로 이동하며, 여기서 공정의 시작 시 초기 유저 데이터 블록을 검색한다. (1706)에서 현재 유저 데이터 블록은 제로 또는 비 제로 오프셋 값일 수 있는 물리적 페이지의 시작으로부터 일정 오프셋된 물리적 페이지로 맵핑된다. 이 오프셋은 예를 들어, FTL 기능에 의해 생성되고 이 FTL 기능에 의해 사용된 테이블에 포함된 어드레스로서 또는 종래 블록 메타데이터의 값으로서 저장될 수 있다. (1710)에서, 현재 유저 데이터 블록이 기록 전송에서 마지막 블록인지 여부에 대한 결정이 이루어진다. 그렇지 않다면, 동작은 (1712)로 진행하고, 여기서 현재 페이지가 이제 가득 차 있는지 여부를 테스트한다. 현재 페이지가 가득 차 있다면 동작은 (1714)로 전이되고, 여기서 페이지를 기록한다. 동작은 (1704)로 리턴한다. (1712)에서, 페이지가 가득 차 있지 않다면, 동작은 (1704)로 리턴한다. 다시 (1710)으로 리턴하여, 마지막 유저 블록이 검출되면 동작은 (1716)으로 진행하며 여기서 존재하는 경우 현재 페이지의 나머지 공간을 채운다. (1718)에서 마지막 페이지가 기록되고 동작은 (1720)에서 종료하고 그 다음 기록 동작을 대기한다.
도 18은 도 15 및 도 16의 상황에서 블록 길이와 페이지 길이가 상이할 수 있는 전술된 데이터 구조로부터 유저 데이터 블록을 판독하는 방법의 일 실시예를 도시하는 참조 부호 (1800)으로 일반적으로 지시된 다른 흐름도이다. 본 방법은 (1802)에서 시작하고 (1804)로 이동하며 여기서 공정의 시작시에 초기 물리적 페이지를 검색한다. (1806)에서, 검색된 페이지는 유저 블록이 복구되도록 유저 블록으로 맵핑된다. 유저 블록을 검색하기 위하여 맵핑은 예를 들어 기록 동작(도 17) 동안 생성된 오프셋에 기초하고, FTL 기능에 의해 생성되고 사용된 테이블에 저장된 어드레스로 또는 종래 블록을 가지는 메타데이터로 저장될 수 있다. 유저 데이터 블록의 복구가 완전(complete)한지 여부를 결정하는 테스트가 (1808)에서 이루어진다. 복구가 완전한 경우, 복구된 블록은 (1810)으로 전이된다. 그러나, 한편, (1808)은 하나의 물리적 페이지로부터 그 다음 물리적 페이지(예를 들어, 도 15에서 블록(B2) 및 도 16에서 블록(B1) 참조)로 블록을 랩핑하는 것으로 인해 유저 데이터 블록이 완전하지 않은 것을 식별할 수 있는 것으로 이해된다. 이 경우에, 동작은 불완전한 블록의 나머지 부분을 포함하는 그 다음 페이지를 판독하기 위하여 (1804)로 리턴한다. 맵핑(1806)은 불완전한 블록을 재조립하고 블록(1810)을 송신하기 위하여 이제 완전한 블록을 패스시킨다. (1812)에서, 테스트는 현재 판독 동작의 마지막 유저 블록이 복구되었는지 여부를 결정한다. 그렇지 않다면, 동작은 (1804)로 리턴하여 그 다음 페이지를 판독한다. 마지막 유저 블록이 복구된 경우 현재 판독 동작이 (1816)에서 종료하고 그 다음 판독 동작을 대기한다.
상기한 바에 따라 매우 융통성 있는 판독/기록 배열 및 연관된 방법이 페이지 경계가 페이지 세트에서 연속하는 페이지 사이에 한정되도록 페이지 길이를 가지는 각 페이지로 물리적으로 및 순차적으로 어드레싱가능한 페이지 세트로서 메모리 셀이 메모리 셀이 구성되어 있는 복수의 메모리 셀로 구성된 메모리 디바이스로 판독/기록 동작에서 적어도 하나의 솔리드 스테이트 메모리 디바이스에 액세스하는데 사용하기 위해 제공된다. 시스템은 그룹의 각 블록이 페이지 길이와 상이한 블록 길이를 포함할 수 있는 페이지의 연속적인 시리즈에서 적어도 초기 페이지가 채워져 있도록 페이지의 연속적인 시리즈에서 주어진 기록 동작과 연관된 데이터 블록의 그룹을 저장하고 이에 액세스하도록 구성된 제어 배열을 제공한다. 적어도 하나의 블록이 페이지 경계로부터 오프셋되어 저장될 수 있는 것으로 이해된다. 2개 이상의 페이지의 초기 그룹과 최종 페이지를 구비하는 물리적 페이지의 시리즈의 경우에 시스템은 데이터 블록의 그룹에 기초하여 초기 페이지 그룹의 적어도 각 페이지를 채울 수 있다. 최종 페이지는 채워지거나 부분적으로 채워질 수 있다. 최종 페이지가 부분적으로 채워진 경우, 이용가능한 공간은 다른 블록의 적어도 일부만큼 채워질 수 있다. 물리적 페이지는 예를 들어 물리적 페이지의 시작으로부터 오프셋된 만큼 블록의 시작이 식별된 하나 이상의 블록 경계를 포함할 수 있다. 약간 다른 방식으로 말하면, 데이터 블록 그룹의 특정 블록은 특정 블록의 제1 부분이 제1 페이지에 저장되고 특정 블록의 제2 부분이 제2 페이지에 저장되어 특정 블록의 저장이 제1 페이지와 제2 페이지 사이 페이지의 경계를 교차하도록 저장될 수 있다. 이의 설명을 위하여 제1 페이지와 제2 페이지는 도 15 및 도 16의 데이터 구조에서 2개의 인접한 물리적 페이지일 수 있다.
본 명세서의 SSD 및 본 명세서에 상세히 설명된 연관된 모듈은 종래 기술의 접근법에서 매우 중앙집중된 경향이 있는 활동을 분산시키는 분배된 기능을 시스템에 제공하는 것으로 이해된다. 스케일러빌리티(scalability)의 속성은 중앙집중된 기능에서보다 기능적으로 분산(분배)된 것에서 보다 용이하게 달성된다. 즉 전술된 모듈과 같은 분산 기능을 가지는 분배된 성분은 주어진 시스템이 스케일 업될 때 시스템 오버헤드의 추가적인 증분을 제한한다. 이와 대조적으로, 중앙집중된 시스템은 저장 디바이스를 추가할 때 시스템 복잡도가 증가한 만큼 중앙집중된 제어기의 능력을 증가시켜야 한다. 중앙집중된 내장된 마이크로프로세서와 내장된 소프트웨어를 통해, 자원을 관리하는 능력은 중앙 제어기의 연산 및 다른 능력의 제약에 의해 제한된다. 그리하여 속성으로서 스케일러빌리티는 중앙집중된 능력과 동일한 기능을 추가하려고 시도하는 시스템에 비해 더 낮은 레벨의 기능적 계층에서 기능을 추가하는 시스템에 더 용이하게 달성된다.
본 발명의 상기 설명은 예시와 설명을 위하여 제시된 것이다. 상기 설명은 전부 다 설명한 것이라거나 본 발명을 개시된 정확한 형태나 형태들로 제한하려고 의도된 것이 전혀 아니며, 상기 개시 내용에 비춰 이 기술 분야에 통상의 지식을 가진 자라면 특정 변형, 치환, 추가, 및 이들의 서브 조합으로 인식할 수 있는 다른 변형과 변경이 가능할 수 있다.
Claims (89)
- 메모리 시스템으로서,
메모리 디바이스를 구비하는 모듈로서, 상기 모듈은 파라미터에 적어도 부분적으로 기초하여 상기 모듈에 대하여 관리 기능을 수행하도록 구성된 것인, 모듈; 및
제어기를 포함하되,
상기 파라미터는 상기 제어기 및/또는 상기 모듈에 의해 제공된 것인 메모리 시스템. - 청구항 1에 있어서, 상기 메모리 시스템은 솔리드 스테이트 드라이브(solid state drive)를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 메모리 드라이브는 복수의 메모리 디바이스를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 마모 레벨링 기능(wear leveling function)을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 가비지 수집 기능(garbage collection function)을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 비트 밀도 구성 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 어드레스 변환 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 에러 검출 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 에러 정정 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 모듈은 복수의 모듈을 포함하고, 상기 제어기는 상기 복수의 모듈의 각 모듈에 대해 각 인터페이스를 제공하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 복수의 파라미터를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 데이터 인코딩 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 데이터 디코딩 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 교정 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 보상 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 기록 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 판독 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 모듈은 기능 엔진을 포함하며, 상기 기능 엔진은 상기 파라미터를 수신하도록 구성된 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 데이터 패킷 길이를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 명령 큐잉(command queuing)을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 소거 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 블록 추상화 기능(block abstraction function)을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 데이터 경로 배열 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 다수의 패리티 비트(parity bit)를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 전력 관리 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 모니터링 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 데이터 리프레시 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 파티션 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 섹션 할당을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 제어기 파라미터와 모듈 파라미터를 포함하는 것인 메모리 시스템.
- 청구항 30에 있어서, 상기 관리 기능은 상기 제어기 파라미터에 우선권을 제공하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 상기 모듈 파라미터에 우선권을 제공하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 상기 제어기가 상기 관리 기능에 대해 가지는 제어의 양을 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 초기화 파라미터인 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 동작 파라미터인 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 섹션 사이즈, 섹션 할당 순서, 및 블록 할당 순서 중 적어도 하나를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 수치 기준을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 데이터 흐름 관리를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 인터리빙(interleaving)이 인코딩 전에 수행될지 또는 후에 수행될지 여부를 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 상기 모듈의 인코더의 구성을 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 상기 모듈의 디코더의 구성을 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 상기 메모리 디바이스의 유형을 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 상기 메모리 디바이스의 적어도 일부의 사용 모드를 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 특정 에러 정정 코드를 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 에러 용량 설정을 나타내는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 메모리 디바이스는 복수의 메모리 디바이스를 포함하고, 상기 파라미터는 상기 메모리 디바이스의 물리적 배열과 연관된 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 상기 모듈의 하드웨어 기능인 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 상기 모듈의 소프트웨어 기능인 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 SNR과 관련된 데이터와 연관된 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 데이터 버퍼 기능인 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 시퀀싱 기능(sequencing function)인 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 관리 기능은 적어도 상기 파라미터에 기초하여 구성된 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 기능은 데이터 경로 방향 스위칭 기능을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 사용 통계를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 메모리 구성을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 마모 레벨링 구성을 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 상기 블록의 재할당을 요구하는 블록 내 폐기 페이지(obsolete page)의 수를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 파라미터는 메모리 능력 데이터를 포함하는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 모듈은 복수의 미디어 포트(media port)를 포함하고, 각 미디어 포트는 판독/기록 동작에서 적어도 하나의 메모리 디바이스에 액세스하도록 구성되고, 상기 모듈은 제2 메모리 디바이스를 가지는 제2 미디어 포트에 제2 기록 동작과 동시에 제1 메모리 디바이스를 가지는 제1 미디어 포트에 제1 기록 동작을 지원하도록 구성된 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 모듈은 복수의 미디어 포트를 포함하고, 각 미디어 포트는 판독/기록 동작에서 적어도 하나의 메모리 디바이스에 액세스하도록 구성되고, 상기 모듈은 제2 메모리 디바이스를 가지는 제2 미디어 포트로부터 판독 동작과 동시에 제1 메모리 디바이스를 가지는 제1 미디어 포트에 기록 동작을 지원하도록 구성된 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 모듈은 판독/기록 동작에서 적어도 2개의 메모리 디바이스에 액세스하도록 구성된 적어도 하나의 미디어 포트를 포함하고, 상기 미디어 포트는 제1 메모리 디바이스에 액세스하는 제1 데이터 패킷 세트를 한정하는 제1 판독/기록 동작과, 제2 메모리 디바이스에 액세스하는 제2 데이터 패킷 세트를 한정하고 상기 제2 데이터 패킷 세트와 시분할 다중화된 상기 제1 데이터 패킷 세트를 구비하는 제2 판독/기록 동작을 지원하도록 구성되는 것인 메모리 시스템.
- 청구항 1에 있어서, 상기 모듈은 복수의 미디어 포트를 포함하고, 각 미디어 포트는 판독/기록 동작에서 적어도 하나의 메모리 디바이스에 액세스하도록 구성되고, 상기 모듈은 단일 데이터 유닛을 상이한 미디어 포트와 각각 연관된 적어도 2개의 파티션으로 파티셔닝하는 기록 동작과 판독 동작 중 적어도 선택된 동작을 지원하도록 구성된 것인 메모리 시스템.
- 청구항 62에 있어서, 상기 단일 데이터 유닛은 페이지를 구비하는 블록이고, 상기 블록은 상기 페이지들 사이의 페이지 경계에 기초하여 상기 미디어 포트로 파티셔닝되는 것인 메모리 시스템.
- 메모리 디바이스를 구비하는 모듈로서, 상기 모듈은 적어도 부분적으로 파라미터에 기초하여 상기 모듈에 대하여 관리 기능을 수행하도록 구성되고, 상기 파라미터는 제어기 및/또는 상기 모듈에 의해 제공되는 것인 모듈.
- 상기 호스트 디바이스에 데이터 저장 용량을 제공하기 위해 호스트 디바이스와 디지털 데이터 통신을 하는 메모리 시스템으로서,
비휘발성 메모리 섹션을 구비하는 적어도 하나의 모듈로서, 상기 모듈은 하나 이상의 모듈 입력 파라미터에 기초하여 상기 모듈만의 상기 비휘발성 메모리 섹션에 대해 마모 레벨링 기능, 가비지 수집 기능, 및 비트 밀도 설정 기능 중 적어도 하나를 독립적으로 수행하도록 구성된 것인, 적어도 하나의 모듈; 및
상기 호스트 디바이스와 상기 디지털 데이터 통신을 하도록 구성된 제어기로서, 상기 제어기는 상기 모듈로 및 상기 모듈로부터 흐르는 데이터가 상기 제어기를 통과하도록 상기 모듈과 모듈 디지털 데이터 통신을 하도록 더 구성되고, 적어도 상기 제어기는 상기 모듈에서 상기 마모 레벨링 기능, 상기 가비지 수집 기능, 및 상기 비트 밀도 기능 중 적어도 하나를 독립적으로 실행하는 것을 한정하도록 상기 모듈에 상기 모듈 입력 파라미터를 제공하도록 구성된 것인 제어기를 포함하는 메모리 시스템. - 청구항 65에 있어서, 상기 모듈은 상기 자율적 실행을 수행하도록 전용된 기능 엔진을 포함하는 것인 메모리 시스템.
- 청구항 65에 있어서, 상기 모듈은 상기 하나 이상의 모듈 입력 파라미터의 제1 세트에 기초하여 상기 기능 중 선택된 기능에 대해 적어도 제1 모드에서 동작하도록 구성되고 및 상기 하나 이상의 모듈 입력 파라미터의 제2 세트에 기초하여 상기 기능 중 상기 선택된 기능에 대해 제2 모드에서 동작하도록 구성되고, 상기 모듈 입력 파라미터의 제1 세트는 상기 모듈 입력 파라미터의 제2 세트와 상이한 것인 메모리 시스템.
- 청구항 67에 있어서, 상기 모듈은 상기 모듈 입력 파라미터에 기초하여 상기 비휘발성 메모리 섹션의 제1 부분에 상기 제1 모드를 적용하고 상기 비휘발성 메모리 섹션의 제2 부분에 제2 모드를 적용하도록 구성되고, 상기 제1 부분은 제2 부분과는 상이한 것인 메모리 시스템.
- 청구항 68에 있어서, 상기 비휘발성 메모리 섹션은 복수의 메모리 셀을 포함하고, 상기 모듈은 제1 비트 밀도로 상기 제1 부분의 메모리 셀을 프로그래밍하고, 상기 제1 비트 밀도와는 상이한 제2 비트 밀도로 상기 제2 부분의 메모리 셀을 프로그래밍하도록 구성된 것인 메모리 시스템.
- 청구항 69에 있어서, 상기 모듈은 상기 모듈 입력 파라미터에 기초하여 상기 메모리 셀의 제1 부분에 대해 제1 비트 밀도를 수립하고, 상기 메모리 셀의 제2 부분에 대해 제2 비트 밀도를 수립하도록 구성된 것인 메모리 시스템.
- 청구항 69에 있어서, 상기 모듈에서 상기 메모리 셀의 제1 부분에 대한 제1 비트 밀도와 상기 메모리 셀의 제2 부분에 대한 제2 비트 밀도는 상기 모듈의 비휘발성 메모리 섹션의 적어도 하나의 모니터링된 특성에 기초하여 상기 모듈에 의해 결정되는 것인 메모리 시스템.
- 청구항 71에 있어서, 상기 모니터링된 특성은 상기 모듈의 비휘발성 메모리 섹션에 대한 에러 정정 통계인 것인 메모리 시스템.
- 청구항 67에 있어서, 복수의 상기 모듈을 포함하며, 상기 모듈의 제1 모듈은 제1 비휘발성 메모리 섹션을 포함하고, 상기 제1 모듈은 상기 제1 모듈의 비휘발성 메모리 섹션의 적어도 하나의 부분에 특정 비트 밀도로서 상기 제1 모드를 적용하도록 구성되고, 상기 모듈 중 제2 모듈은 제2 비휘발성 메모리 섹션을 포함하고, 상기 제2 모듈은, 상기 특정 비트 밀도에서 프로그래밍된 상기 제1 모듈의 부분이 상기 특정 비트 밀도에서 프로그래밍된 상기 제2 모듈의 비휘발성 메모리의 다른 부분과는 사이즈가 상이하도록, 상기 제2 모듈의 상기 비휘발성 메모리 섹션의 다른 부분에 특정 비트 밀도로서 상기 제1 모드를 적용하도록 구성되는 것인 메모리 시스템.
- 청구항 65에 있어서, 상기 모듈은 상기 제어기와 상기 디지털 통신을 하기 위해 상기 모듈만의 비휘발성 메모리 섹션에 대해 논리적-물리적 블록 어드레싱 기능을 독립적으로 수행하도록 더 구성된 것인 메모리 시스템.
- 청구항 65에 있어서, 상기 모듈은 상기 제어기로부터의 감독 없이 상기 모듈만의 비휘발성 메모리 섹션에 대해 상기 마모 레벨링 기능, 상기 가비지 수집 기능, 및 상기 비트 밀도 설정 기능 중 적어도 하나를 자율적으로 실행하도록 구성된 기능 엔진을 포함하는 것인 메모리 시스템.
- 청구항 65에 있어서, 복수의 상기 모듈을 포함하며, 각 모듈은 상기 모듈의 비휘발성 메모리 섹션에 대해 별개의 플래시 변환층을 독립적으로 실행하도록 구성된 것인 메모리 시스템.
- 청구항 65에 있어서, 복수의 상기 모듈을 포함하며, 각 모듈은 분배된 플래시 변환층의 모듈 부분을 유지하는 것인 메모리 시스템.
- 청구항 77에 있어서, 각 모듈은 각 모듈이 상기 분배된 플래시 변환 층의 각 모듈 부분을 자율적으로 선택가능하게 실행하도록 제1 모드에서 선택가능하게 동작하도록 구성되고, 각 모듈은 각 모듈이 상기 제어기와 협력하여 상기 분배된 플래시 변환 층의 각 모듈 부분을 선택가능하게 실행하도록 상기 제어기에 의해 적어도 부분적인 제어 하에서 제2 모드에서 선택가능하게 동작하도록 구성된 것인 메모리 시스템.
- 청구항 65에 있어서, 상기 비휘발성 메모리 섹션 상기 모듈은 서로 별개인 복수의 메모리 디바이스로 구성되고 상기 모듈은 각 메모리 디바이스에 저장 밀도를 할당하도록 구성되되 상기 메모리 디바이스의 하나의 그룹이 높은 저장 밀도에서 데이터를 저장하도록 구성되고 상기 메모리 디바이스의 다른 그룹은 낮은 저장 밀도에서 데이터를 저장하도록 구성되며 여기서 상기 높은 저장 밀도는 상기 낮은 저장 밀도보다 더 큰 것인 메모리 시스템.
- 청구항 79에 있어서, 각 메모리 디바이스는 복수의 메모리 셀로 구성되고, 상기 높은 저장 밀도는 셀당 2비트를 초과하는 반면, 상기 낮은 저장 밀도는 셀당 2비트를 초과하지 않는 것인 메모리 시스템.
- 청구항 65에 있어서, 상기 모듈은 사용 통계가 상기 기능 엔진과 상기 제어기 중 적어도 하나에 이용가능하도록 상기 주어진 모듈의 비휘발성 메모리와 관련된 하나 이상의 사용 통계를 보고하는 보고 섹션(reporting section)을 구비하는 기능 엔진을 더 포함하는 것인 메모리 시스템.
- 청구항 81에 있어서, 재판독값(read-back value)은 상기 제어기에 의해 실행된 판독 동작에 응답하여 상기 보고 섹션에 의해 생성되고, 상기 사용 통계는 판독 동안 적어도 판독값 세트에 대한 평균 재판독값과, 상기 판독 동작 동안 적어도 상기 판독값 세트에 대한 재판독값과 하나 이상의 에러 정정 통계에 대한 표준 편차 중 적어도 하나를 포함하는 것인 메모리 시스템.
- 청구항 82에 있어서, 상기 에러 정정 통계는 상기 판독 동작이 블록 에러 정정 코드를 디코드하는 누적 에러 카운트와 블록당 에러 카운트 중 적어도 하나를 포함하는 것인 메모리 시스템.
- 청구항 82에 있어서, 상기 보고 섹션은 상기 사용 통계에 기초하여 상기 비휘발성 메모리와 관련된 건전성 지표(health indication)를 제공하도록 구성된 것인 메모리 시스템.
- 청구항 84에 있어서, 상기 주어진 모듈은 현재 메모리 저장 밀도 패턴으로 상기 비휘발성 메모리 섹션을 프로그래밍하고, 상기 현재 메모리 저장 밀도 패턴을 수정된 메모리 저장 밀도 패턴으로 변화시켜 상기 건전성 지표에 응답하도록 구성되되, 상기 비휘발성 메모리 섹션의 적어도 일 부분은 상기 현재 메모리 저장 밀도 패턴의 상기 부분에 대한 현재 비트 밀도보다 더 낮은 상기 수정된 메모리 저장 밀도 패턴으로 수정된 비트 밀도에서 프로그래밍되도록 구성되는 것인 메모리 시스템.
- 청구항 84에 있어서, 상기 주어진 모듈의 상기 보고 섹션은 상기 모듈의 예상된 수명으로 상기 건전성 지표를 제공하도록 구성되는 것인 메모리 시스템.
- 호스트 디바이스에 데이터 저장 용량을 제공하도록 상기 호스트 디바이스와 디지털 데이터 통신을 하기 위한 메모리 시스템의 일부분으로서, 상기 메모리 시스템은 상기 디지털 데이터 통신을 제공하도록 상기 호스트 디바이스와 직접 인터페이싱하는 제어기, 및 상기 호스트 디바이스와 디지털 데이터 통신의 일부로서 상기 제어기와 상기 모듈 사이에 모듈 디지털 통신을 하기 위해 상기 제어기와 인터페이싱하는 복수의 모듈을 포함하며, 상기 모듈 중 적어도 하나는,
비휘발성 메모리 섹션(nonvolatile memory section); 및
마모 레벨링 기능, 가비지 수집 기능, 및 비트 밀도 기능 중 적어도 하나를 한정하도록 상기 제어기로부터 복수의 모듈 입력 파라미터를 수신하고, 상기 모듈 입력 파라미터에 기초하여 상기 모듈만의 비휘발성 메모리 섹션에 대해 상기 마모 레벨링 기능, 상기 가비지 수집 기능, 및 상기 비트 밀도 설정 기능 중 적어도 하나의 실행을 독립적으로 수행하기 위한 배열(arrangement)을 포함하는 것인 메모리 시스템. - 방법으로서,
메모리 디바이스를 가지는 모듈에서 파라미터를 수신하는 단계; 및
상기 모듈에서 상기 모듈에 대하여 상기 파라미터에 적어도 부분적으로 기초하여 관리 기능을 수행하는 단계를 포함하는 것인 방법. - 호스트 디바이스에 데이터 저장 용량을 제공하도록 상기 호스트 디바이스와 디지털 데이터 통신을 하기 위한 메모리 시스템 내 방법으로서,
비휘발성 메모리 섹션을 포함하는 적어도 하나의 모듈을 제공하고, 하나 이상의 모듈 입력 파라미터에 기초하여 상기 모듈만의 비휘발성 메모리 섹션에 대해 마모 레벨링 기능, 가비지 수집 기능, 및 비트 밀도 설정 기능 중 적어도 하나를 독립적으로 수행하도록 상기 모듈을 구성하는 단계; 및
상기 호스트 디바이스와 상기 디지털 데이터 통신을 하며 상기 모듈로 및 상기 모듈로부터 흐르는 데이터가 상기 제어기를 통과하도록 상기 모듈과 모듈 디지털 데이터 통신을 하도록 제어기를 배열하고, 상기 모듈 입력 파라미터를 상기 모듈에 제공하여 상기 모듈에서 상기 마모 레벨링 기능, 상기 가비지 수집 기능, 및 상기 비트 밀도 기능 중 적어도 하나의 독립적인 실행을 한정하도록 적어도 상기 제어기를 구성하는 단계를 포함하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/019,977 | 2011-02-02 | ||
US13/019,977 US8595415B2 (en) | 2011-02-02 | 2011-02-02 | At least semi-autonomous modules in a memory system and methods |
PCT/US2012/021093 WO2012106085A2 (en) | 2011-02-02 | 2012-01-12 | At least semi-autonomous modules in a memory system and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130121165A true KR20130121165A (ko) | 2013-11-05 |
KR101577512B1 KR101577512B1 (ko) | 2015-12-14 |
Family
ID=46578360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137022158A KR101577512B1 (ko) | 2011-02-02 | 2012-01-12 | 메모리 시스템 내 적어도 반 자율적인 모듈 및 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8595415B2 (ko) |
EP (1) | EP2671159B1 (ko) |
JP (2) | JP5756187B2 (ko) |
KR (1) | KR101577512B1 (ko) |
CN (1) | CN103339617B (ko) |
TW (1) | TWI588651B (ko) |
WO (1) | WO2012106085A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190062161A (ko) * | 2017-11-28 | 2019-06-05 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 기회적 기록들을 갖는 단일 포트 메모리 |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189385B2 (en) * | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
US8615703B2 (en) * | 2010-06-04 | 2013-12-24 | Micron Technology, Inc. | Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory |
US11336303B2 (en) | 2010-06-04 | 2022-05-17 | Micron Technology, Inc. | Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory |
EP2646922A4 (en) | 2010-12-01 | 2015-11-25 | Lsi Corp | DYNAMIC MANAGEMENT OF HIGHER LEVEL REDUNDANCY MODE WITH INDEPENDENT SILICON ELEMENTS |
WO2012099937A2 (en) | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
KR101861247B1 (ko) * | 2011-04-06 | 2018-05-28 | 삼성전자주식회사 | 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템 |
US8868854B2 (en) * | 2011-12-15 | 2014-10-21 | Lsi Corporation | Systems and methods for handling out of order reporting in a storage device |
US20130246686A1 (en) * | 2012-03-19 | 2013-09-19 | Hitachi, Ltd. | Storage system comprising nonvolatile semiconductor storage device, and storage control method |
US20140052899A1 (en) * | 2012-08-18 | 2014-02-20 | Yen Chih Nan | Memory address translation method for flash storage system |
US8910005B2 (en) | 2012-12-03 | 2014-12-09 | Lsi Corporation | Systems and methods for selective retry data retention processing |
US9190104B2 (en) | 2012-12-13 | 2015-11-17 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for data retry using averaging process |
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
KR102050729B1 (ko) * | 2013-02-12 | 2019-12-02 | 삼성전자 주식회사 | 메모리 시스템 |
US8949696B2 (en) | 2013-02-19 | 2015-02-03 | Lsi Corporation | Systems and methods for trapping set disruption |
WO2015070110A2 (en) * | 2013-11-07 | 2015-05-14 | Netlist, Inc. | Hybrid memory module and system and method of operating the same |
US9612973B2 (en) | 2013-11-09 | 2017-04-04 | Microsoft Technology Licensing, Llc | Using shared virtual memory resources for performing memory-mapping |
US9323625B2 (en) | 2013-11-12 | 2016-04-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for lost synchronization data set reprocessing |
US9385758B2 (en) | 2014-01-02 | 2016-07-05 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for efficient targeted symbol flipping |
US9645741B2 (en) * | 2014-02-05 | 2017-05-09 | Sandisk Technologies Llc | Storage module and host device for storage module defragmentation |
US9690489B2 (en) * | 2014-03-08 | 2017-06-27 | Storart Technology Co. Ltd. | Method for improving access performance of a non-volatile storage device |
US9454551B2 (en) * | 2014-03-13 | 2016-09-27 | NXGN Data, Inc. | System and method for management of garbage collection operation in a solid state drive |
US9710173B2 (en) | 2014-05-20 | 2017-07-18 | Micron Technology, Inc. | Read cache memory with DRAM class promotion |
US9652415B2 (en) | 2014-07-09 | 2017-05-16 | Sandisk Technologies Llc | Atomic non-volatile memory data transfer |
US9904621B2 (en) * | 2014-07-15 | 2018-02-27 | Sandisk Technologies Llc | Methods and systems for flash buffer sizing |
US9645744B2 (en) | 2014-07-22 | 2017-05-09 | Sandisk Technologies Llc | Suspending and resuming non-volatile memory operations |
US10552043B2 (en) * | 2014-09-09 | 2020-02-04 | Toshiba Memory Corporation | Memory system |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9582201B2 (en) | 2014-09-26 | 2017-02-28 | Western Digital Technologies, Inc. | Multi-tier scheme for logical storage management |
US9952978B2 (en) | 2014-10-27 | 2018-04-24 | Sandisk Technologies, Llc | Method for improving mixed random performance in low queue depth workloads |
US9753649B2 (en) | 2014-10-27 | 2017-09-05 | Sandisk Technologies Llc | Tracking intermix of writes and un-map commands across power cycles |
US11334478B2 (en) * | 2014-10-30 | 2022-05-17 | Kioxia Corporation | Memory system and nonvolatile memory medium in which program is stored to optimize operating life |
US9817752B2 (en) | 2014-11-21 | 2017-11-14 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US9824007B2 (en) | 2014-11-21 | 2017-11-21 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US9647697B2 (en) | 2015-03-16 | 2017-05-09 | Sandisk Technologies Llc | Method and system for determining soft information offsets |
US9652175B2 (en) | 2015-04-09 | 2017-05-16 | Sandisk Technologies Llc | Locally generating and storing RAID stripe parity with single relative memory address for storing data segments and parity in multiple non-volatile memory portions |
US10372529B2 (en) | 2015-04-20 | 2019-08-06 | Sandisk Technologies Llc | Iterative soft information correction and decoding |
US9778878B2 (en) | 2015-04-22 | 2017-10-03 | Sandisk Technologies Llc | Method and system for limiting write command execution |
US9870149B2 (en) | 2015-07-08 | 2018-01-16 | Sandisk Technologies Llc | Scheduling operations in non-volatile memory devices using preference values |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
US9715939B2 (en) | 2015-08-10 | 2017-07-25 | Sandisk Technologies Llc | Low read data storage management |
JP6377584B2 (ja) * | 2015-09-02 | 2018-08-22 | 株式会社三共 | 遊技機 |
JP6700088B2 (ja) * | 2015-09-24 | 2020-05-27 | 株式会社三共 | 遊技機 |
US9952788B2 (en) * | 2015-09-29 | 2018-04-24 | Cnex Labs, Inc. | Method and apparatus for providing a shared nonvolatile memory system using a distributed FTL scheme |
US10228990B2 (en) | 2015-11-12 | 2019-03-12 | Sandisk Technologies Llc | Variable-term error metrics adjustment |
US10126970B2 (en) | 2015-12-11 | 2018-11-13 | Sandisk Technologies Llc | Paired metablocks in non-volatile storage device |
US9990311B2 (en) * | 2015-12-28 | 2018-06-05 | Andes Technology Corporation | Peripheral interface circuit |
US9837146B2 (en) | 2016-01-08 | 2017-12-05 | Sandisk Technologies Llc | Memory system temperature management |
US10210121B2 (en) * | 2016-01-27 | 2019-02-19 | Quanta Computer Inc. | System for switching between a single node PCIe mode and a multi-node PCIe mode |
KR102529171B1 (ko) | 2016-02-26 | 2023-05-04 | 삼성전자주식회사 | 메모리 장치 진단 시스템 |
US10732856B2 (en) | 2016-03-03 | 2020-08-04 | Sandisk Technologies Llc | Erase health metric to rank memory portions |
US9934151B2 (en) | 2016-06-28 | 2018-04-03 | Dell Products, Lp | System and method for dynamic optimization for burst and sustained performance in solid state drives |
US10481830B2 (en) | 2016-07-25 | 2019-11-19 | Sandisk Technologies Llc | Selectively throttling host reads for read disturbs in non-volatile memory system |
US10971241B2 (en) | 2017-01-30 | 2021-04-06 | Toshiba Memory Corporation | Performance based method and system for patrolling read disturb errors in a memory unit |
US11003381B2 (en) * | 2017-03-07 | 2021-05-11 | Samsung Electronics Co., Ltd. | Non-volatile memory storage device capable of self-reporting performance capabilities |
US11294594B2 (en) * | 2017-08-07 | 2022-04-05 | Kioxia Corporation | SSD architecture supporting low latency operation |
US10509722B2 (en) * | 2017-08-31 | 2019-12-17 | Micron Technology, Inc. | Memory device with dynamic cache management |
KR102370278B1 (ko) * | 2017-11-30 | 2022-03-07 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법 |
CN108037725B (zh) * | 2017-12-08 | 2019-09-03 | 中冶南方工程技术有限公司 | 一种读写plc数据的方法和装置 |
KR20190075353A (ko) * | 2017-12-21 | 2019-07-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10564868B2 (en) * | 2018-01-24 | 2020-02-18 | Western Digital Technologies, Inc. | Method and apparatus for selecting power states in storage devices |
TWI670598B (zh) * | 2018-05-14 | 2019-09-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 |
US10747613B2 (en) | 2018-09-07 | 2020-08-18 | Toshiba Memory Corporation | Pooled frontline ECC decoders in memory systems |
CN110119132B (zh) * | 2019-04-09 | 2023-01-24 | 吴怡文 | 一种控制器实现功能设定多样化的方法和系统 |
US11366976B2 (en) * | 2019-05-09 | 2022-06-21 | Micron Technology, Inc. | Updating manufactured product life cycle data in a database based on scanning of encoded images |
JP7214758B2 (ja) | 2019-11-15 | 2023-01-30 | キオクシア株式会社 | ストレージデバイスおよびストレージシステム |
US11487544B2 (en) | 2020-01-15 | 2022-11-01 | Western Digital Technologies, Inc. | Method and device for simultaneously decoding data in parallel to improve quality of service |
US12009034B2 (en) * | 2020-03-02 | 2024-06-11 | Micron Technology, Inc. | Classification of error rate of data retrieved from memory cells |
US11740970B2 (en) | 2020-03-02 | 2023-08-29 | Micron Technology, Inc. | Dynamic adjustment of data integrity operations of a memory system based on error rate classification |
US11221800B2 (en) | 2020-03-02 | 2022-01-11 | Micron Technology, Inc. | Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells |
US11086572B1 (en) | 2020-03-02 | 2021-08-10 | Micron Technology, Inc. | Self adapting iterative read calibration to retrieve data from memory cells |
US11029890B1 (en) | 2020-03-02 | 2021-06-08 | Micron Technology, Inc. | Compound feature generation in classification of error rate of data retrieved from memory cells |
US11257546B2 (en) | 2020-05-07 | 2022-02-22 | Micron Technology, Inc. | Reading of soft bits and hard bits from memory cells |
US11562793B2 (en) | 2020-05-07 | 2023-01-24 | Micron Technology, Inc. | Read soft bits through boosted modulation following reading hard bits |
US11081200B1 (en) | 2020-05-07 | 2021-08-03 | Micron Technology, Inc. | Intelligent proactive responses to operations to read data from memory cells |
US11693798B2 (en) | 2020-07-10 | 2023-07-04 | Samsung Electronics Co., Ltd. | Layered ready status reporting structure |
US11567831B2 (en) | 2020-07-28 | 2023-01-31 | Micron Technology, Inc. | Generating a protected and balanced codeword |
US11237906B1 (en) | 2020-07-28 | 2022-02-01 | Micron Technology, Inc. | Generating a balanced codeword protected by an error correction code |
US11494264B2 (en) | 2020-07-28 | 2022-11-08 | Micron Technology, Inc. | Generating a protected and balanced codeword |
US11556272B2 (en) * | 2020-09-18 | 2023-01-17 | Kioxia Corporation | System and method for NAND multi-plane and multi-die status signaling |
US11947806B2 (en) | 2020-11-03 | 2024-04-02 | Micron Technology, Inc. | Life expectancy monitoring for memory devices |
US11507296B2 (en) | 2021-03-10 | 2022-11-22 | Micron Technology, Inc. | Repair operation techniques |
US11622135B2 (en) * | 2021-06-23 | 2023-04-04 | Synamedia Limited | Bandwidth allocation for low latency content and buffered content |
US11907080B1 (en) | 2022-10-20 | 2024-02-20 | Dell Products L.P. | Background-operation-based autonomous compute storage device system |
US11983409B1 (en) | 2022-10-20 | 2024-05-14 | Dell Products L.P. | Host-read-based autonomous compute storage device system |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0950398A (ja) * | 1995-08-10 | 1997-02-18 | Fuji Xerox Co Ltd | 記憶装置 |
US7007130B1 (en) * | 1998-02-13 | 2006-02-28 | Intel Corporation | Memory system including a memory module having a memory module controller interfacing between a system memory controller and memory devices of the memory module |
DE69836437T2 (de) * | 1997-12-05 | 2007-09-27 | Intel Corporation, Santa Clara | Speichersystem mit speichermodul mit einem speichermodul-steuerbaustein |
US7024518B2 (en) * | 1998-02-13 | 2006-04-04 | Intel Corporation | Dual-port buffer-to-memory interface |
US6968419B1 (en) * | 1998-02-13 | 2005-11-22 | Intel Corporation | Memory module having a memory module controller controlling memory transactions for a plurality of memory devices |
US6970968B1 (en) * | 1998-02-13 | 2005-11-29 | Intel Corporation | Memory module controller for providing an interface between a system memory controller and a plurality of memory devices on a memory module |
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US6684289B1 (en) * | 2000-11-22 | 2004-01-27 | Sandisk Corporation | Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory |
US20050138267A1 (en) * | 2003-12-23 | 2005-06-23 | Bains Kuljit S. | Integral memory buffer and serial presence detect capability for fully-buffered memory modules |
US7328309B2 (en) | 2004-10-14 | 2008-02-05 | International Business Machines Corporation | On-demand cache memory for storage subsystems |
US7421598B2 (en) | 2005-02-09 | 2008-09-02 | International Business Machines Corporation | Dynamic power management via DIMM read operation limiter |
US7193898B2 (en) * | 2005-06-20 | 2007-03-20 | Sandisk Corporation | Compensation currents in non-volatile memory read operations |
TWI303828B (en) * | 2006-03-03 | 2008-12-01 | Winbond Electronics Corp | A method and a system for erasing a nonvolatile memory |
JP2008117195A (ja) * | 2006-11-06 | 2008-05-22 | Hitachi Ltd | 半導体記憶装置 |
CN101681282A (zh) * | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US7694099B2 (en) * | 2007-01-16 | 2010-04-06 | Advanced Risc Mach Ltd | Memory controller having an interface for providing a connection to a plurality of memory devices |
KR100823171B1 (ko) | 2007-02-01 | 2008-04-18 | 삼성전자주식회사 | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 |
US20090063895A1 (en) * | 2007-09-04 | 2009-03-05 | Kurt Smith | Scaleable and maintainable solid state drive |
TWI376603B (en) * | 2007-09-21 | 2012-11-11 | Phison Electronics Corp | Solid state disk storage system with a parallel accessing architecture and a solid state disk controller |
US8131912B2 (en) * | 2007-09-27 | 2012-03-06 | Kabushiki Kaisha Toshiba | Memory system |
US20100017650A1 (en) * | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
US8412880B2 (en) | 2009-01-08 | 2013-04-02 | Micron Technology, Inc. | Memory system controller to manage wear leveling across a plurality of storage nodes |
US8250282B2 (en) * | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US9123409B2 (en) * | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
WO2011010344A1 (ja) * | 2009-07-22 | 2011-01-27 | 株式会社日立製作所 | 複数のフラッシュパッケージを有するストレージシステム |
US8364929B2 (en) * | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
-
2011
- 2011-02-02 US US13/019,977 patent/US8595415B2/en active Active
-
2012
- 2012-01-12 CN CN201280007135.XA patent/CN103339617B/zh active Active
- 2012-01-12 WO PCT/US2012/021093 patent/WO2012106085A2/en active Application Filing
- 2012-01-12 KR KR1020137022158A patent/KR101577512B1/ko active IP Right Grant
- 2012-01-12 JP JP2013552536A patent/JP5756187B2/ja not_active Expired - Fee Related
- 2012-01-12 EP EP12742206.1A patent/EP2671159B1/en active Active
- 2012-02-02 TW TW101103423A patent/TWI588651B/zh not_active IP Right Cessation
-
2015
- 2015-05-28 JP JP2015108226A patent/JP6063995B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190062161A (ko) * | 2017-11-28 | 2019-06-05 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 기회적 기록들을 갖는 단일 포트 메모리 |
Also Published As
Publication number | Publication date |
---|---|
TWI588651B (zh) | 2017-06-21 |
JP2015172965A (ja) | 2015-10-01 |
EP2671159B1 (en) | 2019-08-28 |
WO2012106085A2 (en) | 2012-08-09 |
JP2014507724A (ja) | 2014-03-27 |
CN103339617B (zh) | 2017-06-23 |
EP2671159A4 (en) | 2014-07-30 |
CN103339617A (zh) | 2013-10-02 |
TW201237623A (en) | 2012-09-16 |
EP2671159A2 (en) | 2013-12-11 |
KR101577512B1 (ko) | 2015-12-14 |
JP5756187B2 (ja) | 2015-07-29 |
US20120198129A1 (en) | 2012-08-02 |
WO2012106085A3 (en) | 2012-10-11 |
JP6063995B2 (ja) | 2017-01-18 |
US8595415B2 (en) | 2013-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101518657B1 (ko) | 블록 배향 비휘발성 메모리에 액세스하는 제어 장치 및 방법 | |
KR101577512B1 (ko) | 메모리 시스템 내 적어도 반 자율적인 모듈 및 방법 | |
US9298534B2 (en) | Memory system and constructing method of logical block | |
CN110245093B (zh) | 固态存储驱动器阵列中的工作负荷自适应超额配置 | |
US10802733B2 (en) | Methods and apparatus for configuring storage tiers within SSDs | |
US10552085B1 (en) | Techniques for directed data migration | |
US8924636B2 (en) | Management information generating method, logical block constructing method, and semiconductor memory device | |
CN106708423B (zh) | 多模存储管理系统 | |
US9092336B2 (en) | Write admittance policy for a memory cache | |
CN110658990A (zh) | 具有改善的准备时间的数据存储系统 | |
US11899952B2 (en) | Lossless namespace metadata management system | |
US20100250826A1 (en) | Memory systems with a plurality of structures and methods for operating the same | |
CN113924546A (zh) | 非易失性存储器中的磨损感知块模式转换 | |
TWI571882B (zh) | 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN118092807A (zh) | 缓存空间调配方法及存储器存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
REEX | Re-examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181123 Year of fee payment: 4 |