KR20210122726A - Memory management apparatus and control method thereof - Google Patents

Memory management apparatus and control method thereof Download PDF

Info

Publication number
KR20210122726A
KR20210122726A KR1020210123905A KR20210123905A KR20210122726A KR 20210122726 A KR20210122726 A KR 20210122726A KR 1020210123905 A KR1020210123905 A KR 1020210123905A KR 20210123905 A KR20210123905 A KR 20210123905A KR 20210122726 A KR20210122726 A KR 20210122726A
Authority
KR
South Korea
Prior art keywords
data
memory
buffer
data buffer
write
Prior art date
Application number
KR1020210123905A
Other languages
Korean (ko)
Other versions
KR102347841B1 (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 에스케이하이닉스 주식회사
Priority to KR1020210123905A priority Critical patent/KR102347841B1/en
Publication of KR20210122726A publication Critical patent/KR20210122726A/en
Application granted granted Critical
Publication of KR102347841B1 publication Critical patent/KR102347841B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk 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

As a storage system configured with a flash-based device such as an SSD, the present invention proposes a measure to more efficiently increase a performance and reliability during configuration of a RAID. A memory control device comprises: a grouping part; an allocation control part; and a data record control part.

Description

메모리제어장치 및 메모리제어장치의 동작 방법{MEMORY MANAGEMENT APPARATUS AND CONTROL METHOD THEREOF}MEMORY MANAGEMENT APPARATUS AND CONTROL METHOD THEREOF

본 발명은, 스토리지 시스템에 관한 것으로, 더욱 상세하게는, 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 configured with 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 and serve as a Storage Area Network (SAN) / NAS (Network Attached Storage) role to provide data services, or It is also possible to directly provide data services (eg DB, web services) by operating an 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 (hereafter, small write) is degraded like HDD, but unlike 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, when the RAID is configured, the reliability vulnerability is doubled due to the update of the parity information.

따라서, 기존의 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 consideration of the above circumstances, and an object of the present invention is to more efficiently increase performance and reliability when configuring RAID in a storage system configured with 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 apparatus 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, transferred data is buffered at the most empty position in the data buffer, and in the data write operation, when the data buffer becomes full, 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*, transmitted 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 address (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, transferred data is buffered at the most empty position in the data buffer, and in the data write operation, when the data buffer becomes full, 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 an empty leading 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 the data buffer, 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 recorded. When the partial buffer becomes full and the data buffer becomes full, parity information related to the data buffered in the last partial buffer and all data buffered in the data buffer is 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 a memory control device 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 an exemplary 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 memory device 10 as a storage space, a file system or an application that attempts a memory operation to the memory device 10 (hereinafter referred to as the file system 200); and a memory control device 100 for controlling the memory device 10 between the file system 200 and the memory device 10 .

이때, 메모리장치(10)는 여러 개의 플래시 메모리로 구성된 메모리칩을 다수 개 포함하며, 여기서 메모리칩은 SSD(Solid State Drive)와 같은 플래시기반 디바이스인 것이 바람직하다.In this case, the memory device 10 includes a plurality of memory chips composed of several flash memories, wherein the memory chips are preferably flash-based devices such as solid state drives (SSDs).

즉, 메모리장치(10)는, 도 1에 도시된 바와 같이, 다수의 메모리칩(#0,#1,#2...#N-1), 예컨대 N개의 플래시기반 SSD로 구성될 수 있다.That is, as shown in FIG. 1 , the memory device 10 may include a plurality of memory chips #0, #1, #2...#N-1, for example, N flash-based SSDs. .

메모리제어장치(100)는, 파일시스템(200) 및 메모리장치(10) 사이에서 메모리장치(10)를 제어하는 제어모듈 또는 제어 소프트웨어일 수 있다.The memory control device 100 may be a control module or control software for controlling the memory device 10 between the file system 200 and the memory device 10 .

현재는, 전술과 같이 다수의 플래시기반 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 employing 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 a 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 memory control device 100 corresponding to the above-described FIG. 1 will be used.

본 발명에 따른 메모리제어장치(100)는, 메모리장치(10)를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부(110)와, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하여, 상기 쓰기요청들의 데이터가 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 하는 할당제어부(120)와, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 상기 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼 별로 독립적으로 수행하여, 상기 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 데이터기록제어부(130)를 포함한다.The memory control device 100 according to the present invention includes a grouping unit 110 for grouping a plurality of memory chips constituting the memory device 10 into two or more memory groups, and a write request received from the memory device 10 . an allocation control unit 120 for distributing and allocating to the two or more memory groups so that the data of the write requests are distributed and buffered in data buffers corresponding to each of the two or more memory groups; and a data write control unit 130 that independently performs a data write operation for writing to a 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.

메모리장치(10)는 여러 개의 플래시 메모리로 구성된 메모리칩을 다수 개 포함하며, 여기서 메모리칩은 SSD(Solid State Drive)와 같은 플래시기반 디바이스인 것이 바람직하다.The memory device 10 includes a plurality of memory chips composed of several flash memories, wherein the memory chips are preferably flash-based devices such as solid state drives (SSDs).

즉, 메모리장치(10)는, 도 1에 도시된 바와 같이, 다수의 메모리칩, 예컨대 N개의 플래시기반 SSD(#0,#1,#2...#N-1)로 구성될 수 있다. 이하에서는, 설명의 편의를 위해, 메모리칩과 SSD를 혼용하여 설명할 수 있다.That is, as shown in FIG. 1 , the memory device 10 may include a plurality of memory chips, for example, N flash-based SSDs (#0, #1, #2...#N-1). . Hereinafter, for convenience of description, a memory chip and an SSD may be used interchangeably.

본 발명에 따른 메모리제어장치(100)는, 다수의 플래시기반 SSD로 구성된 메모리장치(10)를 제어하는 메모리제어장치로서, 제어모듈 또는 제어 소프트웨어의 형태일 수 있으며, 메모리장치(10)를 제어하기 위해 필요한 저장공간(예 : 데이터버퍼 등)을 내부에 보유할 수 있다.The memory control device 100 according to the present invention is a memory control device for controlling the memory device 10 composed of a plurality of flash-based SSDs, and may be in the form of a control module or control software, and controls the memory device 10 . storage space (eg, data buffer, etc.)

그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다.The grouping unit 110 groups a plurality of memory chips #0, #1, #2...#N-1, for example, N SSDs constituting the memory device 10 into two or more memory groups.

즉, 본 발명에 따른 메모리제어장치(100)는, RAID 알고리즘으로 메모리칩 즉 SSD를 묶어서 메모리그룹 형태로 운영하는 것을 기본으로 한다.That is, the memory control apparatus 100 according to the present invention is based on the RAID algorithm, that is, the memory chips, that is, SSDs are bundled and operated in the form of a memory group.

이때, 본 발명에 따른 메모리제어장치(100)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 하나로 묶어 RAID를 구성하는 것이 아니라, N개 보다 작은 개수의 SSD로 묶어진 메모리그룹 즉 RAID 그룹을 구성하고자 한다.At this time, the memory control device 100 according to the present invention includes a plurality of memory chips (#0, #1, #2...#N-1) constituting the memory device 10, for example, N SSDs into one. Rather than grouping them to form a RAID, we want to configure a memory group, that is, a RAID group, which is grouped with fewer than N SSDs.

이를 위해, 그룹핑부(110)는, 메모리장치(10)를 구성하는 다수의 메모리칩(#0,#1,#2...#N-1) 예컨대 N개의 SSD를, 2 이상의 메모리그룹으로 그룹핑한다.To this end, the grouping unit 110 divides a plurality of memory chips (#0, #1, #2...#N-1) constituting the memory device 10, for example, N SSDs into two or more memory groups. group it

이에, 도 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 grouping unit 110 includes a plurality of memory chips #0, #1, #2...#N-1 constituting the memory device 10, N It can be grouped into M memory groups (#0...#M-1) by grouping them into smaller numbers (eg 5). After all, M memory groups (#0...#M-1) mean M RAID groups.

할당제어부(120)는, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당하여, 쓰기요청들의 데이터가 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼에 분산 버퍼링되도록 한다.The allocation control unit 120 distributes and allocates write requests received for the memory device 10 to two or more memory groups grouped by the grouping unit 110, so that data of the write requests is data corresponding to each of the two or more memory groups. Enable distributed buffering in the buffer.

할당제어부(120)의 기능을 설명하기에 앞서, 도 3을 참조하여, 메모리장치(10)를 제어하기 위해 메모리제어장치(100) 내부에 보유되는 저장공간 즉, 데이터버퍼의 구조를 설명하도록 한다.Before describing the function of the allocation control unit 120, a storage space held inside the memory control device 100 to control the memory device 10, that is, the structure of the data buffer, will be described with reference to FIG. 3 . .

도 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 memory groups #0...#M-1, a data buffer in which data to be written into the memory group is buffered is provided to correspond to each. do.

이에, 메모리그룹 #0에는 데이터버퍼 #0, 메모리그룹 #1에는 데이터버퍼 #1, ... 메모리그룹 #M에는 데이터버퍼 #M이 대응되도록 구비된다.Accordingly, the data buffer #0 corresponds to the memory group #0, the data buffer #1 to the memory group #1, ... The data buffer #M is provided to correspond to the memory group #M.

이때, 데이터버퍼의 크기는, 메모리그룹에 포함되는 개별 메모리칩 즉 개별 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 8 x 8 x 8 KB, 512 KB, or half of that, 256 KB, 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 update of parity information. 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 (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 description, 10 (N=10) memory chips are configured in the memory device 10 , and the grouping unit 110 includes 10 memory chips and 2 (M=2) memory groups. An example of grouping into #0 and memory group #1 will be described.

메모리제어장치(100)는, 메모리장치(10)에 대하여 메모리연산을 시도하는 요청을 파일시스템(200)으로부터 수신하게 된다. 이하에서는, 본 발명의 설명 편의를 위해서 쓰기요청이 수신되는 경우를 설명하겠다.The memory control device 100 receives a request for attempting a memory operation with respect to the memory device 10 from the file system 200 . Hereinafter, a case in which a write request is received will be described for convenience of explanation of the present invention.

즉, 메모리제어장치(100)는, 메모리장치(10)에 대하여 쓰기연산을 시도하는 쓰기요청을, 파일시스템(200)으로부터 수신하게 된다.That is, the memory control device 100 receives a write request for attempting a write operation on the memory device 10 from the file system 200 .

할당제어부(120)는, 메모리장치(10)에 대하여 파일시스템(200)으로부터 수신되는 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청을, 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당한다.The allocation control unit 120 divides the write requests received from the file system 200 for the memory device 10, that is, each write request received in the order in which a write operation is attempted with respect to the memory device 10, in the grouping unit. Distributed allocation to two or more memory groups grouped in (110).

보다 구체적으로 설명하면, 할당제어부(120)는, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA : Logical Block Addressing) 및 메모리그룹의 개수를 기초로 상기 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정함으로써, 그룹핑부(110)에서 그룹핑한 2 이상의 메모리그룹에 분산 할당할 수 있다. More specifically, for each of the received write requests, the allocation control unit 120 allocates among the two or more memory groups based on a logical block address (LBA) of the write request and the number of memory groups. By determining the memory group to be used, it is possible to distribute and allocate to two or more memory groups grouped by the grouping unit 110 .

파일시스템(200)으로부터 수신되는 쓰기요청 각각에는, 수신된 순서에 따라서 순차적으로 증가 또는 감소하는 숫자체계의 논리블록주소(LBA)가 부여된다.Each write request received from the file system 200 is given a logical block address (LBA) of a numerical system that sequentially increases or decreases according to the received order.

이에, 할당제어부(120)는, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수를 기초로 2 이상의 메모리그룹 중 할당할 메모리그룹을 결정할 수 있다.Accordingly, for each of the received write requests, the allocation control unit 120 may determine a memory group to be allocated among two or more memory groups based on a logical block address (LBA) of the write request and the number of memory groups.

예를 들면, 할당제어부(120)는, 쓰기요청의 논리블록주소(LBA)를 메모리그룹의 개수(M)로 나눈 나머지값에 대응되는 넘버링의 메모리그룹을, 해당 쓰기요청을 할당할 메모리그룹을 결정할 수 있다.For example, the allocation control unit 120 selects a numbering memory group corresponding to the remainder obtained by dividing the logical block address (LBA) of the write request by the number of memory groups (M), and selects a memory group to which the write request is to be allocated. can decide

도 3에 도시된 바와 같이, 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청1,2,3,4,5,6...을 언급하고, 전술과 같이 2 개의 메모리그룹 #0, 메모리그룹 #1으로 그룹핑한 예를 언급하여 설명하면 다음과 같다.Referring to the write requests 1, 2, 3, 4, 5, 6... which are received in the order in which the write operation is attempted with respect to the write requests, that is, the memory device 10, as shown in FIG. As described above, an example of grouping into two memory groups #0 and #1 will be described as follows.

할당제어부(120)는, 수신되는 쓰기요청1의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 할당제어부(120)는, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청1을 할당할 메모리그룹으로 결정하고, 쓰기요청1을 결정한 메모리그룹 #0에 할당한다.The allocation control unit 120 checks a residual value obtained by dividing the logical block address (LBA) of the received write request 1 by the number of memory groups (2). For example, if the remaining value is 0, the allocation control unit 120 determines the numbering memory group #0 corresponding to the remaining value 0 as the memory group to which the write request 1 is to be allocated, and the memory group # to which the write request 1 is determined. assigned to 0.

이에, 쓰기요청1의 데이터1은, 쓰기요청1이 할당된 메모리그룹 #0의 데이터버퍼 #0로 전달되어 데이터버퍼 #0에 버퍼링될 것이다.Accordingly, the data 1 of the write request 1 will be transferred to the data buffer #0 of the memory group #0 to which the write request 1 is allocated and will be buffered in the data buffer #0.

이와 마찬가지로, 할당제어부(120)는 수신되는 쓰기요청2의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 1이면, 할당제어부(120)는, 나머지값 1에 대응되는 넘버링의 메모리그룹 #1을 쓰기요청2를 할당할 메모리그룹으로 결정하고, 쓰기요청2를 결정한 메모리그룹 #1에 할당한다.Similarly, the allocation control unit 120 checks the remaining value obtained by dividing the logical block address (LBA) of the received write request 2 by the number of memory groups (2). For example, if the remaining value is 1, the allocation control unit 120 determines the numbering memory group #1 corresponding to the remaining value 1 as a memory group to which the write request 2 is to be allocated, and the memory group # to which the write request 2 is determined. assigned to 1.

이에, 쓰기요청2의 데이터2는, 쓰기요청2가 할당된 메모리그룹 #1의 데이터버퍼 #1로 전달되어 데이터버퍼 #1에 버퍼링될 것이다.Accordingly, the data 2 of the write request 2 is transferred to the data buffer #1 of the memory group #1 to which the write request 2 is allocated and will be buffered in the data buffer #1.

이와 마찬가지로, 할당제어부(120)는, 수신되는 쓰기요청3의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 할당제어부(120)는, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청3을 할당할 메모리그룹으로 결정하고, 쓰기요청3을 결정한 메모리그룹 #0에 할당한다.Similarly, the allocation control unit 120 checks the remaining value obtained by dividing the logical block address (LBA) of the received write request 3 by the number of memory groups (2). For example, if the remaining value is 0, the allocation control unit 120 determines the numbering memory group #0 corresponding to the remaining value 0 as the memory group to which the write request 3 is to be allocated, and the memory group # to which the write request 3 is determined. assigned to 0.

이에, 쓰기요청3의 데이터3은, 쓰기요청3이 할당된 메모리그룹 #0의 데이터버퍼 #0으로 전달되어 데이터버퍼 #0에 버퍼링될 것이다.Accordingly, data 3 of write request 3 will be transferred to data buffer #0 of memory group #0 to which write request 3 is allocated and will be buffered in data buffer #0.

이러한 방식으로, 할당제어부(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 allocation control unit 120 checks the remainder of the logical block address (LBA) divided by the number of memory groups (2) for each of the write requests 4, 5, 6.... Accordingly, the allocation control unit 120 writes the numbering memory group (#0 or #1) corresponding to the remaining values (0 or 1) of the write requests 4,5,6... Write requests 4,5,6. .. Determines each memory group to be allocated, and allocates write requests 4, 5, 6... to the determined memory group (#0 or #1).

이에, 쓰기요청4,5,6...의 데이터4,5,6...은, 쓰기요청4,5,6...이 할당된 메모리그룹(#0 또는 #1)의 데이터버퍼(#0 또는 #1)로 전달되어 데이터버퍼(#0 또는 #1)에 버퍼링될 것이다.Accordingly, 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).

이처럼, 할당제어부(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 allocation control unit 120, for each of the received write requests, that is, write requests 1, 2, 3, 4, 5, 6..., the logical block address (LBA) of the write request and the number of memory groups ( Based on M=2), by distributing and allocating to two or more memory groups, that is, memory group #0 and memory group #1, data 1,2,3,4,5,6... Distributed buffering is performed in data buffer #0 and data buffer #1 corresponding to each of memory group #1.

이때, 2 이상의 메모리그룹 각각에 대응되는 데이터버퍼, 예컨대 데이터버퍼 #0, 데이터버퍼 #1은, 할당제어부(120)에 의해 분산 할당되는 쓰기요청들의 각 데이터 다시 말해 임의 쓰기 형태로 전달되는 데이터를, 데이터버퍼 단위 내에서 순차 쓰기 형태로 변환하는 역할을 하게 된다.At this time, the data buffers corresponding to each of the two or more memory groups, for example, data buffer #0 and data buffer #1, receive each data of the write requests distributed and allocated by the allocation control unit 120, that is, data transferred in a random write form. , it plays a role in converting to sequential write form within the data buffer unit.

데이터기록제어부(130)는, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 2 이상의 메모리그룹 예컨대 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 별로 독립적으로 수행한다.The data write control unit 130 performs a data write operation of writing the data buffered in the data buffer to the corresponding memory group, for example, data buffer #0 of memory group #0 and data buffer # of memory group #1. 1 is performed independently.

즉, 데이터기록제어부(130)는, 데이터버퍼 #0에 버퍼링된 데이터를 메모리그룹 #0에 기록하는 데이터쓰기 동작을 수행하는 것과, 데이터버퍼 #1에 버퍼링된 데이터를 메모리그룹 #1에 기록하는 데이터쓰기 동작을 수행하는 것을, 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 병렬 처리될 수 있도록 하는 것이다.That is, the data write control unit 130 performs a data write operation of writing the data buffered in the data buffer #0 to the memory group #0, and writing the data buffered in the data buffer #1 to the memory group #1. By performing the data write operation independently, write requests allocated to memory group #0 (eg 1, 3, 5...) and write requests allocated to memory group #1 (eg: 2, 4, 6...) can be processed in parallel in units of memory groups.

기본적으로, 데이터버퍼에는, 전달되는 데이터가 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링된다.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 write requests 1, 3, 5... are allocated to memory group #0, write requests 1, 3, 5... each data 1, 3, 5... is buffered at the most empty position in data buffer #0 when it is transferred to data buffer #0.

물론, 전술의 예와 같이 쓰기요청2,4,6...이 메모리그룹 #1에 할당됨에 따라 데이터버퍼 #1로 전달되는 쓰기요청2,4,6... 각각의 데이터2,4,6...은, 데이터버퍼 #1로 전달되는 시점에 데이터버퍼 #1 내 비어있는 가장 앞선 위치에 버퍼링된다.Of course, as in the above example, as write requests 2, 4, 6 ... are allocated to memory group #1, write requests 2, 4, 6 ... are transferred to data buffer #1 as each data 2, 4, 6... is buffered at the most empty position in data buffer #1 when it is transferred to data buffer #1.

이하에서는, 데이터버퍼(메모리그룹) 별로 독립 수행하는 데이터쓰기 동작을 구체적으로 설명하도록 한다.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 writing 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 control unit 130 independently performs the data write operation B for each of the data buffer #0 of the memory group #0 and the data buffer #1 of the memory group #1.

설명의 편의를 위해 데이터버퍼 #0에 대하여 데이터쓰기 동작B를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀(Full) 상태가 되는지 확인한다.For convenience of explanation, a process of performing data write operation B on data buffer #0 will be described. The data write control unit 130 checks whether data buffer #0 is in a full state.

전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0은 어느 시점에 도 4의 데이터쓰기 동작B에 도시된 바와 같이 풀 상태가 될 것이다.As described above, as the write requests 1, 3, 5... each data 1, 3, 5... delivered to data buffer #0 are buffered in order at the empty leading position in data buffer #0, the data Buffer #0 will become full as shown in data write operation B of FIG. 4 at some point.

데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되면, 데이터버퍼 #0에 버퍼링된 모든 데이터(예 : 데이터1,3,5...) 및 모든 데이터(예 : 데이터1,3,5...)와 관련된 패리티정보를, 데이터버퍼 #0와 대응되는 메모리그룹 #0에 기록하고, 데이터버퍼 #0을 비운다. The data recording control unit 130, when data buffer #0 is in the full state, all data (eg, data 1, 3, 5...) and all data (eg, data 1, 3) buffered in data buffer #0 ,5...) related parity information is recorded in memory group #0 corresponding to data buffer #0, and data buffer #0 is emptied.

여기서, 패리티정보는, 데이터를 기반으로 계산한 고유값(예 : 해쉬값)을 포함하는 정보로서, 데이터의 중복 여부를 판단하거나 데이터의 무결성을 판단하는데 이용되는 정보이다.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 data buffer #0 becomes full, the data write control unit 130 includes all data buffered in data buffer #0 (eg, data 1, 3, 5...) and data buffer # A data segment including the calculated parity information for each of data 1, 3, 5... buffered in 0 is configured, and the configured data segment is used in memory chips in memory group #0, that is, memory chips #0, #1, # By writing across 2, #3, #4, all data buffered in data buffer #0 (eg data1,3,5...) and all data (eg data1,3,5...) Parity information related to can be recorded in memory group #0.

이후, 데이터기록제어부(130)는, 데이터버퍼 #0을 비운다.Thereafter, the data write control unit 130 empties the data buffer #0.

데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작B를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작B를 독립적으로 수행한다.The data write control unit 130 independently performs the data write operation B on the data buffer #1, separately from the data write operation B on the data buffer #0 as described above.

즉, 데이터기록제어부(130)는, 데이터버퍼 #1이 풀 상태가 되면, 데이터버퍼 #1에 버퍼링된 모든 데이터(예 : 데이터2,4,6...) 및 모든 데이터(예 : 데이터2,4,6...)와 관련된 패리티정보를, 데이터버퍼 #1과 대응되는 메모리그룹 #1에 기록하고, 데이터버퍼 #1을 비운다. That is, when data buffer #1 becomes full, the data write control unit 130 controls all data (eg, data 2, 4, 6...) and all data (eg, data 2) buffered in data buffer #1. ,4,6...) related parity information is recorded in memory group #1 corresponding to data buffer #1, and data buffer #1 is emptied.

이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작B를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.As such, the data write control unit 130 independently performs a data write operation B on each of the data buffer #0 of the memory group #0 and the data buffer #1 of the memory group #1, thereby assigning the data to the memory group #0. Write requests (eg 1,3,5...) and write requests allocated to memory group #1 (eg 2,4,6...) can be simultaneously processed in parallel in units of memory groups. will do

본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작B를 채택한다면, 일정하고 큰 단위(데이터버퍼 단위)의 쓰기이기 때문에 패리티정보 업데이트를 최소화시킬 수 있어 성능 향상에 유리한 반면, 갑작스러운 전원 오프 시 DRAM 상에 있는 많은 데이터를 손실할 수 있기 때문에 신뢰도 면에서 다소 불리할 수 있다.If the above-described data writing operation B is adopted in the memory control apparatus 100 of the present invention, parity information update can be minimized because it is a constant and large unit (data buffer unit), which is advantageous for performance improvement, while sudden power supply This can be somewhat of a disadvantage in terms of reliability as it can lose a lot of data on the DRAM when off.

한편, 제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 writing operation according to the second embodiment will be described by referring to the data writing operation A with reference to FIG. 4 .

즉, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작A를 각각 독립적으로 수행한다.That is, the data write control unit 130 independently performs the data write operation A for each of the data buffer #0 of the memory group #0 and the data buffer #1 of the memory group #1.

설명의 편의를 위해 데이터버퍼 #0에 대하여 데이터쓰기 동작A를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 데이터버퍼 #0과 대응되는 메모리그룹 #0에 기록한다.For convenience of explanation, the process of performing the data write operation A on data buffer #0 will be described. The data write control unit 130 takes out the most advanced non-empty data in data buffer #0 and data buffer #0. It is written to memory group #0 corresponding to

전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치에는 데이터1이 버퍼링되어 있을 것이다.As described above, as the write requests 1, 3, 5... each data 1, 3, 5... delivered to data buffer #0 are buffered in order at the empty leading position in data buffer #0, the data Data1 will be buffered in the most non-empty position in buffer #0.

이에, 데이터기록제어부(130)는, 도 4의 데이터쓰기 동작A에 도시된 바와 같이, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터, 예컨대 데이터1을 꺼내어 메모리그룹 #0에 기록한다. Accordingly, as shown in the data write operation A of FIG. 4 , the data write control unit 130 takes out data from the most advanced non-empty position in the data buffer #0, for example, data 1, and writes it to the memory group #0.

이후, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치에는 데이터3이 버퍼링되어 있을 것이다.Thereafter, data 3 will be buffered at the most non-empty position in data buffer #0.

이에, 데이터기록제어부(130)는, 데이터버퍼 #0 내 비어있지 않은 가장 앞선 위치의 데이터, 예컨대 데이터3을 꺼내어 메모리그룹 #0에 기록한다.Accordingly, the data write control unit 130 takes out the data from the most advanced non-empty position in the data buffer #0, for example, data 3, and writes it in the memory group #0.

이런 방식으로, 데이터기록제어부(130)는, 데이터버퍼 #0로 전달/버퍼링되는 쓰기요청1,3,5... 각각의 데이터1,3,5...를, 데이터버퍼 #0 단위 내에서 순차 쓰기 형태가 되도록 맵핑정보(미도시) 관리를 통해서 주소만 변환해주고, 메모리그룹 #0에 기록한다.In this way, the data write control unit 130 transmits/buffers write requests 1, 3, 5... to data buffer #0, respectively, in the data buffer #0 unit. Converts only the address through the management of mapping information (not shown) so that it becomes a sequential write format in , and records it in memory group #0.

물론, 데이터기록제어부(130)는, 데이터버퍼 #0에서 데이터를 꺼내어 메모리그룹 #0에 기록할 때마다, 기록하는 데이터의 패리티정보를 메모리그룹 #0에 기록할 수 있다.Of course, the data write control unit 130 may write the parity information of the data to be written into the memory group #0 whenever data is retrieved from the data buffer #0 and written to the memory group #0.

데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작A를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작A를 독립적으로 수행한다.The data write control unit 130 independently performs the data write operation A on the data buffer #1 as well, separately from the data write operation A on the data buffer #0 as described above.

즉, 데이터기록제어부(130)는, 데이터버퍼 #1로 전달/버퍼링되는 쓰기요청2,4,6... 각각의 데이터2,4,6...를, 데이터버퍼 #1 단위 내에서 순차 쓰기 형태가 되도록 맵핑정보(미도시) 관리를 통해서 주소만 변환해주고, 메모리그룹 #1에 기록한다.That is, the data write control unit 130 sequentially transfers/buffered write requests 2, 4, 6... to data buffer #1 within the unit of data buffer #1. Only the address is converted through mapping information (not shown) management so that it becomes a write form, and it is recorded in memory group #1.

이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작A를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.As such, the data write control unit 130 independently performs the data write operation A on each of the data buffer #0 of the memory group #0 and the data buffer #1 of the memory group #1, thereby assigning the data to the memory group #0. Write requests (eg 1,3,5...) and write requests allocated to memory group #1 (eg 2,4,6...) can be simultaneously processed in parallel in units of memory groups. will do

본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작A를 채택한다면, 전술의 데이터쓰기 동작B를 채택하는 경우에 비해서, 갑작스러운 전원 오프가 우려되는 환경에서는 신뢰도가 우수한 반면, 작은 단위의 쓰기(small write)가 많기 때문에 패리티정보 업데이트가 많아져 성능 향상 면에서 불리하다.If the above-mentioned data writing operation A is adopted in the memory control apparatus 100 of the present invention, compared to the case of adopting the above-mentioned data writing operation B, reliability is excellent in an environment where sudden power-off is concerned, while the small unit of Because there are many small writes, the update of parity information increases, which is disadvantageous in terms of performance improvement.

본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작A를 채택하는 경우, 전술의 데이터쓰기 동작B를 채택하는 경우에 비해 성능 향상 면에서 불리하다고 할 수 있지만, 비록 small write 이더라도 데이터퍼버 단위 내에서 순차 쓰기 형태이기 때문에, 기존의 임의 쓰기 형태의 small write에 비해서는 성능이 향상될 것이다.When the above-described data writing operation A is adopted in the memory control apparatus 100 of the present invention, it can be said that it is disadvantageous in terms of performance improvement compared to the case of adopting the above-mentioned data writing operation B. Since it is a sequential write type within the system, the performance will be improved compared to the small write of the existing random write type.

한편, 데이터쓰기 동작의 제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 memory groups #0 and #1 is 256KB, each data buffer is divided into partial buffers of 256KB unit equal to the chunk size of each memory chip. can be

이에, 제3실시예에 따른 데이터쓰기 동작은, 데이터버퍼가 풀 상태가 되기 이전에는, 데이터버퍼 내 2 이상의 부분버퍼 중 특정 부분버퍼가 풀 상태가 되면 특정 부분버퍼에 버퍼링된 데이터를 데이터버퍼와 대응되는 메모리그룹에 기록한다. 그리고, 제3실시예에 따른 데이터쓰기 동작은, 2 이상의 부분버퍼 중 마지막 부분버퍼가 풀 상태가 되어 데이터버퍼가 풀 상태가 되면, 마지막 부분버퍼에 버퍼링된 데이터 및 데이터버퍼에 버퍼링된 모든 데이터와 관련된 패리티정보를 상기 메모리그룹에 기록하고, 데이터버퍼를 비우는 동작이다.Accordingly, in the data writing 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 write 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 write 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 control unit 130 independently performs the data write operation C for each of the data buffer #0 of the memory group #0 and the data buffer #1 of the memory group #1.

설명의 편의를 위해 메모리그룹 #0에 대하여 데이터쓰기 동작C를 수행하는 과정을 설명하면, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀(Full) 상태가 되는지 확인한다.For convenience of explanation, the process of performing the data write operation C on the memory group #0 will be described. The data write control unit 130 checks whether the data buffer #0 is in the full state.

데이터버퍼 #0이 풀 상태가 아니면, 데이터기록제어부(130)는, 데이터버퍼 #0 내 2 이상의 부분버퍼, 예컨대 도 4에 도시된 3개의 부분버퍼a,b,c 중 특정 부분데이터가 풀 상태가 되면 특정 부분버퍼에 버퍼링된 데이터를 데이터버퍼 #0와 대응되는 메모리그룹 #0에 기록한다.If the data buffer #0 is not in the full state, the data write control unit 130 determines that two or more partial buffers in the data buffer #0, for example, specific partial data among the three partial buffers a, b, and c shown in FIG. 4 are in the full state. data buffered in a specific partial buffer is written to memory group #0 corresponding to data buffer #0.

전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 가장 앞선 위치의 부분버퍼a가 풀 상태가 될 것이다.As described above, as the write requests 1, 3, 5... each data 1, 3, 5... delivered to data buffer #0 are buffered in order at the empty leading position in data buffer #0, the data Among the partial buffers a, b, and c in buffer #0, the most advanced partial buffer a will be in the full state.

이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되기 이전이기 때문에, 데이터버퍼 #0 내 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼 즉 부분버퍼a에 버퍼링된 데이터를 메모리그룹 #0에 기록한다. 이때, 데이터기록제어부(130)는, 부분버퍼a에 버퍼링된 데이터의 패리티정보는 메모리그룹 #0에 기록하지 않는다.In this case, the data write control unit 130 buffers the partial buffer a, that is, the partial buffer a, which is in the full state among the partial buffers a, b, and c in the data buffer #0, because the data buffer #0 is before the full state. Write the data to memory group #0. At this time, the data write control unit 130 does not write the parity information of the data buffered in the partial buffer a to the memory group #0.

이후, 전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 부분버퍼b가 풀 상태가 될 것이다.Thereafter, as described above, as each data 1, 3, 5... of write requests 1, 3, 5... delivered to data buffer #0 are buffered in order in the most empty position in data buffer #0, , among partial buffers a, b, and c in data buffer #0, partial buffer b will become full.

이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되기 이전이기 때문에, 데이터버퍼 #0 내 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼 즉 부분버퍼b에 버퍼링된 데이터를 메모리그룹 #0에 기록한다. 이때, 데이터기록제어부(130)는, 부분버퍼b에 버퍼링된 데이터의 패리티정보는 메모리그룹 #0에 기록하지 않는다.In this case, since the data write control unit 130 is before the data buffer #0 becomes the full state, it is buffered in a specific partial buffer that is in the full state among the partial buffers a, b, and c in the data buffer #0, that is, the partial buffer b. Write the data to memory group #0. At this time, the data write control unit 130 does not write the parity information of the data buffered in the partial buffer b to the memory group #0.

이후, 전술과 같이 데이터버퍼 #0로 전달되는 쓰기요청1,3,5... 각각의 데이터1,3,5...가 데이터버퍼 #0 내 비어있는 가장 앞선 위치에 순서대로 버퍼링됨에 따라, 데이터버퍼 #0 내 부분버퍼a,b,c 중에서는 마지막 부분버퍼c가 풀 상태가 될 것이고, 이 경우 데이터버퍼 #0이 풀 상태가 될 것이다.Thereafter, as described above, as each data 1, 3, 5... of write requests 1, 3, 5... delivered to data buffer #0 are buffered in order in the most empty position in data buffer #0, , among the partial buffers a, b, and c in data buffer #0, the last partial buffer c will be in the full state, and in this case, data buffer #0 will be in the full state.

이 경우, 데이터기록제어부(130)는, 데이터버퍼 #0이 풀 상태가 되었기 때문에, 마지막 부분버퍼c에 버퍼링된 데이터를 메모리그룹#0에 기록하고, 이와 함께 데이터버퍼 #0에 버퍼링된 모든 데이터(부분버퍼a,b,c 에 버퍼링된 모든 데이터) 각각에 대하여 계산된 패리티정보를 메모리그룹#0에 기록할 수 있다.In this case, since the data buffer #0 is in the full state, the data write control unit 130 writes the data buffered in the last partial buffer c to the memory group #0, along with all data buffered in the data buffer #0. Parity information calculated for each (all data buffered in partial buffers a, b, and c) can be written to memory group #0.

이후, 데이터기록제어부(130)는, 데이터버퍼 #0을 비운다.Thereafter, the data write control unit 130 empties the data buffer #0.

데이터기록제어부(130)는, 전술과 같이 데이터버퍼 #0에 대하여 데이터쓰기 동작C를 수행하는 것과는 별개로, 데이터버퍼 #1에 대하여 역시 데이터쓰기 동작C를 독립적으로 수행한다.The data write control unit 130 independently performs the data write operation C on the data buffer #1 separately from the data write operation C on the data buffer #0 as described above.

즉, 데이터기록제어부(130)는, 데이터버퍼 #1이 풀 상태가 되기 이전에는 부분버퍼a,b,c 중 풀 상태가 된 특정 부분버퍼(예 : a,b)에 버퍼링된 데이터를 메모리그룹 #1에 기록하고, 부분버퍼a,b,c 중 마지막 부분버퍼c가 풀 상태가 되어 데이터버퍼 #1이 풀 상태가 되면 마지막 부분버퍼c에 버퍼링된 데이터를 메모리그룹 #1에 기록하고 이와 함께 데이터버퍼 #1에 버퍼링된 모든 데이터 각각에 대하여 계산된 패리티정보를 메모리그룹#1에 기록하고, 데이터버퍼 #1을 비운다. That is, the data write control unit 130 stores the data buffered in the specific partial buffers (eg, a, b) that are in the full state among the partial buffers a, b, and c before the data buffer #1 becomes the full state in the memory group. Write to #1, and when the last partial buffer c among partial buffers a, b, and c becomes full and data buffer #1 becomes full, the data buffered in the last partial buffer c is written to memory group #1 and together with Parity information calculated for each data buffered in data buffer #1 is recorded in memory group #1, and data buffer #1 is emptied.

이처럼, 데이터기록제어부(130)는, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 데이터쓰기 동작C를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.As such, the data write control unit 130 independently performs the data write operation C on each of the data buffer #0 of the memory group #0 and the data buffer #1 of the memory group #1, thereby assigning the data to the memory group #0. Write requests (eg 1,3,5...) and write requests allocated to memory group #1 (eg 2,4,6...) can be simultaneously processed in parallel in units of memory groups. will do

본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작C를 채택한다면, 전술의 데이터쓰기 동작A 및 데이터쓰기 동작B의 장점을 모두 취할 수 있다. If the above-described data writing operation C is adopted in the memory control apparatus 100 of the present invention, the advantages of the above-described data writing operation A and data writing operation B can both be taken.

즉, 본 발명의 메모리제어장치(100)에서 전술의 데이터쓰기 동작C를 채택한다면, 갑작스러운 전원 오프 시 손실이 우려되는 데이터의 크기를 데이터버퍼의 크기보다 작은 부분버퍼 크기로 줄일 수 있어 데이터쓰기 동작B를 채택하는 경우에 비해 신뢰도가 향상되며, 데이터쓰기 동작A를 채택하는 경우에 비해 패리티정보 업데이트를 줄여 성능을 향상시킬 수 있다.That is, if the above-described data write operation C is adopted in the memory control apparatus 100 of the present invention, the size of data that is concerned about loss when the power is suddenly turned off can be reduced to a size of a partial buffer smaller than the size of the data buffer. Reliability is improved compared to the case of adopting operation B, and performance can be improved by reducing parity information update compared to the case of adopting data writing operation A.

이상에서 설명한 바와 같이, 본 발명에 따른 메모리제어장치(100)는, 메모리장치(10) 내 다수의 메모리칩을 2 이상의 메모리그룹(RAID그룹)으로 그룹핑하고, 각 메모리그룹 별로 데이터버퍼를 각기 구비하는 구조를 배경으로, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 각 메모리그룹으로 분산 할당하여 쓰기요청들의 데이터 각각이 각 메모리그룹의 데이터버퍼에 분산 버퍼링되도록 하고, 데이터쓰기 동작(A 또는 B 또는 C)를 각 메모리그룹의 데이터버퍼 별로 독립 수행함으로써, 결과적으로 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있게 한다.As described above, the memory control device 100 according to the present invention groups a plurality of memory chips in the memory device 10 into two or more memory groups (RAID groups), and each memory group has a data buffer. Against the background of the structure of Alternatively, by performing C) independently for each data buffer of each memory group, as a result, write requests can be processed in parallel in units of memory groups.

이에, 본 발명의 실시예에 따른 메모리제어장치(100)는, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.Accordingly, the memory control apparatus 100 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.

아울러, 본 발명에 따른 메모리제어장치(100)는, SSD 어레이를 추가하여 스토리지 시스템의 용량을 확장하는 경우, 용량 확장 뿐 아니라 성능 확장까지도 이끌어낼 수 있는 환경적 이점을 제공할 수 있다.In addition, the memory control apparatus 100 according to the present invention can provide an environmental advantage that can lead to not only capacity expansion but also performance expansion when the capacity of the storage system is expanded by adding an SSD array.

예를 들어, 전술의 예와 같이 10개(N=10)의 메모리칩이 구성되어 있고, 10개의 메모리칩을 2개(M=2)의 메모리그룹 #0, 메모리그룹 #1로 그룹핑하여 이용하는 상황에서, 새로운 SSD 어레이(예 : SSD 10개)를 추가하여 스토리지 시스템의 용량을 확장하는 경우를 가정해 본다.For example, as in the above example, ten (N=10) memory chips are configured, and the ten memory chips are grouped into two (M=2) memory group #0 and memory group #1. In a situation, suppose you expand the capacity of a storage system by adding a new SSD array (eg 10 SSDs).

이 경우, 본 발명에 따른다면, 새로운 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 memory control apparatus 100 of the present invention assigns a numbering memory group corresponding to the remainder value obtained by dividing the logical block address (LBA) of the write request by the number (M) of the memory groups, as described above. Since the memory group to which the write request is allocated is determined/allocated, the parameter used to determine the memory group to be allocated, i.e., the number of memory groups (M), is calculated by changing the number to 4, and the write request is distributed and allocated to each memory group. In consideration of the new memory group, it is possible to simply change (hereinafter, write request allocation relocation).

이때, 본 발명의 메모리제어장치(100)는, 쓰기요청 할당 재배치가 완료될 때까지 상위에서 오는 요청(쓰기, 읽기 등)을 막을 수도 있고, 상위에서 오는 요청(쓰기, 읽기 등)을 받아들이면서 쓰기요청 할당 재배치를 진행할 수도 있다.At this time, the memory control apparatus 100 of the present invention may block a request (write, read, etc.) from an upper level until the write request allocation relocation is completed, and while accepting a request (write, read, etc.) from an upper level It is also possible to proceed with write request allocation relocation.

이에, 본 발명에 따른 메모리제어장치(100)는, 스토리지 시스템의 용량을 확장하여 새로운 메모리그룹이 생기면, 쓰기요청을 동시에 병렬 처리할 수 있는 성능 역시 그 만큼 증가되는 것이기 때문에, 용량 확장 뿐 아니라 성능 확장까지도 효율적으로 이끌어낼 수 있는 환경적 이점을 제공하는 것이다.Accordingly, in the memory control apparatus 100 according to the present invention, when a new memory group is created by expanding the capacity of the storage system, the performance of concurrently processing write requests in parallel is also increased by that amount. It is to provide an environmental advantage that can lead to efficient even expansion.

이하에서는 도 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 memory control device 100 according to the present invention, a plurality of memory chips (#0, #1, #2...#N-1) constituting the memory device 10, for example, N SSDs, Grouping into two or more memory groups (S100).

이때, 본 발명에서는, 도 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 data buffer #0 corresponds to the memory group #0, the data buffer #1 to the memory group #1, ... The data buffer #M is provided to correspond to the memory group #M.

이하에서는 설명의 편의를 위해서, 메모리장치(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 memory device 10, and in step S100, 10 memory chips are added to two (M=2) memory groups #0, An example of grouping into memory group #1 will be described.

본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10)에 대하여 쓰기연산을 시도하는 쓰기요청을, 파일시스템(200)으로부터 수신하게 된다(S110).In the method of operating the memory control device 100 according to the present invention, a write request for attempting a write operation on the memory device 10 is received from the file system 200 (S110).

예컨대, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 쓰기요청들 즉 메모리장치(10)에 대하여 쓰기연산이 시도되는 순서대로 수신되는 각각의 쓰기요청1,2,3,4,5,6...을 수신할 수 있다.For example, in the operating method of the memory control device 100 according to the present invention, write requests, that is, each write request 1, 2, 3, 4, 5 received in the order in which a write operation is attempted with respect to the memory device 10 . ,6... can be received.

본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청들 각각에 대하여, 쓰기요청의 논리블록주소(LBA) 및 메모리그룹의 개수(M=2)를 기초로 2 이상의 메모리그룹 즉 메모리그룹 #0, 메모리그룹 #1 중 할당할 메모리그룹을 결정하고, 결정한 메모리그룹에 해당 쓰기요청을 할당한다(S120).In the method of operating the memory control apparatus 100 according to the present invention, for each of the received write requests, two or more memory groups based on the logical block address (LBA) of the write request and the number of memory groups (M=2) That is, a memory group to be allocated among memory group #0 and memory group #1 is determined, and a corresponding write request is allocated to the determined memory group (S120).

예를 들면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청1의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청1을 할당할 메모리그룹으로 결정하고, 쓰기요청1을 결정한 메모리그룹 #0에 할당한다(S120).For example, in the method of operating the memory control apparatus 100 according to the present invention, a residual value obtained by dividing the logical block address (LBA) of the received write request 1 by the number of memory groups (2) is checked. For example, if the remaining value is 0, the method of operating the memory control apparatus 100 according to the present invention determines the numbering memory group #0 corresponding to the remaining value 0 as the memory group to which the write request 1 is to be allocated, The write request 1 is allocated to the determined memory group #0 (S120).

이에, 쓰기요청1의 데이터1은, 쓰기요청1이 할당된 메모리그룹 #0의 데이터버퍼 #0로 전달되어 데이터버퍼 #0에 버퍼링될 것이다(S130).Accordingly, the data 1 of the write request 1 will be transferred to the data buffer # 0 of the memory group # 0 to which the write request 1 is allocated and will be buffered in the data buffer # 0 ( S130 ).

이와 마찬가지로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청2의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 1이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 1에 대응되는 넘버링의 메모리그룹 #1을 쓰기요청2를 할당할 메모리그룹으로 결정하고, 쓰기요청2를 결정한 메모리그룹 #1에 할당한다(S120).Similarly, in the method of operating the memory control apparatus 100 according to the present invention, a remainder value obtained by dividing the logical block address (LBA) of the received write request 2 by the number of memory groups (2) is checked. For example, if the remaining value is 1, the method of operating the memory control apparatus 100 according to the present invention determines the numbering memory group #1 corresponding to the remaining value 1 as the memory group to which the write request 2 is to be allocated, Write request 2 is allocated to the determined memory group #1 (S120).

이에, 쓰기요청2의 데이터2는, 쓰기요청2가 할당된 메모리그룹 #1의 데이터버퍼 #1로 전달되어 데이터버퍼 #1에 버퍼링될 것이다(S130).Accordingly, the data 2 of the write request 2 is transferred to the data buffer #1 of the memory group #1 to which the write request 2 is allocated and will be buffered in the data buffer #1 (S130).

이와 마찬가지로, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 수신되는 쓰기요청3의 논리블록주소(LBA)를 메모리그룹의 개수(2)로 나눈 나머지값을 확인한다. 예를 들어, 나머지 값이 0이면, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 나머지값 0에 대응되는 넘버링의 메모리그룹 #0을 쓰기요청3을 할당할 메모리그룹으로 결정하고, 쓰기요청3을 결정한 메모리그룹 #0에 할당한다(S120).Similarly, in the method of operating the memory control apparatus 100 according to the present invention, a residual value obtained by dividing the logical block address (LBA) of the received write request 3 by the number of memory groups (2) is checked. For example, if the remaining value is 0, the method of operating the memory control apparatus 100 according to the present invention determines the numbering memory group #0 corresponding to the remaining value 0 as the memory group to which the write request 3 is to be allocated, Write request 3 is allocated to the determined memory group #0 (S120).

이에, 쓰기요청3의 데이터3은, 쓰기요청3이 할당된 메모리그룹 #0의 데이터버퍼 #0으로 전달되어 데이터버퍼 #0에 버퍼링될 것이다(S130).Accordingly, the data 3 of the write request 3 will be transferred to the data buffer # 0 of the memory group # 0 to which the write request 3 is allocated and will be buffered in the data buffer # 0 ( S130 ).

이러한 방식으로, 본 발명에 따른 메모리제어장치(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 memory control apparatus 100 according to the present invention is the remainder of dividing the logical block address (LBA) by the number of memory groups (2) for each of the write requests 4, 5, 6... Check the value. Accordingly, the operating method of the memory control device 100 according to the present invention is to select a numbering memory group (#0 or #1) corresponding to the remaining values (0 or 1) of write requests 4, 5, 6... Each of the write requests 4, 5, 6... is determined as a memory group to be allocated, and each of the write requests 4, 5, 6... is allocated to the determined memory group (#0 or #1) (S120).

이에, 쓰기요청4,5,6...의 데이터4,5,6...은, 쓰기요청4,5,6...이 할당된 메모리그룹(#0 또는 #1)의 데이터버퍼(#0 또는 #1)로 전달되어 데이터버퍼(#0 또는 #1)에 버퍼링될 것이다(S130).Accordingly, 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, in the method of operating the memory control device 100 according to the present invention, for each of the received write requests, that is, write requests 1, 2, 3, 4, 5, 6... LBA) and data 1,2,3,4,5,6 of write requests by distributed allocation to two or more memory groups, that is, memory group #0 and memory group #1, based on the number of memory groups (M=2). .. is distributed buffered in data buffer #0 and data buffer #1 corresponding to memory group #0 and memory group #1, respectively.

본 발명에 따른 메모리제어장치(100)의 동작 방법은, 데이터버퍼에 버퍼링된 데이터를 대응되는 메모리그룹에 기록하는 데이터쓰기 동작을, 2 이상의 메모리그룹 즉 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 별로 독립적으로 수행한다(S140).In the method of operating the memory control apparatus 100 according to the present invention, a data write operation of writing data buffered in a data buffer to a corresponding memory group is performed in two or more memory groups, that is, data buffer #0 of memory group #0, memory It is independently performed for each data buffer #1 of group #1 (S140).

즉, 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리그룹 #0의 데이터버퍼 #0, 메모리그룹 #1의 데이터버퍼 #1 각각에 대하여, 전술의 데이터쓰기 동작(A 또는 B 또는 C)를 각각 독립적으로 수행함으로써, 메모리그룹 #0에 할당된 쓰기요청들(예 : 1,3,5...) 및 메모리그룹 #1에 할당된 쓰기요청들(예 : 2,4,6...)이 메모리그룹 단위로 동시에 병렬 처리될 수 있도록 하는 것이다.That is, in the method of operating the memory control apparatus 100 according to the present invention, the above-described data write operation (A or B or C) independently, write requests allocated to memory group #0 (eg 1,3,5...) and write requests allocated to memory group #1 (eg 2,4,6) ...) can be processed in parallel in units of memory groups at the same time.

이상에서 설명한 바와 같이, 본 발명에 따른 본 발명에 따른 메모리제어장치(100)의 동작 방법은, 메모리장치(10) 내 다수의 메모리칩을 2 이상의 메모리그룹(RAID그룹)으로 그룹핑하고, 각 메모리그룹 별로 데이터버퍼를 각기 구비하는 구조를 배경으로, 메모리장치(10)에 대하여 수신되는 쓰기요청들을 각 메모리그룹으로 분산 할당하여 쓰기요청들의 데이터 각각이 각 메모리그룹의 데이터버퍼에 분산 버퍼링되도록 하고, 데이터쓰기 동작(A 또는 B 또는 C)를 각 메모리그룹의 데이터버퍼 별로 독립 수행함으로써, 결과적으로 쓰기요청들이 메모리그룹 단위로 병렬 처리될 수 있게 한다.As described above, in the method of operating the memory control device 100 according to the present invention according to the present invention, a plurality of memory chips in the memory device 10 are grouped into two or more memory groups (RAID groups), and each memory Against the background of a structure having a data buffer for each group, the write requests received for the memory device 10 are distributed to each memory group so that the data of the write requests are distributed and buffered in the data buffer of each memory group, By independently performing a data write operation (A, B, or C) for each data buffer of each memory group, as a result, write requests can be processed in parallel in units of memory groups.

이에, 본 발명의 실시예에 따른 메모리제어장치의 동작 방법은, SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있는 효과를 도출한다.Accordingly, the method of operating a memory control apparatus according to an embodiment of the present invention derives an 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, magnetic media such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and carry out 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 modifications can be made by anyone with ordinary knowledge.

본 발명에 따른 메모리제어장치 및 메모리제어장치의 동작 방법에 따르면 SSD와 같은 플래시기반 디바이스로 구성된 스토리지 시스템에서, RAID 구성 시 성능 및 신뢰도를 보다 효율적으로 높일 수 있다는 점에서, 기존 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.According to the memory control apparatus and the method of operation 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 when configuring RAID, surpassing the limitations of existing technologies It is an invention with industrial applicability because the possibility of marketing or business of the applied device, not just 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)

메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑부;
상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 쓰기요청들 각각의 논리블록주소(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 each of the two or more memory groups; and
A data write operation of 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 control unit writes the buffered data to a memory group corresponding to the partial buffer in which the data is full when the data in the data buffer is full in units of partial buffers.
제 1 항에 있어서,
상기 할당제어부는,
상기 쓰기요청들 각각을 상기 논리블록주소를 상기 메모리그룹의 개수로 나눈 나머지값에 대응되는 넘버링의 메모리그룹에 할당함으로써 상기 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하는 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
The allocation control unit,
and distributing the write requests to the two or more memory groups by allocating each of the write requests to a numbering memory group corresponding to a remainder value obtained by dividing the logical block address by the number of memory groups. .
제 1 항에 있어서,
데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되는 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
In the data buffer, the data to be transferred is buffered at the most empty position in the data buffer.
제 1 항에 있어서,
상기 데이터쓰기 동작은,
데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
The data writing 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.
제1 항에 있어서,
상기 부분버퍼는, 상기 메모리그룹에 포함되는 각 메모리칩의 청크(Chunk) 크기와 관련되는 것을 특징으로 하는 메모리제어장치.
According to claim 1,
The partial buffer is associated with a chunk size of each memory chip included in the memory group.
제 1 항에 있어서,
데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되며,
상기 데이터쓰기 동작은,
상기 데이터버퍼 내 비어있지 않은 가장 앞선 위치의 데이터를 꺼내어 상기 데이터버퍼와 대응되는 메모리그룹에 기록하는 동작인 것을 특징으로 하는 메모리제어장치.
The method of claim 1,
In the data buffer, the transmitted data is buffered in the empty most leading position in the data buffer,
The data writing operation is
The memory control apparatus according to claim 1, wherein the operation of extracting data from the most advanced position that is not empty in the data buffer and writing the data to a memory group corresponding to the data buffer.
제 1 항에 있어서,
상기 메모리그룹의 개수는 상기 메모리장치를 구성하는 상기 다수의 메모리칩의 개수보다 작은,
메모리제어장치.
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.
제 7 항에 있어서,
상기 그룹핑부가 상기 메모리그룹의 개수를 변경하면,
상기 할당제어부는 분산 할당된 쓰기요청들을 재배치하는,
메모리제어장치.
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.
메모리장치를 구성하는 다수의 메모리칩을 2 이상의 메모리그룹으로 그룹핑하는 그룹핑단계;
상기 메모리장치에 대하여 수신되는 쓰기요청들을 상기 쓰기요청들 각각의 논리블록주소(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 from 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 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 of 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.
제 9 항에 있어서,
상기 할당제어단계는,
상기 쓰기요청들 각각을 상기 논리블록주소를 상기 메모리그룹의 개수로 나눈 나머지값에 대응되는 넘버링의 메모리그룹에 할당함으로써 상기 쓰기요청들을 상기 2 이상의 메모리그룹에 분산 할당하는 것을 특징으로 하는 동작 방법.
10. The method of claim 9,
The allocation control step is
and distributing the write requests to the two or more memory groups by allocating each of the write requests to a numbering memory group corresponding to a remainder value obtained by dividing the logical block address by the number of memory groups.
제 9 항에 있어서,
데이터버퍼에는, 전달되는 데이터가 상기 데이터버퍼 내 비어있는 가장 앞선 위치에 버퍼링되는 것을 특징으로 하는 메모리제어장치의 동작 방법.
10. The method of claim 9,
The method of operating a memory control device, characterized in that in the data buffer, the transferred data is buffered at an empty leading position in the data buffer.
제 9 항에 있어서,
상기 데이터쓰기 동작은,
데이터버퍼가 풀(Full) 상태가 되면, 상기 데이터버퍼에 버퍼링된 모든 데이터 및 상기 모든 데이터와 관련된 패리티정보를 상기 데이터버퍼와 대응되는 메모리그룹에 기록하고, 상기 데이터버퍼를 비우는 동작인 것을 특징으로 하는 메모리제어장치의 동작 방법.
10. The method of claim 9,
The data writing 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 in the memory group
comprising, a storage system.
제 13 항에 있어서,
상기 메모리 제어 장치는
상기 분산된 쓰기 데이터가 상기 분산된 쓰기 데이터가 가득 찬 부분 버퍼에 대응하는 메모리 그룹에 저장되면, 상기 가득 찬 부분 버퍼를 비우는,
스토리지 시스템.
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.
제 13 항에 있어서,
상기 메모리 제어 장치는
상기 둘 이상의 메모리 그룹에 각각 배정된 상기 복수의 부분 버퍼에 분산된 쓰기 데이터를 상기 둘 이상의 메모리 그룹에 저장하는 동작을 상기 둘 이상의 메모리 그룹에 대해 병렬로 수행하는,
스토리지 시스템.
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.
제 13 항에 있어서,
상기 메모리 그룹의 개수는 상기 복수의 플래시 메모리 장치보다 작은,
스토리지 시스템.
14. The method of claim 13,
the number of memory groups is smaller than that of the plurality of flash memory devices;
storage system.
제 13 항에 있어서,
상기 메모리 제어 장치는
상기 메모리 그룹의 개수를 변경한 후, 상기 복수의 부분 버퍼에 분산된 쓰기요청들을 재배치하는,
스토리지 시스템.
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.
KR1020210123905A 2014-05-07 2021-09-16 Memory management apparatus and control method thereof KR102347841B1 (en)

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 true KR20210122726A (en) 2021-10-12
KR102347841B1 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)

* Cited by examiner, † Cited by third party
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100104550A (en) * 2009-03-18 2010-09-29 삼성전자주식회사 Storage device and method for managing buffer memory of storage device
KR20100128120A (en) * 2009-05-27 2010-12-07 삼성전자주식회사 Data storage device and data storing method thereof
KR101257848B1 (en) * 2005-07-13 2013-04-24 삼성전자주식회사 Data storing apparatus comprising complex memory and method of operating the same
KR20130130907A (en) * 2012-05-23 2013-12-03 아주대학교산학협력단 Data distinguish method and apparatus using algorithm for chip-level-parallel flash memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
KR20100104550A (en) * 2009-03-18 2010-09-29 삼성전자주식회사 Storage device and method for managing buffer memory of storage device
KR20100128120A (en) * 2009-05-27 2010-12-07 삼성전자주식회사 Data storage device and data storing method thereof
KR20130130907A (en) * 2012-05-23 2013-12-03 아주대학교산학협력단 Data distinguish method and apparatus using algorithm for chip-level-parallel flash memory

Also Published As

Publication number Publication date
KR102347841B1 (en) 2022-01-07
KR20150127434A (en) 2015-11-17

Similar Documents

Publication Publication Date Title
KR102347841B1 (en) Memory management apparatus and control method thereof
KR102170539B1 (en) Method for storing data by storage device and storage device
EP3617867B1 (en) Fragment management method and fragment management apparatus
KR101086857B1 (en) Control Method of Solid State Storage System for Data Merging
US9122629B2 (en) Elastic cache with single parity
WO2018189858A1 (en) Storage system
JP6114397B2 (en) Hybrid storage system and storage control method
US20150095555A1 (en) Method of thin provisioning in a solid state disk array
US9792073B2 (en) Method of LUN management in a solid state disk array
JP2019020788A (en) Memory system and control method
JP2015517697A (en) Storage system and storage control method using storage area based on secondary storage as cache area
US8954658B1 (en) Method of LUN management in a solid state disk array
KR20100077156A (en) Thin provisioning migration and scrubbing
WO2015015611A1 (en) Storage system and data write method
US20140281143A1 (en) Reducing flash memory write amplification and latency
KR20110093035A (en) Apparatus for flash address translation apparatus and method thereof
US20180307426A1 (en) Storage apparatus and storage control method
CN110895513A (en) System garbage recycling method and garbage recycling method in solid state disk
US20190243758A1 (en) Storage control device and storage control method
CN108491290B (en) Data writing method and device
JP2017162260A (en) Memory control device, storage device, control program of storage device, and control method for storage device
US20070079064A1 (en) Disk cache control apparatus
JP5594647B2 (en) Storage apparatus and control method thereof
WO2016194979A1 (en) Storage system, storage control device, storage control method, and program
CN114625318A (en) Data writing method, device and equipment applied to solid state disk

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