KR20220138758A - 스토리지 시스템 및 그 동작 방법 - Google Patents

스토리지 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20220138758A
KR20220138758A KR1020210044873A KR20210044873A KR20220138758A KR 20220138758 A KR20220138758 A KR 20220138758A KR 1020210044873 A KR1020210044873 A KR 1020210044873A KR 20210044873 A KR20210044873 A KR 20210044873A KR 20220138758 A KR20220138758 A KR 20220138758A
Authority
KR
South Korea
Prior art keywords
storage device
slave
master
data
ssd
Prior art date
Application number
KR1020210044873A
Other languages
English (en)
Other versions
KR102555800B1 (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 KR1020210044873A priority Critical patent/KR102555800B1/ko
Priority to US17/483,179 priority patent/US20220318091A1/en
Priority to CN202111643697.0A priority patent/CN115202568A/zh
Priority to US17/574,266 priority patent/US11782616B2/en
Priority to TW111106199A priority patent/TW202240390A/zh
Publication of KR20220138758A publication Critical patent/KR20220138758A/ko
Priority to US18/316,241 priority patent/US20230280917A1/en
Application granted granted Critical
Publication of KR102555800B1 publication Critical patent/KR102555800B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/1448Management of the data involved in backup or backup restore
    • 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/1456Hardware arrangements for backup
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • 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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • 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/0024Peripheral component interconnect [PCI]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 기술은 스토리지 시스템에 관한 것으로, 스토리지 시스템은 호스트로부터 결정된 레이드 레벨에 기초하여 데이터를 저장하는 마스터 스토리지 장치, 마스터 스토리지 장치로부터 분배된 커맨드에 따라 데이터를 저장하는 슬레이브 스토리지 장치 및 슬레이브 스토리지 장치 및 마스터 스토리지 장치를 연결하는 제어기 허브를 포함하되, 마스터 스토리지 장치는 호스트로부터 커맨드 처리 요청을 수신하면, 슬레이브 스토리지 장치에 대응되는 커맨드를 제어기 허브를 통해 슬레이브 스토리지 장치로 전달하고, 커맨드 처리 요청에 대응되는 마스터 스토리지 장치 및 슬레이브 스토리지 장치의 동작이 완료되면, 호스트로 컴플리션 큐를 전송할 수 있다.

Description

스토리지 시스템 및 그 동작 방법{STORAGE SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로는 스토리지 시스템 및 이의 동작 방법에 관한 것이다.
레이드(RAID; Redundant Array of Independent Disk)는 복수의 하드 디스크에 데이터를 나누어 저장하는 기술로, 디스크 어레이(disk array)라고도 한다. RAID는 레벨에 따라 데이터를 나누어 저장하는 다양한 방법이 존재하며, 레벨에 따라 저장 장치의 신뢰성을 높이거나 전체적인 성능을 향상시킬 수 있다.
스토리지 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분될 수 있다.
휘발성 메모리 장치는 전원이 공급되는 동안에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치일 수 있다. 휘발성 메모리 장치에는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 포함될 수 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 별도의 RAID 컨트롤러 없이 RAID 방식으로 데이터를 저장할 수 있는 스토리지 시스템 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 스토리지 시스템은 호스트로부터 결정된 레이드 레벨에 기초하여 데이터를 저장하는 마스터 스토리지 장치, 상기 마스터 스토리지 장치로부터 분배된 커맨드에 따라 상기 데이터를 저장하는 슬레이브 스토리지 장치 및 상기 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치를 연결하는 제어기 허브를 포함하되, 상기 마스터 스토리지 장치는 상기 호스트로부터 커맨드 처리 요청을 수신하면, 상기 슬레이브 스토리지 장치에 대응되는 커맨드를 상기 제어기 허브를 통해 상기 슬레이브 스토리지 장치로 전달하고, 상기 커맨드 처리 요청에 대응되는 상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치의 동작이 완료되면, 상기 호스트로 컴플리션 큐를 전송할 수 있다.
본 발명의 실시 예에 따른 마스터 스토리지 장치, 슬레이브 스토리지 장치 및 마스터 스토리지 장치와 슬레이브 스토리지 장치를 연결하는 제어기 허브를 포함하는 스토리지 시스템의 동작 방법은 호스트로부터 커맨드 처리 요청을 수신하는 단계, 기설정된 레이드 레벨에 따라, 상기 마스터 스토리지 장치가 상기 커맨드 처리 요청을 상기 제어기 허브를 통해 분배하는 단계, 상기 커맨드 처리 요청에 대응되는 동작을 수행하는 단계 및 상기 동작이 완료되면, 상기 마스터 스토리지 장치가 상기 호스트로 컴플리션 큐를 전송하는 단계를 포함할 수 있다.
본 기술에 따르면, 별도의 RAID 컨트롤러 없이 RAID 방식으로 데이터를 저장할 수 있는 스토리지 시스템 및 그 동작 방법을 제공한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 스토리지 시스템(20000)을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 SSD(Solid State Drive)를 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시 예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 레이드 레벨0 및 레이드 레벨1을 설명하기 위한 도면이다.
도 6는 본 발명의 일 실시 예에 따른 레이드 레벨4 및 레이드 레벨5를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 레이드 중첩을 설명하기 위한 도면이다.
도 8는 본 발명의 일 실시 예에 따른 스토리지 시스템의 동작 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시 예에 따른 스토리지 시스템의 동작 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시 예에 따른 복수의 펑션을 포함하는 스토리지 시스템의 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 일 실시 예에 따른 스토리지 시스템의 동작 방법을 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명의 개념에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(10000)은 호스트 장치(1000), 마스터 SSD(400) 및 슬레이브 SSD(500)를 포함할 수 있다. 예를 들어, 컴퓨팅 시스템(10000)은 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 디스플레이 장치, 테블릿 PC 등일 수 있다.
호스트 장치(1000)는 DRAM(100), 제어기 허브(200) 및 CPU(300)를 포함할 수 있다.
DRAM(100)은 호스트 장치(1000)의 동작에 필요한 데이터, 명령들 또는 프로그램 코드를 저장할 수 있다. 일 실시 예에서, DRAM(100)은 하나 이상의 오퍼레이팅 시스템(operating system; OS)들 및 가상 머신(virtual machine; VM)들을 실행하도록 동작할 수 있는 프로그램 코드들 및 가상 머신들을 관리하기 위한 버추얼라이제이션 미디어리(Virtualization Intermediary; VI)를 실행하는 프로그램 코드들을 저장할 수 있다.
제어기 허브(200)는 주변 컴포넌트 인터커넥트 익스프레스(Peripheral Component Interconnect Express; PCIe) 상호 접속 아키텍처 내 루트 허브, 루트 컴플렉스, 또는 루트 제어기일 수 있다. 예를 들어, 제어기 허브(200)는 칩셋, 메모리 제어기 허브(memory controller hub, MCH), 노스브릿지, 인터커넥트 제어기 허브(interconnect controller hub, ICH), 사우스브릿지, 및 루트 제어기/허브를 포함할 수 있다. 그리고, 제어기 허브(200)는 DRAM(100) 및 CPU(300)를 입출력 계층 구조(I/O Hierarchy)와 연결할 수 있다. 제어기 허브(200)는 피어-투-피어(Peer-to-Peer; P2P) 라우팅을 지원할 수 있다. 제어기 허브(200)는 적어도 하나의 호스트 브릿지 및 루트 포트를 포함할 수 있다. 제어기 허브(200)는 하나 이상의 PCIe(Peripheral Component Interconnect Express) 포트를 지원할 수 있다.
CPU(300)는 컴퓨팅 시스템(10000)을 전반적으로 제어할 수 있다. 구체적으로, CPU(300)는 데이터의 처리 및 컴퓨팅 시스템(10000)의 구성 요소들의 동작들을 제어하는 회로, 인터페이스 또는 프로그램 코드를 포함할 수 있다.
컴퓨팅 시스템(10000)은 마스터 SSD(400) 및 슬레이브 SSD(500)를 포함할 수 있다. 마스터 SSD(400) 및 슬레이브 SSD(500)는 데이터를 저장할 수 있다. 구체적으로, 마스터 SSD(400) 및 슬레이브 SSD(500)는 CPU(300)의 커맨드 처리 요청에 따라 호스트 장치(1000)로부터 수신한 데이터를 저장할 수 있다. 본 발명의 일 실시 예에 따르면, 마스터 SSD(400)는 CPU(300)로부터 커맨드 처리 요청을 수신하면, 슬레이브 SSD(500)에 대응되는 커맨드를 제어기 허브(200)를 통해 슬레이브 SSD(500)로 전달할 수 있다. 구체적으로, 마스터 SSD(400)는 호스트 장치(1000) 또는 CPU(300)로부터 결정된 레이드 레벨에 따라 데이터를 저장할 수 있다. 마스터 SSD(400)는 슬레이브 SSD(500)가 결정된 레이드 레벨에 따라 데이터를 저장하도록 슬레이브 SSD(500)로 슬레이브 SSD(500)에 대응되는 커맨드를 전달할 수 있다. 마스터 SSD(400)는 제어기 허브(200)가 지원하는 피어-투-피어(Peer-to-Peer; P2P) 라우팅을 이용할 수 있다. 그리고, 마스터 SSD(400)는 레이드 컨트롤러의 역할을 수행할 수 있다. 종래에는 레이드에 대응되는 방법으로 데이터를 저장하거나 리드하기 위하여 별도의 레이드 컨트롤러가 필요했다. 본 발명의 일 실시 예에 따르면, 별도의 레이드 컨트롤러나 하드웨어 장치의 추가 없이 피어-투-피어(Peer-to-Peer; P2P) 라우팅을 이용하여 SSD만으로 레이드 컨트롤러의 기능을 대체할 수 있다.
마스터 SSD(400) 및 슬레이브 SSD(500)는 커맨드 처리 요청에 대응되는 내부 동작을 수행할 수 있다. 여기서, 내부 동작은 마스터 SSD(400) 또는 슬레이브 SSD(500)에 저장된 데이터를 리드하는 리드 동작이거나, 마스터 SSD(400) 또는 슬레이브 SSD(500)에 데이터를 저장하는 쓰기 동작일 수 있다. 예를 들어, 마스터 SSD(400) 또는 슬레이브 SSD(500)는 레이드 레벨0에 대응되는 방법으로 데이터를 저장하거나 저장된 데이터를 리드할 수 있다.
마스터 SSD(400) 및 슬레이브 SSD(500)는 기능적 구분을 위하여 상이한 이름으로 설명하였으나, 구현시에는 동종의 SSD로 구현될 수 있다. 또는, 마스터 SSD(400) 및 슬레이브 SSD(500)는 물리적으로 동일한 회로로 구현될 수 있다. 그리고, 마스터 SSD(400) 및 슬레이브 SSD(500)는 호스트 장치(1000) 또는 CPU(300)에 의하여 역할이 결정될 수 있다. 구체적으로, 호스트 장치(1000) 또는 CPU(300)는 호스트 장치(1000)에 연결된 복수의 SSD 중 어느 하나를 마스터 SSD(400)로 설정하고, 나머지 SSD를 슬레이브 SSD(500)로 설정할 수 있다. 여기서, 호스트 장치(1000) 또는 CPU(300)는 소프트웨어 또는 어플리케이션을 이용하여, 사용자가 입력한 명령에 따라 마스터 SSD(400) 및 슬레이브 SSD(500)를 결정할 수 있다. 또한, 마스터 SSD(400) 및 슬레이브 SSD(500)가 형성하는 레이드 레벨에 따른 저장 방법도 동일한 방법에 따라 호스트 장치(1000) 또는 CPU(300)에 의하여 결정될 수 있다.
또는, 마스터 SSD(400) 및 슬레이브 SSD(500)는 호스트 장치(1000) 또는 CPU(300)에 의하여 역할이 결정되되, 임의로 역할이 결정될 수 있다. 구체적으로, 호스트 장치(1000) 또는 CPU(300)는 제어기 허브(200)에 연결된 복수의 SSD를 식별할 수 있고, 호스트 장치(1000) 또는 CPU(300)는 복수의 SSD 중 제어기 허브(200)의 특정한 포트에 연결된 SSD를 마스터 SSD(400)의 역할을 수행하도록 설정할 수 있다. 여기서, 특정한 포트는 복수의 SSD 중 최초로 제어기 허브(200) 또는 호스트 장치(1000)에 연결된 SSD에 대응되는 포트를 의미할 수 있다. 또는, 특정한 포트는 버스 넘버(bus number)를 기준으로 가작 작은 숫자의 버스 넘버(bus number)에 대응되는 포트일 수 있다. 상술한 방법은 마스터 SSD(400) 및 슬레이브 SSD(500)를 설정하는 일 실시 예에 불과하고, 이외의 다양한 방법에 의하여 마스터 SSD(400) 및 슬레이브 SSD(500)가 설정될 수 있다.
한편, 도 1에서는 호스트 장치(1000)에 SSD(Solid State Drive), 예컨대, 마스터 SSD(400) 및 슬레이브 SSD(500)가 연결되는 형태로 도시하였으나, 이에 한정되지 않고, 마스터 SSD(400) 및 슬레이브 SSD(500)는 SSD 이외의 스토리지 장치로 대체될 수 있다. 예를 들어, 마스터 SSD(400) 및 슬레이브 SSD(500)는 MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multi-media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(Universal Serial Bus) 저장 장치, UFS(Universal Flash Storage) 장치, PCMCIA(Personal Computer Memory Card International Association) 카드 형태의 저장 장치, PCI(Peripheral Component Interconnection)) 카드 형태의 저장 장치, PCI-E(PCI Express) 카드 형태의 저장 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 스토리지 시스템(20000)을 설명하기 위한 도면이다.
도 2를 참조하면, 스토리지 시스템(20000)은 제어기 허브(200), 마스터 SSD(400) 및 슬레이브 SSD(500)를 포함할 수 있다. 한편, 제어기 허브(200), 마스터 SSD(400) 및 슬레이브 SSD(500)에 대하여 상세하게 설명하였는바, 중복되는 부분은 생략하기로 한다.
마스터 SSD(400)는 펑션(Function)을 포함할 수 있다. 구체적으로, 마스터 SSD(400)는 펑션0(410) 및 펑션1(420)를 포함할 수 있다. 여기서, 펑션은 스토리지 장치에 포함된 물리적 리소스들을 제공하는 독립적인 동작 단위일 수 있다. 한편, 도 2에서는 설명의 편의를 위하여 마스터 SSD(400)에 포함된 펑션이 2개인 것으로 도시하였으나, 실시 예에 따라 펑션의 개수는 2개에 제한되지 않으며, 슬레이브 SSD(500)도 복수 개의 펑션을 포함할 수 있다.
슬레이브 SSD(500)는 복수의 SSD로 구성될 수 있다. 구체적으로, 슬레이브 SSD(500)는 제1 슬레이브 SSD(510), 제2 슬레이브 SSD(520) 및 제3 슬레이브 SSD(530)를 포함할 수 있다. 그리고, 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)는 후술하는 RAID의 하나의 디스크로 취급될 수 있다. 그리고, 본 발명의 일 실시 예에 따르면, 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)는 마스터 SSD(400)로부터 분배된 커맨드에 따라 내부 동작을 수행할 수 있다. 여기서, 내부 동작은 슬레이브 SSD(500)에 저장된 데이터를 리드하는 리드 동작이거나, 슬레이브 SSD(500)에 데이터를 저장하는 쓰기 동작일 수 있다. 한편, 도 2에는 슬레이브 SSD(500)가 3개의 SSD를 포함하는 것을 도시하였으나, 슬레이브 SSD(500)가 포함하는 SSD의 개수는 이에 한정되지 않는다.
스위치(600)는 패킷 또는 메세지를 업-스트림 또는 다운-스트림으로 라우팅할 수 있다. 구체적으로, 스위치(600)는 패킷 또는 메시지를 슬레이브 SSD(500)로부터 제어기 허브(200)를 향한 계층 위쪽으로 라우팅할 수 있다. 또는, 스위치(600)는 패킷 또는 메시지를 제어기 허브(200)로부터 슬레이브 SSD(500)를 향한 계층 아래쪽으로 라우팅할 수 있다.
일 실시 예에서, 스위치(600)는 복수의 가상 PCI간 브릿지 디바이스(virtual PCI-to-PCI bridge device)의 로직 어셈블리라고 지칭될 수 있다. 스위치(600)에 연결될 수 있는 디바이스는 I/O 디바이스, 네트워크 인터페이스 제어기(Network Interface Controller, NIC), 애드-인(add-in) 카드, 오디오 프로세서, 네트워크 프로세서, 하드-드라이브, 저장 디바이스, CD/DVD ROM, 모니터, 프린터, 마우스, 키보드, 라우터, 이동식 저장 디바이스, 파이어와이어 디바이스, 범용 직렬 버스(Universal Serial Bus, USB) 디바이스, 스캐너, 및 기타 입력/출력 디바이스와 같은 전자 시스템에 연결되는 임의의 내부 또는 외부 디바이스나 컴포넌트를 포함할 수 있다. 비록 구체적으로 도시되지 않을지라도, 디바이스는 레거시 또는 다른 버전의 PCI 디바이스를 지원하는 PCIe 대 PCI/PCI-X 브릿지를 포함할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 SSD(Solid State Drive)를 설명하기 위한 도면이다.
도 3을 참조하면, SSD는 메모리 컨트롤러(2100), 복수의 플래시 메모리들(2200), 버퍼 메모리(2300) 및 보조 전원 장치(2400)를 포함할 수 있다.
실시 예에서, 메모리 컨트롤러(2100)는 호스트 장치(1000)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(2200)을 제어할 수 있다. 예시적으로, 신호(SIG)는 호스트 장치(1000) 및 SSD의 인터페이스에 기반된 신호들일 수 있다. 특히, 신호(SIG)는 PCI(peripheral component interconnection), 또는 PCI-E (PCI-express)에 따라 정의된 신호일 수 있으며, USB(Universal Serial Bus), MMC(multimedia card), eMMC(embeded MMC), ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI(small computer system interface), ESDI(enhanced small disk interface), IDE(Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다.
버퍼 메모리(2300)는 SSD의 내부 메모리로 동작할 수 있다. 예를 들어, 버퍼 메모리(2300)는 호스트 장치(1000)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2200)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2200)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2300)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, GRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
보조 전원 장치(2400)는 호스트 장치(1000)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 보조 전원 장치(2400)는 호스트 장치(1000)로부터의 전원 공급이 원활하지 않을 경우, SSD의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2400)는 SSD 내에 위치할 수도 있고, SSD 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2400)는 메인 보드에 위치하며, SSD에 보조 전원을 제공할 수도 있다.
도 4는 본 발명의 일 실시 예에 따른 메모리 컨트롤러를 설명하기 위한 도면이다.
도 4를 참조하면, 메모리 컨트롤러(2100)는 프로세서(2110), RAM(2120), 에러 정정 회로(2130), 호스트 인터페이스(2140), ROM(2150), 및 메모리 인터페이스(2160)를 포함할 수 있다. 도 4에 도시된 메모리 컨트롤러(2100)는 도 3에 도시된 메모리 컨트롤러(2100)의 일 실시 예다.
프로세서(2110)는 호스트 인터페이스(2140)를 이용하여 호스트 장치(1000) 또는 CPU(300)와 통신하고, 메모리 컨트롤러(2100)의 동작을 제어하기 위해 논리 연산을 수행할 수 있다. 예를 들면, 프로세서(2110)는 호스트 장치(1000) 또는 CPU(300)로부터 수신한 요청에 기초하여 프로그램 명령, 데이터 파일, 데이터 구조 등을 로드하고, 각종 연산을 수행하거나 커맨드 및 어드레스를 생성할 수 있다. 예를 들어, 프로세서(2110)는 프로그램 동작, 리드 동작, 소거 동작, 서스펜드 동작 및 파라미터 셋팅 동작에 필요한 다양한 커맨드들(commands)을 생성할 수 있다.
그리고, 프로세서(2110)는 플래시 변환 계층(FTL)의 기능을 수행할 수 있다. 프로세서(2110)는 플래시 변환 계층(FTL)을 통해 호스트 장치(1000) 또는 CPU(300)가 제공한 논리 블록 어드레스(Logical Block Address, LBA)를 물리 블록 어드레스(Physical Block Address, PBA)로 변환할 수 있다. 플래시 변환 계층(FTL)은 맵핑 테이블을 이용하여 논리 블록 어드레스(LBA)를 입력 받아, 물리 블록 어드레스(PBA)로 변환시킬 수 있다. 플래시 변환 계층(FTL)의 주소 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(Page mapping method), 블록 맵핑 방법(Block mapping method), 그리고 혼합 맵핑 방법(Hybrid mapping method)이 있다.
그리고, 프로세서(2110)는 호스트 장치(1000)의 요청 없이 커맨드를 생성할 수 있다. 예를 들면, 프로세서(2110)는 메모리 장치의 웨어 레벨링(wear leveling)을 위한 동작들, 메모리 장치의 가비지 컬렉션(garbage collection)을 위한 동작들과 같은 배경(background) 동작들을 위해 커맨드를 생성할 수 있다.
RAM(2120)은 프로세서(2110)의 버퍼 메모리, 동작 메모리 또는 캐시 메모리로 사용될 수 있다. 그리고, RAM(2120)은 프로세서(2110)가 실행하는 코드들 및 커맨드들을 저장할 수 있다. RAM(2120)은 프로세서(2110)에 의해 처리되는 데이터를 저장할 수 있다. 그리고, RAM(2120)은 구현시에 SRAM(Static RAM) 또는 DRAM(Dynamic RAM)을 포함하여 구현될 수 있다.
에러 정정 회로(2130)는 프로그램 동작 또는 리드 동작시 에러를 검출하고 검출된 에러를 정정할 수 있다. 구체적으로, 에러 정정 회로(2130)는 에러 정정 코드(Error Correction Code, ECC)에 따라 에러 정정 동작을 수행할 수 있다. 그리고, 에러 정정 회로(2130)는 메모리 장치에 기입될 데이터에 기반하여 에러 정정 인코딩(ECC encoding)을 수행할 수 있다. 에러 정정 인코딩이 수행된 데이터는 메모리 인터페이스(2160)를 통해 메모리 장치로 전달될 수 있다. 또한, 에러 정정 회로(2130)는 메모리 장치로부터 메모리 인터페이스(2160)를 통해 수신되는 데이터에 대해 에러 정정 디코딩(ECC decoding)을 수행할 수 있다.
호스트 인터페이스(2140)는 호스트 장치(1000) 및 메모리 컨트롤러(2100) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 구체적으로, 호스트 인터페이스(2140)는 PCI (peripheral component interconnection) 프로토콜 또는 PCI-E (PCI-express) 프로토콜을 이용하여 호스트 장치(1000)와 통신하도록 구성될 수 있다. 이외에, 호스트 인터페이스(2140)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer system interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜, 사유(private) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트 장치와 통신하도록 구성될 수 있다.
ROM(2150)은 메모리 컨트롤러(2100)의 동작에 필요한 다양한 정보들을 저장하는 저장부(storage unit)로서 사용될 수 있다. 구체적으로, ROM(2150)는 맵 테이블(map table)을 포함할 수 있고, 맵 테이블에는 물리-논리 어드레스 정보와 논리-물리 어드레스 정보가 저장될 수 있다. 그리고, ROM(2150)은 프로세서(2110)에 의해 제어될 수 있다.
메모리 인터페이스(2160)는 프로세서(2110)의 제어에 따라 통신 프로토콜을 이용하여 메모리 장치와 통신을 수행할 수 있다. 구체적으로, 메모리 인터페이스(2160)는 채널을 통해 커맨드, 어드레스 및 데이터를 메모리 장치와 통신할 수 있다. 예를 들어, 메모리 인터페이스(2160)은 낸드 인터페이스(NAND interface)를 포함할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 레이드 레벨0 및 레이드 레벨1을 설명하기 위한 도면이다.
도 5를 참조하면, 레이드 레벨0 및 레이드 레벨1에 따른 저장 방법이 도시되어 있다. 여기서, 레이드(RAID; Redundant Array of Independent Disk)는 복수의 하드 디스크에 데이터를 나누어 저장하는 방법일 수 있다. 레이드는 복수의 스토리지 장치를 하나의 스토리지 장치처럼 이용하는 방법일 수 있다.
레이드 레벨0은 스트라이핑(striping) 방식으로 데이터를 저장하는 방법일 수 있다. 레이드 레벨0에 대응되는 저장 방법에는 적어도 2개의 스토리지 장치가 이용될 수 있다. 예를 들어, 레이드 레벨0에 대응되는 저장 방법으로 제1 스토리지 장치 및 제2 스토리지 장치가 이용될 수 있다. 구체적으로, 레이드 레벨0은 저장될 데이터를 복수의 스토리지 장치에 스트라이핑하는 저장 방법일 수 있다. 여기서, 스트라이핑은 데이터를 복수의 스토리지 장치에 분배하는 동작일 수 있다. 예를 들어, 레이드 레벨0에 대응되는 저장 방법에 따르면, 제1 스토리지 장치에 제1 블록(A1), 제3 블록(A3), 제5 블록(A5) 및 제7 블록(A7)을 저장하고, 제2 스토리지 장치에 제2 블록(A2), 제4 블록(A4), 제6 블록(A6) 및 제8 블록(A8)을 저장하도록 데이터 A를 제1 스토리지 장치 및 제2 스토리지 장치에 스트라이핑할 수 있다.
레이드 레벨0에 따른 저장 방법은 하나의 데이터를 복수의 스토리지 장치에 저장하므로, 저장 속도가 우수하며, 복수의 스토리지 장치의 용량을 최대한으로 이용할 수 있는 장점이 존재할 수 있다. 다만, 레이드 레벨0에 따른 저장 방법은 하나의 스토리지 장치에 에러가 발생하는 경우, 복수의 스토리지 장치 전체의 데이터를 신뢰할 수 없게되므로, 저장된 데이터의 안정성이 보장되지 않는 단점이 존재할 수 있다.
레이드 레벨1은 미러링(mirroring) 방식으로 데이터를 저장하는 방법일 수 있다. 레이드 레벨1에 대응되는 저장 방법에는 적어도 2개의 스토리지 장치가 이용될 수 있다. 예를 들어, 레이드 레벨1에 대응되는 저장 방법으로 제1 스토리지 장치 및 제2 스토리지 장치가 이용될 수 있다. 구체적으로, 레이드 레벨1은 저장될 데이터를 복수의 스토리지 장치에 미러링하는 저장 방법일 수 있다. 여기서, 미러링은 동일한 데이터를 복수의 스토리지 장치에 복제하는 방법일 수 있다. 예를 들어, 레이드 레벨1에 대응되는 저장 방법에 따르면, 제1 스토리지 장치에 제1 블록(A1), 제2 블록(A2), 제3 블록(A3) 및 제4 블록(A4)을 저장하고, 제2 스토리지 장치에 동일한 데이터인 제1 블록(A1), 제2 블록(A2), 제3 블록(A3) 및 제4 블록(A4)을 저장하도록 데이터 A를 제1 스토리지 장치 및 제2 스토리지 장치에 미러링할 수 있다.
레이드 레벨1에 따른 저장 방법은 복수의 스토리지 장치에 동일한 데이터를 미러링하므로, 복수의 스토리지 장치 중 일부에 에러가 발생하는 경우에도 에러가 발생하지 않은 하나의 스토리지 장치만 존재하는 경우, 데이터를 복구할 수 있는 장점이 존재할 수 있다. 다만, 레이드 레벨1에 따른 저장 방법은 저장시 데이터를 복제후 데이터를 기록하기 때문에 성능 및 용량 측면에서 다른 레이드 레벨에 비해 불리할 수 있다.
도 6는 본 발명의 일 실시 예에 따른 레이드 레벨4 및 레이드 레벨5를 설명하기 위한 도면이다.
도 6를 참조하면, 레이드 레벨4 및 레이드 레벨5에 따른 저장 방법이 도시되어 있다. 여기서, 레이드(RAID; Redundant Array of Independent Disk)는 복수의 하드 디스크에 데이터를 나누어 저장하는 방법일 수 있다. 레이드는 복수의 스토리지 장치를 하나의 스토리지 장치처럼 이용하는 방법일 수 있다.
레이드 레벨4는 스트라이핑(striping) 방식 및 오류 검출 방식을 이용하여 데이터를 저장하는 방법일 수 있다. 레이드 레벨4에 대응되는 저장 방법에는 적어도 3개의 스토리지 장치가 이용될 수 있다. 예를 들어, 레이드 레벨4에 대응되는 저장 방법으로 제1 스토리지 장치 내지 제4 스토리지 장치가 이용될 수 있다. 구체적으로, 레이드 레벨4은 저장될 데이터를 블록 단위로 복수의 스토리지 장치에 스트라이핑하고, 하나의 스토리지 장치를 에러 정정(error correction)을 위한 패러티(parity)를 저장하는 저장 방법일 수 있다. 여기서, 스트라이핑은 데이터를 복수의 스토리지 장치에 분배하는 동작이고, 패러티는 배타적 논리합(EOR, exclusive OR) 연산 등을 이용하여 에러 정정 및 에러 검출을 위해 사용되는 연산자일 수 있다. 예를 들어, 데이터 A, 데이터 B, 데이터 C 및 데이터 D를 저장할 때, 레이드 레벨4에 대응되는 저장 방법에 따르면, 제1 스토리지 장치 내지 제3 스토리지 장치에 스트라이핑할 수 있다. 그리고, 레이드 레벨4에 대응되는 저장 방법에 따르면, 제4 스토리지 장치에 제1 스토리지 장치 내지 제3 스토리지 장치에 저장된 각 데이터의 패러티를 저장할 수 있다. 즉, 레이드 레벨4에 대응되는 저장 방법에 따르면, n-1개의 스토리지 장치에 데이터를 분할 저장하고, 1개의 스토리지 장치를 패러티 전용 스토리지 장치로 이용할 수 있다. 예를 들어, 데이터 A를 저장할 때, 레이드 레벨4에 대응되는 저장 방법에 따르면, 데이터 A의 제1 블록(A1)은 제1 스토리지 장치에 저장하고, 데이터 A의 제2 블록(A2)은 제2 스토리지 장치에 저장하고, 데이터 A의 제3 블록(A3)은 제3 스토리지 장치에 저장하며, 데이터 A의 패러티(Ap)는 제4 스토리지 장치에 저장할 수 있다. 레이드 레벨4에 대응되는 저장 방법에 따르면, 1개의 스토리지 장치에 에러가 발생하는 경우, 발생한 에러를 복구할 수 있다. 다만, 2개 이상의 스토리지 장치에 에러가 발생하면, 이를 복구할 수 없으며, 패러티를 저장하는 스토리지 장치에 부하가 걸릴 수 있다. 그리고, 패러티를 연산하여 저장해야 하기 때문에 데이터 저장시 성능의 저하가 발생할 수 있다.
레이드 레벨5는 스트라이핑(striping) 방식 및 오류 검출 방식을 이용하여 데이터를 저장하는 방법일 수 있다. 레이드 레벨5에 대응되는 저장 방법에는 적어도 3개의 스토리지 장치가 이용될 수 있다. 예를 들어, 레이드 레벨5에 대응되는 저장 방법으로 제1 스토리지 장치 내지 제4 스토리지 장치가 이용될 수 있다. 구체적으로, 레이드 레벨5는 저장될 데이터를 블록 단위로 복수의 스토리지 장치에 스트라이핑하고, 하나의 스토리지 장치를 에러 정정(error correction)을 위한 패러티(parity)를 저장하는 저장 방법일 수 있다. 여기서, 스트라이핑은 데이터를 복수의 스토리지 장치에 분배하는 동작이고, 패러티는 배타적 논리합(EOR, exclusive OR) 연산 등을 이용하여 에러 정정 및 에러 검출을 위해 사용되는 연산자일 수 있다. 예를 들어, 데이터 A, 데이터 B, 데이터 C 및 데이터 D를 저장할 때, 레이드 레벨5에 대응되는 저장 방법에 따르면, 제1 스토리지 장치 내지 제3 스토리지 장치에 스트라이핑할 수 있다. 그리고, 레이드 레벨5에 대응되는 저장 방법에 따르면, 제4 스토리지 장치에 제1 스토리지 장치 내지 제3 스토리지 장치에 저장된 각 데이터의 패러티를 저장할 수 있다.
레이드 레벨5에 대응되는 저장 방법에 따르면, n-1개의 스토리지 장치에 데이터를 분할 저장하고, 1개의 스토리지 장치에 패러티를 저장하는 방법은 레이드 레벨4와 동일하나, 패러티를 복수의 스토리지 장치에 분산 저장하는 방법이 레이드 레벨4와 차이점일 수 있다. 예를 들어, 데이터 A를 저장할 때, 레이드 레벨5에 대응되는 저장 방법에 따르면, 데이터 A의 패러티(Ap)를 제4 스토리지 장치에 저장하고, 데이터 B의 패러티(Bp)를 제3 스토리지 장치에 저장하고, 데이터 C의 패러티(Cp)를 제2 스토리지 장치에 저장하고, 데이터 A의 패러티(Ap)를 제1 스토리지 장치에 저장할 수 있다. 즉, 패러티를 복수의 스토리지 장치에 분산 저장함으로써 패러티의 연산 및 저장시 발생하는 부하를 방지할 수 있는 장점이 있다. 그리고, 레이드 레벨5에 대응되는 저장 방법에 따르면, 1개의 스토리지 장치에 에러가 발생하는 경우, 발생한 에러를 복구할 수 있다. 다만, 2개 이상의 스토리지 장치에 에러가 발생하면, 이를 복구할 수 없으며, 패러티를 저장하는 스토리지 장치에 부하가 걸릴 수 있다. 그리고, 패러티를 연산하여 저장해야 하기 때문에 데이터 저장시 성능의 저하가 발생할 수 있다.
한편, 도 6에는 도시되지 않았지만, 레이드 레벨6에 따른 저장 방법은 레이드 레벨5에 따른 저장 방법에서 패러티를 추가하여 안정성을 보장하는 방법일 수 있다. 구체적으로, 레이드 레벨 6에 따른 저장 방법은 n-2개의 스토리지 장치에 데이터를 분할 저장하고, 2개의 스토리지 장치에 패러티를 저장하는 방법일 수 있다. 레이드 레벨 6에 따른 저장 방법은 적어도 4개의 스토리지 장치를 이용하여 구현할 수 있다. 그리고, 레이드 레벨 6에 따른 저장 방법은 2개의 스토리지 장치에서 발생한 에러를 복구할 수 있다.
도 7은 본 발명의 일 실시 예에 따른 레이드 중첩을 설명하기 위한 도면이다.
도 7을 참조하면, 레이드 레벨0 및 레이드 레벨1의 중첩을 이용한 레이드 레벨1+0 및 레이드 레벨0+1이 도시되어 있다. 레이드 레벨1+0 및 레이드 레벨0+1은 레이드 레벨0 및 레이드 레벨1을 이용한 저장 방법일 수 있다.
레이드 레벨1+0에 따른 저장 방법은 적어도 4개의 스토리지 장치로 구현될 수 있다. 예를 들어, 레이드 레벨1+0에 따른 저장 방법은 제1 스토리지 장치 내지 제4 스토리지 장치를 이용하여 구현될 수 있다. 구체적으로, 레이드 레벨1+0에 따르면, 제1 스토리지 장치 및 제2 스토리지 장치는 미러링되어 동일한 데이터를 저장할 수 있다. 그리고, 제3 스토리지 장치 및 제4 스토리지 장치는 미러링되어 동일한 데이터를 저장할 수 있다. 레이드 레벨1+0에 따른 저장 방법은 레이드 레벨1로 그룹핑된 스토리지 장치를 레이드 레벨0으로 그룹핑할 수 있다. 예를 들어, 레이드 레벨1+0에 따르면, (제1 스토리지 장치와 제2 스토리지 장치) 및 (제3 스토리지 장치와 제4 스토리지 장치)는 스트라이핑될 수 있다.
레이드 레벨0+1에 따른 저장 방법은 적어도 4개의 스토리지 장치로 구현될 수 있다. 예를 들어, 레이드 레벨0+1에 따른 저장 방법은 제1 스토리지 장치 내지 제4 스토리지 장치를 이용하여 구현될 수 있다. 구체적으로, 레이드 레벨0+1에 따르면, 데이터는 스트라이핑되어 제1 스토리지 장치 및 제2 스토리지 장치에 저장될 수 있다. 그리고, 데이터는 미러링되어 제3 스토리지 장치 및 제4 스토리지 장치에 저장될 수 있다. 레이드 레벨0+1에 따른 저장 방법은 레이드 레벨1로 미러링된 스토리지 장치를 레이드 레벨1으로 그룹핑할 수 있다. 예를 들어, 레이드 레벨0+1에 따르면, (제1 스토리지 장치와 제2 스토리지 장치) 및 (제3 스토리지 장치와 제4 스토리지 장치)는 미러링될 수 있다.
도 8 및 도 9는 본 발명의 일 실시 예에 따른 스토리지 시스템의 동작 방법을 설명하기 위한 도면이다. 한편, 도 8 및 도 9에서는 레이드 레벨이 도 5에서 설명한 레이드 레벨0인 경우를 가정하여 스토리지 시스템의 동작 방법을 설명하도록 한다.
도 8을 참조하면, DRAM(100) 및 스토리지 시스템(20000)이 도시되어 있다. 스토리지 시스템(20000)은 제어기 허브(200), 마스터 SSD(400), 제1 슬레이브 SSD(510) 및 제2 슬레이브 SSD(520)를 포함할 수 있다.
마스터 SSD(400)는 호스트 장치(1000)으로부터 커맨드 처리 요청을 수신할 수 있다. 여기서, 커맨드 처리 요청은 쓰기 요청 또는 리드 요청을 포함할 수 있다.
쓰기 동작시, 호스트 장치(1000)는 마스터 SSD(400)에게만 커맨드 처리 요청을 전달할 수 있다. 구체적으로, 호스트 장치(1000)의 CPU(300)는 데이터 및 커맨드를 DRAM(100)에 저장할 수 있고, 마스터 SSD(400)는 DRAM(100)으로부터 커맨드를 페치(command fetch)할 수 있다. 마스터 SSD(400)는 결정된 레이드 레벨에 기초하여 각 슬레이브 SSD로 커맨드를 분배할 수 있다. 구체적으로, 마스터 SSD(400)는 제1 슬레이브 SSD(510), 제2 슬레이브 SSD(520) 및 제3 슬레이브 SSD(530)에 대응되는 커맨드를 제1 슬레이브 SSD(510), 제2 슬레이브 SSD(520) 및 제3 슬레이브 SSD(530) 각각으로 전달할 수 있다. 그리고, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 커맨드 처리 요청에 대응되는 쓰기 동작을 수행할 수 있다. 구체적으로, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 커맨드에 기초하여 DRAM(100)으로부터 각 장치에 대응되는 데이터를 수신할 수 있다. 즉, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 쓰기 동작을 수행할 데이터를 각각 수신할 수 있다. 예를 들어, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 레이드 레벨0에 따라 스트라이핑된 데이터 중 각 장치에 대응되는 데이터를 저장할 수 있다. 그리고, 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)는 마스터 SSD(400)로 수신된 커맨드에 대응되는 동작의 완료를 통보할 수 있다. 마스터 SSD(400) 및 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)의 동작이 완료되면, 마스터 SSD(400)는 호스트 장치(1000)로 동작의 완료를 통지할 수 있다. 구체적으로, 마스터 SSD(400)는 CQ(Complete queue)를 전송할 수 있다.
리드 동작시, 호스트 장치(1000)는 마스터 SSD(400)에게만 커맨드 처리 요청을 전달할 수 있다. 구체적으로, 호스트 장치(1000)의 CPU(300)는 커맨드를 DRAM(100)에 저장할 수 있고, 마스터 SSD(400)는 DRAM(100)으로부터 커맨드를 페치(command fetch)할 수 있다. 마스터 SSD(400)는 결정된 레이드 레벨에 기초하여 각 슬레이브 SSD로 커맨드를 분배할 수 있다. 구체적으로, 마스터 SSD(400)는 제1 슬레이브 SSD(510), 제2 슬레이브 SSD(520) 및 제3 슬레이브 SSD(530)에 대응되는 커맨드를 제1 슬레이브 SSD(510), 제2 슬레이브 SSD(520) 및 제3 슬레이브 SSD(530) 각각으로 전달할 수 있다. 그리고, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 커맨드 처리 요청에 대응되는 리드 동작을 수행할 수 있다.
구체적으로, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 커맨드에 기초하여 DRAM(100)으로 각 장치에 대응되는 데이터를 송신할 수 있다. 즉, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 리드된 데이터를 각각 DRAM(100)으로 송신할 수 있다. 예를 들어, 마스터 SSD(400), 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530) 각각은 레이드 레벨0에 따라 스트라이핑된 데이터 중 각 장치에 대응되는 데이터를 DRAM(100)으로 송신할 수 있다. 그리고, 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)는 마스터 SSD(400)로 수신된 커맨드에 대응되는 동작의 완료를 통보할 수 있다. 마스터 SSD(400) 및 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)의 동작이 완료되면, 마스터 SSD(400)는 호스트 장치(1000)로 동작의 완료를 통지할 수 있다. 구체적으로, 마스터 SSD(400)는 컴플리션 큐(Complete queue; CQ)를 전송할 수 있다. 여기서, 컴플리션 큐는 호스트 장치(1000)으로부터 요청된 명령에 대한 완료 정보가 저장될 수 있다.
한편, 도 8 및 도 9에서는 레이드 레벨0인 경우를 기초로 스토리지 시스템의 동작을 설명하였으나, 레이드 레벨0에 한정되지 않는다.
구체적으로, 레이드 레벨1인 경우, 리드 동작은 레이드 레벨0인 경우와 동일하게 동작할 수 있다. 다만, 쓰기 동작시, 마스터 SSD(400) 및 제1 슬레이브 SSD(510) 내지 제3 슬레이브 SSD(530)은 동일한 데이터를 저장할 수 있다.
레이드 레벨 4인 경우, 마스터 SSD(400)는 패러티를 연산하고 저장할 수 있다. 쓰기 동작시, 각 슬레이브 SSD(500)는 DRAM(100)으로부터 수신한 데이터를 저장하고, 각 슬레이브 SSD(500)는 저장된 데이터를 마스터 SSD(400)로 전송할 수 있다. 그리고, 마스터 SSD(400)는 슬레이브 SSD(500)로부터 수신한 데이터를 이용하여 패러티 연산을 수행하고, 마스터 SSD(400)는 패러티를 저장할 수 있다. 리드 동작시, 각 슬레이브 SSD(500)는 DRAM(100)으로 전송한 데이터를 마스터 SSD(400)에도 전송할 수 있다. 그리고, 마스터 SSD(400)는 슬레이브 SSD(500)로부터 수신한 데이터를 이용하여 패러티 연산 및 에러 정정을 수행할 수 있다.
레이드 레벨5 또는 레이드 레벨6의 경우, 마스터 SSD(400) 및 슬레이브 SSD(500)는 마스터 SSD(400) 및 슬레이브 SSD(500)의 구분없이 패러티를 저장하는 장치로 패러티 연산을 위한 데이터를 전송할 수 있다. 즉, 레이드 레벨 4의 패러티 체크 연산을 마스터 SSD(400) 및 슬레이브 SSD(500)의 구분 없이 분산될 수 있다.
도 10은 본 발명의 일 실시 예에 따른 복수의 펑션을 포함하는 스토리지 시스템의 동작을 설명하기 위한 도면이다.
도 10을 참조하면, 마스터 SSD(400) 및 제2 슬레이브 SSD(520)는 각각 복수의 펑션(Function)을 포함할 수 있다. 여기서, 펑션은 스토리지 장치에 포함된 물리적 리소스들을 제공하는 독립적인 동작 단위일 수 있다. 구체적으로, 마스터 SSD(400)는 펑션0(410) 및 펑션1(420)을 포함할 수 있고, 제2 슬레이브 SSD(520)는 펑션0(521) 및 펑션1(522)을 포함할 수 있다. 각각의 펑션은 독립적인 동작 단위로, 스토리지 시스템은 실제로 마스터 SSD(400), 제1 슬레이브 SSD(510) 및 제2 슬레이브 SSD(520)로 3개의 SSD을 포함하나, 5개의 SSD를 포함하는 형태의 레이드를 구현할 수 있다.
일 실시 예에 따르면, 마스터 SSD(400)에 포함된 펑션0(410)이 도 8 및 도 9에서 설명한 마스터 SSD(400)의 역할을 수행할 수 있다. 그리고, 마스터 SSD(400)에 포함된 펑션1(420), 제1 슬레이브 SSD(510), 제2 슬레이브 SSD(520)에 포함된 펑션0(521) 및 펑션1(522)는 도 8 및 도 9에서 설명한 슬레이브 SSD(500)의 역할을 수행할 수 있다.
도 11은 본 발명의 일 실시 예에 따른 스토리지 시스템의 동작 방법을 설명하기 위한 도면이다.
스토리지 시스템은 마스터 스토리지 장치, 슬레이브 스토리지 장치 및 마스터 스토리지 장치와 슬레이브 스토리지 장치를 연결하는 제어기 허브를 포함할 수 있다. 여기서, 마스터 스토리지 장치 및 슬레이브 스토리지 장치는 SSD일 수 있다. 제어기 허브는 PCIe에 따른 프로토콜을 지원하는 루트 콤플렉스일 수 있다. 스토리지 시스템은 호스트 장치로부터 커맨드 처리 요청을 수신할 수 있다(S1110). 호스트 장치는 호스트 메모리를 이용하여 커맨드 처리 요청을 마스터 스토리지 장치에 제공할 수 있다.
스토리지 시스템(20000)은 기설정된 레이드 방식에 따라 커맨드 처리 요청을 제어기 허브를 통해 분배할 수 있다(S1120). 구체적으로, 마스터 스토리지 장치는 기설정된 레이드 레벨 또는 레이드 방식에 따라, 수신한 커맨드에 대응되는 슬레이브 스토리지 장치로 커맨드를 분배할 수 있다.
스토리지 시스템(20000)은 커맨드 처리 요청에 대응되는 동작을 수행할 수 있다(S1130). 여기서, 커맨드 처리 요청에 대응되는 동작은 기설정된 레이드 방식에 따라 데이터를 저장하는 쓰기 동작 또는 저장된 데이터를 독출하는 리드 동작일 수 있다. 그리고, 스토리지 시스템(20000)은 커맨드 처리 요청에 대응되는 동작이 완료되면, 호스트로 컴플리션 큐를 전송할 수 있다(S1140).
스토리지 시스템(20000)은 레이드 방식을 지원하는 별도의 레이드 컨트롤러를 포함하지 않고, SSD를 이용하여 레이드 컨트롤러의 역할을 수행할 수 있다. 즉, 별도의 레이드 컨트롤러나 하드웨어 장치의 추가 없이 피어-투-피어(Peer-to-Peer; P2P) 라우팅을 이용하여 SSD만으로 레이드 컨트롤러의 기능을 대체할 수 있다.
10000: 컴퓨팅 시스템
20000: 스토리지 시스템
200: 제어기 허브
400: 마스터 SSD
500: 슬레이브 SSD

Claims (20)

  1. 호스트로부터 결정된 레이드 레벨에 기초하여 데이터를 저장하는 마스터 스토리지 장치;
    상기 마스터 스토리지 장치로부터 분배된 커맨드에 따라 상기 데이터를 저장하는 슬레이브 스토리지 장치; 및
    상기 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치를 연결하는 제어기 허브;를 포함하되,
    상기 마스터 스토리지 장치는,
    상기 호스트로부터 커맨드 처리 요청을 수신하면, 상기 슬레이브 스토리지 장치에 대응되는 커맨드를 상기 제어기 허브를 통해 상기 슬레이브 스토리지 장치로 전달하고,
    상기 커맨드 처리 요청에 대응되는 상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치의 동작이 완료되면, 상기 호스트로 컴플리션 큐를 전송하는 스토리지 시스템.
  2. 제1항에 있어서,
    상기 마스터 스토리지 장치는,
    상기 데이터가 상기 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치에 스트라이핑되도록 상기 슬레이브 스토리지 장치를 제어하는 스토리지 시스템.
  3. 제1항에 있어서,
    상기 마스터 스토리지 장치는,
    상기 데이터가 상기 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치에 미러링되도록 상기 슬레이브 스토리지 장치를 제어하는 스토리지 시스템.

  4. 제1항에 있어서,
    상기 마스터 스토리지 장치는,
    상기 데이터의 에러 정정을 위한 패러티를 생성 및 저장하는 스토리지 시스템.
  5. 제1항에 있어서,
    상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치 중 적어도 하나의 스토리지 장치에 패러티를 저장하는 스토리지 시스템.
  6. 제1항에 있어서,
    상기 커맨드 처리 요청은,
    저장된 데이터에 대한 리드 요청을 포함하고,
    상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치는,
    상기 리드 요청에 대응되는 데이터를 상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치에서 각각 리드하고, 호스트 메모리에 각각 전송하는 스토리지 시스템.
  7. 제1항에 있어서,
    상기 커맨드 처리 요청은,
    데이터 저장을 요청하는 쓰기 요청을 포함하고,
    상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치는,
    호스트 메모리로부터 상기 쓰기 요청에 대응되는 데이터를 수신하고, 상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치에 각각 저장하는 스토리지 시스템.
  8. 제1항에 있어서,
    상기 슬레이브 스토리지 장치는,
    상기 커맨드 처리 요청에 대응되는 상기 슬레이브 스토리지 장치의 동작이 완료되면, 상기 마스터 스토리지 장치로 상기 동작의 완료를 통지하는 스토리지 시스템.
  9. 제1항에 있어서,
    상기 제어기 허브는,
    상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치 간의 P2P 라우팅을 지원하는 스토리지 시스템.
  10. 제9항에 있어서,
    상기 제어기 허브는,
    PCI(Peripheral component interconnect) 또는 PCIe(PCI express)에 따른 프로토콜을 이용하는 스토리지 시스템.
  11. 마스터 스토리지 장치, 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치와 상기 슬레이브 스토리지 장치를 연결하는 제어기 허브를 포함하는 스토리지 시스템의 동작 방법에 있어서,
    호스트로부터 커맨드 처리 요청을 수신하는 단계;
    기설정된 레이드 레벨에 따라, 상기 마스터 스토리지 장치가 상기 커맨드 처리 요청을 상기 제어기 허브를 통해 분배하는 단계;
    상기 커맨드 처리 요청에 대응되는 동작을 수행하는 단계; 및
    상기 동작이 완료되면, 상기 마스터 스토리지 장치가 상기 호스트로 컴플리션 큐를 전송하는 단계;를 포함하는 스토리지 시스템의 동작 방법.
  12. 제11항에 있어서,
    상기 분배하는 단계는,
    저장될 데이터가 상기 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치에 스트라이핑되도록 상기 슬레이브 스토리지 장치에 커맨드를 분배하는 스토리지 시스템의 동작 방법.
  13. 제11항에 있어서,
    상기 분배하는 단계는,
    저장될 데이터가 상기 슬레이브 스토리지 장치 및 상기 마스터 스토리지 장치에 미러링되도록 상기 슬레이브 스토리지 장치에 커맨드를 분배하는 스토리지 시스템의 동작 방법.
  14. 제11항에 있어서,
    상기 수행하는 단계는,
    상기 데이터의 에러 정정을 위한 패러티를 생성 및 저장하는 단계;를 더 포함하는 스토리지 시스템의 동작 방법.
  15. 제11항에 있어서,
    상기 수행하는 단계는,
    상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치 중 적어도 하나의 스토리지 장치에 패러티를 저장하는 단계;를 더 포함하는 스토리지 시스템의 동작 방법.
  16. 제11항에 있어서,
    상기 커맨드 처리 요청은,
    저장된 데이터에 대한 리드 요청을 포함하고,
    상기 수행하는 단계는,
    상기 리드 요청에 대응되는 데이터를 상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치에서 각각 리드하고, 호스트 메모리에 각각 전송하는 스토리지 시스템의 동작 방법.
  17. 제11항에 있어서,
    상기 커맨드 처리 요청은,
    데이터 저장을 요청하는 쓰기 요청을 포함하고,
    상기 수행하는 단계는,
    호스트 메모리로부터 상기 쓰기 요청에 대응되는 데이터를 수신하고, 상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치에 각각 저장하는 스토리지 시스템의 동작 방법.
  18. 제11항에 있어서,
    상기 커맨드 처리 요청에 대응되는 상기 슬레이브 스토리지 장치의 동작이 완료되면, 상기 마스터 스토리지 장치로 상기 동작의 완료를 통지하는 단계;를 더 포함하는 스토리지 시스템의 동작 방법.
  19. 제11항에 있어서,
    상기 제어기 허브는,
    상기 마스터 스토리지 장치 및 상기 슬레이브 스토리지 장치 간의 P2P 라우팅을 지원하는 스토리지 시스템의 동작 방법.
  20. 제19항에 있어서,
    상기 제어기 허브는,
    PCI(Peripheral component interconnect) 또는 PCIe(PCI express)에 따른 프로토콜을 이용하는 스토리지 시스템의 동작 방법.
KR1020210044873A 2021-04-06 2021-04-06 스토리지 시스템 및 그 동작 방법 KR102555800B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020210044873A KR102555800B1 (ko) 2021-04-06 2021-04-06 스토리지 시스템 및 그 동작 방법
US17/483,179 US20220318091A1 (en) 2021-04-06 2021-09-23 Storage system and operating method thereof
CN202111643697.0A CN115202568A (zh) 2021-04-06 2021-12-30 存储系统及其操作方法
US17/574,266 US11782616B2 (en) 2021-04-06 2022-01-12 Storage system and method of operating the same
TW111106199A TW202240390A (zh) 2021-04-06 2022-02-21 儲存系統及其操作方法
US18/316,241 US20230280917A1 (en) 2021-04-06 2023-05-12 Storage system and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210044873A KR102555800B1 (ko) 2021-04-06 2021-04-06 스토리지 시스템 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20220138758A true KR20220138758A (ko) 2022-10-13
KR102555800B1 KR102555800B1 (ko) 2023-07-17

Family

ID=83450290

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210044873A KR102555800B1 (ko) 2021-04-06 2021-04-06 스토리지 시스템 및 그 동작 방법

Country Status (4)

Country Link
US (1) US20220318091A1 (ko)
KR (1) KR102555800B1 (ko)
CN (1) CN115202568A (ko)
TW (1) TW202240390A (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140067404A (ko) * 2012-11-26 2014-06-05 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
KR20150121502A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US20180074757A1 (en) * 2016-09-09 2018-03-15 Toshiba Memory Corporation Switch and memory device
KR20180038813A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
KR20200017363A (ko) * 2018-08-08 2020-02-18 마벨 월드 트레이드 리미티드 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101504632B1 (ko) * 2009-03-25 2015-03-20 삼성전자주식회사 레이드를 사용한 장치들과 방법들
US8527699B2 (en) * 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140067404A (ko) * 2012-11-26 2014-06-05 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
KR20150121502A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US20180074757A1 (en) * 2016-09-09 2018-03-15 Toshiba Memory Corporation Switch and memory device
KR20180038813A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
KR20200017363A (ko) * 2018-08-08 2020-02-18 마벨 월드 트레이드 리미티드 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭

Also Published As

Publication number Publication date
CN115202568A (zh) 2022-10-18
KR102555800B1 (ko) 2023-07-17
US20220318091A1 (en) 2022-10-06
TW202240390A (zh) 2022-10-16

Similar Documents

Publication Publication Date Title
TWI515565B (zh) 直接記憶體存取的方法及其固態磁碟機、電腦程式產品
US9189397B2 (en) Data storage device including buffer memory
US20190324859A1 (en) Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive
US9372741B2 (en) Data storage device and operating method thereof
US11645011B2 (en) Storage controller, computational storage device, and operational method of computational storage device
US11625193B2 (en) RAID storage device, host, and RAID system
KR20210041158A (ko) 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
US10642531B2 (en) Atomic write method for multi-transaction
US9361123B2 (en) Boot from logical volume spanning plurality of PCI devices
US20230280917A1 (en) Storage system and method of operating the same
US20230229357A1 (en) Storage controller, computational storage device, and operational method of computational storage device
KR20220057355A (ko) 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
KR102425470B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10956245B1 (en) Storage system with host-directed error scanning of solid-state storage devices
KR102555800B1 (ko) 스토리지 시스템 및 그 동작 방법
TWI728634B (zh) 在儲存伺服器中進行資料存取管理的方法與裝置
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
KR20210001206A (ko) 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US9639417B2 (en) Storage control apparatus and control method
KR20150044654A (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
US11294587B2 (en) Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
KR20230040057A (ko) 시스템의 읽기 성능을 개선하기 위한 장치 및 방법
KR20240053298A (ko) 호스트와 메모리 시스템에서 맵데이터를 관리하는 장치 및 방법
KR20230172729A (ko) 스토리지 장치 및 이의 동작 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant