KR102392204B1 - 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법 - Google Patents
멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR102392204B1 KR102392204B1 KR1020180131345A KR20180131345A KR102392204B1 KR 102392204 B1 KR102392204 B1 KR 102392204B1 KR 1020180131345 A KR1020180131345 A KR 1020180131345A KR 20180131345 A KR20180131345 A KR 20180131345A KR 102392204 B1 KR102392204 B1 KR 102392204B1
- Authority
- KR
- South Korea
- Prior art keywords
- nvme
- storage device
- mode
- connector
- pcie
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
Abstract
일부 예시적인 실시 예들에 따른 시스템은, 적어도 하나의 마더보드(motherboard); 적어도 하나의 BMC(baseboard management controller); 미드 플레인(mid-plane); 및 적어도 하나의 스토리지 장치를 포함하되, 적어도 하나의 스토리지 장치는 미드-플레인을 통해 복수의 장치 포트들을 경유하여 적어도 하나의 마더보드 또는 적어도 하나의 BMC로부터 수신된 제 1 입력에 기초하여 제 1 모드 또는 제 2 모드에서 동작하고, 제 2 모드에서 동작할 때, 적어도 하나의 스토리지 장치는 복수의 장치 포드들을 경유하여 미드-플레인으로부터 수신된 제 2 입력에 기초하여 복수의 동작 속도들로부터 제 1 속도로 동작할 수 있다.
Description
본 발명은 일반적으로 네트워크-부착형 장치들(network-attaced devices)에 관한 것으로, 좀 더 자세하게는, 멀티-모드 및/또는 멀티-속도 NVMe-oF(non-volatile memory express over fabrics) 장치들을 지원하는 시스템 및 방법에 관한 것이다.
이더넷-부착형 NVMe SDD들(Ethernet-attached NVMe soild state drives)을 이용하는 구성들과 같은 NVMe-oF 구성들로 이더넷(Ethernet) 및 SDD의 비용 및 성능을 개선하는 것이 어려울 수 있다. 예를 들어, SDD 성능은 PCIe(peripheral component interconnect express) 인터페이스 및 NAND 기술에 따라 달라질 수 있는 반면, 50G/100G 기술의 등장으로 이더넷 속도는 증가하였다. 각 장치는 포인트-투-포인트 연결(point-to-point connectivity)을 제공할 수 있기 때문에 패브릭-부착형 SSD들(fabric-attached solid)은 이레이저 코드 데이터 보호(erasure code data protection)를 지원하는 데 있어 고유한 설계 문제들을 추가로 나타낼 수 있다.
따라서, NVMe 및 NVMe-oF 프로토콜들 모두를 지원할 수 있고 상이한 이더넷 속도들에서 동작할 수 있는 스토리지 장치가 바람직하다.
본 발명의 배경이 되는 기술 목차에 개시된 상기 정보는 오직 본 발명의 배경 기술에 대한 이해를 돕기 위함이다. 따라서 선행 기술을 구성하지 않는 정보를 포함할 수 있다.
따라서, NVMe 및 NVMe-oF 프로토콜들 모두를 지원할 수 있고 상이한 이더넷 속도들에서 동작할 수 있는 스토리지 장치가 바람직하다.
본 발명의 배경이 되는 기술 목차에 개시된 상기 정보는 오직 본 발명의 배경 기술에 대한 이해를 돕기 위함이다. 따라서 선행 기술을 구성하지 않는 정보를 포함할 수 있다.
본 발명의 실시 예들은 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법을 제공할 수 있다.
본 명세서의 실시 예들에 관점들에 따른 시스템은, 적어도 하나의 마더보드(motherboard); 적어도 하나의 BMC(baseboard management controller); 미드 플레인(mid-plane); 및 적어도 하나의 스토리지 장치를 포함하되, 적어도 하나의 스토리지 장치는 미드-플레인을 통해 복수의 장치 포트들을 경유하여 적어도 하나의 마더보드 또는 적어도 하나의 BMC로부터 수신된 제 1 입력에 기초하여 제 1 모드 또는 제 2 모드에서 동작하고, 제 2 모드에서 동작할 때, 적어도 하나의 스토리지 장치는 복수의 장치 포드들을 경유하여 미드-플레인으로부터 수신된 제 2 입력에 기초하여 복수의 동작 속도들로부터 제 1 속도로 동작할 수 있다.
일 실시 예에서, 적어도 하나의 스토리지 장치는 커넥터 및 적어도 하나의 버스를 경유하여 적어도 하나의 FPGA(field programmable gate array)와 통신하는 복수의 SSD(solid state drive)들을 포함한다. 일 구성에서, 커넥터는 SSD 커넥터(solid state drive connecter)이고 적어도 하나의 버스는 PCIe(peripheral component interconnect express)이다.
다른 실시 예에서, 제 1 모드 및 제 2 모드는 각각 NVMe(non-volatile memory express) 모드 및 NVMe-oF(non-volatile memory express over fabrics) 모드이다. 일 구성에서, 제 1 입력은, 적어도 하나의 BMC로부터 인-밴드 커맨드(in-band command)에 의해 또는 적어도 하나의 마더보드의 섀시(chassis) 상의 물리적 핀을 사용함으로써 제어된다.
일 실시 예에서, 제 2 입력은, 적어도 하나의 마더보드 상의 로컬 CPU(local central processing unit) 또는 적어도 하나의 BMC, 또는 적어도 하나의 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터들(internal registers)에 의해 제어되는 GPIO(general-purpose input/output) 핀들을 사용함으로써 제어된다. 또 다른 실시 예에서, 적어도 하나의 스토리지 장치의 복수의 동작 속도들은 두 개 이상의 10G(gigabits per second) 이상 속도들(예를 들어, 10G 및 100G 사이 또는 10G 및 100G이상 속도 사이)이다.
일 관점에서, 복수의 장치 포트들은 U.2 커넥터를 경유하여 적어도 하나의 스토리지 장치에 연결되고 스토리지 장치는 HA(high availability) 모드 또는 non-HA(non-high availability) 모드에서 동작한다. 또 다른 관점에서, 적어도 하나의 스토리지 장치는 U.2 커넥터를 경유하여 두 개의 SAS(serial Attached Small Computer System Interface) 포트들 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원하고, 두 개의 SAS 포트들은 패브릭 부착형 포트(fabric attached port)들로 사용되고, 그리고 패브릭 부착형 포트들은 이더넷(ethernet) 포트들, 파이버-채널(fibre-channel) 포트들, 및 인피니밴드(InfiniBand) 포트들로 구성된다.
일 구성에서, 제 2 모드에서 동작할 때, 적어도 하나의 스토리지 장치는, U.2 커넥터를 경유하여, 두 개의 패브릭 부착형 포트들을 위한 제어 플레인(control plane)을 위해서 네 개의 PCIe X4 레인들 중에서 두 개의 PCIe X4 레인들 및 추가적인 패브릭 부착형 포트들로 네 개의 PCIe X4 레인들 중에서 나머지 두 개의 PCIe X4 레인들을 지원한다. 또 다른 구성에서, 적어도 하나의 스토리지 장치는 제 1 스토리지 장치 및 제 2 스토리지 장치를 포함하고, 제 1 시간에, 제 1 스토리지 장치 및/또는 제 2 스토리지 장치는 복수의 속도들로부터 제 1 속도 또는 제 2 속도로 제 1 모드 또는 제 2 모드에서 동작한다.
본 명세서의 실시 예에 따라 제공되는 방법은 미드-플레인을 통해 복수의 장치 포트들을 경유하여 적어도 하나의 마더보드 또는 BMC로부터 스토리지 장치로 제 1 입력을 수신하는 단계; 스토리지 장치에 의해, 스토리지 장치로 수신된 제 1 입력에 기초하여 제 1 동작 모드 또는 제 2 동작 모드에서 동작하는지 여부를 판단하는 단계; 제 2 동작 모드에서 동작할 때, 복수의 장치 포트들을 경유하여 미드-플레인으로부터 스토리지 장치로 제 2 입력을 수신하는 단계; 및 스토리지 장치에 의해, 제 2 입력에 기초하여 복수의 동작 속도들로부터 스토리지 장치의 동작 속도를 선택하는 단계를 포함한다.
일 실시 예에서, 스토리지 장치의 제 1 동작 모드 및 제 2 동작 모드는 NVMe 모드 및 NVMe-oF 모드이다. 또 다른 실시 예에서, 제 1 입력은, BMC로부터 인-밴드 커맨드에 의해 또는 적어도 하나의 마더보드의 섀시 상의 물리적 핀을 사용함으로써 제어된다.
일 관점에서, 제 2 입력은, 적어도 하나의 마더보드 상의 BMC 또는 로컬 CPU, 또는 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터들에 의해 제어되는 GPIO 핀들을 사용하여 제어된다. 또 다른 관점에서, 스토리지 장치의 복수의 동작 속도들은 두 개 이상의 10G 이상 속도들이다.
본 발명의 또 다른 실시 예에 따라 제공되는 스토리지 장치는 제 1 커넥터 및 적어도 하나의 버스를 경유하여 적어도 하나의 FPGA(field programmable gate array)와 통신하는 복수의 SSD(solid state drive)들을 포함하되, 제 2 커넥터를 통해 수신된 제 1 입력에 기초하여 제 1 모드 또는 제 2 모드에서 동작하고, 그리고 제 2 모드에서 동작할 때, 제 2 커넥터를 경유하여 수신된 제 2 입력에 기초하여 복수의 동작 속도들로부터 제 1 속도로 동작한다.
일 관점에서, 제 1 입력은, 복수의 장치 포트들을 경유하여 마더보드 또는 스위치의 BMC로부터 수신되고 제 2 입력은, 복수의 장치 포트들을 경유하여 미드-플레인으로부터 수신되고, 그리고 제 1 입력은, BMC로부터 인-밴드 커맨드에 의해 또는 마더보드의 섀시 상의 물리적 핀을 사용하여 제어되고 제 2 입력은, 마더보드 상의 BMC 또는 로컬 CPU, 또는 FPGA 안의 하나 이상의 내부 레지스터들에 의해 제어되는 GPIO 핀들을 사용하여 제어된다.
또 다른 관점에서, 제 1 커넥터는 SSD 커넥터이고, 적어도 하나의 버스는 PCIe 버스이고, 제 2 커넥터는 U.2 커넥터이고, 스토리지 장치의 제 1 모드 및 제 2 모드는 각각 NVMe 모드 및 NVMe-oF 모드이고, 그리고 스토리지 장치의 복수의 동작 속도들은 두 개 이상의 10G 이상 속도들이다.
일 구성에서, 제 1 시간에, 복수의 SSD들 중에서 제 1 SSD 및/또는 제 2 SSD는 복수의 동작 속도들로부터 제 1 속도 또는 제 2 속도로 제 1 모드 또는 제 2 모드에서 동작한다.
일 실시 예에서, 적어도 하나의 스토리지 장치는 커넥터 및 적어도 하나의 버스를 경유하여 적어도 하나의 FPGA(field programmable gate array)와 통신하는 복수의 SSD(solid state drive)들을 포함한다. 일 구성에서, 커넥터는 SSD 커넥터(solid state drive connecter)이고 적어도 하나의 버스는 PCIe(peripheral component interconnect express)이다.
다른 실시 예에서, 제 1 모드 및 제 2 모드는 각각 NVMe(non-volatile memory express) 모드 및 NVMe-oF(non-volatile memory express over fabrics) 모드이다. 일 구성에서, 제 1 입력은, 적어도 하나의 BMC로부터 인-밴드 커맨드(in-band command)에 의해 또는 적어도 하나의 마더보드의 섀시(chassis) 상의 물리적 핀을 사용함으로써 제어된다.
일 실시 예에서, 제 2 입력은, 적어도 하나의 마더보드 상의 로컬 CPU(local central processing unit) 또는 적어도 하나의 BMC, 또는 적어도 하나의 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터들(internal registers)에 의해 제어되는 GPIO(general-purpose input/output) 핀들을 사용함으로써 제어된다. 또 다른 실시 예에서, 적어도 하나의 스토리지 장치의 복수의 동작 속도들은 두 개 이상의 10G(gigabits per second) 이상 속도들(예를 들어, 10G 및 100G 사이 또는 10G 및 100G이상 속도 사이)이다.
일 관점에서, 복수의 장치 포트들은 U.2 커넥터를 경유하여 적어도 하나의 스토리지 장치에 연결되고 스토리지 장치는 HA(high availability) 모드 또는 non-HA(non-high availability) 모드에서 동작한다. 또 다른 관점에서, 적어도 하나의 스토리지 장치는 U.2 커넥터를 경유하여 두 개의 SAS(serial Attached Small Computer System Interface) 포트들 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원하고, 두 개의 SAS 포트들은 패브릭 부착형 포트(fabric attached port)들로 사용되고, 그리고 패브릭 부착형 포트들은 이더넷(ethernet) 포트들, 파이버-채널(fibre-channel) 포트들, 및 인피니밴드(InfiniBand) 포트들로 구성된다.
일 구성에서, 제 2 모드에서 동작할 때, 적어도 하나의 스토리지 장치는, U.2 커넥터를 경유하여, 두 개의 패브릭 부착형 포트들을 위한 제어 플레인(control plane)을 위해서 네 개의 PCIe X4 레인들 중에서 두 개의 PCIe X4 레인들 및 추가적인 패브릭 부착형 포트들로 네 개의 PCIe X4 레인들 중에서 나머지 두 개의 PCIe X4 레인들을 지원한다. 또 다른 구성에서, 적어도 하나의 스토리지 장치는 제 1 스토리지 장치 및 제 2 스토리지 장치를 포함하고, 제 1 시간에, 제 1 스토리지 장치 및/또는 제 2 스토리지 장치는 복수의 속도들로부터 제 1 속도 또는 제 2 속도로 제 1 모드 또는 제 2 모드에서 동작한다.
본 명세서의 실시 예에 따라 제공되는 방법은 미드-플레인을 통해 복수의 장치 포트들을 경유하여 적어도 하나의 마더보드 또는 BMC로부터 스토리지 장치로 제 1 입력을 수신하는 단계; 스토리지 장치에 의해, 스토리지 장치로 수신된 제 1 입력에 기초하여 제 1 동작 모드 또는 제 2 동작 모드에서 동작하는지 여부를 판단하는 단계; 제 2 동작 모드에서 동작할 때, 복수의 장치 포트들을 경유하여 미드-플레인으로부터 스토리지 장치로 제 2 입력을 수신하는 단계; 및 스토리지 장치에 의해, 제 2 입력에 기초하여 복수의 동작 속도들로부터 스토리지 장치의 동작 속도를 선택하는 단계를 포함한다.
일 실시 예에서, 스토리지 장치의 제 1 동작 모드 및 제 2 동작 모드는 NVMe 모드 및 NVMe-oF 모드이다. 또 다른 실시 예에서, 제 1 입력은, BMC로부터 인-밴드 커맨드에 의해 또는 적어도 하나의 마더보드의 섀시 상의 물리적 핀을 사용함으로써 제어된다.
일 관점에서, 제 2 입력은, 적어도 하나의 마더보드 상의 BMC 또는 로컬 CPU, 또는 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터들에 의해 제어되는 GPIO 핀들을 사용하여 제어된다. 또 다른 관점에서, 스토리지 장치의 복수의 동작 속도들은 두 개 이상의 10G 이상 속도들이다.
본 발명의 또 다른 실시 예에 따라 제공되는 스토리지 장치는 제 1 커넥터 및 적어도 하나의 버스를 경유하여 적어도 하나의 FPGA(field programmable gate array)와 통신하는 복수의 SSD(solid state drive)들을 포함하되, 제 2 커넥터를 통해 수신된 제 1 입력에 기초하여 제 1 모드 또는 제 2 모드에서 동작하고, 그리고 제 2 모드에서 동작할 때, 제 2 커넥터를 경유하여 수신된 제 2 입력에 기초하여 복수의 동작 속도들로부터 제 1 속도로 동작한다.
일 관점에서, 제 1 입력은, 복수의 장치 포트들을 경유하여 마더보드 또는 스위치의 BMC로부터 수신되고 제 2 입력은, 복수의 장치 포트들을 경유하여 미드-플레인으로부터 수신되고, 그리고 제 1 입력은, BMC로부터 인-밴드 커맨드에 의해 또는 마더보드의 섀시 상의 물리적 핀을 사용하여 제어되고 제 2 입력은, 마더보드 상의 BMC 또는 로컬 CPU, 또는 FPGA 안의 하나 이상의 내부 레지스터들에 의해 제어되는 GPIO 핀들을 사용하여 제어된다.
또 다른 관점에서, 제 1 커넥터는 SSD 커넥터이고, 적어도 하나의 버스는 PCIe 버스이고, 제 2 커넥터는 U.2 커넥터이고, 스토리지 장치의 제 1 모드 및 제 2 모드는 각각 NVMe 모드 및 NVMe-oF 모드이고, 그리고 스토리지 장치의 복수의 동작 속도들은 두 개 이상의 10G 이상 속도들이다.
일 구성에서, 제 1 시간에, 복수의 SSD들 중에서 제 1 SSD 및/또는 제 2 SSD는 복수의 동작 속도들로부터 제 1 속도 또는 제 2 속도로 제 1 모드 또는 제 2 모드에서 동작한다.
본 발명은 최소한의 하드웨어 변화만으로 HA(High Availability) 모드 또는 non-HA 모드에서 다양한 타입의 NVMe 및 NVMeoF 장치들을 지원할 수 있는 플랫폼을 제공한다. 멀티-모드에서 동작할 수 있는 장치 및 플랫폼이 제공되므로, 장치 개발 및 배치 비용이 줄어들 수 있고, 장치의 시장 진입 시간이 빨라질 수 있다.
또한, 본 발명은 NVMe 및 NVMe-oF 프로토콜들 모두를 지원할 수 있는 스토리지 장치 및 시스템을 제공한다. 따라서, 스토리지 장치 및 시스템은 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능하다.
또한, 본 발명은 NVMe 및 NVMe-oF 프로토콜들 모두를 지원할 수 있는 스토리지 장치 및 시스템을 제공한다. 따라서, 스토리지 장치 및 시스템은 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능하다.
본 발명의 이들 및 다른 특징들은 명세서, 청구 범위, 및 첨부 도면들을 참조하여 인식되고 이해될 것이다:
도 1a은 본 발명의 일부 예시적인 실시 예들에 따른 NVMe-oF 장치의 구성을 도시한다;
도 1b는 본 발명의 일부 예시적인 실시 예들에 따른 일 실시 예에 따른 예시적인 SSD의 블록도를 도시한다;
도 2는 본 발명의 일부 예시적인 실시 예들에 따른 미드 플레인 또는 CPLD(complex programmable logic device)의 불록도를 도시한다;
도 3은 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 멀티-모드 NVMe-oF 장치의 구성에 따른 U.2 커넥터의 예시적인 사용을 보여주는 예시적인 표를 도시한다;
도 4a 및 도 4b는 본 발명의 일부 예시적인 실시 예들에 따른 non-HA(non-high availability) 모드에서 동작하는 예시적인 NVMe-oF 장치의 블록도를 도시한다;
도 4c 및 도 4d는 본 발명의 일부 예시적인 실시 예들에 따른 HA(high availability) 모드에서 동작하는 예시적인 NVMe-oF 장치의 블록도를 도시한다;
도 5a는 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 FPGA 장치의 블록도를 도시한다;
도 5b는 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 FPGA 장치의 다른 블록도를 도시한다;
도 6은 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 FPGA 장치의 또 다른 블록도를 도시한다;
도 7은 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 스위치의 블록도를 도시한다;
도 8은 본 발명의 일부 예시적인 실시 예들에 따른 스토리지 장치를 동작하기 위한 방법의 순서도를 도시한다.
도 1a은 본 발명의 일부 예시적인 실시 예들에 따른 NVMe-oF 장치의 구성을 도시한다;
도 1b는 본 발명의 일부 예시적인 실시 예들에 따른 일 실시 예에 따른 예시적인 SSD의 블록도를 도시한다;
도 2는 본 발명의 일부 예시적인 실시 예들에 따른 미드 플레인 또는 CPLD(complex programmable logic device)의 불록도를 도시한다;
도 3은 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 멀티-모드 NVMe-oF 장치의 구성에 따른 U.2 커넥터의 예시적인 사용을 보여주는 예시적인 표를 도시한다;
도 4a 및 도 4b는 본 발명의 일부 예시적인 실시 예들에 따른 non-HA(non-high availability) 모드에서 동작하는 예시적인 NVMe-oF 장치의 블록도를 도시한다;
도 4c 및 도 4d는 본 발명의 일부 예시적인 실시 예들에 따른 HA(high availability) 모드에서 동작하는 예시적인 NVMe-oF 장치의 블록도를 도시한다;
도 5a는 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 FPGA 장치의 블록도를 도시한다;
도 5b는 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 FPGA 장치의 다른 블록도를 도시한다;
도 6은 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 FPGA 장치의 또 다른 블록도를 도시한다;
도 7은 본 발명의 일부 예시적인 실시 예들에 따른 예시적인 스위치의 블록도를 도시한다;
도 8은 본 발명의 일부 예시적인 실시 예들에 따른 스토리지 장치를 동작하기 위한 방법의 순서도를 도시한다.
첨부된 도면과 관련되어 이하 제시되는 상세한 설명은 본 발명에 따라 제공되는 멀티-모드 및/또는 멀티-속도 NVMe-oF(non-volatile memory express over fabrics) 장치들을 지원하는 시스템 및 방법의 일부 예시적인 실시 예들을 설명할 의도이고 단지 본 발명이 구성될 수 있거나 이용될 수 있는 형태들을 나타내기 위한 의도는 아니다. 설명은 예시된 실시 예들과 관련하여 본 발명의 특징들을 제시한다. 그러나, 또한 본 발명의 사상 및 범위 내에 포함되도록 의도된 다른 실시 예들에 의해 동일하거나 동등한 기능들 및 구조들이 달성될 수 있음은 이해된다. 본 명세서의 다른 곳에서 나타낸 바와 같이, 동일한 참조 번호들은 동일한 구성요소들 또는 특징들을 나타내기 위한 것이다.
NVMe(non-volatile memory express)는 PCIe(peripheral component interconnect express) 버스를 통해 불휘발성 메모리 서브시스템(예를 들어, SSD(solid-state drive))과 통신하는 호스트 소프트웨어를 위한 레지스터-레벨의 인터페이스를 정의하는 표준이다. NVMe는 호스트 및 주변 대상 스토리지 장치 또는 시스템을 연결하거나 둘 사이 데이터를 전송하기 위한 SCSI(small computer system interface)의 대안이다. PCIe-연결된 NVMe SSD들은 애플리케이션들이 스토리지(storage)로 직접 의사전달(talk directly)을 하도록 허용한다.
NVMe의 물리적 연결은 PCIe 버스에 기반한다. 일반적인 이더넷 SSD(eSSD)는 PCIe 버스를 통해 미드-플레인(mid-plane)을 경유하여 시스템과 인터페이스하는 U.2 커넥터를 포함한다. U.2(SFF-8639)는 SSD들을 컴퓨터와 연결하기 위한 컴퓨터 인터페이스이다. U.2 커넥터는 하나의 SATA(serial advanced technology attachment) 포트, 두 개의 SAS(serial attached SCSI) 포트들 또는 PCIe SSD들 내 병렬 I/O의 최대 네 개의 레인들 (X4)을 지원할 수 있다. U.2 커넥터는 NVMe를 위해 표준화되어있고 일반적인 SATA SSD의 속도의 다섯 배를 제공하는 PCIe 3.0 X4를 지원한다.
NVMe-oF(non-volatile memory express over fabric)는 PCIe 이외의 다양한 패브릭들(fabrics)(또는 상호연결들(interconnects))에 대한 동작을 가능하게 하는 NVMe 표준으로의 확장이다. 여기서, “패브릭(fabric)”이라는 용어는 네트워크 노드들이 다양한 상호 연결 프로토콜들, 포트들, 및 스위치들을 통하여 서로 데이터를 전달할 수 있는 네트워크 토폴로지(network topology)를 나타낸다. 예를 들어, 이더넷-부착형(Ethernet-attached) SSD들은 패브릭에 직접 부착될 수 있고, 이 경우 패브릭은 이더넷이다.
NVMe-oF는 NVMe 호스트 장치 및 NVMe 스토리지 드라이브 또는 서브시스템이 연결할 수 있는 거리들을 연장하는 PCIe에 대한 대체 전송들의 사용을 가능하게 한다. 따라서, NVMe-oF는 NVMe 메세지-기반 커맨드들이 네트워크(예를 들어, 이더넷(ethernet), 파이버 채널(FC; fibre channel) 또는 인피니밴드(infiniBand))를 통해 호스트 컴퓨터와 대상 솔리드-스테이트 스토리지 장치(예를 들어, eSSD 또는 NVMe-oF 장치) 또는 시스템 사이에 데이터를 전송하는 것이 가능하도록 설계된 기술 사양이다. NVMe-oF 표준을 지원하도록 구성된 경우, 시스템은 이더넷 뿐만 아니라, 파이버 채널, 인피니밴드, 또는 다른 네트워크 패브릭들(network fabrics)을 포함하는 다양한 패브릭들을 지원할 수 있다. 예를 들어, eSSD들은 패브릭에 직접 부착될 수 있고, 이 경우 패브릭은 이더넷이다. eSSD는 NVMe-oF 프로토콜들을 지원할 수 있는 SSD들을 지칭할 수 있다. 설명의 편의를 위하여, 이하의 예들 및 실시 예들은 이더넷-부착형 NVMe-oF 장치들을 보여줄 수 있다. 그러나, 본 명세서의 사상 및 범위로부터 벗어나지 않고 임의의 다른 타입의 NVMe-oF 장치들이 사용될 수 있다.
전술한 바와 같이, NVMe의 물리적 연결은 PCIe 버스에 기반한다. 최근 PCIe 4.0의 출현으로 대역폭 불일치(mismatch)는 PCIe 3.0보다 높을 수 있다. 싱글 25G 이더넷은 SSD에서 X4 PCIe 4.0 (최대 8GB/s)까지 백엔드(backend)를 따라갈 수 있는 충분한 대역폭을 가지고 있지 않다. 50G 또는 100G 이더넷은 SSD에서 X4 PCIe 4.0에 대한 보다 나은 일치(match)를 제공한다. 따라서, 본 발명의 실시 예들은 NVMe 및 NVMe-oF 프로토콜들 모두를 지원할 수 있는 스토리지 장치(예를 들어, eSSD)를 포함할 수 있고, 그리고 NVMe-oF 모드에 있는 경우, 스토리지 장치는 하드웨어의 어떠한 변경들도 없이 10G(gigabits per second)에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다.
또한, 본 발명의 실시 예들은 어떠한 플랫폼 시스템도 상이한 공급자로부터 상이한 타입의 NVMe-oF 장치들을 지원할 수 있도록 한다. 스위치보드, 미드-플레인(mid-plane), 그리고 이더넷 SSD들과 같은 공통 빌딩 블록들을 사용함으로써, 에코-시스템 제공자들은 기존 시스템들보다 시장에 빠르게 진입할 수 있고 그리고 다양한 소비자들을 만족시키기 위해 다양한 가격/성능 제품들을 제공할 수 있다. 일부 예시적인 실시 예들은 PM1725a 또는 PM1735와 같은 표준 U.2 및 M.3 SSD들과 같이 새로 대두되는 것들로 NVMe-oF 장치들을 지원할 수 있는 공통 시스템 플랫폼 또한 가능하게 할 수 있다. 일 구성에 있어서, M.3 SSD들은 NGSFF(next generation small form factor) 기반 SSD들로도 불릴 수 있다.
본 발명의 시스템의 다른 실시 예들은 NVMe 및 NVMe-oF 장치들 모두를 지원할 수 있는 공통 빌딩 블록들 및 싱글 플랫폼을 제공하고 그리고 NVMe-oF 모드인 경우, 시스템은 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다. NVMe 및 NVMe-oF 장치들 모두를 지원할 수 있는 공통 빌딩 블록들은 스위치 보드, 미드-플레인, 그리고 eSSD들을 포함할 수 있다. 본 발명의 시스템은 좀 더 유사한 장치들 및/또는 섀시를 추가함으로써 선형적으로 확장할 수 있다. 본 발명의 시스템은 또한 PM1725a 또는 PM1735와 같은 표준 U.2 커넥터 및 M.3 또는 NGSFF 기반 SSD들로 NVMe-oF 장치들을 지원할 수 있는 공통 시스템 플랫폼을 제공할 수 있다. 본 발명의 시스템의 다른 구성들은 또한 50G 및 100G 이더넷 및 PCIe 4.0과 같은 기술들 발전과 호환될 수 있다. 특히, 본 명세서의 다른 구성들은 NVMe 및 NVMe-oF 프로토콜 모드들 모두, 및 다양한 유형의 패브릭-부착형(fabric-attached) SSD들(예를 들어, eSSDs)을 지원할 수 있는 시스템을 제공한다. 또한, 본 명세서의 다른 구성들은 장치가 어디에 배치되었는지 및 어떠한 성질을 데이터 집합의 특정 위치로의 배치 결과로서 채택해야 하는지를 이해하기 위해서 섀시 및 장치(예를 들어, eSSD)가 어떻게 장치를 조정하는지에 관한 정보를 제공할 수 있다.
여기에 개시된 패브릭-부착형 SSD(eSSD)는 NVMe 및 NVMe-oF 표준들과 호환되는 다양한 시스템들 내에서 사용될 수 있는 단일 공통 장치이다. 이더넷 SSD들(ethernet SSD)은 미드-플레인을 경유하여 호스트 장치와 인터페이스하기 위해 U.2 커넥터들을 사용할 수 있다. U.2 커넥터들은 25Gbps(100G-KR4) 이더넷을 지원할 수 있다. 본문에 개시된 eSSD는 NVMe 및 NVMe-oF 표준들과 호환되는 다양한 시스템들 내에서 사용될 수 있는 장치일 수 있다. 이와 같이, 패브릭-부착 SSD (eSSD)는 또한 멀티-모드 NVMe-oF 장치로 지칭된다. 멀티-모드 NVMe-oF 장치는 알려진 위치(예를 들어, 마더보드 또는 미드-플레인의 섀시 타입 핀 E6)로부터 제품 정보를 검출함으로써 NVMe 또는 NVMe-oF 표준 중 어느 하나를 지원할 수 있다. 예를 들면, U.2 커넥터 상의 정의된 신호(예를 들어, 모드 신호)는 NVMe 또는 NVMe-oF 모드에서 동작할지 여부를 드라이브에 표시할 수 있다. 만약 NVMe 섀시에 있다면, U.2 커넥터의 X4 레인 PCIe는 PCIe 엔진에 의해 구동된다. 이 경우, 장치는 패브릭 부착형 포트들(fabric attached ports)(예를 들어, 이더넷 포트들, 파이버-채널 포트들, 또는 인피니밴드 포트들)을 비활성화하고 그리고 모든 NVMe 프로토콜들과 기능들은 지원되거나 활성화된다. 만약 NVMe-oF 섀시에 있다면, 패브릭 부착형 포트들은 오직 사용되지 않은 SAS 핀들만 사용한다.
도 1a는 NVMe-oF 장치(100)의 구성을 도시한다. 도 1a의 NVMe-oF 장치(100)는 FPGA(102), 제 1 M.3 포맷 SSD(114), 제 2 M.3 포맷 SSD(116), 두 개의 DDR4(double data rate 4th generation) 메모리들(122,124), 그리고 네 개의 캐패시터들(126,128,130,132)을 포함한다. NVMe-oF 장치(100)는 또한 U.2 커넥터(112)에 연결 또는 접속되고, 그리고 U.2 커넥터(112)를 경유하여 두 개의 SAS 포트(SAS0 및 SAS1) 및 PCIe X4 버스의 최대 4 개의 PCIe X4 레인들을 지원할 수 있다. 두 개의 SAS 포트(SAS0 및 SAS1)는 NVMe-oF 장치(100)에 의해 이더넷 포트들로 사용될 수 있다. NVMe-oF 장치(100)는 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다.
도 1b는 일 실시 예에 따른 예시적인 M.3 포맷 SSD(134)의 블록도를 도시한다. M.3 포맷 SSD(134)는 도 1a의 SSD(114) 또는 SSD(116)일 수 있다. M.3 포맷 SSD(134)의 뉴 폼 팩터 1(NF1; new form factor 1)은 두 행의 낸드 플래시 패키지(NAND flash package)들을 수용할 수 있고, 그리고 그에 따라 모듈식 SSD들의 수용력을 최대화시킬 수 있다. M.3 포맷 SSD(134)는 PCIe X4 버스(136)를 경유하여 FPGA에 연결될 수 있다. FPGA는 도 1a의 FPGA(102)일 수 있고 PCIe X4 버스(136)는 도 1a의 PCIe X4 버스들(118,120) 중 하나 일 수 있다. M.3 포맷 SSD(134)는 또한 FPGA(예를 들어, 도 1a의 FPGA(102))와 연결하기 위해 사용되는 M.2 커넥터의 미사용 또는 예비(예를 들어, 고속) 핀들을 사용하여 적어도 하나의 옵션 이더넷 포트(이더넷 포트 A 및/또는 이더넷 포트 B)(138)를 수용할 수 있다. 적어도 하나의 이더넷 포트(138)는 M.3 포맷 SSD(134)가 NVMe-oF 모드에서 동작하게 할 수 있다.
일부 실시 예들에 있어서, M.3 포맷 SSD(134)는 2.5인치 하드 드라이브 폼-팩터(hard drive form-factor) (또는 스몰 폼 팩터(SFF; small form factor)) 표준을 따를 수 있다. 다른 실시 예들에 있어서, M.3 포맷 SSD(134)는 표준 PCIe 카드 폼 팩터(standard PCIe card form factor)(예를 들어 FH-FL(full-height, full-length) 카드 아웃라인, 또는 FH-HL(full-height, half-length) 아웃라인)을 따를 수 있다. M.3 포맷 SSD(134)는 또한 제어기(controller), 버퍼 메모리(buffer memory), 그리고 플래시 메모리(flash memory)를 포함할 수 있다. 제어기는, 예를 들어, 버퍼 메모리 또는 제어기내의(또는 제어기와 분리된) ROM(read-only memory)에 저장된) 소프트웨어(software), NVMe 커맨드들, 및/또는 펌웨어(firmware)를 실행할 수 있다. 도 1b에서, eSSD ASIC(140)은 FTL(flash translation layer) 및 플래시 제어기(flash controller)들을 포함하는 향상된 SSD 제어기이다.
도 1a로 다시 돌아오면, NVMe-oF 장치(100)는 NVMe 모드 또는 NVMe-oF 모드 중 하나로 동작하도록 구성될 수 있다. NVMe-oF 모드에서, NVMe-oF 장치(100)는 두 개의 PCIe 레인들(PCIe 1 및 PCIe 2)을 이더넷 포트 B(106)와 이더넷 포트 D(110)로 구성할 수 있다. NVMe-oF 장치(100)는 또한 두 개의 SAS 포트들(SAS0 및 SAS1)을 이더넷 포트 A(104)와 이더넷 포트 C(108)로 구성할 수 있다. 제 1 25G 이더넷 포트(104)는 U.2 커넥터(112)의 핀들 S2, S3, S5, 및 S6에 연결될 수 있고, 제 2 25G 이더넷 포트(106)는 U.2 커넥터(112)의 핀들 S17, S18, S20, 및 S21에 연결될 수 있고, 제 3 25G 이더넷 포트(108)는 U.2 커넥터(112)의 핀들 S9, S10, S12, 및 S13에 연결될 수 있고, 그리고 제 4 25G 이더넷 포트(110)는 U.2 커넥터(112)의 핀들 S23, S24, S26, 및 S27에 연결될 수 있다. NVMe-oF 모드인 경우, NVMe-oF 장치(100)는 10G부터 100G까지 상이한 이더넷 속도들로 동작할 수 있다.
도 1a에 있어서, NVMe-oF 장치(100)가 NVMe-oF 모드로 구성될 경우, FPGA(102)는 네 개의 25Gbps 이더넷 포트들(104,106,108,110) 및 두 개의 M.3 포맷 SSD들(114,116) 사이의 인터페이스를 제공할 수 있다. 네 개의 25Gbps 이더넷 포트들(104,106,108,110)은 NVMe-oF 장치(100)의 동작 모드에 따라 미드-플레인을 통해 마더보드로 연결될 수 있다. 일 구성에 있어서, 마더보드는 하나 이상의 스위칭 구성요소들, 하나 이상의 메모리 구성요소들, 하나 이상의 I/O 구성요소들 등을 포함할 수 있다. FPGA(102)는 제 1 PCIe X4 버스(118)를 경유하여 제 1 M.3 포맷 SSD(114)와 인터페이스하고 그리고 제 2 PCIe X4 버스(120)를 통해 제 2 M.3 포맷 SSD(116)와 인터페이스한다. 제 1 PCIe X4 버스(118) 및 제 2 PCIe X4 버스(120)는 각각의 M.2 커넥터들을 통해 제 1 M.3 포맷 SSD(114) 및 제 2 M.3 포맷 SSD(116)에 연결될 수 있다. 이 경우, SSD들(114,116)에 부착된 M.2 커넥터들의 미사용 또는 예비(예를 들어, 고속) 핀들은 이더넷 연결을 위해 사용될 수 있다. 이 모드에서, FPGA(102)는 NVMe-oF 대상으로 기능할 수 있다. eSSD ASIC/FPGA(102)에 구현된 NVMe-oF 대상은 대상 장치의 마더보드 상의 X86-기반 중앙 처리 유닛(central processing unit)을 위한 필요를 제거하는 모든 네트워크와 스토리지 프로토콜 처리(storage protocol processing)를 제공한다. NVMe-oF 기반 시스템에 있어서, 대상 장치가 스스로 데이터를 운반할 수 있기 때문에 마더보드 상의 X86-기반 CPU는 이니시에이터(initiator; 예를 들어, 호스트 소프트웨어) 및 대상 장치(즉, NVMe-oF 장치) 사이에 데이터를 운반하기 위해 더 이상 필요하지 않다.
일 구성에 있어서, NVMe-oF 장치(100)는 NVMe 모드로 구성될 수 있다. NVMe 모드에서, NVMe-oF 장치(100)는 PCIe X4 버스를 통해 PCIe 신호들을 운반하기 위해 네 개의 PCIe X4 레인들(싱글 포트 모드에서) 모두를 사용할 수 있다. PCIe X4 버스는 미드-플레인에 연결되고, 그리고 PCIe 버스는 데이터 및 제어 신호들 사이에 공유된다. 일 관점에서, 주어진 시간에, NVMe-oF 장치(100)의 제 1 M.3 포맷 SSD(114) 및 제 2 M.3 포맷 SSD(116)는 모두 NVMe 모드 또는 NVMe-oF 모드로 동작 할 수 있다. 다른 관점에서, 주어진 시간에, 제 1 M.3 포맷 SSD(114)는 NVMe 모드에서 동작 할 수 있고 제 2 M.3 포맷 SSD(116)는 NVMe-oF 모드에서 동작 할 수 있다. 또 다른 관점에서, 주어진 시간에, 제 1 M.3 포맷 SSD(114)는 NVMe-oF 모드에서 동작 할 수 있고 제 2 M.3 포맷 SSD(116)는 NVMe 모드에서 동작 할 수 있다.
NVMe-oF 장치(100)의 동작 모드는 마더보드의 BMC(baseboard management controller)로부터 수신한 인-밴드(in-band) 커맨드에 의해 또는 물리적 핀(예를 들어, 마더보드의 섀시 상의 프레젠스 핀(핀 E6))을 사용하여 외부적으로 설정되거나, 또는 자체 구성될 수 있다. 이더넷을 통하여 검색되는(retrieved) 관리 정보는 “인-밴드(in-band)” 정보라 지칭된다. 반면에, PCIe 버스를 통하여 검색되는 관리 정보는 “아웃-오브-밴드(out-of-band)” 정보라 지칭된다. NVMe-oF 장치로 구성될 경우, 멀티-모드 NVMe-oF 장치(100; 섀시 타입 핀 E6=low)는 싱글 포트 NVMe-oF 모드 또는 듀얼 포트 NVMe-oF 모드 중 하나로 구성될 수 있다. 싱글 포트 NVMe-oF 모드에서, U.2 커넥터(112)의 핀 E25는 하이(high)일 수 있고 그리고 듀얼 포트 NVMe-oF 모드에서, U.2 커넥터(112)의 핀 E25는 로우(low)일 수 있다.
도 2는 본 발명의 일부 예시적인 실시 예에 따른 미드 플레인 또는 CPLD(complex programmable logic device)의 불록도이다. 일 구성에서, 도 2을 참조하면, NVMe-oF 장치(100)의 상이한 동작 속도들은 미드-플레인 또는 CPLD(204)에 위치한 두 개의 추가적인 GPIO(general-purpose input/output) 핀들(202; ESpeed[1:0])을 사용함으로써 달성될 수 있다. GPIO 핀들(202)은 마더보드 상의 BMC 또는 로컬 CPU(local central processing unit), 또는 NVMe-oF 장치(100)의 FPGA(102) 내부에 있는 내부 레지스터(internal register)에 의해 제어될 수 있고, U.2 커넥터(112)의 핀들 E23 및 E24에 연결된 I2C 버스를 경유하여 접근 가능하다. 이전 옵션에서, ESpeed 핀들(202)은 CPLD(204) 내부의 U.2 I2C 핀들과 합쳐지고 그리고 리셋(207)이 선언되고(high에서 low로) 난 후에 래치될 수 있다. 일 구성에서, MUX로의 입력들은 마더보드 상의 BMC 또는 로컬 CPU, 또는 CPLD(204)에 의해 구동된다. 그러나, 일부 구성들에서, MUX의 위치는 CPLD(204)의 내부이다. MUX들의 개수는 지원받는 섀시 내의 NVMe-oF 장치들의 최대 개수와 같다. 이렇게 하면 각 장치는 개별적으로 그리고 독립적으로 리셋될 수 있다. 이 방법은 핫 플러그러블 이벤트들(hot-pluggable events; hot add 및 hot removal)을 지원할 수 있다. 만약 MUX가 모든 장치들과 공유한다면, 새로운 장치가 핫 인서트(hot insert)될 경우, 리셋 사이클로 인해 섀시 내의 기존 장치들에 영향을 줄 수 있고, 이는 바람직하지 않을 수 있다.
이 경우, CPLD(204)는 마더보드 상의 BMC 또는 로컬 CPU에 의해 제어될 수 있다. BMC 또는 로컬 CPU로부터 제어 신호는 CPLD(204)의 CPLD/BMC PIO 핀들(206)로 수신될 수 있다. 이하의 표 1은 NVMe-oF 장치(100)의 상이한 동작 속도들 동안 ESpeed 핀들의 상태를 도시한다.
또한, 이더넷 속도는 전원이 켜지거나(power on) 리셋(reset)되는 동안 SMBus(208; system management bus)을 사용하여 선택된다. 일 구성에서, 멀티플렉서는 파워 온(power on) 또는 리셋 신호(207)에 의해 선택되고, 그리고 리셋(207)이 액티브 로우(active low)인 경우 멀티플렉서는 FPGA(102)에 대해 ESpeed(1:0)(202)를 선택할 수 있고, 리셋(207)이 하이(high)인 경우 멀티플렉서는 각 슬롯 사이의 SMBus(208)를 스위치 보드 상의 BMC에 연결할 수 있다. 일 구성에서, 멀티-모드 NVMeoF 장치(100)는 싱글 포트 NVMe 모드, 듀얼 포트 NVMe 모드, 싱글 포트 NVMe-oF 모드, 및 듀얼 포트 NVMe-oF 모드로 구성될 수 있다.
도 3은 도 1a의 멀티-모드 NVMe-oF 장치(100)의 구성에 따른 U.2 커넥터(112)의 예시적인 사용을 도시한다. NVMe 장치(섀시 타입 핀 E6=low)로 구성되는 경우, 멀티-모드 NVMe-oF 장치(100)는 싱글 포트 NVMe 모드 또는 듀얼 포트 NVMe 모드 중 하나로 구성될 수 있다. 싱글 포트 NVMe 모드에서, U.2 커넥터(112)의 듀얼 포트 EN# 핀 E25는 하이(high) 선언될 수 있다. 싱글 포트 NVMe 모드에서, U.2 커넥터(112)의 PCIe 레인들 0 내지 3은 PCIe 신호들을 운반하는데 사용된다. 듀얼 포트 NVMe 모드에서, U.2 커넥터(112)의 듀얼 포트 EN# 핀 E25는 로우(low) 선언될 수 있다. 듀얼 포트 NVMe 모드에서, PCIe 레인들 0 내지 3은 2×2 레인들로 분리된다; PCIe 레인들 0 및 1은 제 1 포트(포트 A)를 위하여 사용되고, PCIe 레인들 2 및 3은 제 2 포트(포트 B)를 위하여 사용된다.
일 구성에서, 멀티-모드 NVMe-oF 장치(100)가 NVMe-oF 모드에 있는 경우, NVMe-oF 장치(100)는 제 1(포트 A) 및 제 2(포트 B) 이더넷 포트들을 위한 제어 플레인(control plane)을 위해서 두 개의 X1 PCIe 레인들(PCIe 0 및 PCIe 3)을 가질 수 있다. 이와 같은 구성들은 추가적인 25G 이더넷 포트들(이더넷 포트 B 및 D)을 위하여 사용될 수 있는 두 개의 PCIe 레인들(PCIe 1 및 PCIe 2)을 만들 수 있다. 일부 구성들에서, NVMe-oF 장치(100)가 NVMe-oF 모드에서 10G(싱글 포트 또는 듀얼 포트) 또는 20G(싱글 포트 또는 듀얼 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 A(제 1 포트)를 위해서 사용되고, 그리고 SAS 포트 1은 사용되지 않는다. PCIe 레인들 0 및 3은 제 1(포트 A) 및 제 2(포트 B) 이더넷 부착형 NVMe-oF 제어기들을 위한 제어 플레인으로써 사용되고, PCIe 레인 1은 이더넷 포트 B(제 2 포트)를 위해서 사용되고, 그리고 PCIe 레인 2는 사용되지 않는다. 일부 다른 구성들에서, NVMe-oF 장치(100)가 NVMe-oF 모드에서 50G(싱글 포트 또는 듀얼 포트) 또는 100G(오직 싱글 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 A(제 1 포트)를 위해서 사용되고 그리고 SAS 포트 1는 이더넷 포트 C(제 3 포트)로써 사용된다. PCIe 레인들 0 및 3은 제 1(포트 A) 및 제 2(포트 B) 이더넷 부착형 NVMe-oF 제어기들을 위한 제어 플레인으로써 사용되고, PCIe 레인 1은 이더넷 포트 B(제 2 포트)를 위해서 사용되고, 그리고 PCIe 레인 2은 이더넷 포트 D(제 4 포트)를 위해서 사용된다.
일부 구성들에서, 만일 제품 정보(product information)가 섀시에 저장된 경우, U.2 커넥터(112) 상의 PCIe 버스의 2개의 레인들(싱글 포트 모드에서) 또는 4개의 레인들(듀얼 포트 모드에서)은 PCIe 엔진에 의해 구동된다. 이 경우, 멀티-모드 NVMe-oF 장치(100)는 이더넷 엔진(들)을 불활성화(diable)시킬 수 있고, 그리고 NVMe 프로토콜들 및 기능들이 지원되거나 또는 활성화(enable)된다. 만일 제품 정보가 NVMe-oF 섀시에 저장된 경우, 이더넷 부착형 NVMe-oF 제어기들은 멀티-모드 NVMe-oF 장치의 설계에 따라 PCIe 레인들 1 및 2, 및/또는 SAS 핀들만 사용한다.
일부 경우들에서, 자율 구성(self-configuration)을 위해 사용되는 제품 정보는 VPD(vital product data)의 형태로 섀시에 저장된다. 시작되는 동안, 멀티-모드 NVMe-oF 장치(100)는 섀시로부터 VPD를 검색(retrieve)할 수 있고, VPD를 기반으로 자체 구성할 수 있다. 일부 구성에서, 멀티-모드 NVMe-oF 장치(100)는 본 명세서의 사상으로부터의 벗어남 없이 다양한 방식으로 구성될 수 있다. 예를 들어, 멀티-모드 NVMe-oF 장치(100)는 멀티-모드 NVMe-oF 장치(100)와 연결된 마더보드의 BMC에 의해 발행된 PCIe 버스를 통한 제어 커맨드에 의해 구성될 수 있다. 본 발명의 시스템은 최소한의 하드웨어 변경만으로 non-HA(non-high availability) 모드(즉, 단일-경로 입력/출력(I/O)) 또는 HA(high availability) 모드(즉, 다중-경로 I/O)에서 다양한 형태의 NVMe 및 NVMe-oF 장치들을 지원할 수 있는 플랫폼을 제공한다.
도 4a 및 도 4b는 일 실시 예에 따른 non-HA 모드에서 동작하는 예시적인 NVMe-oF 장치의 블록도를 도시한다. NVMe-oF 장치(400)은 도 1a의 NVMe-oF 장치(100)일 수 있다. 본 예시에서, NVMe-oF 장치(400)는 단일-경로 I/O들을 지원할 수 있고 그리고 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작할 수 있다. NVMe-oF 장치(400)는 FPGA(402), 제 1 M.3 포맷 SSD(414), 제 2 M.3 포맷 SSD(416), 두 개의 DDR4(double data rate 4th generation) 메모리들(422,424)을 포함할 수 있다. FPGA(402)는 제 1 PCIe X4 버스(418)를 경유하여 제 1 M.3 포맷 SSD(414)와 인터페이스하고 그리고 FPGA(402)는 제 2 PCIe X4 버스(420)를 경유하여 제 2 M.3 포맷 SSD(416)와 인터페이스한다. NVMe-oF 장치(400)는 또한 U.2 커넥터 (412)에 연결되고, 그리고 U.2 커넥터 (412)를 통해 NVMe-oF 장치(400)는 두 개의 SAS 포트들(SAS0 및 SAS1) 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원할 수 있다. 두 개의 SAS 포트들(SAS0 및 SAS1)은 이더넷 포트들로 사용될 수 있다. NVMe-oF 장치(400)는 두 개의 PCIe 레인들(PCIe 1, PCIe 2)을 이더넷 포트들(406(이더넷 포트 B) 및 410(이더넷 포트 D))로 구성할 수 있다. NVMe-oF 장치(400)는 이더넷 포트들(404(이더넷 포트 A) 및 408(이더넷 포트 C))로 두 개의 SAS 포트들(SAS0 및 SAS1)을 더 구성할 수 있다. 제 1 25G 이더넷 포트(404)는 U.2 커넥터(412)의 핀들 S2, S3, S5, 및 S6에 연결될 수 있고, 제 2 25G 이더넷 포트(406)는 U.2 커넥터(412)의 핀들 S17 S18, S20, 및 S21에 연결될 수 있고, 제 3 25G 이더넷 포트(408)는 U.2 커넥터(412)의 핀들 S9, S10, S12, 및 S13에 연결될 수 있고, 그리고 제 4 25G 이더넷 포트(410)는 U.2 커넥터(412)의 핀들 S23, S24, S26, 및 S27에 연결될 수 있다.
일 구성에서, 이더넷 포트들(404, 406, 408, 및 410)은 다수의 고속 Molex 커넥터들(428)을 경유하여 미드-플레인(426)을 통해 마더보드(401)와 연결될 수 있다. 다수의 고속 Molex 커넥터들(428)은 모든 이더넷 포트들(404,406,408,410) 및 SMBus, 리셋, 클럭 등과 같은 다른 비-고속(non-high speed) 제어 신호(control signal)들을 총괄하여 운반할 수 있다. 마더보드(401)는 로컬 CPU(434), BMC(432), 이더넷 스위치 제어기(436), PCIe 스위치(438), 그리고 두 개의 DDR4 메모리들(440, 442)을 포함할 수 있다. 일부 구성들에서, 마더보드(401)는 미드-플레인(426)을 통해, NVMe-oF 장치(400)로 다양한 신호들을 푸쉬(push)할 수 있고 그리고 이더넷 포트들(404,406,408,410)을 통해 NVMe-oF 장치(400) 상에서 다양한 서비스들을 수행할 수 있다. 예를 들어, 마더보드(401)는 NVMe-oF 장치(400)로부터 이더넷 포트들(404,406,408,410)을 통해, NVMe-oF 장치(400)의 헬스 상태 정보(health status information), FRU(field-replaceable unit) 정보, 및 센서 정보를 포함하나 이에 한정되지 않는 장치-특정 정보를 수신할 수 있다. 마더보드(401)는 이더넷 포트들(404,406,408,410)을 통해, BMC(예를 들어, BMC(432)) 또는 로컬 호스트 CPU(예를 들어, CPU (434))로의 탐색 서비스들 및 펌웨어 업그레이드를 수행하기 위한 새로운 eSSD 펌웨어에 대한 다운로드 서비스들을 포함하나, 이에 한정하지 않는 다양한 서비스들을 더 수행할 수 있다.
도 4c 및 4d는 일 실시예에 따른 HA(high availability) 모드에서 동작하는 예시적인 도 4b의 예시적인 NVMe-oF 장치(400)의 블록도를 도시한다. 이 예시에서, NVMe-oF 장치(400)는 멀티-경로 I/O들을 지원할 수 있고 그리고 하드웨어의 어떠한 변경들도 없이, 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다. HA 모드에서, NVMe-oF 장치(400)는 미드-플레인(426)을 통해 듀얼 포트 구성(HA 모드에서)에서 멀티 I/O를 지원하기 위해 두 개의 마더보드들(401,403)에 연결될 수 있다. 미드 플레인(426)은 HA 모드와 non-HA 모드를 모두 지원할 수 있는 공통 미드-플레인이다. 시스템 구성에 따라, 신호 무결성(signal integrity)는 공통 미드-플레인(426)이 양쪽 모든 구성들을 지원할 수 있음을 보장하기 위해 검증될 필요가 있을 수 있다. 만일 신호 무결성이 충분하지 않은 경우, 시스템은 HA 모드를 위한 제 1 미드-플레인 및 non-HA 모드를 위한 제 2 미드-플레인을 포함하는 두 가지 미드-플레인 버전을 가질 수 있다. U.2 커넥터의 E25 핀은 듀얼 포트 구성을 가능하게 하는데 사용될 수 있다. NVMe-oF 장치(400)는 마더보드(401 또는 403)의 BMC(432 또는 444)로부터 인-밴드 커맨드에 의해 또는 마더보드(401 또는 403)의 섀시 상의 물리적 핀(프레젠스 핀(핀 E6))을 사용하여 장치의 동작 모드를 자체 구성할 수 있다.
일 구성에서, HA 모드에서 동작하는 경우, NVMe-oF 장치(400)의 이더넷 포트(404; 이더넷 포트 A) 및 이더넷 포트(406; 이더넷 포트 B)는 다수의 고속 Molex 커넥터들(428)을 경유하여 미드-플레인(426)을 통해 마더보드(401)와 연결될 수 있다. 다수의 고속 Molex 커넥터들(428)은 이더넷 포트들(404, 406) 및 SMBus, 리셋, 클럭 등과 같은 다른 비-고속 제어 신호들을 총괄하여 운반할 수 있다. 또한, HA 모드에서, NVMe-oF 장치(400)의 이더넷 포트(408; 이더넷 포트 C) 및 이더넷 포트(410; 이더넷 포트 D)는 다수의 고속 Molex 커넥터들(456)을 경유하여 미드-플레인(426)을 통해 제 2 마더보드(403)와 연결될 수 있다. 다수의 고속 Molex 커넥터들(456)은 이더넷 포트들(408, 410) 및 SMBus, 리셋, 클럭 등과 같은 다른 비-고속 제어 신호들을 총괄하여 운반할 수 있다. 제 2 마더보드(403)는 로컬 CPU(446), BMC(444), 이더넷 스위치 제어기(448), PCIe 스위치(450), 그리고 두 개의 DDR4 메모리들(452, 454)을 포함할 수 있다.
멀티-모드 NVMe-oF 장치(400)가 NVMe 및 NVMe-oF 모드들 모두에서 동작할 수 있으므로, 동일한 장치들이 NVMe 모드와 NVMe-oF 모드에서 사용될 수 있기 때문에, 장치들 개발 및 배치 비용이 줄어들 수 있다. 유사한 이유로, 멀티-모드 NVMe-oF 장치(400)는 보다 빠른 시장 진입 시간을 가질 수 있다. 멀티-모드 NVMe-oF 장치는 다양한 제품들 및 섀시에서 사용될 수 있다. PCIe 버스의 두 개의 레인들은 제어 플레인을 통하여 표준 사양들을 위해 비축된다. 추가적인 비용 없이 CPU, BMC, 그리고 다른 장치들은 섀시 내의 각 NVMe-oF 장치와 통신하기 위한 제어 플레인으로서 PCIe 버스의 두 개의 레인들을 사용할 수 있다. NVMe 미드-플레인은 변형되지 않고 사용될 수 있고, 그리고 미드-플레인 상에 위치한 추가적인 GPIO 핀들(예를 들어, 도 2의 ESpeed[1:0](202))로 인해 NVMe-oF 장치(400) 상의 새로운 커넥터가 필요하지 않다. 또한, 임의의 플랫폼 시스템이 상이한 공급자들로부터 상이한 타입의 NVMe-oF 장치들을 지원하는 것이 바람직하다. 스위치 보드, 미드-플레인, 그리고 이더넷 SSD들과 같은 공통 빌딩 블록들을 사용함으로써, 본 발명의 다른 실시 예들은 기존 에코-시스템 공급자들이 보다 빠르게 시장에 진입할 수 있게 하고 그리고 다양한 소비자들을 만족시키기 위해 다양한 가격/성능 제품들을 제공할 수 있게 한다. 또한 PM1725a 또는 PM1735와 같은 표준 U.2 및 M.3 또는 NGSFF 기반 SSD들과 같이 새로 대두되는 것으로 NVMe-oF 장치를 지원할 수 있는 공통 시스템 플랫폼을 갖는 것이 바람직하다.
도 5a 및 도 5b는 일 실시 예에 따른 예시적인 FPGA 장치(500)를 도시한 블록도들이다. FPGA(500)는 도 1a의 FPGA(102)일 수 있다. FPGA(500)는 U2 커넥터(502) 및 복수의 플래시 드라이브들(flash drives; 예를 들어, 도 1a의 두 개의 M.3 SSD들(114,116)) 간의 인터페이스를 제공할 수 있다. FPGA(500)는 또한 복수의 DDR4 메모리들(예를 들어, 도 1a의 두 개의 DDR4 메모리들(122,124))에 연결될 수 있다. 예를 들어, FPGA(500)는 PCIe X4 버스(예를 들어, 도 1a의 제 1 PCIe X4 버스(118))에 연결되는 포트(518)을 경유하여 제 1 SSD(예를 들어, 도 1a의 114)와 인터페이스할 수 있고, 그리고 FPGA(500)는 다른 PCIe X4 버스(예를 들어, 도 1a의 제 1 PCIe X4 버스(120))에 연결되는 포트(522)을 경유하여 제 2 SSD(예를 들어, 도 1a의 116)와 인터페이스할 수 있다. FPGA(500)는 또한 포트(516)를 경유하여 제 1 DDR4 메모리(예를 들어, 도 1a의 122) 및 포트(520)를 경유하여 제 2 DDR4 메모리(예를 들어, 도 1a의 124)와 연결될 수 있다.
FPGA(500)에 연결된 U2 커넥터(502)는 두 개의 SAS 포트들(SAS0 및 SAS1) 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원할 수 있다. 두 개의 SAS 포트들(SAS0 및 SAS1)은 이더넷 포트들로 사용될 수 있다. NVMe-oF 모드에서, 두 개의 PCIe 레인들(PCIe 1 및 PCIe 2)은 이더넷 포트 1(510) 및 이더넷 포트 3(512)로 구성될 수 있다. NVMe-oF 모드에서, 두 개의 SAS 포트들(SAS0 및 SAS1)은 이더넷 포트 0(506) 및 이더넷 포트 2(508)로 구성될 수 있다. 이더넷 포트 0(506)은 U.2 커넥터(502)의 핀들 S2, S3, S5, 및 S6에 연결될 수 있고, 이더넷 포트 1(510)은 U.2 커넥터(502)의 핀들 S9 S10, S12, 및 S13에 연결될 수 있고, 이더넷 포트 2(508)는 U.2 커넥터(502)의 핀들 S23, S24, S26, 및 S27에 연결될 수 있고, 그리고 이더넷 포트 3(512)는 U.2 커넥터(502)의 핀들 S17, S18, S20, 및 S21에 연결될 수 있다.
일 구성에서, NVMe-oF 모드에서, U.2 커넥터(502)의 두 개의 X1 PCIe 레인들(PCIe 0(504) 및 PCIe 3(514))은 제 1(포트 0) 및 제 2(포트 1) 이더넷 NVMe-oF 제어기들을 위한 제어 플레인을 위해서 구성될 수 있다. 제어 플레인 PCIe 레인(PCIe 0(504))은 U.2 커넥터(502)의 핀들 E10, E11, E13, 및 E14에 연결될 수 있고, 제어 플레인 PCIe 레인(514(PCIe 3))은 U.2 커넥터(502)의 핀들 E17, E18, E20, 및 E21에 연결될 수 있다. 일부 구성들에서, 도 5A에 도시된 바와 같이, NVMe-oF 모드에서, FPGA(500)이 50G(싱글 포트 또는 듀얼 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 0(506)를 위하여 사용되고 그리고 SAS 포트 1는 이더넷 포트 2(508)로 사용된다. PCIe 레인 0(504) 및 PCIe 레인 3(514)은 제어 플레인들로 사용되고, PCIe 레인 1(510)은 이더넷 포트 1을 위해서 사용되고, 그리고 PCIe 레인 2(512)는 이더넷 포트 3을 위해서 사용된다.
다른 구성에서, 도 5b에 도시된 바와 같이, NVMe-oF 모드에서, FPGA(500)이 100G(오직 싱글 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 0(506)를 위하여 사용되고 그리고 SAS 포트 1는 이더넷 포트 2(508)로 사용된다. PCIe 레인 0(504)는 제어 플레인으로 사용되고, PCIe 레인 1(510)은 이더넷 포트 1을 위해서 사용되고, 그리고 PCIe 레인 2(512)는 이더넷 포트 3을 위해서 사용된다. 제어 플레인 PCIe 레인 3(514)은 사용되지 않는다.
일부 구성들에서, 포트들(504,506,508,510,512,514)는 FPGA(500)에 부착된 SSD들의 동작 모드에 따라 미드-플레인(예를 들어, 도 4a 및 4b의 426)을 통해 마더보드(예를 들어, 도 4a 및 4b의 401,403)에 연결될 수 있다. 일부 구성에서, FPGA(500)는 NVMe 대상으로 기능할 수 있고 그리고 대상 장치에 있는 마더보드 상의 X86-기반 CPU의 필요성을 없앨 수 있다. NVMe-oF 기반 시스템에 있어서, 대상 장치(즉, NVMe-oF 장치)가 스스로 데이터를 운반할 수 있기 때문에 마더보드 상의 X86-기반 CPU는 이니시에이터(initiator; 예를 들어, 호스트 소프트웨어) 및 대상 장치 사이에 데이터를 운반하기 위해 더 이상 필요하지 않다. 또한, FPGA(500)에 연결된 복수의 플래시 드라이브들(예를 들어, 도 1a의 두 개의 M.3 포맷 SSD들(114,116))의 상이한 동작 속도들은 미드-플레인 또는 CPLD(예를 들어 도 2의 204) 상에 위치한 두 개의 추가적인 GPIO(ESpeed[1:0]) 핀들(예를 들어, 도 2의 핀들(202))을 사용함으로써 달성될 수 있다. 미드-플레인 또는 CPLD 상에 위치한 두 개의 추가적인 GPIO 핀들은 FPGA(500) 내부의 하나 이상의 내부 레지스터들에 의해 제어될 수 있다.
일 실시 예에서, 이더넷 패킷이 FPGA(500)로 수신되는 경우, FPGA(500) 내부의 논리 블록들은 이더넷 패킷 내부의 헤더의 다양한 층들을 벗겨는 데 참여할 수 있다. 예를 들어, 이더넷 패킷 내부에는 TCP 또는 UDP 패킷이 있을 수 있고, TCP 또는 UDP 패킷 내부에는 RDMA 패킷이 있을 수 있고, RDMA 패킷 내부에는 NVMe-oF 패킷이 있을 수 있으며, 그리고 NVMe-oF 패킷 내부에는 NVMe 커맨드가 있을 수 있다. FPGA(500) 내부의 논리 블록들은 이더넷 패킷이 다시 벗겨내어 프로토콜의 다음 층을 노출시키는 다양한 층들을 나타낼 수 있다. 포트들(518,522)을 경유하여 FPGA(500)에 연결된 플래시 드라이브들 또는 SSD들은 마치 U.2 커넥터(502)를 경유하여 이더넷 포트들(506,508,510,512)의 다른 쪽 끝에 있는 호스트 또는 마더보드에 연결되어있는 것처럼 NVMe 커맨드를 사용할 수 있다.
도 6은 일 실시 예에 따른 예시적인 FPGA 장치(600)를 도시하는 블록도이다. FPGA 장치(600)는 FPGA(601)를 포함할 수 있다. FPGA(601)는 U.2 커넥터(606) 및 복수의 플래시 드라이버들(에를 들어, 603A,603B) 사이에 인터페이스를 제공할 수 있다. 예를 들어, FPGA(601)는 PCIe X4 버스에 연결될 수 있는 포트(607)를 경유하여 플래시 드라이버(603A)와 인터페이스할 수 있고, 그리고 FPGA(601)는 또 다른 PCIe X4 버스에 연결될 수 있는 포트(608)를 경유하여 플래시 드라이버(603B)와 인터페이스할 수 있다. FPGA(601)는 또한 복수의 DDR4 메모리들(예를 들어, 602A~602J)에 연결될 수 있다. FPGA(601)는 또한 클럭 회로(614)에 연결될 수 있다.
U.2 커넥터(606)는 두 개의 멀티플렉서들(610,612)을 통과하여 PCIe X4 버스들(604,605)을 경유하여 FPGA(601)에 연결될 수 있다. PCIe X4 버스(604)는 멀티플렉서들(610)을 통과하여 U.2 커넥터(606)을 경유하여 미드-플레인을 통해 마더보드로 신호 또는 패킷들을 전송하는데 사용될 수 있고, 그리고 PCIe X4 버스(605)는 멀티플렉서(612)을 통과하여 U.2 커넥터(606)을 경유하여 미드-플레인을 통해 마더보드로부터 패킷들을 수신하는데 사용될 수 있다. 일부 구성들에서, FPGA(601)에 연결된 복수의 플래시 드라이브들(예를 들어, 603A,603B)의 상이한 동작 속도들은 미드-플레인 또는 CPLD(예를 들어 도 2의 204) 상에 위치한 두 개의 추가적인 GPIO(ESpeed[1:0]) 핀들(예를 들어, 도 2의 핀들(202))을 사용함으로써 달성될 수 있다. 미드-플레인 또는 CPLD 상에 위치한 두 개의 추가적인 GPIO 핀들은 FPGA(601) 내부의 하나 이상의 내부 레지스터들에 의해 제어될 수 있다. 표 1은 FPGA(601)에 연결된 복수의 플래시 드라이브들(예를 들어, 603A,603B)의 상이한 동작 속도들 동안 ESpeed 핀들의 상태를 도시한다.
도 7은 일 실시 예에 따른 두 개의 마더보드들을 포함하는 예시적인 스위치를 도시하는 블록도이다. 스위치(700)는 미드-플레인(761)을 경유하여 듀얼 포트 구성(HA 모드에서)에서 멀티 I/O를 지원하기 위해 두 개의 마더보드들(701A,701B)을 포함한다. 마더보드(701A)는 이더넷 스위치(704A) 및 PCIe 스위치(705A)를 포함하고, 마더보드(701B)는 이더넷 스위치(704B) 및 PCIe 스위치(705B)를 포함한다. 각각의 마더보드들(701A,701B)은 다른 부품들 및 모듈들(예를 들어, 도 4A의 예시적인 마더보드(401)에서 보여지는 로컬 CPU(706A,706B), BMC(707A,707B) 등)을 포함한다.
다수의 eSSD들은 스위치(700)의 장치 포트들에 장착(plug into)될 수 있다. 예를 들어, eSSD들 각각은 U.2 커넥터를 사용하여 스위치(700)에 연결될 수 있다. 각각의 eSSD는 마더보드(701A) 및 마더보드(701B) 모두에 연결할 수 있다. 본 실시 예에서, 스위치(500)에 장착된 eSSD들은 NVMe-oF 장치로 구성된다. NVMe-oF 장치는 PCIe 버스와 이더넷 포트들을 통해 미드 플레인(761)을 거쳐 스위치(700)와의 연결을 요구한다.
도 8은 본 발명의 일 실시 예에 따른 스토리지 장치를 동작하기 위한 방법의 순서도이다. 스토리지 장치는 도 4a의 NVMe-oF 장치(400)일 수 있다.
S801에서, 스토리지 장치는 제 1 입력을 수신한다. 스토리지 장치는 미드-플레인을 통해 복수의 장치 포트들을 경유하여 마더보드 또는 BMC로부터 제 1 입력을 수신할 수 있다. 예를 들어, NVMe-oF 장치(400)는 도 4a의 미드-플레인(426)을 통해 장치 포트들(404~406)을 경유하여 마더보드(401) 또는 BMC(432)로부터 제 1 입력을 수신할 수 있다.
일 구성에서, 제 1 입력은 BMC로부터 인-밴드 커맨드에 의해 또는 마더보드의 섀시 상의 물리적 핀을 사용함으로써 제어될 수 있다. 예를 들어, 제 1 입력은 도 4a의 마더보드(401)의 섀시 상의 물리적 핀(E6)을 사용함으로써 제어될 수 있다.
S802에서, 제 1 입력에 기초하여, 스토리지 장치는 제 1 동작 모드 또는 제 2 동작 모드에서 동작할지 여부를 판단한다. 일 구성에서, 스토리지 장치의 제 1 동작 모드 및 제 2 동작 모드는 NVMe 모드 및 NVMe-oF 모드일 수 있다. 예를 들어, 제 1 입력에 기초하여, NVMe-oF 장치(400)는 NVMe 모드 또는 NVMe-oF 모드에서 동작할지 여부를 판단한다.
S802에서 만일 제 1 입력에 기초하여 스토리지 장치가 제 1 동작 모드에서 동작한다고 판단하는 경우, S803에서 스토리지 장치는 제 1 동작 모드에 따라 저장 동작들을 수행한다. 예를 들어, 만일 제 1 입력에 기초하여 NVMe-oF 장치(400)가 NVMe 모드에서 동작한다고 판단하는 경우, NVMe-oF 장치(400)는 NVMe 프로토콜에 따라 저장 동작들을 수행한다.
그러나, S802에서 만일 제 1 입력에 기초하여 스토리지 장치가 제 2 동작모드에서 동작한다고 판단하는 경우, S804에서 스토리지 장치는 제 2 동작 모드에 따라 저장 동작들을 수행한다. 예를 들어, 만일 제 1 입력에 기초하여 NVMe-oF 장치(400)가 NVMe-oF 모드에서 동작한다고 판단하는 경우, NVMe-oF 장치(400)는 NVMe-oF 프로토콜에 따라 저장 동작들을 수행한다.
S805에서, 제 2 동작 모드에서 동작하는 경우, 스토리지 장치는 제 2 신호를 수신한다. 스토리지 장치는 복수의 장치 포트들을 경유하여 미드-플레인으로부터 제 2 신호를 수신할 수 있다. 예를 들어, NVMe-oF 모드에서 동작하는 동안, NVMe-oF 장치(400)는 도 4a의 복수의 장치 포트들(404~406)을 경유하여 미드-플레인(426)으로부터 제 2 신호를 수신할 수 있다.
일 구성에서, 제 2 신호는 미드-플레인 상에 위치하고, 마더보드의 BMC 또는 로컬 CPU, 또는 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터들에 의해 제어되는 두 개의 GPIO 핀들을 사용함으로써 제어될 수 있다. 예를 들어, 제 2 신호는 미드-플레인(426) 상에 위치하고, 마더보드(401)의 BMC(432) 또는 로컬 CPU(434), 또는 도 4a의 NVMe-oF 장치(400)의 FPGA(402) 내부의 내부 레지스터들에 의해 제어되는 두 개의 GPIO 핀들(예를 들어, 도 1b의 (ESpeed[1:0]) 핀들(202))을 사용함으로써 제어될 수 있다.
S806에서, 제 2 신호에 기초하여 스토리지 장치는 스토리지 장치를 위한 복수의 동작 속도들로부터 동작 속도를 선택한다. 예를 들어, 제 2 신호에 기초하여 NVMe-oF 장치(400)는 스토리지 장치를 위한 복수의 동작 속도들로부터 동작 속도를 선택한다. 예를 들어, NVMe-oF 모드에서 동작하는 동안, 제 2 신호에 기초하여 NVMe-oF 장치(400)는 100G의 동작 속도를 선택한다. 일 구성에서 스토리지 장치의 복수의 동작 속도들은 10G 및 100G 사이의 임의의 수의 속도일 수 있다.
S807에서, 제 2 동작 모드에서 동작하는 동안, 스토리지 장치는 선택된 동작 속도에서 동작한다. 예를 들어, NVMe-oF 모드에서 동작하는 동안, NVMe-oF 장치(400)는 100G의 동작 속도에서 동작한다.
본 명세서에서 다양한 구성요소(element)들, 부품(component)들, 영역(region)들, 층(layer)들 및/또는 섹션(section)들을 설명하기 위해 "제 1", "제 2", 제 3" 등의 용어들이 사용되더라도, 이러한 구성요소들, 부품들, 영역들, 층들 및/또는 섹션들은 이러한 용어들에 의해 제한되지 않는 것으로 이해되어야 할 것이다. 이러한 용어들은 단지 다른 구성요소, 부품, 영역, 층 또는 섹션으로부터 하나의 구성요소, 부품, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 본 명세서에서 개시된 제 1 구성요소, 부품, 영역, 층 또는 섹션은, 본 발명의 사상 및 범위로부터 벗어나지 않으면, 제 2 구성요소, 부품, 영역, 층 또는 섹션으로 칭해질 수 있다.
본 명세서에서 설명의 편의를 위해, "아래", "아래쪽", "밑", "위", "위쪽" 등과 같이, 상대적 공간 용어들은 도면들에 도시된 바와 같이 하나의 소자 또는 특징들의 다른 소자(들) 또는 특징(들)에 대한 관계를 설명하기 위해 이용될 수 있다. 이러한 상대적 공간 용어들은 도면들에서 묘사된 방향뿐만 아니라 사용 또는 동작에 있어서 장치의 다른 방향들을 포함하는 것으로 의도된다. 예를 들어, 도면들의 장치가 뒤집어지면, 다른 소자들 또는 특징들의 "아래" 또는 "밑" 또는 "아래쪽"으로써 설명되는 소자들은 다른 소자들 또는 특징들의 "위쪽"을 향할 수 있다. 따라서, "아래" 또는 "아래쪽"의 예시 용어들은 위 및 아래의 방향을 모두 포함할 수 있다. 장치가 다른 방향(예를 들어, 90도 또는 다른 방향들로 회전됨)일 수 있고 본 명세서에서 사용되는 상대적 공간 기술어들은 이에 따라 해석되어야 한다. 또한, 층이 2 개의 층들 "사이에" 있는 것으로서 지칭되는 경우, 층은 2 개의 층들 사이의 유일한 층일 수 있거나 하나 이상의 사이에 오는 층들이 또한 존재할 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 명세서에서 사용된 바와 같이, “대체로”, “약” 용어 그리고 이와 유사한 용어들은 근사치의 용어들로서 사용되고, 정도의 용어들로서 사용되지 않고, 본 발명의 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다.
본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “포함하는” 및/또는 “포함하고 있는” 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 성분들의 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 및/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는 것이 더 이해될 것이다. 본 명세서에서 사용된 바와 같이, “및/또는” 용어는 나열된 항목들과 연관된 하나 이상의 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은, 구성 요소들의 리스트보다 앞설 때, 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 또한, "예시" 용어는 예 또는 그림을 의미한다. 본 명세서에서 사용된 바와 같이, “사용”, “사용되는”, 그리고 “사용된” 용어들은 “이용”, “이용되는”, 그리고 “이용된” 용어들의 동의어로 각각 간주될 수 있다.
요소 또는 층이 다른 요소 또는 층의 "위에", "연결된", "결합된" 또는 "인접한"으로 언급될 때, 그것은 다른 요소 또는 층에 직접적으로 위에, 연결된, 결합된, 또는 인접할 수 있고, 또는 하나 이상의 중간 요소들 또는 층들이 존재할 수 있다. 대조적으로, 하나의 요소 또는 층이 다른 요소 또는 층에 "직접적으로 위에", "직접적으로 연결된", "직접적으로 결합된" 또는 "바로 인접한"으로 지칭되는 경우, 중간 요소들 또는 층들이 존재하지 않는다.
본 명세서에 인용된 임의의 수치 범위는 인용된 범위 내에 포함되는 동일한 수치 정밀도의 모든 서브-범위들을 포함하도록 의도된다. 예를 들어, “1.0에서 10.0”의 범위에는 인용된 최소값 1.0과 인용된 최대값 10.0 사이의 (그리 포함하는), 즉, 예를 들면, 2.4에서 7.6까지와 같이, 1.0과 같거나 큰 최소값 및 10.0과 같거나 작은 최대값을 갖는, 모든 부분 범위가 포함된다. 본 명세서에 인용된 최대 수치 제한은 본 명세서에 포함된 더 낮은 모든 수치 제한들을 포함하도록 의도되며, 본 명세서에 인용된 임의의 최소 수치 제한은 본 명세서에 포함된 더 높은 모든 수치 제한들을 포함하도록 의도된다.
비록 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법의 예시적인 실시 예들이 본 명세서에서 구체적으로 설명되고 예시되었으나, 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 따라서, 본 발명의 원리들에 따라 구성되는 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법은 본 명세서에서 구체적으로 설명된 것 이외에 구현될 수 있다는 것을 이해해야 한다. 본 발명은 또한 다음의 청구 범위, 및 그 등가물에 의해서 정의된다.
NVMe(non-volatile memory express)는 PCIe(peripheral component interconnect express) 버스를 통해 불휘발성 메모리 서브시스템(예를 들어, SSD(solid-state drive))과 통신하는 호스트 소프트웨어를 위한 레지스터-레벨의 인터페이스를 정의하는 표준이다. NVMe는 호스트 및 주변 대상 스토리지 장치 또는 시스템을 연결하거나 둘 사이 데이터를 전송하기 위한 SCSI(small computer system interface)의 대안이다. PCIe-연결된 NVMe SSD들은 애플리케이션들이 스토리지(storage)로 직접 의사전달(talk directly)을 하도록 허용한다.
NVMe의 물리적 연결은 PCIe 버스에 기반한다. 일반적인 이더넷 SSD(eSSD)는 PCIe 버스를 통해 미드-플레인(mid-plane)을 경유하여 시스템과 인터페이스하는 U.2 커넥터를 포함한다. U.2(SFF-8639)는 SSD들을 컴퓨터와 연결하기 위한 컴퓨터 인터페이스이다. U.2 커넥터는 하나의 SATA(serial advanced technology attachment) 포트, 두 개의 SAS(serial attached SCSI) 포트들 또는 PCIe SSD들 내 병렬 I/O의 최대 네 개의 레인들 (X4)을 지원할 수 있다. U.2 커넥터는 NVMe를 위해 표준화되어있고 일반적인 SATA SSD의 속도의 다섯 배를 제공하는 PCIe 3.0 X4를 지원한다.
NVMe-oF(non-volatile memory express over fabric)는 PCIe 이외의 다양한 패브릭들(fabrics)(또는 상호연결들(interconnects))에 대한 동작을 가능하게 하는 NVMe 표준으로의 확장이다. 여기서, “패브릭(fabric)”이라는 용어는 네트워크 노드들이 다양한 상호 연결 프로토콜들, 포트들, 및 스위치들을 통하여 서로 데이터를 전달할 수 있는 네트워크 토폴로지(network topology)를 나타낸다. 예를 들어, 이더넷-부착형(Ethernet-attached) SSD들은 패브릭에 직접 부착될 수 있고, 이 경우 패브릭은 이더넷이다.
NVMe-oF는 NVMe 호스트 장치 및 NVMe 스토리지 드라이브 또는 서브시스템이 연결할 수 있는 거리들을 연장하는 PCIe에 대한 대체 전송들의 사용을 가능하게 한다. 따라서, NVMe-oF는 NVMe 메세지-기반 커맨드들이 네트워크(예를 들어, 이더넷(ethernet), 파이버 채널(FC; fibre channel) 또는 인피니밴드(infiniBand))를 통해 호스트 컴퓨터와 대상 솔리드-스테이트 스토리지 장치(예를 들어, eSSD 또는 NVMe-oF 장치) 또는 시스템 사이에 데이터를 전송하는 것이 가능하도록 설계된 기술 사양이다. NVMe-oF 표준을 지원하도록 구성된 경우, 시스템은 이더넷 뿐만 아니라, 파이버 채널, 인피니밴드, 또는 다른 네트워크 패브릭들(network fabrics)을 포함하는 다양한 패브릭들을 지원할 수 있다. 예를 들어, eSSD들은 패브릭에 직접 부착될 수 있고, 이 경우 패브릭은 이더넷이다. eSSD는 NVMe-oF 프로토콜들을 지원할 수 있는 SSD들을 지칭할 수 있다. 설명의 편의를 위하여, 이하의 예들 및 실시 예들은 이더넷-부착형 NVMe-oF 장치들을 보여줄 수 있다. 그러나, 본 명세서의 사상 및 범위로부터 벗어나지 않고 임의의 다른 타입의 NVMe-oF 장치들이 사용될 수 있다.
전술한 바와 같이, NVMe의 물리적 연결은 PCIe 버스에 기반한다. 최근 PCIe 4.0의 출현으로 대역폭 불일치(mismatch)는 PCIe 3.0보다 높을 수 있다. 싱글 25G 이더넷은 SSD에서 X4 PCIe 4.0 (최대 8GB/s)까지 백엔드(backend)를 따라갈 수 있는 충분한 대역폭을 가지고 있지 않다. 50G 또는 100G 이더넷은 SSD에서 X4 PCIe 4.0에 대한 보다 나은 일치(match)를 제공한다. 따라서, 본 발명의 실시 예들은 NVMe 및 NVMe-oF 프로토콜들 모두를 지원할 수 있는 스토리지 장치(예를 들어, eSSD)를 포함할 수 있고, 그리고 NVMe-oF 모드에 있는 경우, 스토리지 장치는 하드웨어의 어떠한 변경들도 없이 10G(gigabits per second)에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다.
또한, 본 발명의 실시 예들은 어떠한 플랫폼 시스템도 상이한 공급자로부터 상이한 타입의 NVMe-oF 장치들을 지원할 수 있도록 한다. 스위치보드, 미드-플레인(mid-plane), 그리고 이더넷 SSD들과 같은 공통 빌딩 블록들을 사용함으로써, 에코-시스템 제공자들은 기존 시스템들보다 시장에 빠르게 진입할 수 있고 그리고 다양한 소비자들을 만족시키기 위해 다양한 가격/성능 제품들을 제공할 수 있다. 일부 예시적인 실시 예들은 PM1725a 또는 PM1735와 같은 표준 U.2 및 M.3 SSD들과 같이 새로 대두되는 것들로 NVMe-oF 장치들을 지원할 수 있는 공통 시스템 플랫폼 또한 가능하게 할 수 있다. 일 구성에 있어서, M.3 SSD들은 NGSFF(next generation small form factor) 기반 SSD들로도 불릴 수 있다.
본 발명의 시스템의 다른 실시 예들은 NVMe 및 NVMe-oF 장치들 모두를 지원할 수 있는 공통 빌딩 블록들 및 싱글 플랫폼을 제공하고 그리고 NVMe-oF 모드인 경우, 시스템은 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다. NVMe 및 NVMe-oF 장치들 모두를 지원할 수 있는 공통 빌딩 블록들은 스위치 보드, 미드-플레인, 그리고 eSSD들을 포함할 수 있다. 본 발명의 시스템은 좀 더 유사한 장치들 및/또는 섀시를 추가함으로써 선형적으로 확장할 수 있다. 본 발명의 시스템은 또한 PM1725a 또는 PM1735와 같은 표준 U.2 커넥터 및 M.3 또는 NGSFF 기반 SSD들로 NVMe-oF 장치들을 지원할 수 있는 공통 시스템 플랫폼을 제공할 수 있다. 본 발명의 시스템의 다른 구성들은 또한 50G 및 100G 이더넷 및 PCIe 4.0과 같은 기술들 발전과 호환될 수 있다. 특히, 본 명세서의 다른 구성들은 NVMe 및 NVMe-oF 프로토콜 모드들 모두, 및 다양한 유형의 패브릭-부착형(fabric-attached) SSD들(예를 들어, eSSDs)을 지원할 수 있는 시스템을 제공한다. 또한, 본 명세서의 다른 구성들은 장치가 어디에 배치되었는지 및 어떠한 성질을 데이터 집합의 특정 위치로의 배치 결과로서 채택해야 하는지를 이해하기 위해서 섀시 및 장치(예를 들어, eSSD)가 어떻게 장치를 조정하는지에 관한 정보를 제공할 수 있다.
여기에 개시된 패브릭-부착형 SSD(eSSD)는 NVMe 및 NVMe-oF 표준들과 호환되는 다양한 시스템들 내에서 사용될 수 있는 단일 공통 장치이다. 이더넷 SSD들(ethernet SSD)은 미드-플레인을 경유하여 호스트 장치와 인터페이스하기 위해 U.2 커넥터들을 사용할 수 있다. U.2 커넥터들은 25Gbps(100G-KR4) 이더넷을 지원할 수 있다. 본문에 개시된 eSSD는 NVMe 및 NVMe-oF 표준들과 호환되는 다양한 시스템들 내에서 사용될 수 있는 장치일 수 있다. 이와 같이, 패브릭-부착 SSD (eSSD)는 또한 멀티-모드 NVMe-oF 장치로 지칭된다. 멀티-모드 NVMe-oF 장치는 알려진 위치(예를 들어, 마더보드 또는 미드-플레인의 섀시 타입 핀 E6)로부터 제품 정보를 검출함으로써 NVMe 또는 NVMe-oF 표준 중 어느 하나를 지원할 수 있다. 예를 들면, U.2 커넥터 상의 정의된 신호(예를 들어, 모드 신호)는 NVMe 또는 NVMe-oF 모드에서 동작할지 여부를 드라이브에 표시할 수 있다. 만약 NVMe 섀시에 있다면, U.2 커넥터의 X4 레인 PCIe는 PCIe 엔진에 의해 구동된다. 이 경우, 장치는 패브릭 부착형 포트들(fabric attached ports)(예를 들어, 이더넷 포트들, 파이버-채널 포트들, 또는 인피니밴드 포트들)을 비활성화하고 그리고 모든 NVMe 프로토콜들과 기능들은 지원되거나 활성화된다. 만약 NVMe-oF 섀시에 있다면, 패브릭 부착형 포트들은 오직 사용되지 않은 SAS 핀들만 사용한다.
도 1a는 NVMe-oF 장치(100)의 구성을 도시한다. 도 1a의 NVMe-oF 장치(100)는 FPGA(102), 제 1 M.3 포맷 SSD(114), 제 2 M.3 포맷 SSD(116), 두 개의 DDR4(double data rate 4th generation) 메모리들(122,124), 그리고 네 개의 캐패시터들(126,128,130,132)을 포함한다. NVMe-oF 장치(100)는 또한 U.2 커넥터(112)에 연결 또는 접속되고, 그리고 U.2 커넥터(112)를 경유하여 두 개의 SAS 포트(SAS0 및 SAS1) 및 PCIe X4 버스의 최대 4 개의 PCIe X4 레인들을 지원할 수 있다. 두 개의 SAS 포트(SAS0 및 SAS1)는 NVMe-oF 장치(100)에 의해 이더넷 포트들로 사용될 수 있다. NVMe-oF 장치(100)는 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다.
도 1b는 일 실시 예에 따른 예시적인 M.3 포맷 SSD(134)의 블록도를 도시한다. M.3 포맷 SSD(134)는 도 1a의 SSD(114) 또는 SSD(116)일 수 있다. M.3 포맷 SSD(134)의 뉴 폼 팩터 1(NF1; new form factor 1)은 두 행의 낸드 플래시 패키지(NAND flash package)들을 수용할 수 있고, 그리고 그에 따라 모듈식 SSD들의 수용력을 최대화시킬 수 있다. M.3 포맷 SSD(134)는 PCIe X4 버스(136)를 경유하여 FPGA에 연결될 수 있다. FPGA는 도 1a의 FPGA(102)일 수 있고 PCIe X4 버스(136)는 도 1a의 PCIe X4 버스들(118,120) 중 하나 일 수 있다. M.3 포맷 SSD(134)는 또한 FPGA(예를 들어, 도 1a의 FPGA(102))와 연결하기 위해 사용되는 M.2 커넥터의 미사용 또는 예비(예를 들어, 고속) 핀들을 사용하여 적어도 하나의 옵션 이더넷 포트(이더넷 포트 A 및/또는 이더넷 포트 B)(138)를 수용할 수 있다. 적어도 하나의 이더넷 포트(138)는 M.3 포맷 SSD(134)가 NVMe-oF 모드에서 동작하게 할 수 있다.
일부 실시 예들에 있어서, M.3 포맷 SSD(134)는 2.5인치 하드 드라이브 폼-팩터(hard drive form-factor) (또는 스몰 폼 팩터(SFF; small form factor)) 표준을 따를 수 있다. 다른 실시 예들에 있어서, M.3 포맷 SSD(134)는 표준 PCIe 카드 폼 팩터(standard PCIe card form factor)(예를 들어 FH-FL(full-height, full-length) 카드 아웃라인, 또는 FH-HL(full-height, half-length) 아웃라인)을 따를 수 있다. M.3 포맷 SSD(134)는 또한 제어기(controller), 버퍼 메모리(buffer memory), 그리고 플래시 메모리(flash memory)를 포함할 수 있다. 제어기는, 예를 들어, 버퍼 메모리 또는 제어기내의(또는 제어기와 분리된) ROM(read-only memory)에 저장된) 소프트웨어(software), NVMe 커맨드들, 및/또는 펌웨어(firmware)를 실행할 수 있다. 도 1b에서, eSSD ASIC(140)은 FTL(flash translation layer) 및 플래시 제어기(flash controller)들을 포함하는 향상된 SSD 제어기이다.
도 1a로 다시 돌아오면, NVMe-oF 장치(100)는 NVMe 모드 또는 NVMe-oF 모드 중 하나로 동작하도록 구성될 수 있다. NVMe-oF 모드에서, NVMe-oF 장치(100)는 두 개의 PCIe 레인들(PCIe 1 및 PCIe 2)을 이더넷 포트 B(106)와 이더넷 포트 D(110)로 구성할 수 있다. NVMe-oF 장치(100)는 또한 두 개의 SAS 포트들(SAS0 및 SAS1)을 이더넷 포트 A(104)와 이더넷 포트 C(108)로 구성할 수 있다. 제 1 25G 이더넷 포트(104)는 U.2 커넥터(112)의 핀들 S2, S3, S5, 및 S6에 연결될 수 있고, 제 2 25G 이더넷 포트(106)는 U.2 커넥터(112)의 핀들 S17, S18, S20, 및 S21에 연결될 수 있고, 제 3 25G 이더넷 포트(108)는 U.2 커넥터(112)의 핀들 S9, S10, S12, 및 S13에 연결될 수 있고, 그리고 제 4 25G 이더넷 포트(110)는 U.2 커넥터(112)의 핀들 S23, S24, S26, 및 S27에 연결될 수 있다. NVMe-oF 모드인 경우, NVMe-oF 장치(100)는 10G부터 100G까지 상이한 이더넷 속도들로 동작할 수 있다.
도 1a에 있어서, NVMe-oF 장치(100)가 NVMe-oF 모드로 구성될 경우, FPGA(102)는 네 개의 25Gbps 이더넷 포트들(104,106,108,110) 및 두 개의 M.3 포맷 SSD들(114,116) 사이의 인터페이스를 제공할 수 있다. 네 개의 25Gbps 이더넷 포트들(104,106,108,110)은 NVMe-oF 장치(100)의 동작 모드에 따라 미드-플레인을 통해 마더보드로 연결될 수 있다. 일 구성에 있어서, 마더보드는 하나 이상의 스위칭 구성요소들, 하나 이상의 메모리 구성요소들, 하나 이상의 I/O 구성요소들 등을 포함할 수 있다. FPGA(102)는 제 1 PCIe X4 버스(118)를 경유하여 제 1 M.3 포맷 SSD(114)와 인터페이스하고 그리고 제 2 PCIe X4 버스(120)를 통해 제 2 M.3 포맷 SSD(116)와 인터페이스한다. 제 1 PCIe X4 버스(118) 및 제 2 PCIe X4 버스(120)는 각각의 M.2 커넥터들을 통해 제 1 M.3 포맷 SSD(114) 및 제 2 M.3 포맷 SSD(116)에 연결될 수 있다. 이 경우, SSD들(114,116)에 부착된 M.2 커넥터들의 미사용 또는 예비(예를 들어, 고속) 핀들은 이더넷 연결을 위해 사용될 수 있다. 이 모드에서, FPGA(102)는 NVMe-oF 대상으로 기능할 수 있다. eSSD ASIC/FPGA(102)에 구현된 NVMe-oF 대상은 대상 장치의 마더보드 상의 X86-기반 중앙 처리 유닛(central processing unit)을 위한 필요를 제거하는 모든 네트워크와 스토리지 프로토콜 처리(storage protocol processing)를 제공한다. NVMe-oF 기반 시스템에 있어서, 대상 장치가 스스로 데이터를 운반할 수 있기 때문에 마더보드 상의 X86-기반 CPU는 이니시에이터(initiator; 예를 들어, 호스트 소프트웨어) 및 대상 장치(즉, NVMe-oF 장치) 사이에 데이터를 운반하기 위해 더 이상 필요하지 않다.
일 구성에 있어서, NVMe-oF 장치(100)는 NVMe 모드로 구성될 수 있다. NVMe 모드에서, NVMe-oF 장치(100)는 PCIe X4 버스를 통해 PCIe 신호들을 운반하기 위해 네 개의 PCIe X4 레인들(싱글 포트 모드에서) 모두를 사용할 수 있다. PCIe X4 버스는 미드-플레인에 연결되고, 그리고 PCIe 버스는 데이터 및 제어 신호들 사이에 공유된다. 일 관점에서, 주어진 시간에, NVMe-oF 장치(100)의 제 1 M.3 포맷 SSD(114) 및 제 2 M.3 포맷 SSD(116)는 모두 NVMe 모드 또는 NVMe-oF 모드로 동작 할 수 있다. 다른 관점에서, 주어진 시간에, 제 1 M.3 포맷 SSD(114)는 NVMe 모드에서 동작 할 수 있고 제 2 M.3 포맷 SSD(116)는 NVMe-oF 모드에서 동작 할 수 있다. 또 다른 관점에서, 주어진 시간에, 제 1 M.3 포맷 SSD(114)는 NVMe-oF 모드에서 동작 할 수 있고 제 2 M.3 포맷 SSD(116)는 NVMe 모드에서 동작 할 수 있다.
NVMe-oF 장치(100)의 동작 모드는 마더보드의 BMC(baseboard management controller)로부터 수신한 인-밴드(in-band) 커맨드에 의해 또는 물리적 핀(예를 들어, 마더보드의 섀시 상의 프레젠스 핀(핀 E6))을 사용하여 외부적으로 설정되거나, 또는 자체 구성될 수 있다. 이더넷을 통하여 검색되는(retrieved) 관리 정보는 “인-밴드(in-band)” 정보라 지칭된다. 반면에, PCIe 버스를 통하여 검색되는 관리 정보는 “아웃-오브-밴드(out-of-band)” 정보라 지칭된다. NVMe-oF 장치로 구성될 경우, 멀티-모드 NVMe-oF 장치(100; 섀시 타입 핀 E6=low)는 싱글 포트 NVMe-oF 모드 또는 듀얼 포트 NVMe-oF 모드 중 하나로 구성될 수 있다. 싱글 포트 NVMe-oF 모드에서, U.2 커넥터(112)의 핀 E25는 하이(high)일 수 있고 그리고 듀얼 포트 NVMe-oF 모드에서, U.2 커넥터(112)의 핀 E25는 로우(low)일 수 있다.
도 2는 본 발명의 일부 예시적인 실시 예에 따른 미드 플레인 또는 CPLD(complex programmable logic device)의 불록도이다. 일 구성에서, 도 2을 참조하면, NVMe-oF 장치(100)의 상이한 동작 속도들은 미드-플레인 또는 CPLD(204)에 위치한 두 개의 추가적인 GPIO(general-purpose input/output) 핀들(202; ESpeed[1:0])을 사용함으로써 달성될 수 있다. GPIO 핀들(202)은 마더보드 상의 BMC 또는 로컬 CPU(local central processing unit), 또는 NVMe-oF 장치(100)의 FPGA(102) 내부에 있는 내부 레지스터(internal register)에 의해 제어될 수 있고, U.2 커넥터(112)의 핀들 E23 및 E24에 연결된 I2C 버스를 경유하여 접근 가능하다. 이전 옵션에서, ESpeed 핀들(202)은 CPLD(204) 내부의 U.2 I2C 핀들과 합쳐지고 그리고 리셋(207)이 선언되고(high에서 low로) 난 후에 래치될 수 있다. 일 구성에서, MUX로의 입력들은 마더보드 상의 BMC 또는 로컬 CPU, 또는 CPLD(204)에 의해 구동된다. 그러나, 일부 구성들에서, MUX의 위치는 CPLD(204)의 내부이다. MUX들의 개수는 지원받는 섀시 내의 NVMe-oF 장치들의 최대 개수와 같다. 이렇게 하면 각 장치는 개별적으로 그리고 독립적으로 리셋될 수 있다. 이 방법은 핫 플러그러블 이벤트들(hot-pluggable events; hot add 및 hot removal)을 지원할 수 있다. 만약 MUX가 모든 장치들과 공유한다면, 새로운 장치가 핫 인서트(hot insert)될 경우, 리셋 사이클로 인해 섀시 내의 기존 장치들에 영향을 줄 수 있고, 이는 바람직하지 않을 수 있다.
이 경우, CPLD(204)는 마더보드 상의 BMC 또는 로컬 CPU에 의해 제어될 수 있다. BMC 또는 로컬 CPU로부터 제어 신호는 CPLD(204)의 CPLD/BMC PIO 핀들(206)로 수신될 수 있다. 이하의 표 1은 NVMe-oF 장치(100)의 상이한 동작 속도들 동안 ESpeed 핀들의 상태를 도시한다.
Ethernet Speed | ESpeed Pin 1 | ESpeed Pin 0 |
10G | Hi | Hi |
25G | Hi | Lo |
50G | Lo | Hi |
100G | Lo | Lo |
또한, 이더넷 속도는 전원이 켜지거나(power on) 리셋(reset)되는 동안 SMBus(208; system management bus)을 사용하여 선택된다. 일 구성에서, 멀티플렉서는 파워 온(power on) 또는 리셋 신호(207)에 의해 선택되고, 그리고 리셋(207)이 액티브 로우(active low)인 경우 멀티플렉서는 FPGA(102)에 대해 ESpeed(1:0)(202)를 선택할 수 있고, 리셋(207)이 하이(high)인 경우 멀티플렉서는 각 슬롯 사이의 SMBus(208)를 스위치 보드 상의 BMC에 연결할 수 있다. 일 구성에서, 멀티-모드 NVMeoF 장치(100)는 싱글 포트 NVMe 모드, 듀얼 포트 NVMe 모드, 싱글 포트 NVMe-oF 모드, 및 듀얼 포트 NVMe-oF 모드로 구성될 수 있다.
도 3은 도 1a의 멀티-모드 NVMe-oF 장치(100)의 구성에 따른 U.2 커넥터(112)의 예시적인 사용을 도시한다. NVMe 장치(섀시 타입 핀 E6=low)로 구성되는 경우, 멀티-모드 NVMe-oF 장치(100)는 싱글 포트 NVMe 모드 또는 듀얼 포트 NVMe 모드 중 하나로 구성될 수 있다. 싱글 포트 NVMe 모드에서, U.2 커넥터(112)의 듀얼 포트 EN# 핀 E25는 하이(high) 선언될 수 있다. 싱글 포트 NVMe 모드에서, U.2 커넥터(112)의 PCIe 레인들 0 내지 3은 PCIe 신호들을 운반하는데 사용된다. 듀얼 포트 NVMe 모드에서, U.2 커넥터(112)의 듀얼 포트 EN# 핀 E25는 로우(low) 선언될 수 있다. 듀얼 포트 NVMe 모드에서, PCIe 레인들 0 내지 3은 2×2 레인들로 분리된다; PCIe 레인들 0 및 1은 제 1 포트(포트 A)를 위하여 사용되고, PCIe 레인들 2 및 3은 제 2 포트(포트 B)를 위하여 사용된다.
일 구성에서, 멀티-모드 NVMe-oF 장치(100)가 NVMe-oF 모드에 있는 경우, NVMe-oF 장치(100)는 제 1(포트 A) 및 제 2(포트 B) 이더넷 포트들을 위한 제어 플레인(control plane)을 위해서 두 개의 X1 PCIe 레인들(PCIe 0 및 PCIe 3)을 가질 수 있다. 이와 같은 구성들은 추가적인 25G 이더넷 포트들(이더넷 포트 B 및 D)을 위하여 사용될 수 있는 두 개의 PCIe 레인들(PCIe 1 및 PCIe 2)을 만들 수 있다. 일부 구성들에서, NVMe-oF 장치(100)가 NVMe-oF 모드에서 10G(싱글 포트 또는 듀얼 포트) 또는 20G(싱글 포트 또는 듀얼 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 A(제 1 포트)를 위해서 사용되고, 그리고 SAS 포트 1은 사용되지 않는다. PCIe 레인들 0 및 3은 제 1(포트 A) 및 제 2(포트 B) 이더넷 부착형 NVMe-oF 제어기들을 위한 제어 플레인으로써 사용되고, PCIe 레인 1은 이더넷 포트 B(제 2 포트)를 위해서 사용되고, 그리고 PCIe 레인 2는 사용되지 않는다. 일부 다른 구성들에서, NVMe-oF 장치(100)가 NVMe-oF 모드에서 50G(싱글 포트 또는 듀얼 포트) 또는 100G(오직 싱글 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 A(제 1 포트)를 위해서 사용되고 그리고 SAS 포트 1는 이더넷 포트 C(제 3 포트)로써 사용된다. PCIe 레인들 0 및 3은 제 1(포트 A) 및 제 2(포트 B) 이더넷 부착형 NVMe-oF 제어기들을 위한 제어 플레인으로써 사용되고, PCIe 레인 1은 이더넷 포트 B(제 2 포트)를 위해서 사용되고, 그리고 PCIe 레인 2은 이더넷 포트 D(제 4 포트)를 위해서 사용된다.
일부 구성들에서, 만일 제품 정보(product information)가 섀시에 저장된 경우, U.2 커넥터(112) 상의 PCIe 버스의 2개의 레인들(싱글 포트 모드에서) 또는 4개의 레인들(듀얼 포트 모드에서)은 PCIe 엔진에 의해 구동된다. 이 경우, 멀티-모드 NVMe-oF 장치(100)는 이더넷 엔진(들)을 불활성화(diable)시킬 수 있고, 그리고 NVMe 프로토콜들 및 기능들이 지원되거나 또는 활성화(enable)된다. 만일 제품 정보가 NVMe-oF 섀시에 저장된 경우, 이더넷 부착형 NVMe-oF 제어기들은 멀티-모드 NVMe-oF 장치의 설계에 따라 PCIe 레인들 1 및 2, 및/또는 SAS 핀들만 사용한다.
일부 경우들에서, 자율 구성(self-configuration)을 위해 사용되는 제품 정보는 VPD(vital product data)의 형태로 섀시에 저장된다. 시작되는 동안, 멀티-모드 NVMe-oF 장치(100)는 섀시로부터 VPD를 검색(retrieve)할 수 있고, VPD를 기반으로 자체 구성할 수 있다. 일부 구성에서, 멀티-모드 NVMe-oF 장치(100)는 본 명세서의 사상으로부터의 벗어남 없이 다양한 방식으로 구성될 수 있다. 예를 들어, 멀티-모드 NVMe-oF 장치(100)는 멀티-모드 NVMe-oF 장치(100)와 연결된 마더보드의 BMC에 의해 발행된 PCIe 버스를 통한 제어 커맨드에 의해 구성될 수 있다. 본 발명의 시스템은 최소한의 하드웨어 변경만으로 non-HA(non-high availability) 모드(즉, 단일-경로 입력/출력(I/O)) 또는 HA(high availability) 모드(즉, 다중-경로 I/O)에서 다양한 형태의 NVMe 및 NVMe-oF 장치들을 지원할 수 있는 플랫폼을 제공한다.
도 4a 및 도 4b는 일 실시 예에 따른 non-HA 모드에서 동작하는 예시적인 NVMe-oF 장치의 블록도를 도시한다. NVMe-oF 장치(400)은 도 1a의 NVMe-oF 장치(100)일 수 있다. 본 예시에서, NVMe-oF 장치(400)는 단일-경로 I/O들을 지원할 수 있고 그리고 하드웨어의 어떠한 변경들도 없이 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작할 수 있다. NVMe-oF 장치(400)는 FPGA(402), 제 1 M.3 포맷 SSD(414), 제 2 M.3 포맷 SSD(416), 두 개의 DDR4(double data rate 4th generation) 메모리들(422,424)을 포함할 수 있다. FPGA(402)는 제 1 PCIe X4 버스(418)를 경유하여 제 1 M.3 포맷 SSD(414)와 인터페이스하고 그리고 FPGA(402)는 제 2 PCIe X4 버스(420)를 경유하여 제 2 M.3 포맷 SSD(416)와 인터페이스한다. NVMe-oF 장치(400)는 또한 U.2 커넥터 (412)에 연결되고, 그리고 U.2 커넥터 (412)를 통해 NVMe-oF 장치(400)는 두 개의 SAS 포트들(SAS0 및 SAS1) 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원할 수 있다. 두 개의 SAS 포트들(SAS0 및 SAS1)은 이더넷 포트들로 사용될 수 있다. NVMe-oF 장치(400)는 두 개의 PCIe 레인들(PCIe 1, PCIe 2)을 이더넷 포트들(406(이더넷 포트 B) 및 410(이더넷 포트 D))로 구성할 수 있다. NVMe-oF 장치(400)는 이더넷 포트들(404(이더넷 포트 A) 및 408(이더넷 포트 C))로 두 개의 SAS 포트들(SAS0 및 SAS1)을 더 구성할 수 있다. 제 1 25G 이더넷 포트(404)는 U.2 커넥터(412)의 핀들 S2, S3, S5, 및 S6에 연결될 수 있고, 제 2 25G 이더넷 포트(406)는 U.2 커넥터(412)의 핀들 S17 S18, S20, 및 S21에 연결될 수 있고, 제 3 25G 이더넷 포트(408)는 U.2 커넥터(412)의 핀들 S9, S10, S12, 및 S13에 연결될 수 있고, 그리고 제 4 25G 이더넷 포트(410)는 U.2 커넥터(412)의 핀들 S23, S24, S26, 및 S27에 연결될 수 있다.
일 구성에서, 이더넷 포트들(404, 406, 408, 및 410)은 다수의 고속 Molex 커넥터들(428)을 경유하여 미드-플레인(426)을 통해 마더보드(401)와 연결될 수 있다. 다수의 고속 Molex 커넥터들(428)은 모든 이더넷 포트들(404,406,408,410) 및 SMBus, 리셋, 클럭 등과 같은 다른 비-고속(non-high speed) 제어 신호(control signal)들을 총괄하여 운반할 수 있다. 마더보드(401)는 로컬 CPU(434), BMC(432), 이더넷 스위치 제어기(436), PCIe 스위치(438), 그리고 두 개의 DDR4 메모리들(440, 442)을 포함할 수 있다. 일부 구성들에서, 마더보드(401)는 미드-플레인(426)을 통해, NVMe-oF 장치(400)로 다양한 신호들을 푸쉬(push)할 수 있고 그리고 이더넷 포트들(404,406,408,410)을 통해 NVMe-oF 장치(400) 상에서 다양한 서비스들을 수행할 수 있다. 예를 들어, 마더보드(401)는 NVMe-oF 장치(400)로부터 이더넷 포트들(404,406,408,410)을 통해, NVMe-oF 장치(400)의 헬스 상태 정보(health status information), FRU(field-replaceable unit) 정보, 및 센서 정보를 포함하나 이에 한정되지 않는 장치-특정 정보를 수신할 수 있다. 마더보드(401)는 이더넷 포트들(404,406,408,410)을 통해, BMC(예를 들어, BMC(432)) 또는 로컬 호스트 CPU(예를 들어, CPU (434))로의 탐색 서비스들 및 펌웨어 업그레이드를 수행하기 위한 새로운 eSSD 펌웨어에 대한 다운로드 서비스들을 포함하나, 이에 한정하지 않는 다양한 서비스들을 더 수행할 수 있다.
도 4c 및 4d는 일 실시예에 따른 HA(high availability) 모드에서 동작하는 예시적인 도 4b의 예시적인 NVMe-oF 장치(400)의 블록도를 도시한다. 이 예시에서, NVMe-oF 장치(400)는 멀티-경로 I/O들을 지원할 수 있고 그리고 하드웨어의 어떠한 변경들도 없이, 10G에서 최대 100G까지의 상이한 이더넷 속도들에서 동작하는 것이 가능할 수 있다. HA 모드에서, NVMe-oF 장치(400)는 미드-플레인(426)을 통해 듀얼 포트 구성(HA 모드에서)에서 멀티 I/O를 지원하기 위해 두 개의 마더보드들(401,403)에 연결될 수 있다. 미드 플레인(426)은 HA 모드와 non-HA 모드를 모두 지원할 수 있는 공통 미드-플레인이다. 시스템 구성에 따라, 신호 무결성(signal integrity)는 공통 미드-플레인(426)이 양쪽 모든 구성들을 지원할 수 있음을 보장하기 위해 검증될 필요가 있을 수 있다. 만일 신호 무결성이 충분하지 않은 경우, 시스템은 HA 모드를 위한 제 1 미드-플레인 및 non-HA 모드를 위한 제 2 미드-플레인을 포함하는 두 가지 미드-플레인 버전을 가질 수 있다. U.2 커넥터의 E25 핀은 듀얼 포트 구성을 가능하게 하는데 사용될 수 있다. NVMe-oF 장치(400)는 마더보드(401 또는 403)의 BMC(432 또는 444)로부터 인-밴드 커맨드에 의해 또는 마더보드(401 또는 403)의 섀시 상의 물리적 핀(프레젠스 핀(핀 E6))을 사용하여 장치의 동작 모드를 자체 구성할 수 있다.
일 구성에서, HA 모드에서 동작하는 경우, NVMe-oF 장치(400)의 이더넷 포트(404; 이더넷 포트 A) 및 이더넷 포트(406; 이더넷 포트 B)는 다수의 고속 Molex 커넥터들(428)을 경유하여 미드-플레인(426)을 통해 마더보드(401)와 연결될 수 있다. 다수의 고속 Molex 커넥터들(428)은 이더넷 포트들(404, 406) 및 SMBus, 리셋, 클럭 등과 같은 다른 비-고속 제어 신호들을 총괄하여 운반할 수 있다. 또한, HA 모드에서, NVMe-oF 장치(400)의 이더넷 포트(408; 이더넷 포트 C) 및 이더넷 포트(410; 이더넷 포트 D)는 다수의 고속 Molex 커넥터들(456)을 경유하여 미드-플레인(426)을 통해 제 2 마더보드(403)와 연결될 수 있다. 다수의 고속 Molex 커넥터들(456)은 이더넷 포트들(408, 410) 및 SMBus, 리셋, 클럭 등과 같은 다른 비-고속 제어 신호들을 총괄하여 운반할 수 있다. 제 2 마더보드(403)는 로컬 CPU(446), BMC(444), 이더넷 스위치 제어기(448), PCIe 스위치(450), 그리고 두 개의 DDR4 메모리들(452, 454)을 포함할 수 있다.
멀티-모드 NVMe-oF 장치(400)가 NVMe 및 NVMe-oF 모드들 모두에서 동작할 수 있으므로, 동일한 장치들이 NVMe 모드와 NVMe-oF 모드에서 사용될 수 있기 때문에, 장치들 개발 및 배치 비용이 줄어들 수 있다. 유사한 이유로, 멀티-모드 NVMe-oF 장치(400)는 보다 빠른 시장 진입 시간을 가질 수 있다. 멀티-모드 NVMe-oF 장치는 다양한 제품들 및 섀시에서 사용될 수 있다. PCIe 버스의 두 개의 레인들은 제어 플레인을 통하여 표준 사양들을 위해 비축된다. 추가적인 비용 없이 CPU, BMC, 그리고 다른 장치들은 섀시 내의 각 NVMe-oF 장치와 통신하기 위한 제어 플레인으로서 PCIe 버스의 두 개의 레인들을 사용할 수 있다. NVMe 미드-플레인은 변형되지 않고 사용될 수 있고, 그리고 미드-플레인 상에 위치한 추가적인 GPIO 핀들(예를 들어, 도 2의 ESpeed[1:0](202))로 인해 NVMe-oF 장치(400) 상의 새로운 커넥터가 필요하지 않다. 또한, 임의의 플랫폼 시스템이 상이한 공급자들로부터 상이한 타입의 NVMe-oF 장치들을 지원하는 것이 바람직하다. 스위치 보드, 미드-플레인, 그리고 이더넷 SSD들과 같은 공통 빌딩 블록들을 사용함으로써, 본 발명의 다른 실시 예들은 기존 에코-시스템 공급자들이 보다 빠르게 시장에 진입할 수 있게 하고 그리고 다양한 소비자들을 만족시키기 위해 다양한 가격/성능 제품들을 제공할 수 있게 한다. 또한 PM1725a 또는 PM1735와 같은 표준 U.2 및 M.3 또는 NGSFF 기반 SSD들과 같이 새로 대두되는 것으로 NVMe-oF 장치를 지원할 수 있는 공통 시스템 플랫폼을 갖는 것이 바람직하다.
도 5a 및 도 5b는 일 실시 예에 따른 예시적인 FPGA 장치(500)를 도시한 블록도들이다. FPGA(500)는 도 1a의 FPGA(102)일 수 있다. FPGA(500)는 U2 커넥터(502) 및 복수의 플래시 드라이브들(flash drives; 예를 들어, 도 1a의 두 개의 M.3 SSD들(114,116)) 간의 인터페이스를 제공할 수 있다. FPGA(500)는 또한 복수의 DDR4 메모리들(예를 들어, 도 1a의 두 개의 DDR4 메모리들(122,124))에 연결될 수 있다. 예를 들어, FPGA(500)는 PCIe X4 버스(예를 들어, 도 1a의 제 1 PCIe X4 버스(118))에 연결되는 포트(518)을 경유하여 제 1 SSD(예를 들어, 도 1a의 114)와 인터페이스할 수 있고, 그리고 FPGA(500)는 다른 PCIe X4 버스(예를 들어, 도 1a의 제 1 PCIe X4 버스(120))에 연결되는 포트(522)을 경유하여 제 2 SSD(예를 들어, 도 1a의 116)와 인터페이스할 수 있다. FPGA(500)는 또한 포트(516)를 경유하여 제 1 DDR4 메모리(예를 들어, 도 1a의 122) 및 포트(520)를 경유하여 제 2 DDR4 메모리(예를 들어, 도 1a의 124)와 연결될 수 있다.
FPGA(500)에 연결된 U2 커넥터(502)는 두 개의 SAS 포트들(SAS0 및 SAS1) 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원할 수 있다. 두 개의 SAS 포트들(SAS0 및 SAS1)은 이더넷 포트들로 사용될 수 있다. NVMe-oF 모드에서, 두 개의 PCIe 레인들(PCIe 1 및 PCIe 2)은 이더넷 포트 1(510) 및 이더넷 포트 3(512)로 구성될 수 있다. NVMe-oF 모드에서, 두 개의 SAS 포트들(SAS0 및 SAS1)은 이더넷 포트 0(506) 및 이더넷 포트 2(508)로 구성될 수 있다. 이더넷 포트 0(506)은 U.2 커넥터(502)의 핀들 S2, S3, S5, 및 S6에 연결될 수 있고, 이더넷 포트 1(510)은 U.2 커넥터(502)의 핀들 S9 S10, S12, 및 S13에 연결될 수 있고, 이더넷 포트 2(508)는 U.2 커넥터(502)의 핀들 S23, S24, S26, 및 S27에 연결될 수 있고, 그리고 이더넷 포트 3(512)는 U.2 커넥터(502)의 핀들 S17, S18, S20, 및 S21에 연결될 수 있다.
일 구성에서, NVMe-oF 모드에서, U.2 커넥터(502)의 두 개의 X1 PCIe 레인들(PCIe 0(504) 및 PCIe 3(514))은 제 1(포트 0) 및 제 2(포트 1) 이더넷 NVMe-oF 제어기들을 위한 제어 플레인을 위해서 구성될 수 있다. 제어 플레인 PCIe 레인(PCIe 0(504))은 U.2 커넥터(502)의 핀들 E10, E11, E13, 및 E14에 연결될 수 있고, 제어 플레인 PCIe 레인(514(PCIe 3))은 U.2 커넥터(502)의 핀들 E17, E18, E20, 및 E21에 연결될 수 있다. 일부 구성들에서, 도 5A에 도시된 바와 같이, NVMe-oF 모드에서, FPGA(500)이 50G(싱글 포트 또는 듀얼 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 0(506)를 위하여 사용되고 그리고 SAS 포트 1는 이더넷 포트 2(508)로 사용된다. PCIe 레인 0(504) 및 PCIe 레인 3(514)은 제어 플레인들로 사용되고, PCIe 레인 1(510)은 이더넷 포트 1을 위해서 사용되고, 그리고 PCIe 레인 2(512)는 이더넷 포트 3을 위해서 사용된다.
다른 구성에서, 도 5b에 도시된 바와 같이, NVMe-oF 모드에서, FPGA(500)이 100G(오직 싱글 포트) 속도로 동작하고 있는 경우, SAS 포트 0는 이더넷 포트 0(506)를 위하여 사용되고 그리고 SAS 포트 1는 이더넷 포트 2(508)로 사용된다. PCIe 레인 0(504)는 제어 플레인으로 사용되고, PCIe 레인 1(510)은 이더넷 포트 1을 위해서 사용되고, 그리고 PCIe 레인 2(512)는 이더넷 포트 3을 위해서 사용된다. 제어 플레인 PCIe 레인 3(514)은 사용되지 않는다.
일부 구성들에서, 포트들(504,506,508,510,512,514)는 FPGA(500)에 부착된 SSD들의 동작 모드에 따라 미드-플레인(예를 들어, 도 4a 및 4b의 426)을 통해 마더보드(예를 들어, 도 4a 및 4b의 401,403)에 연결될 수 있다. 일부 구성에서, FPGA(500)는 NVMe 대상으로 기능할 수 있고 그리고 대상 장치에 있는 마더보드 상의 X86-기반 CPU의 필요성을 없앨 수 있다. NVMe-oF 기반 시스템에 있어서, 대상 장치(즉, NVMe-oF 장치)가 스스로 데이터를 운반할 수 있기 때문에 마더보드 상의 X86-기반 CPU는 이니시에이터(initiator; 예를 들어, 호스트 소프트웨어) 및 대상 장치 사이에 데이터를 운반하기 위해 더 이상 필요하지 않다. 또한, FPGA(500)에 연결된 복수의 플래시 드라이브들(예를 들어, 도 1a의 두 개의 M.3 포맷 SSD들(114,116))의 상이한 동작 속도들은 미드-플레인 또는 CPLD(예를 들어 도 2의 204) 상에 위치한 두 개의 추가적인 GPIO(ESpeed[1:0]) 핀들(예를 들어, 도 2의 핀들(202))을 사용함으로써 달성될 수 있다. 미드-플레인 또는 CPLD 상에 위치한 두 개의 추가적인 GPIO 핀들은 FPGA(500) 내부의 하나 이상의 내부 레지스터들에 의해 제어될 수 있다.
일 실시 예에서, 이더넷 패킷이 FPGA(500)로 수신되는 경우, FPGA(500) 내부의 논리 블록들은 이더넷 패킷 내부의 헤더의 다양한 층들을 벗겨는 데 참여할 수 있다. 예를 들어, 이더넷 패킷 내부에는 TCP 또는 UDP 패킷이 있을 수 있고, TCP 또는 UDP 패킷 내부에는 RDMA 패킷이 있을 수 있고, RDMA 패킷 내부에는 NVMe-oF 패킷이 있을 수 있으며, 그리고 NVMe-oF 패킷 내부에는 NVMe 커맨드가 있을 수 있다. FPGA(500) 내부의 논리 블록들은 이더넷 패킷이 다시 벗겨내어 프로토콜의 다음 층을 노출시키는 다양한 층들을 나타낼 수 있다. 포트들(518,522)을 경유하여 FPGA(500)에 연결된 플래시 드라이브들 또는 SSD들은 마치 U.2 커넥터(502)를 경유하여 이더넷 포트들(506,508,510,512)의 다른 쪽 끝에 있는 호스트 또는 마더보드에 연결되어있는 것처럼 NVMe 커맨드를 사용할 수 있다.
도 6은 일 실시 예에 따른 예시적인 FPGA 장치(600)를 도시하는 블록도이다. FPGA 장치(600)는 FPGA(601)를 포함할 수 있다. FPGA(601)는 U.2 커넥터(606) 및 복수의 플래시 드라이버들(에를 들어, 603A,603B) 사이에 인터페이스를 제공할 수 있다. 예를 들어, FPGA(601)는 PCIe X4 버스에 연결될 수 있는 포트(607)를 경유하여 플래시 드라이버(603A)와 인터페이스할 수 있고, 그리고 FPGA(601)는 또 다른 PCIe X4 버스에 연결될 수 있는 포트(608)를 경유하여 플래시 드라이버(603B)와 인터페이스할 수 있다. FPGA(601)는 또한 복수의 DDR4 메모리들(예를 들어, 602A~602J)에 연결될 수 있다. FPGA(601)는 또한 클럭 회로(614)에 연결될 수 있다.
U.2 커넥터(606)는 두 개의 멀티플렉서들(610,612)을 통과하여 PCIe X4 버스들(604,605)을 경유하여 FPGA(601)에 연결될 수 있다. PCIe X4 버스(604)는 멀티플렉서들(610)을 통과하여 U.2 커넥터(606)을 경유하여 미드-플레인을 통해 마더보드로 신호 또는 패킷들을 전송하는데 사용될 수 있고, 그리고 PCIe X4 버스(605)는 멀티플렉서(612)을 통과하여 U.2 커넥터(606)을 경유하여 미드-플레인을 통해 마더보드로부터 패킷들을 수신하는데 사용될 수 있다. 일부 구성들에서, FPGA(601)에 연결된 복수의 플래시 드라이브들(예를 들어, 603A,603B)의 상이한 동작 속도들은 미드-플레인 또는 CPLD(예를 들어 도 2의 204) 상에 위치한 두 개의 추가적인 GPIO(ESpeed[1:0]) 핀들(예를 들어, 도 2의 핀들(202))을 사용함으로써 달성될 수 있다. 미드-플레인 또는 CPLD 상에 위치한 두 개의 추가적인 GPIO 핀들은 FPGA(601) 내부의 하나 이상의 내부 레지스터들에 의해 제어될 수 있다. 표 1은 FPGA(601)에 연결된 복수의 플래시 드라이브들(예를 들어, 603A,603B)의 상이한 동작 속도들 동안 ESpeed 핀들의 상태를 도시한다.
도 7은 일 실시 예에 따른 두 개의 마더보드들을 포함하는 예시적인 스위치를 도시하는 블록도이다. 스위치(700)는 미드-플레인(761)을 경유하여 듀얼 포트 구성(HA 모드에서)에서 멀티 I/O를 지원하기 위해 두 개의 마더보드들(701A,701B)을 포함한다. 마더보드(701A)는 이더넷 스위치(704A) 및 PCIe 스위치(705A)를 포함하고, 마더보드(701B)는 이더넷 스위치(704B) 및 PCIe 스위치(705B)를 포함한다. 각각의 마더보드들(701A,701B)은 다른 부품들 및 모듈들(예를 들어, 도 4A의 예시적인 마더보드(401)에서 보여지는 로컬 CPU(706A,706B), BMC(707A,707B) 등)을 포함한다.
다수의 eSSD들은 스위치(700)의 장치 포트들에 장착(plug into)될 수 있다. 예를 들어, eSSD들 각각은 U.2 커넥터를 사용하여 스위치(700)에 연결될 수 있다. 각각의 eSSD는 마더보드(701A) 및 마더보드(701B) 모두에 연결할 수 있다. 본 실시 예에서, 스위치(500)에 장착된 eSSD들은 NVMe-oF 장치로 구성된다. NVMe-oF 장치는 PCIe 버스와 이더넷 포트들을 통해 미드 플레인(761)을 거쳐 스위치(700)와의 연결을 요구한다.
도 8은 본 발명의 일 실시 예에 따른 스토리지 장치를 동작하기 위한 방법의 순서도이다. 스토리지 장치는 도 4a의 NVMe-oF 장치(400)일 수 있다.
S801에서, 스토리지 장치는 제 1 입력을 수신한다. 스토리지 장치는 미드-플레인을 통해 복수의 장치 포트들을 경유하여 마더보드 또는 BMC로부터 제 1 입력을 수신할 수 있다. 예를 들어, NVMe-oF 장치(400)는 도 4a의 미드-플레인(426)을 통해 장치 포트들(404~406)을 경유하여 마더보드(401) 또는 BMC(432)로부터 제 1 입력을 수신할 수 있다.
일 구성에서, 제 1 입력은 BMC로부터 인-밴드 커맨드에 의해 또는 마더보드의 섀시 상의 물리적 핀을 사용함으로써 제어될 수 있다. 예를 들어, 제 1 입력은 도 4a의 마더보드(401)의 섀시 상의 물리적 핀(E6)을 사용함으로써 제어될 수 있다.
S802에서, 제 1 입력에 기초하여, 스토리지 장치는 제 1 동작 모드 또는 제 2 동작 모드에서 동작할지 여부를 판단한다. 일 구성에서, 스토리지 장치의 제 1 동작 모드 및 제 2 동작 모드는 NVMe 모드 및 NVMe-oF 모드일 수 있다. 예를 들어, 제 1 입력에 기초하여, NVMe-oF 장치(400)는 NVMe 모드 또는 NVMe-oF 모드에서 동작할지 여부를 판단한다.
S802에서 만일 제 1 입력에 기초하여 스토리지 장치가 제 1 동작 모드에서 동작한다고 판단하는 경우, S803에서 스토리지 장치는 제 1 동작 모드에 따라 저장 동작들을 수행한다. 예를 들어, 만일 제 1 입력에 기초하여 NVMe-oF 장치(400)가 NVMe 모드에서 동작한다고 판단하는 경우, NVMe-oF 장치(400)는 NVMe 프로토콜에 따라 저장 동작들을 수행한다.
그러나, S802에서 만일 제 1 입력에 기초하여 스토리지 장치가 제 2 동작모드에서 동작한다고 판단하는 경우, S804에서 스토리지 장치는 제 2 동작 모드에 따라 저장 동작들을 수행한다. 예를 들어, 만일 제 1 입력에 기초하여 NVMe-oF 장치(400)가 NVMe-oF 모드에서 동작한다고 판단하는 경우, NVMe-oF 장치(400)는 NVMe-oF 프로토콜에 따라 저장 동작들을 수행한다.
S805에서, 제 2 동작 모드에서 동작하는 경우, 스토리지 장치는 제 2 신호를 수신한다. 스토리지 장치는 복수의 장치 포트들을 경유하여 미드-플레인으로부터 제 2 신호를 수신할 수 있다. 예를 들어, NVMe-oF 모드에서 동작하는 동안, NVMe-oF 장치(400)는 도 4a의 복수의 장치 포트들(404~406)을 경유하여 미드-플레인(426)으로부터 제 2 신호를 수신할 수 있다.
일 구성에서, 제 2 신호는 미드-플레인 상에 위치하고, 마더보드의 BMC 또는 로컬 CPU, 또는 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터들에 의해 제어되는 두 개의 GPIO 핀들을 사용함으로써 제어될 수 있다. 예를 들어, 제 2 신호는 미드-플레인(426) 상에 위치하고, 마더보드(401)의 BMC(432) 또는 로컬 CPU(434), 또는 도 4a의 NVMe-oF 장치(400)의 FPGA(402) 내부의 내부 레지스터들에 의해 제어되는 두 개의 GPIO 핀들(예를 들어, 도 1b의 (ESpeed[1:0]) 핀들(202))을 사용함으로써 제어될 수 있다.
S806에서, 제 2 신호에 기초하여 스토리지 장치는 스토리지 장치를 위한 복수의 동작 속도들로부터 동작 속도를 선택한다. 예를 들어, 제 2 신호에 기초하여 NVMe-oF 장치(400)는 스토리지 장치를 위한 복수의 동작 속도들로부터 동작 속도를 선택한다. 예를 들어, NVMe-oF 모드에서 동작하는 동안, 제 2 신호에 기초하여 NVMe-oF 장치(400)는 100G의 동작 속도를 선택한다. 일 구성에서 스토리지 장치의 복수의 동작 속도들은 10G 및 100G 사이의 임의의 수의 속도일 수 있다.
S807에서, 제 2 동작 모드에서 동작하는 동안, 스토리지 장치는 선택된 동작 속도에서 동작한다. 예를 들어, NVMe-oF 모드에서 동작하는 동안, NVMe-oF 장치(400)는 100G의 동작 속도에서 동작한다.
본 명세서에서 다양한 구성요소(element)들, 부품(component)들, 영역(region)들, 층(layer)들 및/또는 섹션(section)들을 설명하기 위해 "제 1", "제 2", 제 3" 등의 용어들이 사용되더라도, 이러한 구성요소들, 부품들, 영역들, 층들 및/또는 섹션들은 이러한 용어들에 의해 제한되지 않는 것으로 이해되어야 할 것이다. 이러한 용어들은 단지 다른 구성요소, 부품, 영역, 층 또는 섹션으로부터 하나의 구성요소, 부품, 영역, 층 또는 섹션을 구별하기 위해 사용된다. 따라서, 본 명세서에서 개시된 제 1 구성요소, 부품, 영역, 층 또는 섹션은, 본 발명의 사상 및 범위로부터 벗어나지 않으면, 제 2 구성요소, 부품, 영역, 층 또는 섹션으로 칭해질 수 있다.
본 명세서에서 설명의 편의를 위해, "아래", "아래쪽", "밑", "위", "위쪽" 등과 같이, 상대적 공간 용어들은 도면들에 도시된 바와 같이 하나의 소자 또는 특징들의 다른 소자(들) 또는 특징(들)에 대한 관계를 설명하기 위해 이용될 수 있다. 이러한 상대적 공간 용어들은 도면들에서 묘사된 방향뿐만 아니라 사용 또는 동작에 있어서 장치의 다른 방향들을 포함하는 것으로 의도된다. 예를 들어, 도면들의 장치가 뒤집어지면, 다른 소자들 또는 특징들의 "아래" 또는 "밑" 또는 "아래쪽"으로써 설명되는 소자들은 다른 소자들 또는 특징들의 "위쪽"을 향할 수 있다. 따라서, "아래" 또는 "아래쪽"의 예시 용어들은 위 및 아래의 방향을 모두 포함할 수 있다. 장치가 다른 방향(예를 들어, 90도 또는 다른 방향들로 회전됨)일 수 있고 본 명세서에서 사용되는 상대적 공간 기술어들은 이에 따라 해석되어야 한다. 또한, 층이 2 개의 층들 "사이에" 있는 것으로서 지칭되는 경우, 층은 2 개의 층들 사이의 유일한 층일 수 있거나 하나 이상의 사이에 오는 층들이 또한 존재할 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 명세서에서 사용된 바와 같이, “대체로”, “약” 용어 그리고 이와 유사한 용어들은 근사치의 용어들로서 사용되고, 정도의 용어들로서 사용되지 않고, 본 발명의 당업자에 의해 식별되는 측정된 또는 계산된 값들의 고유한 변동을 고려하기 위한 것이다.
본 명세서에서 사용된 바와 같이, 문맥상 명백하게 다르게 뜻하지 않는 한, 단수 형태 “하나”는 복수의 형태도 포함하는 것으로 의도된다. “포함하는” 및/또는 “포함하고 있는” 용어들이 본 명세서에서 사용될 때, 이러한 용어들은 정해진 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 성분들의 존재를 명시하나, 하나 또는 그 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 성분들, 및/또는 그것들의 그룹들의 추가 또는 존재를 불가능하게 하지 않는 것이 더 이해될 것이다. 본 명세서에서 사용된 바와 같이, “및/또는” 용어는 나열된 항목들과 연관된 하나 이상의 임의의 그리고 모든 조합들 포함한다. “적어도 하나”와 같은 표현들은, 구성 요소들의 리스트보다 앞설 때, 요소들 전체 리스트를 수정하고 그리고 리스트의 개별 요소들을 수정하지 않는다. 또한, 본 발명의 실시 예들을 기술할 때 "할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예들"을 의미한다. 또한, "예시" 용어는 예 또는 그림을 의미한다. 본 명세서에서 사용된 바와 같이, “사용”, “사용되는”, 그리고 “사용된” 용어들은 “이용”, “이용되는”, 그리고 “이용된” 용어들의 동의어로 각각 간주될 수 있다.
요소 또는 층이 다른 요소 또는 층의 "위에", "연결된", "결합된" 또는 "인접한"으로 언급될 때, 그것은 다른 요소 또는 층에 직접적으로 위에, 연결된, 결합된, 또는 인접할 수 있고, 또는 하나 이상의 중간 요소들 또는 층들이 존재할 수 있다. 대조적으로, 하나의 요소 또는 층이 다른 요소 또는 층에 "직접적으로 위에", "직접적으로 연결된", "직접적으로 결합된" 또는 "바로 인접한"으로 지칭되는 경우, 중간 요소들 또는 층들이 존재하지 않는다.
본 명세서에 인용된 임의의 수치 범위는 인용된 범위 내에 포함되는 동일한 수치 정밀도의 모든 서브-범위들을 포함하도록 의도된다. 예를 들어, “1.0에서 10.0”의 범위에는 인용된 최소값 1.0과 인용된 최대값 10.0 사이의 (그리 포함하는), 즉, 예를 들면, 2.4에서 7.6까지와 같이, 1.0과 같거나 큰 최소값 및 10.0과 같거나 작은 최대값을 갖는, 모든 부분 범위가 포함된다. 본 명세서에 인용된 최대 수치 제한은 본 명세서에 포함된 더 낮은 모든 수치 제한들을 포함하도록 의도되며, 본 명세서에 인용된 임의의 최소 수치 제한은 본 명세서에 포함된 더 높은 모든 수치 제한들을 포함하도록 의도된다.
비록 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법의 예시적인 실시 예들이 본 명세서에서 구체적으로 설명되고 예시되었으나, 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 따라서, 본 발명의 원리들에 따라 구성되는 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법은 본 명세서에서 구체적으로 설명된 것 이외에 구현될 수 있다는 것을 이해해야 한다. 본 발명은 또한 다음의 청구 범위, 및 그 등가물에 의해서 정의된다.
100: 멀티-모드 NVMe-oF 장치
134: M.3 포맷 SSD
204: CPLD
400: NVMe-oF 장치
401: 마더보드
600: FPGA 장치
700: 스위치
134: M.3 포맷 SSD
204: CPLD
400: NVMe-oF 장치
401: 마더보드
600: FPGA 장치
700: 스위치
Claims (20)
- 적어도 하나의 마더보드(motherboard);
적어도 하나의 BMC(baseboard management controller);
미드-플레인(mid-plane); 및
적어도 하나의 스토리지 장치를 포함하되,
상기 적어도 하나의 스토리지 장치는 상기 미드-플레인을 통해 복수의 장치 포트들을 경유하여 상기 적어도 하나의 마더보드 또는 상기 적어도 하나의 BMC로부터 수신된 제 1 입력에 기초하여 NVMe 모드 또는 NVMeoF 모드에서 동작하고, 그리고
상기 NVMeoF 모드에서 동작하는 경우, 상기 적어도 하나의 스토리지 장치는 상기 복수의 장치 포트들을 경유하여 상기 미드-플레인으로부터 수신된 제 2 입력에 기초하여 NVMeoF 모드 동안 사용 가능한 복수의 동작 속도들로부터 제 1 동작 속도를 선택하고,
상기 적어도 하나의 스토리지 장치는 SFF(Small Form Factor) 커넥터를 경유하여 상기 미드-플레인에 연결되는 하나 이상의 SSD(Solid State Drive)들을 포함하는 시스템. - 제 1 항에 있어서,
상기 하나 이상의 SSD들은 커넥터 및 적어도 하나의 버스를 경유하여 적어도 하나의 FPGA(field programmable gate array)와 통신하는 시스템. - 제 2 항에 있어서,
상기 커넥터는 SSD 커넥터이고 상기 적어도 하나의 버스는 PCIe(peripheral component interconnect express) 버스인 시스템. - 제 1 항에 있어서,
상기 제 1 입력은, 상기 적어도 하나의 BMC로부터 인-밴드 커맨드(in-band command)에 의해 또는 상기 적어도 하나의 마더보드의 섀시(chassis) 상의 물리적 핀을 사용함으로써 제어되는 시스템. - 제 1 항에 있어서,
상기 제 2 입력은, 상기 적어도 하나의 마더보드 상의 로컬 CPU(local central processing unit) 또는 상기 적어도 하나의 BMC, 또는 상기 적어도 하나의 스토리지 장치의 FPGA 내부의 하나 이상의 내부 레지스터(internal register)들에 의해 제어되는 두 개의 GPIO(general-purpose input/output) 핀들을 사용함으로써 제어되는 시스템. - 제 1 항에 있어서,
상기 적어도 하나의 스토리지 장치의 상기 복수의 동작 속도들은 두 개 이상의 10G(gigabits per second) 이상 속도들인 시스템. - 제 1 항에 있어서,
상기 복수의 장치 포트들은 U.2 커넥터를 경유하여 상기 적어도 하나의 스토리지 장치에 연결되고 그리고 상기 스토리지 장치는 HA(high availability) 모드 또는 non-HA(non-high availability) 모드에서 동작하는 시스템. - 제 7 항에 있어서,
상기 적어도 하나의 스토리지 장치는 상기 U.2 커넥터를 경유하여 두 개의 SAS(serial Attached Small Computer System Interface) 포트들 및 PCIe X4 버스의 최대 네 개의 PCIe X4 레인들을 지원하고,
상기 두 개의 SAS 포트들은 패브릭 부착형 포트(fabric attached port)들로 사용되고, 그리고
상기 패브릭 부착형 포트들은 이더넷(ethernet) 포트들, 파이버-채널(fibre-channel) 포트들, 및 인피니밴드(InfiniBand) 포트들을 포함하는 시스템. - 제 8 항에 있어서,
상기 NVMeoF 모드에서 동작하는 경우, 상기 적어도 하나의 스토리지 장치는, 상기 U.2 커넥터를 경유하여, 두 개의 패브릭 부착형 포트들을 위한 제어 플레인(control plane)을 위해서 네 개의 PCIe X4 레인들 중에서 두 개의 PCIe X4 레인들 및 추가적인 패브릭 부착형 포트들로 네 개의 PCIe X4 레인들 중에서 나머지 두 개의 PCIe X4 레인들을 지원하는 시스템. - 제 1 항에 있어서,
상기 적어도 하나의 스토리지 장치는 제 1 스토리지 장치 및 제 2 스토리지 장치를 더 포함하고,
제 1 시간에, 상기 제 1 스토리지 장치 및/또는 상기 제 2 스토리지 장치는 상기 복수의 동작 속도들로부터 상기 제 1 동작 속도 또는 제 2 속도로 상기 NVMe 모드 또는 상기 NVMeoF 모드에서 동작하는 시스템. - 미드-플레인(mid-plane)을 통해 복수의 장치 포트들을 경유하여 적어도 하나의 마더보드(motherboard) 또는 BMC(baseboard management controller)로부터 스토리지 장치로 제 1 입력을 수신하는 단계;
상기 스토리지 장치에 의해, 상기 스토리지 장치로 수신된 상기 제 1 입력에 기초하여 NVMe 모드 또는 NVMeoF 모드에서 동작하는지 여부를 판단하는 단계;
상기 NVMeoF 모드에서 동작하는 경우, 상기 복수의 장치 포트들을 경유하여 상기 미드-플레인으로부터 상기 스토리지 장치로 제 2 입력을 수신하는 단계; 및
상기 스토리지 장치에 의해, 상기 제 2 입력에 기초하여 상기 NVMeoF 모드 동안 사용 가능한 복수의 동작 속도들로부터 상기 스토리지 장치의 동작 속도를 선택하는 단계를 포함하고,
상기 스토리지 장치는 SFF 커넥터를 경유하여 상기 미드-플레인에 연결되는 하나 이상의 SSD들을 포함하는 방법. - 제 11 항에 있어서,
상기 제 1 입력은, 상기 BMC로부터 인-밴드 커맨드(in-band command)에 의해 또는 상기 적어도 하나의 마더보드의 섀시(chassis) 상의 물리적 핀을 사용함으로써 제어되는 방법. - 제 11 항에 있어서,
상기 제 2 입력은, 상기 적어도 하나의 마더보드 상의 상기 BMC 또는 로컬 CPU(local central processing unit), 또는 상기 스토리지 장치의 FPGA(field programmable gate array) 내부의 하나 이상의 내부 레지스터(internal register)들에 의해 제어되는 두 개의 GPIO(general-purpose input/output) 핀들을 사용하여 제어되는 방법. - 제 11 항에 있어서,
상기 스토리지 장치의 상기 복수의 동작 속도들은 두 개 이상의 10G(gigabits per second) 이상 속도들인 방법. - 제 1 커넥터 및 적어도 하나의 버스를 경유하여 적어도 하나의 FPGA(field programmable gate array)와 통신하는 하나 이상의 SSD(solid state drive)들을 포함하되,
제 2 커넥터를 경유하여 수신된 제 1 입력에 기초하여 NVMe 모드 또는 NVMeoF 모드에서 동작하고, 그리고
상기 NVMeoF 모드에서 동작하는 경우, 상기 제 2 커넥터를 경유하여 수신된 제 2 입력에 기초하여 NVMeoF 모드 동안 사용 가능한 복수의 동작 속도들로부터 제 1 동작 속도를 선택하고,
상기 하나 이상의 SSD들은 SFF 커넥터를 경유하여 미드-플레인에 연결되는 스토리지 장치. - 제 15 항에 있어서,
상기 제 1 입력은, 상기 미드-플레인(mid-plane)을 통해 복수의 장치 포트들을 경유하여 마더보드(motherboard) 또는 스위치의 BMC(baseboard management controller)로부터 수신되고 그리고 상기 제 2 입력은, 상기 복수의 장치 포트들을 경유하여 상기 미드-플레인으로부터 수신되고, 그리고
상기 제 1 입력은, 상기 BMC로부터 인-밴드 커맨드(in-band command)에 의해 또는 상기 마더보드의 섀시(chassis) 상의 물리적 핀을 사용하여 제어되고 그리고 상기 제 2 입력은, 상기 마더보드 상의 상기 BMC 또는 로컬 CPU(local central processing unit), 또는 상기 FPGA 내부의 하나 이상의 내부 레지스터(internal resister)들에 의해 제어되는 두 개의 GPIO(general-purpose input/output) 핀들을 사용하여 제어되는 스토리지 장치. - 제 15 항에 있어서,
상기 제 1 커넥터는 SSD 커넥터이고, 상기 적어도 하나의 버스는 PCIe(peripheral component interconnect express) 버스이고, 상기 제 2 커넥터는 U.2 커넥터이고, 그리고 상기 스토리지 장치의 상기 복수의 동작 속도들은 두 개 이상의 10G(gigabits per second) 이상 속도들인 스토리지 장치. - 제 15 항에 있어서,
제 1 시간에, 상기 하나 이상의 SSD들 중에서 제 1 SSD 및/또는 제 2 SSD는 상기 복수의 동작 속도들로부터 상기 제 1 동작 속도 또는 제 2 속도로 상기 NVMe 모드 또는 상기 NVMeoF 모드에서 동작하는 스토리지 장치.
- 삭제
- 삭제
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862637340P | 2018-03-01 | 2018-03-01 | |
US62/637,340 | 2018-03-01 | ||
US16/007,949 | 2018-06-13 | ||
US16/007,949 US11016924B2 (en) | 2018-03-01 | 2018-06-13 | System and method for supporting multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-oF) devices |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190104854A KR20190104854A (ko) | 2019-09-11 |
KR102392204B1 true KR102392204B1 (ko) | 2022-04-28 |
Family
ID=67767691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180131345A KR102392204B1 (ko) | 2018-03-01 | 2018-10-30 | 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11016924B2 (ko) |
JP (1) | JP7105710B2 (ko) |
KR (1) | KR102392204B1 (ko) |
CN (1) | CN110221769A (ko) |
TW (1) | TWI756488B (ko) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521378B2 (en) * | 2018-03-09 | 2019-12-31 | Samsung Electronics Co., Ltd. | Adaptive interface storage device with multiple storage protocols including NVME and NVME over fabrics storage devices |
CN110647429A (zh) * | 2019-09-30 | 2020-01-03 | 联想(北京)有限公司 | 一种电子设备、处理系统及处理方法 |
CN110888598B (zh) * | 2019-10-09 | 2024-01-19 | 宜鼎国际股份有限公司 | 数据储存装置、电子设备及可远程控制电子设备的系统 |
TWI735050B (zh) * | 2019-10-09 | 2021-08-01 | 宜鼎國際股份有限公司 | 資料儲存裝置、電子設備及可遠端控制電子設備的系統 |
CN111179979A (zh) * | 2019-12-20 | 2020-05-19 | 宜鼎国际股份有限公司 | 迭板构造 |
CN111427811A (zh) * | 2020-03-19 | 2020-07-17 | 上海御渡半导体科技有限公司 | 一种提高pcie控制ddr通信速率的装置及方法 |
JP2021197583A (ja) | 2020-06-10 | 2021-12-27 | キオクシア株式会社 | 電子機器および方法 |
CN112905507B (zh) * | 2021-03-19 | 2023-05-26 | 杭州华澜微电子股份有限公司 | 一种硬盘转换控制器 |
US11726678B2 (en) * | 2021-08-04 | 2023-08-15 | Micron Technology, Inc. | Configurable solid state drive with multiple form factors |
CN113676421B (zh) * | 2021-10-25 | 2022-01-28 | 之江实验室 | 一种基于PCIe的多端口网络报文收发方法 |
CN113835770B (zh) * | 2021-11-30 | 2022-02-18 | 四川华鲲振宇智能科技有限责任公司 | 一种服务器管理模块在线更换方法及系统 |
US11861212B2 (en) | 2022-02-24 | 2024-01-02 | Silicon Motion, Inc. | Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence |
US11972146B2 (en) | 2022-02-24 | 2024-04-30 | Silicon Motion, Inc. | Flash memory controller and method capable of sending read command or data toggle command to ask for flash memory device return more plane data of different planes |
US11977776B2 (en) * | 2022-02-24 | 2024-05-07 | Silicon Motion, Inc. | Flash memory controller and method capable of sending read command or data toggle command to ask for flash memory device return more plane data of different planes |
US11935595B2 (en) | 2022-02-24 | 2024-03-19 | Silicon Motion, Inc. | Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence |
US11977752B2 (en) | 2022-02-24 | 2024-05-07 | Silicon Motion, Inc. | Flash memory controller and method capable of sending data toggle set-feature signal to enable, disable, or configure data toggle operation of flash memory device |
CN114721478B (zh) * | 2022-03-31 | 2023-05-23 | 浪潮(北京)电子信息产业有限公司 | 一种bmc板卡及存储控制器主板 |
TWI830608B (zh) * | 2023-02-22 | 2024-01-21 | 神雲科技股份有限公司 | 通用介面系統及其控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306434A1 (en) | 2009-05-27 | 2010-12-02 | Dell Products L.P. | Systems and methods for scalable storage management |
US20140269738A1 (en) | 2013-03-12 | 2014-09-18 | Forrest Lawrence Pierson | Indefinitely expandable high-capacity data switch |
US20170300445A1 (en) | 2016-04-18 | 2017-10-19 | Nimble Storage, Inc. | Storage array with multi-configuration infrastructure |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052738A (en) * | 1997-06-30 | 2000-04-18 | Sun Microsystems, Inc. | Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory |
US20030191883A1 (en) | 2002-04-05 | 2003-10-09 | Sycamore Networks, Inc. | Interface for upgrading serial backplane application from ethernet to gigabit ethernet |
US7573940B2 (en) * | 2005-12-07 | 2009-08-11 | Intel Corporation | Data transmission at energy efficient rates |
US7843852B2 (en) * | 2008-04-23 | 2010-11-30 | International Business Machines Corporation | Portable device for fibre channel configuration and analysis |
KR101612111B1 (ko) * | 2009-04-27 | 2016-04-14 | 삼성전자주식회사 | 전류 검출기를 포함하는 데이터 저장 장치 |
US9008129B2 (en) | 2010-02-18 | 2015-04-14 | Broadcom Corporation | System and method for frequency division multiplexed high speed physical layer devices |
JP5930025B2 (ja) * | 2011-05-25 | 2016-06-08 | ザ シラナ グループ プロプライエタリー リミテッドThe Silanna Group Pty Ltd | Usb2.0高速モードを有するusbアイソレータ集積回路および自動速度検出 |
US9164861B2 (en) * | 2011-09-22 | 2015-10-20 | American Megatrends, Inc. | Drive mapping using a plurality of connected enclosure management controllers |
GB2506572A (en) * | 2012-07-05 | 2014-04-09 | Ibm | Blade enclosure with control and expansion canisters |
US9098402B2 (en) | 2012-12-21 | 2015-08-04 | Intel Corporation | Techniques to configure a solid state drive to operate in a storage mode or a memory mode |
US9015353B2 (en) * | 2013-03-14 | 2015-04-21 | DSSD, Inc. | Method and system for hybrid direct input/output (I/O) with a storage device |
US10452316B2 (en) | 2013-04-17 | 2019-10-22 | Apeiron Data Systems | Switched direct attached shared storage architecture |
KR102108839B1 (ko) * | 2013-06-12 | 2020-05-29 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 사용자 장치 및 그것의 데이터 쓰기 방법 |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US9785356B2 (en) * | 2013-06-26 | 2017-10-10 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US9565269B2 (en) | 2014-11-04 | 2017-02-07 | Pavilion Data Systems, Inc. | Non-volatile memory express over ethernet |
US10666698B1 (en) * | 2014-12-19 | 2020-05-26 | Amazon Technologies, Inc. | Bit rate selection for streaming media |
CN105813142B (zh) * | 2014-12-31 | 2019-04-19 | 华为技术有限公司 | 一种数据帧的发送方法、装置及系统 |
US10025357B2 (en) * | 2015-06-15 | 2018-07-17 | Seagate Technology Llc | Enclosure system for computing equipment |
CN104951384B (zh) * | 2015-06-16 | 2017-10-03 | 浪潮电子信息产业股份有限公司 | 一种基于nvme ssd硬盘的监控系统、基板管理控制器和监控方法 |
KR102288546B1 (ko) * | 2015-08-31 | 2021-08-10 | 삼성전자주식회사 | 스토리지 장치 및 그 제어 방법 |
CN106775434B (zh) | 2015-11-19 | 2019-11-29 | 华为技术有限公司 | 一种NVMe网络化存储的实现方法、终端、服务器及系统 |
US10275160B2 (en) | 2015-12-21 | 2019-04-30 | Intel Corporation | Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller |
US10210121B2 (en) | 2016-01-27 | 2019-02-19 | Quanta Computer Inc. | System for switching between a single node PCIe mode and a multi-node PCIe mode |
US10691628B2 (en) | 2016-05-06 | 2020-06-23 | Quanta Computer Inc. | Systems and methods for flexible HDD/SSD storage support |
US20170357610A1 (en) * | 2016-06-14 | 2017-12-14 | Kazan Networks Corporation | Split nvme ssd implementation using nvme over fabrics protocol |
US10452576B2 (en) * | 2016-06-24 | 2019-10-22 | Avago Technologies International Sales Pte. Limited | NVMe drive detection from a SAS/SATA connector |
US10387353B2 (en) | 2016-07-26 | 2019-08-20 | Samsung Electronics Co., Ltd. | System architecture for supporting active pass-through board for multi-mode NMVE over fabrics devices |
US10210123B2 (en) | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US10200309B2 (en) | 2016-08-12 | 2019-02-05 | Samsung Electronics Co., Ltd. | Two-headed switch including a drive bay for fabric-attached devices |
CN106502593A (zh) | 2016-11-04 | 2017-03-15 | 郑州云海信息技术有限公司 | 一种高速互联混合存储系统 |
-
2018
- 2018-06-13 US US16/007,949 patent/US11016924B2/en active Active
- 2018-10-30 KR KR1020180131345A patent/KR102392204B1/ko active IP Right Grant
- 2018-11-13 TW TW107140284A patent/TWI756488B/zh active
-
2019
- 2019-01-21 CN CN201910053414.3A patent/CN110221769A/zh active Pending
- 2019-02-27 JP JP2019034565A patent/JP7105710B2/ja active Active
-
2021
- 2021-05-21 US US17/327,369 patent/US20210279198A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306434A1 (en) | 2009-05-27 | 2010-12-02 | Dell Products L.P. | Systems and methods for scalable storage management |
US20140269738A1 (en) | 2013-03-12 | 2014-09-18 | Forrest Lawrence Pierson | Indefinitely expandable high-capacity data switch |
US20170300445A1 (en) | 2016-04-18 | 2017-10-19 | Nimble Storage, Inc. | Storage array with multi-configuration infrastructure |
Also Published As
Publication number | Publication date |
---|---|
KR20190104854A (ko) | 2019-09-11 |
US20190272249A1 (en) | 2019-09-05 |
US11016924B2 (en) | 2021-05-25 |
JP2019153300A (ja) | 2019-09-12 |
TWI756488B (zh) | 2022-03-01 |
TW201937381A (zh) | 2019-09-16 |
JP7105710B2 (ja) | 2022-07-25 |
CN110221769A (zh) | 2019-09-10 |
US20210279198A1 (en) | 2021-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102392204B1 (ko) | 멀티-모드 및/또는 멀티-속도 NVMe-oF 장치들을 지원하는 시스템 및 방법 | |
US11588261B2 (en) | Multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-oF) device | |
KR100708565B1 (ko) | 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는장치 | |
KR102265669B1 (ko) | 패브릭을 통한 멀티-모드 불휘발성 메모리 익스프레스 장치들을 위한 액티브 패스-쓰루 보드를 지원하는 시스템 아키텍처 | |
US20230350838A1 (en) | Sff-ta-100x based multi-mode protocols solid state devices | |
TWI621022B (zh) | 於多重電纜pci快捷io互連中實施電纜故障切換 | |
US7502878B1 (en) | Method and apparatus for switching USB devices between multiple USB hosts | |
KR100892007B1 (ko) | 멀티 호스트 usb 장치 제어기 | |
US8756360B1 (en) | PCI-E compatible chassis having multi-host capability | |
KR102403627B1 (ko) | Fpga 기반의 aic ssd를 지원하는 장치 및 방법 | |
KR102147629B1 (ko) | 플렉시블 서버 시스템 | |
KR20050044247A (ko) | 피시아이 익스프레스 링크의 동적 재구성 방법 및 장치 | |
US10210128B2 (en) | Redirection of lane resources | |
CN114398305A (zh) | 自适应接口存储装置和存储系统 | |
US20060200614A1 (en) | Computer system using serial connect bus, and method for interconnecting a plurality of CPU using serial connect bus | |
WO2018140045A1 (en) | Adaptable connector with external i/o port | |
EP3382567B1 (en) | Multiple storage devices implemented using a common connector | |
WO2013025221A1 (en) | Connecting expansion slots | |
US9037769B1 (en) | SAS expander with multimode phys | |
WO2004006108A1 (en) | High density severlets utilizing high speed data bus | |
CN117370232A (zh) | 具有多个端口的接口装置及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |