KR102199424B1 - 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 - Google Patents

솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 Download PDF

Info

Publication number
KR102199424B1
KR102199424B1 KR1020170085016A KR20170085016A KR102199424B1 KR 102199424 B1 KR102199424 B1 KR 102199424B1 KR 1020170085016 A KR1020170085016 A KR 1020170085016A KR 20170085016 A KR20170085016 A KR 20170085016A KR 102199424 B1 KR102199424 B1 KR 102199424B1
Authority
KR
South Korea
Prior art keywords
peer
ssd
input
ssds
peer group
Prior art date
Application number
KR1020170085016A
Other languages
English (en)
Other versions
KR20180020877A (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 삼성전자주식회사
Publication of KR20180020877A publication Critical patent/KR20180020877A/ko
Application granted granted Critical
Publication of KR102199424B1 publication Critical patent/KR102199424B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0688Non-volatile semiconductor memory arrays
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Systems (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

스토리지 시스템은 복수의 솔리드 스테이트 드라이브들을 포함한다. 상기 솔리드 스테이트 드라이브들의 각각은 상기 솔리드 스테이트 드라이브들의 피어 그룹의 종점을 포함하고, 상기 솔리드 스테이트 드라이브들 중 하나는 상기 피어 그룹의 주 솔리드 스테이트 드라이브가 되거나 모든 솔리드 스테이트 드라이브들은 동등한 피어들로서 처리된다. 상기 솔리드 스테이트 드라이브들의 각각은, 호스트 컴퓨팅 장치로부터 입출력 통신들을 수신하는 상기 호스트 컴퓨팅 장치에 연결된 호스트 인터페이스 포트, 상기 피어 그룹 내의 각각 다른 솔리드 스테이트 드라이브의 피어-인터페이스 포트에 연결되는 피어-인터페이스 포트, 및 상기 호스트 인터페이스 포트 및 상기 피어-인터페이스 포트에 연결되는 컨트롤러를 포함한다. 상기 주 솔리드 스테이트 드라이브의 컨트롤러는 호스트 컴퓨팅 장치로부터 수신된 입출력 통신들에 응답하여 상기 피어 그룹에 의해 제공되는 조정된 데이터-보호 구성과 관련된 데이터-보호 계산들을 제공하고, 그리고 상기 피어-인터페이스 포트를 통해 조정된 데이터-보호 구성 정보를 상기 피어 그룹의 다른 종점들의 컨트롤러들에 전달한다.

Description

솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템{SOLID STATE DRIVE AND STORAGE SYSTEM INCLUDING THE SAME}
본 발명은 솔리드 스테이트 드라이브에 관한 것으로, 좀 더 상세하게는 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템에 관한 것이다.
데이터 보호는 스토리지 시스템들에 대한 중요한 특성이다. 스토리지 시스템들을 위한 데이터 보호를 제공하는 데 사용되는 대중적인 기술들은 RAID(Redundant Array of Independent Disks), 소거 코딩(Erasure Coding), 복제(Replication) 등을 포함한다. 복제는, 예를 들어, RAID-1 구성(미러링)으로 구현될 수 있다. 소거 코딩은 단일 노드보다는 다중 노드들에 대한 솔루션으로 표현될 수 있다.
RAID 구성들을 제공하기 위해 오늘날 사용되는 두 대안적인 접근들이 있다(소프트웨어 접근(SW RAID) 및 하드웨어 접근(HW RAID)). “SW RAID”들은 통상적으로 스토리지 시스템 드라이브들이 물리적으로 존재하는 동일한 호스트 상에서 구동하는 소프트웨어 모듈로서 구현된다. “HW RAID”들은 종종, ROC(RAID on Chip)와 같은, 스토리지 시스템의 드라이브들에 호스트 연결을 제공하며 호스트 CPU(central processing unit)로부터 RAID 계산들을 떠넘기는 컨트롤러 ASIC(Application Specific Integrated Circuit)으로 구현된다.
SW RAID는 보통 호스트 시스템의 운영 체제(OS)로 집적되기 때문에, SW RAID 접근의 장점들은 상대적으로 낮은 취득 비용 및 RAID 메커니즘을 업그레이드 및/또는 변경하기 용이함을 포함한다. SW RAID의 취득 비용이 상대적으로 낮을 수 있지만, 취득 비용은 주어진 성능의 관점에서 HW RAID 접근에 대해 단위 당 더 낮을 수 있다. SW RAID의 단점들은 호스트가 부팅(초기화)한 후에 SW RAID이 동작하는 것을 포함한다. 부팅 동안의 어떠한 드라이브 실패들은 SW RAID가 초기화되지 않게 할 수 있지만, 그러한 단점은 RAID BIOS를 실행하는 것에 의해 완화될 수 있다. 다른 단점은 SW RAID가 호스트 시스템의 계산 리소스를 공유하는 것이고, 따라서, 시스템 성능은 부정적인 영향을 받을 수 있다. 이러한 단점은 비교적 단순한 SW RAID 알고리즘을 활용하는 것에 의해 감소될 수 있다. 또 다른 단점은 후-기록(write-back) 캐시가 배터리 백업을 사용할 수 없고 그리고 동시-기록(write-through) 시스템이어야 한다는 것을 포함한다. SW RAID의 또 다른 단점은 더 높은 코어 카운트 또는 XOR 명령어 지원을 가지는 CPU들이 그러한 SW RAID 시스템들과 관련된 취득 비용을 잠재적으로 증가시킬 수 있다는 것이다.
HW RAID 접근의 장점들은 호스트 시스템 CPU로부터 전용 계산 및 메모리 액세스 RAID 기능을 오프로드(offload)하는 것을 포함한다. 추가적으로, HW RAID들은 RAID 5 및 RAID 6와 같은 더 복잡한 RAID 구성들을 제공하는 능력을 포함하고 그로 인해 상대적으로 높은 성능 대비 비용의 비율을 제공한다. HW RAID들은 또한 부팅 시 보호되고, 그리고 HW RAID들은 OS에 구속 받지 않기 때문에 다른 OS로의 업그레이드 및/또는 이송(migration)이 상대적으로 쉽다. HW RAID들의 단점들은 ROC 하드웨어의 성능에 의해 제한되는 성능을 포함하고, 그리고, 예를 들어, 플러그 인 형태의 카드 상의 입출력 프로세서 및 추가적인 메모리가 비용을 증가시키기 때문에, HW RAID들은 상대적으로 높은 비용이 든다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 네트워크 내에서 호스트의 부담을 경감시키는 솔리드 스테이트 드라이버를 제공하는데 있다.
본 발명의 실시 예에 따른 스토리지 시스템은 복수의 솔리드 스테이트 드라이브들을 포함할 수 있다. 상기 솔리드 스테이트 드라이브들의 각각은 상기 솔리드 스테이트 드라이브들의 피어 그룹의 종점을 포함하고, 상기 솔리드 스테이트 드라이브들 중 하나는 상기 피어 그룹의 주 솔리드 스테이트 드라이브가 되며, 상기 솔리드 스테이트 드라이브들의 각각은, 적어도 하나의 호스트 컴퓨팅 장치에 통신하도록 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 입출력 통신들을 수신하는 호스트 인터페이스 포트, 상기 피어 그룹 내의 다른 각각의 솔리드 스테이트 드라이브의 피어-인터페이스 포트들과 통신하도록 연결되는 피어-인터페이스 포트, 및 상기 호스트 인터페이스 포트 및 상기 피어-인터페이스 포트에 연결되는 컨트롤러를 포함하고, 상기 주 솔리드 스테이트 드라이브의 컨트롤러는 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신된 상기 입출력 통신들에 응답하여 상기 피어 그룹에 의해 제공되는 조정된 데이터-보호 구성과 관련된 데이터-보호 계산들을 제공하고, 조정된 데이터-보호 구성 정보를 상기 피어-인터페이스 포트를 통해 상기 피어 그룹의 다른 종점들의 컨트롤러들에 전달할 수 있다. 일 실시 예에서, 상기 피어 그룹의 솔리드 스테이트 드라이브들의 호스트 인터페이스 포트들 및 피어-인터페이스 포트들은 PCIe(Peripheral Component Interface Express) 통신 네트워크, 이더넷 통신 네트워크, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크를 통해 상기 적어도 하나의 호스트 컴퓨팅 장치에 연결될 수 있다.
본 발명의 실시 예에 따른 솔리드 스테이트 드라이브는 적어도 하나의 호스트 컴퓨팅 장치에 통신하도록 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 입출력 통신들을 수신하는 호스트 인터페이스 포트, 피어 그룹 내의 다른 솔리드 스테이트 드라이브들의 피어-인터페이스 포트들 과 통신하도록 연결되는 피어-인터페이스 포트, 및 상기 호스트 인터페이스 포트 및 상기 피어-인터페이스 포트에 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신된 상기 입출력 통신들에 응답하여 상기 피어 그룹에 의해 제공되는 조정된 데이터-보호 구성과 관련된 데이터-보호 계산들을 제공하고, 그리고 상기 피어-인터페이스 포트를 통해 조정된 데이터-보호 구성 정보를 상기 피어 그룹의 다른 솔리드 스테이트 드라이브들의 컨트롤러들에 전달하는 컨트롤러를 포함할 수 있다. 일 실시 예에서, 상기 솔리드 스테이트 드라이브의 호스트 인터페이스 포트 및 피어-인터페이스 포트는 PCIe(Peripheral Component Interface Express) 통신 네트워크, 이더넷 통신 네트워크, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크를 통해 상기 적어도 하나의 호스트 컴퓨팅 장치에 연결될 수 있다.
본 발명의 실시 예에 따른 스토리지 시스템은 복수의 솔리드 스테이트 드라이브들을 포함할 수 있다. 상기 솔리드 스테이트 드라이브들의 각각은 상기 솔리드 스테이트 드라이브들의 피어 그룹에서 피어 종점을 포함할 수 있다. 상기 솔리드 스테이트 드라이브들의 각각은, 적어도 하나의 호스트 컴퓨팅 장치에 통신하도록 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 입출력 통신들을 수신하는 호스트 인터페이스 포트, 상기 피어 그룹 내의 다른 솔리드 스테이트 드라이브들의 피어-인터페이스 포트들 과 통신하도록 연결되는 피어-인터페이스 포트, 및 상기 호스트 인터페이스 포트 및 상기 피어-인터페이스 포트에 연결되는 컨트롤러를 포함하고, 상기 컨트롤러는 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신된 상기 입출력 통신들에 응답하여 상기 피어 그룹에 의해 제공되는 조정된 데이터-보호 구성과 관련된 데이터-보호 계산들을 제공하고, 그리고 상기 피어-인터페이스 포트를 통해 조정된 데이터-보호 구성 정보를 상기 피어 그룹의 다른 피어 종점들에 전달할 수 있다. 일 실시 예에서, 상기 솔리드 스테이트 드라이브의 호스트 인터페이스 포트 및 피어-인터페이스 포트는 PCIe(Peripheral Component Interface Express) 통신 네트워크, 이더넷 통신 네트워크, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크를 통해 상기 적어도 하나의 호스트 컴퓨팅 장치에 연결될 수 있다.
본 발명의 실시 예에 따르면, 네트워크 내에서 솔리드 스테이트 드라이브들의 피어 그룹을 형성하고, 피어 그룹 내에서 데이터 보호 구성에 기초하여 결함 또는 오류를 처리하여 호스트의 부담을 경감할 수 있다.
다음의 절에서, 본 발명의 양상들이 도면에 도시된 실시 예들을 참조하여 설명될 것이다.
도 1a는 본 발명에 따른 네트워크에 연결되고 그리고 피어링(peering) 능력들을 가지는 SSD의 예시적인 실시 예를 보여준다.
도 1b는 본 발명에 따른 PCIe 구조(PCIe fabric)에 연결되고 그리고 피어링 능력들을 가지는 SSD의 예시적인 실시 예를 보여준다.
도 2a는 다수의 호스트들에 연결되는 통신 네트워크에 배열되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 네트워크-연결 SSD들의 실시 예를 보여준다.
도 2b는 다수의 호스트 CPU들을 포함하는 PCIe 구조에 연결되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 SSD들의 실시 예를 보여준다.
도 3a는 단일 호스트 CPU에 연결되는 통신 네트워크에 배열되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 네트워크-연결 SSD들의 실시 예를 보여준다.
도 3b는 단일의 호스트 CPU에 연결되는 PCIe 구조에 연결되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 SSD들의 실시 예를 보여준다.
도 4a는 본 발명에 따른 데이터가 호스트 입출력 버스를 통해 단지 한번 이동하는 것을 제공하는 네트워크 환경에서 쓰기 입출력의 제 1 실시 예에 대한 순서도를 보여준다.
도 4b는 본 발명에 따른 데이터가 호스트 입출력 버스를 통해 단지 한번 이동하는 것을 제공하는 PCIe-구조 환경에서 쓰기 입출력의 제 1 실시 예에 대한 순서도를 보여준다.
도 5a는 본 발명에 따른 주 입출력 컨트롤러가 호스트로부터 데이터 페이로드(data payload)를 획득하는 네트워크 환경에서 쓰기 입출력의 제 2 실시 예에 대한 순서도를 보여준다.
도 5b는 본 발명에 따른 주 입출력 물리 기능이 호스트로부터 데이터 페이로드(data payload)를 획득하는 PCIe-구조 환경에서 쓰기 입출력의 제 2 실시 예에 대한 순서도를 보여준다.
도 6a는 본 발명에 따른 네트워크 환경에서 읽기 입출력의 실시 예에 대한 순서도를 보여준다.
도 6b는 본 발명에 따른 PCIe-구조 환경에서 읽기 입출력의 실시 예에 대한 순서도를 보여준다.
도 7은 본 발명에 따른 시스템 레벨에서 결함-처리(fault-handling) 프로세스의 실시 예의 순서도를 보여준다.
도 8은 본 발명에 따른 SSD 종점들의 피어 그룹을 형성하기 위해 하나 이상의 SSD들에 내장되는 특징들 및 능력들을 가지는 스토리지 시스템을 포함하는 메모리 시스템을 보여준다.
이하의 본문에서, 다양한 상세한 설명들은 철저한 본문의 이해를 제공하기 위하여 제시된다. 그러나, 이러한 상세한 설명들 없이 기재된 본 발명의 사상이 구현될 수 있음은 당업자에 의해 잘 이해될 것이다. 다른 예에서, 잘 알려진 방법들, 절차들, 구성들 및 회로들은 본문을 모호하게 하지 않기 위하여 설명되지 않는다.
상세한 설명에서 "일 실시 예" 또는 "실시 예"를 참조하는 것은 실시 예와 연관되어 설명되는 특정한 특징, 구조, 또는 특성이 본문의 적어도 하나의 실시 예에 포함될 수 있음을 의미한다. 따라서, 본문의 다양한 위치에서 사용되는 "일 실시 예에서" 또는 "실시 예에서" 또는 "일 실시 예에 따라" 또는 유사한 의미를 갖는 다른 표현들은 동일한 실시 예를 참조하는 것을 요구하지 않는다. 더욱이, 특정한 특징들, 구조들, 또는 특성들은 적절한 방식으로 하나 이상의 실시 예들에서 조합될 수 있다. 이러한 점에서, 본문에서 사용되는 것처럼, “예시적인”이라는 단어는 “예, 예시, 또는 실례로서 제공되는”을 의미한다. “예시적인”이라는 용어로 본문에서 설명된 어떤 실시 예는 다른 실시 예들에 비하여 필연적으로 바람직하거나 유리한 것으로 해석되지 않는다. 또한, 본문에서 언급된 내용에 따라, 단수 용어는 대응하는 복수의 형태를 포함하고, 그리고 복수 용어는 대응하는 단수 형태를 포함할 수 있다. 또한, 본문에서 도시되고 언급된 다양한 도면들(구성 요소 도면들도 포함)은 단지 예시적인 목적을 위한 것이며, 실제 척도로 그려진 것을 아니라는 점에 유의해야 한다. 유사하게, 다양한 파형들 및 타이밍도들은 단지 예시적인 목적으로 도시된다. 예를 들면, 요소들의 일부의 치수들은 명확성을 위해 다른 요소들에 비해 과장될 수 있다. 또한, 적절한 것으로 고려되면, 참조 번호들은 대응하는 및/또는 유사한 요소들을 표시하기 위해 도면들 사이에서 반복된다.
본 명세서에서 사용된 용어들은 단지 특정한 실시 예들을 설명하기 위한 것이고, 본 발명을 제한하려는 것으로 의도되지 않았다. 본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “포함하다” 및/또는 “포함하고 있는” 용어들은, 본 명세서에서 사용될 때, 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 성분들이 존재를 명시하나, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 및/또는 그것들의 그룹들의 존재 또는 추가를 불가능하게 하지 않는다. 본 명세서에서 사용된 바와 같이, “그리고/또는” 용어는 하나 또는 그 이상의 열거된 항목들과 연관된 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다. "제 1", "제 2"와 같은 용어들은 앞서 설명된 구성에 대한 라벨로써 사용되고, 별도의 정의가 없는 한 특정한 순서(예를 들어, 공간적, 시간적, 논리적, 등)를 암시하는 것은 아니다. 더욱이, 동일한 참조 번호들은 동일하거나 또는 유사한 기능을 갖는 부분들, 성분들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭하기 위하여 둘 이상의 도면들에 걸쳐 사용될 수 있다. 그러나, 이러한 사용은 단지 설명의 간결성 및 편의를 위한 것이며, 이러한 성분들 및 유닛들의 구성 또는 구조적인 세부 사항들이 모든 실시 예들 또는 공통적으로 참조되는 부분들/모듈들에서 동일한 것으로 암시되지 않으며, 단순히, 본 발명의 특정 실시 예들을 지칭하기 위한 하나의 수단이다.
다르게 정의되지 않는 한, 본 명세서에서 사용된 모든 용어들(기술적 그리고 과학적 용어들을 포함하는)은 본 발명이 속한 기술 분야에서 당업자에 의해 일반적으로 이해되는 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의된 이러한 용어들은 본 명세서 그리고/또는 관련 기술의 문맥에서 그들의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의되지 않는 한 이상화되거나 지나지게 형식적인 감각으로 해석되지 않아야 한다.
본문에서 사용되는 바와 같이, “모듈”이라는 용어는 모듈과 관련하여 본문에서 설명되는 기능을 제공하는 소프트웨어, 펌웨어 및/또는 하드웨어의 어떠한 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트나 명령어들로서 구현될 수 있고, 그리고 본문에서 설명되는 어떠한 실행들에 사용되는 바와 같이 “하드웨어”라는 용어는 프로그램 가능한 회로에 의해 실행되는 명령어들을 저장하는 유선 회로, 프로그램 가능한 회로, 상태 머신 회로, 및/또는 펌웨어를, 예를 들어, 단독으로 또는 어떤 조합으로, 포함할 수 있다. 모듈들은 더 큰 시스템, 예를 들어, 이에 제한되지 않지만, 집적 회로(integrated circuit, IC), 시스템 온 칩(system on-chip, SoC) 등의 부분을 형성하는 회로로서, 집합적으로 또는 개별적으로, 구현될 수 있다.
본문에 개시된 내용은 피어(peer) 그룹에서 각 SSD(솔리드 스테이트 드라이브, solid-state drive) 종점은 내장된 특징들 및 기능들을 포함하는 SSD 종점들의 피어 그룹을 형성하기 위해 SSD에 내장될 수 있는 특징들 및 기능들 제공한다. 특징들 및 기능들은 드라이브 실패들에 대하여 데이터 손실을 방지하고, SSD 드라이브들에 균형 입출력(IO)을 로드하고, 어떠한 성능 상쇄 없이 호스트 CPU로부터 SSD들로 집중적인 데이터-보호 관련 계산들을 오프로드하고, 그리고 CPU로부터 물리적 입출력(IO)을 오프로드하는 기능을, 차례대로, 제공한다. 따라서, 본문에서 개시되는 바와 같이 호스트 CPU와 피어링 능력들을 가지는 SSD 사이에 중개 장치는 필요하지 않고, 이로 인해 CPU 오버헤드는 최소화되기 때문에 호스트 CPU에 대해 가능한 최고의 성능을 제공한다. 또한, 일 실시 예는 피어 그룹 변경들 및/또는 검출된 결함들에 대하여 호스트 시스템에 경보하는 비동기(Async) 이벤트 알림 메시지를 활용할 수 있다.
본문에서 개시된 내용은 SSD 장치들의 피어 그룹에 걸쳐 입출력(IO) 프로세싱을 조정한다. 더욱이, 본문에서 개시된 내용은 피어 그룹의 SSD들이 PCIe 통신 네트워크 인터페이스, 이더넷 통신 네트워크 인터페이스, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크에 기초하는, 그러나 이것들에 한정되지 않는, 인터페이스를 활용하도록 할 수 있다.
도 1a는 본 발명에 따른 네트워크에 연결되고 그리고 피어링 능력들을 가지는 SSD의 예시적인 실시 예를 보여준다. 도 1a에 도시된 바와 같이, SSD(100)는 SSD 컨트롤러(101) 및 불휘발성 메모리(NVM, 102)를 포함한다. SSD 컨트롤러(101)는 제 1 입출력 컨트롤러(103), 제 2 입출력 컨트롤러(104), 내장 RAM(random access memory, 105), 피어 입출력 컨트롤러(106) 및 피어 입출력 메모리(107)를 포함한다. SSD(100)는 제 1 네트워크 인터페이스 포트(108), 제 2 네트워크 인터페이스 포트(109) 및 피어 네트워크 인터페이스 포트(110)를 또한 포함한다. 제 1 입출력 컨트롤러(103) 및 제 2 입출력 컨트롤러(104)는 제 1 네트워크 인터페이스 포트(108) 및 제 2 네트워크 인터페이스 포트(109)에 각각 통신하도록 연결된다. 제 1 입출력 컨트롤러(103) 및 제 2 입출력 컨트롤러(104)는 SSD(100)에 명령들 및 데이터를 전달하도록 호스트 소프트웨어에게 루트 포트 기능을 제공한다. 제 1 네트워크 인터페이스 포트(108) 및 제 2 네트워크 인터페이스 포트(109)는, 예를 들어, 통신 네트워크(도 1a에 미도시)를 통해 SSD(100)를 하나 이상의 호스트 장치들(도 1a에 미도시)에 통신하도록 연결할 수 있다. 일 실시 예에서, 내장 RAM(105)은 전원-장애 보호(power-failure protection)를 포함할 수 있다.
피어 네트워크 인터페이스 포트(110)는, 피어 그룹 내의 다른 피어 SSD들(종점들)과 통신하기 위하여, 이에 한정되지 않지만, 이더넷 통신 네트워크, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크와 같은 통신 네트워크(도 1a에 미도시)에 통신하도록 연결될 수 있다. 피어 입출력 컨트롤러(106)은 입출력 기능을 제공하기 위해 피어 네트워크 인터페이스(110)에 통신하도록 연결될 수 있다. 일 실시 예에서, 피어 입출력 컨트롤러(106)는 제 1 입출력 컨트롤러(103) 또는 제 2 입출력 컨트롤러(104)로 결합될 수 있다. 일부 실시 예들에서, 네트워크 인터페이스 및 피어 네트워크 인터페이스는, 특히 이더넷 또는 인피니밴드 환경에서, 결합될 수 있다. 소거-코딩된 피어 그룹에서, 별도의 논리 연결만이 사용될 수 있다. 일 실시 예에서, 피어 입출력 메모리(107)는 전력-장애 보호를 포함할 수 있다.
도 1b는 본 발명에 따른 PCIe 구조(PCIe fabric)에 연결되고 그리고 피어 능력들을 가지는 SSD(150)의 예시적인 실시 예를 보여준다. 도 1b에 도시된 바와 같이, SSD(150)는 SSD 컨트롤러(151) 및 불휘발성 메모리 장치(152)를 포함한다. SSD 컨트롤러(151)는 제 1 입출력 물리 기능(physical function, PF)(153), 제 2 입출력 물리 기능(154), 내장 RAM(155), 피어 입출력 물리 기능(156) 및 피어 입출력 메모리(157)를 포함한다. SSD(150)는 제 1 호스트 인터페이스 포트(158), 제 2 호스트 인터페이스 포트(159) 및 피어 인터페이스 포트(160)를 또한 포함한다. 제 1 입출력 물리 기능(153) 및 제 2 입출력 물리 기능(154)는 제 1 호스트 인터페이스 포트(158) 및 제 2 호스트 인터페이스 포트(159)에 각각 통신하도록 연결된다. 제 1 입출력 물리 기능(153) 및 제 2 입출력 물리 기능(154)는 SSD(150)에 명령들 및 데이터를 전달하도록 호스트 소프트웨어에게 루트 포트 기능을 제공한다. 제 1 호스트 인터페이스 포트(158) 및 제 2 호스트 인터페이스 포트(159)는, 예를 들어, PCIe 구조(도 1b에 미도시)를 통해 SSD(150)를 하나 이상의 호스트 장치들(도 1b에 미도시)에 통신하도록 연결할 수 있다. 일 실시 예에서, 내장 RAM(155)은 전원-장애 보호를 포함할 수 있다.
피어 인터페이스 포트(160)는 피어 그룹 내의 다른 피어 SSD들(종점들)과 통신하기 위해 PCIe 구조(도 1b에 미도시)에 통신하도록 연결될 수 있다. 피어 입출력 물리 기능(156)은 입출력 기능을 제공하기 위해 피어 인터페이스 포트(160)에 통신하도록 연결될 수 있다. 일 실시 예에서, 피어 입출력 물리 기능(156)은 제 1 입출력 물리 기능(153) 또는 제 2 입출력 물리 기능(154)으로 결합될 수 있다. 소거-코딩된 피어 그룹에서, 별도의 논리 연결만이 사용될 수 있다. 일 실시 예에서, 피어 입출력 메모리(107)는 전력-장애 보호를 포함할 수 있다.
PCIe SSD(150)는 둘 이상의 호스트 인터페이스 포트들 및/또는 단지 하나의 입출력 물리 기능만을 포함할 수 있다. 또한, 본문에서 사용된 바와 같이, “물리 기능(PF)”이라는 용어 및 “가상 기능(virtual function, VF)”이라는 용어는 교환하여 사용될 수 있다. 즉, 본문에서 개시된 내용과 연관되어 설명되는 물리 기능들은 가상 기능들과 교환 가능할 수 있다. 따라서, 본문에서 설명되는 물리 기능들은 대안으로 가상 기능들로 구현될 수 있다.
도 2a는 다수의 호스트들(201)에 연결되는 통신 네트워크(202)에 배열되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 네트워크-연결 SSD(100)들의 실시 예를 보여준다. 도 2a에 도시된 바와 같이, 네트워크(200)는, 이것에 한정되지 않지만, 이더넷 통신 네트워크 인터페이스, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크와 같은, 통신 네트워크(202)에 통신하도록 연결된 복수의 호스트 CPU(201)들 및 복수의 네트워크-연결 SSD(100)들을 포함한다. 도 2a에 도시되지 않은 통신 네트워크(202)에 통신하도록 연결된 다른 리소스들 및/또는 구성들이 있을 수 있음은 이해될 것이다.
호스트 CPU(201)들의 각각은 네트워크 인터페이스를 통해 통신 네트워크(202)에 통신하도록 연결된다. 네트워크-연결 SSD(100)들의 각각도 하나 이상의 네트워크 인터페이스들을 통해 통신 네트워크(202)에 또한 연결된다. 피어 그룹의 각 SSD(100)는 통신 네트워크(202) 내의 링크(link)를 통해 SSD(100)를 다른 SSD(100) 종점들에 통신하도록 연결하는 피어 네트워크 인터페이스 포트를 포함한다. 도 2a에 명확하게 도시되지 않았지만, 피어 그룹의 SSD(100)들 사이의 피어 통신들은, 이에 한정되지 않지만, CPU(201)들 사이, CPU(201)들과 네트워크-연결 SSD(100)들 사이, 및/또는 CPU(201)들과 다른 리소스들 및/또는 구성요소들(미도시) 사이와 같은, 통신 네트워크(202)를 통해 다른 통신들로부터 분리될 수 있다.
도 2b는 다수의 호스트 CPU들을 포함하는 PCIe 구조에 연결되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 SSD(150)들의 실시 예를 보여준다. 도 2b에 도시된 바와 같이, 네트워크(250)는 PCIe 구조(252)에 통신하도록 연결된 복수의 호스트 CPU(251)들 및 복수의 PCIe SSD(150)들을 포함한다. 도 2b에 도시되지 않은 PCIe 구조(252)에 통신하도록 연결된 다른 리소스들 및/또는 구성들이 있을 수 있음은 이해될 것이다.
호스트 CPU(251)들의 각각은 루트 포트를 통해 PCIe 구조(252)에 통신하도록 연결된다. 각 CPU(251)는 단일 루트 포트를 가지고 있는 것으로 도시되고 있으나, 각 CPU(251)는 하나 이상의 루트 포트들을 가질 수 있음은 이해될 것이다. PCIe SSD(150)들의 각각도 하나 이상의 호스트 인터페이스 포트들을 통해 PCIe 구조(252)에 또한 연결된다. 피어 그룹의 각 PCIe SSD(150)는 PCIe 구조(252) 내의 전용 링크를 통하여 PCIe SSD(150)를 다른 PCIe SSD(150) 종점들에 통신하도록 연결하는 피어 인터페이스 포트를 포함한다. 다른 실시 예에서, 피어 그룹의 각 PCIe SSD(150)는 PCIe 구조(252) 내의 다른 통신들과 공유되는 링크를 통하여 PCIe SSD(150)를 다른 PCIe SSD(150) 종점들에 통신하도록 연결하는 피어 인터페이스 포트를 포함한다. 피어 그룹의 PCIe SSD(150)들 사이의 피어 통신들은, 이에 한정되지 않지만, CPU(251)들 사이, CPU(251)들과 PCIe SSD(150)들 사이, 및/또는 CPU(251)들과 다른 리소스들 및/또는 구성요소들(미도시) 사이와 같은, PCIe 구조(252)를 통해 다른 통신들로부터 분리될 수 있다.
도 3a는 단일의 호스트(301)에 연결되는 통신 네트워크(302)에 배열되며, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 네트워크-연결 SSD(100)들의 실시 예를 보여준다. 도 3a에 도시된 바와 같이, 네트워크(300)는, 이것에 한정되지 않지만, 이더넷 통신 네트워크 인터페이스, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크와 같은, 통신 네트워크(302)에 통신하도록 연결된 호스트 CPU(301) 및 복수의 네트워크-연결 SSD(100)들을 포함한다. 도 3a에 도시되지 않은 통신 네트워크(302)에 통신하도록 연결된 다른 리소스들 및/또는 구성요소들이 있을 수 있음은 이해될 것이다.
호스트 CPU(301)는 네트워크 인터페이스를 통해 통신 네트워크(302)에 통신하도록 연결된다. SSD(100)들의 각각도 하나 이상의 네트워크 인터페이스들을 통해 통신 네트워크(302)에 또한 연결된다. 피어 그룹의 각 SSD(100)는 통신 네트워크(302) 내의 전용 링크를 통해 SSD(100)를 다른 SSD(100) 종점들에 통신하도록 연결하는 피어 네트워크 인터페이스 포트를 포함한다. 다른 실시 예에서, 피어 그룹의 각 SSD(100)는 통신 네트워크(302) 내의 다른 통신들과 공유되는 링크를 통해 SSD(100)를 다른 SSD(100) 종점들에 통신하도록 연결하는 피어 네트워크 인터페이스 포트를 포함한다. 피어 그룹의 SSD(100)들 사이의 피어 통신들은, 이에 한정되지 않지만, CPU(301)와 SSD(100)들 사이, 및/또는 CPU(301)와 다른 리소스들 및/또는 구성요소들(미도시) 사이와 같은, 통신 네트워크(302)를 통해 다른 통신들로부터 분리될 수 있다.
도 3b는 단일의 호스트 CPU(351)에 연결하는 PCIe 구조에 연결되는, 본 발명에 따라 각각 피어링 능력을 가지는, 복수의 SSD(150)들의 실시 예를 보여준다. 도 3b에 도시된 바와 같이, 네트워크(350)는 PCIe 구조(352)에 통신하도록 연결된 호스트 CPU(351) 및 복수의 PCIe SSD(150)들을 포함한다. 도 3b에 도시되지 않은 PCIe 구조(352)에 통신하도록 연결된 다른 리소스들 및/또는 구성요소들이 있을 수 있음은 이해될 것이다.
호스트 CPU(351)는 루트 포트를 통해 PCIe 구조(252)에 통신하도록 연결된다. CPU(351)는 단일 루트 포트를 가지는 것으로 도시되어 있지만, CPU(351)는 하나 이상의 루트 포트들을 가질 수 있음은 이해될 것이다. PCIe SSD(150)들의 각각도 하나 이상의 호스트 인터페이스 포트들을 통해 PCIe 구조(352)에 연결된다. 피어 그룹의 각 PCIe SSD(150)는 PCIe 구조(352) 내의 전용 링크를 통하여 PCIe SSD(150)를 다른 PCIe SSD(150) 종점들에 통신하도록 연결하는 피어 인터페이스 포트를 포함한다. 다른 실시 예에서, 피어 그룹의 각 PCIe SSD(150)는 PCIe 구조(352) 내의 다른 통신들과 공유되는 링크를 통하여 PCIe SSD(150)를 다른 PCIe SSD(150) 종점들에 통신하도록 연결하는 피어 인터페이스 포트를 포함한다. 피어 그룹의 PCIe SSD(150)들 사이의 피어 통신들은, 이에 한정되지 않지만, CPU(351)와 PCIe SSD(150)들 사이, 및/또는 CPU(351)와 다른 리소스들 및/또는 구성들(미도시) 사이와 같은, PCIe 구조(352)를 통해 다른 통신들로부터 분리될 수 있다.
이에 한정되지 않지만, 주 종점으로서 하나의 마스터 종점을 가질 수 있는 피어 그룹과 같은, 여러 형태의 피어 그룹들이 가능하고, 그리고 다른 종점들은 부차적인 종점들이다. 이러한 형태의 피어 그룹에 대해, 마스터 종점은 읽기 및 쓰기 입출력들의 주 목표일 수 있고, 부차적인 종점들은 호스트 CPU로부터 어떠한 분명한 개입 없이 입출력 완료(IO completion)들에 참여할 수 있다. 피어 그룹의 형태의 다른 예는 피어 그룹의 모든 구성원들이 동등한 피어들로서 처리될 수 있는 피어 그룹을 포함한다. 이러한 형태의 피어 그룹에 대해, 호스트 CPU는 종점들 상에 입출력 로드(IO load)를 공유하기 위해, 순차 순환(round robin) 방식과 같은, 정책에 기초하여 입출력(IO)들을 그룹 내의 모든 피어들에게 전송한다. 피어 종점들은, 순차적으로, 호스트 CPU로부터 어떠한 분명한 개입 없이 그룹 내의 그들의 피어들에게 입출력 완료 태스크(IO completion task)들을 전송할 수 있다.
일 실시 예에서, SSD들의 피어 그룹의 논리 표현은 SSD들이 지원하는 스토리지 프로토콜(storage protocol)에 특이한 고유의 식별자들을 포함한다. 예를 들면, SCSI-프로토콜 기반의 장치들은 SCSI UUID(Universally Unique ID)를 지원할 것이다. 각 SSD는 하나 이상의 LBA(logical block address) 범위들을 지원할 수 있고, 그리고 LBA 범위들의 각각은 개별 SSD의 범위 내에 포함된 고유의 식별자들에 의해 또는 SSD들의 클러스터(cluster) 내에 포함된 글로벌(global) 식별자에 의해 또한 식별될 수 있다. SSD들은 하나 이상의 SSD 피어 그룹의 일부일 수 있다. 일부 피어 그룹들에 있어서, SSD는 주 종점에 할당될 수 있고, 그리고 다른 피어 그룹들에 있어서는, 그 SSD는 부차적인 종점에 할당될 수 있다. 각 SSD 피어 그룹은 SSD 인터페이스에 의해 요구되는 것과 같은 동일한 식별자 메커니즘들에 의해 식별될 수 있다.
다른 실시 예에서, NVMe SSD들의 피어 그룹의 논리 표현은 시스템(또는 서브 시스템) 및 이름공간 식별자(namespace identifier)들을 포함할 수 있다. 일 실시 예에서, PCIe 종점들은, 각 PCIe 종점이 <버스(Bus), 장치(Device), 기능(Function)>에 의해 식별될 수 있는, 공유된 이름공간에 대한 접근을 제공한다. PCIe 종점이 다수의 SSD 피어 그룹들을 지원할 때, 그 PCIe 종점은 일부 SSD 피어 그룹들에 대해 주 종점에 그리고 다른 SSD 피어 그룹들에 대해 부차적 종점에 할당될 수 있다. 예를 들면, NVMe SSD들에 있어서, 고유의 이름공간 식별자는 피어 그룹에 대한 식별자로서 사용될 수 있다.
SSD 피어 그룹은, 이에 한정되지 않지만, 데이터가 둘 이상의 피어들로 복제될 수 있는 복제; 또는 데이터가 나누어질 수 있고 그리고 패리티가 계산될 수 있고, 그리고 데이터 및 패리티 조각들이 그룹 내의 다른 피어들로 보내질 수 있는 소거 코딩과 같은 데이터 보호 스킴에 대해 구성될 수 있다. 이에 한정되지 않지만, 리던던시 신드롬(redundancy syndrome), 비 결정적 오류 복구(non-deterministic error recovery) 스킴, RAID x+y 데이터 보호 스킴과 같은 분문에 개시된 본 발명에 의해 제공되는 다른 데이터 보호 스킴들이 가능하며, 그것들에 의해 스트라이핑(striping; RAID의 성능 요소)은 동시성을 강화하는 패리티 스킴, 해밍-코드(Hamming-code) 패리티(RAID 2) , 미러링(mirroring; RAID 1, 장치-레벨의 복제), 패리티를 가진 바이트-레벨 스트라이핑(RAID 3), 분산이나 분산 패리티를 가진 블록-레벨 스트라이핑(RAID 4, 5) 및/또는 더블 분산 패리티를 가진 블록-레벨 스트라이핑(RAID 6)을 포함하는 RAID 리던던시 스킴, 이에 한정되지 않지만 리드-솔로몬(Reed-Solomon) 에러 정정 코드와 같은 에러 정정 코드들을 포함하는 소거 코딩 스킴 또는 이들의 조합과 함께 셋 이상의 SSD들에 사용될 수 있다. 추가적으로, 패리티 계산들을 위한 최적화들도 또한 가능하다.
도 4a는 본 발명에 따른 데이터가 호스트 입출력 버스를 통해 단지 한번 이동하는 것을 제공하는 네트워크 환경에서 쓰기 입출력의 제 1 실시 예에 대한 순서도(400)를 보여준다. 도 4a에서, 입출력 컨트롤러들은 도 1a의 입출력 컨트롤러들(103, 104)을 지칭하고, 그리고 피어 입출력 컨트롤러는 도 1a의 피어 입출력 컨트롤러(106)를 지칭한다. 추가적으로, 도 4a에서 “동일한 피어 그룹 내의 입출력 컨트롤러들”은 동일한 피어 그룹에서 주가 아닌 SSD들 상의 입출력 컨트롤러 및 피어 입출력 컨트롤러를 상호 교환적으로 지칭한다. 401 단계에서, 호스트는 피어 그룹의 주 SSD의 입출력 컨트롤러를 대상으로 하는 쓰기 입출력을 시작한다. 쓰기 입출력에 대한 호스트 메모리 어드레스들은 주 입출력 컨트롤러에 보내지고, 그렇게 함으로써 데이터가 호스트 입출력 버스를 통해 단지 한번 이동할 수 있게 한다. 402 단계에서, 주 입출력 컨트롤러를 가지는 SSD는 입출력 요청을 수신하고, 주 SSD의 컨트롤러는 피어 그룹에 의해 제공되는 데이터 보호 구성에 기초하여 입출력 요청을 처리한다. 403 단계에서, 주 SSD의 컨트롤러는 입출력 요청을 주 SSD의 피어 입출력 컨트롤러에 전달한다. 404 단계에서, 주 SSD의 피어 입출력 컨트롤러는 피어 그룹의 다른 종점들과 함께 데이터 보호 구성에 대응하는 피어 프로세싱과 관련되는 피어 입출력을 조정한다. 405 단계에서, 피어 입출력 컨트롤러는 입출력 요청을 피어 입출력 컨트롤러를 통해 피어 그룹의 부차적인 종점들에 전달한다. 406 단계에서, 부차적인 종점 SSD들은 요청된 대로 쓰기 입출력을 처리하고, 그리고 407 단계에서, 부차적인 종점들은 쓰기 입출력 요청과 관련된 데이터를 DMA(direct memory access) 기술을 통해 호스트 메모리로부터 직접 획득하고, 그리고 쓰기 입출력에 대한 획득된 데이터를 가진 입출력 요청을 처리한다. 408 단계에서, 각 부차적 SSD는 쓰기 입출력 완료 메시지를 주 SSD의 피어 입출력 컨트롤러에 전송한다. 409 단계에서, 주 SSD의 피어 입출력 컨트롤러는 부차적 SSD 종점들로부터 쓰기 입출력 완료 메시지들을 수집한다. 410 단계에서, 주 SSD의 피어 입출력 컨트롤러는 쓰기 입출력 완료 메시지를 주 SSD의 입출력 컨트롤러에 전송한다. 411 단계에서, 주 SSD의 입출력 컨트롤러는 표준 입출력 프로세싱 기술을 이용하여 쓰기 입출력 완료 메시지를 호스트에 전송한다.
도 4b는 본 발명에 따른 데이터가 호스트 입출력 버스를 통해 단지 한번 이동하는 것을 제공하는 PCIe-구조 환경에서 쓰기 입출력의 제 1 실시 예에 대한 순서도(450)를 보여준다. 도 4b에서, 입출력 물리 기능들은 도 1b의 입출력 물리 기능들(153, 154)을 지칭하고, 그리고 피어 입출력 물리 기능은 도 1b의 피어 입출력 물리 기능(156)을 지칭한다. 추가적으로, 도 4b에서 “동일한 피어 그룹 내의 입출력 물리 기능들”은 동일한 피어 그룹에서 주가 아닌 SSD들 상의 입출력 물리 기능 및 피어 입출력 물리 기능을 상호 교환적으로 지칭한다. 451 단계에서, 호스트는 피어 그룹의 주 SSD의 입출력 물리 기능을 대상으로 하는 쓰기 입출력을 시작한다. 쓰기 입출력에 대한 호스트 메모리 어드레스들은 SGL(scatter/gather list)과 함께 주 입출력 물리 기능에 보내지고, 그렇게 함으로써 데이터가 호스트 입출력 버스를 통해 단지 한번 이동할 수 있게 한다. 452 단계에서, 주 입출력 물리 기능을 가지는 SSD는 입출력 요청 및 연관된 SGL을 수신하고, 그리고 주 SSD의 입출력 물리 기능은 피어 그룹에 의해 제공되는 데이터 보호 구성에 기초하여 입출력 요청을 처리한다. 453 단계에서, 주 SSD의 입출력 물리 기능은 입출력 요청 및 SGL을 주 SSD의 피어 입출력 물리 기능에 전달한다. 454 단계에서, 주 SSD의 피어 입출력 물리 기능은 피어 그룹의 다른 종점들과 함께 데이터 보호 구성에 대응하는 피어 프로세싱과 관련되는 피어 입출력을 조정한다. 455 단계에서, 피어 입출력 물리 기능은 입출력 요청 및 SGL을 피어 입출력 물리 기능을 통해 피어 그룹의 부차적 종점들에 전달한다. 456 단계에서, 부 종점 SSD들은 요청된 대로 쓰기 입출력을 처리하고, 그리고 457 단계에서, 부차적 종점들은 쓰기 입출력 요청과 관련된 데이터를 DMA(direct memory access) 기술을 통해 호스트 메모리로부터 직접 획득하고, 그리고 쓰기 입출력에 대한 획득된 데이터를 가진 입출력 요청을 처리한다. 458 단계에서, 각 부차적 SSD는 쓰기 입출력 완료 메시지를 주 SSD의 피어 입출력 물리 기능에 전송한다. 459 단계에서, 주 SSD의 피어 입출력 물리 기능은 부차적 SSD 종점들로부터 쓰기 입출력 완료 메시지들을 수집한다. 460 단계에서, 주 SSD의 피어 입출력 물리 기능은 쓰기 입출력 완료 메시지를 주 SSD의 입출력 물리 기능에 전송한다. 461 단계에서, 주 SSD의 입출력 물리 기능은 표준 입출력 프로세싱 기술을 이용하여 쓰기 입출력 완료 메시지를 호스트에 전송한다.
도 5a는 본 발명에 따른 주 입출력 컨트롤러가 호스트로부터 데이터 페이로드(data payload)를 획득하는 네트워크 환경에서 쓰기 입출력의 제 2 실시 예에 대한 순서도(500)를 보여준다. 도 5a에서, 입출력 컨트롤러들은 도 1a의 입출력 컨트롤러들(103, 104)을 지칭하고, 그리고 피어 입출력 컨트롤러는 도 1a의 피어 입출력 컨트롤러(106)를 지칭한다. 추가적으로, 도 5a에서 “동일한 피어 그룹 내의 입출력 컨트롤러들”은 동일한 피어 그룹 내의 주가 아닌 SSD들 상의 입출력 컨트롤러 및 피어 입출력 컨트롤러를 상호 교환적으로 지칭한다. 501 단계에서, 호스트는 피어 그룹의 주 SSD의 입출력 컨트롤러를 대상으로 하는 쓰기 입출력을 시작한다. 쓰기 입출력에 대한 호스트 메모리 어드레스들은 주 입출력 컨트롤러에 보내진다. 502 단계에서, 주 입출력 컨트롤러를 가지는 SSD는 입출력 요청을 수신하고, 그리고 주 SSD의 컨트롤러는 피어 그룹에 의해 제공되는 데이터 보호 구성에 기초하여 입출력 요청을 처리한다. 이것은 호스트 메모리로부터 주 SSD로의 데이터 전송을 포함한다. 503 단계에서, 주 SSD의 컨트롤러는 입출력 요청 및 데이터를 주 SSD의 피어 입출력 컨트롤러에 전달한다. 일 실시 예에서, 주 SSD는 DMA 기술을 이용하여 데이터를 획득한다. 504 단계에서, 주 SSD의 피어 입출력 컨트롤러는 피어 그룹의 다른 종점들과 함께 데이터 보호 구성에 대응하는 피어 프로세싱과 관련되는 피어 입출력을 조정한다. 505 단계에서, 피어 입출력 컨트롤러는 입출력 요청 및 데이터를 피어 입출력 컨트롤러를 통해 피어 그룹의 부차적 종점들에 전달한다. 506 단계에서, 부차적 종점 SSD들은 요청된 대로 쓰기 입출력을 처리한다. 507 단계에서, 각 부차적 SSD는 쓰기 입출력 완료 메시지를 주 SSD의 피어 입출력 컨트롤러에 전송한다. 508 단계에서, 주 SSD의 피어 입출력 컨트롤러는 부차적 SSD 종점들로부터 쓰기 입출력 완료 메시지들을 수집한다. 509 단계에서, 주 SSD의 피어 입출력 컨트롤러는 쓰기 입출력 완료 메시지를 주 SSD의 입출력 컨트롤러에 전송한다. 510 단계에서, 주 SSD의 입출력 컨트롤러는 표준 입출력 프로세싱 기술을 이용하여 쓰기 입출력 완료 메시지를 호스트에 전송한다.
도 5b는 본 발명에 따른 주 입출력 물리 기능이 호스트로부터 데이터 페이로드(data payload)를 획득하는 PCIe-구조 환경에서 쓰기 입출력의 제 2 실시 예에 대한 순서도(550)를 보여준다. 도 5b에서, 입출력 물리 기능들은 도 1b의 입출력 물리 기능들(153, 154)을 지칭하고, 그리고 피어 입출력 물리 기능은 도 1b의 피어 입출력 물리 기능(156)을 지칭한다. 추가적으로, 도 5b에서 “동일한 피어 그룹 내의 입출력 물리 기능들”은 동일한 피어 그룹 내의 주가 아닌 SSD들 상의 입출력 물리 기능 및 피어 입출력 물리 기능을 상호 교환적으로 지칭한다. 551 단계에서, 호스트는 피어 그룹의 주 SSD의 입출력 물리 기능을 대상으로 하는 쓰기 입출력을 시작한다. 쓰기 입출력에 대한 호스트 메모리 어드레스들은 SGL(scatter/gather list)과 함께 주 입출력 물리 기능에 보내진다. 552 단계에서, 주 입출력 물리 기능을 가지는 SSD는 입출력 요청 및 연관된 SGL을 수신하고, 그리고 주 SSD의 입출력 물리 기능은 피어 그룹에 의해 제공되는 데이터 보호 구성에 기초하여 입출력 요청을 처리한다. 이것은 호스트 메모리로부터 주 SSD로의 데이터 전송을 포함한다. 553 단계에서, 주 SSD의 입출력 물리 기능은 입출력 요청 및 데이터를 주 SSD의 피어 입출력 물리 기능에 전달한다. 일 실시 예에서, 주 SSD는 DMA 기술을 이용하여 데이터를 획득한다. 554 단계에서, 주 SSD의 피어 입출력 물리 기능은 피어 그룹의 다른 종점들과 함께 데이터 보호 구성에 대응하는 피어 프로세싱과 관련되는 피어 입출력을 조정한다. 555 단계에서, 피어 입출력 물리 기능은 입출력 요청 및 데이터를 피어 입출력 물리 기능을 통해 피어 그룹의 부차적 종점들에 전달한다. 556 단계에서, 부차적 종점 SSD들은 요청된 대로 쓰기 입출력을 처리한다. 557 단계에서, 각 부차적 SSD는 쓰기 입출력 완료 메시지를 주 SSD의 피어 입출력 물리 기능에 전송한다. 558 단계에서, 주 SSD의 피어 입출력 물리 기능은 부차적 SSD 종점들로부터 쓰기 입출력 완료 메시지들을 수집한다. 559 단계에서, 주 SSD의 피어 입출력 물리 기능은 쓰기 입출력 완료 메시지를 주 SSD의 입출력 물리 기능에 전송한다. 560 단계에서, 주 SSD의 입출력 물리 기능은 표준 입출력 프로세싱 기술을 이용하여 쓰기 입출력 완료 메시지를 호스트에 전송한다.
도 6a는 본 발명에 따른 네트워크 환경에서 읽기 입출력의 실시 예에 대한 순서도(600)를 보여준다. 도 6a에서, 입출력 컨트롤러들은 도 1a의 입출력 컨트롤러들(103, 104)을 지칭하고, 그리고 피어 입출력 컨트롤러는 도 1a의 피어 입출력 컨트롤러(106)를 지칭한다. 추가적으로, 도 6a에서 “동일한 피어 그룹 내의 입출력 컨트롤러들”은 동일한 피어 그룹 내의 주가 아닌 SSD들 상의 입출력 컨트롤러 및 피어 입출력 컨트롤러를 상호 교환적으로 지칭한다. 601 단계에서, 호스트는 피어 그룹의 주 SSD의 입출력 컨트롤러를 대상으로 하는 읽기 입출력을 시작한다. 읽기 입출력에 대한 호스트 메모리 어드레스들은 주 입출력 컨트롤러에 보내지고, 그렇게 함으로써 데이터가 호스트 입출력 버스를 통해 단지 한번 이동할 수 있게 한다. 602 단계에서, 주 입출력 컨트롤러를 가지는 SSD는 입출력 요청을 수신하고, 그리고 주 SSD의 컨트롤러는 피어 그룹에 의해 제공되는 데이터 보호 구성에 기초하여 입출력 요청을 처리한다. 603 단계에서, 주 SSD의 컨트롤러는 입출력 요청을 주 SSD의 피어 입출력 컨트롤러에 전달한다. 604 단계에서, 주 SSD의 피어 입출력 컨트롤러는 피어 그룹의 다른 종점들과 함께 데이터 보호 구성에 대응하는 피어 프로세싱과 관련되는 피어 입출력을 조정한다. 605 단계에서, 피어 입출력 컨트롤러는 입출력 요청을 피어 입출력 컨트롤러를 통해 피어 그룹의 부 종점들에 전달한다. 606 단계에서, 부차적 종점 SSD들은 요청된 대로 읽기 입출력을 처리하고, 그리고 607 단계에서, 부차적 종점들은 읽기 입출력 요청과 관련된 데이터를 DMA(direct memory access) 프로세스를 통해 직접 호스트 메모리로 전송한다. 608 단계에서, 각 부차적 SSD는 읽기 입출력 완료 메시지를 주 SSD의 피어 입출력 컨트롤러에 전송한다. 609 단계에서, 주 SSD의 피어 입출력 컨트롤러는 부 SSD 종점들로부터 읽기 입출력 완료 메시지들을 수집한다. 610 단계에서, 주 SSD의 피어 입출력 컨트롤러는 읽기 입출력 완료 메시지를 주 SSD의 입출력 컨트롤러에 전송한다. 611 단계에서, 주 SSD의 입출력 컨트롤러는 표준 입출력 프로세싱 기술을 이용하여 읽기 입출력 완료 메시지를 호스트에 전송한다.
도 6b는 본 발명에 따른 PCIe-구조 환경에서 읽기 입출력의 실시 예에 대한 순서도(650)를 보여준다. 도 6b에서, 입출력 물리 기능들은 도 1b의 입출력 물리 기능들(153, 154)을 지칭하고, 그리고 피어 입출력 물리 기능은 도 1b의 피어 입출력 물리 기능(156)을 지칭한다. 추가적으로, 도 6b에서 “동일한 피어 그룹 내의 입출력 물리 기능들”은 동일한 피어 그룹 내의 주가 아닌 SSD들 상의 입출력 물리 기능 및 피어 입출력 물리 기능을 상호 교환적으로 지칭한다. 651 단계에서, 호스트는 피어 그룹의 주 SSD의 입출력 물리 기능을 대상으로 하는 읽기 입출력을 시작한다. 읽기 입출력에 대한 호스트 메모리 어드레스들은 SGL(scatter/gather list)과 함께 주 입출력 물리 기능에 보내지고, 그렇게 함으로써 데이터가 호스트 입출력 버스를 통해 단지 한번 이동할 수 있게 한다. 652 단계에서, 주 입출력 물리 기능을 가지는 SSD는 입출력 요청 및 연관된 SGL을 수신하고, 그리고 주 SSD의 입출력 물리 기능은 피어 그룹에 의해 제공되는 데이터 보호 구성에 기초하여 입출력 요청을 처리한다. 653 단계에서, 주 SSD의 입출력 물리 기능은 입출력 요청 및 SGL을 주 SSD의 피어 입출력 물리 기능에 전달한다. 654 단계에서, 주 SSD의 피어 입출력 물리 기능은 피어 그룹의 다른 종점들과 함께 데이터 보호 구성에 대응하는 피어 프로세싱과 관련되는 피어 입출력을 조정한다. 655 단계에서, 피어 입출력 물리 기능은 입출력 요청 및 SGL을 피어 입출력 물리 기능을 통해 피어 그룹의 부차적 종점들에 전달한다. 656 단계에서, 부 종점 SSD들은 요청된 바와 같이 읽기 입출력을 처리하고, 그리고 657 단계에서, 부차적 종점들은 읽기 입출력 요청과 관련된 데이터를 호스트 SGL 엔트리들에 지정된 것과 같이 메모리 위치들에 대한 적절할 오프셋들에서 DMA(direct memory access) 프로세스를 통해 직접 호스트 메모리로 전송한다. 658 단계에서, 각 부차적 SSD는 읽기 입출력 완료 메시지를 주 SSD의 피어 입출력 물리 기능에 전송한다. 659 단계에서, 주 SSD의 피어 입출력 물리 기능은 부차적 SSD 종점들로부터 읽기 입출력 완료 메시지들을 수집한다. 660 단계에서, 주 SSD의 피어 입출력 물리 기능은 읽기 입출력 완료 메시지를 주 SSD의 입출력 물리 기능에 전송한다. 661 단계에서, 주 SSD의 입출력 물리 기능은 표준 입출력 프로세싱 기술을 이용하여 읽기 입출력 완료 메시지를 호스트에 전송한다.
본문에 개시된 내용은 피어 그룹 내의 결함들 또는 오류들을 처리하기 위한 능력을 또한 가지는 피어링-가능(peering-capable) SSD들을 또한 포함한다. 도 7은 본 발명에 따른 시스템 레벨에서 결함-처리(fault-handling) 프로세스의 실시 예의 순서도(700)를 보여준다. 순서도(700)는 주 SSD가 지정된 피어 그룹에 대한 결함-처리 프로세스를 보여준다는 것은 이해될 것이다. 다른 피어 구성들에 대한 결함 처리도 이와 유사할 것이다. 701 단계에서, 피어 그룹에서 각 종점 SSD는 어떤 결함들 또는 오류들이 내부적으로 발생하는지 여부를 판별하기 위해 스스로 모니터한다. 702 단계에서, 부차적 종점 SSD에서 결함이 발생하는지 여부가 판별된다. 일 실시 예에서, 이러한 판별은 각 SSD 종점에서 거행된다. 702 단계에서, 부차적 종점에서 어떠한 결함도 검출되지 않으면, 705 단계로 이동하고, 결함이 검출되면, 703 단계로 이동하여 결함 메시지는 결함을 검출한 부차적 종점으로부터 주 SSD로 전달된다. 결함 메시지는, 이에 한정되지 않지만, 결함 코드나 오류 코드, 그리고 결함이 발생한 데이터 및/또는 패리티 정보의 범위와 같은 정보를 포함할 수 있다. 결함을 검출한 SSD 종점이 주 SSD이면, 순서는 704 단계로 또한 이동할 수 있다. 704 단계에서, 주 SSD의 컨트롤러는 결함을 가지는 부 SSD 종점으로부터 및/또는 다른 SSD들로부터 부분 데이터를 수집하고, 그리고 누락된 데이터를 재건하고, 그리고 피어 그룹에서 남아 있는 PCIe 종점들 상의 예약된 장소들에 재건된 데이터를 저장한다. 데이터 보호 구성이 스토리지 시스템에서 핫-스페어(hot-spare)를 포함하면, 데이터는 핫-스페어 SSD로 복제되거나 복원된다. SSD 피어 그룹 내의 입출력 물리 기능으로의 변경은 호스트 시스템에서 어떠한 입출력 프로세싱을 변화시키는 것 같지는 않다. 하지만, 변경 정보는 시스템 관리 목적들로 사용될 수 있다.
순서는 705 단계로 이동하고 이 단계에서, 주 SSD 종점이, 이에 한정되지 않지만, 피어 그룹의 조정된 데이터 보호 구성에 관련된 패리티 계산들에 기초하여 내부의 결함을 검출하는지가 판별된다. 705 단계에서, 주 SSD 종점에서 내부의 결함이 검출되지 않으면, 701 단계로 되돌아간다. 705 단계에서, 내부의 결함이, 이에 한정되지 않지만, 피어 그룹의 조정된 데이터 보호 구성에 관련된 패리티 계산들에 기초하여 주 SSD 종점에서 검출되면, 706 단계로 이동하여 주 종점 SSD는 호스트에 결함 메시지를 전달한다. 일 실시 예에서, 주 SSD 종점은 호스트에 피어 그룹 오류들 및/또는 피어 그룹 내의 변화들에 대하여 경보하기 위해 비동기(Async) 알림을 사용할 수 있다. 707 단계에서, 호스트는 검출된 결함의 관점에서 SSD 피어 그룹을 재구성할 수 있고, 그리고 시스템 <System, NS> 및/또는 다른 데이터 보호 구성을 위해 다른 주 SSD 종점을 가지도록 SSD 피어 그룹을 조정할 수 있다. 다른 실시 예에서, 피어 SSD들은 새로운 주 SSD 종점을 선출할 수 있고 그리고 호스트로 새로운 SSD 종점에 관한 정보를 전송할 수 있다. 일 실시 예에서, 호스트는 영향을 받은 SSD 피어 그룹에 대한 새로운 주 입출력 종점으로 입출력들을 목표 재설정하는 것 외에는 자신의 입출력 프로세싱을 변경할 필요가 없다.
도 8은 본 발명에 따른 SSD 종점들의 피어 그룹을 형성하기 위해 하나 이상의 SSD들에 내장되는 특징들 및 능력들을 가지는 스토리지 시스템을 포함하는 메모리 시스템(800)을 보여준다. 메모리 시스템(800)은 메모리 컨트롤러(820) 및 대용량의 데이터를 저장하기 위한 메모리 장치(810)를 포함할 수 있다. 메모리 컨트롤러(820)는 호스트(830)의 읽기/쓰기 요청에 응답하여 메모리 장치(810)에서 저장된 데이터를 읽도록 또는 메모리 장치(810)로 데이터를 쓰도록 메모리 장치(810)를 제어한다. 메모리 컨트롤러(820)는 호스트(830; 예를 들어, 모바일 장치 또는 컴퓨터 시스템)로부터 제공되는 어드레스를 메모리 장치(810)의 물리 어드레스에 매핑하기 위한 어드레스-매핑 테이블을 포함할 수 있다. 메모리 장치(810)는 본 발명은 따른 SSD 종점들의 피어 그룹을 형성하기 위해 하나 이상의 SSD들에 내장되는 특징들 및 능력들을 가지는 스토리지 시스템을 포함할 수 있다.
당업자에 의해 인식될 수 있는 바와 같이, 본문에서 설명된 기술적 사상들은 광범위한 응용 분야에 걸쳐 수정 및 변경될 수 있다. 따라서, 본 발명의 범위는 전술한 특정 예시적인 실시 예들에 국한되어서는 안되며, 대신에 다음의 특허청구범위들에 의해 정해진다.
100, 150: SSD
101, 151: SSD 컨트롤러
102, 152: 불휘발성 메모리
103, 104: 입출력 컨트롤러
105, 155: 내장 RAM
106: 피어 입출력 컨트롤러
107, 157: 피어 입출력 메모리
108, 109: 네트워크 인터페이스 포트
110: 피어 네트워크 인터페이스 포트
153, 154: 입출력 물리 기능
156: 피어 입출력 물리 기능
158, 159: 호스트 인터페이스 포트
160: 피어 인터페이스 포트
200, 250, 300, 350: 네트워크
201, 251, 301, 351: CPU
202, 302: 통신 네트워크
252, 352: PCIe 구조
800: 메모리 시스템
810: 메모리 장치
820: 메모리 컨트롤러
830: 호스트

Claims (10)

  1. 솔리드 스테이트 드라이브(SSD)들의 적어도 하나의 피어 그룹을 포함하는 복수의 SSD들을 포함하는 스토리지 시스템에 있어서,
    상기 SSD들의 적어도 하나의 피어 그룹의 제1 SSD는 상기 SSD들의 적어도 하나의 피어 그룹의 주 SSD를 포함하고, 상기 SSD들의 적어도 하나의 피어 그룹의 상기 SSD들은:
    적어도 하나의 호스트 컴퓨팅 장치에 통신하도록 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 입출력 통신들을 수신하는 호스트 인터페이스 포트;
    상기 SSD들의 적어도 하나의 피어 그룹 내의 적어도 하나의 제2 SSD의 피어-인터페이스 포트들과 통신하도록 연결되는 피어-인터페이스 포트; 및
    상기 호스트 인터페이스 포트 및 상기 피어-인터페이스 포트에 연결되는 컨트롤러를 더 포함하고,
    상기 주 SSD의 상기 컨트롤러는 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신된 상기 입출력 통신들에 응답하여 상기 SSD들의 적어도 하나의 피어 그룹에 의해 제공되는 조정된 데이터-보호 구성과 관련된 데이터-보호 계산들을 제공하고, 상기 조정된 데이터-보호 구성 정보를 상기 피어-인터페이스 포트를 통해 상기 SSD들의 적어도 하나의 피어 그룹의 상기 적어도 하나의 제2 SSD들의 컨트롤러들에 전달하는 스토리지 시스템.
  2. 제 1 항에 있어서,
    상기 조정된 데이터-보호 구성은 복제 구성, 소거-코딩 구성, 복제 신드롬(replication syndrome), 비 결정적 오류 복구(non-deterministic error recovery) 스킴, RAID x+y 데이터 보호 스킴, 스트라이핑(striping), 해밍-코드(Hamming-code) 패리티를 포함하는 RAID 리던던시 스킴, 미러링(mirroring), 패리티를 포함하는 바이트-레벨 스트라이핑, 분산이나 분산 패리티를 포함하는 블록-레벨 스트라이핑 및/또는 더블 분산 패리티를 포함하는 블록-레벨 스트라이핑, 에러 정정 코드를 포함하는 소거 코딩 스킴, 또는 이들의 결합을 포함하는 스토리지 시스템.
  3. 제 1 항에 있어서,
    상기 SSD들의 적어도 하나의 피어 그룹의 적어도 하나의 SSD는 상기 호스트 인터페이스 포트의 통신 프로토콜에 대응하는 식별자에 의해 식별되는 스토리지 시스템.
  4. 제 1 항에 있어서,
    상기 SSD들의 적어도 하나의 피어 그룹의 적어도 하나의 SSD는 상기 SSD를 주 SSD 또는 부차적 SSD로서 식별하는 상기 호스트 인터페이스 포트를 통해 정보를 수신하는 스토리지 시스템.
  5. 제 1 항에 있어서,
    상기 입출력 통신들은 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신되는 쓰기 입출력 통신을 포함하고,
    상기 SSD들의 적어도 하나의 피어 그룹의 적어도 하나의 SSD는 상기 적어도 하나의 호스트 컴퓨팅 장치의 메모리로부터 직접 상기 호스트 인터페이스 포트를 통해 데이터를 수신하고, 상기 수신된 데이터는 상기 조정된 데이터-보호 구성에 기초하여 상기 SSD에 할당되고,
    상기 조정된 데이터-보호 구성에 기초하여 할당된 상기 데이터를 수신한 상기 SSD들의 적어도 하나의 피어 그룹의 적어도 하나의 SSD는 상기 적어도 하나의 SSD에 할당된 상기 데이터의 쓰기 동작의 완료 시 상기 피어-인터페이스 포트를 통해 상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD에 피어 쓰기 처리 완료 통신을 송신하고, 그리고
    상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD의 상기 컨트롤러는 상기 SSD들의 피어 그룹의 적어도 하나의 다른 SSD들로부터 상기 피어 쓰기 처리 완료 통신을 수신 시 상기 적어도 하나의 호스트 컴퓨팅 장치에 쓰기 처리 완료 통신을 송신하는 스토리지 시스템.
  6. 제 1 항에 있어서,
    상기 입출력 통신들은 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신되는 쓰기 입출력 통신을 포함하고,
    상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD는 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 상기 호스트 인터페이스 포트를 통해 데이터를 수신하고, 상기 SSD들의 피어 그룹의 상기 적어도 하나의 제2 SSD는 상기 주 SSD의 상기 컨트롤러로부터 상기 조정된 데이터-보호 구성에 기초하여 적어도 하나의 SSD의 상기 피어-인터페이스 포트를 통해 상기 데이터를 수신하고,
    상기 조정된 데이터-보호 구성에 기초하여 할당된 상기 데이터를 수신한 상기 SSD들의 적어도 하나의 피어 그룹의 상기 적어도 하나의 제2 SSD는 상기 적어도 하나의 제2 SSD에 할당된 상기 데이터의 쓰기 동작의 완료 시 상기 피어-인터페이스 포트를 통해 상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD에 피어 쓰기 처리 완료 통신을 송신하고, 그리고
    상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD는 상기 SSD들의 적어도 하나의 피어 그룹의 상기 적어도 하나의 제2 SSD로부터 상기 피어 쓰기 처리 완료 통신을 수신 시 상기 적어도 하나의 호스트 컴퓨팅 장치에 쓰기 처리 완료 통신을 송신하는 스토리지 시스템.
  7. 제 1 항에 있어서,
    상기 입출력 통신들은 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신되는 읽기 입출력 통신을 포함하고,
    상기 SSD들의 적어도 하나의 피어 그룹의 적어도 하나의 SSD는 상기 적어도 하나의 SSD의 상기 호스트 인터페이스 포트를 통해 직접 상기 적어도 하나의 호스트 컴퓨팅 장치에 데이터를 송신하고, 상기 송신된 데이터는 상기 조정된 데이터-보호 구성에 기초하여 상기 적어도 하나의 SSD에 할당되고,
    상기 SSD들의 적어도 하나의 피어 그룹의 적어도 하나의 SSD는 상기 SSD에 의한 읽기 동작의 완료 시 상기 피어-인터페이스 포트를 통해 상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD에 피어 읽기 처리 완료 통신을 송신하고, 그리고
    상기 SSD들의 적어도 하나의 피어 그룹의 상기 주 SSD는 상기 SSD들의 적어도 하나의 피어 그룹의 다른 SSD들로부터 상기 피어 읽기 처리 완료 통신을 수신 시 상기 적어도 하나의 호스트 컴퓨팅 장치에 읽기 처리 완료 통신을 송신하는 스토리지 시스템.
  8. 적어도 하나의 호스트 컴퓨팅 장치에 통신하도록 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 입출력 통신들을 수신하는 호스트 인터페이스 포트;
    솔리드 스테이트 드라이브(SSD)들의 피어 그룹의 다른 솔리드 스테이트 드라이브들의 피어-인터페이스 포트들과 통신하도록 연결되는 피어-인터페이스 포트; 및
    상기 호스트 인터페이스 포트 및 상기 피어-인터페이스 포트에 연결되며, 상기 적어도 하나의 호스트 컴퓨팅 장치로부터 수신된 상기 입출력 통신들에 응답하여 상기 피어 그룹에 의해 제공되는 조정된 데이터-보호 구성과 관련된 데이터-보호 계산들을 제공하고, 그리고 상기 피어-인터페이스 포트를 통해 조정된 데이터-보호 구성 정보를 상기 피어 그룹의 상기 다른 솔리드 스테이트 드라이브들의 컨트롤러들에 전달하는 컨트롤러를 포함하는 솔리드 스테이트 드라이브.
  9. 제 8 항에 있어서,
    상기 솔리드 스테이트 드라이브의 상기 호스트 인터페이스 포트는 PCIe(Peripheral Component Interface Express) 통신 네트워크, 이더넷 통신 네트워크, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크를 통해 상기 적어도 하나의 호스트 컴퓨팅 장치에 연결될 수 있는 솔리드 스테이트 드라이브.
  10. 제 8 항에 있어서,
    상기 솔리드 스테이트 드라이브의 상기 피어-인터페이스 포트는 PCIe(Peripheral Component Interface Express) 통신 네트워크, 이더넷 통신 네트워크, 인피니밴드(InfiniBand) 통신 네트워크, FC(Fibre Channel) 통신 네트워크, 또는 SAS(Serial Attached SCSI) 통신 네트워크를 통해 다른 솔리드 스테이트 드라이브의 피어-인터페이스 포트에 연결될 수 있는 솔리드 스테이트 드라이브.
KR1020170085016A 2016-08-19 2017-07-04 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템 KR102199424B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662377528P 2016-08-19 2016-08-19
US62/377,528 2016-08-19
US201615297130A 2016-10-18 2016-10-18
US15/297,130 2016-10-18
US15/351,434 2016-11-14
US15/351,434 US10423487B2 (en) 2016-08-19 2016-11-14 Data protection offloads using SSD peering

Publications (2)

Publication Number Publication Date
KR20180020877A KR20180020877A (ko) 2018-02-28
KR102199424B1 true KR102199424B1 (ko) 2021-01-06

Family

ID=61191659

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170085016A KR102199424B1 (ko) 2016-08-19 2017-07-04 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템

Country Status (2)

Country Link
US (1) US10423487B2 (ko)
KR (1) KR102199424B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102631351B1 (ko) * 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
CN112214166B (zh) * 2017-09-05 2022-05-24 华为技术有限公司 用于传输数据处理请求的方法和装置
US11157356B2 (en) * 2018-03-05 2021-10-26 Samsung Electronics Co., Ltd. System and method for supporting data protection across FPGA SSDs
US11178071B2 (en) * 2018-07-05 2021-11-16 Cisco Technology, Inc. Multisite interconnect and policy with switching fabrics
CN110471816B (zh) * 2019-07-02 2023-03-14 深圳市金泰克半导体有限公司 固态硬盘的数据管理方法及装置
KR20210087628A (ko) * 2020-01-03 2021-07-13 삼성전자주식회사 네트워크 기반 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
US20210357119A1 (en) * 2020-05-15 2021-11-18 Rey Bruce Artificial intelligence-based hybrid raid controller device
US20240031291A1 (en) * 2022-07-25 2024-01-25 Vmware, Inc. Load balancing over tunnel endpoint groups

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008117395A (ja) 2006-10-31 2008-05-22 Hewlett-Packard Development Co Lp フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
US20110078396A1 (en) 2009-09-29 2011-03-31 Hitachi, Ltd. Remote copy control method and system in storage cluster environment
JP2016105585A (ja) 2014-11-21 2016-06-09 パナソニックIpマネジメント株式会社 耐タンパ性を有する不揮発性メモリ装置、集積回路カード、不揮発性メモリ装置の認証方法、不揮発性メモリ装置を用いた暗号化方法および復号化方法
JP2016134167A (ja) 2015-01-21 2016-07-25 株式会社東芝 メモリシステムおよび処理装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6219753B1 (en) 1999-06-04 2001-04-17 International Business Machines Corporation Fiber channel topological structure and method including structure and method for raid devices and controllers
US6996672B2 (en) 2002-03-26 2006-02-07 Hewlett-Packard Development, L.P. System and method for active-active data replication
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US8819092B2 (en) 2005-08-16 2014-08-26 Rateze Remote Mgmt. L.L.C. Disaggregated resources and access methods
US20080040553A1 (en) * 2006-08-11 2008-02-14 Ash Kevin J Method and system for grouping tracks for destaging on raid arrays
US7664915B2 (en) * 2006-12-19 2010-02-16 Intel Corporation High performance raid-6 system architecture with pattern matching
US7652929B2 (en) * 2007-09-17 2010-01-26 Sandisk Corporation Non-volatile memory and method for biasing adjacent word line for verify during programming
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
WO2013048451A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
US9286261B1 (en) * 2011-11-14 2016-03-15 Emc Corporation Architecture and method for a burst buffer using flash technology
US8554997B1 (en) * 2013-01-18 2013-10-08 DSSD, Inc. Method and system for mirrored multi-dimensional raid
KR102009437B1 (ko) * 2013-01-18 2019-08-13 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법
JP2015114873A (ja) * 2013-12-12 2015-06-22 富士通株式会社 情報処理装置および監視方法
US9891826B1 (en) * 2014-09-24 2018-02-13 SK Hynix Inc. Discard command support in parity based redundant array of flash memory disk

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008117395A (ja) 2006-10-31 2008-05-22 Hewlett-Packard Development Co Lp フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
US20110078396A1 (en) 2009-09-29 2011-03-31 Hitachi, Ltd. Remote copy control method and system in storage cluster environment
JP2016105585A (ja) 2014-11-21 2016-06-09 パナソニックIpマネジメント株式会社 耐タンパ性を有する不揮発性メモリ装置、集積回路カード、不揮発性メモリ装置の認証方法、不揮発性メモリ装置を用いた暗号化方法および復号化方法
JP2016134167A (ja) 2015-01-21 2016-07-25 株式会社東芝 メモリシステムおよび処理装置

Also Published As

Publication number Publication date
US10423487B2 (en) 2019-09-24
KR20180020877A (ko) 2018-02-28
US20180052624A1 (en) 2018-02-22

Similar Documents

Publication Publication Date Title
KR102199424B1 (ko) 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템
US20200327074A1 (en) Multi-Device Storage System with Hosted Services on Peer Storage Devices
US10409511B1 (en) Multi-device storage system with distributed read/write processing
US8560772B1 (en) System and method for data migration between high-performance computing architectures and data storage devices
US10453530B2 (en) RDMA-SSD dual-port unified memory and network controller
US11169738B2 (en) Erasure code data protection across multiple NVMe over fabrics storage devices
US11301162B2 (en) Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems
US10635609B2 (en) Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD
US9417823B2 (en) Memory system management
US20190235777A1 (en) Redundant storage system
JP2015532985A (ja) 大規模なデータ記憶および受け渡しシステム
US11593000B2 (en) Data processing method and apparatus
KR20200041815A (ko) FPGA+SSD 내부의 임베디드 PCIe 스위치로 이레이저 코드 데이터 보호 기능을 지원하는 시스템
US10860224B2 (en) Method and system for delivering message in storage system
US11544205B2 (en) Peer storage devices sharing host control data
EP2859553B1 (en) Memory system management
KR20210137921A (ko) 예비 스토리지 장치와 결함 복원형 스토리지 장치를 사용한 데이터 복구를 위한 시스템, 방법, 및 장치
US11853163B2 (en) Selective rebuild of interrupted devices in data storage device arrays
KR100447267B1 (ko) 레이드 시스템의 분산 제어장치
US20240095196A1 (en) Method for supporting erasure code data protection with embedded pcie switch inside fpga+ssd
US20210073092A1 (en) Distributed failover of a back-end storage director
Birk et al. The TPT-RAID Architecture for Box-Fault Tolerant Storage Systems

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant