[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102101650B1 - 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시 - Google Patents

비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시 Download PDF

Info

Publication number
KR102101650B1
KR102101650B1 KR1020157005442A KR20157005442A KR102101650B1 KR 102101650 B1 KR102101650 B1 KR 102101650B1 KR 1020157005442 A KR1020157005442 A KR 1020157005442A KR 20157005442 A KR20157005442 A KR 20157005442A KR 102101650 B1 KR102101650 B1 KR 102101650B1
Authority
KR
South Korea
Prior art keywords
individual
memory
flash
level redundancy
data
Prior art date
Application number
KR1020157005442A
Other languages
English (en)
Other versions
KR20150041004A (ko
Inventor
천강 첸
윤시앙 우
Original Assignee
시게이트 테크놀로지 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시게이트 테크놀로지 엘엘씨 filed Critical 시게이트 테크놀로지 엘엘씨
Publication of KR20150041004A publication Critical patent/KR20150041004A/ko
Application granted granted Critical
Publication of KR102101650B1 publication Critical patent/KR102101650B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

NVM에 대한 혼합된-입도 상위-레벨 리던던시는 보다 우수한 에러 복구 및/또는 감소된 리던던시 정보 오버헤드를 개선된 상위-레벨 리던던시 동작에 제공한다. 예를 들어, 비교적 많은 에러들이 있는 것 같은 덜 신뢰성 있는 NVM의 페이지들은 비교적 많은 리던던시 정보의 비용으로 비교적 많은 에러 보호를 가진 상위-레벨 리던던시 모드들에서 동작된다. 동시에, 보다 신뢰성 있는 NVM의 블록들은 비교적 적은 리던던시 정보의 비용으로, 비교적 적은 에러 보호를 가진 상위-레벨 리던던시 모드들에서 동작된다. 비교적 덜 에러 보호를 가진 상위-레벨 리던던시 모드들에서 NVM의 전체를 동작하는 기술들과 비교하여, 본원에 설명된 기술들은 보다 우수한 에러 복구를 제공한다. 비교적 많은 에러 보호를 가진 상위-레벨 리던던시 모드들에서 NVM의 전체를 동작시키는 기술들과 비교하여, 본원에 설명된 기술들은 감소된 리던던시 정보 오버헤드를 제공한다.

Description

비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시{MIXED GRANULARITY HIGHER-LEVEL REDUNDANCY FOR NON-VOLATILE MEMORY}
[0001] 본 출원에 대한 우선권 이익 청구들은 (임의의 경우, 적절한 것으로서) 첨부하는 출원 데이터 시트(Data Sheet), 리퀘스트(Request) 또는 트랜스미탈(Transmittal)에서 이루어진다. 본 출원(instant application)의 타입에 의해 허용되는 범위로, 본 출원은 모든 목적들을 위해 하기 출원들을 인용에 의해 포함하며, 이들 모두는 발명이 구성된 시점에 본 출원으로 공동으로 소유되었다:
2012년 8월 2일 출원되고, 제 1 발명자 이름이 Zhengang CHEN이며, MIXED GRANULARITY HIGHER-LEVEL REDUNDANCY FOR NON-VOLATILE MEMORY란 명칭의 미국 비-가출원(대리인 사건 번호 L12-0674US1이고 출원 번호 13/565,752);
2012년 11월 30일 출원되고, 제 1 발명자 이름이 Jeremy Isaac Nathaniel WERNER이며, DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS란 명칭의 PCT 출원(대리인 사건 번호 SF-10-lOPCT이고 출원 번호 PCT/US11/062726);
2012년 1월 18일 출원되고, 제 1 발명자 이름이 Jeremy Isaac Nathaniel WERNER이며, HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION이란 명칭의 PCT 출원(대리인 사건 번호 SF-10-14PCT이고 출원 번호 PCT/US 12/21682);
2010년 12월 1일 출원되고, 제 1 발명자 이름이 Jeremy Isaac Nathaniel WERNER이며, DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS이란 명칭의 미국 가 출원(대리인 사건 번호 SF-10-10이고 출원 번호 61/418,846);
2011년 1월 18일 출원되고, 제 1 발명자 이름이 first named inventor Jeremy Isaac Nathaniel WERNER이며, HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION이란 명칭의 미국 가 출원(대리인 사건 번호 SF-10-14이고 출원 번호 61/433,918);
2011년 3월 11일 출원되고, 제 1 발명자 이름이 Hao ZHONG이며, LDPC ERASURE DECODING FOR FLASH MEMORIES란 명칭의 PCT 출원(대리인 사건 번호 SF-10-OlPCTB이고 출원 번호 PCT/US 11/28244); 및
2011년 10월 26일 출원되고, 제 1 발명자 이름이 Yan LI이며, ADAPTIVE ECC TECHNIQUES FOR FLASH MEMORY BASED DATA STORAGE이란 명칭의 PCT 출원(대리인 사건 번호 SF-10-03PCT이고 출원 번호 PCT/US11/57914).
[0002] 분야: 스토리지 기술에서의 진보들이 성능, 효율성 및 사용의 유용성에서의 개선들을 제공하기 위해 요구된다.
[0003] 관련된 기술: 공개적으로 또는 잘 알려진 것으로 명시적으로 식별되지 않는 한, 맥락, 정의들 또는 비교 목적들에 대한 것을 비롯하여, 기술들 및 개념들의 본원에서의 언급은, 그와 같은 기술들 및 개념들이 이전에 공개적으로 알려지거나 그렇지 않으면 종래 기술의 일부라는 것에 대한 승인으로서 해석되어서는 안 된다. 이로써, 특허들, 특허 출원들 및 공개공보들을 비롯하여 (임의의 경우) 본원에 인용된 모든 참조들은 구체적으로 통합되든지 아니든지 간에, 모든 목적들을 위해, 그 전체들이 인용에 의해 포함된다.
개요
[0004] 본 발명은 수많은 방식들, 예를 들어, 프로세스, 제조 물건, 장치, 시스템, 물질의 조성 및 컴퓨터 판독가능한 스토리지 매체(예를 들어, 플래시 스토리지와 같은 비휘발성 스토리지를 갖는 집적 회로, 디스크와 같은 광학 및/또는 자기 대용량 스토리지 디바이스에서의 매체)와 같은 컴퓨터 판독가능한 매체, 또는 프로그램 명령들이 광학 또는 전자 통신 링크들을 통해 송신되는 컴퓨터 네트워크로서 구현될 수 있다. 상세한 설명은, 위에서 식별된 분야에서의 비용, 수익성, 성능, 효율성 및 이용 활용성에서의 개선들을 가능하게 하는 본 발명의 하나 또는 그 초과의 실시예들의 설명을 제공한다. 상세한 설명은 상세한 설명의 나머지 부분의 이해를 용이하게 하기 위한 도입부를 포함한다. 도입부는 본원에 설명된 개념들에 따른 시스템들, 방법들, 제조 물건들 및 컴퓨터 판독가능한 매체 중 하나 또는 그 초과의 것의 예시적인 실시예들을 포함한다. 결론들에서 더 상세하게 논의되는 바와 같이, 본 발명은 발행된 청구항들의 범위 내에서 모든 가능한 변경들 및 변형들을 포괄한다.
[0005] 도 1a는 비-휘발성 메모리(NVM)들에 대한 혼합-입도 상위-레벨 리던던시(mixed-granularity higher-level redundancy)를 제공하는 SSD 제어기를 포함하는 고체-상태 디스크(SSD)의 실시예의 선택된 상세사항들을 예시한다.
[0006] 도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세사항들을 예시한다.
[0007] 도 2는 논리적 블록 어드레스(Logical Block Address : LBA)의 논리적 페이지 번호(Logical Page Number : LPN) 부분을 맵핑하는 일 실시예의 선택된 상세사항들을 예시한다.
[0008] 도 3은 집합적으로 판독 유닛들의 수량으로 측정되는 길이를 갖는, 다양한 판독 유닛들로서 조직된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 비-휘발성 메모리(NVM)를 액세싱하는 일 실시예의 선택된 상세사항들을 예시한다.
[0009] 도 4a는 판독 유닛의 일 실시예의 선택된 상세사항들을 예시한다.
[0010] 도 4b는 판독 유닛의 다른 실시예의 선택된 상세사항들을 예시한다.
[0011] 도 5는 다수의 필드들을 갖는 헤더의 실시예의 선택된 상세사항들을 예시한다.
[0012] 도 6은 논리 슬라이스들 및/또는 섹션들서 관리된 다수의 NVM 디바이스들의 블록들, 페이지들, 및 판독 유닛들(예를 들어, 하나 또는 그 초과의 플래시 다이 및/또는 플래시 칩들)의 일 실시예의 선택된 상세사항들을 예시한다.
[0013] 도 7은 상위-레벨 리던던시 기술들의 다양한 실시예들의 선택된 상세사항들을 예시한다.
[0014] 도 8은 RASIE(Redundant Array of Silicon Independent Element)들을 이용한 동적 상위-레벨 리던던시 모드 관리의 일 실시예의 선택된 상세사항들을 예시한다.
[0015] 도 9는 판독 유닛들 중 하나 또는 그 초과에 저장된 상위-레벨 리던던시 정보에 의해 보호된 적응성 코드 레이트들의 하위-레벨 리던던시 정보를 가진 판독 유닛들의 일 실시예를 예시한다.
[0016] 도 10은 상위-레벨 리던던시 정보 결과 및 데이터 소스 대응들의 일 실시예의 선택된 상세사항들을 예시한다.
[0017] 도 11은 상위-레벨 리던던시 정보 계산들의 일 실시예의 선택된 상세사항들을 예시한다.
[0018] 도 12는 하나(하위-레벨)의 실패(단일 동작 동안)의 복구 실시예의 선택된 상세사항들을 예시한다.
[0019] 도 13a-도 13d는 두 개(하위-레벨)의 실패들(단일 동작 동안)의 복구 실시예의 선택된 상세사항들을 예시한다.
[0020] 도 14a 및 도 14b는 NVM들로부터 수신된 페이지들에 관하여 상위-레벨 리던던시 정보를 계산하는 실시예의 선택된 상세사항들을 예시한다.
[0021] 도 15a-도 15c는 NVM들에 제공된 기록에 관하여 상위-레벨 리던던시 정보의 계산을 취소하는 실시예의 선택된 상세사항들을 예시한다.
[0022] 도 16은 혼합된 입도 상위-레벨 리던던시의 실시예의 선택된 상세사항들을 예시한다.
[0023] 도 17은 복수의 혼합된 입도 상위-레벨 리던던시 모드들에서 동시 동작의 실시예의 선택된 상세사항들을 예시한다.
도면들에서의 참조 부호들의 목록
[0024]
Figure 112015020378965-pct00001
Figure 112015020378965-pct00002
Figure 112015020378965-pct00003
Figure 112015020378965-pct00004
Figure 112015020378965-pct00005
Figure 112015020378965-pct00006
Figure 112015020378965-pct00007
[0025] 본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명이 본 발명의 선택된 상세사항들을 예시하는 첨부한 도면들과 함께 아래에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 여기에서의 실시예들은 단지 예시적인 것으로 이해되고, 본 발명은 명백하게, 여기에서의 실시예들 중 임의의 실시예들 또는 이들 모두로 또는 이들에 의해 제한되지 않으며, 본 발명은 다수의 대안들, 변경들, 및 등가물들을 포괄한다. 설명의 단조로움을 회피하기 위해, 다양한 단어 라벨(word label)들(제 1, 최종, 특정한, 다양한, 추가의, 다른, 특히, 선택, 일부, 및 주목할만한을 포함하지만 이로 제한되지 않음)이 실시예들의 개별 세트들에 적용될 수도 있고; 여기에서 사용되는 바와 같이, 그와 같은 라벨들은 명백하게 품질, 또는 임의의 형태의 우선순위 또는 편견을 전달하는 것으로 뜻하는 것이 아니라, 단지 개별 세트들 사이를 편리하게 구별하기 위한 것이다. 개시된 프로세스들의 일부 동작들의 순서는 본 발명의 범위 내에서 변경가능하다. 다수의 실시예들이 프로세스, 시스템 및/또는 프로그램 명령 특징들에서 변화들을 설명하는 역할을 하는 경우에, 다른 실시예들은, 사전결정되거나 동적으로 결정된 기준에 따라 복수의 다수의 실시예들에 각각 대응하는 복수의 동작의 모드들 중 하나의 정적 및/또는 동적 선택을 수행한다는 것이 고려된다. 다수의 특정한 상세사항들은 본 발명의 완전한 이해를 제공하기 위해 아래의 설명에 설명된다. 상세사항들은 예시를 목적으로 제공되고 본 발명은 상세사항들 중 일부 또는 모두 없이 청구항들에 따라 실시될 수도 있다. 명확성을 목적으로, 본 발명에 관련된 기술 분야에 공지된 기술적 자료는 본 발명이 필요없이 모호해지지 않도록 상세히 설명되지 않는다.
도입부
[0026] 이러한 도입부는 단지 상세한 설명의 더욱 빠른 이해를 용이하게 하기 위해 포함되고; 임의의 도입부의 단락들이 반드시 전체 주제에 대한 축약된 관점이고 철저한 또는 제한적인 설명인 것을 뜻하지 않기 때문에, 본 발명은 (만약 있다면, 명백한 예들을 포함하는) 도입부에 제공되는 개념들로 제한되지 않는다. 예를 들어, 다음의 도입부는 특정한 실시예들에 대해서만 공간 및 구조화에 의해 제한된 개요 정보를 제공한다. 청구항들이 명세서의 밸런스를 통해 궁극적으로 도시되고 논의되는 것들을 비롯하여, 다수의 다른 실시예들이 존재한다.
약어들
[0027] 여기에 정의된 다양한 축약된 약어들(예를 들어, 두문자어들)의 적어도 일부가 여기에 사용된 특정한 엘리먼트들을 지칭한다.
Figure 112015020378965-pct00008
Figure 112015020378965-pct00009
[0028] NAND 플래시 메모리는 정보를 저장하기 위하여 플로팅 게이트 트랜지스터들의 어레이를 사용한다. SLC 기술에서, 각각의 비트 셀(예를 들어, 플로팅 게이트 트랜지스터)은 정보의 하나의 비트를 저장하기 위하여 인에이블된다. MLC 기술에서, 각각의 비트 셀은 정보의 다수의 비트들을 저장하기 위하여 인에이블된다. 제조 기술(예를 들어, CMOS 기술)이 스케일 다운(scale dwon)하면, 각각의 플로팅 게이트는 보다 적은 전자들을 저장한다. 게다가, 저장 캐패시티 및 밀도가 증가하면, 각각의 비트 셀은 보다 많은 비트들을 저장한다. 그러므로, 비트 셀들에 저장된 값들은 보다 작은 전압 범위들에 의해 표현된다. 시간에 걸쳐 저장된 전자들의 양의 변화들 및/또는 감지 불확실성들은 데이터가 올바르지 않게 저장되거나 판독될 가능성을 증가시킨다. 하나 또는 그 초과의 리던던시 및/또는 ECC 기술들의 사용(예를 들어, 하위-레벨에서)은 NAND 플래시 메모리로부터 그렇지 않으면 손상되는 데이터의 올바른 리트리벌(retrieval)을 가능하게 하여, 몇몇 사용 시나리오들에서, 상기된 어려움들 몇몇을 극복한다.
[0029] 몇몇 타입들의 SSD들은 비-휘발성 스토리지를 제공하기 위하여 플래시 메모리(예를 들어, 플래시 메모리는 전력 인가 없이 정보를 유지함)를 사용한다. 하나 또는 그 초과의 ECC 및/또는 리던던시 기술들의 사용(예를 들어, 상위-레벨에서)은 플래시 메모리로부터 그렇지 않으면 손상되는 데이터의 올바른 리트리벌을 가능하게 하고, 및/또는 하나 또는 그 초과의 플래시 메모리 엘리먼트들이 간헐적으로 또는 영구적으로 실패할 때에도 SSD의 적당한 시스템-레벨 동작을 가능하게 한다.
[0030] 예를 들어, SSD 제어기는 하나 또는 그 초과의 NVM(예를 들어, 플래시) 엘리먼트들이 제어기에 의해 부분적으로 구현되는 SSD의 동작 동안 실패할 때 우아한 성능 저하를 제공하기 위하여 독립 실리콘 엘리먼트들을 이용하여 동적 상위-레벨 리던던시 모드 관리를 가능하게 한다. NVM의 일부는 판독된다. 만약 하위-레벨 리던던시 및/또는 에러 정정(이를 테면 하나 또는 그 초과의 ECC 기술들에 따르는)을 사용하여 정정 가능하지 않은 에러가 발생하면, 상위-레벨 리던던시 및/또는 에러 정정(이를 테면 하나 또는 그 초과의 RASIE 기술들 및/또는 동적 상위-레벨 리던던시 모드 관리 기술들에 따르는)은 에러를 정정하도록 시도하기 위하여 사용된다. NVM 엘리먼트들 중 하나의 실패가 하위-레벨 및/또는 상위-레벨 리던던시 및/또는 에러 정정, 및/또는 다른 기술들에 의해 검출되면(NVM 엘리먼트들의 하나 또는 그 초과에 의해 보고된 실패 상태 같은), 상위-레벨 리던던시 및/또는 에러 정정은 현재 모드에서의 동작으로부터 새로운 모드에서의 동작으로 동적으로 전이된다. 전이는 SSD 상에서 이용 가능한 자유 공간을 감소시키는 것, SSD의 데이터 스토리지를 재배열하는 것, 실패된 사용자 데이터를 복구/저장하는 것(만약 가능하다면), 그리고 개정된 상위-레벨 리던던시 및/또는 에러 정정 정보를 결정/저장하는 것 중 하나 또는 그 초과를 포함한다. 그 다음 동작은 새로운 모드에서 계속된다. NVM 엘리먼트들 중 다른 하나의 다른 실패가 새로운 모드에서 현재 동작하는 상위-레벨 리던던시 및/또는 에러 정정으로 검출되면, 다른 전이는 다른 상위-레벨 리던던시 및/또는 에러 정정 모드로 이루어진다. NVM을 기록하는 것은 상위-레벨 리던던시 및/또는 에러 정정 동작 모드 및 기록 데이터에 따라 상위-레벨 리던던시 및/또는 에러 정정 정보를 결정하고/저장하는 것을 비롯하여, 상위-레벨 리던던시 및/또는 에러 정정 동작 모드에 따른다.
[0031] 메모리 영역에 대해 하위-레벨 에러 정정들의 임계 수 및/또는 레이트보다 많은 임계 수 및/또는 레이트 및/또는 하나 또는 그 초과의 실패들이 발생하면, 임의선택적으로 메모리 영역은 현재 상위-레벨 리던던시 및/또는 에러 정정 동작 모드보다 많은 에러들을 복구하도록 인에이블되는 새로운 상위-레벨 리던던시 및/또는 에러 정정 동작 모드에서 동작하는 것으로 동적으로 전이된다. 예를 들어, 현재 상위-레벨 리던던시 및/또는 에러 정정 동작 모드가 없다면(예를 들어, 어떠한 상위-레벨 리던던시 정보도 에러를 정정하기 위하여 하위-레벨 리던던시의 실패를 복구되도록 계산 및/또는 사용되지 않음), 새로운 상위-레벨 리던던시 및/또는 에러 정정 동작 모드는 하위-레벨 리던던시에 의해 정정 가능하지 않은 단일 실패를 복구되게 하는 모드이다. 다른 예를 들어, 현재 상위-레벨 리던던시 및/또는 에러 정정 동작 모드가 하위-레벨 리던던시에 의해 정정 가능하지 않은 단일 실패의 복구 가능한 모드이면, 새로운 상위-레벨 리던던시 및/또는 에러 정정 동작 모드는 하위-레벨 리던던시에 의해 정정 가능하지 않은 두 개의 실패들의 복구 가능한 모드이다.
[0032] 상위-레벨 리던던시 및/또는 에러 정정 정보는, 몇몇 실시예들 및/또는 사용 시나리오들에서, 상위-레벨 리던던시 정보의 계산에 따른다. 상위-레벨 리던던시 정보 계산은 SSD 제어기가 제어기에 의해 부분적으로 구현되는 SSD의 동작 동안 비-휘발성(예를 들어, 플래시) 메모리 엘리먼트들의 실패들의 환경에서 신뢰성 있는 동작을 유지할 상위-레벨 리던던시 능력들을 제공하게 한다. 상위-레벨 리던던시 정보의 제 1 부분은 상위-레벨 리던던시 정보에 의해 보호될 데이터(예를 들어, 스트라이프(stripe))의 부분의 모든 페이지들의 XOR을 통해 패리티 코딩을 사용하여 계산된다. 상위-레벨 리던던시 정보의 제 2 부분은 가중-합 기술을 사용하여 계산되고, 상기 부분에서 각각의 페이지는 가중-합을 계산할 때 가중치로서 고유 비-제로 "인덱스"가 할당된다. 연산은 유한 필드(갈루아 필드(Galois Field) 같은, 또는 정수 모드(integers mod) p, 여기서 p는 프라임(prime)임)에 걸쳐 수행된다.
[0033] 상위-레벨 리던던시 정보의 부분들은 NVM 엘리먼트들 상에서 수행되는 하나 또는 그 초과의 판독 동작들의 계산 순서에 의해 결정된 순서 같은, 또는 NVM으로부터 리턴되고 및/또는 이용 가능한 데이터의 순서에 기초한 순서 같은 임의의 순서로 계산 가능하여, 다양한 실시예들에서, 감소되거나 제거되는 버퍼링을 가능하게 한다. 임의의 순서 계산 능력은, 다양한 실시예들에서, 비교적 작은 임시 및/또는 중간 버퍼링 및/또는 상태를 사용하여 복구 데이터 값들을 계산하고 및/또는 기록을 취소하는 것을 가능하게 한다. 상위-레벨 리던던시 정보의 부분들은 이용 가능한 전용 하드웨어 엘리먼트들에 의해 결정된 것 같은 임의의 유사성 정도로 계산 가능하여, 다양한 실시예들에서 감소된 레이턴시 프로세싱 및/또는 감소된 메모리(예를 들어 NVM) 대역폭 사용을 가능하게 한다.
[0034] 하위-레벨 에러 이벤트들(정정 가능한 에러 및/또는 정정 가능하지 않은 에러)의 수 및/또는 레이트 및/또는 NVM의 다양한 영역들에서 별도로 발생하는 실패들을 갖는 몇몇 상황들에서, NVM에 대한 혼합-입도 상위-레벨 리던던시는 보다 나은 에러 복구 및/또는 감소된 리던던시 정보 오버헤드(overhead)를 갖는 개선된 상위-레벨 리던던시 동작을 가능하게 한다. 몇몇 시나리오들에서, 보다 우수한 에러 복구는 NVM 및/또는 NVM으로 구현되는 SSD의 증가된 이용 가능 수명을 초래한다.
[0035] 예를 들어, 처음에 NVM의 모든 페이지들은 대략 하위-레벨 에러 이벤트들과 동일한 레이트들을 가진다. VNM의 모든 블록들은 처음에 단일 동작 동안 발생하는 단일 하위-레벨 정정 불가능 에러를 복구 가능하게 하는 제 1 상위-레벨 리던던시 모드에서 동작된다. 그 다음 NVM의 신뢰성의 변화가 존재하여, NVM의 몇몇 페이지들은 덜 신뢰성이 되는 반면(예를 들어, 보다 많은 양의 하위-레벨 에러 이벤트들을 가지기 시작함), NVM의 모든 다른 페이지들은 신뢰성 있게 유지된다(예를 들어, 동일하거나 거의 동일한 양의 하위-레벨 에러 이벤트들을 계속 가짐). 상기된 양들의 하위-레벨 이벤트들은 예를 들어 하위-레벨 이벤트들의 수, 레이트, 및/또는 엄격성이다.
[0036] 개념적으로, 신뢰성의 변화 후, NVM은 두 개의 구역들을 가진다: 신뢰할 수 있는 페이지들만을 가진 블록들인 제 1 구역, 및 적어도 하나의 신뢰할 수 없는 페이지를 가진 블록들인 제 2 구역. 신뢰성의 변화에 응답하여, 제 2 구역은 단일 동작 동안 발생하는 두 개의 하위-레벨 정정 불가능 에러들의 복구를 가능하게 하는 제 2 상위-레벨 리던던시 모드에서 부분적으로 동작되게 선택적으로 동적으로 전이된다. 전이는 덜 신뢰할 수 있는 페이지들만이 제 2 상위-레벨 리던던시 모드에서 동작되게 하는 반면, 제 2 구역의 신뢰할 수 있는 페이지들이 제 1 상위-레벨 리던던시 모드에서 계속 동작되게 하는 점에서 선택적이고 부분적이다. 한편, 제 1 구역의 블록들 모두는 제 1 상위-레벨 리던던시 모드에서 계속 동작된다.
[0037] 제 2 구역은 페이지 입도 상위-레벨 리던던시로 동작되는 것으로 설명되는데, 그 이유는 상위-레벨 리던던시 모드가 페이지에 따라 가변하기 때문이다(예를 들어, 신뢰할 수 있는 페이지들은 제 1 상위-레벨 리던던시 모드에서 동작되고 덜 신뢰성 있는 페이지들은 제 2 상위-레벨 리던던시 모드에서 동작됨). 대조하여, 제 1 구역은 블록 입도 상위-레벨 리던던시로 동작되는 것으로 설명되는데, 그 이유는 상위-레벨 리던던시 모드가 구역의 모든 블록들에 대해 동일하기 때문이다(예를 들어, 블록들 모두는 제 1 상위-레벨 리던던시 모드에서 동작됨). 제 1 구역이 전체 R-블록(본원 어딘가에서 설명됨)이면, 제 1 구역은 대안적으로 R-블록 입도 상위-레벨 리던던시로 동작되는 것으로 설명 가능한데, 그 이유는 상위-레벨 리던던시 모드가 구역의 모든 R-블록들에 대해 동일하기 때문이다(예를 들어, 전체 R-블록은 제 1 상위-레벨 리던던시 모드에서 동작됨).
[0038] 예를 결론지으면, 제 2 상위-레벨 리던던시 모드에서 덜 신뢰성 있는 페이지들을 동작시키는 것은 덜 신뢰성 잇는 페이지들이 제 1 상위-레벨 리던던시 모드에서 동작하게 하는 것보다 보다 우수한 에러 복구를 가능하게 한다. 대안적으로, 제 2 상위-레벨 리던던시 모드에서 덜 신뢰성 있는 페이지들만 동작시키는 것은 제 2 상위-레벨 리던던시 모드에서 임의의 신뢰성 없는 페이지들을 가진 블록들 모두를 동작시키는 것에 비해 리던던시 정보 오버헤드를 감소시키는 것을 가능하게 한다.
예시적인 실시예들
[0039] 상세한 설명에 대한 도입부를 끝내며, 후속하는 것은 본원에 설명된 개념들에 따른 다양한 실시예 타입들의 추가적인 설명을 제공하면서 "EC들"(예시적인 조합들)로서 명시적으로 열거된 적어도 일부를 포함하는 예시적인 실시예들의 집합이다; 이들 예들은 상호 배타적이거나, 완벽한 것(exhaustive)이거나 제한적인 것을 뜻하지 않는다; 그리고 본 발명은 이들 예시적인 실시예들로 제한되는 것이 아니라, 오히려 발행된 청구항들의 범위 내의 모든 가능한 변경들 및 변형들 및 그의 등가물들을 포괄한다.
[0040] ECl) 방법으로서,
메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하는 것을 포함하는 제 1 상위-레벨 리던던시 모드에서 동작하는 단계 ― M개의 개별 영역들 각각은 동일한 제 1 크기임 ―
메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하는 것을 포함하는 제 2 상위-레벨 리던던시 모드에서 동작하는 단계 ― N개의 개별 영역들 각각은 동일한 제 2 크기임 ―를 포함하고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 크기는 제 2 크기와 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 방법.
[0041] EC2) ECl의 방법에 있어서, M개의 물리적 디바이스들 중 적어도 몇몇은 N개의 물리적 디바이스들 중 적어도 몇몇인, 방법.
[0042] EC3) ECl의 방법에 있어서, M개의 물리적 디바이스들은 N개의 물리적 디바이스들인, 방법.
[0043] EC4) ECl의 방법에 있어서, 제 1 상위-레벨 리던던시 모드에서 동작 및 제 2 상위-레벨 리던던시 모드에서 동작은 동시에 활성화되어, 적어도 시간의 일부 동안 메모리는 N개의 정보 부분들의 저장에 대응하는 정보를 가짐과 동시에 M개의 정보 부분들의 저장에 대응하는 정보를 가지는, 방법.
[0044] EC5) EC4의 방법에 있어서, 제 2 상위-레벨 리던던시 모드에서 동작은 제조 결함, 프로세스 변동, 평평하지 않은 마모, 관찰된 신뢰성 또는 에러 레이트의 변화, 및 실패 중 임의의 하나 또는 그 초과에 응답하는, 방법.
[0045] EC6) ECl의 방법에 있어서, M개의 개별 영역들 중 임의의 하나 또는 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세스하는 단계를 더 포함하고, 상기 액세스하는 단계는 특정 영역의 크기를 결정하는 것을 포함하는, 방법.
[0046] EC7) ECl의 방법에 있어서, 메모리는 복수의 플래시 디바이스들을 포함하는, 방법.
[0047] EC8) EC7의 방법에 있어서, M개의 개별 영역들은 복수의 플래시 디바이스들 중 하나 또는 그 초과의 M개의 개별 블록들에 대응하는, 방법.
[0048] EC9) EC8의 방법에 있어서, 하나 또는 그 초과의 플래시 디바이스들은 제 1 하나 또는 그 초과의 플래시 디바이스들이고 N개의 개별 영역들은 복수의 플래시 디바이스들 중 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하는, 방법.
[0049] EC10) EC9의 방법에 있어서, 제 1 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나 및 제 2 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나는 동일한 플래시 디바이스인, 방법.
[0050] EC11) EC10의 방법에 있어서, 동일한 플래시 디바이스는 하나 또는 그 초과의 플래시 다이를 가진 집적 회로를 포함하는, 방법.
[0051] EC12) EC1O의 방법에 있어서, 동일한 플래시 디바이스는 단일 플래시 다이를 포함하는, 방법.
[0052] EC13) 방법으로서,
메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하는 것을 포함하는 제 1 상위-레벨 리던던시 모드에서 동작하는 단계 ― M개의 개별 영역들 각각은 동일한 제 1 타입임 ―
메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하는 것을 포함하는 제 2 상위-레벨 리던던시 모드에서 동작하는 단계 ― N개의 개별 영역들 각각은 동일한 제 2 타입임 ―를 포함하고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 타입은 제 2 타입과 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 방법.
[0053] EC14) EC13의 방법에 있어서,
메모리는 복수의 플래시 디바이스들을 포함하고,
M개의 개별 영역들은 플래시 디바이스들의 제 1 하나 또는 그 초과의 플래시 디바이스들의 M개의 개별 블록들에 대응하고, 제 1 타입은 블록 타입이고; 그리고
N개의 개별 영역들은 플래시 디바이스들의 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하고, 제 2 타입은 페이지 타입인, 방법.
[0054] EC15) EC14의 방법에 있어서, M개의 개별 블록들 중 하나의 실패를 검출하는 단계, 및 응답하여 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하는 단계를 더 포함하는, 방법.
[0055] EC16) ECl 또는 EC13의 방법에 있어서, J는 K와 동일하지 않은, 방법.
[0056] EC17) EC16의 방법에 있어서, M은 N과 동일한, 방법.
[0057] EC18) ECl 또는 EC13의 방법에 있어서, M은 N과 동일한, 방법.
[0058] EC19) ECl 또는 EC13의 방법에 있어서, M은 N과 동일하지 않은, 방법.
[0059] EC20) EC19의 방법에 있어서, J는 K와 동일하지 않은, 방법.
[0060] EC21) ECl 또는 EC13의 방법에 있어서, 메모리 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하는 동작들 중 하나 또는 그 초과의 동작들은 적어도 부분적으로 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 통하는, 방법.
[0061] EC22) ECl 또는 EC13의 방법에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하는 동작들 중 하나 또는 그 초과의 동작들은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 방법.
[0062] EC23) ECl 또는 EC13의 방법에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 저장하는 동작들 중 하나 또는 그 초과의 동작들은 적어도 부분적으로 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 통하고, 그리고 저장하는 동작들 중 적어도 하나의 동작들은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 방법.
[0063] EC24) EC23의 방법에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 단일 집적 회로(IC)로 집합적으로 구현되는, 방법.
[0064] EC25) EC23의 방법에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 고체-상태 디스크(SSD)에 포함되는, 방법.
[0065] EC26) EC23의 방법에 있어서, 플래시 메모리에서, 저장하는 동작들 중 적어도 하나에 적어도 부분적으로 응답하여 생성된 하나 또는 그 초과의 기록 및/또는 프로그래밍 커맨드들을 수신하는 단계를 더 포함하는, 방법.
[0066] EC27) EC23의 방법에 있어서, 호스트에서 요청을 생성하는 단계를 더 포함하는, 방법.
[0067] EC28) 시스템으로서,
개별 제 1 및 제 2 상위-레벨 리던던시 모드들에 따라 메모리를 관리하기 위한 수단;
메모리를 관리하기 위한 수단에 응답하여, 메모리에 저장하기 위한 수단을 포함하고,
메모리를 관리하기 위한 수단은 저장하기 위한 수단에게 메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하게 지시하도록 인에이블 되고, M개의 개별 영역들의 각각은 동일한 제 1 크기이고,
메모리를 관리하기 위한 수단은 저장하기 위한 수단에게 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하게 추가로 지시하게 인에이블 되고, N개의 개별 영역들의 각각은 동일한 제 2 크기이고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 크기는 제 2 크기와 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 시스템.
[0068] EC29) EC28의 시스템에 있어서, M개의 물리적 디바이스들 중 적어도 몇몇은 N개의 물리적 디바이스들 중 적어도 몇몇인, 시스템.
[0069] EC30) EC28의 시스템에 있어서, M개의 물리적 디바이스들은 N개의 물리적 디바이스들인, 시스템.
[0070] EC31) EC28의 시스템에 있어서, 메모리를 관리하기 위한 수단은 제 1 상위-레벨 리던던시 모드 및 제 2 상위-레벨 리던던시 모드에 따라 동시에 메모리를 관리하도록 인에이블 되어, 적어도 시간의 일부 동안 메모리는 N개의 정보 부분들의 저장에 대응하는 정보를 가짐과 동시에 M개의 정보 부분들의 저장에 대응하는 정보를 가지는, 시스템.
[0071] EC32) EC31의 시스템에 있어서, 메모리를 관리하기 위한 수단은 제조 결함, 프로세스 변동, 평평하지 않은 마모, 관찰된 신뢰성 또는 에러 레이트의 변화, 및 실패 중 임의의 하나 또는 그 초과에 응답하여 제 1 상위-레벨 리던던시 모드에서의 동작으로부터 제 2 상위-레벨 리던던시 모드에서의 동작으로 메모리의 일부를 전이하도록 인에이블 되는, 시스템.
[0072] EC33) EC28의 시스템에 있어서, M개의 개별 영역들 중 임의의 하나 또는 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세스하기 위한 수단을 더 포함하고, 상기 액세스하기 위한 수단은 특정 영역의 크기를 결정하도록 인에이블 하는, 시스템.
[0073] EC34) EC28의 시스템에 있어서, 메모리는 복수의 플래시 디바이스들을 포함하는, 시스템.
[0074] EC35) EC34의 시스템에 있어서, M개의 개별 영역들은 복수의 플래시 디바이스들 중 하나 또는 그 초과 플래시 디바이스들의 M개의 개별 블록들에 대응하는, 시스템.
[0075] EC36) EC35의 시스템에 있어서, 하나 또는 그 초과의 플래시 디바이스들은 제 1 하나 또는 그 초과의 플래시 디바이스들이고 N개의 개별 영역들은 복수의 플래시 디바이스들 중 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하는, 시스템.
[0076] EC37) EC36의 시스템에 있어서, 제 1 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나 및 제 2 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나는 동일한 플래시 디바이스인, 시스템.
[0077] EC38) EC37의 시스템에 있어서, 동일한 플래시 디바이스는 하나 또는 그 초과의 플래시 다이를 가진 집적 회로를 포함하는, 시스템.
[0078] EC39) EC37의 시스템에 있어서, 동일한 플래시 디바이스는 단일 플래시 다이를 포함하는, 시스템.
[0079] EC40) 시스템으로서,
개별 제 1 및 제 2 상위-레벨 리던던시 모드들에 따라 메모리를 관리하기 위한 수단;
메모리를 관리하기 위한 수단에 응답하여, 메모리에 저장하기 위한 수단을 포함하고,
메모리를 관리하기 위한 수단은 저장하기 위한 수단에게 메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하게 지시하도록 인에이블 되고, M개의 개별 영역들의 각각은 동일한 제 1 타입이고,
메모리를 관리하기 위한 수단은 저장하기 위한 수단에게 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하게 추가로 지시하도록 인에이블 되고, N개의 개별 영역들의 각각은 동일한 제 2 타입이고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 타입은 제 2 타입과 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 시스템.
[0080] EC41) EC40의 시스템에 있어서,
메모리는 복수의 플래시 디바이스들을 포함하고,
M개의 개별 영역들은 플래시 디바이스들의 제 1 하나 또는 그 초과의 플래시 디바이스들의 M개의 개별 블록들에 대응하고, 제 1 타입은 블록 타입이고; 그리고
N개의 개별 영역들은 플래시 디바이스들의 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하고, 제 2 타입은 페이지 타입인, 시스템.
[0081] EC42) EC41의 시스템에 있어서, 메모리를 관리하기 위한 수단은 M개의 개별 블록들 중 하나의 실패를 검출하고, 및 검출에 응답하여 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하도록 인에이블 되는, 시스템.
[0082] EC43) EC28 또는 EC40의 시스템에 있어서, J는 K와 동일하지 않은, 시스템.
[0083] EC44) EC43의 시스템에 있어서, M은 N과 동일한, 시스템.
[0084] EC45) EC28 또는 EC40의 시스템에 있어서, M은 N과 동일한, 시스템.
[0085] EC46) EC28 또는 EC40의 시스템에 있어서, M은 N과 동일하지 않은, 시스템.
[0086] EC47) EC46의 시스템에 있어서, J는 K와 동일하지 않은, 시스템.
[0087] EC48) EC28 또는 EC40의 시스템에 있어서, 메모리 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하기 위한 수단은 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 포함하는, 시스템.
[0088] EC49) EC28 또는 EC40의 시스템에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하는 것의 적어도 몇몇은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 시스템.
[0089] EC50) EC28 또는 EC40의 시스템에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 저장하기 위한 수단은 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 포함하고, 그리고 저장하는 것 중 적어도 몇몇은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 시스템.
[0090] EC51) EC50의 시스템에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 단일 집적 회로(IC)로 집합적으로 구현되는, 시스템.
[0091] EC52) EC50의 시스템에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 고체-상태 디스크(SSD)에 포함되는, 시스템.
[0092] EC53) EC50의 시스템에 있어서, 플래시 메모리에서, 저장하는 것 중 적어도 몇몇에 적어도 부분적으로 응답하여 생성된 하나 또는 그 초과의 기록 및/또는 프로그래밍 커맨드들을 수신하기 위한 수단을 더 포함하는, 시스템.
[0093] EC54) EC53의 시스템에 있어서, 플래시 메모리의 임의의 부분들을 더 포함하는, 시스템.
[0094] EC55) EC50의 시스템에 있어서, 호스트에서, 요청을 생성하기 위한 수단을 더 포함하는, 시스템.
[0095] EC56) EC55의 시스템에 있어서, 호스의 임의의 부분들을 더 포함하는, 시스템.
[0096] EC57) 장치로서,
개별 제 1 및 제 2 상위-레벨 리던던시 모드들에 따라 메모리를 제어하도록 인에이블된 상위-레벨 리던던시 제어 회로;
상위-레벨 리던던시 제어 회로에 응답하는, 스토리지 회로를 포함하고,
상위-레벨 리던던시 제어 회로는 스토리지 회로에게 메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하게 지시하도록 인에이블 되고, M개의 개별 영역들의 각각은 동일한 제 1 크기이고,
상위-레벨 리던던시 제어 회로는 스토리지 회로에게 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하게 추가로 지시하게 인에이블 되고, N개의 개별 영역들의 각각은 동일한 제 2 크기이고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 크기는 제 2 크기와 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 장치.
[0097] EC58) EC57의 장치에 있어서, M개의 물리적 디바이스들 중 적어도 몇몇은 N개의 물리적 디바이스들 중 적어도 몇몇인, 장치.
[0098] EC59) EC57의 장치에 있어서, M개의 물리적 디바이스들은 N개의 물리적 디바이스들인, 장치.
[0099] EC60) EC57의 장치에 있어서, 상위-레벨 리던던시 제어 회로는 제 1 상위-레벨 리던던시 모드 및 제 2 상위-레벨 리던던시 모드에 따라 동시에 메모리를 관리하도록 추가로 인에이블 되어, 적어도 시간의 일부 동안 메모리는 N개의 정보 부분들의 저장에 대응하는 정보를 가짐과 동시에 M개의 정보 부분들의 저장에 대응하는 정보를 가지는, 장치.
[0100] EC61) EC60의 장치에 있어서, 상위-레벨 리던던시 제어 회로는 제조 결함, 프로세스 변동, 평평하지 않은 마모, 관찰된 신뢰성 또는 에러 레이트의 변화, 및 실패 중 임의의 하나 또는 그 초과에 응답하여 제 1 상위-레벨 리던던시 모드에서의 동작으로부터 제 2 상위-레벨 리던던시 모드에서의 동작으로 메모리의 일부를 전이하도록 추가로 인에이블 되는, 장치.
[0101] EC62) EC57의 장치에 있어서, M개의 개별 영역들 중 임의의 하나 또는 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세스하도록 인에이블된 액세싱 회로를 더 포함하고, 상기 액세싱 회로는 특정 영역의 크기를 결정하도록 추가로 인에이블 하는, 장치.
[0102] EC63) EC57의 장치에 있어서, 메모리는 복수의 플래시 디바이스들을 포함하는, 장치.
[0103] EC64) EC63의 장치에 있어서, M개의 개별 영역들은 복수의 플래시 디바이스들 중 하나 또는 그 초과의 M개의 개별 블록들에 대응하는, 장치.
[0104] EC65) EC64의 장치에 있어서, 하나 또는 그 초과의 플래시 디바이스들은 제 1 하나 또는 그 초과의 플래시 디바이스들이고 N개의 개별 영역들은 복수의 플래시 디바이스들 중 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하는, 장치.
[0105] EC66) EC65의 장치에 있어서, 제 1 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나 및 제 2 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나는 동일한 플래시 디바이스인, 장치.
[0106] EC67) EC66의 장치에 있어서, 동일한 플래시 디바이스는 하나 또는 그 초과의 플래시 다이를 가진 집적 회로를 포함하는, 장치.
[0107] EC68) EC66의 장치에 있어서, 동일한 플래시 디바이스는 단일 플래시 다이를 포함하는, 장치.
[0108] EC69) 장치로서,
개별 제 1 및 제 2 상위-레벨 리던던시 모드들에 따라 메모리를 제어하도록 인에이블된 상위-레벨 리던던시 제어 회로,
상위-레벨 리던던시 제어 회로에 응답하는, 스토리지 회로를 포함하고,
상위-레벨 리던던시 제어 회로는 스토리지 회로에게 메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하게 지시하도록 인에이블 되고, M개의 개별 영역들의 각각은 동일한 제 1 타입이고,
상위-레벨 리던던시 제어 회로는 스토리지 회로에게 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하게 지시하도록 추가로 인에이블 되고, N개의 개별 영역들의 각각은 동일한 제 2 타입이고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 타입은 제 2 타입과 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 장치.
[0109] EC70) EC69의 장치로서,
메모리는 복수의 플래시 디바이스들을 포함하고,
M개의 개별 영역들은 플래시 디바이스들의 제 1 하나 또는 그 초과의 플래시 디바이스들의 M개의 개별 블록들에 대응하고, 제 1 타입은 블록 타입이고; 그리고
N개의 개별 영역들은 플래시 디바이스들의 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하고, 제 2 타입은 페이지 타입인, 장치.
[0110] EC71) EC70의 장치에 있어서, 상위-레벨 리던던시 제어 회로는 M개의 개별 블록들 중 하나의 실패를 검출하고, 및 검출에 응답하여 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하도록 추가로 인에이블 되는, 장치.
[0111] EC72) EC57 또는 EC69의 장치에 있어서, J는 K와 동일하지 않은, 장치.
[0112] EC73) EC72의 장치에 있어서, M은 N과 동일한, 장치.
[0113] EC74) EC57 또는 EC69의 장치에 있어서, M은 N과 동일한, 장치.
[0114] EC75) EC57 또는 EC69의 장치에 있어서, M은 N과 동일하지 않은, 장치.
[0115] EC76) EC75의 장치에 있어서, J는 K와 동일하지 않은, 장치.
[0116] EC77) EC57 또는 EC69의 장치에 있어서, 메모리 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 스토리지 회로는 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 포함하는, 장치.
[0117] EC78) EC57 또는 EC69의 장치에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하는 것의 적어도 몇몇은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 장치.
[0118] EC79) EC57 또는 EC69의 장치에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 스토리지 회로는 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 포함하고, 그리고 저장하는 것 중 적어도 몇몇은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 장치.
[0119] EC80) EC79의 장치에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 단일 집적 회로(IC)로 집합적으로 구현되는, 장치.
[0120] EC81) EC79의 장치에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 고체-상태 디스크(SSD)에 포함되는, 장치.
[0121] EC82) EC79의 장치에 있어서, 플래시 메모리는 저장하는 것 중 적어도 몇몇에 적어도 부분적으로 응답하여 생성된 하나 또는 그 초과의 기록 및/또는 프로그래밍 커맨드들을 수신하도록 인에이블되는, 장치.
[0122] EC83) EC82의 장치에 있어서, 플래시 메모리의 임의의 부분들을 더 포함하는, 장치.
[0123] EC84) EC79의 장치에 있어서, 호스트는 요청을 생성하도록 인에이블되는, 장치.
[0124] EC85) EC84의 장치에 있어서, 호스트의 임의의 부분들을 더 포함하는, 장치.
[0125] EC86) 명령들의 세트가 저장되어 있는 유형의 컴퓨터 판독가능 매체로서,
명령들의 세트는, 프로세싱 엘리먼트에 의해 실행될 때 프로세싱 엘리먼트로 하여금,
메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하는 것을 포함하는 제 1 상위-레벨 리던던시 모드에서 동작하는 것 ― M개의 개별 영역들 각각은 동일한 제 1 크기임 ―
메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하는 것을 포함하는 제 2 상위-레벨 리던던시 모드에서 동작하는 것 ― N개의 개별 영역들 각각은 동일한 제 2 크기임 ―를 포함하는 동작들을 수행 및/또는 제어하게 하고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 크기는 제 2 크기와 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 유형의 컴퓨터 판독가능 매체.
[0126] EC87) EC86의 유형의 컴퓨터 판독가능 매체에 있어서, M개의 물리적 디바이스들 중 적어도 몇몇은 N개의 물리적 디바이스들 중 적어도 몇몇인, 유형의 컴퓨터 판독가능 매체.
[0127] EC88) EC86의 유형의 컴퓨터 판독가능 매체에 있어서, M개의 물리적 디바이스들은 N개의 물리적 디바이스들인, 유형의 컴퓨터 판독가능 매체.
[0128] EC89) EC86의 유형의 컴퓨터 판독가능 매체에 있어서, 제 1 상위-레벨 리던던시 모드에서 동작 및 제 2 상위-레벨 리던던시 모드에서 동작은 동시에 활성화되어, 적어도 시간의 일부 동안 메모리는 N개의 정보 부분들의 저장에 대응하는 정보를 가짐과 동시에 M개의 정보 부분들의 저장에 대응하는 정보를 가지는, 유형의 컴퓨터 판독가능 매체.
[0129] EC90) EC89의 유형의 컴퓨터 판독가능 매체에 있어서, 제 2 상위-레벨 리던던시 모드에서 동작은 제조 결함, 프로세스 변동, 평평하지 않은 마모, 관찰된 신뢰성 또는 에러 레이트의 변화, 및 실패 중 임의의 하나 또는 그 초과에 응답하는, 유형의 컴퓨터 판독가능 매체.
[0130] EC91) EC86의 유형의 컴퓨터 판독가능 매체에 있어서, 상기 동작들은 M개의 개별 영역들 중 임의의 하나 또는 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세싱하는 것을 더 포함하고, 상기 액세싱하는 것은 특정 영역의 크기를 결정하는 것을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0131] EC92) EC86의 유형의 컴퓨터 판독가능 매체에 있어서, 메모리는 복수의 플래시 디바이스들을 포함하는, 유형의 컴퓨터 판독가능 매체.
[0132] EC93) EC92의 유형의 컴퓨터 판독가능 매체에 있어서, M개의 개별 영역들은 복수의 플래시 디바이스들 중 하나 또는 그 초과의 플래시 디바이스들의 M개의 개별 블록들에 대응하는, 유형의 컴퓨터 판독가능 매체.
[0133] EC94) EC93의 유형의 컴퓨터 판독가능 매체에 있어서, 하나 또는 그 초과의 플래시 디바이스들은 제 1 하나 또는 그 초과의 플래시 디바이스들이고 N개의 개별 영역들은 복수의 플래시 디바이스들 중 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하는, 유형의 컴퓨터 판독가능 매체.
[0134] EC95) EC94의 유형의 컴퓨터 판독가능 매체에 있어서, 제 1 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나 및 제 2 하나 또는 그 초과의 플래시 디바이스들 중 적어도 하나는 동일한 플래시 디바이스인, 유형의 컴퓨터 판독가능 매체.
[0135] EC96) EC95의 유형의 컴퓨터 판독가능 매체에 있어서, 동일한 플래시 디바이스는 하나 또는 그 초과의 플래시 다이를 가진 집적 회로를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0136] EC97) EC95의 유형의 컴퓨터 판독가능 매체에 있어서, 동일한 플래시 디바이스는 단일 플래시 다이를 포함하는, 유형의 컴퓨터 판독가능 매체.
[0137] EC98) 명령들의 세트가 저장되어 있는 유형의 컴퓨터 판독가능 매체로서,
명령들의 세트는, 프로세싱 엘리먼트에 의해 실행될 때, 프로세싱 엘리먼트로 하여금,
메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하는 것을 포함하는 제 1 상위-레벨 리던던시 모드에서 동작하는 것 ― M개의 개별 영역들 각각은 동일한 제 1 타입임 ―
메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하는 것을 포함하는 제 2 상위-레벨 리던던시 모드에서 동작하는 것 ― N개의 개별 영역들 각각은 동일한 제 2 타입임 ―를 포함하는 동작들을 수행 및/또는 제어하게 하고,
M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
M개의 개별 영역들 및 N개의 개별 영역들 각각은 메모리의 비-오버랩핑 영역들이고,
제 1 타입은 제 2 타입과 상이하고, 그리고
M개의 개별 영역들 각각은 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 N개의 개별 영역들 각각은 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있는, 유형의 컴퓨터 판독가능 매체.
[0138] EC99) EC98의 유형의 컴퓨터 판독가능 매체에 있어서,
메모리는 복수의 플래시 디바이스들을 포함하고,
M개의 개별 영역들은 플래시 디바이스들의 제 1 하나 또는 그 초과의 플래시 디바이스들의 M개의 개별 블록들에 대응하고, 제 1 타입은 블록 타입이고; 그리고
N개의 개별 영역들은 플래시 디바이스들의 제 2 하나 또는 그 초과의 플래시 디바이스들의 N개의 개별 페이지들에 대응하고, 제 2 타입은 페이지 타입인, 유형의 컴퓨터 판독가능 매체.
[0139] EC100) EC99의 유형의 컴퓨터 판독가능 매체에 있어서, 동작들은 M개의 개별 블록들 중 하나의 실패를 검출하는 것, 및 응답하여 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하는 것을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
[0140] EC1O1) EC86 또는 EC98의 유형의 컴퓨터 판독가능 매체에 있어서, J는 K와 동일하지 않은, 유형의 컴퓨터 판독가능 매체.
[0141] EC102) EC101의 유형의 컴퓨터 판독가능 매체에 있어서, M은 N과 동일한, 유형의 컴퓨터 판독가능 매체.
[0142] EC103) EC86 또는 EC98의 유형의 컴퓨터 판독가능 매체에 있어서, M은 N과 동일한, 유형의 컴퓨터 판독가능 매체.
[0143] EC104) EC86 또는 EC98의 유형의 컴퓨터 판독가능 매체에 있어서, M은 N과 동일하지 않은, 유형의 컴퓨터 판독가능 매체.
[0144] EC105) EC104의 유형의 컴퓨터 판독가능 매체에 있어서, J는 K와 동일하지 않은, 유형의 컴퓨터 판독가능 매체.
[0145] EC106) EC86 또는 EC98의 유형의 컴퓨터 판독가능 매체에 있어서, 메모리 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하는 것 중 적어도 몇몇은 적어도 부분적으로 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 통하는, 유형의 컴퓨터 판독가능 매체.
[0146] EC107) EC86 또는 EC98의 유형의 컴퓨터 판독가능 매체에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 그리고 저장하는 것 중 적어도 몇몇은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 유형의 컴퓨터 판독가능 매체.
[0147] EC108) EC86 또는 EC98의 유형의 컴퓨터 판독가능 매체에 있어서, 메모리의 영역들 중 적어도 몇몇은 플래시 메모리를 포함하고, 저장하는 것 중 적어도 몇몇은 적어도 부분적으로 플래시 메모리에 커플링되고 적어도 하나의 플래시 메모리 인터페이스 표준과 호환 가능한 플래시 메모리 인터페이스를 통하고, 그리고 저장하는 것 중 적어도 몇몇은 적어도 부분적으로 적어도 하나의 스토리지 인터페이스 표준과 호환 가능한 호스트 인터페이스를 통하여 호스트로부터 수신된 요청에 응답하는, 유형의 컴퓨터 판독가능 매체.
[0148] EC109) EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 단일 집적 회로(IC)로 집합적으로 구현되는, 유형의 컴퓨터 판독가능 매체.
[0149] EC11O) EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 플래시 메모리 인터페이스 및 호스트 인터페이스는 고체-상태 디스크(SSD)에 포함되는, 유형의 컴퓨터 판독가능 매체.
[0150] EC111) EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 플래시 메모리는 저장하는 것 중 적어도 하나에 적어도 부분적으로 응답하여 생성된 하나 또는 그 초과의 기록 및/또는 프로그래밍 커맨드들을 수신하도록 인에이블되는, 유형의 컴퓨터 판독가능 매체.
[0151] EC112) EC108의 유형의 컴퓨터 판독가능 매체에 있어서, 호스트는 요청을 생성하도록 인에이블되는, 유형의 컴퓨터 판독가능 매체.
[0152] EC113) 플래시 메모리 인터페이스 표준을 갖거나 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 플래시 메모리 인터페이스 표준은,
ONFI(Open NAND Flash Interface),
토글-모드 인터페이스(Toggle-mode interface),
DDR(Double-Data-Rate) 동기 인터페이스,
DDR2 동기 인터페이스,
동기 인터페이스, 및
비동기 인터페이스 중 하나 또는 그 초과와 호환 가능하다.
[0153] EC114) 호스트를 갖거나 호스트를 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 호스트는,
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
스토리지 서버,
스토리지 부착된 네트워크(SAN),
네트워크 부착된 스토리지(NAS) 디바이스,
직접 부착된 스토리지(DAS) 디바이스,
스토리지 전자기기,
개인 컴퓨터(PC),
랩톱 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
태블릿 디바이스 또는 컴퓨터,
울트라북 컴퓨터,
전자 판독 디바이스(e-리더),
개인 휴대 정보 단말(PDA),
네비게이션 시스템,
(휴대용) 위성 위치 확인 시스템(GPS) 디바이스,
자동차 제어 시스템,
자동차 매체 제어 시스템 또는 컴퓨터,
프린터, 복사기 또는 팩스 머신 또는 일체형(all-in-one) 디바이스,
POS(Point Of Sale) 디바이스,
캐시 레지스터,
매체 플레이어,
텔레비전,
매체 레코더
디지털 비디오 레코더(DVR),
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 및
전자 게임 중 하나 또는 그 초과를 포함한다.
[0154] EC115) 스토리지 인터페이스 표준을 갖거나 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 스토리지 인터페이스 표준은,
유니버설 직렬 버스(USB) 인터페이스 표준,
콤팩트 플래시(CF) 인터페이스 표준,
멀티미디어카드(MMC) 인터페이스 표준,
임베디드 MMC(eMMC) 인터페이스 표준,
선더볼트(Thunderbolt) 인터페이스 표준,
UFS 인터페이스 표준,
보안 디지털(SD) 인터페이스 표준,
메모리 스틱 인터페이스 표준,
xD-픽처 카드 인터페이스 표준,
집적된 드라이브 전자제품(IDE) 인터페이스 표준,
직렬 어드밴스드 기술 부착(SATA) 인터페이스 표준,
외부 SATA(eSATA) 인터페이스 표준,
소형 컴퓨터 시스템 인터페이스(SCSI) 인터페이스 표준,
직렬 부착된 소형 컴퓨터 시스템 인터페이스(SAS) 인터페이스 표준,
파이버 채널 인터페이스 표준,
이더넷 인터페이스 표준, 및
주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스 표준 중 하나 또는 그 초과를 포함한다.
[0155] EC116) 적어도 하나의 플래시 디바이스를 갖거나 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 적어도 하나의 플래시 디바이스의 적어도 일부분은,
NAND 플래시 기술 스토리지 셀들, 및
NOR 플래시 기술 스토리지 셀들 중 하나 또는 그 초과를 포함한다.
[0156] EC117) 적어도 하나의 플래시 다바이스를 갖거나 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 적어도 하나의 플래시 디바이스의 적어도 일부분은,
단일-레벨 셀(SLC) 플래시 기술 스토리지 셀들, 및
멀티-레벨 셀(MLC) 플래시 기술 스토리지 셀들 중 하나 또는 그 초과를 포함한다.
[0157] EC118) 적어도 하나의 플래시 디바이스를 갖거나 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 적어도 하나의 플래시 디바이스의 적어도 일부분은,
폴리실리콘 기술-기반된 전하 스토리지 셀들, 및
실리콘 질화물 기술-기반된 전하 스토리지 셀들 중 하나 또는 그 초과를 포함한다.
[0158] EC119) 적어도 하나의 플래시 디바이스를 갖거나 지칭하는 전술한 EC들 중 임의의 하나에 있어서, 적어도 하나의 플래시 디바이스의 적어도 일부분은,
2-차원의 기술-기반된 플래시 메모리 기술, 및
3-차원의 기술-기반된 플래시 메모리 기술 중 하나 또는 그 초과를 포함한다.
시스템
[0159] 일부 실시예들에서, SSD와 같은 I/O 디바이스는 SSD 제어기를 포함한다. SSD 제어기는 호스트 인터페이스와 SSD의 NVM 사이의 브리지로서 동작하며 SSD의 호스트 인터페이스를 통해 컴퓨팅 호스트로부터 송신되는 호스트 프로토콜의 커맨드들을 실행한다. 커맨드들의 적어도 일부는 컴퓨팅 호스트로부터 그리고 컴퓨팅 호스트에 각각 송신되는 데이터로 NVM을 기록하고 판독할 것을 SSD에 지시한다. 추가적인 실시예들에서, SSD 제어기는 NVM에서의 물리적 스토리지 어드레스들과 호스트 프로토콜의 LBA들 사이로 변환하는 맵을 이용하도록 인에이블된다. 추가적인 실시예들에서, 맵의 적어도 일부분은 I/O 디바이스의 사설 스토리지(컴퓨팅 호스트에 보이지 않음)를 위해 이용된다. 예를 들어, 컴퓨팅 호스트에 의해 액세스가능하지 않은 LBA들의 일부분은 로그들, 통계들 또는 다른 사설 데이터에 대한 액세스를 관리하기 위해 I/O 디바이스에 의해 이용된다.
[0160] 일부 실시예들에서, NVM에서의 변화하는-크기의 수량들의 압축된 데이터를 액세싱하는 것은 일부 이용 시나리오들에서의 개선된 스토리지 효율성을 제공한다. 예를 들어, SSD 제어기는 (예를 들어, 디스크 기록 커맨드에 관련한) 컴퓨팅 호스트로부터 (압축해제된) 데이터를 수신하고, 데이터를 압축하며, 압축된 데이터를 플래시 메모리에 저장한다. (예를 들어, 디스크 판독 커맨드에 관련한) 컴퓨팅 호스트로부터의 후속적인 요청에 응답하여, SSD 제어기는 플래시 메모리로부터 압축된 데이터를 판독하고, 압축된 데이터를 압축해제하며, 압축해제된 데이터를 컴퓨팅 호스트에 제공한다. 압축된 데이터는 변화하는-크기의 수량들에 따라 플래시 메모리에 저장되며, 양자 크기는 예를 들어, 다양한 데이터에 관한 압축 효율성, 동작 모드 및 압축 알고리즘으로 인하여 변화한다. SSD 제어기는 헤더(들)가 플래시 메모리에 저장되는 곳을 결정하기 위해 포함된 맵 테이블을 컨설팅(consulting)함으로써 부분적으로 데이터를 압축해제한다. SSD 제어기는 적절한(압축된) 데이터가 플래시 메모리에 저장되는 곳을 결정하기 위해 플래시 메모리로부터 획득되는 헤더(들)를 파싱한다. SSD 제어기는 컴퓨팅 호스트에 제공하기 위해 압축해제된 데이터를 생성하도록 플래시 메모리로부터 적절한 데이터를 압축해제한다. 본 출원에서, 압축해제(및 그 변형들)는 비압축(decompress)(및 그 변형들)와 동의어이다.
[0161] 다양한 실시예들에서, SSD 제어기는 컴퓨팅 호스트와 인터페이싱하기 위한 호스트 인터페이스, 플래시 메모리와 같은 NVM과 인터페이싱하기 위한 인터페이스 및 인터페이스들을 제어하고 압축 및 비압축뿐 아니라, 하위-레벨 리던던시 및/또는 에러 정정, 상위-레벨 리던던시 및/또는 에러 정정 및 독립적 실리콘 엘리먼트들로의 동적 상위-레벨 리던던시 모드 관리를 수행하기 위한(및/또는 그 수행의 다양한 양상들을 제어하기 위한) 회로를 포함한다.
[0162] 다양한 실시예들에 따르면, 일부 호스트 인터페이스들은 USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페이스 표준, 선더볼트 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스틱 인터페이스 표준, xD-픽처 카드 인터페이스 표준, IDE 인터페이스 표준, SATA 인터페이스 표준, SCSI 인터페이스 표준, SAS 인터페이스 표준, 및 PCIe 인터페이스 표준 중 하나 또는 그 초과와 호환가능하다. 다양한 실시예들에 따르면, 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN, NAS 디바이스, DAS 디바이스, 스토리지 전자기기, PC, 랩톱 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-리더와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (휴대용) GPS 디바이스, 자동차 제어 시스템, 자동차 매체 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시-레지스터, 매체 플레이어, 텔레비전, 매체 레코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋 및 전자 게임중 전부 또는 임의의 부분들이다. 일부 실시예들에서, (SAS/SATA 브리지와 같은) 인터페이싱 호스트는 컴퓨팅 호스트로서 및/또는 컴퓨팅 호스트에 대한 브리지로서 동작한다.
[0163] 다양한 실시예들에서, SSD 제어기는 하나 또는 그 초과의 프로세서들을 포함한다. 프로세서들은 SSD 제어기의 동작을 제어 및/또는 수행하기 위한 펌웨어를 실행한다. SSD 제어기는 커맨드들 및/또는 상태뿐 아니라 데이터를 송신하고 수신하도록 컴퓨팅 호스트와 통신한다. 컴퓨팅 호스트는 운영 시스템, 드라이버 및 애플리케이션 중 하나 또는 그 초과를 실행한다. SSD 제어기와 컴퓨팅 호스트에 의한 통신은 임의선택적으로 및/또는 선택적으로 드라이버 및/또는 애플리케이션을 통한다. 제 1 예에서, SSD 제어기에 대한 모든 통신은 드라이버를 통하며, 애플리케이션은 드라이버가 SSD 제어기를 위한 특정 커맨드들로 변환하는 상위-레벨 커맨드들을 드라이버에 제공한다. 제 2 예에서, 드라이버는 바이패스 모드를 구현하며 애플리케이션은 드라이버를 통해 SSD 제어기에 특정 커맨드들을 송신하도록 인에이블된다. 제 3 예에서, PCIe SSD 제어기는 일단 구성되면, 드라이버를 바이패싱하면서, SSD 제어기와 직접 통신하기 위해 애플리케이션을 인에이블하는, 하나 또는 그 초과의 가상 기능들(VFs)을 지원한다.
[0164] 다양한 실시예들에 따르면, 일부 SSD들은 형성-팩터들, 전기적 인터페이스들, 및/또는 HDD들, CD 드라이브들 및 DVD 드라이브들과 같은 자기 및/또는 광학 비-휘발성 스토리지에 의해 이용되는 프로토콜들과 호환가능하다. 다양한 실시예들에서, SSD들은 제로 또는 그 초과의 패리티 코드들, 제로 또는 그 초과의 RS 코드들, 제로 또는 그 초과의 BCH 코드들, 제로 또는 그 초과의 비터비 또는 다른 트렐리스(trellis) 코드들, 및 제로 또는 그 초과의 LDPC 코드들의 다양한 조합들을 이용한다.
[0165] 도 1a는 NVM들에 대한 SSD 제어기가 NVM들에 대한 혼합-입도 상위-레벨 리던던시를 제공하는 것을 포함하는 SSD의 실시예의 선택된 상세사항들을 예시한다. SSD 제어기는 NVM 엘리먼트들(예를 들어, 플래시 메모리들)을 통해 구현된 바와 같은, 비-휘발성 스토리지를 관리하기 위한 것이다. SSD 제어기(100)는 하나 또는 그 초과의 외부 인터페이스들(110)을 통해 호스트(예시되지 않음)에 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 외부 인터페이스들(110)은: SATA 인터페이스; SAS 인터페이스; PCIe 인터페이스; 파이버 채널 인터페이스; (10 기가비트 이더넷과 같은) 이더넷 인터페이스; 이전의 인터페이스들 중 임의의 것의 비-표준 버전; 커스톰 인터페이스; 또는 스토리지 및/또는 통신들 및/또는 컴퓨팅 디바이스들을 상호접속하기 위해 이용되는 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다. 예를 들어, 일부 실시예들에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
[0166] SSD 제어기(100)는 플래시 디바이스(192)의 하나 또는 그 초과의 인스턴스들 같은, 하나 또는 그 초과의 스토리지 디바이스들을 포함하는 NVM(199)에 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통해 추가로 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은: 비동기 인터페이스; 동기 인터페이스; 단일-데이터-레이트(SDR) 인터페이스; 더블-데이터-레이트(DDR) 인터페이스; DRAM-호환가능한 DDR 또는 DDR2 동기 인터페이스; ONFI 2.2 또는 ONFI 3.0 호환가능한 인터페이스와 같은 ONFI 호환가능한 인터페이스; 토글-모드 호환가능한 플래시 인터페이스; 이전의 인터페이스들 중 임의의 것의 비-표준 버전; 커스톰 인터페이스; 또는 스토리지 디바이스들에 접속하기 위해 이용되는 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다.
[0167] 각 플래시 디바이스(192)는 일부 실시예들에서, 하나 또는 그 초과의 개별 플래시 다이(194)를 갖는다. 플래시 디바이스(192)의 특정 하나의 타입에 따르면, 특정 플래시 디바이스(192)에서의 복수의 플래시 다이(194)는 임의선택적으로 및/또는 선택적으로 병렬로 액세스가능하다. 플래시 디바이스(192)는 단지 SSD 제어기(100)에 통신가능하게 커플링하도록 인에이블되는 일 타입의 스토리지 디바이스를 나타낸다. 다양한 실시예들에서, SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 폴리실리콘 또는 실리콘 질화물 기술-기반된 전하 스토리지 셀들을 이용하는 플래시 메모리, 2- 또는 3-차원 기술-기반된 플래시 메모리, 판독-전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자성 메모리, 위상-변경 메모리, 레이스트랙(racetrack) 메모리, ReRAM, 또는 임의의 다른 타입의 메모리 디바이스 또는 스토리지 매체와 같은 임의의 타입의 스토리지 디바이스가 이용가능하다.
[0168] 다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은: 버스 당 하나 또는 그 초과의 플래시 디바이스(192)를 갖는 하나 또는 그 초과의 버스들; 일 그룹에서의 버스들이 일반적으로 병렬로 액세스되는 경우의, 버스 당 하나 또는 그 초과의 플래시 디바이스(192)를 갖는 버스들의 하나 또는 그 초과의 그룹들; 또는 디바이스 인터페이스들(190) 상에 하나 또는 그 초과 인스턴스들의 플래시 디바이스(192)의 임의의 다른 구조화로서 구조화된다.
[0169] 도 1a에서 계속하여, SSD 제어기(100)는 호스트 인터페이스들(111), 데이터 프로세싱(121), 버퍼(131), 맵(141), 리사이클러(151), ECC(161), 디바이스 인터페이스 논리(191) 및 CPU(171)와 같은 하나 또는 그 초과의 모듈들을 갖는다. 도 1a에 예시되는 특정 모듈들 및 상호접속들은 단지 일 실시예를 나타내며, 모듈들 중 일부 또는 전부의 많은 배치들 및 상호접속들뿐 아니라, 예시되지 않은 추가적인 모듈들이 구상된다. 제 1 예에서, 일부 실시예들에서, 듀얼-포팅을 제공하기 위해 2개 또는 그 초과의 호스트 인터페이스들(111)이 존재한다. 제 2 예에서, 일부 실시예들에서, 데이터 프로세싱(121) 및/또는 ECC(161)는 버퍼(131)와 조합된다. 제 3 예에서, 일부 실시예들에서, 호스트 인터페이스들(111)은 버퍼(131)에 직접 커플링되며, 데이터 프로세싱(121)은 임의선택적으로 및/또는 선택적으로 버퍼(131)에 저장되는 데이터에 대해 동작한다. 제 4 예에서, 일부 실시예들에서, 디바이스 인터페이스 논리(191)는 버퍼(131)에 직접 커플링되며, ECC(161)는 임의선택적으로 및/또는 선택적으로 버퍼(131)에 저장되는 데이터에 대해 동작한다.
[0170] 호스트 인터페이스들(111)은 외부 인터페이스들(110)을 통해 커맨드들 및/또는 데이터를 송신하고 수신하며, 일부 실시예들에서, 태그 트래킹(113)을 통해 개별 커맨드들의 진행을 트래킹한다. 예를 들어, 커맨드들은 (LBA와 같은) 어드레스 및 판독할 (LBA 수량들의 수와 같은, 예를 들어, 섹터들) 데이터의 양을 특정하는 판독 커맨드를 포함한다. 다른 예에 대해, 커맨드들은 (LBA와 같은) 어드레스 및 기록할 (LBA 수량들의 수와 같은, 예를 들어, 섹터들) 데이터의 양을 포함한다; 이에 응답하여 SSD는 기록 상태 및/또는 요청들 기록 데이터를 제공하며 임의선택적으로 후속하여 기록 상태를 제공한다. 또 다른 예에 대해, 커맨드들은 더 이상 할당될 필요가 없는 (하나 또는 그 초과의 LBA들과 같은) 하나 또는 그 초과의 어드레스들을 특정하는 할당-해제(de-allocation) 커맨드(예를 들어, 트림 커맨드)를 포함하며; 이에 응답하여 SSD는 그에 따라 맵을 수정하며 임의선택적으로 할당-해제 상태를 제공한다. 일부 문맥들에서 ATA 호환가능한 TRIM 커맨드는 예시적인 할당-해제 커맨드이다. 또 다른 예에 대해, 커맨드들은 수퍼 커패시터 테스트 커맨드 또는 데이터 경화(hardening) 성공 질문을 포함한다; 이에 응답하여, SSD는 적절한 상태를 제공한다. 일부 실시예들에서, 호스트 인터페이스들(111)은 SATA 프로토콜과 호환가능하며, NCQ 커맨드들을 이용하여, 0 내지 31의 수로서 표현되는 고유한 태그를 각각 갖는, 최대 32개의 계류중인 커맨드들을 갖도록 인에이블된다. 일부 실시예들에서, 태그 트래킹(113)은 SSD 제어기(100)에 의한 프로세싱 동안 커맨드를 트래킹하기 위해 이용되는 내부 태그와, 외부 인터페이스들(110)을 통해 수신되는 커맨드에 대한 외부 태그를 관련시키도록 인에이블된다.
[0171] 다양한 실시예들에 따르면, 하나 또는 그 초과의 것은: 데이터 프로세싱(121)은 임의선택적으로 및/또는 선택적으로 버퍼(131)와 외부 인터페이스들(110) 사이에 송신되는 일부 또는 모든 데이터를 프로세싱하며; 및 데이터 프로세싱(121)은 임의선택적으로 및/또는 선택적으로 버퍼(131)에 저장되는 데이터를 프로세싱한다. 일부 실시예들에서, 데이터 프로세싱(121)은 포맷팅; 리포맷팅; 트랜스코딩; 및 임의의 다른 데이터 프로세싱 및/또는 조작 태스크 중 하나 또는 그 초과를 수행하기 위해 하나 또는 그 초과의 엔진들(123)을 이용한다.
[0172] 버퍼(131)는 디바이스 인터페이스들(190)로부터 외부 인터페이스들(110)에 송신되고 외부 인터페이스들(110)로부터 디바이스 인터페이스들(190)로 송신되는 데이터를 저장한다. 일부 실시예들에서, 버퍼(131)는 하나 또는 그 초과의 인스턴스들의 플래시 디바이스(192)를 관리하기 위해 SSD 제어기(100)에 의해 이용되는, 일부 또는 전부의 맵 테이블들과 같은 시스템 데이터를 추가로 저장한다. 다양한 실시예들에서, 버퍼(131)는: 데이터의 일시적 스토리지를 위해 이용되는 메모리(137); 버퍼(131)에 및/또는 그로부터 데이터의 이동을 제어하기 위해 이용되는 DMA(133); 및 상위-레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 이용되는 ECC-X(135); 및 다른 데이터 이동 및/또는 조작 기능들 중 하나 또는 그 초과를 갖는다. 상위-레벨 리던던시 기능의 일 예는 RAID-형 능력(예를 들어, RASIE)이며, 여기서 리던던시는 디스크 레벨 대신에 플래시 디바이스(예를 들어, 플래시 디바이스(192)들의 다수의 하나들) 레벨 및/또는 플래시 다이(예를 들어, 플래시 다이(194)) 레벨에 있다.
[0173] 다양한 실시예들에 따르면, 하나 또는 그 초과의 것은: ECC(161)는 임의선택적으로 및/또는 선택적으로 버퍼(131)와 디바이스 인터페이스들(190) 사이에 송신되는 일부 또는 모든 데이터를 프로세싱하며; 및 ECC(161)는 임의선택적으로 및/또는 선택적으로 버퍼(131)에 저장된 데이터를 프로세싱한다. 일부 실시예들에서, ECC(161)는 하나 또는 그 초과의 ECC 기술들에 따라서와 같은, 하위-레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 이용된다. 일부 실시예들에서, ECC(161)는 CRC 코드; 해밍 코드; RS 코드; BCH 코드; LDPC 코드; 비터비 코드; 트렐리스 코드; 경판정(hard-decision) 코드; 연판정(soft-decision) 코드; 소거-기반된 코드; 임의의 에러 검출 및/또는 정정 코드; 및 선행하는 것의 임의의 조합 중 하나 또는 그 초과를 구현한다. 일부 실시예들에서, ECC(161)는 (LDPC 디코더들과 같은) 하나 또는 그 초과의 디코더들을 포함한다.
[0174] 디바이스 인터페이스 논리(191)는 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들을 제어한다. 디바이스 인터페이스 논리(191)는 플래시 디바이스(192)의 프로토콜에 따른 플래시 디바이스(192)의 인스턴스들에/로부터 데이터를 송신하도록 인에이블된다. 디바이스 인터페이스 논리(191)는 디바이스 인터페이스들(190)을 통해 플래시 디바이스들(192)의 인스턴스들의 제어를 선택적으로 시퀀싱하기 위해 스케줄링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케줄링(193)은 플래시 디바이스(192)의 인스턴스들에 대한 동작들을 큐잉하도록, 그리고 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 하나들이 이용가능함에 따라 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들의 개별 인스턴스들에 동작들을 선택적으로 송신하도록 인에이블된다.
[0175] 맵(141)은 NVM(199)에서의 위치들로 외부 데이터 어드레스들을 맵핑하기 위해 테이블(143)을 이용하여, 외부 인터페이스들(110) 상에 이용되는 데이터 어드레싱과 디바이스 인터페이스들(190) 상에 이용되는 데이터 어드레싱 사이를 변환한다. 예를 들어, 일부 실시예들에서, 맵(141)은 테이블(143)에 의해 제공되는 맵핑을 통해, 하나 또는 그 초과의 플랫 다이(194)를 타겟팅하는 어드레스들을 블로킹 및/또는 페이징하기 위해 외부 인터페이스들(110) 상에 이용되는 LBA들을 변환한다. 드라이브 제조 또는 할당-해제 이후로 기록되지 않은 LBA들에 대해, LBA들이 판독되는 경우에 리턴하기 위해 맵은 디폴트 값을 포인팅한다. 예를 들어, 할당-해제 커맨드를 프로세싱할 때, 맵은 할당-해제된 LBA들에 대응하는 엔트리들이 디폴트 값들 중 하나를 포인팅하도록 수정된다. 다양한 실시예들에서, 각각 대응하는 포인터를 갖는 다양한 디폴트 값들이 존재한다. 복수의 디폴트 값들은 일부 할당-해제된 LBA들(제 1 범위에서와 같음)을 하나의 디폴트 값으로서 판독하는 한편, 다른 할당-해제된 LBA들(제 2 범위에서와 같음)을 다른 디폴트 값으로서 판독하는 것을 가능하게 한다. 다양한 실시예들에서 디폴트 값들은 플래시 메모리, 하드웨어, 펌웨어, 커맨드 및/또는 원시(primitive) 아규먼트들 및/또는 파라미터들, 프로그램가능한 레지스터들, 또는 그들의 다양한 조합들에 의해 정의된다.
[0176] 일부 실시예들에서, 맵(141)은 외부 인터페이스들(110) 상에 이용되는 어드레스들과 디바이스 인터페이스들(190) 상에 이용되는 데이터 어드레싱 사이의 변환들을 수행하고 및/또는 룩업하기 위해 테이블(143)을 이용한다. 다양한 실시예들에 따르면, 테이블(143)은: 일-레벨 맵; 2-레벨 맵; 멀티-레벨 맵; 맵 캐시; 압축된 맵; 하나의 어드레스 공간으로부터 다른 공간으로의 임의의 타입의 맵핑; 및 전술한 바의 임의의 조합 중 하나 또는 그 초과이다. 다양한 실시예들에 따르면, 테이블(143)은: 정적 랜덤 액세스 메모리; 동적 랜덤 액세스 메모리; (플래시 메모리와 같은) NVM; 캐시 메모리; 온-칩 메모리; 오프-칩 메모리; 및 전술한 바의 임의의 조합 중 하나 또는 그 초과를 포함한다.
[0177] 일부 실시예들에서, 리사이클러(151)는 가비지(garbage) 수집을 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 블록들이 재-기록가능하기 전에 소거되어야 하는 블록들을 포함한다. 리사이클러(151)는 플래시 디바이스(192)의 인스턴스들의 일부분들이 맵(141)에 의해 유지되는 맵을 스캐닝함으로써와 같이, 활성적으로 사용중인지(예를 들어, 할당-해제 대신 할당되는)를 결정하도록, 그리고 플래시 디바이스(192)의 인스턴스들의 비사용된(예를 들어, 할당-해제된) 부분들이 비사용된 부분들을 소거함으로써 기록을 위해 이용가능하게 만들도록 인에이블된다. 추가적인 실시예들에서, 리사이클러(151)는 기록을 위해 이용가능한 플래시 디바이스(192)의 인스턴스들의 더 큰 인접한 부분들을 만들기 위해 플래시 디바이스(192)의 인스턴스들 내에 저장된 데이터를 이동시키도록 인에이블된다.
[0178] 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 서로 다른 타입들 및/또는 속성들의 데이터를 저장하기 위한 하나 또는 그 초과의 대역들을 갖도록 선택적으로 및/또는 동적으로 구성, 관리 및/또는 이용된다. 대역들의 수, 배치, 크기 및 타입은 동적으로 변경가능하다. 예를 들어, 컴퓨팅 호스트로부터의 데이터는 핫(활성) 대역에 기록되는 한편, 리사이클러(151)로부터의 데이터는 콜드(덜 활성) 대역에 기록된다. 일부 이용 시나리오들에서, 컴퓨팅 호스트가 긴, 순차적 스트림을 기록하는 경우에, 핫 대역의 크기가 성장하는 한편, 컴퓨팅 호스트가 랜덤 기록들 또는 소수의 기록들을 행하는 경우에, 콜드 대역의 크기가 성장한다.
[0179] CPU(171)는 SSD 제어기(100)의 다양한 부분들을 제어한다. CPU(171)는 CPU 코어(172)를 포함한다. CPU 코어(172)는 다양한 실시예들에 따라, 하나 또는 그 초과의 단일-코어 또는 멀티-코어 프로세서들이다. CPU 코어(172)에서의 개별 프로세서들 코어들은 일부 실시예들에서, 멀티-스레드된다. CPU 코어(172)는 명령 및/또는 데이터 캐시들 및/또는 메모리들을 포함한다. 예를 들어, 명령 메모리는 CPU 코어(172)가 SSD 제어기(100)를 제어하기 위해 프로그램들(예를 들어, 때때로 펌웨어로 칭해지는 소프트웨어)을 실행하게 할 수 있는 명령들을 포함한다. 일부 실시예들에서, CPU 코어(172)에 의해 실행되는 펌웨어 중 일부 또는 전부는 (예시된 바와 같이, 예를 들어, 도 1b에서의 NVM(199)의 펌웨어(106)로서) 플래시 디바이스(192)의 인스턴스들 상에 저장된다.
[0180] 다양한 실시예들에서, CPU(171)는: 커맨드들이 진행하는 동안 외부 인터페이스들(110)을 통해 수신되는 커맨드들을 트래킹하고 제어하기 위한 커맨드 관리(173); 버퍼(131)의 할당 및 이용을 제어하기 위한 버퍼 관리(175); 맵(141)을 제어하기 위한 변환 관리(177); 데이터 어드레싱의 일관성을 제어하고 외부 데이터 액세스들과 리사이클 데이터 액세스들 사이와 같은 충돌들을 회피하기 위한 코히어런시 관리(179); 디바이스 인터페이스 논리(191)를 제어하기 위한 디바이스 관리(181); 식별 정보의 통신 및 수정을 제어하기 위한 아이덴티티 관리(182), 및 임의선택적으로 다른 관리 유닛들을 더 포함한다. 다양한 실시예들에 따르면, CPU(171)에 의해 수행되는 관리 기능들 중 아무것도, 임의의 것, 또는 전부는 하드웨어, (외부 인터페이스들(110)을 통해 접속되는 호스트 상에 또는 CPU 코어(172) 상에 실행하는 펌웨어와 같은) 소프트웨어, 또는 그의 임의의 조합에 의해 제어되고 및/또는 관리된다.
[0181] 일부 실시예들에서, CPU(171)는: 성능 통계들을 수집하고 및/또는 보고하는 것; SMART를 구현하는 것; 전력 시퀀싱을 제어하는 것, 전력 소모를 제어하는 것 및/또는 모니터링하는 것 및/또는 조정하는 것; 전력 실패들에 응답하는 것; 클록 레이트들을 제어하는 것 및/또는 모니터링하는 것 및/또는 조정하는 것; 및 다른 관리 태스크들 중 하나 또는 그 초과와 같은 다른 관리 태스크들을 수행하도록 인에이블된다.
[0182] 다양한 실시예들은 SSD 제어기(100)와 유사하며 호스트 인터페이스들(111) 및/또는 외부 인터페이스들(110)의 적응을 통해서와 같은, 다양한 컴퓨팅 호스트들과의 동작과 호환가능한 컴퓨팅-호스트 플래시 메모리 제어기를 포함한다. 다양한 컴퓨팅 호스트들은 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN, NAS 디바이스, DAS 디바이스, 스토리지 전자기기, PC, 랩톱 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-리더와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (휴대용) GPS 디바이스, 자동차 제어 시스템, 자동차 매체 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시-레지스터, 매체 플레이어, 텔레비전, 매체 레코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋 및 전자 게임 중 하나 또는 임의의 조합을 포함한다.
[0183] 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또는 임의의 부분들은 단일 IC, 멀티-다이 IC의 단일 다이, 멀티-다이 IC의 복수의 다이들, 또는 복수의 IC들 상에 구현된다. 예를 들어, 버퍼(131)는 SSD 제어기(100)의 다른 엘리먼트들에서와 동일한 다이 상에 구현된다. 다른 예에 대해, 버퍼(131)는 SSD 제어기(100)의 다른 엘리먼트들과 다른 다이 상에 구현된다.
[0184] 도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세사항들을 예시한다. SSD(101)는 디바이스 인터페이스들(190)를 통해 NVM(199)에 커플링된 SSD 제어기(100)를 포함한다. 도면은 실시예들의 다양한 클래스들을 예시한다: 호스트에 직접 커플링되는 단일 SSD, 각각의 외부 인터페이스들을 통해 호스트에 직접 각각 개별적으로 커플링되는 복수의 SSD들, 및 다양한 상호접속 엘리먼트들을 통해 호스트에 간접으로 커플링되는 하나 또는 그 초과의 SSD들.
[0185] 호스트에 직접 커플링되는 단일 SSD의 예시적인 실시예로서, SSD(101)의 하나의 인스턴스는 외부 인터페이스들(110)(예를 들어, 스위치/패브릭/중간 제어기(103)는 생략되고, 바이패스되거나, 통과됨)를 통해 호스트(102)에 직접 커플링된다. 각각의 외부 인터페이스들을 통해 호스트에 직접 각각 커플링되는 복수의 SSD들의 예시적인 실시예로서, SSD(101)의 복수의 인스턴스들의 각각은 외부 인터페이스들(110)(예를 들어, 스위치/패브릭/중간 제어기(103)는 생략되고, 바이패스되거나, 통과됨)를 통해 호스트(102)에 직접 각각 커플링된다. 다양한 상호접속 엘리먼트들을 통하여 호스트에 간접으로 커플링되는 하나 또는 그 초과의 SSD들의 예시적인 실시예로서, SSD(101)의 하나 또는 그 초과의 인스턴스들의 각각은 호스트(102)에 간접으로 각각 커플링된다. 각각의 간접 커플링은 스위치/패브릭/중간 제어기(103)에 커플링되는 외부 인터페이스들(110) 및 호스트(102)에 커플링하는 중간 인터페이스들(104)의 각각의 인스턴스들을 통한다.
[0186] 스위치/패브릭/중간 제어기(103)를 포함하는 실시예들 중 일부는 또한 메모리 인터페이스(180)를 통해 커플링되며 SSD들에 의해 액세스가능한 카드 메모리(112C)를 포함한다. 다양한 실시예들에서, SSD들, 스위치/패브릭/중간 제어기, 및/또는 카드 메모리 중 하나 또는 둘 이상이 물리적으로 식별가능한 모듈, 카드 또는 플러그가능한 엘리먼트(예를 들어, I/O 카드(116)) 상에 포함된다. 일부 실시예들에서, SSD(101)(또는 그의 변형들)는 호스트(102)로서 동작하는 개시자에 커플링되는 SATA 드라이브 또는 SAS 드라이브에 대응한다.
[0187] 호스트(102)는 OS(105), 드라이버(107), 애플리케이션(109) 및 멀티-디바이스 관리 소프트웨어(114)의 다양한 조합들과 같은, 호스트 소프트웨어(115)의 다양한 엘리먼트들을 실행하도록 인에이블된다. 점선 화살표(107D)는 호스트 소프트웨어 ←→ I/O 디바이스 통신을 나타내며, 예를 들어, 드라이버(107)를 통해, 또는 VF로서 직접, 드라이버(107)를 통한 OS(105), 드라이버(107), 및 애플리케이션(109) 중 임의의 하나 또는 그 초과로부터/에 그리고 SSD(101)의 인스턴스들 중 하나 또는 그 초과에/로부터 데이터가 송신/수신되는 것을 나타낸다.
[0188] OS(105)는 SSD와 인터페이싱하기 위한 (드라이버(107)에 의해 개념적으로 예시된) 드라이버들을 포함하고 및/또는 드라이버들로 동작하도록 인에이블된다. 다양한 버전들의 윈도우즈(예를 들어, 95, 98, ME, NT, XP, 2000, 서버, 비스타, 및 7), 다양한 버전들의 리눅스(예를 들어, Red Hat, Debian, 및 Ubuntu), 및 다양한 버전들의 MacOS(예를 들어, 8, 9 및 X)가 OS(105)의 예들이다. 다양한 실시예들에서, 드라이버들은 SATA, AHCI 또는 NVM 익스프레스와 같은 표준 인터페이스 및/또는 프로토콜로 동작가능한 표준 및/또는 일반 드라이버들(때때로 "수축-랩핑된(shrink-wrappe)" 또는 "사전-설치된(pre-installed)"으로 칭해짐)이거나, SSD(101)에 특정한 커맨드들의 이용을 인에이블하기 위해 커스토마이징 및/또는 벤더 특정된다. 일부 드라이브들 및/또는 드라이버들은 심지어 일반 드라이버로 SSD(101)에 특정한 커맨드들을 이용하기 위해 커스토마이징된 애플리케이션을 인에이블하면서, SSD(101)에 직접 커맨드들을 전달하기 위해, 최적화된 NAND 액세스(때때로 ONA로 칭해짐) 또는 직접 NAND 액세스(때때로 DNA로 칭해짐) 기술들을 통해 애플리케이션(109)과 같은, 애플리케이션-레벨 프로그램들을 인에이블하도록 통과 모드들을 갖는다. ONA 기술들은: 비-표준 수정자들(힌트들)의 이용; 벤더-특정 커맨드들의 이용; 압축능력에 따른 실제 NVM 이용과 같은 비-표준 통계들의 통신; 및 다른 기술들 중 하나 또는 둘 이상을 포함한다. DNA 기술들은: NVM에 대한 액세스를 비맵핑된 판독, 기록, 및/또는 소거를 제공하는 벤더-특정 또는 비-표준 커맨드들의 이용; I/O 디바이스가 달리 이용하는 데이터의 포맷팅을 바이패싱함으로써와 같은, NVM에 대한 더 직접 액세스를 제공하는 비-표준 또는 벤더-특정 커맨드들의 이용; 및 다른 기술들 중 하나 또는 그 초과를 포함한다. 드라이버의 예들은 ONA 또는 DNA 지원이 없는 드라이버, ONA-인에이블된 드라이버, DNA-인에이블된 드라이버, 및 ONA/DNA-인에이블된 드라이버이다. 드라이버의 추가적인 예들은 벤더-제공된, 벤더-개발된, 및/또는 벤더-강화된 드라이버, 및 클라이언트-제공된, 클라이언트-개발된, 및/또는 클라이언트-강화된 드라이버이다.
[0189] 애플리케이션-레벨 프로그램들의 예들은 ONA 또는 DNA 지원이 없는 애플리케이션, ONA-인에이블된 애플리케이션, DNA-인에이블된 애플리케이션, 및 ONA/DNA-인에이블된 애플리케이션이다. 점선(109D)은 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 드라이버를 통한 바이패스 또는 애플리케이션을 위한 VF를 통한 바이패스)을 나타내며, 예를 들어, ONA-인에이블된 애플리케이션 및 ONA-인에이블된 드라이버는 중재자로서 OS를 이용하는 애플리케이션이 없이, SSD와 통신한다. 점선(109V)은 애플리케이션 ←→ I/O 디바이스 통신(예를 들어, 애플리케이션에 대한 VF를 통한 바이패스)을 나타내며, 예를 들어 DNA-인에이블된 애플리케이션 및 DNA-인에이블된 드라이버는 중재자들로서 OS 또는 드라이버를 이용하는 애플리케이션이 없이 SSD와 통신한다.
[0190] NVM(199)의 하나 또는 그 초과의 부분들은 일부 실시예들에서, 펌웨어 스토리지, 예를 들어, 펌웨어(106)를 위해 이용된다. 펌웨어 스토리지는 하나 또는 그 초과의 펌웨어 이미지들(또는 그의 일부분들)을 포함한다. 펌웨어 이미지는 예를 들어, SSD 제어기(100)의 CPU 코어(172)에 의해, 실행되는 펌웨어의 하나 또는 그 초과의 이미지들을 갖는다. 펌웨어 이미지는 다른 예로서, 예를 들어, 펌웨어 실행 동안 CPU 코어에 의해 참조되는, 상수들, 파라미터 값들 및 NVM 디바이스 정보 중 하나 또는 둘 이상의 이미지들을 갖는다. 펌웨어의 이미지들은 예를 들어, 현재의 펌웨어 이미지 및 제로 또는 그 초과의 이전(펌웨어 업데이트들에 관한) 펌웨어 이미지들에 대응한다. 다양한 실시예들에서, 펌웨어는 일반, 표준, ONA 및/또는 DNA 동작 모드들을 제공한다. 일부 실시예들에서, 펌웨어 동작 모드들 중 하나 또는 그 초과는 임의선택적으로 드라이버에 의해 통신되고 및/또는 제공되는 키들(keys) 또는 다양한 소프트웨어 기술들을 통해 인에이블된다(예를 들어, 하나 또는 그 초과의 API들이 "로킹해제(unlocked)"된다).
[0191] 스위치/패브릭/중간 제어기를 결여하는 일부 실시예들에서, SSD는 외부 인터페이스들(110)을 통해 직접 호스트에 커플링된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기와 같은, 다른 제어기들의 하나 또는 그 초과의 중간 레벨들을 통해 호스트에 커플링된다. 일부 실시예들에서, SSD(101)(또는 그의 변형들)는 SAS 드라이브 또는 SATA 드라이브에 대응하며, 스위치/패브릭/중간 제어기(103)는 차례로 개시자에 커플링되는 확장자에 대응하거나, 대안적으로 스위치/패브릭/중간 제어기(103)는 확장자를 통해 개시자에 간접으로 커플링되는 브리지에 대응한다. 일부 실시예들에서, 스위치/패브릭/중간 제어기(103)는 하나 또는 그 초과의 PCIe 스위치들 및/또는 패브릭들을 포함한다.
[0192] 호스트(102)가 컴퓨팅 호스트(예를 들어, 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 스토리지 서버, SAN, NAS 디바이스, DAS 디바이스, 스토리지 전자기기, PC, 랩톱 컴퓨터, 노트북 컴퓨터, 및/또는 넷북 컴퓨터)인 실시예들의 일부와 같은, 다양한 실시예들에서, 컴퓨팅 호스트는 하나 또는 그 초과의 로컬 및/또는 원격 서버들(예를 들어, 임의선택적 서버들(118))과 (예를 들어, 임의선택적 I/O & 스토리지 디바이스들/자원들(117) 및 임의선택적 LAN/WAN(119)을 통해) 통신하도록 임의선택적으로 인에이블된다. 통신은 예를 들어, 임의의 하나 또는 그 초과의 SSD(101) 엘리먼트들의 로컬 및/또는 원격 액세스, 관리 및/또는 이용을 인에이블한다. 일부 실시예들에서, 통신은 전적으로 또는 부분적으로 이더넷을 통한다. 일부 실시예들에서, 통신은 전적으로 또는 부분적으로 파이버 채널을 통한다. LAN/WAN(119)은 다양한 실시예들에서, 서버 팜에서의 네트워크, 네트워크 커플링 서버 팜들, 메트로-영역 네트워크 및 인터넷에서의 네트워크 중 임의의 하나 또는 그 초과와 같은, 하나 또는 그 초과의 로컬 및/또는 광역 네트워크들을 나타낸다.
[0193] 다양한 실시예들에서, 하나 또는 그 초과의 NVM들과 조합하는 컴퓨팅-호스트 플래시 메모리 제어기 및/또는 SSD 제어기는 USB 스토리지 컴포넌트, CF 스토리지 컴포넌트, MMC 스토리지 컴포넌트, eMMC 스토리지 컴포넌트, 선더볼트 스토리지 컴포넌트, UFS 스토리지 컴포넌트, SD 스토리지 컴포넌트, 메모리 스틱 스토리지 컴포넌트, 및 xD-픽처 카드 스토리지 컴포넌트와 같은 비-휘발성 스토리지 컴포넌트로서 구현된다.
[0194] 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또는 임의의 부분들, 또는 그 기능들은 제어기가 커플링되는 (예를 들어, 도 1b의 호스트(102)) 호스트에 구현된다. 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기)의 전부 또는 임의의 부분들, 또는 그 기능들은 하드웨어(예를 들어, 논리 회로), 소프트웨어 및/또는 펌웨어(예를 들어, 드라이버 소프트웨어 및/또는 SSD 제어 펌웨어) 또는 그 임의의 조합을 통해 구현된다. 예를 들어, (도 1a의 ECC(161) 및/또는 ECC-X(135)와 유사한 바와 같은) ECC 유닛과 관련된 기능은 호스트 상의 소프트웨어를 통해 부분적으로 및 SSD 제어기에서의 펌웨어 및 하드웨어의 조합을 통해 부분적으로 구현된다. 다른 예에서, (도 1a의 리사이클러(151)와 유사한 바와 같은) 리사이클러 유닛과 관련된 기능은 호스트 상의 소프트웨어를 통해 부분적으로 및 컴퓨팅-호스트 플래시 메모리 제어기에서의 하드웨어를 통해 부분적으로 구현된다.
맵핑 동작
[0195] 도 2는 LBA의 LPN 부분을 맵핑하는 실시예의 선택된 상세사항들을 예시한다. 일부 실시예들에서, 판독 유닛은 NVM의 페이지의 일부분과 같은 독립적으로 판독가능한 NVM의 가장 미세한 입도이다. 추가적인 실시예들에서, 판독 유닛은 체크 비트들에 의해 보호되는 모든 데이터와 함께 (하위-레벨) 에러-정정 코드의 체크 비트들(때때로 리던던시라 칭해짐)에 대응한다. 예를 들어, 도 1a의 ECC(161)는 LDPC 코드를 통해서와 같은 체크 비트들을 통해 에러 정정을 구현하며, 판독 유닛은 LDPC 코딩 비트들에 의해 보호되는 데이터 비트들에 추가하여 LDPC 코드를 구현하는 코딩 비트들에 대응한다.
[0196] 일부 실시예들에서, 맵(141)은 (도 1a에 예시된 바와 같은) 테이블(143)을 통해서와 같이, LBA(211)의 LPN(213) 부분을 LPN을 위한 맵 정보(Map Info)(221)로 맵핑한다. (LPN에 대한 맵 정보(221)와 같은) LPN에 대한 맵 정보는 때때로 맵 엔트리로 칭해진다. 맵(141)은 LPN을 대응하는 맵 엔트리와 관련시키는 것으로 말해진다. 다양한 실시예들에서, 맵핑은 하나 또는 그 초과의 관련 룩업들을 통해, 하나 또는 그 초과의 비-관련 룩업들을 통해, 및/또는 하나 또는 그 초과의 다른 기술들을 통한다.
[0197] 일부 실시예들에서, SSD 제어기(100)는 잠재적으로 및/또는 활성적으로 이용중인 각 LPN에 대한 하나의 맵 엔트리를 유지한다.
[0198] 일부 실시예들에서, LPN을 위한 맵 정보(221)는 각각의 판독 유닛 어드레스(223) 및 판독 유닛들의 길이(225)를 포함한다. 일부 실시예들에서, 길이 및/또는 범위는 예를 들어, 판독 유닛들의 길이(225)의 전부 또는 임의의 부분들에서 범위로부터의 오프셋으로서 길이를 저장함으로써와 같이, 저장되어 인코딩된다. 추가적인 실시예들에서, 제 1 LPN은 제 1 맵 엔트리와 관련되고, (제 1 LPN과 다르지만, 제 1 LPN에 의해 지칭되는 논리적 페이지에서와 동일한 크기의 논리적 페이지를 지칭하는) 제 2 LPN은 제 2 맵 엔트리와 관련되며, 제 1 맵 엔트리의 판독 유닛들의 각각의 길이는 제 2 맵 엔트리의 판독 유닛들의 각각의 길이와 다르다.
[0199] 다양한 실시예들에서, 시간의 동일한 시점에서, 제 1 LPN은 제 1 맵 엔트리와 관련되고, (제 1 LPN과 다른) 제 2 LPN은 제 2 맵 엔트리와 관련되며, 제 1 맵 엔트리의 각각의 판독 유닛 어드레스는 제 2 맵 엔트리의 각각의 판독 유닛 어드레스에서와 동일하다. 추가적인 실시예들에서, 제 1 LPN과 관련된 데이터 및 제 2 LPN과 관련된 데이터는 NVM(199)에서 동일한 디바이스의 동일한 물리적 페이지에 저장된다.
[0200] 다양한 실시예들에 따르면, 판독 유닛 어드레스(223)는: NVM에서의 시작 어드레스; NVM에서의 종료 어드레스; 선행하는 것의 임의의 오프셋; 및 LPN(213)과 관련된 NVM의 일부분을 식별하기 위한 임의의 다른 기술들 중 하나 또는 둘 이상과 관련된다.
[0201] 도 3은 판독 유닛들의 양자들에서 측정되는 길이를 집합적으로 갖는, 다양한 판독 유닛들로서 조직된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 NVM을 액세싱하는 실시예의 선택된 상세사항들을 예시한다. 다양한 실시예들에 따르면, 제 1 판독 유닛(313)은: NVM의 어드레스 공간에서의 최하위 어드레스를 갖는 판독 데이터(311)에서의 판독 유닛들 중 하나; 판독 유닛들 중 고정된 하나; 판독 유닛들 중 임의의 하나; 판독 유닛들 중 가변적인 하나; 및 임의의 다른 기술에 의해 선택되는 판독 유닛들 중 하나 중 하나 또는 그 초과이다. 다양한 실시예들에서, SSD 제어기(100)는 판독 유닛들의 길이(225)에 의해 특정되는 판독 유닛들의 수보다 많지 않게 판독함으로써 NVM(199)을 액세스하고 판독 데이터(311)를 생성하도록 인에이블된다.
[0202] 도 4a는 판독 유닛(401A)으로서 (도 3의 판독 유닛들(313 또는 315)과 같은) 판독 유닛의 실시예의 선택된 상세사항들을 예시한다. 다양한 실시예들 및/또는 이용 시나리오들에서, 헤더 1(411A) 내지 헤더 N(419A)은 인접하며, 헤더들의 각각에 의해 (각각의 오프셋들을 통해서와 같이) 식별된 각각의 데이터 구역들은 인접하며 헤더들 중 최종 헤더에 후속한다. 데이터 구역들은 집합적으로 데이터 바이트들(421A)을 형성한다. 데이터 구역들은 헤더들이 저장되는 위치 순서를 매칭하는 위치 순서로 저장된다. 예를 들어, 제 1 헤더를 고려하면, 판독 유닛의 시작에서, 제 2 헤더 및 제 3 헤더가 인접하여 제 1 헤더에 후속한다. (제 1 헤더에서의 제 1 오프셋에 의해 식별되는) 제 1 데이터 구역은 인접하게 제 3 헤더에 후속한다. (제 2 헤더에서의 제 2 오프셋에 의해 식별되는) 제 2 데이터 구역은 인접하게 제 1 데이터 구역에 후속한다. 유사하게, (제 3 헤더로 식별되는) 제 3 데이터 구역은 제 2 데이터 구역에 후속한다.
[0203] 도 4b는 판독 유닛(401B)으로서 (도 3의 판독 유닛들(313 또는 315)과 같은) 판독 유닛의 다른 실시예의 선택된 상세사항들을 예시한다. 다양한 실시예들 및/또는 이용 시나리오들에서, 헤더 마커(HM)(410B)는 후속하는 인접한 헤더들(헤더 1(411B), 헤더 2(412B)... 헤더 N(419B))의 수를 표시하는 (1-바이트 필드와 같은) 임의선택적 초기 필드이다. 데이터 구역들(데이터 바이트들(421B), 데이터 바이트들(422B)... 데이터 바이트들(429B))은 헤더들(헤더 1(411B), 헤더 2(412B)...헤더 N(419B))에 의해 각각 식별되며 헤더들이 저장되는 위치 순서의 반대인 위치 순서로 저장된다. 헤더들은 판독 유닛의 시작에서 시작하는 한편, 대응하는 데이터 구역들은 판독 유닛의 종료에서 시작한다. 일부 실시예들에서, 데이터 구역 내의 데이터 바이트들(예를 들어, 데이터 바이트들(421B), 데이터 바이트들(422B)... 데이터 바이트들(429B))은 순방향 순서(위치 순서를 매칭하는 바이트 순서)로 배치되는 한편, 다른 실시예들에서, 데이터 바이트들은 역방향 순서(위치 순서에 관하여 역전된 바이트 순서)로 배치된다. 일부 실시예들에서, 헤더 마커가 판독 유닛들에 이용되며, 여기서 헤더들 및 데이터 바이트들은 (예를 들어, 도 4a에 예시된 바와 같은) 동일한 위치 순서로 저장된다.
[0204] 일부 실시예들에서, 임의선택적 패딩 바이트들(431A)(또는 431B)은 특정 LPN과 관련되는 데이터의 입도에 따른다. 예를 들어, 일부 실시예들에서, 데이터 바이트들(421A)(또는 집합적으로 데이터 바이트들(421B), 데이터 바이트들(422B)... 데이터 바이트들(429B))은 헤더 1(411A) 내지 헤더 N(419A)(또는 헤더 1(411B), 헤더 2(412B)...헤더 N(419B)) 중 최종 하나를 제외한 모두와 연관된 데이터를 저장한 후, 8 바이트들 같은 고정된 양의 나머지 공간보다 적게 갖는 경우에, 최종 헤더와 관련되는 LPN에 대한 데이터는 후속하는 판독 유닛에서 시작한다. 추가적인 실시예들에서, 최종 헤더에서의 특정 오프셋 값(예를 들어, 모두 1임)은 최종 헤더와 관련된 LPN에 대한 데이터가 후속하는 판독 유닛에서 시작함을 표시한다.
[0205] 도 5는 다수의 필드들을 갖는 (도 4a의 헤더 1(411A) 내지 헤더 N(419A) 또는 도 4b의 헤더 1(411B) 내지 헤더(419B) 중 임의의 것과 같은) 헤더의 일 실시예의 선택된 상세사항들을 예시한다. 일부 실시예들에서, 헤더들은 고정된-길이이다(예를 들어, 각 헤더는 동일한 수의 바이트들 길이이다). 헤더(501)는 필드들 타입(511), 최종 표시자(513), 플래그들(515), LPN(517), 길이(519) 및 오프셋(521)을 포함한다. 타입 필드는 데이터 바이트들의 카테고리를 식별한다. 예를 들어, 타입 필드는 데이터 바이트들의 카테고리가 호스트 데이터(예를 들어, 논리적 페이지 데이터) 또는 시스템 데이터(예를 들어, 맵 정보 또는 체크포인트 정보) 중 하나임을 표시한다. 최종 필드는 헤더가 데이터 바이트들 이전의 최종 헤더임을 표시한다. 헤더 마커를 갖는 일부 실시예들에서, 최종 필드는 임의선택적으로 생략된다. LPN 필드는 헤더가 관련되는 LPN이다. LPN 필드는 예를 들어, 특정 LPN을 매칭하는 LPN 필드를 갖는 하나에 대한 헤더들을 탐색함으로써, 특정 LPN과 관련되는 헤더들 중 특정 하나를 결정하기 위해 헤더들의 파싱을 인에이블한다. 길이 필드는 데이터 바이트들(예를 들어, 헤더(501)와 관련되는 데이터 바이트들(421A)에 얼마나 많은 데이터의 바이트들이 존재하는지)의 바이트들에서의 길이이다. 일부 실시예들에서, 오프셋 필드에서의 오프셋은 특정 입도(예를 들어, 8-바이트 입도)에 따라 라운딩된다.
[0206] 다양한 실시예들에서, 특정 LPN과 관련되는 일부 또는 모든 정보가 특정 LPN과 관련된 맵 엔트리, 특정 LPN과 관련된 헤더 또는 둘 다에 저장된다. 예를 들어, 일부 실시예들에서, 길이(519)의 일부 또는 전부는 헤더에서보다 오히려 맵 엔트리에 저장된다.
[0207] 도 6은 논리적 슬라이스들(slices) 및/또는 섹션들에서 관리되는 다수의 NVM 디바이스들(예를 들어, 하나 또는 그 초과의 플래시 다이 및/또는 플래시 칩들)의 블록들, 페이지들 및 판독 유닛들의 일 실시예의 선택된 상세사항들을 예시한다. 관리 기능들은 판독, 리사이클링, 소거, 프로그래밍/기록, 및 다른 관리 기능들 중 임의의 하나 또는 둘 이상을 포함한다. 논리적 슬라이스들 및/또는 섹션들은 때때로 R-블록들로서 지칭된다. 도면은 66개의 플래시 다이를 갖는 일 실시예를 예시한다. 플래시 다이 중 3개는 명시적으로 예시되며(플래시 다이 610.65, 610.1 및 610.0) 플래시 다이 중 63개는 암시적으로 예시된다(610.64...610.2).
[0208] (플래시 다이(610.65...610.1 및 610.0)) 중 임의의 하나와 같은) 플래시 다이의 각각은 블록들(플래시 다이(610.65)의 블록들(610.65BB... 610.65B1 및 610.65B0); 플래시 다이(610.0)의 블록들(610.0BB...610.0B1, 및 610.0B0); 등과 같은) 블록들로서 조직되는 스토리지를 제공한다. 블록들은 차례로 (블록 (610.65B0)의 페이지들(610.65PP...610.65P1 및 610.65P0); 블록(610.0B0)의 페이지들(610.0PP...610.0P1 및 610.0P0); 등과 같은) 페이지들을 포함한다. 페이지들은 차례로 (페이지(610.65P0)의 판독 유닛들(610.65RR...610.65R1 및 610.65R0); 페이지(610.0P0)의 판독 유닛들(610.0RR...610.0R1 및 610.0R0); 등과 같은) 판독 유닛들을 포함한다.
[0209] 일부 실시예들에서, 각 플래시 다이는 정수개의 블록들(예를 들어, N개의 블록들)을 포함하며 블록은 소거의 최소 양자들이다. 일부 실시예들에서, 각 블록은 정수개의 페이지들을 포함하며 페이지는 기록의 최소 양자들이다. 다양한 실시예들에 따르면, 하나 또는 둘 이상은: 판독 유닛은 판독 및 에러 정정의 최소 양자들이며; 각 페이지는 정수개의 판독 유닛들을 포함하며; 2개 또는 그 초과의 페이지들의 관련된 그룹은 정수개의 판독 유닛들을 포함하며; 및 판독 유닛들은 임의선택적으로 및/또는 선택적으로 페이지 경계들에 걸친다.
[0210] 다양한 실시예들에서, 다양한 NVM 관리 기능들(예를 들어, 판독, 리사이클링, 소거 및/또는 프로그래밍/기록)은 R-블록들의 유닛들로 수행된다. R-블록은 플래시 메모리의 모든 다이에 걸친 논리적 슬라이스 또는 섹션으로서 예시된다. 예를 들어, R개의 플래시 다이를 갖는 플래시 메모리에서, 각 플래시 다이는 N개의 블록들을 가지며, 각 R-블록은 총 N개의 R-블록들에 대해, 함께 취해지는 플래시 다이의 각각으로부터의 i번째 블록이다. 다른 예에서, R개의 플래시 다이를 갖는 플래시 메모리에서, 각각은 N개의 블록들을 갖고, 각 R-블록은 총 N/2개의 R-블록들에 대해, 플래시 다이의 각각으로부터 i번째 및 (i+1)번째 블록이다. 또 다른 예에서, 복수의 듀얼 평면 디바이스들을 갖는 플래시 메모리에서, 각 R-블록은 듀얼 평면 디바이스들의 각각으로부터 i번째 짝수 블록 및 i번째 홀수 블록이다.
[0211] 블록들이 R-블록을 형성하는 일부로서 쌍들로 또는 다른 관련된 그룹들로 처리되는 다양한 실시예들에서, 블록들의 관련된 그룹의 각각의 블록으로부터의 각각의 페이지들은 또한 적어도 기록을 위해, 더 큰 멀티-블록 페이지를 형성하는 유닛으로서 처리된다. 예를 들어, 전술한 듀얼 평면 예에 계속하여, 짝수 블록들 중 특정한 하나의 제 1 페이지 및 홀수 블록들의 관련된 하나의 제 1 페이지는 기록을 위한 유닛으로서, 그리고 임의선택적으로 및/또는 선택적으로 판독을 위한 유닛으로서 처리된다. 유사하게, 특정의 짝수 블록의 제 2 페이지 및 관련된 홀수 블록의 제 2 페이지가 하나의 유닛으로서 처리된다. 다양한 실시예들에 따르면, 본원에 이용된 바와 같은 NVM의 페이지는: NVM의 단일 페이지; NVM의 멀티-블록 페이지; 임의선택적으로 및/또는 선택적으로 판독을 위한 하나 또는 그 초과의 개별적인 페이지들로서 처리되는 기록을 위한 NVM의 멀티-블록 페이지; 및 NVM의 페이지들의 임의의 다른 그룹핑 또는 관련 중 하나 또는 둘 이상을 지칭한다.
[0212] 도면은 그들 중 3개가 명시적으로(660.0, 660.1 및 660.R), 복수의 예시적인 R-블록들을 예시한다. 각 예시적인 R-블록은 함께 취해지는, 플래시 다이의 각각으로부터 i번째 블록이다. 예를 들어, R-블록(660.0)은 플래시 다이(610.65)로부터의 블록(610.65B0), 플래시 다이(610.64)로부터의 블록 0(명시적으로 예시되지 않음) 등 내지 플래시 다이(610.1)의 블록(610.1B0) 및 플래시 다이(610.0)의 블록(610.0B0)이다. 플래시 다이 당 N개의 블록들이 존재함에 따라, 따라서 총 N개의 R-블록들(R-블록(660.R)...R-블록(660.1) 및 R-블록(660.0))이 존재한다.
[0213] R-블록의 다른 예는 함께 취해지는, 플래시 다이의 각각으로부터 i번째 및 (i+1)번째 블록이다(예를 들어, 플래시 다이(610.65)로부터의 블록들(610.65B0 및 610.65B1), 플래시 다이(610.64)로부터의 블록들 0 및 1(명시적으로 예시되지 않음) 등 내지 플래시 다이(610.1)로부터의 블록들(610.1B0 및 610.1B1) 및 플래시 다이(610.0)로부터의 블록들(610.0B0 및 610.0B1)이다). 따라서, 각 플래시 다이에 N개의 블록들이 존재하는 경우에, N/2개의 R-블록들이 존재한다. R-블록의 또 다른 예는 복수의 듀얼 평면 디바이스들의 각각으로부터 i번째 짝수 및 홀수 블록들이다. 일부 블록들이 동작할 수 없는 경우라도, R-블록들이 각 다이로부터 하나의 블록을 갖는 것을 보장하기 위해 가상과 물리적 블록 어드레스들 사이의 맵핑을 포함하여, R-블록들로서의 관리를 위한 플래시 다이 블록들의 다른 배치들이 고려된다. 다양한 실시예들에서, R-블록들에서의 블록들 중 결함있는 블록들을 교체하기 위해 가상과 물리적 블록 어드레스들 사이의 맵핑이 스페어(spare)(달리 말하면 비사용된) 블록들을 갖도록 각 플래시 다이에서의 N개의 블록들 중 일부는 스페어들로서 이용된다.
[0214] 다양한 실시예들에서, 플래시 다이에서의 정보의 판독들 및/또는 기록들은 '판독 유닛 먼저' 순서 또는 '페이지 먼저' 순서와 같은 순서에 따라 수행된다. 도면에 예시된 판독 유닛들에 대한 판독 유닛 먼저 순서의 일 예는 판독 유닛(610.0R0)으로 시작하여 610.1R0 ... 610.65R0, 610.0R1, 610.1R1 ... 610.65R1 등이 후속되며, 610.65RR로 종료한다. 도면에 예시된 판독 유닛들의 페이지 먼저 순서의 일 예는 판독 유닛(610.0R0)으로 시작하여 610.0R1 ... 610.0RR, 610.1R0, 610.1R1 ...610.1RR ... 610.65R0, 610.65R1 등이 후속되며, 610.65RR로 종료한다.
[0215] 다양한 실시예들에서, 모든 디바이스들(예를 들어, 스트라이핑 방향(600)에 의해 개념적으로 제안된 바와 같은, 최하위로부터 최상위 넘버링된 디바이스들)에 걸쳐, R-블록 내의 데이터의 스트라이핑 순서 및/또는 기록은 페이지(예를 들어, 최하위부터 최상위) 먼저이며, 그 후에 (모든 디바이스들에 걸쳐) 다음의 최상위 페이지, 등이며, R-블록의 최종 페이지 전반으로 계속한다. 구체적으로 R-블록(660.0)에 관하여, 예시적인 순서가 페이지(610.0P0)(플래시 다이(610.0)의 제 1 블록에서의 제 1 페이지)로 시작하며, 그 후에 페이지(610.1P0)(플래시 다이(610.1)의 제 1 블록에서의 제 1 페이지)가 후속되며, 페이지(610.65P0)(플래시 다이(610.65)의 제 1 블록에서의 제 1 페이지, 및 R-블록(660.0)의 최종 블록)로 계속하는 등이다. 예시적인 순서는 페이지(610.0P1)(플래시 다이(610.0)의 제 1 블록에서의 제 2 페이지)로 시작하며, 그 후에 페이지(610.1P1)(플래시 다이(610.1)의 제 1 블록에서의 제 2 페이지)가 후속되며, 페이지(610.65P1)(플래시 다이(610.65)의 제 1 블록에서의 제 2 페이지)로 계속하는 등이다. 예시는 동일한 순서로 계속한다. 예시적인 순서가 페이지(610.0PP)(플래시 다이(610.0)의 제 1 블록에서의 최종 페이지)로 완료하며, 그 후에 페이지(610.1PP)(플래시 다이(610.1)의 제 1 블록에서의 최종 페이지)가 후속되며, 페이지(610.65PP)(플래시 다이(610.65)의 제 1 블록에서의 최종 페이지, 및 R-블록(660.0)의 최종 블록에서의 최종 페이지)로 종료하는 등이다.
[0216] 다양한 실시예들에서, 플래시 다이(610.65...610.1 및 610.0)는 도 1a의 하나 또는 그 초과의 플래시 다이(194)의 각각의 하나들에 대응한다. 일부 실시예들에서, 플래시 다이(610.65...610.1 및 610.0)는 NVM(199)의 전부보다 작은 부분이다. 예를 들어, 다양한 실시예들에서, 데이터는 플래시 다이의 다수의 그룹들에 걸쳐 독립적으로 스트라이핑되며, 플래시 다이의 그룹들의 각각은 독립적으로 액세스가능하다.
상위-레벨 리던던시 기술들
[0217] 도 7은 상위-레벨 리던던시 기술들의 다양한 실시예들의 선택된 상세사항들을 예시한다. 플래시 디바이스(들)(720)는 64개의 플래시 다이(도 6에 명시적으로 그리고 암시적으로 예시된 바와 같이 플래시 다이(610.63, 610.62, 610.61 ... 610.0)을 포함하고 인터페이스 채널(들)(730)을 통하여 통신한다. 추가 플래시 디바이스(들)(740)는 최대 두 개의 플래시 다이(도 6에 명시적으로 그리고 암시적으로 예시된 바와 같이 플래시 다이(610.65 및 610.64)를 포함하고 추가의 인터페이스 채널(들)(750)을 통해 통신한다. 플래시 다이는 상위-레벨 리던던시 정보에 대한 스토리지 및 SSD의 NVM 같은 스토리지 서브-시스템의 데이터 스토리지(예를 들어 사용자 데이터 및/또는 사용자 자유 공간)를 제공한다. (리던던시 정보의 환경들에서 '사용자 데이터' 및 데이터 스토리지의 예들은 운영 시스템 데이터, 애플리케이션 데이터, SSD 관리 데이터, 등 같은 추후 리트리벌을 위해 플래시 메모리 상에 저장된 리던던시 정보 이외의 모든 데이터를 포함한다). 상위-레벨 리던던시는 예를 들어, 기록 동작을 적당하게 완료하기 위하여 판독 동작 또는 실패에 대한 에러-정정 데이터(예를 들어 하위-레벨 ECC 기능들을 통해)를 제공하기 위하여 실패 같은 하나 또는 그 초과의 플래시 다이의 하나 또는 그 초과의 부분들의 간헐적 또는 영구 실패를 복구하는 것을 인에이블한다.
[0218] 예를 들어, 각각의 플래시 다이(또는 대안적으로 각각의 블록 또는 각각의 블록 내의 각각의 페이지)는 실리콘 독립 엘리먼트들의 리던던트 어레이(RASIE)의 환경에서 동작된다. 실패가 특정 플래시 다이에서 검출되면(예를 들어, 특정 다이의 블록의 일부의 ECC-정정 불가능 판독 에러로 인함), 응답하여, 플래시 다이의 다른 것들에 저장된 리던던트 정보는 특정 다이에 의해 제공되었을 정보를 결정하기 위하여 사용된다. 몇몇 실시예들 및/또는 이용 시나리오들에서, 충분한 리던던트 정보는 하나의 플래시 다이 내에서 하나의 실패(단일 동작 동안)로부터 복구를 인에이블하기 위하여 저장된다. 단일 실패로부터 복구를 인에이블하는 모드에서의 동작은, 몇몇 실시예들에서 상위-레벨 리던던시 정보에 대한 하나의 플래시 다이에 등가의 공간을 할당 및 관리하는 것을 포함하고, 'RASIE-1'로 지칭된다. 두 개의 실패들로부터의 복구를 인에이블하는 모드에서의 동작은, 몇몇 실시예들에서 상위-레벨 리던던시 정보에 대한 두 개의 플래시 다이에 등가인 공간을 할당 및 관리하는 것을 포함하고, 'RASIE-2'로 지칭된다. 3개의 실패들로부터 복구를 인에이블하는 모드에서의 동작은, 몇몇 실시예들에서 상위-레벨 리던던시 정보에 대한 3개의 플래시 다이에 등가인 공간을 할당하고 관리하는 것을 포함하고, 'RASIE-3'으로 지칭된다.
[0219] 몇몇 실시예들 및/또는 이용 시나리오들에서, 다이-레벨 실패들을 관리하는 것은 객관적임, 다이 사이에서 정보를 확산하는 것이 수행된다. 예를 들어, 상위-레벨 리던던시 정보는 상위-레벨 리던던시 정보에만 특정하게 할당된 하나 또는 그 초과의 다이에 저장된다. 몇몇 실시예들 및/또는 이용 시나리오들에서, 블록-레벨 실패들을 관리하는 것은 객관적이고, 다이 내의 블록들 사이에서 정보를 확산하는 것이 수행된다. 예를 들어, 상위-레벨 리던던시 정보는 상위-레벨 리던던시 정보에 할당된 하나 또는 그 초과의 블록들에 저장되고, 할당은 블록들이 어느 특정 다이의 부분인지에 관련되지 않는다. 몇몇 실시예들 및/또는 이용 시나리오들에서, 특정-전체-레벨 실패들을 관리하는 것은, N개의 엘리먼트들보다 많지 않은 엘리먼트들(예를 들어, RASIE-1에 대해 1 및 RASIE-2에 대해 2)이 특정 엔티티들 중 임의의 하나 내에 있도록 정보를 확산하는 것을 포함한다. 엔티티들의 예들은 (패키지된) 디바이스, 다이, R-블록, 블록, R-페이지(본원 어딘가에 설명됨), 페이지, 워드 라인과 연관된 셀들, 및 상기 중 하나 또는 그 초과의 복수들을 포함한다.
[0220] 상위-레벨 리던던시 정보는 계산되고 플래시 다이에 기록된 (사용자) 데이터에 따라 기록되고, 따라서 실패가 검출될 때 정보를 제공하기 위하여 이용 가능하다. 다양한 실시예들에서, 상위-레벨 리던던시 정보는 상위-레벨 리던던시 정보가 연관되는 (사용자) 데이터를 기록하는 것에 관하여 비 특정 시간 순서 전, 후, 또는 내에서 플래시 다이에 기록된다.
[0221] 도면은 다음 테이블(표 1)에서 요약된 바와 같이 RASIE 동작 모드들의 다양한 실시예들을 예시한다.
Figure 112015020378965-pct00010
[0222] 보다 구체적으로, RASIE-1 모드들에서, 하나의 다이에 등가의 공간은 상위-레벨 리던던시 정보에 할당된다. RASIE-1 모드 1-0에서, 추가의 플래시 디바이스(들)(740)가 사용되지 않는데, 그 이유는 상위-레벨 리던던시 정보가 플래시 디바이스(들)(720)(예를 들어 플래시 다이(610.63) 중 하나의 다이에 저장되고, 데이터 스토리지를 위해 이용 가능한(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간) 다이 중 63개(플래시 다이(610.62 ... 610.0))를 남기기 때문이다. RASIE-1 모드 1-1에서, 추가의 플래시 디바이스(들)(740) 중 하나의 다이는 사용되고(예를 들어, 플래시 다이(610.64), 데이터 스토리지를 위하여 이용 가능한 플래시 디바이스(들)(720) 모두(64개의 다이)를 남긴다.
[0223] RASIE-2 모드들에서, 두 개의 다이에 등가의 공간은 상위-레벨 리던던시 정보에 할당된다. RASIE-2 모드 2-0에서, 추가의 플래시 디바이스(들)(740)는 사용되지 않는데, 그 이유는 상위-레벨 리던던시 정보가 플래시 다이(들)(720)의 2개의 다이(예를 들어, 플래시 다이(610.63) 및 플래시 다이(610.62))에 저장되고, 데이터 스토리지를 위해 이용 가능한 다이 중 62개(예를 들어 플래시 다이(610.61 ...610.0)를 남기기 때문이다. RASIE-2 모드 2-1에서, 추가의 플래시 디바이스(들)(740)의 하나의 다이는 사용되는데(예를 들어, 플래시 다이(610.64)), 그 이유는 상위-레벨 리던던시 정보가 플래시 디바이스(들)(720)의 하나의 다이(예를 들어, 플래시 다이(610.63)에 부분적으로 저장되고, 데이터 스토리지를 위해 이용 가능한 다이 중 63개(플래시 다이(610.62 ... 610.0))를 남기기 때문이다. RASIE-2 모드 2-2에서, 추가의 플래시 디바이스(들)(740)의 2개의 다이는 사용되고(예를 들어, 플래시 다이(610.65) 및 플래시 다이(610.64), 데이터 스토리지를 위해 이용 가능한 플래시 디바이스(들)(720)의 모든 다이(64 다이)를 남긴다.
[0224] 일부 실시예들에서, 모든 이용 시나리오들에서 사용되지 않은 다이는 거주되지 않는다. 예를 들어, RASIE 2-0 모드 및 RASIE 1-0 모드(그러나 다른 RASIE 모드들에서는 아님)에서만 동작 가능한 시스템에서, 추가의 플래시 디바이스(들)(740)는 거주되지 않는다.
[0225] 일부 실시예들에서, 상위-레벨 리던던시 정보는 오로지 "전용" 다이(예를 들어, RASIE-1 모드 1-0에서 플래시 다이(610.63) 또는 RASIE-2 모드 2-2에서 플래시 당이(610.65) 및 플래시 다이(610.64))에만 저장된다. 다른 실시예들에서, 상위-레벨 리던던시 정보는 임의의 다이에 저장되고, 따라서 예를 들어, RASIE-1 모드 1-0 플래시 다이(610.62)가 상위-레벨 리던던시 정보를 위해 사용되는 반면, 플래시 다이(610.63) 및 플래시 다이(610.61 ...610.0)는 데이터 스토리지를 위해 사용된다. 일부 실시예들 및/또는 이용 시나리오들에서, 상위-레벨 리던던시는 시간에 걸쳐 상이한 다이(및/또는 다이의 부분들)에 저장되고, 따라서 예를 들어 제 1 시간 기간에서 제 1 플래시 다이는 상위-레벨 리던던시 정보를 홀딩하는 반면 제 2 시간 기간에서 제 2 플래시 다이는 상위-레벨 리던던시 정보를 홀딩한다.
[0226] 다양한 실시예들에서, 얼마나 많은 플래시 다이가 이용 가능한지에 따라 복수의 RASIE 1-0 모드들(및 복수의 RASIE 2-0 모드들)이 존재한다. 예를 들어, 제 1 RASIE 1-0 모드(상기 테이블에 예시된 바와 같이)에서, 플래시 다이(610.63)는 상위-레벨 리던던시 정보를 저장하고, 플래시 다이(610.62 ... 610.0)는 데이터 스토리지를 위해 이용 가능하다. 제 2 RASIE 1-0 모드에서, 플래시 다이(610.63)는 더 이상 이용 가능하지 않고, 플래시 다이(610.62)는 상위-레벨 리던던시 정보를 저장하고, 그리고 플래시 다이(610.61 ... 610.0)는 데이터 스토리지를 위해 이용 가능하여, 데이터 스토리지의 이용 가능한 양을 1개의 다이만큼 감소시킨다. 데이터 스토리지를 위해 이전에 이용 가능한 다이(또는 다이의 부분들)가 상위-레벨 리던던시 정보에 대한 다이(또는 다이의 부분들)의 사용으로 인해 데이터 스토리지를 위해 더 이상 이용 가능하지 않은 RASIE 모드들은 때때로 감소된-용량 RASIE 모드들로 지칭된다.
[0227] 일부 실시예들에서, 상위-레벨 리던던시 정보는 동일하고 및/또는 유사한 하위-레벨 리던던시 및/또는 에러 정정 코딩 방식을 사용하여 상위 레벨 리던던시 정보에 의해 보호되는 사용자 데이터로서 저장된다. 상위-레벨 리던던시 정보를 보호하기 위하여 하위-레벨 리던던시 및/또는 에러 정정 방식을 사용하는 것은, 사용자 데이터에 정정 불가능 하위-레벨 에러가 결정되는 것과 동일하고 및/또는 유사한 방식으로, 상위-레벨 리던던시 정보에 정정 불가능 에러가 있는지를 결정하는 것을 인에이블한다.
[0228] 일부 실시예들에서, 상위-레벨 리던던시 정보는 데이터의 상이한 부분들에 대해 상이한 다이에 저장된다. 예를 들어, 플래시 다이가 R-블록들로 관리되는 일부 실시예들에서, 상위-레벨 리던던시 정보는 상이한 R-블록들에 대한 상이한 플래시 다이에 저장된다. 예를 들어, 플래시 다이(610.0)의 블록 0을 포함하는 R-블록에 대한 상위-레벨 리던던시 정보는 플래시 다이(610.0)에 저장되는 반면, 플래시 다이(610.0)의 블록 1을 포함하는 R-블록에 대한 상위-레벨 리던던시 정보는 플래시 다이(610.1)에 저장되고, 기타 등등이 있다. 플래시 다이가 R-블록들로 관리되는 일부 실시예들 같은 일부 실시예들에서, 상위-레벨 리던던시 정보는, 상위-레벨 리던던시 정보가 의존하는 데이터가 알려지고 및/또는 기록된 후 기록된다.
[0229] 일부 이용 시나리오들에서, NVM 엘리먼트의 하나 또는 그 초과의 부분들(예를 들어, 도 6의 플래시 다이(610.0)의 블록(610.0BB) 같은 디바이스의 블록)은 동작 동안 동작 불가능하거나 불가능하게 된다. 일부 실시예들에서, 동작 불가능 부분들은 가상 및 물리적 블록 어드레스들을 통하여(예를 들어, 도 1a의 맵(141) 및/또는 테이블(143)을 통하여 수행된 프로세싱을 통해) 계획된다. 대안적으로, 동작 불가능 부분들은 스킵된다(명확하게 계획되기 보다). R-블록들에 기반한 일부 실시예들에서, 스킵은 R-블록들 중 일부가 상이한 수들의 블록들을 가지는 것을 초래한다. 예를 들어, 블록(610.0B0)이 결함이 있고 사용 불가능이면, R-블록(660.0)은 R-블록(660.1)보다 하나의 적은 블록을 가진다. 상위-레벨 리던던시 정보는 (R-블록마다) 가변 위치 즉, 예를 들어 각각의 R-블록의 최종 블록에 기록된다.
[0230] 다양한 실시예들에서, 도 7의 하나 또는 그 초과의 엘리먼트들은 도 1a의 하나 또는 그 초과의 엘리먼트들에 대응한다. 예를 들어, 플래시 디바이스(들)(720) 및 추가 플래시 디바이스(들)(740)는 집합적으로 NVM(199)에 대응하고, 인터페이스 채널(들)(730) 및 추가 인터페이스 채널(들)(750)은 집합적으로 디바이스 인터페이스들(190)에 대응한다. 다른 예에 대해, 플래시 다이(610.65 ... 610.0)는 집합적으로 플래시 다이(194)의 인스턴스들에 대응한다. 또 다른 예에 대해, 플래시 디바이스(들)(720) 및/또는 추가의 플래시 디바이스(들)(740) 중 하나 또는 그 초과는 플래시 디바이스들(192)의 인스턴스들 중 하나 또는 그 초과에 대응한다. 다양한 실시예들에서, 도 1a의 하나 또는 그 초과의 엘리먼트들은 상위-레벨 리던던시 정보를 관리하고 및/또는 본원에 설명된 RASIE 동작 모드들에 따라 상위-레벨 리던던시 정보에 적어도 부분적으로 기반하여 사용자 데이터를 복구한다. 예를 들어, CPU(171)의 소프트웨어 실행 능력들 중 일부는 다양한 RASIE 동작 모드들에 따라 상위-레벨 리던던시 정보의 계산을 관리하기 위하여 사용된다. 다른 예에 대해, 데이터 프로세싱(121) 및/또는 ECC-X(135)는 상위-레벨 리던던시 정보의 계산을 위해 전용되고 및/또는 특화된 하드웨어 엘리먼트들을 포함하고 및/또는 다양한 RASIE 동작 모드들에 따라 사용자 데이터의 복구를 포함한다. 또 다른 예에 대해, ECC(161)는 플래시 다이의 ECC-정정 불가능(하위-레벨) 판독 에러를 검출하고, ECC-X(135)는 RASIE(상위-레벨) 판독 에러를 검출하고 및/또는 이의 정정을 인에이블한다.
[0231] 다양한 실시예들에서, 인터페이스 채널(들)(730)은 다양하게 1개, 4개, 8개 또는 16개 채널들을 가지며, 추가 인터페이스 채널(들)(750)은 다양하게 1개 또는 2개의 채널들을 가진다. 다양한 실시예들에서, 플래시 디바이스(들)(720)는 1개, 2개, 4개, 8개, 또는 16개의 디바이스들로서 구현되고, 각각의 디바이스는 각각 64, 32, 16, 8, 및 4개의 플래시 다이를 가진다. 다양한 실시예들에서, 추가 플래시 디바이스(들)(740)는 1개 또는 2개의 다이를 가진 하나의 디바이스로서 또는 각각 1개의 다이를 가진 2개의 디바이스들로서 구현된다. 일부 구현들에서, 추가 플래시 디바이스(들)(740)의 플래시 다이는 플래시 디바이스(들)(720)의 플래시 다이를 또한 구현하는 디바이스들로 구현된다. 예를 들어, 1개의 플래시 디바이스는 66개의 플래시 다이(플래시 다이(610.65 ... 610.0))를 구현한다. 다른 예에 대해, 2개의 플래시 디바이스들은 각각 33개의 플래시 다이를 구현하고, 예를 들어 제 1 플래시 디바이스(플래시 다이(610.65 ... 610.33)) 및 제 2 플래시 디바이스(플래시 다이(610.32 ... 610.0))로 구현된다. 플래시 다이 및 플래시 디바이스들의 다른 배치들은 고려된다. 플래시 디바이스(들)(720)의 플래시 다이를 또한 구현하는 디바이스들로 구현된 추가의 플래시 디바이스(들)(740)를 가진 일부 실시예들에서, 플래시 다이는 공유 인터페이스 채널들을 통해, 또는 대안적으로 플래시 다이의 특정 다이들(또는 세트들)에 전용된 인터페이스 채널들을 통해 통신한다. 플래시 디바이스(들)(720) 및 추가 플래시 디바이스(들)(740)는 특정 수들의 플래시 다이(각각 2 및 64)로 예시되고, 다른 실시예들은, 플래시 디바이스(들)(720)가 2, 4, 8, 16, 32 또는 128개의 플래시 다이를 가지며, 및/또는 추가 플래시 디바이스(들)(740)가 0, 1, 또는 4개의 플래시 다이를 가지는 것과 같이 고려된다.
[0232] 도 8은 도 6 및/또는 도 7에 의해 예시된 다양한 실시예들에 의해 인에이블된 RASIE 모드들 사이에서 동적으로 스위칭하는 것과 같은, RASIE로 동적 상위-레벨 리던던시 모드 관리의 실시예의 선택된 상세사항들을 예시한다. 일부 실시예들 및/또는 이용 시나리오들에서, 우아한 성능 저하 형태는, 스토리지 서브-시스템(예를 들어, SSD)이 제 1 상위-레벨 리던던시 모드에서의 동작으로부터 제 2 상위-레벨 리던던시 모드에서 동작으로 동적으로 전이되는 경우 제공된다. 전이는 전체 플래시 다이 또는 그의 하나 또는 그 초과의 부분들의 영구적 또는 간헐적 오기능, 그것에 대한 동작(판독 또는 기록 동작 같은) 같은 실패의 검출에 응답한다. 다양한 실시예들에 따라, 전이는 SSD에 대한 전역; SSD의 하나 또는 그 초과의 서브세트들에 대해 수행된 것; 및 하나 또는 그 초과의 SSD의 R-블록들, 블록들, 및/또는 페이지들에 대해 수행된 것 중 하나 또는 그 초과이다. 예를 들어, RASIE-2 정보를 저장하는 NVM 디바이스들 중 하나의 특정 블록이 프로그래밍 동안 실패하면, 특정(실패) 블록을 포함하는 R-블록의 후속 동작은 상이한 상위-레벨 리던던시 모드(예를 들어, RASIE-1 모드)로 전이하는 반면, SSD의 다른 R-블록들은 영향을 받지 않고 계속 RASIE-2 모드에서 동작한다.
[0233] 도 8과 관련하여, 프로세싱은 제 1 상위-레벨 리던던시 모드(제 1 상위-레벨 리던던시 모드(802)에서 동작)에 따라 플래시 다이에 배열된 상위-레벨 리던던시 정보 및 데이터 스토리지(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간)에서 시작한다. 그 다음 흐름은 하위-레벨 정정 불가능 판독 에러 또는 기록/프로그램 실패 같은 실패가 검출되었는지(실패?(803))를 결정하도록 진행한다. 어떤 실패도 검출되지 않으면, 흐름은 제 1 상위-레벨 리던던시 모드에서 계속 동작하도록 역으로 진행한다. 실패가 검출되었다면, 흐름은 제 1 상위-레벨 리던던시 모드에서의 동작으로부터 제 2 상위-레벨 리던던시 모드에서의 동작으로 스위칭하도록 진행한다(동적 전이 동작 모드(809)).
[0234] 스위치는 실패를 대처하기 위하여 데이터 스토리지에 대해 이용 가능한 공간을 (임의선택적으로) 감소시키기 시작한다(자유 공간(804) 감소). 제 2 상위-레벨 리던던시 모드가 제 1 상위-레벨 리던던시 모드보다 충분히 덜 상위-레벨 리던던시 정보를 사용하면, 이용 가능한 공간의 감소는 생략된다. 스위치는 제 2 상위-레벨 리던던시 모드에 따라 데이터 스토리지를 인식함으로써 계속된다(데이터 스토리지 재배열(805)). 인식은 실패가 발생한 플래시 다이로부터 플래시 다이의 다른 다이로 모든 사용자 데이터 및/또는 사용자 자유 공간을 임의선택적으로 이동시키는 것을 포함한다(사용자 자유 공간 이동은, 일부 실시예들에서 포인터들 및/또는 다른 데이터 구조 엘리먼트들의 조작에 의해 달성됨). 스위치는 추가로, 제 2 상위-레벨 리던던시 모드(실패 사용자 데이터 복구/저장(806))에 따라, 제 1 상위-레벨 리던던시 모드의 상위-레벨 리던던시 정보를 통해, 실패가 발생한 플래시 다이에 저장된 임의의 사용자 데이터를 선택적으로 복원(만약 가능하면)하고, 복원된 사용자 데이터를 플래시 다이의 다른 다이에 기록하는 것에 의해 계속된다. 복원은 실패가 기록/프로그램 실패이면 생략된다. 스위치는 추가로 제 2 상위-레벨 리던던시 모드에 따라 상위-레벨 리던던시 정보를 임의선택적으로 계산하고 플래시 다이에 기록함으로써 계속된다(개정된 상위-레벨 리던던시 정보 결정/저장(807)). 계산 및 기록은, 제 2 상위-레벨 리던던시 모드가 제 1 상위-레벨 리던던시 모드에서 동작하는 것으로 인해 이전에 적소에 있는 상위-레벨 리던던시 정보로 동작 가능하면 생략된다. 그 다음 동작은 제 2 상위-레벨 리던던시 모드에서 시작된다(제 2 상위-레벨 리던던시 모드에서 동작(808)).
[0235] 실패 검출(실패?(803))은 하위-레벨 리던던시 및/또는 에러 정정(예를 들어, 하나 또는 그 초과의 ECC 기술들에 따라), 상위-레벨 리던던시 및/또는 에러 정정(예를 들어, 하나 또는 그 초과의 RASIE 기술들에 따라), 및 플래시 다이 또는 그의 부분들 중 하나 또는 그 초과에 의해 보고되는 실패 상태 중 하나 또는 그 초과를 통해서이다. 예를 들어, 특정 플래시 다이의 특정 부분(예를 들어, R-블록, 블록, R-페이지, 판독 유닛, 또는 워드 라인과 연관된 셀들) 내의 판독들의 하위-레벨 에러 정정들의 임계 수보다 많은 수는 임의선택적으로 및/또는 조건적으로 특정 플래시 다이(또는 특정 부분)가 실패로서 처리되는 것을 초래하고 상위-레벨 리던던시 모드 스위치는 실패 플래시 다이(또는 부분)가 더 이상 사용되지 않도록 수행된다. 다른 예에 대해, 상위-레벨 에러 정정이 실패하면, 플래시 다이(또는 그의 부분) 중 적당한 다이가 실패로서 처리되고 상위-레벨 리던던시 모드 스위치는 실패 플래시 다이(또는 부분)가 더 이상 사용되지 않도록 수행된다. 또 다른 예에 대해, 플래시 다이가 프로그램 실패 상태(기록 동작이 성공하지 못했다는 것을 표시함)를 리턴하면, 플래시 다이 중 적당한 다이의 적당한 블록은 실패로서 처리되고, 임의선택적으로 및/또는 조건적으로 상위-레벨 리던던시 모드 스위치는 실패 플래시 다이(또는 대안적으로 그 부분)가 더 이상 사용되지 못하도록 수행된다.
[0236] 일부 실시예들에서, 실패 블록은 가상 및 물리적 블록 어드레스들을 통해 재맵핑함으로써(예를 들어, 도 1a의 맵(141) 및/또는 테이블(143)을 통하여 수행된 프로세싱을 통해) 대체된다. 스페어(spare) 블록들의 풀(pool)로부터의 스페어 블록은 실패 블록 대신 맵핑된다. 실패 블록에 기록된 임의의 콘텐츠는 대체 블록에 카피되고, 기록은 실패가 실패 블록에서 발생한 경우 스페어 블록에서 진행된다.
[0237] 일부 실시예들에서, 실패 블록은 스킵되고(명시적으로 재맵핑되기 보다), 이에 따라 홀이 있는 R-블록이 다음에 소거될 때(재-기록을 위한 준비시) 임의선택적으로 및/또는 조건적으로 상위-레벨 리던던시 모드 스위치를 초래하는 "홀"을 초래한다. 홀이 데이터 스토리지에 대한 위치 내에 있으면, 스위치는 이루어지지 않고, 홀은 유지된다. 홀이 상위-레벨 리던던시 정보에 대한 위치 내에 있으면, 상위-레벨 리던던시 정보는 다른 위치에 저장되고, 임의선택적으로 상위-레벨 리던던시 모드는 스위치된다.
[0238] 일부 실시예들 및/또는 이용 시나리오들에서, 실패가 발생한 플래시 다이에 저장된 사용자 데이터의 복원은 가능하지 않다. 예를 들어, 실패가 상위-레벨 리던던시 및/또는 에러 정정을 통해 검출된 몇몇 타입들의 실패들 및/또는 플래시 다이 또는 그의 부분들 중 하나 또는 그 초과에 의해 보고된 몇몇 타입들의 실패 상태이기 때문에, 몇몇 사용자 데이터는 손실된다.
[0239] 일부 실시예들에서, 도 8의 프로세싱은 복수의 실패들에 응답하여 상위-레벨 리던던시 모드들 사이에서 동적으로 전이하는 (예를 들어, SSD 제어기) 환경에서 수행된다. 구체적으로, SSD 제어기는 제 1 상위-레벨 리던던시 모드에서 동작하기 시작하고 제 1 실패에 응답하여 제 2 상위-레벨 리던던시 모드로 동적으로 전이하고, 후속하여 제 2 실패에 응답하여 제 2 상위-레벨 리던던시 모드에서 제 3 상위-레벨 리던던시 모드로 동적으로 전이하고, 기타 등등이다. 예를 들어, SSD 제어기는 RASIE-2 모드 2-2에 따라 다양한 플래시 다이를 동작하고 제 1 실패에 응답하여 RASIE-2 모드 2-1에 따르게 동작을 동적으로 전이한다. 후속하여, SSD 제어기는 제 2 실패에 응답하여 RASIE-2 모드 2-0에 따르게 동작을 동적으로 전이한다. 추가로 후속하여, SSD 제어기는 제 3 실패에 응답하여 RASIE-1 감소-용량 모드 1-0(감소된-용량 모드 1-0은 1개의 플래시 다이가 상위-레벨 리던던시 정보에 사용되고 62개의 플래시 다이가 데이터 스토리지를 위해 사용되는 것을 제외하고 RASIE-1 모드 1-0과 유사함)에 따르게 동작을 동적으로 전이한다.
[0240] 특정 예로서, 제 1 상위-레벨 리던던시 모드에서 동작하는 것에 대응하는 RASIE-2 모드 2-2(예를 들어, 플래시 다이(610.65) 및 플래시 다이(610.64)에서의 상위-레벨 리던던시 정보, 및 플래시 다이(610.63 ... 610.0)에서의 데이터 스토리지)에서 처음에 동작하는 도 7의 엘리먼트들에 커플링된 SSD 제어기(도 1a의 SSD 제어기(100) 같은)를 고려하자. 그 다음 플래시 다이의 하나 또는 그 초과의 판독, 또는 대안적으로 기록이 수행된다. 판독은 정정 불가능(하위-레벨) ECC 실패를 초래하거나, 대안적으로 기록은 플래시 다이의 특정 다이의 부분(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간에 사용된 플래시 다이(610.62)의 페이지)에서 성공하지 못한다. 응답하여, SSD 제어기는 RASIE-2 모드 2-2에서의 동작으로부터 RASIE-2 모드 2-1로 동적으로 스위치하여, 플래시 다이(610.62) 중 임의의 것을 더 이상 사용하지 못한다. RASIE-2 모드 2-1에서의 동작이 데이터 스토리지를 위해 63개의 다이를 제공하기 때문에(RASIE-2 모드 2-2에서 64개의 다이에 비해), 데이터 스토리지에 이용 가능한 공간은 64개의 다이로부터 63개의 다이로 감소되고, 사용자 데이터 및/또는 사용자 자유 공간은 이에 따라 이동된다. 예를 들어, 플래시 다이(610.62)로부터의 모든 사용자 데이터는 사용자 자유 공간에 따라 플래시 다이(610.63) 및 플래시 다이(610.61 ...610.0)의 부분들로 이동된다. 정정 불가능 ECC 실패를 가진 페이지에서 임의의 사용자 데이터는 플래시 다이(610.65) 및/또는 플래시 다이(610.64)의 상위-레벨 리던던시 정보에 기반하여 복구된다. 상위-레벨 리던던시 정보는 플래시 다이(610.63) 및 플래시 다이(610.61 ... 610.0)의 데이터 스토리지에 기반하고 RASIE-2 모드 2-1에 따라 계산되어 플래시 다이(610.65) 및/또는 플래시 다이(610.64)에 저장된다. 그 다음 SSD 제어기는 RASIE-2 모드 2-1(플래시 다이(610.65) 및 플래시 다이(610.64)의 상위-레벨 리던던시 정보, 및 플래시 다이(610.63) 및 플래시 다이(610.61 ... 610.0)의 데이터 스토리지)에서 동작한다.
[0241] 상기가 전체 플래시 다이의 양자의 독립적 실리콘 엘리먼트들을 이용한 동적 상위-레벨 리던던시 모드 관리의 몇몇 실시예들을 설명하였지만, 다른 실시예들은 하나 또는 그 초과의 판독 유닛들, 워드 라인 연관 셀들, 페이지들, R-페이지들, 블록들, 또는 R-블록들 같은 다이의 부분들인 독립적 실리콘 엘리먼트들을 이용한 동적 상위-레벨 리던던시 모드 관리를 구현한다. 상기는 R-블록의 단일 입도를 사용하는 동시 활성 상위-레벨 리던던시 모드들의 몇몇 실시예들을 설명하였다. 예를 들어, 상위-레벨 리던던시 모드는 R-블록에 기반하여 가변한다(각각의 R-블록은 단일 개별 상위-레벨 리던던시 모드에서 전체적으로 동작됨). 그러나, 다른 실시예들은 페이지 입도와 조합하는 R-블록 입도와 같은 복수(혼합)의 입도들을 이용한 동시 활성 상위-레벨 리던던시 모드들을 구현한다. 예를 들어, 상위-레벨 리던던시 모드는 R-블록에 기반하여 하나의 구역에서 가변하고, 페이지에 기반하여 다른 구역에서 가변한다(각각의 페이지는 단일 개별 상위-레벨 리던던시 모드에서 전체적으로 동작됨).
[0242] 다양한 실시예들에서, 도 8의 하나 또는 그 초과의 엘리먼트들의 또는 상기 엘리먼트들에 관한 프로세싱은 도 1a의 하나 또는 그 초과의 엘리먼트들(또는 그 부분들)에 의해 전체적으로 또는 부분적으로 수행된다. 예를 들어, CPU(171)의 소프트웨어 실행 능력들의 부분은 데이터 스토리지에 이용 가능한 공간을 감소시키는 것을 지시하거나 데이터 스토리지를 인식하는 것을 지시함으로써 같이, 상위-레벨 리던던시 모드들 사이에서 동적 전이를 관리하기 위하여 사용된다. 다른 예에 대해, 데이터 프로세싱(121) 및/또는 ECC-X(135)는 '타겟' 리던던시 모드에 따라 상위-레벨 리던던시 정보의 계산에 전용되고 및/또는 특화된 하드웨어 엘리먼트들을 포함한다. 또 다른 예에 대해, ECC(161)는 정정 불가능 에러들의 하위-레벨(예를 들어, ECC) 에러 정정 및 검출을 구현하는 반면, ECC-X(135)는 정정 불가능 에러들 및/또는 메모리 엘리먼트 실패들의 상위-레벨(예를 들어, RASIE) 에러 정정 및 검출을 구현한다. 다른 예에 대해, (상위-레벨) 리던던시 모드들 사이의 동적 전이에 관한 기능의 모두 또는 임의의 부분들은 ECC-X(135)의 하나 또는 그 초과의 부분들에 의해 수행된다.
상위-레벨 리던던시 및 적응성 하위-레벨 코드 레이트들
[0243] 일부 실시예들 및/또는 이용 시나리오들에서, 하위-레벨 리던던시 및/또는 에러 정정은 적응성 코드 레이트(예를 들어, 가변 코드 레이트를 사용하는 적응성 ECC 기술)를 사용한다. 예를 들어, 제 1 판독 유닛은 제 2 코드 레이트로 관리되는 제 2 판독 유닛보다 비교적 많은 이용 가능한 데이터 비트들을 제공하는 제 1 코드 레이트로 관리된다. 가변 코드 레이트를 이용한 하위-레벨 리던던시 및/또는 에러 정정을 갖는 일부 실시예들 및/또는 이용 시나리오들에서, 상위-레벨 리던던시 정보는 상위-레벨 리던던시 정보에 의해 보호되는 데이터 스토리지에 관하여 비교적 보다 이용 가능한 데이터 비트들 또는 가장 이용 가능한 데이터 비트들을 제공하는 하위-레벨 리던던시 및/또는 에러 정정으로 관리되는 독립적 실리콘 엘리먼트들의 부분들(플래시 다이의 부분들 같은)에 저장된다. 상위-레벨 리던던시 정보가 저장되는 부분(들)은 다양한 실시예들 및/또는 이용 시나리오들에서, R-블록에 기반하여, 다이에 기반하여, 시간에 걸쳐 동적으로, 또는 이들의 임의의 조합으로 가변한다. 다양한 실시예들에서, 하나 또는 그 초과의 다이, R-블록들, 블록들, 및/또는 페이지들은 하위-레벨 에러 정정 코드 레이트에 관하여 가장 이용 가능한 데이터를 가지는 것에 기반하여 상위-레벨 리던던시 데이터의 스토리지를 위해 선택된다.
[0244] 예를 들어, 상위-레벨 리던던시 정보는 R-블록에 기반하여 가변 위치들(블록 위치들 같은)에 저장되고, 위치들(블록들 같은)은 하위-레벨 에러 정정 코드 레이트에 기반하여 가장 이용 가능한 데이터를 가지는 것들이다. 임의의 예에서, 도 7의 환경에서 RASIE-2 동작 모드 시나리오를 고려하자, 여기서 66개의 플래시 다이의 콜렉션은 각각 하나의-블록 높이의 최대 M개의 R-블록들의 논리 "스택"으로서 처리되고, 여기서 M은 플래시 다이 당 블록들의 수이다. (가장 개념적으로 단순한 경우, 스택 내 각각의 R-블록은 각각의 다이에서 동일한 물리적 블록 번호로 만들어지지만, 실패 블록들을 수용하기 위하여 이런 제한은 적어도 일부 실시예들에서 제거된다. 또 다른 실시예들에서, 제한은 유지되지만, "홀들"은 실패 블록들에 대응하게 수용된다). 따라서, 각각의 R-블록은 플래시 다이(610.0) 내지 플래시 다이(610.65)의 각각으로 하나의 블록에 대응하는 최대 66개의 블록들을 가진다. (도 7에서, 범위(610.0 내지 610.65) 내의 단지 일부 플래시 다이만이 명시적으로 열거되고, 이 범위 내의 모든 플래시 다이가 암시적으로 예시되는 것은 생략 부호의 사용에 의해 이해된다). 상위-레벨 리던던시 정보는 하위-레벨 에러 정정 코드 레이트에 기반하여 각각의 R-블록 중 어느 블록들이 가장 이용 가능한 데이터를 가지든 기록된다. 예를 들어 제 1 R-블록에서, 플래시 다이(610.15 및 610.49)에 대응하는 블록들이 하위-레벨 에러 정정 코드 레이트에 기반한 가장 이용 가능한 데이터를 가지는 것이 발생하면, 상위-레벨 리던던시 정보는 이들 블록들(플래시 다이(610.15 및 610.49)에 대응함)에 기록된다. 제 2 R-블록에서, 플래시 다이(610.9 및 610.35)에 대응하는 블록들이 하위-레벨 에러 정정 코드 레이트에 기반하여 가장 이용 가능한 데이터를 가지는 것이 발생하면, 상위-레벨 리던던시 정보는 이들 블록들(플래시 다이(610.9 및 610.35)에 대응함)에 기록된다. 일부 실시예들에서, 상위-레벨 리던던시 데이터는 R-블록 내의 모든 다른 데이터가 알려진 후 기록된다.
[0245] 도 9는 판독 유닛들의 하나 또는 그 초과에 저장된 상위-레벨 리던던시 정보에 의해 보호된 적응성(예를 들어, 시간에 걸쳐 및/또는 위치에 의해 상이하고 및/또는 가변하는) 코드 레이트들의 하위-레벨 리던던시 정보를 가진 판독 유닛들((911, 931 ... 951, 971)의 실시예를 예시한다. 판독 유닛들 각각은 사용자 데이터((911.U, 931.U ... 951.U, 971.U)를 포함하도록 인에이블되고 및/또는 할당된 부분, 및 하위-레벨 ECC((911.E, 931.E ... 951.E, 971.E)로서 ECC 코드의 체크 비트들 같은 하위-레벨 리던던시 정보를 포함하도록 인에이블되고 및/또는 할당된 나머지 부분을 가진다.
[0246] 도면에서, 수직 치수들은 상대적으로 스케일링(scale)하고 상대적 크기를 나타낸다. 따라서 판독 유닛들(911 및 951)은 동일한 제 1 크기(몇몇 실시예들에서, 모든 판독 유닛들은 모든 NVM 디바이스들의 모든 블록들에 대해 동일한 크기임)를 가지며, 하위-레벨 ECC 부분들(931.E 및 951.E)은 동일한 제 2 크기를 가지며, 그리고 하위-레벨 ECC 부분들(911.E 및 971.E)은 동일한 제 3 크기를 가진다. 판독 유닛(931)은 판독 유닛들(911 및 951)보다 크고 차례로 판독 유닛(971)보다 크다. 사용자 데이터 부분(931.U)은 사용자 데이터 부분(951.U)보다 크다. 사용자 데이터 부분(951.U)은 사용자 데이터 부분(911.U)보다 크다. 하위-레벨 ECC 부분(951.E)은 하위 레벨 ECC 부분(911.E)보다 작다.
[0247] 도면에 예시된 바와 같이, 개별 판독 유닛들은 예를 들어 NVM의 개별 블록 당 개별 크기들을 가져서, 개별 블록들에 사용된 바와 같이 하위-레벨 코드 레이트들을 가변하게 한다. 보다 구체적으로, 판독 유닛들(931 및 951)은 동일한 양의 하위-레벨 리던던시 정보(931.E 및 951.E는 동일한 크기임)를 가지지만, 판독 유닛(931)의 하위-레벨 코드 레이트는 판독 유닛(951)의 하위-레벨 코드 레이트보다 높은데, 그 이유는 판독 유닛(931)은 판독 유닛(951)(사용자 데이터(951.U) 포함)보다 많은 사용자 데이터(931.U)를 포함하기 때문이다.
[0248] 도면에 예시된 바와 같이, 개별 판독 유닛들은 개별 크기들의 사용자 데이터를 가져서, 동일한 크기의 두 개 또는 그 초과의 판독 유닛들의 각각에 다양한 크기들의 사용자 데이터를 가능하게 한다. 예를 들어, 사용자 데이터의 크기는 특정 판독 유닛에 사용된 하위-레벨 코드 레이트를 변화시키기 위하여 가변된다. 보다 구체적으로, 판독 유닛들(951 및 911)은 동일한 크기를 가지지만, 상이한 개별 양들의 사용자 데이터((951.U 및 911.U), 및 따라서 상이한 개별 양들의 하위-레벨 리던던시 정보(951.E 및 911.E)를 가져서, 판독 유닛(951)이 판독 유닛(911)보다 높은 하위-레벨 코드를 가지게 한다.
[0249] 일부 실시예들 및/또는 이용 시나리오들에서, 가변하는 및/또는 변화하는 하위-레벨 코드 레이트는 유리하게 사용자 데이터의 양을 최대화하는 동안 하위-레벨 에러 정정 요건들을 달성하기 위하여 충분한 양의 하위-레벨 ECC 정보를 제공하게 한다.
[0250] 판독 유닛들에서 가변하는 양의 사용자 데이터를 가지는 일부 실시예들에서, 상위-레벨 리던던시 정보는 가장 큰 양의 사용자 데이터를 가진 판독 유닛들 중 하나 또는 그 초과에 저장된다. 도 9의 예에 대해, RASIE-1 모드를 사용하는 경우, 상위-레벨 리던던시 정보는 사용자 데이터(931.U)에 저장되고, RASIE-2 모드를 사용하는 경우, 상위-레벨 리던던시 정보는 사용자 데이터(931.U) 및 사용자 데이터(951.U)에 저장된다. 가장 큰 양의 사용자 데이터를 가진 판독 유닛들(상위-레벨 리던던시 정보에 의해 보호되는 판독 유닛들 중에서)에 상위-레벨 리던던시 정보를 저장하는 것은, 다른 판독 유닛들 모두의 사용자 데이터를 보호하기 위하여 충분한 상위-레벨 리던던시 정보가 있다는 것을 보장한다.
[0251] 다양한 실시예들에 따라, 하나 또는 그 초과의 기술들은 상위-레벨 리던던시 정보에 의해 보호되는 다수의 판독 유닛들 사이의 하나 또는 그 초과의 판독 유닛들 중 어느 것이 상위-레벨 리던던시 정보를 저장하기 위하여 사용되는지를 결정하기 위하여 사용된다. 제 1 예에서, 가장 큰 양의 사용자 데이터를 가진 가장 최근-기록된 1개(RASIE-1에 대해) 또는 2개(RASIE-2에 대해)의 판독 유닛들은 사용된다. 제 2 예에서, 가장 큰 양의 사용자 데이터를 가진 가장 빨리-기록된 1개(RASIE-1에 대해) 또는 2개(RASIE-2에 대해)의 판독 유닛들은 사용된다. 유사하게, 다른 판독 유닛들에서 나머지 사용자 데이터 모두를 보호하기 위하여 가장 큰 양의 사용자 데이터를 가진 하나 또는 그 초과의 판독 유닛들을 결정론적으로 선택하기 위한 임의의 기술은 본원에서 고려된 기술들의 범위 내에 있다.
상위-레벨 리던던시 정보 계산 기술들
[0252] 다양한 실시예들 및/또는 이용 시나리오들에서, 상위-레벨 리던던시정보는 패리티, RS, 및/또는 가중-합 기술들을 통해 같은 다양한 기술들로 계산된다. 예를 들어, 1개(하위-레벨) 실패(예를 들어, RASIE-1)로부터 복구를 인에이블링하는 일부 상위-레벨 리던던시 모드들에서, 상위-레벨 리던던시 정보는 패리티 기술들을 통하여 계산된다. 다른 예에서, 2개(하위-레벨) 실패들(예를 들어, RASIE-2)로부터 복구를 인에이블링하는 일부 상위-레벨 리던던시 모드들에서, 상위-레벨 리던던시 정보는 패리티 및 RS 기술들의 조합을 통하여 계산된다. 상위-레벨 리던던시 정보의 제 1 부분은 패리티 코딩을 사용하여 계산되고 제 2 부분은 RS 코딩을 사용하여 계산한다. 또 다른 예에 대해, 2개의 실패들(예를 들어, RASIE-2)로부터 복구를 인에이블링하는 일부 상위-레벨 리던던시 모드들에서, 상위-레벨 리던던시 정보는 패리티 및 가중-합 기술들 중 조합을 통하여 계산된다. 상위-레벨 리던던시 정보의 제 1 부분은 패리티 코딩을 사용하여 계산되고 제 2 부분은 가중-합 코딩을 사용하여 계산한다. 상위-레벨 리던던시 정보는, 예를 들어 NVM의 페이지들의 판독들 및 기록들을 통하여, 상위-레벨 리던던시 정보에 의해 보호된 데이터를 저장하기 위하여 이용 가능한 NVM의 페이지들에 이용된 하위-레벨 실패 검출 기술들과 동일하거나 유사한 하위-레벨 실패 검출 기술들(ECC 같은)을 사용하여 관리된다.
[0253] RASIE-2에 대한 특정 예로서, 상위-레벨 리던던시 정보의 제 1 페이지는 R-블록에 걸쳐 스트라이프에서 모든 제 1 페이지들의 XOR을 통한 패리티 코딩을 사용하여 계산된다. 보다 구체적으로, XOR은 R-블록에 걸쳐 스트라이프에서 제 1 페이지들 모두의 제 1 바이트들의 모두에 의해 수행되어, 상위-레벨 리던던시 정보의 제 1 페이지의 제 1 바이트를 초래한다. 유사하게, 상위-레벨 리던던시 정보의 제 2 바이트는 스트라이프에서 제1 페이지들 모두의 바이트들의 모두에 대해 R-블록 등에 걸쳐 스트라이프에서 제 1 페이지들 모두의 제 2 바이트들의 모두를 XOR함으로써 형성된다. 상위-레벨 리던던시 정보의 제 2 페이지는 다음과 같이 가중-합 기술을 사용하여 계산된다.
[0254] 연산은 갈루아 필드(예로서 사용됨) 같은 유한 필드에 걸쳐 수행된다. 예들은 동작되는 데이터가 바이트-폭인 것을 가정하고, 따라서 GF 같은 필드(256)는 사용된다. 다양한 실시예들에서, 데이터는 임의의 유닛들에서 동작된다.
[0255] 스트라이프에서 각각의 페이지는 고유 비-제로 "인덱스"가 할당된다. 인덱스들의 값들은 구현 복잡성을 단순화하기 위하여 선택되고, 임의의 형태의 생성 다항식에 관련되지 않는다. 예를 들어, 페이지들은 0 내지 N-1의 스트라이프에서 다이 위치에 의해 라벨링(예를 들어, 소프트웨어에 의해)되고, 인덱스들에 대한 적당한 값은 다이 번호(N<255가 제공된 비-제로인 것으로 보장됨)의 일원 부호이다. 인덱스 값들의 다른 선택은 예를 들어 하드웨어 비용들을 감소 및/또는 최소화하기 위하여 최저-가중(가장 작은 수의 세트 비트들 또는 가장 작은 수의 클리어 비트(clear bit)들) 비-제로 정수들이다. 인덱스들에 대한 그레이-코딩 값들을 선택하는, 일부 실시예들 및/또는 이용 시나리오들에서, 페이지가 프로세싱될 때 전이들을 최소화하고 및/또는 전력을 감소시킨다.
[0256] 인덱스 값들은 유한 필드 연산에 따라 선택되는 것이 아니고, 다른 원리들에 따라 선택된다. 이에도 불구하고, 각각의 인덱스 값은 유한 필드 내의 비-제로 엘리먼트에 대응한다. 페이지(i)가 인덱스 값(Ki)(및 페이지(j)가 인덱스 값(Kj)을 가짐)을 가진다고 가정하자. 가중-합 리던던시는 Ki*Pi의 (GF 필드) 합(각각의 페이지(i)로부터 대응하는 바이트들(Pi)을 걸쳐)이고, 각각의 바이트는 그의 인덱스 값에 의해 곱셈(GF 필드에 걸쳐)된다.
[0257] 따라서 가중-합 리던던시 정보는 다음과 같이 각각의 바이트에 대해 계산된다:
R0 = 모든 대응하는 바이트들(Pi)에 걸친 합;
Rl = 모든 대응하는 바이트들(Ki*Pi)에 걸친 합;
R0는 모든 대응하는 바이트들의 XOR임; 및
Rl은 바이트들의 가중 합이고, 여기서 가중치들은 인덱스 값들로서 선택된다. 상기 계산은 페이지 내 대응하는 바이트들 각각에 대해 반복되어, R0 및 Rl의 각각에 대한 바이트들의 대응하는 페이지들을 생성한다. 다음 논의에서, R0 및 R1은 설명의 명확성을 위하여 단일 엘리먼트들(예를 들어, 각각은 단일 바이트임)로서 몇몇 환경들에서 각각 설명되지만, 상기 계산에서, 각각은 엘리먼트들의 개별 페이지를 나타낸다.
[0258] Pi는 페이지(i)의 바이트를 나타내고, Pj는 페이지(j)의 바이트를 나타낸다. 프로세싱은 각각의 페이지로부터 대응하는 바이트들의 하나의 스트라이프에 관하여 설명되고, 반복은 모든 대응 바이트들에 걸쳐 수행된다. 만약 몇몇 페이지들이 예를 들어 상이한(하위-레벨) 리던던시 코드 레이트를 가지기 때문에, 다른 페이지들보다 "더 짧으면", 보다 짧은 페이지들은, 효과적으로 프로세스되는 모든 페이지들이 동일한 크기를 가지도록 제로-패딩(또는 인코드와 디코드에 대해 동일한 방식이 사용되는 임의의 알려진 값에 의해 패딩됨)된다.
[0259] R0 및 Rl을 계산하기 위한 합산들은 다양한 실시예들에 따라, 다양한 직렬 및/또는 병렬 계산들을 통해 임의의 순서로 수행 가능하다. 페이지들은 Ki*Pi가 Kj*Pj 이전에 부가되든 이후에 부가되든 R1의 결과에 영향을 가지지는 않는 임의의 특정 순서로 프로세싱될 필요가 없다. 리던던시 정보의 페이지의 다양한 바이트들에 대응하는 R0 및 Rl 값들의 계산은 서로 독립적이고 다양한 실시예들에 따라, 다양한 직렬 및/또는 병렬 계산들을 통하여 임의의 순서로 계산 가능하다. 게다가, R1으로부터 Ki*Pi을 감산하는 것(및 R0로부터 Pi를 감산하는 것)은 페이지들에 대한 계산 효과들의 "취소"를 가능하게 한다. GF 필드에 걸쳐, 가산 및 감산이 몇몇 실시예들 및/또는 이용 시나리오들에서 둘 다 XOR(따라서 감산은 제 2 시간에 간단히 가산하는 것과 동등함)이기 때문에, 어떤 특정 하드웨어도 페이지를 "취소"하기 위하여 GF 필드 구현들(예를 들어, 논리적 XOR 능력이 충분함)에 대해 필요하지 않다.
[0260] 정정 불가능 하위-레벨 에러의 이벤트시, 상위-레벨 에러 정정은 몇몇 실시예들에서, 재 계산(R0 및 R1)에 의해 시작되지만, 정정 불가능 하위-레벨 에러들을 가진 페이지(들)(때때로 컬럼(column)(들)으로 지칭됨)를 생략함으로써 시작된다. 정정은 ΔRO를 생성하기 위하여 원래 R0로부터 계산된 R0를 감산하고, 그리고 ΔR1을 생성하기 위하여 원래의 R1으로부터 재계산된 R1을 감산함으로써 진행된다.
[0261] 정정 불가능 하위-레벨 에러들이 없다면, 재계산된 R0 및 R1은 둘 다 제로이다. 정정 불가능 하위-레벨 에러들이 있다면, 재계산된 R0 및 R1(감산 후)은 "손실" 데이터(제 2 시간에 부가된 것이 아니라, 원래 값들에 존재함)를 반영한다.
[0262] 하나의 정정 불가능 하위-레벨 에러가 존재하면, 재계산된 R0는 에러를 저장하기 위하여 사용된다(및 재계산된 R1은 필요하지 않다).
[0263] 2개의 정정 불가능 하위-레벨 에러들이 존재하면, 재계산된 R0 및 R1은 에러들을 정정하기 위하여 사용된다. R0 및 R1 값들의 페이지들 둘 다가 정정 불가능 하위-레벨 에러들을 가진 페이지들이면, 어떠한 데이터 스토리지 페이지들의 정정도 필요하지 않다. R1 값들의 페이지가 정정 불가능 하위-레벨 에러들을 가진 페이지들 중 하나이면, 정정은 R0를 통한다(재계산된 R0 값은 정정 불가능 하위-레벨 에러들을 가진 데이터 스토리지 페이지의 값임).
[0264] 데이터 스토리지 페이지들 내에 2개의 정정 불가능 하위-레벨 에러들이 있거나, R0 페이지가 정정 불가능 하위-레벨 에러들을 가진 페이지들 중 하나이면, 정정은 상기와 같이 ΔR0 및 ΔR1을 계산함으로써 시작된다. R0 페이지가 정정 불가능 하위-레벨 에러들을 가진 페이지들 중 하나이면, ΔR0 페이지의 계산은 임의선택적으로 생략된다. 페이지(i) 및 페이지(j)가 정정 불가능 하위-레벨 에러들을 가진 페이지들이면, 재계산된 ΔRO = Pi + Pj이고, 재계산된 ΔRl = Ki*Pi + Kj*Pj이다. 방정식 풀기는 하기를 생성한다:
Pi = (ΔRl - Kj*ΔR0)/(Ki - Kj)
Pj = ΔRO - Pi
R0가 정정 불가능 하위-레벨 에러들을 가진 페이지들 중 하나이면, (R0가 R1에 포함되지 않기 때문에), ΔRl = Ki*Pi, 또는 Pi = ΔRl/Ki이고; 동일한 결과는 상기 식(ΔR0를 무시하기 위하여)에서 Kj=0을 설정함으로써 얻어진다.
[0265] 대안적인 실시예에서, 정수들 모드 p에 의해 정의된 유한 필드(여기서 p는 프라임임)는 갈루아 필드 대신 사용된다. 계산들은 상기 설명된 것들과 동일하고, 가산은 정수 가산 모드 p이고, 곱셈은 정수 곱셈 모드 p이다. 예를 들어, 페이지들이 바이트들의 페이지들이면, 정수 모드 257의 유한 필드는 사용된다. 모든 사용자 데이터 바이트들은 범위 0-255 내에 있고 각각 하나의 바이트로 저장된다. 그러나 R1 결과들은 0-256 범위의 값들을 가지며, 표현을 위하여 하나보다 많은 바이트를 요구한다. 스토리지 공간을 최소화하고 R1 페이지가 감소된 오버헤드로 저장되게 하기 위하여 0-256의 값들을 인코딩하기 위한 많은 방식들이 있다. 예를 들어, 값들 0 및 256은 각각 9개-비트 시퀀스들 000000000 및 000000001로서 저장되고, 모든 다른 값들은 8개의 비트들로 저장된다. R1 값들의 랜덤 분포가 제공되면, 스토리지 오버헤드는 <0.1%이다. 도 9와 관련하여 설명된 바와 같이, R1 페이지는 가장 큰 양의 사용자 데이터를 가지도록 선택되고, 스토리지 오버헤드는 몇몇 이용 시나리오들에서 숨겨지게 된다.
[0266] 도 10은 예를 들어 도 7 같은 환경에서 RASIE-2 모드 2-2에 의해 사용되고 추가로 도 6에 예시된 바와 같이, 상위-레벨 리던던시 정보 결과 및 데이터 소스 대응들의 실시예의 선택된 상세사항들을 예시한다. 도 10은 명시적으로 플래시 다이(610.0, 610.63, 610.64 및, 610.65)를 예시하고, 생략 부호(...)에 의해 암시적으로 플래시 다이(610.1 ... 610.62)를 예시한다. 플래시 다이의 페이지들의 블록들, 페이지들, 및 바이트들의 선택된 세부사항들은 예시된다. 상위-레벨 리던던시 정보의 제 1 부분은 R0 1010(플래시 다이(610.64)에 저장됨)으로서 예시되고, 패리티 코딩을 사용하여 계산된다. 상위-레벨 리던던시 정보의 제 2 부분은 Rl 1011(플래시 다이(610.65)에 저장됨)로서 예시되고, 가중-합 코딩을 사용하여 계산된다. 데이터 정보에 대한 스토리지는 데이터 1019(플래시 다이(610.0 ... 610.63)에 저장됨)로서 예시된다.
[0267] 점선 화살표(1001)는 데이터 1019의 모든 제 1 페이지들(모든 플래시 다이에 걸쳐)의 대응하는 제 1 바이트들에 기반하여 2-바이트 리던던시 계산 결과 (R0 1010 및 R1 1011의 각각에 대해 1 바이트)를 개념적으로 나타낸다. 예시된 바와 같이, 2-바이트 결과는 제 1 R0 및 R1 페이지들 각각에 대해 제 1 바이트이다. 점선 화살표(1002)는 데이터 1019의 모든 제 1 페이지들의 대응하는 최종 바이트들에 기반하여 2-바이트 리던던시 계산 결과(R0 1010 및 R1 1011의 각각에 대해 1 바이트)를 개념적으로 가리킨다. 예시된 바와 같이, 2-바이트 결과는 제 1 R0 및 R1 페이지들 각각에 대한 최종 바이트이다. 점선 화살표(1003)는 데이터 1019의 플래시 블록들(모든 플래시 다이에 걸쳐)의 대응하는 최종 페이지들에 기반한 2-페이지 리던던시 계산 결과(R0 1010 및 R1 1011의 각각에 대한 1개의 페이지)를 개념적으로 나타낸다.
[0268] 본원 어딘가에 설명된 바와 같이, 일부 실시예들에서 상위-레벨 리던던시 정보가 데이터의 상이한 부분들에 대해 상이한 다이에 저장되는 것이 주의된다. 따라서, R0 및 R1은 일부 실시예들에서, 도 10에 예시된 바와 같이 2개의 "전용" 다이보다 다양한 다이에 걸쳐 저장된다.
[0269] 도 11은 다양한 실시예들에 따른 다양한 동작 조건들을 가진 예를 들어 도 7 같은 환경에서 RASIE-2 모드 2-2에 의해 사용되고 추가로 도 6 및 도 10에 예시된 바와 같이, 상위-레벨 리던던시 정보 계산들의 실시예의 선택된 상세사항들을 예시한다. 보다 구체적으로, 도 11은 예를 들어 도 10의 점선 화살표(1001)에 의해 개념적으로 예시된 2-바이트 리던던시 계산 결과에 따라, R0의 바이트에 대한 패리티 코딩 계산 및 R1의 바이트에 대한 가중-합 코딩 계산을 예시한다. 동작 조건들은 유한 필드(갈루아 필드 같은)에 걸친 연산을 수행하는 것, 플래시 다이 번호(또는 임의의 다른 고유하고 비-제로 넘버링)의 일원 부호인 인덱스들(도 11에서 더미 합산 변수 "i" 값에 대응함), 및 유한 필드에서 비-제로 엘리먼트들에 대응하는 인덱스들 중 하나 또는 그 초과를 포함한다. 도 11에 예시된 바와 같은 계산은 대응하는 데이터 바이트들에 기초하여 R0 및 R1의 바이트들 모두에 대해 반복된다. 비-제로 인덱스들이 Pi의 모든 각각의 엘리먼트로부터의 기여를 포함하도록 R1 값들을 인에이블한다는 것이 주의된다.
[0270] 따라서 서로에 대해 R0의 바이트들 중 임의의 바이트 또는 R1의 바이트들 중 임의의 바이트들 사이 계산에 의존성들이 없다. 그러므로 다양한 실시예들이 고려되고 여기서 R0 및 R1 값들은 병렬로, 부분적으로 병렬로, 또는 전체적으로 직렬로 전체적으로(대량으로) 계산된다. 예를 들어, 페이지의 R0 및/또는 R1 바이트들 모두는 병렬로 계산된다. 다른 예에 대해, 페이지의 R0 바이트들 모두는 병렬로 계산되고 그 후(또는 그 전에) 페이지의 R1 바이트들 모두를 병렬로 계산한다.
[0271] 추가로, 서로에 대해 R0의 바이트들 중 임의의 바이트들을 계산하거나 또는 R1의 바이트들 중 임의의 바이트들을 계산하는 것과 관련하여 순서결정 요건들이 없다. 그러므로 다양한 실시예들은 고려되고 여기서 R0 및 R1 값들은 서로에 대해 전체적으로 순서적으로, 별개로 서로에 대해 순서적으로(예를 들어, R0 계산들은 서로에 대해 순서적이지만 R1에 관하여 순서적이지 않고, 그 반대도 가능함), 또는 특정 순서결정 없이(예를 들어, 전체적으로 순서 없이, 무질서로, 또는 랜덤한 순서로) 계산된다. 예를 들어, 페이지의 R0 바이트들 모두는 특정 순서(예를 들어, 최하위 바이트로부터 최상위 바이트로)로 계산되고, 그 다음 특정 순서로 페이지의 R1 바이트들 모두가 계산된다. 다른 예에 대해, 페이지의 R0 바이트들 모두는 특정 순서로 계산되고, 독립적으로 페이지의 R1 바이트들 모두는 특정 순서로 계산된다. 또 다른 예에 대해, 페이지의 R0 바이트들 모두뿐 아니라 페이지의 R1 바이트들 모두는 서로에 대해 특정 순서 없이(예를 들어 데이터 피연산자들이 이용 가능하기 때문에) 계산된다.
[0272] 또 다른 예에 대해, 하나 또는 그 초과의 페이지들의 R0 및 R1 바이트들 모두는 하나 또는 그 초과의 NVM들(각각은 예를 들어 하나 또는 그 초과의 플래시 다이를 가짐)에 대해 수행된 하나 또는 그 초과의 판독 동작의 완료 순서에 의해 결정된 순서로 계산되고, 판독 동작들은 도 1에 예시된 합산 및 가중-합산 계산들(Pi)에 의해 참조되는 데이터 바이트들을 판독하기 위한 것이다. 판독 동작들의 완료에 의해 결정된 순서로 계산들을 수행하는 것은, 일부 실시예들 및/또는 이용 시나리오들에서 계산들을 수행하도록 인에이블된 NVM들 및 엘리먼트들 사이의 버퍼링 감소 또는 제거를 인에이블한다. 판독 동작들의 완료에 의해 결정된 순서로 계산들을 수행하는 것은, 일부 실시예들 및/또는 이용 시나리오들에서 NVM들의 메모리 대역폭 같은 계산들을 수행하기 위하여 사용된 메모리 대역폭의 감소를 인에이블한다.
[0273] 또 다른 예에 대해, 하나 또는 그 초과의 페이지들의 R0 및 R1 바이트들 모두는 하나 또는 그 초과의 NVM들(각각은 예를 들어 하나 또는 그 초과의 플래시 다이를 가짐)에 대해 수행된 판독 동작들에 응답하여 리턴된 데이터 및/또는 이용 가능한 데이터의 순서에 의해 결정된 순서로 계산되고, 리턴된 데이터 및/또는 이용 가능 데이터는 도 11에 예시된 합산 및 가중-합산 계산들(Pi)에 의해 참조된 데이터 바이트들에 대응한다. 일부 실시예들 및/또는 이용 시나리오들에서, 리턴된 데이터 및/또는 이용 가능 데이터에 의해 결정된 순서로 계산들을 수행하는 것은 계산들을 수행하기 위하여 인에이블되는 NVM들 및 엘리먼트들 사이의 버퍼링을 감소 또는 제거한다. 일부 실시예들 및/또는 이용 시나리오들에서, 리턴된 데이터 및/또는 이용 시나리오들에 의해 결정된 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭 같은 계산들을 수행하기 위하여 사용된 메모리 대역폭을 감소시킨다. 일부 실시예들에서, 판독 동작들은 특정 순서(예를 들어, Pi의 최하위 바이트로부터 최상위 바이트로)로 수행되는 반면, 다른 실시예들에서, 판독 동작들은 비특정 순서로 수행된다.
[0274] 도 12는 예를 들어 도 11과 연관된 같은 환경에서 1개(하위-레벨) 실패(단일 동작 동안)로부터 복구 실시예의 선택된 상세사항들을 예시하고, 그리고 여기서 하위-레벨 실패는 페이지(j)에서 발생하였다. 하위-레벨 실패가 R0 또는 R1 페이지에 대한 것이면, R0(또는 R1)은 도 11에 의해 설명된 바와 같이 재결정되는 것이 주의된다. 도 12는 페이지(j)에 대해 복구된 값의 1 바이트에 대한 계산을 예시한다(합산은 실패가 발생한 페이지(j)를 생략하는 것이 주의됨). 도 12에 예시된 바와 같이 계산은 페이지(j)를 제외하고 데이터 페이지들 모두로부터 대응하는 바이트들 및 R0의 대응하는 바이트들에 기반하여, 페이지(j)의 바이트들 모두에 대한 복구된 값들을 결정하기 위하여 반복된다.
[0275] 따라서 서로에 대해 페이지(j)의 복구된 값들의 임의의 바이트들을 계산하는 것에 종속성들은 없다. 그러므로, 다양한 실시예들은 고려되고 여기서 Pj 복구 값들은 R0 및 R1 값들에 대한 상기된 계산들과 유사하게 고도의 병렬로부터 고도의 직렬 범위에서 계산된다. 게다가, 서로에 관하여 페이지(j)의 복구 값들 중 임의 값을 계산하는 것에 대해 순서 요건들이 없다. 그러므로 다양한 실시예들은 고려되고 여기서 Pj 복구 값들은 R0 및 R1 값들에 대한 상기된 계산들과 유사하게 서로에 관하여 가변하는 순서들로 계산된다.
[0276] 일부 예시적인 실시예들은 하나 또는 그 초과의 NVM들(각각은 예를 들어 하나 또는 그 초과의 플래시 다이를 가짐)에 대해 수행된 하나 또는 그 초과의 판독 동작들의 완료 순서결정에 의해 적어도 부분적으로 결정된 순서결정들로 복구 값들을 결정하는 것에 관련된 계산들을 수행하고, 판독 동작들은 도 12에 의해 예시된 바와 같이 R0 및/또는 Pi 값들을 얻기 위하여 NVM들을 판독하는 것이다. 판독 동작들의 완료 순서로 계산들을 수행하는 것은, 일부 실시예들 및/또는 이용 시나리오들에서 계산들을 수행하기 위하여 인에이블된 NVM들과 엘리먼트들 사이의 버퍼링의 감소 또는 제거를 인에이블한다. 판독 동작들의 완료 순서로 계산들을 수행하는 것은 일부 실시예들 및/또는 이용 시나리오들에서, NVM들의 메모리 대역폭 같은 계산들을 수행하기 위하여 사용된 메모리 대역폭의 감소를 인에이블한다.
[0277] 일부 예시적 실시예들은 하나 또는 그 초과의 NVM들(각각은 예를 들어 하나 또는 그 초과의 플래시 다이를 가짐)로부터 리턴된 데이터 및/또는 이용 가능한 데이터의 순서결정에 의해 적어도 부분적으로 결정된 순서 결정들에서 복구 값들을 결정하는 것에 관련된 계산들을 수행하고, 리턴된 데이터 및/또는 이용 가능한 데이터는 도 12에 의해 예시된 바와 같이 R0 및/또는 Pi를 얻기 위하여 NVM들 상에서 수행된 판독 동작들에 응답한다. 일부 실시예들 및/또는 이용 시나리오들에서, 판독 동작들로 리턴된 데이터 및/또는 이용 가능한 데이터의 순서로 계산들을 수행하는 것은 계산들을 수행하기 위하여 인에이블된 NVM들과 엘리먼트들 사이의 버퍼링을 감소 또는 제거한다. 일부 실시예들 및/또는 이용 시나리오들에서, 판독 동작들로부터 리턴된 데이터 및/또는 이용 가능한 데이터의 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭 같은 계산들을 수행하기 위하여 사용된 메모리 대역폭을 감소시킨다. 일부 실시예들에서, 판독 동작들은 특정 순서(예를 들어, Pi의 최하위 바이트로부터 최상위 바이트로)로 수행되는 반면, 다른 실시예들에서, 판독 동작들은 비특정 순서로 수행된다.
[0278] 도 13a-도 13d는 예를 들어 도 11과 연관된 그런 환경에서 2개(하위-레벨) 실패들(단일 동작 동안)로부터 복구의 실시예의 선택된 상세사항들을 예시하고, 여기서 하위-레벨 실패들은 페이지들(m 및 n) 상에서 발생하였다. 하위-레벨 실패들이 R0 및 R1 페이지들 상에 있다면, R0 및 R1은 데이터 복구를 위하여 필요하지 않고 데이터를 복구하기 위한 프로세싱이 없음이 주의된다. 그렇지 않으면, 하위-레벨 실패들 중 하나가 R1 페이지이면, 데이터 복구는 도 12에 의해 설명된 바와 같이 진행하는 것이 주의된다. 하위-레벨 실패들 중 어느 것도 R0 또는 R1 페이지들에 없다면, Pm 및 Pn 값들의 복구가 다음과 같이 진행하는 것이 주의된다. 도 13a는 R0'로서 개정된 R0의 1개의 바이트에 대한 계산들 및 R1'으로서 개정된 R1의 1개 바이트에 대한 계산들을 예시한다(합산들이 실패들이 발생한 페이지들(m 및 n)을 생략한다는 것이 주의된다). 도 13b는 본래 리던던시 정보(R0, R1)의 1개의 바이트를 개정된 리던던시 정보(RO', R1')에 관련시키는 균등성들을 예시하고, 항들은 개정된 R0 및 R1((Pm + Pn 및 Km*Pm + Kn*Pn)을 형성하기 위하여 사용된 합산들로부터 생략된다. 도 13c는 델타 R0(ΔR0) 및 델타 R1(ΔR1) 항들이 도입되어, 도 13b의 대수적 재배열을 예시한다. 도 13d는 Pn 및 Pm에 대한 도 13c의 솔루션을 예시하고, 따라서 R1, R0의 대응하는 바이트들에 기반하는 페이지(n)에 대한 복구된 값의 1개 바이트 및 페이지(m)에 대한 복구된 값의 1개 바이트, 및 페이지들(m 및 n)을 제외한 데이터 페이지들 모두로부터의 대응하는 바이트들에 대한 계산들을 나타낸다. Kn이 Km에 관하여 고유하기 때문에, 고유 인덱스들이 비-제로 특징을 인에이블하는 것이 주의된다.
[0279] 다양한 실시예들에서, 도 13a-도 13d에 의해 표현된 계산들은 페이지(m)에 대한 복구된 값의 1개 바이트 및 페이지(n)에 대한 복구된 값의 1개 바이트를 결정하기 위하여 수행된다. 계산들은 R0, R1의 대응하는 바이트들에 기반하는 페이지들(m 및 n)의 바이트들 모두에 대한 복구된 값들, 및 페이지들(m 및 n)을 제외한 데이터 페이지들 모두로부터의 대응하는 바이트들을 결정하기 위하여 반복된다.
[0280] 따라서 페이지들(m 또는 n)에 대한 복구된 값들의 임의의 바이트들을 서로에 대해 계산하는 것에 종속성들이 없다. 그러므로 다양한 실시예들은 고려되고 여기서 Pm 및/또는 Pn 복구 값들은 Pj 복구 값들에 대한 상기된 계산들과 유사하게 고도 병렬로부터 고도 직렬의 범위에서 계산된다. 게다가, 페이지(m) 및/또는 페이지(n)의 임의의 복구 값들을 서로에 대해 계산하는 것에 대한 순서 요건들이 없다. 그러므로 다양한 실시예들은 고려되고 여기서 Pm 및/또는 Pn 복구 값들은 Pj 복구 값들에 대한 상기된 계산들과 유사하게, 서로에 관하여 가변하는 순서결정들로 계산된다.
[0281] 일부 예시적 실시예들은 하나 또는 그 초과의 NVM들(각각은 예를 들어 하나 또는 그 초과의 플래시 다이를 가짐)에 대해 수행된 하나 또는 그 초과의 판독 동작들의 완료의 순서결정에 의해 적어도 부분적으로 결정된 순서결정들에서 복구 값들을 결정하기 위하여 관련된 계산들(R0' 및 R1'에 대한 계산들 같은)을 수행하고, 판독 동작들은 도 13a-도 13d의 임의의 것에서 계산들을 위한 소스들로서 예시된 값들 중 임의의 하나 또는 그 초과를 얻기 위한 것이다. 판독 동작들의 완료 순서로 계산들을 수행하는 것은, 일부 실시예들 및/또는 이용 시나리오들에서, 계산들을 수행하기 위하여 인에이블된 NVM들과 엘리먼트들 사이의 버퍼링의 감소 또는 제거를 인에이블한다. 판독 동작들의 완료 순서로 계산들을 수행하는 것은, 일부 실시예들 및/또는 이용 시나리오들에서 NVM들의 메모리 대역폭 같은 계산들을 수행하기 위하여 사용된 메모리 대역폭의 감소를 인에이블한다.
[0282] 일부 다른 예시적 실시예들은 하나 또는 그 초과의 NVM들(각각은 예를 들어 하나 또는 그 초과의 플래시 다이를 가짐)으로부터 리턴된 데이터 및/또는 이용 가능한 데이터를 순서결정함으로써 적어도 부분적으로 순서결정들에서 복구 값들을 결정하는 것에 관련된 계산들(R0' 및 R1'에 대한 계산들 같은)을 수행하고, 리턴된 데이터 및/또는 이용 가능한 데이터는 도 13a-도 13d 중 임의의 것에서 계산들을 위한 소스들로서 예시된 값들 중 임의의 하나 또는 그 초과를 얻기 위하여 NVM들 상에서 수행된 판독 동작들에 응답한다. 일부 실시예들 및/또는 이용 시나리오들에서, 판독 동작들로부터 리턴된 데이터 및/또는 이용 가능한 데이터의 순서로 계산들을 수행하는 것은 계산들을 수행하기 위하여 인에이블된 NVM들과 엘리먼트들 사이의 버퍼링을 감소시키거나 제거한다. 일부 실시예들 및/또는 이용 시나리오들에서, 판독 동작들로부터 리턴된 데이터 및/또는 이용 가능한 데이터의 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭 같은 계산들을 수행하기 위하여 사용된 메모리 대역폭을 감소시킨다. 일부 실시예들에서, 판독 동작들은 특정 순서(예를 들어, Pi의 최하위 바이트로부터 최상위 바이트로)로 수행되는 반면, 다른 실시예들에서, 판독 동작들은 비특정 순서로 수행된다.
[0283] 도 14a 및 도 14b는 NVM들로부터 수신된 페이지들에 관하여 상위-레벨 리던던시 정보를 계산하는 실시예의 선택된 상세사항들을 예시한다. 도 14a는 복수의 판독 커맨드들을 발행(판독 동작 발행(1402A))을 통해 하나 또는 그 초과의 NVM들에 전송하고, 커맨드들의 모두가 전송되었는지(모두 발행?(1403A)) 체크하고, 그렇지 않으면, 커맨드들의 다른 것에 전송하도록 루핑 백 하는 실시예의 선택된 상세사항들을 예시한다. 다른 실시예들이 고려되고 여기서 복수의 커맨드들은 차례로보다 한번에 발행된다.
[0284] 도 14b는 도 14a에 예시된 바와 같이 전송된 판독 커맨드들에 응답하여 NVM들로부터 수신된 프로세싱 페이지들의 실시예의 선택된 상세사항들을 예시한다. 체크는 페이지가 이용가능한지(페이지 준비?(1402B)) 결정하기 위하여 이루어진다. 그렇지 않으면, 프로세싱은 체크를 다시 수행하도록 루핑 백한다. 페이지가 이용 가능하면, 페이지에 관련된 상위-레벨 리던던시 정보 프로세싱은 수행된다(페이지-기반 계산들 수행(1403B)). 그 다음 체크는 모든 페이지들이 프로세싱되었는지(페이지들 종료?(1404B)) 결정하기 위하여 이루어진다. 만약 그렇다면, 프로세싱은 완료되고(종료(1499B)), 그렇지 않으면 흐름은 다른 페이지가 이용 가능한지를 결정하기 위하여 루핑 백한다.
[0285] 도 14a에 예시된 바와 같이 전송된 커맨드들에 응답하여 페이지들의 수신 이외에, 도 14b에 예시된 프로세싱은 도 14a에 예시된 프로세싱과 무관하다. 다양한 시나리오들에서, 페이지들의 도착 순서는 NVM 타입, 상태, 동작 환경, 및 다른 요인들에 따라 가변하고, 일부 환경들에서 도착한 페이지들에 대응하는 판독 커맨드들의 전송 순서 또는 도착 순서와 상이하다. 도 14a의 프로세싱이 도 14b와 무관하기 때문에(페이지 데이터 도착이 전송되는 대응하는 판독 커맨드에 종속하는 것 외에), 일부 실시예들 및/또는 이용 시나리오들에서, 판독 커맨드들은 전송되고(도 14a) 판독 데이터는 수신/프로세싱된다(도 14b). 일부 실시예들 및/또는 이용 시나리오들에서, 페이지들의 일부는, 예를 들어 특정 페이지에 대한 판독 커맨드가 전송되기 전에 특정 페이지가 특정 버퍼에 존재하면, 판독 커맨드들을 통하여 NVM들로 지향되게 요청되기보다 하나 또는 그 초과의 버퍼들로부터 제공된다. 일부 실시예들 및/또는 이용 시나리오들에서, 전송된 커맨드들에 응답하기보다 페이지들은 전송된 커맨드들에 응답하여 제공된 페이지들과 혼합된 NVM들에 의해 제공되는데, 예를 들어 페이지들은 다른 활동들 동안 전송된 판독 커맨드들에 응답하여 제공된다.
[0286] 다양한 실시예들에서, 도 11에 의해 예시된 바와 같이, R0 및 R1에 대한 계산들은 도 14a 및 도 14b에 의해 적어도 부분적으로 예시된 바와 같이 수행된다. 제 1 예에 대해, 대응하는 R0 및 R1 페이지들을 계산하기 위하여 필요한 모든 데이터 페이지들에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들로 전송된다. 판독 커맨드들에 응답하여 수신된 데이터 페이지들은 도 11에 의해 예시된 바와 같이, 페이지들이 R0 및 R1 페이지들을 계산하기 위하여 수신될 때 프로세싱된다. 제 2 예에 대해, R0 및 R1 페이지들의 한 쌍(예를 들어 듀얼-평면의 2개의 평면들에 대응)에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송된다. 판독 커맨드들에 응답하여 수신된 데이터의 페이지들은, 도 11에 의해 예시된 바와 같이 페이지들이 R0 및 R1 페이지들을 계산하기 위하여 수신될 때 프로세싱된다.
[0287] 다양한 실시예들에서, 도 12에 의해 예시된 바와 같이 Pj에 대한 계산들은 도 14a 및 도 14b에 의해 예시된 바와 같이 적어도 부분적으로 수행된다. 제 1 예에 대해, 특정 Pj 페이지를 계산하기 위하여 필요한 모든 데이터 페이지들에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송된다. 판독 커맨드들에 응답하여 수신된 데이터의 페이지들은, 도 12에 의해 예시된 바와 같이 페이지들이 Pj 페이지를 계산하기 위하여 수신될 때 프로세싱된다. 제 2 예에 대해, 한 쌍의 Pj 페이지들(예를 들어 듀얼-평면 NVM의 2개의 평면들에 대응함)에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송되고, 수신된 데이터의 페이지들은 도 14b에 의해 예시된 바와 같이 Pj 페이지들의 쌍을 계산하기 위하여 수신될 때 프로세싱된다.
[0288] 다양한 실시예들에서, 도 13a-도 13d의 임의의 것에 의해 예시된 바와 같이, 복구 값들을 결정하는 것에 관련된 계산들(R0' 및 R1'에 대한 계산들 같은)은 도 14a 및 도 14b에 의해 예시된 바와 같이 적어도 부분적으로 수행된다. 제 1 예에 대해, 특정 R0' 페이지 및 특정 R1'을 계산하기 위하여 필요한 모든 데이터 페이지들에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들로 전송된다. 판독 커맨드들에 응답하여 수신된 데이터 페이지들은 도 13a에 의해 예시된 바와 같이 페이지들이 R0' 및 R1' 페이지들을 계산하기 위하여 수신될 때 프로세싱된다. 제 2 예에 대해, R0' 및 R1' 페이지들(예를 들어, 듀얼-평면 NVM의 2개의 평면들에 대응함)의 쌍에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송되고, 수신된 데이터의 페이지들은 R0' 및 R1' 페이지들의 쌍을 계산하기 위하여 도 14b에 의해 예시된 바와 같이 수신될 때 프로세싱된다.
[0289] 도 15a-도 15c는 예를 들어 도 11과 연관된 바와 같은 환경에서 NVM들에 제공된 기록에 관하여 상위-레벨 리던던시 정보의 계산을 취소하는 실시예의 선택된 상세사항들을 예시한다. 도 15a는 복수의 기록 커맨드들을 발행(기록 동작 발행(1502A))을 통해 하나 또는 그 초과의 NVM들에 전송하고, 커맨드들 모두가 전송되었는지 (모두 발행?(1503A))를 체킹하고, 그리고 그렇지 않으면, 커맨들들의 다른 것을 전송하도록 루핑 백하는 실시예의 선택된 상세사항들을 예시한다. 다른 실시예들이 고려되고, 여기서 복수의 커맨드들은 차례로보다 한번에 발행된다는 것이 주의된다.
[0290] 도 15b는 도 15a에 예시된 바와 같이 전송된 기록 커맨드들에 응답하여 NVM들로부터 수신된 기록 완료 및 상태 정보를 프로세싱하는 실시예의 선택된 상세사항들을 예시한다. 기록이 에러들 없이 완료되었는지(기록 OK?(1502B))를 결정하기 위하여 체크가 이루어진다. 그렇다면, 체크는 모든 기록들이 완료되었는지(기록 종료?(1504B))를 결정하기 위하여 이루어진다. 그렇다면, 프로세싱은 완료된다(종료(1599B)). 기록이 완료되었지만 프로그램 실패와 같은 (하위-레벨) 에러를 가지면, 흐름은 상위-레벨 리던던시 정보 계산에 관하여 기록의 효과를 "무효화"(리던던시로부터 기록 취소(1503B))하도록 진행한다. 보다 구체적으로, 하위-레벨 에러를 가진 기록에 대한 데이터는 임의의 대응하는 상위-레벨 리던던시 정보 계산들로부터 디-컴퓨팅(de-compute)된다(기록에 대한 데이터가 기록이 성공했다는 추정 하에서 대응하는 상위-레벨 리던던시 계산들에 이미 포함된다는 것을 가정함). 예를 들어, 하위-레벨 기록 실패는 특정 페이지(j) 상에서 검출된다. 응답하여, 개정된 R0 및 R1 페이지들은 페이지(j) 데이터(Pj)가 제로로 설정되도록 계산된다. 도 15c는 개정된 R0(nR0)의 단일 바이트 및 개정된 R1(nR1)의 단일 바이트에 대한 계산의 실시예의 선택된 상세사항들을 예시하고, 여기서 j는 하위-레벨 기록 실패의 페이지이다. 도 11과 연관된 것과 같은 도 12의 환경에서, 유한 필드가 갈루아 필드이면 도 15c에 예시된 감산 연산("-")은 논리 XOR 연산과 동일하다는 것이 주의된다. 다른 프로세싱(예시되지 않음)은 다양한 실시예들에서 하위-레벨 기록 실패를 가진 페이지(Pj)뿐 아니라, 수신된 상위-레벨 리던던시 페이지들(nR0 및 nR1)을 저장하기 위하여 수행된다.
[0291] 도 15a에 예시된 바와 같이 전송된 커맨드들에 응답하여 기록 완료 및 상태 정보의 수신 외에, 도 15b에 예시된 프로세싱은 도 15a에 예시된 프로세싱과 무관하다. 다양한 시나리오들에서, 기록 완료 및 상태 정보의 도착 순서는 NVM 타입, 상태, 동작 환경, 및 다른 요인들에 따라 가변하고, 몇몇 환경들에서 도착한 기록 완료 및 상태 정보에 대응하는 기록 커맨드들의 전송 순서 또는 도착 순서와 상이하다. 도 15a의 프로세싱이 도 15b와 무관하기 때문에(기록 완료 및 상태 정보 도착이 전송된 대응하는 기록 커맨드에 종속하는 것 외에), 기록 커맨드들은 전송되고(도 15a) 반면 기록 완료 및 상태 정보는 수신/프로세싱된다(도 15b).
[0292] 일부 실시예들 및/또는 이용 시나리오들에서, 상당한 레이턴시는 기록 커맨드들에 응답하여 기록 커맨드들이 NVM들로 전송되는 것과 NVM들로부터 기록 완료 및 상태 정보의 수신 사이에서 발생한다. 일부 실시예들 및/또는 이용 시나리오들에서, 도 15a에 예시된 바와 같이 전송된 커맨드들에 응답하는 것 외에 기록 완료 및 상태 정보는 도 15a에 예시된 바와 같이 전송된 커맨드들에 응답하여 제공된 기록 완료 및 상태 정보와 혼합된 NVM들에 의해 제공되고, 예를 들어 기록 완료 및 상태 정보는 다른 활동들 동안 전송된 기록 커맨드들에 응답하여 제공된다.
[0293] 다양한 실시예들 및/또는 이용 시나리오들에서, 데이터 정보를 위해 다르게 사용될 하나 또는 그 초과의 페이지들은 사용되지 않는다. 다양한 시나리오들에서 미사용된 페이지는 블록의 제 1, 중간 또는 최종 페이지, R-블록, 스트라이프, 또는 임의의 종류의 페이지들의 시퀀스이다. 일부 환경들에서, 미사용된 페이지들은 먼저 사용되지 않고("제외됨), 일부 환경들에서 미사용된 페이지들은 몇몇 사용 후 사용되지 않는다("서비스로부터 제거됨"). 제외된 미사용된 페이지의 예는 올바르지 않게 제조된 페이지이다. 서비스로부터 제거된 미사용된 페이지의 예는 적당하게 기록할 것을 실패한 페이지(예를 들어, 도 15b에 관하여 하위-레벨 기록 에러로서 설명된 바와 같이)이다. 도 10-12, 13a-13d, 14a-14b 및 15a-15b에 관한 프로세싱은 계산들로부터 미사용된 페이지들을 완전히 생략하거나, 미사용된 페이지들에 대한 모든 데이터가 제로인 것처럼 계산들을 수행함으로써 같이, 임의의 미사용된 페이지들(제외되든 서비스로부터 제거되든)을 스킵한다.
혼합 입도 상위-레벨 리던던시
[0294] 다양한 실시예들 및/또는 이용 시나리오들에서, NVM의 개별 구역들은 도 7, 8 및 10에 의해 예시되고 설명된 바와 같이, 개별 상위-레벨 리던던시 모드들(예를 들어, RASIE-1 및 RASIE-2)에서 동작된다. 다양한 실시예들에서, 개별 상위-레벨 리던던시 모드들은 동일한 입도를 가지며, 예를 들어, 개별 구역들은 동일한(예를 들어 크기 또는 타입) 엘리먼트의 각각 정수 배들이다. 예시적인 엘리먼트들은 하나 또는 그 초과의 R-블록들 및/또는 블록들, 하나 또는 그 초과의 R-페이지들 및/또는 페이지들, 및 하나 또는 그 초과의 워드 라인들과 연관된 하나 또는 그 초과의 셀들을 포함한다. 예를 들어, NVM의 제 1 구역은 단일 블록의 입도에서 RASIE-1 모드에서 동작되고(예를 들어, 제 1 구역은, 제 1 구역이 하나 또는 그 초과의 R-블록들인 것처럼 정수의 블록들임) NVM의 제 2 구역은 단일 블록의 입도에서 RASIE-2 모드에서 동작된다(예를 들어, 제 2 구역은 또한, 제 2 구역이 하나 또는 그 초과의 R-블록들인 것처럼 정수의 블록들임). 따라서 제 1 및 제 2 구역들은 둘 다가 동일한 입도(하나의 블록)를 가진 개별 상위-레벨 리던던시 모드들에서 동작된다.
[0295] 다양한 다른 실시예들에서, 개별 상위-레벨 리던던시 모드들은 다양한 입도들이고, 예를 들어 개별 구역들의 적어도 몇몇은 정수 배들의 개별 상이한 엘리먼트들이다. 예를 들어, NVM의 제 1 구역은 단일 페이지의 입도에서 RASIE-1 모드에서 동작되고(예를 들어, 제 1 구역은, 본원의 어딘가에서 설명된 NVM의 각각의 다이로부터의 페이지, 예시적인 R-페이지에 대응하는 것과 같이 정수의 페이지들임) NVM의 제 2 구역은 단일 블록의 입도에서 RASIE-2 모드에서 동작된다(예를 들어, 제 2 구역은 또한, 제 1 구역이 하나 또는 그 초과의 R-블록들인 것처럼 정수의 블록들임). 따라서 제 1 및 제 2 구역들은 별개의 개별 입도들을 가진 개별 상위-레벨 리던던시 모드들에서 동작된다. 다른 예에 대해, NVM의 개별 구역들은 동일한 상위-레벨 리던던시 모드 및 개별 별개의 입도들에서 동작된다(예를 들어, 제 1 구역 및 제 2 구역은 RASIE-1에서 동작되고, 제 1 구역은 단일 페이지 입도에 있고, 제 2 구역은 단일 R-블록 입도에 있음).
[0296] 다양한 실시예들 및/또는 이용 시나리오들에서, 상위-레벨 리던던시 모드의 입도는 동일한 크기, 동일한 타입 또는 둘 다를 가진 정수 배의 엘리먼트들에 기반한다. 예를 들어, 동일한 크기(및 동일한 타입)의 엘리먼트들은 예를 들어 동일한 하위-레벨 리던던시 코딩 레이트들로 인해, 페이지들의 각각이 동일한 크기인(및 페이지들의 각각은 동일한 타입, '페이지' 임) 환경들에서 페이지들을 포함한다. 다른 예에 대해, 동일한 타입(그러나 상이한 크기들)의 엘리먼트들은 예를 들어 상이한 하위-레벨 리던던시 코딩 레이트들로 인해 페이지들 중 일부가 페이지들의 다른 것과 상이한 크기들을 가지지만, 페이지들 모두는 동일한 타입, '페이지'를 가지는 환경들에서 페이지들을 포함한다.
[0297] 도 16은 도 6에 예시된 바와 같이 플래시 다이의 배치의 환경에서, 혼합된 입도 상위-레벨 리던던시의 실시예의 선택된 상세사항들을 예시한다. 도 16은 명시적으로 플래시 다이(610.0, 610.63, 610.64 및, 610.65)를 예시하고, 생략부호(...)에 의해 암시적으로 플래시 다이(610.1 ... 610.62)를 예시한다. 플래시 다이의 블록 및 블록들 내의 페이지들의 선택된 상세사항들은 예시된다. 복수의 R-블록들은 R-블록들(660.0, 660.1, 660.2 ... 및 660.R)로서 예시된다. 복수의 R-페이지들은 R-페이지들(1600, 1601, 1602 ... 및 1609)(집합적으로 R-블록(660.0))으로서 예시된다.
[0298] R-페이지는 개념적으로 복수의 NVM 디바이스들로부터 페이지들의 논리적 슬라이스에 대응한다(r-블록이 개념적으로 복수의 NVM 디바이스들로부터 블록들의 논리적 슬라이스에 대응하기 때문에). 예시적인 R-페이지는 함께 취하는 플래시 다이의 각각의 j번째 블록의 i번째 페이지이다. 모두 함께 취해진 플래시 다이의 각각으로부터 j번째 블록의 i번째 및 (i+1) 번째 페이지들 같은 R-블록들의 다양한 예들에 개념적으로 대응하는 것과 같은 다른 예시적 R-페이지들이 있다.
[0299] 예시된 바와 같이, R-페이지(1600)는 함께 취해진 플래시 다이 각각의 제 1 블록으로부터의 제 1 페이지(페이지들(610.0P0 ... 610.63P0, 610.64P0, 및 610.65P0))이다. R-페이지(1601)는 함께 취해진 플래시 다이의 각각의 제 1 블록으로부터의 제 2 페이지(페이지들(610.0P1 ... 610.63P1, 610.64P1, 및 610.65P1))이다. R-페이지(1602)는 함께 취해진 플래시 다이의 각각의 제 1 블록으로부터 제 3 페이지(페이지들(610.0P2 ... 610.63P2, 610.64P2, 및 610.65P2))이다. R-페이지(1609)는 함께 취해진 플래시 다이의 각각의 제 1 블록으로부터의 최종 페이지(페이지들(610.0PP ... 610.63PP, 610.64PP, 및 610.65PP))이다.
[0300] 플래시 다이의 다양한 구역들은 다음과 같이 다양한 입도들에서 대응하는 상위-레벨 리던던시 모드들에서 동시에 동작되는 것과 같이 예시된다. R-페이지(1600)는 페이지의 입도에서 RASIE-2 모드에서 동작되고, 플래시 다이(610.0 ... 610.63)의 각각 페이지들(610.0P0 ... 610.63P0)에 저장된 데이터 정보(1600.D) 및 플래시 다이(610.64 및 610.65)의 각각 페이지들(610.64P0 및 610.65P0)에 저장된 대응하는 리던던시 정보(1600.R)를 포함한다. R-페이지(1601)는 또한, 페이지의 입도에서 RASIE-2 모드에서 동작되고, 플래시 다이(610.0 ... 610.63)의 각각 페이지들(610.0P1 ... 610.63P1)에 저장된 데이터 정보(1061.D), 및 플래시 다이(610.64 및 610.65)의 각각 페이지들(610.64P1 및 610.65P1)에 저장된 대응하는 리던던시 정보(1601.R)를 포함한다. R-페이지(1602)는 페이지의 입도에서 RASIE-1 모드에서 동작되고, 플래시 다이(610.0 ... 610.64)의 각각 페이지들(610.0P2 ... 610.64P2)에 저장된 데이터 정보(1602.D), 및 플래시 다이(610.65)의 페이지(610.65P2)에 저장된 대응하는 리던던시 정보(1602.R)를 포함한다. R-페이지(1609)는 페이지의 입도에서 RASIE-3 모드에서 동작되고, 플래시 다이(610.0 ... 610.62)의 각각 페이지들(610.0PP ... 610.62PP)에 저장된 데이터 정보(1609.D), 및 플래시 다이(610.63 ... 610.65)의 각각 페이지들(610.63PP ... 610.65PP)에 저장된 대응하는 리던던시 정보(1609.R)를 포함한다. 플래시 다이(610.62)(및 페이지(610.62PP) 같은 내부의 페이지들)는 명시적으로 예시되기 보다 암시적으로 예시된다는 것이 주의된다.
[0301] 동일한 입도의 페이지에서 개별 상위-레벨 리던던시 모드들에서 동작되는 R-페이지들(1600, 1601, 1602, 및 1609)과 대조하여, R-블록들(660.1, 660.2, 및 660.R)은 동일한 입도의 블록에서 개별 상위-레벨 리던던시 모드들에서 동작된다. 구체적으로, R-블록(660.1)은 블록의 입도에서 RASIE-2 모드에서 동작되고, 플래시 다이(610.0 ... 610.63)의 각각 블록들(610.0B1 ... 610.63B1)에 저장된 데이터 정보(1610.D), 및 플래시 다이(610.64 및 610.65)의 각각 블록들(610.64B1 및 610.65B1)에 저장된 대응하는 리던던시 정보(1610.R)를 포함한다. R-블록(660.2)은 블록의 입도에서 RASIE-1 모드에서 동작되고, 플래시 다이(610.0 ... 610.64)의 각각 블록들(610.0B2 ... 610.64B2)에 저장된 데이터 정보(1620.D), 및 플래시 다이(610.65)의 블록(610.65B2)에 저장된 대응 리던던시 정보(1620.R)를 포함한다. R-블록(660.R)은 블록의 입도에서 RASIE-3 모드에서 동작되고, 플래시 다이(610.0 ... 610.62)의 각각 블록들(610.0BB ... 610.62BB)에 저장된 데이터 정보(16109.D), 및 플래시 다이(610.63 ... 610.65)의 각각 블록들(610.63BB ... 610.65BB)에 저장된 대응 리던던시 정보(1690.R)를 포함한다.
[0302] 따라서 R-페이지들(1600, 1601, 1602, 및 1609)은 동일한 입도의 하나의 페이지에서 다양한 상위-레벨 리던던시 모드들에서 모두 동시에 동작된다(각각의 구역이 플래시 다이(610.0 ... 610.65)의 각각으로부터 대응하는 페이지 이도록). 추가로, R-블록들(660.0, 660.1, 660.2, 및 660.R)은 동일한 입도의 하나의 블록에서 다양한 상위-레벨 리던던시 모드들에서 모두 동시에 동작된다(각각의 구역이 플래시 다이(610.0 ... 610.65)의 각각으로부터 대응하는 블록이도록). 최종적으로, R-페이지들(1600, 1601, 1602, 및 1609)은 R-블록들(660.0, 660.1, 660.2, 및 660.R)의 동시 동작과 동시이다. 그러므로 플래시 다이는 다양한 (혼합된) 입도들에서 다양한 상위-레벨 리던던시 모드들에서 집합적으로 그리고 동시에 동작된다.
[0303] 입도들의 혼합에서 상위-레벨 리던던시 모드들에서 동시에 동작하는 것의 이점의 특정 예로서, 다음이 고려된다. 도 16에 예시된 바와 같이, R-페이지들(1600, 1601, 및 1602)은 개별 상위-레벨 리던던시 모드(구체적으로 RASIE-2 모드, RASIE-2 모드, 및 RASIE-1 모드)에서 각각 전체적으로 동작된다. R-페이지(1609)는 RASIE-3 모드에서 전체적으로 동작된다. 비록 명시적으로 예시되지 않았지만, R-블록(660.0)의 나머지 R-페이지들이 전체적으로 RASIE-1 모드에서 동작되는 것이 가정된다. 따라서 R-블록(660.0) 모두는 페이지 입도를 가진 상위-레벨 리던던시 모드들에서 동작된다. 예시된 바와 같이, R-블록들(660.1, 660.2, 및 660.R)은 개별 상위-레벨 리던던시 모드들에서 각각 전체적으로 동작된다. 비록 명시적으로 예시되지 않았지만, 나머지 R-블록들은 또한 개별 상위-레벨 리던던시 모드들에서 전체적으로 각각 동작된다. 따라서 R-블록(660.0)을 제외한 모든 R-블록들은 블록(또는 대안적으로 R-블록) 입도를 가진 상위-레벨 리던던시 모드들에서 동작되고, R-블록(660.0)은 페이지 입도를 가진 상위-레벨 리던던시 모드들에서 동작된다.
[0304] 단일 페이지(예를 들어, 페이지(610.63PP))의 증가 리던던시 오버헤드 비용을 발생시키는 것은 RASIE-2를 통해 단일 동작 동안 2개의 실패들로부터 보호하는 것과 비교되는 RASIE-3을 통해 단일 동작 동안 3개의 실패들로부터 R-페이지(1609)의 보호를 인에이블한다. 상위-레벨 리던던시 모드들의 혼합 입도 없는 구현에서, R-페이지(1609)의 보호는 전체 블록의 증가 리던던시 오버헤드 비용을 발생시킨다. 따라서 혼합된-입도 상위-레벨 리던던시 모드들은 (패키지된) 디바이스, 다이, R-블록, 블록, R-페이지, 페이지, 워드 라인과 연관된 셀들, 및 상기의 하나 또는 그 초과의 복수들 같은 동일한 엔티티의 동일한 보호를 위하여 감소된 리던던시 정보 오버헤드를 가능하게 했다.
[0305] 도 17은 복수의 혼합 입도 상위-레벨 리던던시 모드들에서 동시 동작(제 1 및 제 2 입도 상위-레벨 리던던시 모드들(1700)에서 동시 동작)의 실시예의 선택된 상세사항들을 예시한다. 흐름은 예를 들어 이벤트에 응답하여 시작된다(시작(1701)). 그 다음 흐름은 두 개의 동시 경로들을 따라 계속되고, 하나는 예를 들어 NVM의 개별 구역들에 대응하는 상위-레벨 리던던시 모드 동작의 각각의 개별 입도에 대한 것이다. 제 1 입도의 동작(제 1 입도 상위-레벨 리던던시 모드(1702)에서 동작은 도면의 좌측 부분에 예시되고, 제 2 입도의 동작(제 2 입도 상위-레벨 리던던시 모드(1704)의 동작)은 도면의 우측 부분에 예시된다. 예시된 바와 같이, 동작은 두 개의 입도들에 대해 동시에(예를 들어, 완전히 또는 부분적으로 병렬로) 계속된다. 비록 예시되지 않았지만, 일부 실시예들 및/또는 이용 시나리오들에서, 일부 상황들에서 흐름은, 단일 입도의 동작으로 되돌아 가는 것(예를 들어, 리부트(reboot)에 응답하여) 또는 2개보다 많은 입도들에서 동시 동작으로 진행하는 것(예를 들어, 다른 이벤트에 응답하여) 것 같이, 2개의 입도들의 동시 동작으로부터 나간다. 게다가, 도면이 상위-레벨 리던던시 모드들의 2개의 입도들의 동시 동작을 예시하지만, 다양한 다른 실시예들이 상위-레벨 리던던시 모드들의 다양한 입도들에서 동시 동작을 구현한다.
[0306] 동시 동작의 개시 후, 호스트(예를 들어, 도 1b의 호스트(102)), 또는 SSD 제어기 내부의 에이전트(예를 들어, 도 1a의 리사이클러(151))로부터 같은 요청(판독/기록 요청(1707))에 응답하여, 흐름은 요청이 동작 입도들 중 어느 것에 대응(입도?(1706))하는지를 결정하기 위하여 계속된다. 요청이 제 1 입도를 가지면(제 1(1706.1)), 흐름은 제 1 입도에 다른 요청을 프로세싱하도록 진행한다(제 1 입도 상위-레벨 리던던시 모드(1703)에 따른 판독/기록). 요청이 제 2 입도를 가지면(제 2(1706.2)), 흐름은 제 2 입도에 다른 요청을 프로세싱하도록 진행한다(제 2 입도 상위-레벨 리던던시 모드(1705)에 따른 판독/기록).
[0307] 예시된 흐름(예를 들어, 시작(1701)을 통해)을 개시하는 이벤트 및/또는 2개보다 많은 입도들(명시적으로 도시되지 않음)에서 동시 동작을 개시하는 이벤트의 예는 실패의 검출(예를 들어, 하위-레벨 정정 불가능 판독 에러 또는 기록/프로그램 실패)을 포함한다. 다양한 실시예들에서, 예시된 흐름(예를 들어, 시작(1701)을 통해) 및/또는 2개보다 많은 입도들(명시적으로 예시되지 않음)에서 동작의 개시에 의해 의미된 전이는 동작 모드의 동적 전이(예를 들어, 도 8의 동적 전이 동작 모드(809))에 대응한다.
[0308] 본원의 어딘가뿐 아니라 여기서 복수의 입도들에서 상위-레벨 리던던시 모드들의 동시 동작에 관한 설명이, 예를 들어 복수의 엔티티들이 정보를 저장하기 위하여 동시에 사용되고 및/또는 복수의 입도들에 따라/따르는 것으로부터 기록/판독 정보에 동시에 이용 가능하다는 것을 지칭하는 것이 주의된다. 엔티티들의 예들은 (패키지된) 디바이스, 다이, R-블록, 블록, R-페이지, 페이지, 워드 라인과 연관된 셀들, 및 복수의 상기의 하나 또는 그 초과의 복수들을 포함한다. 다양한 시점들에서, 복수의 입도들에서 동시에 동작하면서, 임의의 하나 또는 그 초과는 엔티티들의 단지 단일 하나만이 단일 동작(예를 들어, 기록 또는 판독)을 수행(또는 대안적으로 예를 들어 SSD 제어기에 의해 수행하도록 지시됨)하는 것, 엔티티들 중 다양한 하나들이 다양한 개별 동작들을 동시에 수행하는 것, 및 엔티티들의 하나 또는 그 초과의 다양한 서브-엔티티들이 다양한 개별 동작들을 동시에 수행하는 것이다.
[0309] 예를 들어, SSD 제어기가 몇몇 플래시 다이를 관리하는 것을 고려하자. SSD 제어기는 다음들과 같이 다양한 입도들에서 다양한 상위-레벨 리던던시 모드들에서 플래시 다이의 다양한 구역들을 동시에 동작시킨다. SSD 제어기는 R-블록의 입도에서 RASIE-1 모드에서 구역들 중 제 1 구역을 동작시키고, R-블록의 입도에서 RASIE-2 모드에서 구역들 중 제 2 구역을 동작시킨다. SSD 제어기는 R-페이지의 입도에서 RASIE-2 모드에서 구역들 중 제 3 구역을 동작시키고, R-페이지의 입도에서 RASIE-3 모드에서 구역들 중 제 4 구역을 동작시킨다. 동시 동작 동안, 구역들 각각은 정보를 동시에 저장하고 R-블록 또는 R-페이지 입도에 따라 정보를 기록/판독에 동시에 이용 가능하다.
[0310] 예를 계속하여, 동시 동작 동안 시간 기간에 걸쳐, SSD 제어기는 플래시 다이의 각각에 일련의 기록 커맨드들을 순차적으로 제공한다. 일련의 기록 커맨드들은 제 1 구역의 전체를 기록하는 것에 대응하고 RASIE-1 모드에 따르고 R-블록의 입도에 있다. 일부 시나리오들에서, 기록 커맨드들의 각각은 SSD 제어기에 의해 플래시 다이로 차례로 방출된다. 따라서 SSD 제어기는 다양한 입도들에서 다양한 상위-레벨 리던던시 모드들에서 구역들을 동시에 동작시키면서 동시에 단일 동작을 수행한다. 일부 시나리오들에서, 기록 커맨드들은 비교적 짧은 시간 기간에서 플래시 다이에 의해 수신되고, 플래시 다이의 적어도 둘 또는 그 초과가 적어도 부분적으로 동시에 개별 페이지 프로그래밍 동작들을 계속하게 한다. 따라서 적어도 두 개 또는 그 초과의 플래시 다이는, 다양한 입도들에서 다양한 상위-레벨 리던던시 모드들에서 동시에 동작하면서 복수의 동작들을 동시에 수행한다.
[0311] 일부 실시예들 및/또는 이용 시나리오들에서, 복수의 입도들에서 상위-레벨 리던던시 모드들에서 동시 동작은 적응성 하위-레벨 코드 레이트들과 조합하여 사용된다. 예를 들어, NVM의 복수의 R-블록들은 R-블록 입도에서 RASIE-1 모드에서 그리고 제 1 적응성 하위-레벨 코드 레이트를 사용하여 처음에 동작된다. 그 다음 R-블록들의 특정 하나의 페이지들 중 하나가 덜 신뢰성이 있게 된다. 응답하여, 덜 신뢰성 있는 페이지의 판독 유닛들 중 하나 또는 그 초과는 제 1 적응성 하위-레벨 코드 레이트보다 우수한 에러 정정을 가진 제 2 적응성 하위-레벨 코드 레이트를 사용하여 동작된다. 후속하여, 덜 신뢰성 있는 페이지는 추가로 덜 신뢰성이게 된다. 응답하여, 덜 신뢰성 있는 페이지를 포함하는 R-페이지는 R-페이지의 입도에서 제 2 상위-레벨 리던던시 모드(제 1 상위-레벨 리던던시 모드보다 우수한 에러 정정을 가짐)에서 동작된다. 특정 R-블록의 다른 R-페이지들은 제 1 상위-레벨 리던던시 모드에서 그러나 현재 R-페이지의 입도(R-블록보다 오히려)에서 계속 동작된다. 특정 R-블록 외의 R-블록들은 제 1 상위-레벨 리던던시 모드 및 R-블록의 입도에서 계속 동작된다. 그러므로, 덜 신뢰성 있는 페이지가 점점 덜 신뢰성 있게 되더라도, 덜 신뢰성 있는 페이지는 여전히 이용 가능하다(비록 감소된 이용 가능 스토리지 용량에서도). 따라서, 적응성 하위-레벨 코드 레이트들과 함께 복수의 입도들에서 상위-레벨 리던던시 모드들에서 동시에 동작은 일부 시나리오들에서 개선된 NVM 및/또는 SSD 수명을 가능하게 한다.
다른 실시예 정보
[0312] 다양한 실시예들에서, 도 8, 10-12, 13a-13d, 14a-14b, 15a-15b 및 17의 하나 또는 그 초과의 엘리먼트들에 관한 프로세싱은 도 1a의 하나 또는 그 초과의 엘리먼트들(또는 그 부분들)에 의해 완전히 또는 부분적으로 수행된다. 예를 들어, CPU(171)의 소프트웨어 실행 능력들의 부분은, 도 8에 의해 예시된 바와 같이 동작 모드들의 동적 전이를 지시하는 것, 도 12 및 도 13a-도 13d에 의해 예시된 바와 같이 데이터 복구 동작들을 지시하는 것, 및/또는 도 7에 의해 예시된 바와 같이 상위-레벨 리던던시 모드들의 다양한 입도들에서 동시 동작을 지시하는 것에 의한 같은 상위-레벨 리던던시 프로세싱을 관리하기 위하여 사용된다. 다른 예에 대해, 데이터 프로세싱(121)은 도 11, 도 12, 도 13a-도 13d 및 도 15c 중 임의의 하나 또는 그 초과에 의해 예시된 바와 같은 계산들에 다른 상위-레벨 리던던시 정보의 계산에 전용되고 및/또는 특화된 하드웨어 엘리먼트들을 포함한다.
예시적인 구현 기술들
[0313] 일부 실시예들에서, NVM들(예를 들어, 플래시 메모리들), 컴퓨팅-호스트 플래시 메모리 제어기, 및/또는 (도 1a의 SSD 제어기(100)와 같은) SSD 제어기, 및 프로세서, 마이크로프로세서, 시스템-온-칩, 주문형 집적 회로, 하드웨어 가속계, 또는 상술한 동작들의 전부 또는 일부분들을 제어하는 다른 회로에 대한 시스템 구현 혼합-입도 상위-레벨 리던던시에 의해 수행된 동작들 모두 또는 임의의 부분들의 다양한 조합들은 컴퓨터 시스템에 의한 프로세싱과 호환가능한 사양에 의해 특정된다. 그 사양은 하드웨어 설명 언어들, 회로 설명들, 네트리스트(netlist) 설명들, 마스크 설명들 또는 레이아웃 설명들과 같은 다양한 설명들에 따른다. 예시적인 설명들은 베릴로그(Verilog), VHDL, SPICE, PSpice, SPICE 변형들 이를 테면 IBIS, LEF, DEF, GDS-II, OASIS 또는 다른 설명들을 포함한다. 다양한 실시예들에서, 프로세싱은 하나 또는 그 초과의 집적된 회로들 상의 포함을 위해 적합한 논리 및/또는 회로를 생성하고, 검증하거나 특정하기 위해 번역, 컴파일화, 시뮬레이션 및 합성의 임의의 조합을 포함한다. 다양한 실시예들에 따른 각 집적된 회로는 다양한 기술들에 따라 설계가능하고 및/또는 제조가능하다. 기술들은 (필드 또는 마스크 프로그램가능한 게이트 어레이 집적된 회로와 같은) 프로그램가능한 기술, (전적으로 또는 부분적으로 셀-기반된 집적된 회로와 같은) 세미-커스톰 기술, 및 (실질적으로 전문화되는 집적된 회로와 같은) 풀-커스톰 기술, 그의 임의의 조합, 또는 집적된 회로들의 설계 및/또는 제조와 호환가능한 임의의 다른 기술을 포함한다.
[0314] 일부 실시예들에서, 그 내에 저장되는 명령들의 세트를 갖는 컴퓨터 판독가능한 매체에 의해 설명된 바와 같은 동작들 중 전부 또는 일부분들의 다양한 조합들은 하나 또는 그 초과의 명령들의 실행 및/또는 번역에 의해, 하나 또는 그 초과의 소스 및/또는 스크립트 언어 구문들의 번역 및/또는 컴파일링에 의해, 또는 프로그래밍 및/또는 스크립팅 언어 구문들에 표현된 정보를 컴파일링, 변환 및/또는 번역함으로써 생성되는 이진 명령들의 실행에 의해 수행된다. 구문들은 임의의 표준 프로그래밍 또는 스크립팅 언어(C, C++, 포트란, 파스칼, 에이더(Ada), 자바, VBscript 및 쉘(Shell))와 호환가능하다. 프로그램 명령들, 언어 구문들 또는 이진 명령들 중 하나 또는 그 초과의 것은 임의선택적으로 하나 또는 그 초과의 컴퓨터 판독가능한 스토리지 매체 엘리먼트들 상에 저장된다. 다양한 실시예들에서, 프로그램 명령들 중 일부, 전부 또는 다양한 부분들은 하나 또는 그 초과의 기능들, 루틴들, 서브루틴들, 인-라인 루틴들, 절차들, 매크로들 또는 그의 일부분들로서 실현된다.
결론
[0315] 특정 선택들은 텍스트 및 도면들을 준비하는데 있어서 단지 편의를 위한 설명으로 이루어진 것이며 반대에 대한 표시가 존재하지 않는 한 그 선택들은 설명된 실시예들의 구조 또는 동작에 관한 추가적인 정보를 전달하는 대로 해석되어서는 안 된다. 선택들의 예들은: 도면 넘버링을 위해 이용되는 지시들의 특정 조직 또는 할당 및 실시예들의 특징들 및 엘리먼트들을 식별하고 참조하기 위해 이용되는 엘리먼트 식별자들(예를 들어, 발호들(callouts) 또는 수치적 지시자들)의 특정 조직 또는 할당을 포함한다.
[0316] 용어들 "포함하다" 또는 "포함하는"은 구체적으로 개방형 범위의 논리적 세트들을 설명하는 관념들로서 해석되도록 의도되며 용어 "내의(within)"가 명시적으로 후속되지 않는 한 물리적 억제를 전달하도록 의미하지 않는다.
[0317] 전술한 실시예들이 설명 및 이해의 명확성의 목적들을 위해 일부 상세에서 설명되었더라도, 본 발명은 제공된 상세사항들에 제한되지 않는다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적이며 제한적이지 않다.
[0318] 구성, 배치 및 이용에서의 많은 변형들이 설명에 일치하여 가능하며, 발행된 특허의 청구범위들의 범위 내에 있다는 것이 이해될 것이다. 예를 들어, 상호접속 및 기능-유닛 비트-폭들, 클록 속도들 및 이용되는 기술의 타입은 각 컴포넌트 블록에서의 다양한 실시예들에 따라 가변적이다. 상호접속 및 논리에 제공되는 명칭들은 단지 예시적이며, 설명된 개념들을 제한하는 것으로서 해석되어서는 안 된다. 플로우차트 및 흐름도 프로세스, 동작 및 기능 엘리먼트들의 순서 및 배치는 다양한 실시예들에 따라 가변적이다. 또한, 구체적으로 반대로 서술되지 않는 한, 특정된 값 범위들, 이용되는 최대 및 최소 값들, 또는 (플래시 메모리 기술 타입들; 및 레지스터들 및 버퍼들에서의 엔트리들 또는 스테이지들의 수와 같은) 다른 특정 사양들은 단지 설명된 실시예들이며, 구현 기술에서의 개선들 및 변경들을 트래킹하는 것이 예상되며, 제한들로서 해석되어서는 안 된다.
[0319] 기술분야에 알려지는 기능적으로 동등한 기술들은 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들, 절차들, 매크로들 또는 그의 일부분들을 구현하기 위해 설명된 것들 대신에 사용가능하다. 또한 실시예들의 많은 기능적 양상들이 (이전에 하드웨어에서의 기능들의 소프트웨어로의 이송을 용이하게 하는) 더 빠른 프로세싱 및 (이전에 소프트웨어에서의 기능들의 하드웨어로의 이송을 용이하게 하는) 더 높은 집적 밀도의 실시예 종속 설계 제약들 및 기술 트렌드들의 기능으로서, 하드웨어(일반적으로 전용된 회로) 또는 (예를 들어, 프로그램된 제어기 또는 프로세서의 일부 방법을 통한) 소프트웨어로 선택적으로 실현가능함이 이해된다. 다양한 실시예들에서의 특정 변형들은: 분할에서의 차이들; 서로 다른 형태 팩터들 및 구성들; 서로 다른 운영 시스템들 및 다른 시스템 소프트웨어의 이용; 서로 다른 인터페이스 표준들, 네트워크 프로토콜들 또는 통신 링크들의 이용; 및 특정 애플리케이션의 고유한 엔지니어링 및 비지니스 제약들에 따라 본원에 설명되는 개념들을 구현할 때 예상되는 다른 변형들을 포함하지만, 이에 제한되지 않는다.
[0320] 실시예들은 설명된 실시예들의 많은 양상들의 최소 구현을 위해 요구되는 것을 훨씬 넘어서는 상세 및 환경적 문맥으로 설명되었다. 당업자는 일부 실시예들이 나머지 엘리먼트들 중에 기본 협동을 변경하지 않고서 개시된 컴포넌트들 또는 특징들을 생략하는 것을 인식할 것이다. 따라서 설명된 실시예들의 다양한 양상들을 구현하기 위해 개시된 상세사항들의 다수가 요구되지 않음이 이해된다. 나머지 엘리먼트들이 종래 기술로부터 구별가능한 범위까지, 생략되는 컴포넌트들 및 특징들은 본원에 설명되는 개념들로 제한되지 않는다.
[0321] 설계에서의 모든 그와 같은 변형들은 설명된 실시예들에 의해 전달되는 교시들에 비해 미약한 변경들이다. 또한 본원에 설명되는 실시예들은 다른 컴퓨팅 및 네트워킹 애플리케이션들에 대한 광범위한 적용가능성을 가지며, 설명되는 실시예들의 특정 애플리케이션 또는 산업에 제한되지 않음이 이해된다. 본 발명은 따라서 발행된 특허의 청구범위의 범위 내에 포괄되는 모든 가능한 변경들 및 변형들을 포함하는 것으로 해석될 것이다.

Claims (24)

  1. 방법으로서,
    메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하는 것을 포함하는 제 1 상위-레벨 리던던시 모드에서 동작하는 단계 ― 상기 M개의 개별 영역들 각각은 동일한 제 1 크기임 ―
    상기 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하는 것을 포함하는 제 2 상위-레벨 리던던시 모드에서 동작하는 단계 ― 상기 N개의 개별 영역들 각각은 동일한 제 2 크기임 ―
    를 포함하고,
    상기 M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 상기 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
    상기 N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 상기 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
    상기 M개의 개별 영역들 및 상기 N개의 개별 영역들 각각은 상기 메모리의 비-오버랩핑 영역들이고,
    상기 제 1 크기는 상기 제 2 크기와 상이하고,
    상기 M개의 개별 영역들 각각은 상기 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 상기 N개의 개별 영역들 각각은 상기 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고,
    상기 메모리는 복수의 플래시 디바이스들을 포함하고,
    상기 M개의 개별 영역들은 상기 플래시 디바이스들 중 하나 또는 그 초과의 제 1 플래시 디바이스들의 M개의 개별 블록들에 대응하고 상기 제 1 크기는 블록에 대응하고,
    상기 N개의 개별 영역들은 상기 플래시 디바이스들 중 하나 또는 그 초과의 제 2 플래시 디바이스들의 N개의 개별 페이지들에 대응하고, 상기 제 2 크기는 페이지에 대응하며, 그리고
    상기 M개의 물리적 디바이스들 중 적어도 몇몇은 상기 N개의 물리적 디바이스들 중 적어도 몇몇인,
    방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 M개의 개별 영역들 중 임의의 하나 또는 상기 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세스하는 단계를 더 포함하고, 상기 액세스하는 단계는 상기 특정 영역의 크기를 결정하는 것을 포함하는,
    방법.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 M개의 개별 블록들 중 하나의 실패를 검출하는 단계, 및 응답하여 상기 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하는 단계를 더 포함하는,
    방법.
  6. 제 5 항에 있어서,
    상기 J는 상기 K와 동일하지 않은,
    방법.
  7. 시스템으로서,
    개별 제 1 및 제 2 상위-레벨 리던던시 모드들에 따라 메모리를 관리하기 위한 수단;
    상기 메모리를 관리하기 위한 수단에 응답하여, 상기 메모리에 저장하기 위한 수단
    을 포함하고,
    상기 메모리를 관리하기 위한 수단은 저장하기 위한 수단에게 메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하게 지시하도록 인에이블 되고, 상기 M개의 개별 영역들의 각각은 동일한 제 1 크기이고,
    상기 메모리를 관리하기 위한 수단은 상기 저장하기 위한 수단에게 상기 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하게 추가로 지시하게 인에이블 되고, 상기 N개의 개별 영역들의 각각은 동일한 제 2 크기이고,
    상기 M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 상기 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
    상기 N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 상기 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
    상기 M개의 개별 영역들 및 상기 N개의 개별 영역들 각각은 상기 메모리의 비-오버랩핑 영역들이고,
    상기 제 1 크기는 상기 제 2 크기와 상이하고,
    상기 M개의 개별 영역들 각각은 상기 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 상기 N개의 개별 영역들 각각은 상기 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고,
    상기 메모리는 복수의 플래시 디바이스들을 포함하고,
    상기 M개의 개별 영역들은 플래시 디바이스들 중 하나 또는 그 초과의 제 1 플래시 디바이스들의 M개의 개별 블록들에 대응하고 상기 제 1 크기는 블록에 대응하고,
    상기 N개의 개별 영역들은 상기 플래시 디바이스들 중 하나 또는 그 초과의 제 2 플래시 디바이스들의 N개의 개별 페이지들에 대응하고 상기 제 2 크기는 페이지에 대응하며, 그리고
    상기 M개의 물리적 디바이스들 중 적어도 몇몇은 상기 N개의 물리적 디바이스들 중 적어도 몇몇인,
    시스템.
  8. 삭제
  9. 제 7 항에 있어서,
    상기 M개의 개별 영역들 중 임의의 하나 또는 상기 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세스하기 위한 수단을 더 포함하고, 상기 액세스하기 위한 수단은 상기 특정 영역의 크기를 결정하도록 인에이블 하는,
    시스템.
  10. 삭제
  11. 제 7 항에 있어서,
    상기 메모리를 관리하기 위한 수단은 상기 M개의 개별 블록들 중 하나의 실패를 검출하고, 및 상기 검출에 응답하여 상기 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하도록 인에이블 되는,
    시스템.
  12. 제 11 항에 있어서,
    상기 J는 상기 K와 동일하지 않은,
    시스템.
  13. 장치로서,
    개별 제 1 및 제 2 상위-레벨 리던던시 모드들에 따라 메모리를 제어하도록 인에이블된 상위-레벨 리던던시 제어 회로;
    상기 상위-레벨 리던던시 제어 회로에 응답하는, 스토리지 회로
    를 포함하고,
    상기 상위-레벨 리던던시 제어 회로는 상기 스토리지 회로에게 상기 메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하게 지시하도록 인에이블 되고, 상기 M개의 개별 영역들의 각각은 동일한 제 1 크기이고,
    상기 상위-레벨 리던던시 제어 회로는 상기 스토리지 회로에게 상기 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하게 추가로 지시하게 인에이블 되고, 상기 N개의 개별 영역들의 각각은 동일한 제 2 크기이고,
    상기 M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 상기 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
    상기 N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 상기 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
    상기 M개의 개별 영역들 및 상기 N개의 개별 영역들 각각은 상기 메모리의 비-오버랩핑 영역들이고,
    상기 제 1 크기는 상기 제 2 크기와 상이하고,
    상기 M개의 개별 영역들 각각은 상기 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 상기 N개의 개별 영역들 각각은 상기 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고,
    상기 메모리는 복수의 플래시 디바이스들을 포함하고,
    상기 M개의 개별 영역들은 플래시 디바이스들 중 하나 또는 그 초과의 제 1 플래시 디바이스들의 M개의 개별 블록들에 대응하고 상기 제 1 크기는 블록에 대응하고,
    상기 N개의 개별 영역들은 상기 플래시 디바이스들 중 하나 또는 그 초과의 제 2 플래시 디바이스들의 N개의 개별 페이지들에 대응하고 제 2 크기는 페이지에 대응하며, 그리고
    상기 M개의 물리적 디바이스들 중 적어도 몇몇은 상기 N개의 물리적 디바이스들 중 적어도 몇몇인,
    장치.
  14. 삭제
  15. 제 13 항에 있어서,
    상기 M개의 개별 영역들 중 임의의 하나 또는 상기 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세스하도록 인에이블된 액세싱 회로를 더 포함하고, 상기 액세싱 회로는 상기 특정 영역의 크기를 결정하도록 추가로 인에이블 하는,
    장치.
  16. 삭제
  17. 제 13 항에 있어서,
    상기 상위-레벨 리던던시 제어 회로는 상기 M개의 개별 블록들 중 하나의 실패를 검출하고, 및 상기 검출에 응답하여 상기 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하도록 추가로 인에이블 되는,
    장치.
  18. 제 17 항에 있어서,
    상기 J는 상기 K와 동일하지 않은,
    장치.
  19. 명령들의 세트가 저장되어 있는 유형의 컴퓨터 판독가능 매체로서,
    상기 명령들의 세트는, 프로세싱 엘리먼트에 의해 실행될 때 상기 프로세싱 엘리먼트로 하여금,
    메모리의 M개의 개별 영역들에서 M개의 정보 부분들을 저장하는 것을 포함하는 제 1 상위-레벨 리던던시 모드에서 동작하는 것 ― 상기 M개의 개별 영역들 각각은 동일한 제 1 크기임 ―
    상기 메모리의 N개의 개별 영역들에서 N개의 정보 부분들을 저장하는 것을 포함하는 제 2 상위-레벨 리던던시 모드에서 동작하는 것 ― 상기 N개의 개별 영역들 각각은 동일한 제 2 크기임 ―
    를 포함하는 동작들을 수행 및/또는 제어하게 하고,
    상기 M개의 정보 부분들은 개별 M-J개의 데이터 정보 부분들 및 상기 개별 M-J개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 J개의 리던던트 정보 부분들을 포함하고,
    상기 N개의 정보 부분들은 개별 N-K개의 데이터 정보 부분들 및 상기 개별 N-K개의 데이터 정보 부분들을 보호하기 위하여 계산된 개별 K개의 리던던트 정보 부분들을 포함하고,
    상기 M개의 개별 영역들 및 상기 N개의 개별 영역들 각각은 상기 메모리의 비-오버랩핑 영역들이고,
    상기 제 1 크기는 상기 제 2 크기와 상이하고,
    상기 M개의 개별 영역들 각각은 상기 메모리의 M개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고 상기 N개의 개별 영역들 각각은 상기 메모리의 N개의 물리적 디바이스들의 개별 물리적 디바이스 내에 있고,
    상기 메모리는 복수의 플래시 디바이스들을 포함하고,
    상기 M개의 개별 영역들은 플래시 디바이스들 중 하나 또는 그 초과의 제 1 플래시 디바이스들의 M개의 개별 블록들에 대응하고 상기 제 1 크기는 블록에 대응하고,
    상기 N개의 개별 영역들은 상기 플래시 디바이스들 중 하나 또는 그 초과의 제 2 플래시 디바이스들의 N개의 개별 페이지들에 대응하고, 상기 제 2 크기는 페이지에 대응하며, 그리고
    상기 M개의 물리적 디바이스들 중 적어도 몇몇은 상기 N개의 물리적 디바이스들 중 적어도 몇몇인,
    유형의 컴퓨터 판독가능 매체.
  20. 삭제
  21. 제 19 항에 있어서,
    상기 동작들은 상기 M개의 개별 영역들 중 임의의 하나 또는 상기 N개의 개별 영역들 중 임의의 하나인 특정 영역에 완전히 포함된 하나 또는 그 초과의 위치들에 액세싱하는 것을 더 포함하고, 상기 액세싱하는 것은 상기 특정 영역의 크기를 결정하는 것을 포함하는,
    유형의 컴퓨터 판독가능 매체.
  22. 삭제
  23. 제 19 항에 있어서,
    상기 동작들은 상기 M개의 개별 블록들 중 하나의 실패를 검출하는 것, 및 응답하여 상기 제 2 상위-레벨 리던던시 모드에서 적어도 실패 블록을 동작하는 것을 더 포함하는,
    유형의 컴퓨터 판독가능 매체.
  24. 제 23 항에 있어서,
    상기 J는 상기 K와 동일하지 않은,
    유형의 컴퓨터 판독가능 매체.
KR1020157005442A 2012-08-02 2013-07-23 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시 KR102101650B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/565,752 2012-08-02
US13/565,752 US8856431B2 (en) 2012-08-02 2012-08-02 Mixed granularity higher-level redundancy for non-volatile memory
PCT/US2013/051720 WO2014022159A1 (en) 2012-08-02 2013-07-23 Mixed granularity higher-level redundancy for non-volatile memory

Publications (2)

Publication Number Publication Date
KR20150041004A KR20150041004A (ko) 2015-04-15
KR102101650B1 true KR102101650B1 (ko) 2020-04-17

Family

ID=50026653

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157005442A KR102101650B1 (ko) 2012-08-02 2013-07-23 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시

Country Status (7)

Country Link
US (2) US8856431B2 (ko)
EP (1) EP2880533A4 (ko)
JP (1) JP6185993B2 (ko)
KR (1) KR102101650B1 (ko)
CN (1) CN107155358B (ko)
TW (1) TWI566254B (ko)
WO (1) WO2014022159A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2646922A4 (en) 2010-12-01 2015-11-25 Lsi Corp DYNAMIC MANAGEMENT OF HIGHER LEVEL REDUNDANCY MODE WITH INDEPENDENT SILICON ELEMENTS
EP2666091A2 (en) 2011-01-18 2013-11-27 LSI Corporation Higher-level redundancy information computation
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9524113B2 (en) * 2013-05-24 2016-12-20 Seagate Technology Llc Variable redundancy in a solid state drive
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
TWI550628B (zh) * 2014-07-16 2016-09-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
KR102249810B1 (ko) 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10402319B2 (en) * 2014-07-25 2019-09-03 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) * 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US10439650B2 (en) * 2015-05-27 2019-10-08 Quantum Corporation Cloud-based solid state device (SSD) with dynamically variable error correcting code (ECC) system
KR102385138B1 (ko) * 2015-10-08 2022-04-12 삼성전자주식회사 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치
US10002042B2 (en) * 2015-10-22 2018-06-19 Sandisk Technologies Llc Systems and methods of detecting errors during read operations and skipping word line portions
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
KR102706994B1 (ko) * 2016-09-07 2024-09-19 에스케이하이닉스 주식회사 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
JP6725375B2 (ja) 2016-09-14 2020-07-15 キオクシア株式会社 メモリシステムおよび方法
JP6553566B2 (ja) * 2016-09-23 2019-07-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
JP6709180B2 (ja) * 2017-02-28 2020-06-10 キオクシア株式会社 メモリシステムおよび制御方法
US10474527B1 (en) 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
US10585749B2 (en) 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
US10705906B2 (en) 2018-02-01 2020-07-07 Toshiba Memory Corporation Apparatus and control method thereof
CN108564981B (zh) * 2018-03-27 2021-10-01 深圳忆联信息系统有限公司 一种存储装置数据安全动态监控方法
KR102495915B1 (ko) 2018-04-30 2023-02-03 삼성전자 주식회사 스토리지 장치 및 상기 스토리지 장치를 포함하는 서버
US20190050161A1 (en) * 2018-06-21 2019-02-14 Intel Corporation Data storage controller
CN109541444B (zh) * 2018-10-18 2021-11-02 天津大学 基于混合粒度奇偶校验的集成电路故障注入检测方法
CN109919826B (zh) * 2019-02-02 2023-02-17 西安邮电大学 一种用于图计算加速器的图数据压缩方法及图计算加速器
CN109948186B (zh) * 2019-02-19 2023-04-28 中国科学院微电子研究所 一种汉明码SRAM时序参数Setup特征化建模方法
US11171671B2 (en) * 2019-02-25 2021-11-09 Samsung Electronics Co., Ltd. Reducing vulnerability window in key value storage server without sacrificing usable capacity
TWI695264B (zh) * 2019-05-20 2020-06-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN110209374B (zh) * 2019-05-23 2021-04-20 浙江大学 一种基于racetrack memory的乘法器及其操作方法
JP7302497B2 (ja) * 2020-02-07 2023-07-04 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
CN111767165B (zh) * 2020-06-30 2024-06-14 杭州海康存储科技有限公司 数据处理方法、装置及控制设备
CN112383314B (zh) * 2021-01-12 2021-04-06 杭州阿姆科技有限公司 一种基于raid信息的ldpc纠错方法
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
CN114637712B (zh) * 2022-03-18 2023-03-10 无锡众星微系统技术有限公司 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置
CN114817231B (zh) * 2022-06-30 2022-09-30 深圳中科智能技术有限公司 一种冗余数据识别过滤方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012075200A2 (en) * 2010-12-01 2012-06-07 Sandforce, Inc. Dynamic higher-level redundancy mode management with independent silicon elements

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5099484A (en) 1989-06-09 1992-03-24 Digital Equipment Corporation Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection
US5247523A (en) 1989-07-12 1993-09-21 Hitachi, Ltd. Code error correction apparatus
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
JPH07271672A (ja) 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
JPH10509819A (ja) 1994-10-14 1998-09-22 シリコン グラフィックス インク. インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシング
US5666512A (en) 1995-02-10 1997-09-09 Hewlett-Packard Company Disk array having hot spare resources and methods for using hot spare resources to store user data
US5862158A (en) 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
US6557123B1 (en) 1999-08-02 2003-04-29 Inostor Corporation Data redundancy methods and apparatus
US6516425B1 (en) * 1999-10-29 2003-02-04 Hewlett-Packard Co. Raid rebuild using most vulnerable data redundancy scheme first
US7117397B1 (en) 1999-12-15 2006-10-03 Fujitsu Limited Apparatus and method for preventing an erroneous operation at the time of detection of a system failure
US6647514B1 (en) * 2000-03-23 2003-11-11 Hewlett-Packard Development Company, L.P. Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request
US6678823B1 (en) 2000-05-01 2004-01-13 Xtec, Incorporated Methods and apparatus for authenticating data stored in semiconductor memory cells
US6594796B1 (en) 2000-06-30 2003-07-15 Oak Technology, Inc. Simultaneous processing for error detection and P-parity and Q-parity ECC encoding
KR100388208B1 (ko) 2001-05-25 2003-06-19 주식회사 하이닉스반도체 반도체 메모리 장치의 리던던시 회로
US7073115B2 (en) 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US7246294B2 (en) 2002-04-01 2007-07-17 Intel Corporation Method for iterative hard-decision forward error correction decoding
JP2004152194A (ja) * 2002-10-31 2004-05-27 Ricoh Co Ltd メモリデータ保護方法
US7372731B2 (en) 2003-06-17 2008-05-13 Sandisk Il Ltd. Flash memories with adaptive reference voltages
US20050066226A1 (en) * 2003-09-23 2005-03-24 Adams R. Dean Redundant memory self-test
US7206991B2 (en) * 2003-10-15 2007-04-17 Lsi Logic Corporation Method, apparatus and program for migrating between striped storage and parity striped storage
US7237067B2 (en) 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
JP4551740B2 (ja) 2004-11-08 2010-09-29 株式会社東芝 低密度パリティチェック符号復号器及び方法
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
KR100688549B1 (ko) 2005-05-24 2007-03-02 삼성전자주식회사 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법
KR100732628B1 (ko) 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
US7631245B2 (en) * 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US20070143541A1 (en) 2005-12-19 2007-06-21 Lsi Logic Corporation Methods and structure for improved migration of raid logical volumes
US8055979B2 (en) 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US7809994B2 (en) 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US8069397B2 (en) 2006-07-10 2011-11-29 Broadcom Corporation Use of ECC with iterative decoding for iterative and non-iterative decoding in a read channel for a disk drive
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US20080126839A1 (en) 2006-09-19 2008-05-29 Satish Sangapu Optimized reconstruction and copyback methodology for a failed drive in the presence of a global hot spare disc
US8001441B2 (en) 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US7904780B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
EP2126680A2 (en) 2006-12-06 2009-12-02 Fusion Multisystems, Inc. Apparatus, system, and method for a front-end, distributed raid
US7505319B2 (en) 2007-01-31 2009-03-17 Taiwan Semiconductor Manufacturing Company, Ltd. Method and apparatus for high efficiency redundancy scheme for multi-segment SRAM
US20100107039A1 (en) 2007-02-01 2010-04-29 Kabushiki Kaisha Toshiba Semiconductor memory with reed-solomon decoder
US8369141B2 (en) 2007-03-12 2013-02-05 Apple Inc. Adaptive estimation of memory cell read thresholds
US7904793B2 (en) 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US8332574B2 (en) * 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
US7873779B2 (en) * 2007-05-14 2011-01-18 Qualcomm Incorporated Memory page size auto detection
KR100888842B1 (ko) 2007-06-28 2009-03-17 삼성전자주식회사 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
WO2009072100A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Systems and methods for temporarily retiring memory portions
US7656707B2 (en) 2007-12-14 2010-02-02 Intel Corporation Systems and methods for discrete channel decoding of LDPC codes for flash memory
US8443260B2 (en) 2007-12-27 2013-05-14 Sandisk Il Ltd. Error correction in copy back memory operations
US20090177943A1 (en) 2008-01-09 2009-07-09 Broadcom Corporation Error correction coding using soft information and interleaving
US8276043B2 (en) 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
EP2592553B1 (en) 2008-03-11 2015-11-18 Agere Systems, Inc. Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
US7843725B2 (en) 2008-06-11 2010-11-30 Micron Technology, Inc. M+L bit read column architecture for M bit memory cells
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US20100017649A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
KR101391362B1 (ko) 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
TWI389127B (zh) * 2008-08-01 2013-03-11 Jmicron Technology Corp 快閃記憶體的配置方法
KR100967004B1 (ko) 2008-08-05 2010-06-30 주식회사 하이닉스반도체 플래시 메모리 장치의 동작 제어 방법
US8041984B2 (en) 2008-10-17 2011-10-18 International Business Machines Corporation Redundancy information for adjusting threshold for component failure in a multi-layer system
KR101059673B1 (ko) 2008-12-26 2011-08-25 서울대학교산학협력단 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법
US8065558B2 (en) 2009-03-24 2011-11-22 Lsi Corporation Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance
CN101882472A (zh) * 2009-05-05 2010-11-10 建兴电子科技股份有限公司 具可变动错误校正码机制的快闪储存装置及其控制方法
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
JP2011040124A (ja) 2009-08-07 2011-02-24 Toshiba Corp 半導体記憶装置のデータ読み出し方法
US8074013B2 (en) 2009-09-21 2011-12-06 Skymedi Corporation Uniform coding system for a flash memory
US8315092B2 (en) 2010-01-27 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
KR101633048B1 (ko) 2010-02-25 2016-06-24 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
KR101541040B1 (ko) 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US9189385B2 (en) 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
KR101635506B1 (ko) 2010-03-29 2016-07-04 삼성전자주식회사 데이터 저장 시스템 및 그것의 읽기 방법
US8667361B1 (en) 2010-10-21 2014-03-04 Marvell International Ltd. Systems and methods for performing bit flipping in an LDPC decoder
WO2012058328A1 (en) 2010-10-27 2012-05-03 Sandforce, Inc. Adaptive ecc techniques for flash memory based data storage
US9727414B2 (en) 2010-12-01 2017-08-08 Seagate Technology Llc Fractional redundant array of silicon independent elements
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
EP2666091A2 (en) * 2011-01-18 2013-11-27 LSI Corporation Higher-level redundancy information computation
CN102436852A (zh) * 2012-01-06 2012-05-02 北京航空航天大学 一种纠正固定错误的数据校验与纠错方法
US8839073B2 (en) 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012075200A2 (en) * 2010-12-01 2012-06-07 Sandforce, Inc. Dynamic higher-level redundancy mode management with independent silicon elements

Also Published As

Publication number Publication date
US20150154070A1 (en) 2015-06-04
JP2015524975A (ja) 2015-08-27
EP2880533A1 (en) 2015-06-10
EP2880533A4 (en) 2016-07-13
TW201413726A (zh) 2014-04-01
CN107155358B (zh) 2020-07-10
JP6185993B2 (ja) 2017-08-23
US8856431B2 (en) 2014-10-07
WO2014022159A1 (en) 2014-02-06
KR20150041004A (ko) 2015-04-15
TWI566254B (zh) 2017-01-11
US20140040530A1 (en) 2014-02-06
CN107155358A (zh) 2017-09-12
US9323612B2 (en) 2016-04-26

Similar Documents

Publication Publication Date Title
US11144389B2 (en) Non-volatile memory program failure recovery via redundant arrays
US11379301B2 (en) Fractional redundant array of silicon independent elements
KR102101650B1 (ko) 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시
US9105305B2 (en) Dynamic higher-level redundancy mode management with independent silicon elements
US9183140B2 (en) Higher-level redundancy information computation
WO2014028183A1 (en) Fractional redundant array of silicon independent elements

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right