KR100423812B1 - RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device - Google Patents

RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device Download PDF

Info

Publication number
KR100423812B1
KR100423812B1 KR10-2001-0081721A KR20010081721A KR100423812B1 KR 100423812 B1 KR100423812 B1 KR 100423812B1 KR 20010081721 A KR20010081721 A KR 20010081721A KR 100423812 B1 KR100423812 B1 KR 100423812B1
Authority
KR
South Korea
Prior art keywords
parity
data
stripe
controller
write
Prior art date
Application number
KR10-2001-0081721A
Other languages
Korean (ko)
Other versions
KR20030051996A (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 KR10-2001-0081721A priority Critical patent/KR100423812B1/en
Publication of KR20030051996A publication Critical patent/KR20030051996A/en
Application granted granted Critical
Publication of KR100423812B1 publication Critical patent/KR100423812B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 RAID 제어기 및 패리티 연산 방법에 관한 것이다. 본 발명의 RAID 제어기는, 다양한 RAID 레벨을 구성하기 위하여 필요한 패리티 정보를 계산하기 위해 하드웨어 XOR(Exclusive-OR) 연산을 수행하는 패리티 연산 장치와, 디스크 캐쉬 공간을 제공하기 위하여 RAID 제어기에 장착되는 메모리 제어부를 포함하는 것을 특징으로 한다. 또한, 본 발명의 RAID 제어기는 디스크 캐쉬 메모리로부터 데이터 블록들을 패리티 연산 장치의 패리티 데이터 버퍼로 읽어 오거나 읽어 온 데이터 블록들의 패리티 연산의 결과를 패리티 데이터 버퍼로부터 디스크 캐쉬 메모리에 다시 저장하는 과정을 제어하는 직접메모리접근(Direct Memory Access) 방식에 의해 수행된다. 여기서, 패리티 연산 장치는 전체 스트라입 쓰기 모드 제어기(full stripe write mode controller) 및 부분 스트라입 쓰기 모드 제어기(partial stripe write mode controller)를 포함하여 구성된다. 이에 따라, RAID 시스템에서 새로운 데이터 블록들의 쓰기에 수반되는 새로운 패리티 데이터 계산 과정에서 불필요한 데이터 전송을 없애기 위하여 전체 스트라입 쓰기와 부분 스트라입 쓰기 각각에 최적화된 패리티 연산 제어기를 제공할 수 있다.The present invention relates to a RAID controller and a parity calculation method. The RAID controller of the present invention is a parity computing device that performs hardware XOR (Exclusive-OR) operation to calculate the parity information required to configure various RAID levels, and a memory mounted to the RAID controller to provide disk cache space It characterized in that it comprises a control unit. In addition, the RAID controller of the present invention controls a process of reading data blocks from the disk cache memory into the parity data buffer of the parity computing device or storing the result of parity operations of the read data blocks from the parity data buffer to the disk cache memory. This is done by direct memory access. Here, the parity computing device includes a full stripe write mode controller and a partial stripe write mode controller. Accordingly, in order to eliminate unnecessary data transfer in the process of calculating new parity data associated with writing of new data blocks in a RAID system, a parity operation controller optimized for each of full stripe writes and partial stripe writes may be provided.

Description

디스크 캐쉬메모리 제어기 및 패리티 연산장치를 구비한 알에이아이디 제어기 및 패리티 연산방법{RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device}RAID Controller and Parity Operator Method Having Disk Cash Memory Controller and Parity Operator Device

본 발명은 데이터 저장 장치인 RAID(Redundant Arrays of Inexpensive Disks) 제어기 및 패리티 연산방법에 관한 것으로서, 보다 상세하게는 데이터의 전송과 함께 패리티 데이터를 연산할 수 있는 디스크 캐쉬메모리 제어기 및 패리티연산장치를 구비한 RAID 제어기 및 패리티 연산방법에 관한 것이다.The present invention relates to a RAID (Redundant Arrays of Inexpensive Disks) controller and a parity calculation method, and more particularly, to a disk cache memory controller and a parity computing device capable of calculating parity data along with data transfer. It relates to a RAID controller and a parity calculation method.

일반적으로 RAID 시스템은 사용자의 요구를 충족하기 위하여 대용량의 저장 공간을 제공하고, 중복성(Redundancy)기법들을 채용하여 저장되어 있는 데이터의 신뢰성을 보장하는 것은 물론이며, 저장되어 있는 데이터에 대한 접근 속도를 향상시키는 것을 목적으로 하는 것이다. 이러한 RAID 시스템을 구성하는 디스크들 중 일부가 고장이 날 경우에는, 여분의 디스크로 정의되어 있는 디스크에 고장난 디스크의 이미지 데이터를 복구하는 중복성에 의해 고장난 디스크의 데이터를 손실 없이 복구할 수 있다.In general, a RAID system provides a large amount of storage space to meet a user's needs, employs redundancy techniques to ensure the reliability of the stored data, and to speed up access to the stored data. The purpose is to improve. If some of the disks in the RAID system fail, the data of the failed disk can be recovered without loss due to the redundancy of restoring the image data of the failed disk to the disk defined as the spare disk.

이러한 RAID 시스템은 복수개의 디스크로 구성되어 있지만 RAID 관리 기법에 의해 사용자에게는 하나의 대용량 디스크로 인식될 수 있다. 또한 RAID 시스템을 구성하는 RAID 제어기는 일반적으로 디스크 데이터 캐쉬를 포함하는 것으로, RAID 시스템의 신속한 데이터 응답을 가능하게 하기 위한 다양한 방법의 RAID 시스템이 구현된다. RAID 시스템을 구현하는 다양한 방법에는, 데이터를 두 개 이상의 디스크에 똑같은 복사본을 유지하는 방법으로 디스크 고장으로부터 데이터 복구를 가능하게 하고 신뢰성을 보장하는 방법인 RAID 레벨 1과, 그 이외에 일반적으로 사용되고 있는 방법인 RAID 레벨 3, RAID 레벨 4, RAID 레벨 5 등이 있다.Although such a RAID system is composed of a plurality of disks, it can be recognized as one large disk by a user by RAID management technique. In addition, the RAID controller constituting the RAID system generally includes a disk data cache, and various methods of RAID systems are implemented to enable fast data response of the RAID system. Various methods of implementing a RAID system include RAID level 1, which is a method of ensuring data recovery from disk failure and ensuring reliability by maintaining an identical copy of data on two or more disks, and other commonly used methods. RAID level 3, RAID level 4, RAID level 5, and so on.

이 세 가지(RAID 레벨 3, RAID 레벨 4, RAID 레벨 5)를 사용하는 구현방법에서는 복수 개의 디스크 드라이브에 데이터와 패리티 정보를 저장한다. 지정된 수의 데이터 블록들을 하나의 단위로 하여 각 디스크에 분할 저장하고, 이 단위 데이터 블록들로부터 패리티 데이터를 계산하여 그 결과를 패리티 데이터 블록들의 위치에 저장한다. 이때, RAID 레벨 3 및 RAID 레벨 4에서는 고정된 패리티 디스크를 지정하여 사용하고, RAID 레벨 5에서는 모든 디스크에 패리티 데이터를 분산하여 저장하는 방법을 사용한다. 그러나, 이러한 RAID 레벨 3, RAID 레벨 4 및 RAID 레벨 5 구성에서는 디스크 데이터 이외에 패리티 정보를 계산 저장하여야 하는 오버헤드로 인해, 성능의 저하가 발생한다.An implementation using these three (RAID level 3, RAID level 4, RAID level 5) stores data and parity information on multiple disk drives. A specified number of data blocks is divided into one disk and stored in each disk. Parity data is calculated from these unit data blocks, and the result is stored in the parity data blocks. In this case, a fixed parity disk is designated and used in RAID level 3 and RAID level 4, and a parity data is distributed and stored in all disks in RAID level 5. However, in such RAID level 3, RAID level 4, and RAID level 5 configurations, performance is degraded due to the overhead of calculating and storing parity information in addition to the disk data.

RAID 시스템은 크게 호스트 시스템, RAID 제어기 및 디스크 드라이브들로 구성되어 있다. RAID 제어기는 호스트 시스템과 디스크 드라이브 중간에 위치하여 호스트 시스템에서 요구하는 데이터 입출력을 디스크 드라이브로 처리한다. 일반적으로 RAID 제어기는 호스트 시스템의 입출력 요구에 대하여 신속하게 응답하기 위하여 RAID 제어기의 프로그램 데이터를 저장하기 위한 지역메모리의 일부 영역이나 입출력 버스에 장착된 별도의 메모리 영역을 디스크 데이터의 캐쉬로 사용한다. 그리고, RAID 레벨 3, RAID 레벨 4 및 RAID 레벨 5의 경우에는 상기한 것처럼 신뢰성을 보장하기 위하여 패리티 정보를 디스크에 저장하는데 이를 위해 XOR 연산을 수행하는 장치를 사용한다.RAID system is largely composed of host system, RAID controller and disk drives. The RAID controller is located between the host system and the disk drive to process data input / output required by the host system as a disk drive. In general, a RAID controller uses a portion of a local memory for storing program data of a RAID controller or a separate memory area mounted on an input / output bus to cache disk data in order to respond quickly to an input / output request of a host system. In the case of the RAID level 3, the RAID level 4, and the RAID level 5, the parity information is stored on the disk in order to guarantee the reliability as described above. An apparatus for performing the XOR operation is used for this purpose.

한편, RAID 레벨 5 구성의 시스템은 호스트 시스템의 쓰기와 읽기 요구에 대해서 다음과 같은 단계를 수행한다. 호스트 시스템에서 쓰기 동작을 요구할 경우에 RAID 제어기는 디스크 드라이브에 저장될 데이터들을 호스트 시스템으로부터 받아 이 데이터들을 지정된 수의 단위 데이터 블록들로 분할하여, 분할된 데이터들을 디스크 캐쉬에 저장하는 과정을 수행한다. 만일 디스크 데이터 캐쉬에 해당 주소의 데이터 블록들이 속하는 스트라입(stripe)이 존재하면, 데이터 블록들을 갱신하고 패리티 데이터를 다시 계산하여 해당 스트라입에 대한 패리티 캐쉬의 데이터도 갱신한다.Meanwhile, a RAID level 5 system performs the following steps for write and read requests of the host system. When the host system requires a write operation, the RAID controller receives data to be stored in the disk drive from the host system, divides the data into a predetermined number of unit data blocks, and stores the divided data in the disk cache. . If there is a stripe to which the data blocks of the address belong to the disk data cache, the data blocks are updated and the parity cache data for the stripe is updated by recalculating the parity data.

만일 해당 블록이 속하는 스트라입이 존재하지 않으면, 디스크로부터 해당 스트라입을 구성하는 모든 데이터 블록들과 패리티 블록을 읽어 디스크 캐쉬에 저장한 후에 해당 데이터 블록들을 갱신하고 패리티 데이터를 계산하여 패리티 캐쉬의 해당 패리티 데이터를 갱신한다. 호스트 시스템에서 읽기 동작을 요구할 경우에 RAID 제어기는 디스크 캐쉬를 검사하여 해당 주소의 데이터 블록이 존재하면 요구된 데이터 블록을 호스트 시스템으로 전송하고 존재하지 않으면 디스크 드라이브에서 해당 블록들이 속한 스트라입을 구성하는 모든 블록들을 읽어 디스크 캐쉬에 저장하고 해당 블록들을 호스트 시스템으로 전송한다.If the strip to which the block belongs does not exist, all data blocks and parity blocks constituting the strip are read from the disk, stored in the disk cache, updated with the corresponding data blocks, the parity data is calculated, and the corresponding parity of the parity cache. Update the data. If the host system requires a read operation, the RAID controller examines the disk cache and sends the requested data block to the host system if a block of data at that address exists, and if it does not exist, the disk drive configures all the strips to which it belongs. It reads the blocks, stores them in the disk cache, and sends them to the host system.

일반적으로 호스트 시스템으로부터의 쓰기 요구를 처리하기 위해서 새로운 데이터 블록과 그 데이터 블록들로부터 계산된 새로운 패리티 데이터 디스크 캐쉬에 저장하는 방법에는 두 가지가 있다. 하나는 전체 스트라입 쓰기(Full Stripe Write)이고 다른 하나는 부분 스트라입 쓰기(Partial Stripe Write)이다. 전체 스트라입 쓰기는 스트라입 전체에 대하여 쓰기가 일어나는 경우인데, 이 때에는 스트라입 전체를 디스크 캐쉬에 쓰기 때문에 각 스트라입 유닛들을 모두 XOR하여 새로운 패리티 데이터를 계산한다.In general, there are two ways to store a new data block and a new parity data disk cache computed from the data blocks to handle write requests from the host system. One is a full stripe write and the other is a partial stripe write. The entire stripe write is a case where the entire stripe write occurs. In this case, the entire stripe is written to the disk cache, so that each stripe unit is XORed to calculate new parity data.

부분 스트라입 쓰기는 스트라입의 일부 데이터 블록들에 대해서만 쓰기를 하는 경우인데, 이 때에는 변경되는 데이터 블록들에 대해서만 읽기-갱신-쓰기(Read-Modify-Write)동작을 수행하여 새로운 패리티 데이터를 계산한다. 읽기-갱신-쓰기 동작은 쓰기 동작이 수행되는 블록의 이전 데이터와 해당 블록이 속한 스트라입의 해당 블록에 대한 이전 패리티 데이터와 새로운 데이터를 읽어서(읽기), 세 데이터 블록을 XOR하여 새로운 패리티 데이터를 계산(갱신)하고, 이를 다시 패리티 캐쉬 영역에 쓰는(쓰기) 과정을 말하는 것이다. 이는 세번의 읽기와 한번의 갱신 한번의 쓰기 동작이 요구된다.Partial stripe write is a case of writing only some data blocks of the stripe. In this case, new parity data is calculated by performing a read-modify-write operation on only data blocks that are changed. do. The read-update-write operation reads (reads) the old data of the block in which the write operation is performed, the old parity data and the new data of the corresponding block of the strip to which the block belongs, and reads the new data of the parity data by XORing the three data blocks. The process of calculating (update) and writing it back to the parity cache area. This requires three reads, one update, and one write operation.

그러나, 이러한 기존의 일반적인 RAID 제어기들에 있어서는, 부분 스트라입쓰기만을 지원하거나 전체 스트라입 쓰기를 지원한다 하더라도 전체 스트라입 쓰기를 하는 과정 중에 패리티 연산을 수행하는 과정에서 스트라입 전체를 디스크 캐쉬 메모리 영역에 저장한 후 직접메모리접근(DMA) 제어기로 이 데이터들을 패리티 데이터 버퍼로 읽어 들여서 패리티 연산을 수행하였기 때문에 많은 직접메모리접근 동작들을 요구하게 된다는 단점을 가지고 있다.However, in the existing general RAID controllers, even if only partial write writes or full write writes are supported, the entire stripe writes the disk cache memory area during the parity operation during the entire write write process. Since the parity operation is performed by reading this data into the parity data buffer after storing it in the direct memory access (DMA) controller, it requires a lot of direct memory access operations.

또한, 부분 스트라입 쓰기의 경우에 있어서도 이전의 데이터와 패리티를 XOR 한 후에 새로운 데이터를 디스크 캐쉬에 쓰는 동작과 패리티 데이터 버퍼에 전송하는 동작이 별개로 동작하였는데, 이 과정 역시 많은 직접메모리접근 동작들을 요구하게 된다는 번거로움을 가지고 있다.In addition, in the case of partial write write, the operation of writing the new data to the disk cache and transferring the data to the parity data buffer after XORing the previous data and parity was performed separately. This process also includes many direct memory access operations. Hassle to ask.

이에, 대한민국 특허 등록 제10-0205072호 "디스크 어레이 제어기에서의 VRAM 기판 패리티 엔진"에서는 VRAM을 사용하여 패리티 연산시 메모리의 읽기-갱신-쓰기 동작이 중첩되도록 함으로서 패리티 연산 속도를 빠르게 하는 발명이 개발되어 있다. 그런데, 이처럼 부분 스트라입 쓰기에 대한 XOR 연산을 생각하여 전체 스트라입 쓰기를 하는 경우에 있어서도 불필요하게 읽기-갱신-쓰기 동작을 사용해야 하는 번거로움을 가지고 있다.Accordingly, Korean Patent Registration No. 10-0205072 "VRAM Substrate Parity Engine in Disk Array Controller" develops an invention that speeds up parity calculation by using VRAM to overlap read-update-write operations of memory during parity calculation. It is. However, it is cumbersome to use the read-update-write operation unnecessarily even when performing the entire stripe write considering the XOR operation on the partial stripe write.

따라서, 본 발명은 상기한 바와 같은 종래의 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 RAID 시스템에서 새로운 데이터 블록들의 쓰기에 수반되는 새로운 패리티 데이터 계산 과정에서 불필요한 데이터 전송을 없애기 위하여 전체 스트라입 쓰기와 부분 스트라입 쓰기 각각에 최적화된 패리티 연산 제어기를 제공하는 데 있다.Accordingly, the present invention has been made to solve the conventional problems as described above, and an object of the present invention is to eliminate unnecessary data transfer in the process of calculating new parity data associated with the writing of new data blocks in a RAID system. An object of the present invention is to provide a parity operation controller optimized for write and partial write writes.

도 1은 본 발명에 따른 RAID 제어기를 포함한 RAID 시스템의 개략적인 제어블럭도이며,1 is a schematic control block diagram of a RAID system including a RAID controller according to the present invention,

도 2는 도 1의 RAID 제어기를 구성하는 메모리 제어부 및 패리티 연산 장치를 구체적으로 도시한 제어블럭도이고,FIG. 2 is a control block diagram specifically illustrating a memory controller and a parity calculating device configuring the RAID controller of FIG. 1;

도 3은 본 발명의 전체 스트라입 쓰기 제어모드에서의 전체 스트라입 쓰기 제어기의 동작에 따른 디스크 캐쉬의 상태를 나타낸 블럭도이며,3 is a block diagram showing the state of the disk cache according to the operation of the entire stripe write controller in the entire stripe write control mode of the present invention.

도 4는 본 발명의 부분 스트라입 쓰기 제어모드에서의 부분 스트라입 쓰기 제어기 동작에 따른 디스크 캐쉬의 상태를 도시한 블럭도이다.4 is a block diagram showing the state of the disk cache according to the partial write write controller operation in the partial write write control mode of the present invention.

♣ 도면의 주요 부분에 대한 부호의 설명 ♣♣ Explanation of symbols for the main parts of the drawing ♣

50 : 호스트시스템 100 : RAID 제어기50: host system 100: RAID controller

101 : 중앙처리장치 102 : 지역 메모리101: central processing unit 102: local memory

103 : 프로세스 버스 104 : 입출력 버스브릿지103: process bus 104: I / O bus bridge

105 : 입출력버스 106 : 호스트 인터페이스 제어기105: input and output bus 106: host interface controller

107 : 디스크 인터페이스 제어기 108 : 디스크 캐쉬메모리 제어기107: disk interface controller 108: disk cache memory controller

109 : 디스크 캐쉬메모리 200 : 입출력 버스 인터페이스109: disk cache memory 200: I / O bus interface

210 : 메모리 제어부 211 : 메모리 제어기210: memory controller 211: memory controller

220 : 패리티 연산장치 221 : 부분 스트라입 쓰기 모드 제어기220: parity calculator 221: partial stripe write mode controller

223 : 전체 스트라입 쓰기 모드 제어기223: whole stripe write mode controller

120, 130, 140, 150, 160 : 디스크 드라이브120, 130, 140, 150, 160: Disk Drive

상기와 같은 목적을 달성하기 위한 본 발명은, 호스트 시스템과 연결되며, 상기 호스트시스템과 함께 RAID 시스템을 구성하는 RAID 제어기에 있어서, 스트라입 쓰기 동작의 모드에 따라 각각의 스트라입 쓰기 모드에 대하여 독립적인 제어 구조를 취하는 패리티 연산 장치와, 상기 호스트 시스템으로부터의 명령을 제공받아 입출력버스를 경유하지 않고 상기 패리티 연산장치와 데이터를 전송을 수행하는 메모리 제어부를 포함하는 것을 특징으로 한다.The present invention for achieving the above object, in a RAID controller connected to a host system, and configuring a RAID system with the host system, independent of each write write mode according to the mode of the write write operation And a memory controller configured to receive a command from the host system and to transmit data with the parity calculator without receiving an input / output bus.

한편, 본 발명의 다른 분야에 따라, 상기 목적을 달성하기 위한 본 발명은, RAID 시스템을 구성하는 RAID 제어기의 전체 스트라입 쓰기 동작을 수행하기 위한 패리티 연산방법에 관한 것으로서, 디스크 캐쉬 메모리로 쓰여지는 전체 스트라입이 저장될 디스크 캐쉬에서 각 스트라입 유닛의 시작 주소와 크기 정보를 전체 스트라입 쓰기 모드 제어기에 기록하는 단계 (1)과; 상기 전체 스트라입 쓰기 모드 제어기를 통해 쓰기가 진행중인 데이터의 주소를 확인하여 해당 스트라입에 속하는 데이터 블록인지를 확인하는 단계 (2)와; 상기 데이터의 주소가 상기 해당 스트라입에 속하는 것으로 판단되는 경우, 상기 데이터에 해당하는 블록을 패리티 데이터 버퍼로 전송하는 단계 (3)과; 상기 데이터 버퍼로 전송된 데이터와 상기 패리티 데이터 버퍼에 존재하는 기존의 데이터에 대하여 XOR 연산을 수행하고 그 결과를 상기 패리티 데이터 버퍼에 다시 저장하는 단계 (4)와; 상기 해당 스트라입의 모든 스트라입 유닛들이 전송되었는지를 확인하는 단계 (5)와; 상기 확인단계에서 상기 해당 스트라입의 모든 스트라입 유닛들이 모두 전송된 것으로 확인되는 경우, 최종 결과를 직접 메모리 접근을 통해 상기 디스크 캐쉬 메모리의 패리티 캐쉬 영역으로 전송하는 단계 (6)를 포함하는 것을 특징으로 한다.On the other hand, according to another field of the present invention, the present invention for achieving the above object, relates to a parity calculation method for performing the entire write operation of the RAID controller constituting the RAID system, which is written to the disk cache memory Recording (1) the start address and size information of each stripe unit in the entire stripe write mode controller in the disk cache in which the entire stripe is to be stored; (2) checking the address of the data in progress through the entire stripe write mode controller to determine whether the data block belongs to the stripe; If it is determined that the address of the data belongs to the corresponding stripe, transmitting (3) a block corresponding to the data to a parity data buffer; (4) performing an XOR operation on the data transmitted to the data buffer and existing data existing in the parity data buffer and storing the result back in the parity data buffer; Checking (5) whether all strip units of the stripe have been transmitted; If it is confirmed in the checking step that all the strip units of the corresponding stripe have been transmitted, transmitting the final result to the parity cache region of the disk cache memory through direct memory access (6). It is done.

또한, 본 발명의 다른 분야에 따라, 상기 목적을 달성하기 위한 본 발명은 RAID 시스템을 구성하는 RAID 제어기의 부분 스트라입 쓰기 동작을 수행하기 위한 패리티 연산 방법에 관한 것으로서, 디스크 캐쉬 메모리로 쓰여지는 새로운 데이터 블록들이 저장될 디스크 캐쉬에서의 각 데이터 블록들의 시작 주소와 크기 정보를 부분 스트라입 쓰기 모드 제어기에 기록하는 단계 (Ⅰ)과; 상기 부분 스트라입 쓰기 모드 제어기에서 직접메모리접근으로 디스크 캐쉬로부터 이전 데이터를 패리티 데이터 버퍼에 전송하여 저장하는 단계 (Ⅱ)와; 이전 패리티 데이터를 직접메모리접근을 통해 상기 디스크 캐쉬 메모리의 패리티 캐쉬 영역으로부터 상기 패리티 데이터 버퍼에 전송하여 XOR 연산을 수행한 후 그 결과를 패리티 데이터 버퍼에 다시 저장하는 단계(Ⅲ)과; 중앙처리장치에 의해 새로운 데이터 블록의 쓰기를 수행시키는 단계(Ⅳ)와; 상기 부분 스트라입 모드 쓰기 제어기에서 현재 쓰기 진행 중인 새로운 데이터 블록이 상기 제어기에 저장된 시작 주소와 크기 정보인지를 확인하여 상기 패리티 데이터 버퍼에 전송하는 단계(Ⅴ)와; 상기 데이터 버퍼로 전송된 결과를 상기 패리티 데이터 버퍼에 저장되어 있는 중간 패리티 결과와 XOR 연산을 수행한 후 그 결과를 다시 상기 패리티 데이터 버퍼에 저장하는 단계 (Ⅵ)과; 쓰기가진행중인 모든 데이터 블록이 전송되었는지를 확인하는 단계 (Ⅶ)과; 상기 모든 데이터블록이 전송되었는지가 확인되면 계산된 최종 패리티 데이터 버퍼의 데이터를 직접메모리접근으로 상기 디스크 캐쉬 메모리의 패리티 캐쉬 영역으로 전송하는 단계 (Ⅷ)를 포함하는 것을 특징으로 한다.In addition, according to another aspect of the present invention, the present invention for achieving the above object relates to a parity calculation method for performing a partial write write operation of the RAID controller constituting a RAID system, a new write to the disk cache memory Writing (I), to the partial stripe write mode controller, the start address and size information of each data block in the disk cache in which the data blocks are to be stored; Transmitting (II) the old data from the disk cache to the parity data buffer by direct memory access in the partial write write mode controller; Transferring previous parity data from the parity cache region of the disk cache memory to the parity data buffer through direct memory access, performing an XOR operation, and storing the result back into the parity data buffer (III); Performing a write of a new data block by the central processing unit (IV); (V) checking, by the partial stripe mode write controller, whether a new data block currently being written is a start address and size information stored in the controller and transmitting to the parity data buffer; (VI) performing an XOR operation with an intermediate parity result stored in the parity data buffer and transmitting the result transferred to the data buffer to the parity data buffer; Confirming whether all data blocks in progress of writing have been transmitted (iii); And (i) transmitting the calculated data of the final parity data buffer to the parity cache area of the disk cache memory by direct memory access when it is confirmed that all the data blocks have been transmitted.

이하, 본 발명에 따른 RAID 제어기 및 패리티 연산 방법에 대한 바람직한 실시예를 첨부된 도면에 의거하여 상세하게 설명한다.Hereinafter, a preferred embodiment of a RAID controller and a parity calculation method according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명에 따른 RAID 제어기를 포함한 RAID 시스템의 개략적인 제어블럭도이다. 이 도면에 도시된 바와 같이, 본 발명의 RAID 시스템(10)은 호스트 시스템(50), RAID 제어기(100) 및 복수의 디스크드라이브(120,130,140,150,160)를 포함하여 구성된다. RAID 시스템(10)을 구성하는 호스트 시스템(50)은 광채널(Fiber Channel) 또는 SCSI(Small Computer System Interface) 버스 등과 같은 입출력 전용 채널(110)에 의해 RAID 제어기(100)에 연결된다. 호스트 시스템(50)에 연결된 RAID 제어기(100)는 중앙처리장치(101), 지역메모리(102), 입출력버스 브릿지(104), 호스트 인터페이스 제어기(106), 디스크 인터페이스 제어기(107), 디스크 캐쉬 메모리 제어기(108), 디스크 캐쉬 메모리(109)를 포함하여 구성된다. 또한, RAID 제어기(100)에는 각 구성요소인 중앙처리장치(101), 지역메모리(102), 입출력버스 브릿지(104)를 연결하는 프로세서 버스(103)와, 호스트 인터페이스 제어기(106), 디스크 인터페이스 제어기(107), 디스크 캐쉬 메모리 제어기(108)를 연결하는 PCI버스와 같은 표준 입출력 버스(105)가 마련되어 있다.1 is a schematic control block diagram of a RAID system including a RAID controller according to the present invention. As shown in this figure, the RAID system 10 of the present invention includes a host system 50, a RAID controller 100, and a plurality of disk drives 120, 130, 140, 150, and 160. The host system 50 constituting the RAID system 10 is connected to the RAID controller 100 by an input / output dedicated channel 110 such as a fiber channel or a small computer system interface (SCSI) bus. The RAID controller 100 connected to the host system 50 includes the CPU 101, the local memory 102, the I / O bus bridge 104, the host interface controller 106, the disk interface controller 107, and the disk cache memory. Controller 108, disk cache memory 109. In addition, the RAID controller 100 includes a processor bus 103 connecting the central processing unit 101, the local memory 102, and the input / output bus bridge 104, which are the respective components, the host interface controller 106, and the disk interface. A standard input / output bus 105, such as a PCI bus, for connecting the controller 107 and the disk cache memory controller 108 is provided.

RAID 제어기(100)를 구성하는 중앙처리장치(101)는 RAID 시스템(10)을 구성,관리 및 운용하는 프로그램을 수행하는 역할을 하며, 지역메모리(102)는 중앙처리장치(101)가 수행하는 프로그램과 데이터 및 임시변수 등을 저장할 수 있는 공간을 제공한다. 프로세서 버스(103)에 장착되어 있는 중앙처리장치(101) 및 지역메모리(102)는, 프로세스 버스(103)에 장착되어 있는 입출력버스 브릿지(104)를 통해 입출력 버스(105)와 연결된다. 이처럼, PCI 버스와 같은 표준 입출력 버스(105)를 사용함으로써 현재 상용화되어 있는 많은 PCI 장치들을 사용할 수 있는 잇점을 얻을 수 있다.The central processing unit 101 constituting the RAID controller 100 serves to execute a program for configuring, managing, and operating the RAID system 10, and the local memory 102 is executed by the central processing unit 101. Provides space to store program, data and temporary variables. The central processing unit 101 and the local memory 102 mounted on the processor bus 103 are connected to the input / output bus 105 via the input / output bus bridge 104 mounted on the process bus 103. As such, using a standard input / output bus 105, such as a PCI bus, can benefit from the use of many PCI devices currently commercially available.

한편, 입출력버스(105)에 장착된 호스트 인터페이스 제어기(106)는 호스트 시스템(50)으로부터의 디스크 입출력 요구를 전송 받는 역할을 수행한다. 전술한 바와 같이, 호스트 인터페이스 제어기(106)는 호스트 시스템(50)으로부터 광채널(Fiber Channel) 또는 SCSI 버스와 같은 입출력 전용 채널(110)을 통해 전송된 디스크 입출력 요구를 제공받아 RAID 제어기(100)의 중앙처리장치(101)에 인터럽트로 알려 준다. 중앙처리장치(101)는 전송된 디스크 입출력 요구를 해석하여 읽기, 쓰기 등 각 요구에 대하여 적절한 처리를 수행한다.Meanwhile, the host interface controller 106 mounted on the input / output bus 105 performs a role of receiving a disk input / output request from the host system 50. As described above, the host interface controller 106 receives a disk input / output request transmitted from the host system 50 through an input / output dedicated channel 110 such as a fiber channel or a SCSI bus, so that the RAID controller 100 receives The central processing unit 101 is notified of an interrupt. The central processing unit 101 interprets the transmitted disk I / O request and performs appropriate processing for each request such as read and write.

그리고, 디스크 캐쉬 메모리 제어기(108)는 메모리 제어부(210)와 패리티 연산장치(220)를 포함하여 구성되어, RAID 관리 기법에 의해 재구성된 디스크 데이터들을 디스크 캐쉬 메모리(109)에 임시로 저장하고, 다양한 RAID 레벨에서의 신속한 패리티 데이터 연산을 가능하게 한다. 이때, 패리티 연산장치(220)는 스트라입 쓰기 동작의 모드에 따라 각각의 스트라입 쓰기 모드(예컨대, 부분 스트라입 쓰기 모드 및 전체 스트라입 쓰기 모드)에 대하여 독립적인 제어 구조를 취하며 패리티데이터 연산을 수행한다. 메모리 제어부(210)는 호스트 시스템(50)으로부터 호스트 인터페이스 제어기(106)를 통해 제공받은 데이터를 전술한 패리티 연산장치(220)로 직접 전송하는 역할을 수행한다.The disk cache memory controller 108 may include a memory controller 210 and a parity calculator 220 to temporarily store disk data reconstructed by a RAID management technique in the disk cache memory 109. Enables fast parity data operations at various RAID levels. In this case, the parity calculator 220 takes an independent control structure for each write write mode (eg, a partial write write mode and an entire write write mode) according to the mode of the write write operation, and performs parity data operation. Do this. The memory controller 210 directly transmits data received from the host system 50 through the host interface controller 106 to the parity computing device 220 described above.

또한, 입출력버스(105)에 장착된 디스크 인터페이스 제어기(107)는 RAID 제어기(100)에 의해 구성된 데이터를 저장되는 디스크 드라이브(120,130,140,150, 160)로 입력 요구 및 출력 요구 데이터를 전송한다.In addition, the disk interface controller 107 mounted on the input / output bus 105 transmits the input request and output request data to the disk drives 120, 130, 140, 150, and 160 which store data configured by the RAID controller 100.

도 2는 도 1의 RAID 제어기를 구성하는 디스크 캐쉬 메모리 제어기(108)를 구체적으로 도시한 제어블럭도이다. 도 1 및 도 2에 도시된 바와 같이, 디스크 캐쉬 메모리 제어기(108)는 입출력버스(105)에 연결된 입출력 버스인터페이스(200), 패리티 연산장치(220), 메모리 제어부(210)를 가진다. 메모리 제어부(210)는 도 2에 도시된 바와 같이, 메모리 제어기(211), 쓰기 버퍼(213), 읽기 버퍼(215), 쓰기 데이터 MUX(Multiplex : 217)를 포함하여 구성된다. 패리티 연산장치(220)는 부분 스트라입 쓰기 모드 제어기(221), 전체 스트라입 쓰기 모드 제어기(223), 패리티 데이터 버퍼(225), XOR(Exclusive-OR : 227), XOR 데이터 MUX(229)를 포함하여 구성된다. 도 2에 대한 구체적인 설명은 설명의 편의상 도 3 및 도 4를 개략적으로 설명한 후 설명하기로 한다.FIG. 2 is a control block diagram specifically showing a disk cache memory controller 108 constituting the RAID controller of FIG. As shown in FIGS. 1 and 2, the disk cache memory controller 108 includes an input / output bus interface 200, a parity calculator 220, and a memory controller 210 connected to the input / output bus 105. As shown in FIG. 2, the memory controller 210 includes a memory controller 211, a write buffer 213, a read buffer 215, and a write data MUX (Multiplex: 217). The parity calculator 220 may perform a partial stripe write mode controller 221, a full stripe write mode controller 223, a parity data buffer 225, an XOR (Exclusive-OR: 227), and an XOR data MUX 229. It is configured to include. The detailed description of FIG. 2 will be described after schematically describing FIGS. 3 and 4 for convenience of description.

도 3은 본 발명의 전체 스트라입 쓰기 제어모드에서의 제어기 동작에 따른 디스크 캐쉬의 상태를 나타낸 블럭도이며, 도 4는 본 발명의 부분 스트라입 쓰기 제어모드에서의 제어기 동작에 따른 디스크 캐쉬의 상태를 도시한 블럭도이다. 이들 도면 중 우선, 도 3은 도 2의 디스크 캐쉬 메모리 제어기(108)의 전체 스트라입쓰기 모드 제어기(221)에 의해서 수행되는 전체 스트라입 쓰기 모드의 동작을 디스크 캐쉬 메모리(109)의 내용 변화를 통해 도시한 것이다. 그리고, 도 4는 도 2의 디스크 캐쉬 메모리 제어기(108)의 부분 스트라입 쓰기 모드 제어기(223)에 의해서 수행되는 부분 스트라입 쓰기 모드의 동작을 디스크 캐쉬 메모리의 내용 변화를 통해 도시한 것이다.3 is a block diagram showing a state of the disk cache according to the controller operation in the entire stripe write control mode of the present invention, Figure 4 is a state of the disk cache according to the controller operation in the partial stripe write control mode of the present invention. A block diagram is shown. Among these drawings, first of all, FIG. 3 illustrates changes in the contents of the disk cache memory 109 in the entire write mode of the write operation performed by the entire write write mode controller 221 of the disk cache memory controller 108 of FIG. It is shown through. 4 illustrates the operation of the partial stripe write mode performed by the partial stripe write mode controller 223 of the disk cache memory controller 108 of FIG. 2 through the contents of the disk cache memory.

이하에서는 도 2의 메모리 제어부(210) 및 패리티 연산 장치(220)의 동작을 도 3 및 도 4와 연관하여 좀 더 구체적으로 설명한다.Hereinafter, operations of the memory controller 210 and the parity calculator 220 of FIG. 2 will be described in more detail with reference to FIGS. 3 and 4.

우선, 도 3을 참조하여 전체 스트라입 모드 제어기(221)를 살펴본다.First, the overall stripe mode controller 221 will be described with reference to FIG. 3.

전체 스트라입 쓰기는 전술한 것과 마찬가지로 스트라입 전체를 디스크 캐쉬 메모리(109)에 쓰는 경우이다. 입출력버스 인터페이스(200)를 통해 들어오는 스트라입의 데이터 블록들은 메모리 제어기(211)에 의해 쓰기 버퍼(213)를 거쳐 디스크 캐쉬 메모리(109)에 쓰여지게 된다. 이 과정에서 입력되는 데이터 블록들은 쓰기 버퍼(213)로 전송되는 것과 동시에 XOR데이터 MUX(229)를 거쳐 XOR장치(227)의 입력으로 전달된다. 이 XOR장치(227)는 전체 스트라입 모드 제어기(223)로부터 패리티 데이터버퍼(225)로 제공된 데이터도 입력으로 받게 되는데, 이들 입력은 XOR장치(227)를 통해 연산되어 패리티 연산의 중간 결과로 패리티 데이터 버퍼(225)에 제공된다. 전체 스트라입 쓰기 과정이 모두 수행되면 패리티 데이터 버퍼(225)에는 최종 패리티 데이터 즉, 스트라입의 패리티 데이터가 저장된다.The entire stripe write is a case where the entire stripe is written to the disk cache memory 109 as described above. The data blocks of the stripe coming in through the I / O bus interface 200 are written to the disk cache memory 109 by the memory controller 211 through the write buffer 213. The data blocks input in this process are transferred to the write buffer 213 and transferred to the input of the XOR device 227 via the XOR data MUX 229. The XOR device 227 also receives as input the data provided to the parity data buffer 225 from the entire stripe mode controller 223. These inputs are computed through the XOR device 227 to produce parity as an intermediate result of the parity operation. Data buffer 225 is provided. When all write operations are performed, the parity data buffer 225 stores final parity data, that is, parity data of the stripe.

이러한 각 과정을 도 3을 참조하여 살펴보면 다음과 같다.Each of these processes will be described with reference to FIG. 3.

먼저, S301단계에서는 스트라입의 첫 번째 스트라입 유닛이 도착한 상태를나타낸다. 스트라입 유닛 D00이 디스크 캐쉬의 스트라입 0영역의 첫 번째 스트라입 유닛 위치에 쓰여짐과 동시에 S301단계를 거쳐 패리티 데이터 버퍼(225)에 쓰여진다. 두 번째 단계인 S302는 두 번째 스트라입 유닛이 도착한 상태를 나타내는 것으로, 두 번째 스트라입 유닛 D01은 디스크 캐쉬에 쓰여짐과 동시에 패리티 데이터 버퍼(225)로 전달되어, S301단계에서 이미 패리티 데이터 버퍼(225)에 담겨 있던 D00과 XOR 연산을 거친 후 그 연산 결과가 패리티 데이터 버퍼(225)에 저장된다.Firstly, in step S301, the first stripe unit of the stripe arrives. The stripe unit D00 is written to the first stripe unit position of the stripe 0 area of the disk cache and simultaneously written to the parity data buffer 225 in step S301. The second step S302 indicates the arrival of the second stripe unit. The second stripe unit D01 is written to the disk cache and transferred to the parity data buffer 225 at step S301. After the X00 operation with D00 contained in the), the operation result is stored in the parity data buffer 225.

다음, 세 번째 단계인 S303은 세 번째 스트라입 유닛 D02에 대한 내용이며, S304는 마지막 스트라입 유닛 D03이 디스크 캐쉬에 쓰여짐과 동시에 패리티 데이터 버퍼(225)에 전달되어 최종 패리티 데이터를 생성하는 단계가 나타난다. 이로써 스트라입의 모든 데이터 블록들이 디스크 캐쉬에 쓰여짐과 동시에 패리티 데이터를 다음 [식 1]을 통해 계산할 수 있는 것이다.Next, the third step S303 is the content of the third stripe unit D02, and S304 is a step in which the final stripe unit D03 is written to the disk cache and passed to the parity data buffer 225 to generate final parity data. appear. As a result, all data blocks of the stripe are written to the disk cache, and at the same time, parity data can be calculated using Equation 1 below.

P0 = (D00) xor (D01) xor (D02) xor (D03) [식 1]P0 = (D00) xor (D01) xor (D02) xor (D03) [Equation 1]

끝으로 전체 스트라입 쓰기 과정의 마지막 단계인 S305는 패리티 데이터 버퍼(225)에 있는 최종 패리티 데이터를 직접메모리접근(DMA)을 통해 패리티 캐쉬로 쓰는 과정을 나타낸다.Finally, S305, which is the last step of the entire stripe write process, indicates a process of writing the final parity data in the parity data buffer 225 to the parity cache through direct memory access (DMA).

한편, 전술한 바와 같은 각 과정들을 수행하기 위하여, 전체 스트라입 쓰기를 수행하기 전에 디스크 캐쉬 메모리(109)로 쓰여지는 각 스트라입 유닛의 시작 주소와 각 스트라입 유닛의 크기를 전체 스트라입 쓰기 모드 제어기(221)에 저장한다. 이때, 전체 스트라입 쓰기 모드 제어기(221)는 유닛의 시작 주소와 유닛의 크기를 저장하는 별도의 저장부가 마련될 수 있다. 전체 스트라입 쓰기 모드 제어기(221)는 이 정보를 사용하여 현재 디스크 캐쉬 메모리(109)에 쓰여지는 데이터가 전체 스트라입 쓰기 데이터 블록인지 아닌지를 식별하는 과정을 더 수행하게 된다.On the other hand, in order to perform the above-described processes, before starting the entire stripe write, the start address of each stripe unit written in the disk cache memory 109 and the size of each stripe unit are set in the entire stripe write mode. Stored in the controller 221. In this case, the entire stripe write mode controller 221 may be provided with a separate storage unit for storing the start address of the unit and the size of the unit. The entire stripe write mode controller 221 further uses this information to identify whether the data currently being written to the disk cache memory 109 is an entire stripe write data block.

다음에서는, 도 4를 참조하여 부분 스트라입 모드 제어기(221)를 통한 부분스트라입 쓰기 과정을 살펴본다. 도 4에 도시된 것처럼 부분 스트라입 쓰기 과정은, D00, D01, D02, D03, P0으로 구성된 스트라입에 대하여 새로운 D02에 쓰기가 발생한 예로 살펴본다.Next, a partial stripe writing process through the partial stripe mode controller 221 will be described with reference to FIG. 4. As shown in FIG. 4, the partial stripe write process will be described as an example in which a write occurs in a new D02 for a strip consisting of D00, D01, D02, D03, and P0.

우선, S401은 디스크 캐쉬와 패리티 캐쉬에 D02에 해당하는 스트라입이 이미 존재하는 상황을 나타내는 것으로, 스트라입이 이미 존재하는 D02 영역에 쓰기가 발생한다. 그러면 도 1의 중앙처리장치(101)는 바로 D02를 쓰지 못하며, 이에 따라 계속되는 수행단계인 S402단계와 S403단계를 거친 후 D02 쓰기 데이터를 데이터 캐쉬로 전송한다. S402단계에서는 현재 디스크 캐쉬의 D02영역에 존재하는 데이터(old D02)를 직접메모리접근(DMA)을 통해 패리티 데이터 버퍼(225)로 전송하는 과정이며, S403단계는 패리티 캐쉬의 이전 패리티 데이터 P0(old P0)을 패리티 데이터 버퍼(225)로 전송하여 old D02와 XOR 연산을 수행하는 단계를 나타낸다(즉, (old DO2) xor (old PO)). S403단계가 수행된 후에 중앙처리장치(101)는 새로운 D02(new DO2)를 디스크 캐쉬에 쓴다. 이러한 단계를 거친 후, S404단계는 (new D02)이 디스크 캐쉬에 쓰여지는 동시에 패리티 데이터 버퍼(225)로 전달되어 S403단계에서 계산된 결과에 XOR 연산이 수행된 결과 즉, 최종 패리티 데이터가 생성되는 상황을 다음의 [식 2]에 의해 나타낸다.First, S401 indicates a situation in which a strip corresponding to D02 already exists in the disk cache and the parity cache, and writes occur in the area D02 where the stripe already exists. Then, the central processing unit 101 of FIG. 1 does not immediately write D02. Accordingly, the central processing unit 101 transmits the D02 write data to the data cache after passing through the step S402 and the step S403. In step S402, data existing in the area D02 of the current disk cache (old D02) is transmitted to the parity data buffer 225 through direct memory access (DMA). In step S403, the previous parity data P0 (old) of the parity cache is transferred. P0) is transmitted to the parity data buffer 225 to perform an XOR operation with old D02 (ie, (old DO2) xor (old PO)). After the step S403 is performed, the central processing unit 101 writes a new D02 (new DO2) to the disk cache. After this step, in step S404, (new D02) is written to the disk cache and transferred to the parity data buffer 225, and the result of performing the XOR operation on the result calculated in step S403, that is, the final parity data is generated. The situation is shown by the following [Formula 2].

(new P0) = (old D02) xor (old P0) xor (new D02) [식 2](new P0) = (old D02) xor (old P0) xor (new D02) [Equation 2]

끝으로, S405는 직접메모리접근으로 새로운 패리티 데이터(new P0)가 패리티 캐쉬에 저장되는 단계를 나타낸다. 이 부분 스트라입 쓰기에서는 전체 스트라입 쓰기와는 달리 새로운 데이터(new D02)가 디스크 캐쉬로 쓰여질 때만 그 데이터를 패리티 데이터 버퍼(225)로 전달하면 되기 때문에, 부분 스트라입 쓰기 모드 제어기(221)는 old D02, old P0 두 번의 직접메모리접근 동작과 한번의 식별과정을 처리하면 된다. 물론 이때, 한 번의 식별과정을 위해 새로운 데이터의 시작 주소와 데이터 크기를 저장할 수 있는 저장부를 마련할 수 있으며 이 저장부에 데이터를 저장한다.Finally, S405 represents a step in which new parity data (new P0) is stored in the parity cache through direct memory access. In the partial stripe write, unlike the entire stripe write, the partial stripe write mode controller 221 only needs to transfer the data to the parity data buffer 225 when new data (new D02) is written to the disk cache. old D02, old P0 Two direct memory access operations and one identification process. Of course, at this time, a storage unit for storing the starting address and data size of the new data may be provided for one identification process, and the data is stored in the storage unit.

이상에서 설명한 바와 같이, 본 발명에 따른 RAID 제어기 및 패리티 연산제어방법에 의하면, RAID 시스템에서 새로운 데이터 블록들의 쓰기에 수반되는 새로운 패리티 데이터 계산 과정에서 불필요한 데이터 전송을 없애고 전체 스트라입 쓰기와 부분 스트라입 쓰기 각각에 최적화된 패리티 연산 제어기를 제공함으로써, 패리티 연산에 필요한 입출력 동작의 수를 최소화하여 RAID 시스템 전체의 성능 향상시킬 수 있다.As described above, according to the RAID controller and the parity operation control method according to the present invention, eliminating unnecessary data transfer in the process of calculating the new parity data accompanying the writing of new data blocks in the RAID system, and eliminates the entire stripe write and partial stripe. By providing a parity operation controller optimized for each write, the number of input / output operations required for parity operations can be minimized to improve the performance of the entire RAID system.

또한, 본 발명의 RAID 제어기 및 패리티 연산방법에 의하면, 스트라입 쓰기의 경우 스트라입 전체를 디스크 캐쉬 메모리에 쓰기 하는 과정에서 입출력 버스를통해 디스크 캐쉬 메모리 영역으로 전송되는 데이터를 패리티 연산 장치가 식별하여 데이터가 디스크 캐쉬 메모리에 저장됨과 동시에 XOR 연산 장치를 거쳐 패리티 데이터 버퍼로 저장되어 직접메모리접근을 통해 XOR 연산을 별도로 수행할 필요가 없게 된다.In addition, according to the RAID controller and the parity calculation method of the present invention, in the case of the write write, the parity calculation device identifies data transmitted to the disk cache memory area through the I / O bus in the process of writing the entire write to the disk cache memory. The data is stored in the disk cache memory and at the same time, it is stored as a parity data buffer through the XOR operation device, so that there is no need to perform XOR operation separately through direct memory access.

Claims (14)

삭제delete 삭제delete 호스트 시스템과 연결되며, 상기 호스트 시스템과 함께 RAID 시스템을 구성하는 RAID 제어기에 있어서,A RAID controller connected to a host system and configuring a RAID system with the host system, 스트라입 쓰기 동작의 모드에 따라 각각의 스트라입 쓰기 모드에 대하여 독립적인 제어 구조를 취하는 패리티 연산 장치와.A parity computing device that takes an independent control structure for each stripe write mode in accordance with the mode of the stripe write operation. 상기 호스트 시스템으로부터 데이터를 제공받아, 제공된 상기 데이터를 입출력 버스를 경유하지 않고 상기 패리티 연산 장치로 전송하는 메모리 제어부를 포함하며,A memory controller configured to receive data from the host system and transmit the provided data to the parity calculating device without passing through the input / output bus; 상기 메모리 제어부는 상기 입출력 버스에 연결되어 상기 호스트 시스템으로부터 데이터를 제공받는 메모리 제어기와, 상기 메모리 제어기와 연결되어 상기 호스트 시스템으로부터 제공되는 읽기 데이터를 저장하는 읽기 버퍼와, 상기 메모리 제어기와 연결되어 상기 호스트 시스템으로부터 제공되는 쓰기 데이터를 저장하는 쓰기 버퍼를 포함하며,The memory controller may be connected to the input / output bus to receive data from the host system, a read buffer connected to the memory controller to store read data provided from the host system, and connected to the memory controller. A write buffer for storing write data provided from the host system, 상기 패리티 연산 장치는 상기 메모리 제어부에 연결되어 새로운 패리티 데이터를 저장하는 방법인 전체 스트라입 쓰기를 제어하는 전체 스트라입 쓰기 모드 제어기와, 부분 스트라입 쓰기를 제어하는 부분 스트라입 쓰기 모드 제어기와, 상기 패리티 데이터를 저장하는 패리티 데이터 버퍼와, 상기 패리티 데이터를 연산하기 위한 XOR(Exclusive OR) 장치를 포함하며,The parity computing device may be connected to the memory control unit, and may include a full stripe write mode controller controlling total stripe write, which is a method of storing new parity data, a partial stripe write mode controller controlling partial stripe write, and A parity data buffer for storing parity data, and an exclusive OR (XOR) device for calculating the parity data, 상기 전체 스트라입 쓰기 모드 제어기는 상기 전체 스트라입에 대하여 쓰기가 발생할 때 각 스트라입 유닛이 디스크 캐쉬 메모리에 쓰여지는 동안 그 스트라입 유닛의 시작 주소와 크기 정보를 확인하여 상기 패리티 데이터 버퍼로의 전송 여부를 결정하며,The entire stripe write mode controller checks the start address and size information of the stripe unit and sends it to the parity data buffer while each stripe unit is written to the disk cache memory when a write is made to the entire stripe. Decide whether or not, 상기 부분 스트라입 쓰기 모드 제어기는 상기 스트라입의 일부 유닛에만 쓰기가 발생할 때, 상기 디스크 캐쉬 메모리에 쓰여질 새로운 데이터 블록들이 속한 스트라입 유닛들의 시작 주소와 크기 정보를 확인하여 상기 패리티 데이터 버퍼로의 전송 여부를 결정하는 것을 특징으로 하는 RAID 제어기.The partial stripe write mode controller checks the start address and size information of the stripe units to which the new data blocks to be written to the disk cache memory belong when the write occurs only to some units of the stripe, and transmits the information to the parity data buffer. RAID controller for determining whether or not. 제3항에 있어서, 상기 전체 스트라입 쓰기 모드 제어기는,The method of claim 3, wherein the entire stripe write mode controller, 상기 각 스트라입 유닛의 시작 주소와 크기 정보를 저장하는 저장부를 갖도록 구성되는 것을 특징으로 하는 RAID 제어기.And a storage unit which stores a start address and size information of each stripe unit. 삭제delete 제3항에 있어서, 상기 전체 스트라입 쓰기 모드 제어기는,The method of claim 3, wherein the entire stripe write mode controller, 상기 전체 스트라입에 대하여 쓰기가 진행되는 과정에서, 전송된 스트라입에 대하여 계산되며 상기 패리티 데이터 버퍼에 저장된 최종 패리티 데이터를 상기 디스크 캐쉬 메모리로 전송하는 직접메모리접근 기능을 수행하는 것을 특징으로 하는 RAID 제어기.RAID is characterized by performing a direct memory access function for transferring the final parity data stored in the parity data buffer and calculated for the transmitted stripe in the process of writing to the entire stripe to the disk cache memory. Controller. 제3항에 있어서, 상기 부분 스트라입 쓰기 모드 제어기는,The method of claim 3, wherein the partial stripe write mode controller, 상기 스트라입의 일부 유닛에만 쓰기가 발생할 때, 상기 디스크 캐쉬 메모리에 쓰여질 새로운 데이터 블록들이 속한 스트라입 유닛들의 시작 주소와 크기 정보를 저장하는 저장부를 갖도록 구성되는 것을 특징으로 하는 RAID 제어기.And a storage unit for storing the start address and the size information of the stripe units to which new data blocks to be written to the disk cache memory belong when a write occurs to only a portion of the stripe unit. 제3항에 있어서, 상기 부분 스트라입 쓰기 모드 제어기는,The method of claim 3, wherein the partial stripe write mode controller, 상기 부분 스트라입에 대하여 쓰기가 진행되는 과정에서, 이전 데이터와 이전 패리티를 상기 디스크 캐쉬 메모리로부터 패리티 데이터 버퍼로 전송하는 직접메모리접근 기능과, 계산된 최종 패리티 데이터를 상기 디스크 캐쉬 메모리로 전송하는 직접메모리접근 기능을 수행하는 것을 특징으로 하는 RAID 제어기.In the process of writing to the partial stripe, a direct memory access function for transferring previous data and previous parity from the disk cache memory to the parity data buffer, and a direct transfer of the calculated final parity data to the disk cache memory. RAID controller characterized in that performs a memory access function. 삭제delete 제3항에 있어서, 상기 패리티 데이터 버퍼는The method of claim 3, wherein the parity data buffer is 상기 각 스트라입 유닛의 데이터 블록들의 패리티 연산 결과를 저장하는 것을 특징으로 하는 RAID 제어기.And a parity operation result of data blocks of each stripe unit. RAID 시스템을 구성하는 RAID 제어기의 전체 스트라입 쓰기 동작 수행을 위한 패리티 연산 방법에 있어서,In the parity calculation method for performing the entire write write operation of the RAID controller constituting the RAID system, 디스크 캐쉬 메모리로 쓰여지는 전체 스트라입이 저장될 디스크 캐쉬에서 각 스트라입 유닛의 시작 주소와 크기 정보를 전체 스트라입 쓰기 모드 제어기에 기록하는 단계 (1)과;Writing (1) the start address and size information of each stripe unit in the entire stripe write mode controller in the disk cache in which the entire stripe written to the disk cache memory will be stored; 상기 전체 스트라입 쓰기 모드 제어기를 통해 쓰기가 진행중인 데이터의 주소를 확인하여 해당 스트라입에 속하는 데이터 블록인지를 확인하는 단계 (2)와;(2) checking the address of the data in progress through the entire stripe write mode controller to determine whether the data block belongs to the stripe; 상기 데이터의 주소가 상기 해당 스트라입에 속하는 것으로 판단되는 경우, 상기 데이터에 해당하는 블록을 패리티 데이터 버퍼로 전송하는 단계 (3)과;If it is determined that the address of the data belongs to the corresponding stripe, transmitting (3) a block corresponding to the data to a parity data buffer; 상기 데이터 버퍼로 전송된 데이터와 상기 패리티 데이터 버퍼에 존재하는 상기 데이터에 대하여 XOR 연산을 수행하고 그 결과를 상기 패리티 데이터 버퍼에 다시 저장하는 단계 (4)와;(4) performing an XOR operation on the data transmitted to the data buffer and the data present in the parity data buffer and storing the result back in the parity data buffer; 상기 해당 스트라입의 모든 스트라입 유닛들이 전송되었는지를 확인하는 단계 (5)와;Checking (5) whether all strip units of the stripe have been transmitted; 상기 단계(5)에서 상기 해당 스트라입의 모든 스트라입 유닛들이 모두 전송된 것으로 확인되는 경우, 최종 결과를 직접 메모리 접근을 통해 상기 디스크 캐쉬 메모리의 패리티 캐쉬 영역으로 전송하는 단계 (6)를 포함하는 것을 특징으로 하는 패리티 연산 방법.If it is confirmed in step (5) that all of the strip units of the corresponding strip have been transferred, transmitting (6) the final result to the parity cache region of the disk cache memory via direct memory access; Parity calculation method, characterized in that. 제11항에 있어서,The method of claim 11, 상기 단계(5)에서는 상기 모드 스트라입 유닛들이 전송될 때까지 상기 단계(3)과 단계 (4)를 반복 수행하는 것을 특징으로 하는 패리티 연산 방법.In the step (5), repeating the step (3) and step (4) until the mode stripe units are transmitted. RAID 시스템을 구성하는 RAID 제어기의 부분 스트라입 쓰기 동작 수행을 위한 패리티 연산 방법에 있어서,A parity calculation method for performing a partial write write operation of a RAID controller constituting a RAID system, 디스크 캐쉬 메모리로 쓰여지는 새로운 데이터 블록들이 저장될 디스크 캐쉬에서의 각 데이터 블록들의 시작 주소와 크기 정보를 부분 스트라입 쓰기 모드 제어기에 기록하는 단계 (Ⅰ)과;Writing (I), to the partial stripe write mode controller, the start address and size information of each data block in the disk cache in which new data blocks written to the disk cache memory are to be stored; 상기 부분 스트라입 쓰기 모드 제어기에서 직접메모리접근으로 디스크 캐쉬로부터 이전 데이터를 패리티 데이터 버퍼에 전송하여 저장하는 단계 (Ⅱ)와;Transmitting (II) the old data from the disk cache to the parity data buffer by direct memory access in the partial write write mode controller; 이전 패리티 데이터를 직접메모리접근을 통해 상기 디스크 캐쉬 메모리의 패리티 캐쉬 영역으로부터 상기 패리티 데이터 버퍼에 전송하여 XOR 연산을 수행한 후 그 결과를 패리티 데이터 버퍼에 다시 저장하는 단계(Ⅲ)과;Transferring previous parity data from the parity cache region of the disk cache memory to the parity data buffer through direct memory access, performing an XOR operation, and storing the result back into the parity data buffer (III); 중앙처리장치에 의해 새로운 데이터 블록의 쓰기를 수행시키는 단계(Ⅳ)와;Performing a write of a new data block by the central processing unit (IV); 상기 부분 스트라입 모드 쓰기 제어기에서 현재 쓰기 진행 중인 새로운 데이터 블록이 상기 제어기에 저장된 시작 주소와 크기 정보인지를 확인하여 상기 패리티 데이터 버퍼에 전송하는 단계(Ⅴ)와;(V) checking, by the partial stripe mode write controller, whether a new data block currently being written is a start address and size information stored in the controller and transmitting to the parity data buffer; 상기 데이터 패리티 버퍼로 전송된 결과를 상기 패리티 데이터 버퍼에 저장되어 있는 중간 패리티 결과와 XOR 연산을 수행한 후 그 결과를 다시 상기 패리티 데이터 버퍼에 저장하는 단계 (Ⅵ)과;(VI) performing an XOR operation with an intermediate parity result stored in the parity data buffer and storing the result in the parity data buffer after transmitting the result transmitted to the data parity buffer; 쓰기가 진행중인 모든 데이터 블록이 전송되었는지를 확인하는 단계 (Ⅶ)과;Confirming whether all data blocks in which writing is in progress have been transmitted; 상기 모든 데이터블록이 전송되었는지가 확인되면 계산된 최종 패리티 데이터 버퍼의 데이터를 직접메모리접근으로 상기 디스크 캐쉬 메모리의 패리티 캐쉬 영역으로 전송하는 단계 (Ⅷ)를 포함하는 것을 특징으로 하는 패리티 연산 방법.And (i) transferring the calculated data of the final parity data buffer to the parity cache region of the disk cache memory when direct data access is confirmed when all the data blocks have been transmitted. 제13항에 있어서,The method of claim 13, 상기 단계 (Ⅶ)은 쓰기가 진행중인 상기 데이터 블록이 모두 전송될 때까지 단계 (Ⅴ)와 단계 (Ⅵ)를 반복 수행하는 것을 특징으로 하는 패리티 연산 방법.And said step (iii) repeats steps (V) and (VI) until all of the data blocks in writing are transmitted.
KR10-2001-0081721A 2001-12-20 2001-12-20 RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device KR100423812B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0081721A KR100423812B1 (en) 2001-12-20 2001-12-20 RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0081721A KR100423812B1 (en) 2001-12-20 2001-12-20 RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device

Publications (2)

Publication Number Publication Date
KR20030051996A KR20030051996A (en) 2003-06-26
KR100423812B1 true KR100423812B1 (en) 2004-03-22

Family

ID=29576769

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0081721A KR100423812B1 (en) 2001-12-20 2001-12-20 RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device

Country Status (1)

Country Link
KR (1) KR100423812B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006171957A (en) 2004-12-14 2006-06-29 Fujitsu Ltd Storage controller unit and storage control method
US8914576B2 (en) 2012-07-30 2014-12-16 Hewlett-Packard Development Company, Lp. Buffer for RAID controller with disabled post write cache
US9311181B2 (en) 2012-11-15 2016-04-12 Samsung Electronics Co., Ltd. Memory controller changing partial data in memory device and method for changing partial data thereof

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970049540A (en) * 1995-12-20 1997-07-29 양승택 Parity Engine Architecture in RAID Controllers
JPH1091363A (en) * 1996-09-17 1998-04-10 Hitachi Ltd Parity generation system and disk array controller using the system
KR19980044001A (en) * 1996-12-05 1998-09-05 양승택 VRAM-based Parity Engine in Disk Array Controllers
KR19980047273A (en) * 1996-12-14 1998-09-15 양승택 How to Manage Cache on RAID Level 5 Systems
JPH10320128A (en) * 1997-05-21 1998-12-04 Oki Electric Ind Co Ltd Method for controlling disk array device
KR19990052573A (en) * 1997-12-22 1999-07-15 정선종 Fast Destage Method Using Parity Engine
US6101615A (en) * 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
KR20000056291A (en) * 1999-02-19 2000-09-15 윤종용 Parity cache of RAID system and a method for operating the parity cache
KR20010057762A (en) * 1999-12-23 2001-07-05 오길록 Raid system having distributed disk cache architecture

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970049540A (en) * 1995-12-20 1997-07-29 양승택 Parity Engine Architecture in RAID Controllers
JPH1091363A (en) * 1996-09-17 1998-04-10 Hitachi Ltd Parity generation system and disk array controller using the system
KR19980044001A (en) * 1996-12-05 1998-09-05 양승택 VRAM-based Parity Engine in Disk Array Controllers
KR19980047273A (en) * 1996-12-14 1998-09-15 양승택 How to Manage Cache on RAID Level 5 Systems
JPH10320128A (en) * 1997-05-21 1998-12-04 Oki Electric Ind Co Ltd Method for controlling disk array device
KR19990052573A (en) * 1997-12-22 1999-07-15 정선종 Fast Destage Method Using Parity Engine
US6101615A (en) * 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
KR20000056291A (en) * 1999-02-19 2000-09-15 윤종용 Parity cache of RAID system and a method for operating the parity cache
KR20010057762A (en) * 1999-12-23 2001-07-05 오길록 Raid system having distributed disk cache architecture

Also Published As

Publication number Publication date
KR20030051996A (en) 2003-06-26

Similar Documents

Publication Publication Date Title
US5720027A (en) Redundant disc computer having targeted data broadcast
US6009481A (en) Mass storage system using internal system-level mirroring
US5487160A (en) Concurrent image backup for disk storage system
US6108748A (en) System and method for on-line, real time, data migration
US7114012B2 (en) Computer system and method for migrating from one storage system to another
US5917723A (en) Method and apparatus for transferring data between two devices with reduced microprocessor overhead
JP3287203B2 (en) External storage controller and data transfer method between external storage controllers
US6098191A (en) Storage unit and storage unit subsystem
JPH1185408A (en) Storage control device
JPH05241870A (en) Memory controller and its method
EP1237087A2 (en) Memory device system and method for copying data in memory device system
JPH07104817B2 (en) Data record transfer method
EP0701208B1 (en) Disk array subsystem and data generation method therefor
JPH07281840A (en) Dual-disk recording device
US5574736A (en) Data storage device and method of operation
JPH11191037A (en) Data storage
JPH07200187A (en) Disk array device
KR100423812B1 (en) RAID Controller and Parity Operator Method having Disk Cash Memory Controller and Parity Operator Device
JPH0863394A (en) Storage device system and controlling mathod for storage device
US6249842B1 (en) Apparatus and method for processing data in a RAID system
JP3250859B2 (en) Disk array device, computer system and data storage device
JP4708669B2 (en) Path redundancy apparatus and method
JPH10312246A (en) Storage device subsystem
JPH1091363A (en) Parity generation system and disk array controller using the system
JP3515495B2 (en) Disk control device and control method thereof

Legal Events

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

Payment date: 20090303

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee