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

KR101636785B1 - 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 - Google Patents

독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 Download PDF

Info

Publication number
KR101636785B1
KR101636785B1 KR1020137017048A KR20137017048A KR101636785B1 KR 101636785 B1 KR101636785 B1 KR 101636785B1 KR 1020137017048 A KR1020137017048 A KR 1020137017048A KR 20137017048 A KR20137017048 A KR 20137017048A KR 101636785 B1 KR101636785 B1 KR 101636785B1
Authority
KR
South Korea
Prior art keywords
data
level redundancy
flash
portions
redundant
Prior art date
Application number
KR1020137017048A
Other languages
English (en)
Other versions
KR20130114681A (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 KR20130114681A publication Critical patent/KR20130114681A/ko
Application granted granted Critical
Publication of KR101636785B1 publication Critical patent/KR101636785B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1883Methods for assignment of alternate areas for defective areas
    • 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
    • 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/16Protection against loss of memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Signal Processing (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

고체 상태 디스크(SSD) 제어기는 비휘발성(예를 들어, 플래시) 메모리 소자들이 제어기에 의해 구현된 SSD의 동작 동안 실패할 때 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리가 단계적 성능저하(graceful degradation)를 제공할 수 있게 한다. 하이 레벨 에러 정정은 하위 레벨 정정불가능한 에러들의 정정을 제공한다. 비휘발성 메모리 소자들 중 하나의 장애가 검출되면, 상위 레벨 에러 정정은 현재의 모드에서의 동작으로부터 새로운 모드에서의 동작으로 동적으로 천이된다. 이 천이는 SSD상에 이용가능한 자유 공간의 감소, SSD의 데이터 저장부의 재배열, (만약 가능하면) 실패한 사용자 데이터의 복구/저장, 및 수정된 상위 레벨 에러 정정 정보의 결정/저장 중 하나 또는 그 초과를 포함한다. 그 후, 동작은 새로운 모드에서 계속된다. 비휘발성 메모리 소자들의 다른 장애가 검출되면, 다른 새로운 모드로의 다른 천이가 이루어진다.

Description

독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리{DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS}
관련 출원들에 대한 상호 참조
본 출원에 대한 우선권 이익 주장들은 (만약 있다면 적절하게) 첨부하는 출원 데이터 시트, 요청서, 또는 송달물에서 이루어진다. 인스턴트 출원(instant application)의 타입에 의해 허용된 범위까지, 본 출원은 모두가 본 발명이 이루어졌을 때의 인스턴트 출원과 일반적으로 소유되는 아래의 출원들을 모두 참조용으로 통합한다:
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 발명자 이름이 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-OIPCTB 및 출원 번호 PCT/US11/28244); 및
2011년 10월 26일 출원되고, 제 1 발명자 이름이 Yan Li이며, Adaptive ECC Techniques for Flash Memory Based Data Storage이란 명칭의 PCT 출원(대리인 사건 번호 SF-10-03PCT 및 출원 번호 PCT/US11/57914).
분야: 플래시 메모리 저장 기술에서의 진보들은 성능, 효율 및 사용의 활용에서 개선들을 제공하기 위해 필요하다.
종래 기술: 공개적으로 또는 널리 공지된 바와 같이 명백하게 식별되지 않으면, 컨텍스트, 정의들, 또는 비교 목적을 위해 포함하는 기법들 및 개념들의 여기에서의 언급은 이러한 기법들 및 개념들이 이전에 공개적으로 알려지거나 그렇지 않으면 종래 기술의 일부이라는 것을 허용하는 것으로서 해석되어서는 안된다. 특허들, 특허 출원들, 및 공개물들을 포함하는 (만약 있다면) 여기에 인용된 모든 참조들은 구체적으로 통합되든 안되든 그들의 엔터티들이 모두 참조를 위해 여기에 통합된다.
개요
본 발명은 다수의 방식들, 예를 들어, 프로세스, 제조물, 장치, 시스템, 물질의 조성물, 및 프로그램 명령들이 광 또는 전자 통신 링크들을 통해 전송되는 컴퓨터 판독가능한 저장 매체와 같은 컴퓨터 판독가능한 매체(예를 들어, 디스크, 플래시 저장부와 같은 비휘발성 저장부를 갖는 집적 회로와 같은 광학 및/또는 자기 대용량 저장 디바이스에서의 매체) 또는 컴퓨터 네트워크에서 구현될 수도 있다. 상세한 설명은 상기 식별된 분야에서의 비용, 수익성, 성능, 효율, 및 사용의 활용에서의 개선들을 가능하게 하는 본 발명의 하나 또는 그 초과의 실시예들의 설명을 제공한다. 상세한 설명은 나머지 상세한 설명의 이해를 용이하게 하기 위한 도입부를 포함한다. 도입부는 여기에 설명한 개념들에 따른 시스템들, 방법들, 제조품들, 및 컴퓨터 판독가능한 매체들 중 하나 또는 그 초과의 예시적인 실시예들을 포함한다. 결론에서 더욱 상세히 논의하는 바와 같이, 본 발명은 이슈된 청구항들의 범위내의 모든 가능한 변경물들 및 변동물들을 포함한다.
도 1a는 비휘발성 메모리(NVM)들에 액세스하고 이를 제어하는 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리를 사용하는 고체 상태 디스크(SSD) 제어기를 포함하는 SSD의 실시예의 선택된 상세들을 예시한다.
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세들을 예시한다.
도 2는 논리 블록 어드레스(LBA)의 논리 페이지 번호(LPN) 부분을 매핑하는 실시예의 선택된 상세들을 예시한다.
도 3은 다량의 판독 유닛들에서 측정된 길이를 갖는, 일괄하여, 다양한 판독 유닛들로서 구성된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 비휘발성 메모리(NVM)에 액세스하는 실시예의 선택된 상세를 예시한다.
도 4a는 판독 유닛의 실시예의 선택된 상세들을 예시한다.
도 4b는 판독 유닛의 다른 실시예의 선택된 상세들을 예시한다.
도 5는 다수의 필드들을 갖는 헤더의 실시예의 선택된 상세들을 예시한다.
도 6은 다중의 NVM 디바이스들의 블록들, 페이지들, 및 판독 유닛들의 실시예의 선택된 상세들을 예시한다.
도 7a는 상위 레벨 리던던시 기법들의 다양한 실시예들의 선택된 상세들을 예시한다.
도 7b는 R-블록들의 실시예의 선택된 상세들을 예시한다.
도 8은 실리콘 독립 소자들의 리던던트 어레이(RASIE)를 갖는 동적 상위 레벨 리던던시 모드 관리의 실시예의 선택된 상세들을 예시한다.
도 9는 판독 유닛들 중 하나 또는 그 초과의 판독 유닛에 저장된 상위 레벨 리던던시 정보에 의해 보호된 적응형 코드 레이트들의 하위 레벨 리던던시 정보를 갖는 판독 유닛들의 실시예를 예시한다.
도 10은 상위 레벨 린던던시 정보 결과 및 데이터 소스 대응부들의 실시예의 선택된 상세들을 예시한다.
도 11은 상위 레벨 리던던시 정보 계산들의 실시예의 선택된 상세들을 예시한다.
도 12는 (단일 동작 동안) 하나의 (하위 레벨) 장애로부터의 복구의 실시예의 선택된 상세들을 예시한다.
도 13a 내지 도 13d는 (단일 동작 동안) 2개의 (하위 레벨) 장애들로부터의 복구의 실시예의 선택된 상세들을 예시한다.
도 14a 및 도 14b는 NVM들로부터 수신된 페이지들에 관한 상위 레벨 리던던시 정보의 계산의 실시예의 선택된 상세들을 예시한다.
도 15a 내지 도 15c는 NVM들에 제공된 기록에 관한 상위 레벨 리던던시 정보의 계산의 백아웃(back out)의 실시예의 선택된 상세들을 예시한다.
도면들에서 참조 부호들의 리스트
표 삽입
Figure 112015026977933-pct00001

Figure 112015026977933-pct00002

Figure 112015026977933-pct00003

Figure 112015026977933-pct00004

Figure 112015026977933-pct00005
본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명이 본 발명의 선택된 상세들을 예시하는 첨부한 도면들과 아래에 제공된다. 본 발명은 실시예들과 관련하여 설명된다. 여기에서의 실시예들은 단지 예시적인 것으로 이해되고, 본 발명은 여기에서의 실시예들에 명백하게 제한되지 않거나 실시예들 중 어느 하나 또는 모두에 의해 제한되지 않으며, 본 발명은 다수의 변동물, 변경물, 및 등가물들을 포함한다. 설명의 단조로움을 회피하기 위해, (제 1, 최종, 특정한, 다양한, 추가의, 다른, 특히, 선택, 일부, 및 현저함을 포함하지만 이에 제한되지 않는) 다양한 단어 라벨(word label)들이 실시예들의 개별 세트들에 적용될 수도 있고, 여기에서 사용되는 바와 같이, 이러한 라벨들은 품질, 또는 임의의 형태의 우선순위 또는 편견을 전달하는 것으로 명백하게 의미되지 않고, 단지 개별 세트들 사이를 편리하게 구별하는 것으로 의미된다. 개시된 프로세스들의 일부 동작들의 순서는 본 발명의 범위내에서 변경가능하다. 다중의 실시예들이 프로세스, 방법 및/또는 프로그램 명령 특징들에서 변동들을 설명하는 역할을 하여도, 다른 실시예들은 사전결정되거나 동적으로 결정된 기준에 따라 복수의 다중의 실시예들에 각각 대응하는 동작의 복수의 모드들 중 하나의 정적 및/또는 동적 선택을 수행한다는 것이 예상된다. 다수의 특정한 상세들은 본 발명의 완전한 이해를 제공하기 위해 아래의 설명에 설명된다. 상세들은 예시를 위해 제공되고 본 발명은 상세들 중 일부 또는 모두없이 청구항들에 따라 실시될 수도 있다. 명확화를 위해, 본 발명에 관련된 기술 분야에 공지된 기술적 자료는 본 발명을 불필요하게 모호하게 하지 않기 위해 상세히 설명하지 않는다.
도입
이러한 도입부는 단지 상세한 설명의 더욱 빠른 이해를 용이하게 하기 위해 포함되고, 임의의 도입부의 단락들이 반드시 전체 주제의 축약된 뷰이고 배타적이거나 제한적 설명인 것으로 의미되지 않기 때문에 본 발명은 (만약 있다면, 명백한 예들을 포함하는) 도입부에 제공되는 개념들에 제한되지 않는다. 예를 들어, 다음의 도입부는 특정한 실시예들에만 공간 및 구성에 의해 제한된 개요 정보를 제공한다. 청구항들이 명세서의 나머지 전반적으로 궁극적으로 도시되고 논의되는 것들을 포함하는 다수의 다른 실시예들이 있다.
두문자어들
여기에 정의된 다양한 축약된 약어들(예를 들어, 두문자어들)의 적어도 일부가 여기에 사용된 특정한 소자들을 지칭한다.
Figure 112013058394670-pct00006
Figure 112013058394670-pct00007
NAND 플래시 메모리는 정보를 저장하기 위해 플로팅 게이트 트랜지스터들의 어레이를 사용한다. SLC 기술에서, 각 비트 셀(예를 들어, 플로팅 게이트 트랜지스터)은 정보의 1 비트를 저장하도록 인에이블된다. MLC 기술에서, 각 비트 셀은 정보의 다중 비트들을 저장하도록 인에이블된다. 제조 기술(예를 들어, CMOS 기술)이 축소될수록, 각 플로팅 게이트는 더 적은 전자들을 저장한다. 또한, 저장 용량 및 밀도가 증가할수록, 각 비트 셀은 더 많은 비트들을 저장한다. 따라서, 비트 셀들에 저장된 값들은 더 작은 전압 범위들에 의해 표현된다. 시간을 통한 저장된 전자들의 양에서의 감지 및/또는 변화의 불확실성들은 부정확하게 저장되거나 판독될 데이터에 대한 가능성을 증가시킨다. (예를 들어, 하위 레벨에서) 하나 또는 그 초과의 리던던시 및/또는 ECC 기법들의 사용은 NAND 플래시 메모리로부터의 다르게 손상된 데이터의 정확한 검색, 일부 사용 시나리오들에서는, 상기 언급한 어려움들 중 일부의 극복을 가능하게 한다.
SSD들의 일부 타입들은 비휘발성 저장부를 제공하기 위해 플래시 메모리를 사용한다(예를 들어, 플래시 메모리는 전력의 인가없이 정보를 유지한다). (예를 들어, 상위 레벨에서) 하나 또는 그 초과의 ECC 및/또는 리던던시 기법들의 사용은 플래시 메모리로부터의 다르게 손상된 데이터의 정확한 검색을 가능하게 하고/하거나, 하나 또는 그 초과의 플래시 메모리 소자들이 간헐적으로 또는 영구적으로 고장날 때에도 SSD의 적절한 시스템 레벨 동작을 가능하게 한다.
예를 들어, SSD 제어기는 하나 또는 그 초과의 NVM(예를 들어, 플래시) 엘리먼트들이 제어기에 의해 부분적으로 구현된 SSD의 동작 동안 실패할 때 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리가 단계적 성능저하(graceful degradation)를 제공할 수 있게 한다. NVM의 일부가 판독된다. (하나 또는 그 초과의 ECC 기법들을 따르는 것과 같이) 하위 레벨 리던던시 및/또는 에러 정정을 사용하여 정정불가능한 에러가 발생하면, (하나 또는 그 초과의 RASIE 기법들 및/또는 동적 상위 레벨 리던던시 모드 관리 기법들에 따르는 것과 같이) 상위 레벨 모드 정정이 에러 정정을 시도하기 위해 사용된다. NVM 소자들 중 하나의 장애가 하위 레벨 및/또는 상위 레벨 에러 정정, 및/또는 (NVM 소자들 중 하나 또는 그 초과에 의해 보고된 실패 상태와 같은) 다른 기법들에 의해 검출되면, 상위 레벨 에러 정정은 현재 모드에서의 동작으로부터 새로운 모드에서의 동작으로 동적으로 천이된다. 천이는 SSD상에 이용가능한 자유 공간의 감소, SSD의 데이터 저장부의 재배열, (만약 가능하면) 실패한 사용자 데이터의 복구/저장, 및 수정된 상위 레벨 에러 정정 정보의 결정/저장 중 하나 또는 그 초과를 포함한다. 그 후, 동작은 새로운 모드에서 계속된다. NVM 소자들 중 다른 하나의 다른 장애가 이제는 새로운 모드에서 동작하는 상위 레벨 에러 정정으로 검출되면, 다른 상위 레벨 에러 정정 모드로의 다른 천이가 이루어진다. NVM의 기록은 상위 레벨 에러 정정 동작 모드에 따르고, 이것은 상위 레벨 에러 정정 동작 모드 및 기록 데이터에 따른 상위 레벨 에러 정정 정보의 결정/저장을 포함한다.
상위 레벨 에러 정정 정보의 결정/저장은 일부 실시예들 및/또는 사용 시나리오들에서, 상위 레벨 리던던시 정보의 계산에 따른다. 상위(higher-level) 레벨 리던던시 정보 계산은 제어기에 의해 부분적으로 구현된 SSD의 동작 동안 비휘발성(예를 들어, 플래시) 메모리 소자들의 장애와 관련하여 신뢰가능한 동작을 유지하기 위해 SSD 제어기가 상위 레벨 리던던시 능력들을 제공할 수 있게 한다. 상위 레벨 리던던시 정보의 제 1 부분은 상위 레벨 리던던시 정보에 의해 보호될 데이터의 부분(예를 들어, 스트라이프)에서 모든 페이지들의 XOR를 통해 패리티 코딩을 사용하여 계산된다. 상위 레벨 리던던시 정보의 제 2 부분은 가중합 기법을 사용하여 계산되고, 이 부분에서의 각 페이지에는 가중합을 계산할 때 가중치로서 고유한 넌-제로 "인덱스"가 할당된다. 산술은 (갈르와체(Galois Field), 또는 정수 mod p(p는 소수(prime)와 같은) 유한체(finite field)를 통해 수행된다.
상위 레벨 리던던시 정보의 부분들은 NVM 소자들상에서 수행된 하나 또는 그 초과의 판독 동작들의 완료의 순서에 의해 결정된 순서, 또는 다양한 실시예들에서, 감소되거나 제거된 버퍼링을 가능하게 하는 NVM 소자들로부터 리턴되고/되거나 입수가능한 데이터의 순서에 기초한 순서와 같은 임의의 순서로 계산가능하다. 임의의 순서 계산가능성은 다양한 실시예들에서, 상대적으로 거의 없는 임시 및/또는 중간 버퍼링 및/또는 상태를 사용하여 복구 데이터 값들의 계산 및/또는 기록의 백아웃(back out)을 가능하게 한다. 상위 레벨 리던던시 정보의 부분들은 이용가능한 전용 하드웨어 소자들에 의해 결정된 바와 같은, 다양한 실시예들에서, 감소된 레이턴시 프로세싱 및/또는 감소된 메모리(예를 들어, NVM) 대역폭 사용을 가능하게 하는, 임의의 병렬도(degree of parallelism)로 계산가능하다.
일부 실시예들에서, SSD와 같은 I/O 디바이스들은 SSD 제어기를 포함한다. SSD 제어기는 SSD의 호스트 인터페이스와 NVM 사이의 브리지로서 작용하고, SSD의 호스트 인터페이스를 통해 컴퓨팅 호스트로부터 전송된 호스트 프로토콜의 커맨드들을 실행한다. 커맨드들 중 적어도 일부는 SSD에게 컴퓨팅 호스트로부터 및 컴퓨팅 호스트 각각 전송된 데이터로 NVM을 기록 및 판독하도록 지시한다. 다른 실시예들에서, SSD 제어기는 호스트 프로토콜의 LBA들과 NVM에서의 물리적 저장부 어드레스들 사이에서 트랜슬레이트(translate)하는데 맵을 사용하도록 인에이블된다. 다른 실시예들에서, 맵의 적어도 일부는 I/O 디바이스의 사설 저장부(컴퓨팅 호스트에는 보이지 않음)에 대해 사용된다. 예를 들어, 컴퓨팅 호스트에 의해 액세스불가능한 LBA들의 일부가 로그들, 통계들, 또는 다른 사설 데이터에 대한 액세스를 관리하기 위해 I/O 디바이스에 의해 사용된다.
일부 실시예들에서, NVM에서의 가변 사이즈 양자들의 압축된 데이터에 액세스하는 것은 일부 사용 시나리오들에서 개선된 저장 효율을 제공한다. 예를 들어, SSD 제어기는 (예를 들어, 디스크 기록 커맨드에 관하여) 컴퓨팅 호스트로부터 (비압축(uncompressed)) 데이터를 수신하고, 데이터를 압축하며, 압축된 데이터를 플래시 메모리에 저장한다. (예를 들어, 디스크 판독 커맨드에 관한) 컴퓨팅 호스트로부터의 순차적 요청에 응답하여, SSD 제어기는 플래시 메모리로부터의 압축된 데이터를 판독하고, 압축된 데이터를 비압축하며, 비압축된 데이터를 컴퓨팅 호스트에 제공한다. 압축된 데이터는 가변 사이즈 양자들에 따라 플래시 메모리에 저장되고, 양자 사이즈는 예를 들어, 압축 알고리즘, 동작 모드, 및 다양한 데이터에 대한 압축 유효성으로 인해 변한다. SSD 제어기는 헤더(들)가 플래시 메모리에 어디에 저장되는지를 결정하기 위해 포함된 맵 테이블을 컨설팅함으로써 부분적으로 데이터를 비압축한다. SSD 제어기는 적절한(압축된) 데이터가 플래시 메모리에 어디에 저장되는지를 결정하기 위해 플래시 메모리로부터 획득된 헤더(들)를 분석한다. SSD 제어기는 비압축된 데이터를 생성하여 컴퓨팅 호스트에 제공하기 위해 플래시 메모리로부터의 적절한 데이터를 비압축한다. 인스턴트 애플리케이션에서, 비압축(및 그것의 변형들)은 압축해제(decompress)(및 그것의 변형들)과 동의어이다.
다양한 실시예들에서, SSD 제어기는 컴퓨팅 호스트와 인터페이스하기 위한 호스트 인터페이스, 플래시 메모리와 같은 NVM와 인터페이스하기 위한 인터페이스, 및 인터페이스들을 제어하고 압축 및 비압축을 수행(및/또는 그 수행의 다양한 양태들을 제어)하기 위한 회로 뿐만 아니라 독립 실리콘 소자들을 갖는 하위 레벨 에러 정정, 상위 레벨 에러 정정, 및 동적 상위 레벨 리던던시 모드 관리를 포함한다.
다양한 실시예들에 따르면, 일부 호스트 인터페이스들은 USB 인터페이스 표준, CF 인터페이스 표준, MMC 인터페이스 표준, eMMC 인터페이스 표준, 썬더볼트 인터페이스 표준, UFS 인터페이스 표준, SD 인터페이스 표준, 메모리 스틱 인터페이스 표준, xD-픽처 카드 인터페이스 표준, IDE 인터페이스 표준, SATA 인터페이스 표준, SCSI 인터페이스 표준, SAS 인터페이스 표준, 및 PCIe 인터페이스 표준 중 하나 또는 그 초과와 호환가능하다. 다양한 실시예들에 따르면, 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DSA 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형(all-in-one) 디바이스, POS 디바이스, 캐시-레지스터, 미디어 플레이어, 텔레비전, 미디어 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 모두 또는 임의의 부분들이다. 일부 실시예들에서, (SAS/SATA 브리지와 같은) 인터페이싱 호스트는 컴퓨팅 호스트 및/또는 컴퓨팅 호스트에 대한 브리지로서 동작한다.
다양한 실시예들에서, SSD 제어기는 하나 또는 그 초과의 프로세서들을 포함한다. 프로세서들은 SSD 제어기의 동작을 제어 및/또는 수행하기 위해 펌웨어를 실행한다. SSD 제어기는 커맨드들 및/또는 상태 뿐만 아니라 데이터를 전송 및 수신하기 위해 컴퓨팅 호스트와 통신한다. 컴퓨팅 호스트는 운영 시스템, 드라이버, 및 애플리케이션 중 하나 또는 그 초과를 실행한다. 컴퓨팅 호스트에 의한 SSD 제어기와의 통신은 옵션으로 및/또는 선택적으로 드라이버 및/또는 애플리케이션을 통한다. 제 1 예에서, SSD 제어기로의 모든 통신은 드라이버를 통하고, 애플리케이션은 드라이버가 SSD 제어기에 대한 특정한 커맨드로 트랜슬레이션하는 상위 레벨 커맨드들을 드라이버에 제공한다. 제 2 예에서, 드라이버는 바이패스 모드를 구현하고, 애플리케이션은 드라이버를 통해 특정한 커맨드들을 SSD 제어기에 전송하도록 인에이블된다. 제 3 예에서, PCIe SSD 제어기는 하나 또는 그 초과의 가상 함수(VF)들을 지원하고, 이는 구성되면, 애플리케이션이 드라이버를 바이패스하여 SSD 제어기와 직접 통신하게 할 수 있다.
다양한 실시예들에 따르면, 일부 SSD들은 폼-팩터들, 전기적 인터페이스들, 및/또는 HDD들, CD 드라이브들, 및 DVD 드라이브들과 같은 자기 및/또는 광 비휘발성 저장부에 의해 사용된 프로토콜들과 호환가능하다. 다양한 실시예들에서, SSD들은 제로 또는 그 초과의 패리티 코드들, 제로 또는 그 초과의 RS 코드들, 제로 또는 그 초과의 BCH 코드들, 제로 또는 그 초과의 비터비 또는 다른 트렐리스 코드들, 및 제로 또는 그 초과의 LDPC 코드들의 다양한 조합을 사용한다.
예시적인 실시예들
결론에서, "EC"들(예시적인 조합들)로서 명백하게 열거되는 적어도 일부를 포함하는 예시적인 실시예들의 집합이 따르는 상세한 설명에 대한 도입은 여기에 설명한 개념들에 따른 다양한 실시예 타입들의 추가의 설명을 제공하고, 이들 예들은 상호 배타적이고, 포괄적이거나, 제한적인 것으로 의미되지 않고, 본 발명은 이들 예시적인 실시예들에 제한되는 것이 아니라, 오히려 이슈된 청구항들의 범위내의 모든 가능한 변형물들 및 변동물들을 포함한다.
EC1) 시스템으로서,
n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하기 위한 수단;
개별 대응하는 영역들에 k개의 리던던트 데이터 부분들 각각 및 n-k개의 유용한 데이터 부분들 각각을 저장하기 위한 수단으로서, 대응하는 영역들 각각은 n개의 물리적 디바이스들 중 각각의 하나에 있는, 저장하기 위한 수단; 및
대응하는 영역들 중 하나가 더 이상 이용가능하지 않도록 되는 장애에 후속하여, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하기 위한 수단을 포함하고,
j <= k인, 시스템.
EC2) EC1의 시스템에 있어서, n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하기 위한 수단은 제 1 데이터 보호 모드에서 동작가능하고, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하기 위한 수단은 제 2 데이터 보호 모드에서 동작가능하며, 시스템은 장애에 응답하여 제 1 데이터 보호 모드에서의 동작으로부터 제 2 데이터 보호 모드에서의 동작으로 스위칭하기 위한 수단을 더 포함하는, 시스템.
EC3) EC1의 시스템에 있어서, j==k일 때, 유용한 데이터 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 시스템.
EC4) EC3의 시스템에 있어서, 보호의 정도는 대응하는 영역들 중 j개까지의 장애들에 대한 보호인, 시스템.
EC5) EC1의 시스템에 있어서, j==k-1이고, j>=1일 때, 유용한 데이터 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 유용한 데이터 부분들이 보호되는, 시스템.
EC6) EC5의 시스템에 있어서, 감소된 보호의 정도는 대응하는 영역들 중 j-1개까지의 장애들에 대한 보호인, 시스템.
EC7) EC1의 시스템에 있어서,
n개의 물리적 디바이스들 각각은 복수의 대응하는 영역들을 포함하고, 시스템은 대응하는 영역들의 복수의 세트들 각각에서, 유용한 데이터 서브세트 및 그 유용한 데이터 서브세트를 보호하는 리던던트 데이터 서브세트를 포함하는 데이터의 각각의 세트를 저장하기 위한 수단을 더 포함하고, 리던던트 데이터 서브세트는 유용한 데이터 서브세트로부터 n개의 물리적 디바이스들 중 개별 디바이스들에 저장되고,
대응하는 영역들의 세트들 각각은 n개의 물리적 디바이스들 각각의 하나 보다 많지 않은 대응하는 영역을 포함하고, 저장하기 위한 수단은 n개의 물리적 디바이스들 중 n개 이하의 상이한 세트에 옵션으로 저장되는 데이터의 각각의 세트들 각각에 따르는, 시스템.
EC8) EC7의 시스템에 있어서, 장애 이전에, 데이터의 세트들 중 특정한 하나의 유용한 데이터 서브세트는 n-k개의 유용한 데이터 부분들을 포함하고, 데이터의 특정한 세트의 리던던트 데이터 서브세트는 k개의 리던던트 데이터 부분들을 포함하는, 시스템.
EC9) EC7의 시스템에 있어서, 저장하기 위한 수단은 데이터의 세트들 중 제 1 세트의 유용한 데이터 서브세트의 부분을 저장하기 위해 사용된 n개의 물리적 디바이스들 중 특정한 디바이스에서 대응하는 영역들 중 제 1 영역에 따르고, 추가로, 데이터의 세트들 중 제 2 세트의 리던던트 데이터 서브세트의 일부 또는 모두를 저장하기 위해 사용된 특정한 물리적 디바이스에서 대응하는 영역들 중 제 2 영역에 따르는, 시스템.
EC10) EC7의 시스템에 있어서, 대응하는 영역들 중 제 1 대응하는 영역에서의 저장량은 대응하는 영역들 중 제 2 대응하는 영역에서의 저장량과는 상이한, 시스템.
EC11) EC10의 시스템에 있어서, 제 1 대응하는 영역 및 제 2 대응하는 영역은 n개의 물리적 디바이스들 중 동일한 디바이스에 있는, 시스템.
EC12) 시스템으로서,
메모리의 n개의 각각의 비중복 영역들에 n개의 정보 부분들을 저장하기 위한 수단을 포함하는 제 1 상위 레벨 리던던시 모드에서 동작하기 위한 수단;
메모리의 n-1개의 각각의 비중복 영역들에 n-1개의 정보 부분들을 저장하기 위한 수단을 포함하는 제 2 상위 레벨 리던던시 모드에서 동작하기 위한 수단;
n개의 각각의 비중복 영역들 중 결함 영역의 장애를 검출하기 위한 수단; 및
장애에 응답하여, 제 1 상위 레벨 리던던시 모드에서 동작하기 위한 수단을 통한 동작으로부터 제 2 상위 레벨 리던던시 모드에서 동작하기 위한 수단을 통한 동작으로 동적으로 천이하기 위한 수단을 포함하고, n개의 각각의 비중복 영역들 중 n-1개는 n개의 각각의 비중복 영역들 중 결함 영역을 배제한 n개의 각각의 비중복 영역들이고,
n개의 정보 부분들 각각은 각각의 n-k개의 데이터 정보 부분들 및 각각의 n-k개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 k개의 리던던트 정보 부분들을 포함하고,
n-1개의 정보 부분들 각각은 각각의 n-1-j개의 데이터 정보 부분들 및 각각의 n-1-j개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 j개의 리던던트 정보 부분들을 포함하고,
j <= k이며,
n개의 각각의 비중복 영역들 각각은 메모리의 n개의 물리적 디바이스들 중 각각의 물리적 디바이스들에 있는, 시스템.
EC13) EC12의 시스템에 있어서, j==k일 때, 데이터 정보 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 시스템.
EC14) EC13의 시스템에 있어서, 보호의 정도는 n개의 각각의 비중복 영역들 중 j개까지의 장애들에 대한 보호인, 시스템.
EC15) EC12의 시스템에 있어서, j==k-1이고, j>=1일 때, 데이터 정보 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 데이터 정보 부분들이 보호되는, 시스템.
EC16) EC15의 시스템에 있어서, 감소된 보호의 정도는 n개의 각각의 비중복 영역들 중 j-1개까지의 장애들에 대한 보호인, 시스템.
EC17) EC1 또는 EC12의 시스템에 있어서, 저장하기 위한 수단 중 적어도 하나가 컴퓨팅 호스트로부터의 기록 요청들에 응답하는, 시스템.
EC18) EC1 또는 EC12의 시스템에 있어서, 저장하기 위한 수단 중 적어도 하나가 플래시 메모리 인터페이스를 동작시키는 수단을 포함하는, 시스템.
EC19) EC1 또는 EC12의 시스템에 있어서, n개의 물리적 디바이스들 중 적어도 하나가 하나 또는 그 초과의 플래시 메모리들을 포함하는, 시스템.
EC20) 시스템으로서,
컴퓨팅 호스트로부터의 판독 및/또는 기록 요청들에 응답하여 현재의 상위 레벨 리던던시 모드에 따라 하나 또는 그 초과의 플래시 메모리를 관리하기 위한 수단; 및
플래시 메모리들 중 하나 또는 그 초과의 하나 또는 그 초과의 부분들의 장애의 검출에 응답하여 현재의 상위 레벨 리던던시 모드를 동적으로 천이하기 위한 수단을 포함하는, 시스템.
EC21) EC20의 시스템에 있어서, 동적으로 천이하기 위한 수단은 자유 공간을 감소시키는 수단을 포함하는, 시스템.
EC22) EC20의 시스템에 있어서, 동적으로 천이하기 위한 수단은 타겟 상위 레벨 리던던시 모드에 따라 데이터 저장부를 재배열하기 위한 수단을 포함하는, 시스템.
EC23) EC20의 시스템에 있어서, 동적으로 천이하기 위한 수단은 타겟 상위 레벨 리던던시 모드에 따라 수정된 상위 레벨 리던던시 정보를 결정 및 저장하기 위한 수단을 포함하는, 시스템.
EC24) EC20의 시스템에 있어서, 현재의 상위 레벨 리던던시 모드는 제 1 상위 레벨 리던던시 모드이고, 현재의 상위 레벨 리던던시 모드를 동적으로 천이하기 위한 수단은 제 1 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 2 상위 레벨 리던던시 모드로 천이하기 위한 수단 및 제 2 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 3 상위 레벨 리던던시 모드로 천이하기 위한 수단을 포함하는, 시스템.
EC25) EC24의 시스템에 있어서, 제 2 장애는 제 1 장애에 후속하고, 더 적은 자유 공간이 제 2 상위 레벨 리던던시 모드에서 모다 제 3 상위 레벨 리던던시 모드에서 이용가능한, 시스템.
EC26) EC17 또는 EC20의 시스템에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하기 위한 수단을 더 포함하는, 시스템.
EC27) EC26의 시스템에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하기 위한 수단은 저장 인터페이스 표준과 호환가능한, 시스템.
EC28) EC20의 시스템에 있어서, 관리하기 위한 수단을 플래시 메모리들과 인터페이싱하기 위한 수단을 더 포함하는, 시스템.
EC29) EC28의 시스템에 있어서, 관리하기 위한 수단을 플래시 메모리들과 인터페이싱하기 위한 수단은 플래시 메모리 인터페이스를 동작시키는 수단을 포함하는, 시스템.
EC30) EC20의 시스템에 있어서,
요청들을 컴퓨팅 호스트와 인터페이싱하기 위한 수단; 및
관리를 플래시 메모리들과 인터페이싱하기 위한 수단을 더 포함하는, 시스템.
EC31) EC27의 시스템에 있어서, 시스템은 단일 집적 회로(IC)에서 구현되는, 시스템.
EC32) EC27의 시스템에 있어서, 시스템은 고체 상태 디스크(SSD)에서 구현되는, 시스템.
EC 33) EC17 또는 EC 20의 시스템에 있어서, 판독 및/또는 기록 요청들 중 적어도 일부를 생성하기 위해 컴퓨팅 호스트를 동작시키는 수단을 더 포함하는, 시스템.
EC34) EC19 또는 EC20의 시스템에 있어서, 플래시 메모리들 중 적어도 하나를 동작시키는 수단을 더 포함하는, 시스템.
EC35) 방법으로서,
n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 단계;
개별 대응하는 영역들에 k개의 리던던트 데이터 부분들 각각 및 n-k개의 유용한 데이터 부분들 각각을 저장하는 단계로서, 대응하는 영역들 각각은 n개의 물리적 디바이스들 중 각각의 하나에 있는, 저장하는 단계; 및
대응하는 영역들 중 하나가 더 이상 이용가능하지 않도록 장애에 후속하여, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 단계를 포함하고, j <=k 인, 방법.
EC36) EC35의 방법에 있어서, n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 단계는 제 1 데이터 보호 모드이고, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 단계는 제 2 데이터 보호 모드이며, 방법은 장애에 응답하여 제 1 데이터 보호 모드로부터 제 2 데이터 보호 모드로 스위칭하는 단계를 더 포함하는, 방법.
EC37) EC35의 방법에 있어서, j==k일 때, 유용한 데이터 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 방법.
EC38) EC37의 방법에 있어서, 보호의 정도는 대응하는 영역들 중 j개까지의 장애들에 대한 보호인, 방법.
EC39) EC35의 방법에 있어서, j==k-1이고, j>=1일 때, 유용한 데이터 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 유용한 데이터 부분들이 보호되는, 방법.
EC40) EC39의 방법에 있어서, 감소된 보호의 정도는 대응하는 영역들 중 j-1개까지의 장애들에 대한 보호인, 방법.
EC41) EC35의 방법에 있어서,
n개의 물리적 디바이스들 각각은 복수의 대응하는 영역들을 포함하고,
방법은 대응하는 영역들의 복수의 세트들 각각에서, 유용한 데이터 서브세트 및 그 유용한 데이터 서브세트를 보호하는 리던던트 데이터 서브세트를 포함하는 데이터의 각각의 세트를 저장하는 단계를 더 포함하고, 리던던트 데이터 서브세트는 유용한 데이터 서브세트로부터 n개의 물리적 디바이스들 중 개별 디바이스들에 저장되고,
대응하는 영역들의 세트들 각각은 n개의 물리적 디바이스들 각각의 하나 보다 많지 않은 대응하는 영역을 포함하고, 저장하는 단계는 n개의 물리적 디바이스들 중 n개 이하의 상이한 세트에 옵션으로 저장되는 데이터의 각각의 세트들 각각에 따르는, 방법.
EC42) EC41의 방법에 있어서, 장애 이전에, 데이터의 세트들 중 특정한 하나의 유용한 데이터 서브세트는 n-k개의 유용한 데이터 부분들을 포함하고, 데이터의 특정한 세트의 리던던트 데이터 서브세트는 k개의 리던던트 데이터 부분들을 포함하는, 방법.
EC43) EC41의 방법에 있어서, 저장하는 단계는 데이터의 세트들 중 제 1 세트의 유용한 데이터 서브세트의 부분을 저장하기 위해 사용된 n개의 물리적 디바이스들 중 특정한 디바이스에서 대응하는 영역들 중 제 1 영역에 따르고, 데이터의 세트들 중 제 2 세트의 리던던트 데이터 서브세트의 일부 또는 모두를 저장하기 위해 사용된 특정한 물리적 디바이스에서 대응하는 영역들 중 제 2 영역에 더 따르는, 방법.
EC44) EC41의 방법에 있어서, 대응하는 영역들 중 제 1 대응하는 영역에서의 저장량은 대응하는 영역들 중 제 2 대응하는 영역에서의 저장량과는 상이한, 방법.
EC45) EC44의 방법에 있어서, 제 1 대응하는 영역 및 제 2 대응하는 영역은 n개의 물리적 디바이스들 중 동일한 디바이스에 있는, 방법.
EC46) 방법으로서,
메모리의 n개의 각각의 비중복 영역들에 n개의 정보 부분들을 저장하는 단계를 포함하는 제 1 상위 레벨 리던던시 모드에서 동작하는 단계;
n개의 각각의 비중복 영역들 중 결함 영역의 장애를 검출하는 단계; 및
장애에 응답하여, n개의 각각의 비중복 영역들 중 n-1개에 n-1개의 정보 부분들을 저장하는 단계를 포함하는 제 1 상위 레벨 리던던시 모드에서의 동작으로부터 제 2 상위 레벨 리던던시 모드에서의 동작으로 동적으로 천이하는 단계를 포함하고, n개의 각각의 비중복 영역들 중 n-1개는 n개의 각각의 비중복 영역들 중 결함 영역을 배제한 n개의 각각의 비중복 영역들이고,
n개의 정보 부분들 각각은 각각의 n-k개의 데이터 정보 부분들 및 각각의 n-k개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 k개의 리던던트 정보 부분들을 포함하고,
n-1개의 정보 부분들 각각은 각각의 n-1-j개의 데이터 정보 부분들 및 각각의 n-1-j개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 j개의 리던던트 정보 부분들을 포함하고,
j <= k이며,
n개의 각각의 비중복 영역들 각각은 메모리의 n개의 물리적 디바이스들 중 각각의 물리적 디바이스들에 있는, 방법.
EC47) EC46의 방법에 있어서, j==k일 때, 데이터 정보 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 방법.
EC48) EC47의 방법에 있어서, 보호의 정도는 n개의 각각의 비중복 영역들 중 j-1개까지의 장애들에 대한 보호인, 방법.
EC49) EC46의 방법에 있어서, j==k-1이고, j>=1일 때, 데이터 정보 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 데이터 정보 부분들이 보호되는, 방법.
EC50) EC49의 방법에 있어서, 감소된 보호의 정도는 n개의 각각의 비중복 영역들 중 j-1개까지의 장애들에 대한 보호인, 방법.
EC51) EC35 또는 EC46의 방법에 있어서, 저장하는 동작들 중 적어도 하나의 적어도 일부가 컴퓨팅 호스트로부터의 기록 요청들에 응답하는, 방법.
EC52) EC35 또는 EC46의 방법에 있어서, 저장하는 동작들 중 적어도 하나가 플래시 메모리 인터페이스를 동작시키는 단계를 포함하는, 방법.
EC53) EC35 또는 EC46의 방법에 있어서, n개의 물리적 디바이스들 중 적어도 하나가 하나 또는 그 초과의 플래시 메모리들을 포함하는, 방법.
EC54) 방법으로서,
컴퓨팅 호스트로부터의 판독 및/또는 기록 요청들에 응답하여 현재의 상위 레벨 리던던시 모드에 따라 하나 또는 그 초과의 플래시 메모리를 관리하는 단계; 및
플래시 메모리들 중 하나 또는 그 초과의 하나 또는 그 초과의 부분들의 장애의 검출에 응답하여 현재의 상위 레벨 리던던시 모드를 동적으로 천이하는 단계를 포함하는, 방법.
EC55) EC54의 방법에 있어서, 동적으로 천이하는 단계는 자유 공간을 감소시키는 단계를 포함하는, 방법.
EC56) EC54의 방법에 있어서, 동적으로 천이하는 단계는 타겟 상위 레벨 리던던시 모드에 따라 데이터 저장부를 재배열하는 단계를 포함하는, 방법.
EC57) EC54의 방법에 있어서, 동적으로 천이하는 단계는 타겟 상위 레벨 리던던시 모드에 따라 수정된 상위 레벨 리던던시 정보를 결정 및 저장하는 단계를 포함하는, 방법.
EC58) EC54의 방법에 있어서, 현재의 상위 레벨 리던던시 모드는 제 1 상위 레벨 리던던시 모드이고, 현재의 상위 레벨 리던던시 모드를 동적으로 천이하는 단계는 제 1 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 2 상위 레벨 리던던시 모드로 천이하고 제 2 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 3 상위 레벨 리던던시 모드로 천이하는, 방법.
EC59) EC58의 방법에 있어서, 제 2 장애는 제 1 장애에 후속하고, 더 적은 자유 공간이 제 2 상위 레벨 리던던시 모드에서 보다 제 3 상위 레벨 리던던시 모드에서 이용가능한, 방법.
EC60) EC51 또는 EC54의 방법에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 단계를 더 포함하는, 방법.
EC61) EC60의 방법에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 단계는 저장 인터페이스 표준과 호환가능한, 방법.
EC62) EC54의 방법에 있어서, 관리를 플래시 메모리들과 인터페이싱하는 단계를 더 포함하는, 방법.
EC63) EC62의 방법에 있어서, 관리를 플래시 메모리들과 인터페이싱하는 단계는 플래시 메모리 인터페이스를 동작시키는 단계를 포함하는, 방법.
EC64) EC54의 방법에 있어서,
요청들을 컴퓨팅 호스트와 인터페이싱하는 단계; 및
관리를 플래시 메모리들과 인터페이싱하는 단계를 더 포함하는, 방법.
EC65) EC61의 방법에 있어서, 방법은 단일 집적 회로(IC)에서 구현되는, 방법.
EC66) EC61의 방법에 있어서, 방법은 고체 상태 디스크(SSD)에서 구현되는, 방법.
EC67) EC51 또는 EC54의 방법에 있어서, 판독 및/또는 기록 요청들 중 적어도 일부를 생성하기 위해 컴퓨팅 호스트를 동작시키는 단계를 더 포함하는, 방법.
EC68) EC53 또는 EC54의 방법에 있어서, 플래시 메모리들 중 적어도 하나를 동작시키는 단계를 더 포함하는, 방법.
EC69) 시스템으로서,
컴퓨팅 호스트에 인터페이싱하도록 인에이블된 호스트 인터페이스;
적어도 n개의 물리적 디바이스들에 인터페이싱하도록 인에이블된 메모리; 및
n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하고, 호스트 인터페이스를 통해 컴퓨팅 호스트로부터 수신된 하나 또는 그 초과의 기록 커맨드들에 응답하여, 각각이 n개의 물리적 디바이스들 중 각각의 하나에 있는 개별 대응하는 영역들에 k개의 리던던트 데이터 부분들 각각 및 n-k개의 유용한 데이터 부분들 각각을 저장하고,
대응하는 영역들 중 하나가 더 이상 이용가능하지 않도록 장애에 후속하여, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하도록 인에이블된 제어기를 포함하고,
j <= k인, 시스템.
EC70) EC69의 시스템에 있어서, k개의 리던던트 데이터 부분들 중 임의의 하나 또는 그 초과 중 모두 또는 임의의 부분들을 계산하도록 인에이블된 하드웨어 로직 회로를 더 포함하는, 시스템.
EC71) EC69의 시스템에 있어서, n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 것은 제 1 데이터 보호 모드에서 동작하는 제어기에 따르고, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 것은 제 2 데이터 보호 모드에서 동작하는 제어기에 따르고, 제어기는 장애에 응답하여 제 1 데이터 보호 모드에서의 동작으로부터 제 2 데이터 보호 모드에서의 동작으로 스위칭하도록 더 인에이블되는, 시스템.
EC72) EC69의 시스템에 있어서, j==k일 때, 유용한 데이터 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 시스템.
EC73) EC72의 시스템에 있어서, 보호의 정도는 대응하는 영역들 중 j개까지의 장애들에 대한 보호인, 시스템.
EC74) EC69의 시스템으로서, j==k-1이고, j>=1일 때, 유용한 데이터 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 유용한 데이터 부분들이 보호되는, 시스템.
EC75) EC74의 시스템으로서, 감소된 보호의 정도는 대응하는 영역들 중 j-1개까지의 장애들에 대한 보호인, 시스템.
EC76) EC69의 시스템으로서,
n개의 물리적 디바이스들 각각은 복수의 대응하는 영역들을 포함하고,
제어기는 대응하는 영역들의 복수의 세트들 각각에서, 유용한 데이터 서브세트 및 그 유용한 데이터 서브세트를 보호하는 리던던트 데이터 서브세트를 포함하는 데이터의 각각의 세트를 저장하도록 더 인에이블되고, 리던던트 데이터 서브세트는 유용한 데이터 서브세트로부터 n개의 물리적 디바이스들 중 개별 디바이스들에 저장되고,
대응하는 영역들의 세트들 각각은 n개의 물리적 디바이스들 각각의 하나 보다 많지 않은 대응하는 영역을 포함하고, 저장하는 것은 n개의 물리적 디바이스들 중 n개 이하의 상이한 세트에 옵션으로 저장되는 데이터의 각각의 세트들 각각에 따르는, 시스템.
EC77) EC76의 시스템으로서, 장애 이전에, 데이터의 세트들 중 특정한 하나의 유용한 데이터 서브세트는 n-k개의 유용한 데이터 부분들을 포함하고, 데이터의 특정한 세트의 리던던트 데이터 서브세트는 k개의 리던던트 데이터 부분들을 포함하는, 시스템.
EC78) EC76의 시스템에 있어서, 저장하는 것은 데이터의 세트들 중 제 1 세트의 유용한 데이터 서브세트의 부분을 저장하기 위해 사용된 n개의 물리적 디바이스들 중 특정한 디바이스에서 대응하는 영역들 중 제 1 영역에 따르고, 데이터의 세트들 중 제 2 세트의 리던던트 데이터 서브세트의 일부 또는 모두를 저장하기 위해 사용된 특정한 물리적 디바이스에서 대응하는 영역들 중 제 2 영역에 더 따르는, 시스템.
EC79) EC76의 시스템에 있어서, 대응하는 영역들 중 제 1 대응하는 영역에서의 저장량은 대응하는 영역들 중 제 2 대응하는 영역에서의 저장량과는 상이한, 시스템.
EC80) EC79의 시스템에 있어서, 제 1 대응하는 영역 및 제 2 대응하는 영역은 n개의 물리적 디바이스들 중 동일한 디바이스에 있는, 시스템.
EC81) 시스템으로서,
컴퓨팅 호스트에 인터페이싱하도록 인에이블된 호스트 인터페이스;
적어도 n개의 물리적 디바이스들에 인터페이싱하도록 인에이블된 메모리; 및
메모리의 n개의 각각의 비중복 영역들에 n개의 정보 부분들을 저장하는 것에 따라 제 1 상위 레벨 리던던시 모드에서 동작하고, n개의 각각의 비중복 영역들 중 결함 영역의 장애를 검출하고, 장애에 응답하여, 제 1 상위 레벨 리던던시 모드에서의 동작으로부터 제 2 상위 레벨 리던던시 모드에서의 동작으로 동적으로 천이하도록 인에이블된 제어기를 포함하고, 제 2 상위 레벨 리던던시 모드는 n개의 각각의 비중복 영역들 중 n-1개에 n-1개의 정보 부분들을 저장하는 것에 따르고, n개의 각각의 비중복 영역들 중 n-1개는 n개의 각각의 비중복 영역들 중 결함 영역을 배제한 n개의 각각의 비중복 영역들이고,
n개의 정보 부분들 각각은 각각의 n-k개의 데이터 정보 부분들 및 각각의 n-k개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 k개의 리던던트 정보 부분들을 포함하고,
n-1개의 정보 부분들 각각은 각각의 n-1-j개의 데이터 정보 부분들 및 각각의 n-1-j개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 j개의 리던던트 정보 부분들을 포함하고,
j <= k이며,
n개의 각각의 비중복 영역들 각각은 메모리의 n개의 물리적 디바이스들 중 각각의 물리적 디바이스들에 있는, 시스템.
EC82) EC81의 시스템에 있어서, k개의 리던던트 정보 부분들 중 임의의 하나 또는 그 초과 중 모두 또는 임의의 부분들을 계산하도록 인에이블된 하드웨어 로직 회로를 더 포함하는, 시스템.
EC83) EC81의 시스템에 있어서, j==k일 때, 데이터 정보 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 시스템.
EC84) EC83의 시스템에 있어서, 보호의 정도는 n개의 각각의 비중복 영역들 중 j개까지의 장애들에 대한 보호인, 시스템.
EC85) EC81의 시스템에 있어서, j==k-1이고, j>=1일 때, 데이터 정보 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 데이터 정보 부분들이 보호되는, 시스템.
EC86) EC85의 시스템에 있어서, 감소된 보호의 정도는 n개의 각각의 비중복 영역들 중 j-1개까지의 장애들에 대한 보호인, 시스템.
EC87) EC69 또는 EC81의 시스템에 있어서, 저장하는 동작들 중 적어도 하나의 적어도 일부가 컴퓨팅 호스트로부터의 기록 요청들에 응답하는, 시스템.
EC88) EC69 또는 EC81의 시스템에 있어서, 메모리 인터페이스는 플래시 메모리 인터페이스를 포함하는, 시스템.
EC89) EC69 또는 EC81의 시스템에 있어서, n개의 물리적 디바이스들 중 적어도 하나가 하나 또는 그 초과의 플래시 메모리들을 포함하는, 시스템.
EC90) 시스템으로서,
컴퓨팅 호스트에 인터페이싱하도록 인에이블된 호스트 인터페이스;
컴퓨팅 호스트로부터의 판독 및/또는 기록 요청들에 응답하여 현재의 상위 레벨 리던던시 모드에 따라 하나 또는 그 초과의 플래시 메모리들을 관리하며, 플래시 메모리들 중 하나 또는 그 초과의 하나 또는 그 초과의 부분들의 장애의 검출에 응답하여 현재의 상위 레벨 리던던시 모드를 동적으로 천이시키도록 인에이블된 제어기를 포함하는 시스템.
EC91) EC90의 시스템에 있어서, 현재의 상위 레벨 리던던시 모드에서 사용가능한 리던던시 정보를 계산하도록 인에이블된 하드웨어 로직 회로를 더 포함하는, 시스템.
EC92) EC90의 시스템에 있어서, 제어기는 동적 천이에 따라 자유 공간을 감소시키도록 더 인에이블되는, 시스템.
EC93) EC90의 시스템에 있어서, 제어기는 타겟 상위 레벨 리던던시 모드 및 동적 천이에 따라 데이터 저장부를 재배열하도록 더 인에이블되는, 시스템.
EC94) EC90의 시스템에 있어서, 제어기는 타겟 상위 레벨 리던던시 모드 및 동적 천이에 따라 수정된 상위 레벨 리던던시 정보를 결정 및 저장하도록 더 인에이블되는, 시스템.
EC95) EC90의 시스템에 있어서, 현재의 상위 레벨 리던던시 모드는 제 1 상위 레벨 리던던시 모드이고, 제어기는 제 1 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 2 상위 레벨 리던던시 모드로 천이하고 제 2 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 3 상위 레벨 리던던시 모드로 천이하도록 더 인에이블되는, 시스템.
EC96) EC95의 시스템에 있어서, 제 2 장애는 제 1 장애에 후속하고, 더 적은 자유 공간이 제 2 상위 레벨 리던던시 모드에서 보다 제 3 상위 레벨 리던던시 모드에서 이용가능한, 시스템.
EC97) EC90의 시스템에 있어서, 호스트 인터페이스는 저장 인터페이스 표준과 호환가능한, 시스템.
EC98) EC90의 시스템에 있어서, 플래시 메모리들과 인터페이싱하도록 인에이블된 플래시 메모리 인터페이스를 더 포함하는, 시스템.
EC99) EC88 또는 EC97의 시스템에 있어서, 시스템은 단일 집적 회로(IC)에서 구현되는, 시스템.
EC100) EC88 또는 EC97의 시스템에 있어서, 시스템은 고체 상태 디스크(SSD)에서 구현되는, 시스템.
EC101) EC87 또는 EC90의 시스템에 있어서, 컴퓨팅 호스트를 더 포함하는, 시스템.
EC102) EC89 또는 EC90의 시스템에 있어서, 플래시 메모리들 중 적어도 하나를 더 포함하는, 시스템.
EC103) 프로세싱 소자에 의해 실행될 때, 프로세싱 소자로 하여금, 하기의 동작들을 수행하게 하는 명령들의 세트가 저장된 유형의 컴퓨터 판독가능 매체로서, 상기 동작들은,
n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 동작;
개별 대응하는 영역들에 k개의 리던던트 데이터 부분들 각각 및 n-k개의 데이터 부분들 각각을 저장하는 동작으로서, 대응하는 영역들 각각은 n개의 물리적 디바이스들 중 각각의 하나에 있는, 저장하는 동작; 및
대응하는 영역들 중 하나가 더 이상 이용가능하지 않도록 장애에 후속하여, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 동작을 포함하고, j <= k인, 유형의 컴퓨터 판독가능 매체.
EC104) EC103의 유형의 컴퓨터 판독가능 매체에 있어서, n-k개의 유용한 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 동작은 제 1 데이터 보호 모드에 따르고, n-1-j개의 유용한 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 동작은 제 2 데이터 보호 모드에 따르며, 상기 동작들은 장애에 응답하여 제 1 데이터 보호 모드로부터 제 2 데이터 보호 모드로 스위칭하는 동작을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
EC105) EC103의 유형의 컴퓨터 판독가능 매체에 있어서, j==k일 때, 유용한 데이터 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 유형의 컴퓨터 판독가능 매체.
EC106) EC105의 유형의 컴퓨터 판독가능 매체에 있어서, 보호의 정도는 대응하는 영역들 중 j개까지의 장애들에 대한 보호인, 유형의 컴퓨터 판독가능 매체.
EC107) EC103의 유형의 컴퓨터 판독가능 매체에 있어서, j==k-1이고, j>=1일 때, 유용한 데이터 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 유용한 데이터 부분들이 보호되는, 유형의 컴퓨터 판독가능 매체.
EC108) EC107의 유형의 컴퓨터 판독가능 매체에 있어서, 감소된 보호의 정도는 대응하는 영역들 중 j-1개까지의 장애들에 대한 보호인, 유형의 컴퓨터 판독가능 매체.
EC109) EC103의 유형의 컴퓨터 판독가능 매체에 있어서,
n개의 물리적 디바이스들 각각은 복수의 대응하는 영역들을 포함하고,
동작들은 대응하는 영역들의 복수의 세트들 각각에서, 유용한 데이터 서브세트 및 그 유용한 데이터 서브세트를 보호하는 리던던트 데이터 서브세트를 포함하는 데이터의 각각의 세트를 저장하는 동작을 더 포함하고, 리던던트 데이터 서브세트는 유용한 데이터 서브세트로부터 n개의 물리적 디바이스들 중 개별 디바이스들에 저장되고,
대응하는 영역들의 세트들 각각은 n개의 물리적 디바이스들 각각의 하나 보다 많지 않은 대응하는 영역을 포함하고, 저장하는 단계는 n개의 물리적 디바이스들 중 n개 이하의 상이한 세트에 옵션으로 저장되는 데이터의 각각의 세트들 각각에 따르는, 유형의 컴퓨터 판독가능 매체.
EC110) EC109의 유형의 컴퓨터 판독가능 매체에 있어서, 장애 이전에, 데이터의 세트들 중 특정한 하나의 유용한 데이터 서브세트는 n-k개의 유용한 데이터 부분들을 포함하고, 데이터의 특정한 세트의 리던던트 데이터 서브세트는 k개의 리던던트 데이터 부분들을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC111) EC109의 유형의 컴퓨터 판독가능 매체에 있어서, 저장하는 동작은 데이터의 세트들 중 제 1 세트의 유용한 데이터 서브세트의 부분을 저장하기 위해 사용된 n개의 물리적 디바이스들 중 특정한 디바이스에서 대응하는 영역들 중 제 1 영역에 따르고, 데이터의 세트들 중 제 2 세트의 리던던트 데이터 서브세트의 일부 또는 모두를 저장하기 위해 사용된 특정한 물리적 디바이스에서 대응하는 영역들 중 제 2 영역에 더 따르는, 유형의 컴퓨터 판독가능 매체.
EC112) EC109의 유형의 컴퓨터 판독가능 매체에 있어서, 대응하는 영역들 중 제 1 대응하는 영역에서의 저장량은 대응하는 영역들 중 제 2 대응하는 영역에서의 저장량과는 상이한, 유형의 컴퓨터 판독가능 매체.
EC113) EC 112의 유형의 컴퓨터 판독가능 매체에 있어서, 제 1 대응하는 영역 및 제 2 대응하는 영역은 n개의 물리적 디바이스들 중 동일한 디바이스에 있는, 유형의 컴퓨터 판독가능 매체.
EC114) 프로세싱 소자에 의해 실행될 때, 프로세싱 소자로 하여금, 하기의 동작들을 수행하게 하는 명령들의 세트가 저장된 유형의 컴퓨터 판독가능 매체로서, 상기 동작들은,
메모리의 n개의 각각의 비중복 영역들에 n개의 정보 부분들을 저장하는 동작을 포함하는 제 1 상위 레벨 리던던시 모드에서 동작하는 동작;
n개의 각각의 비중복 영역들 중 결함 영역의 장애를 검출하는 동작; 및
장애에 응답하여, n개의 각각의 비중복 영역들 중 n-1개에 n-1개의 정보 부분들을 저장하는 동작을 포함하는 제 1 상위 레벨 리던던시 모드에서의 동작으로부터 제 2 상위 레벨 리던던시 모드에서의 동작으로 동적으로 천이하는 동작을 포함하고, n개의 각각의 비중복 영역들 중 n-1개는 n개의 각각의 비중복 영역들 중 결함 영역을 배제한 n개의 각각의 비중복 영역들이고,
n개의 정보 부분들 각각은 각각의 n-k개의 데이터 정보 부분들 및 각각의 n-k개의 데이터 정보 부분들을 보호하기 위해 계산된 각각의 k개의 리던던트 정보 부분들을 포함하고,
n-1개의 정보 부분들 각각은 각각의 n-1-j개의 데이터 정보 부분들 및 각각의 n-1-j개의 정보 부분들을 보호하기 위해 계산된 각각의 j개의 리던던트 정보 부분들을 포함하고,
j <= k이며,
n개의 각각의 비중복 영역들 각각은 메모리의 n개의 물리적 디바이스들 중 각각의 물리적 디바이스들에 있는, 유형의 컴퓨터 판독가능 매체.
EC1115) EC114의 유형의 컴퓨터 판독가능 매체에 있어서, j==k일 때, 데이터 정보 부분들의 총량이 감소되고, 보호의 정도가 최소한 보존되는, 유형의 컴퓨터 판독가능 매체.
EC116) EC115의 유형의 컴퓨터 판독가능 매체에 있어서, 보호의 정도는 n개의 각각의 비중복 영역들 중 j개까지의 장애들에 대한 보호인, 유형의 컴퓨터 판독가능 매체.
EC117) EC114의 유형의 컴퓨터 판독가능 매체에 있어서, j==k-1이고, j>=1일 때, 데이터 정보 부분들의 총량이 보존되고, 보호의 정도가 감소되며, 데이터 정보 부분들이 보호되는, 유형의 컴퓨터 판독가능 매체.
EC118) EC117의 유형의 컴퓨터 판독가능 매체에 있어서, 감소된 보호의 정도는 n개의 각각의 비중복 영역들 중 j-1개까지의 장애들에 대한 보호인, 유형의 컴퓨터 판독가능 매체.
EC119) EC103 또는 EC114의 유형의 컴퓨터 판독가능 매체에 있어서, 저장하는 동작들 중 적어도 하나의 적어도 일부가 컴퓨팅 호스트로부터의 기록 요청들에 응답하는, 유형의 컴퓨터 판독가능 매체.
EC120) EC103 또는 EC114의 유형의 컴퓨터 판독가능 매체에 있어서, 저장하는 동작들 중 적어도 하나가 플래시 메모리 인터페이스를 동작시키는 동작을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC121) EC103 또는 EC114의 유형의 컴퓨터 판독가능 매체에 있어서, n개의 물리적 디바이스들 중 적어도 하나가 하나 또는 그 초과의 플래시 메모리들을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC122) 프로세싱 소자에 의해 실행될 때, 프로세싱 소자로 하여금, 하기의 동작들을 수행하게 하는 명령들의 세트가 저장된 유형의 컴퓨터 판독가능 매체로서, 상기 동작들은,
컴퓨팅 호스트로부터의 판독 및/또는 기록 요청들에 응답하여 현재의 상위 레벨 리던던시 모드에 따라 하나 또는 그 초과의 플래시 메모리를 관리하는 동작; 및
플래시 메모리들 중 하나 또는 그 초과의 하나 또는 그 초과의 부분들의 장애의 검출에 응답하여 현재의 상위 레벨 리던던시 모드를 동적으로 천이하는 동작을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC123) EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 동적으로 천이하는 동작은 자유 공간을 감소시키는 동작을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC124) EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 동적으로 천이하는 동작은 타겟 상위 레벨 리던던시 모드에 따라 데이터 저장부를 재배열하는 동작을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC125) EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 동적으로 천이하는 동작은 타겟 상위 레벨 리던던시 모드에 따라 수정된 상위 레벨 리던던시 정보를 결정 및 저장하는 동작을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC126) EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 현재의 상위 레벨 리던던시 모드는 제 1 상위 레벨 리던던시 모드이고, 현재의 상위 레벨 리던던시 모드를 동적으로 천이하는 동작은 제 1 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 2 상위 레벨 리던던시 모드로 천이하고 제 2 장애에 응답하여 현재의 상위 레벨 리던던시 모드를 제 3 상위 레벨 리던던시 모드로 천이하는, 유형의 컴퓨터 판독가능 매체.
EC127) EC126의 유형의 컴퓨터 판독가능 매체에 있어서, 제 2 장애는 제 1 장애에 후속하고, 더 적은 자유 공간이 제 2 상위 레벨 리던던시 모드에서 보다 제 3 상위 레벨 리던던시 모드에서 이용가능한, 유형의 컴퓨터 판독가능 매체.
EC128) EC119 또는 EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 동작을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
EC129) EC128의 유형의 컴퓨터 판독가능 매체에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 동작은 저장 인터페이스 표준과 호환가능한, 유형의 컴퓨터 판독가능 매체.
EC130) EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 관리를 플래시 메모리들과 인터페이싱하는 동작을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
EC131) EC130의 유형의 컴퓨터 판독가능 매체에 있어서, 관리를 플래시 메모리들과 인터페이싱하는 동작은 플래시 메모리 인터페이스를 동작시키는 동작을 포함하는, 유형의 컴퓨터 판독가능 매체.
EC132) EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 요청들을 컴퓨팅 호스트와 인터페이싱하는 동작; 및
관리를 플래시 메모리들과 인터페이싱하는 동작을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
EC133) EC129의 유형의 컴퓨터 판독가능 매체에 있어서, 유형의 컴퓨터 판독가능 매체는 단일 집적 회로(IC)에서 구현되는, 유형의 컴퓨터 판독가능 매체.
EC134) EC129의 유형의 컴퓨터 판독가능 매체에 있어서, 유형의 컴퓨터 판독가능 매체는 고체 상태 디스크(SSD)에서 구현되는, 유형의 컴퓨터 판독가능 매체.
EC135) EC119 또는 EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 판독 및/또는 기록 요청들 중 적어도 일부를 생성하기 위해 컴퓨팅 호스트를 동작시키는 동작을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
EC136) EC121 또는 EC122의 유형의 컴퓨터 판독가능 매체에 있어서, 플래시 메모리들 중 적어도 하나를 동작시키는 동작을 더 포함하는, 유형의 컴퓨터 판독가능 매체.
EC137) 저장 인터페이스 표준을 갖는 임의의 상술한 EC들로서, 저장 인터페이스 표준은,
범용 직렬 버스(USB) 인터페이스 표준,
콤팩트 플래시(CF) 인터페이스 표준,
멀티미디어카드(MMC) 인터페이스 표준,
내장형 MMC(eMMC) 인터페이스 표준,
썬더볼트 인터페이스 표준,
UFS 인터페이스 표준,
보안 디지털(SD) 인터페이스 표준,
메모리 스틱 인터페이스 표준,
xD-픽처 카드 인터페이스 표준,
집적 드라이브 전자장치(IDE) 인터페이스 표준,
직렬 어드밴스드 기술 부착(SATA) 인터페이스 표준,
외부 SATA(eSATA) 인터페이스 표준,
소형 컴퓨터 시스템 인터페이스(SCSI) 인터페이스 표준,
직렬 부착 소형 컴퓨터 시스템 인터페이스(SAS) 인터페이스 표준,
섬유 채널 인터페이스 표준,
이더넷 인터페이스 표준, 및
주변 컴포넌트 상호접속 익스프레스(PCIe) 인터페이스 표준 중 하나 또는 그 초과를 포함하는, EC들.
EC138) 플래시 메모리 인터페이스를 갖는 임의의 상술한 EC들로서,
플래시 메모리 인터페이스는,
오픈 NAND 플래시 인터페이스(ONFI),
토글 모드 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
DDR2 동기 인터페이스,
동기 인터페이스, 및
비동기 인터페이스 중 하나 또는 그 초과와 호환가능한, EC들.
EC139) 컴퓨팅 호스트를 갖는 임의의 상술한 EC들로서,
컴퓨팅 호스트는,
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
저장 서버,
저장 부착 네트워크(SAN),
네트워크 부착 저장(NAS) 디바이스,
직접 부착 저장(DAS) 디바이스,
저장 기구,
개인 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
태블릿 디바이스 또는 컴퓨터,
울트라북 컴퓨터,
전자 판독 디바이스(e-리더),
휴대 보조 단말기(PDA),
네비게이션 시스템,
(핸드헬드) 글로벌 포지셔닝 시스템(GPS) 디바이스,
자동 제어 시스템,
자동 미디어 제어 시스템 또는 컴퓨터,
프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스,
판매 시점 정보 관리(POS) 디바이스,
캐시-레지스터,
미디어 플레이어,
텔레비전,
미디어 리코더,
디지털 비디오 리코더(DVR),
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 및
전자 게임 중 하나 또는 그 초과를 포함하는, EC들.
EC140) 적어도 하나의 플래시 메모리를 갖는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 중 적어도 일부는,
NAND 플래시 기술 저장 셀들, 및
NOR 플래시 기술 저장 셀들 중 하나 또는 그 초과를 포함하는, EC들.
EC141) 적어도 하나의 플래시 메모리를 갖는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 중 적어도 일부는,
단일 레벨 셀(SLC) 플래시 기술 저장 셀들, 및
멀티 레벨 셀(MLC) 플래시 기술 저장 셀들 중 하나 또는 그 초과를 포함하는, EC들.
EC142) 적어도 하나의 플래시 메모리를 갖는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 중 적어도 일부는,
폴리실리콘 기술 기반 전하 저장 셀들, 및
실리콘 질화물 기술 기반 전하 저장 셀들 중 하나 또는 그 초과를 포함하는, EC들.
EC143) 적어도 하나의 플래시 메모리를 갖는 임의의 상술한 EC들로서,
적어도 하나의 플래시 메모리 중 적어도 일부는,
2차원 기술 기반 플래시 메모리 기술, 및
3차원 기술 기반 플래시 메모리 기술 중 하나 또는 그 초과를 포함하는, EC들.
시스템
도 1a는 NVM들에 액세스하고 이를 제어하는 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리를 사용하는 고체 상태 디스크(SSD) 제어기를 포함하는 SSD의 실시예의 선택된 상세들을 예시한다. SSD 제어기는 NVM 소자들(예를 들어, 플래시 메모리들)을 통해 구현된 것과 같은 비휘발성 저장부를 관리하기 위한 것이다. SSD 제어기(100)는 하나 또는 그 초과의 외부 인터페이스(110)를 통해 호스트(미도시)에 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 외부 인터페이스들(110)은 SATA 인터페이스, SAS 인터페이스, PCIe 인터페이스, 섬유 채널 인터페이스, (10 기가비트 이더넷과 같은) 이더넷 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 주문형(custom) 인터페이스, 또는 저장부 및/또는 통신 및/또는 컴퓨팅 디바이스들을 상호접속하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다. 예를 들어, 일부 실시예들에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
SSD 제어기(100)는 하나 또는 그 초과의 플래시 디바이스(192)와 같은 하나 또는 그 초과의 저장 디바이스들을 포함하는 NVM(199)에 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통해 더 통신가능하게 커플링된다. 다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은 비동기 인터페이스, 동기 인터페이스, 단일 데이터 레이트(SDR) 인터페이스, 더블 데이터 레이트(DDR) 인터페이스, DRAM-호환가능 DDR 또는 DDR2 동기 인터페이스, ONFI 2.2 또는 ONFI 3.0 호환가능 인터페이스와 같은 ONFI 호환가능 인터페이스, 토글 모드 호환가능 플래시 인터페이스, 임의의 선행 인터페이스들의 비표준 버전, 주문형 인터페이스, 또는 저장 디바이스들에 접속하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다.
각 플래시 디바이스(192)는 일부 실시예들에서, 하나 또는 그 초과의 개별 플래시 다이(194)를 갖는다. 플래시 디바이스(192)의 특정한 하나의 타입에 따르면, 특정한 플래시 디바이스(192)에서의 복수의 플래시 다이(194)는 옵션으로 및/또는 선택적으로 병렬로 액세스가능하다. 플래시 디바이스(192)는 SSD 제어기(100)에 통신가능하게 커플링하도록 인에이블된 저장 디바이스의 일 타입을 단지 나타낸다. 다양한 실시예들에서, SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 폴리실리콘 또는 실리콘 질화물 기술 기반 전하 저장 셀들을 사용하는 플래시 메모리, 2차원 또는 3차원 기술 기반 플래시 메모리, 판독 전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자성 메모리, 위상 변화 메모리, 레이스트랙(racetrack) 메모리, 또는 임의의 다른 타입의 메모리 디바이스 또는 저장 매체와 같은 임의의 타입의 저장 디바이스가 사용가능하다.
다양한 실시예들에 따르면, 디바이스 인터페이스들(190)은 버스 당 하나 또는 그 초과의 플래시 디바이스(192)를 갖는 하나 또는 그 초과의 버스들, 버스 당 하나 또는 그 초과의 플래시 디바이스(192)를 갖는 버스들의 하나 또는 그 초과의 그룹들 - 그룹에서의 버스들은 일반적으로 병렬로 액세스됨-, 또는 디바이스 인터페이스들(190)상의 하나 또는 그 초과의 플래시 디바이스(192)의 임의의 다른 구성으로서 구성된다.
도 1a에 계속하여, SSD 제어기(100)는 호스트 인터페이스들(111), 데이터 프로세싱(121), 버퍼(131), 맵(141), 리사이클러(151), ECC(161), 디바이스 인터페이스 로직(191), 및 CPU(171)와 같은 하나 또는 그 초과의 모듈들을 갖는다. 도 1a에 예시된 특정한 모듈들 및 상호접속들은 단지 하나의 실시예를 나타내며, 예시되지 않은 추가의 모듈들 뿐만 아니라 모듈들 중 일부 또는 모두의 다수의 배열들 및 상호접속들이 구상된다. 제 1 예에서, 일부 실시예들에서, 이중-포팅(dual-porting)을 제공하기 위해 2개 또는 그 초과의 호스트 인터페이스들(111)이 존재한다. 제 2 예에서, 일부 실시예들에서, 데이터 프로세싱(121) 및/또는 ECC(161)는 버퍼(131)와 조합된다. 제 3 예에서, 일부 실시예들에서, 호스트 인터페이스들(111)은 버퍼(131)에 직접 커플링되고, 데이터 프로세싱(121)은 버퍼(131)에 저장된 데이터에 대해 옵션으로 및/또는 선택적으로 동작한다. 제 4 예에서, 일부 실시예들에서, 디바이스 인터페이스 로직(191)은 버퍼(131)에 직접 커플링되고, ECC(161)는 버퍼(131)에 저장된 데이터에 대해 옵션으로 및/또는 선택적으로 동작한다.
호스트 인터페이스들(111)은 외부 인터페이스들(110)을 통해 커맨드들 및/또는 데이터를 전송 및 수신하고, 일부 실시예들에서는, 태그 트랙킹(113)을 통해 개별 커맨드들의 진행을 트랙킹한다. 예를 들어, 커맨드들은 판독하기 위해 (LBA와 같은) 어드레스 및 (다수의 LBA 정량, 예를 들어, 섹터들과 같은) 데이터량을 특정하는 판독 커맨드를 포함하고, 이에 응답하여, SSD는 판독 상태 및/또는 판독 데이터를 제공한다. 다른 예에 있어서, 커맨드들은 기록하기 위해 (LBA와 같은) 어드레스 및 (다수의 LBA 정량, 예를 들어, 섹터들과 같은) 데이터량을 특정하는 기록 커맨드를 포함하고, 이에 응답하여, SSD는 판독 상태를 제공하고/하거나 기록 데이터를 요청하고 옵션으로 후속하여 기록 상태를 제공한다. 또 다른 예에 있어서, 커맨드들은 더 이상 할당될 필요가 없는 (하나 또는 그 초과의 LBA들과 같은) 하나 또는 그 초과의 어드레스들을 특정하는 할당해제 커맨드(예를 들어, 트림 커맨드)를 포함하고, 이에 응답하여, SSD는 맵을 그에 따라 변경하고 옵션으로 할당해제 상태를 제공한다. 일부 컨텍스트에서, ATA 호환가능 TRIM 커맨드는 예시적인 할당해제 커맨드이다. 또 다른 예에 있어서, 커맨드들은 수퍼 커패시터 테스트 커맨드 또는 데이터 경화 성공 문의를 포함하고, 이에 응답하여 SSD는 적절한 상태를 제공한다. 일부 실시예들에서, 호스트 인터페이스들(111)은 SATA 프로토콜과 호환가능하고, NCQ 커맨드들을 사용하여, 0 내지 31의 번호와 같이 표현된 고유 태그를 각각 갖는 32개의 펜딩 커맨드들까지 갖도록 인에이블된다. 일부 실시예들에서, 태그 트랙킹(113)은 외부 인터페이스들(110)을 통해 수신된 커맨드에 대한 외부 태그를 SSD 제어기(100)에 의한 프로세싱 동안 커맨드를 트랙킹하기 위해 사용된 내부 태그와 연관시키도록 인에이블된다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 데이터 프로세싱(121)은 버퍼(131)와 외부 인터페이스(110) 사이에서 전송된 데이터 중 일부 또는 모두를 옵션으로 및/또는 선택적으로 프로세스하고, 데이터 프로세싱(121)은 버퍼(131)에 저장된 데이터를 옵션으로 및/또는 선택적으로 프로세스한다. 일부 실시예들에서, 데이터 프로세싱(121)은 포맷팅, 리포맷팅, 트랜스코딩, 및 임의의 다른 데이터 프로세싱 및/또는 조작 작업 중 하나 또는 그 초과를 수행하기 위해 하나 또는 그 초과의 엔진들(123)을 사용한다.
버퍼(131)는 디바이스 인터페이스들(190)로부터 외부 인터페이스들(110)로 및/또는 외부 인터페이스들(110)로부터 디바이스 인터페이스들(190)로 전송된 데이터를 저장한다. 일부 실시예들에서, 버퍼(131)는 하나 또는 그 초과의 플래시 디바이스(192)를 관리하기 위해 SSD 제어기(100)에 의해 사용된 맵 테이블들 중 일부 또는 모두와 같은 시스템 데이터를 추가로 저장한다. 다양한 실시예들에서, 버퍼(131)는 데이터의 임시 저장을 위해 사용된 메모리(137), 버퍼(131)로 및/또는 버퍼(131)로부터의 데이터의 이동을 제어하기 위해 사용된 DMA(133), 상위 레벨 에러 정정 및/또는 리던던시 기능들 및 다른 데이터 이동 및/또는 조작 기능들을 제공하기 위해 사용된 ECC-X(135) 중 하나 또는 그 초과를 갖는다. 상위 레벨 리던던시 기능의 일례가 RAID형 능력(예를 들어, RASIE)이고, 여기서, 리던던시는 디스크 레벨 대신 플래시 디바이스(예를 들어, 플래시 디바이스(192)의 다중의 플래시 디바이스들) 레벨 및/또는 플래시 다이(예를 들어, 플래시 다이(194)) 레벨에 있다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 ECC(161)는 버퍼(131)와 디바이스 인터페이스(190) 사이에서 전송된 데이터 중 일부 또는 모두를 옵션으로 및/또는 선택적으로 프로세스하고, ECC(161)는 버퍼(131)에 저장된 데이터를 옵션으로 및/또는 선택적으로 프로세스한다. 일부 실시예들에서, ECC(161)는 하나 또는 그 초과의 ECC 기법들에 따르는 것과 같이, 하위 레벨 에러 정정 및/또는 리던던시 기능들을 제공하기 위해 사용된다. 일부 실시예들에서, ECC(161)는 CRC 코드, 해밍 코드, RS 코드, BCH 코드, LDPC 코드, 비터비 코드, 트렐리스 코드, 하드 판정 코드, 소프트 판정 코드, 이레이저 기반 코드, 임의의 에러 검출 및/또는 정정 코드, 및 이들의 임의의 조합 중 하나 또는 그 초과를 구현한다. 일부 실시예들에서, ECC(161)는 (LDPC 디코더들과 같은) 하나 또는 그 초과의 디코더들을 포함한다.
디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들을 제어한다. 디바이스 인터페이스 로직(191)은 플래시 디바이스(192)의 프로토콜에 따라 플래시 디바이스(192)의 인스턴스들로/인스턴스들로부터 데이터를 전송하도록 인에이블된다. 디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통해 플래시 디바이스(192)의 인스턴스들의 제어를 선택적으로 시퀀싱하기 위한 스케줄링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케줄링(193)은 플래시 디바이스(192)의 인스턴스들에 대한 동작들을 큐잉(queue)하고, 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 인스턴스들이 이용가능할 때 플래시 디바이스(192)(또는 플래시 다이(194))의 인스턴스들 중 개별 인스턴스들에 동작들을 선택적으로 전송하도록 인에이블된다.
맵(141)은 외부 데이터 어드레스들을 NVM(199)에서의 위치들에 매핑하기 위해 테이블(143)을 사용하여, 외부 인터페이스들(110)상에서 사용된 데이터 어드레싱과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 변환한다. 예를 들어, 일부 실시예들에서, 맵(141)은 테이블(143)에 의해 제공된 매핑을 통해 하나 또는 그 초과의 플래시 다이(194)를 타겟으로 하는 블록 및/또는 페이지 어드레스들로 외부 인터페이스들(110)상에서 사용된 LBA들을 변환한다. 드라이브 제조 또는 할당해제 이후 기록된 적이 없는 LBA들에 대해, 맵은 LBA들이 판독된 경우 리턴하기 위해 디폴트 값으로 포인팅한다. 예를 들어, 할당해제 커맨드를 프로세싱할 때, 맵은 할당해제된 LBA들에 대응하는 엔트리들이 디폴트 값들 중 하나에 포인팅하도록 변경된다. 다양한 실시예들에서, 각각 대응하는 포인터를 갖는 다양한 디폴트 값들이 존재한다. 복수의 디폴트 값들은 (제 1 범위에서와 같은) 일부 할당해제된 LBA들을 하나의 디폴트 값으로서 판독하는 것을 가능하게 하면서 (제 2 범위에서와 같은) 다른 할당해제된 LBA들을 다른 디폴트 값으로서 판독하는 것을 가능하게 한다. 다양한 실시예들에서, 디폴트 값들은 플래시 메모리, 하드웨어, 펌웨어, 커맨드 및/또는 원시 독립변수들 및/또는 파라미터들, 프로그램가능한 레지스터들, 또는 이들의 다양한 조합들에 의해 정의된다.
일부 실시예들에서, 맵(141)은 외부 인터페이스들(110)상에서 사용된 어드레스들과 디바이스 인터페이스들(190)상에서 사용된 데이터 어드레싱 사이에서 트랜슬레이션을 수행하고/하거나 룩업하기 위해 테이블(143)을 사용한다. 다양한 실시예들에 따르면, 테이블(143)은 1-레벨 맵, 2-레벨 맵, 멀티-레벨 맵, 맵 캐시, 압축된 맵, 일 어드레스 공간으로부터 다른 어드레스 공간으로의 임의의 타입의 매핑, 및 이들의 임의의 조합 중 하나 또는 그 초과이다. 다양한 실시예들에 따르면, 테이블(143)은 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, (플래시 메모리와 같은) NVM, 캐시 메모리, 온-칩 메모리, 오프-칩 메모리, 및 이들의 임의의 조합 중 하나 또는 그 초과이다.
일부 실시예들에서, 리사이클러(151)는 가비지 회수(garbage collection)를 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 블록들이 재기록가능하기 이전에 소거되어야 하는 블록을 포함한다. 리사이클러(151)는 예를 들어, 맵(141)에 의해 유지된 맵을 스캔함으로써 플래시 디바이스(192)의 인스턴스들 중 어느 부분들이 액티브하게 사용중인지 (예를 들어, 할당해제 대신에 할당되는지)를 결정하고, 플래시 디바이스(192)의 인스턴스들 중 미사용(예를 들어, 할당해제된) 부분들을 이들을 소거함으로써 기록하는데 이용가능하게 하도록 인에이블된다. 다른 실시예들에서, 리사이클러(151)는 플래시 디바이스(192)의 인스턴스들 중 더 큰 연속 부분들을 기록하는데 이용가능하게 하기 위해 플래시 디바이스(192)의 인스턴스들내에 저장된 데이터를 이동시키도록 인에이블된다.
일부 실시예들에서, 플래시 디바이스(192)의 인스턴스들은 상이한 타입들 및/또는 특성들의 데이터를 저장하기 위한 하나 또는 그 초과의 대역들을 갖도록 선택적으로 및/또는 동적으로 구성되고, 관리되고/되거나 사용된다. 대역들의 수, 배열, 사이즈, 및 타입은 동적으로 변경가능하다. 예를 들어, 컴퓨팅 호스트로부터의 데이터는 핫(hot)(액티브한) 대역에 기록되지만, 리사이클러(151)로부터의 데이터는 콜드(cold)(덜 액티브한) 대역에 기록된다. 일부 사용 시나리오들에서, 컴퓨팅 호스트가 긴 순차적 스트림을 기록하면, 핫 대역의 사이즈가 증가하는 반면에, 컴퓨팅 호스트가 랜덤하게 기록하거나 거의 기록하지 않으면, 콜드 대역의 사이즈가 증가한다.
CPU(171)는 SSD 제어기(100)의 다양한 부분들을 제어한다. CPU(171)는 CPU 코어(172)를 포함한다. 다양한 실시예들에 따라, CPU 코어(172)는 하나 또는 그 초과의 단일-코어 또는 멀티-코어 프로세서들이다. 일부 실시예들에서, CPU 코어(172)에서의 개별 프로세서 코어들은 멀티-쓰레드된다(multi-threaded). CPU 코어(172)는 명령 및/또는 데이터 캐시들 및/또는 메모리들을 포함한다. 예를 들어, 명령 메모리는 CPU 코어(172)로 하여금 SSD 제어기(100)를 제어하기 위해 프로그램(예를 들어, 때때로 펌웨어로 칭하는 소프트웨어)를 실행할 수 있게 하기 위한 명령들을 포함한다. 일부 실시예들에서, CPU 코어(172)에 의해 실행된 펌웨어 중 일부 또는 모두는 (예를 들어, 도 1b에서 NVM(199)의 펌웨어(106)로서 예시된 바와 같이) 플래시 디바이스(192)의 인스턴스들상에 저장된다.
다양한 실시예들에서, CPU(171)는 커맨드들이 진행중인 동안 외부 인터페이스들(110)을 통해 수신된 커맨드들을 트랙킹 및 제어하기 위한 커맨드 관리유닛(173), 버퍼(131)의 할당 및 사용을 제어하기 위한 버퍼 관리 유닛(175), 맵(141)을 제어하기 위한 트랜슬레이션 관리 유닛(177), 데이터 어드레싱의 일관성을 제어하고 예를 들어, 외부 데이터 액세스들과 리사이클 데이터 액세스들 사이의 충돌들을 회피하기 위한 코히어런시 관리 유닛(179), 디바이스 인터페이스 로직(191)을 제어하기 위한 디바이스 관리 유닛(181), 식별 정보의 변경 및 통신을 제어하기 위한 아이덴티티 관리 유닛(182), 및 옵션으로 다른 관리 유닛들을 더 포함한다. 다양한 실시예들에 따르면, CPU(171)에 의해 수행된 관리 기능들 중 어느 것도, 임의의 것 또는 모두는 하드웨어, (외부 인터페이스들(110)을 통해 접속된 CPU 코어(172) 또는 호스트상에서 실행하는 펌웨어와 같은) 소프트웨어, 또는 이들의 임의의 조합에 의해 제어 및/또는 관리된다.
일부 실시예들에서, CPU(171)는 성능 통계의 수집 및/또는 리포팅, SMART의 구현, 전력 시퀀싱의 제어, 전력 소모의 제어 및/또는 모니터링 및/또는 조정, 전력 고장에 대한 응답, 클록 레이트들의 제어 및/또는 모니터링 및/또는 조정, 및 다른 관리 작업들 중 하나 또는 그 초과와 같은 다른 관리 작업들을 수행하도록 인에이블된다.
다양한 실시예들은 SSD 제어기(100)와 유사하고 예를 들어, 호스트 인터페이스들(111) 및/또는 외부 인터페이스들(110)의 적응을 통해 다양한 컴퓨팅 호스트들과의 동작과 호환가능한 컴퓨팅 호스트 플래시 메모리 제어기를 포함한다. 다양한 컴퓨팅 호스트는 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DSA 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 태블릿 디바이스 또는 컴퓨터, 울트라북 컴퓨터, (e-판독기와 같은) 전자 판독 디바이스, PDA, 네비게이션 시스템, (핸드헬드) GPS 디바이스, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 머신 또는 일체형 디바이스, POS 디바이스, 캐시-레지스터, 미디어 플레이어, 텔레비전, 미디어 리코더, DVR, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 하나 또는 임의의 조합을 포함한다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅 호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들은 단일 IC, 멀티-다이 IC의 단일 다이, 멀티-다이 IC의 복수의 다이들, 또는 복수의 IC들상에서 구현된다. 예를 들어, 버퍼(131)는 SSD 제어기(100)의 다른 소자들과 동일한 다이상에서 구현된다. 다른 예에 있어서, 버퍼(131)는 SSD 제어기(100)의 다른 소자들과는 상이한 다이상에서 구현된다.
도 1b는 도 1a의 SSD의 하나 또는 그 초과의 인스턴스들을 포함하는 시스템들의 다양한 실시예들의 선택된 상세들을 예시한다. SSD(101)는 디바이스 인터페이스들(190)을 통해 NVM(199)에 커플링된 SSD 제어기(100)를 포함한다. 도면은 다양한 클래스들의 실시예들: 호스트에 직접 커플링된 단일 SSD, 각각의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링되는 복수의 SSD들, 및 다양한 상호접속 소자들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들을 예시한다.
호스트에 직접적으로 커플링된 단일 SSD의 예시적인 실시예로서, SSD(101)의 하나의 인스턴스는 외부 인터페이스들(110)을 통해 호스트(102)에 직접적으로 커플링된다(예를 들어, 스위치/구조/중간 제어기(103)가 생략되고, 바이패스되거나, 통과된다). 각각의 외부 인터페이스들을 통해 호스트에 직접적으로 각각 커플링된 복수의 SSD들 예시적인 실시예로서, SSD(101)의 복수의 인스턴스들 각각은 외부 인터페이스들(110)의 각각의 인스턴스를 통해 호스트(102)에 직접적으로 각각 커플링된다(예를 들어, 스위치/구조/중간 제어기(103)가 생략되고, 바이패스되거나, 통과된다). 다양한 상호접속 소자들을 통해 호스트에 간접적으로 커플링된 하나 또는 그 초과의 SSD들의 예시적인 실시예로서, SSD(101)의 하나 또는 그 초과의 인스턴스들 각각은 호스트(102)에 간접적으로 각각 커플링된다. 각각의 간접 커플링은 스위치/구조/중간 제어기(103)에 커플링된 외부 인터페이스들(110)의 각각의 인스턴스, 및 호스트(102)에 커플링하는 중간 인터페이스들(104)을 통한다.
스위치/구조/중간 제어기(103)를 포함하는 실시예들 중 일부는 메모리 인터페이스(180)를 통해 커플링되고 SSD들에 의해 액세스가능한 카드 메모리(112C)를 또한 포함한다. 다양한 실시예들에서, SSD들, 스위치/구조/중간 제어기, 및/또는 카드 메모리 중 하나 또는 그 초과는 물리적으로 식별가능한 모듈, 카드, 또는 플러그가능한 소자(예를 들어, I/O 카드(116))상에 포함된다. 일부 실시예들에서, SSD(101)(또는 그것의 변형들)는 호스트(102)로서 동작하는 개시자에 커플링되는 SAS 드라이브 또는 SATA 드라이브에 대응한다.
호스트(102)는 OS(105), 드라이버(107), 애플리케이션(109), 및 멀티-디바이스 관리 소프트웨어(114)의 다양한 조합들과 같은 호스트 소프트웨어(115)의 다양한 소자들을 실행하도록 인에이블된다. 점선 화살표(107D)는 호스트 소프트웨어 ←→ I/O 디바이스 통신, 예를 들어, SSD(101)의 인스턴스들 중 하나 또는 그 초과로/로부터 전송/수신되고 드라이버(107), 드라이버(107), 및 애플리케이션(109)을 통해, 드라이버(107)를 통해, 또는 VF로서 직접 OS(105)의 임의의 하나 또는 그 초과로부터/로 수신/전송된 데이터를 나타낸다.
OS(105)는 SSD와의 인터페이싱을 위해 (드라이버(107)에 의해 개념적으로 예시된) 드라이버들을 포함하고/하거나 그 드라이버들과 동작하도록 인에이블된다. 다양한 버전들의 윈도우들(예를 들어, 95, 98, ME, NT, XP, 2000, 서버, 비스타, 및 7), 다양한 버전들의 리눅스(예를 들어, Red Hat, Debian, 및 Ubuntu), 및 다양한 버전들의 MacOS(예를 들어, 8, 9 및 X)가 OS(105)의 예들이다. 다양한 실시예들에서, 드라이버들은 표준 인터페이스 및/또는 SATA, AHCI, 또는 NVM 익스프레스와 같은 프로토콜과 동작가능한 표준 및/또는 일반 드라이버들(때때로, "수축 포장(shrink-wrapped)" 또는 "사전 설치(pre-installed)"로 칭함)이거나, 또는 옵션으로 SSD(101)에 특정한 커맨드들의 사용을 가능케하는 벤더 특정형 및/또는 주문형이다. 일부 드라이브들 및/또는 드라이버들은 애플리케이션(109)과 같은 애플리케이션 레벨 프로그램들이 최적화된 NAND 액세스(때때로 ONA로 칭함) 또는 직접 NAND 액세스(때때로, DNA로 칭함) 기법들을 통해 SSD(101)에 직접적으로 커맨드들을 통신할 수 있게 하기 위한 통과(pass-through) 모드들을 갖고, 이것은 커스터마이징된 애플리케이션이 일반 드라이버를 갖더라도 SSD(101)에 특정된 커맨드들을 사용할 수 있게 한다. ONA 기법들은 비표준 변경자들(힌트들)의 사용, 벤더 특정 커맨드들의 사용, 압축성(compressibility)에 따르는 실제 NVM 사용과 같은 비표준 통계의 통신, 및 다른 기법들 중 하나 또는 그 초과를 포함한다. DNA 기법들은 NVM에 언매핑된 판독, 기록, 및/또는 소거 액세스를 제공하는 비표준 또는 벤더 특정 커맨드들의 사용, 예를 들어, I/O 디바이스가 그렇지 않으면 행할 데이터의 포맷팅을 바이패스함으로써 NVM에 더욱 직접적인 액세스를 제공하는 비표준 또는 벤더 특정 커맨드들의 사용, 및 다른 기법들 중 하나 또는 그 초과를 포함한다. 드라이버의 예들은 ONA 또는 DNA 지원이 없는 드라이버, ONA-인에이블된 드라이버, DNA-인에이블된 드라이버, 및 ONA/DNA-인에이블된 드라이버이다. 드라이버의 다른 예들은 벤더-제공, 벤더-개발, 및/또는 벤더-강화 드라이버, 및 클라이언트-제공, 클라이언트-개발, 및/또는 클라이언트-강화 드라이버이다.
애플리케이션-레벨 프로그램들의 예들은 ONA 또는 DNA 지원이 없는 애플리케이션, ONA-인에이블된 애플리케이션, DNA-인에이블된 애플리케이션, 및 ONA/DNA-인에이블된 애플리케이션이다. 점선 화살표(109D)는 애플리케이션 I/O 디바이스 통신(예를 들어, 드라이버를 통한 바이패스 또는 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS 또는 드라이버를 사용하는 애플리케이션없이 SSD와 통신하는 ONA-인에이블된 애플리케이션 및 ONA-인에이블된 드라이버를 나타낸다. 점선 화살표(109V)는 애플리케이션 I/O 디바이스 통신(예를 들어, 애플리케이션에 대해 VF를 통한 바이패스), 예를 들어, 중개자로서 OS를 사용하는 애플리케이션없이 SSD와 통신하는 DNA-인에이블된 애플리케이션 및 DNA-인에이블된 드라이버를 나타낸다.
일부 실시예들에서, NVM(199)의 하나 또는 그 초과의 부분들은 펌웨어 저장부, 예를 들어, 펌웨어(106)에 대해 사용된다. 펌웨어 저장부는 하나 또는 그 초과의 펌웨어 이미지들(또는 그것의 부분들)을 포함한다. 예를 들어, 펌웨어 이미지는 예를 들어, SSD 제어기(100)의 CPU 코어(172)에 의해 실행된 펌웨어의 하나 또는 그 초과의 이미지들을 갖는다. 다른 예에 있어서, 펌웨어 이미지는 일정한 파라미터 값들, 및 예를 들어, 펌웨어 실행 동안 CPU 코어에 의해 참조되는 NVM 디바이스 정보의 하나 또는 그 초과의 이미지들을 갖는다. 펌웨어의 이미지들은 예를 들어, 현재의 펌웨어 이미지 및 (펌웨어 업데이트들에 관한) 제로 또는 그 초과의 이전 펌웨어 이미지들에 대응한다. 다양한 실시예들에서, 펌웨어는 일반, 표준, ONA 및/또는 DNA 동작 모드들을 제공한다. 일부 실시예들에서, 펌웨어 동작 모드들 중 하나 또는 그 초과는 드라이버에 의해 옵션으로 통신되고/되거나 제공되는 키들 또는 다양한 소프트웨어 기법들을 통해 인에이블된다(예를 들어, 하나 또는 그 초과의 API들이 "언락(unlock)"된다).
스위치/구조/중간 제어기들이 부족한 일부 실시예들에서, SSD는 외부 인터페이스들(110)을 통해 직접적으로 호스트에 커플링된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기와 같은 다른 제어기들의 하나 또는 그 초과의 중간 레벨들을 통해 호스트에 커플링된다. 일부 실시예들에서, SSD(101)(또는 그것의 변형들)는 SAS 드라이브 또는 SATA 드라이브에 대응하고, 스위치/구조/중간 제어기(103)는 개시자에 차례로 커플링되는 확장자에 대응하거나, 다르게는, 스위치/구조/중간 제어기(103)는 확장자를 통해 개시자에 간접적으로 커플링되는 브리지에 대응한다. 일부 실시예들에서, 스위치/구조/중간 제어기(103)는 하나 또는 그 초과의 PCIe 스위치들 및/또는 구조들을 포함한다.
호스트(102)가 컴퓨팅 호스트(예를 들어, 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 디바이스, DAS 디바이스, 저장 기구, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 및/또는 넷북 컴퓨터)인 실시예들 중 일부와 같은 다양한 실시예들에서, 컴퓨팅 호스트는 하나 또는 그 초과의 로컬 및/또는 원격 서버들(예를 들어, 옵션의 서버들(118))과 (예를 들어, 옵션 I/O & 저장 디바이스들/리소스들(117) 및 옵션 LAN/WAN(119)을 통해) 통신하도록 옵션으로 인에이블된다. 예를 들어, 통신은 로컬 및/또는 원격 액세스, 관리, 및/또는 SSD(101) 소자들 중 임의의 하나 또는 그 초과의 사용을 인에이블한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 이더넷을 통한다. 일부 실시예들에서, 통신은 전체적으로 또는 부분적으로 섬유 채널을 통한다. 다양한 실시예들에서, LAN/WAN(119)은 서버 팜에서의 네트워크, 서버 팜들을 커플링하는 네트워크, 메트로-영역 네트워크, 및 인터넷 중 임의의 하나 또는 그 초과와 같은 하나 또는 그 초과의 로컬 및/또는 광역 네트워크들을 나타낸다.
다양한 실시예들에서, 하나 또는 그 초과의 NVM들과 결합하여 SSD 제어기 및/또는 컴퓨팅-호스트 플래시 메모리 제어기는 USB 저장 컴포넌트, CF 저장 컴포넌트, MMC 저장 컴포넌트, eMMC 저장 컴포넌트, 썬더볼트 저장 컴포넌트, UFS 저장 컴포넌트, SD 저장 컴포넌트, 메모리 스틱 저장 컴포넌트, 및 xD-픽처 카드 저장 컴포넌트와 같은 비휘발성 저장 컴포넌트로서 구현된다.
다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 제어기가 커플링될 호스트(예를 들어, 도 1b의 호스트(102))에서 구현된다. 다양한 실시예들에서, SSD 제어기(또는 컴퓨팅-호스트 플래시 메모리 제어기) 중 모두 또는 임의의 부분들, 또는 그것의 기능들은 하드웨어(예를 들어, 로직 회로), 소프트웨어 및/또는 펌웨어(예를 들어, 드라이버 소프트웨어 또는 SSD 제어 펌웨어), 또는 이들의 임의의 조합을 통해 구현된다. 예를 들어, (도 1a의 ECC(161) 및/또는 ECC-X(135)와 유사하게) ECC 유닛과 연관된 기능은 호스트상의 소프트웨어를 통해 부분적으로 및 SSD 제어기에서 펌웨어와 하드웨어의 조합을 통해 부분적으로 구현된다. 다른 예에 있어서, 예를 들어, (도 1a의 리사이클러(151)와 유사하게) 리사이클러 유닛과 연관된 기능은 호스트상의 소프트웨어를 통해 부분적으로 및 컴퓨팅-호스트 플래시 메모리 제어기에서 하드웨어를 통해 부분적으로 구현된다.
매핑 동작
도 2는 LBA의 LPN 부분을 매핑하는 실시예의 선택된 상세를 예시한다. 일부 실시예들에서, 판독 유닛은 NVM의 페이지의 부분과 같이, 독립적으로 판독가능한 NVM의 가장 미세한 단위(finest granularity)이다. 다른 실시예들에서, 판독 유닛은 체크 비트들에 의해 보호된 모든 데이터에 따라 (하위 레벨) 에러 정정 코드의 체크 비트들(때때로, 리던던시라 칭함)에 대응한다. 예를 들어, 도 1a의 ECC(161)는 LDPC 코드를 통하는 것과 같이 체크 비트들을 통해 에러 정정을 구현하고, 판독 유닛은 LDPC 코딩 비트들에 의해 보호된 데이터에 부가하여 LDPC 코드를 구현하는 코딩 비트들에 대응한다.
일부 실시예들에서, 맵(141)은 (도 1a에 예시된 바와 같이) 테이블(143)을 통해서와 같이, LPN에 대한 맵 정보(221)에 LBA(211)의 LPN(213) 부분을 매핑한다. (LPN에 대한 맵 정보(221)와 같은) LPN에 대한 맵 정보는 때때로 맵 엔트리로 칭한다. 맵(141)은 LPN을 대응하는 맵 엔트리와 연관시킨다 할 수 있다. 다양한 실시예들에서, 매핑은 하나 또는 그 초과의 연관 룩업들, 하나 또는 그 초과의 비연관 룩업들, 및/또는 하나 또는 그 초과의 다른 기법들을 통한다.
일부 실시예들에서, SSD 제어기(100)는 사용중에 잠재적으로 및/또는 액티브하게 각 LPN에 대한 하나의 맵 엔트리를 유지한다.
일부 실시예들에서, LPN에 대한 맵 정보(221)는 각각의 판독 유닛 어드레스(223) 및 판독 유닛들에서의 길이(225)를 포함한다. 일부 실시예들에서, 길이 및/또는 스팬은 예를 들어, 판독 유닛들에서의 길이(225) 중 모두 또는 임의의 부분들에 스팬으로부터의 오프셋으로서 길이를 저장함으로써 저장되어 인코딩된다. 다른 실시예들에서, 제 1 LPN은 제 1 맵 엔트리와 연관되고, 제 2 LPN(제 1 LPN과 상이하지만 제 1 LPN에 의해 지칭되는 논리 페이지와 동일한 사이즈의 논리 페이지를 지칭함)은 제 2 맵 엔트리와 연관되며, 제 1 맵 엔트리의 판독 유닛들에서의 각각의 길이는 제 2 맵 엔트리의 판독 유닛들에서의 각각의 길이와 상이하다.
다양한 실시예들에서, 동일한 시점에, 제 1 LPN은 제 1 맵 엔트리와 연관되고, 제 2 LPN(제 1 LPN과는 상이함)은 제 2 맵 엔트리와 연관되며, 제 1 맵 엔트리의 각각의 판독 유닛 어드레스는 제 2 맵 엔트리의 각각의 판독 유닛 어드레스와 동일하다. 다른 실시예들에서, 제 1 LPN과 연관된 데이터 및 제 2 LPN과 연관된 데이터 양자는 NVM(199)에서의 동일한 디바이스의 동일한 물리적 페이지에 저장된다.
다양한 실시예들에 따르면, 판독 유닛 어드레스(223)는NVM에서의 시작 어드레스, NVM에서의 종료 어드레스, 이들의 임의의 오프셋, 및 LPN(213)과 연관된 NVM의 부분을 식별하는 임의의 다른 기법들 중 하나 또는 그 초과와 연관된다.
도 3은 다량의 판독 유닛들에서 측정된 길이를 갖는, 일괄하여, 다양한 판독 유닛들로서 구성된 판독 데이터를 생성하기 위해 판독 유닛 어드레스에서 NVM에 액세스하는 실시예의 선택된 상세를 예시한다. 다양한 실시예들에 따르면, 제 1 판독 유닛(313)은 NVM의 어드레스 공간에서 최저의 어드레스를 갖는 판독 데이터(311)에서의 판독 유닛들 중 하나, 판독 유닛들 중 고정된 판독 유닛, 판독 유닛들 중 임의의 판독 유닛, 판독 유닛들 중 가변 판독 유닛, 및 임의의 다른 기법에 의해 선택된 판독 유닛들 중에서의 판독 유닛 중 하나 또는 그 초과의 것이다. 다양한 실시예들에서, SSD 제어기(100)는 판독 유닛들에서의 길이(225)에 의해 특정된 판독 유닛들의 수 보다 많지 않게 판독함으로써 NVM(199)에 액세스하고 판독 데이터(311)를 생성하도록 인에이블된다.
도 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 데이터 영역에 연속적으로 후속한다.
도 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에 예시되어 있는 바와 같이) 동일한 위치 순서에 저장된다.
일부 실시예들에서, 옵션의 패딩 바이트들(431A)(또는 431B)은 특정한 LPN과 연관된 데이터의 단위에 따른다. 예를 들어, 일부 실시예들에서, 데이터 바이트들(421A)(또는 일괄적으로, 데이터 바이트들(421B), 데이터 바이트들(422B) ... 데이터 바이트들(429B))이 헤더 1(411A) 내지 헤더 N(419A)(또는 헤더 1(411B), 헤더 2(412B) ... 헤더 N(419B)) 모두이지만 이중 최종 헤더와 연관된 데이터를 저장한 이후에, 8 바이트와 같이 나머지 공간의 고정량 보다 적게 가지면, 최종 헤더와 연관된 LPN에 대한 데이터는 후속 판독 유닛에서 시작한다. 다른 실시예들에서, 최종 헤더에서의 특정한 오프셋 값들(예를 들어, 모두 1)은 최종 헤더와 연관된 LPN에 대한 데이터가 후속 판독 유닛에서 시작한다는 것을 나타낸다.
도 5는 다수의 필드들을 갖는 (도 4a의 임의의 헤더 1(411A) 내지 헤더 N(419A) 또는 도 4b의 헤더 1(411B) 내지 헤더 N(419B)와 같은) 헤더의 실시예의 선택된 상세들을 예시한다. 일부 실시예들에서, 헤더들은 고정 길이이다(예를 들어, 각 헤더는 동일한 수의 바이트 길이이다). 헤더(501)는 필드 타입(511), 최종 표시자(513), 플래그들(515), LPN(517), 길이(519), 및 오프셋(521)을 포함한다. 타입 필드는 데이터 바이트들의 카테고리를 식별한다. 예를 들어, 타입 필드는 데이터 바이트들의 카테고리가 호스트 데이터(예를 들어, 논리 페이지 데이터) 또는 시스템 데이터(예를 들어, 맵 정보 또는 체크포인트 정보) 중 하나이라는 것을 나타낸다. 최종 필드는 헤더가 데이터 바이트들 이전의 최종 헤더라는 것을 나타낸다. 헤더 마커를 갖는 일부 실시예들에서, 최종 필드는 옵션으로 생략된다. LPN 필드는 헤더가 연관되는 LPN이다. LPN 필드는 예를 들어, 특정한 LPN에 매칭하는 LPN 필드를 갖는 하나에 대한 헤더들을 탐색함으로써 특정한 LPN과 연관되는 헤더들 중 특정한 하나를 결정하기 위해 헤더들의 분석을 인에이블한다. 길이 필드는 데이터 바이트들의 바이트 단위의 길이(예를 들어, 헤더(501)와 연관된 데이터 바이트들(421A)에 얼마나 많은 데이터의 바이트들이 존재하는지)이다. 일부 실시예에서, 오프셋 필드에서의 오프셋은 특정한 단위(예를 들어, 8 바이트 단위)에 따라 반올림된다.
다양한 실시예들에서, 특정한 LPN과 연관된 정보 중 일부 또는 모두는 특정한 LPN과 연관된 맵 엔트리, 특정한 LPN과 연관된 헤더, 또는 이들 양자에 저장된다. 예를 들어, 일부 실시예들에서, 길이(519)의 일부 또는 모두는 헤더 보다는 맵 엔트리에 저장된다.
도 6은 다중의 NVM 디바이스들의 블록들, 페이지들, 및 판독 유닛들의 실시예의 선택된 상세들을 예시한다. 예를 들어, 601, 603 ... 및 609는 도 1a의 하나 또는 그 초과의 개별 플래시 다이(194)의 각각의 다이들에 대응한다.
일부 실시예들에서, 디바이스들(601, 603 ... 및 609)은 모든 NVM(199) 보다 작은 부분이다. 예를 들어, 다양한 실시예들에서, 데이터는 디바이스들의 다중의 그룹들에 걸쳐 독립적으로 스트라이프되고(striped), 여기서, 디바이스들의 그룹들 각각은 독립적으로 액세스가능하다.
(디바이스들(601, 603 ... 및 609) 중 어느 하나와 같은) 각 디바이스는 (디바이스(601)의 블록들(631, 633 ... 639), 디바이스(603)의 블록들(661, 663 ... 669) 등과 같은) 블록들로서 구성된 저장부를 제공한다. 일부 실시예들에서, 각 디바이스는 정수의 블록들을 포함하고 블록은 소거의 가장 작은 정량이다. 차례로, 블록들은 (블록(631)의 페이지들(621, 623 ... 및 629 및 블록(661)의 페이지들(651, 653 ... 및 659) 등과 같은) 페이지들을 포함한다. 일부 실시예들에서, 각 블록은 정수의 페이지들을 포함하고 페이지는 기록의 가장 작은 정량이다. 차례로, 페이지들은 (페이지(621)의 판독 유닛들(611, 613 ... 및 619 및 페이지(651)의 판독 유닛들(641, 643 ... 및 649) 등과 같은) 판독 유닛들을 포함한다. 다양한 실시예들에 따르면, 판독 유닛 중 하나 또는 그 초과는 판독 및 에러 정정의 가장 작은 정량이고, 각 페이지는 정수의 판독 유닛들을 포함하고, 2개 또는 그 초과의 페이지들의 연관된 그룹은 정수의 판독 유닛들을 포함하며, 판독 유닛들은 옵션으로 및/또는 선택적으로 페이지 경계들을 스팬한다. 디바이스들에서의 정보의 판독들 및/또는 기록들은 '판독 유닛 먼저(read unit first)' 순서 또는 '페이지 먼저(page first)' 순서와 같은 순서에 따라 수행된다. 도면에 예시된 판독 유닛들에 대한 판독 유닛 먼저 순서의 일례는 판독 유닛(611)으로 시작하여, 641, 671, 613, 643, 673 등이 후속하고, 679로 종료한다. 도면에 예시된 판독 유닛들에 대한 페이지 먼저 순서의 일례는 판독 유닛(611)으로 시작하여, 613, 619, 641, 643, 649, 671, 673 등이 후속하고, 679로 종료한다.
일부 실시예들에서, 다양한 NVM 관리 기능들이 R-블록들의 유닛들에서 수행된다. R-블록의 일례가 플래시 메모리의 모든 다이에 걸친 논리 슬라이스 또는 섹션이다. 예를 들어, 각 플래시 다이가 N개의 블록들을 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R-블록은 총 N개의 R 블록들에 대해 함께 취해진 플래시 다이 각각으로부터의 i번째 블록이다. 다른 예에 있어서, N개의 블록들을 각각 갖는 R 플래시 다이를 갖는 플래시 메모리에서, 각 R-블록은 총 N/2 R-블록들에 대해 플래시 다이 각각으로부터의 i번째 및 (i+1)번째 블록이다. 또 다른 예에 있어서, 복수의 듀얼 평면 디바이스들을 갖는 플래시 메모리에서, 각 R-블록은 듀얼 평면 디바이스들 각각으로부터의 i번째 짝수 블록 및 i번째 홀수 블록이다.
상위 레벨 리던던시 기법들
도 7a는 상위 레벨 리던던시 기법들의 다양한 실시예들의 선택된 상세들을 예시한다. 플래시 디바이스(들)(720)은 64개의 플래시 다이(플래시 다이(710.63, 710.62, 710.61 ... 710.0))를 포함하고 인터페이스 채널(들)(730)을 통해 통신한다. 여분 플래시 디바이스(들)(740)는 2개까지의 플래시 다이(플래시 다이(710.65 및 710.64))를 포함하고 여분 인터페이스 채널(들)(750)을 통해 통신한다. 플래시 다이는 SSD에서의 NVM과 같은, 저장 서브-시스템에서 상위 레벨 리던던시 정보 및 데이터 저장(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간)을 위한 저장부를 제공한다. (리던던시 정보 및 데이터 저장의 컨텍스트에서 '사용자 데이터'의 예들은 운영 시스템 데이터, 애플리케이션 데이터, SSD 관리 데이터 등과 같은 추후 검색을 위해 플래시 메모리상에 저장된 리던던시 정보 이외의 모든 데이터를 포함한다.) 상위 레벨 리던던시는 예를 들어, 판독 동작에 대한 (예를 들어, 하위 레벨 ECC 기능들을 통한) 에러 정정된 데이터의 제공의 실패 또는 기록 동작의 적절한 완료의 실패와 같은 하나 또는 그 초과의 플래시 다이의 하나 또는 그 초과의 부분들의 간헐적 또는 영구적 장애로부터의 복구를 인에이블한다.
예를 들어, 각 플래시 다이(또는 다르게는, 각 블록 또는 각 블록내의 각 페이지)는 실리콘 독립 소자들의 리던던시 어레이(RASIE)의 컨텍스트에서 동작된다. 장애가 (예를 들어, 특정한 다이의 블록의 부분의 ECC-정정불가능 판독 에러로 인해) 특정한 플래시 다이에서 검출되면, 이에 응답하여, 다른 플래시 다이에 저장된 리던던트 정보가 특정한 다이에 의해 제공된 정보를 결정하기 위해 사용된다. 일부 실시예들 및/또는 사용 시나리오들에서, (단일 동작 동안) 하나의 플래시 다이내에서 하나의 장애로부터의 복구를 인에이블하기 위해 충분한 리던던트 정보가 저장된다. 일부 실시예들에서, 단일 장애로부터의 복구를 인에이블하는 모드에서의 동작은 상위 레벨 리던던시 정보에 대한 하나의 플래시 다이에 등가인 공간을 할당하고 관리하는 것을 포함하고, 이것은‘RASIE-1'으로 칭한다. 일부 실시예들에서, 2개의 장애로부터의 복구를 인에이블하는 모드에서의 동작은 상위 레벨 리던던시 정보에 대한 2개의 플래시 다이에 등가인 공간을 할당하고 관리하는 것을 포함하고, 이것은 'RASIE-2'로 칭한다.
일부 실시예들 및/또는 사용 시나리오들에서, 다이-레벨 장애의 관리가 목적이고, 다이 중에 정보의 확산이 수행된다. 예를 들어, 상위 레벨 리던던시 정보가 구체적으로는 상위 레벨 리던던시 정보에 단독으로 할당된 하나 또는 그 초과의 다이에 저장된다. 일부 실시예들 및/또는 사용 시나리오들에서, 블록-레벨 장애의 관리가 목적이고, 다이내의 블록들 중에 정보의 확산이 수행된다. 예를 들어, 상위 레벨 리던던시 정보가 상위 레벨 리던던시 정보에 할당된 하나 또는 그 초과의 블록들에 저장되고, 할당은 블록들이 그 일부인 특정한 다이에 관련되지 않는다. 일부 실시예들 및/또는 사용 시나리오들에서, 특정한-엔터티-레벨 장애들의 관리는 정보의 확산을 포함하여서, N개 보다 많지 않은 소자들(예를 들어, RASIE-1에 대해 1개 및 RASIE-2에 대해 2개)이 특정한 엔터티들 중 어느 하나에 있다.
상위 레벨 리던던시 정보는 플래시 다이에 기록된 (사용자) 데이터에 따라 계산 및 기록되어서, 장애가 검출될 때 정보를 제공하는데 이용가능하다. 다양한 실시예들에서, 상위 레벨 리던던시 정보는 상위 레벨 리던던시 정보가 연관되는 (사용자) 데이터의 기록 이전, 이후, 또는 그 기록과 관련하여 특정한 시간 순서없이 플래시 다이에 기록된다.
도면은 아래의 테이블에 요약된 바와 같이, RASIE 동작 모드들의 다양한 실시예들을 예시한다.
Figure 112013058394670-pct00008
더욱 구체적으로, RASIE-1 모드에서, 1개의 다이와 등가인 공간이 상위 레벨 리던던시 정보에 할당된다. RASIE-1 모드 1-0에서, 여분 플래시 디바이스(들)(740)는, 상위 레벨 리던던시 정보가 플래시 디바이스(들)(720) 중 하나의 다이(예를 들어, 플래시 다이(710.64))에 저장되고, 나머지 63개 다이(플래시 다이(710.62 ... 710.0))가 데이터 저장(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간)을 위해 이용가능하기 때문에, 사용되지 않는다. RASIE-1 모드 1-1에서, 여분 플래시 디바이스(들)(740) 중 하나의 다이가 사용되고(예를 들어, 플래시 다이(710.64)), 나머지 모든 플래시 디바이스(들)(720)(64개 다이)가 데이터 저장을 위해 이용가능하다.
RASIE-2 모드들에서, 2개의 다이와 등가인 공간이 상위 레벨 리던던시 정보에 할당된다. RASIE-2 모드 2-0에서, 여분 플래시 디바이스(들)(740)는, 상위 레벨 리던던시 정보가 플래시 디바이스(들)(720) 중 2개의 다이(예를 들어, 플래시 다이(710.63) 및 플래시 다이(710.62))에 저장되고, 나머지 62개 다이(플래시 다이(710.61 ... 710.0))가 데이터 저장을 위해 이용가능하기 때문에, 사용되지 않는다. RASIE-2 모드 2-1에서, 여분 플래시 디바이스(들)(740) 중 하나의 다이는, 상위 레벨 리던던시 정보가 플래시 디바이스(들)(720) 중 하나의 다이(예를 들어, 플래시 다이(710.63))에 부분적으로 저장되고, 나머지 63개 다이(플래시 다이(710.62 ... 710.0))가 데이터 저장을 위해 이용가능하기 때문에, 사용된다. RASIE-2 모드 2-2에서, 여분 플래시 디바이스(들)(740) 중 2개의 다이가 사용되고(예를 들어, 플래시 다이(710.65) 및 플래시 다이(710.64)), 나머지 모든 플래시 디바이스(들)(720)(64개 다이)가 데이터 저장을 위해 이용가능하다.
일부 실시예들에서, 모든 사용 시나리오들에서 미사용된 다이는 채워지지 않는다(unpopulated). 예를 들어, RASIE 2-0 모드 및 RASIE 1-0 모드에서만(다른 RASIE 모드들에서는 아님) 동작가능한 시스템에서, 여분 플래시 디바이스(들)(740)는 채워지지 않는다.
일부 실시예들에서, 상위 레벨 리던던시 정보는 전체적으로 "전용" 다이(예를 들어, RASIE-1 모드 1-0에서 플래시 다이(710.63) 또는 RASIE-2 모드 2-2에서 플래시 다이(710.65) 및 플래시 다이(710.64))에 저장된다. 다른 실시예들에서, 상위 레벨 리던던시 정보는 임의의 다이에 저장되어서, 예를 들어, RASIE-1 모드 1-0에서, 플래시 다이(710.62)가 상위 레벨 리던던시 정보에 대해 사용되고, 플래시 다이(710.63) 및 플래시 다이(710.61 ... 710.0)가 데이터 저장을 위해 사용된다. 일부 실시예들 및/또는 사용 시나리오들에서, 상위 레벨 리던던시 정보는 시간을 통해 상이한 다이(및/또는 그것의 부분들)에 저장되어서, 예를 들어, 제 1 기간에서, 제 1 플래시 다이는 상위 레벨 리던던시 정보를 홀딩하고, 제 2 기간에서, 제 2 플래시 다이는 상위 레벨 리던던시 정보를 홀딩한다.
다양한 실시예들에서, 얼마나 많은 플래시 다이가 사용가능한지에 따라 복수의 RASIE 1-0 모드들(및 복수의 RASIE 2-0 모드들)이 존재한다. 예를 들어, (상기 테이블에 예시한 바와 같이) 제 1 RASIE 1-0 모드에서, 플래시 다이(710.63)는 상위 레벨 리던던시 정보를 저장하고, 플래시 다이(710.62 ... 710.0)는 데이터 저장을 위해 이용가능하다. 제 2 RASIE 1-0 모드에서, 플래시 다이(710.63)는 더 이상 사용가능하지 않고, 플래시 다이(710.62)는 상위 레벨 리던던시 정보를 저장하며, 플래시 다이(710.61 ... 710.0)는 데이터 저장을 위해 이용가능하여서, 하나의 다이에 의한 이용가능한 데이터 저장량을 감소시킨다. 데이터 저장을 위해 이전에 이용가능한 다이(또는 그것의 임의의 부분들)가 상위 레벨 리던던시 정보에 대한 다이(또는 부분들)의 사용으로 인해 데이터 저장을 위해 더 이상 이용가능하지 않은 RASIE 모드들을 때때로 감소-용량 RASIE 모드들로 칭한다.
일부 실시예들에서, 상위 레벨 리던던시 정보는 상위 레벨 리던던시 정보에 의해 보호된 사용자 데이터와 동일 및/또는 유사한 하위 레벨 에러 정정 코딩 방식을 사용하여 저장된다. 상위 레벨 리던던시 정보를 보호하기 위해 하위 레벨 에러 정정 방식을 사용하는 것은, 사용자 데이터에서 정정불가능한 하위 레벨 에러가 결정되는 동일 및/또는 유사한 방식으로, 상위 레벨 리던던시 정보에 정정불가능한 에러가 존재하는지 결정하는 것을 인에이블한다.
도 7b는 R-블록들의 실시예의 선택된 상세들을 예시한다. 플래시 다이는 모든 다이에 걸친 논리 슬라이스들 또는 섹션들에서 (예를 들어,리사이클링 및/또는 소거를 위해) 관리되고, 슬라이스들/섹션들을 R-블록들로 칭한다. 도면은 66개의 플래시 다이(플래시 다이(710.65 ... 710.0))를 갖는 실시예를 예시한다. R-블록들로서 블록들의 블록들, 페이지들, 및 관리가 예시되어 있다. 각 플래시 다이는 N개의 블록들(예를 들어, 플래시 다이(710.65)의 블록 (710.65B0), 블록(710.65B1) ... 블록(710.65BB))을 갖는 것으로 예시되어 있다. 각 R-블록은 (플래시 다이(710.65)로부터의 블록(710.65B0), (명시적으로 예시되 않지만) 플래시 다이(710.64)로부터 블록 0 등으로부터 플래시 다이(710.0)의 블록(710.0B0)까지인 R-블록(760.0)과 같은) 함께 취해진 플래시 다이 각각으로부터 i번째 블록이다. 따라서, 총 N개의 R-블록들(R-블록(760.0), R-블록(760.1) ... R-블록(760.R))이 존재한다.
다양한 실시예들에서, R-블록내의 기록 및/또는 스트라이핑 순서는 모든 디바이스들 (예를 들어, 도 6의 스트라이핑 방향(600)에 의해 개념적으로 제안된 바와 같이, 최하 내지 최상 넘버링된 디바이스들)에 걸쳐 페이지(예를 들어, 최하 - 최상) 먼저이고, 그 후, (모든 디바이스에 걸쳐) 다음으로 최상의 페이지, 등이고, R-블록의 최종 페이지 전반적으로 계속된다. 구체적으로는, 도 7의 R-블록(760.0)에 관하여, 예시적인 순서는 페이지(710.0P0)로 시작하고, 플래시 다이(710.1)의 제 1 블록에서의 제 1 페이지가 후속하는 등, 페이지(710.65P0)까지 계속된다. 예시적인 순서는 페이지(710.0P1)로 계속되고, 플래시 다이(710.1)의 제 1 블록에서의 제 2 페이지가 후속하는 등, 페이지(710.65P1)로 계속된다. 예시적인 순서는 페이지(710.0PP)로 계속되고, 플래시 다이(710.1)의 제 1 블록에서의 최종 페이지가 후속하는 등, 페이지(710.65PP)로 종료한다.
R-블록의 다른 예는 함께 취해진 플래시 다이 각각으로부터의 i-번째 및 (i+1)번째 블록이다(예를 들어, 플래시 다이(710.65)로부터의 블록들(0 및 1), 플래시 다이(710.64)로부터의 블록들(0 및 1) 등 내지 플래시 다이(710.0)로부터의 블록들(0 및 1)). 따라서, 각 플래시 다이에 N개의 블록들이 존재하면, N/2개의 R-블록들이 존재한다. R-블록의 또 다른 예는 복수의 듀얼 평면 디바이스들 각각으로부터의 i번째 홀수 및 짝수 블록들이다. R-블록들로서 관리를 위한 플래시 다이 블록들의 다른 배열들이 예상되고, 일부 블록들이 동작불능인 경우에도 R-블록들이 각 다이로부터 하나의 블록을 갖는다는 것을 보장하기 위해 가상과 물리적 블록 어드레스들 사이의 매핑을 포함한다. 다양한 실시예들에서, 각 플래시 다이에서의 N개의 블록들 중 일부는, 가상과 물리적 블록 어드레스들 사이의 매핑이 R-블록들에서의 블록들 중 결함이 있는 블록들을 대체하기 위해 스페어(그렇지 않으면 미사용됨) 블록들을 갖도록 스페어들로서 사용된다.
블록들이 R-블록을 형성하는 일부로서 쌍으로 또는 다른 연관된 그룹들로 취급되는 다양한 실시예들에서, 블록들의 연관된 그룹의 각 블록으로부터의 각각의 페이지들은 적어도 기록을 위해 단위로서 또한 취급되어, 더 큰 멀티-블록 페이지를 형성한다. 예를 들어, 상기 듀얼 평면 예에 계속하여, 짝수 블록들 중 특정한 하나의 제 1 페이지 및 홀수 블록들 중 연관된 하나의 제 1 페이지가 기록을 위한 단위로서 취급되고, 옵션으로 및/또는 선택적으로 판독을 위한 단위로서 취급된다. 유사하게는, 특정 짝수 블록의 제 2 페이지 및 연관된 홀수 블록의 제 2 페이지가 단위로서 취급된다. 다양한 실시예들에 따르면, 여기에서 사용되는 바와 같은 NVM의 페이지는, NVM의 단일 페이지, NVM의 멀티-블록 페이지, 판독을 위한 하나 또는 그 초과의 개별 페이지들로서 옵션으로 및/또는 선택적으로 취급되는 기록을 위한 NVM의 멀티-블록 페이지, 및 NVM의 페이지들의 임의의 다른 그룹화 또는 연관 중 하나 또는 그 초과를 지칭한다.
일부 실시예들에서, 상위 레벨 리던던시 정보는 데이터의 상이한 부분들에 대해 상이한 다이에 저장된다. 예를 들어, 플래시 다이가 R-블록들에서 관리되는 일부 실시예들에서, 상위 레벨 리던던시 정보는 상이한 R-블록들에 대해 상이한 플래시 다이에 저장된다. 예를 들어, 플래시 다이(710.0)의 블록 0을 포함하는 R-블록에 대한 상위 레벨 리던던시 정보는 플래시 다이(710.0)에 저장되고, 플래시 다이(710.0)의 블록 1을 포함하는 R-블록에 대한 상위 레벨 리던던시 정보는 플래시 다이(710.1)에 저장된다. 플래시 다이가 R-블록들에서 관리되는 일부 실시예들과 같은 일부 실시예들에서, 상위 레벨 리던던시 정보는 상위 레벨 리던던시 정보가 의존하는 데이터가 알려지고/지거나 기록된 이후에 기록된다.
일부 사용 시나리오들에서, NVM 소자들의 하나 또는 그 초과의 부분들(예를 들어, 도 6의 디바이스(601)의 블록(639)과 같은 디바이스의 블록)은 동작 동안, 동작불능이거나 동작불능이 된다. 일부 실시예들에서, 동작불능 부분들은 가상 및 물리적 블록 어드레스들을 통해(예를 들어, 도 1a의 맵(141) 및/또는 테이블(143)을 통해 수행된 프로세싱을 통해) 매핑 아웃(map out)된다. 다르게는, 동작불능 부분들은 (명시적으로 매핑 아웃되기 보다는) 스킵된다. R-블록들에 기초한 일부 실시예들에서, 스킵하는 것은 상이한 수의 블록들을 갖는 R-블록들 중 일부를 발생시킨다. 예를 들어, 블록(710.0B0)이 결함이 있고 사용불가능하면, R-블록(760.0)은 R-블록(760.1) 보다 하나 더 적은 블록을 갖는다. 상위 레벨 리던던시 정보는 예를 들어, 각 R-블록의 최종 블록인 (R-블록 마다) 가변 위치에 기록된다.
다양한 실시예들에서, 도 7a의 하나 또는 그 초과의 소자들은 도 1a의 하나 또는 그 초과의 소자들에 대응한다. 예를 들어, 플래시 디바이스(들)(720) 및 여분 플래시 디바이스(들)(740)은 일괄적으로 NVM(199)에 대응하고, 인터페이스 채널(들)(730) 및 여분 인터페이스 채널(들)(750)은 일괄적으로 디바이스 인터페이스들(190)에 대응한다. 다른 예에 있어서, 플래시 다이(710.65 ... 710.0)는 일괄적으로 플래시 다이(194)의 인스턴스들에 대응한다. 또 다른 예에 있어서, 플래시 디바이스(들(720) 및/또는 여분 플래시 디바이스(들)(740)의 플래시 디바이스들 중 하나 또는 그 초과는 플래시 디바이스들(192)의 인스턴스들 중 하나 또는 그 초과에 대응한다. 다양한 실시예들에서, 도 1a의 하나 또는 그 초과의 소자들은 여기에 설명하는 RASIE 동작 모드들에 따라 상위 레벨 리던던시 정보를 관리하고/하거나 상위 레벨 리던던시 정보에 적어도 부분적으로 기초하여 사용자 데이터를 복구한다. 예를 들어, CPU(171)의 소프트웨어 실행 능력들 중 일부가 다양한 RASIE 동작 모드들에 따라 상위 레벨 리던던시 정보의 계산을 관리하기 위해 사용된다. 다른 예에 있어서, 데이터 프로세싱(121) 및/또는 ECC-X(135)는 다양한 RASIE 동작 모드들에 따른 상위 레벨 리던던시 정보의 계산 및/또는 사용자 데이터의 복구에 전용되고/되거나 특수화된 하드웨어 소자들을 포함한다. 또 다른 예에 있어서, ECC(161)는 플래시 다이의 부분의 ECC-정정불가능한 (하위 레벨) 판독 에러를 검출하고, ECC-X(135)는 RASIE (상위 레벨) 판독 에러를 검출하고/하거나 그것의 정정을 인에이블한다.
다양한 실시예들에서, 인터페이스 채널(들)(730)은 1개, 4개, 8개, 또는 16개의 채널들을 다양하게 갖고, 여분 인터페이스 채널(들)(750)은 1개 또는 2개의 채널들을 다양하게 갖는다. 다양한 실시예들에서, 플래시 디바이스(들)(720)는 각각이 64개, 32개, 16개, 8개, 및 4개의 플래시 다이를 각각 갖는 1개, 2개, 4개, 8개, 또는 16개의 디바이스들로서 구현된다. 다양한 실시예들에서, 여분 플래시 디바이스(들)(740)는 1개 또는 2개의 다이를 갖는 하나의 디바이스로서 또는 하나의 다이를 각각 갖는 2개의 디바이스로서 구현된다. 일부 실시예들에서, 여분 플래시 디바이스(들)(740)의 플래시 다이는 플래시 디바이스(들)(720)의 플래시 다이를 또한 구현하는 디바이스들에서 구현된다. 예를 들어, 하나의 플래시 디바이스는 66개의 플래시 다이(플래시 다이(710.65 ... 710.0))를 구현한다. 다른 예에 있어서, 2개의 플래시 디바이스들은 예를 들어, 제 1 플래시 디바이스(플래시 다이(710.65 ... 710.33) 및 제 2 플래시 디바이스(플래시 다이(710.32 ... 710.0)에서 33개의 플래시 다이를 각각 구현한다. 플래시 다이 및 플래시 디바이스들의 다른 배열들이 예상된다. 플래시 디바이스(들)(720)의 플래시 다이를 또한 구현하는 디바이스들에서 구현된 여분 플래시 디바이스(들)(740)를 갖는 일부 실시예들에서, 플래시 다이는 공유 인터페이스 채널들을 통해, 또는 다르게는 플래시 다이의 특정한 다이들(또는 세트들)에 전용된 인터페이스 채널들을 통해 통신한다. 플래시 디바이스(들)(720) 및 여분 플래시 디바이스(들)(740)가 특정한 수의 플래시 다이(각각, 2개 및 64개)로 예시되어 있지만, 2개, 4개, 8개, 16개, 32개, 또는 128개 플래시 다이를 갖는 플래시 디바이스(들)(720) 및/또는 0개, 1개, 또는 4개 플래시 다이를 갖는 여분 플래시 디바이스(들)(740)와 같은 다른 실시예들이 예상된다.
도 8은 도 7a 및/또는 도 7b에 의해 예시된 다양한 실시예들에 의해 인에이블된 RASIE 모드들 사이의 동적 스위칭과 같이, RASIE를 갖는 동적 상위 레벨 리던던시 모드 관리의 실시예의 선택된 상세들을 예시한다. 일부 실시예들 및/또는 사용 시나리오들에서, 단계적 성능저하의 형태가 제공되고, 여기서, 저장 서브-시스템(예를 들어, SSD)은 제 1 상위 레벨 리던던시 모드에서의 동작으로부터 제 2 상위 레벨 리던던시 모드에서의 동작으로 동적으로 천이된다. 이 천이는 전체 플래시 다이 또는 그것의 하나 또는 그 초과의 부분들, 또는 그에 대한 (판독 또는 기록 동작과 같은) 동작의 영구적 또는 간헐적 오동작과 같은 장애의 검출에 응답한다. 다양한 실시예들에 따르면, 천이는 SSD에 대해 글로벌한 것, SSD의 하나 또는 그 초과의 서브세트들상에서 수행된 것, 및 SSD의 하나 또는 그 초과의 R-블록들상에서 수행된 것 중 하나 또는 그 초과이다. 예를 들어, RASIE-2 정보를 저장하는 NVM 디바이스들 중 하나의 특정한 블록이 프로그래밍 동안 고장이면, 특정한 (고장) 블록을 포함하는 R-블록의 후속 동작은 상이한 상위 레벨 리던던시 모드(예를 들어, RASIE-1 모드)로 천이하는 반면에, SSD에서의 다른 R-블록들은 영향을 안 받고 RASIE-2 모드에서 계속 동작한다.
도 8에 관하여, 프로세싱은 제 1 상위 레벨 리던던시 모드에 따라 플래시 다이에 배열된 상위 레벨 리던던시 정보 및 데이터 저장(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간)으로 시작한다(제 1 상위 레벨 리던던시 모드(802)에서 동작). 그 후, 흐름은 하위 레벨 정정불가능한 판독 에러 또는 기록/프로그램 장애와 같은, 장애가 검출되었는지의 결정으로 진행한다(실패?(803)). 장애가 검출되지 않으면, 흐름은 제 1 상위 레벨 리던던시 모드에서 계속 동작하도록 역으로 진행한다. 장애가 검출되면, 흐름은 제 1 상위 레벨 리던던시 모드에서의 동작으로부터 제 2 상위 레벨 리던던시 모드에서의 동작으로 스위칭하도록 진행한다. 스위칭은 장애를 설명하기 위해 데이터 저장에 이용가능한 공간을 (옵션으로) 감소시킴으로써 시작한다(자유 공간 감소(804)). 제 2 상위 레벨 리던던시 모드가 제 1 상위 레벨 리던던시 모드 보다 충분하게 적은 상위 레벨 리던던시 정보를 사용하면, 가용 공간의 감소가 생략된다. 스위칭은 제 2 상위 레벨 리던던시 모드에 따라 데이터 저장부를 재구성함으로써 계속된다(데이터 저장부 재배열(805)). 재구성은 장애가 발생한 플래시 다이로부터 플래시 다이 중 다른 하나로 모든 사용자 데이터 및/또는 사용자 자유 공간을 옵션으로 이동시키는 것을 포함한다(사용자 자유 공간 이동은 일부 실시예들에서, 포인터들 및/또는 다른 데이터 구조 소자들의 조작에 의해 수행된다). 스위칭은 제 1 상위 레벨 리던던시 모드의 상위 레벨 리던던시 정보를 통해, 장애가 발생한 플래시 다이에 저장된 임의의 사용자 데이터를 (가능하면) 선택적으로 복구하고, 제 2 상위 레벨 리던던시 모드에 따라 복구된 사용자 데이터를 플래시 다이 중 다른 하나에 기록함으로써 더 계속된다(장애 사용자 데이터를 복구/저장(806)). 복구는 장애가 기록/프로그램 장애이면 생략된다. 스위칭은 제 2 상위 레벨 리던던시 모드에 따라 상위 레벨 리던던시 정보를 옵션으로 계산하고 플래시 다이에 기록함으로써 더 계속된다(수정된 상위 레벨 리던던시 정보를 결정/저장(807)). 계산 및 기록은, 제 2 상위 레벨 리던던시 모드가 제 1 상위 레벨 리던던시 모드에서의 동작으로 인해 이전에 제자리에 있는 상이 레벨 리던던시 정보와 동작가능한 경우에 생략된다. 그 후, 동작은 제 2 상위 레벨 리던던시 모드에서 시작한다(제 2 상위 레벨 리던던시 모드에서 동작(808)).
장애 검출(장애?(803))은 (예를 들어, 하나 또는 그 초과의 ECC 기법들에 따른) 하위 레벨 에러 정정, (예를 들어, 하나 또는 그 초가의 RASIE 기법들에 따른) 상위 레벨 에러 정정, 및 플래시 다이 중 하나 또는 그 초과 또는 그것의 부분들에 의해 보고된 고장 상태 중 하나 또는 그 초과를 통한다. 예를 들어, 특정한 플래시 다이의 특정한 부분내의 판독들의 임계수 보다 많은 하위 레벨 정정들은 옵션으로 및/또는 조건적으로, 고장으로서 취급되는 특정한 플래시 다이(또는 특정한 부분)를 발생시키고, 상위 레벨 리던던시 모드 스위칭은 고장 플래시 다이(또는 부분)가 더 이상 사용되지 않도록 수행된다. 다른 예에 있어서, 상위 레벨 에러 정정이 실패하면, 플래시 다이 중 적절한 하나(또는 그것의 부분)가 장애로서 취급되고, 상위 레벨 리던던시 모드 스위칭은 장애 플래시 다이(또는 부분)가 더 이상 사용되지 않도록 수행된다. 또 다른 예에 있어서, 플래시 다이가 (기록 동작이 성공하지 못하였다는 것을 나타내는) 프로그램 장애 상태를 리턴하면, 플래시 다이 중 적절한 하나의 적절한 블록이 장애로서 취급되고, 옵션으로 및/또는 선택적으로 상위 레벨 리던던시 모드 스위칭이 장애 플래시 다이가 더 이상 사용되지 않도록 수행된다.
일부 실시예들에서, 장애 블록은 가상 및 물리적 블록 어드레스들을 통해(예를 들어, 도 1a의 맵(141) 및/또는 테이블(143)을 통해 수행된 프로세싱을 통해) 재매핑함으로써 대체된다. 스페어 블록들의 풀(pool)로부터의 스페어 블록이 장애 블록 대신에 매핑된다. 장애 블록에 기록된 임의의 콘텐츠는 대체 블록에 카피되고, 기록은 실패가 장애 블록에서 발생한 곳으로부터 스페어 블록에서 진행된다.
일부 실시예들에서, 장애 블록은 (명시적으로 재매핑되기 보다는) 스킵되고, 이것은 "홀(hole)"을 발생시키고, 이 홀은 홀이 있는 R-블록이 (재기록을 위한 준비에서) 다음에 소거될 때 상위 레벨 리던던시 스위치 모드를 옵션으로 및/또는 조건적으로 발생시킨다. 홀이 데이터 저장을 위한 위치에 있는 경우에, 스위칭은 이루어지지 않으면, 홀은 유지된다. 홀이 상위 레벨 리던던시 정보에 대한 위치에 있는 경우에, 상위 레벨 리던던시 정보는 다른 위치에 저장되고, 옵션으로, 상위 레벨 리던던시 모드가 스위칭된다.
일부 실시예들 및/또는 사용 시나리오들에서, 장애가 발생한 플래시 다이에 저장된 사용자 데이터의 복구는 가능하지 않다. 예를 들어, 장애가 상위 레벨 에러 정정을 통해 검출된 일부 타입의 실패들 및/또는 플래시 다이 중 하나 또는 그 초과 또는 그것의 부분들에 의해 보고된 일부 타입의 장애 상태로 인한 것이면, 일부 사용자 데이터가 분실될 수도 있다.
일부 실시예들에서, 도 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은 상위 레벨 리던던시 정보에 대해 사용된 하나의 플래시 다이 및 데이터 저장을 위해 사용된 62개의 플래시 다이를 제외하고 RASIE-1 모드 1-0와 유사하다).
특정한 예로서, 제 1 상위 레벨 리던던시 모드에서의 동작에 대응하는 RASIE-2 모드 2-2(예를 들어, 플래시 다이(710.65) 및 플래시 다이(710.64)에서의 상위 레벨 리던던시 정보, 및 플래시 다이(710.63 ... 710.0)에서의 데이터 저장)에서 초기에 동작하는, 도 7a의 소자들에 커플링된 (도 1a의 SSD 제어기(100)와 같은) SSD 제어기를 고려한다. 그 후, 플래시 다이 중 하나 또는 그 초과의 판독, 또는 다르게는 기록이 수행된다. 플래시 다이 중 특정한 하나의 부분(예를 들어, 사용자 데이터 및/또는 사용자 자유 공간에 대해 사용된 플래시 다이(710.62)의 페이지)에서, 판독은 정정불가능한 (하위 레벨) ECC 장애를 발생시키거나, 다르게는, 기록은 비성공이다. 이에 응답하여, SSD 제어기는 어떠한 플래시 다이(710.62)도 더 이상 사용하지 않고 RASIE-2 모드 2-2에서의 동작으로부터 RASIE-2 모드 2-1로 동적으로 스위칭한다. RASIE-2 모드 2-1에서의 동작이 데이터 저장을 위한 63개 다이(이에 비해, RASIE-2 모드 2-2에서는 64개 다이)를 제공하기 때문에, 데이터 저장을 위해 이용가능한 공간이 64개 다이로부터 63개 다이로 감소되고, 사용자 데이터 및/또는 사용자 자유 공간이 그에 따라 이동된다. 예를 들어, 플래시 다이(710.62)로부터의 모든 사용자 데이터는 사용자 자유 공간에 따라 플래시 다이(710.63) 및 플래시 다이(710.61 ... 710.0)의 부분들로 이동된다. 정정불가능한 ECC 장애를 갖는 페이지에서의 임의의 사용자 데이터는 플래시 다이(710.65) 및/또는 플래시 다이(710.64)에서의 상위 레벨 리던던시 정보에 기초하여 복구된다. 플래시 다이(710.63) 및 플래시 다이(710.61 ... 710.0)에서의 데이터 저장에 기초하고 RASIE-2 모드 2-1에 따른 상위 레벨 리던던시 정보는 플래시 다이(710.65) 및/또는 플래시 다이(710.64)에서 계산되고 저장된다. 그 후, SSD 제어기는 RASIE-2 모드 2-1에서 동작한다(플래시 다이(710.65) 및 플래시 다이(710.64)에서의 상위 레벨 리던던시 정보, 및 플래시 다이(710.63) 및 플래시 다이(710.61 ... 710.0)에서의 데이터 저장).
전체 플래시 다이의 단위의 독립적 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리의 여러 실시예들을 상술하였지만, 다른 실시예들은 하나 또는 그 초과의 페이지들, 블록들, 또는 R-블록들과 같은 다이의 부분들인 독립적 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리를 구현한다.
다양한 실시예들에서, 도 8의 하나 또는 그 초과의 소자들의 프로세싱 또는 그 소자들에 관한 프로세싱은 도 1a의 하나 또는 그 초과의 소자들(또는 그것의 부분들)에 의해 전체적으로 또는 부분적으로 수행된다. 예를 들어, CPU(171)의 소프트웨어 실행 능력들 중 일부가 예를 들어, 데이터 저장에 대해 이용가능한 공간의 감소를 지시하거나 데이터 저장의 재구성을 지시함으로써, 상위 레벨 리던던시 모드들 사이의 동적 천이를 관리하기 위해 사용된다. 다른 예에 있어서, 데이터 프로세싱(121) 및/또는 ECC-X(135)는 '타겟' 리던던시 모드에 따른 상위 레벨 리던던시 정보의 계산에 전용되고/되거나 특수화된 하드웨어 소자들을 포함한다. 또 다른 예에 있어서, ECC(161)는 정정불가능한 에러들의 하위 레벨(예를 들어, ECC) 에러 정정 및 검출을 구현하고, ECC-X(135)는 정정불가능한 에러들 및/또는 메모리 소자 장애들의 상위 레벨(예를 들어, RASIE) 에러 정정 및 검출을 구현한다. 다른 예에 있어서, (상위 레벨) 리던던시 모드들 사이의 동적 천이에 관한 기능 중 모두 또는 임의의 부분들이 ECC-X(135)의 하나 또는 그 초과의 부분들에 의해 수행된다.
상위 레벨 리던던시 및 적응형 하위 레벨 코드 레이트들
일부 실시예들 및/또는 사용 시나리오들에서, 하위 레벨 에러 정정은 적응형 코드 레이트(예를 들어, 가변 코드 레이트를 사용하는 적응형 ECC 기법)을 사용한다. 예를 들어, 제 1 판독 유닛은 제 2 코드 레이트로 관리되는 제 2 판독 유닛 보다 비교적 많은 사용가능한 데이터 비트들을 제공하는 제 1 코드 레이트로 관리된다. 가변 코드 레이트를 사용하는 하위 레벨 정정을 갖는 일부 실시예들 및/또는 사용 시나리오들에서, 상위 레벨 리던던시 정보는 상위 레벨 리던던시 정보에 의해 보호된 데이터 저장부에 관하여 비교적 더 많은 사용가능한 데이터 비트들 또는 가장 사용가능한 데이터 비트들을 제공하는 하위 레벨 에러 정정으로 관리되는 (플래시 다이의 부분들과 같은) 독립적 실리콘 소자들의 부분에 저장된다. 다양한 실시예들 및/또는 사용 시나리오들에서, 상위 레벨 리던던시 정보가 저장되는 부분(들)은 R-블록 마다에 기초하고, 다이 마다에 기초하고, 시간을 통해 동적으로, 또는 이들의 임의의 조합으로 변한다. 다양한 실시예들에서, 하나 또는 그 초과의 다이, R-블록들, 블록들 및/또는 페이지들은 하위 레벨 에러 정정 코드 레이트에 관하여 가장 사용가능한 데이터를 갖는 것에 기초하여 상위 레벨 리던던시 데이터의 저장을 위해 선택된다.
예를 들어, 상위 레벨 리던던시 정보는 R-블록 마다에 기초하여 (블록 위치들과 같은) 변화하는 위치들에서 저장되고, (블록들과 같은) 위치들은 하위 레벨 에러 정정 코드 레이트에 기초한 가장 사용가능한 데이터를 갖는 위치들이다. 임의의 예에서, 도 7a의 컨텍스트에서 RASIE-2 동작 모드 시나리오를 고려하고, 여기서, 66개 플래시 다이의 집합이 각각 1-블록 높이의 M개까지의 R-블록들의 논리적 "스택"으로서 취급되고, 여기서, M은 플래시 다이 당 블록들의 수이다. (가장 개념적으로 직접적인 경우에서, 스택에서의 각 R-블록은 각 다이로부터 동일한 물리적 블록 수로 이루어지지만, 장애 블록들을 수용하기 위해, 이러한 제약은 적어도 일부 실시예들에서 해제된다. 또 다른 실시예에서, 이 제약은 유지되지만, "홀들"이 장애 블록들에 대응하여 수용된다.) 따라서, 각 R-블록은 플래시 다이(710.0) 내지 플래시 다이(710.65) 각각으로부터 하나의 블록에 대응하여 66개까지의 블록을 갖는다. (도 7a에서, 범위 710.0 내지 710.65에서 일부 플래시 다이만이 명시적으로 열거되었지만, 이러한 범위에서의 모든 플래시 다이가 암시적으로 예시된다는 것이 생략의 사용에 의해 이해된다.) 상위 레벨 리던던시 정보는 하위 레벨 정정 코드 레이트에 기초하여 가장 사용가능한 데이터를 갖는 각 R-블록의 어느 블록들에나 기록된다. 예를 들어, 제 1 R-블록에서, 플래시 다이(710.15 및 710.49)에 대응하는 블록들이 하위 레벨 에러 정정 코드 레이트에 기초하여 가장 사용가능한 데이터를 갖게 되면, 상위 레벨 리던던시 정보는 (플래시 다이(710.15 및 710.49)에 대응하는) 이들 블록들에 기록된다. 제 2 R-블록에서, 플래시 다이(710.9 및 710.35)에 대응하는 블록들이 하위 레벨 에러 정정 코드 레이트에 기초하여 가장 사용가능한 데이터를 갖게 되면, 상위 레벨 리던던시 정보는 (플래시 다이(710.9 및 710.35)에 대응하는) 이들 블록들에 기록된다. 일부 실시예들에서, 상위 레벨 리던던시 데이터는 R-블록에서의 모든 다른 데이터가 알려진 이후에 기록된다.
도 9는 판독 유닛들 중 하나 또는 그 초과의 판독 유닛에 저장된 상위 레벨 리던던시 정보에 의해 보호된 적응형(예를 들어, 시간을 통해 및/또는 위치에 의해 상이하고/하거나 변화함) 코드 레이트들의 하위 레벨 리던던시 정보를 갖는 판독 유닛들(911, 931 ... 951, 971)의 실시예를 예시한다. 판독 유닛들 각각은 사용자 데이터(911.U, 931.U ... 951.U, 971.U)를 포함하도록 인에이블되고/되거나 할당된 부분, 및 하위 레벨 ECC(911.E, 931.E ... 951.E, 971.E)와 같은 ECC 코드의 체크 비트들과 같은 하위 레벨 리던던시 정보를 포함하도록 인에이블되고/되거나 할당된 나머지 부분을 갖는다.
도면에서, 수직 치수는 상대적으로 일정한 비율이고, 상대적 사이즈를 나타낸다. 따라서, 판독 유닛들(911 및 951)은 동일한 제 1 사이즈(일부 실시예들에서는, 모든 판독 유닛들이 모든 NVM 디바이스들의 모든 블록들에 대해 동일한 사이즈이다)이고, 하위 레벨 ECC 부분들(931.E 및 951.E)은 동일한 제 2 사이즈이며, 하위 레벨 ECC 부분들(911.E 및 971.E)은 동일한 제 3 사이즈이다. 판독 유닛(931)은 판독 유닛(971) 보다 큰 판독 유닛들(911 및 951) 보다 크다. 사용자 데이터 부분(931.U)은 사용자 데이터 부분(951.U) 보다 크다. 사용자 데이터 부분(951.U)은 사용자 데이터 부분(911.U) 보다 크다. 하위 레벨 ECC 부분(951.E)은 하위 레벨 ECC 부분(911.E) 보다 작다.
도면에 예시한 바와 같이, 각각의 판독 유닛들은 예를 들어, NVM의 각각의 블록 마다 각각의 사이즈들을 갖고, 이것은 각각의 블록들에서 사용될 때 하위 레벨 코드 레이트들의 변화를 인에이블한다. 더욱 구체적으로는, 판독 유닛들(931 및 951)은 동일한 양의 하위 레벨 리던던시 정보(931.E 및 951.E)를 갖지만, 판독 유닛(931)의 하위 레벨 코드 레이트는, 판독 유닛(931)이 (사용자 데이터(951.U)를 포함하는) 판독 유닛(951) 보다 많은 사용자 데이터(931.U)를 포함하기 때문에 판독 유닛(951)의 하위 레벨 코드 레이트 보다 높다.
도면에 예시한 바와 같이, 각각의 판독 유닛들은 사용자 데이터의 각각의 사이즈들을 갖고, 이것은 동일한 사이즈의 2개 또는 그 초과의 판독 유닛들 각각에서 사용자 데이터의 다양한 사이즈들을 인에이블한다. 예를 들어, 사용자 데이터의 사이즈는 특정한 판독 유닛에서 사용된 하위 레벨 코드 레이트를 변경하도록 변화된다. 더욱 구체적으로는, 판독 유닛들(951 및 911)은 동일한 사이즈를 갖지만, 사용자 데이터(951.U 및 911.U)의 상이한 각각의 양들 및 그에 따른 하위 레벨 리던던시 정보(951.E 및 911.E)의 상이한 각각의 양들을 가져서, 이것은 판독 유닛(951)이 판독 유닛(911) 보다 높은 하위 레벨 코드 레이트 를 갖게 할 수 있다.
일부 실시예들 및/또는 사용 시나리오들에서, 하위 레벨 코드 레이트를 변화시키고/시키거나 변경하는 것은 바람직하게는, 사용자 데이터의 양을 최대화하면서 하위 레벨 에러 정정 요건들을 달성하기 위해 충분한 양의 하위 레벨 ECC 정보의 제공을 인에이블한다.
판독 유닛들에서 변화하는 사용자 데이터량을 갖는 일부 실시예들에서, 상위 레벨 리던던시 정보는 가장 큰 사용자 데이터량을 갖는 판독 유닛들 중 하나 또는 그 초과에 저장된다. 예를 들어, 도 9에서, RASIE-1 모드를 사용하여, 상위 레벨 리던던시 정보는 사용자 데이터(931.U)에 저장되고, RASIE-2 모드를 사용하여, 상위 레벨 리던던시 정보는 사용자 데이터(931.U) 및 사용자 데이터(951.U)에 저장된다. (상위 레벨 리던던시 정보에 의해 보호된 판독 유닛들 중에서) 가장 큰 사용자 데이터량을 갖는 판독 유닛들에 상위 레벨 리던던시 정보를 저장하는 것은, 모든 다른 판독 유닛들에서 사용자 데이터를 보호하기 위해 충분한 상위 레벨 리던던시 정보가 있다는 것을 보장한다.
다양한 실시예들에 따르면, 하나 또는 그 초과의 기법들이 상위 레벨 리던던시 정보에 의해 보호된 다수의 판독 유닛들 중에서 하나 또는 그 초과의 판독 유닛들 중 어느 것이 상위 레벨 리던던시 정보를 저장하기 위해 사용되는지를 결정하기 위해 사용된다. 제 1 예에서, 가장 큰 사용자 데이터량을 갖는 가장 늦게 기록된 하나(RASIE-1용) 또는 2개(RASIE-2용) 판독 유닛들이 사용된다. 제 2 예에서, 가장 큰 사용자 데이터량을 갖는 가장 빨리 기록된 하나(RASIE-1용) 또는 2개(RASIE-2용) 판독 유닛들이 사용된다. 유사하게는, 다른 판독 유닛들에서 모든 나머지 사용자 데이터를 보호하기 위해 가장 큰 사용자 데이터량을 갖는 하나 또는 그 초과의 판독 유닛들을 결정적으로 선택하기 위한 임의의 기법이 여기에서 고려하는 기법들의 범위내에 있다.
상위 레벨 리던던시 정보 계산 기법들
다양한 실시예들 및/또는 사용 시나리오들에서, 상위 레벨 리던던시 정보는 패리티, RS, 및/또는 가중합 기법들을 통해서와 같이 다양한 기법들로 계산된다. 예를 들어, 하나의 (하위 레벨) 장애(예를 들어, RASIE-1)로부터의 복구를 인에이블하는 일부 상위 레벨 리던던시 모드들에서, 상위 레벨 리던던시 정보는 패리티 기법들을 통해 계산된다. 다른 예에 있어서, 2개의 (하위 레벨) 장애들(예를 들어, RASIE-2)로부터의 복구를 인에이블하는 일부 상위 레벨 리던던시 모드들에서, 상위 레벨 리던던시 정보는 패리티와 RS 기법들의 조합을 통해 계산된다. 상위 레벨 리던던시 정보의 제 1 부분은 패리티 코딩을 사용하여 계산되고 제 2 부분은 RS 코딩을 사용하여 계산된다. 또 다른 예에 있어서, 2개의 장애들(예를 들어, RASIE-2)로부터의 복구를 인에이블하는 일부 상위 레벨 리던던시 모드들에서, 상위 레벨 리던던시 정보는 패리티와 가중합 기법들의 조합을 통해 계산된다. 상위 레벨 리던던시 정보의 제 1 부분은 패리티 코딩을 사용하여 계산되고 제 2 부분은 가중합 코딩을 사용하여 계산된다. 상위 레벨 리던던시 정보는 상위 레벨 리던던시 정보에 의해 보호된 데이터를 저장하기 위해 이용가능한 NVM의 페이지들에 대해 사용된 하위 레벨 장애 검출 기법들과 동일하거나 유사한 (ECC와 같은) 하위 레벨 장애 검출 기법들을 사용하여, 예를 들어, NVM의 페이지들의 판독들 및 기록들을 통해 관리된다.
RASIE-2에 대한 특정한 예로서, 상위 레벨 리던던시 정보의 제 1 페이지는 R-블록에 걸친 스트라이프에서 모든 제 1 페이지들의 XOR를 통해 패리티 코딩을 사용하여 계산된다. 더욱 구체적으로는, XOR는 R-블록에 걸친 스트라이프에서 모든 제 1 페이지들의 모든 제 1 바이트들에 수행되고, 이것은 상위 레벨 리던던시 정보의 제 1 페이지의 제 1 바이트를 발생시킨다. 유사하게는, 상위 레벨 리던던시 정보의 제 2 바이트는 스트라이프에서 모든 제 1 페이지들의 모든 바이트들에 대해 R-블록에 걸친 스트라이프에서 모든 제 1 페이지들의 모든 제 2 바이트들을 XOR 등등을 함으로써 형성된다. 상위 레벨 리던던시 정보의 제 2 페이지는 아래와 같이 가중합 기법을 사용하여 계산된다.
산술은 (일례로서 사용된) 갈르와체와 같은 유한 필드를 통해 수행된다. 예들은 연산되는 데이터가 바이트-폭(byte-wide)이고, 따라서 GF(256)와 같은 필드가 사용된다는 것을 가정한다. 다양한 실시예들에서, 데이터는 임의의 단위들로 연산된다.
스트라이프에서의 각 페이지에는 고유 넌-제로 "인덱스"가 할당된다. 인덱스들의 값들은 구현 복잡성을 단순화하도록 선택되고, 임의의 형태의 생성 다항식(generator polynomial)에 관련되지 않는다. 예를 들어, 페이지들은 0으로부터 N-1까지의 스트라이프에서의 다이 위치에 의해 (소프트웨어에 의해) 라벨링되고, 인덱스들에 대한 적절한 값은 (N<255인 경우에 넌-제로이도록 보장된) 다이 수의 1의 보수(ones-complement)이다. 인덱스 갓들의 다른 선택은 예를 들어, 하드웨어 비용을 감소시키고/시키거나 최소화하기 위한 최저 가중(가장 적은 수의 세트 비트들 또는 가장 적은 수의 클리어 비트들) 넌-제로 정수들이다. 일부 실시예들 및/또는 사용 시나리오들에서, 인덱스들에 대한 그레이-코딩된 값들의 선택은 페이지들이 프로세싱될 때 천이들을 최소화시키고/시키거나 전력을 감소시킨다.
인덱스 값들은 유한체 산술에 따라 선택되지 않고 다른 원리들에 따라 선택된다. 이에 불구하고, 각 인덱스 값은 유한체에서의 넌-제로 원소에 대응한다. 페이지 i가 인덱스 값 Ki를 갖는다(그리고 페이지 j가 인덱스 값 Kj를 갖는다)는 것을 가정한다. 가중합 리던던시는 Ki*Pi의 (각 페이지 i로부터의 대응하는 바이트들 Pi을 통한) (GF 필드) 합이고, 각 바이트는 그것의 인덱스 값에 의해 (GF 필드에 통해) 승산된다.
따라서, 가중합 리던던시 정보는 각 바이트에 대해 다음과 같이 계산된다:
R0 = 모든 대응하는 바이트들 Pi를 통한 합;
R1 = 모든 대응하는 바이트들 Ki*Pi를 통한 합;
R0는 모든 대응하는 바이트들의 XOR이며;
R1은 바이트들의 가중합이고, 여기서, 가중치들은 인덱스 값들로서 선택된다. 상술한 계산은 페이지에서 대응하는 바이트들 각각에 대해 반복되어, R0 및 R1 각각에 대한 바이트들의 대응하는 페이지들을 생성한다. 아래의 논의에서, R0 및 R1은 설명의 명확화를 위해 일부 컨텍스트들 각각에서 단일 원소들(예를 들어, 각각 단일 바이트)로서 설명되지만, 상술한 계산에서와 같이, 각각 원소들의 각각의 페이지를 나타낸다(예를 들어, 각각 바이트들의 페이지).
Pi는 페이지 i에서의 바이트를 나타내고, Pj는 페이지 j에서의 바이트를 나타낸다. 프로세싱이 각 페이지로부터의 대응하는 바이트들의 하나의 스트라이프에 관하여 설명되고, 모든 대응하는 바이트들을 통해 반복이 수행된다. 일부 페이지들이 상이한 (하위 레벨) 리던던시 코드 레이트를 갖는 것으로 인해 다른 페이지들 보다 "짧으면", 더 짧은 페이지들은 제로-패딩되어(zero-padded)(또는 인코딩 및 디코딩시에 동일한 방식으로 사용된 임의의 알려진 값으로 패딩되어), 프로세싱되는 모든 페이지들이 유효하게 동일한 사이즈를 갖는다.
R0 및 R1을 계산하기 위한 합산들은 다양한 실시예들에 따라 다양한 직렬 및/또는 병렬 계산들을 통해 임의의 순서로 수행가능하다. 페이지들은 Kj*Pj가 R1의 결과에 대한 영향력을 갖지 않기 이전 또는 이후에 Ki*Pi가 가산되는지에 관하여 임의의 특정한 순서로 프로세싱되지 않아야 한다. 리던던시 정보의 페이지의 다양한 바이트들에 대응하는 R0 및 R1 값들의 계산은 서로 독립적이고, 다양한 실시예들에 따라 다양한 직렬 및/또는 병렬 계산들을 통해 임의의 순서로 계산가능하다. 또한, R1으로부터 Ki*Pi의 감산(및 R0으로부터 Pi의 감산)은 페이지들에 대한 계산 효과들의 "백아웃(back out)"을 인에이블한다. 일부 실시예들 및/또는 사용 시나리오들에서, GF 필드를 통해, 가산 및 감산 양자가 XOR이기 때문에(따라서, 감산은 제 2 시간에 단순히 가산과 등가임), 페이지를 "백아웃"하기 위한 특수한 하드웨어가 GF 필드 구현들을 위해 필요하지 않다(예를 들어, 논리 XOR 능력으로 충분하다).
정정불가능한 하위 레벨 에러의 경우에, 일부 실시예들에서, 상위 레벨 정정은 R0 및 R1을 재계산하지만, 정정불가능한 하위 레벨 에러들을 갖는 (때때로, 컬럼(들)이라 칭하는) 페이지(들)를 생략함으로써 시작한다. 정정은 재계산된 R0를 원래의 R0으로부터 감산하여
Figure 112013058394670-pct00009
R0를 생성하고, 재계산된 R1을 원래의 R1로부터 감산하여
Figure 112013058394670-pct00010
R1을 생성함으로써 진행된다.
정정불가능한 하위 레벨 에러들이 없는 경우에, 재계산된 R0 및 R1은 모두 제로이다. 정정불가능한 하위 레벨 에러들이 있는 경우에, (감산 이후의) 재계산된 R0 및 R1은 (제 2 시간에 가산되지 않지만 원래의 값들에 존재하는) "미싱(missing)" 데이터를 반영한다.
하나의 정정불가능한 하위 레벨 에러들이 있는 경우에, 재계산된 R0은 에러를 정정하기 위해 사용된다(그리고 재계산된 R1은 필요하지 않다).
2개의 정정불가능한 하위 레벨 에러들이 있는 경우에, 재계산된 R0 및 R1은 에러들을 정정하기 위해 사용된다. R0 및 R1 값들의 페이지들 양자가 정정불가능한 하위 레벨 에러들을 갖는 페이지들이면, 데이터 저장 페이지들의 정정은 필요하지 않다. R1 값의 페이지가 정정불가능한 하위 레벨 에러들을 갖는 페이지들 중 하나이면, 정정은 R0를 통한다(재계산된 R0 값은 정정불가능한 하위 레벨 에러들을 갖는 데이터 저장 페이지의 값이다).
데이터 저장 페이지들에 2개의 정정불가능한 하위 레벨 에러들이 있거나, R0 페이지가 정정불가능한 하위 레벨 에러들을 갖는 페이지들 중 하나이면, 정정은 상기와 같이
Figure 112013058394670-pct00011
R0 및
Figure 112013058394670-pct00012
R1을 계산함으로써 시작된다. R0 페이지가 정정불가능한 하위 레벨 에러들을 갖는 페이지들 중 하나이면,
Figure 112013058394670-pct00013
R0 페이지의 계산은 옵션으로 생략된다. 페이지 i 및 페이지 j가 정정불가능한 하위 레벨 에러들을 갖는 페이지들이면, 재계산된
Figure 112013058394670-pct00014
R0 = Pi + Pj이다. 식 해법은 다음을 생성한다:
Pi = (R1-Kj*
Figure 112013058394670-pct00016
R0)/(Ki-Kj)
Pj =
Figure 112013058394670-pct00017
R0 - Pi
R0가 정정불가능한 하위 레벨 에러들을 갖는 페이지들 중 하나이면, (R0가 R1에 포함되지 않기 때문에),
Figure 112013058394670-pct00018
R1 = Ki*Pi 또는 Pi =
Figure 112013058394670-pct00019
R1/Ki이고, 동일한 결과가 (R0를 무시하기 위해) 상기 공식에서 Kj=0으로 설정함으로써 획득된다.
대안의 실시예에서, 정수 mod p (여기서, p는 소수)에 의해 정의된 유한체가 갈로와체 대신에 사용된다. 계산들은 상술한 바와 동일하고, 가산은 정수 가산 mod p이고, 승산은 정수 승산 mod p이다. 예를 들어, 페이지들이 바이트들의 페이지들이면, 정수들 mod 257의 유한체가 사용된다. 모든 사용자 데이터 바이트들은 0 내지 255의 범위에 있고, 각각 1 바이트에 저장된다. 그러나, R1 결과들은 0 내지 256의 범위의 값들을 갖고, 이것은 표현을 위해 하나 보다 많은 바이트를 요구한다. 0 내지 256의 값을 인코딩하여 저장 공간을 최소화하고 R1 페이지가 감소된 오버헤드로 저장될 수 있게 하는 다수의 방식이 존재한다. 예를 들어, 값들(0 및 256)은 각각 9-비트 시퀀스들(000000000 및 000000001)로서 저장되고, 모든 다른 값들은 8비트로 저장된다. R1 값들의 랜덤한 분포를 가정하면, 저장 오버헤드는 <0.1%이다. 도 9에 관하여 설명한 바와 같이, R1 페이지는 가장 큰 양의 사용자 데이터를 갖도록 선택되어서, 이것은 일부 사용 시나리오들에서 저장 오버헤드가 은닉될 수 있게 한다.
도 10은 예를 들어, 도 7a와 같은 컨텍스트에서 RASIE-2 모드 2-2에 의해 사용된 바와 같이, 및 도 7b에 더 예시되어 있는 바와 같이, 상위 레벨 리던던시 정보 결과 및 데이터 소스 대응점들의 실시예의 선택된 상세들을 예시한다. 도 10은 플래시 다이(710.0, 710.63, 710.64 및 710.65)를 명시적으로 예시하고, 생략(...)에 의해, 플래시 다이(710.1 ... 710.62)를 암시적으로 예시한다. 플래시 다이의 페이지들내의 블록들, 페이지들, 및 바이트들의 선택된 상세가 예시되어 있다. 상위 레벨 리던던시 정보의 제 1 부분은 (플래시 다이(710.64)에 저장된) R0(1010)로서 예시되어 있고, 패리티 코딩을 사용하여 계산된다. 상위 레벨 리던던시 정보의 제 2 부분은 (플래시 다이(710.65)에 저장된) R1(1011)으로서 예시되어 있고, 가중합 코딩을 사용하여 계산된다. 데이터 정보에 대한 저장은 (플래시 다이(710.0 ... 710.63)에 저장된) 데이터(1019)로서 예시되어 있다.
대시(dashed) 화살표(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)의 (모든 플래시 다이에 걸친) 제 1 블록들의 대응하는 최종 페이지들에 기초한 2-페이지 리던던시 계산 결과(R0(1010) 및 R1(1011) 각각에 대해 1 페이지)를 개념적으로 나타낸다.
본 명세서 다른 곳에서 설명된 바와 같이, 일부 실시예들에서, 상위 레벨 리던던시 정보는 데이터의 상이한 부분들에 대해 상이한 다이에 저장된다는 것에 유의한다. 따라서, 일부 실시예들에서, R0 및 R1은 도 10에 예시되어 있는 바와 같이, 2개의 "전용" 다이 보다는 다양한 다이에 걸쳐 저장된다.
도 11은 다양한 실시예들에 따른 다양한 동작 조건들을 갖는, 예를 들어, 도 7a와 같은 컨텍스트에서 RASIE-2 모드 2-2에 의해 사용된 바와 같이 및 도 7b 및 도 10에 더 예시되어 있는 바와 같이, 상위 레벨 리던던시 정보 계산들의 실시예의 선택된 상세들을 예시한다. 더욱 구체적으로는, 도 11은 예를 들어, 도 10의 대시 화살표(1001)에 의해 개념적으로 예시된 2-바이트 리던던시 계산 결과에 따른, R0의 바이트에 대한 패리티 코딩 계산 및 R1의 바이트에 대한 가중합 코딩 계산을 예시한다. 동작 조건은 (갈르와체와 같은) 유한체, (도 11에서의 더미 합산 변수 "I" 값들에 대응하는) 플래시 다이 수의 1-보수인(또는 어떤 다른 고유한 그리고 제로가 아니게 넘버링되는) 인덱스들 및 유한체에서 넌-제로 원소들에 대응하는 인덱스들을 통한 산술의 수행 중 하나 또는 그 초과를 포함한다. 도 11에 예시된 바와 같은 계산은 대응하는 데이터 바이트들에 기초하여, R0 및 R1의 모든 바이트들에 대해 반복된다. 넌-제로 인덱스들은 R1 값들이 Pi의 모든 원소들로부터의 기여도(contribution)를 포함할 수 있게 한다는 것에 유의한다.
따라서, R0의 임의의 바이트들 서로에 대한 계산 또는 R1의 임의의 바이트들 사이에 의존성이 없다. 따라서, R0 및 R1 값들이 전체적으로(대량으로) 병렬로, 부분적으로 병렬로, 또는 전체적으로 직렬로 계산되는 다양한 실시예들이 예상된다. 예를 들어, 페이지의 모든 R0 및/또는 R1 바이트들은 병렬로 계산된다. 다른 예에 있어서, 페이지의 모든 R0 바이트들은 병렬로 계산되고 페이지의 모든 R1 바이트들의 병렬 계산이 후속(또는 선행)한다.
또한, 따라서, R0의 임의의 바이트들 서로에 대한 계산 또는 R1의 임의의 바이트들의 계산에 대한 R0의 임의의 바이트들의 계산에 대한 순서화 요건들은 없다. 따라서, 다양한 실시예들은, R0 및 R1 값들이 서로에 관하여 전체적으로 순차적으로(in-order), 서로에 관하여 개별적으로 순차적으로(예를 들어, R0 계산들은 서로에 관하여 순차적이지만 R1에 관하여 순서가 없고, 그 반대의 경우도 가능함), 또는 특정한 순서(예를 들어, 전체적으로 순서없고, 무질서하고, 또는 랜덤한 순서) 없이 계산되는 것이 고려된다. 예를 들어, 페이지의 모든 R0 바이트들은 특정한 순서(예를 들어, 최하위 바이트로부터 최상위 바이트로)로 계산되고, 특정한 순서의 페이지의 모든 R1 바이트들이 후속한다. 다른 예에 있어서, 페이지의 모든 R0 바이트들은 특정한 순서로 계산되고, 독립적으로는, 페이지의 모든 R1 바이트들은 특정한 순서로 계산된다. 또 다른 예에 있어서, 페이지의 모든 R0 바이트들 뿐만 아니라 페이지의 모든 R1 바이트는 (예를 들어, 데이터 피연산함수가 이용가능하게 될 때) 서로에 관하여 특정한 순서없이 계산된다.
또 다른 실시예에 대해, 하나 또는 그 초과의 페이지들의 모든 R0 및 R1 바이트들은 (예를 들어, 하나 또는 그 초과의 플래시 다이를 각각 갖는) 하나 또는 그 초과의 NVM들상에서 수행된 하나 또는 그 초과의 판독 동작들의 완료의 순서에 의해 결정된 순서로 계산되고, 데이터 바이트들을 판독하는 판독 동작들은 도 11에 예시된 합산 및 가중합 계산들(Pi)에 의해 참조된다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들의 완료에 의해 결정된 순서로 계산들을 수행하는 것은 계산들을 수행하도록 인에이블된 NVM들과 소자들 사이의 버퍼링의 감소 또는 제거를 가능하게 한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들의 완료에 의해 결정된 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭과 같은 계산들을 수행하기 위해 사용된 메모리 대역폭의 감소를 가능하게 한다.
또 다른 실시예에 대해, 하나 또는 그 초과의 페이지들의 모든 R0 및 R1 바이트들은 (예를 들어, 하나 또는 그 초과의 플래시 다이를 각각 갖는) 하나 또는 그 초과의 NVM들상에서 수행된 판독 동작들에 응답하여 이용가능한 데이터 및/또는 리턴된 데이터의 순서에 의해 결정된 순서로 계산되고, 리턴된 데이터 및/또는 이용가능한 데이터는 도 11에 예시된 합산 및 가중합 계산들(Pi)에 의해 참조된다. 일부 실시예들 및/또는 사용 시나리오들에서, 리턴된 데이터 및/또는 이용가능한 데이터에 의해 결정된 순서로 계산들을 수행하는 것은 계산들을 수행하도록 인에이블된 NVM들과 소자들 사이의 버퍼링을 감소시키거나 제거한다. 일부 실시예들 및/또는 사용 시나리오들에서, 리턴된 데이터 및/또는 이용가능한 데이터에 의해 결정된 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭과 같은 계산들을 수행하기 위해 사용된 메모리 대역폭을 감소시킨다. 일부 실시예들에서, 판독 동작들은 특정한 순서로(예를 들어, Pi의 최하위 바이트로부터 최상위 바이트로) 수행되고, 다른 실시예들에서, 판독 동작들은 특정한 순서없이 수행된다.
도 12는 예를 들어, 도 11과 연관된 것과 같은 컨텍스트에서 (단일 동작 동안) 하나의 (하위 레벨) 장애로부터의 복구의 실시예의 선택된 상세들을 예시하고, 여기서, 하위 레벨 장애가 페이지 j상에서 발생한다. 하위 레벨 장애가 R0 또는 R1 페이지상에 있으면, R0(또는 R1)은 도 11에 의해 설명한 바와 같이 재결정된다는 것에 유의한다. 도 12는 페이지 j에 대한 복구된 값의 1 바이트에 대한 계산을 예시한다(합산은 장애가 발생한 페이지 j를 생략한다는 것에 유의한다). 도 12에 예시된 바와 같은 계산은 R0의 대응하는 바이트들 및 페이지 j를 제외한 모든 데이터 페이지들로부터의 대응하는 바이트들에 기초하여, 페이지 j의 모든 바이트들에 대한 복구된 값들을 결정하기 위해 반복된다.
따라서, 페이지 j의 복구된 값들의 임의의 바이트들 서로에 대한 계산에 의존성들이 없다. 따라서, Pj 복구 값들이 R0 및 R1 값들에 대한 상기 언급한 계산들과 유사하게, 매우 병렬로부터 매우 직렬로의 범위로 계산되는 다양한 실시예들이 예상된다. 또한, 서로에 관하여 페이지 j의 임의의 복구 값들의 계산에 대한 순서 요건들이 없다. 따라서, Pj 복구 값들이 R0 및 R1 값들에 대한 상기 언급한 계산들과 유사하게, 서로에 관하여 변하는 순서로 계산되는 다양한 실시예들이 예상된다.
일부 실시예들은 (예를 들어, 하나 또는 그 초과의 플래시 다이를 각각 갖는) 하나 또는 그 초과의 NVM들상에서 수행된 하나 또는 그 초과의 판독 동작들의 완료의 순서에 의해 적어도 부분적으로 결정된 순서로 복구 값들을 결정하는 것에 관한 계산들을 수행하고, NVM들을 판독하는 판독 동작은 도 12에 의해 예시된 바와 같이 R0 및/또는 Pi 값들을 획득하기 위한 것이다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들의 완료의 순서로 계산들을 수행하는 것은 계산들을 수행하도록 인에이블된 NVM들과 소자들 사이의 버퍼링의 감소 또는 제거를 가능하게 한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들의 완료의 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭과 같은 계산들을 수행하기 위해 사용된 메모리 대역폭의 감소를 가능하게 한다.
일부 실시예들은 (예를 들어, 하나 또는 그 초과의 플래시 다이를 각각 갖는) 하나 또는 그 초과의 NVM들로부터 이용가능한 데이터 및/또는 리턴된 데이터의 순서에 의해 적어도 부분적으로 결정된 순서들로 복구 값들을 결정하는 것에 관한 계산들을 수행하고, 리턴된 데이터 및/또는 이용가능한 데이터는 도 12에 의해 예시된 바와 같이 R0 및/또는 Pi 값들을 획득하기 위해 NVM들상에서 수행된 판독 동작들에 응답한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작으로부터 리턴된 데이터 및/또는 이용가능한 데이터의 순서로 계산들을 수행하는 것은 계산들을 수행하도록 인에이블된 NVM들과 소자들 사이의 버퍼링을 감소시키거나 제거한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들로부터 리턴된 데이터 및/또는 이용가능한 데이터의 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭과 같은 계산들을 수행하기 위해 사용된 메모리 대역폭을 감소시킨다. 일부 실시예들에서, 판독 동작들은 특정한 순서로(예를 들어, Pi의 최하위 바이트로부터 최상위 바이트로) 수행되고, 다른 실시예들에서, 판독 동작들은 특정한 순서없이 수행된다.
도 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')에 대한 원래의 리던던시 정보(R0, R1)의 1 바이트에 관한 등식들을 예시하고, 합산들로부터 생략된 항들은 수정된 R0 및 R1(Pm + Pn 및 Km*Pm + Kn*Pn)을 형성하기 위해 사용된다. 도 13c는 도입된 항들 델타 R0(
Figure 112015026977933-pct00020
R0) 및 델타 R1(
Figure 112015026977933-pct00021
R1)을 갖는 도 13b의 대수 재배열을 예시한다. 도 13d는 Pn 및 Pm에 대한 도 13c의 솔루션을 예시하고, 따라서, R1, R0의 대응하는 바이트들, 및 페이지들 m 및 n을 제외한 모든 데이터 페이지들로부터의 대응하는 바이트들에 기초하여, 페이지 n에 대한 복구된 값의 1 바이트 및 페이지 m에 대한 복구된 값의 1 바이트에 대한 계산들을 표현한다. 고유 인덱스들은, Kn이 Km에 관하여 고유하기 때문에, 넌-제로 분모를 가능하게 한다는 것이 유의된다.
다양한 실시예들에서, 도 13a 내지 도 13d에 의해 표현된 바와 같은 계산들은 페이지 m에 대한 복구된 값의 1 바이트 및 페이지 n에 대한 복구된 값의 1 바이트를 결정하기 위해 수행된다. 계산들은 R0, R1의 대응하는 바이트들 및 페이지들 m 및 n을 제외한 모든 데이터 페이지들로부터의 대응하는 바이트들에 기초하여, 페이지들 m 및 n의 모든 바이트들에 대한 복구된 값들을 결정하기 위해 반복된다.
따라서, 페이지들 m 또는 n의 복구된 값들의 임의의 바이트들 서로에 대한 계산에 의존성들이 없다. 따라서, Pm 및/또는 Pn 복구 값들이 Pj 복구 값들에 대한 상기 언급한 계산들과 유사하게, 매우 병렬로부터 매우 직렬로의 범위로 계산되는 다양한 실시예들이 예상된다. 또한, 서로에 관하여 페이지 m 및/또는 페이지 n의 임의의 복구 값들의 계산에 대한 순서 요건들이 없다. 따라서, Pm 및/또는 Pn 복구 값들이 Pj 복구 값들에 대한 상기 언급한 계산들과 유사하게, 서로에 관하여 변하는 순서들로 계산되는 다양한 실시예들이 예상된다.
일부 예시적인 실시예들은 (예를 들어, 하나 또는 그 초과의 플래시 다이를 각각 갖는) 하나 또는 그 초과의 NVM들상에서 수행된 하나 또는 그 초과의 판독 동작들의 완료의 순서에 의해 적어도 부분적으로 결정된 순서들로 (R0' 및 R1'에 대한 계산들과 같은) 복구 값들을 결정하는 것에 관한 계산들을 수행하고, 판독 동작들은 임의의 도 13a 내지 도 13d에서의 계산들에 대한 소스들로서 예시된 임의의 하나 또는 그 초과의 값들을 획득하기 위한 것이다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들의 완료의 순서로 계산들을 수행하는 것은 계산들을 수행하도록 인에이블된 NVM들과 소자들 사이의 버퍼링의 감소 또는 제거를 가능하게 한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들의 완료의 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭과 같은 계산들을 수행하기 위해 사용된 메모리 대역폭의 감소를 가능하게 한다.
일부 다른 예시적인 실시예들은 (예를 들어, 하나 또는 그 초과의 플래시 다이를 각각 갖는) 하나 또는 그 초과의 NVM들로부터 이용가능한 데이터 및/또는 리턴된 데이터의 순서에 의해 적어도 부분적으로 결정된 순서들로 (R0' 및 R1'에 대한 계산들과 같은) 복구 값들을 결정하는 것에 관한 계산들을 수행하고, 리턴된 데이터 및/또는 이용가능한 데이터는 임의의 도 13a 내지 도 13d에서의 계산들에 대한 소스들로서 예시된 임의의 하나 또는 그 초과의 값들을 획득하기 위해 NVM들상에서 수행된 판독 동작들에 응답한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작으로부터 리턴된 데이터 및/또는 이용가능한 데이터의 순서로 계산들을 수행하는 것은 계산들을 수행하도록 인에이블된 NVM들과 소자들 사이의 버퍼링을 감소시키거나 제거한다. 일부 실시예들 및/또는 사용 시나리오들에서, 판독 동작들로부터 리턴된 데이터 및/또는 이용가능한 데이터의 순서로 계산들을 수행하는 것은 NVM들의 메모리 대역폭과 같은 계산들을 수행하기 위해 사용된 메모리 대역폭을 감소시킨다. 일부 실시예들에서, 판독 동작들은 특정한 순서로(예를 들어, Pi의 최하위 바이트로부터 최상위 바이트로) 수행되고, 다른 실시예들에서, 판독 동작들은 특정한 순서없이 수행된다.
도 14a 및 도 14b는 NVM들로부터 수신된 페이지들에 관한 상위 레벨 리던던시 정보의 계산의 실시예의 선택된 상세들을 예시한다. 도 14a는 이슈하는 것을 통해 하나 또는 그 초과의 NVM들에 복수의 판독 커맨드들을 전송하고(판독 동작 이슈(1402A)), 모든 커맨드들이 전송되었는지(모두 이슈?(1403A)), 아닌지를 체크한 후, 다른 커맨드들을 전송하기 위해 루프백하는 실시예의 선택된 상세들을 예시한다. 복수의 커맨드들이 한번에 1개 보다는 한번에 이슈되는 다른 실시예들이 예상된다는 것이 유의한다.
도 14b는 도 14a에 예시되어 있는 바와 같이 전송된 판독 커맨드들에 응답하여 NVM들로부터 수신된 페이지들을 프로세싱하는 실시예의 선택된 상세들을 예시한다. 페이지가 이용가능한지를 결정하는 체크가 이루어진다(페이지 준비?(1402B)). 그렇지 않으면, 프로세싱은 체크를 다시 수행하도록 루프팩한다. 페이지가 이용가능하면, 페이지에 관한 상위 레벨 리던던시 정보 프로세싱이 실행된다(페이지 기반 계산을 수행(1403B)). 그 후, 모든 페이지가 프로세싱되었는지를 결정하는 체크가 이루어진다(페이지들이 완료?(1404B)). 그러한 경우에, 프로세싱은 완료되고(종료(1499B)), 그렇지 않으면, 흐름은 다른 페이지가 이용가능한지를 결정하기 위해 루프백한다.
도 14a에 예시된 바와 같이 전송된 커맨드들에 응답한 페이지들의 수신 이외에, 도 14b에 예시된 프로세싱은 도 14a에 예시된 프로세싱과 독립적이다. 다양한 시나리오들에서, 페이지들의 도달 순서는 NVM 타입, 상태, 동작 환경, 및 다른 요인들에 따라 변하고, 일부 환경들에서는, 도달하는 페이지들에 대응하는 판독 커맨드들의 전송 순서 또는 도달 순서와는 상이하다. 도 14a의 프로세싱이 (페이지 데이터 도달이 전송된 대응하는 판독 커맨드에 의존한다는 것 이외에는) 도 14b와 독립적이기 때문에, 일부 실시예들 및/또는 사용 시나리오들에서는, 판독 커맨드들이 전송되면서(도 14a) 판독 데이터가 수신/프로세싱된다(도 14b). 일부 실시예들 및/또는 사용 시나리오들에서, 페이지들 중 일부는, 예를 들어, 특정한 페이지에 대한 판독 커맨드가 전송되기 이전에 특정한 페이지가 특정한 버퍼에 존재하는 경우에, NVM들에 향하는 판독 커맨드들을 통해 요청되기 보다는 하나 또는 그 초과의 버퍼들로부터 제공된다. 일부 실시예들 및/또는 사용 시나리오들에서, 전송된 커맨드들에 응답하는 것 이외의 페이지들은 전송된 커맨드들에 응답하여 제공된 페이지들, 예를 들어, 다른 액티비티들을 위해 전송된 판독 커맨드들에 응답하여 제공된 페이지들과 혼합된 NVM들에 의해 제공된다.
다양한 실시예들에서, 도 11에 의해 예시된 바와 같은 R0 및 R1에 대한 계산들은 도 14a 및 도 14b에 의해 예시된 바와 같이 적어도 부분적으로 수행된다. 제 1 예에 있어서, 대응하는 R0 및 R1 페이지들을 계산할 필요가 있는 모든 데이터 페이지들에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송된다. 판독 커맨드들에 응답하여 수신된 데이터의 페이지들은, 페이지들이 도 11에 의해 예시된 바와 같이 R0 및 R1 페이지들을 계산하기 위해 수신될 때 프로세싱된다. 제 2 예에 있어서, (예를 들어, 듀얼 평면 NVM의 2개의 평면들에 대응하는) 한 쌍의 대응하는 R0 및 R1 페이지들에 대한 판독 커맨드들이 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송된다. 판독 커맨드들에 응답하여 수신된 데이터의 페이지들은, 페이지들이 도 11에 의해 예시된 바와 같이 R0 및 R1 페이지들을 계산하기 위해 수신될 때 프로세싱된다.
다양한 실시예들에서, 도 12에 의해 예시된 바와 같은 Pj에 대한 계산들은 도 14a 및 도 14b에 의해 예시된 바와 같이 적어도 부분적으로 수행된다. 제 1 예에 있어서, 특정한 Pj 페이지를 계산할 필요가 있는 모든 데이터 페이지들에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송된다. 판독 커맨드들에 응답하여 수신된 데이터의 페이지들은, 페이지들이 도 12에 의해 예시된 바와 같이 Pj 페이지를 계산하기 위해 수신될 때 프로세싱된다. 제 2 예에 있어서, (예를 들어, 듀얼 평면 NVM의 2개의 평면들에 대응하는) 한 쌍의 Pj 페이지들에 대한 판독 커맨드들이 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송되고, 수신된 데이터의 페이지들은 한 쌍의 Pj 페이지들을 계산하기 위해 도 14b에 의해 예시된 바와 같이 수신될 때 프로세싱된다.
다양한 실시예들에서, 임의의 도 13a 내지 도 13d에 의해 예시된 바와 같이, (R0' 및 R1'에 대한 계산들과 같은) 복구 값들을 결정하는 것에 관한 계산들은 도 14a 및 도 14b에 의해 예시된 바와 같이 적어도 부분적으로 수행된다. 제 1 예에 있어서, 특정한 R0' 페이지 및 특정한 R1' 페이지를 계산할 필요가 있는 모든 데이터 페이지들에 대한 판독 커맨드들은 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송된다. 판독 커맨드들에 응답하여 수신된 데이터의 페이지들은, 페이지들이 도 13a에 의해 예시된 바와 같이 R0' 및 R1' 페이지들을 계산하기 위해 수신될 때 프로세싱된다. 제 2 예에 있어서, (예를 들어, 듀얼 평면 NVM의 2개의 평면들에 대응하는) 한 쌍의 R0' 및 R1' 페이지들에 대한 판독 커맨드들이 도 14a에 의해 예시된 바와 같이 하나 또는 그 초과의 NVM들에 전송되고, 수신된 데이터의 페이지들은 한 쌍의 R0' 및 R1' 페이지들을 계산하기 위해 도 14b에 의해 예시된 바와 같이 수신될 때 프로세싱된다.
도 15a 내지 도 15c는 예를 들어, 도 11과 연관된 바와 같은 컨텍스트에서, NVM들에 제공된 기록에 관한 상위 레벨 리던던시 정보의 계산의 백아웃의 실시예의 선택된 상세들을 예시한다. 도 15a는 이슈하는 것을 통해 하나 또는 그 초과의 NVM들에 복수의 기록 커맨드들을 전송하고(기록 동작 이슈(1502A)), 모든 커맨드들이 전송되었는지(모두 이슈?(1503A)), 아닌지를 체크한 후, 다른 커맨드들을 전송하기 위해 루프백하는 실시예의 선택된 상세들을 예시한다. 복수의 커맨드들이 한번에 1개 보다는 한번에 이슈되는 다른 실시예들이 예상된다.
도 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 연산과 등가라는 것에 유의한다. 다양한 실시예들에서, 수정된 상위 레벨 리던던시 페이지들(nR0 및 nR1) 뿐만 아니라 하위 레벨 기록 장애를 갖는 페이지(Pj)를 저장하기 위해 (예시되지 않은) 다른 프로세싱이 수행된다.
도 15a에 예시된 바와 같이 전송된 커맨드들에 응답한 기록 완료 및 상태 정보의 수신 이외에, 도 15b에 예시된 프로세싱은 도 15a에 예시된 프로세싱과 독립적이다. 다양한 시나리오들에서, 기록 완료 및 상태 정보의 도달 순서는 NVM 타입, 상태, 동작 환경, 및 다른 요인들에 따라 변하고, 일부 환경들에서는, 도달하는 기록 완료 및 상태 정보에 대응하는 기록 커맨드들의 전송 순서 또는 도달 순서와는 상이하다. 도 15a의 프로세싱이 (기록 완료 및 상태 정보 도달이 전송된 대응하는 기록 커맨드에 의존한다는 것 이외에는) 도 15b와 독립적이기 때문에, 일부 실시예들 및/또는 사용 시나리오들에서는, 기록 커맨드들이 전송되면서(도 15a) 기록 완료 및 상태 정보가 수신/프로세싱된다(도 15b).
일부 실시예들 및/또는 사용 시나리오들에서, 상당한 레이턴시가 NVM들에 전송된 기록 커맨드들과 그 기록 커맨드들에 응답하여 NVM들로부터의 기록 완료 및 상태 정보의 수신 사이에 발생한다. 일부 실시예들 및/또는 사용 시나리오들에서, 도 15a에 예시된 바와 같이 전송된 커맨드들에 응답하는 것 이외의 기록 완료 및 상태 정보는 도 15a에 예시된 바와 같이 전송된 커맨드들에 응답하여 제공된 기록 완료 및 상태 정보, 예를 들어, 다른 액티비티들을 위해 전송된 기록 커맨드들에 응답하여 제공된 기록 완료 및 상태 정보와 혼합된 NVM들에 의해 제공된다.
다양한 실시예들 및/또는 사용 시나리오들에서, 하나 또는 그 초과의 페이지들이 미사용된다(하나 또는 그 초과의 페이지들은 그렇지 않을 경우에 데이터 정보를 위해 사용될 수도 있다) . 다양한 시나리오들에서, 미사용 페이지는 임의의 종류의 페이지들의 블록, R-블록, 스트라이프, 또는 시퀀스의 제 1, 중간, 또는 최종 페이지이다. 일부 환경들에서, 미사용 페이지들은 선험적으로 미사용되고("제외됨"), 일부 환경들에서는, 미사용 페이지들은 일부 사용 이후에 미사용된다("서비스로부터 제거됨"). 제외되는 미사용 페이지의 일례가 부정확하게 제조된 페이지이다. 서비스로부터 제거되는 미사용 페이지의 일례가 (예를 들어, 도 15b에 관하여 하위 레벨 기록 에러로서 설명한 바와 같이) 적절하게 기록하는데 실패한 페이지이다. 예를 들어, 도 10 내지 도 12, 도 13a 내지 도 13d, 도 14a, 도 14b, 도 15a, 및 도 15b에 관한 프로세싱은 예를 들어, 계산들로부터 미사용 페이지들을 전체적으로 생략하거나, 미사용 페이지들상의 모든 데이터가 제로인 것 처럼 계산들을 수행함으로써 (제외되거나 서비스로부터 제거되든지) 임의의 미사용 페이지들을 스킵한다.
다양한 실시예들에서, 도 10 내지 도 12, 도 13a 내지 도 13d, 도 14a, 도 14b, 도 15a, 및 도 15b의 하나 또는 그 초과의 소자들의 프로세싱 또는 그 소자들에 관한 프로세싱은 도 1a의 하나 또는 그 초과의 소자들(또는 그것의 부분들)에 의해 전체적으로 또는 부분적으로 수행된다. 예를 들어, CPU(171)의 소프트웨어 실행 능력들 중 일부가 예를 들어, 도 12 및 도 13a 내지 도 13d에 의해 예시된 바와 같이 데이터 복구 동작들을 지시함으로써 상위 레벨 리던던시 프로세싱을 관리하기 위해 사용된다. 다른 예에 있어서, 데이터 프로세싱(121)은 도 11에 의해 예시된 바와 같은 계산들에 따른 상위 레벨 리던던시 정보의 계산을 위해 전용되고/되거나 특수화된 하드웨어 소자들을 포함한다.
예시적인 구현 기법들
일부 실시예들에서, 독립 실리콘 소자들(예를 들어, 플래시 메모리들), 컴퓨팅-호스트 플래시 메모리 제어기, 및/또는 (도 1a의 SSD 제어기(100)와 같은) SSD 제어기를 갖는 동적 상위 레벨 리던던시 모드 관리를 구현하는 시스템, 및 프로세서, 마이크로프로세서, 시스템-온-칩, 응용 주문형 집적 회로, 하드웨어 가속기, 또는 상기 언급한 동작들 중 모드 또는 부분들을 제공하는 다른 회로에 의해 수행된 동작들 중 모두 또는 부분들의 다양한 조합이 컴퓨터 시스템에 의한 프로세싱과 호환가능한 사양에 의해 특정된다. 이 사양은 하드웨어 서술 언어들, 회로 서술들(descriptions), 넷리스트 서술들, 마스크 서술들, 또는 레이아웃 서술들과 같은 다양한 서술들에 따른다. 예시적인 서술들은 VHDL, SPICE, PSpice와 같은 SPICE 변형들, IBIS, LEF, DEF, GDS-II, OASIS, 또는 다른 서술들을 포함한다. 다양한 실시예들에서, 프로세싱은 하나 또는 그 초과의 집적 회로들상에 포함을 위해 적합한 로직 및/또는 회로를 생성하고, 검증하거나, 특정하기 위해 해석(interpretation), 편집(compilation), 시뮬레이션, 및 합성의 임의의 조합을 포함한다. 다양한 실시예들에 따른 각 집적 회로는 다양한 기법들에 따라 설계가능하고/하거나 제조가능하다. 기법들은 (필드 또는 마스크 프로그램가능한 게이트 어레이 집적 회로와 같은) 프로그램가능한 기법, (전체적 또는 부분적 셀-기반 집적 회로와 같은) 반특별 주문형(semi-custom) 기법, 및 (실질적으로 특수화된 집적 회로와 같은) 특별 주문형 기법, 이들의 임의의 조합, 또는 집적 회로들의 설계 및/또는 제조와 호환가능한 임의의 다른 기법을 포함한다.
일부 실시예들에서, 명령들의 세트가 저장된 컴퓨터 판독가능한 매체에 의해 설명된 바와 같은 동작 중 모두 또는 부분들의 다양한 조합들은 하나 또는 그 초과의 프로그램 명령들의 실행 및/또는 해석에 의해, 하나 또는 그 초과의 소스 및/또는 스크립 언어 스테이트먼트(statement)들의 해석 및/또는 컴파일링에 의해, 또는 프로그래밍 및/또는 스크립팅 언어 스테이트먼트들로 표현된 정보의 컴파일링, 트랜슬레이팅(translating), 및/또는 해석에 의해 생성된 2진 명령들의 실행에 의해 수행된다. 스테이트먼트들은 (C, C++, Fortran, Pascal, Ada, Java, VBscript, 및 Shell과 같은) 임의의 표준 프로그래밍 또는 스크립팅 언어와 호환가능하다. 프로그램 명령들, 언어 스테이트먼트들, 또는 이진 명령들 중 하나 또는 그 초과는 하나 또는 그 초과의 컴퓨터 판독가능한 저장 매체 소자들상에 옵션으로 저장된다. 다양한 실시예들에서, 프로그램 명령들 중 일부, 모두, 또는 다양한 부분들은 하나 또는 그 초과의 함수들, 루틴들, 서브-루틴들, 인-라인 루틴들, 절차들, 매크로들, 또는 이들의 부분들로서 실현된다.
결론
텍스트 및 도면들을 준비하는데 있어서 단지 편의를 위해 특정한 선택들이 설명에서 이루어졌고, 반대의 표시가 없으면, 선택들은 설명한 실시예들의 구조 또는 동작에 관한 추가의 정보를 전달하는 것으로서 본질적으로 해석되어서는 안된다. 선택들의 예들은 도면 넘버링을 위해 사용된 지정들의 특정한 구성 또는 할당 및 실시예들의 특징들 및 소자들을 식별하고 참조하기 위해 사용된 소자 식별자들(예를 들어, 콜아웃(callout)들 또는 수치적 지시자들)의 특정한 구성 또는 할당을 포함한다.
단어들 "포함한다" 또는 "포함하는"은 개방형 범위의 논리 세트들을 설명하는 추론들로 해석되도록 구체적으로 의도되고, 단어 "이내(within)"가 명시적으로 후속하지 않으면 물리적 한정을 전달하는 것으로 의미되지 않는다.
상술한 실시예들이 설명 및 이해의 명확화를 위해 일부 상세히 설명되었지만, 본 발명은 제공된 상세들에 제한되지 않는다. 본 발명의 다수의 실시예들의 존재한다. 개시된 실시예들은 예시적인 것이고 제한적인 것이 아니다.
설명과 일치하는 구조, 배열, 및 사용에서의 다수의 변동물들이 가능하고, 등록 특허의 청구항들의 범위내에 있다는 것이 이해될 것이다. 예를 들어, 사용된 상호접속 및 기능-유닛 비트-폭들, 클록 속도들, 및 기술의 타입은 각 컴포넌트 블록에서 다양한 실시예들에 따라 변경가능하다. 상호접속 및 로직에 제공된 명칭들은 단지 예시적인 것이고, 설명된 개념들을 제한하는 것으로 해석되어서는 안된다. 플로우차트 및 흐름도 프로세스, 액션, 및 기능 소자들의 순서 및 배열은 다양한 실시예들에 따라 변경가능하다. 또한, 반대를 구체적으로 논하지 않으면, 특정된 값 범위들, 사용된 최대 및 최소값들, 또는 (플래시 메모리 기술 타입들, 및 레지스터들 및 버퍼들에서의 엔트리들 또는 스테이지들의 수와 같은) 다른 특정한 사양들은 단지 설명된 실시예들의 것들이고, 구현 기술에서 개선 및 변경을 트랙(track)하는 것으로 기대되고, 제한들로서 해석되어서는 안된다.
당업계에 공지된 기능적으로 등가인 기법들이 다양한 컴포넌트들, 서브-시스템들, 동작들, 함수들, 루틴들, 서브-루틴들, 인-라인 루틴들, 절차들, 매크로들, 또는 이들의 부분들을 구현하기 위해 설명한 것들 대신에 이용가능하다. 실시예의 기능이 (하드웨어에서의 이전의 기능들의 소프트웨어로의 이동을 용이하게 하는) 더 빠른 프로세싱 및 (소프트웨어에서의 이전의 기능들의 하드웨어로의 이동을 용이하게 하는) 더 높은 집적 밀도의 설계 제약들 및 기술 트렌드들에 의존하기 때문에, 실시예들의 다수의 기능적 양태들이 하드웨어(즉, 일반적으로 전용 회로) 또는 소프트웨어(즉, 프로그램된 제어기 또는 프로세서의 일부 방식을 통해) 선택적으로 실현가능하다는 것이 또한 이해된다. 다양한 실시예들에서의 특정한 변동물들은 파티셔닝하는데 있어서의 차이들, 상이한 폼 팩터들 및 구성들, 상이한 운영 시스템들 및 다른 시스템 소프트웨어의 사용, 상이한 인터페이스 표준들, 네트워크 프로토콜들, 또는 통신 링크들의 사용, 및 특정한 애플리케이션의 고유 엔지니어링 및 비즈니스 제약들에 따라 여기에 설명한 개념들을 구현할 때 기대되는 다른 변동물들을 포함하지만 이에 제한되지 않는다.
실시예들은 설명한 실시예들의 다수의 양태들의 최소의 구현을 위해 요구되는 바를 훨씬 넘어선 상세 및 환경적 컨텍스트로 설명되었다. 당업자는 일부 실시예들이 나머지 소자들 중에서 기본적인 협력을 변경하지 않고 개시된 컴포넌트들 또는 특징들을 생략한다는 것을 인식할 것이다. 따라서, 개시된 다수의 상세들이 설명한 실시예들의 다양한 양태들을 구현하기 위해 요구되지 않는다는 것이 이해된다. 나머지 소자들이 종래 기술로부터 구별가능한 범위까지, 생략되는 컴포넌트들 및 특징들은 여기에 설명한 개념들을 제한하지 않는다.
설계에서의 모든 이러한 변동물들은 설명한 실시예들에 의해 전달된 교시들을 넘는 비현실적인 변경들이다. 여기에 설명한 실시예들이 다른 컴퓨팅 및 네트워킹 애플리케이션들에 대한 넓은 적용가능성을 가지며, 설명한 실시예들의 특정한 애플리케이션 또는 산업에 제한되지 않는다는 것이 또한 이해된다. 따라서, 본 발명은 등록 특허의 청구항들의 범위내에 포함되는 모든 가능한 변형물들 및 변경물들을 포함하는 것으로 해석되어야 한다.

Claims (24)

  1. 동적 상위 레벨 리던던시 모드 관리를 위한 방법으로서,
    n-k개의 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 단계;
    상기 k개의 리던던트 데이터 부분들 각각 및 상기 n-k개의 데이터 부분들 각각을 개별 대응하는 영역들에 저장하는 단계 ― 상기 대응하는 영역들 각각은 n개의 물리적 디바이스들 중 각각의 하나에 있고, 상기 k개의 리던던트 데이터 부분들은 상기 데이터 부분들의 제1 데이터 부분과 모두 연관되는 제1 패리티 코드 데이터 및 제2 패리티 코드 데이터를 포함하고, 상기 제1 패리티 코드 데이터 및 상기 제2 패리티 코드 데이터는 개별적으로 저장되고 상이한 코딩을 이용하여 계산되고, 상기 제 1 패리티 코드 데이터 및 상기 제2 패리티 코드 데이터는 상기 n개의 물리적 디바이스들 중 상이한 물리적 디바이스들에 저장되고, 상기 제1 패리티 코드 데이터는 다수의 배타적-OR(XOR) 연산들을 이용하여 계산되고, 상기 제2 패리티 코드 데이터는 데이터의 가중 합(weighted sum)으로써 계산되고, 가중치(weight)들은 인덱스 값들로서 선택됨 ―; 및
    상기 대응하는 영역들 중 하나가 더 이상 이용가능하지 않도록 되는 장애에 후속하여, n-1-j개의 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 단계
    를 포함하고, j <= k이며,
    상기 k개의 리던던트 데이터 부분들을 계산하는 단계 및 상기 j개의 리던던트 데이터 부분들을 계산하는 단계는 사용자 데이터에 따라 패리티, RS(Reed-Solomon), 및 가중합 기법들 중 적어도 하나를 통해 계산하는 단계를 포함하는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  2. 제 1 항에 있어서,
    상기 n-k개의 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하는 단계는 제 1 데이터 보호 모드에서 동작하고,
    상기 n-1-j개의 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하는 단계는 제 2 데이터 보호 모드에서 동작하며,
    상기 방법은, 상기 장애에 응답하여, 상기 제 1 데이터 보호 모드에서의 동작으로부터 상기 제 2 데이터 보호 모드에서의 동작으로 스위칭하는 단계
    를 더 포함하는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  3. 제 1 항에 있어서,
    j==k일 때, j<k일 때와 비교하여 상기 데이터 부분들의 총량은 감소되고, 상기 데이터 부분들은 상기 대응하는 영역들 중 j개까지의 장애들에 대해 보호되는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  4. 삭제
  5. 제 1 항에 있어서,
    j==k-1이고, j>=1일 때, 상기 데이터 부분들의 총량은 보존되고, 상기 데이터 부분들은 상기 대응하는 영역들 중 j-1개까지의 장애들에 대해 보호되는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 n개의 물리적 디바이스들 각각은 복수의 상기 대응하는 영역들을 포함하고;
    상기 방법은, 상기 대응하는 영역들의 복수의 세트들 각각에서, 데이터 서브세트 및 상기 데이터 서브세트를 보호하는 리던던트 데이터 서브세트를 포함하는 데이터의 각각의 세트를 저장하는 단계
    를 더 포함하고, 상기 리던던트 데이터 서브세트는 상기 데이터 서브세트로부터 상기 n개의 물리적 디바이스들 중 개별 디바이스들에 저장되고; 그리고
    상기 대응하는 영역들의 세트들 각각은 상기 n개의 물리적 디바이스들 각각의 하나에 대해 대응하는 영역을 포함하고, 상기 데이터의 각각의 세트를 저장하는 단계는 상기 n개의 물리적 디바이스들 중 n개 또는 그 미만의(n or less) 상이한 세트에 저장되는 데이터의 각각의 세트들 각각에 따르는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  8. 제 7 항에 있어서,
    상기 장애 이전에, 상기 데이터의 세트들 중 특정한 하나의 상기 데이터 서브세트는 상기 n-k개의 데이터 부분들을 포함하고, 상기 데이터의 특정한 세트의 상기 리던던트 데이터 서브세트는 상기 k개의 리던던트 데이터 부분들을 포함하는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  9. 제 7 항에 있어서,
    상기 데이터의 각각의 세트를 저장하는 단계는, 상기 데이터의 세트들 중 제 1 세트의 상기 데이터 서브세트의 부분을 저장하기 위해 사용된 상기 n개의 물리적 디바이스들 중 특정한 물리적 디바이스에서 상기 대응하는 영역들 중 제 1 영역에 따르고, 상기 데이터의 세트들 중 제 2 세트의 상기 리던던트 데이터 서브세트의 일부 또는 모두를 저장하기 위해 사용된 상기 특정한 물리적 디바이스에서 상기 대응하는 영역들 중 제 2 영역에 따르는,
    동적 상위 레벨 리던던시 모드 관리를 위한 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 동적 상위 레벨 리던던시 모드 관리를 위한 장치로서,
    n개의 물리적 저장 디바이스들의 세트; 및
    인터페이스를 통해 상기 n개의 물리적 저장 디바이스들의 세트의 각각의 물리적 저장 디바이스에 커플링되는 제어기를 포함하고, 상기 제어기는:
    n-k개의 데이터 부분들을 보호하기 위해 k개의 리던던트 데이터 부분들을 계산하고;
    상기 k개의 리던던트 데이터 부분들 각각을 그리고 상기 n-k개의 데이터 부분들 각각을 개별 대응하는 영역들에 저장하고 ― 상기 대응하는 영역들 각각은 n개의 물리적 저장 디바이스들 중 각각의 하나에 있고, 상기 k개의 리던던트 데이터 부분들은 상기 데이터 부분들의 제1 데이터 부분과 모두 연관되는 제1 패리티 코드 데이터 및 제2 패리티 코드 데이터를 포함하고, 상기 제1 패리티 코드 데이터 및 상기 제2 패리티 코드 데이터는 개별적으로 저장되고 상이한 코딩을 이용하여 계산되고, 상기 제 1 패리티 코드 데이터 및 상기 제2 패리티 코드 데이터는 상기 n개의 물리적 저장 디바이스들 중 상이한 물리적 저장 디바이스들에 저장되고, 상기 제1 패리티 코드 데이터는 다수의 배타적-OR(XOR) 연산들을 이용하여 계산되고, 상기 제2 패리티 코드 데이터는 데이터의 가중 합으로써 계산되고, 가중치들은 인덱스 값들로서 선택됨 ―; 그리고
    상기 대응하는 영역들 중 하나가 더 이상 이용가능하지 않도록 되는 장애에 후속하여, n-1-j개의 데이터 부분들을 보호하기 위해 j개의 리던던트 데이터 부분들을 계산하도록 구성되고,
    j <= k이며,
    상기 k개의 리던던트 데이터 부분들을 계산하는 것 및 상기 j개의 리던던트 데이터 부분들을 계산하는 것은 사용자 데이터에 따라 패리티, RS(Reed-Solomon), 및 가중합 기법들 중 적어도 하나를 통해 계산하는 것을 포함하는,
    동적 상위 레벨 리던던시 모드 관리를 위한 장치.
  22. 제 21 항에 있어서,
    상기 제어기는 상기 k개의 리던던트 데이터 부분들을 계산할 때 제 1 데이터 보호 모드에서 동작하고, 상기 제어기는 j 개의 리던던트 데이터 부분들을 계산할 때 제 2 데이터 보호 모드에서 동작하고, 상기 제어기는 상기 장애에 응답하여 상기 제 1 데이터 보호 모드에서 동작하는 것에서 상기 제 2 데이터 보호 모드에서 동작하는 것으로 스위칭하도록 추가로 구성되는,
    동적 상위 레벨 리던던시 모드 관리를 위한 장치.
  23. 제 21 항에 있어서,
    j==k-1이고, j>=1일 때, 상기 데이터 부분들의 총량은 보존되고, 상기 데이터 부분들은 상기 대응하는 영역들 중 j-1개까지의 장애들에 대해 보호되는,
    동적 상위 레벨 리던던시 모드 관리를 위한 장치.
  24. 제 21 항에 있어서,
    상기 n개의 물리적 저장 디바이스들 각각은 복수의 상기 대응하는 영역들을 포함하고;
    상기 제어기는, 상기 대응하는 영역들의 복수의 세트들 각각에서, 데이터 서브세트 및 상기 데이터 서브세트를 보호하는 리던던트 데이터 서브세트를 포함하는 데이터의 각각의 세트를 저장하도록 추가로 구성되고,
    상기 리던던트 데이터 서브세트는 상기 데이터 서브세트로부터 상기 n개의 물리적 저장 디바이스들 중 개별 디바이스들에 저장되고; 그리고
    상기 대응하는 영역들의 세트들 각각은 상기 n개의 물리적 저장 디바이스들 각각의 하나에 대해 대응하는 영역을 포함하고, 상기 데이터의 각각의 세트를 저장하는 단계는 상기 n개의 물리적 저장 디바이스들 중 n개 또는 그 미만의(n or less) 상이한 세트에 저장되는 데이터의 각각의 세트들 각각에 따르는,
    동적 상위 레벨 리던던시 모드 관리를 위한 장치.
KR1020137017048A 2010-12-01 2011-11-30 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 KR101636785B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US41884610P 2010-12-01 2010-12-01
US61/418,846 2010-12-01
US201161433918P 2011-01-18 2011-01-18
US61/433,918 2011-01-18
PCT/US2011/062726 WO2012075200A2 (en) 2010-12-01 2011-11-30 Dynamic higher-level redundancy mode management with independent silicon elements

Publications (2)

Publication Number Publication Date
KR20130114681A KR20130114681A (ko) 2013-10-17
KR101636785B1 true KR101636785B1 (ko) 2016-07-06

Family

ID=46172550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137017048A KR101636785B1 (ko) 2010-12-01 2011-11-30 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리

Country Status (7)

Country Link
US (1) US9105305B2 (ko)
EP (1) EP2646922A4 (ko)
JP (1) JP5980798B2 (ko)
KR (1) KR101636785B1 (ko)
CN (1) CN103348330B (ko)
TW (1) TW201232264A (ko)
WO (1) WO2012075200A2 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101541040B1 (ko) 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US9582431B2 (en) 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
KR101636785B1 (ko) 2010-12-01 2016-07-06 엘에스아이 코포레이션 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
JP2014507717A (ja) 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
US9032269B2 (en) 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
US9467512B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for remote client access to a storage medium coupled with a server
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9418700B2 (en) * 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
US8856431B2 (en) * 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US20140047177A1 (en) * 2012-08-10 2014-02-13 International Business Machines Corporation Mirrored data storage physical entity pairing in accordance with reliability weightings
WO2014028183A1 (en) * 2012-08-13 2014-02-20 Lsi Corporation Fractional redundant array of silicon independent elements
US9098400B2 (en) 2012-10-31 2015-08-04 International Business Machines Corporation Dynamic tuning of internal parameters for solid-state disk based on workload access patterns
US9021339B2 (en) * 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
JP5978259B2 (ja) * 2013-08-16 2016-08-24 エルエスアイ コーポレーション 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ
JP6443794B2 (ja) * 2013-08-16 2018-12-26 エルエスアイ コーポレーション ホストとコントローラとの間でパーティション化された変換レイヤ
TWI507883B (zh) * 2013-09-18 2015-11-11 Realtek Semiconductor Corp 記憶卡存取裝置、其控制方法與記憶卡存取系統
US9911509B2 (en) * 2013-12-06 2018-03-06 Intel Corporation Counter to locate faulty die in a distributed codeword storage system
US9239756B2 (en) 2013-12-13 2016-01-19 Sandisk Technologies Inc. Systems and methods for performing data recovery in a memory system
KR102108386B1 (ko) 2013-12-23 2020-05-08 삼성전자주식회사 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
US9927998B2 (en) * 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
US9218244B1 (en) * 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
KR102249810B1 (ko) 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9766972B2 (en) * 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
JP6486723B2 (ja) * 2015-01-21 2019-03-20 東芝メモリ株式会社 メモリシステムおよび処理装置
US9678665B2 (en) * 2015-03-06 2017-06-13 Western Digital Technologies, Inc. Methods and systems for memory page allocation
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
CN105096993B (zh) * 2015-09-21 2017-11-07 北京联想核芯科技有限公司 固态硬盘、电子设备及信息处理方法
CN106814643B (zh) * 2015-11-30 2019-08-23 北京铁路信号有限公司 一种双机热备的控制方法及系统
US9971523B2 (en) 2016-03-10 2018-05-15 Toshiba Memory Corporation Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
CN106843771B (zh) * 2017-01-26 2019-11-19 合肥兆芯电子有限公司 存储器重读方法、存储器控制电路单元及存储器存储装置
US10735346B2 (en) 2017-12-30 2020-08-04 Intel Corporation Data block prioritization for internet of things payloads
JP2018101440A (ja) * 2018-02-08 2018-06-28 株式会社日立製作所 計算機システム
US10872039B2 (en) * 2018-12-03 2020-12-22 Micron Technology, Inc. Managing redundancy contexts in storage devices using eviction and restoration
US10949297B2 (en) * 2018-12-05 2021-03-16 Micron Technology, Inc. NAND device mixed parity management
CN113993847A (zh) 2019-06-06 2022-01-28 巴斯夫欧洲公司 杀真菌的n-(吡啶-3-基)羧酰胺类
KR102650809B1 (ko) 2019-08-02 2024-03-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
CN111639008B (zh) * 2020-05-29 2023-08-25 杭州海康威视系统技术有限公司 基于双端口ssd的文件系统状态监测方法、装置及电子设备
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
US11640270B2 (en) * 2021-07-27 2023-05-02 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for flexible storage controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100293439A1 (en) * 2009-05-18 2010-11-18 David Flynn Apparatus, system, and method for reconfiguring an array to operate with less storage elements

Family Cites Families (59)

* 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
JPH06187249A (ja) * 1992-12-16 1994-07-08 Nec Eng Ltd ディスクアレイ装置
JPH07271672A (ja) 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
EP0803095A1 (en) 1994-10-14 1997-10-29 Silicon Graphics, Inc. Indexing and multiplexing of interleaved cache memory arrays
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
JP2000039970A (ja) * 1998-07-24 2000-02-08 Nec Software Kobe Ltd ディスクアレイシステムの二重障害防止制御方式
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
US6826711B2 (en) * 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
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
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 주식회사 하이닉스반도체 반도체 메모리 장치의 리던던시 회로
US6961890B2 (en) 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
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
US7372731B2 (en) 2003-06-17 2008-05-13 Sandisk Il Ltd. Flash memories with adaptive reference voltages
US7206991B2 (en) * 2003-10-15 2007-04-17 Lsi Logic Corporation Method, apparatus and program for migrating between striped storage and parity striped storage
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7237067B2 (en) 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
KR100732628B1 (ko) 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
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
US7809994B2 (en) 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
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
US8171380B2 (en) 2006-10-10 2012-05-01 Marvell World Trade Ltd. Adaptive systems and methods for storing and retrieving data to and from memory cells
WO2008070800A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
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
JP2010518464A (ja) 2007-02-01 2010-05-27 株式会社東芝 半導体記憶装置
US8122323B2 (en) 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
US20080276124A1 (en) 2007-05-04 2008-11-06 Hetzler Steven R Incomplete write protection for disk array
JP2009037304A (ja) * 2007-07-31 2009-02-19 Hitachi Ltd Raidレベルを変更する機能を有したストレージシステム
US8429492B2 (en) 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US9152496B2 (en) 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
US8443260B2 (en) 2007-12-27 2013-05-14 Sandisk Il Ltd. Error correction in copy back memory operations
EP2592552B1 (en) 2008-03-11 2015-11-25 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
US8959280B2 (en) 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
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
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 서울대학교산학협력단 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
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 建兴电子科技股份有限公司 具可变动错误校正码机制的快闪储存装置及其控制方法
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
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
CN103329103B (zh) 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备
US9569320B2 (en) 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
KR101636785B1 (ko) 2010-12-01 2016-07-06 엘에스아이 코포레이션 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
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
JP2014507717A (ja) 2011-01-18 2014-03-27 エルエスアイ コーポレーション より高いレベルの冗長な情報の計算
US8595415B2 (en) 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100293439A1 (en) * 2009-05-18 2010-11-18 David Flynn Apparatus, system, and method for reconfiguring an array to operate with less storage elements

Also Published As

Publication number Publication date
CN103348330A (zh) 2013-10-09
WO2012075200A3 (en) 2012-08-16
US20130246839A1 (en) 2013-09-19
JP5980798B2 (ja) 2016-08-31
TW201232264A (en) 2012-08-01
WO2012075200A2 (en) 2012-06-07
EP2646922A4 (en) 2015-11-25
US9105305B2 (en) 2015-08-11
KR20130114681A (ko) 2013-10-17
EP2646922A2 (en) 2013-10-09
CN103348330B (zh) 2017-05-24
JP2013545202A (ja) 2013-12-19

Similar Documents

Publication Publication Date Title
KR101636785B1 (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
US11379301B2 (en) Fractional redundant array of silicon independent elements
US11144389B2 (en) Non-volatile memory program failure recovery via redundant arrays
KR101564569B1 (ko) 상위-레벨 리던던시 정보 계산
KR102101650B1 (ko) 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시
TWI531902B (zh) 矽獨立元件之部分冗餘陣列

Legal Events

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