KR101411566B1 - Memory system with multiple striping of raid groups and method for performing the same - Google Patents

Memory system with multiple striping of raid groups and method for performing the same Download PDF

Info

Publication number
KR101411566B1
KR101411566B1 KR1020137005934A KR20137005934A KR101411566B1 KR 101411566 B1 KR101411566 B1 KR 101411566B1 KR 1020137005934 A KR1020137005934 A KR 1020137005934A KR 20137005934 A KR20137005934 A KR 20137005934A KR 101411566 B1 KR101411566 B1 KR 101411566B1
Authority
KR
South Korea
Prior art keywords
data
memory
module
stripe
write
Prior art date
Application number
KR1020137005934A
Other languages
Korean (ko)
Other versions
KR20130041314A (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 KR20130041314A publication Critical patent/KR20130041314A/en
Application granted granted Critical
Publication of KR101411566B1 publication Critical patent/KR101411566B1/en

Links

Images

Classifications

    • 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
    • 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/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

Abstract

데이터를 쓰거나 소거하는데 필요한 시간 및 데이터를 읽는데 필요한 시간에 비대칭이 있을 수 있는 데이터 메모리 시스템이 기술되어 있다. 데이터는 RAID 데이터 저장 수단을 이용해 저장될 수 있고 모듈에 대한 읽기, 쓰기, 및 소거 동작은 읽기 동작을 수행하는데 상당한 지연 없이 소거 및 쓰기 동작이 수행될 수 있도록 배열될 수 있다. 메모리 시스템에서 메모리 모듈의 고장이 발생하면, 복구불가능한 데이터 손실 확률 또는 지연 성능의 열화를 최소화하는 것과 관련될 수 있는 정책에 따라 선택될 수 있는 고장난 모듈의 데이터를 복구하는 방법이 개시되어 있다. A data memory system is described which may have asymmetry in the time required to write or erase data and the time required to read the data. Data can be stored using RAID data storage means, and read, write, and erase operations on the module can be arranged such that erase and write operations can be performed without significant delay in performing the read operation. Discloses a method for recovering data of a failed module that can be selected according to a policy that may be associated with minimizing degradation of nonrecoverable data loss probability or delay performance when a memory module failure occurs in a memory system.

Description

RAID 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법{MEMORY SYSTEM WITH MULTIPLE STRIPING OF RAID GROUPS AND METHOD FOR PERFORMING THE SAME}[0001] MEMORY SYSTEM WITH MULTIPLE STRIPING OF RAID GROUPS AND METHOD FOR PERFORMING THE SAME [0002]

본 출원은 2008년 3월 26일자로 출원된 일부계속출원 US 12/079,364호로, 2007년 3월 29일자로 출원된 미국 가출원 60/920,737의 우선권과 또한 2009년 10월 9일자로 출원된 미국 가출원 61/250,216의 우선권을 주장하며, 이들 각각은 본 명세서에 참조로 합체되어 있다. This application is a continuation-in-part of US application Ser. No. 12 / 079,364, filed March 26, 2008, which is a continuation-in-part of US Provisional Application No. 60 / 920,737, filed on March 29, 2007, 61 / 250,216, each of which is incorporated herein by reference.

본 발명은 컴퓨터 메모리 시스템 및 그 사용방법에 관한 것이다.The present invention relates to a computer memory system and a method of using the same.

컴퓨터 메모리 시스템은 지속성 또는 비지속성 타입일 수 있다. 지속성 메모리 타입의 예는 자기코어, 디스크 드라이버, 테이프 드라이버 및 반도체 FLASH 메모리이다. 비지속성 메모리 타입은 DRAM 등과 같은 반도체 메모리일 수 있다. 비지속성 메모리 타입은 일반적으로 데이터의 읽기 및 쓰기 모두에 대해 빠른 접속시간을 가지며 컴퓨터 메인 메모리 또는 캐시 메모리로 사용된다. 데이터는 전원을 필요로 하는 수단에 의해 이런 메모리에 보유되고, 메모리에 저장된 정보는 전원이 끊기면 손실될 수 있다. 비지속성 메모리 시스템은 대개 단시간 정전용 커패시티브 스토리지 디바이스일 수 있는 백업 전원 또는 장기간 데이터 보유를 위해 배터리, 발전기 등을 이용한 백업 전원을 갖는다.The computer memory system may be of a persistent or non-persistent type. Examples of persistent memory types are magnetic cores, disk drivers, tape drivers, and semiconductor FLASH memory. The non-persistent memory type may be a semiconductor memory such as DRAM. Non-persistent memory types typically have fast access times for both reading and writing of data and are used as computer main memory or cache memory. Data is held in this memory by means that require power, and information stored in memory can be lost if power is lost. Non-persistent memory systems typically have a backup power source that can be a short-lived, dedicated capacitive storage device, or a backup power source using batteries, generators, etc., for long-term data retention.

디스크, 테이프 또는 FLASH 메모리와 같은 지속성 스토리지 디바이스는 전원이 디바이스로부터 제거되어도 저장된 데이터를 보유하고 비지속성 데이터 스토리지 디바이스 및 계속 전원을 제공하는 비용 또는 신뢰가 비실용적인 데이터 스토리지를 장기간 백업하는데 종종 사용된다. 추가로, 더 많은 양의 데이터가 지속성 데이터 스토리지 디바이스에 저장되기 때문에, 개발된 기술들은 접속 속도보다는 스토리지의 비트당 원가 절감을 위해 지향되어 왔다. 따라서, 많은 컴퓨팅 시스템들은 다양한 메모리 타입을 이용해 즉시 필요한 데이터가 비지속성 스토리지에 저장되는 다른 저장기능을 수행하며, 덜 빈번히 데이터 접속되는 동안 지속성 스토리지 디바이스에 백업될 수 있고, 대형 데이터 그룹화가 지속성 스토리지에 저장된다. Persistent storage devices, such as disk, tape, or FLASH memory, are often used to back up long-term data storage that is costly or unreliable, which retains stored data and provides non-persistent data storage devices and continued power even when power is removed from the device. Additionally, because larger amounts of data are stored in persistent data storage devices, the technologies developed have been directed toward cost savings per bit of storage rather than access speed. Thus, many computing systems use different memory types to perform other storage functions where the necessary data is immediately stored in non-persistent storage, can be backed up to a persistent storage device during less frequent data connections, .

데이터 센터라고 할 수 있는 컴퓨터 데이터베이스 시스템 또는 인터넷 및 관련된 스토리지 디바이스와 같은 분산 데이터 시스템은 방대한 양의 데이터를 저장할 수 있다. 이 구조의 소정 태양들을 현재 "클라우드" 컴퓨팅이라 한다. 오늘날, 이런 데이터 스토리지 요건들은 1000 테라바이트(1000TB)를 초과할 수 있고 계속 늘어날 것으로 예상된다. 이들 데이터 세트 대부분은 실질적으로 즉시 접속할 비지속성 스토리지 용량보다 더 크고, 클라이언트 컴퓨터로부터 요청을 서비스할 때 데이터 센터에서 서버들의 응답시간은 시스템 수행시 심각한 병목현상이 될 수 있다. 이런 많은 제한은 지속성 스토리지 매체의 데이터 접속 시간지연의 결과이다. 테이프 시스템에 대해, 읽기 또는 쓰기되는 데이터 부분이 읽기 또는 쓰기 헤드에 위치되도록 선형 테이프가 옮겨져야 한다. 마찬가지로, 디스크에 대해, 헤드는 데이터의 소정 섹터가 위치되는 데이터 트랙 위에 있도록 위치되어야 하며, 그런 후 디스크 컨트롤러는 섹터가 위치된 헤더 아래에서 회전할 때까지 대기한다. 이들 동작들 중 어느 하나는 실질적으로 비지속성 메모리 디바이스에 읽기 또는 쓰기보다 더 느리다. 이런 제한들은 특히 데이터베이스에서 랜덤 위치를 갖는 데이터 싱글 메모리 위치들이 읽기, 쓰기 또는 변경될 필요가 있을 경우 심각하다.Distributed data systems, such as computer database systems, or data centers, or Internet and related storage devices, can store vast amounts of data. Certain aspects of this architecture are now referred to as "cloud" computing. Today, these data storage requirements can exceed 1000 terabytes (1000TB) and are expected to continue to grow. Most of these datasets are substantially larger than the non-persistent storage capacity to be accessed immediately, and when servicing requests from client computers, the response times of servers in the data center can become a serious bottleneck in system performance. Many of these limitations result from the data access time delay of the persistent storage medium. For tape systems, the linear tape must be moved so that the portion of data to be read or written is located at the read or write head. Similarly, for a disk, the head should be positioned so that it is on a data track where a given sector of data is located, and then the disk controller waits until the sector is rotated below the headers where the sector is located. Either of these operations is substantially slower than reading or writing to a non-persistent memory device. These limitations are particularly severe if data single memory locations with random locations in the database need to be read, written or altered.

메모리에 저장된 데이터 요청 및 메모리로부터 데이터 검색 간의 시간을 지연(latency)이라 할 수 있다. 현재 사용된 지속성 메모리 기술들 가운데 플래시 메모리는 디스크와 같이 기계적 디바이스들보다는 지연이 낮으나, 현재 사용중인 비지속성 메모리 타입보다는 지연이 상당히 더 크다. 플래시 메모리의 가격 및 유사한 고체상태 기술들은 통상적으로 18개월 주기동안 디바이스의 용량은 배로 가격은 절반인 일반적인 경향을 표현하는 무어의 법칙으로 알려진 원칙에 지배되어 왔다. 이와 같이, 가령 디스크에서보다 플래시 메모리에 데이터를 저장하는 단가가 곧 패리티(parity)에 도달할 것으로 예상된다.The time between data request stored in memory and data retrieval from memory can be referred to as latency. Of the persistent memory technologies currently in use, Flash memory has a lower latency than mechanical devices like disks, but has a much larger latency than the currently used non-persistent memory types. The price of flash memory and similar solid state techniques have traditionally been governed by the principle known as Moore's Law, which expresses the general tendency that the capacity of a device during a 18 month cycle is half the doubled price. Thus, it is expected that the unit cost of storing data in the flash memory rather than the disk will soon reach parity.

디스크 디바이스보다 상당히 지연이 낮지만, 플래시 메모리는 현재 이용가능한 메모리 모듈의 동작 방법 및 설계에 의해 접속시간에 여전히 한계가 있다. 플래시 메모리는 일반 용어이며, 다양한 타입의 고체상태 디바이스들이 플래시 메모리로 고려될 수 있다. 본래 EEPROM(Electronically Erasable Programmable Read Only Memory)에 잇따라 NOR-FLASH, NAND-FLASH 등과 같이 공지된 다른 개발들이 있다. 각각의 기술들은 데이터의 읽기 및 쓰기에 대해 다른 디자인과 구성 및 다른 속성들을 갖는다. 즉, 읽기 또는 쓰기일 수 있는 (예컨대, 데이터 워드, 페이지, 또는 데이터 섹터) 데이터 블록의 최소 크기에 대한 제한 또는 데이터를 읽고 쓰는데 필요한 시간 차가 있을 수 있다. 많은 경우, 데이터를 읽거나 쓰기 위한 시간은 정해지지 않고 폭넓은 범위로 변할 수 있다. 메모리 컨트롤러 또는 다른 이런 디바이스는 이들이 실행될 때까지 현저한 요청들을 추적해야 하고, 이 요건은 데이터 지연을 전체 시스템의 속도를 느리게 할 수 있는 가변량으로 하고, 메모리를 관리하는데 사용되는 하드웨어 및 소프트웨어의 복잡도를 증가시킬 수 있다. 또한, 플래시 메모리 디바이스의 수명은 마멸과정을 받는 것으로 간주되며, 읽기, 쓰기(플래시 메모리를 말하는 경우 "프로그램"이라 함) 또는 소거 사이클에서 측정된다. 본 명세서에서, "쓰기"라는 용어는 플래시 메모리가 이용되는 경우 "프로그램"을 말하는데 사용된다.Although the delay is considerably lower than disk devices, flash memory is still limited in connection time by the way and design of the currently available memory modules. Flash memory is a general term, and various types of solid state devices can be considered as flash memory. There are other developments known in the art, such as NOR-FLASH, NAND-FLASH and so on, followed by Electronically Erasable Programmable Read Only Memory (EEPROM). Each technique has different design, configuration, and other properties for reading and writing data. That is, there may be a limitation on the minimum size of a data block (e.g., a data word, page, or data sector) that can be read or written, or there may be a time difference required to read and write data. In many cases, the time for reading or writing data is not fixed but can vary over a wide range. The memory controller or other such devices must keep track of outstanding requests until they are executed and this requirement makes the data latency variable amounts that can slow down the overall system and reduce the complexity of the hardware and software used to manage the memory . Also, the lifetime of a flash memory device is considered to be subjected to a wear process and is measured in read and write (referred to as "program" in the case of a flash memory) or in an erase cycle. In this specification, the term "write" is used to refer to a "program" when a flash memory is used.

수명에 있어 싸이클의 회수가 각 위치 또는 섹터에 대해 커질 수 있으나, 실제로 그리고 발생할 수 있는 병적 상황에 있어 모두 플래시 디바이스로부터 형성된 큰 메모리의 개개의 구성성분들의 수명이 충분히 짧아 메모리의 마모를 고르게 하고 오류 검출 및 정정을 수행하며, 배드 데이터 블록들을 표시하는 등에 상당한 노력이 필요할 수 있다. The life cycle of the individual components of the large memory formed from the flash device is sufficiently short in both actual and possible pathological situations so that the wear of the memory is evenly distributed and the error Significant effort may be required, such as performing detection and correction, and displaying bad data blocks.

RAID(Redundant Arrays of Independent, 또는 Inexpensive, Disks)의 개념은 적어도 1988년 데이비드 패터슨, 가스 깁슨, 및 랜디 에이치. 캣츠가 쓴 논문으로 거슬러 올라간다. RAID는 중복을 추가함으로써 포함된 데이터를 손실에 대해 보호하도록 디스크 메모리 시스템이 배열되게 허용한다. 적절히 구성된 RAID 구조에서, 임의의 싱글 디스크의 손실은 저장된 데이터에 접속하거나 재구성하는 능력과 간섭하지 않으나, 다른 성능 표시가 영향받을 수 있다. RAID 없이 디스크 어레이의 평균고장간격(Mean Time Between Failure, MTBF)은 어떤 디스크 손실로 데이터를 상실하기 때문에 어레이에서 드라이브의 개수로 나누어진 개개의 드라이브의 MTBF와 같다. 이로 인해, 많은 적용 요건들에 대해 디스크 드라이브 어레이의 MTBF가 너무 낮을 수 있다. 그러나, 디스크 어레이는 다양한 방식으로 정보를 중복 저장함으로써 고장이 방지될 수 있다. The concept of RAID (Redundant Arrays of Independent, or Inexpensive, Disks) is at least in 1988 by David Patterson, Gas Gibson, and Randy H.. It goes back to the article written by Cats. RAID allows the disk memory system to be arranged to protect the data contained therein from loss by adding redundancy. In a properly configured RAID structure, the loss of any single disk does not interfere with the ability to access or reconstruct the stored data, but other performance indications may be affected. The Mean Time Between Failure (MTBF) of a disk array without RAID is equal to the MTBF of an individual drive divided by the number of drives in the array because it loses data with some disk loss. As a result, the MTBF of the disk drive array may be too low for many application requirements. However, the disk array can be prevented from failing by redundantly storing information in various ways.

예컨대, RAID-3, RAID-4, 및 RAID-5 등이 주제에 대한 변형들이다. 상기 주제는 패리티 기반의 RAID이다. RAID-1에서와 같이 데이터의 전체 사본을 유지하는 대신, 데이터는 추가된 추가 디스크와 함께 여러 디스크들에 걸쳐 퍼진다. 추가 디스크에 대한 데이터는 다른 디스크들에 대한 데이터를 기초로 (불리안(Boolean) XORs을 이용해) 계산될 수 있다. 디스크 세트에서 임의의 싱글 디스크가 손실되면, 디스크에 저장된 데이터는 나머지 디스크의 데이터에 대해 수행된 계산을 통해 복구될 수 있다. 이들 실행은 RAID-1(미러링)보다 덜 고가인데 왜냐면 이들은 RAID-1이 요구하는 100% 디스크 공간 오버헤드를 필요로 하지 않기 때문이다. 그러나, 디스크의 데이터는 계산에 의해 복구되기 때문에, 데이터를 쓰고 디스크가 손실된 후 데이터를 복구하는데 대한 성능적 함의가 있다. 패리티 RAID의 많은 상업적 수단들은 캐시 메모리를 이용해 성능 문제들을 완화한다. For example, RAID-3, RAID-4, and RAID-5 are variations on the subject. The subject is parity-based RAID. Instead of keeping a full copy of the data as in RAID-1, data is spread across multiple disks with additional disks added. The data for the additional disk may be computed (using Boolean XORs) based on the data for the other disks. If any single disk in the disk set is lost, the data stored on the disk can be recovered through calculations performed on the data on the remaining disk. These runs are less expensive than RAID-1 (mirroring) because they do not require the 100% disk space overhead required by RAID-1. However, since the data on the disk is restored by calculation, there is a performance implication for recovering the data after writing the data and losing the disk. Many commercial means of parity RAID use cache memory to mitigate performance problems.

RAID-4 디스크 어레이에서, 대개 4 또는 5개의 데이터 디스크들 더하기 다른 디스크들에 데이터에 대한 패리티를 저장하는데 사용되는 하나의 가외 디스크의 세트가 있다. 모든 쓰기들로 패리티 디스크가 업데이트되기 때문에, 상기 디스크는 전체 어레이에 모든 쓰기 활동을 느리게 하는 성능 병목현상이 될 수 있다. In a RAID-4 disk array, there is usually a set of four or five data disks plus one extra disk that is used to store parity for data on the other disks. Because the parity disk is updated with all writes, the disk can be a performance bottleneck that slows down all write activity to the entire array.

RAID에 대한 원리는 "스트립핑(stripping)"으로, 여러 드라이브들(메모리 유닛들)을 하나의 논리 스토리지 유닛에 연쇄연결하는 방법이다. 스트립핑은 각 드라이브의 스토리지 공간을 "스트라이프(stripes)"로 분할하는 것을 포함하며, 상기 스트라이프는 한 섹터(가령, 512 바이트)만큼 작게 또는 수 메가바이트 이상만큼 클 수 있다. 그런 후 이들 스트라이프들은 결합된 스토리지 공간이 스트라이프내 각 드라이브로부터 스트라이프들로 구성되도록 인터리브된다. 적용 환경, I/O, 또는 데이터 집중(data intensive) 타입은 큰 또는 작은 스트라이프들이 사용되는지를 판단하는 디자인 고려일 수 있다.The principle of RAID is "stripping" in which multiple drives (memory units) are cascaded to one logical storage unit. Stripping involves partitioning the storage space of each drive into "stripes ", which may be as small as one sector (e.g., 512 bytes) or as large as several megabytes or more. These stripes are then interleaved so that the combined storage space consists of stripes from each drive in the stripe. The application environment, I / O, or data intensive type may be a design consideration to determine whether large or small stripes are used.

RAID-5는 RAID-4와 동일한 하드웨어 구성을 이용해 실행될 수 있다. RAID-4의 경우, 패리티 블록은 각각의 스트라이프들에 대해 동일한 디스크에 저장되므로, 패리티 디스크라고 하는 것을 가질 수 있다. RAID-5의 경우, 각 스트라이프에 대한 패리티 블록은 스트라이프의 일부인 디스크에 저장되나, 패리티 블록은 이들이 스토리지 시스템을 구성하는 복수의 디스크들에 걸쳐 기본적으로 균일하게 분포되도록 분산된다. RAID-6는 예컨대 패리티를 계산하기 위한 기초로서 스트라이프들의 컬럼을 이용해 복수의 스트라이프들에 걸친 패리티의 계산을 포함하는 데이터 보호에 있어 또 다른 향상이다. RAID-5 can be implemented using the same hardware configuration as RAID-4. In the case of RAID-4, the parity block is stored on the same disk for each stripe, so it can be called a parity disk. In the case of RAID-5, the parity blocks for each stripe are stored on a disk that is part of the stripe, but the parity blocks are distributed such that they are distributed essentially evenly across the plurality of disks constituting the storage system. RAID-6 is another enhancement to data protection that involves the calculation of parity across multiple stripes using, for example, columns of stripes as the basis for calculating parity.

RAID 3 또는 RAID 4 어레이의 성능(레벨 0과 동일한 성능)은 읽기에 이점적일 수 있다. 그러나, 쓰기는 패리티 데이터가 매번 업데이트되는 것을 필요로 한다. 이는 특히, 대량 쓰기 또는 순차적 쓰기가 꽤 빠르긴 하나 작은 랜덤 쓰기를 느리게 한다. 어레이에서 단 하나의 드라이브만이 중복 데이터를 저장하기 때문에, RAID 4 어레이의 메가바이트당 단가가 꽤 낮아질 수 있다. 여러 디스크들에 걸친 데이터의 분산은 전용 하드웨어 또는 소프트웨어에 의해 관리될 수 있다. 추가로, 부분적으로 소프트웨어 및 부분적으로 하드웨어 기반의 방안인 하이브리드 RAID 구조들이 있다.The performance of RAID 3 or RAID 4 arrays (equivalent to level 0) can be advantageous for reading. However, writing requires that the parity data be updated each time. This is especially true for large write or sequential writes, which is quite fast, but slows down small random writes. Because only one drive in an array stores redundant data, the unit price per megabyte of a RAID 4 array can be quite low. The distribution of data across multiple disks can be managed by dedicated hardware or software. In addition, there are hybrid RAID architectures that are partially software and partially hardware-based.

개념적으로, 데이터 및 오류 보정 패리티 데이터의 구성이 도 1에 도시되어 있으며, 한 블록(A)에서 데이터는 데이터 세트(A1,A2,A3)로서 3개의 디스크들에 걸쳐 스트라이프되고, 패리티 데이터 세트(Ap)는 4번째 디스크에 있으며, 패리티 데이터 세트(Ap)는 일반적으로 데이터 세트(A1,A2,A3)의 배타적 OR(XOR)로 계산된다. 그런 후, 당업자에 공지된 바와 같이, 데이터 세트(A1,A2,A3 또는 Ap) 중 하나가 다른 3개 데이터 세트로 재구성될 수 있다. 그러므로, 가령 디스크들 중 하나의 고장을 나타내는 데이터 세트 중 어느 하나에서의 오류가 다른 데이터 세트들의 이용에 의해 보정될 수 있다. Conceptually, the organization of data and error correction parity data is shown in FIG. 1, where in one block (A) data is striped across three disks as data sets A1, A2, A3, Ap is on the fourth disk and the parity data set Ap is generally calculated as the exclusive OR (XOR) of the data sets A1, A2, A3. Then, as is known to those skilled in the art, one of the data sets A1, A2, A3 or Ap may be reconstructed into another three data sets. Thus, errors in any one of the data sets representing, for example, a failure of one of the disks may be corrected by use of other data sets.

오류정정코드(ECC)는 각 데이터 신호가 특정 계산규칙을 따르는 알고리즘이므로 오류를 나타내는 수신된 신호 또는 복구된 신호에서 이 계산으로부터 출발이 일반적으로 자동으로 검출되거나 정정될 수 있다. ECC는 컴퓨터 데이터 스토리지, 예컨대 다이나믹 RAM, FLASH 메모리 등 및 데이터 전송에 사용된다. ECC의 예는 해밍코드, BCH 코드, 리드-솔로몬 코드, 리드-뮬러코드(Reed-Muller code), 이진 골레이 코드(binary Golay code), 컨볼루션 코드, 및 터보코드를 포함한다. 가장 간단한 오류정정코드는 싱글비트 오류를 정정하고 이중비트 오류를 검출할 수 있다. 다른 코드들은 멀티비트 오류들을 검출 또는 정정할 수 있다. ECC 메모리는 컴퓨터 메모리에서의 오류에 대해 보호함으로써 더 큰 데이터 정확도와 시스템 업데이트를 제공한다. 스트립 데이터의 각 데이터 세트(A1,A2,A3,Ap)는 이에 첨부되고 일반적으로 동일한 디스크에 저장된 관련된 오류정정코드(ECC) 데이터 세트를 가질 수 있다. 데이터가 디스크로부터 읽어질 때, ECC에 의해 데이터의 무결성이 검증되고 이용된 ECC에 따라, 하나 이상의 오류들이 검출 및 정정될 수 있다. 일반적으로, 여러 오류들의 검출 및 정정은 이용된 ECC의 함수이며, ECC의 선택은 요구된 데이터 무결성 수준, 처리시간 및 기타 코스트(cost)에 따른다.The error correcting code (ECC) is generally an automatic detection or correction of the departure from this calculation in the received or recovered signal indicating an error since each data signal is an algorithm that complies with certain calculation rules. ECC is used for computer data storage, such as dynamic RAM, FLASH memory, etc., and for data transfer. Examples of ECC include Hamming codes, BCH codes, Reed-Solomon codes, Reed-Muller codes, binary Golay codes, convolutional codes, and turbo codes. The simplest error correction code can correct single bit errors and detect double bit errors. Other codes may detect or correct multi-bit errors. ECC memory provides greater data accuracy and system updates by protecting against errors in computer memory. Each data set A1, A2, A3, Ap of the strip data may have an associated error correcting code (ECC) data set attached thereto and generally stored on the same disk. When data is read from the disk, the integrity of the data is verified by the ECC and one or more errors can be detected and corrected, depending on the ECC used. In general, the detection and correction of various errors is a function of the ECC used, and the selection of the ECC depends on the requested data integrity level, processing time and other costs.

데이터 쓰기 및 읽기 능력을 각각 갖는 복수의 메모리 모듈을 포함한 메모리 시스템이 개시되어 있다. 복수의 모듈들의 모듈 그룹은 상기 모듈 그룹에 저장된 데이터가 모듈 그룹의 모듈들 중 어느 하나로부터 데이터의 쓰기 또는 소거와 관련된 봉쇄 없이 읽혀질 수 있도록 구성된다. A memory system including a plurality of memory modules each having a data writing and reading capability is disclosed. The module group of the plurality of modules is configured so that the data stored in the module group can be read without blocking related to writing or erasing of data from any one of the modules of the module group.

또 다른 태양으로, 메모리 시스템은 데이터 쓰기 및 읽기 능력을 각각 갖는 복수의 메모리 모듈들을 구비한다. 상기 복수의 메모리 모듈들로 된 한 모듈 그룹은 사용자 데이터 및 상기 사용자 데이터용 패리티 데이터를 저장한다. 상기 모듈 그룹의 쓰기 또는 소거 동작은 읽기 요청시 적어도 모든 사용자 데이터 또는 읽기 요청시 모든 사용자 데이터 미만 및 요청된 사용자 데이터를 재구성하기 위한 충분한 패리티 데이터 중 적어도 하나가 요청되도록 구성되며, 데이터를 읽거나 재구성하는 시간 지연은 모듈 그룹 중 한 모듈이 쓰기 또는 소거 상태에 있는 시간 간격 미만이다.In yet another aspect, a memory system includes a plurality of memory modules each having data writing and reading capabilities. One module group including the plurality of memory modules stores user data and parity data for the user data. Wherein the write or erase operation of the module group is configured such that at least one of at least one of all user data or sufficient parity data for reconstructing the requested user data is requested at the time of a read request, Is less than the time interval in which one of the module groups is in a write or erase state.

또 다른 태양으로, 메모리 시스템은 데이터 쓰기 및 읽기 능력을 각각 갖는 복수의 메모리 모듈들을 갖는다. 상기 복수의 메모리 모듈들로 된 한 모듈 그룹은 사용자 데이터 및 상기 사용자 데이터용 패리티 데이터를 저장하고, 상기 모듈 그룹의 쓰기 또는 소거 동작은 적어도 모든 사용자 데이터 또는 모든 사용자 데이터 미만 및 사용자 데이터를 재구성하기 위한 충분한 패리티 데이터 중 적어도 하나가 모듈 그룹에 수행된 소거 또는 쓰기 동작으로 인한 시간 지연과 조우함이 없이 읽혀질 수 있도록 배열된다. 모듈로의 데이터 할당은 메모리 모듈에 대한 어드레스 그룹들을 논리 어드레스 공간에서 발생 패턴에 따라 RAID 스트라이프에 할당하는 것을 포함한다. In yet another aspect, a memory system has a plurality of memory modules each having data writing and reading capabilities. Wherein a group of modules comprising the plurality of memory modules stores user data and parity data for the user data, and the write or erase operation of the module group includes at least all user data or all user data and for reconstructing user data At least one of the sufficient parity data is read without encountering a time delay due to erase or write operations performed on the module group. Data allocation to the module includes allocating address groups for a memory module to a RAID stripe according to a pattern of occurrences in the logical address space.

또 다른 태양으로, 메모리 시스템은 데이터 쓰기 및 읽기 능력을 각각 갖는 복수의 메모리 모듈들을 갖는다. 복수의 모듈로 된 한 모듈 그룹은 상기 모듈 그룹에 수행되는 쓰기 동작이 복수의 쓰기 동작들이 중첩되는 시간 간격에서 수행되도록 제한되게 구성된다. In yet another aspect, a memory system has a plurality of memory modules each having data writing and reading capabilities. A module group including a plurality of modules is configured such that a write operation performed on the module group is limited to be performed in a time interval in which a plurality of write operations overlap.

복수의 메모리 모듈들로 된 그룹은 상기 메모리 모듈들 중 단 하나만 임의의 시기에 쓰기 또는 소거 동작을 수행하는 중이도록 동작하게 제어가능한 복수의 메모리 모듈들을 제공하는 단계와, 사용자 데이터가 상기 쓰기 또는 소거 동작을 수행하지 않는 메모리 모듈로부터 모든 사용자 데이터를 읽거나, 쓰기 또는 소거 동작을 수행하지 않는 메모리 모듈로부터 모든 사용자 데이터 미만을 읽는 것 중 하나에 의해 읽혀질 수 있도록 사용자 데이터의 패리티 데이터를 포함하는 메모리 모듈의 그룹에 대한 사용자 데이터 파일을 저장하는 단계를 포함하고, 패리티 데이터를 저장하는 메모리 모듈은 쓰기 또는 소거 동작을 수행하지 않는 메모리 시스템에서 데이터 저장 방법이 개시되어 있다.Wherein the group of the plurality of memory modules is controllable to operate to perform a write or erase operation at only one of the memory modules at any time; A memory module including parity data of user data so that it can be read by one of reading all user data from a memory module not performing an operation, or reading less than all user data from a memory module not performing a write or erase operation And storing the user data file for the group of the parity data, wherein the memory module storing the parity data does not perform a write or erase operation.

또 다른 태양으로, 복수의 메모리 모듈들로 된 그룹은 상기 메모리 모듈들 중 단 하나만 임의의 시기에 쓰기 또는 소거 동작을 수행하는 중이도록 동작하게 제어가능한 복수의 메모리 모듈들을 제공하는 단계와, 사용자 데이터가 상기 쓰기 또는 소거 동작을 수행하지 않는 메모리 모듈로부터 모든 사용자 데이터를 읽거나, 쓰기 또는 소거 동작을 수행하지 않는 메모리 모듈로부터 모든 사용자 데이터 미만을 읽는 것 중 하나에 의해 읽혀질 수 있도록 사용자 데이터의 패리티 데이터를 포함하는 메모리 모듈의 그룹에 대한 사용자 데이터 파일을 저장하는 단계를 포함하고, 패리티 데이터를 저장하는 메모리 모듈은 쓰기 또는 소거 동작을 수행하지 않는 메모리 시스템에 데이터를 저장하는 방법이 개시되어 있다. In another aspect, there is provided a method comprising: providing a plurality of memory modules, the group of memory modules being controllable to operate to perform a write or erase operation at only one of the memory modules at any time; To read all user data from a memory module that does not perform the write or erase operation, or to read all user data from a memory module that does not perform a write or erase operation, And storing a user data file for a group of memory modules including the parity data, wherein the memory module for storing parity data stores data in a memory system that does not perform a write or erase operation.

본 발명의 내용에 포함됨.Are included in the scope of the present invention.

도 1은 복수의 디스크 드라이브들에 대한 RAID 4 데이터 스토리지 시스템을 도시한 것이다(종래 기술).
도 2는 행렬 스토리지 어레이에 배열된 복수의 메모리 모듈들을 도시한 것이다.
도 3은 복수의 메모리 모듈에 저장된 어레이(A)에 대한 데이터 구조의 예이다.
도 4a는 3개 아키텍쳐로 배열된 메모리 모듈의 배열을 도시한 것으로, 논리 데이터 스트라이프에서 메모리 모듈들은 브랜치의 끝에 있는 리브들에 위치해 있다.
도 4b는 도 4a에서와 같은 메모리 모듈의 배열을 도시한 것으로, 논리 데이터 스트라이프에서 메모리 모듈들은 브랜치에 위치해 있다.
도 5는 RAID 메모리에서 데이터의 개략적 배열이다.
도 6a는 RAID 스트라이프에 대한 쓰기 동작의 타임 시퀀스를 도시한 것이다.
도 6b는 도 6a의 순차적 시간간격에 대한 쓰기 및 읽기 동작의 관계를 도시한 것이다.
도 7은 메모리 모듈의 블록도이다.
도 8은 각 모듈이 한 RAID 그룹 이상에 속하는 메모리 모듈들의 그룹을 도시한 것으로, 상기 RAID 그룹은 모듈들에 걸쳐 여러가지 방식으로 스트라이프된다.
도 9는 그룹내 어드레스 시퀀스가 연속적일 수 없는 RAID 배열을 도시한 것이다.
도 10은 치수 5×5의 논리 어드레스 공간과 0의 기울기(열 당 행)로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 11은 치수 5×5의 논리 어드레스 공간과 -1 기울기로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 12는 치수 5×5의 논리 어드레스 공간과 +1 기울기로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 13은 치수 5×9의 논리 어드레스 공간과 +2 기울기로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 14는 치수 5×9의 논리 어드레스 공간과 -2 기울기로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 15는 치수 5×5의 논리 어드레스 공간과 열과 일치하게 지향된 길이 5의 스트라이프를 도시한 것이다.
도 16은 치수 5×5의 논리 어드레스 공간과, 어레이 경계에서 스트라이프를 감싼 것으로 도시된, -2 기울기로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 17은 치수 5×5의 논리 어드레스 공간과, 어레이 경계에서 스트라이프를 감싼 것으로 도시된, +2 기울기로 지향된 길이 5의 스트라이프를 도시한 것이다.
도 18은 치수 5×5의 논리 어드레스 공간 및 (3,3)을 지나는 기울기 0,±1,±2의 스트라프들과 함께 길이 5의 스트라이프를 도시한 것이다.
도 19는 치수 5×5의 논리 어드레스 공간 및 (3,3)을 수직으로 지나는 기울기 0,±1,±2의 스트라프들과 함께 길이 5의 스트라이프를 도시한 것이다.
도 20은 치수 5×5의 논리 어드레스 공간 및 (3,3)을 수직으로 지나는 기울기 0,±1,±2의 스트라프들과 함께 길이 5의 스트라이프를 도시한 것으로, 스트라이프 패턴들은 다른 폭을 갖는다.
도 21은 치수 5×3의 논리 어드레스 공간과 -1 기울기의 스트라이프를 갖는 길이 5의 스트라이프를 도시한 것이다.
도 22는 치수 5×7의 논리 어드레스 공간과 +2 기울기의 스트라이프를 갖는 길이 5의 스트라이프를 도시한 것이다.
도 23은 도 18의 발생함수가 열 3의 각 행에 위치되는 치수 5×5의 논리 어드레스 공간을 도시한 것이다.
도 24는 도 18의 발생함수가 (1,3)에 위치되는 치수 5×5의 논리 어드레스 공간을 도시한 것이다.
도 25는 또 다른 발생함수의 예를 이용한 치수 5×5의 논리 어드레스 공간을 도시한 것이다.
도 26은 (1,3)에 위치된 도 25의 발생함수에 따른 치수 5×5의 논리 어드레스 공간을 도시한 것이다.
도 27은 어레이의 각 행렬에 위치된 도 18의 발생함수에 따른 치수 5×5의 논리 어드레스 공간을 도시한 것이다.
도 28은 치수 5×7의 발생함수에 따라, 치수 7×7의 논리 어드레스 공간을 도시한 것이다.
도 29는 치수 5×9의 발생함수에 따라, 치수 7×9의 논리 어드레스 공간을 도시한 것이다.
도 30은 치수 5×7의 논리 어드레스 공간을 도시한 것으로, 스트라이프들은 특정 데이터 손실 패턴이 되도록 애플리케이션 A-F에 할당된다.
도 31은 좌측 대각선 스트라이핑을 포함한 치수 7×7의 논리 어드레스 공간을 도시한 것이다.
도 32는 스트라이프의 논리 어드레스 범위들이 어드레스 범위들 간에 2열씩 증가되는 치수 7×7의 논리 어드레스 공간과 최종발생한 랩 어라운드(wrap-around)패턴을 도시한 것이다.
도 33은 스트라이프의 논리 어드레스 범위들이 어드레스 범위들 간에 2열씩 증가되는 치수 7×7의 논리 어드레스 공간과 최종발생한 랩 어라운드 패턴을 도시한 것이다.
도 34는 도 31-33의 스트라이핑 패턴을 도시한 것으로, 총 스트라이프들을 발생하기 위해 더 큰 증가가 이용된다.
도 35는 치수 7×7의 어레이 어드레스의 논리 어드레스 공간(1,4)에 공통인 스트라이프들의 분포를 도시한 것이다.
도 36은 총 48개 스트라이프들에 대한 발생 패턴으로서 도 31의 스트라이핑 패턴을 도시한 것이다.
도 37은 도 36의 (1,1)을 지나는 스트라이프들의 분포를 도시한 것이다.
도 38은 스트라이프내 어드레스 범위 증가가 5인 도 36과 유사한 도면이다.
도 39는 도 38의 (1,1)을 지나는 스트라이프들의 분포를 도시한 것이다.
도 40은 논리 어드레스 공간에 걸쳐 모듈을 지나는 스트라이프들을 더 넓게 분산시키기 위한 다른 많은 스트라이핑 패턴들의 사용을 도시한 것이다.
도 41은 0, 좌측 대각선, 우측 대각선 기울기의 스트라이프들을 갖는 6×10의 논리 어드레스 공간을 도시한 것이다.
Figure 1 illustrates a RAID 4 data storage system for a plurality of disk drives (prior art).
Figure 2 shows a plurality of memory modules arranged in a matrix storage array.
3 is an example of a data structure for array A stored in a plurality of memory modules.
Figure 4a shows an arrangement of memory modules arranged in three architectures, in which the memory modules are located on the ribs at the end of the branch.
FIG. 4B illustrates an arrangement of memory modules as in FIG. 4A, where memory modules are located in a branch in a logical data stripe.
5 is a schematic arrangement of data in a RAID memory.
6A shows a time sequence of a write operation for a RAID stripe.
FIG. 6B shows the relationship between the write and read operations for the sequential time intervals of FIG. 6A.
7 is a block diagram of a memory module.
FIG. 8 shows a group of memory modules in which each module belongs to one or more RAID groups, and the RAID group is striped in various ways across the modules.
Figure 9 illustrates a RAID array in which an intra-group address sequence can not be contiguous.
Figure 10 shows a stripe of length 5 oriented with a logical address space of dimensions 5x5 and a slope of 0 (rows per column).
Figure 11 shows a stripe of length 5 oriented with a logic address space of dimension 5x5 and -1 slope.
Figure 12 shows a stripe of length 5 oriented with a logical address space of dimensions 5x5 and a +1 slope.
Figure 13 shows a stripe of length 5 oriented with a +2 slope and a logical address space of dimension 5x9.
Figure 14 shows a stripe of length 5 oriented with a logical address space of dimension 5x9 and a -2 slope.
Figure 15 shows a stripe of length 5 oriented in line with a column with a logical address space of dimension 5x5.
Figure 16 shows a stripe of length 5 oriented with a -2 slope, shown as wrapping a stripe at the array boundary, with a logical address space of dimension 5x5.
Figure 17 shows a stripe of length 5 oriented at a +2 slope, shown as wrapping a stripe at the array boundary, with a logical address space of dimension 5x5.
Figure 18 shows a stripe of length 5 with a stripe of 0, +/- 1, +/- 2 through a logical address space of dimension 5x5 and (3, 3).
Figure 19 shows a stripe of length 5 with a stripe of 0, +/- 1, +/- 2 passing vertically through the logical address space of dimension 5x5 and (3, 3).
Figure 20 shows a stripe of length 5 with a stripe of 0, +/- 1, +/- 2 passing vertically through a logical address space of dimension 5x5 and (3, 3) with stripe patterns having different widths .
Figure 21 shows a stripe of length 5 with a logical address space of dimension 5x3 and a stripe of -1 slope.
Figure 22 shows a stripe of length 5 with a logical address space of dimension 5x7 and a stripe of +2 inclination.
Figure 23 shows a logical address space of dimension 5x5 where the generation function of Figure 18 is located in each row of column 3.
Figure 24 shows a logical address space of dimension 5x5 where the generation function of Figure 18 is located at (1,3).
Figure 25 illustrates a logical 5x5 logical address space using another example of generation function.
Figure 26 shows a logical address space of dimension 5x5 according to the generation function of Figure 25 located at (1,3).
Figure 27 shows a logical address space of dimension 5x5 according to the generation function of Figure 18 located in each matrix of the array.
Figure 28 shows a logical address space of dimension 7x7 according to the generation function of dimension 5x7.
Figure 29 shows a logical address space of size 7x9 according to the generation function of dimension 5x9.
Figure 30 shows a logical 5 × 7 logical address space where stripes are assigned to Application AF to be a specific data loss pattern.
Figure 31 shows a logical address space of size 7x7 with left diagonal striping.
Figure 32 shows a logical address space of size 7x7 and the last generated wrap-around pattern in which the logical address ranges of the stripes are incremented by two columns between address ranges.
Figure 33 illustrates a logical address space of size 7x7 and the last occurring wraparound pattern in which the logical address ranges of the stripes are incremented by two columns between address ranges.
Fig. 34 illustrates the striping pattern of Figs. 31-33, where a larger increase is used to generate the total stripes.
Figure 35 shows the distribution of the stripes common to the logical address space (1, 4) of the array address of size 7x7.
Fig. 36 shows the striping pattern of Fig. 31 as a pattern of occurrence for a total of 48 stripes.
FIG. 37 shows the distribution of the stripes passing through (1,1) in FIG.
38 is a view similar to FIG. 36 with an address range increase in stripe 5.
FIG. 39 shows the distribution of the stripes passing through (1,1) in FIG.
Figure 40 illustrates the use of many other striping patterns to more widely distribute the stripes passing through the module over the logical address space.
Figure 41 shows a 6x10 logical address space with stripes of 0, left diagonal, right diagonal slope.

도면을 참조로 예시적인 실시예들이 더 잘 이해되나, 이들 실시예들은 제한적인 특성인 것으로 의도되어 있지 않다. 동일하거나 다른 도면에서 동일한 번호의 요소들은 등가의 기능을 수행한다. 요소들은 숫자나 두문자로 또는 둘 다로 표시될 수 있고, 표현 간의 선택은 단지 명확히 하기 위한 것으로, 숫자로 표시된 요소 및 두문자 또는 문자숫자 표시자로 나타낸 동일 요소는 이를 바탕으로 구별되지 않아야 한다. While the illustrative embodiments are better understood with reference to the drawings, these embodiments are not intended to be limiting in nature. Elements of the same number in the same or different figures perform equivalent functions. Elements may be represented by numbers, acronyms, or both, and the choice between representations is merely for clarity, and numerical elements and the same elements represented by double letters or alphanumeric identifiers should not be distinguished on this basis.

상술한 방법들 및 도면에 도시된 기기들은 기계실행 명령어, 가령 소프트웨어 또는 하드웨어 또는 모두의 조합으로 구성 또는 구현될 수 있음이 이해된다. 기계실행 명령어는 상기 명령어에 대해 동작하는 범용 컴퓨터, DPS와 같은 특수용 프로세서, 또는 어레이 프로세서 등이 본 명세서에 기술된 기능들을 수행하게 하도록 사용될 수 있다. 대안으로, 동작들은 기술된 동작을 수행하기 위한 하드와이어 로직 또는 펌웨어 명령어를 가질 수 있는 특수 하드웨어 구성요소들에 의해 또는 아날로그 회로를 포함할 수 있는 프로그램된 컴퓨터 구성요소 및 커스텀 하드웨어 구성요소의 임의의 조합에 의해 수행될 수 있다. It is understood that the above-described methods and apparatus illustrated in the figures may be constructed or implemented with machine-executable instructions, e.g., software or hardware, or a combination of both. The machine-executable instructions may be used to cause a general-purpose computer operating on the instructions, a special-purpose processor such as a DPS, or an array processor, to perform the functions described herein. Alternatively, the operations may be performed by special hardware components that may have hardwired logic or firmware instructions to perform the described operations, or by any of the programmed computer components and custom hardware components that may include analog circuitry Can be performed by a combination.

상기 방법들은 적어도 부분적으로 컴퓨터(또는 기타 전자 디바이스)를 프로그램하여 상기 방법들을 수행하도록 이용될 수 있는 저장된 명령어를 갖는 비휘발성 기계판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본 설명을 위해, "기계판독가능 매체"라는 용어는 컴퓨팅 장치 또는 특수용 하드웨어에 의한 실행을 위해 데이터 또는 명령어 시퀀스를 저장 또는 인코딩할 수 있고 기계 또는 특수용 하드웨어가 본 발명의 방법들 또는 기능들 중 어느 하나를 수행할 수 있는 임의의 매체를 포함하는 것으로 해석되어야 한다. 따라서, "기계판독가능 매체"라는 용어는 고체상태 메모리, 광학 및 자기 디스크, 자기 메모리, 및 광학 메모리 뿐만 아니라 이런 목적을 위해 개발될 수 있는 임의의 등가 디바이스를 포함하나 이에 국한되지 않는 것으로 해석되어야 한다.The methods may be provided as a computer program product that may include, at least in part, a non-volatile machine-readable medium having stored thereon instructions that can be used to program a computer (or other electronic device) to perform the methods. For the purposes of this description, the term "machine-readable medium" may refer to any device capable of storing or encoding a data or instruction sequence for execution by a computing device or special purpose hardware, But should be construed as including any medium capable of performing one. Thus, the term "machine-readable medium" should be interpreted to include, but is not limited to, solid state memories, optical and magnetic disks, magnetic memories, and optical memories as well as any equivalent devices that may be developed for this purpose do.

예컨대, 제한이 아니라, 기계판독가능 매체는 ROM, 모든 타입의 RAM(가령, S-RAM, D-RAM, P-RAM), PROM, EPROM, 자기랜덤 접속메모리, 자기디스크 저장매체, NAND 또는 NOR 구성될 수 있는 플래시 메모리, 메모리 저항기, 또는 전기, 광학, 음향 데이터 저장매체 등을 포함할 수 있다. DRAM과 같은 휘발성 메모리 디바이스는 휘발성 메모리 디바이스가 전원을 갖는 시스템의 일부인 경우 컴퓨터 프로그램 제품을 정하는데 사용될 수 있고, 전원 또는 배터리는 컴퓨터 프로그램 제품이 휘발성 메모리 디바이스에 저장되는 시간주기 동안 회로에 회로에 전력을 제공한다.For example, and not by way of limitation, the machine-readable medium may comprise read only memory (ROM), any type of RAM (e.g., S-RAM, D-RAM, P-RAM), PROM, EPROM, magnetic random access memory, magnetic disk storage media, A flash memory, a memory resistor, or an electrical, optical, acoustic data storage medium, etc., which may be configured. A volatile memory device, such as a DRAM, may be used to determine a computer program product if the volatile memory device is part of a system having a power source, and the power source or battery is configured to power the circuit for a period of time during which the computer program product is stored in the volatile memory device. .

종종 데이터는 데이터 구조로서 논리 어레이의 형태로 관리된다. 그러나, 동일한 논리 어레이는 동일한 구성, 또는 다른 구성을 갖는 물리적 메모리 어레이와 관련될 수 있다. 마치 논리 데이터 구조와 물리적 기기 간에 직접적으로 일치되는 것으로 본 명세서에서 많은 예들의 동작이 설명되나, 이는 실제 배열일 수 없고, 데이터를 메모리 위치에 할당하는 것은 메모리 시스템의 구조, 배드(가령, 고장 또는 손실(missing)) 메모리 위치, 마모 평준화(wear-leveling) 고려 등에 의해 지배될 수 있다. 이와 같이 물리적 위치에 데이터의 할당은 PCMCIA 플래시 변환계층(Flash Translation Layer, FTL) 또는 Linux Journaling FLASH File System version 2(JFFS2), Aleph One Yet Another FLASH File System(YAFFS), 또는 Sun ZFS(Sun Microsystems)과 같은 인식 저장장치 파일 시스템과 같은 파일 시스템, 및 당업자에 알려진 기타 파일 시스템에 의해 수행될 수 있거나, 유사 또는 등가 기능을 수행하도록 개발될 수 있다. Often, data is managed in the form of logical arrays as data structures. However, the same logical array may be associated with a physical memory array having the same or different configurations. The operation of many examples is described herein as if it is a direct match between the logical data structure and the physical device, but it can not be an actual arrangement, and assigning data to a memory location may be used to determine the structure of the memory system, Missing memory locations, wear-leveling considerations, and the like. This allocation of data to physical locations can be accomplished using a PCMCIA Flash Translation Layer (FTL) or Linux Journaling FLASH File System version 2 (JFFS2), Aleph One Yet Another FLASH File System (YAFFS), or Sun ZFS (Sun Microsystems) , And other file systems known to those skilled in the art, or may be developed to perform similar or equivalent functions.

본 명세서에 기술된 실시예들의 해석시 논리적 및 물리적 어드레스 간의 관계가 가정될 수 있다. 논의를 위해 한 또는 다른 것의 선택은 편의의 문제이며 특별히 언급하지 않는 한 국한되지 않는다. 이와 같이, RAID-구성 메모리의 데이터 스트라이프들은 메모리 시스템에서 실제 메모리 위치들 중 어느 하나로 맵핑될 수 있다. 따라서, 소거, 쓰기 및 읽기 동작 타이밍에 대한 제한들은 이런 스트라이프가 메모리 시스템에 위치되어 있을 때마다 한 스트라이프내 데이터에 대해 해석되어야 한다. 즉, 메모리 모듈, 메모리 위치, 데이터 블록 등의 용어들은 일반적으로 상호교환가능하게 유효하게 사용될 수 있다. 메모리 소자를 상호연결하는 구조 또는 방법은 본 명세서에 의해 제한되는 것으로 의도되어 있지 않다. 더욱이, 물리적 메모리는 예로서 복수의 모듈들, 싱글 모듈, 또는 싱글 기판으로 구현될 수 있다. The relationship between logical and physical addresses in the interpretation of the embodiments described herein can be assumed. The choice of one or the other for discussion is a matter of convenience and is not limited unless specifically stated. As such, the data stripes of the RAID-configuration memory may be mapped to any of the actual memory locations in the memory system. Thus, the constraints on erase, write and read operation timing must be interpreted for data in one stripe whenever such a stripe is located in the memory system. That is, the terms memory module, memory location, data block, and the like can generally be used interchangeably and effectively. The structure or method of interconnecting memory elements is not intended to be limited by the present disclosure. Moreover, the physical memory may be implemented as a plurality of modules, a single module, or a single substrate, for example.

게다가, 해당기술분야에서 통상적으로 소프트웨어는 일형태 또는 다른 형태(가령, 프로그램, 절차, 프로세스, 애플리케이션, 모듈, 알고리즘 또는 로직)로 동작을 하거나 결과를 일으키는 것이라 한다. 이런 표현들은 당업자에게 잘 알려진 바와 같이 단지 컴퓨터 또는 등가의 디바이스에 의한 소프트웨어의 명령어 실행으로 컴퓨터 또는 등가의 디바이스의 프로세서가 동작을 수행하거나 결과를 발생하게 하는 것을 말하는 편리한 방법이다.Further, in the art, software is typically said to operate or produce results in one form or another (e.g., a program, procedure, process, application, module, algorithm or logic). These expressions are a convenient way of telling a processor of a computer or equivalent device to perform an operation or to produce an outcome by simply executing the instructions of the software by a computer or equivalent device, as is well known to those skilled in the art.

특별한 예를 설명할 경우, 상기 예는 특별한 특징, 구조, 또는 특성을 포함할 수 있으나, 모든 예는 특별한 특징, 구조, 또는 특성을 반드시 포함할 필요는 없다. 이는 그 조합이 명시적으로 배제될 때를 제외하고는 2 이상의 예들의 특징, 구조, 또는 특성이 조합되지 않아야 하거나 조합될 수 없는 제안 또는 뜻으로 해석되지 않아야 한다. 특별한 특징, 구조, 또는 특성이 예와 연계하여 기술될 경우, 명시적으로 기술되었든 아니든 간에, 당업자는 다른 예들과 연계해 이런 특징, 구조, 또는 특성을 실행할 수 있다.In describing a particular example, the example may include a particular feature, structure, or characteristic, but not necessarily all examples should include a particular feature, structure, or characteristic. This should not be construed as an offer or intention that the features, structures, or characteristics of the two or more examples should not be combined or combined, except when the combination is expressly excluded. Where a particular feature, structure, or characteristic is described in connection with the example, those skilled in the art, whether expressly described or not, may implement such feature, structure, or characteristic in conjunction with other examples.

메모리 어레이는 디스크 드라이브와는 다른 메모리 소자들로 구성될 수 있다. 예컨대, 메모리 어레이는 휘발성 또는 비휘발성 메모리 디바이스들일 수 있는 복수의 플래시 메모리 모듈들 또는 다른 반도체 메모리 디바이스들로 형성될 수 있다. 본 명세서에서, 메모리 시스템의 메모리 디바이스로서 플래시 메모리 회로를 이용한 예들이 제공되어 있으나, 상술한 바와 같거나 또는 하기에서 메모리 시스템의 설계 또는 구성에 있어 단독으로 또는 조합으로 동일하거나 유사한 기능을 위해 개발될 수 있는 그런 지속성 또는 비지속성 메모리의 임의의 형태의 사용을 배제하도록 의도하는 것은 아니다. The memory array may be comprised of memory elements different from the disk drives. For example, the memory array may be formed of a plurality of flash memory modules or other semiconductor memory devices, which may be volatile or non-volatile memory devices. In the present specification, examples using flash memory circuits as memory devices of a memory system are provided, but they may be developed for the same or similar functions, either alone or in combination in the design or configuration of a memory system as described above or below But is not intended to exclude the use of any form of such persistence or non-persistent memory.

제 1 예로, 다른 RAID 구조 등이 배제되는 것을 암시하지 않는 RAID 4 구조가 사용된다. 실제로, RAID 수(3, 5, 6 등)는 스토리지 시스템을 기술하는 유용한 간단한 방법이나 이들은 이런 시스템에 대해 정확하지도 구별되는 설명도 아니다. 단지 2개의 스토리지 성분을 갖는 RAID 4 시스템은 또한 RAID 1 시스템이라 할 수 있다. 공통 접속크기가 풀 스트립인 RAID 4 시스템은 RAID 3 시스템이라 할 수 있다. RAID 3 시스템은 RAID 5 시스템의 회전 패리티를 이용하는 것으로부터 배제하지 않는다. 추가로 임의의 RAID 시스템은 RAID 번호와 일치하지 않는 패리티 또는 델타 로깅(delta logging)과 같은 추가적 속성들을 가질 수 있다. RAID 6와 같은 다른 것들은 패리티 중 한 비트 이상이 사용될 수 있음을 나타내나 가능한 많은 다수의 패리티 실행들이 의도된 것을 나타내지 않는다. 따라서, 본 명세서에서 RAID 수비학(numerology)의 이용은 순전히 예시적이며 설명된 기술들의 적용력에 제한을 나타내는 것으로 해석되지 않아야 함을 알아야 한다. RAID 구조의 선택은 코스트, 신뢰도, 읽기 또는 쓰기 지연, 전력소비, 데이터 복구속도 등과 같은 기준을 기초로 한 공학적 경제적 판단이다. 당업자는 사용자 요청 또는 하우스키핑 동작에 대한 응답에 따라 (데이터 소거를 포함한) 데이터 읽기 또는 데이터 쓰기의 동작들 중 하나 이상에서 RAID 시스템의 성능을 향상시키기 위해 이 예에 나타난 시스템 및 방법이 채택될 수 있음을 알 것이다. As a first example, a RAID 4 structure that does not imply that other RAID structures are excluded is used. Indeed, the number of RAIDs (3, 5, 6, etc.) is a useful simple way of describing a storage system, but they are neither precise nor distinguishable for such systems. A RAID 4 system with only two storage components is also a RAID 1 system. A RAID 4 system with a common stripe size is a RAID 3 system. A RAID 3 system does not exclude the use of rotational parity of a RAID 5 system. In addition, any RAID system may have additional attributes such as parity or delta logging that do not match the RAID number. Others, such as RAID 6, indicate that more than one bit of parity can be used, but do not indicate as many as many parity executions are intended. Thus, it should be appreciated that the use of RAID numerology herein is purely exemplary and should not be construed as limiting the applicability of the described techniques. The choice of RAID structure is an engineering and economic judgment based on criteria such as cost, reliability, read or write latency, power consumption, and data recovery rate. Those skilled in the art will appreciate that the systems and methods shown in this example may be employed to improve the performance of a RAID system in one or more of the following operations (including erasing data) or data writing operations in response to a user request or housekeeping operation .

플래시 메모리는 수명이 유한하다. 플래시 메모리의 고장은 잠재적이거나, 시간 경과에 의해 발현되고 대표적인 전자구성부품 및 마모 메카니즘이 고려되는 구성에 있어 결함과 관련된 종래 고장모드로 광범위하게 나누어질 수 있다. 일반적으로, 특정 기술에 따라, 읽기 또는 쓰기가 마모 메카니즘일 수 있으나, 마모 메카니즘은 플래시 메모리 모듈이 소거공작을 위해 접속되는 회수와 연관있다. 전자적 고장 메카니즘이나, 자동차가 운행된 마일 수로 인해 알려져 있듯이 이를 더 대표적인 기계적 고장 메카니즘으로 간주할 수 있다. 양 메카니즘들은 시스템 설계시에 고려될 필요가 있을 수 있고, 시스템 동작의 하드웨어 또는 소프트웨어 관리에 의해 특정 메모리 위치의 남용이 방지될 필요가 있을 수 있다. Flash memory has a finite lifetime. Failure of the flash memory can be broadly divided into conventional failure modes associated with defects in configurations that are potentially or over time manifested and representative electronic components and wear mechanisms are considered. In general, depending on the particular technique, the read or write may be a wear mechanism, but the wear mechanism is associated with the number of times the flash memory module is connected for erase operations. As is known for electronic failure mechanisms and the number of miles the vehicle is driven, this can be considered as a more representative mechanical failure mechanism. Both mechanisms may need to be considered in system design, and the abuse of a particular memory location may need to be prevented by hardware or software management of system operations.

플래시 메모리가 사용될 경우, 마모시 고장 메카니즘은 데이터 어레이에서 단일비트 오류일 수 있다. 이런 단일비트 오류는 특정 메모리 모듈에서 데이터 세트와 관련된 오류정정코드(ECC)에 의해 검출 및 보정될 수 있다. 그런 후 보정된 데이터는 메모리 컨트롤러로 전송되어 다른 스트라이프들로부터 읽어진 데이터와 결합되어 요청된 데이터 세트(A)를 이룬다. 저장된 데이터 서브세트(A1,A2,A3)로부터 검색된 데이터는 전혀 오류를 갖지 않거나 오류들은 ECC에 의해 보정되었기 때문에, 데이터 세트(Ap)로부터 데이터가 중복된다. 데이터 세트(A1,A2,A3) 중 하나가 가령 메모리 모듈 고장로 인해 검출되지만 정정할 수 없는 오류를 가질 때에만, 데이터 세트(Ap)는 데이터 세트(A)의 데이터를 보정할 필요가 있다. 이런 멀티비트 오류들은, 가령 메모리 모듈 자체가 고장날 경우 및 나머지 3개의 데이터 세트(데이터 세트(A1,A2,A3,Ap) 중 다른 3개)를 이용해 데이터 세트(A)의 데이터가 재구성될 필요가 있을 경우에 발생할 것이다. 설계를 위해, 이런 오류타입의 발생은 단일 메모리 모듈 또는 디스크의 간의 전자 평균고장시간(MTBF)에 의해 특징되는 것으로 간주될 수 있다. 일반적으로, 스트라이프(A1,A2,A3)에 있는 데이터만 이용되고 패리티 스트라이프(Ap)는 고장이 발생할 때 데이터의 재구성을 위해서만 검색되고 사용된다. When a flash memory is used, the wear-time failure mechanism may be a single bit error in the data array. This single bit error can be detected and corrected by an error correction code (ECC) associated with the data set in a particular memory module. The calibrated data is then transmitted to the memory controller and combined with the data read from the other stripes to form the requested data set (A). The data retrieved from the stored data subset (A1, A2, A3) has no errors or the errors are corrected by the ECC, thus duplicating data from the data set Ap. The data set Ap needs to correct the data of the data set A only when one of the data sets A1, A2, A3 is detected, for example, due to a memory module failure, but has an uncorrectable error. These multi-bit errors need to be reconfigured if, for example, the memory module itself fails and the data of the data set A is reconstructed using the remaining three data sets (the other three of the data sets A1, A2, A3, Ap) Will occur. For the sake of design, the occurrence of this type of error can be regarded as being characterized by an electronic mean time between failure (MTBF) between a single memory module or disk. In general, only data in stripes A1, A2, A3 are used and parity stripes Ap are retrieved and used only for data reconstruction when a failure occurs.

일태양으로, 플래시 메모리 시스템에서, 메모리 모듈에 저장된 데이터에서 단일비트 오류가 보고된 경우, 플래시 메모리 모듈은 신뢰될 수 없는 것으로 간주될 수 있고, 메모리 컨트롤러는 메모리 모듈과 같은 이런 시간이 대체될 때까지 사용불가한 것으로 메모리 모듈의 위치를 "마크" 또는 기록할 수 있다. 대안으로, 단일비트 또는 멀티비트 오류들의 정해진 개수는 메모리 모듈 또는 메모리 회로가 사용불가인 것으로 간주되기 전에 축적하게 허용될 수 있고 수리 동작이 행해질 수 있다.In one aspect, in a flash memory system, when a single bit error is reported in data stored in a memory module, the flash memory module may be considered unreliable, and the memory controller may be configured such that, Quot; mark " or the position of the memory module can be recorded. Alternatively, a predetermined number of single-bit or multi-bit errors may be allowed to accumulate before a memory module or memory circuit is deemed unavailable and a repair operation may be performed.

일부 플래시 메모리 기술들의 특징들은 데이터의 작은 크기의 블록들의 쓰기 및 읽기를 약간 비실행적이게 할 수 있고, 쓰기 실행될 블록의 크기가 메모리 시스템이 쓰기 또는 소거할 수 있는 최소 블록크기보다 더 작을 수 있는 상황이 발생할 수 있다. 예컨대, 소프트웨어 시스템은 512 바이트의 블록 크기들로 파일들을 분할할 수 있다; 그러나, 메모리 시스템에 대한 최소 실제 소거크기는 128K 바이트이다. Some of the features of some flash memory technologies may make the writing and reading of small blocks of data somewhat impractical, and the size of the block to be written may be smaller than the minimum block size that the memory system can write or erase Can occur. For example, a software system may split files into block sizes of 512 bytes; However, the minimum actual erase size for the memory system is 128 Kbytes.

4개의 512 바이트 데이터 요소들은 2K 바이트 페이지를 함께 구성하도록 간주될 수 있다. 디스크 구조에 대한 유추를 이용해 플래시 메모리를 참조하면, 회전 매체가 전혀 포함되지 않더라도 이런 연속 메모리 위치들의 그룹을 "섹터"라 할 수 있다. 일반적으로 임의의 타입의 데이터를 말할 때 "블록"이라는 용어는 바이트 또는 임의의 다른 단위로 특정 크기를 의미하도록 의도된 것이 아니라, 특정 설명과 관련될 수 있는 데이터 그룹을 말하는데 사용된다. The four 512 byte data elements may be considered to constitute a 2K byte page together. Referring to the flash memory using an analogy to the disk structure, such a group of contiguous memory locations may be referred to as a "sector" even though no rotating medium is included at all. In general, the term "block" when referring to any type of data is used to refer to a group of data that may be associated with a particular description, rather than intended to mean a particular size in bytes or any other unit.

RAID 4 시스템이 사용될 경우, 512 바이트를 포함한 2K 데이터 페이지의 섹터는 4 메모리 모듈에 걸쳐 스트라이프될 수 있는 한편, 제 5 메모리 모듈은 패리티 데이터용으로 사용된다. 이 예에서, 512 바이트 섹터 크기, 페이지 및 패리티 데이터의 국면을 저장하기 위한 5 메모리 모듈의 사용, 및 각 메모리 모듈에 대한 128K 바이트의 최소 소거 크기가 가정되나, 이는 이들 파라미터들은 단지 예이며 시스템 또는 방법의 임의의 특별한 제한을 의미하는 것이 아님을 알아야 한다. When a RAID 4 system is used, a sector of a 2K data page containing 512 bytes may be striped across four memory modules while a fifth memory module is used for parity data. In this example, it is assumed that a 512-byte sector size, the use of 5 memory modules to store aspects of page and parity data, and a minimum erase size of 128K bytes for each memory module, It should be understood that this does not imply any particular limitation of the method.

도 2는 복수의 메모리 모듈을 포함한 메모리 시스템을 도시한 것으로, 메모리 모듈은 버스를 통해 메모리 컨트롤러에 연결된다. 각 버스는 직렬버스 구성으로 연결된 복수의 메모리 모듈들을 가지며, 도 1의 디스크 어레이의 디스크의 구성에 상당하는 것으로 간주될 수 있는 구성을 갖는다. 메모리 모듈의 물리적 배열을 나타내는 것 외에, 이 배열은 다른 물리적 구성을 갖는 메모리 모듈들에 대해 논리 어드레스 공간으로 간주될 수 있다. 2 illustrates a memory system including a plurality of memory modules, wherein the memory modules are connected to the memory controller via a bus. Each bus has a plurality of memory modules connected in a serial bus configuration and has a configuration which can be regarded as equivalent to the configuration of the disk of the disk array of Fig. In addition to representing the physical arrangement of memory modules, this arrangement may be regarded as a logical address space for memory modules having different physical configurations.

도 3은 데이터 어레이(A)에 해당하는 메모리 위치들의 구성을 도시한 것으로, 데이터 어레이 크기는 메모리 디바이스에 작성될 수 있는 섹터 크기의 배인 것으로 고려될 수 있다. 각각의 메모리 모듈은 512 바이트 크기의 복수의 메모리 섹터들로 구성되고 Amn 설계된 128K 바이트의 소거 블록크기를 가지며, m은 메모리 모듈이 위치된 메모리 버스이고 n은 각 메모리 모듈 쓰기 블록에 512 바이트 섹터들과 연결된 개개의 메모리 위치를 나타낸다. 이 예에서, 메모리 모듈의 각 128K바이트 소거블록에 있는 512 바이트의 256개 섹터들이 있다. 메모리 모듈은 다수의 소거 블록들을 구비할 수 있다. Fig. 3 shows the configuration of the memory locations corresponding to the data array A, wherein the data array size can be considered to be a multiple of the sector size that can be created in the memory device. Each memory module is composed of a plurality of 512-byte memory sectors and has an Amn-designed erase block size of 128 Kbytes, where m is a memory bus where the memory module is located and n is a 512-byte sector ≪ / RTI > In this example, there are 256 sectors of 512 bytes in each 128K byte erase block of the memory module. The memory module may comprise a plurality of erase blocks.

따라서, 512 바이트 데이터 블록은 A11,A21,A31,A41 섹터들에 쓰여질 수 있고 패리티 섹터(Ap)는 데이터 어레이(A1,A2,A3, 및 A4)에 배타적 OR을 계산함으로써 업데이트될 수 있다. 섹터(A11,A21,A31,A41)에 데이터를 쓸 때, 예컨대, 메모리 모듈(0)의 섹터(A12-A1n)에 포함된 데이터도 또한 쓰여질 수 있다. 이는 어레이(A1)에서 데이터가 섹터(A11)에 변경된 또는 새 데이터를 기록하기 전에 소거될 필요가 있을 수 있다. 이 동작의 예는 데이터 어레이(A1)를 비지속성 메모리 디바이스에서 읽고, 메모리 모듈(0)에 있는 데이터 어레이(A1)과 관련된 메모리를 소거하며, 메모리 모듈(0)에 있는 데이터 어레이(A1)의 섹터(A11)에 있는 데이터를 변경하고, 그런 후 비지속성 메모리로부터 메모리 모듈(0)로 어레이(A1)의 데이터를 쓰는 것을 포함할 수 있다. 이는 플래시 메모리에 저장된 데이터를 변경하는 과정에서 수행될 수 있는 동작의 예를 나타낸다. 플래시 메모리 시스템의 하우스키핑 동작들은 본 명세서에 설명하지 않을 것이다. 이런 하우스키핑 동작은 메모리 위치("가비지 컬렉션"), 오류검출 및 보정 등을 재생하기 위해 배드 블록들에 대한 검사, 마모 평준화, 데이터 합병을 포함할 수 있다. 이런 동작은 오버헤드로서 간주될 수 있고 쓰기 또는 읽기를 위한 용량 또는 시스템 대역폭이 줄어들고 또한 지연시간을 늘린다. 본 명세서의 예에서 플래시 메모리의 동작은 매크로스코픽 레벨로 기술되어 있고, 사용자에 실질적으로 투명한 임의의 내부 동작은 다른 설명 없이 발생되는 것으로 추정된다. 그러나, 메모리의 읽기 또는 쓰기 동작의 제한이 주장될 경우, 하우스키핑 동작은 일반적으로 외부 읽기 또는 쓰기에 대한 제한에 따를 수 있으나, 필요하다면, 이들이 허용된 시간간격 동안 실행에 우선순위가 주어질 수 있다. 외부 명령을 달성할 필요가 있을 수 있는 "읽기" 또는 "쓰기"와 같은 내부 동작들은 이런 동작들이 읽기 및 쓰기 내부동작들의 결합일 수 있으나 읽기 및 쓰기에 할당된 주기동안 수행될 수 있다. 이는 임의의 시간에 수행된 하우스키핑 동작을 배제하는 것으로 해석되지 않아야 하며, 바람직하기로 하우스키핑 동작은 사용자의 요건을 달성하도록 중단될 수 있다. 일태양으로, 데이터를 읽는 것을 필요로 하는 하우스키핑 동작은 외부 읽기동작이 일시적으로 억제된 메모리 회로상에 수행될 수 있다. Thus, a 512-byte data block can be written to the sectors A11, A21, A31, A41 and the parity sector Ap can be updated by calculating the exclusive OR in the data arrays A1, A2, A3, and A4. When data is written to the sectors A11, A21, A31 and A41, for example, data included in the sectors A12-A1n of the memory module 0 may also be written. This may require that the data in array Al change to sector A11 or be erased before writing new data. An example of this operation is to read the data array A1 in the non-persistent memory device, to erase the memory associated with the data array A1 in the memory module 0, and to delete the data array A1 in the memory module 0 Writing data in array A1 to memory module 0 from non-persistent memory, and then modifying the data in sector A11. This shows an example of an operation that can be performed in the process of changing data stored in the flash memory. Housekeeping operations of the flash memory system will not be described herein. Such housekeeping operations may include checking for bad blocks, wear leveling, data merging to regenerate memory locations ("garbage collection"), error detection and correction, This behavior can be viewed as overhead, reducing the capacity or system bandwidth for writing or reading and also increasing latency. In the examples herein, the operation of the flash memory is described at the macroscopic level, and any internal operation that is substantially transparent to the user is presumed to occur without any further explanation. However, if a limitation of the read or write operation of the memory is claimed, the housekeeping operation may generally be subject to restrictions on external reads or writes, but if necessary, execution may be given priority over the allowed time intervals . Internal operations such as "read" or "write" that may need to accomplish an external command may be performed during a period assigned to read and write, although these operations may be a combination of read and write internal operations. This should not be construed as excluding housekeeping operations performed at any time, and preferably housekeeping operations may be stopped to achieve the user's requirements. In one aspect, a housekeeping operation that requires reading data may be performed on a memory circuit in which external read operations are temporarily suppressed.

현재 이용가능한 단일레벨셀(SLC) NAND 플래시 메모리 구성부품들을 이용한 일예로, 플래시 메모리와 내부 데이터 레지스터 간에 2K 바이트의 플래시 칩내로 데이터 이전은 읽기 동작을 위해 약 25㎲가 걸릴 수 있다. 내부 레지스터로부터 플래시를 제어하는 디바이스로 512 바이트의 전송은 메모리 모듈상의 컨트롤러에 의해 플래시 칩에 접속하는데 이용된 버스 상에 25MB/s의 속도로 약 20㎲가 걸릴 수 있고, 총 약 45㎲ 시간이 걸린다. 그러나, 새 데이터가 쓰여질 수 있도록 플래시의 128KB 소거 블록의 소거를 수행하는 시간은 약 1msec 에서 약 2msec까지 걸릴 수 있고, 이는 읽기 동작을 수행하는 시간의 약 20 내지 40배이다. 플래시의 프로그램(쓰기) 동작을 수행하는 것은 버스의 데이터의 512 바이트를 플래시 칩의 내부 레지스터로 전송하는데 약 20㎲ 및 플래시 메모리의 섹터로 데이터를 프로그램하는데 약 200㎲에서 약 700㎲가 걸릴 수 있으며, 이는 읽기 동작을 수행하는데 걸리는 시간의 약 5 내지 15배이다. 128K 블록을 소거하고 128K 블록을 프로그래밍하는데 약 13㎳에서 약 42㎳, 또는 읽기 동작을 수행하는 시간의 약 200에서 800배까지 걸릴 수 있다. 메모리 모듈이 소거 또는 프로그래밍(쓰기) 동작에 관여되는 시간 주기동안, 메모리 모듈은 다른 섹터들(A12 내지 A1n) 중 어느 하나를 읽는 것과 같이 다른 기능들을 수행할 수 없다. 읽도록 요망된 데이터가 소거 또는 프로그램되는 모듈의 동일한 디바이스에 있다. 그래서, 시간주기 동안, 동일한 메모리 어레이 블록(A1)에 또한 저장된 무관한 데이터일 수 있는 읽기 동작들은 쓰기(프로그램) 동작 또는 소거 동작이 읽기 요청이 수신될 때 진행 중에 있을 경우 배제(억제)될 수 있다. 많은 데이터베이스 시스템들에서, 지연이라고 할 수 있는 그러한 딜레이(delay)는 바람직하지 못하고 허용될 수 없다. 시간 딜레이는 디스크 스토리지 매체에 조우된 시간 딜레이에 비교될 수 있다. In one example using currently available single level cell (SLC) NAND flash memory components, data transfer into a 2K byte flash chip between the flash memory and an internal data register may take approximately 25 microseconds for a read operation. The transfer of 512 bytes from the internal register to the device controlling the flash can take about 20 μs at a rate of 25 MB / s on the bus used to connect to the flash chip by the controller on the memory module, It takes. However, the time to perform the erasure of the 128 KB erase block of flash to allow new data to be written can take from about 1 msec to about 2 msec, which is about 20 to 40 times the time to perform the read operation. Performing the program (write) operation of the flash may take about 20 μs to transfer 512 bytes of data on the bus to the internal registers of the flash chip and about 700 μs to about 200 μs to program the data into sectors of the flash memory , Which is about 5 to 15 times the time it takes to perform the read operation. It may take from about 13 ms to about 42 ms to erase the 128K block and to program the 128K block, or about 200 to 800 times the time to perform the read operation. During a period of time in which the memory module is involved in an erase or programming (write) operation, the memory module can not perform other functions, such as reading any of the other sectors A12 through A1n. The data desired to be read is in the same device of the erased or programmed module. Thus, during a time period, read operations, which may be irrelevant data stored in the same memory array block A1, may be excluded (inhibited) when a write (program) operation or an erase operation is in progress when a read request is received have. In many database systems, such delays as delays are undesirable and unacceptable. The time delay can be compared to the time delay encountered on the disk storage medium.

SLC에 대한 예는 다양한 명령들의 실행을 위한 특정 시간 주기를 이용한다. 이들은 현재 일반적인 생산 디바이스들이고 개발 목적에 따라 앞으로 더 빠르거나 더 느리게 진화할 것으로 예상된다. 예컨대, 멀티레벨셀(MLC) 플래시 기술은 일반적으로 더 큰 공간 메모리 밀도를 제공하면서 명령을 실행하는데 더 긴 시간 주기를 갖는다. The example for SLC uses a specific time period for execution of various instructions. These are now common production devices and are expected to evolve faster or slower depending on development goals. For example, multi-level cell (MLC) flash technology generally has a longer time period for executing instructions while providing a larger spatial memory density.

데이터 섹터에 대한 읽기 동작시간 및 쓰기 동작시간 간의 비대칭이 데이터의 읽기보다는 데이터의 쓰기에 더 빨라지도록 의도된 상황에서, 4 메모리 모듈 및 패리티 모듈에 걸쳐 스트립된 2K 바이트의 블록을 쓰는 동작으로 10K에서 30K까지의 데이터가 쓰기동작 주기동안 읽혀질 수 있는 읽기 동작이 봉쇄될 수 있다. 마찬가지로, 소거 동작은 데이터의 약 80K에서 160K의 읽기 동작을 봉쇄할 수 있다. In the situation where the asymmetry between the read operation time and the write operation time for the data sector is intended to be faster for the data write than for the data read operation, the operation of writing the 2K byte block striped across the four memory modules and the parity module The read operation in which data up to 30K can be read during the write operation cycle may be blocked. Likewise, an erase operation can block a 160K read operation at about 80K of data.

이 상황은 데이터가 동시라기보다는 순차적으로 각각의 메모리 모듈(Al, A2, A3, A4 및 Ap)에서 512 바이트의 하나 이상의 섹터들에 쓰여지도록 메모리 컨트롤러 및 메모리 모듈의 동작에 의해 완화될 수 있다. 따라서, 어레이(A1)에 대한 쓰기 동작은 A2에 대한 쓰기 동작을 시작하기 전에 마쳐지게 허용되며, 유사하게, A2에 대한 쓰기 동작은 A3에 대한 쓰기 동작을 시작하기 전에 마쳐지게 허용된다. 이는 모듈(Ap)에 피리티의 계산 및 쓰기를 포함한 스트라이프(A)에서 모든 메모리 모듈이 마칠 때까지 계속된다. 데이터 어레이(Al, A2, A3, 및 Ap)를 포함한 모듈들 중 각각의 모듈이 쓰여지는 시간동안, 모듈과 관련된 특정 데이터 어레이는 읽어질 수 없다. 그러나, 이 예에서, 모듈(Al, A2, A3, A4 및 Ap)들 중 단 하나만이 임의의 한 시간에 쓰기 동작을 수행할 수 있다. This situation can be mitigated by the operation of the memory controller and memory module so that the data is written sequentially to one or more sectors of 512 bytes in each memory module (Al, A2, A3, A4 and Ap) rather than simultaneously. Thus, a write operation to array A1 is allowed to complete before beginning a write operation to A2, and similarly, a write operation to A2 is allowed to complete before beginning a write operation to A3. This continues until all memory modules are finished in the stripe (A), including calculation and writing of the parity to the module (Ap). During the time each module of the modules including the data arrays Al, A2, A3, and Ap is written, the particular data array associated with the module can not be read. However, in this example, only one of the modules Al, A2, A3, A4 and Ap can perform a write operation at any one time.

가령 모듈(Al1, A21, A31, A41 및 Ap)에 저장된 데이터의 512 바이트들에 대해 읽기 명령이 내려지면, 각각의 메모리 모듈들은 읽기 요청을 수신할 수 있다. 메모리 모듈들은 읽기 요청이 즉각적으로 처리되고 데이터가 메모리 컨트롤러로 복귀될 수 있는 상태에 있을 수 있다. 그러나, 쓰기(또는 소거) 명령이 메모리 모듈에 의해 처리될 때, 데이터는 메모리 모듈로부터 즉시 읽혀질 수 없고, 따라서 데이터 어레이(Al, A2, A3, A4 및 Ap)로부터 응답들 중 하나가 실질적으로 지연될 수 있다. 모듈(Ap)이 데이터 복구용으로만 사용될 경우의 상황에서, 모듈(Ap)은 메모리 고장이 없는 한 읽혀질 수 없다. 일반적인 메모리 관리 하드웨어 또는 소프트웨어는 모든 적절한 메모리 모듈(A1-A4)로부터 응답을 갖는 것이 예상되기 때문에, 외부 명령 또는 하우스키핑 동작 중 어느 하나로 인해 메모리 모듈들 중 하나 이상이 기록될 경우, 응답의 완료가 지연될 수 있다. For example, if a read command is issued for 512 bytes of data stored in modules Al1, A21, A31, A41, and Ap, each memory module may receive a read request. The memory modules may be in a state where the read request is immediately processed and the data can be returned to the memory controller. However, when the write (or erase) command is processed by the memory module, the data can not be read immediately from the memory module and thus one of the responses from the data arrays Al, A2, A3, A4 and Ap is substantially delayed . In the situation where the module Ap is used only for data recovery, the module Ap can not be read unless there is a memory failure. Since the general memory management hardware or software is expected to have a response from all appropriate memory modules A1-A4, if one or more of the memory modules are written due to either an external command or housekeeping operation, Can be delayed.

그러나, 데이터를 포함한 4개 메모리 모듈들과 패리티 데이터를 포함한 하나의 메모리 모듈이 있는 상황에서, 5개 모듈들 중 4개만 소정 데이터가 복구되도록 데이터를 반환할 필요가 있을 수 있다. 즉, 데이터 모듈들 중 하나가 고장날 수 있거나, 복구불가능 오류를 보고할 수 있거나, 쓰기 또는 소거 동작에 의해 차단될 수 있다. 예컨대, 데이터를 반환하지 않는 데이터 모듈이 A2이면, 나머지 데이터 모듈들은 Al, A3, A4 및 Ap일 수 있고, 이 경우 소정의 512 바이트가 검색될 수 있다. 모듈들(Al, A2, A3, 및 A4)중 하나로부터의 데이터를 상실한 경우, 패리티 데이터인 모듈(Ap)로부터 데이터가 손실 또는 지연응답 모듈의 데이터를 복구하는데 사용될 수 있다.However, in the situation where there are four memory modules including data and one memory module including parity data, it may be necessary to return data so that only four of the five modules can recover certain data. That is, one of the data modules may fail, report an unrecoverable error, or be interrupted by a write or erase operation. For example, if the data module that does not return the data is A2, the remaining data modules may be Al, A3, A4 and Ap, in which case a predetermined 512 bytes may be searched. If data from one of the modules Al, A2, A3, and A4 is lost, data from the module Ap that is parity data may be used to recover the data of the lost or delayed response module.

메모리 모듈(A1)에 저장된 데이터가 읽어지면, 예컨대, 데이터가 오류정정코드를 이용해 검증될 수 있으며, 상기 데이터(ECC1)가 데이터와 동일한 모듈에 저장될 수 있다. 읽기 데이터가 정정되면, 어떠한 동작도 취해질 필요가 없다. 오류가 검출되면, 오류가 정정될 수 있고, 검출되거 정정될 수 있는 오류의 개수는 사용된 특정 오류정정코드(ECC)의 특징이다. 메모리 컨트롤러로 복귀됨에 따라, 읽혀진 데이터는 정정되거나 ECC에 의해 정정되거나, ECC가 오류(들)를 검출할 수 있으나 오류를 정정할 수 없는 경우 오류가 있는 것으로 표시된다. When the data stored in the memory module A1 is read, for example, the data can be verified using an error correcting code, and the data ECC1 can be stored in the same module as the data. Once the read data is corrected, no action need be taken. If an error is detected, the error can be corrected and the number of errors that can be detected or corrected is a characteristic of the particular error correction code (ECC) used. As it is returned to the memory controller, the read data is corrected or corrected by the ECC, or if the ECC can detect the error (s) but can not correct the error, it is marked as erroneous.

일반적으로, 플래시 메모리 시스템에서, 마모현상으로 인해 단일 오류가 발생하거나 메모리 모듈은 메모리 컨트롤러에 의해 검출될 수 있는 타입의 오류들이 다수있는 대규모 하드웨어 고장을 갖는다. 메모리 모듈은 작동되지 않을 수 있다.Generally, in a flash memory system, a single fault is caused by a wear phenomenon, or a memory module has a large number of failures of a type that can be detected by the memory controller. The memory module may not be operated.

단일 오류가 보고되나, 오류가 ECC에 의해 검출되지 않는 상황에서, 오류의 발생은 온칩 메모리 관리를 포함한 메모리 컨트롤러 또는 플래시 메모리 시스템을 관리하는데 사용된 다른 하드웨어 또는 소프트웨어에 보고될 수 있으며, 메모리 모듈 또는 특정 칩 또는 데이터 블록은 결함이 있는 것으로 표시되거나 다른 정정가능한 오류들에 대해 모니터될 수 있다. 메모리 관리 알고리즘은 메모리 모듈 또는 칩이 더 이상 데이터 스토리지용으로 사용될 수 없음을 판단할 수 있다. 메모리 모듈 또는 칩에 현재 저장된 데이터가 결함으로서 표시되지 않은 또 다른 메모리 위치로 옮겨지게 된다.In the event that a single error is reported but an error is not detected by the ECC, the occurrence of the error may be reported to the memory controller, including on-chip memory management, or other hardware or software used to manage the flash memory system, A particular chip or data block may be marked as defective or may be monitored for other correctable errors. The memory management algorithm can determine that the memory module or chip can no longer be used for data storage. The data currently stored in the memory module or chip is moved to another memory location that is not marked as defective.

대안으로, 가령 대규모 하드웨어 고장로 인해 전체 메모리 모듈이 결함인 경우, 데이터 어레이(Al, A2, A3, 및 A4)로부터의 데이터가 없거나 오류가 있는 것으로 판단된다. Ap로부터의 데이터는 고장 모듈의 데이터를 재구성하는데 사용될 수 있고 재구성된 데이터는 결함이 표시되지 않은 모듈에 저장될 수 있다. 대안으로, Ap가 오류가 있으면, 데이터 어레이(Al, A2, A3, 및 A4)로부터의 데이터는 Ap를 재구성하는데 사용될 수 있다. 따라서, 대규모 하드웨어 고장이 발생할 때에도 데이터 무결성이 유지된다.Alternatively, if the entire memory module is defective due to, for example, a large hardware failure, it is determined that data from the data arrays Al, A2, A3, and A4 is missing or has an error. The data from Ap can be used to reconstruct the data of the fault module and the reconstructed data can be stored in the module where the fault is not indicated. Alternatively, if Ap is in error, the data from the data arrays Al, A2, A3, and A4 may be used to reconstruct Ap. Therefore, data integrity is maintained even when a large-scale hardware failure occurs.

데이터가 정정된 것으로 알려지거나 ECC에 의해 오류가 정정된 경우, 소정 데이터는 5개 메모리(Al, A2, A3, A4 및 Ap) 중 임의의 4개 어레이를 포함한 모듈로부터 데이터가 반환되었을 때 메모리 컨트롤러에 이용가능해질 수 있다. 예컨대, 메모리 모듈(Al, A2, A3, 및 A4)로부터 데이터가 수신될 수 있다. 그런 후, Ap를 포함한 모듈로부터의 데이터는 소정 데이터에서 데이터의 정확도를 판단할 필요가 없거나 오류를 정정할 필요가 있기 때문에 중복된다. 데이터 어레이(Al, A2, A3, 및 A4)를 갖는 모듈들 중 어느 하나가 데이터를 반환하지 않거나, 부정확한 것으로 알려진 데이터를 반환하거나 또는 데이터가 지연된 상황에서, 모듈(Ap)로부터 데이터는 Ap에서 패리티 데이터와 나머지 3개 데이터 어레이를 이용해 손실 데이터를 재구성하는데 사용될 수 있다. "데이터를 반환하지 않는"이란 용어가 사용되면, 기준은 가령 특정 시간주기내에서 데이터가 반환되지 않는 것일 수 있으며, 이는 일반적인 읽기 동작이 된다. 데이터를 복원하는데 더 길어진 시간은 간섭 쓰기 또는 소거 동작 또는 하드웨어 고장로 인한 것일 수 있다. "데이터를 반환하지 않는" 모듈로부터의 데이터는 나중에 반환되도록 허용되거나 소거된 모듈에 대한 읽기 동작일 수 있다. 여하튼, 합당한 시간 프레임내에 데이터를 반환하 못하는 모듈에 의해 데이터 스트라이프로부터 데이터를 검색하는 시간이 이에 따라 연장되지 않을 수 있다. If the data is known to have been corrected or the error has been corrected by the ECC, the predetermined data may be stored in the memory controller < RTI ID = 0.0 > ≪ / RTI > For example, data may be received from the memory modules Al, A2, A3, and A4. Then, the data from the module including Ap is redundant because it is not necessary to determine the accuracy of the data in the predetermined data or it is necessary to correct the error. In a situation where either one of the modules with data arrays Al, A2, A3 and A4 returns no data, returns data known to be incorrect, or the data is delayed, Can be used to reconstruct lost data using parity data and the remaining three data arrays. If the term "no data returned" is used, the criterion may be that no data is returned within a certain time period, for example, which is a general read operation. The longer time to recover the data may be due to an interference write or erase operation or a hardware failure. Data from the "no data returning" module may be allowed to be returned later or may be a read operation to an erased module. In any case, the time to retrieve data from a data stripe by a module that fails to return data within a reasonable time frame may not be extended accordingly.

따라서, 메모리 모듈의 배열에서, 메모리 모듈들 중 하나가 중복 데이터(가령, 패리티 데이터)에 사용되는 경우, 모든 메모리 모듈들이 요청된 데이터가 이용가능해지거나 데이터가 재구성되기 전에 유효한 데이터를 반환할 필요가 없다. 즉, 예컨대, 모듈(Al, A2, A3, 및 Ap)로부터 데이터가 읽어졌을 때 요청된 데이터가 이용가능해진다. A4로부터의 데이터가 필요없을 수 있다.Thus, in an array of memory modules, if one of the memory modules is used for redundant data (e.g., parity data), then all memory modules need to return valid data before the requested data becomes available or the data is reconstructed none. That is, for example, when the data is read from the modules Al, A2, A3, and Ap, the requested data becomes available. Data from A4 may not be needed.

A4로부터의 데이터가 이용가능하지 않거나 적시적으로 이용가능하지 않을 수 있는 이유는 데이터가 A4의 일부 섹터에 쓰여지고 있기 때문이며, 이는 쓰여진 블록으로부터의 데이터 읽기를 지연시킬 수 있거나 블록이 소거되며, 타 블록에 대한 읽기 동작은 메모리 디바이스의 접속 특징으로 인해 저지된다. 5개 메모리 모듈들 중 4개로부터의 데이터가 읽기 시간의 특징인 읽기 요청의 수신 후에 한번에 이용가능해진다. 부정확한 오류의 경우를 제외하고 쓰기 동작이 진행중이지 않고 5번째 모듈로부터의 데이터가 무시될 수 있다면, 5번째 모듈로부터의 데이터가 적시에 이용가능해질 수 있다. 데이터가 실질적으로 지연되면, 지연된 데이터는 중복 데이터이고, 메모리 컨트롤러에서 데이터의 루틴 처리시 무시될 수 있다.Data from A4 may not be available or may not be available in a timely manner because the data is being written to some sector of A4 which may delay reading data from the written block or erase the block, Is impeded by the connection feature of the memory device. Data from four of the five memory modules is made available at one time after receipt of a read request characteristic of the read time. Data from the fifth module can be made available in a timely manner if the data from the fifth module can be ignored without a write operation in progress, except in the case of an incorrect error. If the data is substantially delayed, the delayed data is redundant and can be ignored in routine processing of data in the memory controller.

적어도 하나의 모듈이 다른 4개의 모듈들에 저장된 스트라이프에 대한 패리티 데이터를 갖는 5개 모듈 구성의 일태양에 있어, 데이터를 즉시 읽을 수 있는 것으로 알려진 4개 메모리 모듈들(위치들)에만 읽기 명령이 내려질 수 있다. 제 5 읽기 명령은 생략될 수 있다. 그러나, 제 5 모듈로부터의 데이터가 통상적인 상황하에 사용되도록 되어 있지 않더라도 제 5 읽기 명령이 내려지는 상황들이 있다. 이런 명령은 명백히 취소될 수 있거나 타임-아웃 간격이 초과될 때 메모리 시스템에 있는 임의의 레벨에서 취소될 수 있다. 이런 계류중인 읽기 명령은 이전에 수신된 데이터에 오류가 있는 것으로 판단하는 것과 재구성에 사용된 제 5 데이터 블록에 대한 요청이 작용될 수 있는 시간 사이의 간격 동안 데이터가 소거되는 것을 방지할 수 있다. In one aspect of a five module configuration in which at least one module has parity data for the stripes stored in the other four modules, only four memory modules (locations) known to be able to read data immediately Can be lowered. The fifth read command may be omitted. However, there are situations where the fifth read command is issued even if the data from the fifth module is not to be used under normal circumstances. These commands can be explicitly canceled or canceled at any level in the memory system when the time-out interval is exceeded. This pending read command can prevent data from being erased during the interval between determining that the previously received data is erroneous and the time when the request for the fifth data block used for reconstruction can be effected.

일태양으로, 읽기 명령은 순차적 쓰기 또는 소거 구속조건들 또는 몇몇 다른 구속조건들로 인해 데이터를 즉시 읽을 수 있는 것으로 알려진 메모리 모듈에만 내려질 수 있다. 다른 읽기 명령은 생략될 수 있다. 그러나, 다른 모듈로부터의 데이터가 내려진 또 다른 읽기 명령 대신 통상적인 상황하에서 사용되도록 되어 있지 않을 수 있다면 보존 명령이 내려질 수 있는 상황들이 있다. 이런 명령은 명백히 취소될 수 있거나 타임-아웃 간격이 초과될 때 메모리 시스템내 임의의 레벨에서 취소될 수 있다. 이러한 계류중인 명령은 이전에 수신된 데이터에 오류가 있는 것으로 판단하는 것과 재구성에 사용될 수 있는 또 다른 데이터에 대한 요청이 작용될 수 있는 시간 사이의 간격 동안 데이터가 소거되는 것을 방지할 수 있다. 보존 명령은 많은 방법들 중 어느 하나에 의해 데이터의 소거 또는 손실을 방지하도록 이용될 수 있다. In one aspect, the read command may only be issued to a memory module known to be capable of immediately reading data due to sequential write or erase constraints or some other constraints. Other read commands may be omitted. However, there are situations in which data from other modules can be placed into a save order if they are not to be used under normal circumstances instead of another read command issued. Such an instruction can be explicitly canceled or canceled at any level in the memory system when the time-out interval is exceeded. This pending command can prevent data from being erased during the interval between determining that the previously received data is erroneous and the time at which the request for another data that can be used for reconstruction can be applied. The retention command may be used to prevent erasure or loss of data by any of a number of methods.

보존 명령의 대상인 어드레스에 연속적 쓰기를 명령하는 경우, 모듈은 새 데이터를 쓰기 전에 기존 데이터를 읽을 수 있다. 일태양으로, 모듈은 새 데이터를 새 위치에 쓰기 전에 구(舊) 데이터의 위치를 추적할 수 있으므로, 필요하다면 구 데이터를 읽을 능력을 보유한다. 보존 명령으로 보존 명령이 취소되거나 타임-아웃될 때까지 동일 어드레스에 연이은 쓰기 명령이 지연된다. 보존 명령에 의해 보호된 데이터를 검색하기 위해, 가장 최근에 쓰여진 어드레스 값에 반대되는 주어진 어드레스에 대한 구 보존 데이터를 검색하는데 특별한 읽기 명령이 사용될 수 있다. 단일 어드레스에 대한 다수의 두드러진 보존 명령들이 있을 수 있고 보존된 데이터 중 일부는 비휘발성 스토리지에 아직 보내지지 않은 휘발성 메모리에 저장될 수 있는 어드레스로의 연이은 일련의 읽기 및 쓰기가 가능하다.When a continuous write is commanded to an address that is the target of the save command, the module can read the existing data before writing new data. In one aspect, the module can track the location of the old data before writing the new data to the new location, thus having the ability to read the old data if necessary. The write command is delayed at the same address until the retention command is canceled or time-out by the retention command. To retrieve data protected by a save command, a special read command may be used to retrieve the old save data for a given address, as opposed to the most recently written address value. There may be a number of prominent retention commands for a single address and some of the preserved data may be read and written to consecutive series of writes to an address that may be stored in volatile memory that has not yet been sent to non-volatile storage.

그러므로, 예컨대, 5개 메모리 모듈 중 4개의 데이터 읽기는 읽어진 5개 메모리 모듈 중 4개에 쓰기 동작에 의해 손상되지 않기 때문에, 스트라이프에서 5개 메모리 모듈 중 임의의 4개로부터의 데이터가 낮은 지연시간으로 스트라이프에 저장된 데이터를 읽는데 사용될 수 있다. Thus, for example, since the reading of four of the five memory modules is not corrupted by the write operation to four of the five memory modules read, the data from any four of the five memory modules in the stripe has a low delay Can be used to read the data stored in the stripe in time.

읽기 및 쓰기 시간이 비대칭이고 쓰기 시간이 실질적으로 읽기 시간보다 더 긴 메모리 시스템에서 메모리를 관리하는 공정은 복수의 메모리 모듈에 데이터를 쓰는 것을 포함할 수 있고, 메모리 모듈은 논리적으로 스트라이프 패턴으로 구성된다. 각각의 메모리 모듈은 메모리 모듈에 있는 데이터에 대해 오류정정코드를 가질 수 있고, 추가 메모리 모듈은 복수의 모듈들에 있는 데이터에 대해 오류정정코드(가령, XOR 패리티)를 가질 수 있다. 쓰기 또는 소거 동작들은 가령 각각의 메모리 모듈들에 순차적으로 데이터를 읽거나 소거함으로써 수행될 수 있고, 각 연속적인 모듈에 쓰기 또는 소거동작은 이전 메모리 모듈에 쓰기 동작을 마칠 때까지 지연된다. 각각의 메모리 모듈에 쓰기 또는 소거 동작을 마치면, 데이터 무결성이 유지되도록 추가 모듈에 있는 중복 데이터가 업데이트된다. 따라서, 한 번에 단 하나의 메모리 모듈만이 쓰기 상태에 있을 수 있다. 대안으로, 중복 데이터는 데이터 포함한 모듈들의 쓰기 또는 소거가 마칠 때까지 비지속성 스토리지에 업데이트될 수 있고, 그런 후 데이터는 추가 모듈에 기록된다. 비지속성 스토리지는 모듈에 로컬적이거나 더 글로벌해질 수 있다. The process of managing memory in a memory system in which the read and write times are asymmetric and the write time is substantially longer than the read time may involve writing data to the plurality of memory modules and the memory modules are configured in a logically stripe pattern . Each memory module may have an error correction code for the data in the memory module, and the additional memory module may have an error correction code (e.g., XOR parity) for the data in the plurality of modules. Write or erase operations may be performed, for example, by sequentially reading or erasing data to each of the memory modules, and a write or erase operation to each successive module is delayed until the write operation to the previous memory module is completed. When the write or erase operation is completed for each memory module, the redundant data in the additional module is updated so that data integrity is maintained. Thus, only a single memory module can be in a write state at a time. Alternatively, the redundant data may be updated to non-persistent storage until the writing or erasing of the modules containing the data is complete, and then the data is written to the additional module. Non-persistent storage can be local to the module or more global.

쓰기 또는 소거 동작이 순차적으로 스트라이프에 있는 메모리 모듈들에 수행되면, 스트라이프에 있는 메모리 모듈들 중 단 하나만 읽기 요청에 응답해 즉시 데이터 일기로부터 봉쇄되고, 이 예에서, 5개 메모리 모듈 중 적어도 4개가 즉시 데이터를 메모리 컨트롤러로 반환한다. 이는 적절한 경우 패리티 데이터를 이용해 읽기 동작을 완료하는데 충분하다. 이와 같이, 스트라이프와 관련된 단 하나의 모듈만이 한번에 한 쓰기 또는 소거 상태에 있을 수 있기 때문에 타임라인 로딩 및 동작의 믹스에 따라 쓰기 또는 소거 동작의 전체 속도가 줄어들 수 있으나 읽기 동작은 쓰기 또는 소거 동작에 의해 지연되지 않는다. 실질적으로 데이터를 메모리 모듈에 쓰기 위한 시간의 비중첩 주기는 데이터 스트라이프에 대한 읽기 및 쓰기 동작 사이의 갈등을 최소화한다.Write or erase operations are sequentially performed on the memory modules in the stripe, only one of the memory modules in the stripe is immediately blocked from the data journal in response to the read request, in this example at least four of the five memory modules Immediately returns the data to the memory controller. This is sufficient to complete the read operation using parity data, if appropriate. Thus, since only one module associated with a stripe can be in a write or erase state at a time, the overall speed of a write or erase operation may be reduced depending on the mix of timeline loading and operation, but the read operation may be a write or erase operation . The non-overlapping period of time to actually write data to the memory module minimizes the conflict between read and write operations to the data stripe.

메모리 컨트롤러는 읽기 동작을 마치는 시간 주기를 대기할 수 있고, 그런 후 5개의 응답 중 적어도 4개를 이용해 데이터 또는 재구성 데이터인 요청된 데이터 섹터를 어셈블리한다. 데이터 블록들 중 5개 모두가 반환되면, 한 데이터 블록은 무시될 수 있거나, 중복 데이터는 설계시 요망되는 데이터 신뢰도 수준에 따라 추가 오류 검출단계로 사용될 수 있다. The memory controller may wait for a period of time to complete the read operation and then use at least four of the five responses to assemble the requested data sectors, either data or reconstruction data. If all five of the data blocks are returned, one data block may be ignored, or the redundant data may be used as an additional error detection step depending on the data reliability level desired at design time.

메모리 모듈이라는 용어는 일반적인 의미로 사용되며, 물리적 메모리 모듈은 플래시 칩과 같이 복수의 메모리 디바이스들을 가질 수 있고, 이들 중 각 하나는 "메모리 모듈"의 특징을 가질 수 있다. 따라서, 이런 메모리 디바이스들이 더 높은 레벨의 메모리 모듈에 있더라도, 쓰기 동작을 수행하기 위한 메모리 디바이스의 순차적 동작이 실행된다.The term memory module is used in a general sense, and a physical memory module may have a plurality of memory devices, such as a flash chip, each one of which may have the characteristics of a "memory module ". Thus, even if these memory devices are in a higher level memory module, the sequential operation of the memory device to perform the write operation is performed.

본 명세서에서의 설명들은 주로 예로서 5개 메모리 모듈들을 이용하며, 상기 메모리 모듈들 중 4개는 데이터를 저장하고 제 5 메모리 모듈은 패리티를 저장한다. 하지만, 데이터 스토리지용으로 4개 메모리 모듈보다 많거나 적게 이용될 수 있고, 하나 이상의 메모로 모듈이 다른 메모리 모듈들과 연결된 패리티 데이터에 대한 스토리지로서 사용될 수 있다. 메모리 모듈이 데이터를 포함하든 아니든, 패리티 데이터 또는 이 둘의 조합이 구속조건인 것으로 의도되지 않는다.The description herein generally uses five memory modules as examples, four of which store data and a fifth memory module stores parity. However, more or less than four memory modules may be used for data storage, and one or more memos may be used as storage for parity data where the module is connected to other memory modules. Whether the memory module contains data or not, the parity data, or a combination of both, is not intended to be a constraint.

데이터의 쓰기는 가령, 이전에 미사용된 메모리 시스템에서 데이터의 초기 모집단에서 우선순위일 수 있고, 데이터는 동시에 스트라이프에 있는 복수의 메모리 모듈들에 쓰여질 수 있고, 데이터의 읽기는 상술한 바와 같이 지연될 수 있으나, 이는 대형 어레이들을 초기화하거나 데이터의 블록들을 이동할 때 허용될 수 있다. 본 예에서, 데이터 쓰기 속도는 5개 메모리 모듈 각각이 순차적으로 쓰여짐에 따른 최대 쓰기 속도의 약 20 퍼센트인 반면, 읽기 속도는 5개 메모리 모듈들 중 4개가 연속 읽기에 응답할 필요가 있기 때문에 단일 모듈에 대해 대략 예상된 읽기 속도보다 더 길지 않다. 쓰기 봉쇄는 쓰기 부하가 증가함에 따라 관리될 수 있다. The writing of data may be prioritized, for example, in an initial population of data in a previously unused memory system, the data may be written to a plurality of memory modules at the same time in a stripe, and the reading of data may be delayed But this may be acceptable when initializing large arrays or moving blocks of data. In this example, the data write speed is about 20 percent of the maximum write speed as each of the five memory modules is written sequentially, while the read speed is a single It is not longer than the expected read speed for the module. Write blocking can be managed as the write load increases.

또 다른 예에서, 메모리 어레이의 구성은 앞선 예에서처럼 행렬 매트릭스와 다를 수 있다. 상술한 데이터의 행렬 표시는 가령 논리 어드레스 및 물리 어드레스로 맵핑된 논리 어드레스로서 이해될 수 있다. 도 4의 메모리 구조에서, 메모리 모듈은 발명의 명칭이 "Interconnection System"인 2006년 4월 17일자로 출원된 미국특허출원 11/405,083에서 본 발명자에 의해 교시된 트리로 구성되며, 이는 본 명세서에 참조로 합체되어 있다. 본 예의 배열에서, 트리형 구조들은 상호연결될 수 있고 하나 이상의 메모리 컨트롤러들에 외부 연결을 가질 수 있다. 도 4a에 도시된 바와 같은 트리 시스템의 속성은 설령 메모리 모듈들 중 하나가 완전히 고장나거나, 물리적 링크들 중 어느 하나가 파열되었거나, 메모리 컨트롤러들 중 어느 하나가 고장난 경우, (정사각형 박스로 도시된) 메모리 모듈들 중 어느 하나가 메모리 컨트롤러들 중 적어도 하나에 의해 접속될 수 있다는 것이다. 이와 같이, 개개의 메모리 모듈들(M)이 시스템내 메모리 모듈의 물리적 위치에 대한 세부내용에 상관없이 데이터 어레이(A)에 할당될 수 있다. (이 예에서, 메모리 모듈 표시(M)는 간단히 하기 위해 관련된 데이터 어레이 표시(A)로 대체된다). 트리 구조는 매우 많은 메모리 모듈들을 포함하도록 형성될 수 있고, 각 모듈은 유사한 개수의 메모리 모듈들과 메모리 컨트롤러들을 갖는 선형 구조와 비교할 경우 신호가 이동되어야 할 수 있는 거리의 관점에서 상대적으로 루트 부근에 있을 수 있다. In another example, the configuration of the memory array may be different from the matrix matrix as in the previous example. The matrix representation of the above-described data can be understood as a logical address mapped to, for example, a logical address and a physical address. In the memory structure of FIG. 4, the memory module consists of a tree taught by the inventor in U. S. Patent Application Serial No. 11 / 405,083, filed April 17, 2006, entitled " Interconnection System " It is incorporated by reference. In the arrangement of this example, the tree-like structures may be interconnected and may have external connections to one or more memory controllers. The attributes of the tree system as shown in FIG. 4A are such that if one of the memory modules fails completely, either one of the physical links is ruptured, or one of the memory controllers fails, (shown as a square box) One of the memory modules may be connected by at least one of the memory controllers. As such, the individual memory modules M can be assigned to the data array A regardless of the details of the physical location of the memory modules in the system. (In this example, the memory module indication M is replaced with the associated data array indication A for simplicity). The tree structure may be formed to include a large number of memory modules and each module may be relatively close to the root in terms of the distance a signal may travel as compared to a linear structure having a similar number of memory modules and memory controllers Can be.

예로서, 데어터 어레이(A)가 도 4a의 메모리 시스템의 물리적 모듈로의 할당의 일예로 도시되어 있고, 이는 매우 많은 가능한 할당들 중 하나임을 알게 된다. 데이터 어레이를 메모리 모듈로의 할당은 지연시간 또는 다른 성능측정에 상당한 영향을 주지않고 하나 이상의 메모리 모듈들의 고장을 고려해 변경될 수 있다. 중복 상호연결 구조를 갖는 트리 메모리 시스템의 속성은 메모리 시스템이 동작 중에 있으면서 개별 메모리 모듈들이 대체될 수 있다는 것이다. 이를 "핫 스와핑(hot swapping)"이라 할 수 있다. By way of example, the data array A is shown as an example of the allocation of the memory system of Fig. 4A to a physical module, which is one of many possible allocations. The allocation of the data array to the memory module may be changed taking into account the failure of one or more memory modules without significantly affecting the delay time or other performance measures. An attribute of a tree memory system having a redundant interconnect structure is that individual memory modules can be replaced while the memory system is in operation. This can be referred to as "hot swapping ".

도 4b는 데이터 어레이(A1, A2, A3, 및 Ap)를 도 4a의 메모리 구조내 다른 물리적 메모리 모듈로의 또 다른 가능한 할당을 도시한 것이다. 여기서, 모듈들은 메모리 모듈들과 메모리 컨트롤러들 중 하나 사이의 동일한 데이터 경로 또는 데이터 경로 중 일부를 이용해 서로 가깝게 선택된다. 메모리 컨트롤러 또는 메모리 모듈들 중 하나가 고장나면, (그 중 일부가 대시 선으로 도시된) 다른 경로들이 메모리 모듈을 원래 컨트롤러 또는 다른 컨트롤러에 연결하는데 사용될 수 있다. 이와 같이, 물리적 모듈과 함께 데이터 어레이(A)의 논리적 표현의 결합은 융통성이 있다. 메모리 시스템에서 위치에 대한 데이터 어레이(A) 중 어느 한 부분을 재지정하는 것은 논리 주소에서 물리 주소로의 맵핑(logical-to-physical mapping) 및 데이터 라우팅에 대한 변경이며, 메모리 시스템에서 메모리 모듈의 위치에 의해서가 아니라 주로 물리적 메모리 모듈의 유효성에 의해서만 제한된다.Figure 4B shows another possible allocation of data arrays A1, A2, A3, and Ap to other physical memory modules in the memory structure of Figure 4a. Here, the modules are selected close to each other using some of the same data paths or data paths between the memory modules and one of the memory controllers. If one of the memory controllers or memory modules fails, other paths (some of which are shown as dashed lines) may be used to connect the memory module to the original controller or other controller. As such, the combination of the logical representation of the data array A with the physical module is flexible. Redirecting any part of the data array A for a location in the memory system is a change to the logical-to-physical mapping and data routing, But mainly by the validity of the physical memory module.

메모리 모듈이 고장나 결국 교체될 필요가 있을 경우, 단일 고장시간 주기 동안 제 2 고장이 발생할 수 있는 가능성이 있다. 메모리 모듈의 고장 방식은 마모 방식과 종래 전자회로 방식으로 나누어질 수 있다. 전자회로 방식은 총 동작시간에 따르며, 마모 방식은 메모리 모듈의 사용에 따른다. 마모 고장은 내부 고장로서 정정가능한 단일 비트 고장와 함께 점진적이다. 이런 경우, 제 1 모듈이 교체되면서 제 2 모듈 고장 가능성은 고장 메모리를 교체하는데 필요한 시간 수만큼 나눈 메모리 시스템의 MTBF의 역 차수가 되게 평가될 수 있다. 마찬가지로, 원인이 전기인 경우, 마모 고장은 고장 메모리 모듈을 교체하는데 걸리는 짧은 시간 동안 고장을 야기할 것 같지 않으며, 제 2 고장 가능성도 마찬가지로 적다. 상술한 시스템이 RAID 4이기 때문에, 데이터 및 패리티 어레이를 포함한 5개 메모리 모듈 중 시간 중첩 고장의 2개 메모리 모듈은 RAID 스트라이프의 수리 또는 수정하기 전에 발생한다면, 데이터 손실이 발생한다. If a memory module needs to be replaced or eventually replaced, there is a possibility that a second failure may occur during a single failure time period. The failure mode of the memory module can be divided into a wear mode and a conventional electronic circuit mode. The electronic circuit method depends on the total operating time, and the wear method depends on the use of the memory module. A wear-out fault is gradual with a single-bit fault correctable as an internal fault. In such a case, the first module may be replaced and the second module failure probability may be evaluated to be the inverse order of the MTBF of the memory system divided by the number of times required to replace the fault memory. Likewise, if the cause is electricity, the wear failure is unlikely to cause a failure for a short period of time to replace the fault memory module, and the likelihood of second failure is likewise small. Because the system described above is RAID 4, data loss occurs if the two memory modules of the time overlapping failure among the five memory modules, including the data and the parity array, occur before repair or modification of the RAID stripe.

플래시 메모리의 오류 방식으로 마모 현상이 발생되어, 오류 상태가 된다. 마모방식은 다양한 타입의 플래시 메모리들과 개개의 제조업체들에 사요된 제조 기술들 사이에서 다를 수 있다. 그러나, 플래시 메모리의 마모로 장비가 고장나고 시한적으로 시스템이 다운되며, 데이터 무결성이 상실될 수 있기 때문에, 플래시 메모리의 마모를 관리하기 위한 다양한 전략들이 개발되었다. 데이터의 각 블록의 쓰기 또는 소거 사이클 수가 종종 기록되고, 쓰기 사이클 회수가 늘어남에 따라, 데이터는 메모리 모듈의 수명을 늘리도록 고사용 영역에서 저사용 영역으로 옮겨질 수 있다. 마모로 인한 플래시 메모리 모듈의 특정 고장모드는 단일 비트가 오류상태에 있게 되는 것이다. 상기 비트는 제 2 비트가 또한 오류를 나타낼 때까지 반복된 읽기 동작시 오류로서 남아 있는 경향이 있다. 사용될 수 있는 오류정정코드(ECC)는 단일 오류를 검출하고 정정하는 능력 및 검출하나 정정할 수 없는 능력, 가령, 이중 오류를 갖기 때문에, 메모리 모듈은 2개 비트 오류가 발생할 때까지 계속 사용될 수 있다. 2개 비트 오류가 조우되면, 중복 패리티 데이터는 소정 데이터를 재구성하도록 요구된다. 따라서, 다른 시스템 관리 정책들이 사용될 수 있다.The erroneous state of the flash memory causes an erroneous state. Wear patterns can vary between different types of flash memories and manufacturing techniques used by individual manufacturers. However, various strategies have been developed to manage the wear of the flash memory, since the wear of the flash memory causes the equipment to fail, the system to crash, and the data integrity to be lost. As the number of write or erase cycles of each block of data is often recorded and the number of write cycles increases, the data may be transferred from the high use area to the low use area to increase the life of the memory module. The specific failure mode of the flash memory module due to wear is that a single bit is in an error state. The bit tends to remain an error in repeated read operations until the second bit also indicates an error. Since the error correction code (ECC) that can be used has the ability to detect and correct a single error, and the ability to detect and correct, for example, double errors, the memory module can continue to be used until a two bit error occurs . If a two bit error is encountered, redundant parity data is required to reconstruct certain data. Therefore, other system management policies may be used.

제 1 정책으로, 메모리 모듈은 단일비트 오류와 마주칠 때 불사용으로 표시될 수 있다. 단일비트 오류는 메모리 모듈과 관련된 ECC에 의해 정정되기 때문에, 스트라이프와 관련된 중복 데이터(가령 패리티 데이터)가 사용될 필요가 없다. 이전 예의 5개 모듈들 중 단 4개만 소정 데이터를 나타내는데 충분할 수 있기 때문에, 읽기 동작은 쓰기 동작을 마치길 기다림으로써는 지연되지 않는다. 대안으로, 메모리 모듈은 제 2 비트 오류가 메모리 모듈의 데이터 어레이에 검출될 때까지 계속 사용될 수 있다. 이 상황에서, 중복(패리티) 데이터는 중복 데이터를 포함한 메모리 모듈과는 다른 메모리 모듈에 오류가 발생된 경우 데이터를 재구성하는데 사용될 수 있다. With a first policy, the memory module may be marked as unused when encountering a single bit error. Since a single bit error is corrected by the ECC associated with the memory module, redundant data associated with the stripe (e.g., parity data) need not be used. Since only four of the five modules in the previous example may suffice to represent the given data, the read operation is not delayed by waiting for the write operation to complete. Alternatively, the memory module may continue to be used until a second bit error is detected in the data array of the memory module. In this situation, redundant (parity) data may be used to reconstruct the data if a memory module other than the memory module containing the redundant data fails.

여러 디스크들을 이용하는 디스크 시스템에 비해, 고체상태 메모리 시스템은 읽기 및 쓰기 또는 소거 동작 간에 또는 동일한 타입의 여러 동작들 간에 실질적으로 간섭을 덜하며 복수의 메모리 모듈들에 저장된 데이터 어레이에 접속할 수 있다. Compared to a disk system using multiple disks, a solid state memory system can connect to a data array stored in a plurality of memory modules, substantially free of interference between read and write or erase operations, or between various operations of the same type.

도 5에 도시된 또 다른 예에서, 2차원 데이터 어레이의 관리가 도시되어 있다. 5개 메모리 모듈(A1-Ap) 중 단 하나만 임의의 시간에 쓰기 모드로 있게 허용되도록 RAID-4 시스템이 동작된 경우, 메모리 모듈 중 나머지 4개는 읽기 동작 동안 지연이 20 퍼센트 이하의 쓰기 부하로 손상되지 않도록 즉시 데이터를 반환한다. 이 상황은 쓰기 동작의 순서에 대한 이 구속조건을 갖지 않는 시스템과 대조되며, 읽기 및 쓰기 동작 간의 간섭이 매우 낮은 쓰기 부하로 시작된다. In another example shown in Fig. 5, management of a two-dimensional data array is shown. If a RAID-4 system is operated so that only one of the five memory modules (A1-Ap) is allowed to be in write mode at any time, the remaining four memory modules will have a delay of less than 20 percent write operation Immediately return data to avoid damage. This situation contrasts with a system that does not have this constraint on the order of write operations, and the interference between read and write operations starts with a very low write load.

그러나, 쓰기 부하가 시간 라인의 20 퍼센트보다 큰 것이 바람직한 상황들이 있을 수 있으나, 읽기 지연은 이 상황에 맞게 가능한 작아지는 것이 여전히 바람직하다. 이는 스트라이프 그룹들에 대한 쓰기 동작의 관리에 의해 수용될 수 있다.However, there may be situations where it is desirable that the write load be greater than 20 percent of the time line, but it is still desirable that the read delay be as small as possible to accommodate this situation. This can be accommodated by management of write operations on the stripe groups.

이 및 다른 예들의 동작을 설명하는데 있어, 메모리 모듈 및 시스템의 로딩 및 응답시간은 동작 원리를 설명하기 위해 변한다. 편의상, 읽기 및 쓰기 요청 시간 분산은 시간상 균일한 것으로 가정되고, 평균속도로 읽기 또는 쓰기 부하와 일치한다. 또한, 심지어 짧은 시간주기에 걸쳐, 로딩은 설명을 간략히 하기 위해 정상상태 값으로 간주된다. 일반적으로 메모리 모듈의 지연 및 응답 시간이 버스 수송 시간과 관련된 지연에 비해 꽤 길기 때문에 버스 대역폭 등의 한계들도 또한 무시된다. 더욱이, 메모리 시스템에서 다양한 데이터 영역들은 다른 요인들 중에서 저장된 데이터 타입, 데이터에 접속하는 응용 프로그램, 가상화 등으로 인해 다른 읽기 및 쓰기 부하를 겪을 수 있기 때문에, 로딩은 메모리 시스템에 있는 다른 스트라이프들에서 변할 수 있고, 상술한 상황들은 글로벌 로딩값이라기보다는 로컬 로딩값을 나타내는 것으로 여겨질 수 있다. 이와 같이, 메모리 관리 적용은 글로벌 베이스라기보다는 로컬 베이스에 대한 것일 수 있다. 필요한 경우, 동작조정은 글로벌 또는 로컬 타이밍 알고리즘, 토큰의 패싱(passing), 폴링(polling), 시그널링 등 또는 컴퓨터나 메모리 시스템내 일시적 동작을 조정하는 다른 방법들에 의해 달성될 수 있다.In describing the operation of these and other examples, the loading and response times of the memory modules and system are varied to illustrate the principles of operation. For convenience, the time spread of the read and write requests is assumed to be uniform over time and corresponds to the read or write load at average speed. Also, even over a short period of time, loading is considered a steady state value to simplify the description. Limitations such as bus bandwidth are also neglected, as the delay and response time of a memory module is generally quite longer than the delay associated with bus transit time. Moreover, because the various data areas in the memory system may experience different read and write loads due to the stored data type, application accessing the data, virtualization, etc. among other factors, loading may change in other stripes in the memory system And the above described situations may be viewed as representing a local loading value rather than a global loading value. As such, memory management applications can be for a local base rather than a global base. If necessary, motion adjustments may be accomplished by global or local timing algorithms, passing of tokens, polling, signaling, or other methods of coordinating transient operations in a computer or memory system.

도 5의 데이터는 스트라이프들로 구성된 것으로 도시되어 있고, 0번째 스트라이프(410)는 열(A,B,C,D 및 P)에 각가 배열된 메모리 모듈(310)(또는 예컨대 칩)(A0,B0,C0,D0 및 P0)을 구비한다. 시스템의 나머지 스트라이프들(2-9)은 50 모듈의 메모리 시스템을 형성하기 위해 유사하다.5 is shown as consisting of stripes, and the zeroth stripe 410 is a memory module 310 (or chip, for example) (A0, B, C, D and P) B0, CO, DO and PO). The remaining stripes 2-9 of the system are similar to form a memory system of 50 modules.

설명을 위해, 각 메모리 모듈에 대한 타이밍 회로는 다른 메모리 회로에 동시에 초기화되는 것으로 간주될 수 있고, 예컨대, 1msec의 간격으로 시간을 표시하며, 이는 적어도 하나의 쓰기 또는 소거 동작을 마치는데 충분한 시간에 해당할 수 있다. 이런 쓰기 또는 소거 동작은 연이은 시간 간격들에서 한번에 한 컬럼 수행된다. 도 6a는 연속 시간간격(t1,t2,…,t10)에서 쓰기 동작을 위해 인에이블될 수 있는 메모리 모듈의 컬럼(514)을 도시한 것이며, 이는 모듈로(modulo) 10을 반복한다. 스트라이프 0의 시간 히스토리가 도시되어 있는 도 6b에 도시된 바와 같이, 단일 메모리 모듈은 임의의 시간 주기에서 쓰기 동작을 위해 인에이블되는 것이 보여질 수 있다. 이는 스트라이프에 있는 5개 메모리 모듈 중 4개가 임의의 시간에서 읽기 동작을 위해 가용해지는 기준을 만족한다. 이는 쓰기 부하의 영향이 전혀 없이 읽기 지연에만 따를 수 있는 지연이 된다. For illustrative purposes, the timing circuit for each memory module may be considered to be initialized simultaneously to another memory circuit, for example, at a time interval of 1 msec, which is sufficient time to complete at least one write or erase operation . This write or erase operation is performed one column at a time in successive time intervals. Figure 6a is a simplified showing a column 514 of memory modules that can be enabled for write operations in successive time intervals (t 1, t 2, ... , t 10), which repeats (modulo) 10 as a module . As shown in FIG. 6B, where the time history of stripe 0 is shown, a single memory module can be seen to be enabled for write operations at any time period. This satisfies the criteria that four of the five memory modules in the stripe become available for a read operation at any time. This is a delay that can only follow the read delay without any effect of the write load.

쓰기 부하가 20 퍼센트를 초과하면, 이 전략은 쓰여지도록 요망되는 데이터량 또는 소거 요건을 따라갈 수 없다. 추가 쓰기 주기들이 할당될 필요가 있을 수 있다. 필요에 따라 이들이 할당되는 정도까지, 스트라이프의 하나 이상의 메모리 모듈이 읽기 요청시 쓰기 상태에 있을 수 있다. 이와 같이, 5개 메모리 모듈들 중 4개는 읽기 요청에 즉시 응답할 수 없고, 읽기 지연은 매우 작은 값에서 쓰기 또는 소거 상태 기간에 해당하는 적어도 약 1msec까지 늘어난다.If the write load exceeds 20 percent, this strategy can not keep up with the amount of data or erase requirements required to be written. Additional write cycles may need to be allocated. One or more memory modules of the stripe may be in a write state upon a read request, to the extent that they are allocated as needed. Thus, four of the five memory modules can not immediately respond to a read request, and the read delay increases from a very small value to at least about 1 msec corresponding to a write or erase state period.

균일한 요청 도착속도와 함께 지연을 논의할 경우, 실제 평균 지연은 쓰기 상태로 인한 봉쇄 기간의 절반이다(간략히 하기 위해, 일반적으로 "쓰기 상태"라는 용어와 "소거 상태"라는 용어는 읽기 동작이 봉쇄되는 시간 주기를 나타내는 것으로 이해해야 하며 두 용어들은 논의를 간략히 하기 위해 조합해 반복적으로 사용되지 않는다). 일반적으로, 쓰기 상태의 기간이 이용되고, 이는 최대 지연에 해당하게 된다.When discussing delays with a uniform request arrival rate, the actual average delay is half of the containment period due to the write state (for simplicity, the terms "write state" and "erase state" It should be understood that it represents the time period of occlusion and the two terms are not repeatedly used in combination to simplify the discussion). In general, the duration of the write state is used, which corresponds to the maximum delay.

쓰기 부하가 증가함에 따라, 임의의 시간에서 쓰기 상태에 있는 스트라이프의 메모리 모듈들의 개수가 증가할 수 있으며, 지연은 스트라이프의 쓰기 상태와 관련된 지연의 합까지 대략 약 4msec로 상승할 수 있다. As the write load increases, the number of memory modules in the stripe in the write state at any time may increase and the delay may rise to approximately 4 msec up to the sum of the delays associated with the write state of the stripe.

그러나, 스트라이프(410)에서 메모리 모듈 모두가 동시에 쓰기 상태에 있도록 야기된 경우 큰 쓰기 부하하에서 쓰기 상태의 최대 값은 1msec로 제한될 수 있다. 예컨대, 이 예에서 쓰기 부하가 20%를 초과하나 28% 미만이면, 각 스트라이프는 또한 매 10회 간격마다 쓰기 동작을 위해 인에이블될 수 있다. 이와 같이, 컬럼이외에(가량 도 5에서 p), 스트라이프(410)(스트라이프 0)는 제 1 시간 간격의 기간동안 인에이블될 수 있다. 이 전략에서, 모든 스트라이프들은 동시에 쓰여지므로, 총 쓰기 시간 봉쇄는 1msec로 제한된다. 쓰기 부하가 증가함에 따라, 추가 시간간격이 스트라이프 쓰기에 대해 할당될 수 있다. 특히, 상기 전략은 시간적으로 가능한 한 멀리 스트라이프 쓰기에 사이를 둘 수 있다. 즉, 다음 증분(increment)은 모듈로 10 반복의 제 1 및 제 5 시간 간격 모두를 이용할 수 있다. However, if all of the memory modules in the stripe 410 are caused to be in a write state at the same time, the maximum value of the write state under a large write load may be limited to 1 msec. For example, in this example, if the write load is greater than 20% but less than 28%, then each stripe may also be enabled for a write operation every ten time intervals. Thus, in addition to the column (p in Fig. 5), the stripe 410 (stripe 0) may be enabled for a period of the first time interval. In this strategy, because all stripes are written at the same time, the total write time blockage is limited to 1 msec. As the write load increases, additional time intervals may be allocated for stripe writes. In particular, the strategy is to allow for striped writes as far in time as possible. That is, the next increment may utilize both the first and fifth time intervals of the modulo 10 iterations.

스트라이프에서 메모리 모듈에 대한 쓰기 부하는 적어도 페이지들이 쓰여진다면 한 메모리 모듈에 대한 쓰기로 스트라이프내 모든 메모리 모듈들에 쓰여질 수 있기 때문에 임의의 순간 동안 대략 동일할 것으로 예상될 수 있다. 그럼에도 불구하고, 쓰기 부하에 차이가 있게 되는데, 이는 한 페이지 미만의 쓰기 또는 (배드 블록들 등으로 인한) 특정 메모리 칩에 따른 하우스키핑 활동에 기인한 것일 수 있다. The write load on the memory module in the stripe may be expected to be approximately the same for any moment since at least pages can be written to all memory modules in the stripe as a write to one memory module if written. Nonetheless, there is a difference in write load, which may be due to less than one page of write or housekeeping activity on a particular memory chip (due to bad blocks, etc.).

도 7에 도시된 바와 같이 메모리 모듈(310)은 가령 플래시 메모리일 수 있는 지속성 메모리(320), 가령 DRAM일 수 있는 버퍼 메모리(330), 및 미국특허출원 No. 11/405,083에 기술된 바와 같은 구성가능한 스위칭 소자(CSE)일 수 있는 컨트롤러/버스 인터페이스(340) 또는 다른 버스 인터페이스를 포함할 수 있다. 메모리 모듈은 입렬 및 출력 데이터와 명령을 버퍼링할 수 있어, 메모리 모듈이 계류중인 동작의 큐를 유지할 수 있다.As shown in FIG. 7, the memory module 310 includes a persistent memory 320, which may be, for example, a flash memory, such as a buffer memory 330, which may be a DRAM, May include a controller / bus interface 340 or other bus interface, which may be a configurable switching element (CSE) as described in U.S. Serial No. 11 / 405,083. The memory module can buffer the ingress and egress data and instructions so that the memory module can maintain a queue of pending operations.

낮은 지연 읽기 동작과 충돌되는 동작들은 쓰기 동작을 위해 지정된 시간 간격들에 제한될 수 있다. 메모리 모듈 타이밍 슬롯이 쓰기 동작을 허용할 경우, 슬롯 시간 기간에 수행될 수 있는 많은 쓰기 또는 소거 동작들이 컨트롤러(340) 또는 그 밖에 유지된 큐로부터 디큐(de-queue)되어 수행될 수 있다. 그러나, 전혀 계류중인 쓰기 또는 소거 동작들이 없다면, 계류중인 읽기 동작은 컨트롤러(340) 또는 가령 모듈에 있는 큐로부터 디큐되어 수행될 수 있다. Operations that conflict with low latency read operations may be limited to specified time intervals for write operations. If a memory module timing slot allows write operations, many write or erase operations that may be performed during the slot time period may be performed by de-queuing from the controller 340 or other maintained queue. However, if there are no pending write or erase operations, the pending read operation may be performed by being decoded from the controller 340 or a queue in the module, for example.

대안으로, 쓰기 또는 소거 동작이 남아 있을 수 있다. 프로그램된 동작 정책에 따라 추가 쓰기 동작이 남아 있을 때 이는 쓰기 부하가 20%를 초과하고 추가 쓰기 주기가 할당될 필요가 있는 표시로서 해석된다. 메인 메모리 컨트롤러는 스트라이프에 쓰기 동작을 막도록 통지될 수 있거나, 큐가 공칭레벨로 감소될 때까지 추가 타임 슬롯들이 쓰기 동작에 할당될 수 있어, 계류중인 동작 수가 0이거나 적어질 수 있다. 글로벌 할당 기반으로, 쓰기 동작들은 높은 쓰기 부하를 현재 갖지 않는 메모리 모듈로 지향될 수 있다. 쓰기 프로세스로 타임 슬롯을 할당할 경우, 타임 슬롯들은 기술된 예에 대하 패턴의 모듈로-10 반복 동안 이격된다. 쓰기 부하가 늘고 더 많은 쓰기 슬롯들이 요구됨에 따라, 이들은 함께 더 가까이 떨어져 있게 되나, 슬롯은 가능한 한 연이은 쓰기들 사이에 있게 된다. 이런 식으로, 읽기 요청에 대한 임의의 쓰기 봉쇄의 총 길이는 쓰기 부하가 늘어남에 따라 최소화되고 50% 쓰기 부하 미만에 대해, 최대 봉쇄는 단 하나의 쓰기 주기가 될 수 있다. 읽기에 이용가능한 타임 라인도 이에 따라 감소된다; 그러나, 동일한 스트라이프에 대한 높은 읽기 부하와 높은 쓰기 부하는 자연히 일시적이고 전체 시스템 응답시간에 작은 영향을 미칠 수 있다. Alternatively, write or erase operations may remain. When additional write operations remain in accordance with the programmed operating policy, this is interpreted as an indication that the write load exceeds 20% and an additional write cycle needs to be allocated. The main memory controller may be notified to prevent write operations to the stripe, or additional time slots may be allocated to write operations until the queue is reduced to the nominal level, so that the number of pending operations may be zero or less. On a global allocation basis, write operations may be directed to a memory module that does not currently have a high write load. When assigning time slots in the write process, the time slots are spaced during the -10 iterations of the pattern module for the example described. As the write load increases and more write slots are required, they stay closer together, but the slots are between as many writes as possible. In this way, the total length of any write block for a read request is minimized as the write load increases, and for less than 50% write load, the maximum block can be only one write cycle. The timeline available for reading is also reduced accordingly; However, high read loads and high write loads for the same stripe are naturally temporary and can have a small impact on overall system response time.

로컬 큐에 따라 추가 쓰기시간 블록을 할당하는 정책은 시스템의 다이나믹 동작에 의해 부과된 읽기 및 쓰기에 대해 각 스트립의 동작의 적응을 허용한다. The policy of allocating additional write time blocks according to local queues allows adaptation of the behavior of each strip for read and write imposed by the dynamic behavior of the system.

또 다른 태양으로, 스트라이프에서 개개의 모듈들이 가령 토큰 패싱 구성을 이용해 서로 소통할 때, 토큰은 쓰기 간격을 수행하기 위한 허락을 나타낼 수 있다. 토큰은 순차적으로 스트라이프(가령, 스트라이프 1)의 메모리 모듈(A-P)들 사이에 통과될 수 있다. 토큰이 A1에 의해 보유되면, 이 예에서 한 쓰기 간격이 1msec인 쓰기 간격이 허용된다. 큐에 쓰기 동작이 있는 경우, 상기 간격내에 마쳐질 수 있는 이들 쓰기 동작들이 실행된다. 그런 후, 토큰은 처리가 반복되는 B1으로 보내진다; 토큰이 연속적으로 보내지고, PI가 A1으로 통과된 토큰을 가지면, 라운드 로빈(round robin)이 수행된다. In another aspect, when individual modules in a stripe communicate with each other using, for example, a token passing configuration, the token may indicate a permission to perform the write interval. The token may be passed between the memory modules A-P of the stripe (e.g., stripe 1) sequentially. If the token is held by A1, a write interval of 1 msec is allowed for one write interval in this example. If there is a write operation in the queue, these write operations that may be completed within the interval are executed. The token is then sent to B1, where processing is repeated; If a token is sent consecutively and the PI has a token passed to A1, then a round robin is performed.

쓰기 간격의 완료 후에 쓰기 동작이 보류 중에 있는 경우, 이는 현재 쓰기 부하가 읽기 지연이 쓰기에 투명한 20% 값을 초과한 표시이다. 쓰기 부하를 제한하는 다른 수단들이 없다면, 보류된 쓰기들은 버퍼 메모리(330)의 오버플로우를 방지하기 위해 가까운 장래에 실행되어야 할 수 있다. 이런 상황에서, 또 다른 쓰기 동작은 토큰이 통과된 후에 수행되며, 이는 쓰기 간격들 간에 적어도 한 시간간격을 허용할 수 있다. 따라서, 임의의 라운드 로빈 동안 사용된 쓰기 간격의 개수는 쓰기 부하에 따라 변할 수 있으나, 연속 쓰기 간격의 수는 쓰기 부하가 매우 높아질 때까지 유일할 수 있다. If the write operation is pending after completion of the write interval, this is an indication that the current write load has exceeded the 20% value of the write delay, which is transparent to the write. If there are no other means of limiting the write load, the pending writes may have to be executed in the near future to prevent buffer memory 330 from overflowing. In this situation, another write operation is performed after the token has passed, which may allow at least one time interval between write intervals. Thus, the number of write intervals used during any round robin may vary with the write load, but the number of consecutive write intervals may be unique until the write load becomes very high.

메모리 모듈들이 소거 또는 프로그램(쓰기) 동작을 수행할 수 있는 시간 주기의 할당은 임의의 방식들, 가령, 모듈들이 글로벌 컨트롤러로부터 컨트롤 메시지의 전송에 의해, 모듈 대 모듈로의 토큰 패싱에 의해, 모듈들 간에 공통버스 또는 와이어 등에 의한 시간주기의 로컬 결정에 따라 동작하도록 글로벌 기준시간에 대한 시간주기 할당으로 행해질 수 있다. 접근 조합들이 사용될 수 있다; 가령, 소정의 프로그래밍 데이터 속도가 한번에 RAID 그룹 수행 프로그래밍의 단일 컬럼을 가짐으로써 만족될 수 있는 것보다 더 크고 여러 RAID 그룹들이 있을 때, 일부 또는 여러 RAID 그룹들 중 한 모듈은 RAID 그룹들 중 몇몇에 대해 동시에 하나 이상 또는 모든 모듈들이 도 5에 도시된 바와 같이 프로그래밍하거나 소거되는 동시에 프로그래밍 또는 소거될 수 있다. 이런 시스템에서, 가령, 소거 또는 프로그램을 수행할 수 있는 컬럼은 시간 주기의 고정된 할당에 의해 결정될 수 있는 한편, 전체 행 또는 RAID 그룹은 소거 또는 프로그램 동작을 수행할 수 있을 때의 결정은 다음 RAID 그룹이 토큰 패싱의 형태를 시작할 수 있음을 나타내는 다음 RAID 그룹으로 명령을 전송하는 RAID 그룹내 모듈들 중 하나에 의해 결정될 수 있고, 모듈은 RAID 그룹내 모든 모듈들이 제 2 토큰패싱 방식, 행해질 때까지 모든 모듈들이 보유되는 '풀다운(pull down)' 와이어, 행해진 것을 나타내기 위한 다른 모듈들이 사용되는 공통버스, 또는 유사한 방법 또는 구성의 이용에 의해 그들의 프로그램 또는 소거 동작을 마친 것으로 판단할 수 있다. The assignment of the time periods in which the memory modules can perform the erase or program (write) operation can be performed in any manner, for example, by the transfer of control messages from the global controller to the modules, May be done with a time base assignment for the global reference time to operate in accordance with the local determination of the time period by a common bus or wire, among others. Access combinations may be used; For example, when a given programming data rate is greater than can be satisfied by having a single column of RAID group execution programming at a time and there are multiple RAID groups, one or several of the RAID groups may be assigned to some of the RAID groups At the same time, one or more or all of the modules may be programmed or erased at the same time as they are programmed or erased as shown in FIG. In such a system, for example, a column that can perform an erase or program may be determined by a fixed allocation of time periods, while a determination of when an entire row or a RAID group can perform an erase or program operation may be determined by the next RAID May be determined by one of the modules in the RAID group that sends a command to the next RAID group indicating that the group can start the form of token passing, and the module continues until all modules in the RAID group have been processed, It can be determined that the program or erase operation has been completed by the use of a "pull down" wire in which all modules are held, a common bus in which other modules are used to indicate what has been done, or similar methods or configurations.

모든 시간주기들이 겹치지 않을 경우, 소기 또는 프로그램 동작의 지연효과가 완전히 가려질 수 있다; 시간 주기들이 다만 실질적으로 겹치지 않을 경우, 소기 또는 프로그램 동작의 지연은 중첩 시간 주기까기 관찰될 수 있다. 시간 중첩량이 100% 미만인 한, 상기 기기 및 방법으로 여전히 완전히 겹친 소거 및 프로그램 동작에 비해 접속시간 지연이 줄어들 수 있다. If all the time periods do not overlap, the delay effect of the scrambling or program operation may be completely obscured; If the time periods do not substantially overlap, the delay of the scrambling or program operation can be observed up to the overlap time period. As long as the amount of time overlap is less than 100%, the connection time delay can be reduced compared to the erase and program operations still completely overlapping with the apparatus and method.

도 5에 도시된 바와 같이, 몇몇 RAID 그룹은 하나 이상의 모듈들에 또는 그룹내 모든 모듈들에 걸쳐 프로그램 또는 소거 동작을 수행하는 경우, 비중첩 시간은 RAID 그룹내 한 모듈로부터 다음 모듈로라기보다는 다음 RAID 그룹에 대한 한 RAID 그룹의 비중첩 시간이다. As shown in FIG. 5, when several RAID groups perform a program or erase operation to one or more modules or all the modules in the group, the non-overlap time may be determined from one module in the RAID group to the next It is the non-overlapping time of one RAID group for a RAID group.

본 명세서에서 지연 향상은 단일 읽기 접속의 향상이 아니라, 가령, 모든 RAID 그룹에 행해지는 읽기 접속이 있다면, 하나 이상의 모듈이 프로그램되거나 소거되는 RAID 그룹에 대한 이들 접속들만 지연이 증가되는 반면, 한 모듈만을 프로그램하거나 소거하는 이들 RAID 그룹에 대한 접속은 그와 같은 증가를 겪지 않게 된다. 그 결과, 모든 읽기접속에 대한 평균 지연이 향상될 수 있다. It should be noted here that the delay enhancement is not an improvement in a single read access, but only if, for example, there is a read access to all RAID groups, the delay is increased only for those connections to the RAID group in which one or more modules are programmed or erased, The connections to these RAID groups that only program or erase will not experience such an increase. As a result, the average delay for all read connections can be improved.

착탈가능하거나 고정될 수 있는 다른 구성의 플래시 메모리에 대한 접근이 적용될 수 있다. 본 명세서에 상술한 접근은 모듈이 충분한 개수의 플래시 디바이스들을 갖는다면 모듈 자체내에 행해질 수 있다. 따라서, 상기 접근은 메모리 구조내 여러 수준들에 가령, SATA, SCSI, 파이버 채널, 또는 다른 형태의 요인들과 같은 디스크 접속 프로토콜 또는 공지되거나 개발될 수 있는 접속 프로토콜에 의해 상호연결된 현재 사용되는 표준 하드 드라이브의 폼팩터로 고체상태 디스크(SSD)에 무관하게 사용될 수 있다. RAID 그룹 및 모듈들 간의 일치로 RAID 그룹의 모듈 및 "컬럼"의 일대일 대응이 될 수 없게 된다. 예컨대, RAID 그룹의 "컬럼"이 하나 이상의 모듈에 걸쳐 퍼질 수 있거나, RAID 재구성으로 인해, 모듈상의 데이터가 교체 모듈로 이동되는 과정에 있을 수 있고 어떤 시간주기 동안, 하나 이상의 모듈은 RAID 그룹의 "컬럼"을 포함할 수 있다. Access to flash memories of other configurations which may be removable or fixed may be applied. The approach described herein may be done within the module itself if the module has a sufficient number of flash devices. Thus, the approach may be applied to various levels within a memory structure, such as disk access protocols, such as SATA, SCSI, Fiber Channel, or other types of factors, or currently used standard hard- It can be used regardless of solid state disks (SSD) in the drive's form factor. The correspondence between the RAID group and the modules can not be a one-to-one correspondence of the modules and "columns" of the RAID group. For example, a "column" of a RAID group may spread across more than one module, or due to RAID reconfiguration, data on the module may be in the process of moving to a replacement module, Column ".

또 다른 태양으로, RAID-6 구성은 또 다른 패리티 계산이 데이터 어레이의 컬럼에 행해지는 RAID-4/5에 중첩될 수 있다. 대안으로, 추가 패리티 계산이 물리적 구성으로 여겨지는 데이터 어레이의 컬럼에 이루어진다. 즉, 메모리 모듈을 스트라이프에 할당하는 것에 상관없이, 모듈들의 선형 어레이의 컬럼에 있는 데이터는 패리티 데이터를 계산하기 위해 XOR될 수 있다. 이는 또한 도 4a 또는 도 4b에 도시된 바와 같은 이진수 트리의 경우에 행해질 수 있다. 예컨대, 제 1 패리티 데이터를 만들기 위해 트리에 있는 2개 메모리 모듈로부터의 데이터가 XOR될 수 있다. 마찬가지로 이 패리티 블록은 새로운 패리티 블록을 만들기 위해 수신 모듈에 있는 데이터와 XOR될 수 있다. 이는 이진수 트리이기 때문에, 2개의 새 패리티 블록들이 각각의 노드로부터 XOR의 처리가 다시 수행될 수 있는 트리내 다음 높은 물리적 노드로 그리하여 트리의 루트까지 전송될 수 있거나 몇몇 다른 상위 레벨 노드에 도달된다. 이 패리티 데이터는 마찬가지로 RAID-6 시스템의 컬럼 패리티와 유사하게 이용될 수 있어 하나 이상의 모듈이 고장난 경우 추가 패리티 데이터를 제공한다. XOR 패리티 데이터의 전파는 트리의 임의의 레벨에서 데이터 블록 자체에 대해 요구되는 데이터량에 제한되고 상당한 버스 부하없이 실질적으로 균일하게 메모리 모듈에 걸쳐 분포된 XOR 패리티의 계산과 관련된 계산으로 수행될 수 있다.In another aspect, a RAID-6 configuration may be overlaid on RAID-4/5, where another parity calculation is performed on the columns of the data array. Alternatively, additional parity computation may be performed on columns of the data array that are considered physical configurations. That is, regardless of whether a memory module is assigned to a stripe, the data in the column of the linear array of modules can be XORed to compute the parity data. This can also be done in the case of a binary tree as shown in FIG. 4A or FIG. 4B. For example, data from the two memory modules in the tree may be XOR'ed to create the first parity data. Similarly, this parity block can be XORed with the data in the receiving module to create a new parity block. Since this is a binary tree, two new parity blocks can be sent from each node to the next higher physical node in the tree where processing of the XOR can be performed again, to the root of the tree, or some other higher level node is reached. This parity data can likewise be used similarly to the column parity of a RAID-6 system, providing additional parity data if one or more of the modules fails. Propagation of XOR parity data may be performed with computations associated with the computation of XOR parity that is limited to the amount of data required for the data block itself at any level of the tree and distributed substantially uniformly across the memory modules without significant bus loading .

메모리 모듈이라는 용어가 사용된 경우, 메모리 모듈은 예컨대 복수의 메모리 회로들을 갖는 플러그식 회로카드일 수 있거나, 메모리 모듈이 회로 카드상의 메모리 회로들 또는 고체상태 디스크(SSD)로 알려진 것 중 각 하나 또는 한 그룹일 수 있다; SSD는 개개의 카드들로부터 대신하도록 될 수 있는 현재 표준화 기계 디스크 드라이브의 크기 및 형태에 맞을 수 있는 패키지들로 많은 폼팩터들로 된다. 메모리 모듈 또는 스토리지 위치와 관련될 수 있는 논리 어드레스 범위의 스케일 크기는 본 명세서에서의 설명에 국한되도록 되어 있지 않으며 따라서 메모리 모듈은 더 크거나 더 작은 스토리지 디바이스 또는 데이터 구조 모두를 포함할 수 있다.When the term memory module is used, the memory module may be, for example, a pluggable circuit card having a plurality of memory circuits, or the memory module may be a memory circuit on a circuit card or a respective one of what is known as a solid state disk (SSD) Be a group; SSDs come in many form factors with packages that can fit the size and type of current standardized machine disk drives that can be substituted from individual cards. The scale size of the logical address range that may be associated with the memory module or storage location is not intended to be limited to the description herein, and thus the memory module may include both larger or smaller storage devices or data structures.

예로서, 도 8은 각 모듈이 하나 이상의 RAID 그룹에 속할 뿐만 아니라 RAID 그룹들은 모듈들에 걸쳐 여러가지 방식으로 스트립되는 모듈 그룹을 도시한 것이다. 예컨대, RAID 그룹(A,B,C,D)은 수평으로 스트립되며, 각 스트립은 X 어드레스를 포함며, 스트립 A는 어드레스 0에서 X-1, B는 X에서 2X-1 등을 갖는 반면, E, F, G, H, I는 대각선으로 스트립되고, 각 그룹은 또한 X 어드레스를 포함한다. 도 9는 그룹내 어드레스 개수가 연속이거나 다른 그룹과 동일할 필요가 없음을 나타낸다. 이 예에서, 그룹 I에서 마지막 어드레스 다음, 어드레싱은 0에서 X-1 및 9X에서 10X-1 어드레스를 갖는 그룹(A)로 시작하도록 걸친다.By way of example, FIG. 8 illustrates a group of modules where each module belongs to more than one RAID group, and RAID groups are stripped in various ways across the modules. For example, a RAID group (A, B, C, D) is stripped horizontally, each strip containing an X address, strip A has X-1 at address 0, B has 2X- E, F, G, H, I are stripped diagonally, and each group also includes an X address. 9 shows that the number of in-group addresses is continuous or not to be the same as another group. In this example, addressing follows the last address in group I, starting with group A having 10X-1 addresses at X-1 and 9X at zero.

도 8 및 도 9는 균일하고 규칙적인 레이아웃을 도시한 한편, RAID 스트라이프들은 규칙적이거나 균일할 필요가 전혀 없으며, 예로서, ZFS 파일 시스템은 모든 데이터 피스가 본 명세서에 기술된 스토리지 시스템에 있는 임의의 모듈 세트에 배치될 수 있는 자신의 RAID 스트라이프에 작성되게 한다.While Figures 8 and 9 illustrate a uniform and regular layout, RAID stripes need not be regular or uniform, and as an example, a ZFS file system can be used for all data pieces in any To be written to its own RAID stripe that can be placed in the module set.

일태양으로, RAID 스트라이프의 데이터는 복수의 데이터 그룹들로 분할될 수 있다. 패리티 패턴은 복수의 데이터 그룹들의 배타적 OR(XOR)로 계산된다. 데이터 및 패리티 그룹들은 RAID 스트라이프로 작성된다. 패리티 데이터는 RAID 스트라이프의 메모리 모듈들 사이에 분포될 수 있거나 상기 데이터와 별개의 RAID 스트라이프의 메모리 모듈에 작성될 수 있다. RAID 스트라이프가 읽어지고 RAID 스트라이프가 M 메모리 모듈을 가지면, 메모리 컨트롤러에 의해 수신되는 첫번째 M-1 메모리 모듈로부터의 데이터가 읽어진 RAID 스트라이프에 저장된 데이터를 판단하는데 사용될 수 있다. 쓰기 또는 소거 동작이 한번에 모듈들 중 단 하나에만 수행될 수 있도록 RAID 스트라이프의 메모리 모듈들이 관리되면, 저장된 데이터를 복구하는데 충분한 읽기 동작이 임의의 쓰기 또는 소거 동작의 완료를 기다리지 않고도 수행될 수 있다. In an aspect, the data of the RAID stripe may be divided into a plurality of data groups. The parity pattern is calculated by an exclusive OR (XOR) of a plurality of data groups. Data and parity groups are created as RAID stripes. The parity data may be distributed among the memory modules of the RAID stripe or may be written to the memory strip of the RAID stripe which is separate from the data. If a RAID stripe is read and the RAID stripe has an M memory module, data from the first M-1 memory module received by the memory controller can be used to determine the data stored in the read RAID stripe. If the memory strips of the RAID stripes are managed so that write or erase operations can only be performed on only one of the modules at a time, a read operation sufficient to restore the stored data can be performed without waiting for the completion of any write or erase operations.

또 다른 태양으로, 메모리 시스템에서 스트라이프의 배열은 지연, 읽기 또는 쓰기 속도, 고장 허용오차 등과 같은 시스템의 성능의 하나 이상의 태양을 최적화하는 정책에 따라 선택될 수 있다. 다음 예들은 복수의 다른 스트라이프 특성들을 만들기 위해 물리적 메모리 모듈에 대한 논리 어드레스 범위의 할당 면에서 기술되어 있다. 메모리 모듈에서 물리적 어드레스에 논리 어드레스의 할당은 가비지 컬렉션, 오류정정 등과 같은 시스템 성능의 다른 특징들을 강조한 정책에 의해 수행될 수 있다. 그러나, 이들 정책 확립시, 메모리 회로의 구성은 유사한 목적을 달성하기 위해 시스템의 상위 메모리 모듈의 구성을 흉내낼 수 있다. 다시, 논리 대 물리적 어드레싱 변환이 발생하는 계층의 레벨은 이 논의에 국한되지 않는다.In another aspect, the arrangement of the stripes in the memory system may be selected according to a policy that optimizes one or more aspects of the performance of the system, such as delay, read or write speed, fault tolerance, and the like. The following examples describe the allocation of logical address ranges for a physical memory module to create a plurality of different stripe characteristics. The assignment of a logical address to a physical address in a memory module may be performed by a policy that emphasizes other aspects of system performance, such as garbage collection, error correction, and the like. However, in establishing these policies, the configuration of the memory circuit may mimic the configuration of the upper memory module of the system to achieve a similar purpose. Again, the level of hierarchy in which logical to physical addressing transitions occur is not limited to this discussion.

논리 어드레스 어레이에서 스트라이프의 출현으로 논리 어드레스 범위에 스트라이프의 할당은 도 10에 도시된 바와 같이 행렬 접근으로 지시될 수 있다. 이런 배열은 설명을 할 목적으로 편리할 수 있으나 국한하려는 의도는 아니다. 다양한 할당 알고리즘들이 사용될 수 있다. 위치를 기술하는데 사용된 변환은 (행,열)이다. 몇몇 예에서, 행 또는 열은 상술한 쓰기/소거 주기 및 (적어도 쓰기 대역폭의 몇몇 레벨까지) 쓰기 또는 소거 동작과 관련된 지연 없이 데이터를 복구하기 위해 스트라이프에 대한 패리티와 결부하여 스트라이프로부터 모든 데이터 미만의 사용과 관련될 수 있다. 어드레스 범위의 행렬 포맷으로의 배열은 많은 가능한 배열들 중 단 하나이며 행렬 표현은 복수의 예들을 설명할 때 가장 쉽게 이해되는 것으로 예에서 이용을 위해 선택된 것임을 알아야 한다. The assignment of a stripe to a logical address range from the appearance of a stripe in a logical address array may be indicated by a matrix approach as shown in FIG. This arrangement may be convenient for explanation purposes, but is not intended to be confined. Various assignment algorithms can be used. The transformation used to describe the location is (row, column). In some instances, a row or column may have less than all data from the stripe in conjunction with parity for the stripe to recover the data without the delay associated with the write / erase cycle described above (and at least to some level of write bandwidth) May be related to use. It should be appreciated that the array of address ranges in the matrix format is only one of many possible arrangements and that the matrix representation is selected for use in the example as being most readily understood when describing multiple examples.

"소거 숨기기"라는 용어는 상술한 개념들을 일반적으로 설명하는데 사용될 수 있으며, 메모리에 쓰거나 메모리를 소거하는 효과가 메모리로부터 데이터를 읽는 과정에 영향을 끼치게 나타나지 않도록 스트라이프에 있는 모든 데이터보다 더 적게 스트라이프의 데이터를 복구하는데 사용될 수 있다. "소거 숨기기"는 소정 시스템 부하 하에서 완전히 효과적이거나 시스템 부하가 계속 증가할 때 부분적으로 효과적일 수 있다. The term "erase-hide" can be used to generally describe the concepts described above, and it is understood that the effect of writing to or erasing the memory does not appear to affect the process of reading data from memory. It can be used to recover data. "Erase Hide" may be fully effective under a given system load or partially effective when the system load continues to increase.

가상 시스템에서 동작하는 프로그램과 같은 특별한 적용을 위해 메모리에서 데이터의 위치는 예컨대 지연의 최소화, 전달 대역폭, 데이터 복구 속도, 데이터 손실 확률 등을 강조하도록 선택될 수 있다. 이런 시스템에서 데이터의 스토리지를 이해하기 위해, 논리 어레이 공간 및 물리적 메모리 공간의 개념이 설명을 간단히 하기 위해 이용된다. 논리 어레이 공간을 물리적 메모리로의 맵핑은 소거 숨기기에 의해 부과된 요건에 의해 몇몇 경우 제한될 수 있다. 데이터는 데이터 스트라이프을 이용해 논리 어드레스 공간에 퍼뜨려질 수 있다. 데이터 스트라이프는 관련된 패리티 데이터를 가질 수 있다. 단일 패리티, 듀얼 패리티 또는 몇몇 다른 오류정정 기술이 스트라이프의 데이터에 적용될 수 있고, 행렬 패리티가 사용될 때와 같이 스트라이프에 저장되거나 그 밖의 다른 곳에 저장될 수 있다. For a particular application, such as a program running in a virtual system, the location of data in memory may be selected to highlight, for example, delay minimization, transfer bandwidth, data recovery rate, data loss probability, To understand the storage of data in such a system, the concepts of logical array space and physical memory space are used to simplify the description. The mapping of logical array space to physical memory may be limited in some cases by the requirements imposed by erasure hiding. Data can be spread in the logical address space using data stripes. The data stripe may have associated parity data. Single parity, dual parity, or some other error correction technique may be applied to the data of the stripe and stored in a stripe or elsewhere, such as when a matrix parity is used.

어드레스 공간의 어레이에서, 도 10은 가령 어레이의 3행에서 스트라이프 "0"을 나타낸다. 스트라이프는 5개 길이를 가지며, 어드레스 범위들 모두는 데이터와 관련될 수 있다. 대안으로, 어드레스 범위들 중 하나 이상이 나머지 데이터에 대해 계산된 패리티와 관련될 수 있다. 제한으로, 어드레스 범위는 사용되는 특정 스토리지 매체에 기록될 수 있는 가장 작은 어드레스 범위일 수 있다. 이는 페이지, 섹터 등일 수 있다. 한 페이지 이상이 스트라이프 "0"의 각 스토리지 영역과 관련될 수 있다. 이 예에서, 길이 L=5의 스트라이프 "0"의 논리 어드레스 범위는 0.1 내지 0.5로 지정된다. In the array of address spaces, Fig. 10 shows a stripe "0" in the third row of the array, for example. The stripes have a length of 5, and both address ranges may be associated with the data. Alternatively, one or more of the address ranges may be associated with the calculated parity for the remaining data. By way of limitation, the address range may be the smallest address range that can be written to the particular storage medium being used. This can be a page, a sector, or the like. More than one page may be associated with each storage area of stripe "0 ". In this example, the logical address range of stripe "0" with length L = 5 is specified as 0.1 to 0.5.

스트라이프들은 논리 어레이의 컬럼 중 일부 또는 모두를 가로지르도록 배열될 수 있다. 스트라이프의 어드레스 범위는 도 11에 도시된 바와 같이 각 컬럼에 대한 논리 어레이의 다른 행들을 차지할 수 있다. 여기서, 길이 5의 제 2 스트라이프 "1"이 도시되어 있고, 매 컬럼 증분에 대한 1씩 행 번호가 줄어든다. 도 12에서, 또 다른 스트라이프, 가령 스트라이프 "2"는 스트라이프 "1"과 유사할 수 있으나, 행 수가 열 증분마다 1씩 증가하도록 배열될 수 있다. The stripes may be arranged to traverse some or all of the columns of the logic array. The address range of the stripe may occupy different rows of the logical array for each column, as shown in Fig. Here, a second stripe "1" of length 5 is shown, and the row number is reduced by one for every column increment. In Fig. 12, another stripe, e.g., stripe "2" may be similar to stripe "1 ", but the number of rows can be arranged to increase by one for every column increment.

행 수의 증가 값은 1보다 클 수 있으며, 이는 도 13에 도시된 바와 같이 행 수가 모든 열 증분에 대해 2씩 증가한다. 이 도면에서 어레이의 크기는 간단하게 스트라이프를 나타내도록 5×5에서 5×9까지 확장되었다. 도 14는 2개의 행 감소를 갖는 것을 도시하고 있다. 스트라이프는 또한 수직으로 배열될 수 있어, 도 15에서 스트라이프 "5"에 대해 도시된 바와 같이 열을 차지한다. 컬럼에 해당하는 스트라이프 "5"는 소거 숨기기가 이용되는 메모리 적용에서 사용하는데 부적합할 수 있고, 소거 숨기기는 공통 시간주기 동안 컬럼에 해당하는 물리적 메모리 모듈들에 대해 소거가 수행되도록 구성된다. 이런 상황으로 물리적 메모리 응답이 사용자 데이터 요청과 충돌하는 소거 주기에 의해 손상될 때 스트라이프를 재구성하기에는 데이터가 불충분해질 수 있다. 그러나, 소거 주기가 행 기반상에 구성된다면, 스트라이프 "0"은 소거 숨기기 봉쇄와 조우될 수 있는 한편, 스트라이프 "5"는 소거 숨기기를 방지할 수 있다. 표현을 간단히 하기 위해, 일반적으로 열은 공통 소거 주기동안 소거되는 것으로 여겨진다. 그러나, 행들도 마찬가지로 취급될 수 있고 이들 동작들과 관련된 물리적 메모리 모듈의 위치들은 메모리 어레이의 물리적 속성들에 따르는 할당 테이블에 의해 제어될 수 있고, 행렬 구성으로 나타나지 않을 수 있음이 당업자에 명백하다. 이는 예컨대 도 4에서 명백할 수 있다. 개개의 모듈들은 소거시간 그룹으로 구성될 수 있고 각 소거시간 그룹은 논리 행에 대응할 수 있다. The increment value of the number of rows can be greater than one, which increases the number of rows by two for every column increment, as shown in FIG. In this figure, the size of the array was expanded from 5x5 to 5x9 to simply represent the stripe. FIG. 14 illustrates having two row reductions. The stripes can also be arranged vertically, occupying heat as shown for stripe "5 " in Fig. The stripe "5" corresponding to the column may be unsuitable for use in memory applications where erase hiding is used, and erase hiding is configured such that erasing is performed on physical memory modules corresponding to columns during a common time period. In this situation, data may become insufficient to reconstruct the stripe when the physical memory response is corrupted by an erase cycle that conflicts with a user data request. However, if the erase period is configured on a row basis, stripe "0" may be encountered with erasure hiding containment while stripe "5" may prevent erasure hiding. To simplify the representation, it is generally considered that the column is erased during the common erase cycle. However, it will be apparent to those skilled in the art that the rows may also be handled similarly and the locations of the physical memory modules associated with these operations may be controlled by an allocation table that conforms to the physical attributes of the memory array, and may not appear in a matrix configuration. This may be evident, for example, in FIG. Individual modules may be organized into erase time groups and each erase time group may correspond to a logical row.

대안으로, 물리적 모듈들은 별개의 어드레스가능한 "짝수" 및 "홀수" 메모리 위치들을 갖도록 구성될 수 있고 짝수 및 홀수 메모리 위치들은 다른 소거 숨기기 주기에 할당될 수 있으며, 이는 논리적 행렬 식으로 별개로 수행될 수 있다. 이런 구성은 메모리 모듈의 내부 대역폭이 데이터 전송속도에 대한 제한인 경우 유용할 수 있다. Alternatively, the physical modules may be configured to have separate addressable "even" and "odd" memory locations, and even and odd memory locations may be assigned to different erase hide periods, . This configuration may be useful if the internal bandwidth of the memory module is limited by the data transfer rate.

행 또는 열에서 스트라이프의 범위가 논리 어레이의 경계를 초과하면, 스트라이프는 도 16에 도시된 바와 같이 모듈로 산술 기반으로 랩 어라운드될 수 있고, 이는 5×5 매트릭스에 사용될 때 도 14의 스트라이프에 해당한다. 도 16의 어레이는 스트라이프가 양 컬럼 1 및 5에서 랩 어라운드되게 하는 크기이나, 대형 어레이에서 랩 어라운드는 특별한 방향으로 어레이의 경계를 지나 뻗어 있는 스트라이프의 이룹에 대해 발생할 수 있다. 도 17은 도 13의 스트라이프 방향에 대해 유사한 상황을 도시한 것이다. If the range of the stripe in the row or column exceeds the boundaries of the logical array, then the stripe may wrap around on a modular arithmetic basis as shown in Figure 16, which corresponds to the stripe in Figure 14 when used in a 5x5 matrix do. The array of FIG. 16 is sized to allow the stripes to wrap around in both columns 1 and 5, but in large arrays the wraparound may occur for the stripes of stripes extending beyond the boundaries of the array in a particular direction. Fig. 17 shows a similar situation with respect to the stripe direction in Fig.

개략적으로, 이 예의 스트라이프들의 방향들은 기울기를 갖는 라인들이 0, ±1, 및 ±2 행/렬 기울기를 갖는 라인들로 일반화됨에 따라 가시화될 수 있다. 더 큰 단계 크기들도 또한 이용될 수 있다.In general, the directions of the stripe in this example can be visualized as the lines having a slope are generalized to lines with 0, 占 1, and 占 line / column tilt. Larger step sizes may also be used.

특정 스트라이프를 포함한 논리 어드레스 범위는 스트라이프마다 다를 수 있다. 도 18에 도시된 바와 같이, 복수의 스트라이프들의 일부가 동일한 행렬에 저장될 수 있다. 여기서, 도 10, 11, 12, 16 및 17에서 앞서 도시된 스트라이프 방향들은 각 스트라이프의 논리 어드레스 범위(3)가 논리 어레이의 (3,3)에서 발견되도록 중첩된다. 도 15의 수직 스트라이프가 또한 도 19에 도시된 바와 같이 사용될 수 있다. 모든 스트라이프들은 중심 어레이 위치(3,3)에서 발견되고, 각 스트라이프도 또한 별개의 어레이 위치에서 발견된다.The range of logical addresses including a specific stripe may be different for each stripe. As shown in FIG. 18, a part of a plurality of stripes may be stored in the same matrix. Here, the stripe directions shown previously in Figs. 10, 11, 12, 16, and 17 are overlapped so that the logical address range 3 of each stripe is found in (3, 3) of the logical array. The vertical stripe in Fig. 15 can also be used as shown in Fig. All the stripes are found in the central array position 3, 3, and each stripe is also found in a separate array position.

이 스트라이프 패턴은 스트라이프 클러스터라 할 수 있고, 메모리 시스템의 성능을 제어하기 위해 여러가지 방법으로 이용될 수 있는 데이터 분산 효과를 갖는다. 대형 어레이 및 대형 스트라이프 길이(L)에서, ±3, ±4 등과 같이 스트라이프 클러스터의 일부로서 다른 스트라이프 기울기 및 패턴들이 이용될 수 있다. This stripe pattern can be called a stripe cluster and has a data dispersion effect that can be used in various ways to control the performance of the memory system. In large arrays and large stripe lengths (L), other stripe tilt and patterns may be used as part of the stripe cluster, such as +/- 3, < RTI ID = 0.0 >

도 18에서, 각 스트라이프는 동일한 데이터 량을 갖도록 나타날 수 있다. 즉, 도시된 바와 같이, 각 어드레스 범위 그룹의 스토리지 능력을 특징하는 표시가 전혀 없다. 각 스트라이프는 폭 Ws을 갖는다고 할 수 있다. 물리적 메모리 모듈에 할당된 스트라이프내 총 메모리양은 모듈의 총 물리적 메모리 및 가비지 컬렉션, 최대 소정의 타임라인 로딩 등과 같이 하우스키핑 요건들을 고려해 사용자에 이용가능한 메모리 모듈내 총 물리적 메모리의 퍼센트를 고려함으로써 결정된 최대량까지일 수 있다. 본 예에서, 하우스키핑 기능은 무시되고 물리적 메모리는 완전히 스트라이프에 할당될 수 있다. 모듈에 할당된 스트라이프들에 대한 Ws의 합은 총 물리적 메모리와 같을 수 있다. In Fig. 18, each stripe may appear to have the same amount of data. That is, as shown, there is no indication characterizing the storage capability of each address range group. Each stripe has a width W s . The total amount of memory in the stripes allocated to the physical memory module is determined by considering the percentage of total physical memory in the memory module available to the user considering the housekeeping requirements, such as total physical memory and garbage collection of the module, maximum predetermined timeline loading, Lt; / RTI > In this example, the housekeeping function is ignored and the physical memory can be completely allocated to the stripe. The sum of W s for the stripes assigned to the module may be equal to the total physical memory.

도 18에서 위치(3,3)가 물리적 메모리 모듈에 해당하는 경우, 스트라이프의 폭(W)의 합이 이용가능한 물리적 메모리와 같거나 더 적다면 스트라이프 클러스터의 모든 스트라이프들이 상기 모듈에 수용될 수 있다. 도 20은 스트라이프들이 다른 폭을 가질 수 있는 어레이의 도면이다. 이 예에서, -3 기울기의 스트라이프가 있는 스트라이프 "20"은 스트라이프 21 내지 23으로 복제되는 한편, -1의 기울기인 스트라이프(10)는 복제되지 않는다. 그러므로, 각각의 스트라이프 어드레스 범위(X.3)가 메모리(M)양을 나타낼 경우, 스트라이프 -3은 3M 메모리 공간을 포함하는 것으로 보여질 수 있는 한편, 스트라이프 방향 -1은 M의 메모리 공간을 포함하는 것으로 보여질 수 있다. 다른 배열들도 또한 가능하며, 스트라이프의 메모리 공간은 특별한 적용 프로그램 또는 복수의 할당 프로그램에 할당될 수 있다. In Fig. 18, if position (3, 3) corresponds to a physical memory module, all stripes of the stripe cluster may be accommodated in the module if the sum of the widths W of the stripes is less than or equal to the available physical memory . Figure 20 is a view of an array in which the stripes may have different widths. In this example, stripe " 20 "with a stripe of -3 slope is replicated to stripes 21 to 23, while stripe 10 with a slope of -1 is not replicated. Thus, if each stripe address range X.3 represents the amount of memory M, stripe-3 can be seen to include 3M memory space while stripe direction-1 includes the memory space of M Can be seen as doing. Other arrangements are also possible, and the memory space of the stripe may be allocated to a particular application program or a plurality of allocation programs.

예컨대, 제한이 아니라, 스트라이프들 각각이 4개의 데이터 요소들과 스트라이프의 데이터 요소로부터 계산된 하나의 패리티를 포함하면, 임의의 성능 열하 없이 (3,3)에서 자원 충돌이 있더라도 또 다른 하나가 접속되는 동안 스트라이프들 중 어느 하나가 접속될 수 있다. 이는 하드웨어 충돌 또는 제한을 인해 읽기에 있어 지연이 될 수 있는 스트라이프의 임의의 어드레스 범위를 대신하도록 패리티의 사용에 따른다. 도 18에 도시된 바와 같은 배열 또는 유사한 배열이 가령 더 큰 메모리 시스템의 각 메모리 모듈내 물리적 메모리에 데이터의 할당시 사용될 수 있다. 도 21 및 도 22는 다른 크기의 어레이에서 모듈 랩핑을 도시한 것이다. For example, rather than limiting, if each of the stripes contains one parity computed from four data elements and a data element of the stripe, even if there is a resource conflict in (3,3) without any performance penalty, Any one of the stripes may be connected. This is due to the use of parity to replace any address range of the stripe that can be a delay in reading due to hardware conflicts or restrictions. An array or similar arrangement as shown in Fig. 18 may be used, for example, in the allocation of data to physical memory in each memory module of a larger memory system. Figures 21 and 22 illustrate module wrapping in different sized arrays.

발생 스트라이프 패턴들은 예컨대, 마이크로소프트 엑셀로 실행하는 다음의 매크로스를 참조로 이해될 수 있는 정책 또는 방법을 이용할 수 있고, 상기 동작은 당업자에 이해될 수 있다:The resulting stripe patterns can use policies or methods that can be understood with reference to the following macros running on Microsoft Excel, for example, and those operations can be understood by those skilled in the art:

//도 23에 대한 코드 // code for FIG. 23

For i = 0 To 4 For i = 0 To 4

Call make_stripe(5, 5, 5, 0, i, 5 * i + 0, 0, 2) Call make_stripe (5, 5, 5, 0, i, 5 * i + 0, 0, 2)

Call make_stripe(5, 5, 5, 0, i, 5 * i + 1, 1, 2) Call make_stripe (5, 5, 5, 0, i, 5 * i + 1, 1, 2)

Call make_stripe(5, 5, 5, 0, i, 5 * i + 2, 2, 2) Call make_stripe (5, 5, 5, 0, i, 5 * i + 2, 2, 2)

Call make_stripe(5, 5, 5, 0, i, 5 * i + 3, 3, 2) Call make_stripe (5, 5, 5, 0, i, 5 * i + 3, 3, 2)

Call make_stripe(5, 5, 5, 0, i, 5 * i + 4, 4, 2) Call make_stripe (5, 5, 5, 0, i, 5 * i + 4, 4, 2)

Next i
Next i

//도 34에 대한 코드 // code for FIG. 34

For i = 0 To 9 For i = 0 To 9

Call make_stripe(7, 7, 5, (i * 5), 0, i, 6, 0) Call make_stripe (7, 7, 5, (i * 5), 0, i, 6, 0)

Next i Next i

For i = 10 To 19 For i = 10 To 19

Call make_stripe(7, 7, 5, (i * 10), 0, i, 7, 0) Call make_stripe (7, 7, 5, (i * 10), 0, i, 7, 0)

Next i
Next i

For i = 20 To 29 For i = 20 To 29

Call make_stripe(7, 7, 5, (i * 15), 0, i, 8, 0) Call make_stripe (7, 7, 5, (i * 15), 0, i, 8, 0)

Next i Next i

For i = 30 To 39 For i = 30 To 39

Call make_stripe(7, 7, 5, (i * 20), 0, i, 9, 0) Call make_stripe (7, 7, 5, (i * 20), 0, i, 9, 0)

Next i Next i

For i = 40 To 49 For i = 40 To 49

Call make_stripe(7, 7, 5, (i * 25), 0, i, 10, 0) Call make_stripe (7, 7, 5, (i * 25), 0, i, 10, 0)

Next i Next i

// helper functions
// helper functions

Sub make_stripe(width As Integer, height As Integer, ssize As Integer, x As Integer, y As Integer, addr As Integer, stype As Integer, pivot As Integer) Sub make_stripe (width As Integer, height As Integer, ssize As Integer, x As Integer, y As Integer, addr As Integer, stype As Integer, pivot As Integer)

Dim i As Integer Dim i As Integer

Dim j As Integer Dim j As Integer

Dim 1 As Integer Dim 1 As Integer

For 1 = 0 To (ssize - 1) For 1 = 0 To (ssize - 1)

j = stripe_x(ssize, stype, pivot, 1) j = stripe_x (ssize, stype, pivot, 1)

i = stripe_y(addr, stype, pivot, 1, j + x, width) i = stripe_y (addr, stype, pivot, 1, j + x, width)

j = ((j + x + width) Mod width) + 1) * 2 j = ((j + x + width) Mod width) + 1) * 2

i = (((i + y + height) Mod height) + 1) * 2 i = (((i + y + height) Mod height) + 1) * 2

Cells(i, j).Value = Cells(i, j).Value & " " & addr & "." & (1 + 1) Cells (i, j) .Value = Cells (i, j) .Value & "" & addr & "." & (1 + 1)

Cells(i, j).Select Cells (i, j) .Select

Call make_border Call make_border

Next l Next l

End Sub
End Sub

Function stripe_x(ssize As Integer, stype As Integer, pivot As Integer, pos As Integer) Function stripe_x (ssize As Integer, stype As Integer, pivot As Integer, pos As Integer)

Select Case stype Select Case stype

Case -1 Case -1

stripe_x = 0 stripe_x = 0

Case 7 Case 7

stripe_x = pos * 2 stripe_x = pos * 2

Case 8 Case 8

stripe_x = pos * 3 stripe_x = pos * 3

Case 9 Case 9

stripe_x = pos * 4 stripe_x = pos * 4

Case 10 Case 10

stripe_x = pos * 5 stripe_x = pos * 5

Case Else Case Else

stripe_x = pos stripe_x = pos

End Select End Select

End Function
End Function

Function stripe_y(n As Integer, stype As Integer, pivot As Integer, pos As Integer, x As Integer, w As Integer) Function stripe_y (n As Integer, stype As Integer, pivot As Integer, pos As Integer, x As Integer, w As Integer)

Dim q As Integer Dim q As Integer

Dim p As Integer Dim p As Integer

Select Case stype Select Case stype

Case -1 Case -1

stripe_y = pos stripe_y = pos

Case O Case O

'horizontal line 'horizontal line

stripe_y = 0 stripe_y = 0

Case 1 Case 1

'forward slash 'forward slash

stripe_y = pivot - pos stripe_y = pivot - pos

Case 2 Case 2

'backward slash 'backward slash

stripe_y = pos - pivot stripe_y = pos - pivot

Case 3 Case 3

stripe_y = 2 * (pivot - pos) stripe_y = 2 * (pivot - pos)

Case 4 Case 4

stripe_y = 2 * (pos - pivot) stripe_y = 2 * (pos - pivot)

Case 5 Case 5

q = (pos + (n \ pivot)) Mod 8 q = (pos + (n \ pivot)) Mod 8

' q = pos 'q = pos

p = n + pos   p = n + pos

Select Case q    Select Case q

Case O Case O

stripe_y = p * 101       stripe_y = p * 101

Case 1 Case 1

stripe_y = p * 79 stripe_y = p * 79

Case 2 Case 2

stripe_y = p * 41 stripe_y = p * 41

Case 3 Case 3

stripe_y = p * 223 stripe_y = p * 223

Case 4 Case 4

stripe_y = p * 467 stripe_y = p * 467

Case 5 Case 5

stripe_y = p * 373 stripe_y = p * 373

Case 6 Case 6

stripe_y = p * 157 stripe_y = p * 157

Case 7 Case 7

stripe_y = p * 191 stripe_y = p * 191

End Select End Select

Case 6 Case 6

stripe_y = 0 + (x \ w) stripe_y = 0 + (x \ w)

Case 7 Case 7

stripe_y = 0 + (x \ w) stripe_y = 0 + (x \ w)

Case 8 Case 8

stripe_y = 0 + (x \ w) stripe_y = 0 + (x \ w)

Case 9 Case 9

stripe_y = 0 + (x \ w) stripe_y = 0 + (x \ w)

Case 10 Case 10

stripe_y = 0 + (x \ w) stripe_y = 0 + (x \ w)

Case Else Case Else

stripe y = 0 stripe y = 0

End SelectEnd Select

유사한 알고리즘이 예들을 설명하는데 사용된 다른 도면들을 발생하도록 사용된다. 더욱이, 이 알고리즘 또는 유사물이 실제 시스템에서 위치들과 어드레스 범위들의 할당을 계산하도록 사용될 수 있으며, 상기 알고리즘은 컴퓨터 소프트웨어 제품의 일부이다. 그러므로, 선택은 필요에 따라 연관 계산, 사전계산된 룩업테이블, 또는 상기 기술들의 조합 간에 선택이 이루어질 수 있다. A similar algorithm is used to generate the other figures used to illustrate the examples. Moreover, this algorithm or the like may be used to calculate the allocation of locations and address ranges in an actual system, which algorithm is part of a computer software product. Therefore, the selection can be made between the association calculations, the pre-computed look-up tables, or a combination of the above techniques as needed.

여태까지, 예들은 단일 메모리 모듈에 집중된 스트라이프 클러스터를 도시하였다. 그러나, 상기로부터, 랩핑이 요구되는 적절한 모듈로 산술로 스트라이프 클러스터가 가령 도 23에 도시된 바와 같이 어레이 컬럼에 각각의 메모리 모듈에 집중될 수 있다. 여기서, 길이 5 및 기울기 0, ±1, 및 ±2의 스트라이프들이 발생함수로서 사용될 수 있다. 발생함수는 가령 먼저 (3,1)에서 스트라이프 0 내지 4를 발생하고 그런 후 (3,2)에서 스트라이프 5 내지 9를 발생하고 등등해서 (3,5)까지 내려가 스트라이프 20 내지 24를 발생하는데 사용될 수 있다. 여기서, 각 모듈에서 5개 스트라이프들은 관련된 물리적 메모리 모듈의 총 메모리 공간을 차지하는 예시용으로 가정하였다.So far, the examples have shown a stripe cluster concentrated in a single memory module. From the above, however, arithmetic stripes clusters may be concentrated on each memory module in the array columns, for example, as shown in Figure 23, with the appropriate modules for which wrapping is desired. Here, stripes of length 5 and tilts 0, +/- 1, and +/- 2 may be used as generation functions. The generation function may be used, for example, to generate stripes 0-4 at (3,1) and then stripe 5 through 9 at (3,2), and so on down to (3,5) . Here, it is assumed that five stripes in each module occupy the total memory space of the associated physical memory module.

스트라이프의 중앙 교차점이 위치된 곳에 무관하게, 도 24에서처럼, 스트라이프의 나머지 데이터가 (1,3)에서 교차된 스트라이프들 중 단 하나만이 다른 모듈들 중 어느 하나를 지나도록 분산된 것을 관찰할 수 있다. 이런 배열은 모듈 고장으로 인한 회복을 용이하게 하는데 유용할 수 있다. (1,3)에 해당하는 모듈이 고장나면, 피복구될 데이터가 있는 스트라이프에 있는 나머지 데이터는 고장 모듈에 있는 데이터를 복구하는데 사용될 필요할 수 있다. 이렇게 함으로써, 나머지 데이터를 읽는 것과 관련된 시스템의 부하가 분산 데이터를 갖는 모듈에 걸쳐 폭넓게 분산되므로, 도 5의 배열의 환경일 수 있는 각각의 모듈은 덜 영향받게 되며, 스트라이프들은 모두 기울기가 0이다. 도 5의 배열에서, 고장 모듈의 데이터를 복구하는데 필요한 모든 데이터들은 4 모듈에 위치해 있는 한편, 도 23 및 도 24로 표현된 상황에서 데이터는 20 모듈들에 걸쳐 퍼질 수 있다. 또 다른 유사한 예가 도 25 및 도 26에 도시되어 있다.Regardless of where the center crossing of the stripe is located, it can be observed that the remaining data of the stripe is distributed so that only one of the crossed stripes at (1,3) is passed through any of the other modules, as in FIG. . This arrangement may be useful in facilitating recovery due to module failure. (1, 3) fails, the remaining data in the stripe with the data to be recovered may need to be used to recover the data in the faulty module. By doing this, the load of the system involved in reading the remaining data is spread widely across modules with distributed data, so that each module, which can be the environment of the array of Figure 5, is less affected, and the stripes are all zero slopes. In the arrangement of FIG. 5, all of the data needed to recover the data of the faulty module is located in four modules, while in the situation represented by FIGS. 23 and 24, the data may spread over 20 modules. Another similar example is shown in Fig. 25 and Fig.

예에서 도시된 것보다 상당히 더 클 수 있는 메모리 어레이의 성질들은 발생함수로서 한 스트라이프 클러스터를 고려함으로써 이해될 수 있다. 각 스트라이프에 대해 다를 수 있는 스트라이프들 각각이 폭(W)을 가질 수 있으나, 각 스트립이 최소 허용된 쓰기 범위와 같은 폭(W) 가령, 페이지를 갖는다면 상황을 가시화하기가 더 쉬워진다. 실제로, 메모리 회로들이 단일 디바이스 패키지에 대한 MB 또는 GB로 측정된 용량을 가지면, 각각의 스트라이프들에 대한 폭(W)은 페이지보다 상당히 더 클 수 있다. 일태양으로, 폭(W)은 128KB 또는 256KB일 수 있는 블록으로 또는 복수의 다이들이 메모리 회로에 포함된 다수의 블록들을 갖는 다이로 측정될 수 있다. The properties of the memory array, which may be considerably larger than that shown in the example, can be understood by considering a stripe cluster as the generation function. Each of the stripes that may be different for each stripe may have a width W, but it becomes easier to visualize the situation if each strip has a width W such as the minimum allowable write range, for example, a page. Indeed, if memory circuits have a capacity measured in MB or GB for a single device package, the width W for each stripe may be significantly larger than the page. In one aspect, the width W may be measured in a block that may be 128 KB or 256 KB, or in a die having a plurality of blocks in which a plurality of dies are included in a memory circuit.

길이(L)가 다르고 스트라이프 기울기가 다른 하나 이상의 스트라이프 클러스트 타입이 정의될 수 있다. 예컨대, 상술한 길이 5의 스트라이프처럼 또한 길이 7의 스트라이프가 사용될 수 있다. 길이 7의 스트라이프는 다른 개수의 데이터 및 패리티 유닛들을 가질 수 있다. 예컨대, 5페이지의 데이터 및 2 페이지의 패리티가 있을 수 있다. 이는 적용 요건에 따라 다양한 개수의 데이터 및 패리티 페이지들을 갖는 다른 길이(L)를 나타낼 수 있다. 어레이의 메모리 모듈들이 제 1 스트라이프 클러스터 패턴으로 채워지지 않았다면, 제 2 스트라이프 클러스터 패턴이 2개 패턴들로부터 데이터를 인터리브하도록 발생함수로서 또한 사용될 수 있다.One or more stripe clusters of different lengths L and different stripe gradients may be defined. For example, a stripe of length 7 may also be used, such as the stripe of length 5 described above. A stripe of length 7 may have a different number of data and parity units. For example, there may be five pages of data and two pages of parity. Which may represent different lengths L with different numbers of data and parity pages depending on application requirements. If the memory modules of the array are not filled with the first stripe cluster pattern, the second stripe cluster pattern may also be used as a generation function to interleave the data from the two patterns.

시각화 시스템에서 제 1 프로그램과 시각화 시스템에서 제 2 프로그램이 지연, 입출력 동작, 전달 대역폭, 회복 속도, 회복불가능한 데이터 손실 확률 등과 같은 다른 최적화 요건들을 갖기 때문에, (패리티를 포함한) 스트립핑 패턴이 기준을 가장 잘 충족하도록 선택될 수 있다.Since the first program in the visualization system and the second program in the visualization system have other optimization requirements such as delay, input / output operation, transmission bandwidth, recovery rate, unrecoverable data loss probability, etc., the stripping pattern (including parity) It can be chosen to best meet.

각 스트라이프가 복수의 페이지들로 작성되면, 패리티는 작성된 스트라이프에 대해 계산될 수 있고, 데이터와 동일한 시기에 메모리 작성된다. 이런 식으로, 메모리로부터 데이터 읽기는 패리티의 계산에 필요하지 않다. 상기 데이터는 이전 시간에 읽어졌고 현재 변경된 데이터로 기록되거나 상기 데이터는 이전에 저장되지 않은 새 데이터이다.If each stripe is written as a plurality of pages, the parity can be calculated for the created stripe, and the memory is created at the same time as the data. In this way, reading data from memory is not necessary for the calculation of parity. The data is read at the previous time and is recorded with the currently changed data, or the data is new data that has not been previously stored.

도 27은 물리적 메모리 모듈이 폭 1의 25개 스트라이프 폭들과 같은 용량을 갖는 메모리 시스템의 예를 도시한 것이다. 이 예에 대한 스트라이핑 패턴은 발생 패턴이 각각의 논리 어드레스 범위의 행렬에 집중되는 것을 제외하고는 도 25의 패턴과 유사하게 발생된다. 발생된 패턴은 광범위하게 분산되며 "핫 스팟"의 발생을 줄이기 위해 복수의 애플리케이션들의 쓰기 및 읽기 부하를 분산하는 특성을 가질 수 있다. 사용자 애플리케이션 프로그램 또는 시각화 공간이 반복해서 메모리 모듈에 맵핑되는 논리 어드레스 범위를 참조할 때 핫 스팟들이 발생한다. 이로 인해 지연 증가, 빠른 메모리 마모 등과 같이 성능에 문제가 발생할 수 있다.Figure 27 shows an example of a memory system in which the physical memory module has a capacity equal to 25 stripe widths of width 1; The striping pattern for this example occurs similar to the pattern of FIG. 25 except that the occurrence pattern is centered on the matrix of each logical address range. The generated pattern may be widely dispersed and may have the property of spreading the load of the write and read of a plurality of applications to reduce the occurrence of "hot spots ". Hot spots occur when a user application program or visualization space references a logical address range that is repeatedly mapped to a memory module. This can cause performance problems, such as increased latency and faster memory wear.

그런 후, 어드레스 범위(1,3)가 고장이 발생한 메모리 모듈에 해당하는 상황을 고려하자. 그러면, 각각의 스트립들에 있는 5개의 요소들 중 4개를 이용해 데이터를 재구성하는 것이 바람직하다. 이렇게 하기 위해, 패리티가 고장 모듈로 인해 잃어버린 데이터인 경우 스트립의 4개 페이지들이 패리티를 재구성하는데 사용될 수 있다; 또는 데이터 페이지가 고장 모듈로 인해 잃어버린 데이터이고 동작가능한 메모리 위치에 저장된 (복구된 패리티 데이터를 포함할 수 있는) 복구된 데이터인 경우 상실 데이터 페이지를 재구성하는데 4개의 데이터 페이지 중 3개 및 패리티 페이지가 사용될 수 있다. Then, consider the situation where the address range (1, 3) corresponds to the memory module in which the failure occurred. It is then desirable to reconstruct the data using four of the five elements in each of the strips. To do this, the four pages of the strip can be used to reconstruct the parity if the parity is lost data due to the failure module; Or if the data page is recovered data that was lost due to a faulty module and is stored in an operable memory location (which may contain recovered parity data), then three of the four data pages and a parity page Can be used.

데이터가 복구된 경우, 복구된 데이터는 이용가능한 저장 공간을 갖는 동작가능 메모리 모듈에 저장된다. 이 데이터 스토리지의 위치 선택은 다른 곳에서 논의된다. 일태양으로, 시스템내 소거 숨기기를 보존하기 위해, 복구된 데이터는 고장 메모리 모듈과 같은 소거 숨기기 간격과 관련된 메모리 모듈에 저장될 수 있다. 스페어 메모리 모듈이 고장 메모리 모듈의 소거 숨기기 간격과 동기될 수 있고, 복구된 데이터는 스페어 메모리 모듈에 직접 또는 중간 스토리지 동작 후에 저장된다. 개개의 복구된 데이터 블록들은 고장 모듈을 지나지 않는 임의의 스트라이프에 기록될 수 있다. 각각의 복구된 페이지가 스트라이프에 기록됨에 따라, 스트라이프의 패리티는 XOR 계산에 의해 업데이트될 수 있어 복구된 데이터는 복구되어짐에 따라 연이은 고장에 대해 보호되어 진다. 대안으로, 복구된 데이터는 관련된 패리티를 갖는 스트라이프에 어셈블리되고 이와 같이 기록된다.If the data is recovered, the recovered data is stored in an operational memory module having available storage space. The location selection of this data storage is discussed elsewhere. In an aspect, in order to preserve the erase hiding in the system, the recovered data may be stored in a memory module associated with an erase hiding interval such as a fault memory module. The spare memory module can be synchronized with the erase hiding interval of the fault memory module and the recovered data is stored either directly to the spare memory module or after the intermediate storage operation. Individual recovered data blocks may be written to any stripe that does not cross the fault module. As each recovered page is written to the stripe, the parity of the stripe can be updated by XOR calculation, and the recovered data is protected against subsequent failures as they are recovered. Alternatively, the recovered data is assembled into a stripe having an associated parity and thus recorded.

일태양으로, 스페어 모듈은 복구된 데이터를 수신하는데 사용될 수 있다. 도 4a 및 도 4b의 메모리 구조는 메모리 모듈에 대해 복구된 데이터의 핫 스페어링(hot sparing)과 호환될 수 있다. 스페어 메모리 모듈은 고장모듈의 소거 주기 및 상기 스페어 모듈에 기록된 복구된 데이터와 동기될 수 있다. 스페어 모듈의 메모리 용량은 고장 모듈과 동일할 수 있기 때문에, 데이터는 스페어 모듈에 완전히 복구될 수 있다.In one aspect, the spare module can be used to receive recovered data. The memory structure of Figures 4A and 4B may be compatible with hot sparing of recovered data for the memory module. The spare memory module may be synchronized with the erase cycle of the failure module and the recovered data recorded in the spare module. Since the memory capacity of the spare module can be the same as the fault module, the data can be completely restored to the spare module.

그러나, 복구 중인 스트라이프에 있는 데이터의 읽기 요청에 대한 메모리 시스템의 응답시간이 손상되지 않도록 데이터의 쓰기를 열(列)의 소거 간격주기로 제한하는 것이 바람직할 수 있기 때문에, 스페어 모듈로의 데이터의 쓰기 속도는 데이터가 저장될 수 있는 속도에 한계가 있을 수 있다. 일태양으로, 스페어 모듈로 복구된 데이터의 쓰기는 최대 대역폭 미만으로 제한될 수 있다. 스페어 모듈은 복구된 데이터로 채워지기 때문에, 타임라인 로딩상태는 고장나기 전 이 데이터를 가진 모듈의 상태에 점점 더 가까워진다. 즉, 모듈에 접속하는 사용자 프로그램으로 인해 그리고 가비지 컬렉션 및 마모 평준화(wear leveling)와 같은 하우스키핑 활동으로 인해 모듈에 대한 읽기 및 쓰기 부하가 증가된다. 스페어 모듈에 복구된 데이터의 쓰기 속도가 알맞지 않으면 사용자 요청에 대한 스페어 모듈의 응답시간이 손상될 수 있다.However, since it may be desirable to limit the write time of the data to the erase interval period of the column so that the response time of the memory system to the read request of the data in the recovering stripe is not compromised, writing of data to the spare module Speed can be limited by the speed at which data can be stored. In one aspect, writing of the recovered data to the spare module may be limited to less than the maximum bandwidth. Since the spare module is filled with recovered data, the timeline loading state is getting closer to the state of the module with this data before it fails. That is, due to the user program accessing the module and housekeeping activities such as garbage collection and wear leveling, the read and write load on the module is increased. If the write speed of the recovered data in the spare module is not adequate, the response time of the spare module to the user request may be impaired.

중간 복구단계가 도입될 수 있다. 예컨대, 복구된 데이터가 스페어 공간을 가진 동작가능 메모리 모듈에 작성될 수 있다. 이런 스페어 공간은 특히 복구된 데이터에 대해 보존될 수 있거나, 가비지 컬렉션 전략의 결과일 수 있다. 예컨대, 2009년 6월 12일자로 출원되고 본 명세서에 참조로 합체된 미국 가출원 61/186,626에 기술된 지속적 가비지 컬렉션 전략으로 일시적 기반으로 사용될 수 있는 각 모듈내에 스페어 공간이 일부 있을 수 있다. An intermediate recovery step can be introduced. For example, recovered data may be written to an operable memory module having spare space. Such a spare space may be preserved especially for recovered data, or may be the result of a garbage collection strategy. For example, there may be some spare space in each module that may be used as a temporary basis for the persistent garbage collection strategy described in U.S. Provisional Application 61 / 186,626, filed June 12, 2009, which is incorporated herein by reference.

정상 동작 동안, 가비지 컬렉션을 수행하는 행위는 사용 증가시 총 메모리 공간의 양으로서 모듈의 평균 쓰기 대역폭을 줄이며 오버헤드로서 이용가능한 읽기 및 쓰기 대역폭의 몇몇 부분을 소비한다. 사용중인 모듈 및/또는 하나 이상의 스페어 모듈에 충분한 여유 메모리 공간이 있으면, 데이터의 재건 동안 가비지 컬렉션의 처리를 변경, 삭감 또는 중단함으로써 더 많은 대역폭이 고장 모듈의 재건 데이터에 대한 읽기뿐만 아니라 재건 데이터를 저장하기 위한 쓰기 동작 모두에 이용가능해지게 허용될 수 있다. During normal operation, performing garbage collection reduces the average write bandwidth of the module as the amount of total memory space in use increases, consuming some of the available read and write bandwidth as overhead. If there is sufficient free memory space in the module in use and / or one or more spare modules, more bandwidth is lost by altering, reducing, or stopping the processing of garbage collection during data rebuilding. In addition to reading the rebuild data for the module, And may be allowed to be available for both write operations for storing.

재건 동안 일시적으로 메모리 모듈에 기록되고 있는 복구된 데이터가 가령 특별한 명령 옵션, 데이터에 대한 태그의 사용, 특별 어드레스 범위 또는 어드레스나 몇몇 다른 메타데이터를 바탕으로 한 로컬 판단에 의해 식별되면, 일시적 데이터를 저장하는데 사용된 블록들을 가비지 수집하는 데 대한 필요성을 줄이거나 없애도록 일시적으로 저장된 데이터의 위치가 선택될 수 있다. If the recovered data being temporarily written to the memory module during reconstruction is identified by a local decision based on, for example, a special command option, the use of a tag for the data, a special address range or address or some other metadata, The location of the temporarily stored data may be selected to reduce or eliminate the need for garbage collection of the blocks used for storage.

일예로, 복수의 메모리 모듈의 이용가능한 공간에 대한 일시적 재건이 수행될 수 있다. 메모리 공간이 이용가능한 한 루틴 가비지 컬렉션 처리가 느려지거나 정지될 수 있다. 재건된 데이터를 포함한 블록들은 일반적으로 메모리 모듈에 일시적으로 저장되지 않은 데이터의 몇몇 기설정된 비율에 지나지 않을 수 있다. 주로 또는 전체적으로 일시적 데이터를 포함한 데이터 블록들에 대해 거의 또는 전혀 가비지 컬렉션이 수행되지 않을 수 있다. For example, temporary reconstruction of the available space of a plurality of memory modules may be performed. As long as memory space is available, routine garbage collection processing can be slowed down or stopped. Blocks containing reconstructed data may typically be only a few predetermined ratios of data that are not temporarily stored in the memory module. Little or no garbage collection may be performed on data blocks that contain temporary data, primarily or entirely.

재구성된(복구된) 데이터를 나타내는 일시적 데이터가 교체 메모리 모듈로 전달되면, 주로 또는 전체적으로 이런 데이터의 저장을 위해 사용된 블록들은 아마도 소거되는 것만 필요하며 효율적으로 가비지 컬렉션될 수 있다. 일시적으로 재구성 데이터를 저장하기 위해 특정 모듈으로부터 필요할 수 있는 공간, 사용자 데이터의 평균 또는 최대 쓰기 대역폭, 이용가능한 스페어 메모리 공간, 및 재구성을 수행하는 시간뿐만 아니라 재구성된 데이터를 교체 모듈에 복제하는 시간을 고려함으로써, 고장 이벤트를 수용하도록 가비지 컬렉션 처리가 느려지거나, 변경되거나, 중단될 수 있다. 따라서, 고장 이벤트는 메모리 시스템의 루틴 동작에 대한 예외적인 경우로 간주될 수 있고, 고장으로 인한 회복 효과가 물리적으로 그리고 일시적으로 모두 시스템에 걸쳐 확산될 수 있어, 대부분의 사용자들에 대한 영향을 완화한다. If the transient data representing the reconstructed (recovered) data is passed to the replacement memory module, the blocks used for storage of such data, primarily or entirely, are only likely to be erased and can be efficiently garbage collected. The time to replicate the reconstructed data to the replacement module as well as the space that may be needed from a particular module to temporarily store the reconstruction data, the average or maximum write bandwidth of the user data, the available spare memory space, and the time to perform the reconstruction , The garbage collection process may be slowed, changed, or interrupted to accommodate the failure event. Thus, a failure event can be regarded as an exceptional case for the routine operation of a memory system, and the recovery effect from a failure can be spread both physically and temporally throughout the system to mitigate the impact on most users do.

또 다른 태양으로, 가비지 컬렉션 처리가 느려지거나, 변경되거나 중단될 수 있는 정도는 재구성을 수행하기 위한 시간에 영향을 줄 수 있어, 대답을 수렴하기 위해 계산이 한번 이상 수행될 필요가 있을 수 있다. 메모리가 여유있고 작성에 이용가능한지 혹은 여유있으나 사용될 수 있기 전에 가비지 컬렉션되어야 할 지에 대해, 여유 메모리 공간이 모듈에 위치된 경우 주어진 모듈에 대한 여유 메모리 공간량을 기초로, 모듈에 할당된 일시적 재구성 데이터량 또는 특성이 변경될 수 있다. In another aspect, the degree to which garbage collection processing may be slowed, altered, or aborted may affect the time to perform the reconstruction, and the computation may need to be performed more than once to converge the answer. Temporary reconstruction data allocated to the module, based on the amount of free memory space for a given module if the free memory space is located in the module, as to whether the memory is free and available for creation, or whether it should be garbage collected before it can be used, Amount or characteristic of the material can be changed.

예컨대, 여유 공간을 가진 모듈에 여유 메모리가 이용가능해지도록 여유 공간이 없는 또는 상당한 가비지 컬렉션 노력을 필요로 하는 여유 공간이 있는 또 다른 모듈보다 더 많은 임시 데이터가 할당될 수 있다. 상당한 여유 메모리 공간을 가지나 이용가능해지도록 거의 없거나 적절한 가비지 컬렉션이 요구되는 모듈에 재구성 처리시 나중에 복구되어 다시 여유 메모리 공간이 된 어드레스로부터가 아니라 상당한 양의 임시 재구성 데이터가 할당될 수 있다. For example, more temporary data may be allocated than another module that has no free space to allow free memory in a module with free space or that has free space that requires a significant garbage collection effort. A considerable amount of temporary reconfiguration data may be allocated, rather than from an address that has significant free memory space but is later recovered at the time of the reconfiguration process and needs to be reallocated to a module that requires little or no proper garbage collection to be available.

재구성 동안 사용된 가비지 컬렉션 정책 및/또는 파라미터는 시스템내 각 모듈에 대해 같을 필요가 없으며 정상동작 조건하에서 바람직하지 못한 것으로 간주되는 정책 및/또는 파라미터들일 수 있다. 그러나, 선택된 특정 정책은 복구 동작이 더 이상 특정 모듈을 포함하지 않으면 복구 주기 동안 사용을 위한 것이며 루틴 동작으로 돌아갈 수 있다. The garbage collection policies and / or parameters used during the reorganization may not be the same for each module in the system and may be policies and / or parameters that are deemed undesirable under normal operating conditions. However, the particular policy selected is for use during the repair cycle if the repair operation no longer includes a particular module and may return to routine operation.

이런 스페어 메모리 공간이 있는 경우, 복구된 데이터는 고장 모듈과 같은 열에 있는 모듈들에 작성될 수 있다. 이 데이터는 즉시 소거 숨기기 방식에 있게 된다. 그러나, 복구된 데이터를 더 광범위하게 분산시키는 것이 바람직할 수 있다. 효과적으로, 복구된 스트라이프를 포함하는 모듈들을 제외하고 모든 나머지 모듈들이 사용될 수 있다. 복구된 데이터는 상기 보국된 데이터의 스트라이프를 포함하는 행을 갖는 열에 있을 수 있고, 스트라이프 페이지가 소거 간격에 있을 수 있다. 한 데이터 읽기라기보다 2개 데이터 읽기가 요구될 수 있기 때문에 지연의 증가가 발생할 수 있다. 이는 고장 모듈, 동일한 데이터 또는 데이터의 패리티의 열과 같지 않은 열로의 작성 데이터가 또한 또 다른 열의 여유 영역에 쓰여질 때 방지될 수 있다. 이는 복구된 데이터를 미러링하는 것으로 간주될 수 있다. 이는 임시로 더 많은 공간을 이용하는 한편, 데이터는 이 분포에 의해 그리고 임의의 성능 열하를 줄임으로써 메모리에 걸쳐 더 광범위하게 확산된다. 이와 같은 임시 열에 저자된 데이터가 읽어지면, 스토리지 위치들 모두가 읽어지고, 2개의 동일한 데이터 페이지들 중 첫번째 데이터가 사용되거나, 타이밍을 고려해, 소거 간격에 있지 않은 2개의 메모리 모듈 중 하나로부터 데이터가 읽어진다.If there is such a spare memory space, the recovered data can be written to the modules in the same column as the fault module. This data is immediately in an erase-hide manner. However, it may be desirable to distribute the recovered data more widely. Effectively, all the remaining modules can be used, except for the modules containing the recovered stripes. The recovered data may be in a column having rows containing the striped data, and the striped pages may be in the erase interval. An increase in latency can occur because two data reads may be required rather than one data read. This can be prevented when the written data to a column that is not the same as the column of parity of the fault module, the same data or data, is also written to the spare area of another column. This can be viewed as mirroring the recovered data. While this uses more space temporarily, the data spreads more widely across the memory by this distribution and by reducing any performance penalty. When the authored data in such a temporary column is read, all of the storage locations are read, the first one of the two identical data pages is used, or, considering timing, the data from one of the two memory modules Is read.

늦어도, 모든 데이터가 지속성 메모리에 복구된 후, 복구된 데이터는 현재 스페어 모듈로 옮겨질 수 있어 미러 데이터가 더 이상 필요하지 않게 된다. 스페어 모듈은 고장 모듈의 대체가 되며 그 위치는 논리 어드레스 공간에 대해 이와 같이 맵핑된다.At the latest, after all data has been restored to persistent memory, the recovered data can be moved to the current spare module so that mirror data is no longer needed. The spare module is a replacement for the fault module and its location is thus mapped to the logical address space.

복구를 위해 사용된 데이터는 도시된 예에서 25개 메모리 모듈들 중 20개에 걸쳐 분산될 수 있기 때문에, 이 데이터의 읽기는 기본적으로 나란히 진행될 수 있다. 메모리 시스템의 정상동작에 대한 재구성을 위해 데이터의 읽기 효과가 전체 메모리 시스템에 걸쳐 확산된다. 마찬가지로, 요구되는 데이터의 읽기 메모리 시스템의 정상 동작의 효과는 더 균일하게 확산될 수 있다. Since the data used for recovery can be distributed over 20 of the 25 memory modules in the illustrated example, the reading of this data can basically proceed in parallel. In order to reconstruct the normal operation of the memory system, the read effect of the data is spread throughout the entire memory system. Likewise, the effect of normal operation of the read memory system of the requested data can be spread more evenly.

이는 행 "0"과 열 A 내지 D에 데이터를 저장하기 위해 스트라이프 "0"에 데이터가 작성되는 도 5에서의 배열과 비교될 수 있다. 여기서, 고장 메모리 모듈로부터 데이터를 복구하는데 사용되는 모든 데이터와 패리티가 스트라이프의 나머지 4개 메모리 모듈들에만 저장된다. 그러므로, 고장 모듈(A,0)을 재구성하기 위한 데이터 읽기를 달성하기 위해, 가령 데이터는 모듈(B, 0), (C, 0), (D, 0) 및 (P, 0)으로부터 읽어진다. 도 20의 배열과 같은 시간 주기에 데이터를 저장하기 위해, 데이터는 데이터 속도의 약 4배로 도 5에서의 메모리 모듈들로부터 읽어져야 한다. 마찬가지로, 동작가능 메모리 모듈에 복구된 데이터를 쓰는 것이 동일한 스트립핑 전략에 따라 수행되면, 모듈로의 복구된 데이터의 쓰기 속도는 다시 도 20의 예에서처럼 약 4배나 빨라진다. This can be compared to the arrangement in Figure 5 where data is written to stripe "0" to store data in row "0 " Here, all data and parity used to recover data from the fault memory module are stored only in the remaining four memory modules of the stripe. Thus, for example, data is read from the modules (B, 0), (C, 0), (D, 0) and (P, 0) to achieve data reading for reconstruction of the fault module (A, . To store data in the same time period as the arrangement of Figure 20, the data must be read from the memory modules in Figure 5 at about four times the data rate. Likewise, if writing the recovered data to the operable memory module is performed according to the same stripping strategy, the writing speed of the recovered data to the module is again about four times as high as in the example of FIG.

도 10 내지 도 27의 배열의 설명 및 모듈의 고장 후 데이터의 복구는 물리적 메모리에서 데이터의 위치에 대한 제한을 둘 수 있는 소거 숨기기 및 메모리 모듈 고장의 경우에 재구성된 데이터의 주제를 특별히 언급하지 않았다. The description of the arrangement of FIGS. 10-27 and the restoration of data after a module failure does not specifically mention the erasure hiding, which may place restrictions on the location of data in physical memory, and the subject of reconstructed data in the case of a memory module failure .

일예로, 도 24에 도시된 바와 같이 (1,3)의 어드레스 범위를 포함한 모듈에 고장이 있는 도 25의 5×5 어드레스 범위를 고려하자. 도 25의 배열의 어드레스 범위는 가령 도 4a 및 도 4b에서 상술한 것과 유사하게 물리적 메모리 시스템의 메모리 모듈과 연관될 수 있다. 소거 숨기기가 시스템 구조의 특별한 레벨에서의 설계 목적인 경우, 모듈이 모듈, 서브모듈 등일 수 있는 각 물리적 메모리 모듈에 대한 각각 소거(및 쓰기) 간격의 타이밍으로 인해 스트라이프와 관련된 모듈들 중 단 하나만이 특별한 간격 동안 쓰기 또는 소거가 수행될 수 있다. 간격들이 단지 부분적으로 중첩되는 정도로는, 소거 숨기기 태양은 덜 효과적일 수 있다.For example, consider the 5 x 5 address range of Fig. 25 having a failure in the module including the address range of (1,3) as shown in Fig. The address range of the arrangement of FIG. 25 may be associated with a memory module of a physical memory system, for example, similar to that described above in FIGS. 4A and 4B. If the erase hiding is for design purposes at a particular level of system architecture, due to the timing of each erase (and write) interval for each physical memory module, which may be a module, sub-module, etc., only one of the modules associated with the stripe Writing or erasing may be performed during the interval. To the extent that the intervals are only partially overlapping, the erase-hide sun may be less effective.

메모리 모듈이 복수의 메모리 회로들로 구성되는 경우, 각각의 메모리 회로들이 메모리 모듈에 있는 별도의 다른 메모리 회로들에 쓰여지거나 소거될 수 있다. 플래시 메모리에 대해, 이 속성은 각 메모리 회로에 복수의 다이가 있는 다이 레벨에 있을 수 있다. 현재, 이런 메모리 회로들은 메모리 회로가 메모리 모듈에 어셈블리될 수 있도록 핀 또는 볼 격자 어레이 또는 다른 인터페이스를 갖는 패키지 디바이스와 관련될 수 있다. 그러나, 메모리 회로들 및 패키징 기술이 연속적으로 개발되고 있고 본 명세서에서 설명한 용어는 제한이라기보다는 개념적인 것으로 이해해야 한다. When the memory module is composed of a plurality of memory circuits, each memory circuit may be written to or erased from another memory circuit in the memory module. For a flash memory, this attribute may be at a die level with a plurality of die in each memory circuit. Presently, such memory circuits may be associated with a package device having a pin or ball grid array or other interface such that the memory circuit can be assembled to the memory module. However, it should be understood that the memory circuits and packaging technology are being developed in succession and that the terms described herein are conceptual rather than limiting.

메모리 모듈이 복수의 메모리 회로들로 구성되는 경우, 모든 메모리 회로들은 소거 간격이 메모리 모듈에 대해 발생할 때 계류중인 소거를 갖는 것은 아니다. 계류중인 소거를 갖지 않는 이들 메모리 회로들은 계류중인 쓰기 동작 또는 소거 간격동안 도착한 쓰기 동작을 실행할 수 있다. 소거도 쓰기도 메모리 모듈의 메모리 회로에 수행되지 않는 정도로도, 계류중인 읽기 동작이 수행될 수 있다. 따라서, 심지어 모듈에 대한 소거 간격 동안에, 메모리 모듈의 메모리 회로들 중 일부에 대해 읽기 동작들이 수행될 수 있다. 소거 간격동안 이용가능한 타임라인을 바탕으로 실행되도록 하는 읽기 및 쓰기 요청은 특정 사용자, 서비스 등으로부터의 요청에 우선선위를 줄 수 있는 정책을 바탕으로 한 실행을 위해 디큐될 수 있다. When the memory module is composed of a plurality of memory circuits, not all memory circuits have a pending erase when the erase interval occurs for the memory module. Those memory circuits that do not have pending erasures can perform pending write operations or write operations that arrive during the erase interval. Pending read operations can be performed to such an extent that neither erasing nor writing is performed on the memory circuit of the memory module. Thus, even during the erase interval for the module, read operations can be performed on some of the memory circuits of the memory module. A read and write request to be executed based on available timelines during the erase interval may be decoded for execution based on a policy that can prioritize requests from particular users, services, and the like.

그러나, 소거 동작이 진행중인 메모리 회로에 대해 읽기 동작이 수신되면, 본 명세서에 기술된 소거 숨기기 메카니즘은 소거 간격의 완료와 관련된 지연을 방지한다. 이는 더 긴 쓰기 및 읽기 시간에 대해 트렌드인 것으로 보이는 멀티레벨 플래시(MLC)와 같은 상황에서 크게 중요해질 수 있다. However, if a read operation is received for a memory circuit in which an erase operation is in progress, the erase-hide mechanism described herein prevents delays associated with the completion of the erase interval. This can be significant in situations such as multi-level flash (MLC), which seems to be a trend for longer write and read times.

여기서, 열 1에 있는 행들 모두가 동시에 소거 간격에 있도록 도 17의 어드레스 범위 열 1-5를 메모리 모듈에 할당되게 순차적으로 허용함으로써 비중첩 속성이 얻어질 수 있는 도 17의 경우 및 5개의 스트라이프 길이를 고려하자. 열 1에 대한 소거 간격의 완료 후, 열 2에 대한 소거 간격이 이하 등등 발생할 수 있다. 17, in which non-overlapping attributes can be obtained by sequentially permitting the address range columns 1-5 of FIG. 17 to be allocated to the memory modules so that all of the rows in column 1 are in the erase interval at the same time, . After the completion of the erase interval for column 1, the erase interval for column 2 may occur, and so on.

스트라이프 "0"과 같이 스트라이프의 개개의 어드레스들이 어떤 행이 고려되는 지에 무관하게 모든 열들에 걸쳐 분포되고 열에 있는 모든 행들이 동일한 소거 간격과 관련된 메모리 모듈들에 할당되기 때문에, 전처럼, 요소 페이지들일 수 있는 5개 어드레스 윈도우 중 4개가 항상 즉시 읽기에 이용될 수 있게 된다. 그래서, 도 17의 배열은 데이터를 물리적 메모리 위에 광범위하게 분포하면서 소거 숨기기 구조와 호환될 수 있다. 스트라이프 중 단 하나의 어드레스 범위만이 각 소거 시간과 연관된다.As before, since the individual addresses of the stripes, such as stripe "0 ", are distributed across all columns regardless of which row is considered and all rows in the column are assigned to memory modules associated with the same erase interval, Four of the five address windows are always available for immediate reading. Thus, the arrangement of FIG. 17 can be compatible with the erase-hide scheme while distributing the data over physical memory extensively. Only one address range of the stripe is associated with each erase time.

사용자들에 대한 데이터 손실의 할당은 메모리 모듈들에 스트라이프들의 맵핑을 고려해 스트라이프들을 사용자에 할당할 때의 정책을 통해 관리될 수 있다. 이는 논리 어드레스 공간에서 가시화될 수 있으며, 각각의 행/열 지정은 복수의 스트라이프들과 관련된다. 간단히 하기 위해, 도 30은 2개의 스트라이프 폭에 대해 충분한 공간을 갖는 행/렬 논리 어드레스 범위들을 갖는 이 개념을 도시한 것이다. 스트라이프들(0,1,2)은 사용자 A에 할당되고, 스트라이프들(10,11,12)은 사용자 B에 할당되며, 스트라이프들(20,21,22)은 사용자 C에 할당되고, 스트라이프들(30,31,32)은 사용자 D에 할당되며, 스트라이프들(40,41,42)은 사용자 E에 할당되고, 스트라이프들(50,51,52)은 사용자 F에 할당된다고 가정하자. 다시, 간단히 하기 위해, 도시된 스트라이프들은 스트라이프 기울기 0에 대한 것이다. The allocation of data loss to users can be managed through policies when allocating stripes to a user in consideration of mapping of stripes to memory modules. This can be visualized in the logical address space, and each row / column designation is associated with a plurality of stripes. For simplicity, FIG. 30 illustrates this concept with row / column logical address ranges having sufficient space for two stripe widths. Stripes 0, 1 and 2 are assigned to user A, stripes 10, 11 and 12 are assigned to user B, stripes 20, 21 and 22 are assigned to user C, Suppose that the stripes 30, 31, 32 are assigned to user D, the stripes 40, 41, 42 are assigned to user E, and the stripes 50, 51, Again, for simplicity, the depicted stripes are for stripe tilt 0.

제 1 행은 사용자 A 및 D에 대한 데이터를 포함하고, 제 2 행은 사용자 A 및 E에 대한 데이터를 포함하며, 제 3 행은 사용자 A 및 E에 대한 데이터를 포함하고, 제 9 행이 사용자 C 및 D를 포함할 때까지 등등 이처럼 된다.The first row contains data for users A and D, the second row contains data for users A and E, the third row contains data for users A and E, the ninth row contains data for users A and E, C and D, and so on.

데이터 손실 패턴에 대한 모듈들의 여러 고장 영향은 가령 메모리 시스템에 있는 저장된 데이터의 무결성에 대한 메모리 시스템에서 2개의 고장 모듈들의 영향을 고려함으로써 이해될 수 있다. 즉, 제 2 모듈은 제 1 고장 모듈과 관련된 데이터의 복구를 마치기 전에 고장날 수 있다. 단일 패리티가 사용되면, 제 2 고장이 제 1 고장과 같은 행에서 발생하면 데이터가 손실된다. 가령, (1,2)가 고장나고 (3,2)가 고장나면, 2행에 있는 데이터가 손실된다. 이는 사용자 A 및 E엥 영향을 준다. 제 2 고장이 임의의 다른 행에서 발생되면, 사용자 각각은 단일 고장만을 갖게 되고 데이터가 복구될 수 있다. 그러므로, 데이터가 스트라이프에 의해 분산되면, 제 2 고장은 복구불가능한 데이터 손실을 야기할 확률이 단지 작아진다. 이는 예컨대 패리티가 이중 고장에 대한 보호로서 열에 대해 계산되는 열 패리티가 사용될 수 있음을 제안한다. 열 패리티를 사용한 데이터의 복구가 단일 패리티의 사용보다 더 느리더라도, 특정 모듈의 고장 조합들의 낮은 확률로 인해 이것은 유용한 전략이 된다.The multiple failure effects of the modules on the data loss pattern can be understood by considering the influence of the two failure modules in the memory system, for example on the integrity of the stored data in the memory system. That is, the second module may fail before completing the recovery of data associated with the first failure module. If a single parity is used, data is lost if a second failure occurs in the same row as the first failure. For example, if (1, 2) fails and (3, 2) fails, the data in row 2 is lost. This affects users A and E. If a second failure occurs in any other row, each of the users will have only a single fault and the data can be recovered. Therefore, if the data is scattered by the stripe, the second failure is only a small chance of causing irrecoverable data loss. This suggests that, for example, thermal parity, where parity is computed for a row as protection against a double fault, can be used. Although recovery of data using thermal parity is slower than the use of a single parity, this is a useful strategy due to the low probability of failure combinations in a particular module.

각 스트라이프가 이중 패리티에 의해 보호되는 경우, 제 3 모듈이 고장 모듈로부터 데이터의 복구 전에 고장난다면, 동일한 일반적 고려가 적용될 수 있다.If each stripe is protected by double parity, the same general considerations can be applied if the third module fails before recovery of the data from the failure module.

스트라이프의 길이와 컬럼 개수들이 딱 맞지 않는 논리 어레이에 있는 데이터의 스트라이핑을 나타내기 위해 스트라이핑의 많은 예시적 패턴들이 표현되어 있다. 결과적으로 발생한 배열들 중 일부는 특히 작은 개수의 스트라이프들에 대해 최적인 것으로 보이지 않을 수 있다. 그러나, 차는 매우 많은 스트라이프들에 대해 덜 중요해지고, 어레이 폭, 스트라이프 길이, 스프라이프 스텝핑 등의 선택을 허용하여 다른 시스템 목적을 달성하게 된다. Many exemplary patterns of striping are depicted to illustrate the striping of data in a logical array where the length of the stripes and the number of columns do not fit. Some of the resulting arrays may not appear optimal, especially for a small number of stripes. However, the car becomes less important for very many stripes and allows for selection of array width, stripe length, striped stepping, and the like to achieve other system objectives.

도 31은 스트라이프 길이가 5인 7×7 치수의 논리 어레이를 도시한 것이다. 다른 예에서와 같이, 스트라이프에 있는 데이터 어드레스의 개수와 패리티 데이터 어드레스의 개수는 시스템 성능 요건을 기초로 선택될 수 있다. 예컨대, 길이 5개의 스트라이프는 4개의 어드레스 범위와 하나의 패리티 어드레스 범위 또는 3개의 데이터 어드레스 범위와 2개의 패리티 어드레스 범위를 가질 수 있다. 제 1 스트라이프(0,0)은 어레이 위치(1-5)를 차지하고, 제 2 스트라이프는 임의의 위치(6,1) 내지 (3,2)를 차지한다. 즉, 스트라이프는 한 행의 증분에 따라 우측 어레이 경계를 랩 어라운드한다. 디스크 어레이에서, 이는 때로 좌측 대각선 스트라이핑이라 한다. 일반적인 디스크 시스템에서, 디스크들의 행이 구성되고 랩 어라운드가 본 예의 0 행에 해당하는 디스크 그룹들에 계속된다. 본 예에서, 스트라이프들의 어드레스 범위들은 차례로 메모리 모듈에 맵핑될 수 있는 논리 어레이 위치들에 할당될 수 있고, 차례로, 메모리 모듈에 맵핑될 수 있다. "좌측 대각선"이라는 용어는 어드레스 범위들의 그룹을 지나는 라인은 랩 어라운드를 고려해 우상단에서 좌하단으로 경사진 각 스트라이프에서 제 1 요소(가령 0.1, 1.1, 2.1, 3.1, ...)를 고려함으로써 이해될 수 있다.Fig. 31 shows a logical array of 7 x 7 dimensions with a stripe length of 5. As in other examples, the number of data addresses and the number of parity data addresses in a stripe may be selected based on system performance requirements. For example, five stripe lengths may have four address ranges, one parity address range, three data address ranges, and two parity address ranges. The first stripe (0, 0) occupies the array position (1-5), and the second stripe occupies the arbitrary positions (6, 1) to (3, 2). That is, the stripes wrap around the right array boundary in increments of one row. In a disk array, this is sometimes referred to as left diagonal striping. In a typical disk system, a row of disks is configured and a wraparound follows on disk groups corresponding to row zero in this example. In this example, the address ranges of the stripes may be assigned to logical array locations that in turn may be mapped to a memory module and, in turn, may be mapped to a memory module. The term "left diagonal" means that the line through a group of address ranges is understood by considering the first element (e.g., 0.1, 1.1, 2.1, 3.1, ...) in each stripe from upper right to lower left, .

어레이 위치(6,6) 내지 (7,7)이 점선으로 도시되어 있다. 이들은 8개 스트라이프 및 9개 스트라이프 중 일부에 의해 채워질 수 있는 어드레스 범위들을 나타내며, 9번째 스트라이프들 중 나머지는 제 1 행으로 랩 어라운드된다. 대안으로, 어레이는 아마도 다른 개수의 메모리 모듈들을 갖는 시스템 및 어레이 위치(7,5) 다음에 발생할 수 있는 행으로 랩핑에 따라 채워지지 않을 수 있다.The array positions 6,6 to 7,7 are shown by dotted lines. They represent address ranges that can be filled by some of the eight stripes and the nine stripes, and the remainder of the ninth stripes are wraparound to the first row. Alternatively, the array may not be filled with the system with a different number of memory modules and with the rows that may occur after the array locations 7, 5, depending on the lapping.

7×7 논리 어레이에 대해 도 32에 도시된 또 다른 배열에서, 길이 5의 제 1 스트라이프(스트라이프 "10")가 (3,1)에서 시작될 수 있고, 다음 논리 어드레스 범위가 (5,1)에 위치되고 등등 2씩 증가되어 (4,2)까지 계속된다. 다음 스트라이프(스트라이프 "11")는 (6,2)에서 시작해 어드레스 범위(14.4)가 (7,7)에 위치될 때까지 계속되고, 스트라이프는 14.5가 (2,1)에 위치되도록 어레이의 시작에 대해 랩 어라운드된다. 도시된 가장 높은 번호의 스트라이프는 스트라이프 "17"이다. 그러나, 어레이가 아직 채워지지 않고 추가 스트라이프 "18" 및 "19"가 처음으로 어레이를 채우고 랩 어라운드를 시작하는 것이 명백하다. 32, a first stripe of length 5 (stripe "10") can be started at (3,1), and the next logical address range is (5,1) And is incremented by 2 and so on until (4,2). The next stripe (stripe "11") begins at (6,2) until the address range 14.4 is located at (7,7), and the stripe continues at the start of the array Lt; / RTI > The highest numbered stripe shown is stripe "17 ". However, it is clear that the array is not yet filled and additional stripes "18" and "19" fill the array for the first time and start wraparound.

도 33은 스트라이프에 있는 어드레스 범위들 간에 열 증분이 3씩 증분되는 것을 제외하고 도 32의 배열과 유사한 배열을 도시한 것이다. Figure 33 shows an arrangement similar to the arrangement of Figure 32 except that the column increments between the address ranges in the stripe are incremented by three.

도 34는 도 31 내지 도 33의 스트립핑 패턴 및 고차 어드레스간 범위 단계 패턴들이 사슬처럼 연결되어 총 47개 스트라이프들이 논리 어드레스 범위에 할당되는 도 31의 스트립핑 패턴을 도시한 것이다. 어레이의 스트라이프 및 폭의 불균등(non-commensurate) 길이의 영향은 어드레스 공간을 채우는 균일성에 거의 영향을 주지 않는다. 수백에서 수 만개 이상의 스트립들이 있을 수 있는 대형 메모리 시스템에서, 분포의 비최적성(non-optimality)은 일반적으로 고려가 되지 않는다.FIG. 34 illustrates the stripping pattern of FIG. 31 in which the stripping pattern and the high order address range step patterns of FIGS. 31-33 are chained together to assign a total of 47 stripes to a logical address range. The effect of stripe and non-commensurate length of the array has little effect on uniformity filling the address space. In large memory systems where there may be hundreds to tens of thousands of strips, the non-optimality of the distribution is generally not taken into consideration.

도 35는 도 34의 어레이 패턴에 대해 (1,4)에서 교차하는 스트라이프들의 분포를 도시한 것이다. 5개의 스트라이프들이 모듈에서 교차하고 스트라이프들과 관련된 데이터가 어레이 전체에 분산되어, 스트라이프들의 다른 데이터가 (17개 메모리 모듈에 해당할 수 있는) 17개 어레이 위치들에서 발견된다. 그래서, (1,4)와 관련된 메모리 모듈에서 고장이 있는 경우, 데이터는 17개 모듈로부터 복구된다. 스트라이프내 열 증분, 스트라이프의 길이, 및 스트라이프의 총 개수에 따라, 데이터는 고장 모듈의 재구성을 위해 비고장 모듈 각각에 대한 읽기 및 쓰기 부하가 상대적으로 시스템에 걸쳐 균일하게 분포되도록 비고장 모듈들 위에 광범위하게 분포된다. Figure 35 shows the distribution of the stripes crossing at (1,4) for the array pattern of Figure 34; Five stripes cross in the module and the data associated with the stripes is scattered throughout the array such that the other data of the stripes is found in 17 array locations (which may correspond to 17 memory modules). Thus, if there is a failure in the memory module associated with (1,4), the data is recovered from the 17 modules. Depending on the thermal increment in the stripe, the length of the stripe, and the total number of stripes, the data is written over the non-faulting modules so that the read and write loads for each of the non-faulting modules are evenly distributed across the system for reconfiguration of the faulty module It is widely distributed.

도 36은 48회 반복된 발생 패턴으로서 도 31의 배열을 이용한 할당 패턴이다. 도 36의 결과에 대해, 도 37은 고장 모듈을 나타내는 (1,1)을 지나는 스트라이프들의 관계를 도시한 것이다. 스트라이프들은 8개 모듈들 위에 분포되며 상기 모듈들 중 일부는 이들을 지나는 4개 스트라이프들을 갖는다. 이는 도 35의 상황보다 덜 최적이나 선택된 스트라이핑 패턴에 따라 메모리 모듈의 데이터가 메모리 시스템 위로 다소 광범위하게 분포될 수 있는 것을 도시한 것이다. 36 is an allocation pattern using the arrangement of FIG. 31 as the occurrence pattern repeated 48 times. Referring to the results of FIG. 36, FIG. 37 shows the relationship of the stripes passing through (1,1) indicating the failure module. The stripes are distributed over eight modules and some of the modules have four stripes passing through them. This shows that the data of the memory module may be more or less distributed over the memory system in accordance with the striping pattern that is less optimal than the situation of FIG.

도 38 및 도 39는 도 36 및 도 37의 상황과 유사한 상황을 도시하나, 스트립핑 패턴으로 스트라이프의 순차적 어드레스 범위는 열 방향으로 5씩 증가하게 된다. 이로써 고장 모듈의 데이터가 복구될 수 있는 데이터를 저장하는 메모리 모듈의 세트가 달라진다. Figs. 38 and 39 illustrate a situation similar to that of Figs. 36 and 37, but the sequential address range of the stripe in the stripping pattern is increased by 5 in the column direction. This results in a different set of memory modules that store data from which the data of the faulty module can be recovered.

다른 많은 스트립핑 패턴들이 어레이를 채우도록 조합되면, 데이터는 도 40에 나타내질 수 있는 바와 같이 매우 많은 메모리 모듈들에 걸쳐 확산된다. 여기서, 데이터는 균일하지는 않으나 26개 모듈들 위에 퍼져 있다. If many other stripping patterns are combined to fill the array, the data spreads across many memory modules as can be seen in FIG. Here, the data is not uniform but spread over 26 modules.

다른 패리티 접근들에 대해 데이터의 복구시 메모리 모듈의 고장 영향은 도 41을 참조로 더 잘 이해될 수 있다. 스트라이프들은 길이 6이고, 매트릭스는 6×10 논리 어레이이다. 여기서, 스트라이프 "0" 내지 "9"는 기울기 "0"으로 작성되고, 스트라이프 "10" 내지 "19"는 좌측 대각선 패턴으로 작성되며, 스트라이프 "20" 내지 "29"는 우측 대각선 패턴으로 작성된다. 29개 스트라이프 패턴들이 있다. 물론 추가 스트라이프 패턴들이 작성될 수 있으나, 상기 예는 도면에서 리더기가 뒤따르도록 간략화되어 있다. 알고리즘에 의해 패턴들이 발생되고, 스트라이프 어드레스 범위들과 행렬의 연관이 실제로 산술 계산 또는 룩업테이블에 의해 결정될 수 있다.The fault impact of a memory module upon recovery of data for other parity accesses can be better understood with reference to FIG. The stripes are 6 in length and the matrix is a 6 x 10 logic array. Here, the stripes " 0 "to " 9" are created with a slope "0 ", the stripes 10 to 19 are created with a left diagonal pattern, and the stripes 20 to 29 are created with a right diagonal pattern . There are 29 stripe patterns. Of course additional stripe patterns can be created, but the example is simplified to follow the reader in the figure. Patterns are generated by the algorithm, and the association of the matrix of stripe address ranges with the matrix may actually be determined by an arithmetic calculation or a look-up table.

(1,1)과 관련된 모듈이 고장났다고 가정하자. 즉, 어드레스 범위(0.1, 18.1 및 22.1)들이 손실되고 복구될 것이 필요하다. 스트라이프 "1"도 또한 (1, 2), (3, 1), (4, 1), (5, 1) 및 (6, 1)에서 발견된다. 스트라이프 "18"도 또한 (2, 10), (3, 9), (4, 8), (5, 7) 및 (6, 6)에서 발견된다. 스트라이프 "22"도 또한 (2, 2), (3, 3), (4, 4), (5, 5) 및 (6, 6)에서 발견된다. 이 예에서 각각의 스트라이프들은 길이 L=6이며, 5개의 데이터 어드레스 범위와 1개의 패리티 어드레스 범위를 갖는다. 그러므로, 어레이 위치(1,1)의 데이터는 결국 어레이 위치(1,1)에 할당될 수 있는 스페어 모듈에 상술한 바와 같이 복구되며, 복구 과정을 마친다. (1, 1) has failed. That is, it is necessary that the address ranges (0.1, 18.1 and 22.1) are lost and recovered. A stripe "1" is also found in (1, 2), (3, 1), (4, 1), (5, 1) and (6, 1). The stripe "18" is also found in (2, 10), (3, 9), (4, 8), (5, 7) and (6, 6). The stripe "22" is also found in (2, 2), (3, 3), (4, 4), (5, 5) and (6, 6). In this example, each stripe is of length L = 6, with five data address ranges and one parity address range. Therefore, the data of the array location (1, 1) is recovered as described above for the spare module which can eventually be assigned to the array location (1,1), and the recovery process is completed.

그러나, 메모리 시스템에 있는 제 2 모듈이 스트라이프들이 완전히 복구되기 전에 실패할 수 있는 우려가 항상 있다. 영향받는 스트라이프들의 개수, 데이터 손실 확률 및 데이터 손실 패턴에 모두 관해서 데이터 손실의 특징들이 흥미 있다.However, there is always a concern that the second module in the memory system may fail before the stripes are fully recovered. The characteristics of data loss in terms of both the number of affected stripes, the probability of data loss, and the pattern of data loss are of interest.

5개의 데이터 논리 어드레스 범위와 하나의 패리티 어드레스 범위가 있는 스트라이프의 사용을 고려하자. 예를 위해, 패리티가 어드레스 범위(X,6), 즉, 제 6 열에 있다고 가정하자. 복구될 데이터는 메모리 시스템의 60개 모듈들 중 14개에서 발견된다.Consider the use of stripes with five data logical address ranges and one parity address range. For example, assume that the parity is in the address range (X, 6), i.e., the sixth column. The data to be recovered is found in 14 of the 60 modules of the memory system.

간략히 하기 위해, 제 1 고장 바로 후에 제 2 모듈이 고장나는 시나리오를 고려하자. 이 상황은 기술자가 고장 모듈이라 생각하는 부정확한 모듈을 불가피하게 제거할 수 있기 때문에 실제가 아닌 통계적 기반으로 있을 것 같지 않은 것으로 여겨질 수 있거나, 몇몇 다른 동작에 의해 고장을 유발할 수 있다. 제 2 고장은 제 1 고장과 같은 행에 있는 경우, (1,1)에 있는 어드레스 범위를 갖는 스트라이프가 열(1,Y)에 있는 임의의 다른 모듈들에 있는 어드레스 범위를 갖지 않도록 어레이가 구성되기 때문에 데이터의 손실이 전혀 없으며, 여기서 Y는 행 번호이다. 열 1에서 9개 모듈들 중 어느 하나가 데이터 손실 없이 고장날 수 있다. 즉, 나머지 50개 중 나머지 모듈들 중 9개가 아무 영향 없이 고장날 수 있다. 이들은 상술한 바와 같이 복구될 수 있다. 다른 모듈들 중에, 14개가 제 1 고장 모듈의 스트라이프들을 복구하는데 사용된 것을 알게 된다. 임의의 다른 36개 모듈들에서 한 개의 고장으로 제 1 고장 모듈의 스트라이프들을 재구성하는데 필요한 데이터가 손실되지 않게 된다. 요약해서, 60개 모듈들 중 45개 중 어느 하나가 단일 패리티를 이용해 검색될 수 없는 데이터 손실을 일으키지 않고도 고장날 수 있다. For simplicity, consider a scenario where the second module fails immediately after the first failure. This situation can be considered unlikely to be a statistical basis, not a real one, because it can inevitably remove an inaccurate module that the technician thinks is a failure module, or it can cause failure by some other action. If the second fault is in the same row as the first fault, the array is configured such that the stripe with the address range at (1,1) does not have an address range in any other modules in column (1, Y) There is no loss of data at all, where Y is the row number. Either one of the nine modules in column 1 can fail without data loss. That is, nine of the remaining 50 modules may fail without any effect. These can be restored as described above. Of the other modules, 14 are used to recover the stripes of the first fault module. The data necessary to reconstruct the stripes of the first faulty module in one fault in any of the other 36 modules is not lost. In summary, any one of the 45 out of the 60 modules can fail without causing a loss of data that can not be retrieved using a single parity.

2개의 어드레스 범위들의 손실을 야기하는 복구시 이용된 14개 모듈들 중 하나에서의 제 2 고장의 영향은 단일 패리티 경우에 한 스트라이프에 대한 복구불가능한 데이터의 손실을 야기하도록 될 수 있다. 다른 스트라이프들 모두가 복구될 수 있다. 특정 모듈의 고장은 예에서 사용된 특정 스트리핑 배열로 스트라이프 "18" 및 "22"로부터의 데이터를 갖는 논리 어레이 위치(6,6)의 경우를 고려함으로써 알 수 있듯이 데이터 무결성에 더 많은 손상일 수 있다. 그러므로, 2개 스트라이프들에 대한 데이터는 고장난 제 2 모듈이 모듈(6,6)인 경우 상실될 수 있다. 이는 49개의 이중 고장 중에서 약 한 개로 발생할 수 있다. 이 확률이 있음을 알면, 하나 이상의 고장 스트라이프에 대해 데이터가 복구될 필요가 있는 모듈로부터 데이터의 복구에 우선순위를 줄 수 있다. The effect of the second failure in one of the fourteen modules used in recovery resulting in the loss of two address ranges may lead to a loss of irrecoverable data for one stripe in a single parity case. All other stripes can be recovered. The failure of a particular module may be more damage to data integrity, as can be seen by considering the case of logical array locations 6,6 with data from stripes "18" and "22 " . Therefore, the data for the two stripes can be lost if the failed second module is a module 6,6. This can occur in about one out of 49 double faults. Knowing this probability can give priority to recovery of data from a module that needs to recover data for one or more fault stripes.

또 다른 관점으로부터, 복구 그룹의 나머지 13개 모듈들 중 어느 하나의 고장으로 단일 스트라이프에서 데이터가 손실될 수 있다. 스트라이프의 폭 (즉, 논리 어드레스 범위에 있는 데이터량)에 따라, 데이터 손실은 일반적으로 데이터 스토리지의 한 스트라이프에 제한될 수 있고, 스트라이프들이 애플리케이션들 또는 가상 사용자들과 관련되면, 데이터 손실은 복수의 사용자들 중 단 하나에 제한될 수 있다. From another viewpoint, a failure of any one of the remaining thirteen modules of the recovery group may result in data loss in a single stripe. Depending on the width of the stripe (i. E. The amount of data in the logical address range), data loss can generally be limited to one stripe of data storage, and if stripes are associated with applications or virtual users, It can be limited to only one of the users.

소정의 성능에 따라, 한 사용자에 한 스트라이프 또는 복수의 스트라이프들이 할당될 수 있어, 사용자를 위한 데이터 손실 패턴이 관리될 수 있다. 일예로, (논리 행렬에서) 각 논리 어드레스 범위가 작으면, 사용자에 연쇄형 스트링으로 있을 수 있는 복수의 스트라이프들이 할당되고, 데이터 손실이 발생하면 광범위하게 퍼진다. 대안으로, 스트라이프 폭이 넓어질 수 있고 데이터 손실이 발생하면, 데이터는 사용자에 대한 데이터의 연속 블록일 수 있다. 선택은 데이터의 특성 및 사용된 저장 구조 백업 타입에 따를 수 있다. Depending on the predetermined performance, one stripe or a plurality of stripes can be assigned to one user, so that the data loss pattern for the user can be managed. For example, if each logical address range is small (in the logical matrix), a plurality of stripes may be assigned to the user, which may be a chain string, and spread widely if data loss occurs. Alternatively, if the stripe width can be widened and data loss occurs, the data may be a contiguous block of data for the user. The choice may depend on the nature of the data and the storage structure backup type used.

패리티가 (X,6)에 있다고 가정될 경우, 패리티는 스트라이프에 있는 논리 어드레스 범위들 중 어느 하나에 있을 수 있다. 즉, 손실된 "데이터"는 패리티 데이터 또는 패리티가 계산된 데이터일 수 있다.If the parity is assumed to be at (X, 6), the parity may be in any one of the logical address ranges in the stripe. That is, the lost "data" may be parity data or parity computed data.

길이 L=6의 스트라이프가 또한 듀얼 패리티로 구성될 수 있어, 데이터가 패리티를 이용해 복구될 수 없기 전에 스트라이프의 데이터를 포함하는 2개의 모듈들이 고장날 수 있다. 데이터 손실은 데이터가 복구되었기 전에 고장난 특별한 3개 모듈들을 필요로 할 수 있다. 다시 복구될 하나 이상의 데이터 스트라이프가 위치되는 모듈들을 확인할 수 있고 제 3 고장으로 인한 데이터 손실 가능성이 줄어들 수 있도록 이들 스트라이프들을 먼저 복구할 수 있다. Stripes of length L = 6 may also be configured with dual parity, so that two modules containing data of the stripe may fail before the data can not be recovered using parity. Data loss may require three special modules to fail before the data is restored. It is possible to identify the modules in which one or more data stripes to be restored are located and restore these stripes first so that the possibility of data loss due to the third failure is reduced.

일반적으로 상술한 예들은 단일 어드레스 위치일 수 있거나 물리적 또는 논리적 위치 범위에 걸쳐 분산될 수 있는 물리적 메모리 회로, 또는 논리적 또는 물리적 어드레스 범위를 나타내기 위해 모듈이라는 용어를 사용한다. 물리적 메모리 모듈에 대한 메모리 회로들은 다른 RAID 스트라이프들의 일부이도록 그룹화될 수 있고, 읽기 및 쓰기 및 소거가 발생할 수 있는 동안의 다른 시간 주기를 갖는다. 이와 같이, 모듈이라는 용어의 사용은 편의상 문제이며 특정 배열을 제안하거나 필요로 하도록 의도되어 있지 않다. 마찬가지로, 부차 최적 스루풋 구성들이 다른 이유로 선택될 수 있음이 이해되며, 바람직한 경우 본 명세서에 기술된 구성들과 섞일 수 있다. 메모리 모듈들은 순전히 메모리 기반의 스토리지, 하이브리드 플래시/디스크 스토리지, DRAM/플래시, SLC 플래시/MLC 플래시, MEMS, 위상변화 메모리 등과 같은 혼합된 메모리 구성일 수 있다. In general, the examples described above use the term physical memory circuit, which may be a single address location or may be distributed over a physical or logical location range, or a module to denote a logical or physical address range. The memory circuits for the physical memory module can be grouped to be part of different RAID stripes and have different time periods while read, write and erase can occur. As such, the use of the term module is a matter of convenience and is not intended to suggest or require a particular arrangement. Likewise, it is understood that suboptimal throughput configurations may be selected for other reasons, and may be mixed with the configurations described herein if desired. Memory modules may be purely memory-based storage, hybrid flash / disk storage, mixed memory configurations such as DRAM / flash, SLC flash / MLC flash, MEMS, phase change memory,

표현의 간명함을 위해, 메모리 모듈은 컨트롤러, 임시 데이터 저장장치 및 비휘발성 스토리지 장치를 갖도록 고려된다. 그러나, 이들 태양들 모두가 특정 물리적 목적으로 구현되어 발견될 수 없다. 대안으로, 하나 이상의 메모리 모듈의 능력은 특정 물리적 목적에서 발견될 수 있다. 구현의 선택은 애플리케이션 종속적이며, 더 조밀하고 더 많은 기능 회로들이 설계 및 생산되면서 시간에 따라 진화할 수 있다.For simplicity of presentation, memory modules are contemplated to have controllers, temporary data storage, and non-volatile storage devices. However, not all of these aspects can be realized and implemented for a particular physical purpose. Alternatively, the capabilities of one or more memory modules may be found for a particular physical purpose. The choice of implementation is application-specific, and the more dense and more functional circuits can evolve over time as they are designed and produced.

메모리 모듈 고장이라는 용어는 메모리 모듈의 함수 또는 임의의 메모리 회로가 특정 시스템 기준이 주어지면 데이터를 재건하기 위해 복구 동작이 수행되는 지점에서 열화되는 환경을 나타내는데 사용된다. 그러나, 고장 특성이 허용되면 데이터의 이런 재건은 메모리 모듈의 교체없이 수행될 수 있다. 예컨대, 설치된 복수의 반도체 메모리 패키지들을 갖는 메모리 모듈을 고려하자. 설치된 복수의 반도체 메모리 패키지들 중 하나 이상이 상기 모듈의 나머지의 동작에 무관한 고장을 받을 수 있다. 나머지 스페어 메모리 공간량에 따라, 고장 패키지의 데이터가 복구되고 모듈에 있는 다른 곳에 저장될 수 있다. 따라서, 전체 과정은 필요한 신뢰도, 복구 속도 또는 다른 시스템 성능 기준에 따라 하나 이상의 시스템 구조 레벨들로 수행될 수 있다. The term memory module failure is used to denote a function of a memory module or an environment in which any memory circuit is degraded at the point at which a recovery operation is performed to reconstruct data given a particular system reference. However, if fault characteristics are allowed, such reconstruction of the data can be performed without replacement of the memory module. For example, consider a memory module having a plurality of installed semiconductor memory packages. One or more of the plurality of installed semiconductor memory packages may be faulted irrespective of the remaining operation of the module. Depending on the amount of spare memory space left, the data in the faulty package can be restored and stored elsewhere in the module. Thus, the entire process can be performed with one or more system architecture levels according to the required reliability, recovery rate, or other system performance criteria.

또 다른 태양으로, 모듈에 대한 메모리의 사용 효율은 모듈 레벨 소거 숨기기 구성과 연계해 또는 무관하게 동작하는 정책에 의해 향상될 수 있다. 이들 전략은 다수의 회로 패키지들을 포함하는 모듈내 소거 숨기기 구성을 이용하는 것을 배제하지 않을 수 있다. 패키지 자체가 복수의 다이를 포함할 수 있다. 현재, 시스템의 소정 레벨, 메모리 영역에서, 다이는 소거 또는 쓰기(프로그램) 동작이 수행될 때 읽기 동작이 수행될 수 없도록 제한된다고 가정하자. 상기 구조의 레벨에서, 적어도, 메모리 시스템의 전체 성능을 향상시키는데 다른 정책들이 이용될 수 있다. 이런 구조의 레벨에서 정책을 기술함으로써, 하드웨어 또는 소프트웨어 설계가 정책들을 이용함으로써 추진될 수 있을 경우 메모리 시스템 구조의 상위 레벨에 상기 정책들이 부과될 수 없다고 추정하지 않아야 한다. In another aspect, the memory usage efficiency of the module may be enhanced by a policy operating in conjunction with or independent of the module level erase-hide configuration. These strategies may not preclude the use of intra-module erase-hide configurations involving multiple circuit packages. The package itself may include a plurality of dies. Presently, in a certain level of system memory area, it is assumed that a die is limited such that a read operation can not be performed when an erase or write (program) operation is performed. At the level of the structure, at least other policies can be used to improve the overall performance of the memory system. By describing the policy at the level of such a structure, it should not be assumed that the policies can not be imposed at a higher level of the memory system structure if the hardware or software design can be driven by using the policies.

특정 시기에 동작을 동기화하지 않고 또는 읽기 동작의 소거 봉쇄를 배제하도록 순차적으로 스트라이프내 동작을 수행하는 다른 수단들 없이 복수의 칩들의 소거 또는 쓰기 동작들이 수행되면, 칩에 대한 소거 동작들 간의 시간은 나타나는 상당한 요청들의 큐 없이 소거 동작을 수행하기에 충분한 평균 속도로 예정될 수 있다. 그러나, 소거 동작들 간의 시간은 유계 랜덤 변수(bounded random variable)로 선택될 수 있다. 이 정책은 RAID 그룹에서 주기적 읽기 봉쇄를 방지하는 경향이 있다.If erase or write operations of a plurality of chips are performed without synchronizing operations at a particular time or without other means of sequential in-stripe operations to rule out erase-blocking of the read operation, the time between erase operations on the chip Can be scheduled at an average rate sufficient to perform an erase operation without a queue of significant requests appearing. However, the time between erase operations may be selected as a bounded random variable. This policy tends to prevent periodic read blockage in RAID groups.

또 다른 정책은 가비지 컬렉션 속도를 변경하는데 사용될 수 있다. 칩에 대한 쓰기 동작의 회수가 모니터될 수 있고, 성능 속도 또는 가비지 컬렉션의 초기화가 보조맞출 수 있어 기설정된 회수의 쓰기 동작들이 소거 동작들 사이에 수행될 수 있다. 예컨대, 칩상의 소거 블록 크기에 비례하거나 동일한 많은 쓰기 동작이 수행된 후, 소거 동작이 디큐될 수 있다. 다시, 동기 패턴 발현을 방지하기 위해, 이 과정을 위한 임계치로 사용된 실제 쓰기 동작 회수는 유계 랜덤수로 선택될 수 있다. 마찬가지로, 칩에 대한 쓰기 회수에 대한 유사한 임계치를 바탕으로 가비지 컬렉션 과정이 초기화될 수 있다. 이는 여유 블록들의 평균량이 설계 한계내에 유지되도록 하는 경향이 있다.Another policy can be used to change the garbage collection rate. The number of write operations to the chip may be monitored and a predetermined number of write operations may be performed between erase operations, such that the performance rate or initialization of garbage collection may be subordinate. For example, after a lot of write operations are performed that are proportional to or equal to the erase block size on the chip, the erase operation can be decoded. Again, in order to prevent the occurrence of synchronous patterns, the actual number of write operations used as a threshold for this process may be selected as a random random number. Likewise, the garbage collection process can be initiated based on a similar threshold for the number of writes to the chip. This tends to keep the average amount of spare blocks within design limits.

또 다른 태양으로, 일부 사용자들은 연속 데이터의 큰 블록들을 읽을 수 있다. 비제한적인 예는 이미지 처리 시스템, 비디오 서버 등 일 수 있다. 이런 상황에서, 칩 또는 패키지로부터 읽어질 수 있는 전체 데이터량은 로컬 버스 대역폭으로 제한될 수 있다. 로컬 RAM 버퍼 메모리를 갖는 패키지의 메모리 모듈은 비록 이들이 상기 속도로 전송될 수 없으나 읽기가 최대 속도로 수행될 수 있도록 데이터를 임시로 버퍼시킬 수 있다. 버퍼 메모리에 남은 데이터가 소거 동작 또는 쓰기 동작과 같은 시간 간격으로 최대 버스 대역폭에서 버퍼 메모리로부터 전송될 수 있는 데이터 량을 초과하면, 쓰기 동작의 소거 동작이 읽기 지연을 손상시키지 않고도 소거 또는 쓰기 동작을 위한 계류 요청의 큐로부터 디큐될 수 있다. 이런 식으로, 읽기 버스 대역폭이 완전히 차지될 때의 시간에서 쓰기 또는 소거 동작의 성능을 포함함으로써, 쓰기 또는 소거 동작의 전체 회수가 증가될 수 있다.In another aspect, some users may read large blocks of continuous data. Non-limiting examples may be image processing systems, video servers, and the like. In this situation, the total amount of data that can be read from the chip or package may be limited to the local bus bandwidth. The memory modules of the package having the local RAM buffer memory can buffer the data temporarily so that they can not be transferred at this rate but the reading can be performed at full speed. If the data remaining in the buffer memory exceeds the amount of data that can be transferred from the buffer memory at the maximum bus bandwidth in the same time interval as the erase operation or the write operation, the erase operation of the write operation may perform an erase or write operation Lt; / RTI > from the queue of pending requests for < RTI ID = 0.0 > In this way, the total number of write or erase operations can be increased by including the performance of a write or erase operation at the time when the read bus bandwidth is fully occupied.

쓰기 요청 및 데이터는 읽기 데이터가 모듈로부터 검색되는 동안 모듈에 전달될 수 있기 때문에, 이는 소거 숨기기 기술의 전체 성능이 더 이상 불가능해질 수 있는 임계치를 쓰기 부하가 초과하기 전에 수용될 수 있는 쓰기 부하를 증가시킨다. 이런 측정은 상위레벨 컨트롤 구조로부터 기본적으로 자동으로 동작된다. Because the write request and data can be passed to the module while the read data is being retrieved from the module, it is possible to reduce the write load that can be accommodated before the write load has exceeded the threshold at which the overall performance of the erase- . These measurements are automatically performed by default from the upper level control structure.

상위 레벨 비트들이 하위 레벨 비트들과는 다른 속도로 읽거나 쓰여질 수 있는 MLC 플래시 메모리 또는 다른 메모리 기술이 사용될 때 다른 측정들이 사용될 수 있다. 예컨대, 각 요청은 칩 및 어드레스(하이, 로우)에 의해 저장될 수 있고 각 칩에 대해 큐가 형성될 수 있다. 패키지 및 각 칩에 대한 총 응답시간은 예상된 읽기 시간을 바탕으로 계산될 수 있고, 패키지에 대한 총 응답시간이 각 칩에 대해 계산될 수 있다. 소거 또는 쓰기 동작을 포함한 칩에 대한 응답시간이 특정 읽기 지연보다 길지 않다면, 적절하다면 쓰기 또는 소거 동작이 디큐되어 수행될 수 있다.Other measurements may be used when MLC flash memory or other memory technology is used where the upper level bits can be read or written at a different rate than the lower level bits. For example, each request may be stored by chip and address (high, low) and a queue may be formed for each chip. The total response time for the package and each chip can be calculated based on the expected read time, and the total response time for the package can be calculated for each chip. If the response time to the chip, including erase or write operations, is not longer than a particular read delay, write or erase operations may be performed, if appropriate, by decryption.

상술한 하위 레벨 기술들 중 몇몇은 현저한 쓰기 및 소거 큐들의 추적을 유지함으로써 특징될 수 있고, 적어도 하나의 쓰기 또는 소거 동작을 수행할 때에도 특정 읽기 지연이 달성될 수 있도록 읽기 동작이 충분한 데이터를 버퍼하면, 계류중인 쓰기 또는 소거동작이 수행될 수 있다.Some of the low-level techniques described above may be characterized by maintaining a track of outstanding write and erase cues and may be characterized in that the read operation is sufficient to buffer the data so that a particular read delay can be achieved even when performing at least one write or erase operation. A pending write or erase operation may be performed.

몇몇 데이터베이스 시스템에서, "다시하기(re-do)"가 유지되며, 로그는 기본적으로 각각 및 모든 명령어 및 메모리에 전송된 데이터 요소의 순차적 열거이다. 주기적으로 이 로그는 당업자에 알려진 바와 같이 장기 데이터 보안을 위해 제공되도록 백업 스토리지 디바이스에 대해 체크-포인트된다. 고장이 데이터베이스에 발생하면, 다시하기 로그가 백업 스토리지로부터 검색될 수 있는 상기 데이터베이스의 마지막 유효 이미지로부터 데이터베이스를 재구성하도록 처리될 수 있다. 데이터베이스의 무결성은 유효 다시하기 로그를 갖는 것에 달려 있기 때문에, 스토리지 모듈 고장으로 인한 모듈의 손상은 허용될 수 없다. In some database systems, a "re-do" is maintained, and the log is basically a sequential enumeration of data elements sent to each and every command and memory. Periodically, this log is check-pointed to the backup storage device to be provided for long term data security as known to those skilled in the art. If a failure occurs in the database, it can be processed to reconstruct the database from the last valid image of the database, which can be retrieved from the backup storage again. Damage to the module due to a storage module failure can not be tolerated because the integrity of the database depends on having an effective rewrite log.

종종, 다시하기 로그의 복제가 추가 보안을 위해 유지된다. 다시하기 로그 및 그 복제가 저장되는 스트라이프의 어드레스 공간의 적절한 할당에 의해, 데이터 손실 전에 발생할 수 있는 디바이스 고장 회수가 늘어날 수 있고, 고장 후에 다시하기 로그의 데이터를 복구 및 백업이 촉진될 수 있다. 이렇게 함으로써, 패턴들 중 하나가 소거 숨기기 속성을 유지하도록 계속된다. Often, the duplication of logs is maintained for additional security. By appropriately allocating the redo log and the stripe address space in which the replica is stored, the number of device failures that may occur before data loss can be increased, and recovery and backup of the log data can be facilitated again after a failure. By doing so, one of the patterns continues to maintain the erase-hide attribute.

상술한 바와 같이, 복수의 스트라이프들이 논리 공간내 모듈에 집중된 스트라이프 클러스터를 바탕으로 구성될 수 있다. 스트라이프 패턴들로 하나 이상의 스트라이프들이 모듈에 중첩될 수 있다. 스트라이프에서 모듈의 개수가 N이고, 패리티 중복 차수가 M이며, 메모리의 L 모듈들이 2개의 스트라이프로부터의 데이터를 포함하면, 고장으로 인한 데이터 손실 확률은 P = (L-M)/(N-M)으로 표현될 수 있다. 즉, 패리티의 순서가 중첩 데이터를 갖는 모듈들 이상이면, 모듈 고장으로 데이터가 손실되지 않게 된다. 일예로, 단일 패리티가 이용되면, 데이터내 한 모듈을 전혀 겹치지 않는 한 구성으로 제 1 고장은 데이터 손실을 유발하지 않는다. 스트라이프들의 데이터가 저장되는 모듈들의 그룹내 2개 모듈 고장이 요구될 수 있다. 2개 모듈들의 중첩이 있다면, 길이 5의 스트라이프와 패리티 1의 순서에 대해, 또 다른 모듈 고장이 복구될 수 없는 데이터 손실을 야기할 수 있는 (2-1)/(6-2)=1/4로 한 번의 기회가 있게 된다. As described above, a plurality of stripes may be configured based on a stripe cluster concentrated in a module in a logical space. One or more stripes with stripe patterns may be superimposed on the module. If the number of modules in the stripe is N, the parity redundancy is M, and the L modules of the memory contain data from two stripes, the probability of data loss due to failure is expressed as P = (LM) / (NM) . That is, if the order of parity is more than modules having overlapping data, data is not lost due to a module failure. For example, if a single parity is used, the first failure does not cause data loss in a configuration as long as one module in the data does not overlap at all. Two module faults in a group of modules where the data of the stripes are stored may be required. (2-1) / (6-2) = 1/2, where another module failure can result in irrecoverable data loss, for a stripe of length 5 and a sequence of parity 1, There will be one opportunity with four.

그런 후 일반적으로, 매우 신뢰할 수 있는 기본 데이터의 스토리지가 요망되는 경우, 이런 듀얼 데이터 손실이 발생하지 않도록 모듈내 패리티의 순서 및 스트라이프의 중첩이 관리되어야 한다. 모듈 고장이 발생하면, 데이터의 복구에 적용될 수 있는 많은 스토리지들(정채들)이 있다. 손실 데이터는 상술한 바와 같이 이용가능한 데이터 영역으로 복구될 수 있다. 대안으로, 복제 스트라이프가 손실 데이터 위치에 대해 읽혀질 수 있고 원래 스트라이프에 있는 손실 데이터를 대신해 삽입될 수 있다. 혹은, 복제 스트라이프로부터의 데이터가 제 1 로그 스트라이프의 패리티로부터 복구된 데이터를 검증하는데 사용될 수 있다. 또 다른 태양으로, 복제 데이터 로그가 제 1 데이터 로그에서의 고장시 스토리지를 백업하도록 체크포인트될 수 있어, 데이터를 보존한다. 상기 방법들의 다양한 조합들이 고려될 수 있고, 한 가지 고려는 메모리 시스템의 다른 동작들의 성능에 최소한의 영향으로 또는 가장 빠른 가능한 시간내에 손실 데이터를 복구할 목적으로 데이터를 복구하거나 2개 로그의 조합으로부터 데이터의 손실 확률을 최소화는 것 중 하나일 수 있다. 가령, 정책은 적어도 하나의 로그에 대한 소거 숨기기를 보유하는 정책일 수 있다. 정책의 선택 또는 정책들의 조합은 사용자 예상에 따라 달라질 수 있고, 사용자는 메모리 시스템의 복수의 사용자들 중 하나일 수 있다. Then, in general, if highly reliable basic data storage is desired, the ordering of the parity in the module and the overlapping of the stripes should be managed so that this dual data loss does not occur. When a module failure occurs, there is a lot of storage that can be applied to recover data. The lost data can be recovered to an available data area as described above. Alternatively, a replicate stripe may be read for the lost data location and inserted in place of the lost data in the original stripe. Alternatively, data from the replica stripe may be used to verify data recovered from the parity of the first log stripe. In another aspect, the replicated data log can be checkpointed to back up the storage in the event of a failure in the first data log, thereby preserving the data. Various combinations of the above methods may be contemplated, and one consideration may be to restore the data with minimal impact to the performance of other operations of the memory system or to recover lost data within the earliest possible time, or from a combination of two logs And minimizing the probability of loss of data. For example, a policy may be a policy that holds an erase hide for at least one log. The choice of policy or combination of policies may vary according to user expectations, and the user may be one of a plurality of users of the memory system.

다양한 정책들의 선택 및 실행을 관리하기 위해, 하나 이상의 사용자들, 데이터, 데이터 충실도, 데이터 신뢰도, 데이터 암호화, 또는 다른 특성이 공통 속성들을 가질 수 있는 RAID 스트라이프들 또는 스트라이프 클러스터들의 선택을 포함한 "스트라이프 그룹"이 정의될 수 있다. 이런 속성들은 또한 응답시간, 읽기지연, 쓰기 대역폭, 블록 크기, 초당 입/출력 동작 등을 포함할 수 있다. 특별한 예는 로직유닛넘버(LUN), 파티션, 또는 데이터의 임의의 다른 관리 또는 성능 그룹핑일 수 있으나, 스트라이프 그룹은 통상적으로 LUN인 것으로 이해되는 구성에 국한되는 것으로 의도되어 있지 않다. 그러나, 스트라이프 그룹은 저장하거나 그렇지 않고 데이터를 조작하는데 사용된 물리적 메모리 영역들로 맵핑할 수 있는 사전정의되거나 확장될 수 있는 (논리 또는 물리) 메모리 영역을 포함할 수 있다. Including the selection of RAID stripes or striped clusters over which one or more users, data, data fidelity, data reliability, data encryption, or other characteristics may have common attributes, to manage the selection and execution of various policies. "Can be defined. These attributes may also include response time, read latency, write bandwidth, block size, I / O operations per second, and so on. A particular example may be a logical unit number (LUN), a partition, or any other management or performance grouping of data, but the stripe group is not intended to be limited to configurations that are commonly understood to be LUNs. However, the stripe group may include predefined or extensible (logical or physical) memory regions that can be mapped to physical memory regions used to manipulate data, whether stored or not.

하나 이상의 사용자가 이 스트라이프 그룹을 공유할 수 있거나, 스트라이프 그룹이 개개의 사용자들에 할당될 수 있으며, 사용자는 메모리 시스템 운영자의 고객, 한 벌의 소프트웨어에 있는 운영 프로그램 등일 수 있다. 모듈 고장의 경우, 어드레스 범위들은 특정 스트라이프 그룹 및 관련된 속성들과 결합될 수 있다. 상기 속성들을 바탕으로, 소정 속성에 따른 스트라이프 그룹의 성능을 유지하기 위해 또는 고장 이전 상태로 성능을 복구하기 위한 정책이 선택될 수 있다. 이 정책은 스트라이프 그룹마다 다를 수 있고 다른 스트라이프 그룹들의 요건을 수용하도록 변경될 수 있다. One or more users may share this stripe group, or a stripe group may be assigned to each user, and the user may be a customer of the memory system operator, an operating program in a suite of software, and so on. In the case of a module failure, address ranges may be combined with a particular stripe group and associated attributes. Based on the attributes, a policy may be selected to maintain the performance of the stripe group according to certain attributes or to restore performance to the pre-failure state. This policy may be different for each stripe group and may be modified to accommodate the requirements of other stripe groups.

본 발명은 상술한 예들로써 설명하였으나, 본 발명은 상기 예에 국한되지 않고 오히려 본 발명의 기술사상으로부터 벗어남이 없이 다양한 변형 또는 변경들이 가능함이 당업자들은 알아야 한다. 따라서, 모든 균등물을 포함한 하기의 특허청구범위는 본 발명의 기술사상과 범위를 정의하도록 되어 있게 의도되어 있다.Although the present invention has been described with reference to the above examples, it should be understood by those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the present invention. Accordingly, the following claims, including all equivalents, are intended to define the spirit and scope of the present invention.

Claims (17)

데이터 쓰기 및 읽기 능력을 각각 갖는 복수의 메모리 모듈들을 구비하고,
상기 복수의 모듈들로 된 한 모듈 그룹은 사용자 데이터와 상기 사용자 데이터용 패리티 데이터를 저장하며,
모듈 그룹의 쓰기 또는 소거 동작은 읽기 요청시 모든 사용자 데이터, 또는 읽기 요청시 모든 사용자 데이터보다 적은 사용자 데이터와 패리티 데이터가 요청된 사용자 데이터를 제공하도록 구성되고, 요청된 사용자 데이터를 제공하기 위한 시간 지연은 모듈 그룹 중 한 모듈이 소거 상태에 있는 시간 간격 미만인 메모리 시스템.
A plurality of memory modules each having a data writing and reading capability,
Wherein one module group of the plurality of modules stores user data and parity data for the user data,
The write or erase operation of the module group is configured to provide all the user data at the time of the read request or the user data requested by the parity data less than all the user data at the time of the read request, Is less than the time interval in which one of the module groups is in the erased state.
제 1 항에 있어서,
모듈 그룹의 모듈들에 읽기 명령을 내리도록 구성된 컨트롤러를 더 구비하고, 쓰기 또는 소거 상태에 있는 한 모듈에 의해 수신된 읽기 명령은 지연시간 이후 또는 읽기 명령을 취소하도록 연이은 명령의 수신 후 모듈에 의해 취소되는 메모리 시스템.
The method according to claim 1,
The module further comprises a controller configured to issue a read command to the modules of the module group, and the read command received by the module as long as the module is in the write or erase state, after the delay time or after the successive command to cancel the read command Canceled memory system.
제 1 항에 있어서,
읽기 명령이 모듈에 계류중인 경우, 읽기 명령을 받은 데이터는 읽기 명령이 수행되거나 취소될 때까지 소거로부터 보호되는 메모리 시스템.
The method according to claim 1,
If the read command is pending in the module, the data received in the read command is protected from erasure until the read command is executed or canceled.
삭제delete 제 1 항에 있어서,
모듈 그룹으로의 데이터 할당은 논리 어드레스 공간에서의 생성 패턴에 따라 RAID 스트라이프의 메모리 모듈로 사용자 데이터 어드레스와 패리티 데이터 어드레스의 그룹들을 할당하는 것을 포함하는 메모리 시스템.
The method according to claim 1,
Wherein the data allocation to the module group comprises assigning groups of user data addresses and parity data addresses to a memory stripe of the RAID stripes according to a generation pattern in the logical address space.
제 5 항에 있어서,
복수의 RAID 스트라이프들 중 2개의 스트라이프들이 단 하나의 메모리 모듈을 공유하는 메모리 시스템.
6. The method of claim 5,
Wherein two of the plurality of RAID stripes share a single memory module.
제 5 항에 있어서,
복수의 RAID 스트라이프들 중 2개의 스트라이프들은 해당 RAID 스트라이프들에 대한 패리티 순서 이하의 많은 메모리 모듈들을 공유하는 메모리 시스템.
6. The method of claim 5,
Wherein the two stripes of the plurality of RAID stripes share many memory modules below the parity order for the corresponding RAID stripes.
데이터를 쓰고 읽기 위한 능력을 각각 갖는 복수의 메모리 모듈들을 제공하는 단계와;
상기 복수의 메모리 모듈들의 한 모듈 그룹에 데이터와 상기 데이터용 패리티 데이터를 저장하는 단계와;
읽기 요청시 모든 사용자 데이터를 읽거나, 읽기 요청시 모든 사용자 데이터보다 적은 사용자 데이터와 사용자 데이터용 패리티 데이터를 읽는 것 중 하나에 의해, 읽기 요청에 응답하여 사용자 데이터가 제공되도록 모듈 그룹의 소거 동작을 구성하는 단계를 포함하며,
모든 사용자 데이터, 또는 모든 사용자 데이터보다 적은 사용자 데이터와 사용자 데이터용 패리티 데이터는 모듈 그룹 중 한 모듈이 소거 상태에 있는 시간 간격 미만인 시간 구간 내에 읽혀지는, 메모리 시스템에서 데이터 저장 방법.
Providing a plurality of memory modules each having an ability to write and read data;
Storing data and parity data for the data in one module group of the plurality of memory modules;
The erase operation of the module group is performed so that the user data is provided in response to the read request by either reading all the user data at the time of the read request or reading the user data and the parity data for the user data smaller than all the user data at the time of the read request Comprising:
Wherein all user data, or less user data, and less user data and parity data for user data are read in a time period that is less than a time interval during which one of the module groups is in an erased state.
제 8 항에 있어서,
모듈 그룹의 모듈들에게 제어장치로부터의 읽기 명령을 내리는 단계; 및
지연시간 이후 또는 읽기 명령을 취소하도록 연이은 명령의 수신 후, 소거 상태에 있는 한 모듈에 의해 수신된 읽기 명령을 취소하는 단계를 더 포함하는, 메모리 시스템에서 데이터 저장 방법.
9. The method of claim 8,
Receiving a read command from the control unit to modules of the module group; And
Further comprising canceling a read command received by the module after the delay time or after the receipt of a subsequent command to cancel the read command and in the erase state.
제 8 항에 있어서,
읽기 명령이 수행되거나 취소될 때까지 읽기 명령을 받은 데이터를 소거로부터 보호하는 단계를 더 포함하는, 메모리 시스템에서 데이터 저장 방법.
9. The method of claim 8,
Further comprising the step of protecting the data that has been read from the erase until the read command is executed or canceled.
제 8 항에 있어서,
사용자 데이터와 패리티 데이터를 저장하는 단계는:
논리 어드레스 공간에서의 생성 패턴에 따라 RAID 스트라이프의 메모리 모듈로 사용자 데이터 어드레스와 패리티 데이터 어드레스의 그룹들을 할당하는 단계를 더 포함하는, 메모리 시스템에서 데이터 저장 방법.
9. The method of claim 8,
Storing user data and parity data comprises:
Further comprising assigning groups of user data addresses and parity data addresses to a memory stripe memory module in accordance with a generation pattern in the logical address space.
제 11 항에 있어서,
복수의 RAID 스트라이프들 중 2개의 스트라이프들이 단 하나의 메모리 모듈을 공유하는, 메모리 시스템에서 데이터 저장 방법.
12. The method of claim 11,
Wherein two of the plurality of RAID stripes share a single memory module.
제 11 항에 있어서,
복수의 RAID 스트라이프들 중 2개의 스트라이프들은 해당 RAID 스트라이프들에 대한 패리티 순서 이하의 많은 메모리 모듈들을 공유하는, 메모리 시스템에서 데이터 저장 방법.
12. The method of claim 11,
Wherein the two stripes of the plurality of RAID stripes share many memory modules below the parity order for the corresponding RAID stripes.
삭제delete 삭제delete 삭제delete 삭제delete
KR1020137005934A 2009-10-09 2010-10-08 Memory system with multiple striping of raid groups and method for performing the same KR101411566B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US25021609P 2009-10-09 2009-10-09
US61/250,216 2009-10-09
PCT/US2010/052074 WO2011044515A2 (en) 2009-10-09 2010-10-08 Memory system with multiple striping of raid groups and method for performing the same

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020127009026A Division KR101307953B1 (en) 2009-10-09 2010-10-08 Memory system with multiple striping of raid groups and method for performing the same

Publications (2)

Publication Number Publication Date
KR20130041314A KR20130041314A (en) 2013-04-24
KR101411566B1 true KR101411566B1 (en) 2014-06-25

Family

ID=43857420

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137005934A KR101411566B1 (en) 2009-10-09 2010-10-08 Memory system with multiple striping of raid groups and method for performing the same
KR1020127009026A KR101307953B1 (en) 2009-10-09 2010-10-08 Memory system with multiple striping of raid groups and method for performing the same

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127009026A KR101307953B1 (en) 2009-10-09 2010-10-08 Memory system with multiple striping of raid groups and method for performing the same

Country Status (4)

Country Link
EP (3) EP4361815A2 (en)
KR (2) KR101411566B1 (en)
CN (1) CN102667738B (en)
WO (1) WO2011044515A2 (en)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417821B2 (en) 2011-09-30 2016-08-16 Intel Corporation Presentation of direct accessed storage under a logical drive model
CN102662608B (en) 2012-03-30 2015-11-25 华为技术有限公司 Method and the device of time delay are read in a kind of reduction
EP2870538B8 (en) * 2012-07-03 2019-11-27 Violin Systems LLC Synchronization of a dispersed raid group
CN103034458B (en) * 2012-12-25 2015-11-25 华为技术有限公司 Method and the device of Redundant Array of Independent Disks (RAID) is realized in solid state hard disc
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
KR102072829B1 (en) 2013-06-14 2020-02-03 삼성전자주식회사 Storage device, global garbage collection method of data storage system having the same
CN104347122B (en) * 2013-07-31 2017-08-04 华为技术有限公司 A kind of access method and device of message type memory modules
CN103902465B (en) * 2014-03-19 2017-02-08 华为技术有限公司 Method and system for recycling solid state disk junk and solid state disk controller
US10466913B2 (en) 2015-04-29 2019-11-05 EMC IP Holding Company LLC Method and system for replicating and using grid level metadata in a storage system
KR102435873B1 (en) * 2015-12-18 2022-08-25 삼성전자주식회사 Storage device and read reclaim method thereof
CN106027638B (en) * 2016-05-18 2019-04-12 华中科技大学 A kind of hadoop data distributing method based on hybrid coding
CN107666701B (en) * 2016-07-31 2020-07-31 上海朗帛通信技术有限公司 Method and device in UE and base station for wireless transmission
CN106375404B (en) * 2016-08-30 2019-10-25 华为技术有限公司 Data storage control method, date storage method, data capture method and device
CN106775481B (en) * 2016-12-23 2019-11-05 华为技术有限公司 Method for reading data and equipment
CN107450852B (en) * 2017-07-31 2020-03-31 郑州云海信息技术有限公司 Storage space processing method, device and equipment
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
CN108519926B (en) * 2018-03-31 2020-12-29 深圳忆联信息系统有限公司 Self-adaptive RAID (redundant array of independent disks) group calculation method and device
CN110399310B (en) * 2018-04-18 2021-08-31 杭州宏杉科技股份有限公司 Method and device for recovering storage space
CN109445681B (en) * 2018-08-27 2021-05-11 华为技术有限公司 Data storage method, device and storage system
CN115576867A (en) * 2018-08-28 2023-01-06 上海忆芯实业有限公司 Extended address space for memory devices
KR20200027858A (en) 2018-09-05 2020-03-13 에스케이하이닉스 주식회사 Memory controller and memory system having the same
CN111949558B (en) * 2019-05-16 2023-11-21 兆易创新科技集团股份有限公司 Garbage data recovery method and device and storage equipment
CN110515542B (en) * 2019-07-30 2021-08-31 华为技术有限公司 Data storage method and device, computing equipment, storage system and storage medium
CN110570898A (en) * 2019-08-13 2019-12-13 深圳市金泰克半导体有限公司 Method and device for detecting data processing speed of memory
CN112748858B (en) * 2019-10-30 2024-04-19 伊姆西Ip控股有限责任公司 Method, electronic device and computer program product for managing disk arrays
US11334434B2 (en) * 2020-02-19 2022-05-17 Seagate Technology Llc Multi-level erasure system with cooperative optimization
KR20220007206A (en) 2020-07-10 2022-01-18 에스케이하이닉스 주식회사 Data Storage Apparatus and Operation Method Thereof
CN112306417B (en) * 2020-11-09 2022-09-20 苏州浪潮智能科技有限公司 Method for shortening power-on recovery time of SSD
CN112540799A (en) * 2020-12-02 2021-03-23 深圳市硅格半导体有限公司 Management method, system, terminal device and storage medium of startup data
CN113626248B (en) * 2021-06-30 2023-07-18 苏州浪潮智能科技有限公司 Method and system for repairing inconsistent stripe data in RAID (redundant array of independent disks)
CN116382576B (en) * 2023-03-17 2024-02-27 平头哥(上海)半导体技术有限公司 Storage control chip, solid state disk and related method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425052B1 (en) * 1999-10-28 2002-07-23 Sun Microsystems, Inc. Load balancing configuration for storage arrays employing mirroring and striping
US20020103966A1 (en) 2000-12-04 2002-08-01 Wu Chia Y. System and method for efficient data mirroring in a pair of storage devices
US20070089045A1 (en) 2001-12-28 2007-04-19 Corbett Peter F Triple parity technique for enabling efficient recovery from triple failures in a storage array

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0701716B1 (en) * 1993-06-03 2002-08-14 Network Appliance, Inc. Method and file system for allocating blocks of files to storage space in a RAID disk system
US8281022B1 (en) * 2000-06-30 2012-10-02 Emc Corporation Method and apparatus for implementing high-performance, scaleable data processing and storage systems
US6760807B2 (en) * 2001-11-14 2004-07-06 International Business Machines Corporation System, apparatus and method providing adaptive write policy for disk array controllers
JP4646539B2 (en) 2004-03-29 2011-03-09 エーユー オプトロニクス コーポレイション Liquid crystal display device and manufacturing method thereof
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7822921B2 (en) * 2006-10-31 2010-10-26 Netapp, Inc. System and method for optimizing write operations in storage systems
US8095763B2 (en) 2007-10-18 2012-01-10 Datadirect Networks, Inc. Method for reducing latency in a raid memory system while maintaining data integrity
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
KR101638764B1 (en) 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 Redundant data storage for uniform read latency

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425052B1 (en) * 1999-10-28 2002-07-23 Sun Microsystems, Inc. Load balancing configuration for storage arrays employing mirroring and striping
US20020103966A1 (en) 2000-12-04 2002-08-01 Wu Chia Y. System and method for efficient data mirroring in a pair of storage devices
US20070089045A1 (en) 2001-12-28 2007-04-19 Corbett Peter F Triple parity technique for enabling efficient recovery from triple failures in a storage array

Also Published As

Publication number Publication date
WO2011044515A3 (en) 2011-10-27
CN102667738B (en) 2018-07-17
CN102667738A (en) 2012-09-12
WO2011044515A2 (en) 2011-04-14
EP2467783A2 (en) 2012-06-27
KR20130041314A (en) 2013-04-24
EP3696676B1 (en) 2023-12-06
KR20120086695A (en) 2012-08-03
EP2467783B1 (en) 2020-05-27
KR101307953B1 (en) 2013-09-12
EP3696676A1 (en) 2020-08-19
EP2467783A4 (en) 2013-05-29
EP4361815A2 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
KR101411566B1 (en) Memory system with multiple striping of raid groups and method for performing the same
US10372366B2 (en) Memory system with multiple striping of RAID groups and method for performing the same
US10761766B2 (en) Memory management system and method
US11960743B2 (en) Memory system with multiple striping of RAID groups and method for performing the same
US8839028B1 (en) Managing data availability in storage systems
US7529970B2 (en) System and method for improving the performance of operations requiring parity reads in a storage array system

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190418

Year of fee payment: 6