KR101467941B1 - 비휘발성 저장부에 대한 가변 오버프로비저닝 - Google Patents
비휘발성 저장부에 대한 가변 오버프로비저닝 Download PDFInfo
- Publication number
- KR101467941B1 KR101467941B1 KR1020137031072A KR20137031072A KR101467941B1 KR 101467941 B1 KR101467941 B1 KR 101467941B1 KR 1020137031072 A KR1020137031072 A KR 1020137031072A KR 20137031072 A KR20137031072 A KR 20137031072A KR 101467941 B1 KR101467941 B1 KR 101467941B1
- Authority
- KR
- South Korea
- Prior art keywords
- host
- allocation
- data
- ssd
- host 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
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- 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/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
동적으로 변하는 오버프로비저닝(OP)은 고체 상태 디스크(SSD) 및/또는 그 안의 플래시 메모리의 수명, 신뢰도, 및/또는 성능의 개선들을 가능하게 한다. SSD에 커플링된 호스트는 더 새로운 데이터를 SSD에 기록한다. 더 새로운 호스트 데이터가 더 오래된 호스트 데이터보다 덜 랜덤하면, 이후 SSD상의 호스트 데이터의 엔트로피가 감소한다. 이에 응답하여, SSD의 SSD 제어기는 플래시 메모리의 할당을 동적으로 변경하여, 호스트 할당을 감소시키고 OP 할당을 증가시킨다. 더 새로운 호스트 데이터가 더 랜덤하면, 이후 SSD 제어기는 호스트 할당을 동적으로 증가시키고 OP 할당을 감소시킨다. SSD 제어기는 플래시 메모리에 대한 호스트 및 시스템 데이터 기록들의 대역폭들의 비율에 비례하게 따라 호스트 OP와 시스템 OP 사이에 OP 할당을 할당한다.
Description
관련 출원들에 대한 상호 참조
본 출원에 대한 우선권 이익 주장들은 (만약 있다면, 적절하게) 첨부하는 출원 데이터 시트, 요청서, 또는 송달물에서 이루어진다. 인스턴트 출원(instant application)의 타입에 의해 허용된 범위까지, 본 출원은 모두가 본 발명이 이루어질 때 인스턴트 출원과 일반적으로 소유되는 아래의 출원들을 모두 참조용으로 통합한다:
2011년 4월 26일 출원되고, 제 1 발명자 이름이 Andrew John Tmlin이며, Variable OverProvisioning for Nonvolatile Storage이란 명칭의 미국 가출원 (대리인 사건 번호 SF1104 및 출원 번호 61/479,249).
분야: 비휘발성 저장 기술(technology)에서의 진보들은 사용의 성능, 효율성 및 유용성에서의 개선들을 제공하기 위해 요구된다.
종래 기술: 공개적으로 또는 널리 공지된 바와 같이 명백하게 식별되지 않는 한, 컨텍스트, 정의들, 또는 비교 목적을 위해 포함하는 기법들 및 개념들의 여기에서의 언급은 이러한 기법들 및 개념들이 이전에 공개적으로 알려지거나 그렇지 않으면 종래 기술의 일부라는 것을 허용하는 것으로서 해석되어서는 안 된다.
개요
본 발명은 예를 들어, 프로세스, 제조물, 장치, 시스템, 물질의 구성물, 및 컴퓨터 판독가능 저장 매체(예를 들어, 디스크와 같은 광 및/또는 자기 대량 저장 디바이스, 또는 플래시 저장부와 같은 비휘발성 저장부를 갖는 집적 회로에서의 매체들), 또는 프로그램 명령어들이 광 또는 전자 통신 링크들을 통해 전송되는 컴퓨터 네트워크와 같은 컴퓨터 판독가능 매체를 포함하는 다수의 방식들로 구현될 수도 있다. 본 명세서에서, 이들 구현들, 또는 본 발명이 택할 수도 있는 임의의 다른 형태가 기법들로서 불릴 수도 있다. 상세한 설명은 상기 식별된 분야에서의 사용의 성능, 효율성, 및 유용성에서의 개선들을 가능하게 하는(enable) 본 발명의 하나 또는 그 초과의 실시예들의 설명을 제공한다. 상세한 설명은 나머지 상세한 설명의 더 빠른 이해를 용이하게 하기 위한 도입부를 포함한다. 도입부는 여기에 설명한 개념들에 따른 시스템들, 방법들, 제조물들, 및 컴퓨터 판독가능한 매체들 중 하나 또는 그 초과의 예시적인 실시예들을 포함한다. 결론에서 더 상세히 논의하는 바와 같이, 본 발명은 등록 청구항들의 범위내의 모든 가능한 변경물(modification)들 및 변동물(variation)들을 포함한다.
.
.
.
도 1a는 비휘발성 메모리(NVM) 소자들(예를 들어, 플래시 메모리들)을 통해 구현되는 것과 같은 비휘발성 저장부를 관리하기 위해 가변 오버프로비저닝(OP: OverProvisioning)을 사용하는 고체 상태 디스크(SSD) 제어기를 포함하는 SSD의 실시예의 선택된 상세들을 예시한다.
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세들을 예시한다.
도 2는 NVM들을 관리하기 위해 가변 OP를 사용하는 시스템의 다양한 실시예들에 따른, OP 사용용을 포함하는 플래시 메모리의 호스트 및 시스템 할당들의 선택된 상세들을 예시한다.
도 3a 및 도 3b는 동적으로 변하는 데이터 엔트로피와 관련하여 동적으로 변하는 호스트 및 시스템 OP들의 다양한 실시예들의 선택된 상세들을 예시한다.
도 4는 NVM들을 관리하기 위한 가변 OP의 컨텍스트에서의 OP 자원들의 (재)할당의 실시예의 흐름도를 예시한다.
도 5는 플래시 메모리의 관리 유닛의 라이프 사이클의 실시예의 흐름도를 예시한다.
도면들에서 참조 부호들의 리스트
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세들을 예시한다.
도 2는 NVM들을 관리하기 위해 가변 OP를 사용하는 시스템의 다양한 실시예들에 따른, OP 사용용을 포함하는 플래시 메모리의 호스트 및 시스템 할당들의 선택된 상세들을 예시한다.
도 3a 및 도 3b는 동적으로 변하는 데이터 엔트로피와 관련하여 동적으로 변하는 호스트 및 시스템 OP들의 다양한 실시예들의 선택된 상세들을 예시한다.
도 4는 NVM들을 관리하기 위한 가변 OP의 컨텍스트에서의 OP 자원들의 (재)할당의 실시예의 흐름도를 예시한다.
도 5는 플래시 메모리의 관리 유닛의 라이프 사이클의 실시예의 흐름도를 예시한다.
도면들에서 참조 부호들의 리스트
본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명이 본 발명의 선택된 상세들을 예시하는 첨부한 도면들과 함께 아래에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 여기에서의 실시예들은 단지 예시적인 것으로 이해되고, 본 발명은 여기에서의 실시예들 중 임의의 또는 모든 실시예들에 명백하게 제한되지 않거나 임의의 또는 모든 실시예들에 의해 제한되지 않으며, 본 발명은 다수의 대안물(alternative)들, 변경물들, 및 등가물(equivalent)들을 포함한다. 설명의 단조로움을 회피하기 위해, (제 1, 최종, 특정한, 다양한, 추가의, 다른, 특히, 선택, 일부, 및 현저한을 포함하지만 이에 제한되지 않는) 다양한 단어 라벨(word label)들이 실시예들의 개별 세트들에 적용될 수도 있고, 여기에서 사용되는 바와 같이, 이러한 라벨들은 품질, 또는 임의의 형태의 우선순위 또는 편견을 전달하는 것으로 명백하게 의미되지 않고, 단지 개별 세트들 사이를 편리하게 구별하는 것으로 의미된다. 개시된 프로세스들의 일부 동작(operation)들의 순서는 본 발명의 범위내에서 변경(alter)가능하다. 다중의 실시예들이 프로세스, 방법 및/또는 프로그램 명령 특징들에서 변동(variation)들을 설명하는 역할을 하여도, 다른 실시예들은 사전결정되거나 동적으로 결정된 기준에 따라 복수의 다중의 실시예들에 각각 대응하는 동작의 복수의 모드들 중 하나의 정적 및/또는 동적 선택을 수행한다는 것이 예상된다. 다수의 특정한 상세들은 본 발명의 완전한 이해를 제공하기 위해 아래의 설명에 설명된다. 상세들은 예시를 위해 제공되고 본 발명은 상세들 중 일부 또는 모두 없이 청구항들에 따라 실시될 수도 있다. 명확화를 위해, 본 발명에 관련된 기술 분야에 공지된 기술적 자료는 본 발명을 불필요하게 모호하게 하지 않기 위해 상세히 설명하지 않는다.
도입
이 도입부는 오직 상세한 설명의 더 빠른 이해를 용이하게 하기 위해 포함되고, 임의의 도입부의 단락들이 반드시 전체 주제의 축약된 관점이고 배타적이거나 제한적인 설명인 것으로 의미되지 않기 때문에 본 발명은 (만약 있다면, 명시적인 예들을 포함하는) 도입부에 제공되는 개념들에 제한되지 않는다. 예를 들어, 다음의 도입부는 오직 특정한 실시예들에 대해 공간 및 구성에 의해 제한된 개요 정보를 제공한다. 청구항들이 명세서의 나머지 전반적으로 궁극적으로 도시되고 논의되는 것들을 포함하는, 많은 다른 실시예들이 있다.
약어들
여기에 정의된 다양한 축약된 두문자어들(예를 들어, 약어들)의 적어도 일부가 여기에 사용된 특정한 소자들을 지칭한다.
개념적으로, SSD 데이터의 비휘발성 저장을 위해 사용되는 것과 같은 NVM에 대한 가변 OP를 제공하는 SSD 제어기는 다양한 환경들에서, 더 긴 수명, 강화된 신뢰성, 및/또는 개선된 성능을 가능하게 한다. 개념적으로, NVM는 호스트 데이터 저장, 시스템 데이터 저장, 및 OP 사용 사이에 동적으로 할당되고, OP 사용 할당은 호스트 데이터 OP와 시스템 데이터 OP 사이에 동적으로 할당된다. 할당들은 다양한 동작 특징들 및/또는 SSD, SSD 제어기, 및/또는 NVM의 컨텍스트들에 기초하여 동적으로 가변이다.
SSD에 커플링된 호스트는 더 새로운 데이터를 SSD에 기록한다. 더 새로운 호스트 데이터가 더 오래된 호스트 데이터보다 덜 랜덤하면(따라서, 더 효율적으로 압축가능하면), 이후 호스트 데이터의 엔트로피가 감소한다. 이에 따라, SSD의 SSD 제어기는 NVM(예를 들어, 플래시 메모리)의 할당들을 동적으로 변경하여, 호스트 할당을 감소시키면서 OP 할당을 증가시키고, NVM에 대한 시스템 및 호스트 데이터 기록들의 대역폭들의 비율에 비례하게 따라 시스템 OP와 호스트 OP 사이에 OP 할당을 동적으로 할당한다. 더 새로운 호스트 데이터가 더 랜덤하면(따라서, 덜 효율적으로 압축가능하면), 이후 호스트 할당은 증가되고, OP 할당은 감소되며, 비율에 따라 시스템과 호스트 OP들 사이에 할당된다.
예를 들어, NVM의 "자유 공간"이 (예를 들어, 감소/증가된 호스트 또는 시스템 데이터 저장 공간으로 인해) 증가/감소될 때, OP 사용 할당은 (옵션으로, 가비지 회수(garbage collection), 재활용, 및/또는 소거 후에) 증가/감소된다. 다른 경우에, 시스템 데이터 OP와 호스트 데이터 OP 사이의 OP 사용 할당은 동적으로 변하는(varying) 값에 비례하고, 이 동적으로 변하는 값은 NVM에 대한 호스트 데이터 기록들의 대역폭에 의해 분할된 NVM에 대한 시스템 데이터 기록들의 대역폭이다. 호스트 데이터 저장 공간은 호스트 데이터의 변하는 엔트로피(예를 들어, 데이터 중복 제거(deduplication)을 통한 사이즈 감소에 대한 압축성 및/또는 반응성(responsiveness)) 및 이전에 저장된 호스트 데이터를 명시적으로 할당해제하는 호스트 커맨드들에 적어도 따라 변한다.
제 1 예에 있어서, OP에 대해 이용가능한 NVM이 일정 양만큼 감소(증가)하면, 이후 시스템 데이터 OP 및 호스트 데이터 OP는 시스템 데이터 OP와 호스트 데이터 OP 사이에서 동일한 비율을 유지하면서 그 양만큼 일괄적으로 감소(증가)된다. 제 2 예에 있어서, 호스트 데이터 레이트에 대한 시스템 데이터 레이트의 비율이 변화(change)하면, 이후 시스템 데이터 OP 및 호스트 데이터 OP는 그 비율에서의 변화에 따라 조정된다. 시스템 데이터 레이트의 예가 NVM에 대한 시스템 데이터 기록들의 대역폭이고, 호스트 데이터 레이트의 예가 NVM에 대한 호스트 데이터 기록들(예를 들어, 시스템 데이터 기록들이 아닌 기록들)의 대역폭이어서, 시스템 데이터 기록들은 호스트 데이터를 기록하는 NVM 기록들을 제외한 모든 NVM 기록들에 대응한다. 호스트 데이터의 기록은 호스트 데이터 및/또는 그 호스트 데이터에 대응하는 ECC 정보를 식별하기 위해 사용가능한 헤더들의 기록을 옵션으로 및/또는 선택적으로 포함한다. 제 3 예로서, 시스템 데이터 OP 및 호스트 데이터 OP는 예를 들어, NVM의 유닛이 할당될 때, 또는 (예를 들어, 부분 사용된 NVM 유닛들을 재생하기 위해) 가비지 회수가 수행될 때, 각각의 데이터 레이트들에 따라(예를 들어, 데이터 레이트들의 비율에 선형적으로 따라) 할당된다.
제 4 예에 있어서, 제 1 및 제 2 (또는 제 3) 예들은 결합되어서(combined), OP에 대해 이용가능한 NVM에서의 변화 및 호스트 데이터 레이트 비율에 대한 시스템에서의 변화는 시스템 데이터 OP 및 호스트 데이터 OP 할당들에 대한 대응하는 변화들을 발생시킨다. 부가의 예들은 임의의 상술한 예들을 포함하고, 여기서, 시스템 데이터 OP 및/또는 호스트 데이터 OP는 NVM의 유닛의 할당, NVM의 일부의 가비지 회수와 연관된 이벤트, 또는 NVM의 유닛이 사용의 하나의 타입(예를 들어, 호스트 데이터)으로부터 사용의 다른 타입(예를 들어, 시스템 데이터)로의 재할당을 위해 이용가능한 임의의 다른 이벤트와 같은 이벤트에 기초하여 동적으로 재할당된다.
일부 실시예들에서, 시스템과 호스트 사용들 사이의 OP 자원들의 할당은 각각의 최소/최대값들 및/또는 입도들(granularities)에 영향을 받는다. 예를 들어, 시스템 및/또는 호스트 OP 할당은 호스트 할당 및/또는 호스트 데이터 레이트에 대한 시스템 데이터 레이트의 비율에 독립적으로, 소정의 수의 유닛들의 최소값이다. 다른 예에 있어서, 시스템 및/또는 호스트 OP 할당은 소정의 수의 유닛들에 따라 그래뉼러(granular)이다.
다양한 실시예들에서, NVM(예를 들어, 플래시 메모리)은 (플래시 메모리)의 (관리된) 유닛들로서 칭하고, 본 명세서에서 '관리된 유닛들' 또는 '유닛들'로서 또한 칭하는 부분들에서 관리된다. (플래시 메모리)의 (관리된) 유닛들의 예들이, 플래시 메모리의 하나 또는 그 초과의 연속/비연속 페이지들/블록들과 같은 플래시 메모리의 하나 또는 그 초과의 연속 및/또는 비연속 부분들, 플래시 메모리의 (본 명세서의 다른 곳에서 설명되는) 하나 또는 그 초과의 R블록들, 또는 (할당과 같은) 동작들의 관리에 적합한 플래시 메모리의 임의의 서브부분이다. 일부 실시예들에서, 플래시 메모리의 할당은 플래시 메모리 관리 유닛들의 정수 정량(integer quanta)에 따라 그래뉼러이다.
R블록의 일례가 플래시 메모리의 모든 다이에 걸친 논리 슬라이스 또는 섹션이다. 예를 들어, 각 플래시 다이가 N개의 블록들을 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R블록은 총 N개의 R블록들에 대해 함께 취해진 플래시 다이 각각으로부터의 i번째 블록이다. 다른 예에 있어서, N개의 블록들을 각각 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R블록은 총 N/2개 R블록들에 대해 플래시 다이 각각으로부터의 i번째 및 (i+1)번째 블록이다. 또 다른 예에 있어서, 복수의 듀얼 평면 디바이스들을 갖는 플래시 메모리에서, 각 R블록은 듀얼 평면 디바이스들 각각으로부터의 i번째 짝수 블록 및 i번째 홀수 블록이다.
일부 상황들에서, 기록 증폭(write amplification)은 특정한 사이즈의 호스트 저장 기록이 SSD의 호스트 메모리에 대해 (예를 들어, 다중의 특정한 사이즈의 사이즈를 각각 갖는) 복수의 기록들을 발생시킬 때 발생한다. 복수의 기록들은 예를 들어, 플래시 메모리의 일부의 기록(예를 들어, 프로그래밍) 전의 그 일부의 소거, 마모 레벨링, 가비지 회수, 및 시스템 데이터 기록들을 발생시키는 플래시 메모리 관리 동작들로부터 발생한다. 기록 증폭의 예시적인 계산이 호스트 기록들의 특정한 수집에 의해 기록된 데이터량에 의해 분할된, (예를 들어 호스트 기록들과 연관된 호스트 데이터의 기록을 완료하기 위한 시스템 기록들을 포함하는) 호스트 기록들의 특정한 수집(collection) 대신에 플래시 메모리에 기록된 데이터량이다.
일부 실시예들 및/또는 사용 시나리오들에서, 기록 증폭은 가비지 회수 및/또는 다른 동작들이 기록(예를 들어, 프로그래밍)을 위해 쉽게 이용가능하고 소거된 플래시 메모리의 상대적으로 큰 부분이 이루어졌을 때 순차적 어드레스들에 대한 호스트 기록들의 상대적으로 긴 시퀀스와 같이 상대적으로 낮다. 일부 실시예들 및/또는 사용 시나리오들에서, 기록 증폭은 플래시 메모리의 상대적으로 작은 부분이 소거되고 기록을 위해 쉽게 이용가능할 때 랜덤 어드레스들에 대한 호스트 기록들의 상대적으로 긴 시퀀스와 같이 상대적으로 높다.
SSD에 대한 제어기를 통해, SSD의 플래시 메모리는 호스트 데이터와 시스템 데이터의 저장 사이에 할당된다. 호스트 데이터는 SSD에 커플링된 호스트와 연관되고 시스템 데이터는 제어기와 연관된다. 제어기는 플래시 메모리의 전체자유 공간에 따라 할당을 동적으로 제어한다. 일부 실시예들 및/또는 사용 시나리오들에서, 시스템 데이터에 대한 할당의 증가 (및 호스트 데이터에 대한 할당의 감소)를 통한 시스템 데이터의 OP 증가는 감소된 기록 증폭 및 개선된 SSD 및/또는 플래시 메모리 성능, 신뢰도, 및/또는 수명을 가능하게 한다. 플래시 메모리의 전체 자유 공간은 호스트 데이터 할당의 자유 공간 및 시스템 데이터 할당의 자유 공간이다.
동적 할당 제어는 예를 들어, 호스트 데이터가 다양한 사이즈들의 논리 유닛들을 발생시키는 일부 방식으로 압축되거나, 중복제거되거나 변환될 때와 같이 호스트 데이터가 다양한 사이즈들의 논리 유닛들을 포함하는 다양한 실시예들에서 사용된다. 동적 할당 제어는 예를 들어, 호스트 데이터가 중복제거를 통해 상대적으로 매우 압축가능하거나 상대적으로 매우 컴팩트가능할 때와 같이 호스트 데이터가 상대적으로 매우 축소가능한 다양한 실시예들에서 사용된다.
호스트 데이터는 하나 또는 그 초과의 호스트들(예를 들어, 컴퓨팅 호스트들)로부터 수신된 (또는 그에 제공된) 데이터, 또는 (예를 들어, 압축, 중복제거, 암호화, 또는 임의의 가역 변환을 통해) 호스트들로부터의 (또는 호스트들로의) 데이터로부터 유도된 데이터를 포함한다. 호스트 데이터의 예들은 사용자 데이터 및/또는 파일들, 애플리케이션 데이터 및/또는 파일들, 드라이버 데이터 및/또는 파일들, OS 데이터, 데이터 구조들, 및/또는 파일들, 및 SSD와 호스트 사이의 인터페이스를 통해 호스트에 의해 제공된 다른 정보를 포함한다. NVM에 기록된 바와 같은 호스트 데이터는 호스트 데이터 및/또는 그 호스트 데이터에 대응하는 ECC 정보를 식별하기 위해 사용된 헤더들과 같은, SSD 제어기에 의해 추가되고 호스트 데이터로 기록된 메타데이터를 옵션으로 및/또는 선택적으로 포함한다. 시스템 데이터는 제어기, SSD, 및/또는 플래시 메모리, 또는 그것의 임의의 부분들의 관리 또는 동작에 관한 데이터를 포함한다. 시스템 데이터의 예들은 오작동(예를 들어, 정지 또는 정전)의 경우에 정확한 상태의 복구를 가능하게 하기 위해 플래시 메모리 블록 매핑 정보 및 체크포인트 정보에 대한 LBA를 포함한다. 시스템 데이터의 다른 예들은, 호스트 데이터에 특정되는 것이 아니라, SSD, SSD 제어기, 및/또는 NVM(예를 들어, 플래시 메모리)를 통해 그 호스트 데이터의 저장을 관리하거나, SSD, SSD 제어기, 및/또는 NVM의 동작을 관리하는데 유용한 정보를 포함한다.
다양한 상황들에서, 사용된 시스템 데이터 공간에 대한 사용된 호스트 데이터 공간의 비율은 100:1 내지 500:1의 비율이다. 다양한 상황들에서, 상대적으로 높은 수의 랜덤 기록들을 갖는 상황들과 같이, 호스트 데이터 기록 대역폭에 대한 시스템 데이터 기록 대역폭의 비율은 2:1 내지 5:1의 비율이다.
본 명세서의 다른 곳에서, 플래시 메모리에 대한 호스트 데이터 기록들의 대역폭을 때때로 호스트 데이터 기록들의 대역폭 또는 대안적으로는 호스트 기록 대역폭으로 칭하고, 플래시 메모리에 대한 시스템 데이터 기록들의 대역폭을 때때로 시스템 데이터 기록들의 대역폭 또는 대안적으로는 시스템 기록 대역폭이라 칭한다.
일부 실시예들에서, NVM에서의 가변 사이즈 정량의 압축된 데이터에 액세스하는 것은 일부 사용 시나리오들에서 개선된 저장 효율을 제공한다. 예를 들어, SSD 제어기는 (예를 들어, 디스크 기록 커맨드에 관한) 컴퓨팅 호스트로부터 (압축되지 않은) 데이터를 수신하고, 데이터를 압축하며, 압축된 데이터를 플래시 메모리에 저장한다. (예를 들어, 디스크 판독 커맨드에 관한) 컴퓨팅 호스트로부터의 후속 요청에 응답하여, SSD 제어기는 플래시 메모리로부터의 압축된 데이터를 판독하고, 압축된 데이터를 압축해제하여, 압축해제된 데이터를 컴퓨팅 호스트에 제공한다. 압축된 데이터는 가변 사이즈 정량들에 따라 플래시 메모리에 저장되고, 정량 사이즈는 예를 들어, 압축 알고리즘, 동작 모드, 및 다양한 데이터에 대한 압축 유효성으로 인해 변한다. SSD 제어기는 헤더(들)가 플래시 메모리에서 어디에 저장되는지를 결정하기 위해 포함된 맵 테이블을 컨설팅함으로써 부분적으로 데이터를 압축해제한다. SSD 제어기는 적절한 (압축된) 데이터가 플래시 메모리에서 어디에 저장되는지를 결정하기 위해 플래시 메모리로부터 획득된 헤더(들)를 분석한다. SSD 제어기는 압축해제된 데이터를 생성하여 컴퓨팅 호스트에 제공하기 위해 플래시 메모리로부터의 적절한 데이터를 압축해제한다.
다양한 실시예들에서, SSD 제어기는 컴퓨팅 호스트와 인터페이스하기 위한 호스트 인터페이스, 플래시 메모리와 같은 NVM와 인터페이스하기 위한 인터페이스, 및 인터페이스들을 제어하고 압축 및 압축해제를 수행(및/또는 그 수행의 다양한 양태들을 제어)하기 위한 회로뿐만 아니라 독립 실리콘 소자들을 갖는 하위 레벨 에러 정정, 상위 레벨 에러 정정, 및 동적 상위 레벨 리던던시 모드 관리를 포함한다.
다양한 실시예들에 따르면, 일부 호스트 인터페이스들은 USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페이스 표준, 썬더볼트 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스틱 인터페이스 표준, xD픽처 카드 인터페이스 표준, IDE 인터페이스 표준, SATA 인터페이스 표준, SCSI 인터페이스 표준, SAS 인터페이스 표준, 및 PCIe 인터페이스 표준 중 하나 또는 그 초과와 호환가능하다. 다양한 실시예들에 따르면, 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DSA 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형(allinone) 디바이스, POS 디바이스, 캐시레지스터, 미디어 플레이어, 텔레비전, 미디어 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 모두 또는 임의의 부분들이다. 일부 실시예들에서, (SAS/SATA 브리지와 같은) 인터페이싱 호스트는 컴퓨팅 호스트 및/또는 컴퓨팅 호스트에 대한 브리지로서 동작한다.
다양한 실시예들에서, SSD 제어기는 하나 또는 그 초과의 프로세서들을 포함한다. 프로세서들은 SSD 제어기의 동작을 제어 및/또는 수행하기 위해 펌웨어를 실행한다. SSD 제어기는 커맨드들 및/또는 상태뿐만 아니라 데이터를 전송 및 수신하기 위해 컴퓨팅 호스트와 통신한다. 컴퓨팅 호스트는 운영(operating) 시스템, 드라이버, 및 애플리케이션 중 하나 또는 그 초과를 실행한다. 컴퓨팅 호스트에 의한 SSD 제어기와의 통신은 옵션으로 및/또는 선택적으로 드라이버 및/또는 애플리케이션을 통한다. 제 1 예에서, SSD 제어기로의 모든 통신은 드라이버를 통하고, 애플리케이션은 드라이버가 SSD 제어기에 대한 특정한 커맨드들로 트랜슬레이션하는 상위 레벨 커맨드들을 드라이버에 제공한다. 제 2 예에서, 드라이버는 바이패스 모드를 구현하고, 애플리케이션은 드라이버를 통해 특정한 커맨드들을 SSD 제어기에 전송하도록 인에이블된다(enabled). 제 3 예에서, PCIe SSD 제어기는 하나 또는 그 초과의 가상 함수(VF)들을 지원하고, 일단 구성되면, 애플리케이션이 드라이버를 바이패스하여 SSD 제어기와 직접 통신하게 할 수 있다.
다양한 실시예들에 따르면, 일부 SSD들은 HDD들, CD 드라이브들, 및 DVD 드라이브들과 같은 자기 및/또는 광 비휘발성 저장부에 의해 사용된 폼팩터들, 전기적 인터페이스들, 및/또는 프로토콜들과 호환가능하다. 다양한 실시예들에서, SSD들은 제로 또는 그 초과의 패리티 코드들, 제로 또는 그 초과의 RS 코드들, 제로 또는 그 초과의 BCH 코드들, 제로 또는 그 초과의 비터비 또는 다른 트렐리스 코드들, 및 제로 또는 그 초과의 LDPC 코드들의 다양한 조합(combination)들을 사용한다.
예시적인 실시예들
결론에서, "EC"들(예시적인 조합들)로서 명시적으로 열거되는 적어도 일부를 포함하는 예시적인 실시예들의 집합이 따르는 상세한 설명에 대한 도입은 여기에 설명한 개념들에 따른 다양한 실시예 타입들의 부가의 설명을 제공하고, 이들 예들은 상호 배타적이고, 포괄적이거나, 제한적인 것으로 의미되지 않고, 본 발명은 이들 예시적인 실시예들에 제한되는 것이 아니라, 오히려 등록 청구항들의 범위내의 모든 가능한 변경물들 및 변동물들, 및 그들의 등가물들을 포함한다.
EC1) 시스템으로서,
호스트 데이터, 시스템 데이터, 시스템 오버프로비저닝(OP), 및 호스트 OP에 각각 전용된 각각의 할당들로서 하나 또는 그 초과의 플래시 메모리들 중 모두 또는 임의의 부분들을 동작시키는 수단; 그리고
하나 또는 그 초과의 이벤트들에 응답하여 각각의 할당들 중 임의의 하나 또는 그 초과를 동적으로 결정하는 수단을 포함하는, 시스템.
EC2) EC1에 있어서, 이벤트들은 각각의 할당들 중 임의의 하나 또는 그 초과의 사용량에서의 변화를 포함하는, 시스템.
EC3) EC1에 있어서, 이벤트들은 플래시 메모리들에 저장된 정보의 압축, 중복제거, 및 변환 중 임의의 하나 또는 그 초과의 변경된 유효성의 결정을 포함하는, 시스템.
EC4) EC3에 있어서, 변경된 유효성은 각각의 할당들 중 특정한 하나에서 사용된 특정한 공간량에 의해 적어도 부분적으로 측정되는, 시스템.
EC5) EC3에 있어서, 변경된 유효성은 각각의 할당들 중 특정한 하나에서 이용가능한 특정한 자유 공간량에 의해 적어도 부분적으로 측정되는, 시스템.
EC6) EC1에 있어서, 이벤트들은 호스트 데이터 할당에 저장된 정보의 압축 및 중복제거 중 임의의 하나 또는 그 초과의 증가된 유효성의 결정을 포함하는, 시스템.
EC7) EC6에 있어서, 증가된 유효성은 호스트 데이터 할당에서 사용된 공간량의 감소에 의해 적어도 부분적으로 측정되는, 시스템.
EC8) EC6에 있어서, 증가된 유효성은 호스트 데이터 할당에서 이용가능한 자유 공간량의 증가에 의해 적어도 부분적으로 측정되는, 시스템.
EC9) EC6에 있어서, 동적으로 결정하는 수단은 증가된 유효성의 결정에 응답하여 호스트 데이터 할당 및 호스트 OP 할당 중 임의의 하나 또는 그 초과를 동적으로 감소시키는, 시스템.
EC10) EC6에 있어서, 동적으로 결정하는 수단은 증가된 유효성의 결정에 응답하여 시스템 데이터 할당 및 시스템 OP 할당 중 임의의 하나 또는 그 초과를 동적으로 증가시키는, 시스템.
EC11) EC1에 있어서, 동작시키는 수단 및 동적으로 결정하는 수단은 고체 상태 디스크(SSD)의 제어기에서 구성되고, 플래시 메모리들은 SSD에서 구성되는, 시스템.
EC12) 방법으로서,
각각의 호스트 데이터, 시스템 데이터, 및 조합된 오버프로비저닝(OP) 할당들로서 고체 상태 디스크(SSD)의 하나 또는 그 초과의 플래시 메모리들을 동작시키는 단계;
각각의 시스템 및 호스트 OP 할당들로서 조합된 OP 할당들을 동작시키는 단계;
호스트 데이터 레이트에 대한 시스템 데이터 레이트의 비율의 선형 함수(function)로서 시스템 OP 할당의 새로운 값을 동적으로 결정하는 단계;
새로운 값의 변화들에 응답하여 시스템 OP 할당을 동적으로 변경하는 단계를 포함하며, 그리고
동적으로 결정하는 단계는 이벤트에 응답하는, 방법.
EC13) EC12에 있어서,
SSD에 커플링된 호스트로부터 데이터를 수신하는 단계;
호스트로부터 수신된 데이터로부터 정보를 결정하는 단계;
호스트 데이터 할당에 따라 정보를 플래시 메모리들에 저장하는 단계를 더 포함하는, 방법.
EC14) EC13에 있어서, 호스트로부터 수신된 데이터의 압축을 통해 정보를 컴퓨팅하는 단계를 더 포함하는, 방법.
EC15) EC13에 있어서, 호스트로부터 수신된 데이터의 중복제거를 통해 정보를 컴퓨팅하는 단계를 더 포함하는, 방법.
EC16) EC12에 있어서, 시스템 데이터 할당에 따라 플래시 메모리 어드레스 대응 정보에 대한 호스트 어드레스를 플래시 메모리들에 저장하는 단계를 더 포함하는, 방법.
EC17) EC12에 있어서, 이벤트는 재생(reclamation)을 위해 플래시 메모리들의 유닛의 선택에 적어도 부분적으로 기초하는, 방법.
EC18) EC17에 있어서, 재생은,
가비지 회수,
가비지 회수를 위한 선택,
재활용,
재활용을 위한 선택,
소거, 그리고
소거를 위한 선택 중 하나 또는 그 초과를 포함하는, 방법.
EC19) 시스템으로서,
각각의 호스트 데이터, 시스템 데이터, 및 조합된 오버프로비저닝(OP) 할당들로서 하나 또는 그 초과의 플래시 메모리들을 동작시키는 수단;
각각의 시스템 및 호스트 OP 할당들로서 조합된 OP 할당들을 동작시키는 수단; 그리고
하나 또는 그 초과의 이벤트들에 응답하여 시스템 OP 할당의 새로운 값을 동적으로 결정하는 수단을 포함하는, 시스템.
EC20) EC19에 있어서, 새로운 값의 변화들에 응답하여 시스템 OP 할당을 동적으로 변경하는 수단을 더 포함하는, 시스템.
EC21) EC19에 있어서, 새로운 값을 동적으로 결정하는 수단은 시스템 데이터 레이트 및 호스트 데이터 레이트의 함수에 따라 새로운 값을 결정하는, 시스템.
EC22) EC21에 있어서, 새로운 값을 동적으로 결정하는 수단은 호스트 데이터 레이트에 대한 시스템 데이터 레이트의 비율에 따라 새로운 값을 결정하는, 시스템.
EC23) EC22에 있어서, 새로운 값을 동적으로 결정하는 수단은 호스트 데이터 레이트에 의해 분할된 시스템 데이터 레이트에 비례하는 것으로서 새로운 값을 결정하는, 시스템.
EC24) EC21에 있어서, 수단들은 고체 상태 디스크(SSD)의 제어기를 통하고, 플래시 메모리들은 SSD에서 구성되는, 시스템.
EC25) EC24에 있어서, 호스트에 인터페이싱하는 수단을 더 포함하고, 호스트에 인터페이싱하는 수단은 SSD에서 구성되고, 호스트 데이터 할당은 호스트에 인터페이싱하는 수단을 통해 통신되는 데이터의 적어도 일부를 나타내는 정보를 적어도 부분적으로 저장하기 위해 사용되는, 시스템.
EC26) EC25에 있어서, 통신된 데이터의 적어도 일부의 압축을 통해 정보의 적어도 일부를 결정하는 수단을 더 포함하는, 시스템.
EC27) EC25에 있어서, 통신된 데이터의 적어도 일부의 중복제거를 통해 정보의 적어도 일부를 결정하는 수단을 더 포함하는, 시스템.
EC28) EC25에 있어서, 통신된 데이터의 적어도 일부의 엔트로피를 감소시키는 가역 변환을 통해 정보의 적어도 일부를 결정하는 수단을 더 포함하는, 시스템.
EC29) EC24에 있어서, 시스템 데이터 할당은 맵 데이터의 적어도 일부를 저장하기 위해 제어기에 의해 적어도 부분적으로 사용되는, 시스템.
EC30) EC24에 있어서, 시스템 데이터 할당은 체크포인트 데이터의 적어도 일부를 저장하기 위해 제어기에 의해 적어도 부분적으로 사용되는, 시스템.
EC31) EC21에 있어서, 시스템 데이터 레이트는,
플래시 메모리들에 저장하기 위해 고체 상태 디스크(SSD) 제어기로부터 제공된 시스템 데이터의 레이트,
플래시 메모리들에 기록된 시스템 데이터의 레이트, 그리고
플래시 메모리들에 대한 시스템 데이터 기록들의 대역폭 중 하나 또는 그 초과에 적어도 부분적으로 기초하는, 시스템.
EC32) EC21에 있어서, 호스트 데이터 레이트는,
플래시 메모리들에 저장하기 위해 호스트로부터 제공된 데이터의 레이트,
플래시 메모리들에 기록된 호스트 데이터의 레이트, 그리고
플래시 메모리들에 대한 호스트 데이터 기록들의 대역폭 중 하나 또는 그 초과에 적어도 부분적으로 기초하는, 시스템.
EC33) EC19에 있어서, 이벤트들은,
플래시 메모리들의 유닛의 할당,
플래시 메모리들 중 하나 또는 그 초과의 부분들의 가비지 회수,
플래시 메모리들 중 하나 또는 그 초과의 부분들의 재활용, 그리고
플래시 메모리들 중 하나 또는 그 초과의 부분들의 소거 중 하나 또는 그 초과에 대한 개시, 완료, 요청, 및/또는 선택을 포함하는, 시스템.
EC34) EC19에 있어서, 컴퓨팅 호스트로부터의 요청들에 적어도 부분적으로 응답하여 호스트 데이터 할당의 적어도 일부에 저장된 정보에 의해 표현된 호스트 데이터의 적어도 일부를 통신하는 수단을 더 포함하는, 시스템.
EC35) EC34에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 수단을 더 포함하는, 시스템.
EC36) EC35에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 수단은 저장 인터페이스 표준과 호환가능한, 시스템.
EC37) EC36에 있어서, 저장 인터페이스 표준은,
범용 직렬 버스(USB) 인터페이스 표준,
콤팩트 플래시(CF) 인터페이스 표준,
멀티미디어카드(MMC) 인터페이스 표준,
내장형 MMC(eMMC) 인터페이스 표준,
썬더볼트 인터페이스 표준,
UFS 인터페이스 표준,
보안 디지털(SD) 인터페이스 표준,
메모리 스틱 인터페이스 표준,
xD픽처 카드 인터페이스 표준,
집적 드라이브 전자장치(IDE) 인터페이스 표준,
직렬 어드밴스드 기술 부착(SATA) 인터페이스 표준,
외부 SATA(eSATA) 인터페이스 표준,
소형 컴퓨터 시스템 인터페이스(SCSI) 인터페이스 표준,
직렬 부착 소형 컴퓨터 시스템 인터페이스(SAS) 인터페이스 표준,
섬유 채널 인터페이스 표준,
이더넷 인터페이스 표준, 그리고
주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스 표준
중 하나 또는 그 초과를 포함하는, 시스템.
EC38) EC34에 있어서, 컴퓨팅 호스트의 모두 또는 임의의 부분들을 더 포함하는, 시스템.
EC39) EC38에 있어서, 컴퓨팅 호스트는,
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
저장 서버,
저장 부착 네트워크(SAN),
네트워크 부착 저장(NAS) 디바이스,
직접 부착 저장(DAS) 디바이스,
저장 기구,
개인 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
태블릿 디바이스 또는 컴퓨터,
울트라북 컴퓨터,
전자 판독 디바이스(e리더),
휴대 보조 단말기(PDA),
네비게이션 시스템,
(핸드헬드) 글로벌 포지셔닝 시스템(GPS) 디바이스,
자동 제어 시스템,
자동 미디어 제어 시스템 또는 컴퓨터,
프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스,
판매 시점 정보 관리(POS) 디바이스,
캐시레지스터,
미디어 플레이어,
텔레비전,
미디어 리코더,
디지털 비디오 리코더(DVR),
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 그리고
전자 게임
중 하나 또는 그 초과를 포함하는, 시스템.
EC40) EC19에 있어서, 플래시 메모리들과 인터페이싱하는 수단을 더 포함하는, 시스템.
EC41) EC40에 있어서, 플래시 메모리들과 인터페이싱하는 수단은 플래시 메모리 인터페이스를 포함하는, 시스템.
EC42) EC41에 있어서, 플래시 메모리 인터페이스는,
오픈 NAND 플래시 인터페이스(ONFI),
토글 모드 인터페이스,
더블 데이터 레이트(DDR) 동기 인터페이스,
DDR2 동기 인터페이스,
동기 인터페이스, 그리고
비동기 인터페이스
중 하나 또는 그 초과와 호환가능한, 시스템.
EC43) EC19에 있어서, 플래시 메모리들 중 적어도 하나를 더 포함하는, 시스템.
EC44) EC43에 있어서, 플래시 메모리들 중 적어도 하나는,
NAND 플래시 기술 저장 셀들, 그리고
NOR 플래시 기술 저장 셀들 중 하나 또는 그 초과를 포함하는, 시스템.
EC45) EC43에 있어서, 적어도 하나의 플래시 메모리는,
단일 레벨 셀(SLC) 플래시 기술 저장 셀들, 그리고
멀티 레벨 셀(MLC) 플래시 기술 저장 셀들
중 하나 또는 그 초과를 포함하는, 시스템.
EC46) EC43에 있어서, 적어도 하나의 플래시 메모리는,
폴리실리콘 기술 기반 전하 저장 셀들, 그리고
실리콘 질화물 기술 기반 전하 저장 셀들
중 하나 또는 그 초과를 포함하는, 시스템.
EC47) EC43에 있어서, 적어도 하나의 플래시 메모리는,
2차원 기술 기반 플래시 메모리 기술, 그리고
3차원 기술 기반 플래시 메모리 기술
중 하나 또는 그 초과를 포함하는, 시스템.
EC48) EC19에 있어서,
컴퓨팅 호스트로부터의 요청들을 인터페이싱하는 수단으로서, 이 요청들은 플래시 메모리들에 저장된 정보에 관련되는, 컴퓨팅 호스트로부터의 요청들을 인터페이싱하는 수단; 그리고
플래시 메모리들에 인터페이싱하는 수단을 더 포함하는, 시스템.
EC49) EC48에 있어서, 수단들은 단일 집적 회로(IC)에서 일괄적으로 구현되는, 시스템.
EC50) EC48에 있어서, 수단들은 고체 상태 디스크(SSD)에서 구성되는, 시스템.
시스템
도 1a는 NVM 소자들(예를 들어, 플래시 메모리들)을 통해 구현되는 것과 같은 비휘발성 저장부를 관리하기 위해 가변 OP를 사용하는 SSD 제어기를 포함하는 SSD(101)의 실시예의 선택된 상세들을 예시한다. SSD 제어기는 NVM 소자들(예를 들어, 플래시 메모리들)을 통해 구현된 것과 같은 비휘발성 저장부를 관리하기 위한 것이다. SSD 제어기(100)는 하나 또는 그 초과의 외부 인터페이스들(110)을 통해 호스트(미도시)에 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 외부 인터페이스들(110)은 SATA 인터페이스, SAS 인터페이스, PCIe 인터페이스, 섬유 채널 인터페이스, (10 기가바이트 이더넷과 같은) 이더넷 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 커스텀 인터페이스, 또는 저장부 및/또는 통신 및/또는 컴퓨팅 디바이스들을 상호접속하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다. 예를 들어, 일부 실시예들에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
SSD 제어기(100)는 플래시 디바이스(192)의 하나 또는 그 초과와 같은 하나 또는 그 초과의 저장 디바이스들을 포함하는 NVM(199)에 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통해 통신가능하게 더 커플링된다. 다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은 비동기 인터페이스, 동기 인터페이스, 단일 데이터 레이트(SDR) 인터페이스, 더블 데이터 레이트(DDR) 인터페이스, DRAM호환가능 DDR 또는 DDR2 동기 인터페이스, ONFI 2.2 또는 ONFI 3.0 호환가능 인터페이스와 같은 ONFI 호환가능 인터페이스, 토글 모드 호환가능 플래시 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 커스텀 인터페이스, 또는 저장 디바이스들에 접속하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다.
각 플래시 디바이스(192)는 일부 실시예들에서, 하나 또는 그 초과의 개별 플래시 다이(194)를 갖는다. 플래시 디바이스(192)의 특정한 하나의 타입에 따르면, 특정한 플래시 디바이스(192)에서의 복수의 플래시 다이(194)는 옵션으로 및/또는 선택적으로 병렬로 액세스가능하다. 플래시 디바이스(192)는 SSD 제어기(100)에 통신가능하게 커플링하도록 인에이블된 저장 디바이스의 하나의 타입을 단지 나타낸다. 다양한 실시예들에서, SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 폴리실리콘 또는 실리콘 질화물 기술 기반 전하 저장 셀들을 사용하는 플래시 메모리, 2차원 또는 3차원 기술 기반 플래시 메모리, 판독 전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자성 메모리, 위상 변화 메모리, 레이스트랙(racetrack) 메모리, ReRAM, 또는 임의의 다른 타입의 메모리 디바이스 또는 저장 매체와 같은 임의의 타입의 저장 디바이스가 사용가능하다.
다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은 버스 당 하나 또는 그 초과의 플래시 디바이스(192)를 갖는 하나 또는 그 초과의 버스들, 버스 당 하나 또는 그 초과의 플래시 디바이스(192)를 갖는 버스들의 하나 또는 그 초과의 그룹들 그룹에서의 버스들은 일반적으로 병렬로 액세스됨 , 또는 디바이스 인터페이스들(190)상의 하나 또는 그 초과의 플래시 디바이스(192)의 임의의 다른 구성으로서 구성된다.
도 1a에 계속하여, SSD 제어기(100)는 호스트 인터페이스들(111), 데이터 프로세싱(121), 버퍼(131), 맵(141), 리사이클러(151), ECC(161), 디바이스 인터페이스 로직(191), 및 CPU(171)와 같은 하나 또는 그 초과의 모듈들을 갖는다. 도 1a에 예시된 특정한 모듈들 및 상호접속들은 단지 하나의 실시예를 나타내며, 예시되지 않은 부가의 모듈들뿐만 아니라 모듈들 중 일부 또는 모두의 많은 배열들 및 상호접속들이 구상된다. 제 1 예에서, 일부 실시예들에서, 이중포팅(dualporting)을 제공하기 위해 2개 또는 그 초과의 호스트 인터페이스들(111)이 존재한다. 제 2 예에서, 일부 실시예들에서, 데이터 프로세싱(121) 및/또는 ECC(161)는 버퍼(131)와 조합된다. 제 3 예에서, 일부 실시예들에서, 호스트 인터페이스들(111)은 버퍼(131)에 직접 커플링되고, 데이터 프로세싱(121)은 버퍼(131)에 저장된 데이터에 대해 옵션으로 및/또는 선택적으로 동작한다. 제 4 예에서, 일부 실시예들에서, 디바이스 인터페이스 로직(191)은 버퍼(131)에 직접 커플링되고, ECC(161)는 버퍼(131)에 저장된 데이터에 대해 옵션으로 및/또는 선택적으로 동작한다.
호스트 인터페이스들(111)은 외부 인터페이스들(110)을 통해 커맨드들 및/또는 데이터를 전송 및 수신하고, 일부 실시예들에서는, 태그 트랙킹(113)을 통해 개별 커맨드들의 진행을 트랙킹한다. 예를 들어, 커맨드들은 판독하기 위해 (LBA와 같은) 어드레스 및 (다수의 LBA 정량, 예를 들어, 섹터들과 같은) 데이터량을 특정하는 판독 커맨드를 포함하고, 이에 응답하여, SSD는 판독 상태 및/또는 판독 데이터를 제공한다. 다른 예에 있어서, 커맨드들은 기록하기 위해 (LBA와 같은) 어드레스 및 (다수의 LBA 정량, 예를 들어, 섹터들과 같은) 데이터량을 특정하는 기록 커맨드를 포함하고, 이에 응답하여, SSD는 기록 상태를 제공하고 그리고/또는 기록 데이터를 요청하며 옵션으로 후속하여 기록 상태를 제공한다. 또 다른 예에 있어서, 커맨드들은 더 이상 할당될 필요가 없는 (하나 또는 그 초과의 LBA들과 같은) 하나 또는 그 초과의 어드레스들을 특정하는 할당해제(deallocation) 커맨드(예를 들어, 트림 커맨드)를 포함하고, 이에 응답하여, SSD는 맵을 그에 따라 변경하고 옵션으로 할당해제 상태를 제공한다. 일부 컨텍스트들에서, ATA 호환가능 TRIM 커맨드는 예시적인 할당해제 커맨드이다. 또 다른 예에 있어서, 커맨드들은 수퍼 커패시터 테스트 커맨드 또는 데이터 경화 성공 문의를 포함하고, 이에 응답하여 SSD는 적절한 상태를 제공한다. 일부 실시예들에서, 호스트 인터페이스들(111)은 SATA 프로토콜과 호환가능하고, NCQ 커맨드들을 사용하여, 0 내지 31의 번호로서 표현된 고유 태그를 각각 갖는 32개까지의 펜딩 커맨드들을 갖도록 인에이블된다. 일부 실시예들에서, 태그 트랙킹(113)은 외부 인터페이스들(110)을 통해 수신된 커맨드에 대한 외부 태그를 SSD 제어기(100)에 의한 프로세싱 동안 커맨드를 트랙킹하기 위해 사용된 내부 태그와 연관시키도록 인에이블된다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 데이터 프로세싱(121)은 버퍼(131)와 외부 인터페이스들(110) 사이에서 전송된 데이터 중 일부 또는 모두를 옵션으로 및/또는 선택적으로 프로세싱하고, 데이터 프로세싱(121)은 버퍼(131)에 저장된 데이터를 옵션으로 및/또는 선택적으로 프로세싱한다. 일부 실시예들에서, 데이터 프로세싱(121)은 포맷팅, 리포맷팅, 트랜스코딩, 및 임의의 다른 데이터 프로세싱 및/또는 조작 작업 중 하나 또는 그 초과를 수행하기 위해 하나 또는 그 초과의 엔진들(123)을 사용한다.
버퍼(131)는 디바이스 인터페이스들(190)로부터 외부 인터페이스들(110)로/외부 인터페이스들(110)로부터 디바이스 인터페이스들(190)로 전송된 데이터를 저장한다. 일부 실시예들에서, 버퍼(131)는 하나 또는 그 초과의 플래시 디바이스(192)를 관리하기 위해 SSD 제어기(100)에 의해 사용된 맵 테이블들 중 일부 또는 모두와 같은 시스템 데이터를 부가적으로 저장한다. 다양한 실시예들에서, 버퍼(131)는 데이터의 임시 저장을 위해 사용된 메모리(137), 버퍼(131)로 및/또는 버퍼(131)로부터의 데이터의 이동을 제어하기 위해 사용된 DMA(133), 상위 레벨 에러 정정 및/또는 리던던시 기능(function)들을 제공하기 위해 사용된 ECCX(135), 및 다른 데이터 이동 및/또는 조작 기능들 중 하나 또는 그 초과를 갖는다. 상위 레벨 리던던시 기능의 일례가 RAID형 능력이고, 여기서, 리던던시는 디스크 레벨 대신 플래시 디바이스(예를 들어, 플래시 디바이스(192)의 다중의 플래시 디바이스들) 레벨 및/또는 플래시 다이(예를 들어, 플래시 다이(194)) 레벨에 있다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 ECC(161)는 버퍼(131)와 디바이스 인터페이스들(190) 사이에서 전송된 데이터 중 일부 또는 모두를 옵션으로 및/또는 선택적으로 프로세싱하고, ECC(161)는 버퍼(131)에 저장된 데이터를 옵션으로 및/또는 선택적으로 프로세싱한다. 일부 실시예들에서, ECC(161)는 예를 들어, 하나 또는 그 초과의 ECC 기법들에 따라, 하위 레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 사용된다. 일부 실시예들에서, ECC(161)는 CRC 코드, 해밍 코드, RS 코드, BCH 코드, LDPC 코드, 비터비 코드, 트렐리스 코드, 하드 판정 코드, 소프트 판정 코드, 소거 기반 코드, 임의의 에러 검출 및/또는 정정 코드, 및 이들의 임의의 조합 중 하나 또는 그 초과를 구현한다. 일부 실시예들에서, ECC(161)는 (LDPC 디코더들과 같은) 하나 또는 그 초과의 디코더들을 포함한다.
디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들을 제어한다. 디바이스 인터페이스 로직(191)은 플래시 디바이스(192)의 프로토콜에 따라 플래시 디바이스(192)의 인스턴스들로/인스턴스들로부터 데이터를 전송하도록 인에이블된다. 디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들의 제어를 선택적으로 시퀀싱하기 위한 스케줄링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케줄링(193)은 플래시 디바이스(192)의 인스턴스들에 대한 동작들을 큐잉(queue)하고, 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 인스턴스들이 이용가능할 때 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 인스턴스들에 동작들을 선택적으로 전송하도록 인에이블된다.
맵(141)은 외부 데이터 어드레스들을 NVM(199)에서의 위치들에 매핑하기 위해 테이블(143)을 사용하여, 외부 인터페이스들(110)상에서 사용된 데이터 어드레싱과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 변환한다. 예를 들어, 일부 실시예들에서, 맵(141)은 테이블(143)에 의해 제공된 매핑을 통해 하나 또는 그 초과의 플래시 다이(194)를 타겟으로 하는 블록 및/또는 페이지 어드레스들로 외부 인터페이스들(110)상에서 사용된 LBA들을 변환한다. 드라이브 제조 또는 할당해제 이후 기록된 적이 없는 LBA들에 대해, 맵은 LBA들이 판독된 경우 복귀하기 위해 디폴트값으로 포인팅한다. 예를 들어, 할당해제 커맨드를 프로세싱할 때, 맵은 할당해제된 LBA들에 대응하는 엔트리(entry)들이 디폴트값들 중 하나에 포인팅하도록 변경된다. 다양한 실시예들에서, 각각 대응하는 포인터를 갖는 다양한 디폴트값들이 존재한다. 복수의 디폴트값들은 (제 1 범위에서와 같은) 일부 할당해제된 LBA들을 하나의 디폴트값으로서 판독하는 것을 가능하게 하면서, (제 2 범위에서와 같은) 다른 할당해제된 LBA들을 다른 디폴트값으로서 판독하는 것을 가능하게 한다. 다양한 실시예들에서, 디폴트값들은 플래시 메모리, 하드웨어, 펌웨어, 커맨드 및/또는 원시 독립변수들 및/또는 파라미터들, 프로그램가능한 레지스터들, 또는 이들의 다양한 조합들에 의해 정의된다.
일부 실시예들에서, 맵(141)은 외부 인터페이스들(110)상에서 사용된 어드레스들과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 트랜슬레이션들을 수행하고 그리고/또는 룩업하기 위해 테이블(143)을 사용한다. 다양한 실시예들에 따르면, 테이블(143)은 1레벨 맵, 2레벨 맵, 멀티레벨 맵, 맵 캐시, 압축된 맵, 하나의 어드레스 공간으로부터 다른 어드레스 공간으로의 임의의 타입의 매핑, 및 이들의 임의의 조합 중 하나 또는 그 초과이다. 다양한 실시예들에 따르면, 테이블(143)은 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, (플래시 메모리와 같은) NVM, 캐시 메모리, 온칩 메모리, 오프칩 메모리, 및 이들의 임의의 조합 중 하나 또는 그 초과이다.
일부 실시예들에서, 리사이클러(151)는 가비지 회수를 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 블록들이 재기록가능하기 전에 소거되어야 하는 블록을 포함한다. 리사이클러(151)는 예를 들어, 맵(141)에 의해 유지된 맵을 스캔함으로써 플래시 디바이스(192)의 인스턴스들 중 어느 부분들이 액티브하게 사용중인지 (예를 들어, 할당해제 대신에 할당되는지)를 결정하고, 플래시 디바이스(192)의 인스턴스들 중 미사용(예를 들어, 할당해제된) 부분들을 이들을 소거함으로써 기록하는데 이용가능하게 하도록 인에이블된다. 추가의 실시예들에서, 리사이클러(151)는 플래시 디바이스(192)의 인스턴스들 중 더 큰 인접 부분들을 기록하는데 이용가능하게 하기 위해 플래시 디바이스(192)의 인스턴스들내에 저장된 데이터를 이동시키도록 인에이블된다.
일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 상이한 타입들 및/또는 특성들의 데이터를 저장하기 위한 하나 또는 그 초과의 대역들을 갖도록 선택적으로 및/또는 동적으로 구성되고, 관리되고 그리고/또는 사용된다. 대역들의 수, 배열, 사이즈, 및 타입은 동적으로 변경(change)가능하다. 예를 들어, 컴퓨팅 호스트로부터의 데이터는 핫(hot)(액티브한) 대역에 기록되지만, 리사이클러(151)로부터의 데이터는 콜드(cold)(덜 액티브한) 대역에 기록된다. 일부 사용 시나리오들에서, 컴퓨팅 호스트가 긴 순차적 스트림을 기록하면, 이후 핫 대역의 사이즈가 증가하는 반면에, 컴퓨팅 호스트가 랜덤하게 기록하거나 거의 기록하지 않으면, 이후 콜드 대역의 사이즈가 증가한다.
CPU(171)는 SSD 제어기(100)의 다양한 부분들을 제어한다. CPU(171)는 CPU 코어(172)를 포함한다. 다양한 실시예들에 따라, CPU 코어(172)는 하나 또는 그 초과의 단일코어 또는 멀티코어 프로세서들이다. 일부 실시예들에서, CPU 코어(172)에서의 개별 프로세서들 코어들은 멀티쓰레드된다(multithreaded). CPU 코어(172)는 명령어 및/또는 데이터 캐시들 및/또는 메모리들을 포함한다. 예를 들어, 명령 메모리는 CPU 코어(172)로 하여금 SSD 제어기(100)를 제어하기 위해 프로그램들(예를 들어, 때때로 펌웨어로 칭하는 소프트웨어)을 실행할 수 있게 하기 위한 명령어들을 포함한다. 일부 실시예들에서, CPU 코어(172)에 의해 실행된 펌웨어 중 일부 또는 모두는 (예를 들어, 도 1b에서 NVM(199)의 펌웨어(106)로서 예시된 바와 같이) 플래시 디바이스(192)의 인스턴스들상에 저장된다.
다양한 실시예들에서, CPU(171)는 커맨드들이 진행중인 동안 외부 인터페이스들(110)을 통해 수신된 커맨드들을 트랙킹 및 제어하기 위한 커맨드 관리(173), 버퍼(131)의 할당 및 사용을 제어하기 위한 버퍼 관리(175), 맵(141)을 제어하기 위한 트랜슬레이션 관리(177), 데이터 어드레싱의 일치성을 제어하고 예를 들어, 외부 데이터 액세스들과 리사이클 데이터 액세스들 사이의 충돌들을 회피하기 위한 코히어런시 관리(179), 디바이스 인터페이스 로직(191)을 제어하기 위한 디바이스 관리(181), 식별 정보의 변경(modification) 및 통신을 제어하기 위한 아이덴티티 관리(182), 및 옵션으로 다른 관리 유닛들을 더 포함한다. 다양한 실시예들에 따르면, CPU(171)에 의해 수행된 관리 기능들 중 어느 것도, 임의의 것 또는 모두는 하드웨어, (외부 인터페이스들(110)을 통해 접속된 CPU 코어(172) 또는 호스트상에서 실행하는 펌웨어와 같은) 소프트웨어, 또는 이들의 임의의 조합에 의해 제어 및/또는 관리된다.
일부 실시예들에서, CPU(171)는 성능 통계의 수집 및/또는 리포팅, SMART의 구현, 전력 시퀀싱의 제어, 전력 소모의 제어 및/또는 모니터링 및/또는 조정, 정전에 대한 응답, 클록 레이트들의 제어 및/또는 모니터링 및/또는 조정, 및 다른 관리 작업들 중 하나 또는 그 초과와 같은 다른 관리 작업들을 수행하도록 인에이블된다.
다양한 실시예들은 SSD 제어기(100)와 유사하고 예를 들어, 호스트 인터페이스들(111) 및/또는 외부 인터페이스들(110)의 적용을 통해 다양한 컴퓨팅 호스트들과의 동작과 호환가능한 컴퓨팅 호스트 플래시 메모리 제어기를 포함한다. 다양한 컴퓨팅 호스트들은 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DAS 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시레지스터, 미디어 플레이어, 텔레비전, 미디어 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 하나 또는 임의의 조합을 포함한다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅 호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들은 단일 IC, 멀티다이 IC의 단일 다이, 멀티다이 IC의 복수의 다이들, 또는 복수의 IC들상에서 구현된다. 예를 들어, 버퍼(131)는 SSD 제어기(100)의 다른 소자들과 동일한 다이상에서 구현된다. 다른 예에 있어서, 버퍼(131)는 SSD 제어기(100)의 다른 소자들과는 상이한 다이상에서 구현된다.
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세들을 예시한다. SSD(101)는 디바이스 인터페이스들(190)을 통해 NVM(199)에 커플링된 SSD 제어기(100)를 포함한다. 도면은 다양한 클래스들의 실시예들: 호스트에 직접 커플링된 단일 SSD, 각각의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링되는 복수의 SSD들, 및 다양한 상호접속 소자들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들을 예시한다.
호스트에 직접적으로 커플링된 단일 SSD의 예시적인 실시예로서, SSD(101)의 하나의 인스턴스는 외부 인터페이스들(110)을 통해 호스트(102)에 직접적으로 커플링된다(예를 들어, 스위치/구조/중간 제어기(103)가 생략되고, 바이패스되거나, 통과된다). 각각의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링된 복수의 SSD들의 예시적인 실시예로서, SSD(101)의 복수의 인스턴스들 각각은 외부 인터페이스들(110)의 각각의 인스턴스를 통해 호스트(102)에 직접적으로 각각 커플링된다(예를 들어, 스위치/구조/중간 제어기(103)가 생략되고, 바이패스되거나, 통과된다). 다양한 상호접속 소자들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들의 예시적인 실시예로서, SSD(101)의 하나 또는 그 초과의 인스턴스들 각각은 호스트(102)에 간접적으로 각각 커플링된다. 각각의 간접 커플링은 호스트(102)에 커플링하는 중간 인터페이스들(104) 및 스위치/구조/중간 제어기(103)에 커플링된 외부 인터페이스들(110)의 각각의 인스턴스를 통한다.
스위치/구조/중간 제어기(103)를 포함하는 실시예들 중 일부는 메모리 인터페이스(180)를 통해 커플링되고 SSD들에 의해 액세스가능한 카드 메모리(112C)를 또한 포함한다. 다양한 실시예들에서, SSD들, 스위치/구조/중간 제어기, 및/또는 카드 메모리 중 하나 또는 그 초과는 물리적으로 식별가능한 모듈, 카드, 또는 플러그가능한 소자(예를 들어, I/O 카드(116))상에 포함된다. 일부 실시예들에서, SSD(101)(또는 그것의 변동물들)는 호스트(102)로서 동작하는 개시자에 커플링되는 SAS 드라이브 또는 SATA 드라이브에 대응한다.
호스트(102)는 OS(105), 드라이버(107), 애플리케이션(109), 및 멀티디바이스 관리 소프트웨어(114)의 다양한 조합들과 같은 호스트 소프트웨어(115)의 다양한 소자들을 실행하도록 인에이블된다. 점선 화살표(107D)는 호스트 소프트웨어 ←→ I/O 디바이스 통신, 예를 들어, 드라이버(107), 드라이버(107), 및 애플리케이션(109)을 통해, 드라이버(107)를 통하거나 VF로서 직접적으로 중 어느 하나에 의해, SSD(101)의 인스턴스들 중 하나 또는 그 초과로/그로부터 전송/수신되고, OS(105)의 임의의 하나 또는 그 초과로부터/그로 수신/전송된 데이터를 나타낸다.
OS(105)는 SSD와의 인터페이싱을 위해 (드라이버(107)에 의해 개념적으로 예시된) 드라이버들을 포함하고 그리고/또는 그 드라이버들과 동작하도록 인에이블된다. 다양한 버전들의 윈도우들(예를 들어, 95, 98, ME, NT, XP, 2000, 서버, 비스타, 및 7), 다양한 버전들의 리눅스(예를 들어, Red Hat, Debian, 및 Ubuntu), 및 다양한 버전들의 MacOS(예를 들어, 8, 9 및 X)가 OS(105)의 예들이다. 다양한 실시예들에서, 드라이버들은 표준 인터페이스 및/또는 SATA, AHCI, 또는 NVM 익스프레스와 같은 프로토콜과 동작가능한 표준 및/또는 일반 드라이버들(때때로, "수축 포장(shrinkwrapped)" 또는 "사전 설치(preinstalled)"로 칭함)이거나, 옵션으로는 SSD(101)에 특정한 커맨드들의 사용을 가능하게 하도록 커스터마이징되고 그리고/또는 판매자 특정된다. 일부 드라이브들 및/또는 드라이버들은 애플리케이션(109)과 같은 애플리케이션 레벨 프로그램들이 최적화된 NAND 액세스(때때로 ONA로 칭함) 또는 직접 NAND 액세스(때때로, DNA로 칭함) 기법들을 통해 SSD(101)에 직접적으로 커맨드들을 통신할 수 있게 하기 위한 통과(passthrough) 모드들을 갖고, 이것은 커스터마이징된 애플리케이션이 일반 드라이버를 갖더라도 SSD(101)에 특정된 커맨드들을 사용할 수 있게 한다. ONA 기법들은 비표준 변경자들(힌트들)의 사용, 판매자 특정 커맨드들의 사용, 압축성(compressibility)에 따른 실제 NVM 사용과 같은 비표준 통계의 통신, 및 다른 기법들 중 하나 또는 그 초과를 포함한다. DNA 기법들은 NVM에 매핑되지 않은 판독, 기록, 및/또는 소거 액세스를 제공하는 비표준 커맨드들 또는 판매자 특정 커맨드들의 사용, 예를 들어, I/O 디바이스가 그렇지 않으면 행할 데이터의 포맷팅을 바이패스함으로써 NVM에 더 직접적인 액세스를 제공하는 비표준 또는 벤더 특정 커맨드들의 사용, 및 다른 기법들 중 하나 또는 그 초과를 포함한다. 드라이버의 예들은 ONA 또는 DNA 지원이 없는 드라이버, ONA인에이블된 드라이버, DNA인에이블된 드라이버, 및 ONA/DNA인에이블된 드라이버이다. 드라이버의 추가의 예들은 판매자제공, 판매자개발, 및/또는 판매자강화 드라이버, 및 클라이언트제공, 클라이언트개발, 및/또는 클라이언트강화 드라이버이다.
애플리케이션레벨 프로그램들의 예들은 ONA 또는 DNA 지원이 없는 애플리케이션, ONA인에이블된 애플리케이션, DNA인에이블된 애플리케이션, 및 ONA/DNA인에이블된 애플리케이션이다. 점선 화살표(109D)는 애플리케이션←→ I/O 디바이스 통신(예를 들어, 드라이버를 통한 바이패스 또는 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS를 사용하는 애플리케이션 없이 SSD와 통신하는 ONA인에이블된 애플리케이션 및 ONA인에이블된 드라이버를 나타낸다. 점선 화살표(109V)는 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자들로서 OS 또는 드라이버를 사용하는 애플리케이션 없이 SSD와 통신하는 DNA인에이블된 애플리케이션 및 DNA인에이블된 드라이버를 나타낸다.
일부 실시예들에서, NVM(199)의 하나 또는 그 초과의 부분들은 펌웨어 저장부, 예를 들어, 펌웨어(106)에 대해 사용된다. 펌웨어 저장부는 하나 또는 그 초과의 펌웨어 이미지들(또는 그것의 부분들)을 포함한다. 예를 들어, 펌웨어 이미지는 예를 들어, SSD 제어기(100)의 CPU 코어(172)에 의해 실행된 펌웨어의 하나 또는 그 초과의 이미지들을 갖는다. 다른 예에 있어서, 펌웨어 이미지는 예를 들어, 펌웨어 실행 동안 CPU 코어에 의해 참조되는 상수들, 파라미터 값들, 및 NVM 디바이스 정보의 하나 또는 그 초과의 이미지들을 갖는다. 펌웨어의 이미지들은 예를 들어, 현재의 펌웨어 이미지 및 (펌웨어 업데이트들에 관한) 제로 또는 그 초과의 이전의 펌웨어 이미지들에 대응한다. 다양한 실시예들에서, 펌웨어는 일반, 표준, ONA 및/또는 DNA 동작 모드들을 제공한다. 일부 실시예들에서, 펌웨어 동작 모드들 중 하나 또는 그 초과는 드라이버에 의해 옵션으로 통신되고 그리고/또는 제공되는 키들 또는 다양한 소프트웨어 기법들을 통해 인에이블된다(예를 들어, 하나 또는 그 초과의 API들이 "언락(unlock)"된다).
스위치/구조/중간 제어기가 부족한 일부 실시예들에서, SSD는 외부 인터페이스들(110)을 통해 직접적으로 호스트에 커플링된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기와 같은 다른 제어기들의 하나 또는 그 초과의 중간 레벨들을 통해 호스트에 커플링된다. 일부 실시예들에서, SSD(101)(또는 그것의 변동물들)는 SAS 드라이브 또는 SATA 드라이브에 대응하고, 스위치/구조/중간 제어기(103)는 개시자에 차례로 커플링되는 확장자에 대응하거나, 대안적으로는, 스위치/구조/중간 제어기(103)는 확장자를 통해 개시자에 간접적으로 커플링되는 브리지에 대응한다. 일부 실시예들에서, 스위치/구조/중간 제어기(103)는 하나 또는 그 초과의 PCIe 스위치들 및/또는 구조들을 포함한다.
호스트(102)가 컴퓨팅 호스트(예를 들어, 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DAS 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 및/또는 넷북 컴퓨터)인 실시예들 중 일부와 같은 다양한 실시예들에서, 컴퓨팅 호스트는 하나 또는 그 초과의 로컬 및/또는 원격 서버들(예를 들어, 옵션의 서버들(118))과 (예를 들어, 옵션 I/O & 저장 디바이스들/자원들(117) 및 옵션 LAN/WAN(119)을 통해) 통신하도록 옵션으로 인에이블된다. 예를 들어, 통신은 SSD(101) 소자들 중 임의의 하나 또는 그 초과의 로컬 및/또는 원격 액세스, 관리, 및/또는 사용을 가능하게 한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 이더넷을 통한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 섬유 채널을 통한다. 다양한 실시예들에서, LAN/WAN(119)은 서버 팜에서의 네트워크, 서버 팜들을 커플링하는 네트워크, 메트로영역 네트워크, 및 인터넷 중 임의의 하나 또는 그 초과와 같은 하나 또는 그 초과의 로컬 및/또는 광역 네트워크들을 나타낸다.
다양한 실시예들에서, 하나 또는 그 초과의 NVM들과 결합하여 SSD 제어기 및/또는 컴퓨팅 호스트 플래시 메모리 제어기는 USB 저장 컴포넌트, CF 저장 컴포넌트, MMC 저장 컴포넌트, eMMC 저장 컴포넌트, 썬더볼트 저장 컴포넌트, UFS 저장 컴포넌트, SD 저장 컴포넌트, 메모리 스틱 저장 컴포넌트, 및 xD픽처 카드 저장 컴포넌트와 같은 비휘발성 저장 컴포넌트로서 구현된다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅 호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 제어기가 커플링될 호스트(예를 들어, 도 1b의 호스트(102))에서 구현된다. 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅 호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 하드웨어(예를 들어, 로직 회로), 소프트웨어 및/또는 펌웨어(예를 들어, 드라이버 소프트웨어 또는 SSD 제어 펌웨어), 또는 이들의 임의의 조합을 통해 구현된다. 예를 들어, (예를 들어, 도 1a의 ECC(161) 및/또는 ECCX(135)와 유사한) ECC 유닛의 기능 또는 그와 연관된 기능은 호스트상의 소프트웨어를 통해 부분적으로 및 SSD 제어기에서 펌웨어와 하드웨어의 조합을 통해 부분적으로 구현된다. 다른 예에 있어서, (예를 들어, 도 1a의 리사이클러(151)와 유사한) 리사이클러 유닛의 기능 또는 그와 연관된 기능은 호스트상의 소프트웨어를 통해 부분적으로 및 컴퓨팅 호스트 플래시 메모리 제어기에서 하드웨어를 통해 부분적으로 구현된다.
가변 오버프로비저닝(OP)
도 2는 NVM들을 관리하기 위해 가변 OP를 사용하는 시스템의 다양한 실시예들에 따른, OP 사용용을 포함하는 플래시 메모리(200)의 다양한 호스트 및 시스템 할당들의 선택된 상세들을 예시한다. 호스트 할당은 비휘발성 저장을 위해 플래시 메모리를 사용하는 SSD에 커플링된 호스트로부터/호스트로 수신/제공된 데이터와 같은 호스트 데이터를 저장하기 위해 사용된다. 시스템 할당(예를 들어, 시스템 할당(201))은 예를 들어, SSD 제어기(예를 들어, 도 1a의 맵(141)에서의 정보 중 모두 또는 부분들의 주기적 카피들), SSD, 플래시 메모리, 또는 이들의 임의의 부분들의 관리 또는 동작에 관한 시스템 데이터를 저장하기 위해 사용된다.
도면은 3개의 할당 시나리오들(초기, 동일, 및 증가된 할당(210A, 210B, 및 210C 각각)에 따라 사용된 플래시 메모리(200)를 예시한다. 할당 시나리오들 각각은 상세의 최상위 레벨에서, 할당에 대한 3개의 소자들: 호스트, 시스템, 및 OP를 예시한다. 초기 할당(210A) 및 동일 할당(210B)에서, 호스트, 시스템, 및 OP 할당들은 호스트 할당(202A), 시스템 할당(201), 및 OP(시스템 + 호스트) 할당(203A)으로서 각각 예시된다. 증가된 할당(210C)에서, 호스트, 시스템, 및 OP 할당들은 호스트 할당(202C), 시스템 할당(201), 및 OP(시스템 + 호스트) 할당(203C)으로서 각각 예시된다. 추가의 레벨의 상세에서, 다양한 할당들은 후술하는 바와 같이, 호스트 OP 할당들(205A 및 205B) 및 시스템 OP 할당들(204A, 204B, 및 204C)로서 예시된, 호스트 OP 할당과 시스템 OP 할당 사이의 할당에 따라 다르다.
동작중에, 할당은 시작 상태(예를 들어, 초기 할당(210A))에 따라 시작한다. 이벤트에 응답하여, 에이전트는 상이한 상태(예를 들어, 동일 할당(210B) 또는 증가된 할당(210C))로 할당을 변경한다. 다양한 실시예들은 다양한 동작 모드들을 따른다. 제 1 동작 모드에서, 호스트 할당은 변경되지 않고 유지되고 OP(시스템 + 호스트) 할당은 변경되지 않고 유지되지만, 시스템과 호스트 OP 할당들 사이에서 재분배된다. 제 2 동작 모드에서, 호스트 할당은 시스템과 호스트 OP 할당들 사이에서 재분배되는 OP (시스템 + 호스트) 할당으로의 대응하는 변경들을 가능하게 하도록 변경된다.
제 1 동작 모드에서, 할당이 초기 할당(210A)에 따라 시작된 후에, 할당은 이후 동일 할당(210B)으로 동적으로 변경된다. 최상의 레벨의 상세에서, 할당의 3개의 소자들은 변경되지 않고 유지된다. 구체적으로는, 호스트, 시스템, 및 OP 할당들이 호스트 할당(202A), 시스템 할당(201), 및 OP(시스템 + 호스트) 할당(203A)에서 각각 변경되지 않고 유지된다. 그러나, 추가의 레벨의 상세에서, OP 할당은 일정량 만큼 호스트 OP 할당을 감소시키고 그 양만큼 시스템 OP 할당을 증가시킴으로써 내부적으로 변경된다. 구체적으로는, 호스트 OP 할당은 시스템 OP 할당 델타(208)의 양만큼 호스트 OP 할당(205A)으로부터 호스트 OP 할당(205B)으로 감소하고, 시스템 OP 할당은 시스템 OP 할당 델타(208)의 양만큼 시스템 OP 할당(204A)으로부터 시스템 OP 할당(204B)으로 증가한다.
다른 동작 후에, 할당은 이후, 호스트 OP 할당(205A)인 호스트 OP 할당 및 시스템 OP 할당(204A)인 시스템 OP 할당을 포함하는 초기 할당(210A)으로 복귀하도록 동적으로 변경된다. 제 1 동작 모드에 적용가능한 다른 동작 시나리오들은 도면에 예시한 임의의 특정한 할당들에 제한되지 않고, (호스트 할당 및 시스템 할당이 변경되지 않게 두면서) 호스트 OP와 시스템 OP 사용들 사이의 OP 할당의 할당에서의 임의의 변화를 포함한다.
제 2 동작 모드에서, 할당이 초기 할당(210A)에 따라 시작된 후에, 할당은 이후 증가된 할당(210C)으로 동적으로 변경된다. 최상의 레벨의 상세에서, 할당의 3개의 소자들은, 호스트 할당이 일정 양만큼 감소되고, OP 할당이 그 양만큼 증가되도록 변경된다. 추가의 레벨의 상세에서, 호스트 OP 할당은 변경되지 않고 유지되고 시스템 OP 할당은 그 양만큼 증가한다. 구체적으로는, 호스트 할당은 시스템 OP 할당 델타(209)의 양만큼 호스트 할당(202A)으로부터 호스트 할당(202C)으로 감소하고, OP 할당은 시스템 OP 할당 델타(209)의 양만큼 OP 할당(203A)으로부터 OP 할당(203C)으로 증가한다. 추가의 레벨의 상세에서, 호스트 OP 할당은 호스트 OP 할당(205A)에서 변경되지 않고 유지되고, 시스템 OP 할당은 시스템 OP 할당 델타(209)의 양만큼 시스템 OP 할당(204A)으로부터 시스템 OP 할당(204C)으로 증가한다.
추가의 동작 후에, 할당은 이후, 호스트 OP 할당(205A)인 호스트 OP 할당 및 시스템 OP 할당(204A)인 시스템 OP 할당을 포함하는 초기 할당(210A)으로 복귀하도록 동적으로 변경된다. 제 2 동작 모드에 적용가능한 다른 동작 시나리오들은 도면에 예시한 임의의 특정한 할당들에 제한되지 않고, (호스트 할당의 증가/감소와 함께) 호스트 OP와 시스템 OP 사용들 사이의 OP 할당의 할당에서의 임의의 변화를 포함한다.
제 3 동작 모드(미도시)에서, (제 2 동작 모드에서와 같이) OP 할당에서의 변화를 수용하기 위해 호스트 할당의 변경 대신에(및/또는 그에 부가하여), 시스템 할당이 변경된다. 따라서, 시스템 할당에서의 감소/증가는 시스템 OP 할당에서의 증가/감소를 가능하게 하고, 또는 대안적으로는, 시스템 할당에서의 감소/증가와 결합하여 호스트 할당에서의 감소/증가는 호스트 및/또는 시스템 OP 할당에서의 증가/감소를 가능하게 한다. 제 1 내지 제 3 동작 모드들의 임의의 조합인 다른 동작 모드들이 예상되고, 이들은 다양한 동작 기준 및/또는 특징들에 따라 임의의 제 1 내지 제 3 동작 모드들 사이에서 동적으로 스위칭하는 동작 모드들을 포함한다.
할당 상태의 변경을 초래하는 여러 이벤트들 및 할당 상태 변경에 영향을 미치는 대응하는 에이전트들이 있다. 예를 들어, SSD 제어기(예를 들어, 도 1a의 SSD 제어기(100))는 플래시 메모리(예를 들어, 도 1a의 NVM(199))의 증가(또는 감소)량이 예를 들어, 변경된 압축, 중복제거, 또는 변환을 통한 증가된(또는 감소된) 사용으로 인해 호스트 데이터를 저장하도록 사용되어야 한다는 것을 결정한다. 이에 응답하여, SSD 제어기는 (예를 들어, 도 2의 시스템 OP 할당(204A)으로부터 시스템 OP 할당(204C)으로와 같이) 시스템 OP 할당을 증가(또는 감소)시킨다. 다른 예에 있어서, 플래시 메모리 기반 서브시스템(예를 들어, 도 1b의 SSD(101))내의 프로세서(예를 들어, 도 1a의 CPU(171))가 저장 서브시스템의 저장 인터페이스(예를 들어, 도 1b의 외부 인터페이스들(110))를 통해 커맨드를 수신한다. 커맨드(예를 들어, ATA 호환가능 TRIM 커맨드)는 저장 서브시스템의 특정한 부분들이 미사용이고(예를 들어, 프리(free)이고), 그 안에 저장된 임의의 데이터가 더 이상 필요하지 않다는 것을 특정한다. 이에 응답하여, 프로세서는 호스트 데이터 및/또는 호스트 OP에 대한 플래시 메모리의 할당을 감소시키고 시스템 OP에 대한 플래시 메모리의 할당을 증가시킨다. 다양한 실시예들에서, 호스트 데이터 및/또는 호스트 OP에 대한 할당 감소(및 옵션으로 및/또는 선택적으로 시스템 OP에 대한 증가)는 미사용 부분들이 가비지 수거되고, 재활용되고 그리고/또는 소거될 때까지 연기된다.
또 다른 예에 있어서, SSD 제어기(예를 들어, 도 1a의 스케줄링(193)의 모든 또는 임의의 부분들)내의 모니터링 서브시스템은 호스트 기록들에 대한 시스템 기록들의 대역폭들의 현재의 비율이 이전의 비율에 대하여 변경되었다는 것을 결정한다. 이에 응답하여, 모니터링 서브시스템은 SSD 제어기의 할당 에이전트(예를 들어, 도 1a의 리사이클러(151)의 모든 또는 임의의 부분들)가 현재의 비율에 따라 시스템 OP와 호스트 OP 사이의 할당을 변경할 것을 요청한다. 예를 들어, 현재의 비율이 증가(감소)되었으면, 이후 할당 에이전트에는 시스템 OP를 증가(감소)시키고 그리고/또는 호스트 OP를 감소(증가)시키는 것이 요청된다. 다양한 실시예들에서, 증가(감소)는 현재 비율의 선형 함수, 현재와 이전 비율들의 비율의 선형 함수, 현재 비율의 역함수, 현재와 이전 비율들의 역함수, 현재 비율 및/또는 현재와 이전 비율들의 비율의 비선형 함수, 이들의 임의의 조합, 또는 이들의 임의의 근사값(들)이다.
동적 가변 오버프로비저닝(OP) 및 데이터 엔트로피
도 3a 및 도 3b는 동적으로 변하는 데이터 엔트로피와 관련하여 동적으로 변하는 호스트 및 시스템 OP들의 다양한 실시예들의 선택된 상세들을 예시한다. 호스트 OP 및 시스템 OP는 (동적으로 변하는) 호스트 할당의 하나 또는 그 초과의 호스트할당 함수들뿐만 아니라 (예를 들어, 호스트 데이터 및 시스템 데이터의) (동적으로 변하는) 데이터 레이트들의 하나 또는 그 초과의 데이터레이트할당 함수들로서 동적으로 변한다. 호스트 할당 변동이 설명의 편의를 위해 데이터 엔트로피에 관하여 선형으로서 예시되어 있다.
예를 들어, 호스트 할당이 일정 양만큼 감소/증가하면, 이후 그 양이 결합된 OP에/OP로부터 할당되고, 결과적인 결합된 OP가 하나 또는 그 초과의 데이터 레이트들의 하나 또는 그 초과의 데이터레이트 할당 함수들에 따라 호스트 OP와 시스템 OP 사이에 동적으로 할당된다. 데이터레이트할당 함수들의 예들은, 선형 함수, 역함수, 비선형 함수, 또는 이들의 임의의 조합이다. 데이터 레이트들의 예들은 호스트 데이터 레이트, 시스템 데이터 레이트, 플래시 메모리에 대한 호스트 데이터 기록들의 대역폭, 플래시 메모리에 대한 시스템 데이터 기록들의 대역폭, 플래시 메모리에 대한 총 기록들의 대역폭, 또는 이들의 임의의 조합들이다.
도 3a 및 도 3b에 예시되어 있는 바와 같이, (결합된) OP 할당은 대응하는 호스트 할당 동적 변동으로 인해 동적으로 변한다. 이후, 동적으로 변하는 (결합된) OP 할당은 예를 들어, 플래시 메모리에 대한 시스템 데이터 기록들의 대역폭 및 플래시 메모리에 대한 호스트 데이터 기록들의 대역폭의 비율에 따라 시스템 OP와 호스트 OP 사이에 동적으로 가변 할당된다. 따라서, (동일한 비율에서) 호스트 할당의 특정한 부분적 감소/증가를 위해, 시스템 OP 할당은 특정한 부분에 따라 증가/감소한다. 다양한 실시예들에서, 비율은 옵션으로 스케일링되고 그리고/또는 오프셋이 호스트 OP와 시스템 OP 사이의 할당에 포함된다. 일부 실시예들에서, 할당은 각각의 최소/최대값들 및/또는 각각의 할당 정량 중 하나 또는 그 초과에 더 따른다.
양 도면들에 공통으로, 수평축은 좌(0%)에서 우(100%)로 증가하는 데이터 엔트로피(320)를 나타낸다. 더 낮은 데이터 엔트로피가 예를 들어, 상대적으로 매우 압축가능하며, 중복제거를 통해 상대적으로 매우 컴팩트가능하고 그리고/또는 상대적으로 덜 랜덤한 호스트 데이터에 대응한다. 더 높은 데이터 엔트로피가 예를 들어, 상대적으로 매우 압축불가능하며, 상대적으로 낮게 중복적(따라서, 중복제거를 통해 매우 컴팩트가능하지 않음)이고 그리고/또는 상대적으로 더 랜덤한 호스트 데이터에 대응한다. 2개의 특정한 데이터 엔트로피 값들이 G%(330G) 및 H%(330H)로서 예시되어 있다.
다양한 실시예들에서, 데이터 엔트로피는 개념적이고, 예를 들어, 데이터 엔트로피의 명시적인 측정들은 이루어지지 않는다. 대신에, 데이터 엔트로피는 호스트 데이터 사이즈가 호스트 데이터를 저장하기 위해 사용된 플래시 메모리의 양을 변경하는 변하는 압축, 중복제거, 또는 다른 변환들에 따라 어떻게 변하는지의 표현이다. 예를 들어, 호스트 데이터를 저장하기 위해 사용된 플래시 메모리는 데이터 엔트로피가 증가(증가)함에 따라 증가(감소)한다. 예를 들어, 데이터 엔트로피와 호스트 데이터 사이즈(예를 들어, 호스트 데이터 할당으로서) 사이의 관계를 예시할 때, 데이터 엔트로피에 대한 스케일은 선형, 로그, 제곱의 법칙, 임의의 변수, 또는 이들의 임의의 조합들로서 해석된다.
수직축은 바닥(0%)으로부터 상부(100%)로 증가하는 물리적 사이즈(310)를 나타낸다. 수직축을 따른 길이는 사용되고 그리고/또는 사용되도록 할당된 플래시 메모리에 대응하고, 예를 들어, 더 짧은/더 긴 길이가 주어진 타입의 정보(예를 들어, 호스트 데이터 또는 시스템 데이터)를 저장하기 위해 사용된 더 적은/더 많은 플래시 메모리에 대응한다. 일부 실시예들에서, 특정한 길이가 특정한 사용(예를 들어, 호스트 데이터, 시스템 데이터, 또는 OP)에 할당된 플래시 메모리의 다수의 유닛들에 대응한다.
데이터 엔트로피에 관하여 변하는 호스트 할당 함수가 호스트 할당(302V)으로서 예시되어 있다. 데이터 엔트로피가 증가할 때, 대응하는 호스트 데이터를 저장하기 위해 사용된 플래시 메모리의 물리적 사이즈는 (예를 들어, 선형으로) 증가하고, 그 반대의 경우도 가능하다. 데이터 엔트로피가 증가(감소)할 때 고정되어 유지되는 불변 시스템 할당 함수가 시스템 할당(301)으로서 예시되어 있다. 데이터 엔트로피(또는 시스템 데이터 사이즈 및/또는 호스트 데이터 사이즈와 연관된 임의의 하나 또는 그 초과의 메트릭들)가 증가(감소)할 때 증가(감소)하는 것과 같이, 시스템 할당이 데이터 엔트로피에 따라 변하는 실시예들(미도시)이 예상된다.
도 3a는 비율의 제 1 값의 선형 함수에 대응하는 시스템 OP 할당(가변)(303V1)의 제 1 동적으로 변하는 할당의 2개의 "동작 포인트들"(하나는 G%(330G)에 대응하고 다른 하나는 H%(330H)에 대응함)을 예시한다. 도 3b는 비율의 제 2 값의 선형 함수에 대응하는 시스템 OP 할당(가변)(303V2)의 제 2 동적으로 변하는 할당의 2개의 "동작 포인트들"(하나는 G%(330G)에 대응하고 다른 하나는 H%(330H)에 대응함)을 예시한다. 비교를 위해, 도 3a는 (도 3b에 상세된 2개의 동작 포인트들을 갖는) 시스템 OP 할당(가변)(303V2)의 파선을 포함하고, 도 3b는 (도 3a에 상세된 2개의 동작 포인트들을 갖는) 시스템 OP 할당(가변)(303V1)의 파선을 포함한다.
다양한 실시예들에서, 비율은 호스트 레이트에 대한 시스템 레이트의 비율이다. 다양한 실시예들에서, 시스템 및/또는 호스트 레이트는 현재 및/또는 이전 데이터 레이트 및/또는 기록 대역폭의 함수이다. 예를 들어, 비율은 시간 간격에 걸쳐 평균된 호스트 기록 데이터 대역폭에 의해 분할된 시간 간격에 걸쳐 평균된 시스템 기록 데이터 대역폭이다. 다른 예에 있어서, 비율은 이전 시점에서의 호스트 데이터 레이트에 의해 분할된 이전 시점에서의 시스템 데이터 레이트이다.
도 3a에서, (G%(330G)에 대응하는) 제 1 동작 포인트는 호스트 할당(302V) 및 시스템 OP 할당(가변)(303V1)과 G% 데이터 엔트로피의 교점에 관련된다. 제 1 동작 포인트는 호스트 OP 할당(305G1)과 시스템 OP 할당(304G1) 사이에 할당된 호스트 할당(302G1) 및 (결합된) OP 할당(303G1)을 포함한다. (H%(330H)에 대응하는) 제 2 동작 포인트는 호스트 할당(302V) 및 시스템 OP 할당(가변)(303V1)과 H% 데이터 엔트로피의 교점에 관련된다. 제 2 동작 포인트는 호스트 OP 할당(305H1)과 시스템 OP 할당(304H1) 사이에 할당된 호스트 할당(302H1) 및 (결합된) OP 할당(303H1)을 포함한다.
제 1 및 제 2 동작 포인트들을 비교하면, 데이터 엔트로피가 G%로부터 H%로 증가할 때, 호스트 데이터를 저장하기 위해 사용된 플래시 메모리는 호스트 할당(302G1)으로부터 호스트 할당(302H1)으로 증가한다. 이후, 더 적은 플래시 메모리가 OP 사용을 위해 이용가능할 때, 이에 응답하여, (결합된) OP 할당은 (결합된) OP 할당(303G1)으로부터 (결합된) OP 할당(303H1)으로 감소하고, 호스트 OP 및 시스템 OP의 대응하는 할당들은 감소된다. 구체적으로는, 호스트 OP 할당(305G1)이 호스트 OP 할당(305H1)으로 감소되고, 시스템 OP 할당(304G1)이 시스템 OP 할당(304H1)으로 감소된다. 호스트 OP와 시스템 OP 할당으로의 감소들은 호스트 데이터 대역폭에 대한 시스템 기록 대역폭의 비율과 같은 비율의 제 1 값에 따라 호스트 OP와 시스템 OP 사이의 OP 자원들의 할당에 따른다. 할당은 호스트 할당(302V)의 선형 함수로서 예시된 시스템 OP 할당(가변)(303V1)에 의해 개념적으로 표현된다.
도 3b는 도 3a에 의해 예시된 기법들과 유사한 기법들을 예시한다. 제 1 및 제 2 동작 포인트들은 호스트 할당(302V) 및 시스템 OP 할당(가변)(303V2)과 G% 및 H% 데이터 엔트로피들의 각각의 교점들에 관련된다. 제 1 동작 포인트는 호스트 OP 할당(305G2)과 시스템 OP 할당(304G2) 사이에 할당된 호스트 할당(302G2) 및 (결합된) OP 할당(303G2)을 포함한다. 제 2 동작 포인트는 호스트 OP 할당(305H2)과 시스템 OP 할당(304H2) 사이에 할당된 호스트 할당(302H2) 및 (결합된) OP 할당(303H2)을 포함한다.
도 3a와 유사하게, 도 3b에 예시된 바와 같이, (예를 들어, G%로부터 H%로의) 데이터 엔트로피의 증가는 (예를 들어, 호스트 할당(302G2)으로부터 호스트 할당(302H2)으로의) 호스트 할당의 증가를 발생시키고, 이후, (예를 들어, 시스템 OP 할당(304G2)으로부터 시스템 OP 할당(304H2)으로의) 시스템 OP 할당들과 (예를 들어, 호스트 OP 할당(305G2)으로부터 호스트 OP 할당(305H2)으로의) 호스트 OP 할당들 사이에 재할당되는 (예를 들어, (결합된) OP 할당(303G2)으로부터 (결합된) OP 할당(303H2)으로의) (결합된) OP 할당으로의 감소를 차례로 발생시킨다. 시스템 OP와 호스트 OP 할당으로의 감소들은 도 3a와 연관된 비율의 제 2 값에 따라 시스템 OP와 호스트 OP 사이의 OP 자원들의 할당에 따른다.
도 3a를 도 3b에 비교하면, 시스템 OP 할당(가변)(303V1)의 경사는 시스템 OP 할당(가변)(303V2)의 경사보다 더 작고, 이는 비율의 제 2 값보다 더 작은 비율의 제 1 값에 대응한다. 비율이 호스트 데이터 레이트에 의해 분할된 시스템 데이터 레이트인 실시예들을 고려한다. 시스템 데이터 레이트가 동적으로 변하는 사용 시나리오에서, 호스트 데이터 레이트는 변화하지 않는 동안, 시스템 OP 할당(가변)(303V1)은 시스템 OP 할당(가변)(303V2)보다 더 낮은 시스템 데이터 레이트에 대응한다. 따라서, 시스템 데이터 레이트가 (일정한 호스트 데이터 레이트에 관하여) 동적으로 증가할 때, 시스템 OP 할당은 시스템 OP 할당(304G1)으로부터 시스템 OP 할당(304G2)으로 (또는 대안적으로는 시스템 OP 할당(304H1)으로부터 시스템 OP 할당(304H2)으로) 증가한다. 대응하게는, 호스트 OP 할당은 호스트 OP 할당(305G1)으로부터 호스트 OP 할당(305G2)으로 (또는 대안적으로는 호스트 OP 할당(305H1)으로부터 호스트 OP 할당(305H2)으로) 감소한다. 대안적으로는, 호스트 데이터 레이트가 동적으로 변하는 사용 시나리오에서, 시스템 데이터 레이트는 변화하지 않는 동안, 상술한 시스템 및 호스트 OP 할당 변화들은 유사하게 발생한다(시스템 OP 할당(가변)(303V1)은 시스템 OP 할당(가변)(303V2)보다 더 높은 호스트 데이터 레이트에 대응한다.
(도 3a 및 도 3b의) 제 1 및 제 2 동작 포인트들뿐만 아니라 G%로부터 H%로 증가하는 데이터 엔트로피의 상술한 설명은 오직 예들이다. 다른 예에 있어서, 일부 사용 시나리오들에서, 데이터 엔트로피는 H%로부터 G%로 감소하고, 플래시 메모리 할당은 제 2 동작 포인트(H%)를 따른 것으로부터 제 1 동작 포인트(G%)를 따르는 것으로 변경되어서, 시스템 OP 사용에 대한 플래시 메모리의 할당이 증가한다. 추가로, 데이터 엔트로피 축을 따른 다수의 가능한 동작 포인트들이 가능하고(미도시), 오직 구현 상세들에 의해 제한된다. 더 추가로, 일부 환경들에서, 동작 시나리오들은 예를 들어, SSD 및/또는 SSD 제어기의 다양한 동작 특징들에 동적으로 기초하는 다양한 동작 시나리오들 및 대응하는 동작 포인트들 중에서 동적으로 스위칭한다.
비교 및 참조를 위해, 도 3a 및 도 3b는 고정(예를 들어, 데이터 엔트로피에 관하여 불변)된 시스템 할당(고정)(301F)을 동일하게 예시한다. 일부 실시예들 및/또는 사용 시나리오들은 동작 모드 및/또는 동작 서브모드를 포함하고, 여기서, 시스템 OP 자원들이 시스템 OP 할당(고정)(304F)에 의해 개념적으로 예시된 바와 같이, 고정된다(예를 들어, 데이터 엔트로피에 관하여 불변). 일부 실시예들에서, 시스템 OP 할당(고정)(304F)은 최소 시스템 OP 할당의 모두 또는 일부를 나타낸다.
도 3a 및 도 3b는 데이터 엔트로피에서의 동적 변동에 의해 차례로 영향을 받는 호스트 할당의 동적 변동의 결과로서, (예를 들어, 호스트 OP와 시스템 OP 사이의 OP 자원들의 동적 할당을 통한) 동적으로 변하는 시스템 OP의 여러 예들의 양태들을 예시한다. 양태들 중 일부는 도면들 중 어느 하나 단독에 관하여 개념적으로 표현되고, 양태들 중 일부는 도면들 양자와 조합하여 개념적으로 표현된다.
도 3a 단독 (또는 도 3b 단독)에 관하여, 동적으로 변하는 시스템 OP는 (다양한 데이터 엔트로피 동작 포인트들에 대응하는) 다양한 호스트 할당들 사이의 동적 변화들에 관하여 개념적으로 표현되지만, 호스트 데이터 레이트에 대한 시스템 데이터 레이트의 비율은 고정되어 유지된다. 시스템 OP 할당(가변)(303V1)에 의해 표현된 시스템 OP 할당 함수 및 호스트 할당(302V)과의 교점과 같은, G% 엔트로피에 대응하는 호스트 할당에서 동작이 시작하는 것을 고려한다. 이후, 할당을 계속하면서 H% 엔트로피에 대응하는 호스트 할당에서의 동작으로 천이함으로써 계속되고 그리고/또는 시스템 OP 할당(가변)(303V1)에 의해 표현된 함수에 따라 시스템 OP 자원들을 할당한다. 이후, 할당을 계속하면서 G% 엔트로피에 대응하는 호스트 할당에서의 동작으로 역으로 천이함으로써 계속되고 그리고/또는 시스템 OP 할당(가변)(303V1)에 의해 표현된 함수에 따라 시스템 OP 자원들을 할당한다. 시스템 OP는 데이터 엔트로피 동작 포인트들에서의 변화들과 차례로 관련되는 호스트 할당에서의 변화들에 응답하여, 시스템 OP 할당(304G1)으로부터 시스템 OP 할당(304H1)으로 동적으로 변하고, 이후 시스템 OP 할당(304G1)으로 역으로 변한다.
도 3b와 결합하여 도 3a에 관하여, 동적으로 변하는 시스템 OP는 시스템 및/또는 호스트 데이터 레이트들 및/또는 기록 대역폭들에서의 차이들 및/또는 변화들, 할당을 결정하기 위해 사용된 하나 또는 그 초과의 함수들, 또는 이들의 임의의 조합에 기초하여 호스트 OP와 시스템 OP 사용들 사이의 OP 자원들의 할당 사이의 동적 변화들에 관하여 개념적으로 표현된다. G% 데이터 엔트로피 및 시스템 OP 할당(가변)(303V1)의 도 3a에 예시된 바와 같은 컨텍스트에서 동작이 시작하는 것을 고려한다. 이후, G% 데이터 엔트로피 및 시스템 OP 할당(가변)(303V2)의 도 3b에 의해 예시된 바와 같은 컨텍스트에서의 동작으로 천이함으로써 계속된다. 이후, G% 데이터 엔트로피 및 시스템 OP 할당(가변)(303V1)의 도 3a에 예시된 바와 같은 컨텍스트에서의 동작으로 역으로 천이함으로써 계속된다. 시스템 OP는 예를 들어, 시스템 데이터 기록 대역폭, 호스트 데이터 기록 대역폭, 및/또는 이들의 비율(들)에서의 변화들에 응답하여, 시스템 OP 할당(304G1)으로부터 시스템 OP 할당(304G2)으로 동적으로 변하고, 이후 시스템 OP 할당(304G1)으로 역으로 변한다.
도 3b와 결합하여 도 3a에 관하여, 동적으로 변하는 시스템 OP는 또한 시스템 및/또는 호스트 데이터 레이트들 및/또는 기록 대역폭들 및/또는 이들이 비율들에서의 차이들 및/또는 변화들에 기초하여 호스트 OP와 시스템 OP 사용들 사이의 OP 자원들의 할당 사이의 동적 변화들과 결합하여 (다양한 데이터 엔트로피 동작 포인트들에 대응하는) 다양한 호스트 할당들 사이의 동적 변화들에 관하여 개념적으로 표현된다. G% 데이터 엔트로피 및 시스템 OP 할당(가변)(303V1)의 도 3a에 예시된 바와 같은 컨텍스트에서 동작이 시작하는 것을 고려한다. 이후, H% 데이터 엔트로피 및 시스템 OP 할당(가변)(303V2)의 도 3b에 의해 예시된 바와 같은 컨텍스트에서의 동작으로 천이함으로써 계속된다. 이후, G% 데이터 엔트로피 및 시스템 OP 할당(가변)(303V1)의 도 3a에 예시된 바와 같은 컨텍스트에서의 동작으로 역으로 천이함으로써 계속된다. 시스템 OP는 예를 들어, (예를 들어, 데이터 엔트로피에 관한) 호스트 할당, 시스템 데이터 기록 대역폭, 호스트 데이터 기록 대역폭, 및/또는 이들의 비율들에서의 변화들에 응답하여, 시스템 OP 할당(304G1)으로부터 시스템 OP 할당(304H2)으로 동적으로 변하고, 이후 시스템 OP 할당(304G1)으로 역으로 변한다.
호스트 OP와 시스템 OP 사용들 사이의 OP 자원들의 할당이 호스트로부터 수신될 때의 데이터 패턴들에 기초하는 다른 실시예들이 예상된다. 예를 들어, 호스트가 순차적 어드레스들에 대한 일련의 기록들을 수행하면, 이후 호스트와 시스템 OP 사용들 사이의 할당은 측정된 호스트 데이터 레이트의 (1(unity)보다 더 적은) 부분인 감소된 호스트 데이터 레이트를 사용하여 계산되어서, 측정된 호스트 데이터 레이트가 할당을 위해 사용된 경우보다 더 적은 호스트 데이터 OP가 할당된다. 다른 예에 있어서, 호스트가 랜덤 어드레스들에 대한 일련의 기록들을 수행하면, 이후 호스트와 시스템 OP 사용들 사이의 할당은 측정된 시스템 데이터 레이트의 배수인 증가된 시스템 데이터 레이트를 사용하여 계산되어서, 측정된 시스템 데이터 레이트가 할당을 위해 사용된 경우보다 더 많은 시스템 데이터 OP가 할당된다. 배수는 1보다 크지만, 반드시 정수는 아니다.
호스트 OP와 시스템 OP 사용들 사이의 OP 자원들의 할당이 플래시 메모리의 유닛들이 순간 사용에 기초하는 다른 실시예들이 예상된다. 예를 들어, 대량의 유닛들이 시스템(또는 대안적으로는 호스트) 데이터를 저장하기 위해 사용되는 경우에, 이후 시스템(또는 대안적으로는 호스트) OP의 할당이 일시적으로 부스팅된다.
도 3a 및 도 3b(뿐만 아니라 도 2)에 의해 표현된 일부 실시예들의 일부 양태들은 개념적으로 예시되어 있다. 상기 언급한 도면들에서, 다양한 할당들은 연속적이든 또는 아니든 할당된 플래시 메모리의 저장의 각각의 총량들을 나타낸다. 예를 들어, 시스템 할당(201)은 플래시 메모리의 복수의 비연속 유닛들이다. 다른 예에 있어서, 호스트 할당(302G1) 및 (결합된) OP 할당(303G1)은 각각 플래시 메모리의 각각의 복수의 비연속 유닛들이다.
(도 2, 도 3a, 및/또는 도 3b에 부분적으로 예시된 바와 같은) 일부 실시예들에서, 부가의 플래시 메모리(미도시)는 OP를 증가시키는 자원으로서 이용가능하거나, 대안적으로는, 플래시 메모리의 하나 또는 그 초과의 부분들의 고장이 OP의 감소를 발생시킨다. 일부 실시예들에서, 플래시 메모리는 미도시된 사용들을 위해 따로 홀딩된다. 예를 들어, 플래시 메모리의 하나 또는 그 초과의 플래시 다이의 하나 또는 그 초과의 부분들은 플래시 메모리의 고장 부분들의 교체를 위해 예약된다.
(도 2, 도 3a, 및/또는 도 3b에 의해 부분적으로 예시된 바와 같은) 일부 실시예들에서, 호스트 데이터 및/또는 시스템 데이터의 모두 또는 임의의 부분들은 변경되지 않고, 압축되고, 중복제거되고, 암호화되고, 가역 변환의 임의의 형태에 영향을 받거나, 이들의 임의의 조합의 플래시 메모리에 저장된다. 일부 실시예들에서, 플래시 메모리에 저장된 정보는 일부 실시예들에서 하위 레벨 및/또는 상위 레벨 리던던시 정보에 의해 보호되는 정보에 부가하여, 하위 레벨 리던던시 정보(예를 들어, 퍼페이지(perpage) ECC) 및/또는 상위 레벨 리던던시 정보(예를 들어, RAID형 리던던시 정보)를 포함한다.
오버프로비저닝(OP) 자원 유닛 (재)할당 및 라이프 사이클
도 4는 도 2, 도 3a, 및 도 3b 중 임의의 도면에 관한 하나 또는 그 초과의 컨텍스트에서와 같이, NVM들을 관리하기 위한 가변 OP의 컨텍스트에서의 OP 자원들의 할당 및/또는 (재)할당의 실시예의 흐름도(400)를 예시한다. 흐름은 환경들이 재할당의 수행에 대응하는지 계산함으로써 시작한다((재)할당 조건들이 존재하는지 결정(401), 후속하여 (재)할당?(402)). 환경들이 존재하지 않으면, 이후 흐름은 계산을 반복하기 위해 루프백한다. 환경들이 존재하면, 이후 (재)할당이 다양한 실시예들에 따라 요청되고, 큐잉되거나 즉시 실행된다((재)할당을 수행(403)).
다양한 실시예들에서, 할당 및/또는 (재)할당 조건들이 존재하는지의 여부의 계산(예를 들어, (재)할당 조건들이 존재하는지 결정(401) 및/또는 (재)할당의 수행(403))은 다양한 특정한 시점들 중 임의의 하나 또는 그 초과에서 수행된다. 다양한 특정한 시점들의 예들은, 하나 또는 그 초과의 플래시 메모리 유닛들이 특정한 사용으로서(예를 들어, 시스템 OP 또는 호스트 OP 사용용으로서) 할당되거나 마크될 때이다. 다른 예들은 유닛들이 가비지 회수, 재활용, 또는 소거와 같은 다양한 동작들을 위해 종료(exit)하고, 입력(enter)하거나 선택될 때이다. 다른 예들은 유닛들이 호스트 유닛 상태, 시스템 유닛 상태, 또는 프리 큐우(free queue)를 입력할 때 또는 유닛들이 하나의 관리 상태로부터 다른 관리 상태로 천이할 때이다. 다른 예들은 특정한 사용(예를 들어, 시스템 사용 또는 호스트 사용)에 이용가능한 다수의 유닛들이 각각의 소정의 및/또는 프로그램에 따라 결정된 임계값들(예를 들어, 하이 또는 로우 워터마크들)에 도달할 때이다.
도 2, 도 3a, 도 3b, 및 도 4 중 임의의 하나 또는 그 초과에 의해 개념적으로 표현된 다양한 실시예들에서, 할당 및/또는 (재)할당 조건들이 존재하는지의 여부의 계산(예를 들어, (재)할당 조건들이 존재하는지 결정(401))은 유닛이 특정한 사용(예를 들어, 호스트 또는 시스템)에 대한 것으로서 마크될 때 구현된다.
도 2, 도 3a, 도 3b, 및 도 4 중 임의의 하나 또는 그 초과에 의해 개념적으로 표현된 다양한 실시예들에서, 할당 변화, 예를 들어, 할당 및/또는 (재)할당이 특정한 사용을 위해 플래시 메모리의 미사용 및/또는 비어 있는 유닛들을 마킹할 때, 예를 들어, 호스트 OP 사용 대 시스템 OP 사용용으로서 가비지 회수를 종료하는 플래시 메모리 유닛을 마킹하거나, 호스트 OP 사용 대 시스템 OP 사용용으로서 프리 큐우에 입력(entry)시에 플래시 메모리를 마킹할 때 타겟으로서 구현된다. 예를 들어, 도 4에 의해 표현된 일부 실시예들에서, 재할당의 수행은 멀티스테이지 프로세스이다. 타겟 (재)할당이 결정되고 저장되며, 이후 플래시 메모리 유닛들이 가비지 회수를 종료할 때, 종료 유닛들은 저장된 (재)할당에 따라 사용가능한 것으로서 마킹된다.
도 5는 R블록과 같은 플래시 메모리의 관리 유닛의 라이프 사이클의 실시예의 흐름도(500)를 예시한다. 플래시 메모리의 모두 또는 임의의 부분들은 유닛들의 집합으로서 관리되고, 흐름도는 플래시 유닛 관리 에이전트가 유닛들 각각의 상태를 어떻게 관리하는지를 나타낸다. 개념적으로, 흐름도(500)는 관리되는 유닛들 각각에 대해 예시되는 상태 머신을 나타낸다. 아래의 설명에서 간결함을 위해, 유닛을 특정한 상태로 "설정" 또는 유닛을 특정한 상태에 있는 것으로서 "마킹"과 같은 용어는 유닛과 연관된 관리 상태를 특정한 상태(또는 특정한 상태를 나타내는 하나 또는 그 초과의 값들)로 설정하는 약칭이다.
계속 설명하면, (예를 들어, 파워온 리셋, 리셋 커맨드의 수신, 또는 이들의 임의의 조합에 응답한) 초기화에서, 플래시 메모리의 유닛들 모두는 유닛들이 사용을 위해 이용가능하다는 것을 나타내는 초기 상태로 설정된다(프리(501)). 궁극적인 할당을 위한 유닛을 준비하는 요청에 응답하여, 유닛은 (예를 들어, 가비지 회수, 재활용, 및/또는 소거를 적어도 부분적으로 통해) 할당을 위해 준비되고, 즉시 할당을 위한 가용성을 나타내도록 설정된다(프리 큐우(502)). 일부 실시예들에서, 즉시 할당을 위한 가용성은 할당 천이 마킹에 의해 개념적으로 표시될 때(큐우 할당(512)), 하나 또는 그 초과의 프리 큐우들 중 하나에 있는 유닛에 대응한다.
프리 큐우들 중 하나에서, 일단 유닛이 호스트 사용(호스트 할당(513)) 또는 시스템 사용(시스템 할당(514))과 같은 사용에 따라 마킹된다. 이후, 유닛은 호스트 사용(호스트 유닛(503)) 또는 시스템 사용(시스템 유닛(504))에 대한 마킹에 따라 사용된다. 재활용 또는 가비지 회수를 통한 재생을 위한 특정한 유닛의 선택에 응답하여, 특정한 유닛이 재생되고 특정한 유닛이 사용을 위해 이용가능하다는 것을 나타내도록 설정된다(프리(501)). 가용성을 나타내기 위한 설정은 유닛이 재생을 위해 선택되기 전에 호스트 사용(호스트 유닛 재활용(515))을 위해 사용되는지의 여부, 또는 유닛이 재생을 위해 선택되기 전에 시스템 사용(시스템 유닛 재활용(516))을 위해 사용되는지의 여부가 발생한다.
일부 실시예들에서, 재생을 위한 유닛의 선택은 개념적으로는 2스테이지 프로세스이다. 먼저, (예를 들어, 호스트 유닛(503)에 대응하는) 호스트 데이터를 저장하기 위해 사용되는 유닛 또는 (예를 들어, 시스템 유닛(504)에 대응하는) 시스템 데이터를 저장하기 위해 사용되는 유닛과 같은 재생을 위한 유닛의 타입의 선택이 이루어진다. 선택은 도 2, 도 3a, 또는 도 3b에 관하여 설명한 바와 같은 (동적으로) 가변 OP에 기초한다. 다음으로, 선택된 카테고리의 유닛들 중 적어도 일부내에서, 재생을 위한 유닛에 대한 선택이 이루어진다.
일부 대안의 실시예들에서, 프리 큐우들이 없고, 유닛은 중간 큐잉 상태(프리 큐우(502))를 통과하지 않고 사용을 위해 이용가능한 것(프리(501))으로부터 호스트 유닛(호스트 유닛(503))으로서 또는 시스템 유닛(시스템 유닛(504))으로서의 사용에 따라 사용되는 것으로서 즉시 천이하는 것으로서 마킹된다. 일부 대안의 실시예들에서, 호스트 유닛들 또는 시스템 유닛들로서 사용될 유닛들에 따른 큐우들의 2개의 카테고리들이 있고, 유닛이 호스트 유닛 또는 시스템 유닛으로서 사용될지의 여부에 관한 판정은, 유닛이 호스트 카테고리화 또는 시스템 카테고리화를 갖는 큐우에 따라 사용을 위해 이용가능한 것(프리(501))으로부터 즉시 할당을 위해 이용가능한 것으로 즉시 천이하는 것으로 마킹될 때 이루어진다.
다양한 실시예들 및/또는 사용 시나리오들에서, 도 2, 도 3a, 도 3b, 및 도 4 중 임의의 하나 또는 그 초과에 관한 다양한 동작들은 도 5에 예시한 다양한 천이들(또는 도 5와 관련하여 설명한 대안의 실시예들)에 응답하여 및/또는 그와 결합하여 수행된다. 다양한 동작들은 (동적) 할당(들), (동적) 재할당(들), 뿐만 아니라 할당들/재할당들에 관한 계산들 및 결정들을 포함한다.
예를 들어, 도 2의 호스트 할당(202A)과 호스트 할당(202C) 사이에 예시한 바와 같은 동적으로 변하는 호스트 할당은, 유닛이 호스트 유닛(호스트 할당(513))으로서 사용될 프리 큐우들 중 하나에 존재하는 것으로서 마킹될 때 수행된다. 다른 예에 있어서, 도 2의 시스템 OP 할당(204A)과 시스템 OP 할당(204B) 사이에 예시된 바와 같이 호스트 OP 할당과 시스템 OP 할당 사이의 OP 자원들의 동적으로 변하는 할당은, 유닛이 시스템 카테고리화를 갖는 프리 큐우에 입력하는 것으로서 마킹될 때 수행된다. 또 다른 예에 있어서, 도 3a의 시스템 OP 할당(304G1)과 도 3b의 시스템 OP 할당(304G2) 사이에 예시된 바와 같은 호스트 OP 할당과 시스템 OP 할당 사이의 OP 자원들의 동적으로 변하는 할당은, 유닛이 프리 큐우들 중 하나를 종료시에 호스트 사용(호스트 유닛(503)) 또는 시스템 사용(시스템 유닛(504))용인 것으로 마킹될 때 수행된다.
또 다른 예에 있어서, 재할당할지의 여부의 계산(예를 들어, 도 4의 (재)할당 조건들이 존재하는지 결정(401))은 유닛이 재생을 위해 선택되고 재활용된다(예를 들어, 호스트유닛 재활용(515) 또는 시스템 유닛 재활용(516))는 요청에 따라 수행된다. 일부 실시예들에서, 재생을 위해 선택된 유닛의 카테고리화는 재할당의 결과와 관계없이 선택된 호스트 유닛 또는 시스템 유닛과 같이, (재)할당(예를 들어, (재)할당 수행(403))의 결과와 독립적이다. 다른 실시예들에서, 재생을 위해 선택된 유닛의 카테고리화는 재할당 결과가 더 적은 호스트 유닛들이 호스트 OP 사용에 할당되어야 한다는 것을 나타낼 때 선택된 호스트 유닛과 같이, (재)할당(예를 들어, (재)할당 수행(403))의 결과에 적어도 부분적으로 기초한다.
다양한 실시예들에서, 도 2, 도 3a, 도 3b, 및 도 4의 하나 또는 그 초과의 소자들은 도 1a의 하나 또는 그 초과의 소자들에 대응하거나 관련된다. 예를 들어, 도 2의 플래시 메모리(200)는 NVM(199)에 대응한다. 다른 예에 있어서, 도 3a 및 도 3b의 물리적 사이즈(310)에 따른 길이는 NVM(199)의 저장량에 대응한다. 또 다른 예에 있어서, 도 2, 도 3a, 도 3b, 및/또는 도 4에 관하여 설명한 할당 동작들 또는 할당 관련 동작들 중 하나 또는 그 초과는 리사이클러(151) 및 CPU(171) 중 하나 또는 그 초과의 하나 또는 그 초과의 부분들에 의해 또는 그것의 제어하에서 수행된다. 또 다른 예에 있어서, 도 5의 상태 천이들 중 하나 또는 그 초과는 맵(141), 리사이클러(151), 및 CPU(171) 중 하나 또는 그 초과의 하나 또는 그 초과의 부분들에 의해 또는 그것의 제어하에서 수행된다. 또 다른 예에 있어서, 도 2, 도 3a, 또는 도 3b에 관하여 참조한 바와 같은 호스트 데이터 레이트(들)의 측정은 호스트 인터페이스(111)의 모두 또는 임의의 부분(들)을 통해 수행된다. 또 다른 예에 있어서, 도 2, 도 3a, 또는 도 3b에 관하여 참조한 바와 같은 호스트 및/또는 시스템 데이터 레이트(들)의 측정은 디바이스 인터페이스 로직(191) 및/또는 스케줄링(193) 중 모두 또는 임의의 부분(들)을 통해 수행된다.
예시적인 구현 기법들
일부 실시예들에서, 예를 들어, 플래시 메모리들, 컴퓨팅 호스트 플래시 메모리 제어기, 및/또는 (도 1a의 SSD 제어기(100)와 같은) SSD 제어기, 및 프로세서, 마이크로프로세서, 시스템온칩, 응용 주문형 집적 회로, 하드웨어 가속기, 또는 상기 언급한 동작들 중 모두 또는 부분들을 제공하는 다른 회로의 부분들로 비휘발성 저장부를 관리하는 가변 OP를 구현하는 시스템에 의해 수행된 동작들 중 모두 또는 부분들의 다양한 조합들이 컴퓨터 시스템에 의한 프로세싱과 호환가능한 사양에 의해 특정된다. 이 사양은 하드웨어 서술 언어들, 회로 기술들(descriptions), 넷리스트 기술들, 마스크 기술들, 또는 레이아웃 기술들과 같은 다양한 기술들에 따른다. 예시적인 기술들은 Verilog, VHDL, SPICE, PSpice와 같은 SPICE 변형들, IBIS, LEF, DEF, GDSII, OASIS, 또는 다른 기술(description)들을 포함한다. 다양한 실시예들에서, 프로세싱은 하나 또는 그 초과의 집적 회로들상에 포함을 위해 적합한 로직 및/또는 회로를 생성하고, 검증하거나, 특정하기 위해 해석(interpretation), 편집(compilation), 시뮬레이션, 및 합성의 임의의 조합을 포함한다. 다양한 실시예들에 따른 각 집적 회로는 다양한 기법들에 따라 설계가능하고 그리고/또는 제조가능하다. 기법들은 (필드 또는 마스크 프로그램가능한 게이트 어레이 집적 회로와 같은) 프로그램가능한 기법, (전체적 또는 부분적 셀기반 집적 회로와 같은) 반특별 주문형(semicustom) 기법, 및 (실질적으로 특수화된 집적 회로와 같은) 특별 주문형 기법, 이들의 임의의 조합, 또는 집적 회로들의 설계 및/또는 제조와 호환가능한 임의의 다른 기법을 포함한다.
일부 실시예들에서, 명령어들의 세트가 저장된 컴퓨터 판독가능한 매체에 의해 설명된 바와 같은 동작들 중 모두 또는 부분들의 다양한 조합들은 하나 또는 그 초과의 프로그램 명령어들의 실행 및/또는 해석에 의해, 하나 또는 그 초과의 소스 및/또는 스크립 언어 스테이트먼트(statement)들의 해석 및/또는 컴파일링에 의해, 또는 프로그래밍 및/또는 스크립팅 언어 스테이트먼트들로 표현된 정보의 컴파일링, 트랜슬레팅(translating), 및/또는 해석에 의해 생성된 2진 명령어들의 실행에 의해 수행된다. 스테이트먼트들은 (C, C++, Fortran, Pascal, Ada, Java, VBscript, 및 Shell과 같은) 임의의 표준 프로그래밍 또는 스크립팅 언어와 호환가능하다. 프로그램 명령어들, 언어 스테이트먼트들, 또는 이진 명령어들 중 하나 또는 그 초과는 하나 또는 그 초과의 컴퓨터 판독가능한 저장 매체 소자들상에 옵션으로 저장된다. 다양한 실시예들에서, 프로그램 명령어들 중 일부, 모두, 또는 다양한 부분들은 하나 또는 그 초과의 함수들, 루틴들, 서브루틴들, 인라인 루틴들, 절차들, 매크로들, 또는 이들의 부분들로서 실현된다.
결론
텍스트 및 도면들을 준비하는데 있어서 단지 편의를 위해 특정한 선택들이 설명에서 이루어졌고, 반대의 표시가 있지 않은 한, 이 선택들은 설명한 실시예들의 구조 또는 동작에 관한 부가의 정보를 전달하는 것으로서 자체적으로 해석되어서는 안 된다. 선택들의 예들은 도면 넘버링을 위해 사용된 지정들의 특정한 구성 또는 배치(assignment) 및 실시예들의 특징들 및 소자들을 식별하고 참조하기 위해 사용된 소자 식별자들(예를 들어, 콜아웃(callout)들 또는 수치적 지시자들)의 특정한 구성 또는 배치를 포함한다.
단어들 "포함한다" 또는 "포함하는"은 개방형 범위의 논리 세트들을 설명하는 추론들로 해석되도록 구체적으로 의도되고, 단어 "내(within)"가 명시적으로 후속하지 않는 한, 물리적 한정을 전달하는 것으로 의미되지 않는다.
상술한 실시예들이 설명 및 이해의 명확화를 위해 일부 상세히 설명되었지만, 본 발명은 제공된 상세들에 제한되지 않는다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적인 것이고 제한적인 것이 아니다.
설명과 일치하는 구조, 배열, 및 사용에서의 많은 변동물들이 가능하고, 등록 특허의 청구항들의 범위내에 있다는 것이 이해될 것이다. 예를 들어, 사용된 상호접속 및 기능유닛 비트폭들, 클록 속도들, 및 기술의 타입은 각 컴포넌트 블록에서 다양한 실시예들에 따라 변경가능하다. 상호접속 및 로직에 주어진 명칭들은 단지 예시적인 것이고, 설명된 개념들을 제한하는 것으로 해석되어서는 안 된다. 플로우차트 및 흐름도 프로세스, 액션, 및 기능 소자들의 순서 및 배열은 다양한 실시예들에 따라 변경가능하다. 또한, 반대가 구체적으로 언급되지 않는 한, 특정된 값 범위들, 사용된 최대 및 최소값들, 또는 (플래시 메모리 기술 타입들, 및 레지스터들 및 버퍼들에서의 엔트리들 또는 스테이지들의 수와 같은) 다른 특정한 사양들은 단지 설명된 실시예들의 것들이고, 구현 기술에서 개선들 및 변경들을 트랙(track)하는 것으로 기대되고, 제한들로서 해석되어서는 안 된다.
당업계에 공지된 기능적으로 등가인 기법들이 다양한 컴포넌트들, 서브시스템들, 동작들, 함수들, 루틴들, 서브루틴들, 인라인 루틴들, 절차들, 매크로들, 또는 이들의 부분들을 구현하기 위해 설명한 것들 대신에 이용가능하다. 실시예의 기능이 (하드웨어에서의 이전의 기능들의 소프트웨어로의 이동을 용이하게 하는) 더 빠른 프로세싱 및 (소프트웨어에서의 이전의 기능들의 하드웨어로의 이동을 용이하게 하는) 더 높은 집적 밀도의 설계 제약들 및 기술 트렌드들에 의존하기 때문에, 실시예들의 많은 기능적 양태들이 하드웨어(예를 들어, 일반적으로 전용 회로) 또는 소프트웨어(예를 들어, 프로그램된 제어기 또는 프로세서의 일부 방식을 통해) 중 어느 하나에서 선택적으로 실현가능하다는 것이 또한 이해된다. 다양한 실시예들에서의 특정한 변동물들은 파티셔닝하는데 있어서의 차이들, 상이한 폼 팩터들 및 구성들, 상이한 운영 시스템들 및 다른 시스템 소프트웨어의 사용, 상이한 인터페이스 표준들, 네트워크 프로토콜들, 또는 통신 링크들의 사용, 및 특정한 애플리케이션의 고유 엔지니어링 및 비즈니스 제약들에 따라 여기에 설명한 개념들을 구현할 때 기대되는 다른 변동물들을 포함하지만 이에 제한되지 않는다.
실시예들은 설명한 실시예들의 많은 양태들의 최소의 구현을 위해 요구되는 바를 훨씬 넘어선 상세 및 환경적 컨텍스트로 설명되었다. 당업자는 일부 실시예들이 나머지 소자들 중에서 기본적인 협력을 변경하지 않고 개시된 컴포넌트들 또는 특징들을 생략한다는 것을 인식할 것이다. 따라서, 개시된 많은 상세들이 설명한 실시예들의 다양한 양태들을 구현하기 위해 요구되지 않는다는 것이 이해된다. 나머지 소자들이 종래 기술로부터 구별가능한 범위까지, 생략되는 컴포넌트들 및 특징들은 여기에 설명한 개념들을 제한하지 않는다.
설계에서의 모든 이러한 변동물들은 설명한 실시예들에 의해 전달된 교시들을 넘는 비현실적인 변경들이다. 여기에 설명한 실시예들이 다른 컴퓨팅 및 네트워킹 애플리케이션들에 대한 넓은 적용가능성을 가지며, 설명한 실시예들의 특정한 애플리케이션 또는 산업에 제한되지 않는다는 것이 또한 이해된다. 따라서, 본 발명은 등록 특허의 청구항들의 범위내에 포함되는 모든 가능한 변경물들 및 변동물들을 포함하는 것으로 해석되어야 한다.
Claims (20)
- 시스템으로서,
호스트 데이터, 시스템 데이터, 시스템 오버프로비저닝(OP), 및 호스트 OP에 각각 전용된 각각의 할당들로서 하나 또는 그 초과의 플래시 메모리들 중 모두 또는 임의의 부분들을 동작시키기 위한 수단;
하나 또는 그 초과의 이벤트들에 응답하여 상기 각각의 할당들 중 임의의 하나 또는 그 초과의 할당을 동적으로 결정하기 위한 수단을 포함하고,
상기 동작시키기 위한 수단 및 상기 동적으로 결정하기 위한 수단은 고체 상태 디스크(SSD)의 제어기에서 구성되고, 상기 플래시 메모리들은 상기 SSD에서 구성되며, 그리고
상기 이벤트들은 호스트 데이터 할당에 저장된 호스트 데이터의 압축에서의 변화에 적어도 부분적으로 기인한 상기 호스트 데이터 할당의 사용량에서의 변화를 포함하는, 시스템. - 제 1 항에 있어서,
상기 동적으로 결정하기 위한 수단은 상기 호스트 데이터의 엔트로피의 감소로 인한 상기 호스트 데이터 할당의 상기 사용량에서의 감소에 응답하여 시스템 데이터 할당 및 시스템 OP 할당 중 하나 또는 그 초과를 증가시키는, 시스템. - 제 1 항에 있어서,
상기 동적으로 결정하기 위한 수단은 상기 호스트 데이터의 엔트로피의 감소로 인한 상기 호스트 데이터 할당의 상기 사용량에서의 감소에 응답하여 시스템 OP 할당 및 호스트 OP 할당 중 하나 또는 그 초과를 증가시키는, 시스템. - 제 3 항에 있어서,
상기 동적으로 결정하기 위한 수단은 시스템 데이터 할당 및 상기 호스트 데이터 할당에 대한 기록들의 각각의 대역폭들에 적어도 부분적으로 기초하여 상기 시스템 OP 할당과 상기 호스트 OP 할당 사이에 할당시키는, 시스템. - 삭제
- 제 1 항에 있어서,
상기 호스트 데이터 할당의 사용량에서의 변화는 상기 저장된 호스트 데이터의 중복제거에서의 변화에 적어도 부분적으로 기인하는, 시스템. - 제 1 항에 있어서,
상기 호스트 데이터 할당의 사용량에서의 변화는 상기 저장된 호스트 데이터의 모두 또는 임의의 부분들을 명시적으로 할당해제하는 호스트 커맨드에 적어도 부분적으로 기인하는, 시스템. - 삭제
- 삭제
- 방법으로서,
호스트 데이터, 시스템 데이터, 시스템 오버프로비저닝(OP), 및 호스트 OP에 각각 전용된 각각의 할당들로서 하나 또는 그 초과의 플래시 메모리들 중 모두 또는 임의의 부분들을 동작시키는 단계;
하나 또는 그 초과의 이벤트들에 응답하여 상기 각각의 할당들 중 임의의 하나 또는 그 초과의 할당을 동적으로 결정하는 단계를 포함하며,
상기 동작시키는 단계 및 상기 동적으로 결정하는 단계는 고체 상태 디스크(SSD)에서 구성된 제어기에 의해 수행되고, 그리고
상기 이벤트들은 호스트 데이터 할당에 저장된 호스트 데이터의 압축에서의 변화에 적어도 부분적으로 기인한 상기 호스트 데이터 할당의 사용량에서의 변화를 포함하는, 방법. - 제 10 항에 있어서,
상기 동적으로 결정하는 단계는 상기 호스트 데이터의 엔트로피의 감소로 인한 상기 호스트 데이터 할당의 상기 사용량에서의 감소에 응답하여 시스템 데이터 할당 및 시스템 OP 할당 중 하나 또는 그 초과를 증가시키는, 방법. - 제 10 항에 있어서,
상기 동적으로 결정하는 단계는 상기 호스트 데이터의 엔트로피의 감소로 인한 상기 호스트 데이터 할당의 상기 사용량에서의 감소에 응답하여 시스템 OP 할당 및 호스트 OP 할당 중 하나 또는 그 초과를 증가시키며, 시스템 데이터 할당 및 상기 호스트 데이터 할당에 대한 기록들의 각각의 대역폭들에 적어도 부분적으로 기초하여 상기 시스템 OP 할당과 상기 호스트 OP 할당 사이에 할당시키는, 방법. - 삭제
- 제 10 항에 있어서,
상기 호스트 데이터 할당의 사용량에서의 변화는 상기 저장된 호스트 데이터의 중복제거에서의 변화 및 상기 저장된 호스트 데이터의 모두 또는 임의의 부분들을 명시적으로 할당해제하는 호스트 커맨드 중 하나 또는 그 초과에 적어도 부분적으로 기인하는, 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161479249P | 2011-04-26 | 2011-04-26 | |
US61/479,249 | 2011-04-26 | ||
PCT/US2012/034601 WO2012148828A2 (en) | 2011-04-26 | 2012-04-22 | Variable over-provisioning for non-volatile storage |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147018805A Division KR101467939B1 (ko) | 2011-04-26 | 2012-04-22 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130143140A KR20130143140A (ko) | 2013-12-30 |
KR101467941B1 true KR101467941B1 (ko) | 2014-12-02 |
Family
ID=47073008
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137031072A KR101467941B1 (ko) | 2011-04-26 | 2012-04-22 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
KR1020147018805A KR101467939B1 (ko) | 2011-04-26 | 2012-04-22 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147018805A KR101467939B1 (ko) | 2011-04-26 | 2012-04-22 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10241908B2 (ko) |
EP (1) | EP2702491A4 (ko) |
JP (1) | JP6045567B2 (ko) |
KR (2) | KR101467941B1 (ko) |
CN (1) | CN103620563B (ko) |
TW (1) | TWI473011B (ko) |
WO (1) | WO2012148828A2 (ko) |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10240724B2 (en) | 2015-08-17 | 2019-03-26 | Zhejiang Super Lighting Electric Appliance Co., Ltd. | LED filament |
JP2014522066A (ja) | 2011-08-09 | 2014-08-28 | エルエスアイ コーポレーション | 入出力デバイスとコンピューティングホストとの相互運用 |
US9218281B2 (en) | 2012-05-04 | 2015-12-22 | Seagate Technology Llc | Maintaining ordering via a multi-level map of a solid-state media |
US9443591B2 (en) | 2013-01-23 | 2016-09-13 | Seagate Technology Llc | Storage device out-of-space handling |
US8799284B2 (en) * | 2012-11-30 | 2014-08-05 | Futurewei Technologies, Inc. | Method for automated scaling of a massive parallel processing (MPP) database |
US8959298B2 (en) * | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
US9092327B2 (en) | 2012-12-10 | 2015-07-28 | Qualcomm Incorporated | System and method for allocating memory to dissimilar memory devices using quality of service |
US9110795B2 (en) | 2012-12-10 | 2015-08-18 | Qualcomm Incorporated | System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components |
US9141532B2 (en) | 2012-12-26 | 2015-09-22 | Western Digital Technologies, Inc. | Dynamic overprovisioning for data storage systems |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9542306B2 (en) | 2013-03-13 | 2017-01-10 | Seagate Technology Llc | Dynamic storage device provisioning |
US9912474B2 (en) * | 2013-09-27 | 2018-03-06 | Intel Corporation | Performing telemetry, data gathering, and failure isolation using non-volatile memory |
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 |
KR102164617B1 (ko) | 2014-03-24 | 2020-10-12 | 삼성전자주식회사 | 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법 |
CN105094685B (zh) | 2014-04-29 | 2018-02-06 | 国际商业机器公司 | 进行存储控制的方法和设备 |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
CN105224240B (zh) * | 2014-05-30 | 2019-04-30 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法、装置及存储设备 |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
KR102275706B1 (ko) * | 2014-06-30 | 2021-07-09 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
TWI540582B (zh) * | 2014-07-10 | 2016-07-01 | 群聯電子股份有限公司 | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US20160041762A1 (en) | 2014-08-08 | 2016-02-11 | Kabushiki Kaisha Toshiba | Memory system, host device and information processing system |
US9417813B2 (en) | 2014-09-02 | 2016-08-16 | International Business Machines Corporation | Tuning overprovisioning based on the used block count |
US9652382B1 (en) * | 2014-09-04 | 2017-05-16 | Sk Hynix Memory Solutions Inc. | Look-ahead garbage collection for NAND flash based storage |
US9632927B2 (en) | 2014-09-25 | 2017-04-25 | International Business Machines Corporation | Reducing write amplification in solid-state drives by separating allocation of relocate writes from user writes |
US9513822B2 (en) * | 2014-09-26 | 2016-12-06 | Hewlett Packard Enterprise Development Lp | Unmap storage space |
US10031673B2 (en) | 2014-09-26 | 2018-07-24 | SK Hynix Inc. | Techniques for selecting amounts of over-provisioning |
US10067823B2 (en) | 2014-12-04 | 2018-09-04 | Western Digital Technologies, Inc. | Systems and methods for adaptive error corrective code mechanisms |
US10691531B2 (en) | 2014-12-04 | 2020-06-23 | Western Digital Technologies, Inc. | Systems and methods for multi-zone data tiering for endurance extension in solid state drives |
US10078582B2 (en) | 2014-12-10 | 2018-09-18 | International Business Machines Corporation | Non-volatile memory system having an increased effective number of supported heat levels |
US9779021B2 (en) | 2014-12-19 | 2017-10-03 | International Business Machines Corporation | Non-volatile memory controller cache architecture with support for separation of data streams |
CN109783017B (zh) * | 2015-01-27 | 2021-05-18 | 华为技术有限公司 | 一种存储设备坏块的处理方法、装置及存储设备 |
KR101653999B1 (ko) * | 2015-04-02 | 2016-09-09 | 서울시립대학교 산학협력단 | 낸드 플래시 기반의 스토리지 시스템 및 데이터 보존 강화 방법 |
KR102365269B1 (ko) * | 2015-04-13 | 2022-02-22 | 삼성전자주식회사 | 데이터 스토리지 및 그것의 동작 방법 |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
JP6554990B2 (ja) * | 2015-08-11 | 2019-08-07 | 富士通株式会社 | ストレージ制御装置およびストレージ制御プログラム |
US10198061B2 (en) | 2015-09-01 | 2019-02-05 | Toshiba Memory Corporation | Storage and storage system |
US10048876B2 (en) | 2015-09-10 | 2018-08-14 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US10108350B2 (en) | 2015-09-10 | 2018-10-23 | Western Digital Technologies, Inc. | Method for providing nonvolatile storage write bandwidth using a caching namespace |
US9886208B2 (en) | 2015-09-25 | 2018-02-06 | International Business Machines Corporation | Adaptive assignment of open logical erase blocks to data streams |
CN109358804B (zh) | 2015-09-29 | 2022-03-29 | 华为技术有限公司 | 一种数据处理方法、装置及闪存设备 |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
US9946483B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US10235198B2 (en) | 2016-02-24 | 2019-03-19 | Samsung Electronics Co., Ltd. | VM-aware FTL design for SR-IOV NVME SSD |
JP6320439B2 (ja) * | 2016-03-10 | 2018-05-09 | 株式会社東芝 | メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法 |
US10156999B2 (en) | 2016-03-28 | 2018-12-18 | Seagate Technology Llc | Dynamic bandwidth reporting for solid-state drives |
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 |
US10162554B2 (en) * | 2016-08-03 | 2018-12-25 | Samsung Electronics Co., Ltd. | System and method for controlling a programmable deduplication ratio for a memory system |
JP6553566B2 (ja) | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP2018073038A (ja) | 2016-10-27 | 2018-05-10 | 東芝メモリ株式会社 | メモリシステム |
US10254981B2 (en) * | 2016-12-12 | 2019-04-09 | International Business Machines Corporation | Adaptive health grading for a non-volatile memory |
WO2018150561A1 (ja) * | 2017-02-20 | 2018-08-23 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
WO2018167890A1 (ja) * | 2017-03-15 | 2018-09-20 | 株式会社日立製作所 | 計算機システム及び管理方法 |
US9905294B1 (en) * | 2017-05-03 | 2018-02-27 | Seagate Technology Llc | Writing logically offset pages of data to N-level memory cells coupled to a common word line |
TWI614674B (zh) * | 2017-09-30 | 2018-02-11 | 威聯通科技股份有限公司 | 自動分層儲存系統及方法 |
US10790419B2 (en) | 2017-12-26 | 2020-09-29 | Jiaxing Super Lighting Electric Appliance Co., Ltd | LED filament and LED light bulb |
CN110058794B (zh) * | 2018-01-19 | 2022-11-01 | 上海宝存信息科技有限公司 | 用于动态执行垃圾回收数据储存装置与操作方法 |
JP6800904B2 (ja) * | 2018-03-20 | 2020-12-16 | 株式会社東芝 | モデル生成装置、情報処理装置、モデル生成方法およびプログラム |
US11068168B2 (en) * | 2018-07-17 | 2021-07-20 | Micron Technology, Inc. | Managing storage performance consistency with feedback control |
US10963172B2 (en) * | 2018-08-09 | 2021-03-30 | Apple Inc. | Systems and methods for providing a back pressure free interconnect |
KR102576373B1 (ko) * | 2018-09-28 | 2023-09-07 | 에스케이하이닉스 주식회사 | 저장 공간을 동적으로 할당하는 제어 장치 및 이를 포함하는 데이터 저장 장치 |
KR20200132495A (ko) * | 2019-05-17 | 2020-11-25 | 에스케이하이닉스 주식회사 | 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법 |
US11436138B2 (en) * | 2020-10-21 | 2022-09-06 | EMC IP Holding Company LLC | Adaptive endurance tuning of solid-state storage system |
CN112527194B (zh) * | 2020-12-04 | 2024-02-13 | 北京浪潮数据技术有限公司 | 固态硬盘写放大设定方法、系统、装置及可读存储介质 |
CN112988068B (zh) * | 2021-03-10 | 2023-03-10 | 深圳宏芯宇电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制器 |
KR20220128791A (ko) * | 2021-03-15 | 2022-09-22 | 삼성전자주식회사 | 비휘발성 메모리를 포함하는 전자 장치 및 그것의 비휘발성 메모리 관리 방법 |
US20220374216A1 (en) * | 2021-05-20 | 2022-11-24 | Lenovo (United States) Inc. | Method of manufacturing information processing apparatus and mobile computer |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
CN117931416A (zh) * | 2022-10-14 | 2024-04-26 | 成都华为技术有限公司 | 资源分配方法、装置、存储介质及程序产品 |
US12131039B1 (en) | 2023-04-05 | 2024-10-29 | Sk Hynix Nand Product Solutions Corp. | Systems and methods for utilizing multi-factor feedback control to allocate memory resources |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226557A (ja) * | 2006-02-23 | 2007-09-06 | Hitachi Ltd | 計算機システム及び管理計算機とストレージシステム並びに記憶領域割当量制御方法 |
US20090249022A1 (en) * | 2008-03-27 | 2009-10-01 | Alan Rowe | Method for achieving sequential i/o performance from a random workload |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490260A (en) | 1990-12-14 | 1996-02-06 | Ceram, Inc. | Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size |
JP3212787B2 (ja) * | 1993-12-02 | 2001-09-25 | 日本電気株式会社 | 転送データ管理方式およびホスト・端末間データ転送方式 |
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US8078794B2 (en) | 2000-01-06 | 2011-12-13 | Super Talent Electronics, Inc. | Hybrid SSD using a combination of SLC and MLC flash memory arrays |
GB0123412D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system sectors |
JP4175185B2 (ja) * | 2003-06-06 | 2008-11-05 | 日本電気株式会社 | ネットワーク情報記録装置 |
US7012835B2 (en) | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
CN1670701A (zh) * | 2004-03-17 | 2005-09-21 | 德鑫科技股份有限公司 | 压缩数据存储方法 |
CN101390043A (zh) * | 2005-07-01 | 2009-03-18 | 美国日本电气实验室公司 | 嵌入式系统用的存储器体系结构 |
CN100361094C (zh) * | 2005-07-01 | 2008-01-09 | 华为技术有限公司 | 一种节省全局变量内存空间的方法 |
US7159082B1 (en) * | 2005-10-03 | 2007-01-02 | Hewlett-Packard Development Company, L.P. | System and method for throttling memory accesses |
US7509471B2 (en) | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US20070156998A1 (en) | 2005-12-21 | 2007-07-05 | Gorobets Sergey A | Methods for memory allocation in non-volatile memories with a directly mapped file storage system |
US20070143561A1 (en) | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system |
US7719983B2 (en) * | 2006-01-06 | 2010-05-18 | International Business Machines Corporation | Method for autonomic system management using adaptive allocation of resources |
KR100703807B1 (ko) | 2006-02-17 | 2007-04-09 | 삼성전자주식회사 | 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치 |
US7467278B2 (en) | 2006-05-08 | 2008-12-16 | International Business Machines Corporation | Memory tuning for garbage collection and central processing (CPU) utilization optimization |
KR100818797B1 (ko) * | 2006-10-19 | 2008-04-01 | 삼성전자주식회사 | 메모리 용량 조절 방법과 메모리 용량 조절 장치 |
US8074011B2 (en) | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US8719501B2 (en) | 2009-09-08 | 2014-05-06 | Fusion-Io | Apparatus, system, and method for caching data on a solid-state storage device |
US7949637B1 (en) | 2007-06-27 | 2011-05-24 | Emc Corporation | Storage management for fine grained tiered storage with thin provisioning |
US7908423B2 (en) | 2007-07-25 | 2011-03-15 | Silicon Motion, Inc. | Memory apparatus, and method of averagely using blocks of a flash memory |
KR101498673B1 (ko) | 2007-08-14 | 2015-03-09 | 삼성전자주식회사 | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 |
US8850154B2 (en) * | 2007-09-11 | 2014-09-30 | 2236008 Ontario Inc. | Processing system having memory partitioning |
KR101464338B1 (ko) | 2007-10-25 | 2014-11-25 | 삼성전자주식회사 | 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템 |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US9183133B2 (en) * | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
KR101401560B1 (ko) | 2007-12-13 | 2014-06-03 | 삼성전자주식회사 | 반도체 메모리 시스템 및 그것의 마모도 관리 방법 |
US7978516B2 (en) | 2007-12-27 | 2011-07-12 | Pliant Technology, Inc. | Flash memory controller having reduced pinout |
KR101077339B1 (ko) | 2007-12-28 | 2011-10-26 | 가부시끼가이샤 도시바 | 반도체 기억 장치 |
US8275933B2 (en) | 2008-11-10 | 2012-09-25 | Fusion-10, Inc | Apparatus, system, and method for managing physical regions in a solid-state storage device |
JP4461187B1 (ja) * | 2008-12-24 | 2010-05-12 | 株式会社東芝 | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 |
KR101618634B1 (ko) * | 2009-01-07 | 2016-05-09 | 삼성전자주식회사 | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 |
JP2012505441A (ja) | 2009-03-24 | 2012-03-01 | 株式会社日立製作所 | ストレージ装置およびそのデータ制御方法 |
US8433845B2 (en) | 2009-04-08 | 2013-04-30 | Google Inc. | Data storage device which serializes memory device ready/busy signals |
US8065469B2 (en) | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8214580B2 (en) * | 2009-10-23 | 2012-07-03 | International Business Machines Corporation | Solid state drive with adjustable drive life and capacity |
US8285918B2 (en) | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US8677054B1 (en) * | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US9092340B2 (en) | 2009-12-18 | 2015-07-28 | Sandisk Technologies Inc. | Method and system for achieving die parallelism through block interleaving |
US8463984B2 (en) | 2009-12-31 | 2013-06-11 | Seagate Technology Llc | Dynamic data flow management in a multiple cache architecture |
US8327226B2 (en) * | 2010-02-03 | 2012-12-04 | Seagate Technology Llc | Adjustable error correction code length in an electrical storage device |
US8438361B2 (en) | 2010-03-10 | 2013-05-07 | Seagate Technology Llc | Logical block storage in a storage device |
US8458417B2 (en) | 2010-03-10 | 2013-06-04 | Seagate Technology Llc | Garbage collection in a storage device |
US9183134B2 (en) * | 2010-04-22 | 2015-11-10 | Seagate Technology Llc | Data segregation in a storage device |
JP5585235B2 (ja) | 2010-06-21 | 2014-09-10 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、ストレージシステム |
US20120023144A1 (en) | 2010-07-21 | 2012-01-26 | Seagate Technology Llc | Managing Wear in Flash Memory |
US20120059976A1 (en) * | 2010-09-07 | 2012-03-08 | Daniel L. Rosenband | Storage array controller for solid-state storage devices |
CN102023818A (zh) * | 2010-12-06 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种存储设备容量调整方法、装置及存储设备 |
US8838891B2 (en) * | 2012-04-13 | 2014-09-16 | Lsi Corporation | SSD cache expansion using overprovisioned space |
-
2012
- 2012-04-22 JP JP2014508453A patent/JP6045567B2/ja not_active Expired - Fee Related
- 2012-04-22 KR KR1020137031072A patent/KR101467941B1/ko active IP Right Grant
- 2012-04-22 WO PCT/US2012/034601 patent/WO2012148828A2/en active Application Filing
- 2012-04-22 KR KR1020147018805A patent/KR101467939B1/ko active IP Right Grant
- 2012-04-22 CN CN201280031465.2A patent/CN103620563B/zh active Active
- 2012-04-22 EP EP12777647.4A patent/EP2702491A4/en not_active Withdrawn
- 2012-04-22 US US14/112,221 patent/US10241908B2/en active Active
- 2012-04-26 TW TW101114992A patent/TWI473011B/zh not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007226557A (ja) * | 2006-02-23 | 2007-09-06 | Hitachi Ltd | 計算機システム及び管理計算機とストレージシステム並びに記憶領域割当量制御方法 |
US20090249022A1 (en) * | 2008-03-27 | 2009-10-01 | Alan Rowe | Method for achieving sequential i/o performance from a random workload |
Also Published As
Publication number | Publication date |
---|---|
JP2014513356A (ja) | 2014-05-29 |
JP6045567B2 (ja) | 2016-12-14 |
KR101467939B1 (ko) | 2014-12-02 |
KR20140094654A (ko) | 2014-07-30 |
WO2012148828A3 (en) | 2013-01-24 |
EP2702491A4 (en) | 2015-02-25 |
US10241908B2 (en) | 2019-03-26 |
EP2702491A2 (en) | 2014-03-05 |
TW201250580A (en) | 2012-12-16 |
US20140101379A1 (en) | 2014-04-10 |
CN103620563B (zh) | 2015-04-29 |
KR20130143140A (ko) | 2013-12-30 |
TWI473011B (zh) | 2015-02-11 |
WO2012148828A2 (en) | 2012-11-01 |
CN103620563A (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101467941B1 (ko) | 비휘발성 저장부에 대한 가변 오버프로비저닝 | |
US9851910B2 (en) | Scalable data structures for control and management of non-volatile storage | |
JP6265746B2 (ja) | 記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換 | |
KR101438716B1 (ko) | I/o 디바이스 및 컴퓨팅 호스팅 상호동작 | |
KR102155191B1 (ko) | 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택 | |
JP6082389B2 (ja) | ホストから見たデバイスファームウェア更新の影響の管理 | |
US9461904B2 (en) | Selective enablement of operating modes or features via host transfer rate detection | |
CN107179996B (zh) | 数据存储装置和其操作方法 | |
US10379595B2 (en) | Device power control | |
KR20130096753A (ko) | 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들 | |
JP2013522735A (ja) | フラッシュメモリ用のldpc消失復号化 | |
KR20230040057A (ko) | 시스템의 읽기 성능을 개선하기 위한 장치 및 방법 | |
KR20160119607A (ko) | 데이터 저장 장치 및 그것의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171030 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20190123 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190918 Year of fee payment: 6 |