KR101874290B1 - 메모리 스트라이프 매핑 - Google Patents

메모리 스트라이프 매핑 Download PDF

Info

Publication number
KR101874290B1
KR101874290B1 KR1020187000172A KR20187000172A KR101874290B1 KR 101874290 B1 KR101874290 B1 KR 101874290B1 KR 1020187000172 A KR1020187000172 A KR 1020187000172A KR 20187000172 A KR20187000172 A KR 20187000172A KR 101874290 B1 KR101874290 B1 KR 101874290B1
Authority
KR
South Korea
Prior art keywords
stripe
stripes
stripe map
map
memory
Prior art date
Application number
KR1020187000172A
Other languages
English (en)
Other versions
KR20180005284A (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 KR20180005284A publication Critical patent/KR20180005284A/ko
Application granted granted Critical
Publication of KR101874290B1 publication Critical patent/KR101874290B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • 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
    • 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/061Improving I/O performance
    • 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
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0656Data buffering arrangements
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명의 실시예는 메모리에서의 RAID(Redundant Array of Independent Disk) 스트라이프 매핑과 관련된 장치 및 방법을 제공한다. 예시적인 방법은 스트라이프 맵에 따라 복수의 메모리 디바이스들의 저장 볼륨을 통해 다수의 스트라이프들에 데이터를 기록하는 단계를 포함하고, 상기 다수의 스트라이프 각각은 다수의 요소들을 포함하며, 상기 스트라이프 맵은 상기 다수의 스트라이프를 식별하기 위해 다수의 스트라이프 인덱스와, 상기 다수의 스트라이프 각각에 포함된 요소들을 식별하기 위한 다수의 요소 식별자를 포함한다.

Description

메모리 스트라이프 매핑
본 발명은 일반적으로 반도체 메모리 디바이스, 방법 및 시스템에 관한 것으로, 보다 상세하게는 메모리에서의 스트라이프 매핑에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨터 또는 다른 전자 장치의 내장형의 반도체 집적 회로로서 제공된다. 휘발성 메모리와 비휘발성 메모리를 포함하여 다양한 유형의 메모리가 존재한다. 휘발성 메모리는 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 다른 것들 중에서도, RAM(Random Access Memory), DRAM(Dynamic Random Access Memory) 및 SDRAM(Synchronous Dynamic Random Access Memory)을 포함한다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 정보를 유지함으로써 영구 데이터를 제공할 수 있으며, 다른 것들 중에서도, NAND 플래시 메모리, NOR 플래시 메모리, 읽기 전용 메모리(ROM), EEPROM(Electrically Erasable Programmable ROM), EPROM(Erasable Programmable ROM), 상변화 랜덤 액세스 메모리(PCRAM)를 포함할 수 있다.
메모리 디바이스는 SSD(solid state drive)를 형성하기 위해 함께 결합될 수 있다. 솔리드 스테이트 드라이브는 NAND 플래시 메모리 및 NOR 플래시 메모리와 같은 비휘발성 메모리를 포함할 수 있고, 및/또는 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서 DRAM 및 SRAM과 같은 휘발성 메모리를 포함할 수 있다. 질화물층의 전하 트랩에 정보를 저장하는 반도체-산화물-질화물-산화물-반도체 및 금속-산화물-질화물-산화물-반도체 커패시터 구조를 이용하는 플로팅 게이트 플래시 디바이스 및 전하 트랩 플래시(CTF) 디바이스를 포함하는 플래시 메모리 디바이스는, 광범위한 전자 애플리케이션을 위한 비휘발성 메모리로서 활용될 수 있다. 플래시 메모리 디바이스는 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소모를 가능하게 하는 1-트랜지스터 메모리 셀을 사용한다.
솔리드 스테이트 드라이브가 성능, 크기, 무게, 견고성, 작동 온도 범위 및 전력 소모 측면에서 하드 드라이브에 비해 장점을 가질 수 있기 때문에 SSD를 사용하여 하드 디스크 드라이브를 컴퓨터의 주 저장 장치로 대체 할 수 있다. 예를 들어, SSD는 움직이는 부품이 없어서 자기 디스크 드라이브와 비교할 때 우수한 성능을 발휘할 수 있고, 디스크 드라이브와 관련된 탐색 시간, 대기 시간 및 기타 전기-기계적 지연을 피할 수 있다. SSD 제조업체는 비휘발성 플래시 메모리를 사용하여, 내부 배터리 공급 장치를 사용하지 않는 플래시 SSD를 만들 수 있으므로, 드라이브를 보다 다양하고 컴팩트하게 사용할 수 있다.
SSD는 다수의 메모리 디바이스, 예를 들어, 다수의 메모리 칩을 포함할 수 있다(본 명세서에서 사용된 바와 같이, "다수의"는 어떤 것의 하나 이상을 지칭할 수 있다. 예를 들어, 다수의 메모리 디바이스는 하나 이상의 메모리 디바이스를 지칭할 수 있다). 당 업자가 알 수 있는 바와 같이, 메모리 칩은 다수의 다이 및/또는 논리 유닛(LUN)을 포함할 수 있다. 각각의 다이는 그 위에 다수의 메모리 어레이 및 주변 회로를 포함할 수 있다. 메모리 어레이는 다수의 물리적 페이지로 편성된 다수의 메모리 셀을 포함할 수 있고, 물리적 페이지는 다수의 블록으로 조직될 수 있다.
RAID(Redundant Array of Independent Disk)는 다수의 메모리 디바이스 사이에서 데이터를 분할 및/또는 복제하는 컴퓨터 데이터 저장 방식의 포괄적인 용어이다. RAID 어레이의 다중 메모리 디바이스는 컴퓨터의 사용자 및 운영 체제에서 단일 메모리 디바이스(예 : 디스크)처럼 보일 수 있다. 역사적으로 RAID는 여러 개의 하드 디스크 드라이브(HDD)로 작동한다.
도 1은 본 개시의 다수의 실시예에 따른 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 기능 블록도이다.
도 2는 본 개시의 다수의 실시예에 따른 메모리 디바이스의 일부분의 도면이다.
도 3은 스트라이프-기반으로 동작되는 저장 볼륨의 블록도를 도시한다.
도 4는 본 개시의 다수의 실시예에 따른 스트라이프 맵을 도시한다.
도 5는 본 개시의 다수의 실시예에 따른 스트라이프 맵을 도시한다.
본 발명은 메모리에서 RAID(Redundant Array of Independent Disk) 스트라이프 매핑을 위한 방법 및 장치를 포함한다. 하나의 방법 실시예는 스트라이프 맵에 따라 복수의 메모리 디바이스의 저장 볼륨을 가로 질러 다수의 스트라이프에 데이터를 기록하는 단계를 포함하고, 상기 다수의 스트라이프 각각은 다수의 요소들을 포함하고, 상기 스트라이프 맵은 상기 다수의 스트라이프를 식별하기 위한 다수의 스트라이프 인덱스와, 상기 다수의 스트라이프 각각에 포함되는 요소를 식별하기 위한 다수의 요소 식별자를 포함한다.
다수의 실시예에서, 스트라이프에 의해 인덱싱된 스트라이프 맵이 생성될 수 있다. 스트라이프 맵에는 여러 메모리 디바이스에 데이터를 기록할 때 사용되는 각 스트라이프에 대한 스트라이프 인덱스가 포함될 수 있다. 스트라이프 맵은 또한 스트라이프에 포함될 다수의 메모리 디바이스 상의 각 요소(예를 들어, 페이지)를 식별할 수 있다. 예를 들어, 스트라이핑 맵은 제 1 스트라이프의 스트라이프 인덱스를 갖는 제 1 스트라이프를 식별할 수 있고, 또한 제 1 스트라이프에 포함되는 다수의 요소(예를 들어, 페이지)를 식별할 수 있다. 스트라이프는 다수의 페이지를 포함할 수 있고, 스트라이프의 다수의 페이지 각각은 메모리 시스템의 상이한 채널에 결합될 수 있다.
다수의 실시예에서, 스트라이프 맵을 이용하여 메모리 시스템에서 스트라이프를 규정하여, 각각의 스트라이프가 다양한 비트 에러율을 갖는 요소를 갖게 된다. 다양한 비트 에러율을 갖는 요소를 가진 메모리 시스템은 특정 스트라이프가 스트라이프를 읽을 때 에러를 반환하는 여러 요소를 가질 가능성을 줄일 수 있다.
다음의 본 발명의 상세한 설명에서, 본 명세서의 일부를 형성하고 본 발명의 하나 이상의 실시예가 어떻게 실시될 수 있는지를 예시적으로 도시한 첨부 도면을 참조한다. 이러한 실시예들은 당 업자가 본 개시의 실시예를 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시예들이 이용될 수 있고, 본 개시의 범위로부터 벗어나지 않으면서 공정, 전기, 및/또는 구조적 변경이 이루어질 수 있음을 이해하여야 한다. 본 명세서에 사용된, 특히, 도면의 도면부호와 관련하여, 도면 부호 "N", "M", "P", "R", "S", "W"및 "V"는 이와 같이 지정된 소정 개수의 특정한 특징이 본 개시의 하나 이상의 실시예에 포함될 수 있음을 표시한다.
본 명세서의 도면은 제 1 자리 또는 숫자가 도면 숫자에 대응하고 나머지 숫자가 도면에서 요소 또는 구성 요소를 식별하는 번호 부여 규칙을 따른다. 상이한 도면들 간의 유사한 요소 또는 구성요소는 유사한 숫자를 사용하여 식별될 수 있다. 예를 들어, 도면 부호 108은 도 1에서 요소 "08"을 참조할 수 있고, 유사한 요소가 도 2에서 참조 번호 208로서 참조될 수 있다. 여기에서 다양한 실시예들에 도시된 요소들은 본 개시의 다수의 추가 실시예들을 제공하도록 추가, 교환, 및/또는 제거될 수 있다. 또한, 알다시피, 도면에 제공된 구성 요소의 비율 및 상대 스케일은 본 발명의 실시예를 설명하기 위한 것이지 제한적인 의미로 해석되어서는 안된다.
도 1은 본 개시의 다수의 실시예에 따른 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 기능 블록도다. 본 명세서에서 사용되는 바와 같이, 호스트(110), 메모리 디바이스(120), 메모리 어레이, 컨트롤러 및/또는 감지 회로는 "장치"로 개별적으로 고려될 수도 있다. 도 1에 도시된 실시예에서, 메모리 시스템(104), 가령, 솔리드 스테이트 드라이브(SSD)는 호스트 인터페이스(106), 가령, 제어 회로, 펌웨어, 및/또는 소프트웨어와 같은 하드웨어적으로 구현될 수 있는 메모리 컨트롤러(108), 및 다수의 메모리 디바이스(110-1,..., 110-N), 가령, 비휘발성 멀티레벨 메모리 셀을 포함하는 솔리드 스테이트 메모리를 포함할 수 있다. 메모리 디바이스들(110-1,..., 110-N)은 예를 들어, 메모리 디바이스들에 포맷된 파일 시스템을 가진, 메모리 시스템에 대한 저장 볼륨을 제공할 수 있다. 다수의 실시예들에서, 메모리 컨트롤러(108)는 물리적 호스트 인터페이스(106) 및 메모리 디바이스들(110-1,..., 110-N)을 포함하는 인쇄 회로 기판에 결합된 주문형 집적 회로(ASIC)일 수 있다.
도 1에 도시된 바와 같이, 메모리 컨트롤러(108)는 복수의 채널에 의해 호스트 인터페이스(106) 및 메모리 디바이스들(110-1,..., 110-N)에 연결될 수 있다. 메모리 컨트롤러(108)는 당 업자가 알고 있는 다른 메모리 동작에 추가하여 여기에 설명된 동작을 수행하도록 구성될 수 있다. 호스트 인터페이스(106)는 메모리 시스템(104)과 호스트(102)와 같은 다른 장치 사이에서 정보를 통신하는데 사용될 수 있다. 호스트(102)는 메모리 액세스 디바이스, 예를 들어 프로세서를 포함할 수 있다. 당 업자는 "프로세서"가 병렬 처리 시스템, 다수의 코 프로세서 등과 같은 다수의 프로세서를 의도할 수 있다는 것을 이해할 것이다. 호스트의 예는 랩톱 컴퓨터, 개인용 컴퓨터, 디지털 카메라, 디지털 레코딩 및 재생 장치, 이동 전화, PDA, 메모리 카드 판독기, 인터페이스 허브 등을 포함할 수 있다. 다수의 실시예에 있어서, 호스트 인터페이스(106)는 표준화된 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(104)이 컴퓨팅 시스템(100)에서 정보 저장을 위해 사용되는 경우, 물리적 호스트 인터페이스(106)는 다른 커넥터 및 인터페이스들 중에서도, SATA(Serial Advanced Technology Attachment), PCIe(Peripheral Component Interconnect Express) 또는 USB(Universal Serial Bus)일 수 있다. 그러나, 일반적으로 호스트 인터페이스(106)는 메모리 인터페이스(104)와, 호스트 인터페이스(106)를 위한 호환 가능한 수용기(receptor)를 갖는 호스트 시스템(102) 간에 제어, 어드레스, 정보 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 컨트롤러(108)는, 호스트 인터페이스(106)에 결합될 수 있는 및/또는 호스트 인터페이스(106)와 통합될 수 있는, 호스트 인터페이스 회로를 포함할 수 있다. 호스트 인터페이스 회로는 다수의 계층, 예를 들어 물리 계층, 링크 계층, 및/또는 전송 계층을 통해 호스트 시스템(102)과 인터페이싱할 수 있다. 당 업자라면, 특정 호스트 인터페이스에 대한 이러한 다수의 계층들이 SATA(Serial Advanced Technology Attachment), PCIe(peripheral component interconnect express), USB(universal serial bus) 등과 같은 인터페이스 표준에 의해 규정될 수 있다는 것을 이해할 것이다. 본 명세서에서 사용된 바와 같이, 전송 계층은 SATA 표준의 일부분으로 전송 계층, 및/또는 PCIe 표준의 일부분으로서 트랜잭션 계층(transaction layer)을 적어도 표시할 수 있다. 당 업자는 SATA 표준에 따른 전송 계층이 PCIe 표준에 따른 트랜잭션 계층과 유사할 수 있다는 것을 이해할 것이다. 실시예들은 특정 표준에 제한되지 않는다.
일반적으로, 호스트 인터페이스 회로는 호스트 시스템으로부터(예를 들어 PCIe 버스로부터) 수신된 명령 패킷을, 호스트-메모리 변환 응답을 요청 호스트로의 전송을 위한 호스트 시스템 명령으로 변환하기 위한 명령어로 변환할 수 있다. 예를 들어, 호스트 인터페이스 회로는 PCIe 기반 트랜잭션 계층 패킷으로부터 SATA 명령 패킷을 구성할 수 있다. 호스트 인터페이스 회로는 호스트 시스템(102)으로부터 복수의 어드레스와 관련된 정보를 수신하도록 구성될 수 있다.
메모리 컨트롤러(108)는 호스트 어드레스를 메모리 어드레스, 예를 들어 판독 및/또는 기록 명령과 같은 수신 명령과 관련된 어드레스로 변환하도록 구성된 호스트-메모리 변환 회로를 포함할 수 있다. 호스트-메모리 변환 회로는, 예를 들어 호스트 섹터 판독 및 기록 동작을, 메모리 디바이스(110-1,..., 110-N)의 특정 부분으로 지향되는 명령으로 변환할 수 있다. 각각의 호스트 동작은 단일 또는 다중-섹터 메모리 디바이스(110-1,..., 110-N) 작동으로 변환될 수 있다. 예를 들어, 호스트 판독 및 기록 명령은 메모리 디바이스(110-1,..., 110-N) 판독 및 기록 명령으로 변환될 수 있다.
본 발명의 다수의 실시예에 따르면, 기록 정보는 예를 들어 RAID 동작과 관련하여 복수의 채널을 통해 다수의 솔리드 스테이트 메모리 디바이스에 스트라이핑될 수 있다. 당 업자가 알 수 있는 바와 같이, 스트라이핑은 정보가 예를 들어, 2개 이상의 디바이스 상에서, 복수의 채널 간에 저장되도록, 정보의 분할을 포함한다. 분할된 정보를 저장하는 둘 이상의 디바이스의 해당 부분은 집합적으로 스트라이프라고 불린다. 대조적으로, 미러링은 하나 이상의 디바이스 상에 정보의 중복 사본을 저장하는 것을 포함할 수 있다.
메모리 컨트롤러(108)는 LBA 테이블 및/또는 블록 테이블(도시되지 않음)을 유지할 수 있다. LBA 테이블은 페이지들의 물리적 페이지 어드레스를 메모리 디바이스들(110-1,..., 110-N)에 저장할 수 있고, 대응하는 논리 어드레스를 포함할 수 있다. LBA 테이블은 연관된 명령(예를 들어, 연관된 SATA 명령)에 포함된 LBA에 의해 인덱싱될 수 있다. LBA 테이블은 해당 정보가 저장될 수 있는 논리 블록 어드레스에 해당하는 물리적 페이지 어드레스를 조회하는 데 사용할 수 있다. 블록 테이블은 상기 다수의 메모리 디바이스(110-1,..., 110-N)에 소거 가능 블록에 대한 정보를 저장할 수 있다. 블록 테이블에 저장된 정보는 유효한 페이지 정보, 소거 카운트 및 다른 상태 정보를 포함할 수 있다. 블록 테이블로부터 액세스되는 정보는 물리적 블록 어드레스에 의해 인덱싱될 수 있다.
메모리 컨트롤러(108)는 다른 동작들 중에서 정보를 판독하고, 기록하고, 소거하기 위해 메모리 디바이스(110-1,..., 110-N)와 통신할 수 있다. 메모리 디바이스(110-1,..., 110-N)는 집합적인 메모리 컨트롤러(108)에 연결되는 것으로 도시되어 있지만, 본 발명의 다수의 실시예는 각 메모리 채널에 대한 이산 비휘발성 메모리 컨트롤러를 포함할 수 있다. 메모리 디바이스(110-1,..., 110-N)는 다수의 메모리 셀(예를 들어 비휘발성 메모리 셀) 어레이를 포함할 수 있다. 어레이는 예를 들어 NAND 구조를 갖는 플래시 어레이일 수 있다. NAND 구조에서, "로우"의 메모리 셀들의 제어 게이트들은 액세스, 예를 들어 워드, 라인과 결합될 수 있고, 메모리 셀들은 선택 게이트 소스 트랜지스터와 선택 게이트 드레인 트랜지스터 사이에서 "스트링"으로 소스-드레인에 직렬로 연결될 수 있다. 스트링은 선택 게이트 드레인 트랜지스터에 의해 데이터 라인, 예컨대 비트 라인에 접속될 수 있다. 용어 "로우"(row) 및 "스트링"(string)의 사용은 메모리 셀의 선형 또는 직교 배열을 의미하지 않는다. 당 업자라면 알 수 있는 바와 같이, 메모리 셀을 비트 라인 및 소스 라인에 접속하는 방식은, 어레이가 NAND 구조, NOR 구조 또는 일부 다른 메모리 어레이 구조인지 여부에 의존한다.
메모리 디바이스들(110-1,..., 110-N)은 그룹화될 수 있는 다수의 메모리 셀을 포함할 수 있다. 본 명세서에서 사용된 바와 같이, 그룹은 페이지, 블록, 평면, 다이, 전체 어레이 또는 메모리 셀의 다른 그룹과 같은 다수의 메모리 셀을 포함할 수 있다. 예를 들어, 일부 메모리 어레이는 메모리 셀 블록을 구성하는 다수의 메모리 셀 페이지를 포함할 수 있다. 다수의 블록이 메모리 셀의 일 평면 내에 포함될 수 있다. 메모리 셀의 여러 평면이 일 다이 상에 포함될 수 있다. 일례로서, 128GB 메모리 디바이스는 페이지 당 4314 바이트의 정보, 예를 들어, 4096 바이트의 기록 정보와 218 바이트의 오버헤드 정보, 블록 당 128 페이지, 평면 당 2048 블록, 및 디바이스 당 16 개의 평면을 포함할 수 있다.
다수의 실시예에서, 메모리 컨트롤러(108)는 제 1 스트라이프 맵(120) 및 제 2 스트라이프 맵(122)을 포함할 수 있다. 다수의 실시예에서, 제 1 스트라이프 맵(120)의 적어도 일부 및/또는 제 2 스트라이프 맵(122)의 적어도 일부분은 메모리 디바이스(110-1,..., 110-N), 호스트 시스템(102), 및/또는 별도의 저장 위치(도시되지 않음)에 또한 저장될 수 있다. 제 2 스트라이프 맵(122)은 제 1 스트라이프 맵(102)의 역일 수 있고, 제 1 및 제 2 스트라이프 맵(120, 122) 모두가 동일 정보를 포함하지만, 제 1 스트라이프 맵(120)은 스트라이프 인덱스에 의해 인덱싱되고, 제 2 스트라이프 맵(122)은 페이지 식별자에 의해 인덱싱된다. 따라서, 제 1 스트라이프 맵(120)은 다수의 페이지를 특정 스트라이프와 연관시키는데 사용될 수 있고 제 2 스트라이프 맵(122)은 다수의 스트라이프를 특정 페이지와 연관시키는데 사용될 수 있다. 제 1 스트라이프 맵(120)은 메모리 디바이스들(110-1,..., 110-N) 내의 특정 페이지들을 특정 스트라이프와 연관시키는 데이터 구조일 수 있다. 제 1 스트라이프 맵(120)은 다수의 스트라이프 인덱스를 포함할 수 있으며, 다수의 스트라이프 인덱스 각각은 메모리 디바이스(110-1,..., 110-N) 내의 스트라이프를 식별한다. 제 1 스트라이프 맵(120)은 메모리 디바이스(110-1,..., 110-N)의 특정 페이지를, 제 1 스트라이프 맵(120)의 스트라이프 인덱스에 의해 식별된 스트라이프와 상관시킬 수 있다.
다수의 실시예에서, 메모리 컨트롤러(108)는 특정 페이지의 비트 에러율 및/또는 메모리 디바이스들(110-1,..., 110-n) 내의 특정 페이지의 물리적 위치에 기초하여 스트라이프 맵 내의 특정 스트라이프들과 연관시킬 특정 페이지들을 선택할 수 있다. 예를 들어, 메모리 컨트롤러(108)는 스트라이프에 포함될 보다 낮은 비트 에러율을 갖는 일부 페이지 및 보다 높은 비트 에러율을 갖는 일부 페이지를 선택하여, 스트라이프 각각이 다양한 비트 에러율을 갖는 페이지를 포함할 수 있다. 다양한 비트 에러율을 갖는 페이지를 포함하는 스트라이프는 수정할 수 없는 ECC 에러를 가질 가능성이 적고, 따라서, 스트라이프를 판독할 때 ECC 동작을 이용하여 에러를 정정할 수 있다.
또한, 메모리 컨트롤러(108)는 메모리 디바이스(110-1,..., 110-N) 상의 페이지의 물리적 위치에 기초하여 페이지를 선택할 수 있다. 예를 들어, 메모리 컨트롤러(108)는 어레이의 에지 근처에 위치된 일부 페이지, 예를 들어, "에지 페이지"와, 어레이의 중심쪽으로 위치된 일부 페이지를 선택할 수 있어서, 스트라이프 각각은 메모리 디바이스들(110-1,..., 110-N) 상의 다양한 물리적 위치들을 갖는 페이지를 포함할 것이다. 메모리 컨트롤러(108)는 가변적인 개수의 페이지를 갖는 스트라이프 맵 내 스트라이프를 포함할 수 있다. 변화하는 페이지 수를 갖는 스트라이프 맵 내의 스트라이프를 포함할 수 있다. 예를 들어, 하나의 스트라이프는 6 페이지를 포함할 수 있고 다른 스트라이프는 5 페이지를 포함할 수 있다. 또한, 하나의 특정 페이지가 메모리 디바이스들(110-1,..., 110-N) 상의 2개 이상의 스트라이프에 포함될 수 있다.
페이지 식별자들은 메모리 디바이스들(110-1,..., 110-N) 내의 특정 페이지의 위치를 식별하기 위해 채널, 디바이스, 블록 및/또는 페이지 정보를 포함할 수 있다. 페이지 식별자는 페이지의 물리적 어드레스를 포함할 수 있다. 페이지 식별자는 판독 및/또는 기록 동작을 수행할 때 페이지 위치결정을 위해 채널 컨트롤러(108)에 의해 사용될 수 있다.
호스트-메모리 변환 회로는 제 1 및/또는 제 2 레벨 에러 검출 회로(도 1에 도시되지 않음)를 포함할 수 있다. 에러 검출 회로라고 불리긴 하지만, 에러 검출 회로는 또한 에러 정정을 수행할 수 있다. 제 1 레벨 에러 검출 회로는 메모리 디바이스들(110-1,..., 110-N)에 저장된 정보와 관련된 에러들을 검출 및/또는 정정하기 위해, 당 업자에 의해 이해되는 바와 같이, BCH 에러 정정과 같은 에러 정정을 적용하도록 구성될 수 있다. 예를 들어, 제 1 레벨 에러 검출 회로는 1080 비트 코드 워드에 대해 29 비트의 에러 정정을 제공할 수 있다. 제 2 레벨 에러 검출 회로는, 가령, 정정가능한 에러의 임계 양 이상이 존재한다고 결정함으로써, 제 1 레벨 에러 검출에 의해 정정불가능한 에러, 가령, 정정불가능 에러 정정 코드(UECC) 에러를 검출할 수 있다. 제 2 레벨 에러 검출 회로는 RAID 배타적 또는(XOR) 회로를 포함할 수 있다. RAID XOR 회로는 호스트 인터페이스 회로로부터 수신한 정보를 기반으로 패리티 정보를 계산할 수 있다. 다수의 메모리 디바이스(110-1,..., 110-N)에 기록된 각각의 비트에 대하여, 패리티 비트가 RAID XOR 회로에 의해 연산될 수 있고, 메모리 디바이스(110-1,..., 110-N) 중 특정 메모리 디바이스에 기록될 수 있다.
제 2 스트라이프 맵(122)은 메모리 디바이스(110-1,..., 110-N) 내의 특정 스트라이프들을 메모리 디바이스(110-1,..., 110-N) 내 특정 페이지와 연관시키는 데이터 구조일 수 있다. 제 2 스트라이프 맵(122)은 페이지별로 인덱싱될 수 있고 다수의 페이지 식별자들을 포함할 수 있으며, 여기서 다수의 페이지 식별자들 각각은 메모리 디바이스들(110-1,..., 110-N)의 페이지를 식별한다. 제 2 스트라이프 맵(122)은 제 2 스트라이프 맵(122)에서 인덱싱된 페이지와 어느 스트라이프가 관련되는지를 나타낼 수 있다. 페이지에 의해 인덱싱된 제 2 스트라이프 맵(122)은 스트라이프에 의해 인덱싱되는 제 1 스트라이프 맵(120)의 역일 수 있다.
다수의 실시예에서, 제 2 스트라이프 맵(122)은 제 2 레벨 에러 검출 회로에 의해 사용되어 RAID 판독 에러 복구 동작을 수행할 수 있다. RAID 판독 에러 복구 동작은 UECC 에러가 발생하는 경우 수행될 수 있고, 메모리 디바이스(110-1,..., 110-N) 내 하나 이상의 스트라이프의 일부인 불량 페이지로부터의 데이터가 상이한 페이지로 이동할 수 있다. 불량 페이지는 판독 작업을 수행할 때 UECC 에러가 발생하는 페이지일 수 있다. RAID 판독 에러 복구 동작은 제 2 스트라이프 맵(122) 내 불량 페이지의 페이지 식별자를 위치결정함으로써 제 2 스트라이프 맵(122)을 이용할 수 있고, 불량 페이지를 포함하는 메모리 디바이스(110-1,..., 110-N) 내 스트라이프를 결정할 수 있다. 제 2 스트라이프 맵(122)에 의해 불량 페이지를 포함하는 것으로 식별된 스트라이프는, 패리티 데이터를 사용하여 불량 페이지로부터의 데이터가 복구되고 데이터가 메모리 디바이스(110-1,..., 110-N) 내 다른 페이지로 이동되도록, 업데이트될 수 있다. 그 다음, 제 1 스트라이프 맵(120)은 상이한 페이지의 페이지 식별자를 메모리 디바이스들(110-1,..., 110-N) 내의 업데이트된 스트라이프들과 연관시키도록 업데이트될 수 있다.
도 1의 실시예는 본 개시의 실시예들을 모호하게 하지 않기 위해 도시되지 않은 부가의 회로를 포함할 수 있다. 예를 들어, 메모리 시스템(104)은 I/O 회로를 통해 I/O 커넥션을 통해 제공되는 어드레스 신호를 래치하는 어드레스 회로를 포함할 수 있다. 어드레스 신호는 로우 디코더 및 칼럼 디코더에 의해 수신 및 디코딩되어 메모리 디바이스(110-1,..., 110-N)에 액세스할 수 있다. 당 업자는 어드레스 입력 연결들의 수가 메모리 디바이스들(110-1,..., 110-N)의 밀도 및 구조에 의존할 수 있음을 알 것이다.
도 2는 본 개시의 다수의 실시예에 따른 메모리 디바이스(210)의 일부의 도면을 도시한다. 메모리 디바이스(210)는 도 1에 도시된 메모리 디바이스들(110-1 내지 110-N)과 같은 디바이스일 수 있다.
도 2에 도시된 바와 같이, 메모리 디바이스(210)는 메모리 셀의 다수의 물리적 블록(260-0(블록 0), 260-1(블록 1),..., 260-M(BLOCK M))을 포함한다. 도 2에 도시된 예에서, 표시자 "M"은 메모리 디바이스(210)가 다수의 물리적 블록을 포함할 수 있음을 나타내는 데 사용된다. 일례로서, 메모리 디바이스(210) 내의 물리적 블록의 수는 128 블록, 4,096 블록 또는 32,768 블록 일 수 있지만, 실시예는 메모리 디바이스의 특정 개수 또는 다수의 물리적 블록에 제한되지 않는다. 도 2에 도시된 실시예에서, 메모리 디바이스(210)는 예를 들어, 각각의 물리적 블록(260-0, 260-1,..., 260-M) 내 메모리 셀들이 일 유닛으로 함께 소거될 수 있도록, 가령, 각각의 물리적 블록 내 셀들이 실질적으로 동시적인 방식으로 소거될 수 있도록, 예를 들어, NAND 플래시 메모리 디바이스(210)일 수 있다. 예를 들어, 각각의 물리적 블록 내의 셀들은 단일 소거 동작으로 함께 소거될 수 있다.
표시자 "R"은 물리적 블록(예컨대, 260-0, 260-1,..., 260-M)이 다수의 로우를 포함할 수 있음을 나타내는데 사용된다. 일부 실시예들에서, 각각의 물리적 블록 내의 로우들의 수, 예컨대 워드 라인의 수가 32 일 수 있지만, 실시예들은 특정 개수의 로우(270-0, 270-1,..., 270-R)에 제한되지 않는다. 당 업자가 알 수 있는 바와 같이, 각각의 로우(270-0, 270-1,..., 270-R)는 하나 이상의 물리적 페이지, 예를 들어 짝수 페이지 및 홀수 페이지를 포함할 수 있다. 물리적 페이지는 메모리 셀의 기능 그룹으로, 또는 함께 기록 및/또는 판독되는 다수의 셀과 같이, 기록 및/또는 판독 단위를 지칭한다. 따라서, 짝수 페이지 및 홀수 페이지는 별도의 기록 및/또는 판독 동작으로 기록 및/또는 판독될 수 있다.
본 발명의 다수의 실시예들에서, 도 2에 도시된 바와 같이, 페이지는 다수의 섹터들(280-0, 280-1,..., 280-S)에 정보를 저장할 수 있다. 표시자 "S"는 일 페이지가 여러 섹터를 포함할 수 있음을 나타내기 위해 사용된다. 정보에는 시스템 및/또는 사용자 데이터가 포함될 수 있다. 각각의 섹터(280-0, 280-1,..., 280-S)는 시스템 및/또는 사용자 데이터를 저장할 수 있으며, 에러 정정 코드(ECC) 정보 및 논리 블록 어드레스(LBA) 정보와 같은 오버헤드 정보를 포함할 수 있다. 당 업자라면 알 수 있는 바와 같이, 논리 블록 어드레싱은 정보 섹터를 식별하기 위해 호스트에 의해 사용될 수 있는 방식이고, 예를 들어 각각의 섹터가 고유 LBA에 대응할 수 있다. 다수의 실시예에서, 섹터는 저장 장치 볼륨의 최소 어드레스지정가능 부분이다. 예를 들어, 정보 섹터는 다수의 정보 바이트(예 : 256 바이트, 512 바이트 또는 1,024 바이트)일 수 있다. 예를 들어, SSD는 일 페이지에 4, 8 또는 16 섹터를 가질 수 있으며, 일 섹터는 512 바이트일 수 있고, SSD는 물리적 블록 당 128, 256 또는 512 페이지를 가질 수 있고, 따라서, 물리적 블록 크기는 131072 바이트, 262144 바이트, 및 524288 바이트다. 실시예들은 이들 실시예들에 제한되지 않는다.
물리적 블록(260-0, 260-1,..., 260-M), 로우(270-0, 270-1,..., 270-R), 섹터들(280-0, 280-1,..., 280-S) 및 페이지에 대한 다른 구조가 가능하다. 예를 들어, 물리 블록들(260-0, 260-1,..., 260-M)의 로우(270-0, 270-1,..., 270-R)는 각각, 예를 들어 512 바이트보다 크거나 작은 정보를 포함할 수 있는 단일 섹터에 대응하는 정보를 저장할 수 있다.
도 3은 스트라이프-기반으로 동작되는 저장 볼륨(340)의 블록도를 도시한다. 저장 볼륨(340)은 가령, 도 1의 메모리 시스템(104)과 같은 메모리 시스템 내 도 1의 솔리드 스테이트 메모리 디바이스(110-1,..., 110-N)와 같은 다수의 솔리드 스테이트 메모리 디바이스에 포매팅된 파일 시스템에 의해 제공될 수 있다. 여기서 기술되는 바와 같이, 각각의 솔리드 스테이트 메모리 디바이스는 메모리 채널(342-1,..., 342-(N-1), 342-N)과 연관될 수 있다. 그러나, 실시예들은 메모리 디바이스(예를 들어, 메모리 칩) 당 하나의 채널에 제한되지 않으며, 일부 실시예들은 디바이스 당 다중 채널을 포함할 수 있다. 하나의 메모리 칩은, 예를 들어, 메모리 셀의 2 이상의 물리적 평면을 포함하는 메모리 칩의 경우에, 2 이상의 채널에 의해 메모리 컨트롤러에 결합될 수 있다. 정보는 다수의 솔리드 스테이트 메모리 디바이스에 의해 제공되는 저장 볼륨(340) 간에 다수의 스트라이프(344-1, 344-2,..., 344-P)에 기록될 수 있다.
메모리 시스템은 호스트 시스템, 예를 들어 도 1에 도시된 호스트(102)로부터 기록 정보를 수신할 수 있다. 도 1의 메모리 컨트롤러(108)와 관련된 메모리 시스템, 예를 들어 RAID XOR 회로는, 기록 정보에 대한 패리티 정보를 계산할 수 있다. 다수의 실시예에서, 기록 정보 및 패리티 정보는 기록 정보가 다수의 가용 채널의 서브세트(342-1,..., 342-(N-1)) 간에 기록될 수 있도록, 그리고 패리티 정보가 다수의 가용 채널 중 제 2 서브세트(342-N) 간에 기록될 수 있도록, 저장 볼륨(340) 간에 스트라이핑될 수 있다. 예를 들어, 메모리 시스템은, 7 개의 채널이 기록 정보를 기록하는데 사용되고 1 개의 채널이 패리티 정보를 기록하는데 사용되도록, 8 개의 채널을 포함할 수 있다. 본 명세서에 설명된 바와 같이, 패리티 정보는 상이한 스트라이프에 대해 상이한 채널 간에 기록될 수 있다. 실시예들은 N개의 채널 중 N-1 개의 채널을 기록 정보로 사용하고 하나의 채널을 패리티 정보로 사용하는 것으로 제한되지 않는다. 본 발명의 다수의 실시예에 따르면, RAID 구조 및/또는 스트라이프 크기는 프로그램 가능 옵션 일 수 있다.
RAID 구조는 다수의 메모리 디바이스들 간에 정보를 분할 및/또는 복제하도록 고안된 RAID 저장 기법의 구현예를 나타낼 수 있다. 예를 들어, 정보는 두 개 이상의 디바이스에 스트라이핑 및/또는 미러링될 수 있다. 스트라이핑은 기록 정보를 요소들로 분할하고 다수의 메모리 디바이스들 각각에 적어도 하나의 요소를 저장하는 과정을 포함할 수 있다. 미러링은 적어도 두 개의 메모리 디바이스에 기록 정보의 사본을 중복 저장하는 과정을 포함할 수 있다. 스트라이핑과 미러링 모두 에러 검출 기능을 사용할 수 있다. 패리티 정보는 기록 정보와 동일한 메모리 디바이스에, 및/또는 기록 정보를 저장하는 디바이스와는 별도의 장치에, 저장될 수 있다. 본 개시의 다수의 실시예에 따르면, 메모리 시스템에 의해 구현되는 특정 RAID 구조는 프로그램가능 옵션일 수 있다.
본 명세서에 사용된 바와 같이, 스트라이프 크기는 정보가 스트라이핑되는 채널의 수를 지칭할 수 있다. 본 발명의 다수의 실시예에 따르면, 메모리 시스템에 대한 스트라이프 크기는 메모리 시스템에 가용한 임의의 수의 채널이 스트라이프에 사용될 수 있도록 프로그램 가능한 옵션 일 수 있다. 예를 들어, 32 채널 및 다수의 대응하는 메모리 디바이스를 포함하는 메모리 시스템은 2 내지 32 채널의 스트라이프 크기를 가질 수 있다. 일부 실시예들은 비휘발성 메모리를 적어도 2 개의 부분들로 논리적으로 분리하는 과정을 포함할 수 있으며, 각 부분은 비휘발성 메모리와 연관된 다수의 채널들의 서브셋을 포함한다. 이러한 실시예는 적어도 2 개의 부분 각각에 대해 스트라이프 단위로 비휘발성 메모리 시스템을 독립적으로 동작시키는 과정을 포함할 수 있다. 예를 들어, 기록 정보 및 패리티 정보의 다수의 페이지가 각 스트라이프에 기록될 수 있는데, 여기서 제 1 스트라이프는 메모리 시스템의 다수의 채널의 일 서브세트 간에만 기록되고, 제 2 스트라이프는 메모리 시스템의 다수의 채널 중 상이한 서브세트에만 기록된다. 또한, 스트라이프 크기는 메모리 시스템의 동작 중에 변경될 수 있다. 블록 테이블은 메모리 시스템의 어느 부분이 어느 스트라이프에 대응 하는지를 추적하는데 사용될 수 있다.
도 1의 메모리 컨트롤러(108)와 연관된 ECC 회로는 기록 정보의 요소들에 대한 제 1 레벨 에러 정정 정보 및/또는 메모리 디바이스에 저장된 제 2 레벨 정정(가령, 패리티) 정보를 연산할 수 있다. 도 3은 채널들(342-1,..., 342-(N-1))과 관련하여 저장되는 기록 정보(346) 및 제 1 레벨 에러 정정 정보(348)와, 채널(342-N)과 관련하여 저장되는 패리티 정보(350) 및 제 1 레벨 에러 정정 정보(348)의 도해를 포함한다. 스트라이프가 기록되면, 기록 정보와 에러 정정 정보가 함께 기록될 수 있다. 정보에서 에러가 검출되면, 기록 정보 또는 패리티 정보 여부에 관계없이, 제 1 레벨 에러 정정 정보는 앞서 기술된 패리티 정보와 관련된 정정과 같은, 제 2 레벨의 에러 정정의 구현없이, 및/또는 그 이전에 에러 정정을 시도하는데 사용될 수 있다. 메모리 시스템은 임계 비트 수의 에러를 정정할 수 있도록 충분한 제 1 레벨 에러 정정 정보를 저장할 수 있다. 에러가 검출되면, 예를 들어, 제 1 레벨 에러 정정 정보로 정정가능한 것보다 많은 비트 에러를 포함하는 기록 동작 동안의 UECC 에러가 검출되면, 앞서 기술된 제 2 스트라이프 맵 및 패리티 정보를 사용하는 제 2 레벨의 에러 정정이 구현될 수 있다 - 예를 들어, 에러(들)와 관련된 정보가 패리티 정보 및 기록 정보의 나머지를 사용하여 재생성될 수 있다.
도 4는 본 개시의 다수의 실시예에 따른 스트라이프 맵(420)을 도시한다. 본 예에서 "페이지"가 참조되지만, 스트라이프가 페이지 이외의 요소로 구성될 수 있다.
도 4에 도시된 예에서, 스트라이프 맵(420)은 스트라이프 인덱스 칼럼(430) 및 다수의 페이지 식별자 칼럼(434)을 포함하는 테이블이다. 도 4에서, 다수의 스트라이프가 스트라이프 인덱스(432-1, 432-2, 432-3,..., 432-V)에 의해 표시된다. 각각의 스트라이프 인덱스(432-1, 432-2, 432-3,..., 432-V)는 다수의 페이지와 관련된다. 예를 들어, 스트라이프 인덱스(432-1)는 페이지 식별자(436-1, 436-2, 436-3 및 436-4)와 연관되고, 스트라이프 인덱스(432-2)는 페이지 식별자(436-5, 436-3, 436-6, 및 436-4)와 연관되며; 스트라이프 인덱스(432-3)는 페이지 식별자(436-2, 436-7, 436-4, 및 436-1)와 연관되고; 스트라이프 인덱스(432-V)는 페이지 식별자(436-8, 436-7, 436-4 및 436-W)와 연관된다. 두 개 이상의 스트라이프가 공통 페이지를 포함할 수 있다. 예를 들어, 스트라이프 인덱스(432-1, 432-2, 432-3)는 모두 페이지 식별자(436-4)와 연관된다. 또한, 스트라이프는 상이한 수의 페이지와 연관될 수 있다. 예를 들어, 스트라이프 인덱스(432-1)는 네 페이지와 연관되고 스트라이프 인덱스(432-V)는 세 페이지와 연관된다.
데이터는 스트라이프 맵에 따라 메모리 디바이스에 기록될 수 있어서, 스트라이프 인덱스에 의해 식별된 스트라이프에 데이터가 기록될 때, 데이터는 스트라이프 맵에 표시된 바와 같이 관련 페이지에 기록될 수 있다. 예를 들어, 스트라이프 인덱스(432-1)에 의해 표시되는 페이지에 스트라이프를 기록할 때, 데이터는 페이지 식별자(436-1, 436-2, 436-3, 436-4)에 의해 식별된 페이지에 기록될 것이다. 페이지 식별자는 채널, 디바이스, 블록 및/또는 페이지 정보를 포함할 수 있다. 또한 각 스트라이프는 패리티 페이지를 포함할 수 있으며, 각 스트라이프의 패리티 페이지는 스트라이프 맵의 칼럼 중 하나에서 페이지 식별자에 의해 표시될 수 있다. 예를 들어, 각 스트라이프의 패리티 페이지는 스트라이프 맵의 두 번째 칼럼에 있는 페이지 식별자로 식별될 수 있다.
도 5는 본 개시의 다수의 실시예에 따른 스트라이프 맵(522)을 도시한다. 본 예에서 "페이지"가 참조되지만, 스트라이프가 페이지 이외의 요소로 구성될 수 있다. 스트라이프 맵(522)은 도 4와 관련하여 전술한 스트라이프 맵(420)의 역일 수 있다. 도 5에 도시된 예에서, 스트라이프 맵(522)은 다수의 스트라이프 인덱스 칼럼(430) 및 페이지 식별자 칼럼(534)을 포함하는 테이블이다. 도 5에서, 다수의 페이지는 페이지 식별자(536-1, 536-2, 536-3, 536-4, 536-5, 536-6, 536-7, 536-8 ..., 532-V)로 표시된다. 각각의 페이지 식별자(536-1, 536-2, 536-3, 536-4, 536-5, 536-6, 536-7, 536-8,..., 532-V)는 스트라이핑된 인덱스들(532-1, 532-2, 532-3,..., 532-V)에 의해 표시되는 다수의 스트라이프와 연관된다. 예를 들어, 페이지 식별자(536-3)는 스트라이프 인덱스(532-1 및 532-2)에 의해 참조되는 스트라이프와 관련된다. 따라서, UECC 에러에 응답하여, 스트라이프 맵 테이블(531)은 RAID 판독 에러 복구 동작을 수행하는데 사용될 수 있다. RAID 판독 에러 복구 작업은 하나 이상의 스트라이프의 일부인 불량 페이지로부터 다른 페이지로 데이터를 이동시키는 과정을 포함할 수 있다. RAID 판독 에러 회복 동작은 스트라이프 맵(522)을 사용하여 스트라이프 맵(522) 내의 불량 페이지의 페이지 식별자를 위치결정하고, 그 불량 페이지를 포함하는 스트라이프를 결정할 수 있다. 스트라이프 맵(522)에 의해 불량 페이지를 포함하는 것으로 식별된 스트라이프는, 패리티 데이터를 사용하여 불량 페이지로부터의 데이터가 복원되고 데이터가 다른 페이지로 이동되도록, 업데이트될 수 있다. 그 후 도 4의 스트라이프 맵(420)은 상이한 페이지의 페이지 식별자를 업데이트된 스트라이프와 연관시키도록 업데이트될 수 있다.
본 발명은 메모리에서의 RAID 스트라이프 매핑을 위한 방법 및 장치를 포함한다. 하나의 방법 실시예는 스트라이프 맵에 따라 복수의 메모리 디바이스의 저장 볼륨 간에 다수의 스트라이프에 데이터를 기록하는 단계를 포함하고, 상기 다수의 스트라이프 각각은 다수의 요소들을 포함하고, 상기 스트라이프 맵은 상기 다수의 스트라이프를 식별하기 위한 다수의 스트라이프 인덱스와, 상기 다수의 스트라이프 각각에 포함되는 요소를 식별하기 위한 다수의 요소 식별자를 포함한다.
특정 실시예가 본 명세서에 도시되고 설명되었지만, 당 업자는 동일한 결과를 달성하도록 계산된 소정의 배열이 도시된 특정 실시예를 대체 할 수 있음을 알 것이다. 본 개시는 본 개시의 다수의 실시예의 적응 또는 변형을 포함하도록 의도된다. 상기 설명은 예시적인 방식으로 이루어졌으며 제한적인 것이 아님을 이해해야 한다. 상기 실시예의 조합 및 본원에서 구체적으로 기술되지 않은 다른 실시예는 상기 설명을 검토하면 당 업자에게 명백할 것이다. 본 개시의 다수의 실시예들의 범위는 상기 구조들 및 방법들이 사용되는 다른 응용예를 포함한다. 따라서, 본 개시 의 다수의 실시예들의 범위는 첨부된 청구 범위를 참조하여, 그러한 청구 범위가 부여되는 균등물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 일부 특징은 본 발명의 간소화를 위해 단일 실시예에서 함께 그룹화된다. 본 개시의 방법은 본 개시의 실시예들이 각 청구항에 명시적으로 언급된 것보다 많은 특징을 이용해야 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 이하의 청구 범위가 반영하는 바와 같이, 발명의 주제는 단일 개시된 실시예의 모든 특징보다 적다. 따라서, 이하의 청구 범위는 발명의 상세한 설명에 포함되며, 각 청구항은 별개의 실시예로서 독자적으로 성립된다.

Claims (29)

  1. 제 1 스트라이프 맵에 따라 복수의 메모리 디바이스들의 저장 볼륨 간에 다수의 스트라이프들에 데이터를 기록하는 단계 - 상기 다수의 스트라이프 각각은 다수의 요소들을 포함하고, 상기 제 1 스트라이프 맵은 상기 다수의 스트라이프를 식별하기 위한 다수의 스트라이프 인덱스와, 상기 다수의 스트라이프 각각에 포함된 요소를 식별하기 위한 다수의 요소 식별자를 포함함 - 와,
    제 2 스트라이프 맵을 저장하는 단계 - 상기 제 2 스트라이프 맵은 상기 제 1 스트라이프 맵의 역 스트라이프 맵임 - 와,
    상기 제 2 스트라이프 맵을 이용하여 하나 이상의 불량 요소를 포함하는 하나 이상의 스트라이프를 식별하도록 RAID(Redundant Array of Independent Disks) 판독 에러 복구 작동을 수행하는 단계와,
    상기 제 1 스트라이프 맵에서 상기 하나 이상의 불량 요소를 포함하는 상기 하나 이상의 스트라이프를 업데이트하는 단계를 포함하는, 스트라이프 매핑 방법.
  2. 제 1 항에 있어서, 상기 방법은 상기 다수의 스트라이프 인덱스 각각을 상기 복수의 메모리 디바이스 내의 요소의 일부분과 연관시킴으로써 상기 제 1 스트라이프 맵을 생성하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서, 상기 방법은 상기 다수의 스트라이프 각각을 패리티 요소 식별자와 연관시킴으로써 상기 제 1 스트라이프 맵을 생성하는 단계를 포함하는 방법.
  4. 제 1 항에 있어서, 상기 방법은 상기 요소들과 관련된 비트 에러율에 기초하여 상기 다수의 스트라이프에 포함시킬 상기 요소들을 선택함으로써 상기 제 1 스트라이프 맵을 생성하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서, 상기 방법은 상기 복수의 메모리 디바이스 내의 상기 다수의 요소들 중 일부의 위치에 기초하여 상기 다수의 스트라이프에 포함시킬 상기 다수의 요소들 중 상기 일부를 선택함으로써 상기 제 1 스트라이프 맵을 생성하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서, 상기 다수의 스트라이프들에 데이터를 기록하는 단계는 상기 데이터를 상기 다수의 요소로 분할하고 상기 복수의 메모리 디바이스에 상기 다수의 요소를 기록하는 단계를 포함하는 방법.
  7. 제 6 항에 있어서, 상기 복수의 메모리 디바이스들에 상기 다수의 요소들을 기록하는 단계는 상기 복수의 메모리 디바이스의 서브세트의 각각에 적어도 하나의 요소를 기록하는 단계를 포함하는 방법.
  8. 메모리 내 다수의 스트라이프와 연관된 각각의 요소에 대한 요소 식별자 정보를 포함하는 제 1 스트라이프 맵을 저장하는 단계 - 상기 다수의 스트라이프와 연관된 각각의 요소는 특정 요소에서 발생하는 판독 에러 가능성에 기초하여 특정 스트라이프에 포함됨 - 와,
    상기 메모리 내 상기 다수의 스트라이프에 데이터를 기록하는 단계 - 상기 데이터는 상기 스트라이프 맵의 요소 식별자 정보에 기초하여 메모리 간에 스트라이핑됨 - 와,
    상기 제 1 스트라이프 맵의 역 스트라이프 맵인 제 2 스트라이프 맵을 저장하는 단계와,
    상기 제 2 스트라이프 맵을 이용하여, 하나 이상의 불량 요소를 포함하는 하나 이상의 스트라이프를 식별하도록 판독 에러 복구 작동을 수행하는 단계와,
    상기 제 1 스트라이프 맵에서 상기 하나 이상의 불량 요소를 포함하는 상기 하나 이상의 스트라이프를 업데이트하는 단계를 포함하는, 스트라이프 매핑 방법.
  9. 제 8 항에 있어서, 상기 제 1 스트라이프 맵을 저장하는 단계는 상기 다수의 스트라이프 각각에 대한 특정 스트라이프 인덱스를 제공하는 단계를 포함하는 방법.
  10. 제 8 항에 있어서, 상기 제 1 스트라이프 맵은 상기 다수의 스트라이프 각각에 포함되는 가변 비트 에러율을 가진 페이지를 포함하는 방법.
  11. 제 8 항에 있어서, 상기 방법은 상기 제 2 스트라이프 맵을 저장하는 단계를 포함하며, 상기 제 2 스트라이프 맵은 요소에 의해 인덱싱되고, 각각의 특정 요소와 연관된 각각의 스트라이프를 식별하는, 방법.
  12. 제 8 항에 있어서, 상기 방법은 불량 요소의 요소 식별자를 상이한 요소의 요소 식별자로 대체함으로써 상기 제 1 스트라이프 맵을 업데이트하는 단계를 포함하는 방법.
  13. 제 1 스트라이프 맵을 저장하는 단계 - 상기 제 1 스트라이프 맵은 요소에 의해 인덱싱되고, 복수의 메모리 디바이스 내 다수의 요소 중 각각의 특정 요소와 연관된 각각의 스트라이프를 식별함 - 와,
    판독 에러 복구 작동 수행을 위해 상기 제 1 스트라이프 맵의 역 스트라이프 맵인 제 2 스트라이프 맵을 이용하여 스트라이프 맵 내 불량 요소를 위치결정함으로써, 그리고, 상기 제 1 스트라이프 맵 내 불량 요소와 연관된 상기 다수의 스트라이프 각각을 업데이트함으로써, 판독 에러 복구 동작을 수행하는 단계를 포함하는
    스트라이프 매핑 방법.
  14. 제 13 항에 있어서, 상기 다수의 스트라이프의 각각을 업데이트하는 과정은 요소 페이지를 새로운 요소로 대체하는 과정을 포함하는 방법.
  15. 제 13 항에 있어서, 상기 방법은 에러 정정 코드(ECC) 동작 실패에 응답하여 상기 판독 에러 복구 동작을 수행하는 단계를 포함하는 방법.
  16. 제 13 항에 있어서, 상기 제 1 스트라이프 맵을 생성하는 과정은 상기 특정 요소 각각을 페이지 식별자로 식별하는 과정을 포함하는 방법.
  17. 제 13 항에 있어서, 상기 방법은 스트라이프 맵으로부터 불량 요소들의 요소 식별자를 제거함으로써 상기 제 1 스트라이프 맵을 업데이트하는 단계를 포함하는 방법.
  18. 다수의 메모리 디바이스들과,
    상기 다수의 메모리 디바이스에 결합되는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    상기 다수의 메모리 디바이스 내 다수의 스트라이프의 각각의 요소에 대한 요소 식별자를 포함하는 제 1 스트라이프 맵을 저장하도록 구성되고, 상기 제 1 스트라이프 맵은 특정 스트라이프들의 특정 요소들을 규정하며,
    상기 다수의 메모리 디바이스에 데이터를 기록하도록 구성되고, 상기 데이터는 상기 제 1 스트라이프 맵에 의해 규정되는 상기 다수의 스트라이프의 요소에 기록되며,
    상기 제 1 스트라이프 맵의 역 스트라이프 맵인 제 2 스트라이프 맵을 저장하도록 구성되고, 상기 제 2 스트라이프 맵은 하나 이상의 불량 요소를 포함하는 하나 이상의 스트라이프를 식별하기 위해 판독 에러 복구 작동을 수행하는데 사용되며,
    상기 제 1 스트라이프 맵에서 상기 하나 이상의 불량 요소를 포함하는 상기 하나 이상의 스트라이프를 업데이트하도록 구성되는, 장치.
  19. 다수의 메모리 디바이스들과,
    상기 다수의 메모리 디바이스에 결합되는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    특정 페이지와, 각각의 특정 페이지와 연관된 다수의 스트라이프를 식별하는 제 1 스트라이프 맵을 저장하도록 구성되고,
    상기 제 1 스트라이프 맵의 역 스트라이프 맵인 제 2 스트라이프 맵을 저장하도록 구성되며,
    상기 제 1 스트라이프 맵 내 불량 페이지를 위치결정함으로써, 그리고, 상기 제 1 스트라이프 맵에 의해 표시되는 불량 페이지와 연관된 상기 다수의 스트라이프 각각을 업데이트함으로써, 상기 제 2 스트라이프 맵을 이용하여 RAID 판독 에러 복구 작동을 수행하도록 구성되는
    장치.
  20. 제 19 항에 있어서, 상기 불량 페이지와 연관된 상기 다수의 스트라이프들 각각은 상기 다수의 스트라이프들 각각에 새로운 페이지를 포함시킴으로써 업데이트되는, 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
KR1020187000172A 2015-06-10 2016-06-07 메모리 스트라이프 매핑 KR101874290B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/735,838 2015-06-10
US14/735,838 US9766837B2 (en) 2015-06-10 2015-06-10 Stripe mapping in memory
PCT/US2016/036138 WO2016200764A1 (en) 2015-06-10 2016-06-07 Stripe mapping in memory

Publications (2)

Publication Number Publication Date
KR20180005284A KR20180005284A (ko) 2018-01-15
KR101874290B1 true KR101874290B1 (ko) 2018-07-03

Family

ID=57504083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000172A KR101874290B1 (ko) 2015-06-10 2016-06-07 메모리 스트라이프 매핑

Country Status (7)

Country Link
US (3) US9766837B2 (ko)
EP (1) EP3289441B1 (ko)
JP (1) JP6422600B2 (ko)
KR (1) KR101874290B1 (ko)
CN (1) CN107743617B (ko)
TW (1) TWI599946B (ko)
WO (1) WO2016200764A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529672B2 (en) * 2014-09-25 2016-12-27 Everspin Technologies Inc. ECC word configuration for system-level ECC compatibility
US10073621B1 (en) * 2016-03-31 2018-09-11 EMC IP Holding Company LLC Managing storage device mappings in storage systems
US10545825B2 (en) * 2016-04-29 2020-01-28 Synamedia Limited Fault-tolerant enterprise object storage system for small objects
CN107870730B (zh) * 2016-09-23 2020-11-20 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和系统
US10365983B1 (en) * 2017-04-27 2019-07-30 EMC IP Holding Company LLC Repairing raid systems at per-stripe granularity
US10719399B2 (en) 2018-01-08 2020-07-21 International Business Machines Corporation System combining efficient reliable storage and deduplication
US10901840B2 (en) * 2018-06-28 2021-01-26 Western Digital Technologies, Inc. Error correction decoding with redundancy data
US11017112B2 (en) * 2018-07-03 2021-05-25 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10747614B2 (en) * 2018-07-23 2020-08-18 Micron Technology, Inc. Hybrid iterative error correcting and redundancy decoding operations for memory sub-systems
CN111124269B (zh) 2018-10-31 2023-10-27 伊姆西Ip控股有限责任公司 用于存储管理的方法、电子设备和计算机可读存储介质
CN111124262B (zh) * 2018-10-31 2023-08-22 伊姆西Ip控股有限责任公司 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质
US11204716B2 (en) 2019-01-31 2021-12-21 EMC IP Holding Company LLC Compression offloading to RAID array storage enclosure
US11055188B2 (en) * 2019-04-12 2021-07-06 EMC IP Holding Company LLC Offloading error processing to raid array storage enclosure
TWI708260B (zh) * 2019-08-15 2020-10-21 華邦電子股份有限公司 儲存裝置及存取方法
US10970170B2 (en) * 2019-08-29 2021-04-06 Micron Technology, Inc. Shared parity protection
KR20220023476A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
KR20220072242A (ko) * 2020-11-25 2022-06-02 삼성전자주식회사 비휘발성 메모리 장치의 데이터 기입 방법 및 이를 수행하는 비휘발성 메모리 장치
KR20220077573A (ko) * 2020-12-02 2022-06-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11520656B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction and recovery due to storage device failure
US11520500B2 (en) 2021-03-19 2022-12-06 Micron Technology, Inc. Managing capacity reduction when downshifting multi-level memory cells
US11892909B2 (en) 2021-03-19 2024-02-06 Micron Technology, Inc. Managing capacity reduction due to storage device failure
US11733884B2 (en) 2021-03-19 2023-08-22 Micron Technology, Inc. Managing storage reduction and reuse with failing multi-level memory cells
US11307931B1 (en) * 2021-03-19 2022-04-19 Micron Technology, Inc. Using zones to manage capacity reduction due to storage device failure
US11650881B2 (en) 2021-03-19 2023-05-16 Micron Technology, Inc. Managing storage reduction and reuse in the presence of storage device failures
US11605439B2 (en) * 2021-03-31 2023-03-14 Micron Technology, Inc. Remapping bad blocks in a memory sub-system
US11822814B2 (en) * 2022-02-28 2023-11-21 Western Digital Technologies, Inc. Dynamic XOR bin mapping in memory devices
US12001685B2 (en) * 2022-03-31 2024-06-04 Cohesity, Inc. Performing an in-line erasure coding process using a write-ahead log

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5570376A (en) 1994-10-05 1996-10-29 Sun Microsystems, Inc. Method and apparatus for identifying faults within a system
US20020066050A1 (en) 2000-11-28 2002-05-30 Lerman Jesse S. Method for regenerating and streaming content from a video server using raid 5 data striping
US20100005228A1 (en) 2008-07-07 2010-01-07 Kabushiki Kaisha Toshiba Data control apparatus, storage system, and computer program product
US20130339580A1 (en) 2010-08-31 2013-12-19 Micron Technology, Inc. Stripe-based non-volatile multilevel memory operation

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513093B1 (en) * 1999-08-11 2003-01-28 International Business Machines Corporation High reliability, high performance disk array storage system
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US6902882B2 (en) * 2000-05-23 2005-06-07 Kerong Gu Methods of monitoring production of gene products and uses thereof
JP3682256B2 (ja) * 2001-11-30 2005-08-10 株式会社東芝 ディスクアレイ装置及び同装置におけるパリティ処理方法
JP3702231B2 (ja) * 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
JP4238514B2 (ja) 2002-04-15 2009-03-18 ソニー株式会社 データ記憶装置
US7386663B2 (en) * 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7380157B2 (en) * 2004-10-27 2008-05-27 Pillar Data Systems, Inc. Staggered writing for data storage systems
US7386758B2 (en) * 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
TWI350526B (en) 2005-11-21 2011-10-11 Infortrend Technology Inc Data access methods and storage subsystems thereof
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US9582431B2 (en) * 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
IT1399634B1 (it) * 2010-04-26 2013-04-26 G S G Srl Macchina per il trattamento di miscele alimentari ad attivazione centralizzata
US8898206B1 (en) * 2010-04-28 2014-11-25 Netapp, Inc. Mechanism for distributed inode to path traversal in a striped volume system
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
CN103348330B (zh) 2010-12-01 2017-05-24 希捷科技有限公司 采用独立硅元件的动态较高级冗余模式管理
KR101732030B1 (ko) 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US9251059B2 (en) * 2011-09-23 2016-02-02 Avalanche Technology, Inc. Storage system employing MRAM and redundant array of solid state disk
US8694849B1 (en) * 2011-12-19 2014-04-08 Pmc-Sierra Us, Inc. Shuffler error correction code system and method
WO2013119074A1 (ko) 2012-02-09 2013-08-15 Noh Sam Hyuk 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
JP6039699B2 (ja) * 2012-07-23 2016-12-07 株式会社日立製作所 ストレージシステム及びデータ管理方法
US9348758B2 (en) 2012-09-24 2016-05-24 Sk Hynix Memory Solutions Inc. Virtual addressing with multiple lookup tables and RAID stripes
US8862818B1 (en) 2012-09-27 2014-10-14 Emc Corporation Handling partial stripe writes in log-structured storage
US8977594B2 (en) 2012-12-21 2015-03-10 Zetta Inc. Systems and methods for state consistent replication
GB2517435A (en) * 2013-08-19 2015-02-25 Ibm Fast data back-up and restore between volatile and flash memory
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9274888B2 (en) * 2013-11-15 2016-03-01 Qualcomm Incorporated Method and apparatus for multiple-bit DRAM error recovery
US20150363118A1 (en) * 2014-06-17 2015-12-17 Netapp, Inc. Techniques for harmonic-resistant file striping
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9639268B2 (en) * 2014-08-21 2017-05-02 Datrium, Inc. Distributed data storage system with key-based addressing
KR20160083762A (ko) * 2015-01-02 2016-07-12 삼성전자주식회사 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5570376A (en) 1994-10-05 1996-10-29 Sun Microsystems, Inc. Method and apparatus for identifying faults within a system
US20020066050A1 (en) 2000-11-28 2002-05-30 Lerman Jesse S. Method for regenerating and streaming content from a video server using raid 5 data striping
US20100005228A1 (en) 2008-07-07 2010-01-07 Kabushiki Kaisha Toshiba Data control apparatus, storage system, and computer program product
US20130339580A1 (en) 2010-08-31 2013-12-19 Micron Technology, Inc. Stripe-based non-volatile multilevel memory operation

Also Published As

Publication number Publication date
US9766837B2 (en) 2017-09-19
CN107743617A (zh) 2018-02-27
CN107743617B (zh) 2019-06-04
US10339005B2 (en) 2019-07-02
EP3289441A4 (en) 2018-09-05
WO2016200764A1 (en) 2016-12-15
EP3289441A1 (en) 2018-03-07
US20170357467A1 (en) 2017-12-14
EP3289441B1 (en) 2020-04-29
US11042441B2 (en) 2021-06-22
US20160364181A1 (en) 2016-12-15
KR20180005284A (ko) 2018-01-15
JP2018517213A (ja) 2018-06-28
US20190324847A1 (en) 2019-10-24
TW201709044A (zh) 2017-03-01
TWI599946B (zh) 2017-09-21
JP6422600B2 (ja) 2018-11-14

Similar Documents

Publication Publication Date Title
KR101874290B1 (ko) 메모리 스트라이프 매핑
JP5841056B2 (ja) ストライプベースのメモリ動作
US9298545B2 (en) Data protection across multiple memory blocks
US9235503B2 (en) Stripe-based non-volatile multilevel memory operation
US9274883B2 (en) Apparatuses and methods for storing validity masks and operating apparatuses

Legal Events

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