KR20150085800A - 다수의 플래시 평면들에 걸친 코드워드들의 인터리빙 - Google Patents

다수의 플래시 평면들에 걸친 코드워드들의 인터리빙 Download PDF

Info

Publication number
KR20150085800A
KR20150085800A KR1020150008053A KR20150008053A KR20150085800A KR 20150085800 A KR20150085800 A KR 20150085800A KR 1020150008053 A KR1020150008053 A KR 1020150008053A KR 20150008053 A KR20150008053 A KR 20150008053A KR 20150085800 A KR20150085800 A KR 20150085800A
Authority
KR
South Korea
Prior art keywords
planes
pages
codewords
circuit
slices
Prior art date
Application number
KR1020150008053A
Other languages
English (en)
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 KR20150085800A publication Critical patent/KR20150085800A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/802Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout by encoding redundancy signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

복수의 메모리들에 대한 인터페이스 및 회로를 갖는 장치가 개시된다. 각각의 메모리는 일반적으로 복수의 평면들을 가지며 비휘발성이다. 상기 회로는 (i) 복수의 데이터 유닛들을 인코딩함으로써 복수의 코드워드들을 생성하고, (ii) 코드워드들을 파싱함으로써 복수의 슬라이스들을 생성하고, (iii) 슬라이스들을 인터리빙함으로써 복수의 페이지들을 생성하고, 그리고 (iv) 페이지들을 평면들 중 각각의 평면들에 병렬로 기입하도록 구성된다.

Description

다수의 플래시 플레인들에 걸친 코드워드들 인터리빙{INTERLEAVING CODEWORDS OVER MULTIPLE FLASH PLANES}
본 출원은 2014년 1월 13일 출원된 미국 가 출원 제 61/926,516 호에 관한 것이고, 상기 미국 가 출원은 이로써 그 전체가 인용에 의해 포함된다.
본 발명은 일반적으로 고체-상태 드라이브들, 보다 구체적으로 다수의 플래시 플레인들(multiple flash planes)에 걸쳐 코드워드들을 인터리빙하기 위한 방법 및/또는 장치에 관한 것이다.
플래시 메모리 기하구조들의 규모가 축소함에 따라, 각각의 플래시 메모리 셀에 저장된 전자들의 양은 감소한다. 보다 작은 수의 전자들은 프로세스 변동들에 보다 민감하고 따라서 다양한 플래시 플레인들과 다이 사이의 신뢰성 차들은 보다 잘 표명된다. 종래의 설계들에서, 각각의 코드워드는 동일한 다이 상에 저장된다. 그러므로, 에러 정정 코딩이 최악(worst) 플래시 다이/플레인 상 특정 코드워드들의 에러들을 복구할 수 없으면, 정정 불가능 코드 정정 실패가 발생한다.
본 발명은 복수의 메모리들에 대한 인터페이스 및 회로를 갖는 장치에 관한 것이다. 각각의 메모리는 일반적으로 복수의 평면들을 가지며 비휘발성이다. 상기 회로는 (i) 복수의 데이터 유닛들을 인코딩함으로써 복수의 코드워드들을 생성하고, (ii) 코드워드들을 파싱함으로써 복수의 슬라이스들을 생성하고, (iii) 슬라이스들을 인터리빙함으로써 복수의 페이지들을 생성하고, 그리고 (iv) 페이지들을 평면들 중 각각의 평면들에 병렬로 기입하도록 구성된다.
본 발명의 실시예들은 다음 상세한 설명 및 첨부된 청구항들 및 도면들로부터 명백해질 것이다.
도 1은 장치의 블록도이다.
도 2는 리던던시 블록의 블록도이다.
도 3은 본 발명의 실시예에 따라 기입하기 위한 방법의 흐름도이다.
도 4는 슬라이스들로 나뉘어진 코드워드의 다이어그램이다.
도 5는 슬라이스들을 메모리 플레인들에 맵핑하기 위한 다이어그램이다.
도 6은 판독을 위한 방법의 흐름도이다.
도 7은 메모리 플레인들로부터의 데이터를 다수의 슬라이스들에 맵핑하기 위한 다이어그램이다.
본 발명의 실시예들은, (i) 인터리빙 코드워드들을 다수의 플래시 디바이스들에 걸쳐 분배하고, (ii) 기존의 기술들과 비교하여 신뢰성을 개선하고, (iii) 다수의 플래시 디바이스들에 걸쳐 에러 레이트들을 평균화하고, (iv) 코드워드들 내부의 프로세스 변형 유도 에러들을 감소시키고 및/또는 (v) 하나 또는 그 초과의 집적 회로들로서 구현될 수 있는 다수의 플래시 플레인들에 걸친 인터리빙 코드워드들을 포함한다.
다양한 실시예들에서, 코드워드들은 다수의 플래시 디바이스들(또는 다이) 및/또는 플래시 디바이스들 내의 다수의 플레인들에 걸쳐 슬라이스되어 분산된다. 따라서, 단일 코드워드 내부의 에러 수는 코드워드 크기가 곱셈된 다수의 다이에 걸친 평균 에러 레이트이다. 따라서, 코드워드들 내부의 원시(raw) 에러들의 최악의 경우의 수가 감소된다. 슬라이싱 및 분배는 일반적인 기술들과 비교하여 개선된 신뢰성을 야기한다. 신뢰할 수 없는 플래시 플레인에 의해 발생되는 조기 고장(premature failure)이 지연되거나 잠재적으로 제거된다. 이로써, 플래시 디바이스들의 프로그램/소거 사이클 수명 및 최대 보유(retention) 시간이 증가된다. 슬라이싱 및 분배는 또한 더 예측 가능한 성능을 야기한다. 코드워드들 내부의 에러들이 평균화되기 때문에, 각각의 논리 코드워드 내부의 에러들의 변형들이 감소된다. 따라서, 디코딩 변형들의 성능이 감소되어 성능이 더 예측 가능하게 한다.
도 1을 참조하면, 장치(90)의 예시적인 구현의 블록도가 도시된다. 장치(또는 회로 또는 디바이스 또는 집적 회로)(90)는 비휘발성 메모리 회로를 갖는 컴퓨터를 구현한다. 장치(90)는 일반적으로 블록(또는 회로)(92), 블록(또는 회로)(94) 및 블록(또는 회로)(100)을 포함한다. 회로들(94 및 100)은 드라이브(또는 디바이스)(102)를 형성한다. 회로들(92 내지 102)은 하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 조합, 또는 다른 구현들로서 구현될 수 있는 모듈들 및/또는 블록들을 나타낼 수 있다.
하나 또는 그 초과의 신호들(예를 들면, HOSTIO)이 회로(92)의 인터페이스와 회로(100)의 인터페이스 사이에서 교환된다. 호스트 입력/출력 신호(HOSTIO)는 일반적으로 회로(102)에서 데이터를 액세스하는데 사용되는 논리 어드레스 컴포넌트, 회로(102)를 제어하는 호스트 커맨드 컴포넌트, 회로(92)로부터 회로(100)로 기입 데이터 유닛들을 전송하는 기입 데이터 컴포넌트 및 회로(100)로부터 회로(92)로 에러 정정 판독 데이터 유닛들을 전송하는 판독 데이터 컴포넌트를 포함하지만, 이에 제한되지 않는다. 하나 또는 그 초과의 신호들(예를 들면, NVMIO)은 회로(100)의 인터페이스와 회로(94)의 다른 인터페이스 사이에서 교환된다. 비휘발성 메모리 입력/출력 신호(NVMIO)는 일반적으로 회로(94)에서 데이터를 액세스하는데 사용되는 물리적 어드레스 컴포넌트, 회로(94)를 제어하는 메모리 커맨드 컴포넌트(예를 들면, 판독 또는 기입 커맨드들), 회로(100)로부터 회로(94)로 기입된 에러 정정 코딩된 및 주기적 리던던시 체크 보호된 기입 코드워드들을 반송(carry)하는 기입 코드워드 컴포넌트, 및 회로(94)로부터 회로(100)로 판독된 에러 정정 코딩된 코드워드들을 반송하는 판독 코드워드 컴포넌트를 포함하지만, 이에 제한되지 않는다.
호스트 회로를 구현하는 회로(92)가 도시된다. 회로(92)는 일반적으로 회로(100)를 통해 회로(94)로 데이터를 기입하고 회로(94)로부터 데이터를 판독하도록 동작한다. 판독 또는 기입할 때, 회로(92)는 데이터의 어느 세트가 회로(94)에 기입될지 또는 회로(94)로부터 판독될지를 식별하기 위해 신호(HOSTIO)에서 논리적 어드레스 값을 전달한다. 어드레스는 일반적으로 회로(102)의 논리적 어드레스 범위에 스패닝(span)한다. 논리적 어드레스는 STAT(예를 들어, 직렬-ATA) 섹터들과 같은 개별 데이터 유닛들을 어드레싱할 수 있다.
하나 또는 그 초과의 비휘발성 메모리 회로들(또는 디바이스들)을 구현하는 회로(94)가 도시된다. 다양한 실시예들에 따라, 회로(94)는 하나 또는 그 초과의 비휘발성 메모리 디바이스들을 포함한다. 회로(94)는 일반적으로 비휘발성 상태로 데이터를 저장하도록 동작한다. 데이터가 회로(94)로부터 판독될 때, 회로(94)는 신호(NVMIO) 내의 어드레스(예를 들어, 물리적 어드레스)에 의해 식별되는 데이터의 세트(예를 들어, 다수의 비트들)에 액세스할 수 있다. 어드레스는 일반적으로 회로(94)의 물리적 어드레스 범위에 스패닝한다.
몇몇 실시예들에서, 회로(94)는 하나 또는 그 초과의 플래시 메모리들로서 구현된다. 회로(94)는 단일-레벨 셀(예를 들어, SLC) 타입 회로로서 구현될 수 있다. 단일-레벨 셀 타입 회로는 일반적으로 메모리 셀 당 단일 비트(예를 들어, 로직 0 또는 1)를 저장한다. 다른 실시예들에서, 회로(94)는 다중-레벨 셀 타입 회로로서 구현될 수 있다. 다중-레벨 셀 타입 회로는 메모리 셀 당 다중(예를 들어, 2) 비트들(예를 들어, 로직 00, 01, 10 또는 11)을 저장할 수 있다. 또 다른 실시예들에서, 회로(94)는 트리플-레벨 셀 타입 회로를 구현할 수 있다. 트리플-레벨 셀 회로는 메모리 셀 당 다중(예를 들어, 3) 비트들(예를 들어, 로직 000, 001, 010, 011, 100, 101, 110 또는 111)을 저장할 수 있다. 4-레벨 셀 타입 회로가 또한 구현될 수 있다.
회로(94) 내의 데이터는 일반적으로 유닛들의 계층으로 조직화된다. 블록은 소거의 최소량이다. 페이지는 기입의 최소량이다. 코드워드(또는 판독 유닛 또는 Epage 또는 ECC-페이지)는 판독 및 에러 정정의 최소량이다. 각각의 블록은 정수 개의 페이지들을 포함한다. 각각의 페이지는 진정수(integral number)의 코드워드들을 포함한다.
제어기 회로를 구현하는 회로(100)가 도시된다. 회로(100)는 일반적으로 회로(94)로부터의 판독 및 회로(94)로의 기입을 제어하도록 동작한다. 회로(100)는 회로(92)로부터 수신된 데이터 유닛들을 인코딩함으로써 기입 코드워드들을 생성한다. 회로(100)는 회로(94)로부터 수신된 판독 코드워드들을 디코딩하는 능력을 포함한다. 결과적인 디코딩된 데이터는 신호(HOSTIO)를 통해 회로(92)에 제시되고 및/또는 재-인코딩되고 신호(NVMIO)를 통해 회로(94)로 다시 기입된다. 회로(100)는 하나 또는 그 초과의 고상 드라이브들의 제어기, 임베딩된 저장소, 또는 다른 적합한 제어 애플리케이션들을 구현하는 하나 또는 그 초과의 집적 회로(또는 칩 또는 다이)를 포함한다.
기입의 부분으로서, 회로(100)는 일반적으로 각각의 데이터 유닛들을 인코딩함으로써 다수의 코드워드들을 생성하도록 구성된다. 몇 개의 코드워드들은 다수의 배치들을 형성하도록 함께 어셈블리되며, 각각의 배치는 2개 또는 그 초과의 코드워드들을 포함한다. 각각의 배치의 크기는 실질적으로 회로(94)의 플래인의 크기와 매칭한다. 회로(100)는 또한 배치들/코드워드들을 파싱함으로써 다수의 슬라이스들을 생성한다. 슬라이스들은 인터리빙되고 몇 개의 페이지들로 함께 모아진다. 회로(100)는 회로(94)에 기입되는 리던던시 블록을 생성하기 위해 다수의 페이지들을 이용한다.
판독의 일부로서, 회로(100)는 일반적으로, 회로(94)로부터 리던던시 블록을 판독함으로써 페이지들을 재생하도록 구성된다. 슬라이스들을 재생하기 위해서 페이지들이 파싱된다. 회로(100)는 나중에 이 슬라이스들로부터 코드워드들을 재생한다. 원래의 데이터 유닛들을 재생하기 위해서 코드워드들이 디코딩된다.
고상 드라이브를 구현하는 회로(102)가 도시된다. 회로(102)는 일반적으로, 회로(92)에 의해 생성된 데이터를 저장하고 그 데이터를 회로(92)로 리턴하도록 동작한다. 다양한 실시형태들에 따라서, 회로(102)는: 비휘발성 반도체 디바이스들, 이를 테면, NAND 플래시 디바이스들, 위상 변경 메모리(예를 들어, PCM) 드라이브들, 또는 저항성 RAM(예를 들어, ReRAM) 드라이브들; 하나 또는 그보다 많은 비휘발성 드라이브들을 갖는 고상 드라이브의 부분들; 및 임의의 다른 휘발성 또는 비휘발성 저장 매체 중 하나 또는 그보다 많은 것을 포함한다. 회로(102)는 일반적으로 데이터를 비휘발성 상태로 저장하도록 동작한다.
도 2를 참조하면, 예시적인 리던던시 블록 N의 블록도가 도시된다. 리던던시 블록 N은 일반적으로 다수의 블록들(120a-120n)(예를 들어, N0-N63)을 포함한다. 각각의 블록(120a-120n)은 다수의 페이지들을 갖는다. 각각의 블록(120a-120n)은 회로(94)의 수 개의 다이(96a-96n)(예를 들어, 다이 0 - 다이 63) 중 상이한 다이에 저장된다. 예를 들어, 8 킬로비트들의 데이터는 페이지당 1 킬로비트로 8개의 다이(96a-96n)를 커버한다. 일부 상황들에서, 리던던시 블록 N은 다이(96a - 96n)의 수보다 더 적은 블록들(120a - 120n)을 갖는다. 다른 상황들에서, 리던던시 블록 N은 다이(96a - 96n)의 수보다 더 많은 수의 블록들(120a - 120n)을 갖는다.
리던던시 블록 N의 수명의 시작으로서, 평균 채널 파라미터들의 단일 세트를 이용하여 블록들(120a - 120n) 모두가 판독된다. 시간이 경과함에 따라 그리고 리던던시 블록 N이 프로그래밍되고 삭제됨에 따라, 하나 또는 그보다 많은 블록들(예를 들어, 블록들 120c 및 120m)이 더 높은 에러 레이트를 가진 아웃라이어 블록들로서 식별될 수 있다. 따라서, 증가된 에러 레이트를 감안하여 아웃라이어 블록들의 에러 수정 코딩이 증가된다.
리던던시 블록을 코어스 입도(coarse granularity)로서 적용함으로써, 회로(100)는 선택적으로, 하나 또는 그보다 많은 블록들(120a-120n)(또는 대응하는 다이 96a-96n)의 손실을 허용하는 결함 감내 능력을 제공한다. 다양한 구현들에서, 회로(100)는 리던던시 블록 N에 저장되는 데이터로부터 리던던트 정보(예를 들어, 패리티 정보)를 생성하도록 동작한다. 리던던트 정보는 일반적으로, 블록들(120a-120n) 중 하나 또는 그 초과의 것이 결함이 생기고/생기거나 파워를 상실하는 경우에 데이터의 재구성을 가능하게 한다. 데이터 재구성은 독립적인 디스크(예를 들어, RAID) 하드 디스크 드라이브의 리던던트 어레이에서의 재구성과 유사하다. 리던던트 정보가 리던던트 블록 N의 블록들(120a-120n)의 하나 또는 그 초과의 것에 저장된다. 리던던트 정보의 결함 감내는 조정가능하다. 예를 들어, 단일 리던던트 블록(예를 들어, 120a)은 단일 블록(120b-120n)의 손실로부터 복원하기에 충분한 리던던트 정보를 저장하기 위해서 사용된다. 2개의 리던던트 블록들(예를 들어, 120a-120b)는 2개의 블록들(120c-120n)의 손실로부터 복원하기 위해 사용된다. 리던던트 정보가 데이터(예를 들어, RAID 0)의 거울 사본인 경우, 블록들(120a-120n)중 절반이 데이터를 저장할 수 있고 다른 절반은 데이터의 거울 사본을 저장한다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 기입하기 위한 예시적인 방법(140)의 흐름도가 도시된다. 방법(또는 프로세스)(140)은 회로(100)에 의해 구현된다. 방법(140)은 일반적으로, 단계(또는 상태)(142), 단계(또는 상태)(144), 단계(또는 상태)(146), 단계(또는 상태)(148), 단계(또는 상태)(150), 및 단계(또는 상태)(152)를 포함한다. 단계들(142 내지 152)은, 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 결합, 또는 다른 구현들의 결합으로서 구현될 수도 있는 모듈들 및/또는 블록들을 표현할 수도 있다. 단계들(142 내지 152)의 시퀀스는 대표적인 예로서 도시된다. 다른 단계 순서들은, 특정한 애플리케이션의 기준들을 충족시키도록 구현될 수도 있다.
단계(142)에서, 회로(100)는 유지보수 동작들의 일부로서, (신호 HOSTIO를 통해) 회로(92)로부터 신호(예를 들어, 데이터)로 수신되고, 내부로부터 회로(100)로 판독되고 그리고/또는 회로(94)로부터 판독되는 데이터 유닛들을 인코딩한다. 코드워드들은, 단계(144)에서 회로(100)에 의해 배치(batch)들로 어셈블리된다. 각각의 배치는, 디바이스들(96a-96n) 내의 평면의 비트-폭만큼 크거나 (실질적으로는 매칭함) 그 비트-폭보다 작은 비트-폭을 갖는다. 단계(146)에서, 배치들 및/또는 배치들 내의 코드워드들은 회로(100)에 의해 슬라이스들로 분할된다.
도 4를 참조하면, 예시적인 코드워드(160)의 다이어그램이 도시된다. 각각의 코드워드(160)의 데이터는 유사한 사이즈들을 갖는 슬라이스들(162a-162n)로 파싱(parse)(또는 분할)된다. 각각의 슬라이스(162a-162n)는 결국 상이한 플래시 평면에 저장된다. 결과로서, 코드워드(160) 내부의 에러 레이트는 모든 플래시 평면들에 걸친 평균 수이다. 다수의 평면들에 걸쳐 코드워드(160)를 분배하는 것이 아니라 코드워드(160)가 워스트(worst) 평면에 저장되면, 코드워드(160) 내부의 에러들의 수는 에러들의 수보다 작다. 코드워드(160)의 사이즈는, 대응하는 데이터 유닛 상에서 수행되는 에러 정정 코딩(또는 코드 레이트)의 레벨에 의존하여 변한다. 더 높은 에러 정정가능 코딩은 일반적으로, 더 낮은 에러 정정가능 코딩보다 더 큰 워드워드들(160)을 초래한다.
도 5를 참조하면, 다수의 코드워드들의 슬라이스들(162a-162n)의 디바이스들(96a-96n)로의 예시적인 매핑의 다이어그램이 도시된다. 도 3으로 리턴하면, 단계(144)에서 생성된 배치들(예를 들어, 배치 A 내지 배치 N)은, 다수의 페이지들(예를 들어, 페이지 A 내지 페이지 N)을 갖는 리던던시 블록의 형태로 회로(100)에 의해 함께 수집(또는 어셈블리)된다. 단계(146)의 슬라이싱은, 각각의 배치(A-N) 내의 코드워드들(예를 들어, CWA 내지 CWN)을 더 작은 부분들로 분할한다(그리고, 그에 따라 배치들(A-N)을 더 작은 부분들로 분할함).
단계(148)에서, 각각의 배치(A-N) 내의 상이한 코드워드들(CWA-CWN)로부터의 슬라이스들(162a-162n) 및/또는 상이한 배치들(A-N)로부터의 슬라이스들(162a-162n)은 페이지들(A-N)로 인터리빙된다. 도 5에 도시된 예에서, 페이지 A는 배치 A로부터 다수(예를 들어, 2개)의 슬라이스들, 배치 B로부터 다수(예를 들어, 2개)의 슬라이스들, 및 배치 N으로부터 다수(예를 들어, 2개)의 슬라이스들을 포함한다. 다양한 실시예들에서, 배치들(A-N) 중 하나 또는 그 초과는, 슬라이스들(162a-162n)을 인터리빙하지 않으면서 페이지가 될 수도 있다. 결과로서, 비-인터리빙된 페이지는 디바이스(예를 들어, 회로(96b))의 평면(예를 들어, 평면 B)에 저장된다.
단계(150)에서, 인터리빙된 및/또는 인터리빙되지 않은 슬라이스들(162a-162n)을 포함하는 페이지들(A-N)은 중복 블록으로 어셈블링된다. 중복 블록은 후속하여, 단계(152)에서 회로(94)에 기록된다. 기록 동작의 일부로서, 각각의 페이지(A-N)는 평면들(A-N) 중 개개의 평면에 저장된다. 다양한 실시예들에서, 개개의 평면들(A-N) 각각은 상이한 디바이스(96a-96n)에 저장된다. 몇몇 실시예들에서, 개개의 평면들 중 두 개 또는 그 초과는 동일한 디바이스(96a-96n)에 저장된다(예컨대, 다이에 있는 2개 또는 4개 평면들은 동시에 액세스될 수 있다).
각각의 평면(예컨대, 물리적 페이지)이 m개 코드워드들의 크기를 갖고 각각의 코드워드가 n개 슬라이스들을 갖는 예를 고려하라. 동일한 열 상에 있는 모든 코드워드들의 k-번째 슬라이스가 가상 코드워드를 형성한다. 열마다 슬라이스에서, m개 열들은 최대 m개 가상 코드워드들을 형성한다. 회로(94)에서 m개 가상 코드워드들은 k-번째 플래시 평면에 기록된다. 인터리브 맵핑은, 어떠한 부가적인 하드웨어 비용들도, 그리고 어떠한 판독/기록 성능 저하도 유발하지 않는다. 맵핑을 이용하여, 각각의 물리적 코드워드는 다수의 플래시 평면들에 분산되고, 따라서 최악-플래시-평면 문제가 극복된다.
도 6을 참조하면, 판독을 위한 예시적 방법(180)의 흐름도가 도시된다. 방법(또는 프로세스)(180)은 회로(100)에 의해 구현된다. 방법(180)은 일반적으로 단계(또는 상태)(182), 단계(또는 상태)(184), 단계(또는 상태)(186), 단계(또는 상태)(188), 단계(또는 상태)(190), 및 단계(또는 상태)(192)를 포함한다. 단계들(182 내지 192)은, 하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 결합, 또는 다른 구현들로서 구현될 수 있는 모듈들 및/또는 블록들을 표현할 수 있다. 단계들(182 내지 192)의 시퀀스는 대표 예로서 도시된다. 특정 애플리케이션의 기준들을 충족시키기 위해, 다른 단계 순서들이 구현될 수 있다.
도 7을 참조하면, 다수의 코드워드들(CWA-CWN)의 다수의 슬라이스들(162a-162n)로의 디바이스들(96a-96n)의 데이터의 예시적 맵핑의 도면이 도시된다. 도 6으로 돌아가면, 단계(182)에서 회로(94)로부터 중복 블록이 판독된다. 회로(94)에서 주어진 주소로부터 판독되는 중복 블록은, 오류들을 제외하고, 상기 주어진 주소에 앞서 기록된 중복 블록과 동일하다. 페이지들(A-N)을 재생시키기 위해, 단계(184)에서 회로(100)에 의해 중복 블록이 파싱된다. 판독 페이지들은 앞서 기록된 중복 블록의 기록 페이지들과 동일하다.
다양한 실시예들에서, 슬라이스들(162a-162n)을 재생시키기 위해 단계(186)에서 회로(100)에 의해 페이지들(A-N)이 파싱된다. 배치들(A-N)을 재생시키기 위해, 단계(188)에서, 슬라이스들(162a-162n)은 디-인터리빙 및 어셈블링된다. 기록에 앞서 페이지들이 인터리빙되지 않은 몇몇 상황들에서, 디-인터리빙 단계는 생략될 수 있다. 단계(190)에서 코드워드들(CWA-CWN)을 재생시키기 위해 배치들(A-N)은 회로(100)에 의해 파싱된다. 데이터 유닛들을 복원시키기 위해 단계(192)에서 각각의 코드워드(CWA-CWN)는 디코딩된다. 데이터 유닛들은 신호(DATA)로 표현된다. 데이터 유닛들은 후속하여, 신호(HOSTIO)에서 회로(92)에 전달되거나, 그리고/또는 판독을 개시한 회로(100)에 대해 내부적인 소스에 전달된다.
제 k 열(column)을 포함하는 기입 예 이후, 제 k 플래시 플레인의 판독은 m개의 가상 코드워드들을 포함하는 물리적 페이지를 회로(100)에 리턴한다. 각각의 가상 코드워드는 n개의 슬라이스들을 갖는다. 2차원의 제 i 열 및 제 j 행으로의 제 i 가상 코드워드 및 제 j 슬라이스 맵은 회로(100) 내의 코더워드 버퍼를 판독한다. 판독 코드워드 버퍼 내의 데이터 유닛들은 판독 데이터를 요청하였던 호스트 컴퓨터(신호 HOSTIO를 통해) 또는 (예를 들어, 회로(100) 내부의) 다른 목적지로 신호 데이터에서 전송될 수 있다.
회로(100)는 일반적으로 지배적 액세스 패턴들이 큰 데이터 크기에 대한 순차적인 판독들 및/또는 액세스들인 애플리케이션들에 유용하다. 예를 들어, 비디오 파일들 및 오디오 파일에의 액세스는 일반적으로 서로 다른 액세스들의 레이턴시 변화에 민감한 큰 데이터 크기들에 액세스한다. 회로(100)는 또한 랜덤 판독 집중 애플리케이션들 및 다른 랜덤 애플리케이션들에 유용하다.
일부 구현들에서, 통상의 하드웨어 설계들은 변경되지 않을 수 있고, 인터리빙은 소프트웨어/펌웨어에 의해 인에이블 또는 디스에이블된다. 예를 들어, 본 발명의 실시예들은 전류 제어기 설계들과 결합될 수 있다. 프로그램/소거 사이클 카운트가 낮은 경우, 전류 설계들이 회로(94)에 액세스하는데 이용된다. 프로그램/소거 사이클 카운트가 증가함에 따라, 서로 다른 다이/플레인들에서의 에러 레이트들이 일반적으로 증가한다. 서로 다른 다이/플레인들의 프로그램/소거 사이클 수명 및 최대 보유 시간은 또한 서로 다를 수 있다. 예를 들어, 최악의 플레인/다이에 저장된 코드워드들은 통상적으로 많은(예를 들어, 10,000개의) 프로그램/소거 사이클들 이후에 정정되는 것을 실패한다. 통상의 설계에서, 최악의 다이는 그 다이가 실패할 때 사용가능하지 않은 것으로 마킹된다. 따라서, 특정한 보장된 용량을 가지고 인터리빙이 없는 통상의 플래시 기반 고체 상태 드라이브의 프로그램/소거 사이클 수명은 단지 10,000개의 프로그램/소거 사이클들이다. 인터리빙을 인에이블함으로써, 코드워드들에서의 에러들은 다수의 다이/플레인들의 평균이다. 따라서, 코드워드들은 심지어 10,000개의 프로그램/소거 사이클들 이후에도 정정가능하게 유지된다. 고체 상태 드라이브는 용량의 손실 없이 10,000개보다 더 많은 프로그램/소거 사이클들에 대해 사용가능하게 유지된다.
인터리빙은 프로그램/소거 사이클들 상에서 적응적 에러 정정 코딩과 같은 많은 다른 기법들에 직교하여 구현될 수 있다. 적응적 에러 정정 코딩이 적용되면, 코드 레이트는 초기에 프로그램/소거 사이클들 상에서 적응된다. 프로그램/소거 사이클이 증가함에 따라, 플래시 제어기는, 궁극적으로 가장 강한 에러 정정 코딩(예를 들어, 가장 낮은 코딩 레이트 에러 정정 코드)이 적용될 때까지, 더 강한 에러 정정 코딩(예를 들어, 더 낮은 코딩 레이트 에러 정정 코드들)으로 점진적으로 스위칭한다. 프로그램/소거 사이클들이 계속 증가함에 따라, 가장 약한 플래시 블록/다이/플레인 상의 가장 낮은 코딩 레이트 에러 정정 코드는 점진적으로 실패한다. 인터리빙을 인에이블함으로써, 가장 낮은 다이는 여전히 사용가능하게 유지될 수 있고, 따라서, 프로그램/소거 사이클 수명은 용량 손실없이 연장된다.
본 발명의 다양한 구현들은 종래의 기법들과 비교하여 더 단정할 수 있는 회로(102)의 성능을 초래한다. 인터리빙은, 상이한 다이/플레인들에 저장된 다른 코드워드들보다 몇몇 코드워드들 내에 더 많은 에러들이 존재하는 경우들을 감소시킨다. 다수의 물리적 플래시 플레인들에 걸쳐 각각의 코드워드를 분산시키는 것은 최악의 플래시 플레인에 의해 초래되는 병목(bottleneck)을 회피한다. 따라서, 신뢰성 및 수명이 개선된다.
도 1 내지 도 7의 다이어그램들에 의해 수행되는 기능들은, 당업자들에게 명백해질 바와 같은, 본 명세서의 교시들에 따라 프로그래밍된 종래의 범용 프로세서, 디지털 컴퓨터, 마이크로프로세서, 마이크로제어기, RISC(reduced instruction set computer) 프로세서, CISC(complex instruction set computer) 프로세서, SIMD(single instruction multiple data) 프로세서, 신호 프로세서, CPU(central processing unit), ALU(arithmetic logic unit), VDSP(video digital signal processor) 및/또는 유사한 컴퓨터 머신들 중 하나 또는 둘 이상을 이용하여 구현될 수 있다. 적합한 소프트웨어, 펌웨어, 코딩, 루틴들, 명령들, 연산코드(opcode)들, 마이크로코드, 및/또는 프로그램 모듈들은, 또한 당업자들에게 명백해질 바와 같은, 본원의 교시들에 기초하여, 숙련된 프로그래머들에 의해 용이하게 준비될 수 있다. 소프트웨어는 일반적으로, 머신 구현의 프로세서들 중 하나 또는 둘 이상에 의해 매체 또는 여러 매체들로부터 실행된다.
본 발명은 또한, 본 명세서에 기술되는 바와 같이, ASIC(application specific integrated circuit)들, 플랫폼 ASIC들, FPGA(field programmable gate array)들, PLD(programmable logic device)들, CPLD(complex programmable logic device)들, 시-오브-게이트(sea-of-gate)들, RFIC(radio frequency integrated circuit)들, ASSP(application specific standard product)들, 하나 또는 둘 이상의 모놀리식 집적 회로(monolithic integrated circuit)들, 플립칩 모듈들 및/또는 멀티-칩 모듈들로서 배열된 하나 또는 둘 이상의 칩들 또는 다이의 준비에 의해, 또는 종래의 컴포넌트 회로들의 적합한 네트워크를 상호연결함으로써 구현될 수 있고, 그것의 수정들은 당업자들에게 용이하게 명백할 것이다.
따라서, 본 발명은 또한, 본 발명에 따른 하나 또는 그 초과의 프로세스들 또는 방법들을 수행하도록 머신을 프로그래밍하는데 이용될 수 있는 명령들을 포함하는 저장 매체 또는 매체들 및/또는 송신 매체 또는 매체들일 수 있는 컴퓨터 제품을 포함할 수 있다. 주변 회로의 동작들과 함께 머신에 의한 컴퓨터 제품 내의 포함된 명령들의 실행은, 입력 데이터를, 저장 매체 상의 하나 또는 그 초과의 파일들 및/또는 청각적(audio) 및/또는 시각적(visual) 묘사와 같은, 물리적 오브젝트 또는 물질을 나타내는 하나 또는 그 초과의 출력 신호들로 변형시킬 수 있다. 저장 매체는, 플로피 디스크, 하드 드라이브, 자기 디스크, 광학 디스크, CD-ROM, DVD 및 광자기 디스크들 및 회로들, 예컨대, ROM들(read-only memories), RAM들(random access memories), EPROM들(erasable programmable ROMs), EEPROM들(electrically erasable programmable ROMs), UVPROM(ultra-violet erasable programmable ROMs), 플래시 메모리, 자기 카드들, 광학 카드들, 및/또는 전자 명령들을 저장하기에 적합한 임의의 유형의 매체를 포함하는 임의의 유형의 디스크를 포함할 수 있다(그러나, 이에 제한되지 않음).
본 발명의 엘리먼트들은, 하나 또는 그 초과의 디바이스들, 유닛들, 컴포넌트들, 시스템들, 머신들 및/또는 장치들 중 일부 또는 전부를 형성할 수 있다. 디바이스들은, 서버들, 워크스테이션들, 저장 어레이 컨트롤러들, 저장 시스템들, 개인용 컴퓨터들, 랩탑 컴퓨터들, 노트북 컴퓨터들, 팜 컴퓨터들, 개인용 디지털 보조기기들, 휴대용 전자 디바이스들, 배터리 전원 디바이스들, 셋톱 박스들, 인코더들, 디코더들, 트랜스코더들, 컴프레서들, 디컴프레서들, 사전-프로세서들, 사후-프로세서들, 송신기들, 수신기들, 트랜시버들, 암호 회로들, 셀룰러 전화기들, 디지털 카메라들, 포지셔닝 및/또는 내비게이션 시스템들, 의료용 장비, 헤즈-업(heads-up) 디스플레이들, 무선 디바이스들, 오디오 레코딩, 오디오 저장 및/또는 오디오 재생 디바이스들, 비디오 레코딩, 비디오 저장 및/또는 비디오 재생 디바이스들, 게임 플랫폼들, 주변기기들 및/또는 멀티-칩 모듈들을 포함할 수 있다(그러나, 이에 제한되지 않음). 당업자들은, 본 발명의 엘리먼트들이 특정 응용의 기준들을 충족시키기 위해 다른 유형들의 디바이스들에서 구현될 수도 있다는 점을 이해할 것이다.
"있다(is(are))" 및 동사들과 함께 본 명세서에 사용되는 경우 용어들 "일 수도 있다(may)" 및 "일반적으로"는, 본 개시에 제시된 특정한 예들 뿐만 아니라 본 개시에 기초하여 도출될 수 있는 대안적인 예들 둘 모두를 포괄할 만큼, 상기 설명이 충분히 개괄적이도록 믿어지고 예시적이라는 의도를 전달하도록 의도된다. 본 명세서에 사용된 바와 같이, 용어들 "일 수도 있다" 및 "일반적으로"는, 대응하는 엘리먼트를 생략하는 가능성 또는 바람직한 상황을 반드시 함의하는 것으로 해석되어서는 안된다.
본 발명이, 본 발명의 실시예들을 참조하여 특정하게 도시되고 설명되었지만, 당업자는, 형태 및 세부사항들에서의 다양한 변화들이 본 발명의 범위를 벗어나지 않으면서 행해질 수도 있음이 이해될 것이다.

Claims (18)

  1. 장치로서,
    복수의 평면들을 각각이 갖는 복수의 메모리들에 대한 인터페이스 ― 상기 메모리들은 비휘발성임 ―; 및
    (i) 복수의 데이터 유닛들을 인코딩함으로써 복수의 코드워드들을 생성하고, (ii) 상기 코드워드들을 파싱함으로써 복수의 슬라이스들을 생성하고, (iii) 상기 슬라이스들을 인터리빙함으로써 복수의 페이지들을 생성하고, 그리고 (iv) 상기 페이지들을 상기 평면들 중 각각의 평면들에 병렬로 기입하도록 구성된 회로를 포함하는,
    장치.
  2. 제 1 항에 있어서,
    상기 메모리들은 플래시 메모리들인,
    장치.
  3. 제 1 항에 있어서,
    (i) 상기 회로는 복수의 상기 코드워드들을 각각 포함하는 복수의 배치들을 생성하도록 추가로 구성되고,
    (ii) 상기 배치들 각각의 크기는 상기 평면들 중 하나와 실질적으로 일치하는,
    장치.
  4. 제 3 항에 있어서,
    상기 페이지들 중 하나 또는 그보다 많은 페이지는 상기 배치들 중 2개 또는 그보다 많은 배치로부터의 상기 슬라이스들을 포함하는,
    장치.
  5. 제 1 항에 있어서,
    상기 회로는 (i) 상기 메모리들로부터 상기 평면들 중 상기 각각의 평면들을 병렬로 판독함으로써 상기 페이지들을 재생성하고, (ii) 상기 페이지들을 파싱함으로써 상기 슬라이스들을 재생성하고, (iii) 상기 슬라이스들로부터 상기 코드워드들을 재생성하고, 그리고 (iv) 상기 코드워드들을 디코딩함으로써 상기 데이터 유닛들을 재생성하도록 추가로 구성되는,
    장치.
  6. 제 5 항에 있어서,
    (i) 상기 회로는 복수의 상기 코드워드들을 각각 포함하는 복수의 배치들을 생성하도록 추가로 구성되고,
    (ii) 상기 배치들 중 하나 또는 그보다 많은 배치는 상기 페이지들 중 2개 또는 그보다 많은 페이지로부터의 상기 슬라이스들을 포함하는,
    장치.
  7. 제 6 항에 있어서,
    상기 코드워드들은 상기 배치들을 파싱함으로써 재생성되는,
    장치.
  8. 제 1 항에 있어서,
    상기 페이지들 각각은 상기 메모리들 중 서로 다른 메모리의 상기 평면들 중 상기 각각의 평면에 기입되는,
    장치.
  9. 제 1 항에 있어서,
    상기 장치는 하나 또는 그보다 많은 집적 회로들로서 구현되는,
    장치.
  10. 다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법으로서,
    (A) 복수의 데이터 유닛들을 인코딩함으로써 복수의 상기 코드워드들을 생성하는 단계;
    (B) 상기 코드워드들을 파싱함으로써 복수의 슬라이스들을 생성하는 단계;
    (C) 상기 슬라이스들을 인터리빙함으로써 복수의 페이지들을 생성하는 단계; 및
    (D) 상기 페이지들을 복수의 메모리들의 복수의 상기 평면들 중 각각의 평면들에 병렬로 기입하는 단계를 포함하며,
    상기 메모리들은 비휘발성인,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  11. 제 10 항에 있어서,
    상기 메모리들은 플래시 메모리들인,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  12. 제 10 항에 있어서,
    복수의 상기 코드워드들을 각각 포함하는 복수의 배치들을 생성하는 단계를 더 포함하며,
    상기 배치들 각각의 크기는 상기 평면들 중 하나와 실질적으로 일치하는,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  13. 제 12 항에 있어서,
    상기 페이지들 중 하나 또는 그보다 많은 페이지는 상기 배치들 중 2개 또는 그보다 많은 배치로부터의 상기 슬라이스들을 포함하는,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  14. 제 10 항에 있어서,
    상기 메모리들로부터 상기 평면들 중 상기 각각의 평면들을 병렬로 판독함으로써 상기 페이지들을 재생성하는 단계;
    상기 페이지들을 파싱함으로써 상기 슬라이스들을 재생성하는 단계;
    상기 슬라이스들로부터 상기 코드워드들을 재생성하는 단계; 및
    상기 코드워드들을 디코딩함으로써 상기 데이터 유닛들을 재생성하는 단계를 더 포함하는,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  15. 제 14 항에 있어서,
    복수의 상기 코드워드들을 각각 포함하는 복수의 배치들을 생성하는 단계를 더 포함하며,
    상기 배치들 중 하나 또는 그보다 많은 배치는 상기 페이지들 중 2개 또는 그보다 많은 페이지로부터의 상기 슬라이스들을 포함하는,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  16. 제 15 항에 있어서,
    상기 코드워드들은 상기 배치들을 파싱함으로써 재생성되는,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  17. 제 10 항에 있어서,
    상기 페이지들 각각은 상기 메모리들 중 서로 다른 메모리의 상기 평면들 중 상기 각각의 평면에 기입되는,
    다수의 평면들에 걸쳐 코드워드들을 인터리빙하기 위한 방법.
  18. 장치로서,
    복수의 데이터 유닛들을 인코딩함으로써 복수의 코드워드들을 생성하기 위한 수단;
    상기 코드워드들을 파싱함으로써 복수의 슬라이스들을 생성하기 위한 수단;
    상기 슬라이스들을 인터리빙함으로써 복수의 페이지들을 생성하기 위한 수단; 및
    상기 페이지들을 복수의 메모리들의 복수의 평면들 중 각각의 평면들에 병렬로 기입하기 위한 수단을 포함하며,
    상기 메모리들은 비휘발성인,
    장치.

KR1020150008053A 2014-01-13 2015-01-16 다수의 플래시 평면들에 걸친 코드워드들의 인터리빙 KR20150085800A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461926516P 2014-01-13 2014-01-13
US14/156,693 2014-01-16
US14/156,693 US9405480B2 (en) 2014-01-13 2014-01-16 Interleaving codewords over multiple flash planes

Publications (1)

Publication Number Publication Date
KR20150085800A true KR20150085800A (ko) 2015-07-24

Family

ID=53521406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150008053A KR20150085800A (ko) 2014-01-13 2015-01-16 다수의 플래시 평면들에 걸친 코드워드들의 인터리빙

Country Status (4)

Country Link
US (1) US9405480B2 (ko)
JP (1) JP6491482B2 (ko)
KR (1) KR20150085800A (ko)
WO (1) WO2015106263A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI646554B (zh) * 2017-03-28 2019-01-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
CN111209232B (zh) * 2018-11-21 2022-04-22 昆仑芯(北京)科技有限公司 访问静态随机存取存储器的方法、装置、设备和存储介质
CN110277134A (zh) * 2019-06-27 2019-09-24 鸿秦(北京)科技有限公司 一种自动化批量测试固态硬盘的系统
WO2023159347A1 (zh) * 2022-02-22 2023-08-31 华为技术有限公司 一种控制数据读写的方法和装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US7966462B2 (en) * 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
US7237176B2 (en) * 2004-01-12 2007-06-26 Hewlett-Packard Development Company, L.P. Partitioning data for error correction
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
WO2009053962A2 (en) 2007-10-22 2009-04-30 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
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
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
KR101616100B1 (ko) * 2009-09-25 2016-04-28 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8626988B2 (en) 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US9244836B2 (en) * 2009-11-23 2016-01-26 Agiga Tech Inc. Flash memory organization for reduced failure rate
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8484408B2 (en) 2010-12-29 2013-07-09 International Business Machines Corporation Storage system cache with flash memory in a raid configuration that commits writes as full stripes
US8732557B2 (en) 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
JP5426711B2 (ja) * 2011-06-08 2014-02-26 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
US9335939B2 (en) 2011-07-12 2016-05-10 Violin Memory Inc. RAIDed memory system
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
KR20130111821A (ko) 2012-04-02 2013-10-11 삼성전자주식회사 Raid 메모리 시스템
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition

Also Published As

Publication number Publication date
US20150199140A1 (en) 2015-07-16
WO2015106263A1 (en) 2015-07-16
US9405480B2 (en) 2016-08-02
JP6491482B2 (ja) 2019-03-27
JP2015135676A (ja) 2015-07-27

Similar Documents

Publication Publication Date Title
US10153782B2 (en) Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes
US10157096B2 (en) Hot-read data aggregation and code selection
US11562787B2 (en) Multi-state programming for memory devices
US9478271B2 (en) Nonvolatile memory data recovery after power failure
US9465552B2 (en) Selection of redundant storage configuration based on available memory space
US9847139B2 (en) Flash channel parameter management with read scrub
US10326479B2 (en) Apparatuses and methods for layer-by-layer error correction
US20150372697A1 (en) On-die error detection and correction during multi-step programming
CN109857584B (zh) 于记忆装置进行访问控制的方法、记忆装置和其控制器
US20190026182A1 (en) Methods and apparatuses for error correction
US9304851B2 (en) Decoding with log likelihood ratios stored in a controller
KR20150085800A (ko) 다수의 플래시 평면들에 걸친 코드워드들의 인터리빙
US9922718B2 (en) Flash command that reports a count of cell program failures
EP3417457B1 (en) Error rate reduction
US11372719B1 (en) Memory system

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid