KR102347841B1 - Memory management apparatus and control method thereof - Google Patents
Memory management apparatus and control method thereof Download PDFInfo
- Publication number
- KR102347841B1 KR102347841B1 KR1020210123905A KR20210123905A KR102347841B1 KR 102347841 B1 KR102347841 B1 KR 102347841B1 KR 1020210123905 A KR1020210123905 A KR 1020210123905A KR 20210123905 A KR20210123905 A KR 20210123905A KR 102347841 B1 KR102347841 B1 KR 102347841B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- write
- data buffer
- buffer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 방안을 제안하고 있다.The present invention proposes a method for more efficiently increasing performance and reliability when configuring RAID in a storage system including a flash-based device such as an SSD.
Description
본 발명은, 스토리지 시스템에 관한 것으로, 더욱 상세하게는, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 기술에 관한 것이다.The present invention relates to a storage system, and more particularly, to a technology capable of more efficiently increasing performance and reliability in a storage system including a flash-based device such as an SSD.
최근에는, HDD(Hard Disk Drive) 대비 성능이 향상된 SSD(Solid State Drive)가 널리 사용되기 시작하면서, 다수의 플래시기반 SSD를 채택한 스토리지(Storage) 시스템을 구성하여 네트워크를 통해 데이터 서비스를 제공하고 있다.Recently, as SSD (Solid State Drive) with improved performance compared to HDD (Hard Disk Drive) has been widely used, a storage system employing multiple flash-based SSDs is configured to provide data services through a network. .
그 예로서, 스토리지 시스템이 단순하게 블록 수준의 스토리지 서비스를 지원하여 데이터 서비스를 제공할 수 있도록 하는 SAN(Storage Area Network) / NAS (Network Attached Storage) 역할을 담당할 수 있고, 또는 스토리지 시스템 내부에 응용서버를 운용해서 직접 데이터 서비스(예 : DB, 웹 서비스)제공할 수도 있다.For example, the storage system may simply support a block-level storage service to provide a data service, which may serve as a Storage Area Network (SAN) / NAS (Network Attached Storage) role, or Data service (eg DB, web service) can be provided directly by operating the application server.
이러한, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서는, 기존의 HDD로 구성된 스토리지 시스템과 마찬가지로, 고성능 및 고신뢰도를 위해 RAID 알고리즘으로 디바이스를 묶어서 이용할 수 있다.In such a storage system composed of a plurality of flash-based SSDs, like a storage system composed of an existing HDD, devices can be bundled and used with a RAID algorithm for high performance and high reliability.
SSD와 같은 플래시기반 디바이스의 경우는, 작은 단위의 쓰기(이하, small write)에 대해서, HDD와 마찬가지로 성능이 저하되는 특성을 보이는 한편, P/E(program/erase) 사이클을 가속시켜 HDD와 달리 추가적으로 신뢰도에 취약한 특성을 보이며, RAID 알고리즘을 통해 디바이스를 묶어서 이용하는 경우 즉 RAID 구성 시 패리티정보 업데이트로 인해 이러한 신뢰도 취약 특성은 배가된다.In the case of a flash-based device such as an SSD, the performance of a flash-based device such as a small write (hereinafter referred to as small write) is degraded similarly to that of the HDD, but unlike the HDD, it accelerates the P/E (program/erase) cycle. Additionally, it exhibits a weak reliability characteristic, and when devices are bundled through a RAID algorithm, that is, the reliability vulnerability is doubled due to the update of the parity information during RAID configuration.
따라서, 기존의 HDD로 구성된 스토리지 시스템의 경우는, RAID 알고리즘을 통해 디바이스를 묶어서 이용하는 RAID 구성 만으로도 충분히 고성능 및 고신뢰도를 달성할 수 있었으나, SSD로 구성된 스토리지 시스템에서는 디바이스를 묶어서 이용하는 것만으로는 충분한 고성능 및 고신뢰도를 달성하는데 부족한 면이 있다. Therefore, in the case of a storage system composed of conventional HDDs, high performance and high reliability could be achieved only by using a RAID configuration that bundles devices through a RAID algorithm. And there is a lack of achieving high reliability.
이에, 본 발명에서는, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 방안을 제안하고자 한다. Accordingly, in the present invention, in a storage system composed of a plurality of flash-based SSDs, it is intended to propose a method for more efficiently increasing performance and reliability when configuring RAID.
본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명에서 도달하고자 하는 목적은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높이고자 한다.The present invention was created in view of the above circumstances, and an object of the present invention is to more efficiently increase performance and reliability when configuring a RAID in a storage system composed of a flash-based device such as an SSD.
상기 목적을 달성하기 위한 본 발명의 제 1 관점에 따른 메모리제어장치는, 메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부; 상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부; 및 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부를 포함한다.According to a first aspect of the present invention, there is provided a memory control device comprising: a grouping unit for grouping a plurality of memory chips constituting a memory device into two or more memory groups; an allocation control unit distributedly allocating write requests received from the memory device to the two or more memory groups so that data of the write requests are distributed and buffered in data buffers corresponding to the two or more memory groups; and independently performing a data write operation of writing data buffered in the data buffer to a corresponding memory group for each data buffer corresponding to each of the two or more memory groups, so that the write requests can be processed in parallel in units of memory groups. It includes a data recording control unit.
바람직하게는, 상기 할당제어부는, 상기 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정하여, 상기 2 이상의 메모리그룹에 분산 할당할 수 있다. Preferably, the allocation control unit determines, for each of the write requests, a memory group to be allocated among the two or more memory groups based on a logical block address (LBA) of the write request and the number of memory groups Thus, it is possible to distribute and allocate to the two or more memory groups.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터쓰기 동작은, 데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다.Preferably, in the data buffer, the transferred data is buffered at the most empty position in the data buffer, and in the data writing operation, when the data buffer is in a full state, all data buffered in the data buffer is buffered. and writing parity information related to all the data in a memory group corresponding to the data buffer, and emptying the data buffer.
바람직하게는 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터버퍼는 2 이상의 부분버퍼로 구분되며, 상기 데이터쓰기 동작은, 상기 데이터버퍼가 풀 상태가 되기 이전에는, 상기 데이터버퍼 내 상기 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 상기 특정 부분버퍼에 버퍼링된 데이터를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 상기 데이터버퍼가 풀 상태가 되면, 상기 마지막 부분버퍼에 버퍼링된 데이터 및 상기 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다. Preferably, in the data buffer, transmitted data is buffered at an empty leading position in the data buffer, the data buffer is divided into two or more partial buffers, and the data write operation causes the data buffer to become full. Previously, when a specific partial buffer among the two or more partial buffers in the data buffer becomes full, the data buffered in the specific partial buffer is written to a memory group corresponding to the data buffer, and the last part of the two or more partial buffers When the buffer becomes full and the data buffer becomes full, the data buffered in the last partial buffer and parity information related to all data buffered in the data buffer are written to the memory group, and the data buffer is emptied. can be
바람직하게는, 상기 부분버퍼는, 상기 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련될 수 있다. Preferably, the partial buffer may be related to a chunk size of each memory chip included in the memory group.
바람직하게는, 데이터버*에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터쓰기 동작은, 상기 데이터버퍼 내 비어있지 않은 가장 앞선 위치상 데이터를 꺼내어 상기 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작일 수 있다.Preferably, in the data buffer*, transferred data is buffered at an empty leading position in the data buffer, and the data writing operation takes out data at an earlier non-empty position in the data buffer to communicate with the data buffer. It may be an operation of writing to a corresponding memory group.
상기 목적을 달성하기 위한 본 발명의 제 2 관점에 따른 메모리제어장치의 동작 방법은, 메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑단계; 상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어단계; 및 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어단계를 포함한다.According to a second aspect of the present invention, there is provided an operating method of a memory control device, comprising: a grouping step of grouping a plurality of memory chips constituting the memory device into two or more memory groups; an allocation control step of distributedly allocating write requests received with respect to the memory device to the two or more memory groups so that data of the write requests are distributed and buffered in data buffers corresponding to each of the two or more memory groups; and independently performing a data write operation of writing data buffered in the data buffer to a corresponding memory group for each data buffer corresponding to each of the two or more memory groups, so that the write requests can be processed in parallel in units of memory groups. and a data recording control step.
바람직하게는, 상기 할당제어단계는, 상기 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정하여, 상기 2 이상의 메모리그룹에 분산 할당할 수 있다. Preferably, in the allocation control step, for each of the write requests, a memory group to be allocated among the two or more memory groups is selected based on a logical block addressing (LBA) of the write request and the number of memory groups. It can be determined and distributed to the two or more memory groups.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터쓰기 동작은, 데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다. Preferably, in the data buffer, the transferred data is buffered at the most empty position in the data buffer, and in the data writing operation, when the data buffer is in a full state, all data buffered in the data buffer is buffered. and writing parity information related to all the data in a memory group corresponding to the data buffer, and emptying the data buffer.
바람직하게는, 데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며, 상기 데이터버퍼는 2 이상의 부분버퍼로 구분되며, 상기 데이터쓰기 동작은, 상기 데이터버퍼가 풀 상태가 되기 이전에는, 상기 데이터버퍼 내 상기 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 상기 특정 부분버퍼에 버퍼링된 데이터를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 상기 데이터버퍼가 풀 상태가 되면, 상기 마지막 부분버퍼에 버퍼링된 데이터 및 상기 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작일 수 있다.Preferably, in the data buffer, the transferred data is buffered at the most empty position in the data buffer, the data buffer is divided into two or more partial buffers, and the data write operation is performed when the data buffer is in a full state. Before, when a specific partial buffer among the two or more partial buffers in the data buffer becomes full, the data buffered in the specific partial buffer is written to a memory group corresponding to the data buffer, and the last of the two or more partial buffers is written When the partial buffer becomes full and the data buffer becomes full, the data buffered in the last partial buffer and parity information related to all data buffered in the data buffer are written to the memory group, and the data buffer is emptied. It can be an action.
이에, 본 발명의 메모리제어장치 및 메모리제어장치의 동작 방법에 의하면, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.Accordingly, according to the memory control apparatus and the method of operating the memory control apparatus of the present invention, in a storage system configured with a flash-based device such as an SSD, performance and reliability can be more efficiently increased during RAID configuration.
도 1은 본 발명의 바람직한 실시예에 따른 메모리제어장치가 포함된 스토리지 시스템의 구성을 간략하게 보여주는 구성도이다.
도 2는 본 발명의 바람직한 실시예에 따른 메모리제어장치를 구체적으로 보여주는 블록도이다.
도 3 및 도 4는 본 발명의 바람직한 실시예에 따른 메모리제어장치가 포함된 스토리지 시스템에서 쓰기요청들이 메모리그룹 단위로 병렬 처리되는 패스를 보여주는 예시도이다.
도 5는 본 발명의 바람직한 실시예에 따른 메모리제어장치의 동작 방법을 나타내는 동작 흐름도이다.1 is a schematic diagram showing the configuration of a storage system including a memory control device according to a preferred embodiment of the present invention.
2 is a block diagram specifically showing an apparatus for controlling a memory according to a preferred embodiment of the present invention.
3 and 4 are exemplary diagrams illustrating a path in which write requests are parallelly processed in units of memory groups in a storage system including a memory control device according to a preferred embodiment of the present invention.
5 is an operation flowchart illustrating a method of operating a memory control apparatus according to a preferred embodiment of the present invention.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 설명한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.
먼저, 도 1을 참조하여 본 발명의 바람직한 실시예에 따른 메모리제어장치가 포함된 스토리지 시스템의 구성을 설명하겠다.First, a configuration of a storage system including a memory control device according to a preferred embodiment of the present invention will be described with reference to FIG. 1 .
도 1에 도시된 바와 같이, 스토리지 시스템은, 저장공간으로서의 메모리장치(10)와, 메모리장치(10)로의 메모리연산을 시도하는 파일시스템 또는 어플리케이션(이하, 파일시스템(200)이라 함)과, 파일시스템(200) 및 메모리장치(10) 사이에서 메모리장치(10)를 제어하는 메모리제어장치(100)를 포함한다.As shown in FIG. 1, the storage system includes a
이때, 메모리장치(10)는 여러 개의 플래시 메모리로 구성된 메모리칩을 다수 개 포함하며, 여기서 메모리칩은 SSD(Solid State Drive)와 같은 플래시기반 디바이스인 것이 바람직하다.In this case, the
즉, 메모리장치(10)는, 도 1에 도시된 바와 같이, 다수의 메모리칩(#0,#1,#2...#N-1), 예컨대 N개의 플래시기반 SSD로 구성될 수 있다.That is, as shown in FIG. 1 , the
메모리제어장치(100)는, 파일시스템(200) 및 메모리장치(10) 사이에서 메모리장치(10)를 제어하는 제어모듈 또는 제어 소프트웨어일 수 있다.The
현재는, 전술과 같이 다수의 플래시기반 SSD를 채용한 스토리지 시스템을 하나의 어레이로 하여 여러 개의 어레이 즉 스토리지 시스템을 구비한 메모리 어레이 시스템을 구축하여, 네트워크(미도시)를 통해 외부의 클라이언트컴퓨터(미도시)로 데이터 서비스를 제공하기도 한다.Currently, as described above, a storage system employing a plurality of flash-based SSDs is used as an array to construct a memory array system having multiple arrays, that is, a storage system, and an external client computer ( (not shown) to provide data service.
이러한 스토리지 시스템에서는, 고성능 및 고신뢰도를 위해 중복 알고리즘(예 : RAID(Redundant Array of Independent Disks) 알고리즘, 이하 RAID 알고리즘이라 함)을 채용함으로써, RAID 알고리즘으로 메모리칩 즉 SSD를 묶어서 이용할 수 있다.In such a storage system, by adopting a redundancy algorithm (eg, a Redundant Array of Independent Disks (RAID) algorithm, hereinafter referred to as a RAID algorithm) for high performance and high reliability, memory chips, that is, SSDs can be bundled and used as a RAID algorithm.
헌데, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서는, 전술과 같이 RAID 알고리즘으로 SSD를 묶어서 이용하는 RAID 구성 만으로는, 충분한 고성능 및 고신뢰도를 달성하는데 부족한 면이 있다. However, in a storage system composed of a plurality of flash-based SSDs, there is a lack of achieving sufficient high performance and high reliability by only using a RAID configuration that bundles SSDs with a RAID algorithm as described above.
이에, 본 발명에서는, 다수의 플래시기반 SSD로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 방안을 제안하고자 하며, 구체적으로 이를 실현하는 메모리제어장치를 제안하고자 한다.Accordingly, in the present invention, it is intended to propose a method for more efficiently increasing performance and reliability when configuring RAID in a storage system composed of a plurality of flash-based SSDs, and specifically to propose a memory control device for realizing this.
이하에서는, 도 2를 참조하여 본 발명의 바림직한 실시예에 따른 메모리제어장치를 구체적으로 설명하도록 한다. 설명의 편의를 위해서, 전술한 도 1에서 대응되는 메모리제어장치(100)의 참조번호를 이용하여 설명하도록 하겠다.Hereinafter, a memory control apparatus according to a preferred embodiment of the present invention will be described in detail with reference to FIG. 2 . For convenience of description, reference numerals of the
본 발명에 따른 메모리제어장치(100)는, 메모리장치(10)를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부(110)와, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부(120)와, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부(130)를 포함한다.The
메모리장치(10)는 여러 개의 플래시 메모리로 구성된 메모리칩을 다수 개 포함하며, 여기서 메모리칩은 SSD(Solid State Drive)와 같은 플래시기반 디바이스인 것이 바람직하다.The
즉, 메모리장치(10)는, 도 1에 도시된 바와 같이, 다수의 메모리칩, 예컨대 N개의 플래시기반 SSD(#0,#1,#2...#N-1)로 구성될 수 있다. 이하에서는, 설명의 편의를 위해, 메모리칩과 SSD를 혼용하여 설명할 수 있다.That is, as shown in FIG. 1 , the
본 발명에 따른 메모리제어장치(100)는, 다수의 플래시기반 SSD로 구성된 메모리장치(10)를 제어하는 메모리제어장치로서, 제어모듈 또는 제어 소프트웨어의 형태일 수 있으며, 메모리장치(10)를 제어하기 위해 필요한 저장공간(예 : 데이터버퍼 등)을 내부에 보유할 수 있다.The
그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다.The
즉, 본 발명에 따른 메모리제어장치(100)는, RAID 알고리즘으로 메모리칩 즉 SSD를 묶어서 메모리그룹 형태로 운영하는 것을 기본으로 한다.That is, the
이때, 본 발명에 따른 메모리제어장치(100)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 하나로 묶어 RAID를 구성하는 것이 아니라, N개 보다 작은 개수의 SSD로 묶어진 메모리그룹 즉 RAID 그룹을 구성하고자 한다.At this time, the
이를 위해, 그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다.To this end, the
이에, 도 3을 참조하여 설명하면, 그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1)를, N개 보다 작은 개수(예 : 5개)로 묶어 M개의 메모리그룹(#0...#M-1)으로 그룹핑할 수 있다. 결국, M개의 메모리그룹(#0...#M-1)은, M개의 RAID그룹을 의미한다.Accordingly, referring to FIG. 3 , the
할당제어부(120)는, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당하여, 쓰기요청들의 데이터가 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 한다.The
할당제어부(120)의 기능을 설명하기에 앞서, 도 3을 참조하여, 메모리장치(10)를 제어하기 위해 메모리제어장치(100) 내부에 보유되는 저장공간 즉, 데이터버퍼의 구조를 설명하도록 한다.Before describing the function of the
도 3에 도시된 바와 같이, 그룹핑한 2 이상의 메모리그룹 즉 M개의 메모리그룹(#0...#M-1) 각각에는, 메모리그룹 내에 기록하기 위한 데이터가 버퍼링되는 데이터버퍼가 각기 대응되도록 구비된다.As shown in FIG. 3, in each of the grouped two or more memory groups, that is, the M
이에, 메모리그룹 #0에는 데이터버퍼 #0, 메모리그룹 #1에는 데이터버퍼 #1, ... 메모리그룹 #M에는 데이터버퍼 #M이 대응되도록 구비된다.Accordingly, the
이때, 데이터버퍼의 크기는, 메모리그룹에 포함되는 개별 메모리칩 즉 개별 SSD의 성능을 최대로 이끌어낼 수 있는 크기, 또는 메모리그룹 즉 RAID그룹의 성능을 최대로 이끌어 낼 수 있는 크기인 것이 바람직하다.In this case, the size of the data buffer is preferably a size capable of maximizing the performance of individual memory chips included in the memory group, that is, an individual SSD, or a size capable of maximizing the performance of a memory group, that is, a RAID group. .
예를 들어, 메모리칩 즉 SSD가 8 Channel, 8 Way로 구성되어 있고, 플래시메모리의 물리 페이지 크기가 8 KB인 경우, 적어도 8 x 8 x 8 KB인 512 KB 또는 그것의 절반인 256KB를 데이터버퍼의 크기로 결정하면, 개별 SSD의 성능을 최대로 이끌어낼 수 있다. 이것은 SSD의 특성에 의존하는 값이다.For example, if a memory chip or SSD consists of 8 channels, 8 way, and the physical page size of flash memory is 8 KB, at least 512 KB, which is 8 x 8 x 8 KB, or 256 KB, which is half of that, is used as a data buffer. By determining the size of , the performance of individual SSDs can be maximized. This is a value that depends on the characteristics of the SSD.
한편, 메모리그룹 즉 RAID그룹의 최대 성능을 위해서는, 패리티정보 업데이트를 최소화시키는 것이 중요하다. 예를 들어, 청크 크기가 256KB인 5개의 메모리칩으로 RAID 5 알고리즘을 구성하면, 4 x 256KB인 1024 KB 크기를 데이터버퍼의 크기로 결정하면, 메모리그룹 즉 RAID그룹의 성능을 최대로 이끌어 낼 수 있다.On the other hand, for the maximum performance of the memory group, that is, the RAID group, it is important to minimize the parity information update. For example, if the RAID 5 algorithm is configured with 5 memory chips with a chunk size of 256 KB, if the data buffer size is 1024 KB, which is 4 x 256 KB, the performance of the memory group, that is, the RAID group, can be maximized. have.
이하에서는 설명의 편의를 위해서, 메모리장치(10)에는 10개(N=10)의 메모리칩이 구성되어 있고, 그룹핑부(110)에서 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑한 예를 언급하여 설명하겠다.Hereinafter, for convenience of explanation, 10 (N=10) memory chips are configured in the
메모리제어장치(100)는, 메모리장치(10)에 대하여 메모리연산을 시도하는 요청을 파일시스템(200)으로부터 수신하게 된다. 이하에서는, 본 발명의 설명 편의를 위해서 쓰기요청이 수신되는 경우를 설명하겠다.The
즉, 메모리제어장치(100)는, 메모리장치(10)에 대하여 쓰기연산을 시도하는 쓰기요청을, 파일시스템(200)으로부터 수신하게 된다.That is, the
할당제어부(120)는, 메모리장치(10)에 대하여 파일시스템(200)으로부터 수신되는 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청을, 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당한다.The
보다 구체적으로 설명하면, 할당제어부(120)는, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정함으로써, 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당할 수 있다. More specifically, for each of the received write requests, the
파일시스템(200)으로부터 수신되는 쓰기요청 각각에는, 수신된 순서에 따라서 순차적으로 증가 또는 감소하는 숫자체계의 논리블록주소(LBA)가 부여된다.Each write request received from the
이에, 할당제어부(120)는, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수를 기초로 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정할 수 있다.Accordingly, for each of the received write requests, the
예를 들면, 할당제어부(120)는, 쓰기요청의 논리블록주소(LBA)를 메모리그룹의 개수(M)로 나눈 나머지값에 대응되는 넘버링의 메모리그룹을, 해당 쓰기요청을 할당할 메모리그룹을 결정할 수 있다.For example, the
도 3에 도시된 바와 같이, 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청1,2,3,4,5,6...을 언급하고, 전술과 같이 2 개의 메모리그룹 #0, 메모리그룹 #1으로 그룹핑한 예를 언급하여 설명하면 다음과 같다.3, referring to the write requests, that is, each
할당제어부(120)는, 수신되는 쓰기요청1의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 할당제어부(120)는, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청1을 할당할 메모리그룹으로 결정하고, 쓰기요청1을 결정한 메모리그룹 #0에 할당한다.The
이에, 쓰기요청1의 데이터1은, 쓰기요청1이 할당된 메모리그룹 #0의 데이터버퍼 #0로 전달되어 데이터버퍼 #0에 버퍼링될 것이다.Accordingly,
이와 마찬가지로, 할당제어부(120)는 수신되는 쓰기요청2의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 1이면, 할당제어부(120)는, 나머지값 1에 대응되는 넘버링의 메모리그룹 #1을 쓰기요청2를 할당할 메모리그룹으로 결정하고, 쓰기요청2를 결정한 메모리그룹 #1에 할당한다.Similarly, the
이에, 쓰기요청2의 데이터2는, 쓰기요청2가 할당된 메모리그룹 #1의 데이터버퍼 #1로 전달되어 데이터버퍼 #1에 버퍼링될 것이다.Accordingly, the data 2 of the write request 2 will be transferred to the
이와 마찬가지로, 할당제어부(120)는, 수신되는 쓰기요청3의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 할당제어부(120)는, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청3을 할당할 메모리그룹으로 결정하고, 쓰기요청3을 결정한 메모리그룹 #0에 할당한다.Similarly, the
이에, 쓰기요청3의 데이터3은, 쓰기요청3이 할당된 메모리그룹 #0의 데이터버퍼 #0으로 전달되어 데이터버퍼 #0에 버퍼링될 것이다.Accordingly, data 3 of write request 3 will be transferred to
이러한 방식으로, 할당제어부(120)는 쓰기요청4,5,6... 각각에 대해서도, 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 이에 할당제어부(120)는, 쓰기요청4,5,6... 각각의 나머지값(0 또는 1)에 대응되는 넘버링의 메모리그룹(#0 또는 #1)을 쓰기요청4,5,6... 각각을 할당할 메모리그룹으로 결정하고, 쓰기요청4,5,6... 각각을 결정한 메모리그룹(#0 또는 #1)에 할당한다.In this way, the
이에, 쓰기요청4,5,6...의 데이터4,5,6...은, 쓰기요청4,5,6...이 할당된 메모리그룹(#0 또는 #1)의 데이터버퍼(#0 또는 #1)로 전달되어 데이터버퍼(#0 또는 #1)에 버퍼링될 것이다.Therefore, data 4,5,6... of write requests 4,5,6... are data buffers (#0 or #1) of the memory group (#0 or #1) to which write requests 4,5,6... are allocated. It will be transferred to #0 or #1 and will be buffered in the data buffer (#0 or #1).
이처럼, 할당제어부(120)는, 수신되는 쓰기요청들 즉 쓰기요청1,2,3,4,5,6...각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0 및 메모리그룹 #1에 분산 할당함으로써, 쓰기요청들의 데이터 1,2,3,4,5,6...가 메모리그룹 #0, 메모리그룹 #1 각각에 대응되는 데이터버퍼 #0, 데이터버퍼 #1에 분산 버퍼링되도록 한다.As such, the
이때, 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼, 예컨대 데이터버퍼 #0, 데이터버퍼 #1은, 할당제어부(120)에 의해 분산 할당되는 쓰기요청들의 각 데이터 다시 말해 임의 쓰기 형태로 전달되는 데이터를, 데이터버퍼 단위 내에서 순차 쓰기 형태로 변환하는 역할을 하게 된다.At this time, the data buffers corresponding to each of the two or more memory groups, for example,
데이터기록제어부(130)는, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 2 이상의 메모리그룹 예컨대 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 별로 독립적으로 수행한다.The data write
즉, 데이터기록제어부(130)는, 데이터버퍼 #0에 버퍼링된 데이터를 메모리그룹 #0에 기록하는 데이터쓰기 동작을 수행하는 것과, 데이터버퍼 #1에 버퍼링된 데이터를 메모리그룹 #1에 기록하는 데이터쓰기 동작을 수행하는 것을, 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 것이다.That is, the data write
기본적으로, 데이터버퍼에는, 전달되는 데이터가 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링된다.Basically, in the data buffer, the transferred data is buffered at the empty leading position in the data buffer.
즉, 전술의 예와 같이 쓰기요청1,3,5...가 메모리그룹 #0에 할당됨에 따라 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...는, 데이터버퍼 #0로 전달되는 시점에 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 버퍼링된다.That is, as in the above example, as
물론, 전술의 예와 같이 쓰기요청2,4,6...이 메모리그룹 #1에 할당됨에 따라 데이터버퍼 #1로 전달되는 쓰기요청2,4,6... 각각의 데이터2,4,6...은, 데이터버퍼 #1로 전달되는 시점에 데이터버퍼 #1 내 비어있는 가장 앞선 위치에 버퍼링된다.Of course, as in the example above, as write requests 2, 4, 6 ... are allocated to
이하에서는, 데이터버퍼(메모리그룹) 별로 독립 수행하는 데이터쓰기 동작을 구체적으로 설명하도록 한다.Hereinafter, a data write operation independently performed for each data buffer (memory group) will be described in detail.
먼저, 제1실시예를 설명하면, 제1실시예의 데이터쓰기 동작은, 데이터버퍼가 풀(Full) 상태가 되면, 데이터버퍼에 버퍼링된 모든 데이터 및 모든 데이터와 관련된 패리티정보를 데이터버퍼와 대응되는 메모리그룹에 기록하고, 데이터버퍼를 비우는 동작이다. First, the first embodiment will be described. In the data write operation of the first embodiment, when the data buffer is in a full state, all data buffered in the data buffer and parity information related to all data are transferred to the data buffer. This is an operation to write to the memory group and empty the data buffer.
이하에서는, 설명의 편의를 위해 제1실시예에 따른 데이터쓰기 동작을, 도 4를 참조하여 데이터쓰기 동작B로 언급하여 설명하겠다.Hereinafter, for convenience of description, the data write operation according to the first embodiment will be referred to as a data write operation B with reference to FIG. 4 .
즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작B를 각각 독립적으로 수행한다.That is, the data write
설명의 편의를 위해 데이터버퍼 #0에 대하여 데이터쓰기 동작B를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀(Full) 상태가 되는지 확인한다.For convenience of explanation, a process of performing data write operation B on
전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0은 어느 시점에 도 4의 데이터쓰기 동작B에 도시된 바와 같이 풀 상태가 될 것이다.As described above, as the write requests 1, 3, 5... each
데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되면, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...) 및 모든 데이터(예 : 데이터1,3,5...)와 관련된 패리티정보를, 데이터버퍼 #0와 대응되는 메모리그룹 #0에 기록하고, 데이터버퍼 #0을 비운다. The data
여기서, 패리티정보는, 데이터를 기반으로 계산한 고유값(예 : 해쉬값)을 포함하는 정보로서, 데이터의 중복 여부를 판단하거나 데이터의 무결성을 판단하는데 이용되는 정보이다.Here, the parity information is information including a unique value (eg, a hash value) calculated based on data, and is information used to determine whether data is duplicated or to determine data integrity.
*예를 들면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되면, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...)와, 데이터버퍼 #0에 버퍼링된 데이터1,3,5... 각각에 대하여 계산된 패리티정보를 포함하는 데이터세그먼트를 구성하고, 구성한 데이터세그먼트를 메모리그룹 #0 내 메모리칩 즉 메모리칩#0,#1,#2,#3,#4에 걸쳐서 기록함으로써, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...) 및 모든 데이터(예 : 데이터1,3,5...)와 관련된 패리티정보를 메모리그룹 #0에 기록할 수 있다.*For example, when
이후, 데이터기록제어부(130)는, 데이터버퍼 #0을 비운다.Thereafter, the data write
데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작B를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작B를 독립적으로 수행한다.The data write
즉, 데이터기록제어부(130)는, 데이터버퍼 #1이 풀 상태가 되면, 데이터버퍼 #1에 버퍼링된 모든 데이터(예 : 데이터2,4,6...) 및 모든 데이터(예 : 데이터2,4,6...)와 관련된 패리티정보를, 데이터버퍼 #1과 대응되는 메모리그룹 #1에 기록하고, 데이터버퍼 #1을 비운다. That is, when
이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작B를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.As such, the data write
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작B를 채택한다면, 일정하고 큰 단위(데이터버퍼 단위)의 쓰기이기 때문에 패리티정보 업데이트를 최소화시킬 수 있어 성능 향상에 유리한 반면, 갑작스러운 전원 오프 시 DRAM 상에 있는 많은 데이터를 손실할 수 있기 때문에 신뢰도 면에서 다소 불리할 수 있다.If the above-described data write operation B is adopted in the
한편, 제2실시예를 설명하면, 제2실시예의 데이터쓰기 동작은, 데이터버퍼 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작이다. Meanwhile, referring to the second embodiment, the data writing operation of the second embodiment is an operation of taking out data from the most advanced non-empty position in the data buffer and writing it to a memory group corresponding to the data buffer.
이하에서는, 설명의 편의를 위해 제2실시예에 따른 데이터쓰기 동작을, 도 4를 참조하여 데이터쓰기 동작A로 언급하여 설명하겠다.Hereinafter, for convenience of description, the data write operation according to the second embodiment will be described as a data write operation A with reference to FIG. 4 .
즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작A를 각각 독립적으로 수행한다.That is, the data write
설명의 편의를 위해 데이터버퍼 #0에 대하여 데이터쓰기 동작A를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 데이터버퍼 #0과 대응되는 메모리그룹 #0에 기록한다.For convenience of explanation, the process of performing the data write operation A on
전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치에는 데이터1이 버퍼링되어 있을 것이다.As described above, as the write requests 1, 3, 5... each
이에, 데이터기록제어부(130)는, 도 4의 데이터쓰기 동작A에 도시된 바와 같이, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터, 예컨대 데이터1을 꺼내어 메모리그룹 #0에 기록한다. Accordingly, as shown in the data write operation A of FIG. 4 , the data write
이후, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치에는 데이터3이 버퍼링되어 있을 것이다.After that, data 3 will be buffered at the most non-empty position in
이에, 데이터기록제어부(130)는, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터, 예컨대 데이터3을 꺼내어 메모리그룹 #0에 기록한다.Accordingly, the data write
이런 방식으로, 데이터기록제어부(130)는, 데이터버퍼 #0로 전달/버퍼링되는 쓰기요청1,3,5... 각각의 데이터1,3,5...를, 데이터버퍼 #0 단위 내에서 순차 쓰기 형태가 되도록 맵핑정보(미도시) 관리를 통해서 주소만 변환해주고, 메모리그룹 #0에 기록한다.In this way, the data write
물론, 데이터기록제어부(130)는, 데이터버퍼 #0에서 데이터를 꺼내어 메모리그룹 #0에 기록할 때마다, 기록하는 데이터의 패리티정보를 메모리그룹 #0에 기록할 수 있다.Of course, the data write
데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작A를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작A를 독립적으로 수행한다.As described above, the data write
즉, 데이터기록제어부(130)는, 데이터버퍼 #1로 전달/버퍼링되는 쓰기요청2,4,6... 각각의 데이터2,4,6...를, 데이터버퍼 #1 단위 내에서 순차 쓰기 형태가 되도록 맵핑정보(미도시) 관리를 통해서 주소만 변환해주고, 메모리그룹 #1에 기록한다.That is, the data write
이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작A를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.As such, the data write
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작A를 채택한다면, 전술의 데이터쓰기 동작B를 채택하는 경우에 비해서, 갑작스러운 전원 오프가 우려되는 환경에서는 신뢰도가 우수한 반면, 작은 단위의 쓰기(small write)가 많기 때문에 패리티정보 업데이트가 많아져 성능 향상 면에서 불리하다.If the above-mentioned data writing operation A is adopted in the
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작A를 채택하는 경우, 전술의 데이터쓰기 동작B를 채택하는 경우에 비해 성능 향상 면에서 불리하다고 할 수 있지만, 비록 small write 이더라도 데이터퍼버 단위 내에서 순차 쓰기 형태이기 때문에, 기존의 임의 쓰기 형태의 small write에 비해서는 성능이 향상될 것이다.When the above-described data writing operation A is adopted in the
한편, 데이터쓰기 동작의 제3실시예를 설명하면 다음과 같다.Meanwhile, a third embodiment of the data write operation will be described as follows.
먼저, 각 데이터퍼버는, 2 이상의 부분버퍼로 구분된다. First, each data buffer is divided into two or more partial buffers.
이때, 부분버퍼는, 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련된다.In this case, the partial buffer is related to the chunk size of each memory chip included in the memory group.
보다 구체적으로 예를 들어, 메모리그룹 #0, #1에 포함되는 각 메모리칩의 청크(또는 스트립) 크기가 256KB라면, 각 데이터퍼버는 각 메모리칩의 청크 크기와 같은 256KB 단위의 부분버퍼로 구분될 수 있다.More specifically, for example, if the chunk (or strip) size of each memory chip included in
이에, 제3실시예에 따른 데이터쓰기 동작은, 데이터버퍼가 풀 상태가 되기 이전에는, 데이터버퍼 내 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 특정 부분버퍼에 버퍼링된 데이터를 데이터버퍼와 대응되는 메모리그룹에 기록한다. 그리고, 제3실시예에 따른 데이터쓰기 동작은, 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 데이터버퍼가 풀 상태가 되면, 마지막 부분버퍼에 버퍼링된 데이터 및 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 데이터버퍼를 비우는 동작이다.Accordingly, in the data write operation according to the third embodiment, before the data buffer becomes full, when a specific partial buffer among two or more partial buffers in the data buffer becomes full, the data buffered in the specific partial buffer is transferred to the data buffer Write to the corresponding memory group. And, in the data writing operation according to the third embodiment, when the last partial buffer among the two or more partial buffers becomes full and the data buffer becomes full, the data buffered in the last partial buffer and all data buffered in the data buffer This is an operation of writing related parity information to the memory group and emptying the data buffer.
이하에서는, 설명의 편의를 위해 제3실시예에 따른 데이터쓰기 동작을, 도 4를 참조하여 데이터쓰기 동작C로 언급하여 설명하겠다.Hereinafter, for convenience of description, the data writing operation according to the third embodiment will be described by referring to FIG. 4 as data writing operation C. FIG.
즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작C를 각각 독립적으로 수행한다.That is, the data write
설명의 편의를 위해 메모리그룹 #0에 대하여 데이터쓰기 동작C를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀(Full) 상태가 되는지 확인한다.For convenience of explanation, a process of performing data write operation C on
데이터버퍼 #0이 풀 상태가 아니면, 데이터기록제어부(130)는, 데이터버퍼 #0 내 2 이상의 부분버퍼, 예컨대 도 4에 도시된 3개의 부분버퍼a,b,c 중 특정 부분데이터가 풀 상태가 되면 특정 부분버퍼에 버퍼링된 데이터를 데이터버퍼 #0와 대응되는 메모리그룹 #0에 기록한다.If the
전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 가장 앞선 위치의 부분버퍼a가 풀 상태가 될 것이다.As described above, as the write requests 1, 3, 5... each
이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되기 이전이기 때문에, 데이터버퍼 #0 내 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼 즉 부분버퍼a에 버퍼링된 데이터를 메모리그룹 #0에 기록한다. 이때, 데이터기록제어부(130)는, 부분버퍼a에 버퍼링된 데이터의 패리티정보는 메모리그룹 #0에 기록하지 않는다.In this case, since the data write
이후, 전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 부분버퍼b가 풀 상태가 될 것이다.After that, as described above, each
이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되기 이전이기 때문에, 데이터버퍼 #0 내 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼 즉 부분버퍼b에 버퍼링된 데이터를 메모리그룹 #0에 기록한다. 이때, 데이터기록제어부(130)는, 부분버퍼b에 버퍼링된 데이터의 패리티정보는 메모리그룹 #0에 기록하지 않는다.In this case, since the data write
이후, 전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 마지막 부분버퍼c가 풀 상태가 될 것이고, 이 경우 데이터버퍼 #0이 풀 상태가 될 것이다.After that, as described above, each
이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되었기 때문에, 마지막 부분버퍼c에 버퍼링된 데이터를 메모리그룹#0에 기록하고, 이와 함께 데이터버퍼 #0에 버퍼링된 모든 데이터(부분버퍼a,b,c 에 버퍼링된 모든 데이터) 각각에 대하여 계산된 패리티정보를 메모리그룹#0에 기록할 수 있다.In this case, since the
이후, 데이터기록제어부(130)는, 데이터버퍼 #0을 비운다.Thereafter, the data write
데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작C를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작C를 독립적으로 수행한다.The data write
즉, 데이터기록제어부(130)는, 데이터버퍼 #1이 풀 상태가 되기 이전에는 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼(예 : a,b)에 버퍼링된 데이터를 메모리그룹 #1에 기록하고, 부분버퍼a,b,c 중 마지막 부분버퍼c가 풀 상태가 되어 데이터버퍼 #1이 풀 상태가 되면 마지막 부분버퍼c에 버퍼링된 데이터를 메모리그룹 #1에 기록하고 이와 함께 데이터버퍼 #1에 버퍼링된 모든 데이터 각각에 대하여 계산된 패리티정보를 메모리그룹#1에 기록하고, 데이터버퍼 #1을 비운다. That is, the data write
이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작C를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.As such, the data write
본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작C를 채택한다면, 전술의 데이터쓰기 동작A 및 데이터쓰기 동작B의 장점을 모두 취할 수 있다. If the above-described data writing operation C is adopted in the
즉, 본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작C를 채택한다면, 갑작스러운 전원 오프 시 손실이 우려되는 데이터의 크기를 데이터버퍼의 크기보다 작은 부분버퍼 크기로 줄일 수 있어 데이터쓰기 동작B를 채택하는 경우에 비해 신뢰도가 향상되며, 데이터쓰기 동작A를 채택하는 경우에 비해 패리티정보 업데이트를 줄여 성능을 향상시킬 수 있다.That is, if the above-described data write operation C is adopted in the
이상에서 설명한 바와 같이, 본 발명에 따른 메모리제어장치(100)는, 메모리장치(10) 내 다수의 메모리칩을 2 이상의 메모리그룹(RAID그룹)으로 그룹핑하고, 각 메모리그룹 별로 데이터버퍼를 각기 구비하는 구조를 배경으로, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 각 메모리그룹으로 분산 할당하여 쓰기요청들의 데이터 각각이 각 메모리그룹의 데이터버퍼에 분산 버퍼링되도록 하고, 데이터쓰기 동작(A 또는 B 또는 C)를 각 메모리그룹의 데이터버퍼 별로 독립 수행함으로써, 결과적으로 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있게 한다.As described above, the
이에, 본 발명의 실시예에 따른 메모리제어장치(100)는, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.Accordingly, the
아울러, 본 발명에 따른 메모리제어장치(100)는, SSD 어레이를 추가하여 스토리지 시스템의 용량을 확장하는 경우, 용량 확장 뿐 아니라 성능 확장까지도 이끌어낼 수 있는 환경적 이점을 제공할 수 있다.In addition, the
예를 들어, 전술의 예와 같이 10개(N=10)의 메모리칩이 구성되어 있고, 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑하여 이용하는 상황에서, 새로운 SSD 어레이(예 : SSD 10개)를 추가하여 스토리지 시스템의 용량을 확장하는 경우를 가정해 본다.For example, as in the above example, 10 (N=10) memory chips are configured, and the 10 memory chips are grouped into two (M=2)
이 경우, 본 발명에 따른다면, 새로운 RAID그룹 즉 메모리그룹(#2, #3)이 생기게 되고, 따라서 쓰기요청을 각 메모리그룹에 분산 할당하는 것 역시 새로운 메모리그룹을 고려하여 변경될 필요가 있다. In this case, according to the present invention, a new RAID group, that is, memory groups (#2, #3) is created, and accordingly, the distribution and allocation of write requests to each memory group also needs to be changed in consideration of the new memory group. .
이때, 본 발명의 메모리제어장치(100)는, 전술에서 설명한 바와 같이, 쓰기요청의 논리블록주소(LBA)를 메모리그룹의 개수(M)로 나눈 나머지값에 대응되는 넘버링의 메모리그룹을, 해당 쓰기요청을 할당할 메모리그룹을 결정/할당하기 때문에, 할당할 메모리그룹을 결정하는데 사용하는 파라미터 즉 메모리그룹의 개수(M)을 4로 바꿔 계산하기만 하면, 쓰기요청을 각 메모리그룹에 분산 할당하는 것을 새로운 메모리그룹을 고려하여 간단하게 변경(이하, 쓰기요청 할당 재배치)할 수 있게 된다.At this time, as described above, the
이때, 본 발명의 메모리제어장치(100)는, 쓰기요청 할당 재배치가 완료될 때까지 상위에서 오는 요청(쓰기, 읽기 등)을 막을 수도 있고, 상위에서 오는 요청(쓰기, 읽기 등)을 받아들이면서 쓰기요청 할당 재배치를 진행할 수도 있다.At this time, the
이에, 본 발명에 따른 메모리제어장치(100)는, 스토리지 시스템의 용량을 확장하여 새로운 메모리그룹이 생기면, 쓰기요청을 동시에 병렬 처리할 수 있는 성능 역시 그 만큼 증가되는 것이기 때문에, 용량 확장 뿐 아니라 성능 확장까지도 효율적으로 이끌어낼 수 있는 환경적 이점을 제공하는 것이다.Accordingly, in the
이하에서는 도 5를 참조하여 본 발명의 바람직한 실시예에 따른 메모리제어장치의 동작 방법을 설명하도록 하겠다. 설명의 편의를 위해서, 도 1 내지 도 4의 참조번호를 언급하여 설명하도록 하겠다.Hereinafter, a method of operating a memory control apparatus according to a preferred embodiment of the present invention will be described with reference to FIG. 5 . For convenience of description, reference numerals in FIGS. 1 to 4 will be referred to.
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다(S100).In the method of operating the
이때, 본 발명에서는, 도 3에 도시된 바와 같이, 2 이상의 메모리그룹 즉 M개의 메모리그룹(#0...#M-1) 각각에는, 메모리그룹 내에 기록하기 위한 데이터가 버퍼링되는 데이터버퍼가 각기 대응되도록 구비된다.At this time, in the present invention, as shown in FIG. 3, in each of two or more memory groups, that is, M memory groups (#0...#M-1), there is a data buffer in which data to be written into the memory group is buffered. They are provided to correspond to each other.
이에, 메모리그룹 #0에는 데이터버퍼 #0, 메모리그룹 #1에는 데이터버퍼 #1, ... 메모리그룹 #M에는 데이터버퍼 #M이 대응되도록 구비된다.Accordingly, the
이하에서는 설명의 편의를 위해서, 메모리장치(10)에는 10개(N=10)의 메모리칩이 구성되어 있고, S100단계에서 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑한 예를 언급하여 설명하겠다.Hereinafter, for convenience of explanation, 10 (N=10) memory chips are configured in the
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10)에 대하여 쓰기연산을 시도하는 쓰기요청을, 파일시스템(200)으로부터 수신하게 된다(S110).In the operating method of the
예컨대, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청1,2,3,4,5,6...을 수신할 수 있다.For example, in the operating method of the
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0, 메모리그룹 #1 중 할당할 메모리그룹을 결정하고, 결정한 메모리그룹에 해당 쓰기요청을 할당한다(S120).In the method of operating the
예를 들면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청1의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청1을 할당할 메모리그룹으로 결정하고, 쓰기요청1을 결정한 메모리그룹 #0에 할당한다(S120).For example, in the method of operating the
이에, 쓰기요청1의 데이터1은, 쓰기요청1이 할당된 메모리그룹 #0의 데이터버퍼 #0로 전달되어 데이터버퍼 #0에 버퍼링될 것이다(S130).Accordingly, the
이와 마찬가지로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청2의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 1이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 1에 대응되는 넘버링의 메모리그룹 #1을 쓰기요청2를 할당할 메모리그룹으로 결정하고, 쓰기요청2를 결정한 메모리그룹 #1에 할당한다(S120).Similarly, in the method of operating the
이에, 쓰기요청2의 데이터2는, 쓰기요청2가 할당된 메모리그룹 #1의 데이터버퍼 #1로 전달되어 데이터버퍼 #1에 버퍼링될 것이다(S130).Accordingly, the data 2 of the write request 2 will be transferred to the
이와 마찬가지로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청3의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청3을 할당할 메모리그룹으로 결정하고, 쓰기요청3을 결정한 메모리그룹 #0에 할당한다(S120).Similarly, in the method of operating the
이에, 쓰기요청3의 데이터3은, 쓰기요청3이 할당된 메모리그룹 #0의 데이터버퍼 #0으로 전달되어 데이터버퍼 #0에 버퍼링될 것이다(S130).Accordingly, the data 3 of the write request 3 will be transferred to the
이러한 방식으로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청4,5,6... 각각에 대해서도, 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 이에 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청4,5,6... 각각의 나머지값(0 또는 1)에 대응되는 넘버링의 메모리그룹(#0 또는 #1)을 쓰기요청4,5,6... 각각을 할당할 메모리그룹으로 결정하고, 쓰기요청4,5,6... 각각을 결정한 메모리그룹(#0 또는 #1)에 할당한다(S120).In this way, the operation method of the
이에, 쓰기요청4,5,6...의 데이터4,5,6...은, 쓰기요청4,5,6...이 할당된 메모리그룹(#0 또는 #1)의 데이터버퍼(#0 또는 #1)로 전달되어 데이터버퍼(#0 또는 #1)에 버퍼링될 것이다(S130).Therefore, data 4,5,6... of write requests 4,5,6... are data buffers (#0 or #1) of the memory group (#0 or #1) to which write requests 4,5,6... are allocated. It will be transferred to #0 or #1 and buffered in the data buffer (#0 or #1) (S130).
이처럼, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청들 즉 쓰기요청1,2,3,4,5,6...각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0 및 메모리그룹 #1에 분산 할당함으로써, 쓰기요청들의 데이터 1,2,3,4,5,6...가 메모리그룹 #0, 메모리그룹 #1 각각에 대응되는 데이터버퍼 #0, 데이터버퍼 #1에 분산 버퍼링되도록 한다.As such, the method of operation of the
본 발명에 따른 메모리제어장치(100)의 동작 방법은, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 2 이상의 메모리그룹 즉 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 별로 독립적으로 수행한다(S140).In the method of operating the
즉, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 전술의 데이터쓰기 동작(A 또는 B 또는 C)를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.That is, in the method of operating the
이상에서 설명한 바와 같이, 본 발명에 따른 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10) 내 다수의 메모리칩을 2 이상의 메모리그룹(RAID그룹)으로 그룹핑하고, 각 메모리그룹 별로 데이터버퍼를 각기 구비하는 구조를 배경으로, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 각 메모리그룹으로 분산 할당하여 쓰기요청들의 데이터 각각이 각 메모리그룹의 데이터버퍼에 분산 버퍼링되도록 하고, 데이터쓰기 동작(A 또는 B 또는 C)를 각 메모리그룹의 데이터버퍼 별로 독립 수행함으로써, 결과적으로 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있게 한다.As described above, in the method of operating the
이에, 본 발명의 실시예에 따른 메모리제어장치의 동작 방법은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.Accordingly, the method of operating the memory control apparatus according to the embodiment of the present invention derives the effect of more efficiently increasing performance and reliability when configuring RAID in a storage system including a flash-based device such as an SSD.
본 발명의 일실시예에 따른 메모리제어장치의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플룹티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method of operating a memory control apparatus according to an embodiment of the present invention may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the present invention, or may be known and available to those skilled in the art of computer software. Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시 예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.Although the present invention has been described in detail with reference to preferred embodiments so far, the present invention is not limited to the above-described embodiments, and without departing from the gist of the present invention as claimed in the following claims, the technical field to which the present invention pertains It will be said that the technical idea of the present invention extends to a range where various modifications or corrections are possible by anyone having ordinary knowledge in the present invention.
본 발명에 따른 메모리제어장치 및 메모리제어장치의 동작 방법에 따르면 SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있다는 점에서, 기존 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.According to the memory control apparatus and the operating method of the memory control apparatus according to the present invention, in a storage system composed of a flash-based device such as an SSD, performance and reliability can be more efficiently increased during RAID configuration, In addition, it is an invention with industrial applicability because the possibility of marketing or business of the applied device, not only the use of the related technology, is sufficient as well as the extent to which it can be clearly implemented in reality.
10 : 메모리장치
100 : 메모리제어장치
110 : 그룹핑부 120 : 할당제어부
130 : 데이터기록제어부
200 : 파일시스템/어플리케이션10: memory device
100 : memory control device
110: grouping unit 120: allocation control unit
130: data recording control unit
200: file system/application
Claims (17)
상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 쓰기요청들 각각의 논리블록주소(LBA: Logical Block Address) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부; 및
데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 포함된 메모리칩들에 걸쳐서 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부를 포함하는 것을 특징으로 하고,
상기 데이터버퍼는 복수의 부분 버퍼를 포함하고 상기 부분 버퍼는 복수의 데이터를 저장하며,
상기 데이터 기록 제어부는, 상기 데이터버퍼에서 부분 버퍼 단위로 데이터가 가득차면, 데이터가 가득찬 부분 버퍼에 대응하는 메모리 그룹에 버퍼링된 데이터를 기록하는 메모리제어장치.
a grouping unit for grouping a plurality of memory chips constituting the memory device into two or more memory groups;
By distributing and allocating write requests received to the memory device to the two or more memory groups based on a logical block address (LBA) of each of the write requests and the number of memory groups, the data of the write requests is an allocation control unit for distributed buffering in data buffers corresponding to the two or more memory groups; and
A data write operation for writing data buffered in a data buffer across memory chips included in a corresponding memory group is independently performed for each data buffer corresponding to each of the two or more memory groups, so that the write requests are performed in units of memory groups characterized in that it includes a data recording control unit that allows parallel processing with
the data buffer includes a plurality of partial buffers and the partial buffer stores a plurality of data;
The data write controller is configured to write buffered data to a memory group corresponding to the partial buffer that is full of data when the data buffer is full of data in units of partial buffers.
상기 할당제어부는,
상기 쓰기요청들 각각을 상기 논리블록주소를 상기 메모리그룹의 개수로 나눈 나머지값에 대응되는 넘버링의 메모리그룹에 할당함으로써 상기 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하는 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
The allocation control unit,
and allocating each of the write requests to a numbering memory group corresponding to a remainder obtained by dividing the logical block address by the number of memory groups, thereby distributing and allocating the write requests to the two or more memory groups. .
데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되는 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
In the data buffer, the data to be transferred is buffered at an empty most leading position in the data buffer.
상기 데이터쓰기 동작은,
데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
The data write operation is
When the data buffer is in the full state, all data buffered in the data buffer and parity information related to all data are written to a memory group corresponding to the data buffer, and the data buffer is emptied. memory control device.
상기 부분버퍼는, 상기 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련되는 것을 특징으로 하는 메모리제어장치.
According to claim 1,
The partial buffer is associated with a chunk size of each memory chip included in the memory group.
데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
상기 데이터쓰기 동작은,
상기 데이터버퍼 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 상기 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작인 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
In the data buffer, the transferred data is buffered in the empty most leading position in the data buffer,
The data write operation is
The memory control apparatus according to claim 1, wherein the operation of extracting data from the earliest non-empty position in the data buffer and writing the data to a memory group corresponding to the data buffer.
상기 메모리그룹의 개수는 상기 메모리장치를 구성하는 상기 다수의 메모리칩의 개수보다 작은,
메모리제어장치.
The method of claim 1,
the number of the memory groups is smaller than the number of the plurality of memory chips constituting the memory device;
memory control device.
상기 그룹핑부가 상기 메모리그룹의 개수를 변경하면,
상기 할당제어부는 분산 할당된 쓰기요청들을 재배치하는,
메모리제어장치.
8. The method of claim 7,
When the grouping unit changes the number of memory groups,
The allocation control unit relocates the distributed allocated write requests,
memory control device.
상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 쓰기요청들 각각의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되며 복수의 부분 버퍼를 포함하는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어단계; 및
데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 포함된 메모리칩들에 걸쳐서 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어단계를 포함하는 것을 특징으로 하고,
상기 부분 버퍼는 복수의 데이터를 저장하며,
상기 데이터기록제어단계는 상기 데이터버퍼에서 부분 버퍼 단위로 데이터가 가득차면, 데이터가 가득찬 부분 버퍼에 대응하는 메모리 그룹에 버퍼링된 데이터를 기록하는 단계를 포함하는 메모리제어장치의 동작 방법.
a grouping step of grouping a plurality of memory chips constituting the memory device into two or more memory groups;
By distributing and allocating write requests received to the memory device to the two or more memory groups based on a logical block address (LBA) and the number of memory groups of each of the write requests, the data of the write requests is an allocation control step of distributing buffering in a data buffer corresponding to each of the two or more memory groups and including a plurality of partial buffers; and
A data write operation for writing data buffered in a data buffer across memory chips included in a corresponding memory group is independently performed for each data buffer corresponding to each of the two or more memory groups, so that the write requests are performed in units of memory groups characterized in that it includes a data recording control step to enable parallel processing with
The partial buffer stores a plurality of data,
The data write control step includes writing the buffered data to a memory group corresponding to the partial buffer full of data when the data buffer is full in units of partial buffers.
상기 할당제어단계는,
상기 쓰기요청들 각각을 상기 논리블록주소를 상기 메모리그룹의 개수로 나눈 나머지값에 대응되는 넘버링의 메모리그룹에 할당함으로써 상기 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하는 것을 특징으로 하는 메모리제어장치의 동작 방법.
10. The method of claim 9,
The allocation control step is
and allocating each of the write requests to a numbering memory group corresponding to a remainder obtained by dividing the logical block address by the number of memory groups, thereby distributing and allocating the write requests to the two or more memory groups. how it works.
데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되는 것을 특징으로 하는 메모리제어장치의 동작 방법.
10. The method of claim 9,
The method of operating a memory control device, characterized in that the data buffer is buffered at an empty most leading position in the data buffer.
상기 데이터쓰기 동작은,
데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치의 동작 방법.
10. The method of claim 9,
The data write operation is
When the data buffer is in the full state, all data buffered in the data buffer and parity information related to all data are written to a memory group corresponding to the data buffer, and the data buffer is emptied. How to operate a memory control device.
복수의 부분 버퍼를 포함하는 데이터 버퍼;
상기 복수의 플래시 메모리 장치를 둘 이상의 메모리 그룹으로 그룹핑하고, 상기 복수의 부분 버퍼를 상기 둘 이상의 메모리 그룹에 각각 배정하며, 상기 복수의 플래시 메모리 장치에 대한 쓰기 요청들에 포함된 논리블록주소(LBA: Logical Block Address)에 대응하여 상기 쓰기 요청들에 대응하는 쓰기 데이터를 상기 복수의 부분 버퍼에 분산시키고, 상기 복수의 부분 버퍼 중 적어도 하나에 분산된 쓰기 데이터가 가득 차면(full), 상기 둘 이상의 메모리 그룹 중 상기 분산된 쓰기 데이터가 가득 찬 부분 버퍼에 대응하는 메모리 그룹에 상기 분산된 쓰기 데이터를 저장하는 메모리 제어 장치
를 포함하는, 스토리지 시스템.
a plurality of flash memory devices;
a data buffer comprising a plurality of partial buffers;
grouping the plurality of flash memory devices into two or more memory groups, allocating the plurality of partial buffers to the two or more memory groups, respectively, and logical block addresses (LBAs) included in write requests to the plurality of flash memory devices : Distributes write data corresponding to the write requests in response to Logical Block Address) to the plurality of partial buffers, and when the distributed write data in at least one of the plurality of partial buffers is full, the two or more A memory control device for storing the distributed write data in a memory group corresponding to a partial buffer filled with the distributed write data among the memory groups
A storage system comprising a.
상기 메모리 제어 장치는
상기 분산된 쓰기 데이터가 상기 분산된 쓰기 데이터가 가득 찬 부분 버퍼에 대응하는 메모리 그룹에 저장되면, 상기 가득 찬 부분 버퍼를 비우는,
스토리지 시스템.
14. The method of claim 13,
The memory control device
emptying the full partial buffer when the distributed write data is stored in a memory group corresponding to the partial buffer full of the distributed write data;
storage system.
상기 메모리 제어 장치는
상기 둘 이상의 메모리 그룹에 각각 배정된 상기 복수의 부분 버퍼에 분산된 쓰기 데이터를 상기 둘 이상의 메모리 그룹에 저장하는 동작을 상기 둘 이상의 메모리 그룹에 대해 병렬로 수행하는,
스토리지 시스템.
14. The method of claim 13,
The memory control device
Storing the write data distributed in the plurality of partial buffers respectively allocated to the two or more memory groups in the two or more memory groups in parallel for the two or more memory groups,
storage system.
상기 메모리 그룹의 개수는 상기 복수의 플래시 메모리 장치의 개수보다 작은,
스토리지 시스템.
14. The method of claim 13,
the number of the memory groups is smaller than the number of the plurality of flash memory devices;
storage system.
상기 메모리 제어 장치는
상기 메모리 그룹의 개수를 변경한 후, 상기 복수의 부분 버퍼에 분산된 쓰기요청들을 재배치하는,
스토리지 시스템.14. The method of claim 13,
The memory control device
After changing the number of memory groups, relocating the write requests distributed in the plurality of partial buffers,
storage system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210123905A KR102347841B1 (en) | 2014-05-07 | 2021-09-16 | Memory management apparatus and control method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140054229A KR20150127434A (en) | 2014-05-07 | 2014-05-07 | Memory management apparatus and control method thereof |
KR1020210123905A KR102347841B1 (en) | 2014-05-07 | 2021-09-16 | Memory management apparatus and control method thereof |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140054229A Division KR20150127434A (en) | 2014-05-07 | 2014-05-07 | Memory management apparatus and control method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210122726A KR20210122726A (en) | 2021-10-12 |
KR102347841B1 true KR102347841B1 (en) | 2022-01-07 |
Family
ID=54786064
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140054229A KR20150127434A (en) | 2014-05-07 | 2014-05-07 | Memory management apparatus and control method thereof |
KR1020210123905A KR102347841B1 (en) | 2014-05-07 | 2021-09-16 | Memory management apparatus and control method thereof |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140054229A KR20150127434A (en) | 2014-05-07 | 2014-05-07 | Memory management apparatus and control method thereof |
Country Status (1)
Country | Link |
---|---|
KR (2) | KR20150127434A (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102585871B1 (en) * | 2016-02-26 | 2023-10-10 | 에스케이하이닉스 주식회사 | Data storage device and operating method thereof |
KR102527992B1 (en) * | 2016-03-14 | 2023-05-03 | 삼성전자주식회사 | Data storage device and data processing system having the same |
KR102545229B1 (en) * | 2018-05-04 | 2023-06-21 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
CN117453385A (en) * | 2022-07-19 | 2024-01-26 | 华为技术有限公司 | Memory allocation method, device and computer |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101257848B1 (en) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | Data storing apparatus comprising complex memory and method of operating the same |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101581679B1 (en) * | 2009-03-18 | 2015-12-31 | 삼성전자주식회사 | Storage device and method for managing buffer memory of storage device |
KR101517183B1 (en) * | 2009-05-27 | 2015-05-18 | 삼성전자주식회사 | Data storage device and data storing method thereof |
KR101374065B1 (en) * | 2012-05-23 | 2014-03-13 | 아주대학교산학협력단 | Data Distinguish Method and Apparatus Using Algorithm for Chip-Level-Parallel Flash Memory |
-
2014
- 2014-05-07 KR KR1020140054229A patent/KR20150127434A/en not_active Application Discontinuation
-
2021
- 2021-09-16 KR KR1020210123905A patent/KR102347841B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101257848B1 (en) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | Data storing apparatus comprising complex memory and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
KR20210122726A (en) | 2021-10-12 |
KR20150127434A (en) | 2015-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102347841B1 (en) | Memory management apparatus and control method thereof | |
US10528464B2 (en) | Memory system and control method | |
US9122629B2 (en) | Elastic cache with single parity | |
KR102170539B1 (en) | Method for storing data by storage device and storage device | |
JP5792313B2 (en) | Storage system | |
WO2018189858A1 (en) | Storage system | |
US20150095555A1 (en) | Method of thin provisioning in a solid state disk array | |
EP3617867B1 (en) | Fragment management method and fragment management apparatus | |
CN111344683A (en) | Namespace allocation in non-volatile memory devices | |
CN111149083A (en) | SSD architecture supporting low latency operations | |
JP2019020788A (en) | Memory system and control method | |
US9792073B2 (en) | Method of LUN management in a solid state disk array | |
US9183142B2 (en) | Reducing flash memory write amplification and latency | |
KR20100011698A (en) | Solid state storage system for data merging and method of controlling the same | |
JP2015517697A (en) | Storage system and storage control method using storage area based on secondary storage as cache area | |
WO2015015611A1 (en) | Storage system and data write method | |
KR20100077156A (en) | Thin provisioning migration and scrubbing | |
JP6320439B2 (en) | MEMORY CONTROL DEVICE, STORAGE DEVICE, STORAGE DEVICE CONTROL PROGRAM, AND STORAGE DEVICE CONTROL METHOD | |
KR20110093035A (en) | Apparatus for flash address translation apparatus and method thereof | |
CN110895513A (en) | System garbage recycling method and garbage recycling method in solid state disk | |
US20190243758A1 (en) | Storage control device and storage control method | |
US20180307426A1 (en) | Storage apparatus and storage control method | |
JP5594647B2 (en) | Storage apparatus and control method thereof | |
WO2016194979A1 (en) | Storage system, storage control device, storage control method, and program | |
WO2015162766A1 (en) | Storage system and semiconductor storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |