KR102407210B1 - A multi-mode device and an operating method thereof - Google Patents

A multi-mode device and an operating method thereof Download PDF

Info

Publication number
KR102407210B1
KR102407210B1 KR1020210071699A KR20210071699A KR102407210B1 KR 102407210 B1 KR102407210 B1 KR 102407210B1 KR 1020210071699 A KR1020210071699 A KR 1020210071699A KR 20210071699 A KR20210071699 A KR 20210071699A KR 102407210 B1 KR102407210 B1 KR 102407210B1
Authority
KR
South Korea
Prior art keywords
chassis
type
connector
statement
host
Prior art date
Application number
KR1020210071699A
Other languages
Korean (ko)
Other versions
KR20210070958A (en
Inventor
솜퐁 폴 올라이그
손 티. 팜
프레드 울리
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/256,495 external-priority patent/US20180032471A1/en
Priority claimed from US15/345,509 external-priority patent/US11461258B2/en
Priority claimed from US15/345,507 external-priority patent/US10346041B2/en
Priority claimed from US15/403,088 external-priority patent/US10210123B2/en
Priority claimed from US15/411,962 external-priority patent/US10372659B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210070958A publication Critical patent/KR20210070958A/en
Application granted granted Critical
Publication of KR102407210B1 publication Critical patent/KR102407210B1/en

Links

Images

Classifications

    • 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/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0028Serial attached SCSI [SAS]

Abstract

본 발명의 실시 예에 따른 장치는 커넥터, 섀시(chassis) 타입(type) 회로, 그리고 모드 구성 회로를 포함할 수 있다. 커넥터는 상기 장치를 섀시와 연결할 수 있다. 섀시 타입 회로는 상기 장치를 포함하는 상기 섀시의 타입(type)을 판단할 수 있다. 모드 구성 회로는 상기 섀시의 상기 타입에 응답하여 제 1 모드 또는 제 2 모드를 사용하도록 상기 장치를 구성할 수 있다.A device according to an embodiment of the present invention may include a connector, a chassis type circuit, and a mode configuration circuit. A connector may connect the device with the chassis. A chassis type circuit may determine the type of chassis that contains the device. A mode configuration circuit may configure the device to use the first mode or the second mode in response to the type of chassis.

Description

멀티-모드 장치 및 그것의 동작 방법{A MULTI-MODE DEVICE AND AN OPERATING METHOD THEREOF}A MULTI-MODE DEVICE AND AN OPERATING METHOD THEREOF

본 발명은 스토리지 장치에 관한 것으로, 좀 더 상세하게는 멀티-모드 장치 및 그것의 동작 방법에 관한 것이다.The present invention relates to a storage device, and more particularly, to a multi-mode device and an operating method thereof.

종래의 섀시(chassis)는 다양한 다른 모델들로 제공된다. 예를 들어, 몇몇 섀시는 장치들과 통신하기 위해 NVMe(Non-Volatile Memory express)를 이용한다. 반면에, 다른 섀시는 장치들과 통신하기 위해 NVMeoF(NVMe over Fabrics)를 이용한다. 섀시의 다양한 모델들은 이러한 모델들과 호환되도록 디자인된 다양한 장치들의 모델들을 요구할 수 있다. 그 결과, 장치의 제조사들은 장치들의 다양한 모델들을 제공해야 한다. 게다가, 이러한 섀시들의 다양한 모델들을 이용하는 데이터 센터들은 장치가 실패하는 경우를 대비하여 다양한 장치들의 스페어 부품들을 보관해야만 한다. 이는, 그렇지 않은 경우에 데이터 센터들이 저장하려고 하는 양보다 더 많은 양의 스페어 부품들을 데이터 센터들이 보관해야 한다는 것을 의미한다.
제조사들에 의해 생산되고 데이터 센터들에 의해 저장되는 장치 타입들의 수를 줄이기 위한 방법이 여전히 요구된다.
Conventional chassis are available in a variety of different models. For example, some chassis use Non-Volatile Memory express (NVMe) to communicate with devices. On the other hand, other chassis use NVMe over Fabrics (NVMeoF) to communicate with devices. Different models of chassis may require different models of devices designed to be compatible with these models. As a result, manufacturers of devices have to offer different models of devices. In addition, data centers using different models of these chassis must keep spare parts for the various devices in case the device fails. This means that data centers will have to store more spare parts than they would otherwise store.
There is still a need for a method to reduce the number of device types produced by manufacturers and stored by data centers.

본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 멀티-모드 장치 및 그것의 동작 방법을 제공할 수 있다. The present invention is to solve the above technical problem, the present invention can provide a multi-mode apparatus and an operating method thereof.

본 발명의 실시 예에 따른 장치는 커넥터, 섀시(chassis) 타입(type) 회로, 그리고 모드 구성 회로를 포함할 수 있다. 커넥터는 장치를 섀시와 연결할 수 있다. 섀시 타입 회로는 장치를 포함하는 섀시의 타입(type)을 판단할 수 있다. 모드 구성 회로는 섀시의 타입에 응답하여 제 1 모드 또는 제 2 모드를 사용하도록 장치를 구성할 수 있다.
본 발명의 다른 실시 예에 따른 장치(device)의 동작 방법은, 장치가 설치된 섀시의 타입을 판단하는 단계, 그리고 섀시의 타입에 따라, 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 장치를 구성하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 물품(article)은 논 트랜지토리(Non-Transitory) 명령들을 저장하는 유형의 스토리지 매체(tangible storage medium)를 포함할 수 있다. 논 트랜지토리 명령들은 머신에 의해 실행될 때: 장치가 설치된 섀시의 타입을 판단하는 단계, 그리고 섀시의 타입에 따라, 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 장치를 구성하는 단계를 수행할 수 있다.
A device according to an embodiment of the present invention may include a connector, a chassis type circuit, and a mode configuration circuit. The connector may connect the device with the chassis. The chassis type circuitry may determine the type of chassis that contains the device. The mode configuration circuit may configure the device to use the first mode or the second mode in response to the type of chassis.
A method of operating a device according to another embodiment of the present invention includes the steps of determining a type of a chassis in which the device is installed, and according to the type of the chassis, activating a first communication mechanism for the device and a second communication mechanism and configuring the device to be disabled.
An article according to another embodiment of the present invention may include a tangible storage medium for storing non-transitory instructions. The non-transitory instructions, when executed by the machine: determining the type of chassis in which the device is installed, and configuring the device to activate a first communication mechanism for the device and deactivate a second communication mechanism for the device according to the type of chassis. steps can be performed.

본 발명의 멀티-모드 장치 및 그것의 동작 방법은, 복수의 제품들에서 사용될 수 있는 단일의 공통 장치 및 공통 시스템의 플랫폼을 제공할 수 있다. 따라서, 다양한 모델의 장치들의 생산 및 저장 비용을 줄일 수 있다.The multi-mode apparatus and method of operation thereof of the present invention can provide a single common apparatus and a platform of a common system that can be used in a plurality of products. Accordingly, it is possible to reduce production and storage costs of devices of various models.

도 1은 본 발명의 실시 예에 따른 장치를 포함하는 머신을 보여준다.
도 2는 도 1의 머신을 추가적으로 상세히 보여준다.
도 3 및 도 4는 NVMe(Non-Volatile Memory express) 또는 NVMeoF(Non-Volatile Memory express over Fabrics) 모드에서 동작하는 도 1의 장치를 보여준다.
도 5는 HA(High Availability) 섀시 내에서 두 개의 호스트와 통신하는 도 1의 장치를 보여준다.
도 6은 본 발명의 실시 예에 따른 도 1의 장치가 셀프-구성(self-configure)하기 위한 절차를 예시적으로 보여주는 순서도이다.
도 7a 및 도 7b는 본 발명의 실시 예에 따른 NVMe 또는 NVMeoF 프로토콜, 그리고 HA 섀시 또는 non-HA 섀시에 대해 도 1의 장치가 셀프-구성하기 위한 절차를 예시적으로 보여주는 순서도이다.
1 shows a machine comprising an apparatus according to an embodiment of the present invention.
Fig. 2 shows the machine of Fig. 1 in further detail.
3 and 4 show the device of FIG. 1 operating in Non-Volatile Memory express (NVMe) or Non-Volatile Memory express over Fabrics (NVMeoF) mode.
Figure 5 shows the device of Figure 1 communicating with two hosts within a High Availability (HA) chassis.
6 is a flowchart exemplarily showing a procedure for self-configuring the apparatus of FIG. 1 according to an embodiment of the present invention.
7A and 7B are flowcharts exemplarily illustrating a procedure for self-configuring the device of FIG. 1 for an NVMe or NVMeoF protocol and an HA chassis or a non-HA chassis according to an embodiment of the present invention.

이하 본 발명의 개념의 구체적인 실시 예에 대한 참조가 상세하게 제공될 것이다. 본 발명의 개념의 구체적인 실시 예에 대한 예들은 첨부된 도면에 도시될 것이다. 후속하는 상세한 설명에서, 본 발명의 개념에 대한 완전한 이해가 가능해지도록 수많은 구체적인 사항들이 제공될 것이다. 그러나, 당업자는 이러한 상세한 설명이 없이도 본 발명의 개념을 실시할 수 있다는 것을 이해하여야 한다. 다른 예에서, 공지 또는 공용의 방법들, 단계들, 구성들, 회로들, 및 네트워크들은 본 발명의 실시 예의 양태를 불필요하게 모호하게 하지 않기 위해 상세하게 기재되지 않았다.
본 명세서에서 제 1 및 제 2 등이 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 이러한 구성 요소는 이러한 용어에 의해 한정되지 않는 것으로 이해 될 것이다. 상기 용어들은 하나의 구성 요소를 다른 것과 구별하기 위해 사용된다. 예를 들어, 제 1 논리 단계는 제 2 논리 단계로 명명될 수 있으며, 이와 유사하게 본 발명의 개념의 범위를 벗어나지 않은 상태에서, 제 2 논리 스테이지는 제 1 논리 스테이지로 명명될 수 있다.
본 발명의 개념의 발명의 설명에 사용된 용어들은 특정한 실시 예들을 기술하기 위한 목적으로만 사용되는 것이며, 본 발명의 개념을 한정하는 의도로는 사용되지 않는다. 문맥상 명백히 다르게 지시하지 않는 한 단수 형태는 본 발명의 개념의 설명 및 부가된 청구항에 사용될 때, 복수의 형태를 포함하는 의도로 사용된 것으로 이해되어야 한다. 또한, 본 명세서에 사용된 “및/또는” 용어는 하나 또는 그 이상의 관련된 나열된 사항의 모든 가능한 조합을 지시하거나 포함하는 것으로 이해되어야 한다. “포함하는” 용어가 본 명세서에 사용되는 경우, 기술된 특징, 숫자, 단계, 동작, 구성, 및/또는 부품들의 존재를 명기하는 것이며, 이들의 하나 또는 그 이상의 다른 특징, 숫자, 단계, 동작, 구성, 부품, 및/또는 그룹의 존재 또는 부가를 배제하지 않는 것으로 더 이해되어야 한다. 구성 및 특징의 도시는 일정한 비례로 그려진 것은 아니며, 일부 구성 및 특징은 확대/축소하여 그려질 수도 있다.
NVMeoF 장치 공급자들(suppliers)이 NVMe 섀시와 NVMeoF 섀시와 같이 복수의 제품들에서 사용될 수 있는 단일의 공통 장치를 제공하는 것은 바람직하다. 게다가, 최소의 변화로 non-HA(또는, 싱글 패스(single path) I/O(Input/Output)) 모드와 HA(또는, 멀티-패스(multi-path) I/O) 모드의 NVMe 장치들과 NVMeoF 장치들을 지원할 수 있는 공통의 시스템 플랫폼을 갖는 것은 바람직하다.
멀티-모드 NVMeoF 장치는 알려진 위치로부터 정보를 찾아 NVMe 또는 NVMeoF를 지원할 수 있다. 멀티-모드 장치가 NVMe 섀시 내에 설치되거나 섀시 타입이 결정되지 않으면, PCIe(Peripheral Component Interconnect express)의 x4 레인(lane)들은 데이터와 컨트롤 통신 모두에 대해 사용될 수 있다. 장치는 PCIe 엔진에 의해 구동되어, 예를 들어 U.2 커넥터를 통한 통신을 가능하게 한다. 이러한 경우, 장치는 이더넷(ethernet) 엔진(들)을 비활성화할 것이다. 그리고, 모든 NVMe 프로토콜들과 기능들은 지원되거나 활성화된다.
멀티-모드 장치가 NVMeoF 섀시 내에 설치되면, PCIe 레인들 중 두 개는 컨트롤 통신을 위해 사용될 수 있다. 장치의 디자인에 따라, 데이터 통신을 지원하는 이더넷 포트들은 다른 가능한 PCIe 레인들 또는 SAS(Serial Attached SCSI(Small computer system interface)) 핀들을 사용할 수 있다.
본 발명의 실시 예들은 멀티-모드 장치들이 건강 상태, FRU(Field Replaceable Unit) 정보, 센서 정보, 그리고 디스커버리 서비스들을 BMC(Baseboard Management Controller) 또는 로컬 호스트 프로세서로 푸쉬(push)하도록 활성화한다. 멀티-모드 장치들은 또한 NVMeoF 장치 펌웨어 업그레이드들을 다운로드할 수 있다.
멀티-모드 장치가 두 개(또는, 잠재적으로 더 많은)의 호스트들과의 데이터 통신 및 컨트롤 통신을 지원해야 함에도 불구하고, HA 멀티 패스 I/O 지원이 역시 가능하다. 이는 더 많은 통신 패스들(예를 들어, 추가적인 SAS 핀들을 통한 추가적인 이더넷 포트들)의 할당이나 가능한 통신 패스들의 분할(예를 들어, 다른 목적들에 대한 다른 PCIe 레인들의 할당)을 요구할 수 있다.
본 발명의 실시 예들은 다양한 디자인들을 지원할 수 있다. 몇몇 디자인들에서, 공통의 멀티-모드 장치는 두 개의 별개의 모드들(NVMe와 NVMeoF)을 지원할 수 있다. 게다가, 몇몇의 디자인들에서, NVMe 모드에서 멀티-모드 장치는 종래의 NVMe 장치처럼 동작할 수 있다. 하나의 디자인에서, 멀티-모드 장치는 컨트롤 통신에 대해 일부 PCIe 레인들을 사용할 수 있고, 이더넷 포트들에 대해 일부 PCIe 레인들을 사용할 수 있다. 다른 디자인에서, 멀티-모드 장치는 컨트롤 통신에 대해 일부 PCIe 레인들을 사용할 수 있고, 이더넷 포트들에 대해 SAS 핀들을 사용할 수 있다. 몇몇 디자인들에서, 종래의 PCIe 소프트웨어 드라이버들은 PCIe 통신을 관리하기 위해 사용될 수 있다.
도 1은 본 발명의 실시 예에 따른 장치를 포함하는 섀시를 보여준다. 도 1에서, 섀시(chassis, 105)가 도시되었다. 어떠한 제한 없이, 섀시(105)는 데스크탑(desktop) 또는 랩탑(laptop) 컴퓨터, 서버(예를 들어, 독립 실행 형(standalone) 서버 또는 랙(rack) 서버), 또는 본 발명의 실시 예로부터의 이점을 가질 수 있는 어떠한 다른 장치도 포함하는 어떠한 바람직한 섀시도 될 수 있다. 또한, 섀시(105)는 특화된(specialized) 휴대용 컴퓨팅 장치들, 태블릿(tablet) 컴퓨터들, 스마트 폰들, 그리고 다른 컴퓨팅 장치들을 포함할 수 있다. 그리고, 기술된 본 발명의 실시 예들이 eSSD(ethernet Solid State Drive)들과 같은 스토리지 장치들을 지칭하지만, 본 발명의 실시 예들은 데이터 플레인들과 컨트롤 플레인들을 분리함으로써 얻어질 수 있는 이점을 갖는 어떠한 형태의 장치에도 적용될 수 있다.
섀시(105)의 특정 형태에도 불구하고, 섀시(105)는 프로세서(110), 메모리(115), EEPROM(Electrically Erasable Programmable Read-Only Memory, 120), 그리고 스토리지 장치(125)를 포함할 수 있다. 프로세서(110)는 어떠한 형태의 프로세서(예를 들어, Intel Xeon, Celeron, Itanium, Atom 프로세서, AMD Opteron 프로세서, ARM 프로세서 등)도 될 수 있다. 도 1이 단일 프로세서를 도시하고 있지만, 섀시(105)는 어떠한 수의 프로세서도 포함할 수 있다. 메모리(115)는 어떠한 형태의 메모리(예를 들어, 플래시 메모리, SRAM(Static Random Access Memory), PRAM(Persistent Random Access Memory), FRAM(Ferroelectric Random Access Memory), 또는 MRAM(Magnetoresistive Random Access Memory)와 같은 NVRAM(Non-Volatile Random Access Memory) 등)도 될 수 있다. 다만, 일반적으로, 메모리(115)는 DRAM일 수 있다. 또한, 메모리(115)는 다양한 메모리 타입들의 어떠한 바람직한 조합도 될 수 있다.
EEPROM(120)은 VPD(Vital, Product Data, 130)를 저장할 수 있다. VPD(130)는 스토리지 장치(125)가 스스로를 구성하기 위해 사용될 수 있는 데이터이다. 예를 들어, VPD(130)는 섀시(105)에 관한 정보 또는 스토리지 장치(125)와의 통신을 위해 사용될 전송 프로토콜에 관한 정보를 저장할 수 있다. 스토리지 장치(125)와의 통신에 사용될 전송 프로토콜들은 예컨대, 몇 개의 예를 들자면, 이더넷(Ethernet), Fibre Channel, InfiniBand 또는 NVMe를 포함할 수 있다. VPD(130)는 또한 사용되는 전송 서브 프로토콜들에 관한 정보를 포함할 수 있다. 예를 들어, 만일 VPD(130)가 이더넷 전송 프로토콜이 사용될 것으로 지정하면, VPD(130)는 다른 가능성 있는 것들 중에서 RoCE(Remote Direct Memory Access (RDMA) over Converged Ethernet) 또는 iWarp 중 어느 것이 사용될 지를 저장할 수 있다.
도 1은 VPD(130)가 EEPROM(120)에 저장된 것을 보여주고 있으나, 본 발명의 실시 예들은 임의의 다른 대체 저장 매체들을 사용하는 것을 지원할 수 있다. 예를 들어, EEPROM(120)은 몇 가지 예로, EPROM(Erasable Programmable Read Only Memory) 또는 플래시 메모리로 대체될 수 있다.
스토리지 장치(125)는 어떠한 다양한 스토리지 장치도 될 수 있다. 이러한 장치들의 예는 SSD(Solid State Drive)들을 포함할 수 있다. 다만, 하드 디스크 드라이버(hard disk drive)들 또는 다른 장기(long-term) 스토리지 장치들과 같은 다른 스토리지 형태들 또한 가능하다. 게다가, 메모리(115)와 스토리지 장치(125)는 조합될 수 있다. 즉, 본 발명의 실시 예들은 단기(short-term) 스토리지와 장기 스토리지의 개념들 사이에서 구분하지 않을 수 있다. 다만, 본 발명의 실시 예들은 둘 모두를 단일 폼 펙터(form factor) 내에서 관리할 수 있다. 또한, 스토리지 장치(125)는 본 발명의 실시 예들로부터 얻을 수 이점을 가질 수 있는 어떠한 장치에도 일반화될 수 있다. 스토리지 장치(125)의 사용은 단지 기술된 목적들을 위해 단순화된 것이다.
도 2는 도 1의 섀시를 추가적으로 상세히 보여준다. 도 2를 참조하면, 일반적으로 섀시(105)는 하나 이상의 프로세서들(110)을 포함한다. 프로세서들(110)은 컨트롤러(205) 및 클록(210)을 포함하며, 섀시(105)의 부품들의 동작들을 조정하기 위해 사용된다. 프로세서들(110)은 예컨대 RAM(Random Access Memory), ROM(Read-Only Memory), 또는 다른 상태 보존 매체를 포함하는 메모리(115)와 연결될 수 있다. 또한, 프로세서들(110)은 스토리지 장치들(125) 및 네트워크 커넥터(215)(예컨대, 이더넷 커넥터 또는 무선 커넥터)와 연결될 수 있다. 또한, 프로세서들(110)은, 다른 구성 요소들 중에서 입/출력 엔진(230)을 사용하여 관리될 수 있는 입/출력 인터페이스 포트들 및 유저 인터페이스(225)와 연결될 수 있는 버스(220)와 연결될 수 있다.
도 3 및 도 4는 NVMe 또는 NVMeoF 모드에서 동작하는 도 1의 장치(125)를 보여준다. 도 3에서, 스토리지 장치(125)는 U.2 커넥터(305), PCIe Gen3 X4 칩(310), 스토리지(315), 섀시 타입 회로(320), 그리고 모드 구성 회로(325)를 포함하는 것으로 도시되었다. U.2 커넥터(305)는 스토리지 장치(125)와 같은 장치들 상에서 사용될 수 있는 특정한 종류의 커넥터이다. PCIe, SAS, 그리고 SATA(Serial AT Attachment) 빌트인(built in)에 대한 지원과 함께, U.2 커넥터(305)는 다수의 다양한 인터페이스들을 지원할 수 있다. 도 3 및 도 4가 U.2 커넥터(305)의 사용을 보여주지만, U.2 커넥터(305)는 대체 커넥터들로 대체될 수 있는데, 대체 커넥터들이 본 발명의 실시 예들과 일치하는 방법으로 통신들을 지원할 수 있으면 대체 가능하다. U.2 커넥터(305)가 PCIe 통신의 4 개의 레인들을 지원하고 SAS와 같은 대체 통신 채널들을 지원하는 것 같이, U.2 커넥터(305)의 사용은 다른 커넥터들에 비하여 몇몇 이점들을 갖는다.
PCIe Gen3 X4 칩(310)은 PCIe 버스를 통해 PCIe 통신들을 관리하는 칩이다. 유사 칩이 커넥터에 의해 제공되는 통신 방법들과 호환될 필요가 있음에도 불구하고, PCIe Gen3 X4 칩(310)은 통신들을 관리할 수 있는 어떠한 유사 칩들과도 대체될 수 있고, PCIe 버스를 이용하는 것에 제한되지 않는다. 예를 들어, PCIe 통신들을 관리하지 않는 칩은 U.2 커넥터(305)와 함께 작동하지 않을 수 있다. U.2 커넥터(305) 및 PCI Gen3 X4 칩(310)의 조합이 U.2 커넥터(305)를 통해 사용 가능한 PCIe 버스의 4 개의 레인들의 모든 장점을 가질 수 있다는 점에서, 해당 조합은 이점을 갖는다.
스토리지(315)는 어떠한 바람직한 스토리지 포멧(format)도 될 수 있다. 예를 들어, 다른 가능한 예들 중에, 스토리지(315)는 플래시 메모리일 수 있고, 또는 스토리지(315)는 하드 디스크 드라이브일 수 있다. 본 발명의 실시 예들은 특정 스토리지 포멧에 제한되지 않는다. 물론, 스토리지 장치(125)가 몇몇 다른 타입의 장치로 대체된다면, 스토리지(315)는 다른 타입의 장치에 적합한 몇몇 다른 기능으로 대체될 수 있다.
섀시 타입 회로(320)는 도 1의 섀시(105)에게 도 1의 섀시(105)의 타입을 판단하도록 문의할 수 있다. 본 발명의 일 실시 예에서, 도 1의 섀시(105)는 HA 섀시이거나 HA 섀시가 아닐 수 있고, 도 1의 섀시(105)는 스토리지 장치(125)와 같은 장치들과 통신하기 위해 NVMe 프로토콜 또는 NVMeoF 프로토콜을 이용할 수 있다. 따라서, 이러한 본 발명의 실시 예에서, 도 1의 섀시(105)는 네 개의 다른 타입들 중 어떠한 것도 될 수 있다. 본 발명의 다른 실시 예들은 또한 도 1의 섀시(105)에 대한 다른 가능한 타입들을 고려할 수 있다.
섀시 타입 회로(320)는 모든 바람직한 방법으로 이러한 문의를 수행할 수 있다. 본 발명의 일 실시 예에서, 섀시 타입 회로(320)는 도 1의 VPD(130)로부터 정보를 읽어올 수 있다. 도 1의 VPD(130)는 도 1의 섀시(105)의 타입을 지정할 수 있다. 본 발명의 다른 실시 예에서, 섀시 타입 회로(320)는 U.2 커넥터(305)의 하나 이상의 핀들 상의 신호에 액세스할 수 있다. 이러한 신호는 도 1의 섀시(105)의 타입을 지정할 수 있다. 예를 들어, 하나의 핀(예를 들어, U.2 커넥터(305)의 E25 핀(DualPort En#)) 상의 로우(low) 신호는 도 1의 섀시(105)가 HA 섀시인 것을 식별할 수 있다. 여기서, 해당 핀 상의 하이(high) 신호는 도 1의 섀시(105)가 HA 섀시가 아니라는 것을 식별할 수 있다. 제 2 핀 상의 신호들은 도 1의 섀시(105)가 NVMe 프로토콜 또는 NVMeoF 프로토콜을 사용하는지 여부를 지정하기 위해 병렬로 이용될 수 있다. 예를 들어, 이러한 핀들은 달리 사용되지 않는, U.2 커넥터(305)의 GPIO(General Purpose Input/Output) 핀들일 수 있다. 또한, 이러한 핀들은 U.2 커넥터(305) 내의 핀이 아닐 수 있고, 다만 이러한 핀들은 도 1의 섀시(105) 내의 어딘가에 위치할 수 있다. 스토리지 장치(125)가 핀들 상의 신호들을 읽어올 수 있는 한, 핀들의 위치는 중요하지 않다. 본 발명의 다른 실시 예들은 다른 방법들로 도 1의 섀시(105)의 타입을 판단하는 섀시 타입 회로(320)를 포함할 수 있다.
본 발명의 몇몇 실시 예에서, 스토리지 장치(125)는 기존 섀시(legacy chassis) 내에 위치할 수 있다. 즉, 기존 섀시는 스토리지 장치(125)에 직접 혹은 간접적으로 섀시의 타입을 스토리지 장치(125)에 알리도록 디자인되지 않은 섀시이다. 섀시 타입 회로(320)가 도 1의 섀시(105)의 타입을 판단하지 않는 경우, 섀시 타입 회로(320)는 특정 모드로 기본 값(default)이 설정된다. 예를 들어, 기본 값인 특정 모드는 NVMe 프로토콜을 사용하도록 스토리지 장치(125)를 구성하고 도 1의 섀시(105)가 HA 섀시가 아니라는 것을 가정할 수 있다.
섀시 타입 회로(320)가 섀시(105)의 타입을 일단 판단 하면, 모드 구성 회로(325)는 적합한 프로토콜들을 사용하고 필요 없는 프로토콜들을 비활성화하도록 스토리지 장치(125)를 구성할 수 있다. 예를 들어, 섀시 타입 회로(320)가 섀시(105)가 NVMe 섀시인 것을 나타내는 경우, 모드 구성 회로(325)는 NVMe 프로토콜을 사용하도록 스토리지 장치(125)를 구성할 수 있다.
본 발명의 일 실시 예에서, NVMe 프로토콜을 사용하는 것은 U.2 커넥터(305)의 PCIe 레인들이 데이터 플레인과 컨트롤 플레인 모두에서 사용된다는 것을 의미한다. 도 1의 섀시(105)가 HA 섀시라면, 모드 구성 회로(325)는 PCIe 레인들을 두 개의 세트들로 분할할 수 있다. 하나의 세트는 하나의 호스트와 통신하기 위해 사용되고, 다른 하나의 세트는 다른 호스트와 통신하기 위해 사용된다. 예를 들어, PCIe X2(330)에 도시된 레인 0과 레인 1은 제 1 호스트와 통신하기 위해 할당될 수 있고, PCIe X2(335)에 도시된 레인 2와 레인 3은 제 2 호스트와 통신하기 위해 할당될 수 있다. NVMe 프로토콜이 이더넷을 사용하지 않기 때문에, 모드 구성 회로(325)는 U.2 커넥터(325) 상의 이더넷 포트들을 “비활성화(enable)”할 수 있다. 도 1의 섀시(105)가 HA 섀시가 아닌 경우, 모드 구성 회로(325)는 데이터 플레인과 컨트롤 플레인에 대해 네 개의 PCIe 레인들을 모두 사용하거나, 또는 (다른 두 개의 PCIe 레인들이 다른 호스트와의 통신을 위해 예약된 것처럼) 단지 두 개의 PCIe 레인들을 사용할 수 있다. 좀 더 일반적으로, 본 발명의 실시 예들은 임의의 수의 호스트들과도 통신하기 위해 임의의 수의 레인들도 사용하는 것을 지원한다. 예를 들어, 주어진 수의 레인들(U.2 커넥터(305)와 같이, 4개 이상일 수 있는)을 지원하는 커넥터가 사용되면, 이러한 레인들은 원하는 어떠한 할당으로도 다양한 호스트들과 통신하기 위해 이용될 수 있다. 예를 들어, 모든 레인들은 non-HA 섀시 내에서 단일 호스트로 할당될 수 있고, 또는 레인들이 균등하거나 균등하지 않게 다양한 호스트들과 통신하기 위해 할당될 수 있다. 게다가, 모든 레인들은 할당될 수 있고, 또는 오직 사용 가능한 레인들 중 서브셋 만이 할당될 수 있다.
본 발명의 다른 실시 예에서, NVMeoF 프로토콜을 사용하는 것은 U.2 커넥터(305)의 PCIe 레인들이 오직 컨트롤 플레인에 대해 사용된다는 것을 의미한다. 이더넷 포트들은 데이터 플레인에 대해 사용된다. 도 1의 섀시(105)가 HA 섀시인 경우, 모드 구성 회로(325)는 PCIe 레인들을 두 개의 세트로 분할할 수 있다. 하나의 세트는 하나의 호스트와 통신하기 위해 사용되고, 다른 하나의 세트는 다른 호스트와 통신하기 위해 사용된다. 예를 들어, PCIe X2(330)에 도시된 레인 0과 레인 1은 제 1 호스트와 통신하기 위해 할당될 수 있고, PCIe X2(335)에 도시된 레인 2와 레인 3은 제 2 호스트와 통신하기 위해 할당될 수 있다. 다만, 데이터는, 예컨대 U.2 커넥터(305) 상의 SAS 핀들을 통해 형성될 수 있는, 이더넷 포트들을 통해 통신될 수 있다. 다른 이더넷 포트들이 다른 호스트들에 대해 다른 SAS 핀들 상에서 형성될 수 있다. 따라서, 이더넷 포트(405)는 제 1 호스트와 데이터를 통신하기 위해 사용될 수 있고, 이더넷 포트(410)는 제 2 호스트와 데이터를 통신하기 위해 사용될 수 있다. NVMeoF 프로토콜이 데이터 플레인에 대해 PCIe 레인들을 사용하지 않기 때문에, 비록 PCIe 레인들이 여전히 컨트롤 플레인에 대해 사용된다 해도, 모드 구성 회로(325)는 데이터에 대해 U.2 커넥터(305) 상의 PCIe 레인들을 “비활성화(disable)”할 수 있다. 도 1의 섀시(105)가 HA 섀시가 아니라면, 모드 구성 회로(325)는 컨트롤 플레인에 대해 네 개의 PCIe 레인들을 모두 사용하거나, 또는 (다른 두 개의 PCIe 레인들이 다른 호스트와 통신하기 위해 예약된 것처럼) 단지 두 개의 PCIe 레인들을 사용할 수 있다. 또한, 모드 구성 회로(325)는 하나의 호스트와 통신하기 위해 단지 하나의 이더넷 포트를 설정하거나 복수의 이더넷 포트를 설정할 수 있다. 그리고, 이론적으로 어떠한 수의 SAS 핀들도 임의의 이더넷 포트에도 할당될 수 있다.
모드 구성 회로(325)는 어떠한 바람직한 방법으로도 구현될 수 있다. 단순한 접근은 모드 구성 회로(325)가 역 다중화기(demultiplexer)로 구성된 것이다. 섀시 타입 회로(320)로부터 수신된 정보는 역 다중화기로의 컨트롤 신호일 수 있다. 그러면, 컨트롤 신호는 신호에 대한 특정 목적지(PCIe 레인들 또는 이더넷 포트들)를 선택하기 위해 이용될 수 있다. 좀 더 복잡한 접근은 NVMe 프로토콜 회로(340)와 NVMeoF 프로토콜 회로(415)를 모두 포함하고, 모드 구성 회로(325)를 이용하여 적합한 회로로 신호들이 향하도록 하는 것이 될 수 있다. 이러한 방법에서, 신호들이 U.2 커넥터(305)의 적합한 핀들로 전송되기 전에, 본 발명의 실시 예들은 신호들 상의 어떠한 중개(intermediary) 프로세싱도 지원할 수 있다.
일반적으로, 장치가 도 1의 섀시(105)에 플러그 인(plug in)되는 때에 핫 플러깅(hot plugging)을 지원하는 본 발명의 실시 예들이 도 1의 섀시(105)의 타입을 판단할 수 있음에도 불구하고, 섀시 타입 회로(320)는 부트 업(boot up) 시에 도 1의 섀시(105)의 타입을 판단한다. 즉, 스토리지 장치(125)가 파워 업될 때, 섀시 타입 회로(320)는 도 1의 섀시(105)의 타입을 판단하고, 모드 구성 회로(325)는 스토리지 장치(125)를 구성한다. 그러면, 스토리지 장치(125) 장치가 파워 다운되거나 리부트(reboot)될 때까지, 스토리지 장치(125)는 그것의 구성을 유지한다. 다만, 본 발명의 몇몇 실시 예들에서, 도 1의 섀시(105)가 그것의 구성을 변경한다면, 섀시 타입 회로(320)는 이러한 점(fact)을 판단할 수 있다. 예를 들어, U.2 커넥터(305) 내의 핀들 상의 신호들 내의 변화를 센싱하거나, 주기적으로 도 1의 VPD(130)를 확인하거나, 신호나 도 1의 VPD(130) 내의 변화를 확인하기 위해 도 1의 섀시(105)의 일부 구성(예를 들어, BMC)로부터 신호를 수신함에 의해, 이러한 점을 판단할 수 있다. 그러면, 섀시 타입 회로(320)는 모드 구성 회로(325)가 스토리지 장치(125)의 모드를 변화하도록 신호를 보낸다. 이것은 새로운 모드가 효과를 발휘하기 위해 저장 장치 (125)를 재부팅하는 것을 포함 할 수 있다.
도 4에서, 추가적인 구성 요소들이 도시되었다. 구체적으로, 이더넷(420), IP(Internet Protocol, 425), TCP(Transmission Control Protocol, 430), 그리고 RDMA(Remote Direct Memory Access, 435)가 도시되었다. 이더넷(420), IP(425), TCP(430), RDMA(435), 그리고 NVMeoF 프로토콜(415)은 함께 페브릭(fabric)-부착형 엔진을 구성한다. 이러한 구성 요소들은 적합한 구현에 따라 대체되거나 보충될 수 있다. 예를 들어, 이더넷 이외의 다른 프로토콜들(예를 들어, InfiniBand 또는 Fibre Channel)을 지원하는 것이 바람직한 경우, 추가적인 소프트웨어가 페브릭-부착형 엔진 내의 이더넷(420)을 대신하거나 이에 추가되어 사용될 수 있다.
도 5는 HA 섀시 내에서 두 개의 호스트와 통신하는 도 1의 장치를 보여준다. 도 5에서, 스토리지 장치(125), PCIe X2 레인들(330, 335), 그리고 이더넷 포트들(405, 410)이 도시되었다. 이러한 데이터 플레인 및 컨트롤 플레인은 미드 플레인(505)과 통신할 수 있다. 그러면, 미드 플레인(505)은 데이터를 적합한 호스트로 향하게 할 수 있다. 따라서, 호스트(510)는 PCIe X2 레인들(330)과 이더넷 포트들(405)로부터의 통신들을 수신할 수 있다. 반면, 호스트(515)는 PCIe X2 레인들(335)과 이더넷 포트들(410)로부터의 통신들을 수신할 수 있다.
도 5는 HA 섀시 내의 두 개의 호스트들과 통신하기 위해 도 4의 NVMeoF 프로토콜(415)을 사용하는 스토리지 장치(125)를 보여준다. 스토리지 장치(125)가 NVMeoF 프로토콜(415) 대신에 NVMe 프로토콜(340)을 사용하였다면, 이더넷 포트들(405, 410)은 도시되지 않았을 것이다. 그리고, 만약 섀시가 HA 섀시가 아니라면, 비록 PCIe 레인들(335)과 이더넷 포트들(410)과 같은 통신 채널들이 호스트(510)에 추가적인 통신 채널을 제공하기 위해 사용될 수 있다고 해도, PCIe 레인들(335)과 이더넷 포트들(410)은 비활성화 되거나, 도면에 도시되지 않았을 것이다.
셀프 구성되고 복수의 모드들을 지원할 수 있는 것 외에, 도 1 내지 도 5의 스토리지 장치(125)는 또한 가치 있는 정보를 시스템에 전송할 수 있다. 예를 들어, 스토리지 장치(125)는 그것의 건강 상태, FRU(Field-Replaceable Unit) 정보, 센서 정보, 및/또는 디스커버리 서비스들에 대한 정보를 전송할 수 있다. 예를 들어, 스토리지 장치(125)는 그것의 건강 상태에 대한 정보(예를 들어, 얼마나 효율적으로 스토리지 장치(125)가 동작하는지 등)를 리포트할 수 있다. 이러한 정보는 스토리지 장치(125)에 걸쳐 글로벌(global)할 수 있고, 또는 좀 더 집중될 수 있다. 예를 들어, 도 3 및 도 4의 스토리지 장치(125)의 스토리지(315)의 특정 영역에 대해, 스토리지 장치(125)는 스토리지(315)가 단지 “17.3% OK”라는 것을 리포트할 수 있다. FRU 정보는 모든 특정 FRU의 상태에 대해 도 1의 섀시(105)로 알릴 수 있다. 예를 들어, FRU는 도 1의 EEPROM(120), 스위치 보드, 메모리 모듈, 프로세서, BMC, 또는 어떠한 다른 FRU도 될 수 있다. 센서 정보는 예를 들어, 스토리지 장치(125) 내의 온도 센서에 대한 정보를 포함할 수 있다. 그러면, BMC는 온도 센서에 대한 정보를 이용하여 도 1의 섀시(105) 내의 쿨링(cooling)을 조정할 수 있다. 디스커버리 서비스들은, 모든 목적을 위해 본 명세서에서 참고 문헌으로 인용된, 미국 임시 특허 출원 번호 US 62/394,726(2016년 9월 14일 출원)과 이를 우선권 주장하고 있는 미국 특허 출원 번호 US 15/345,507(2016년 11월 7일 출원)에 기술된 것들을 포함한다.
또한, 스토리지 장치(125)는 펌웨어 업데이트들을 지원할 수 있다. 본 발명의 실시 예들에서, 섀시(105)(또는, 스토리지 장치(125)가 통신할 수 있는 다른 섀시) 내의 BMC는 업데이트된 펌웨어를 수신하거나 다운로드할 수 있다. 그러면, BMC는, 스토리지 장치(125)와 통신하고, 펌웨어 업데이트가 스토리지 장치(125)와 호환되는지를 검증하고, 그리고 펌웨어 업데이트를 이용하여 스토리지 장치(125) 내의 펌웨어를 업그레이드할 수 있다. 이러한 펌웨어 업데이트는 백그라운드(background) 프로세스로서 실행될 수 있다. 특히, 스토리지 장치(125)가 도 4의 NVMeoF 프로토콜(415)을 이용하여 동작 중인 경우, 이러한 펌웨어 업데이트는 컨트롤 플레인을 이용하여 수행될 수 있다. 이에 따라, 스토리지 장치(125) 상의 데이터를 이용하는 어플리케이션들에 대한 어떠한 딜레이들(delays)도 방지된다.
도 6은 본 발명의 실시 예에 따른 도 1의 장치(125)가 셀프-구성(self-configure)하기 위한 절차를 예시적으로 보여주는 순서도이다. 도 6에서, S605에서, 도 1의 스토리지 장치(125)는 도 1의 섀시(105)의 타입을 판단할 수 있다. 본 발명의 몇몇 실시 예들에서, 섀시(105)의 타입을 판단하는 것은 도 1의 섀시(105)가 HA 섀시인지 여부를 판단하는 것, 및/또는 도 1의 섀시(105)가 통신을 위해 도 3의 NVMe 프로토콜(340)이나 도 4의 NVMeoF 프로토콜(415)을 사용하는지 여부를 판단하는 것을 포함할 수 있다. 다른 가능한 예들 중에서, S610에 도시된 바와 같이, 이러한 판단은 도 1의 VPD(130)로부터 도 1의 섀시(105)의 타입을 읽어옴으로써 수행될 수 있다. 또는, S615에서 도시된 바와 같이, 이러한 판단은 도 3의 U.2 커넥터(305)로부터 하나 이상의 핀들(예를 들어, GPIO 핀들)로부터의 신호에 액세스함에 의해 수행될 수 있다. 결과적으로, S620에서, 도 1의 스토리지 장치(125)는 셀프-구성할 수 있다. 이러한 과정의 예는 이하의 도 7a 및 도 7b에서 좀 더 자세히 도시된다.
도 7a 및 도 7b는 본 발명의 실시 예에 따른 도 3의 NVMe 프로토콜(340) 또는 도 4의 NVMeoF 프로토콜(410), 그리고 HA 섀시 또는 non-HA 섀시에 대해 도 1의 장치(125)가 셀프-구성하기 위한 절차를 예시적으로 보여주는 순서도이다. 도 7a에서, S705에서, 도 1의 스토리지 장치(125)는 도 1의 섀시(105)가 HA 섀시인지 여부를 판단할 수 있다. HA 섀시인 경우, S710에서, 도 1의 스토리지 장치(125)는 스토리지 장치(125)가 HA 스토리지 장치인지 여부를 판단할 수 있다. 도 1의 섀시(105)가 HA 섀시이지만 도 1의 스토리지 장치(125)가 HA 스토리지 장치가 아닌 경우, S715에서, 도 1의 스토리지 장치(125)는 경고를 리포트할 수 있다. 이는 단일 포트 장치가 듀얼 포트 섀시 내에서 올바르게 동작하지 못할 수 있기 때문이다. 이후, 프로세싱은 종료된다.
반면에, 도 1의 스토리지 장치(125)가 도 1의 섀시(105) 내에서 동작하는 경우, S720에서, 도 1의 스토리지 장치(125)는 도 1의 섀시(105)의 타입을 판단할 수 있다. 도 7a 및 도 7b에 도시된 본 발명의 실시 예에서, 섀시의 타입은 도 3의 NVMe 프로토콜(340)이나 도 4의 NVMeoF 프로토콜(415)이다. 도 1의 섀시(105)의 타입이 판단되지 않은 경우(예를 들어, 도 1의 섀시(105)가 이러한 정보를 제공하지 않는 기존 섀시인 경우), 도 3의 NVMe 프로토콜(340)이 가정된다.
도 1의 섀시(105)가 도 4의 NVMeoF 프로토콜(415)을 사용하는 경우, 도 7b의 S725에서, 도 1의 스토리지 장치(125)는 하나의 호스트와의 통신을 위해 컨트롤 플레인으로서 두 개(또는, 그 이상)의 PCIe 레인들을 활성화할 수 있다. 그리고 S730에서, 도 1의 스토리지 장치(125)는 해당 하나의 호스트와 통신하기 위해 데이터 플레인으로서 하나 이상의 이더넷 포트들을 활성화할 수 있다. S735에서, 예컨대 도 1의 섀시(105)가 HA 섀시인 경우, 도 1의 스토리지 장치(125)는 제 2 호스트와 통신하기 위해 컨트롤 플레인으로서 두 개(또는, 그 이상)의 추가적인 PCIe 레인들을 활성화할 수 있다. 그리고, S740에서, 도 1의 스토리지 장치(125)는 해당 제 2 호스트와의 통신을 위해 데이터 플레인으로서 하나 이상의 추가적인 이더넷 포트들을 활성화할 수 있다. 예를 들어, 이더넷 포트들은 도 3의 U.2 커넥터(305) 상의 SAS 핀들을 통해 운용될 수 있다. 만약 도 1의 섀시(105)와 도 1의 스토리지 장치(125)가 HA가 아닌 경우, 점선 화살표(745)로 도시된 바와 같이 S735와 S740은 생략될 수 있다. 최종적으로, S750에서, 도 1의 스토리지 장치(125)는 도 1의 스토리지 장치(125) 상의 데이터 플레인으로서의 PCIe 버스 상의 레인들의 사용을 (활성화 하지 않음으로써) “비활성화(disable)”할 수 있다.
반면에, 도 1의 섀시(105)가 도 3의 NVMe 프로토콜(340)을 사용하는 경우, S755에서, 도 1의 스토리지 장치(125)는 하나의 호스트에 데이터 플레인과 컨트롤 플레인을 모두 사용하기 위해 PCIe 버스의 두 개(또는, 그 이상)의 레인들을 활성화할 수 있다. S760에서, 예컨대 도 1의 섀시(105)가 HA 섀시인 경우, 도 1의 스토리지 장치(125)는 제 2 호스트에 데이터 플레인과 컨트롤 플레인을 모두 사용하기 위해 PCIe 버스의 두 개(또는, 그 이상)의 레인들을 활성화할 수 있다. 만약 도 1의 섀시(105)와 도 1의 스토리지 장치(125)가 HA가 아닌 경우, 점선 화살표(765)로 도시된 바와 같이 S760은 생략될 수 있다. 최종적으로, S770에서, 도 1의 스토리지 장치(125)는 도 1의 스토리지 장치(125) 상의 모든 이더넷 포트들을 (활성화 하지 않음으로써) “비활성화(disable)”할 수 있다.
도 6, 도 7a, 도 7b에서, 본 발명의 일부 실시 예들이 도시되었다. 하지만, 블록(혹은 step)들의 순서를 변경하고, 블록들을 생략하거나, 도면들에 도시되지 않는 링크들을 포함함으로써, 당업자는 본 발명의 다른 실시 예들 역시 가능하다는 것을 알 수 있을 것이다. 명시적으로 설명되었는지 여부와 관계 없이, 순서도들의 이러한 모든 변형들은 본 발명의 실시 예들로 간주된다.
아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 기계(혹은, 머신) 또는 기계들의 짧고 일반적인 설명을 제공하고자 한다. 기계 또는 기계들은 적어도 일부는 다른 기계로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 제어될 수 있다. 여기에서 사용되는 바와 같이, "기계(machine)"의 용어는 단일 기계, 가상 기계, 또는 기계들, 가상 기계들 또는 함께 동작하는 장치들과 통신하도록 결합된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 기계들은 예를 들어 자동차, 기차, 택시 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC(Application Specific Integrated Circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 결합들을 통해서와 같이 하나 또는 그보다 많은 원격 기계들에 대한 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, LAN (local area networks), WAN (wide area networks) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙력된 자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어들 및 무선 주파수(RF), 위성, 마이크로파, IEEE 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.
본 발명의 기술적 사상의 실시 예들은, 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 연관된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 스토리지 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송신호들 등의 형태로 전달되고, 압축된 또는 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 지역적 그리고/또는 원격으로 저장될 수 있다.
본 발명의 기술적 사상의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며 여기에 설명된 바와 같이 본 발명의 기술적 사상의 원소들을 수행하게 하는 명령들을 포함하는 실재하는 비임시 기계 독출 매체를 포함할 수 있다.
도시된 실시 예들을 참조하여 설명된 본 발명의 기술적 사상의 원칙들을 가지면, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고 필요한 임의의 방법으로 조합될 수 있음이 이해될 것이다. 앞선 설명이 구체적인 실시 예들에 집중하였지만, 다른 구성돌 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"과 같은 설명들 또는 여기에 사용된 유사한 것들에 불구하고, 이러한 문구들은 일반적으로 실시 예의 가능성들을 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 여기에 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.
앞서 설명된 실시 예들은 본 발명의 기술적 사상을 그것들로 한정하는 것으로 해석되지 않는다. 적은 실시 예들만이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 설명들 및 장점들로부터 실질적으로 멀어지지 않으면서 이러한 실시 예들에 많은 수정들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의되는 바와 같이 본 발명의 기술적 사상의 범위 내에 포함되는 것으로 의도된다.
발명의 개념의 실시 예들은 제한사항 없이 다음 진술들로 확장될 수 있다.
진술 1. 본 발명의 실시 예는 장치를 포함한다. 장치는:
상기 장치를 섀시와 연결하는 커넥터;
상기 장치를 포함하는 상기 섀시의 타입(type)을 판단하는 섀시 타입 회로; 그리고
상기 섀시의 상기 타입에 응답하여, 제 1 모드 또는 제 2 모드를 사용하도록 상기 장치를 구성하는 모드 구성 회로를 포함한다.
진술 2. 본 발명의 실시 예는 진술 1에 따른 장치를 포함하되,
상기 장치는 데이터에 대한 스토리지를 더 포함한다.
진술 3. 본 발명의 실시 예는 진술 1에 따른 장치를 포함하되,
상기 섀시 타입 회로는 EEPROM(Electrically Erasable Programmable Read-Only Memory) 내의 주소로부터 VPD(Vital Product Data)를 읽음으로써 상기 섀시의 상기 타입을 판단하도록 동작한다.
진술 4. 본 발명의 실시 예는 진술 1에 따른 장치를 포함하되,
상기 섀시 타입 회로는 상기 커넥터 상의 핀 상의 신호로부터 상기 섀시의 상기 타입을 판단하도록 동작한다.
진술 5. 본 발명의 실시 예는 진술 4에 따른 장치를 포함하되,
상기 커넥터 상의 상기 핀은 상기 커넥터 상의 GPIO(General Purpose Input/Output) 핀을 포함한다.
진술 6. 본 발명의 실시 예는 진술 1에 따른 장치를 포함하되,
상기 모드 구성 회로는, 상기 섀시 타입 회로가 상기 섀시의 상기 타입을 판단하지 못하는 경우, 상기 제 1 모드를 이용하도록 상기 장치를 구성하도록 동작한다.
진술 7. 본 발명의 실시 예는 진술 1에 따른 장치를 포함하되,
상기 제 1 모드는, 상기 장치와 상기 섀시 사이의 통신을 위한 NVMe(Non-Volatile Memory express) 프로토콜을 포함하고,
상기 제 2 모드는, 상기 장치와 상기 섀시 사이의 통신을 위한 NVMeoF(Non-Volatile Memory express over Fabric) 프로토콜을 포함한다.
진술 8. 본 발명의 실시 예는 진술 7에 따른 장치를 포함하되,
상기 NVMeoF 프로토콜은, 이더넷(Ethernet), InfiniBand, 그리고 Fibre 채널을 포함하는 세트로부터 추출된 프로토콜을 사용하여 상기 장치와 상기 섀시 사이의 데이터를 교환하기 위한 로직을 포함한다.
진술 9. 본 발명의 실시 예는 진술 7에 따른 장치를 포함하되,
상기 커넥터는 복수의 PCIe(Peripheral Component Interconnect express) 레인들 및 SAS(Serial Attached Small computer system interface) 핀들을 지원한다.
진술 10. 본 발명의 실시 예는 진술 9에 따른 장치를 포함하되,
상기 커넥터는 U.2 커넥터를 포함한다.
진술 11. 본 발명의 실시 예는 진술 9에 따른 장치를 포함하되,
상기 섀시의 상기 타입이 NVMe인 경우, 상기 모드 구성 회로는 상기 PCIe 레인들의 제 1의 두 개의 레인들을 제 1 호스트에 대한 제 1 데이터 플레인 및 제 1 컨트롤 플레인으로 이용하고, 상기 SAS 핀들을 통한 이더넷 포트의 사용을 비활성화하도록 동작한다.
진술 12. 본 발명의 실시 예는 진술 9에 따른 장치를 포함하되,
상기 섀시의 상기 타입이 NVMeoF인 경우, 상기 모드 구성 회로는 상기 PCIe 레인들의 제 1의 두 개의 레인들을 제 1 호스트에 대한 제 1 컨트롤 플레인으로 이용하고, SAS 핀들의 제 1 세트를 제 1 데이터 플레인에 대한 제 1 이더넷 포트로 사용하도록 동작한다.
진술 13. 본 발명의 실시 예는 진술 9에 따른 장치를 포함하되,
상기 섀시 타입 회로는, 상기 섀시의 상기 타입이 HA(High Availability) 섀시인지 여부를 판단하도록 동작한다.
진술 14. 본 발명의 실시 예는 진술 13에 따른 장치를 포함하되,
상기 섀시의 상기 타입이 NVMe인 경우, 상기 모드 구성 회로는 상기 PCIe 레인들의 제 2의 두 개의 레인들을 제 2 호스트에 대한 제 2 데이터 플레인 및 제 2 컨트롤 플레인으로 이용하고, 상기 SAS 핀들을 통한 이더넷 포트의 사용을 비활성화하도록 동작한다.
진술 15. 본 발명의 실시 예는 진술 13에 따른 장치를 포함하되,
상기 섀시의 상기 타입이 NVMeoF인 경우, 상기 모드 구성 회로는 상기 PCIe 레인들의 제 2의 두 개의 레인들을 제 2 호스트에 대한 제 2 컨트롤 플레인으로 이용하고, SAS 핀들의 제 2 세트를 제 2 데이터 플레인에 대한 제 2 이더넷 포트로 사용하도록 동작한다.
진술 16. 본 발명의 실시 예는 방법을 포함하되, 상기 방법은:
장치가 설치된 섀시의 타입을 판단하는 단계; 그리고
상기 섀시의 상기 타입에 따라, 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계를 포함한다.
진술 17. 본 발명의 실시 예는 진술 16에 따른 방법을 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 EEPROM 내의 VPD로부터 상기 섀시의 상기 타입에 액세스하는 단계를 포함한다.
진술 18. 본 발명의 실시 예는 진술 16에 따른 방법을 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 장치와 연결된 커넥터 상의 핀으로부터의 신호에 액세스하는 단계를 포함한다.
진술 19. 본 발명의 실시 예는 진술 18에 따른 방법을 포함하되,
상기 장치와 연결된 커넥터 상의 핀으로부터의 신호에 액세스하는 단계는 상기 장치와 연결된 상기 커넥터 상의 GPIO(General Purpose Input/Output) 핀으로부터의 상기 신호에 액세스하는 단계를 포함한다.
진술 20. 본 발명의 실시 예는 진술 16에 따른 방법을 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 섀시의 상기 타입이 NVMe 섀시 또는 NVMeoF 섀시인지를 판단하는 단계를 포함한다.
진술 21. 본 발명의 실시 예는 진술 20에 따른 방법을 포함하되,
상기 섀시의 상기 타입이 NVMe 섀시 또는 NVMeoF 섀시인지를 판단하는 단계는, 상기 장치가 상기 섀시의 상기 타입을 판단하지 못하는 경우, 상기 섀시의 상기 타입을 상기 NVMe 섀시인 것으로 기본 값 설정하는 단계를 포함한다.
진술 22. 본 발명의 실시 예는 진술 20에 따른 방법을 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 상기 NVMe 섀시인 경우,
상기 PCIe 버스 내의 두 개의 레인들을 제 1 호스트에 대해 제 1 데이터 플레인 및 제 1 컨트롤 플레인으로 이용하도록 상기 장치를 활성화하고, 상기 장치가 상기 제 1 호스트에 대한 상기 장치 상의 이더넷 포트를 사용하지 못하도록 비활성화하는 단계를 포함한다.
진술 23. 본 발명의 실시 예는 진술 22에 따른 방법을 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 섀시의 상기 타입이 HA 섀시인지 여부를 판단하는 단계를 더 포함하고,
상기 방법은 상기 장치가 HA 장치인지 여부를 판단하는 단계를 더 포함한다.
진술 24. 본 발명의 실시 예는 진술 23에 따른 방법을 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 상기 HA 섀시이고 상기 장치가 HA 장치인 경우,
PCIe 버스 내의 제 2의 두 개의 레인들을 제 2 호스트에 대한 제 2 데이터 플레인 및 제 2 컨트롤 플레인으로 활성화하는 단계를 포함한다.
진술 25. 본 발명의 실시 예는 진술 23에 따른 방법을 포함하되,
상기 방법은, 상기 섀시의 상기 타입이 HA 섀시이고 상기 장치가 HA 장치가 아닌 경우, 경고를 리포팅하는 단계를 더 포함한다.
진술 26. 본 발명의 실시 예는 진술 20에 따른 방법을 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 상기 NVMeoF 섀시인 경우,
PCIe 버스 내의 제 1의 두 개의 레인들을 제 1 호스트에 대한 제 1 컨트롤 플레인으로 활성화하는 단계;
상기 장치 상의 제 1 이더넷 포트를 상기 제 1 호스트에 대한 제 1 데이터 플레인으로 활성화하는 단계; 그리고
상기 제 1 호스트에 대한 상기 제 1 데이터 플레인으로서의 상기 PCIe 버스 내의 상기 레인들을 비활성화하는 단계를 포함한다.
진술 27. 본 발명의 실시 예는 진술 26에 따른 방법을 포함하되,
상기 장치 상의 제 1 이더넷 포트를 상기 제 1 호스트에 대한 제 1 데이터 플레인으로 활성화하는 단계는 상기 장치와 연결된 커넥터 상의 SAS 핀들의 제 1 쌍을 상기 제 1 이더넷 포트로서 사용하는 단계를 포함한다.
진술 28. 본 발명의 실시 예는 진술 26에 따른 방법을 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 섀시의 상기 타입이 HA 섀시인지 여부를 판단하는 단계를 포함하고,
상기 방법은 상기 장치가 HA 장치인지 여부를 판단하는 단계를 더 포함한다.
진술 29. 본 발명의 실시 예는 진술 28에 따른 방법을 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 HA 섀시이고 상기 장치가 HA 장치인 경우,
PCIe 버스 내의 제 2의 두 개의 레인들을 제 2 호스트에 대한 제 2 컨트롤 플레인으로 활성화하는 단계; 그리고
상기 장치 상의 제 2 이더넷 포트를 상기 제 2 호스트에 대한 제 2 데이터 플레인으로 활성화하는 단계를 포함한다.
진술 30. 본 발명의 실시 예는 진술 29에 따른 방법을 포함하되,
상기 장치 상의 제 2 이더넷 포트를 상기 제 2 호스트에 대한 제 2 데이터 플레인으로 활성화하는 단계는, 상기 장치와 연결된 커넥터 상의 SAS 핀들의 제 2 쌍을 상기 제 2 이더넷 포트로서 사용하는 단계를 포함한다.
진술 31. 본 발명의 실시 예는 진술 28에 따른 방법을 포함하되,
상기 방법은 상기 섀시의 상기 타입이 HA 섀시이고 상기 장치가 HA 장치가 아닌 경우, 경고를 리포팅하는 단계를 더 포함한다.
진술 32. 본 발명의 실시 예는 논 트랜지토리(Non-Transitory) 명령들을 저장하는 유형의 스토리지 매체(tangible storage medium)를 포함하는 장치에 있어,
상기 논 트랜지토리 명령들은 머신에 의해 실행될 때:
장치가 설치된 섀시의 타입을 판단하는 단계; 그리고
상기 섀시의 상기 타입에 따라, 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계를 수행한다.
진술 33. 본 발명의 실시 예는 진술 32에 따른 장치를 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 EEPROM 내의 VPD로부터 상기 섀시의 상기 타입에 액세스하는 단계를 포함한다.
진술 34. 본 발명의 실시 예는 진술 32에 따른 장치를 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 장치와 연결된 커넥터 상의 핀으로부터의 신호에 액세스하는 단계를 포함한다.
진술 35. 본 발명의 실시 예는 진술 34에 따른 장치를 포함하되,
상기 장치와 연결된 커넥터 상의 핀으로부터의 신호에 액세스하는 단계는 상기 장치와 연결된 상기 커넥터 상의 GPIO 핀으로부터의 상기 신호에 액세스하는 단계를 포함한다.
진술 36. 본 발명의 실시 예는 진술 32에 따른 장치를 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 섀시의 상기 타입이 NVMe 섀시 또는 NVMeoF 섀시인지를 판단하는 단계를 포함한다.
진술 37. 본 발명의 실시 예는 진술 36에 따른 장치를 포함하되,
상기 섀시의 상기 타입이 NVMe 섀시 또는 NVMeoF 섀시인지를 판단하는 단계는, 상기 장치가 상기 섀시의 상기 타입을 판단하지 못하는 경우, 상기 섀시의 상기 타입을 상기 NVMe 섀시인 것으로 기본 값 설정하는 단계를 포함한다.
진술 38. 본 발명의 실시 예는 진술 36에 따른 장치를 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 상기 NVMe 섀시인 경우,
상기 PCIe 버스 내의 두 개의 레인들을 제 1 호스트에 대해 제 1 데이터 플레인 및 제 1 컨트롤 플레인으로 이용하도록 상기 장치를 활성화하고, 상기 장치가 상기 제 1 호스트에 대한 상기 장치 상의 이더넷 포트를 사용하지 못하도록 비활성화하는 단계를 포함한다.
진술 39. 본 발명의 실시 예는 진술 38에 따른 장치를 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 섀시의 상기 타입이 HA 섀시인지 여부를 판단하는 단계를 더 포함하고,
상기 논 트랜지토리 명령들은 머신에 의해 실행될 때: 상기 장치가 HA 장치인지 여부를 판단하는 단계를 더 수행한다.
진술 40. 본 발명의 실시 예는 진술 39에 따른 장치를 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 상기 HA 섀시이고 상기 장치가 HA 장치인 경우,
PCIe 버스 내의 제 2의 두 개의 레인들을 제 2 호스트에 대한 제 2 데이터 플레인 및 제 2 컨트롤 플레인으로 활성화하는 단계를 포함한다.
진술 41. 본 발명의 실시 예는 진술 39에 따른 장치를 포함하되,
상기 논 트랜지토리 명령들은 머신에 의해 실행될 때:
상기 섀시의 상기 타입이 HA 섀시이고 상기 장치가 HA 장치가 아닌 경우, 경고를 리포팅하는 단계를 더 수행한다.
진술 42. 본 발명의 실시 예는 진술 36에 따른 장치를 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 상기 NVMeoF 섀시인 경우,
PCIe 버스 내의 제 1의 두 개의 레인들을 제 1 호스트에 대한 제 1 컨트롤 플레인으로 활성화하는 단계;
상기 장치 상의 제 1 이더넷 포트를 상기 제 1 호스트에 대한 제 1 데이터 플레인으로 활성화하는 단계; 그리고
상기 제 1 호스트에 대한 상기 제 1 데이터 플레인으로서의 상기 PCIe 버스 내의 상기 레인들을 비활성화하는 단계를 포함한다.
진술 43. 본 발명의 실시 예는 진술 42에 따른 장치를 포함하되,
상기 장치 상의 제 1 이더넷 포트를 상기 제 1 호스트에 대한 제 1 데이터 플레인으로 활성화하는 단계는 상기 장치와 연결된 커넥터 상의 SAS 핀들의 제 1 쌍을 상기 제 1 이더넷 포트로서 사용하는 단계를 포함한다.
진술 44. 본 발명의 실시 예는 진술 42에 따른 장치를 포함하되,
상기 장치가 설치된 섀시의 타입을 판단하는 단계는 상기 섀시의 상기 타입이 HA 섀시인지 여부를 판단하는 단계를 포함하고,
상기 논 트랜지토리 명령들은 머신에 의해 실행될 때: 상기 장치가 HA 장치인지 여부를 판단하는 단계를 더 수행한다.
진술 45. 본 발명의 실시 예는 진술 44에 따른 장치를 포함하되,
상기 섀시의 상기 타입에 따라, 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계는, 만약 상기 섀시의 상기 타입이 HA 섀시이고 상기 장치가 HA 장치인 경우,
PCIe 버스 내의 제 2의 두 개의 레인들을 제 2 호스트에 대한 제 2 컨트롤 플레인으로 활성화하는 단계; 그리고
상기 장치 상의 제 2 이더넷 포트를 상기 제 2 호스트에 대한 제 2 데이터 플레인으로 활성화하는 단계를 포함한다.
진술 46. 본 발명의 실시 예는 진술 45에 따른 장치를 포함하되,
상기 장치 상의 제 2 이더넷 포트를 상기 제 2 호스트에 대한 제 2 데이터 플레인으로 활성화하는 단계는, 상기 장치와 연결된 커넥터 상의 SAS 핀들의 제 2 쌍을 상기 제 2 이더넷 포트로서 사용하는 단계를 포함한다.
진술 47. 본 발명의 실시 예는 진술 44에 따른 장치를 포함하되,
상기 논 트랜지토리 명령들은 머신에 의해 실행될 때: 상기 섀시의 상기 타입이 HA 섀시이고 상기 장치가 HA 장치가 아닌 경우, 경고를 리포팅하는 단계를 더 수행한다.
결과적으로, 본 명세서에서 기술된 실시 예들에 대한 다양한 광범위한 변경들의 관점에서, 이러한 상세한 설명과 첨부된 자료들은 단지 예시적인 것으로 의도되었고, 본 발명의 개념의 범위를 제한하는 것으로 간주되어서는 안 된다. 따라서, 본 발명의 개념으로서 청구되는 것은 다음의 청구항들과 그 균등물의 범위 및 사상 내에 있을 수 있는 모든 변형들이다.
Reference will now be made in detail to specific embodiments of the inventive concept. Examples of specific embodiments of the inventive concept will be illustrated in the accompanying drawings. In the detailed description that follows, numerous specific details will be provided in order that a thorough understanding of the inventive concept may be provided. However, it should be understood that those skilled in the art may practice the concepts of the present invention without these detailed descriptions. In other instances, well-known or public methods, steps, configurations, circuits, and networks have not been described in detail so as not to unnecessarily obscure aspects of the embodiments of the present invention.
In this specification, the first and second, etc. may be used to describe various components, but it will be understood that these components are not limited by these terms. These terms are used to distinguish one component from another. For example, a first logic stage may be termed a second logic stage, and similarly, the second logical stage may be termed a first logic stage without departing from the scope of the inventive concept.
Terms used in the description of the inventive concept are used only for the purpose of describing specific embodiments, and are not intended to limit the inventive concept. Unless the context clearly dictates otherwise, the singular forms, when used in the description of the inventive concept and the appended claims, are to be understood as being intended to encompass the plural forms. It should also be understood that the term “and/or” as used herein indicates or includes all possible combinations of one or more of the related recitations. When the term “comprising” is used herein, it is intended to specify the presence of a described feature, number, step, operation, configuration, and/or component, and one or more other features, number, step, operation thereof. It should be further understood that it does not exclude the presence or addition of , components, parts, and/or groups. The illustrations of the components and features are not drawn to scale, and some components and features may be drawn by enlarging/reducing the drawings.
It is desirable for NVMeoF device suppliers to provide a single common device that can be used in multiple products, such as an NVMe chassis and an NVMeoF chassis. In addition, NVMe devices in non-HA (or single path I/O (Input/Output)) mode and HA (or multi-path I/O) mode with minimal change It is desirable to have a common system platform that can support both and NVMeoF devices.
A multi-mode NVMeoF device may support NVMe or NVMeoF by looking for information from a known location. If a multi-mode device is installed within an NVMe chassis or the chassis type is not determined, x4 lanes of Peripheral Component Interconnect express (PCIe) can be used for both data and control communication. The device is powered by a PCIe engine, enabling communication via a U.2 connector, for example. In this case, the device will disable the ethernet engine(s). And, all NVMe protocols and functions are supported or enabled.
When a multi-mode device is installed within the NVMeoF chassis, two of the PCIe lanes can be used for control communication. Depending on the design of the device, Ethernet ports supporting data communication may use other available PCIe lanes or SAS (Serial Attached Small Computer System Interface (SCSI)) pins.
Embodiments of the present invention enable multi-mode devices to push health status, Field Replaceable Unit (FRU) information, sensor information, and discovery services to a Baseboard Management Controller (BMC) or a local host processor. Multi-mode devices can also download NVMeoF device firmware upgrades.
Although a multi-mode device must support data communication and control communication with two (or potentially more) hosts, HA multi-path I/O support is also possible. This may require allocation of more communication paths (eg, additional Ethernet ports via additional SAS pins) or division of possible communication paths (eg allocation of different PCIe lanes for different purposes).
Embodiments of the present invention may support various designs. In some designs, a common multi-mode device may support two distinct modes (NVMe and NVMeoF). Moreover, in some designs, a multi-mode device in NVMe mode may operate like a conventional NVMe device. In one design, the multi-mode device may use some PCIe lanes for control communication and may use some PCIe lanes for Ethernet ports. In another design, the multi-mode device may use some PCIe lanes for control communication and may use SAS pins for Ethernet ports. In some designs, conventional PCIe software drivers may be used to manage PCIe communications.
1 shows a chassis comprising a device according to an embodiment of the present invention. 1 , a chassis 105 is shown. Without any limitation, the chassis 105 may be a desktop or laptop computer, a server (eg, a standalone server or a rack server), or advantages from embodiments of the present invention. Any desired chassis including any other device capable of having The chassis 105 may also include specialized portable computing devices, tablet computers, smart phones, and other computing devices. In addition, although the described embodiments of the present invention refer to storage devices such as ethernet solid state drives (eSSDs), the embodiments of the present invention may have any form having an advantage that can be obtained by separating data planes and control planes. It can also be applied to devices of
Notwithstanding the particular shape of the chassis 105 , the chassis 105 may include a processor 110 , memory 115 , Electrically Erasable Programmable Read-Only Memory (EEPROM) 120 , and a storage device 125 . . The processor 110 may be any type of processor (eg, Intel Xeon, Celeron, Itanium, Atom processor, AMD Opteron processor, ARM processor, etc.). Although FIG. 1 depicts a single processor, chassis 105 may include any number of processors. The memory 115 may include any type of memory (eg, flash memory, static random access memory (SRAM), persistent random access memory (PRAM), ferroelectric random access memory (FRAM), or magnetic random access memory (MRAM)) and It may also be NVRAM (Non-Volatile Random Access Memory, etc.). However, in general, the memory 115 may be a DRAM. Also, memory 115 may be any desired combination of various memory types.
The EEPROM 120 may store VPD (Vital, Product Data, 130). VPD 130 is data that storage device 125 can use to configure itself. For example, VPD 130 may store information about chassis 105 or information about a transport protocol to be used for communication with storage device 125 . Transport protocols to be used for communication with the storage device 125 may include, for example, Ethernet, Fiber Channel, InfiniBand, or NVMe, to name a few. VPD 130 may also include information regarding the transport subprotocols used. For example, if the VPD 130 specifies that an Ethernet transport protocol is to be used, the VPD 130 may store whether, among other possibilities, Remote Direct Memory Access (RDMA) over Converged Ethernet (RoCE) or iWarp will be used. can
1 shows that the VPD 130 is stored in the EEPROM 120, embodiments of the present invention may support the use of any other alternative storage media. For example, the EEPROM 120 may be replaced with an erasable programmable read only memory (EPROM) or flash memory, to name a few.
The storage device 125 may be any of a variety of storage devices. Examples of such devices may include Solid State Drives (SSDs). However, other storage types are also possible, such as hard disk drives or other long-term storage devices. Furthermore, memory 115 and storage device 125 may be combined. That is, embodiments of the present invention may not distinguish between the concepts of short-term storage and long-term storage. However, in the embodiments of the present invention, both may be managed within a single form factor. Also, the storage device 125 may be generalized to any device that may benefit from embodiments of the present invention. The use of storage device 125 is simplified for purposes described only.
Fig. 2 shows the chassis of Fig. 1 in further detail; Referring to FIG. 2 , a chassis 105 generally includes one or more processors 110 . Processors 110 include a controller 205 and clock 210 and are used to coordinate the operations of components of chassis 105 . Processors 110 may be coupled to memory 115 including, for example, random access memory (RAM), read-only memory (ROM), or other stateful medium. In addition, the processors 110 may be connected to the storage devices 125 and a network connector 215 (eg, an Ethernet connector or a wireless connector). In addition, the processors 110 may be connected to the bus 220 that may be connected to the user interface 225 and input/output interface ports that may be managed using the input/output engine 230 , among other components. can
3 and 4 show the device 125 of FIG. 1 operating in NVMe or NVMeoF mode. In FIG. 3 , the storage device 125 is shown to include a U.2 connector 305 , a PCIe Gen3 X4 chip 310 , storage 315 , a chassis type circuit 320 , and a mode configuration circuit 325 . became U.2 connector 305 is a special kind of connector that can be used on devices such as storage device 125 . With support for PCIe, SAS, and Serial AT Attachment (SATA) built in, the U.2 connector 305 can support a number of different interfaces. 3 and 4 illustrate the use of a U.2 connector 305, the U.2 connector 305 may be replaced with alternative connectors, which communicate in a manner consistent with embodiments of the present invention. They can be replaced if they can be supported. As U.2 connector 305 supports 4 lanes of PCIe communication and supports alternative communication channels such as SAS, the use of U.2 connector 305 has several advantages over other connectors.
The PCIe Gen3 X4 chip 310 is a chip that manages PCIe communications through the PCIe bus. Although a similar chip needs to be compatible with the communication methods provided by the connector, the PCIe Gen3 X4 chip 310 can be replaced with any similar chip capable of managing communications and is limited to using the PCIe bus. doesn't happen For example, a chip that does not manage PCIe communications may not work with the U.2 connector 305 . The combination has an advantage in that the combination of U.2 connector 305 and PCI Gen3 X4 chip 310 can have all the advantages of the four lanes of the PCIe bus available through U.2 connector 305 . have
Storage 315 may be in any desired storage format. For example, storage 315 may be a flash memory, or storage 315 may be a hard disk drive, among other possible examples. Embodiments of the present invention are not limited to a specific storage format. Of course, if storage device 125 is replaced with some other type of device, storage 315 may be replaced with some other function suitable for another type of device.
The chassis type circuit 320 may query the chassis 105 of FIG. 1 to determine the type of the chassis 105 of FIG. 1 . In one embodiment of the present invention, the chassis 105 of FIG. 1 may or may not be an HA chassis, and the chassis 105 of FIG. 1 may use the NVMe protocol to communicate with devices such as the storage device 125 . The NVMeoF protocol can be used. Thus, in this embodiment of the present invention, the chassis 105 of FIG. 1 may be any of four different types. Other embodiments of the present invention may also contemplate other possible types of chassis 105 of FIG. 1 .
Chassis type circuitry 320 may perform this query in any desired way. In an embodiment of the present invention, the chassis type circuit 320 may read information from the VPD 130 of FIG. 1 . The VPD 130 of FIG. 1 may specify the type of chassis 105 of FIG. 1 . In another embodiment of the present invention, the chassis type circuit 320 may access a signal on one or more pins of the U.2 connector 305 . This signal may specify the type of chassis 105 of FIG. 1 . For example, a low signal on one pin (eg, the E25 pin (DualPort En#) of the U.2 connector 305) can identify that the chassis 105 of FIG. 1 is an HA chassis. have. Here, a high signal on the corresponding pin can identify that the chassis 105 of FIG. 1 is not an HA chassis. The signals on the second pin may be used in parallel to specify whether the chassis 105 of FIG. 1 is using the NVMe protocol or the NVMeoF protocol. For example, these pins may be General Purpose Input/Output (GPIO) pins of the U.2 connector 305, which are not otherwise used. Also, these pins may not be pins in the U.2 connector 305 , although these pins may be located somewhere within the chassis 105 of FIG. 1 . The location of the pins is not critical as long as the storage device 125 can read the signals on the pins. Other embodiments of the present invention may include chassis type circuitry 320 that determines the type of chassis 105 of FIG. 1 in other ways.
In some embodiments of the present invention, the storage device 125 may be located in a legacy chassis. That is, the existing chassis is a chassis that is not designed to inform the storage device 125 of the type of the chassis directly or indirectly to the storage device 125 . When the chassis type circuit 320 does not determine the type of the chassis 105 of FIG. 1 , the chassis type circuit 320 defaults to a specific mode. For example, a specific mode, which is the default, configures the storage device 125 to use the NVMe protocol and may assume that the chassis 105 of FIG. 1 is not an HA chassis.
Once the chassis type circuit 320 determines the type of chassis 105 , the mode configuration circuit 325 can configure the storage device 125 to use the appropriate protocols and disable unnecessary protocols. For example, when the chassis type circuit 320 indicates that the chassis 105 is an NVMe chassis, the mode configuration circuit 325 may configure the storage device 125 to use the NVMe protocol.
In one embodiment of the present invention, using the NVMe protocol means that the PCIe lanes of the U.2 connector 305 are used in both the data plane and the control plane. If the chassis 105 of FIG. 1 is an HA chassis, the mode configuration circuit 325 may divide the PCIe lanes into two sets. One set is used to communicate with one host, and the other set is used to communicate with another host. For example, lanes 0 and 1 shown in PCIe X2 330 may be assigned to communicate with a first host, and lanes 2 and 3 shown in PCIe X2 335 may be assigned to communicate with a second host. can be allocated for Since the NVMe protocol does not use Ethernet, the mode configuration circuit 325 may “enable” the Ethernet ports on the U.2 connector 325 . If the chassis 105 of FIG. 1 is not an HA chassis, the mode configuration circuit 325 uses all four PCIe lanes for the data plane and the control plane, or (the other two PCIe lanes communicate with other hosts). (as reserved for ) only two PCIe lanes are available. More generally, embodiments of the present invention support using any number of lanes to communicate with any number of hosts. For example, if a connector supporting a given number of lanes (which may be four or more, such as U.2 connector 305) is used, then these lanes are used to communicate with various hosts in any assignment desired. can be For example, all lanes may be allocated to a single host within a non-HA chassis, or lanes may be allocated to communicate with various hosts equally or unevenly. In addition, all lanes may be allocated, or only a subset of the available lanes may be allocated.
In another embodiment of the present invention, using the NVMeoF protocol means that the PCIe lanes of the U.2 connector 305 are only used for the control plane. Ethernet ports are used for the data plane. When the chassis 105 of FIG. 1 is an HA chassis, the mode configuration circuit 325 may divide the PCIe lanes into two sets. One set is used to communicate with one host, and the other set is used to communicate with another host. For example, lanes 0 and 1 shown in PCIe X2 330 may be assigned to communicate with a first host, and lanes 2 and 3 shown in PCIe X2 335 may be assigned to communicate with a second host. can be allocated for However, data may be communicated through Ethernet ports, which may be formed through SAS pins on, for example, U.2 connector 305 . Different Ethernet ports may be formed on different SAS pins for different hosts. Accordingly, the Ethernet port 405 may be used to communicate data with a first host, and the Ethernet port 410 may be used to communicate data with a second host. Since the NVMeoF protocol does not use PCIe lanes for the data plane, the mode configuration circuitry 325 “remembers” the PCIe lanes on the U.2 connector 305 for data, even though the PCIe lanes are still used for the control plane. can be “disabled”. If the chassis 105 of FIG. 1 is not an HA chassis, the mode configuration circuit 325 either uses all four PCIe lanes for the control plane, or (as if the other two PCIe lanes are reserved for communicating with other hosts). ) can only use two PCIe lanes. Also, the mode configuration circuit 325 may set only one Ethernet port or set a plurality of Ethernet ports to communicate with one host. And, in theory, any number of SAS pins can be assigned to any Ethernet port.
The mode configuration circuit 325 may be implemented in any desired manner. A simple approach is that the mode configuration circuit 325 is configured as a demultiplexer. The information received from the chassis type circuit 320 may be a control signal to the demultiplexer. The control signal can then be used to select a specific destination for the signal (PCIe lanes or Ethernet ports). A more complex approach could be to include both NVMe protocol circuitry 340 and NVMeoF protocol circuitry 415 , and use mode configuration circuitry 325 to direct signals to appropriate circuitry. In this way, embodiments of the present invention may support any intermediary processing on the signals before they are sent to the appropriate pins of the U.2 connector 305 .
In general, although embodiments of the present invention that support hot plugging when a device is plugged into chassis 105 of FIG. 1 may determine the type of chassis 105 of FIG. 1 , Nevertheless, the chassis type circuit 320 determines the type of the chassis 105 of FIG. 1 upon boot up. That is, when the storage device 125 is powered up, the chassis type circuit 320 determines the type of the chassis 105 of FIG. 1 , and the mode configuration circuit 325 configures the storage device 125 . The storage device 125 then retains its configuration until the storage device 125 device is powered down or rebooted. However, in some embodiments of the present invention, if the chassis 105 of FIG. 1 changes its configuration, the chassis type circuit 320 may determine this fact. For example, to sense a change in signals on pins in the U.2 connector 305 , to periodically check the VPD 130 of FIG. 1 , or to identify a signal or a change in the VPD 130 of FIG. 1 . This may be determined by receiving a signal from some configuration (eg, BMC) of the chassis 105 of FIG. 1 . Then, the chassis type circuit 320 signals the mode configuration circuit 325 to change the mode of the storage device 125 . This may include rebooting the storage device 125 for the new mode to take effect.
4 , additional components are shown. Specifically, Ethernet 420, IP (Internet Protocol, 425), TCP (Transmission Control Protocol, 430), and RDMA (Remote Direct Memory Access, 435) are shown. Ethernet 420 , IP 425 , TCP 430 , RDMA 435 , and NVMeoF protocol 415 together constitute a fabric-attached engine. These components may be replaced or supplemented according to suitable implementations. For example, if it is desired to support protocols other than Ethernet (eg, InfiniBand or Fiber Channel), additional software may be used in place of or in addition to Ethernet 420 in the fabric-attached engine.
Figure 5 shows the device of Figure 1 communicating with two hosts within an HA chassis. In FIG. 5 , storage device 125 , PCIe X2 lanes 330 , 335 , and Ethernet ports 405 , 410 are shown. This data plane and control plane may communicate with the midplane 505 . The midplane 505 can then direct the data to the appropriate host. Accordingly, the host 510 may receive communications from the PCIe X2 lanes 330 and the Ethernet ports 405 . On the other hand, the host 515 may receive communications from the PCIe X2 lanes 335 and the Ethernet ports 410 .
5 shows a storage device 125 using the NVMeoF protocol 415 of FIG. 4 to communicate with two hosts in an HA chassis. If the storage device 125 had used the NVMe protocol 340 instead of the NVMeoF protocol 415 , the Ethernet ports 405 and 410 would not be shown. And, if the chassis is not an HA chassis, PCIe lanes ( 335) and the Ethernet ports 410 may be inactive or not shown in the drawing.
In addition to being self-configured and capable of supporting multiple modes, the storage device 125 of FIGS. 1-5 can also transmit valuable information to the system. For example, the storage device 125 may transmit information about its health state, Field-Replaceable Unit (FRU) information, sensor information, and/or discovery services. For example, the storage device 125 may report information about its health status (eg, how efficiently the storage device 125 is operating, etc.). This information may be global across the storage device 125 , or it may be more centralized. For example, for a particular region of storage 315 of storage device 125 of FIGS. 3 and 4 , storage device 125 may report that storage 315 is only “17.3% OK”. The FRU information may inform the chassis 105 of FIG. 1 about the status of all specific FRUs. For example, the FRU may be the EEPROM 120 of FIG. 1 , a switch board, a memory module, a processor, a BMC, or any other FRU. The sensor information may include, for example, information on a temperature sensor in the storage device 125 . The BMC can then use the information about the temperature sensor to adjust cooling in the chassis 105 of FIG. 1 . Discovery Services are disclosed in U.S. Provisional Patent Application No. US 62/394,726, filed September 14, 2016, and U.S. Patent Application No. 15/345,507, which claims priority thereto, which are incorporated herein by reference for all purposes. filed on November 7, 2016).
Also, the storage device 125 may support firmware updates. In embodiments of the present invention, the BMC in chassis 105 (or other chassis with which storage device 125 may communicate) may receive or download updated firmware. The BMC may then communicate with the storage device 125 , verify that the firmware update is compatible with the storage device 125 , and use the firmware update to upgrade the firmware in the storage device 125 . This firmware update may be executed as a background process. In particular, when the storage device 125 is operating using the NVMeoF protocol 415 of FIG. 4 , the firmware update may be performed using the control plane. Accordingly, any delays for applications using data on the storage device 125 are avoided.
6 is a flowchart exemplarily illustrating a procedure for self-configuring the device 125 of FIG. 1 according to an embodiment of the present invention. 6 , in S605 , the storage device 125 of FIG. 1 may determine the type of the chassis 105 of FIG. 1 . In some embodiments of the present invention, determining the type of chassis 105 includes determining whether the chassis 105 of FIG. 1 is an HA chassis, and/or determining whether the chassis 105 of FIG. 1 is a FIG. It may include determining whether to use the NVMe protocol 340 of 3 or the NVMeoF protocol 415 of FIG. 4 . As shown in S610 , among other possible examples, this determination may be performed by reading the type of chassis 105 of FIG. 1 from the VPD 130 of FIG. 1 . Alternatively, as shown in S615, this determination may be performed by accessing a signal from one or more pins (eg, GPIO pins) from the U.2 connector 305 of FIG. 3 . As a result, in S620 , the storage device 125 of FIG. 1 may be self-configuring. An example of this process is shown in more detail in FIGS. 7A and 7B below.
7A and 7B show the NVMe protocol 340 of FIG. 3 or the NVMeoF protocol 410 of FIG. 4, and the device 125 of FIG. 1 for an HA chassis or a non-HA chassis according to an embodiment of the present invention. - It is a flowchart showing the procedure for configuring by way of example. In FIG. 7A , in S705 , the storage device 125 of FIG. 1 may determine whether the chassis 105 of FIG. 1 is an HA chassis. In the case of an HA chassis, in S710 , the storage device 125 of FIG. 1 may determine whether the storage device 125 is an HA storage device. If the chassis 105 of FIG. 1 is an HA chassis but the storage device 125 of FIG. 1 is not an HA storage device, at S715 , the storage device 125 of FIG. 1 may report an alert. This is because single-port devices may not function properly within a dual-port chassis. After that, the processing ends.
On the other hand, when the storage device 125 of FIG. 1 operates in the chassis 105 of FIG. 1 , in S720 , the storage device 125 of FIG. 1 may determine the type of the chassis 105 of FIG. 1 . have. In the embodiment of the present invention shown in FIGS. 7A and 7B , the type of chassis is the NVMe protocol 340 of FIG. 3 or the NVMeoF protocol 415 of FIG. 4 . If the type of chassis 105 of FIG. 1 is not determined (eg, if the chassis 105 of FIG. 1 is an existing chassis that does not provide such information), then the NVMe protocol 340 of FIG. 3 is assumed .
When the chassis 105 of FIG. 1 uses the NVMeoF protocol 415 of FIG. 4 , in S725 of FIG. 7B , the storage device 125 of FIG. 1 serves as a control plane for communication with one host. or more) PCIe lanes. And in S730, the storage device 125 of FIG. 1 may activate one or more Ethernet ports as a data plane to communicate with a corresponding one host. In S735, for example, if the chassis 105 of FIG. 1 is an HA chassis, the storage device 125 of FIG. 1 activates two (or more) additional PCIe lanes as a control plane to communicate with the second host. can do. And, in S740 , the storage device 125 of FIG. 1 may activate one or more additional Ethernet ports as a data plane for communication with the corresponding second host. For example, Ethernet ports may operate through SAS pins on U.2 connector 305 of FIG. 3 . If the chassis 105 of FIG. 1 and the storage device 125 of FIG. 1 are not HA, S735 and S740 may be omitted as indicated by a dotted arrow 745 . Finally, at S750 , the storage device 125 of FIG. 1 may “disable” (by not activating) the use of lanes on the PCIe bus as a data plane on the storage device 125 of FIG. 1 .
On the other hand, when the chassis 105 of FIG. 1 uses the NVMe protocol 340 of FIG. 3 , in S755 , the storage device 125 of FIG. 1 uses both the data plane and the control plane in one host. It is possible to activate two (or more) lanes of the PCIe bus. In S760, for example, if the chassis 105 of FIG. 1 is an HA chassis, the storage device 125 of FIG. 1 uses two (or more) of the PCIe bus to use both the data plane and the control plane for the second host. ) can be activated. If the chassis 105 of FIG. 1 and the storage device 125 of FIG. 1 are not HA, S760 may be omitted as indicated by a dotted arrow 765 . Finally, in S770 , the storage device 125 of FIG. 1 may “disable” (by not activating) all Ethernet ports on the storage device 125 of FIG. 1 .
6 , 7A, 7B , some embodiments of the present invention are shown. However, by changing the order of blocks (or steps), omitting blocks, or including links not shown in the drawings, those skilled in the art will recognize that other embodiments of the present invention are also possible. All such variations of flow charts, whether explicitly described or not, are considered embodiments of the present invention.
The following description is intended to provide a brief and general description of a suitable machine (or machine) or machines in which some aspects of the inventive concept are implemented. The machine or machines are at least in part by instructions received from another machine, interaction with a virtual reality (VR) environment, biofeedback, or other input signals as well as input from conventional input devices such as a keyboard, mouse, etc. can be controlled. As used herein, the term “machine” is intended to broadly encompass a single machine, virtual machine, or a system coupled to communicate with machines, virtual machines, or devices operating together. Exemplary machines include personal computers, workstations, servers, portable computers, handheld devices, phones, tablets, as well as transport devices such as personal or public transport such as, for example, cars, trains, taxis, etc. computing devices, such as
The machine or machines may include embedded controllers such as programmable or non-programmable logic devices or arrays, application specific integrated circuits (ASICs), embedded computers, smart cards, and the like. The machine or machines may utilize one or more connections to one or more remote machines, such as through a network interface, modem, or other communication couplings. Machines may be connected to each other by means of physical and/or logical networks such as intranets, the Internet, local area networks (LANs), wide area networks (WANs), and the like. Those skilled in the art will appreciate that network communication utilizes a variety of wired and/or wireless near or far carriers and protocols including radio frequency (RF), satellite, microwave, IEEE 802.11, Bluetooth, optical, infrared, cable, laser, etc. will understand that
Embodiments of the inventive concept provide functions, procedures, data structures, applications that, when accessed by the machine, cause a machine to perform tasks or define abstract data types or low-level hardware contexts. may be described with reference to or cooperatively with associated data, including Associated data may include, for example, volatile and/or non-volatile memory such as RAM, ROM, etc., or other storage devices, and hard drives, floppy disks, optical storage, tapes, flash memory, memory sticks, digital video disks, etc. , may be stored in an associated storage medium including bio-storage and the like. The associated data may be transmitted in the form of packets, serial data, parallel data, transmission signals, etc., via transmission environments including physical and/or logical networks, and may be used in a compressed or encrypted format. Associated data may be used in a distributed environment and may be stored locally and/or remotely for machine access.
Embodiments of the inventive concept include a tangible, non-transitory machine-readable medium comprising instructions executable by one or more processors and causing the inventive inventive concept to be performed as described herein. can do.
Having the principles of the inventive concept described with reference to the illustrated embodiments, it is understood that the illustrated embodiments can be modified in arrangement and detail and combined in any necessary way without departing from these principles. will be understood Although the preceding description has focused on specific embodiments, other constructs are also contemplated. Specifically, notwithstanding descriptions such as "according to embodiments of the technical spirit of the present invention" or similar ones used herein, these phrases generally refer to possibilities of embodiments, and to implement the technical spirit of the present invention in specific implementations. It is not intended to be limited to example configurations. As used herein, these terms may refer to the same or different embodiments that are combinable into other embodiments.
The above-described embodiments are not to be construed as limiting the technical spirit of the present invention thereto. Although only a few embodiments have been described, those skilled in the art will fully appreciate that many modifications are possible to these embodiments without departing substantially from the novel descriptions and advantages of the present disclosure. Accordingly, all such modifications are intended to be included within the scope of the present invention as defined in the claims.
Embodiments of the inventive concept may be extended to the following statements without limitation.
Statement 1. An embodiment of the present invention includes an apparatus. The device is:
a connector connecting the device to a chassis;
a chassis type circuit for determining the type of chassis containing the device; and
and mode configuration circuitry configured to configure the device to use a first mode or a second mode in response to the type of chassis.
Statement 2. An embodiment of the invention comprises an apparatus according to statement 1,
The device further comprises storage for data.
Statement 3. An embodiment of the invention comprises a device according to statement 1,
The chassis type circuitry operates to determine the type of the chassis by reading Vital Product Data (VPD) from an address in an Electrically Erasable Programmable Read-Only Memory (EEPROM).
Statement 4. An embodiment of the invention comprises the device according to statement 1,
The chassis type circuitry is operative to determine the type of chassis from a signal on a pin on the connector.
Statement 5. An embodiment of the invention comprises an apparatus according to statement 4,
The pins on the connector include General Purpose Input/Output (GPIO) pins on the connector.
Statement 6. An embodiment of the invention comprises an apparatus according to statement 1,
The mode configuration circuit is operative to configure the device to use the first mode when the chassis type circuit fails to determine the type of the chassis.
Statement 7. An embodiment of the invention comprises an apparatus according to statement 1,
The first mode includes a Non-Volatile Memory express (NVMe) protocol for communication between the device and the chassis,
The second mode includes a Non-Volatile Memory express over Fabric (NVMeoF) protocol for communication between the device and the chassis.
Statement 8. An embodiment of the invention comprises the device according to statement 7,
The NVMeoF protocol includes logic for exchanging data between the device and the chassis using a protocol extracted from a set including Ethernet, InfiniBand, and Fiber Channel.
Statement 9. An embodiment of the invention comprises the device according to statement 7,
The connector supports a plurality of Peripheral Component Interconnect express (PCIe) lanes and Serial Attached Small computer system interface (SAS) pins.
Statement 10. An embodiment of the invention comprises the device according to statement 9,
The connector includes a U.2 connector.
Statement 11. An embodiment of the invention comprises the device according to statement 9,
When the type of chassis is NVMe, the mode configuration circuit uses the first two lanes of the PCIe lanes as a first data plane and a first control plane for a first host, and Ethernet via the SAS pins It works to disable the use of the port.
Statement 12. An embodiment of the invention comprises the device according to statement 9,
When the type of chassis is NVMeoF, the mode configuration circuit uses the first two lanes of the PCIe lanes as a first control plane for a first host, and uses a first set of SAS pins as a first data plane It operates to be used as the first Ethernet port for
Statement 13. An embodiment of the invention comprises the device according to statement 9,
The chassis type circuit is operative to determine whether the type of chassis is a High Availability (HA) chassis.
Statement 14. An embodiment of the invention comprises the device according to statement 13,
When the type of chassis is NVMe, the mode configuration circuit uses the second two lanes of the PCIe lanes as a second data plane and a second control plane for a second host, and Ethernet via the SAS pins It works to disable the use of the port.
Statement 15. An embodiment of the invention comprises the device according to statement 13,
When the type of chassis is NVMeoF, the mode configuration circuit uses the second two lanes of the PCIe lanes as a second control plane for a second host, and uses a second set of SAS pins as a second data plane It operates to be used as a second Ethernet port for
Statement 16. An embodiment of the present invention comprises a method comprising:
determining the type of chassis in which the device is installed; and
and configuring the device to activate a first communication mechanism and deactivate a second communication mechanism for the device according to the type of chassis.
Statement 17. An embodiment of the invention comprises a method according to statement 16,
Determining the type of chassis in which the device is installed includes accessing the type of chassis from a VPD in EEPROM.
Statement 18. An embodiment of the invention comprises a method according to statement 16,
Determining the type of chassis in which the device is installed includes accessing a signal from a pin on a connector associated with the device.
Statement 19. An embodiment of the present invention comprises a method according to statement 18,
Accessing a signal from a pin on a connector coupled with the device includes accessing the signal from a general purpose input/output (GPIO) pin on the connector coupled with the device.
Statement 20. An embodiment of the present invention comprises a method according to statement 16,
Determining the type of chassis in which the device is installed includes determining whether the type of chassis is an NVMe chassis or an NVMeoF chassis.
Statement 21. An embodiment of the invention comprises a method according to statement 20,
Determining whether the type of chassis is an NVMe chassis or an NVMeoF chassis includes, if the device fails to determine the type of the chassis, default setting the type of chassis to be the NVMe chassis do.
Statement 22. An embodiment of the present invention comprises a method according to statement 20,
According to the type of chassis, configuring the device to enable a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is the NVMe chassis;
enable the device to use two lanes in the PCIe bus as a first data plane and a first control plane for a first host, and disable the device from using an Ethernet port on the device for the first host including the steps of
Statement 23. An embodiment of the present invention comprises a method according to statement 22,
Determining the type of chassis in which the device is installed further includes determining whether the type of chassis is an HA chassis,
The method further includes determining whether the device is an HA device.
Statement 24. An embodiment of the present invention comprises a method according to statement 23,
According to the type of chassis, configuring the device to activate a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is the HA chassis and the device is an HA device If ,
activating a second two lanes in the PCIe bus as a second data plane and a second control plane for a second host.
Statement 25. An embodiment of the invention comprises a method according to statement 23,
The method further includes reporting an alert when the type of chassis is an HA chassis and the device is not an HA device.
Statement 26. An embodiment of the present invention comprises a method according to statement 20,
According to the type of chassis, configuring the device to enable a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is the NVMeoF chassis,
activating a first two lanes in the PCIe bus as a first control plane for a first host;
activating a first Ethernet port on the device as a first data plane for the first host; and
deactivating the lanes in the PCIe bus as the first data plane to the first host.
Statement 27. An embodiment of the present invention comprises a method according to statement 26,
Activating a first Ethernet port on the device as a first data plane to the first host includes using a first pair of SAS pins on a connector coupled to the device as the first Ethernet port.
Statement 28. An embodiment of the invention comprises a method according to statement 26,
Determining the type of chassis in which the device is installed includes determining whether the type of chassis is an HA chassis,
The method further includes determining whether the device is an HA device.
Statement 29. An embodiment of the present invention comprises a method according to statement 28,
According to the type of chassis, configuring the device to activate a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is an HA chassis and the device is an HA device case,
activating a second two lanes in the PCIe bus as a second control plane for a second host; and
activating a second Ethernet port on the device as a second data plane to the second host.
Statement 30. An embodiment of the invention comprises a method according to statement 29,
Activating a second Ethernet port on the device as a second data plane to the second host includes using a second pair of SAS pins on a connector coupled to the device as the second Ethernet port.
Statement 31. An embodiment of the invention comprises the method according to statement 28,
The method further includes reporting an alert when the type of chassis is an HA chassis and the device is not an HA device.
Statement 32. An embodiment of the present invention provides an apparatus comprising a tangible storage medium for storing Non-Transitory instructions,
When the non-transitory instructions are executed by the machine:
determining the type of chassis in which the device is installed; and
and configuring the device to activate a first communication mechanism and deactivate a second communication mechanism for the device according to the type of chassis.
Statement 33. An embodiment of the present invention comprises an apparatus according to statement 32,
Determining the type of chassis in which the device is installed includes accessing the type of chassis from a VPD in EEPROM.
Statement 34. An embodiment of the invention comprises an apparatus according to statement 32,
Determining the type of chassis in which the device is installed includes accessing a signal from a pin on a connector associated with the device.
Statement 35. An embodiment of the present invention comprises an apparatus according to statement 34,
Accessing a signal from a pin on a connector coupled to the device includes accessing the signal from a GPIO pin on the connector coupled to the device.
Statement 36. An embodiment of the present invention comprises an apparatus according to statement 32,
Determining the type of chassis in which the device is installed includes determining whether the type of chassis is an NVMe chassis or an NVMeoF chassis.
Statement 37. An embodiment of the present invention comprises an apparatus according to statement 36,
Determining whether the type of chassis is an NVMe chassis or an NVMeoF chassis includes, if the device fails to determine the type of the chassis, default setting the type of chassis to be the NVMe chassis do.
Statement 38. An embodiment of the present invention comprises an apparatus according to statement 36,
According to the type of chassis, configuring the device to enable a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is the NVMe chassis;
enable the device to use two lanes in the PCIe bus as a first data plane and a first control plane for a first host, and disable the device from using an Ethernet port on the device for the first host including the steps of
Statement 39. An embodiment of the present invention comprises an apparatus according to statement 38,
Determining the type of chassis in which the device is installed further includes determining whether the type of chassis is an HA chassis,
When the non-repository instructions are executed by the machine, they further perform the step of: determining whether the device is an HA device.
Statement 40. An embodiment of the present invention comprises an apparatus according to statement 39,
According to the type of chassis, configuring the device to activate a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is the HA chassis and the device is an HA device If ,
activating a second two lanes in the PCIe bus as a second data plane and a second control plane for a second host.
Statement 41. An embodiment of the present invention comprises an apparatus according to statement 39,
When the non-transitory instructions are executed by the machine:
If the type of chassis is an HA chassis and the device is not an HA device, the step of reporting an alert is further performed.
Statement 42. An embodiment of the present invention comprises an apparatus according to statement 36,
According to the type of chassis, configuring the device to enable a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is the NVMeoF chassis,
activating a first two lanes in the PCIe bus as a first control plane for a first host;
activating a first Ethernet port on the device as a first data plane for the first host; and
deactivating the lanes in the PCIe bus as the first data plane to the first host.
Statement 43. An embodiment of the present invention comprises an apparatus according to statement 42,
Activating a first Ethernet port on the device as a first data plane to the first host includes using a first pair of SAS pins on a connector coupled to the device as the first Ethernet port.
Statement 44. An embodiment of the present invention comprises an apparatus according to statement 42,
Determining the type of chassis in which the device is installed includes determining whether the type of chassis is an HA chassis,
When the non-repository instructions are executed by the machine, they further perform the step of: determining whether the device is an HA device.
Statement 45. An embodiment of the present invention comprises an apparatus according to statement 44,
According to the type of chassis, configuring the device to activate a first communication mechanism and deactivate a second communication mechanism for the device may include: if the type of chassis is an HA chassis and the device is an HA device case,
activating a second two lanes in the PCIe bus as a second control plane for a second host; and
activating a second Ethernet port on the device as a second data plane to the second host.
Statement 46. An embodiment of the present invention comprises an apparatus according to statement 45,
Activating a second Ethernet port on the device as a second data plane to the second host includes using a second pair of SAS pins on a connector coupled to the device as the second Ethernet port.
Statement 47. An embodiment of the present invention comprises an apparatus according to statement 44,
When the non-repository instructions are executed by the machine, further perform the step of: reporting an alert if the type of the chassis is an HA chassis and the device is not an HA device.
Consequently, in view of the various broad modifications to the embodiments described herein, this detailed description and accompanying material are intended to be illustrative only, and should not be construed as limiting the scope of the inventive concept. Accordingly, what is claimed as a concept of the invention are all modifications that may come within the scope and spirit of the following claims and their equivalents.

105: 섀시 110: 프로세서
115: 메모리 120: EEPROM
125: 스토리지 장치 130: VPD
205: 메모리 컨트롤러 210: 클록
215: 네트워크 커넥터 220: 버스
225: 유저 인터페이스 230: 입/출력 엔진
305: U.2 커넥터 310: PCIe Gen3 X4 칩
315: 스토리지 320: 섀시 타입 회로
325: 모드 구성 회로 330, 335: PCIe X2
340: NVMe 405, 410: 이더넷 포트
415: NVMeoF 420: 이더넷
425: IP 430: TCP
435: RDMA 505: 미드 플레인
510, 515: 호스트
105: chassis 110: processor
115: memory 120: EEPROM
125: storage device 130: VPD
205: memory controller 210: clock
215: network connector 220: bus
225: user interface 230: input/output engine
305: U.2 connector 310: PCIe Gen3 X4 chip
315: storage 320: chassis type circuit
325: mode configuration circuit 330, 335: PCIe X2
340: NVMe 405, 410: Ethernet port
415: NVMeoF 420: Ethernet
425: IP 430: TCP
435: RDMA 505: Midplane
510, 515: host

Claims (10)

장치에 있어서:
상기 장치를 섀시(chassis) 내 구성 요소로 연결하는 커넥터;
상기 장치를 포함하는 상기 섀시의 타입(type)을 판단하는 섀시 타입 회로; 그리고
상기 섀시의 상기 타입에 응답하여 제 1 모드 또는 제 2 모드를 사용하도록 상기 장치를 구성하는 모드 구성 회로를 포함하되,
상기 제 1 모드는 상기 장치 및 상기 섀시 사이의 통신을 위한 제 1 전송 프로토콜을 포함하고,
상기 제 2 모드는 상기 장치 및 상기 섀시 사이의 통신을 위한 제 2 전송 프로토콜을 포함하고, 그리고
상기 구성 요소는 상기 장치를 포함하는 상기 섀시의 타입을 판단하는 것에 더하여 추가적인 기능을 수행하는 장치.
In the device:
a connector connecting the device to a component within a chassis;
a chassis type circuit for determining the type of chassis containing the device; and
mode configuration circuitry configured to configure the device to use a first mode or a second mode in response to the type of chassis;
the first mode includes a first transport protocol for communication between the device and the chassis;
the second mode includes a second transport protocol for communication between the device and the chassis; and
wherein the component performs an additional function in addition to determining the type of the chassis that contains the device.
제 1 항에 있어서,
상기 섀시 타입 회로는 상기 커넥터 상의 핀 상의 신호로부터 상기 섀시의 상기 타입을 판단하도록 동작하는 장치.
The method of claim 1,
and the chassis type circuitry is operative to determine the type of chassis from a signal on a pin on the connector.
제 1 항에 있어서,
상기 섀시 타입 회로는 상기 구성 요소로부터 상기 장치를 포함하는 상기 섀시의 상기 타입을 판단하도록 동작하는 장치.
The method of claim 1,
and the chassis type circuitry is operative to determine from the component the type of the chassis that contains the device.
제 1 항에 있어서,
상기 섀시 타입 회로는 VPD(Vital Product Data)로부터 상기 섀시의 상기 타입을 읽도록 동작하는 장치.
The method of claim 1,
and the chassis type circuitry is operative to read the type of chassis from Vital Product Data (VPD).
제 1 항에 있어서,
상기 커넥터는 복수의 PCIe(Peripheral Component Interconnect Express) 레인들 및 SAS(Serial Attached SCSI(Small Computer System Interface)) 핀들을 지원하는 장치.
The method of claim 1,
The connector supports a plurality of Peripheral Component Interconnect Express (PCIe) lanes and Serial Attached Small Computer System Interface (SCSI) pins.
제 5 항에 있어서,
상기 섀시의 상기 타입이 NVMe(Non-Volatile Memory Express)인 것에 적어도 부분적으로 기초하여, 상기 모드 구성 회로는 상기 PCIe 레인들 중 두 개의 레인들을 호스트에 대한 데이터 플레인 및 컨트롤 플레인으로서 둘 다 사용하고, 그리고 상기 SAS 핀들을 통한 이더넷(Ethernet) 포트의 사용을 비활성화하도록 동작하는 장치.
6. The method of claim 5,
based at least in part that the type of chassis is Non-Volatile Memory Express (NVMe), the mode configuration circuit uses two of the PCIe lanes as both a data plane and a control plane to a host; and a device operative to disable use of an Ethernet port through the SAS pins.
제 5 항에 있어서,
상기 섀시의 상기 타입이 NVMeoF(Non-Volatile Memory Express over Fabric)인 것에 적어도 부분적으로 기초하여, 상기 모드 구성 회로는 상기 PCIe 레인들 중 두 개의 레인들을 호스트에 대한 컨트롤 플레인으로서 사용하고, 그리고 SAS 핀들의 세트를 상기 호스트에 대한 데이터 플레인에 대한 이더넷 포트로서 사용하도록 동작하는 장치.
6. The method of claim 5,
Based at least in part on the type of chassis being Non-Volatile Memory Express over Fabric (NVMeoF), the mode configuration circuit uses two of the PCIe lanes as a control plane for a host, and SAS pins A device operative to use the set of as Ethernet ports to the data plane to the host.
방법에 있어서:
스토리지 장치가 설치된 섀시의 타입을 판단하는 단계; 및
상기 섀시의 상기 타입이 NVMe 섀시인 것에 적어도 부분적으로 기초하여,
PCIe 버스 내의 두 개의 레인들을 호스트에 대한 데이터 플레인 및 컨트롤 플레인으로서 둘 다 사용하고, 상기 호스트에 대한 이더넷 포트를 비활성화하는 단계를 포함하되,
상기 스토리지 장치는 커넥터를 이용하여 상기 섀시 내 구성 요소로 연결되고, 상기 구성 요소는 상기 커넥터 상의 적어도 하나의 핀을 사용하여 상기 스토리지 장치에 신호를 보내고, 그리고 상기 스토리지 장치를 포함하는 상기 섀시의 상기 타입을 판단하는 것에 더하여 추가적인 기능을 수행하는 방법.
A method comprising:
determining the type of chassis in which the storage device is installed; and
based, at least in part, on the type of chassis being an NVMe chassis;
using two lanes in a PCIe bus as both a data plane and a control plane to a host and disabling an Ethernet port to the host;
the storage device is coupled to a component in the chassis using a connector, the component signals the storage device using at least one pin on the connector, and How to perform additional functions in addition to determining the type.
제 8 항에 있어서,
상기 스토리지 장치가 설치된 상기 섀시의 상기 타입을 판단하는 단계는 상기 커넥터 상의 핀으로부터의 상기 신호를 액세스하는 단계를 포함하는 방법.
9. The method of claim 8,
Determining the type of chassis in which the storage device is installed includes accessing the signal from a pin on the connector.
비-일시적(non-transitory) 명령어들을 저장하는 유형(tangible)의 비-일시적 저장 매체를 포함하는 장치의 동작 방법에 있어서,
상기 비-일시적 명령어들은 기계에 의해 실행될 때:
상기 장치가 설치된 섀시의 타입을 판단하는 단계; 및
상기 섀시의 상기 타입에 따라 상기 장치에 대해 제 1 통신 매커니즘을 활성화하고 그리고 제 2 통신 매커니즘을 비활성화하도록 상기 장치를 구성하는 단계를 야기하되,
상기 장치는 커넥터를 이용하여 상기 섀시 내 구성 요소로 결합되고, 상기 구성 요소는 상기 장치를 포함하는 상기 섀시의 타입을 판단하는 것에 더하여 추가적인 기능을 수행하는 방법.
A method of operating an apparatus comprising a tangible non-transitory storage medium storing non-transitory instructions, the method comprising:
When the non-transitory instructions are executed by a machine:
determining the type of chassis in which the device is installed; and
causing the device to configure the device to activate a first communication mechanism and deactivate a second communication mechanism for the device according to the type of chassis;
The device is coupled to a component within the chassis using a connector, wherein the component performs an additional function in addition to determining the type of the chassis that contains the device.
KR1020210071699A 2016-07-26 2021-06-02 A multi-mode device and an operating method thereof KR102407210B1 (en)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US201662366622P 2016-07-26 2016-07-26
US62/366,622 2016-07-26
US15/256,495 US20180032471A1 (en) 2016-07-26 2016-09-02 Self-configuring ssd multi-protocol support in host-less environment
US15/256,495 2016-09-02
US201662394726P 2016-09-14 2016-09-14
US201662394727P 2016-09-14 2016-09-14
US62/394,727 2016-09-14
US62/394,726 2016-09-14
US15/345,509 US11461258B2 (en) 2016-09-14 2016-11-07 Self-configuring baseboard management controller (BMC)
US15/345,509 2016-11-07
US15/345,507 US10346041B2 (en) 2016-09-14 2016-11-07 Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US15/345,507 2016-11-07
US201662420355P 2016-11-10 2016-11-10
US62/420,355 2016-11-10
US201662426422P 2016-11-25 2016-11-25
US62/426,422 2016-11-25
US15/403,088 US10210123B2 (en) 2016-07-26 2017-01-10 System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US15/403,088 2017-01-10
US15/411,962 2017-01-20
US15/411,962 US10372659B2 (en) 2016-07-26 2017-01-20 Multi-mode NMVE over fabrics devices
KR1020200114422A KR102262541B1 (en) 2016-07-26 2020-09-08 A multi-mode device and an operating method thereof

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200114422A Division KR102262541B1 (en) 2016-07-26 2020-09-08 A multi-mode device and an operating method thereof

Publications (2)

Publication Number Publication Date
KR20210070958A KR20210070958A (en) 2021-06-15
KR102407210B1 true KR102407210B1 (en) 2022-06-10

Family

ID=72670242

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200114422A KR102262541B1 (en) 2016-07-26 2020-09-08 A multi-mode device and an operating method thereof
KR1020210071699A KR102407210B1 (en) 2016-07-26 2021-06-02 A multi-mode device and an operating method thereof

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200114422A KR102262541B1 (en) 2016-07-26 2020-09-08 A multi-mode device and an operating method thereof

Country Status (1)

Country Link
KR (2) KR102262541B1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295567B1 (en) 1998-01-26 2001-09-25 Dell Usa, L.P. Chassis type determination in an electronic system
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

Also Published As

Publication number Publication date
KR102262541B1 (en) 2021-06-09
KR20200107908A (en) 2020-09-16
KR20210070958A (en) 2021-06-15

Similar Documents

Publication Publication Date Title
US11126583B2 (en) Multi-mode NMVe over fabrics devices
US20220365683A1 (en) Method for using bmc as proxy nvmeof discovery controller to provide nvm subsystems to host
US20240045816A1 (en) Self-configuring baseboard management controller (bmc)
US10996896B2 (en) Solid state drive multi-card adapter with integrated processing
KR20180012181A (en) Self-Configuring SSD Multi-Protocol Support in Host-less Environment
KR102155659B1 (en) A multi-mode device and an operating method thereof
KR102407210B1 (en) A multi-mode device and an operating method thereof
US20200233831A1 (en) Self-configuring ssd multi-protocol support in host-less environment
US20230325343A1 (en) Self-configuring ssd multi-protocol support in host-less environment
US20200257648A1 (en) Self-configuring ssd multi-protocol support in host-less environment

Legal Events

Date Code Title Description
A107 Divisional application of patent
A302 Request for accelerated examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)