KR102631351B1 - 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 - Google Patents

피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 Download PDF

Info

Publication number
KR102631351B1
KR102631351B1 KR1020160129901A KR20160129901A KR102631351B1 KR 102631351 B1 KR102631351 B1 KR 102631351B1 KR 1020160129901 A KR1020160129901 A KR 1020160129901A KR 20160129901 A KR20160129901 A KR 20160129901A KR 102631351 B1 KR102631351 B1 KR 102631351B1
Authority
KR
South Korea
Prior art keywords
data
reconstruction
storage device
drive
command
Prior art date
Application number
KR1020160129901A
Other languages
English (en)
Other versions
KR20180038813A (ko
Inventor
박준범
심호준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020160129901A priority Critical patent/KR102631351B1/ko
Priority to DE102017120448.2A priority patent/DE102017120448A1/de
Priority to US15/698,902 priority patent/US10725871B2/en
Priority to CN201710873594.0A priority patent/CN107918525B/zh
Publication of KR20180038813A publication Critical patent/KR20180038813A/ko
Priority to US16/916,884 priority patent/US11163652B2/en
Application granted granted Critical
Publication of KR102631351B1 publication Critical patent/KR102631351B1/ko

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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

마스터 저장 장치는 상기 마스터 저장 장치에 포함된 서브미션 큐, 완료 큐, 및/또는 데이터 버퍼에 저장된 데이터를 이용하여, 명령을 스스로 생성하고, 상기 명령을 피어 저장 장치로 이슈할 수 있다. 상기 피어 저장 장치는 상기 명령에 대한 완료신호를 상기 마스터 저장 장치로 이슈할 수 있다. 상기 피어 저장 장치로부터 상기 완료신호를 수신한 상기 마스터 저장 장치는 상기 완료신호를 스스로 처리할 수 있다.

Description

피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템{STORAGE DEVICE CAPABLE OF PERFORMING PEER-TO-PEER COMMUNICATION AND DATA STORAGE SYSTEM INCLUDING THE SAME}
본 발명의 개념에 따른 실시 예는 피어-투-피어 통신을 수행할 수 있는 저장 장치에 관한 것으로, 특히 PCIe(peripheral component interconnect express) 장치들 사이에서 피어-투-피어 통신을 통해 피어-투-피어 분산 병렬(peer-to-peer distributed parallel) RAID (redundant array of independent/inexpensive disks) 재건 동작(rebuild operation) 또는 데이터 재건 동작을 수행하는 저장 장치와 이를 포함하는 데이터 저장 시스템에 관한 것이다.
컴퓨터 스토리지에서, RAID는 데이터 중복성(data redundancy) 및/또는 성능 향상의 목적으로 멀티플 물리적 디스크 드라이브 컴포넌트들(multiple physical disk drive components)을 하나의 논리 유닛(single logical unit)으로 결합하는 데이터 스토리지 시각화 기술 (data storage virtualization technology)이다.
데이터는 중복성과 성능의 요구에 따라 RAID 레벨들로 불리는 여러 가지 방식들 중에서 하나를 이용하여 물리적인 디스크 드라이브 컴포넌트들로 분산된다. 표준 RAID 레벨들은 RAID 0부터 RAID 6을 포함한다.
본 발명이 이루고자 하는 기술적인 과제는 마스터 장치와 슬레이브 장치 중에서 어느 하나로 사용될 수 있고 피어-투-피어 통신을 수행할 수 있는 드라이브를 제공하는 것이다.
본 발명이 이루고자 하는 기술적인 과제는 RAID 재건시에 호스트 시스템의 컴퓨팅 리소스(computing resource) 사용을 최소화하여 상기 호스트 시스템의 데이터 처리 성능을 향상시키기 위해 PCIe 장치들 사이에서 피어-투-피어 통신을 통해 피어-투-피어 분산 병렬 RAID 재건 동작을 수행하는 드라이브와 이를 포함하는 데이터 저장 시스템을 제공하는 것이다.
본 발명의 실시 예에 따라, 제2저장 장치와 피어-투-피어 통신을 할 수 있는 제1저장 장치는 제1동작 코드를 저장하는 제1서브미션 큐와, 제1지시 신호를 저장하는 제1완료 큐와, 상기 제1서브미션 큐에 저장된 상기 제1동작 코드를 리드하고, 상기 제1동작 코드에 기초하여 제2동작 코드를 포함하는 명령을 생성하고, 상기 명령을 상기 제2저장 장치로 이슈하고, 상기 제2저장 장치로부터 전송된 제2완료 신호를 수신하여 처리하는 제1컨트롤러를 포함한다.
본 발명의 실시 예에 따른 데이터 저장 시스템은 복수의 저장 장치들과, 상기 복수의 저장 장치들에 연결된 PCIe 스위치와, 상기 PCIe 스위치에 연결되고, 제1동작 코드와 상기 복수의 저장 장치들 각각에 포함된 컨트롤러 메모리 버퍼의 위치 정보를 포함하는 제1명령을 상기 복수의 저장 장치들 중에서 제1저장 장치로 출력하는 호스트 시스템을 포함한다.
본 발명의 실시 예에 따른 데이터 저장 시스템은 PCIe 스위치와, 상기 PCIe 스위치에 연결된 소스 저장 장치들과, 상기 PCIe 스위치에 연결된 재건 저장 장치를 포함하고, 상기 소스 저장 장치들은 상기 재건 저장 장치에 대한 데이터 재건 동작을 위해 상기 PCIe 스위치를 통해 데이터 재건을 위한 데이터를 피어-투-피어 통신한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 호스트 컨트롤러로부터 전송된 데이터 재건 명령을 PCIe 스위치를 통해 수신하고, 상기 데이터 재건 명령에 기초하여 데이터 재건 동작을 위해 상기 PCIe 스위치를 통해 소스 저장 장치와 재건 저장 장치와 통신하는 컨트롤러와, 상기 컨트롤러에 연결되고, 데이터 재건을 위한 제1데이터를 저장하는 메모리를 포함한다.
본 발명의 실시 예에 따라, 서브미션 큐, 완료 큐, 및/또는 데이터 버퍼를 포함하는 마스터 드라이브는 상기 서브미션 큐, 상기 완료 큐, 및/또는 상기 데이터 버퍼에 저장된 데이터를 이용하여 라이트 명령, 리드 명령, 또는 RAID 재건 명령을 스스로 생성하고, 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령을 피어 드라이브로 전송할 수 있는 효과가 있다.
상기 피어 드라이브는 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령에 대한 완료 인터럽트를 상기 마스터 드라이브로 전송하고, 상기 마스터 드라이브는 상기 완료 인터럽트를 스스로 처리할 수 있는 효과가 있다.
본 발명의 실시 예에 따라, 호스트 시스템과 데이터 저장 드라이브들을 포함하는 RAID 시스템은 상기 RAID 시스템을 재건할 때 상기 데이터 저장 드라이브들 사이에서 피어-투-피어 분산 병렬 RAID 재건 동작을 수행할 수 있는 효과가 있다. 따라서 상기 호스트 시스템의 컴퓨팅 성능이 저하되는 것을 방지하고 RAID 재건 시간을 감소시키는 효과가 있다.
본 발명의 실시 예에 따라, 호스트 시스템과 데이터 저장 드라이브들을 포함하는 RAID 시스템에서, 리드 데이터의 트래픽이 PCIe 스위치를 통해 상기 데이터 저장 드라이브들 사이에서 피어-투-피어로 이동하기 때문에 상기 호스트 시스템의 대역폭보다 큰 RAID 재건을 수행할 수 있는 효과가 있다.
도 1은 본 발명의 실시 예들에 따른 RAID 시스템의 개략적인 블록도이다.
도 2는 도 1에 도시된 각 드라이브 주도로 수행되는 본 발명의 실시 예들에 따른 RAID 재건 동작을 설명하는 개념도이다.
도 3은 도 1에 도시된 피어 드라이브들에 대한 제1드라이브의 리드 동작과 라이트 동작을 설명하는 개념도이다.
도 4는 도 1에 도시된 RAID 시스템의 구체적인 블록도이다.
도 5는 도 1에 도시된 RAID 시스템에서 포함된 드라이브들 사이에서 수행되는 피어-투-피어 분산 병렬 RAID 재건 동작을 설명하는 개념도이다.
도 6은 본 발명의 실시 예들에 따른 RAID 시스템의 개략적인 블록도이다.
도 7은 본 발명의 실시 예들에 따른 RAID 시스템의 개략적인 블록도이다.
도 8은 도 1에 도시된 RAID 시스템의 동작을 설명하는 플로우 차트이다.
도 9는 본 발명의 실시 예들에 따른 RAID 시스템의 라이트 동작을 설명하기 위한 블록도이다.
도 10은 본 발명의 실시 예들에 따른 RAID 시스템의 리드 동작을 설명하기 위한 블록도이다.
도 11은 마스터 장치 또는 슬레이브 장치로 사용될 수 있는 제1드라이브의 피어-투-피어 동작을 설명하기 위한 개념도이다.
본 발명의 실시 예에 따른 드라이브(drive)는 마스터 장치(master device)와 슬레이브 장치(slave device) 중에서 적어도 하나로 사용될 수 있다. 상기 마스터 장치는 명령(command)을 생성할 수 있는 장치를 의미하고, 상기 슬레이브 장치는 상기 명령을 실행할 수 있는 장치를 의미한다.
본 발명의 실시 예에 따른 각 드라이브는 적어도 하나의 서브미션 큐 엔트리 (submission queue entry)를 저장할 수 있는 서브미션 큐(또는 서브미션 큐 버퍼), 적어도 하나의 완료 큐 엔트리(completion queue entry)를 저장할 수 있는 완료 큐 (또는 완료 큐 버퍼), 및/또는 상기 서브미션 큐 엔트리와 상기 완료 큐 엔트리 중에서 적어도 하나에 관련된 데이터를 저장할 수 있는 데이터 버퍼를 포함할 수 있다.
실시 예들에 따라, 컨트롤러 메모리 버퍼는 서브미션 큐, 완료 큐, 서브미션 큐 헤드 도어벨 레지스터, 서브미션 큐 테일 도어벨 레지스터, 완료 큐 헤드 도어벨 레지스터, 완료 큐 테일 도어벨 레지스터, 각 위치 정보(예컨대, 각 어드레스)를 저장할 수 있는 저장 공간, 및 데이터 버퍼 중에서 적어도 두 개를 포함할 수 있다. 이때, 상기 컨트롤러 메모리 버퍼는 PCIe BAR(base address register)에 맵된 메모리 버퍼를 의미할 수 있다.
상기 각 위치 정보(또는 각 어드레스)는 상기 서브미션 큐, 상기 완료 큐, 상기 데이터 버퍼, 상기 서브미션 큐 헤드 도어벨 레지스터, 상기 서브미션 큐 테일 도어벨 레지스터, 상기 완료 큐 헤드 도어벨 레지스터, 또는 상기 완료 큐 테일 도어벨 레지스터를 지시하는 위치 정보(또는 어드레스)를 의미할 수 있다.
드라이브들 중에서 마스터 장치로서 사용되는 드라이브(이를 '마스터 드라이브' 또는 '마스터 저장 장치'라 한다.)는, 서브미션 큐, 완료 큐, 및/또는 데이터 버퍼에 저장된 데이터를 이용하여, 라이트 명령, 리드 명령, 또는 RAID 재건 명령을 스스로 생성하고, 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령을 상기 드라이브들 중에서 슬레이브 장치로서 사용되는 드라이브(이를 '슬레이브 드라이브', '피어(peer) 드라이브', 또는 '피어 저장 장치')로 이슈 (issue) 또는 출력할 수 있다.
피어 드라이브는 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령(또는 데이터 재건 명령)에 대한 완료 인터럽트(completion interrupt) 또는 완료 신호를 마스터 드라이브로 이슈할 수 있다. 예컨대, 상기 완료 인터럽트는 2016.06.05.자로 공개된 NVM Express Revision 1.2.1의 스펙 (specification)에 정의된 MSI-X 인터럽트를 의미할 수 있다. 상기 MSI-X 인터럽트는 핀-기반(pin-based) 또는 MSI 인터럽트라고 불릴 수 있다.
피어 드라이브로부터 완료 인터럽트를 수신한 마스터 드라이브는 상기 완료 인터럽트를 스스로 처리할 수 있다. 예컨대, 상기 마스터 드라이브는 상기 완료 인터럽트에 기초하여 상기 피어 드라이브의 완료 큐 헤드 도어벨 레지스터의 값을 새로운 값으로 업데이트할 수 있다.
예컨대, 도 1에 도시된 바와 같이, 호스트 시스템(110)이 마스터 장치로서 사용될 때, 제1드라이브(130-1)는 슬레이브 드라이브로서 사용될 수 있다. 또한 제1드라이브(130-1)는 각 드라이브(130-2, 130-3, 130-4, 또는 130-6)로 명령을 이슈할 수 있는 마스터 드라이브로서 사용될 수 있다.
또한, 도 6 또는 도 7에 도시된 바와 같이 제1드라이브(130-1)가 마스터 드라이브로서 사용될 때 제2드라이브(130-2)는 슬레이브 드라이브(또는 피어 드라이브)로서 사용될 수 있고, 제2드라이브(130-2)가 마스터 드라이브로서 사용될 때 제3드라이브(130-3)는 슬레이브 드라이브(또는 피어 드라이브)로서 사용될 수 있다.
즉, 제2드라이브(130-2)는 제1드라이브(130-1)로부터 이슈된 명령을 실행하는 피어 드라이브로서 사용될 수도 있고, 제3드라이브(130-3)로 이슈될 명령을 생성하는 마스터 드라이브로서 사용될 수 있다.
본 명세서에서 피어-투-피어(또는 드라이브-투-드라이브) 통신은 마스터 드라이브의 기능을 수행하는 드라이브와 슬레이브 드라이브의 기능을 수행하는 드라이브 사이의 통신을 의미할 수 있다. 따라서, 본 발명의 실시 예에 따른 드라이브들(130-1~130-6) 각각은, 종래의 드라이브와 달리, 본 명세서에서 설명될 피어-투-피어 통신을 할 수 있는 드라이브를 의미할 수 있다.
도 1은 본 발명의 실시 예들에 따른 RAID(redundant array of independent/inexpensive disks) 시스템의 개략적인 블록도이다. 도 1을 참조하면, RAID 시스템(또는 데이터 저장 시스템; 100A)은 호스트 시스템(110), PCIe 스위치(또는 버스; 120), 및 복수의 드라이브들(130-1~130-4, 및 130-6)을 포함할 수 있다. 예컨대, RAID 재건(RAID 복구, 또는 데이터 복구)을 위해, 결함 드라이브(또는 결합 저장 장치; 130-5)는 재건 드라이브(또는 소스 저장 장치; 130-6)로 대체된다. 재건 드라이브(130-6)는 대체된 드라이브(replaced drive)를 의미할 수 있다. 예컨대, 복수의 드라이브들(130-1~130-4, 및 130-6) 각각은 PCIe 스위치(120)의 마스터 장치로서 사용될 수 있다.
본 명세서에서 드라이브(drive)는 디스크(disc 또는 disk), 컴퓨터 데이터 스토리지(computer data storage), 스토리지, 데이터 저장 드라이브, 데이터 저장 장치, 또는 저장 장치를 의미할 수 있다.
RAID 시스템(100A)은 중요한 데이터를 저장하는 서버로서 사용될 수 있고, 데이터 센서 또는 인터넷 데이터 센터에서 데이터를 저장하기 위해 사용될 수 있다. 호스트 시스템(110)은 CPU(central processing unit), RAID 컨트롤러, 또는 서버를 의미할 수 있으나 이에 한정되는 것은 아니다. RAID 재건(RAID rebuild) 또는 데이터 재건은 RAID(또는 데이터 저장 시스템)를 구성하는 드라이브들(또는 저장 장치들) 중에서 어느 하나의 드라이브(또는 저장 장치)가 페일(fail) 될 때의 데이터 복원 과정(data reconstruction process)을 의미할 수 있다.
도 8은 도 1에 도시된 RAID 시스템의 동작을 설명하는 플로우 차트이다. 도 1과 도 8을 참조하면, 호스트 시스템(110)은 RAID 시스템(100A)을 구성하는 드라이브들(130-1~130-5) 중에서 드라이브(130-5)에서 결함이 발생했음을 검출한다 (S110).
호스트 시스템(110)은 도 9와 도 10에 도시된 바와 같이 호스트 소프트웨어 (112)와 루트 컴플렉스(root complex; 114)를 실행(또는 포함)할 수 있다. 예컨대, NVM Express (NVMe)는 호스트 소프트웨어(112)로 하여금 불휘발성 메모리 서브시스템과 통신을 허용하는 인터페이스이다. 호스트 소프트웨어(112)는 각 드라이브의 컨트롤러에 의해 지원되는 최대까지 큐들(queues)을 생성한다(create).
PCI Express(PCIe)에서, 루트 컴플렉스(114)는 하나 또는 그 이상의 스위치 장치들로 구성된 PCIe 스위치(또는 PCIe 스위치 패브릭(PCIe switch fabric); 120)에 프로세서와 메모리 서브시스템을 연결하는 장치를 의미할 수 있다. 상기 프로세서는 호스트 소프트웨어(112)를 실행할 수 있는 호스트 시스템(110)의 프로세서를 의미할 수 있고, 상기 메모리 서브시스템은 복수의 드라이브들(130-1~130-4, 및 130-6)을 포함하는 메모리 서브시스템을 의미할 수 있다. 예컨대, 루트 컴플렉스 (114)는 플랫폼 컨트롤 허브(platform control hub(PCH))를 의미할 수 있다.
결함 드라이브(130-5)가 재건 드라이브(130-6)로 물리적으로 대체된 후 (S120), 호스트 시스템(110)은 재건 드라이브(130-6)의 RAID 재건 명령을 PCIe 스위치(120)를 통해 각 드라이브(130-1~130-4)로 전송한다(S130). 각 드라이브(130-1~130-4)는 상기 RAID 재건 명령에 대한 응답(또는 완료 인터럽트)을 PCIe 스위치 (120)를 통해 호스트 시스템(110)으로 전송한다.
각 드라이브(130-1~130-4)는 재건 드라이브(130-6)에 대한 RAID(또는 데이터) 재건 동작을 호스트 시스템(110)의 개입 없이 스스로 진행(또는 수행)한다 (S140). 도 6과 도 7에 도시된 바와 같이, 호스트 시스템(110)은 RAID 재건 동작의 시작을 트리거 (trigger)하는 RAID(또는 데이터) 재건 명령(CMD0 또는 CMDa)만을 드라이브들(130-1~130-4) 중에서 어느 하나로 전송하고, 재건 데이터를 생성하기 위한 드라이브들(130-1~130-4) 사이의 피어-투-피어 통신은 호스트 시스템(110)의 개입 없이 드라이브들(130-1~130-4) 각각에 의해 스스로 주도적으로 수행된다.
종래에는 재건 드라이브(130-6)에 대한 RAID 재건 동작이 호스트 시스템 (110)의 호스트 소프트웨어(112)에서 수행되었으므로, 호스트 시스템(110)의 컴퓨팅 리소스(computing resource)가 많이 사용되어 상기 RAID 재건 동작시 호스트 시스템(110)의 데이터 처리 성능이 저하되었고 RAID 재건 시간이 길었다.
그러나 본 발명의 실시 예에 따른 RAID 시스템(100A)에서는 각 드라이브 (130-1~130-4)가 재건 드라이브(130-6)에 대한 RAID 재건 동작을 호스트 시스템 (110)의 개입 없이 스스로 주도적으로 진행한다(S140). 즉, 각 드라이브(130-1~130-4)에 의해서 재건된 각 재건 데이터(A5, B5, C5, 및 D5)는 PCIe 스위치(120)를 통해 재건 드라이브(130-6)로 전송되고 저장된다. 따라서 호스트 시스템(110)의 컴퓨팅 리소스의 사용이 최소화되므로, 호스트 시스템(110)의 데이터 처리 성능이 향상되고 RAID 재건 시간이 감소되는 효과가 있다.
재건 드라이브(130-6)에 대한 RAID 재건 동작이 완료될 때까지(S150의 NO), 각 드라이브(130-1~130-4)는 재건 드라이브(130-6)에 대한 RAID 재건 동작을 진행한다(S140). 상기 RAID 재건 동작이 완료되면(S150의 YES), 재건 드라이브(130-6)는 PCIe 스위치(120)를 통해 호스트 시스템(110)으로 RAID 재건 완료를 전송한다 (S160).
복수의 드라이브들(또는 복수의 저장 장치들; 130-1~130-4, 및 130-6) 중에서 RAID(또는 데이터) 재건 동작을 위한 소스 데이터를 저장하는 드라이브들(130-1~130-4)과, 재건된 데이터(A5, B5, C5, 및 D5)를 저장하는 재건 드라이브(또는 재건 저장 장치; 130-6)는 PCIe 스위치(120)에 연결된다. 드라이브들(130-1~130-4) 각각은 소스 드라이브(source drive) 또는 소스 저장 장치를 의미할 수 있다.
각 드라이브(130-1~130-4, 및 130-6)는 PCIe 장치, NVMe(NVM Express) 드라이브, NVMe SSD(solid state drive) 또는 하드디스크 드라이브(hard disk drive)일 수 있다. 소스 드라이브들(130-1~130-4)은 재건 드라이브(130-6)에 대한 RAID 재건 동작을 수행하기 위해 PCIe 스위치(120)를 통해 RAID 재건에 필요한 데이터(또는 소스 데이터)를 피어-투-피어 통신을 통해 주고받을 수 있다. 즉, 소스 드라이브들 (130-1~130-4) 각각은 호스트 시스템(110)의 개입 없이 본 명세서에서 설명될 피어-투-피어 통신을 스스로 수행할 수 있다.
RAID 재건 동작을 위해 호스트 시스템(110)은 PCIe 스위치(120)를 통해 각 RAID 재건 명령(CMDi, i는 1, 2, 3, 및 4)을 각 소스 드라이브(130-1~130-4)로 전송할 수 있다. RAID 재건 명령(CMDi)은 RAID 재건 동작의 실행을 지시하는 동작 코드(OPi), 재건 할당 정보(RAIi), 및 RAID 재건에 필요한 소스 드라이브들(130-1~130-4)의 개수(또는 상기 개수에 대한 정보; NUM)를 포함할 수 있다.
제1RAID 재건 명령(CMDi, i=1)에 포함된 제1재건 할당 정보(RAIi, i=1)는 제1드라이브(130-1)에 의해 재건될 데이터(또는 메모리 영역)를 할당(또는 선택)하는 정보이고, 제2RAID 재건 명령(CMDi, i=2)에 포함된 제2재건 할당 정보(RAIi, i=2)는 제2드라이브(130-2)에 의해 재건될 데이터(또는 메모리 영역)를 할당(또는 선택)하는 정보이고, 제3RAID 재건 명령(CMDi, i=3)에 포함된 제3재건 할당 정보 (RAIi, i=3)는 제3드라이브(130-3)에 의해 재건될 데이터(또는 메모리 영역)를 할당(또는 선택)하는 정보이고, 제4RAID 재건 명령(CMDi, i=4)에 포함된 제4재건 할당 정보(RAIi, i=4)는 제4드라이브(130-4)에 의해 재건될 데이터(또는 메모리 영역)를 할당(또는 선택)하는 정보이다.
실시 예에 따라, 각 재건 할당 정보(RAIi, i=1, 2, 3, 4, 또는 6)는 컨트롤러 메모리 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다. 예컨대, 각 재건 할당 정보(RAIi, i=1, 2, 3, 4, 또는 6)는 서브미션 큐, 완료 큐, 서브미션 큐 헤드 도어벨 레지스터, 서브미션 큐 테일 도어벨 레지스터, 완료 큐 헤드 도어벨 레지스터, 완료 큐 테일 도어벨 레지스터, 및/또는 데이터 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
도 1의 실시 예에서 RAID 재건에 필요한 소스 드라이브들로서의 기능을 수행하는 드라이브들(130-1~130-4)의 개수(NUM)는 4라고 가정한다. 따라서, 각 재건 할당 정보(RAI1~RAI4)는 각 드라이브(130-1~130-4)에서 4개로 분리된 메모리 영역들 중에서 어느 메모리 영역에 저장된 데이터를 재건해야 할지에 대한 정보를 포함한다.
예컨대, 제1재건 할당 정보(RAI1)는 각 드라이브(130-1~130-4)에서 4개로 분리된 메모리 영역들 중에서 제1메모리 영역에 저장된 데이터의 재건을 지시하고, 제2재건 할당 정보(RAI2)는 각 드라이브(130-1~130-4)에서 상기 4개로 분리된 메모리 영역들 중에서 제2메모리 영역에 저장된 데이터의 재건을 지시하고, 제3재건 할당 정보(RAI3)는 각 드라이브(130-1~130-4)에서 상기 4개로 분리된 메모리 영역들 중에서 제3메모리 영역에 저장된 데이터의 재건을 지시하고, 제4재건 할당 정보(RAI4)는 각 드라이브(130-1~130-4)에서 상기 4개로 분리된 메모리 영역들 중에서 제4메모리 영역에 저장된 데이터의 재건을 지시한다.
결함 드라이브(130-5)에 저장된 데이터(A5), 즉, 결함 드라이브(130-5)에서 4개로 분리된 메모리 영역들 중에서 제1메모리 영역에 저장된 데이터(A5)는 각 소스 드라이브(130-1~130-4)에서 4개로 분리된 메모리 영역들 중에서 제1메모리 영역에 저장된 각 데이터(A1, A2, A3, 및 A4)를 이용하여 재건(rebuild)될 수 있다고 가정한다.
또한, 결함 드라이브(130-5)의 제2메모리 영역에 저장된 데이터(B5)는 각 소스 드라이브(130-1~130-4)의 제2메모리 영역에 저장된 데이터(B1, B2, B3, 및 B4)를 이용하여 재건될 수 있고, 결함 드라이브(130-5)의 제3메모리 영역에 저장된 데이터(C5)는 각 소스 드라이브(130-1~130-4)의 제3메모리 영역에 저장된 데이터(C1, C2, C3, 및 C4)를 이용하여 재건될 수 있고, 결함 드라이브(130-5)의 제4메모리 영역에 저장된 데이터(D5)는 각 소스 드라이브(130-1~130-4)의 제4메모리 영역에 저장된 데이터(D1, D2, D3, 및 D4)를 이용하여 재건될 수 있다고 가정한다.
또한, 각 소스 드라이브(130-1~130-4)에 포함된 각 메모리(140-1~140-4)의 메모리 영역(145-1~145-4)의 크기 또는 각 메모리 영역(145-1~145-4)에 대응되는 논리 블록 어드레스들(logical block address(LBA))의 개수는 서로 동일하다고 가정한다.
제1소스 드라이브(130-1)는, 제1재건 할당 정보(RAI1)와 개수(NUM)에 기초하여, 제1소스 드라이브(130-1)에 의해 재건될 데이터가 결함 드라이브(130-5)의 제1 메모리 영역에 저장된 데이터(A5)임을 판단할 수 있다.
제2소스 드라이브(130-2)는, 제2재건 할당 정보(RAI2)와 개수(NUM)에 기초하여, 제2소스 드라이브(130-2)에 의해 재건될 데이터가 결함 드라이브(130-5)의 제2메모리 영역에 저장된 데이터(B5)임을 판단할 수 있다.
제3소스 드라이브(130-3)는, 제3재건 할당 정보(RAI3)와 개수(NUM)에 기초하여, 제3소스 드라이브(130-3)에 의해 재건될 데이터가 결함 드라이브(130-5)의 제3메모리 영역에 저장된 데이터(C5)임을 판단할 수 있다.
제4소스 드라이브(130-4)는, 제4재건 할당 정보(RAI4)와 개수(NUM)에 기초하여, 제4소스 드라이브(130-4)에 의해 재건될 데이터가 결함 드라이브(130-5)의 제4메모리 영역에 저장된 데이터(D5)임을 판단할 수 있다.
예컨대, 각 소스 드라이브(130-1~130-4)의 각 컨트롤러(135-1~135-4)는 각 메모리(140-1~140-4)의 각 메모리 영역(145-1~145-4) 또는 각 메모리 영역(145-1~145-4)에 대응되는 총 LBA들의 개수를 개수(NUM=4)로 나눈다.
제1컨트롤러(135-1)는 제1RAID 재건 명령(CMD1)에 기초하여 메모리 영역 (145-1) 또는 메모리 영역(145-1)에 대응되는 총 LBA들의 개수를 4로 나누고, 제2컨트롤러(135-2)는 제2RAID 재건 명령(CMD2)에 기초하여 메모리 영역(145-2) 또는 메모리 영역(145-2)에 대응되는 총 LBA들의 개수를 4로 나누고, 제3컨트롤러(135-3)는 제3RAID 재건 명령(CMD3)에 기초하여 메모리 영역(145-3) 또는 메모리 영역 (145-3)에 대응되는 총 LBA들의 개수를 4로 나누고, 제4컨트롤러(135-4)는 제4RAID 재건 명령(CMD4)에 기초하여 메모리 영역(145-4) 또는 메모리 영역(145-4)에 대응되는 총 LBA들의 개수를 4로 나눈다.
제1컨트롤러(135-1)는, 제1재건 할당 정보(RAI1)와 개수(NUM)에 기초하여, 각 메모리 영역(145-1, 145-2, 145-3, 및 145-4)의 제1메모리 영역에 저장된 데이터(A1, A2, A3, 및 A4)를 이용하여 재건 데이터(A5)를 재건해야 함을 판단한다.
제2컨트롤러(135-2)는, 제2재건 할당 정보(RAI2)와 개수(NUM)에 기초하여, 각 메모리 영역(145-1, 145-2, 145-3, 및 145-4)의 제2메모리 영역에 저장된 데이터(B1, B2, B3, 및 B4)를 이용하여 재건 데이터(B5)를 재건해야 함을 판단한다.
제3컨트롤러(135-3)는, 제3재건 할당 정보(RAI3)와 개수(NUM)에 기초하여, 각 메모리 영역(145-1, 145-2, 145-3, 및 145-4)의 제3메모리 영역에 저장된 데이터(C1, C2, C3, 및 C4)를 이용하여 재건 데이터(C5)를 재건해야 함을 판단한다.
제4컨트롤러(135-4)는, 제4재건 할당 정보(RAI4)와 개수(NUM)에 기초하여, 각 메모리 영역(145-1, 145-2, 145-3, 및 145-4)의 제4메모리 영역에 저장된 데이터(D1, D2, D3, 및 D4)를 이용하여 재건 데이터(D5)를 재건해야 함을 판단한다.
제1드라이브(130-1)는 제1컨트롤러(135-1), 제1서브미션 큐(submission queue; SQB1), 제1완료 큐(completion queue; CQB1), 제1데이터 버퍼(data buffer; DB1), 및 제1메모리(140-1)를 포함한다.
제1컨트롤러(135-1)는 제1서브미션 큐 헤드 도어벨 레지스터(submission queue Head Doorbell register; SH1), 제1서브미션 큐 테일 도어벨 레지스터 (submission queue Tail Doorbell register; ST1), 제1완료 큐 헤드 도어벨 레지스터(completion queue Head Doorbell register; CH1), 제1완료 큐 테일 도어벨 레지스터(completion queue Tail Doorbell register; CT1), 제1제어 로직 회로(136-1), 및 제1하드웨어 XOR 게이트 회로(137-1)를 포함할 수 있다. 도 1에는 제1하드웨어 XOR 게이트 회로(137-1)가 도시되어 있으나, 실시 예들에 따라 제1하드웨어 XOR 게이트 회로(137-1)는 제1제어 로직 회로(136-1)에서 실행되는 소프트웨어 XOR 게이트로 대체될 수 있다.
실시 예들에 따라 제1드라이브(130-1)에 포함된 제1컨트롤러 메모리 버퍼는 제1서브미션 큐(SQB1), 제1완료 큐(CQB1), 제1데이터 버퍼(DB1), 제1서브미션 큐 헤드 도어벨 레지스터(SH1), 제1서브미션 큐 테일 도어벨 레지스터(ST1), 제1완료 큐 헤드 도어벨 레지스터(CH1), 및 제1완료 큐 테일 도어벨 레지스터(CT1) 중에서 적어도 두 개를 포함하는 개념으로 이해될 수 있다.
제2드라이브(130-2)는 제2컨트롤러(135-2), 제2서브미션 큐(SQB2), 제2완료 큐(CQB2), 제2데이터 버퍼(DB2), 및 제2메모리(140-2)를 포함한다. 제2컨트롤러 (135-2)는 제2서브미션 큐 헤드 도어벨 레지스터(SH2), 제2서브미션 큐 테일 도어벨 레지스터(ST2), 제2완료 큐 헤드 도어벨 레지스터(CH2), 제2완료 큐 테일 도어벨 레지스터(CT2), 제2제어 로직 회로(136-2), 및 제2하드웨어 XOR 게이트 회로(137-2)를 포함할 수 있다. 도 1에는 제2하드웨어 XOR 게이트 회로(137-2)가 도시되어 있으나, 실시 예들에 따라 제2하드웨어 XOR 게이트 회로(137-2)는 제2제어 로직 회로(136-2)에서 실행되는 소프트웨어 XOR 게이트로 대체될 수 있다.
실시 예들에 따라 제2드라이브(130-2)에 포함된 제2컨트롤러 메모리 버퍼는 제2서브미션 큐(SQB2), 제2완료 큐(CQB2), 제2데이터 버퍼(DB2), 제2서브미션 큐 헤드 도어벨 레지스터(SH2), 제2서브미션 큐 테일 도어벨 레지스터(ST2), 제2완료 큐 헤드 도어벨 레지스터(CH2), 및 제2완료 큐 테일 도어벨 레지스터(CT2) 중에서 적어도 두 개를 포함하는 개념으로 이해될 수 있다.
제3드라이브(130-3)는 제3컨트롤러(135-3), 제3서브미션 큐(SQB3), 제3완료 큐(CQB3), 제3데이터 버퍼(DB3), 및 제3메모리(140-3)를 포함한다. 제3컨트롤러 (135-3)는 제3서브미션 큐 헤드 도어벨 레지스터(SH3), 제3서브미션 큐 테일 도어벨 레지스터(ST3), 제3완료 큐 헤드 도어벨 레지스터(CH3), 제3완료 큐 테일 도어벨 레지스터(CT3), 제3제어 로직 회로(136-3), 및 제3하드웨어 XOR 게이트 회로(137-3)를 포함할 수 있다. 도 1에는 제3하드웨어 XOR 게이트 회로(137-3)가 도시되어 있으나, 실시 예들에 따라 제3하드웨어 XOR 게이트 회로(137-3)는 제3제어 로직 회로(136-3)에서 실행되는 소프트웨어 XOR 게이트로 대체될 수 있다.
실시 예들에 따라 제3드라이브(130-3)에 포함된 제3컨트롤러 메모리 버퍼는 제3서브미션 큐(SQB3), 제3완료 큐(CQB3), 제3데이터 버퍼(DB3), 제3서브미션 큐 헤드 도어벨 레지스터(SH3), 제3서브미션 큐 테일 도어벨 레지스터(ST3), 제3완료 큐 헤드 도어벨 레지스터(CH3), 및 제3완료 큐 테일 도어벨 레지스터(CT3) 중에서 적어도 두 개를 포함하는 개념으로 이해될 수 있다.
각 드라이브(130-4, 130-5, 및 130-6)는 각 컨트롤러(135-4, 135-5, 및 135-6), 각 서브미션 큐(SQB4, SQB5, 및 SQB6), 각 완료 큐(CQB4, CQB5, 및 CQB6), 각 데이터 버퍼(DB4, DB5, 및 DB6), 및 각 메모리(140-4, 140-5, 및 140-6)를 포함한다. 각 컨트롤러(135-4, 135-5, 및 135-6)는 각 서브미션 큐 헤드 도어벨 레지스터 (SH4, SH5, 및 SH6), 각 서브미션 큐 테일 도어벨 레지스터(ST4, ST5, 및 ST6), 각 완료 큐 헤드 도어벨 레지스터(CH4, CH5, 및 CH6), 각 완료 큐 테일 도어벨 레지스터(CT4, CT5, 및 CT6), 각 제어 로직 회로(136-4, 136-5, 및 136-6), 및 각 하드웨어 XOR 게이트 회로(137-4, 137-5, 및 137-6)를 포함할 수 있다. 도 1에는 각 하드웨어 XOR 게이트 회로(137-4, 137-5, 및 137-6)가 도시되어 있으나, 실시 예들에 따라 각 하드웨어 XOR 게이트 회로(137-4, 137-5, 및 137-6)는 각 제어 로직 회로(136-4, 1365, 및 136-6)에서 실행되는 소프트웨어 XOR 게이트로 대체될 수 있다.
실시 예들에 따라 각 드라이브(130-4, 130-5, 및 130-6)에 포함된 각 컨트롤러 메모리 버퍼는 제1컨트롤러 메모리 버퍼와 동일 또는 유사한 구조를 갖는다.
즉, 각 드라이브(130-1~130-6)의 구조와 기능은 동일 또는 유사하고, 각 서브미션 큐(SQB1~SQB6)의 구조와 기능은 동일 또는 유사하고, 각 완료 큐 (CQB1~CQB6)의 구조와 기능은 동일 또는 유사하고, 각 데이터 버퍼(DB4, DB5, 및 DB6)의 구조와 기능은 동일 또는 유사하고, 각 서브미션 큐 헤드 도어벨 레지스터 (SH1~SH6)의 구조와 기능은 동일 또는 유사하고, 각 서브미션 큐 테일 도어벨 레지스터(ST1~ST6)의 구조와 기능은 동일 또는 유사하고, 각 완료 큐 헤드 도어벨 레지스터(CH1~CH6)의 구조와 기능은 동일 또는 유사하고, 각 완료 큐 테일 도어벨 레지스터(CT1~CT6)의 구조와 기능은 동일 또는 유사하고, 각 제어 로직 회로(136-1~136-6)의 구조와 기능은 동일 또는 유사하고, 각 하드웨어 XOR 게이트 회로(137-1~137-6)의 구조와 기능은 동일 또는 유사하다. 각 제어 로직 회로(136-1~136-6)는 프로세서, 마이크로프로세서, 또는 CPU를 의미할 수 있다.
각 메모리(140-1~140-6)는 불휘발성 메모리 장치, 예컨대 NAND 타입 플래시 메모리 장치로 구현될 수 있다. 상기 NAND 타입 플래시 메모리 장치는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있고, 상기 메모리 셀 어레이는 2차원 구조 또는 3차원 구조로 구현될 수 있다. 각 메모리(140-1~140-6)는 적어도 하나의 메모리 칩 또는 메모리 패키지를 포함할 수 있다.
각 서브미션 큐(SQB1~SQB6), 각 완료 큐(CQB1~CQB6), 및 각 데이터 버퍼 (DB4, DB5, 및 DB6)는 SRAM(static random access memory)으로 구현될 수 있으나 이에 한정되는 것은 아니다.
도 1을 다시 참조하면, 호스트 시스템(110)이 제1드라이브(130-1)의 마스터 장치로서 사용되고, 제1드라이브(130-1)가 각 드라이브(130-2, 130-3, 130-4, 및 130-6)의 마스터 장치로서 사용될 때 호스트 시스템(110)과 각 드라이브(130-1~130-4, 및 130-6)의 동작은 아래와 같다. 피어-투-피어 통신을 통해 전송되는 각 데이터(A2~A4)의 흐름은 도 2에 도시된 바와 같다.
호스트 시스템(110)은 제1드라이브(130-1)에서 실행될 제1RAID 재건 명령 (CMD1)을 생성한다. 제1RAID 재건 명령(CMD1)은 제1동작 코드(OP1), 제1재건 할당 정보(RAI1), 및 개수(NUM)를 포함한다.
호스트 시스템(110)은 제1서브미션 큐(SQB1)의 엔트리에 제1동작 코드(OP1)를 라이트(또는 저장)하고, 제1재건 할당 정보(RAI1)와 개수(NUM)를 제1데이터 버퍼(DB1)에 라이트(또는 저장)한다. 호스트 시스템(110)은 제1서브미션 큐 테일 도어벨 레지스터(ST1)의 값을 새로운 값으로 업데이트한다. 예컨대, 호스트 시스템 (110)은 제1서브미션 큐 테일 도어벨 레지스터(ST1)의 값을 0(zero)으로부터 1(one)로 업데이트(또는 변경)할 수 있다.
제1제어 로직 회로(136-1)는 제1서브미션 큐(SQB1)로부터 제1동작 코드 (OP1)를 리드하고, 제1데이터 버퍼(DB1)로부터 제1재건 할당 정보(RAI1)와 개수 (NUM)를 리드할 수 있다. 제1제어 로직 회로(136-1)는 제1서브미션 큐 헤드 도어벨 레지스터(SH1)의 값을 새로운 값으로 업데이트한다. 예컨대, 제1제어 로직 회로 (136-1)는 제1서브미션 큐 헤드 도어벨 레지스터(SH1)의 값을 0(zero)으로부터 1(one)로 업데이트할 수 있다.
제1제어 로직 회로(136-1)는 제1재건 할당 정보(RAI1)와 개수(NUM)에 기초하여 각 메모리 영역(145-1, 145-2, 145-3, 및 145-4)의 제1메모리 영역에 저장된 데이터(A1, A2, A3, 및 A4)를 이용하여 재건 데이터(A5)를 재건해야 함을 판단한다.
제1제어 로직 회로(136-1)는, 제1동작 코드(OP1)에 기초하여, 각 메모리 영역(145-1, 145-2, 145-3, 및 145-4)의 제1메모리 영역에 저장된 데이터(A1, A2, A3, 및 A4)를 리드하기 위한 각 리드 명령(예컨대, 도 3의 RCMD1~RCMD4)을 생성하고, 각 리드 명령(RCMD2~RCMD4)을 PCIe 스위치(120)를 통해 각 드라이브(130-2~130-4)로 전송한다. 각 데이터(A2, A3, 및 A4)의 리드 동작의 실행을 지시하는 각 동작 코드는 각 리드 명령(RCMD2, RCMD3, 및 RCMD4)에 포함된다고 가정한다.
제1제어 로직 회로(136-1)는 데이터(A2)의 리드를 지시하는 동작 코드를 제2서브미션 큐(SQB2)의 엔트리에 라이트하고, 제2서브미션 큐 테일 도어벨 레지스터 (ST2)의 값을 0으로부터 1로 업데이트한다.
제2제어 로직 회로(136-2)는 제2서브미션 큐(SQB2)로부터 데이터(A2)의 리드를 지시하는 동작 코드를 리드하고, 상기 동작 코드를 실행시킨다. 제2제어 로직 회로(136-2)는 제2서브미션 큐 헤드 도어벨 레지스터(SH2)의 값을 0으로부터 1로 업데이트한다. 제2제어 로직 회로(136-2)는 상기 동작 코드에 기초하여 데이터 (A2)를 리드하고, 데이터(A2)를 PCIe 스위치(120)를 통해 제1드라이브(130-1)로 전송한다. 제2제어 로직 회로(136-2)는 데이터(A2)에 대한 리드 동작의 성공을 지시하는 지시 신호(또는 지시 비트)를 제2완료 큐(CQB2)에 라이트한다.
제2제어 로직 회로(136-2)는 제2완료 큐 테일 도어벨 레지스터(CT2)의 값을 0으로부터 1로 변경한다. 그 후, 제2제어 로직 회로(136-2)는 완료 인터럽트(또는 완료신호)를 PCIe 스위치(120)를 통해 제1제어 로직 회로(136-1)로 이슈(또는 출력) 한다.
제1제어 로직 회로(136-1)는, 제2제어 로직 회로(136-2)로부터 이슈된 완료 인터럽트에 기초하여, 제2완료 큐(CQB2)에 라이트된 지시 신호를 리드하고, 제2완료 큐 헤드 도어벨 레지스터(CH2)의 값을 0으로부터 1로 변경한다.
제1제어 로직 회로(136-1)는 데이터(A3)의 리드를 지시하는 동작 코드를 제3서브미션 큐(SQB3)의 엔트리에 라이트하고, 제3서브미션 큐 테일 도어벨 레지스터 (ST3)의 값을 0으로부터 1로 업데이트한다.
제3제어 로직 회로(136-3)는 제3서브미션 큐(SQB3)로부터 데이터(A3)의 리드를 지시하는 동작 코드를 리드하고, 상기 동작 코드를 실행시킨다. 제3제어 로직 회로(136-3)는 제3서브미션 큐 헤드 도어벨 레지스터(SH3)의 값을 0으로부터 1로 업데이트한다. 제3제어 로직 회로(136-3)는 상기 동작 코드에 기초하여 데이터 (A3)를 리드하고, 데이터(A3)를 PCIe 스위치(120)를 통해 제1드라이브(130-1)로 전송한다. 제3제어 로직 회로(136-3)는 데이터(A3)에 대한 리드 동작의 성공을 지시하는 지시 신호를 제3완료 큐(CQB3)에 라이트한다.
제3제어 로직 회로(136-3)는 제3완료 큐 테일 도어벨 레지스터(CT3)의 값을 0으로부터 1로 변경한다. 그 후, 제3제어 로직 회로(136-3)는 완료 인터럽트를 PCIe 스위치(120)를 통해 제1제어 로직 회로(136-1)로 이슈한다.
제1제어 로직 회로(136-1)는, 제3제어 로직 회로(136-3)로부터 이슈된 완료 인터럽트에 기초하여, 제3완료 큐(CQB3)에 라이트된 지시 신호를 리드하고, 제3완료 큐 헤드 도어벨 레지스터(CH3)의 값을 0으로부터 1로 변경한다.
제1제어 로직 회로(136-1)는 데이터(A4)의 리드를 지시하는 동작 코드를 제4서브미션 큐(SQB4)의 엔트리에 라이트하고, 제4서브미션 큐 테일 도어벨 레지스터 (ST4)의 값을 0으로부터 1로 업데이트한다.
제4제어 로직 회로(136-4)는 제4서브미션 큐(SQB4)로부터 데이터(A4)의 리드를 지시하는 동작 코드를 리드하고, 상기 동작 코드를 실행시킨다. 제4제어 로직 회로(136-4)는 제4서브미션 큐 헤드 도어벨 레지스터(SH4)의 값을 0으로부터 1로 업데이트한다. 제4제어 로직 회로(136-4)는 상기 동작 코드에 기초하여 데이터 (A4)를 리드하고, 데이터(A4)를 PCIe 스위치(120)를 통해 제1드라이브(130-1)로 전송한다. 제4제어 로직 회로(136-4)는 데이터(A4)에 대한 리드 동작의 성공을 지시하는 지시 신호를 제4완료 큐(CQB4)에 라이트한다.
제4제어 로직 회로(136-4)는 제4완료 큐 테일 도어벨 레지스터(CT4)의 값을 0으로부터 1로 변경한다. 그 후, 제4제어 로직 회로(136-4)는 완료 인터럽트를 PCIe 스위치(120)를 통해 제1제어 로직 회로(136-1)로 이슈한다.
제1제어 로직 회로(136-1)는, 제4제어 로직 회로(136-4)로부터 이슈된 완료 인터럽트에 기초하여, 제4완료 큐(CQB4)에 라이트된 지시 신호를 리드하고, 제4완료 큐 헤드 도어벨 레지스터(CH4)의 값을 0으로부터 1로 변경한다.
제1제어 로직 회로(136-1)는 리드 명령(RCMD1)을 이용하여 데이터(A1)를 리드한다.
제1제어 로직 회로(136-1)는 각 데이터(A1, A2, A3, 및 A4)를 제1하드웨어 XOR 게이트 회로(137-1)로 전송한다. 제1하드웨어 XOR 게이트 회로(137-1)는 각 데이터(A1, A2, A3, 및 A4)를 이용하여 재건 데이터(A5)를 생성한다. 제1제어 로직 회로(136-1)는 라이트 명령(WCMD)과 재건 데이터(A5)를 PCIe 스위치(120)를 통해 재건 드라이브(130-6)로 전송할 수 있다.
예컨대, 제1제어 로직 회로(136-1)는 재건 데이터(A5)의 라이트를 지시하는 동작 코드를 제6서브미션 큐(SQB6)의 엔트리에 라이트하고, 제6서브미션 큐 테일 도어벨 레지스터(ST6)의 값을 0으로부터 1로 업데이트한다.
제6제어 로직 회로(136-6)는 제6서브미션 큐(SQB6)로부터 재건 데이터(A5)의 라이트를 지시하는 동작 코드를 리드하고, 상기 동작 코드를 실행시킨다. 제6제어 로직 회로(136-6)는 제6서브미션 큐 헤드 도어벨 레지스터(SH6)의 값을 0으로부터 1로 업데이트한다. 제6제어 로직 회로(136-6)는 상기 동작 코드에 기초하여 재건 데이터(A5)를 제1메모리 영역에 라이트하고, 재건 데이터(A5)의 라이트 동작의 성공을 지시하는 지시 신호를 제6완료 큐(CQB6)에 라이트한다.
제6제어 로직 회로(136-6)는 제6완료 큐 테일 도어벨 레지스터(CT6)의 값을 0으로부터 1로 변경한다. 그 후, 제6제어 로직 회로(136-6)는 완료 인터럽트를 PCIe 스위치(120)를 통해 제1제어 로직 회로(136-1)로 이슈한다.
제1제어 로직 회로(136-1)는, 제6제어 로직 회로(136-6)로부터 이슈된 완료 인터럽트에 기초하여, 제6완료 큐(CQB6)에 라이트된 지시 신호를 리드하고, 제6서브미션 큐 헤드 도어벨 레지스터(CH6)의 값을 0으로부터 1로 변경한다.
실시 예들에 따라, 제1제어 로직 회로(136-1)는 제어 로직 회로들(136-1~136-4, 및 136-6) 중에서 적어도 하나로부터 이슈된 완료 인터럽트에 기초하여, 재건 데이터(A5)의 생성의 성공 또는 재건 데이터(A5)의 라이트 완료의 성공을 지시하는 지시 신호를 제1완료 큐(CQB1)에 라이트한다.
제1제어 로직 회로(136-1)는 제1완료 큐 테일 도어벨 레지스터(CT1)의 값을 0으로부터 1로 변경한다. 그 후, 제1제어 로직 회로(136-1)는 완료 인터럽트를 PCIe 스위치(120)를 통해 호스트 시스템(110)으로 이슈한다.
호스트 시스템(110)은, 제1제어 로직 회로(136-1)로부터 이슈된 완료 인터럽트에 기초하여, 제1완료 큐(CQB1)에 라이트된 지시 신호를 리드하고, 제1완료 큐 헤드 도어벨 레지스터(CH1)의 값을 0으로부터 1로 변경한다.
상술한 바와 같이, 마스터 드라이브(130-1)는 제1서브미션 큐(SQB1), 제1완료 큐(CQB1), 및/또는 제1데이터 버퍼(DB1)에 저장된 데이터에 기초하여 리드 명령 (RCMD2, RCMD3, 또는 RCMD4), 또는 라이트 명령(WCMD)을 스스로 생성하고, 리드 명령(RCMD2, RCMD3, 또는 RCMD4), 또는 라이트 명령(WCMD)을 피어 드라이브(130-2, 130-3, 130-4, 또는 130-6)로 이슈 (또는 출력)할 수 있다.
피어 드라이브(130-2, 130-3, 130-4, 또는 130-6)는 마스터 드라이브(130-1)로부터 전송된 리드 명령(RCMD2, RCMD3, 또는 RCMD4), 또는 라이트 명령(WCMD)을 실행하고, 실행 결과에 해당하는 완료 인터럽트(예컨대, MSI-인터럽트)를 마스터 드라이브(130-1)로 전송할 수 있다.
마스터 드라이브(130-1)는 완료 인터럽트(예컨대, MSI-인터럽트)를 스스로 처리할 수 있다. 즉, 마스터 드라이브(130-1)는 피어 드라이브(130-2, 130-3, 130-4, 또는 130-6)의 완료 큐(CQB2, CQB3, CQB4, 또는 CQB6)에 저장된 지시 신호를 리드하고, 완료 큐 헤드 도어벨 레지스터(CH2, CH3, CH4, 또는 CH6)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트할 수 있다.
각 드라이브(130-2, 130-3, 및 130-4)에 의해 각 재건 데이터(B5, C5, 및 D5)가 재건(또는 생성)되는 과정은 제1드라이브(130-1)에 의해 재건 데이터(A5)가 재건(또는 생성)되는 과정과 동일 또는 유사하므로, 각 드라이브(130-2, 130-3, 및 130-4)에 의해 각 재건 데이터(B5, C5, 및 D5)가 재건(또는 생성)되는 과정에 대한 상세한 설명은 생략한다.
도 2는 도 1에 도시된 각 드라이브 주도로 수행되는 본 발명의 실시 예들에 따른 RAID 재건 동작을 설명하는 개념도이고, 도 3은 도 1에 도시된 피어 드라이브들에 대한 제1드라이브의 리드 동작과 라이트 동작을 설명하는 개념도이다.
도 1부터 도 3을 참조하면, 재건 데이터(A5)의 재건을 담당하는 제1드라이브 (130-1)의 제1컨트롤러(135-1)는 제1재건 명령(CMD1)에 기초하여 각 리드 명령 (RCMD1~RCMD4)을 생성하고, 각 리드 명령(RCMD2~RCMD4)을 PCIe 스위치(120)를 통해 각 드라이브(130-2~130-4)로 전송한다. 각 드라이브(130-2~130-4)는 각 리드 명령 (RCMD2~RCMD4)에 응답하여 각 메모리 영역(145-2, 145-3, 및 145-4)의 각 제1메모리 영역으로부터 각 데이터(A2, A3, 및 A4)를 리드하고, 각 데이터(A2, A3, 및 A4)를 PCIe 스위치(120)를 통해 제1드라이브(130-1)로 전송한다.
예컨대, 각 리드 명령(RCMD2~RCMD4)은 시작 LBA와 LBA의 개수를 포함할 수 있다.
또한, 제1컨트롤러(135-1)는 제1재건 명령(CMD1)에 기초하여 메모리 영역 (145-1)을 4개로 분할하고, 4개로 분할된 메모리 영역들 중에서 제1메모리 영역에 저장된 데이터(A1)를 리드한다.
제1컨트롤러(135-1)는 각 데이터(A1~A4)를 이용하여 재건 데이터(A5)를 생성하고, 라이트 명령(WCMD)과 재건 데이터(A5)를 PCIe 스위치(120)를 통해 재건 드라이브(130-6)로 전송한다. 재건 드라이브(130-6)는 라이트 명령(WCMD)에 기초하여 재건 데이터(A5)를 메모리 영역(145-6)의 제1메모리 영역에 라이트할 수 있다.
재건 데이터(B5)의 재건을 담당하는 제2드라이브(130-2)의 제2컨트롤러 (135-2)는 제2재건 명령(CMD2)에 기초하여 리드 명령들을 생성하고, 상기 리드 명령들 중에서 일부를 PCIe 스위치(120)를 통해 소스 드라이브들(130-1, 130-3, 및 130-4)로 전송한다. 각 소스 드라이브(130-1, 130-3, 및 130-4)는 상기 각 리드 명령에 응답하여 각 메모리 영역(145-1, 145-3, 및 145-4)의 각 제2메모리 영역으로부터 각 데이터(B1, B3, 및 B4)를 리드하고, 각 데이터 (B1, B3, 및 B4)를 PCIe 스위치(120)를 통해 제2드라이브(130-2)로 전송한다.
또한, 제2컨트롤러(135-2)는 제2재건 명령(CMD2)에 기초하여 메모리 영역 (145-2)을 4개로 분할하고, 4개로 분할된 메모리 영역들 중에서 제2메모리 영역에 저장된 데이터(B2)를 리드한다.
제2컨트롤러(135-2)는 각 데이터(B1, B2, B3, 및 B4)를 이용하여 재건 데이터(B5)를 생성하고, 라이트 명령과 재건 데이터(B5)를 PCIe 스위치(120)를 통해 재건 드라이브(130-6)로 전송한다. 재건 드라이브(130-6)는 상기 라이트 명령에 기초하여 재건 데이터(B5)를 메모리 영역(145-6)의 제2메모리 영역에 라이트할 수 있다.
재건 데이터(C5)의 재건을 담당하는 제3드라이브(130-3)의 제3컨트롤러 (135-3)는 제3재건 명령(CMD3)에 기초하여 리드 명령들을 생성하고, 상기 리드 명령들 중에서 일부를 PCIe 스위치(120)를 통해 각 소스 드라이브(130-1, 130-2, 및 130-4)로 전송한다. 각 소스 드라이브(130-1, 130-2, 및 130-4)는 상기 각 리드 명령에 응답하여 각 메모리 영역(145-1, 145-2, 및 145-4)의 각 제3메모리 영역으로부터 각 데이터(C1, C2, 및 C4)를 리드하고, 각 데이터 (C1, C3, 및 C4)를 PCIe 스위치(120)를 통해 제3드라이브(130-3)로 전송한다.
또한, 제3컨트롤러(135-3)는 제3재건 명령(CMD3)에 기초하여 메모리 영역 (145-3)을 4개로 분할하고, 4개로 분할된 메모리 영역들 중에서 제3메모리 영역에 저장된 데이터(C3)를 리드한다.
제3컨트롤러(135-3)는 각 데이터(C1, C2, C3, 및 C4)를 이용하여 재건 데이터(C5)를 생성하고, 라이트 명령과 재건 데이터(C5)를 PCIe 스위치(120)를 통해 재건 드라이브(130-6)로 전송한다. 재건 드라이브(130-6)는 상기 라이트 명령에 기초하여 재건 데이터(C5)를 메모리 영역(145-6)의 제3메모리 영역에 라이트할 수 있다.
재건 데이터(D5)의 재건을 담당하는 제4드라이브(130-4)의 제4컨트롤러 (135-4)는 제4재건 명령(CMD4)에 기초하여 리드 명령들을 생성하고, 상기 리드 명령들 중에서 일부를 PCIe 스위치(120)를 통해 각 소스 드라이브(130-1, 130-2, 및 130-3)로 전송한다. 각 소스 드라이브(130-1, 130-2, 및 130-3)는 상기 각 리드 명령에 응답하여 각 메모리 영역(145-1, 145-2, 및 145-3)의 각 제4메모리 영역으로부터 각 데이터(D1, D2, 및 D3)를 리드하고, 각 데이터 (D1, D2, 및 D3)를 PCIe 스위치(120)를 통해 제4드라이브(130-4)로 전송한다.
또한, 제4컨트롤러(135-4)는 제4재건 명령(CMD4)에 기초하여 메모리 영역 (145-4)을 4개로 분할하고, 4개로 분할된 메모리 영역들 중에서 제4메모리 영역에 저장된 데이터(D4)를 리드한다.
제4컨트롤러(135-4)는 각 데이터(D1, D2, D3, 및 D4)를 이용하여 재건 데이터(D5)를 생성하고, 라이트 명령과 재건 데이터(D5)를 PCIe 스위치(120)를 통해 재건 드라이브(130-6)로 전송한다. 재건 드라이브(130-6)는 상기 라이트 명령에 기초하여 재건 데이터(D5)를 메모리 영역(145-6)의 제4메모리 영역에 라이트할 수 있다.
도 1과 도 4에 도시된 바와 같이, 각 컨트롤러(135-1~135-4)는 하드웨어 XOR 게이트 회로(137-1, 137-2, 137-3, 및 137-4)를 포함할 수 있다. 제1하드웨어 XOR 게이트 회로(137-1)는 각 데이터(A1, A2, A3, 및 A4)를 XOR 연산하고, XOR 연산의 결과로서 재건 데이터(A5)를 생성할 수 있다. 제2하드웨어 XOR 게이트 회로(137-2)는 각 데이터(B1, B2, B3, 및 B4)를 XOR 연산하고, XOR 연산의 결과로서 재건 데이터(B5)를 생성할 수 있다. 제3하드웨어 XOR 게이트 회로(137-3)는 각 데이터(C1, C2, C3, 및 C4)를 XOR 연산하고, XOR 연산의 결과로서 재건 데이터(C5)를 생성할 수 있다. 제4하드웨어 XOR 게이트 회로(137-4)는 각 데이터(D1, D2, D3, 및 D4)를 XOR 연산하고 XOR 연산의 결과로서 재건 데이터(D5)를 생성할 수 있다.
도 4는 도 1에 도시된 RAID 시스템의 구체적인 블록도이고, 도 5는 도 1에 도시된 RAID 시스템에서 포함된 드라이브들 사이에서 수행되는 피어-투-피어 분산 병렬 RAID 재건 동작을 설명하는 개념도이다.
도 1부터 도 5를 참조하면, 데이터(Ai, i는 1, 2, 3, 4, 및 5)는 데이터 세트(Ai1~Aim)를 포함하고, 데이터(Bi)는 데이터 세트(Bi1~Bim)를 포함하고, 데이터 (Ci)는 데이터 세트(Ci1~Cim)를 포함하고, 데이터(Di)는 데이터 세트(Di1~Dim)를 포함한다고 가정한다.
예컨대, 제1드라이브(130-1)는 각 데이터(A11, A21, A31, 및 A41)를 이용하여 재건 데이터(A51)를 생성할 수 있고, 각 데이터(A1m, A2m, A3m, 및 A4m)를 이용하여 재건 데이터(A5m)를 생성할 수 있다.
제2드라이브(130-2)는 각 데이터(B11, B21, B31, 및 B41)를 이용하여 재건 데이터(B51)를 생성할 수 있고, 제3드라이브(130-3)는 각 데이터(C11, C21, C31, 및 C41)를 이용하여 재건 데이터(C51)를 생성할 수 있고, 제4드라이브(130-4)는 각 데이터(D11, D21, D31, 및 D41)를 이용하여 재건 데이터(D51)를 생성할 수 있다.
도 5를 참조하면, 제1드라이브(130-1)가 재건 데이터(A51)를 생성하거나 재건 드라이브(130-6)가 재건 데이터(A51)를 메모리 영역(145-6)에 라이트하는 동안, 제1드라이브(130-1)는 데이터(A12)를 메모리 영역(145-1)으로부터 리드하고 각 드라이브(130-2, 130-3, 및 130-4)는 각 데이터(A22, A32, 및 A42)를 각 메모리 영역(145-2, 145-3, 및 145-4)으로부터 리드할 수 있다.
제1드라이브(130-1)가 재건 데이터(A5m-1)를 생성하거나 재건 드라이브 (130-6)가 재건 데이터(A5m-1)를 메모리 영역(145-6)에 라이트하는 동안, 제1드라이브(130-1)는 데이터(A1m)를 메모리 영역(145-1)으로부터 리드하고 각 드라이브 (130-2, 130-3, 및 130-4)는 각 데이터(A2m, A3m, 및 A4m)를 각 메모리 영역(145-2, 145-3, 및 145-4)으로부터 리드할 수 있다.
또한, 제1드라이브(130-1)가 재건 데이터(A5m)를 생성하거나 재건 드라이브 (130-6)가 재건 데이터(A5m)를 메모리 영역(145-6)에 라이트하는 동안, 제1드라이브(130-1)는 데이터(B11)를 메모리 영역(145-1)으로부터 리드하고 각 드라이브 (130-2, 130-3, 및 130-4)는 각 데이터(B21, B31, 및 B41)를 각 메모리 영역(145-2, 145-3, 및 145-4)으로부터 리드할 수 있다.
즉, RAID 시스템(100A)은 드라이브들(130-1~130-4, 및 130-6) 사이에서 수행되는 피어-투-피어 분산 병렬 RAID 재건 동작을 수행할 수 있다.
도 6은 본 발명의 실시 예들에 따른 RAID 시스템의 개략적인 블록도이다. 도 6을 참조하면, RAID 시스템(100B)은 호스트 시스템(110), PCIe 스위치(또는 버스; 120), 및 복수의 드라이브들(130-1~130-4, 및 130-6)을 포함할 수 있다.
호스트 시스템(110)은 RAID 재건 동작을 위한 RAID 재건 명령(CMD0)을 PCIe 스위치(120)를 통해 복수의 드라이브들(130-1~130-4, 및 130-6) 중에서 어느 하나(예컨대, 도 6에서는 제1드라이브(130-1))로 전송할 수 있다.
도 6에서는 설명의 편의를 위해, RAID 재건 동작이 드라이버들(130-1~130-4) 사이에서 순차적으로 수행되는 실시 예가 도시되어 있으나, 상기 RAID 재건 동작의 실행 순서는 실시 예들에 따라 다양하게 변경될 수 있다.
제1드라이브(130-1)의 제1컨트롤러(135-1)는 RAID 재건 명령(CMD0)에 응답하여 제1명령(TCMD1)과 제1메모리(140-1)의 메모리 영역(145-1)에 저장된 모든 데이터(A1, B1, C1, 및 D1)를 PCIe 스위치(120)를 통해 제2드라이브(130-2)의 제2컨트롤러(135-2)로 전송한다. 예컨대, 제1명령(TCMD1)은 제2컨트롤러(135-2)에 의해 수행될 연산의 종류(예컨대, XOR 연산), 상기 연산의 대상들(예컨대, 연산 대상 데이터), 및 상기 연산의 결과가 전송될 목적지(예컨대, 목적지 드라이브)를 포함할 수 있다.
예컨대, RAID 재건 명령(CMD0)은 앞에서 설명한 바와 같이, 각 드라이브 (130-1, 130-2, 130-3, 130-4, 및 130-6)에 포함된 각 컨트롤러 메모리 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다. 예컨대, 제1명령(TCMD1)은 제2드라이브(130-2)에 포함된 컨트롤러 메모리 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
제2컨트롤러(135-2)는, 제1명령(TCMD1)에 응답하여, 제2메모리(140-2)의 메모리 영역(145-2)에 저장된 모든 데이터(A2, B2, C2, 및 D2)를 리드한다. 제2컨트롤러(135-2)의 제2하드웨어 XOR 게이트 회로(137-2)는 각 데이터(A1, B1, C1, 및 D1)와 각 데이터(A2, B2, C2, 및 D2)를 XOR 연산하고, 제1연산 데이터(RA1, RB1, RC1, 및 RD1)를 생성한다. 제2컨트롤러(135-2)는 제1명령(TCMD1)에 기초하여 제2명령(TCMD2)을 생성하고, 제2명령(TCMD2)과 제1연산 데이터(RA1, RB1, RC1, 및 RD1)를 PCIe 스위치(120)를 통해 제3드라이브(130-3)의 제3컨트롤러(135-3)로 전송한다. 제2명령(TCMD2)은 제3컨트롤러(135-3)에 의해 수행될 연산의 종류, 상기 연산의 대상들, 및 상기 연산의 결과가 전송될 목적지를 포함할 수 있다. 예컨대, 제2명령(TCMD2)은 제3드라이브(130-3)에 포함된 컨트롤러 메모리 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
제3컨트롤러(135-3)는, 제2명령(TCMD2)에 응답하여, 제3메모리(140-3)의 메모리 영역(145-3)에 저장된 모든 데이터(A3, B3, C3, 및 D3)를 리드한다. 제3컨트롤러(135-3)의 제3하드웨어 XOR 게이트 회로(137-3)는 각 데이터(RA1, RB1, RC1, 및 RD1)와 각 데이터(A3, B3, C3, 및 D3)를 XOR 연산하고, 제2연산 데이터(RA2, RB2, RC2, 및 RD2)를 생성한다. 제3컨트롤러(135-3)는 제2명령(TCMD2)에 기초하여 제3명령(TCMD3)을 생성하고, 제3명령(TCMD3)과 제2연산 데이터(RA2, RB2, RC2, 및 RD2)를 PCIe 스위치(120)를 통해 제4드라이브(130-4)의 제4컨트롤러(135-4)로 전송한다. 제3명령(TCMD3)은 제4컨트롤러(135-4)에 의해 수행될 연산의 종류, 상기 연산의 대상들, 및 상기 연산의 결과가 전송될 목적지를 포함할 수 있다. 예컨대, 제3명령(TCMD3)은 제4드라이브(130-3)에 포함된 컨트롤러 메모리 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
제4컨트롤러(135-4)는, 제3명령(TCMD3)에 응답하여, 제4메모리(140-4)의 메모리 영역(145-4)에 저장된 모든 데이터(A4, B4, C4, 및 D4)를 리드한다. 제4컨트롤러(135-4)의 제4하드웨어 XOR 게이트 회로(137-4)는 각 데이터(RA2, RB2, RC2, 및 RD2)와 각 데이터(A4, B4, C4, 및 D4)를 XOR 연산하고, 재건 데이터(A5, B5, C5, 및 D5)를 생성한다. 제4컨트롤러(135-4)는 제3명령(TCMD3)에 기초하여 제4명령 (TCMD4)을 생성하고, 제4명령(TCMD4)과 재건 데이터(A5, B5, C5, 및 D5)를 PCIe 스위치(120)를 통해 재건 드라이브(130-6)의 제6컨트롤러(135-6)로 전송한다. 제4명령(TCMD4)은 제6컨트롤러(135-6)에 의해 수행될 동작의 종류와 재건 데이터(A5, B5, C5, 및 D5)가 저장될 메모리 영역(145-6)에 대한 정보를 포함한다. 예컨대, 제4명령(TCMD4)은 재건 드라이브(130-6)에 포함된 컨트롤러 메모리 버퍼의 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
앞에서 설명한 바와 같이, 상기 메모리 버퍼의 위치 정보(예컨대, 어드레스)는 서브미션 큐, 완료 큐, 데이터 버퍼, 서브미션 큐 헤드 레지스터, 서브미션 큐 테일 레지스터, 완료 큐 헤드 레지스터, 및 완료 큐 테일 레지스터 중에서 적어도 두 개에 대한 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
제6컨트롤러(135-6)는, 제4명령(TCMD4)에 기초하여, 재건 데이터(A5, B5, C5, 및 D5)를 메모리 영역(145-6)에 라이트한다. 재건 데이터(A5, B5, C5, 및 D5)가 메모리 영역(145-6)에 라이트 완료되면, 제6컨트롤러(135-6)는 PCIe 스위치 (120)를 통해 RAID 재건 완료를 전송할 수 있다.
도 1부터 도 6을 참조하여 설명한 바와 같이, RAID 시스템(100A 또는 100B)을 구성하는 드라이브들(130-1~130-4) 중에서 어느 하나(예컨대, 마스터 드라이브)는 RAID 재건을 위해 나머지 드라이브들(예컨대, 피어 드라이브들; 130-2, 130-3, 및 130-4) 각각에 저장된 데이터의 일부 또는 전부를 리드하기 위한 리드 명령을 스스로 생성하고, 생성된 리드 명령을 나머지 드라이브들(예컨대, 피어 드라이브들; 130-2, 130-3, 및 130-4) 각각으로 전송할 수 있다.
RAID 시스템(100A 또는 100B)을 구성하는 드라이브들(130-1~130-4) 중에서 제1드라이브 (예컨대, 마스터 드라이브)는 RAID 재건을 위해 나머지 드라이브들(예컨대, 피어 드라이브들; 130-2, 130-3, 및 130-4) 중에서 제2드라이브로 데이터를 라이트하기 위한 라이트 명령을 스스로 생성하고, 생성된 라이트 명령을 상기 제2드라이브로 전송할 수 있다.
도 7은 본 발명의 실시 예들에 따른 RAID 시스템의 개략적인 블록도이다. 도 1을 참조하면, RAID 시스템(100C)은 호스트 시스템(110), PCIe 스위치(또는 버스; 120), 및 복수의 드라이브들(130-1~130-4, 및 130-6)을 포함할 수 있다.
호스트 시스템(110)은 RAID 재건 명령(CMDa)을 PCIe 스위치(120)를 통해 마스터 드라이브로서 사용(또는 결정)되는 제1드라이브(130-1)로 전송한다. 예컨대, RAID 재건 명령(CMDa)은 RAID 재건 동작을 지시하는 동작 코드(OP), 각 재건 할당 정보(RAI1~RAI4), 및 개수(NUM)를 포함할 수 있다. 상술한 바와 같이, 각 재건 할당 정보(RAI1~RAI4)는 각 드라이브(130-1~130-4, 및 130-6)에 포함된 각 컨트롤러 메모리 버퍼에 대한 위치 정보를 포함할 수 있다. 앞에서 설명한 바와 같이, 상기 메모리 버퍼의 위치 정보는 서브미션 큐, 완료 큐, 데이터 버퍼, 서브미션 큐 헤드 레지스터, 서브미션 큐 테일 레지스터, 완료 큐 헤드 레지스터, 및 완료 큐 테일 레지스터 중에서 적어도 2개에 대한 위치 정보(예컨대, 어드레스)를 포함할 수 있다.
예컨대, 호스트 시스템(110)은 피어-투-피어(또는 드라이브-투-드라이브) 통신을 위한 통신 채널을 생성하기 위한 선행 작업으로서 각 드라이브(130-1~130-4, 및 130-6)에 포함된 각 컨트롤러 메모리 버퍼에 대한 위치 정보를 마스터 드라이브로 전송할 수 있다.
상술한 바와 같이, 호스트 시스템(110)은 동작 코드(OP)를 제1서브미션 큐 (SQB1)의 엔트리에 라이트하고, 각 재건 할당 정보(RAI1~RAI4), 및 개수(NUM)를 제1데이터 버퍼(DB1)에 라이트하고, 제1서브미션 큐 테일 도어벨 레지스터(ST1)의 값을 0으로부터 1로 업데이트할 수 있다. 제1제어 로직 회로(136-1)는 제1서브미션 큐(SQB1)로부터 동작 코드(OP)를 리드하고, 제1데이터 버퍼(DB1)로부터 각 재건 할당 정보(RAI1~RAI4), 및 개수(NUM)를 리드하고, 제1서브미션 큐 헤드 도어벨 레지스터(SH1)의 값을 0으로부터 1로 업데이트한다.
제1제어 로직 회로(136-1)는, 동작 코드(OP), 각 재건 할당 정보 (RAI1~RAI4), 및 개수(NUM)에 기초하여, 도 1을 참조하여 설명된 바와 같은 각 RAID 재건 명령(CMD1~CMD4)과 동일(또는 유사한) 각 RAID 재건 명령(CMD1a, CMD2a, CMD3a, 및 CMD4a)을 생성할 수 있다. RAID 재건 명령(CMD1a)의 데이터 구조는 제1 RAID 재건 명령(CMD1)의 데이터 구조와 동일 또는 유사하고, RAID 재건 명령 (CMD2a)의 데이터 구조는 제2RAID 재건 명령(CMD2)의 데이터 구조와 동일 또는 유사하고, RAID 재건 명령(CMD3a)의 데이터 구조는 제3RAID 재건 명령(CMD3)의 데이터 구조와 동일 또는 유사하고, RAID 재건 명령(CMD4a)의 데이터 구조는 제4RAID 재건 명령(CMD4)의 데이터 구조와 동일 또는 유사하다고 가정한다.
즉, 도 7에 도시된 제1드라이브(130-1)는 도 1에 도시된 호스트 시스템(110)의 기능을 수행할 수 있다. 예컨대, 제1드라이브(130-1)는 각 드라이브(130-2, 130-3, 130-4, 및 130-6)의 마스터 장치로서 이용될 수 있다.
예컨대, 마스터 장치로서 기능을 수행하는 제1드라이브(130-1)는, 제1서브미션 큐(SQB1), 제1완료 큐(CQB1), 및/또는 제1데이터 버퍼(DB1)에 저장된 데이터를 이용하여, 라이트 명령, 리드 명령, 또는 RAID 재건 명령(CMD1a, CMD2a, CMD3a, 및 CMD4a)을 스스로 생성하고, 상기 라이트 명령, 상기 리드 명령, 또는 RAID 재건 명령(CMD2a, CMD3a, 및 CMD4a)을 각 피어 드라이브(130-2, 130-3, 130-4, 및 130-6)로 이슈할 수 있다.
각 피어 드라이브(130-2, 130-3, 130-4, 및 130-6)는 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령(CMD2a, CMD3a, 및 CMD4a)에 대한 완료 인터럽트를 제1드라이브(130-1)로 이슈할 수 있다. 각 피어 드라이브(130-2, 130-3, 130-4, 및 130-6)로부터 완료 인터럽트를 수신한 제1드라이브(130-1)는 상기 완료 인터럽트를 스스로 처리할 수 있다.
예컨대, 도 2와 도 3을 참조하여 설명한 바와 동일 또는 유사하게, 제1드라이브(130-1)는 각 피어 드라이브(130-2, 130-3, 및 130-4)와 피어-투-피어 통신을 통해 각 데이터(A2, A3, 및 A4)를 리드하고, 제1드라이브(130-1)에 저장된 데이터 (A1)와 각 피어 드라이브(130-2, 130-3, 및 130-4)로부터 리드된 각 데이터(A2, A3, 및 A4)를 이용하여 재건 데이터(A5)를 재건하고, 재건 데이터(A5)를 재건 드라이브(130-6)에 라이트할 수 있다.
도 2와 도 3을 참조하여 설명한 바와 동일 또는 유사하게, 제2드라이브(130-2)는 각 피어 드라이브(130-1, 130-3, 및 130-4)와 피어-투-피어 통신을 통해 각 데이터(B1, B3, 및 B4)를 리드하고, 제2드라이브(130-2)에 저장된 데이터(B2)와 각 피어 드라이브(130-1, 130-3, 및 130-4)로부터 리드된 각 데이터(B1, B3, 및 B4)를 이용하여 재건 데이터(B5)를 재건하고, 재건 데이터 (B5)를 재건 드라이브(130-6)에 라이트할 수 있다.
도 2와 도 3을 참조하여 설명한 바와 동일 또는 유사하게, 제3드라이브(130-3)는 각 피어 드라이브(130-1, 130-2, 및 130-4)와 피어-투-피어 통신을 통해 각 데이터(C1, C2, 및 C4)를 리드하고, 제3드라이브(130-3)에 저장된 데이터(C3)와 각 피어 드라이브(130-1, 130-2, 및 130-4)로부터 리드된 각 데이터(C1, C2, 및 C4)를 이용하여 재건 데이터(C5)를 재건하고, 재건 데이터(C5)를 재건 드라이브(130-6)에 라이트할 수 있다.
도 2와 도 3을 참조하여 설명한 바와 동일 또는 유사하게, 제4드라이브(130-4)는 각 피어 드라이브(130-1, 130-2, 및 130-3)와 피어-투-피어 통신을 통해 각 데이터(D1, D2, 및 D3)를 리드하고, 제4드라이브(130-4)에 저장된 데이터(D4)와 각 피어 드라이브(130-1, 130-2, 및 130-3)로부터 리드된 각 데이터(D1, D2, 및 D3)를 이용하여 재건 데이터(D5)를 재건하고, 재건 데이터(D5)를 재건 드라이브(130-6)에 라이트할 수 있다.
도 9는 본 발명의 실시 예들에 따른 RAID 시스템의 라이트 동작을 설명하기 위한 블록도이다. RAID 라이트 동작은 도 9를 참조하여 상세히 설명된다. RAID 시스템(100D)은 호스트 시스템(110), PCIe 스위치(120), 및 복수의 드라이브들(130-1, 130-2, 및 130-3A)을 포함한다. 복수의 드라이브들(130-1, 130-2, 및 130-3A) 각각의 구조와 동작은 동일하다고 가정한다. 제3드라이브(130-3A)는 제1드라이브(130-1)에 저장된 데이터(DATA1)와 제2드라이브(130-2)에 저장된 데이터(DATA2)의 패리티 데이터(parity data; PDATA)를 저장하는 드라이브하고 가정한다.
호스트 소프트웨어(112)는 제1드라이브(130-1)로 라이트 명령(WCMDa)과 라이트 데이터(WDATAa)를 전송한다. 제1드라이브(130-1)는 라이트 명령(WCMDa)과 라이트 데이터(WDATAa)를 수신하고, 라이트 명령(WCMDa)에 기초하여 피어 드라이브로서 사용되는 제3드라이브(130-3A)의 메모리 영역(145-3A)에 저장된 패리티 데이터 (PDATA)를 리드하기 위한 명령을 생성하고, 상기 명령을 제3드라이브(130-3A)로 이슈한다.
제1드라이브(130-1)는 라이트 명령(WCMDa)에 응답하여 메모리 영역(145-1)에 저장된 데이터(DATA1)를 리드하고, 라이트 데이터(WDATAa), 데이터(DATA1), 및 패리티 데이터(PDATA)를 XOR 연산하고, 연산 결과에 따라 새로운 패리티 데이터를 생성하고, 상기 새로운 패리티 데이터를 제3드라이브(130-3A)의 메모리 영역(145-3A)에 라이트한다. 제1드라이브(130-1)는 완료 인터럽트를 호스트 시스템(110)으로 전송한다. 제1드라이브(130-1)와 제3드라이브(130-3A)는 피어-투-피어 통신을 통해 패리티 데이터(PDATA)와 새로운 패리티 데이터를 주고받을 수 있다.
RAID 시스템(100D)은 호스트 시스템(110)의 개입 없이 드라이브들(130-1과 130-3A) 사이의 피어-투-피어 통신을 수행하고, 새로운 패리티 데이터를 제1드라이브(130-1)가 스스로 생성할 수 있으므로, 호스트 시스템(110)의 성능 저하 없이 분산 병렬 처리를 수행할 수 있다.
도 10은 본 발명의 실시 예들에 따른 RAID 시스템의 리드 동작을 설명하기 위한 블록도이다. RAID 시스템(100E)은 호스트 시스템(110), PCIe 스위치(120), 및 복수의 드라이브들(130-1, 130-2, 및 130-3A)을 포함한다.
호스트 시스템(110)은 리드 명령(RCMDa)을 PCIe 스위치(120)를 통해 제1드라이브(130-1)로 전송한다. 데이터(DATA1a)에 복구 불가능한 에러(uncorrectable error)가 포함된 경우, 제1컨트롤러(135-1)는 복구 불가능한 에러의 발생을 호스트 시스템(110)으로 알리지 않는다.
복구 불가능한 에러가 발생하면, 제1컨트롤러(135-1)는 제2드라이브(130-2)에 저장된 데이터(DATA2)를 리드하기 위한 리드 명령을 생성하고, 상기 리드 명령을 제2드라이브(130-2)로 이슈(또는 출력) 한다. 이때, 제1드라이브(130-1)는 마스터 장치로서 사용되고 제2드라이브(130-2)는 피어 드라이브로서 사용된다. 제1컨트롤러(135-1)는 제3드라이브(130-3A)에 저장된 패리티 데이터(PDATA)를 리드하기 위한 리드 명령을 생성하고, 상기 리드 명령을 제3드라이브(130-3A)로 이슈(또는 출력) 한다. 이때, 제1드라이브(130-1)는 마스터 장치로서 사용되고 제3드라이브 (130-3A)는 피어 드라이브로서 사용된다.
제1컨트롤러(135-1)는 제2드라이브(130-2)로부터 전송된 데이터(DATA2)와 제3드라이브(130-3A)로부터 전송된 패리티 데이터(PDATA)를 XOR 연산하고, XOR 연산 결과에 따라 데이터(DATA1)를 복원하고, 복원된 데이터(DATA1)를 메모리 영역(145-1)에 라이트한다. 제1컨트롤러(135-1)는 리드 명령(RCMDa)에 대한 복원된 데이터 (DATA1)를 PCIe 스위치(120)를 통해 호스트 시스템(110)으로 전송한다.
도 11은 마스터 장치 또는 슬레이브 장치로 사용될 수 있는 제1드라이브의 피어-투-피어 동작을 설명하기 위한 개념도이다.
제1드라이브(130-1)가, 제1서브미션 큐(SQB1), 제1완료 큐(CQB1), 및/또는 제1데이터 버퍼(DB1)에 저장된 데이터를 이용하여, 라이트 명령, 리드 명령, 또는 RAID 재건 명령을 스스로 생성하고, 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령을 제2드라이브(130-2)로 이슈하고, 제2드라이브(130-2)는 상기 라이트 명령, 상기 리드 명령, 또는 상기 RAID 재건 명령에 대한 완료 인터럽트를 제1드라이브(130-1)로 이슈하고, 제2드라이브(130-2)로부터 상기 완료 인터럽트를 수신한 제1드라이브(130-1)가 상기 완료 인터럽트를 스스로 처리하는 과정은 도 1부터 도 12를 참조하여 상세히 설명된다.
제1드라이브(130-1)의 마스터 장치로서 사용되는 호스트 시스템(110)은 제1동작 코드(OP1)를 제1서브미션 큐(SQB1)의 엔트리에 라이트한다(S210). 제1동작 코드(OP1)는 라이트 동작, 리드 동작, 또는 RAID 재건 동작을 지시하는 비트들을 포함한다고 가정한다.
호스트 시스템(110)은 제1서브미션 큐 테일 도어벨 레지스터(ST1)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S215). 제1서브미션 큐 테일 도어벨 레지스터(ST1)의 값이 업데이트되면, 제1제어 로직 회로(136-1)는 처리될 새로운 명령이 제출(submit)됨을 판단할 수 있다.
제1제어 로직 회로(136-1)는 제1서브미션 큐(SQB1)에 저장된 제1동작 코드(OP1)를 리드 (또는 페치(fetch))하고(S220), 제1서브미션 큐 헤드 도어벨 레지스터(SH1)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S225).
제1제어 로직 회로(136-1)는 제1동작 코드(OP1)에 기초하여 제1동작(OPE1)을 실행한다(S230). 제1동작(OPE1)이 성공하면, 제1제어 로직 회로(136-1)는 제1동작 (OPE1)의 성공을 지시하는 지시 신호를 제1완료 큐(CQB1)에 라이트한다 (S235). 제1제어 로직 회로(136-1)는 제1완료 큐 테일 도어벨 레지스터(CT1)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S240).
제1제어 로직 회로(136-1)는 완료 인터럽트를 호스트 시스템(110)으로 전송한다(S245). 호스트 시스템(110)은 상기 완료 인터럽트에 기초하여 제1완료 큐 (CQB1)에 저장된 상기 지시 신호를 리드하고(S250), 제1완료 큐 헤드 도어벨 레지스터(CH1)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S260).
제2드라이브(130-2)의 마스터 장치로서 사용되는 제1드라이브(130-1)는 제2동작 코드(OP2)를 제2서브미션 큐(SQB2)의 엔트리에 라이트한다(S310). 제2동작 코드(OP2)는 라이트 동작, 리드 동작, 또는 RAID 재건 동작을 지시하는 비트들을 포함한다고 가정한다.
제1드라이브(130-1)는 제2서브미션 큐 테일 도어벨 레지스터(ST2)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S315). 제2서브미션 큐 테일 도어벨 레지스터(ST2)의 값이 업데이트되면, 제2제어 로직 회로(136-2)는 처리될 새로운 명령이 제출(submit)됨을 판단할 수 있다.
제2제어 로직 회로(136-1)는 제2서브미션 큐(SQB2)에 저장된 제2동작 코드 (OP2)를 리드(또는 페치(fetch)) 하고(S320), 제2서브미션 큐 헤드 도어벨 레지스터(SH2)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S325).
제2제어 로직 회로(136-2)는 제2동작 코드(OP2)에 기초하여 제2동작(OPE2)을 실행한다(S330). 제2동작(OPE2)이 성공하면, 제2제어 로직 회로(136-2)는 제2동작 (OPE2)의 성공을 지시하는 지시 신호를 제2완료 큐(CQB2)에 라이트한다 (S335). 제2제어 로직 회로(136-2)는 제2완료 큐 테일 도어벨 레지스터(CT2)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S340).
제2제어 로직 회로(136-2)는 완료 인터럽트를 제1드라이브(130-1)로 전송한다(S345). 제1제어 로직 회로(136-1)는 상기 완료 인터럽트에 기초하여 제2완료 큐 (CQB2)에 저장된 상기 지시 신호를 리드하고(S350), 제2완료 큐 헤드 도어벨 레지스터(CH2)의 값(예컨대, 0)을 새로운 값(예컨대, 1)으로 업데이트한다(S360).
실시 예들에 따라, 단계들(S310~S360)은 단계들(S230과 S235) 사이에서 수행될 수도 있다. 각 동작(OPE1과 OPE2)은 라이트 동작, 리드 동작, 또는 RAID 재건 동작을 의미할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A, 100B, 100C, 100D, 100E: RAID 시스템
110: 호스트 시스템
112: 호스트 소프트웨어
114: 루트 컴플렉스
SQB1~SQB4: 서브미션 큐
CQB1~CQB4: 완료 큐
DB1~DB4; 데이터 버퍼
SH1~SH6: 서브미션 큐 헤드 도어벨 레지스터
ST1~ST6: 서브미션 큐 테일 도어벨 레지스터
CH1~CH6: 완료 큐 헤드 도어벨 레지스터
CT1~CT6: 완료 큐 테일 도어벨 레지스터
120: PCIe 스위치
130-1~130-6: 드라이브
135-1~135-6: 컨트롤러
140-1~140-6: 메모리
145-1~145-6: 메모리 영역
137-1~137-6: 하드웨어 XOR 게이트 회로

Claims (21)

  1. 제2저장 장치와 피어-투-피어 통신을 할 수 있는 제1저장 장치에 있어서,
    제1동작 코드를 저장할 수 있는 제1서브미션 큐;
    제1지시 신호를 저장할 수 있는 제1완료 큐; 및
    호스트로부터 수신된 명령에 기초하여 상기 제1저장 장치에 의해 재건될 데이터를 결정하고, 상기 제1서브미션 큐에 저장된 상기 제1동작 코드를 리드하고, 상기 재건될 데이터 및 상기 제1동작 코드에 기초하여 제2동작 코드를 포함하는 명령을 생성하고, 상기 명령을 상기 제2저장 장치로 이슈하고, 상기 제2저장 장치로부터 전송된 제2완료 신호를 수신하여 처리하는 제1컨트롤러를 포함하고,
    상기 명령을 상기 제2저장 장치로 이슈하는 것은,
    상기 제2저장 장치에 포함된 제2서브미션 큐에 상기 제2동작 코드를 저장하는 것을 포함하는 제1저장 장치.
  2. 제1항에 있어서, 상기 제1컨트롤러는,
    상기 제2저장 장치에 포함된 서브미션 큐 테일 도어벨 레지스터의 값을 새로운 값으로 업데이트하고,
    상기 제2저장 장치에 포함된 제2완료 큐에 저장된 제2지시 신호를 상기 제2완료 신호에 기초하여 리드하는 제1저장 장치.
  3. 제2항에 있어서, 상기 제1컨트롤러는,
    상기 제1동작 코드에 해당하는 제1동작을 실행하고, 상기 제1동작의 성공을 지시하는 상기 제1지시 신호를 상기 제1완료 큐에 저장하고, 상기 제1지시 신호가 상기 제1완료 큐에 저장됨을 지시하는 제1완료 신호를 호스트 시스템으로 전송하는 제1저장 장치.
  4. 제3항에 있어서, 상기 제1컨트롤러는 리드된 상기 제2지시 신호에 기초하여 상기 제2저장 장치에 포함된 완료 큐 헤드 도어벨 레지스터의 값을 새로운 값으로 업데이트하는 제1저장 장치.
  5. 제2항에 있어서,
    상기 제1지시 신호가 상기 제1완료 큐에 저장됨을 지시하는 제1완료 신호와, 상기 제2완료 신호 각각은, NVM Express(NVMe)에서 정의된 MSI-X 인터럽트인 제1저장 장치.
  6. 제1항에 있어서,
    상기 제1동작 코드와 상기 제2동작 코드 각각은 라이트 동작, 리드 동작, 또는 데이터 재건 동작의 실행을 지시하는 코드인 제1저장 장치.
  7. 복수의 저장 장치들;
    상기 복수의 저장 장치들에 연결된 PCIe 스위치; 및
    상기 PCIe 스위치에 연결되고, 제1동작 코드와, 재건 할당 정보, 및 상기 복수의 저장 장치들 각각에 포함된 컨트롤러 메모리 버퍼의 위치 정보를 포함하는 제1명령을 상기 복수의 저장 장치들 중에서 제1저장 장치로 출력하는 호스트 시스템을 포함하고,
    상기 제1저장 장치는 제1컨트롤러, 제1서브미션 큐, 및 제1완료 큐를 포함하고,
    상기 복수의 저장 장치들 중에서 제2저장 장치는 제2컨트롤러, 제2서브미션 큐, 및 제2완료 큐를 포함하고,
    상기 호스트 시스템은 상기 제1동작 코드를 상기 PCIe 스위치를 통해 상기 제1서브미션 큐에 저장하고,
    상기 제1컨트롤러는, 상기 재건 할당 정보에 기초하여 상기 제1저장 장치에 의해 재건될 데이터를 결정하고, 상기 제1서브미션 큐로부터 상기 제1동작 코드를 리드하고, 상기 재건될 데이터 및 리드된 상기 제1동작 코드에 기초하여 제2동작 코드를 포함하는 제2명령을 생성하고, 상기 제2명령을 상기 PCIe 스위치를 통해 상기 제2저장 장치로 이슈하고, 상기 제2저장 장치로부터 전송된 제2완료 신호를 상기 PCIe 스위치를 통해 수신하여 처리하는 데이터 저장 시스템.
  8. 삭제
  9. 제7항에 있어서, 상기 제1컨트롤러는,
    상기 제2서브미션 큐에 상기 제2명령에 포함된 상기 제2동작 코드를 저장하고,
    상기 제2컨트롤러에 포함된 서브미션 큐 테일 도어벨 레지스터의 값을 새로운 값으로 업데이트하는 데이터 저장 시스템.
  10. 제9항에 있어서, 상기 제2컨트롤러는,
    상기 제2서브미션 큐로부터 상기 제2동작 코드를 리드하고, 리드된 상기 제2동작 코드에 해당하는 동작을 실행하고, 상기 동작의 성공을 지시하는 지시 신호를 상기 제2완료 큐에 저장하고,
    상기 지시 신호가 상기 제2완료 큐에 저장됨을 지시하는 상기 제2완료 신호를 상기 PCIe 스위치를 통해 상기 제1저장 장치로 전송하는 데이터 저장 시스템.
  11. 제10항에 있어서, 상기 제1컨트롤러는,
    상기 제2완료 큐에 저장된 상기 지시 신호를 상기 제2완료 신호에 응답하여 리드하고,
    상기 제2컨트롤러에 포함된 완료 큐 헤드 도어벨 레지스터의 값을 새로운 값으로 업데이트하는 데이터 저장 시스템.
  12. 제7항에 있어서,
    상기 복수의 저장 장치들 각각에 포함된 상기 컨트롤러 메모리 버퍼의 위치 정보는 상기 제1서브미션 큐, 상기 제1완료 큐, 상기 제2서브미션 큐, 및 상기 제2완료 큐 각각의 위치 정보를 포함하는 데이터 저장 시스템.
  13. PCIe 스위치;
    상기 PCIe 스위치에 연결된 복수의 소스 저장 장치들; 및
    상기 PCIe 스위치에 연결된 재건 저장 장치를 포함하고,
    상기 복수의 소스 저장 장치들은 상기 재건 저장 장치에 대한 데이터 재건 동작을 위해 상기 PCIe 스위치를 통해 데이터 재건을 위한 데이터를 피어-투-피어 통신하고,
    상기 복수의 소스 저장 장치들은 제1소스 저장 장치와 제2소스 저장 장치들을 포함하고,
    상기 제1소스 저장 장치는, 상기 PCIe 스위치를 통해 적어도 하나의 제2소스 저장 장치로부터 데이터를 수신하고, 상기 제1소스 저장 장치의 메모리로부터 제1데이터를 리드하고,
    상기 적어도 하나의 제2소스 저장 장치로부터 수신된 상기 데이터 및 상기 제1데이터에 기초하여 상기 데이터 재건 동작을 수행하는 데이터 저장 시스템.
  14. 제13항에 있어서,
    상기 복수의 소스 저장 장치들과 상기 재건 저장 장치는 NVMe 저장 장치들인 데이터 저장 시스템.
  15. 제13항에 있어서,
    상기 복수의 소스 저장 장치들 각각에 할당된 서로 다른 재건 할당 정보와 상기 복수의 소스 저장 장치들의 개수를 상기 PCIe 스위치를 통해 상기 복수의 소스 저장 장치들 각각으로 전송하는 컨트롤러를 더 포함하는 데이터 저장 시스템.
  16. 제15항에 있어서,
    상기 제1소스 저장 장치는, 상기 제1소스 저장 장치에 대한 재건 할당 정보와 상기 개수에 기초하여, 상기 데이터 재건 동작을 위해 상기 PCIe 스위치를 통해 상기 제2소스 저장 장치들 각각으로 리드 명령을 전송하는 데이터 저장 시스템.
  17. 제16항에 있어서,
    상기 제2소스 저장 장치들 각각은 상기 제2소스 저장 장치들 각각에 대한 재건 할당 정보, 상기 개수, 및 상기 리드 명령에 기초하여 상기 제2소스 저장 장치들 각각의 메모리로부터 각각의 제2데이터를 리드하고, 상기 각각의 제2데이터를 상기 PCIe 스위치를 통해 상기 제1소스 저장 장치로 전송하는 데이터 저장 시스템.
  18. 제17항에 있어서, 상기 제1소스 저장 장치는,
    상기 제1소스 저장 장치에 대한 상기 재건 할당 정보와 상기 개수에 기초하여 상기 제1소스 저장 장치의 상기 메모리로부터 상기 제1데이터를 리드하고,
    상기 제1데이터와 상기 제2소스 저장 장치들 각각으로부터 전송된 상기 각각의 제2데이터에 기초하여 상기 데이터 재건 동작을 수행하고,
    재건 데이터를 상기 PCIe 스위치를 통해 상기 재건 저장 장치로 전송하고,
    상기 데이터 재건 동작은, 상기 재건 데이터를 생성하는 것을 포함하는 데이터 저장 시스템.
  19. 제18항에 있어서,
    상기 각각의 제2데이터의 리드 동작, 상기 제1데이터의 리드 동작, 및 상기 재건 데이터의 생성 동작은 상기 컨트롤러의 개입 없이 수행되는 데이터 저장 시스템.
  20. 제18항에 있어서,
    상기 각각의 제2데이터의 리드 동작과 상기 제1데이터의 리드 동작은 병렬적으로 수행되는 데이터 저장 시스템.
  21. 삭제
KR1020160129901A 2016-10-07 2016-10-07 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 KR102631351B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020160129901A KR102631351B1 (ko) 2016-10-07 2016-10-07 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
DE102017120448.2A DE102017120448A1 (de) 2016-10-07 2017-09-06 Speichervorrichtung, die in der Lage ist, eine Peer-to-Peer-Kommunikation durchzuführen, und Datenspeichersystem mit derselben
US15/698,902 US10725871B2 (en) 2016-10-07 2017-09-08 Storage device capable of performing peer-to-peer communication and data storage system including the same
CN201710873594.0A CN107918525B (zh) 2016-10-07 2017-09-25 能执行对等通信的存储设备和包括其的数据存储系统
US16/916,884 US11163652B2 (en) 2016-10-07 2020-06-30 Storage device capable of performing peer-to-peer communication and data storage system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160129901A KR102631351B1 (ko) 2016-10-07 2016-10-07 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템

Publications (2)

Publication Number Publication Date
KR20180038813A KR20180038813A (ko) 2018-04-17
KR102631351B1 true KR102631351B1 (ko) 2024-01-31

Family

ID=61695867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160129901A KR102631351B1 (ko) 2016-10-07 2016-10-07 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템

Country Status (4)

Country Link
US (2) US10725871B2 (ko)
KR (1) KR102631351B1 (ko)
CN (1) CN107918525B (ko)
DE (1) DE102017120448A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
DE102018125297A1 (de) * 2017-11-17 2019-05-23 Samsung Electronics Co., Ltd. Speichereinrichtung, die Peer-to-Peer-Kommunikation mit externer Einrichtung ohne Eingriff eines Host durchführt
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10649843B2 (en) * 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법
US11366610B2 (en) * 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11182258B2 (en) * 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
CN113767360A (zh) 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 在驱动器级别处对非易失性存储器联网消息的终止
EP3938880A1 (en) 2019-03-14 2022-01-19 Marvell Asia Pte, Ltd. Ethernet enabled solid state drive (ssd)
US11200193B2 (en) 2019-03-14 2021-12-14 Marvell Asia Pte, Ltd. Transferring data between solid state drives (SSDs) via a connection between the SSDs
US11194663B2 (en) * 2019-09-20 2021-12-07 DigitalOcean, LLC Protocol for improving rebuild times of redundant array of independent disks
JP2021111210A (ja) * 2020-01-14 2021-08-02 キヤノン株式会社 情報処理装置、およびその制御方法
CN112256601B (zh) * 2020-10-19 2023-04-21 苏州凌云光工业智能技术有限公司 数据存取控制方法、嵌入式存储系统及嵌入式设备
US11544205B2 (en) 2020-11-20 2023-01-03 Western Digital Technologies, Inc. Peer storage devices sharing host control data
US11531498B2 (en) 2020-11-20 2022-12-20 Western Digital Technologies, Inc. Peer storage device messaging over control bus
CN112711442A (zh) * 2020-12-29 2021-04-27 北京浪潮数据技术有限公司 一种主机命令写入方法、设备、系统及可读存储介质
US20220291861A1 (en) * 2021-03-12 2022-09-15 Kioxia Corporation Data exchange between host and storage device using compute functions
US11782616B2 (en) 2021-04-06 2023-10-10 SK Hynix Inc. Storage system and method of operating the same
KR102555800B1 (ko) * 2021-04-06 2023-07-17 에스케이하이닉스 주식회사 스토리지 시스템 및 그 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337540A1 (en) 2013-05-08 2014-11-13 Lsi Corporation METHOD AND SYSTEM FOR I/O FLOW MANAGEMENT FOR PCIe DEVICES
US8943226B1 (en) 2013-11-22 2015-01-27 Lsi Corporation Interface for heterogeneous PCI-e storage devices
US20150324118A1 (en) * 2014-05-07 2015-11-12 HGST Netherlands B.V. SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4815825B2 (ja) * 2005-03-10 2011-11-16 日本電気株式会社 ディスクアレイ装置及びその再構築方法
TWI285313B (en) 2005-06-22 2007-08-11 Accusys Inc XOR circuit, RAID device capable of recover a plurality of failures and method thereof
JP4817783B2 (ja) 2005-09-30 2011-11-16 富士通株式会社 Raidシステム及びそのリビルド/コピーバック処理方法
US7721143B2 (en) 2005-12-06 2010-05-18 Lsi Corporation Method for reducing rebuild time on a RAID device
US7970994B2 (en) 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild
WO2010011428A1 (en) 2008-06-06 2010-01-28 Pivot3 Method and system for data migration in a distributed raid implementation
JP2010224803A (ja) 2009-03-23 2010-10-07 Nec Corp ディスクアレイ装置
US8327224B2 (en) 2009-04-16 2012-12-04 Micron Technology, Inc. Data recovery in a solid state storage system
KR101491484B1 (ko) * 2010-06-18 2015-02-10 엘에스아이 코포레이션 스케일러블 스토리지 디바이스들
WO2013048451A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
US9110592B2 (en) * 2013-02-04 2015-08-18 Microsoft Technology Licensing, Llc Dynamic allocation of heterogenous memory in a computing system
US9411523B2 (en) * 2013-07-03 2016-08-09 Globalfoundries Inc. Redundant array of independent disks (RAID) system backup management
US9778859B2 (en) * 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight
JP6213130B2 (ja) * 2013-10-09 2017-10-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム及びストレージ制御方法
CN106103069B (zh) 2014-03-06 2018-08-03 奥钢联铸造林茨有限责任公司 工具滑动机构
US9396068B2 (en) 2014-04-17 2016-07-19 International Business Machines Corporation Adaptive rebuild scheduling scheme
KR101592727B1 (ko) * 2014-07-08 2016-02-12 포항공과대학교 산학협력단 P2p를 이용한 하이브리드 스토리지 시스템 및 이를 이용한 데이터 전송 방법
US10282100B2 (en) * 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US9274720B1 (en) 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
US9880755B2 (en) * 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
JP6228347B2 (ja) * 2015-02-25 2017-11-08 株式会社日立製作所 ストレージ装置及び記憶デバイス
US20160321010A1 (en) * 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US9697092B2 (en) * 2015-08-27 2017-07-04 International Business Machines Corporation File-based cluster-to-cluster replication recovery
US11467769B2 (en) * 2015-09-28 2022-10-11 Sandisk Technologies Llc Managed fetching and execution of commands from submission queues
US9910786B2 (en) * 2015-11-03 2018-03-06 Intel Corporation Efficient redundant array of independent disks (RAID) write hole solutions
US9959062B1 (en) * 2016-02-05 2018-05-01 Datadirect Networks, Inc. Low latency and reduced overhead data storage system and method for sharing multiple storage devices by high performance computing architectures
US10289560B2 (en) * 2016-03-10 2019-05-14 Toshiba Memory Corporation Switch module and storage system
US10055160B2 (en) * 2016-04-11 2018-08-21 Dell Products L.P. Systems and methods for BIOS emulation of PCIe device
US10423487B2 (en) * 2016-08-19 2019-09-24 Samsung Electronics Co., Ltd. Data protection offloads using SSD peering
US20180095679A1 (en) * 2016-09-30 2018-04-05 Piotr Wysocki Device driver to provide redundant array of independent disks functionality
US10223221B2 (en) * 2016-10-06 2019-03-05 International Business Machines Corporation Enclosure-encapsulated RAID rebuild
WO2018131127A1 (ja) * 2017-01-12 2018-07-19 株式会社日立製作所 ストレージ装置及び分散ストレージシステム
US20190034306A1 (en) * 2017-07-31 2019-01-31 Intel Corporation Computer System, Computer System Host, First Storage Device, Second Storage Device, Controllers, Methods, Apparatuses and Computer Programs
US10649867B2 (en) * 2017-12-15 2020-05-12 Western Digital Technologies, Inc. RAID array rebuild assist from external array copy
US10776013B2 (en) * 2018-04-27 2020-09-15 International Business Machines Corporation Performing workload balancing of tracks in storage areas assigned to processing units

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337540A1 (en) 2013-05-08 2014-11-13 Lsi Corporation METHOD AND SYSTEM FOR I/O FLOW MANAGEMENT FOR PCIe DEVICES
US8943226B1 (en) 2013-11-22 2015-01-27 Lsi Corporation Interface for heterogeneous PCI-e storage devices
US20150324118A1 (en) * 2014-05-07 2015-11-12 HGST Netherlands B.V. SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS

Also Published As

Publication number Publication date
CN107918525B (zh) 2022-08-16
DE102017120448A1 (de) 2018-04-12
CN107918525A (zh) 2018-04-17
US20180101450A1 (en) 2018-04-12
US11163652B2 (en) 2021-11-02
US10725871B2 (en) 2020-07-28
US20200327018A1 (en) 2020-10-15
KR20180038813A (ko) 2018-04-17

Similar Documents

Publication Publication Date Title
KR102631351B1 (ko) 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
US11340794B2 (en) Multiprocessor system with independent direct access to bulk solid state memory resources
US11243837B2 (en) Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US8719520B1 (en) System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
US10635529B2 (en) Parity offload for multiple data storage devices
US10725859B2 (en) Parity generation offload using peer-to-peer data transfers in data storage system
CN106462510B (zh) 具有独立直接接入大量固态存储资源的多处理器系统
US8560772B1 (en) System and method for data migration between high-performance computing architectures and data storage devices
US10114578B2 (en) Solid state disk and data moving method
US9015434B2 (en) Storage system, and apparatus and method for controlling storage
US10409730B2 (en) Microcontroller for memory management unit
US10235288B2 (en) Cache flushing and interrupted write handling in storage systems
US20140379990A1 (en) Cache node processing
US20110296084A1 (en) Data storage apparatus and method of writing data
JP2012137885A (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
KR20130091628A (ko) Raid의 개선된 리빌드 시스템 및 방법
GB2513377A (en) Controlling data storage in an array of storage devices
KR20100116396A (ko) 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US9842024B1 (en) Flash electronic disk with RAID controller
KR20120071058A (ko) 데이터 저장 장치 및 그것의 동작 방법
US9423977B2 (en) Lock-free communication storage request reordering
JP5635621B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
JP2010152551A (ja) 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法
TWI703499B (zh) 資料儲存裝置及其共享控制器中記憶體的方法
TWI636366B (zh) 資料冗餘的處理方法及其相關電腦系統

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