KR101824671B1 - 비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법 - Google Patents

비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법 Download PDF

Info

Publication number
KR101824671B1
KR101824671B1 KR1020167015204A KR20167015204A KR101824671B1 KR 101824671 B1 KR101824671 B1 KR 101824671B1 KR 1020167015204 A KR1020167015204 A KR 1020167015204A KR 20167015204 A KR20167015204 A KR 20167015204A KR 101824671 B1 KR101824671 B1 KR 101824671B1
Authority
KR
South Korea
Prior art keywords
nvm
request
controller
data
processing entity
Prior art date
Application number
KR1020167015204A
Other languages
English (en)
Other versions
KR20160107158A (ko
Inventor
라도슬라브 다닐락
윌리암 라드케
Original Assignee
스카이에라, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/078,302 external-priority patent/US9229855B2/en
Priority claimed from US14/078,308 external-priority patent/US9336134B2/en
Application filed by 스카이에라, 엘엘씨 filed Critical 스카이에라, 엘엘씨
Publication of KR20160107158A publication Critical patent/KR20160107158A/ko
Application granted granted Critical
Publication of KR101824671B1 publication Critical patent/KR101824671B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Power Sources (AREA)

Abstract

저장 디바이스에 액세스하는 다양한 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체가 설명된다. 특정 예시적 구현예에서, 2개 이상의 컨트롤러를 포함하는 능동/능동 장애 허용 저장 디바이스가 구현될 수 있다. 일 양태에서, 각각의 컨트롤러는 I/O 요청의 처리를 분배하는 2개 이상의 처리 엔티티를 가질 수 있다. 일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다. 일 구현예에서, 각각의 컨트롤러는 비휘발성 메모리(NVM) 저장 매체를 포함하는 비휘발성 메모리(NVM) 블레이드에 결합될 수 있다. 하나의 예시적 구현예에서, 주변 구성요소 상호연결 익스프레스 프로토콜과 같은 표준화 프로토콜은 컨트롤러의 다양한 구성요소와 또한 NVM 저장 매체 사이에서 통신하기 위해 사용될 수 있다.

Description

비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법{APPARATUS AND METHOD FOR ROUTING INFORMATION IN A NON-VOLATILE MEMORY-BASED STORAGE DEVICE}
본 개시의 양태는 컴퓨팅 및 통신 기술에 관한 것이다. 특히, 본 개시의 양태는 저장 디바이스의 성능을 개선하는 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체에 관한 것이다.
기업 시스템에 대한 저장 디바이스는 대량 저장 용량, 저장 디바이스에의 판독 및 기록을 위한 저레이턴시, 고대역폭, 저전력 소비, 및 신뢰성을 필요로 한다. 전통적으로, 기업 시스템은 전력이 턴 오프되는 동안에 데이터를 유지하는 하드 디스크 드라이브(HDD)와 같은 매체를 사용하여 구현된다. 하드 디스크 드라이브는 신속 회전 디스크를 사용하는 디지털 정보를 저장하고 검색하기 위해 사용되는 데이터 저장 디바이스이다. HDD는 데이터를 판독하고 데이터를 디스크 표면에 기록하기 위해 가동 액추에이터 아암 상에 배열되는 자기 헤드를 갖는 하나 이상의 강성("하드") 신속 회전 디스크(플래터)로 구성된다. 가동 부분으로 인해, HDD는 에러 및 고장의 경향이 본질적으로 있고, 그들의 액세스 시간 및 가격이 얼마나 낮게 떨어지는지에 관한 플로어(floor)를 갖는다.
본 발명의 구현예는 이와 같은 그리고 다른 문제들을 해결한다.
저장 매체에 액세스하는 다양한 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체가 설명된다. 저장 매체에 최적으로 액세스하는 기술이 설명된다. 일 구현예에서, 저장 디바이스는 비휘발성 메모리(NVM)를 사용하여 구현될 수 있다.
특정 예시적 구현예에서, 2개 이상의 컨트롤러를 포함하는 능동/능동 장애 허용 저장 디바이스가 구현될 수 있다. 그러나 다른 예시적 구현예에서, 능동/대기 시스템이 또한 구현될 수 있다. 일부 구현예에서, 컨트롤러는 단일 다이 위로 수개의 별개 구성요소의 기능성을 통합하는 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 임의의 다른 기술을 사용하여 구현될 수 있다. 다른 구현예에서, 컨트롤러는 또한 다수의 별개 구성요소를 갖는 컨트롤러 보드를 포함할 수 있다. 일 양태에서, 각각의 컨트롤러 보드는 입력/출력(I/O) 요청의 처리를 분배하는 2개 이상의 처리 엔티티를 가질 수 있다. 일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 I/O 요청을 서비스하기 위해 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다.
일 구현예에서, 각각의 컨트롤러는 NVM 저장 매체를 포함하는 비휘발성 메모리(NVM) 블레이드에 결합될 수 있다. 본 발명의 구현예는 또한 NVM 저장 매체에의 액세스 시간을 개선하는 추가 향상을 제공할 수 있다. 본 발명의 일부 구현예는 예시 목적을 위해 NVM 저장 매체를 사용하여 본원에 설명될 수 있지만, 특정 구현예에서, 본 발명은 NVM 저장 매체에 제한되지 않을 수 있고 다른 적절한 물리 저장 매체는 본 발명의 범위로부터 벗어나는 것 없이 사용될 수 있다.
일 구현예에서, 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜과 같은 표준화 프로토콜은 컨트롤러 보드의 다양한 구성요소와 또한 NVM 저장 매체 사이에서 통신하기 위해 사용될 수 있다.
예시적 저장 디바이스는 복수의 블레이드로부터의 제1 블레이드에 결합되는 복수의 라우팅 엔티티로부터의 제1 라우팅 엔티티로서, 제1 블레이드는 NVM 저장 매체를 포함할 수 있으며, 제1 라우팅 엔티티에 결합되는 제1 처리 엔티티를 포함할 수 있으며 제1 처리 엔티티는 제1 입력/출력(I/O) 요청을 수신하고, 제1 I/O 요청과 연관되는 제1 데이터가 제1 라우팅 엔티티에 결합되는 제1 블레이드 상의 제1 위치에 저장되는 것을 결정하고, 제1 블레이드 상의 제1 데이터의 저장을 위해 제1 I/O 요청과 연관되는 제1 데이터를 제1 라우팅 엔티티에 송신하도록 구성될 수 있다. 제2 처리 엔티티는 제1 라우팅 엔티티에 결합될 수 있으며 제2 처리 엔티티는 제2 I/O 요청을 수신하고, 제2 I/O 요청과 연관되는 제2 데이터가 제1 라우팅 엔티티에 결합되는 제1 블레이드 상의 제2 위치에 저장되는 것을 결정하고, 제1 블레이드 상의 제2 데이터의 저장을 위해 제2 I/O 요청과 연관되는 제2 데이터를 제1 라우팅 엔티티에 송신하도록 구성된다.
일부 구현예에서, 저장 디바이스는 제3 I/O 요청을 수신하고, 제3 I/O 요청이 제1 라우팅 엔티티에 결합되는 제1 블레이드의 제1 위치에서의 제1 데이터에 대한 판독 요청인 것을 결정하고, 제1 라우팅 엔티티로부터 제1 위치로부터의 제1 데이터를 요청하고, 제1 라우팅 엔티티로부터 제1 데이터를 수신하도록 구성되는 제2 처리 엔티티를 더 가질 수 있다. 일 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 제1 라우팅 엔티티를 통해 서로 간접적으로 결합될 수 있다. 일 구현예에서, 컨트롤러 보드는 제1 라우팅 엔티티, 제1 처리 엔티티 및 제2 처리 엔티티를 포함한다. 일 구현예에서, 제1 처리 엔티티는 제1 메모리에 결합될 수 있고 제2 처리 엔티티는 제2 메모리에 결합될 수 있다. 일 양태에서, 제1 처리 엔티티와 제1 라우팅 엔티티 사이의 데이터의 송신 및 제2 처리 엔티티와 제1 라우팅 엔티티 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행된다.
저장 디바이스의 특정 구현예에서, 저장 디바이스는 복수의 블레이드로부터의 제2 블레이드에 결합되는 복수의 라우팅 엔티티로부터의 제2 라우팅 엔티티로서, 제2 블레이드는 NVM 저장 매체를 포함하며, 제2 라우팅 엔티티에 결합되는 제1 처리 엔티티를 더 포함할 수 있으며 제1 처리 엔티티는 제3 I/O 요청을 수신하고, 제3 I/O 요청과 연관되는 제3 데이터가 제3 위치에서 제2 블레이드 상에 저장되는 것을 결정하고, 제2 블레이드 상에 제3 I/O 요청과 연관되는 데이터의 저장을 위해 제3 I/O 요청과 연관되는 제3 데이터를 제2 라우팅 엔티티에 송신하도록 구성될 수 있다. 저장 디바이스는 제2 라우팅 엔티티에 결합되는 제2 처리 엔티티를 더 가질 수 있으며 제2 처리 엔티티는 제4 I/O 요청을 수신하고, 제4 I/O 요청과 연관되는 제4 데이터가 제4 위치에서 제2 블레이드 상에 저장되는 것을 결정하고, 제2 블레이드 상에 제4 I/O 요청과 연관되는 데이터의 저장을 위해 제4 I/O 요청과 연관되는 제4 데이터를 제2 라우팅 엔티티에 송신하도록 구성될 수 있다.
일 구현예에서, 제1 처리 엔티티와 제2 라우팅 엔티티 사이의 데이터의 송신 및 제2 처리 엔티티와 제2 라우팅 엔티티 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행될 수 있다. 일 양태에서, 제1 처리 엔티티에 의해 수신되는 제1 I/O 요청은 하나 이상의 인터페이싱 엔티티에서 우선 수신되고 복수의 라우팅 엔티티 중 하나를 통해 제1 처리 엔티티에 송신될 수 있다.
데이터를 저장하는 예시적 방법은 제1 처리 엔티티에서, 제1 I/O 요청을 수신하는 단계, 제1 처리 엔티티에서, 제1 I/O 요청과 연관되는 제1 데이터가 제1 라우팅 엔티티에 결합되는 제1 위치에서 제1 블레이드 상에 저장되는 것을 결정하는 단계로서, 제1 블레이드는 NVM 저장 매체를 포함하는 단계, 제1 블레이드 상에 데이터의 저장을 위해 제1 처리 엔티티에 의해 제1 I/O 요청과 연관되는 제1 데이터를 제1 라우팅 엔티티에 송신하는 단계, 제2 처리 엔티티에서, 제2 I/O 요청을 수신하는 단계, 제2 처리 엔티티에서, 제2 I/O 요청과 연관되는 제2 데이터가 제1 라우팅 엔티티에 결합되는 제2 위치에서 제1 블레이드 상에 저장되는 것을 결정하는 단계, 및 제1 블레이드 상에 데이터의 저장을 위해 제2 I/O 요청과 연관되는 제2 데이터를 제1 라우팅 엔티티에 송신하는 단계를 포함할 수 있다.
일부 구현예에서, 예시적 방법은 제2 처리 엔티티에서, 제3 I/O 요청을 수신하는 단계, 제2 처리 엔티티에서, 제3 I/O 요청이 제1 라우팅 엔티티에 결합되는 제1 블레이드의 제1 위치로부터의 제1 데이터에 대한 판독 요청인 것을 결정하는 단계, 제1 라우팅 엔티티로부터 제1 위치로부터의 제1 데이터를 요청하는 단계, 및 제1 라우팅 엔티티로부터 제1 데이터를 수신하는 단계를 더 포함할 수 있다.
일 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 라우팅 엔티티를 통해 서로 간접적으로 결합된다. 일 양태에서, 컨트롤러 보드는 제1 라우팅 엔티티, 제1 처리 엔티티 및 제2 처리 엔티티를 포함한다. 제1 처리 엔티티는 제1 메모리에 결합될 수 있고 제2 처리 엔티티는 제2 메모리에 결합될 수 있다. 방법의 일부 구현예에서, 제1 처리 엔티티와 제1 라우팅 엔티티 사이의 제1 데이터의 송신 및 제2 처리 엔티티와 제1 라우팅 엔티티 사이의 제2 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행될 수 있다.
방법의 특정 구현예에서, 방법은 또한 제1 처리 엔티티에서, 제3 I/O 요청을 수신하는 단계, 제1 처리 엔티티에서, 제3 I/O 요청과 연관되는 제3 데이터가 제2 라우팅 엔티티에 결합되는 제3 위치에서 제2 블레이드 상에 저장되는 것을 결정하는 단계로서, 제2 블레이드는 NVM 저장 매체를 포함하는 단계, 제2 블레이드 상에 제3 I/O 요청과 연관되는 데이터의 저장을 위해 제1 처리 엔티티에 의해 제3 I/O 요청과 연관되는 제3 데이터를 제2 라우팅 엔티티에 송신하는 단계, 제2 처리 엔티티에서, 제4 I/O 요청을 수신하는 단계, 제2 처리 엔티티에서, 제4 I/O 요청과 연관되는 제4 데이터가 제2 라우팅 엔티티에 결합되는 제4 위치에서 제2 블레이드 상에 저장되는 것을 결정하는 단계, 제2 블레이드 상에 제4 I/O 요청과 연관되는 데이터의 저장을 위해 제2 처리 엔티티에 의해 제4 I/O 요청과 연관되는 제4 데이터를 제2 라우팅 엔티티에 송신하는 단계를 포함할 수 있다. 일부 구현예에서, 제1 처리 엔티티와 제2 라우팅 엔티티 사이의 제3 데이터의 송신 및 제2 처리 엔티티와 제2 라우팅 엔티티 사이의 제4 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행된다. 제1 블레이드는 복수의 블레이드 중 하나일 수 있고 제1 라우팅 엔티티는 복수의 라우팅 엔티티 중 하나일 수 있다. 제1 처리 엔티티에 의해 수신되는 제1 패킷은 하나 이상의 인터페이싱 엔티티에서 우선 수신되고 복수의 라우팅 엔티티 중 하나를 통해 제1 처리 엔티티에 송신될 수 있다.
예시적 장치는 제1 I/O 요청을 수신하는 수단, 제1 I/O 요청과 연관되는 제1 데이터가 제1 라우팅 엔티티에 결합되는 제1 위치에서 제1 블레이드 상에 저장되는 것을 결정하는 수단으로서, 제1 블레이드는 NVM 저장 매체를 포함하는 수단, 제1 블레이드 상에 데이터의 저장을 위해 제1 I/O 요청과 연관되는 제1 데이터를 제1 라우팅 엔티티에 송신하는 수단; 제2 I/O 요청을 수신하는 수단, 제2 I/O 요청과 연관되는 제2 데이터가 제2 라우팅 엔티티에 결합되는 제2 위치에서 제2 블레이드 상에 저장되는 것을 결정하는 수단, 및 제2 블레이드 상에 제2 데이터의 저장을 위해 제2 I/O 요청과 연관되는 제2 데이터를 제2 라우팅 엔티티에 송신하는 수단을 포함할 수 있다.
저장 매체에 액세스하는 다양한 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체가 설명된다. 저장 매체에 최적으로 액세스하는 기술이 설명된다. 일 구현예에서, 저장 디바이스는 비휘발성 메모리(NVM) 저장 매체를 사용하여 구현될 수 있다.
특정 예시적 구현예에서, 2개 이상의 컨트롤러를 포함하는 능동/능동 장애 허용 저장 디바이스가 구현될 수 있다. 그러나 다른 예시적 구현예에서, 능동/대기 시스템이 또한 구현될 수 있다. 일부 구현예에서, 컨트롤러는 단일 다이 위로 수개의 별개 구성요소의 기능성을 통합하는 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 임의의 다른 기술을 사용하여 구현될 수 있다. 다른 구현예에서, 컨트롤러는 또한 다수의 별개 구성요소를 갖는 컨트롤러 보드를 포함할 수 있다. 일 양태에서, 각각의 컨트롤러 보드는 입력/출력(I/O) 요청의 처리를 분배하는 2개 이상의 처리 엔티티를 가질 수 있다. 일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 I/O 요청을 서비스하기 위해 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다.
일 구현예에서, 각각의 컨트롤러는 NVM 저장 매체를 포함하는 NVM 블레이드에 결합될 수 있다. 본 발명의 구현예는 또한 NVM 저장 매체에의 액세스 시간을 개선하는 추가 향상을 제공할 수 있다. 본 발명의 일부 구현예가 예시 목적을 위해 NVM 저장 매체를 사용하여 본원에 설명될 수 있지만, 특정 구현예에서, 본 발명은 NVM 저장 매체에 제한되지 않을 수 있고 다른 적절한 물리 저장 매체는 본 발명의 범위로부터 벗어나는 것 없이 사용될 수 있다.
일 구현예에서, 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜과 같은 표준화 프로토콜은 컨트롤러 보드의 다양한 구성요소와 또한 NVM 저장 매체 사이에서 통신하기 위해 사용될 수 있다.
예시적 저장 디바이스는 활성 모드에서 동작하도록 구성되는 제1 컨트롤러로서, NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 입력/출력(I/O) 요청을 수신하도록 구성되는 제1 컨트롤러, 활성 모드에서 동작하도록 구성되는 제2 컨트롤러로서, NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 I/O 요청을 수신하도록 또한 구성되는 제2 컨트롤러, 및 NVM 저장 매체를 포함하는 복수의 NVM 블레이드로서, 복수의 NVM 블레이드 중 적어도 하나는 NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 제1 컨트롤러 및 제2 컨트롤러에 결합되는 복수의 NVM 블레이드를 포함하는 저장 디바이스를 포함할 수 있다. 일 구현예에서, 복수의 NVM 블레이드 중 적어도 하나는 제1 컨트롤러와 통신하는 제1 라우팅 인터페이스 및 제2 컨트롤러와 통신하는 제2 라우팅 인터페이스를 포함한다. 일부 구현예에서, PCIe 프로토콜을 사용하여 제1 라우팅 인터페이스는 제1 컨트롤러와 통신할 수 있고 제2 라우팅 인터페이스는 제2 컨트롤러와 통신할 수 있다.
특정 구현예에서, 판독 동작에 대해, 제1 컨트롤러는 제1 I/O 요청을 수신하고, 제1 I/O 요청이 제1 I/O 요청과 연관되는 제1 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하고, 제1 위치에 제1 데이터를 저장하기 위해 명령 및 제1 데이터를 복수의 NVM 블레이드 중 적어도 하나에 송신하도록 구성될 수 있다. 저장 디바이스의 일 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 판독 동작을 위해 I/O 요청을 동시에 디코딩하고 NVM 저장 매체로부터 데이터를 요청하도록 구성될 수 있다.
특정 구현예에서, 기록 동작에 대해, 제2 컨트롤러는 제2 I/O 요청을 수신하고, 제2 I/O 요청이 제2 I/O 요청과 연관되는 제2 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하고, 제2 I/O 요청과 연관되는 명령 정보를 제1 컨트롤러에 송신하도록 구성된다. 제1 컨트롤러는 제2 컨트롤러로부터 송신된 명령 정보를 수신하고, 저장 명령을 복수의 NVM 블레이드 중 적어도 하나에 송신하도록 구성될 수 있다. 제2 컨트롤러는 제2 I/O 요청과 연관되는 제2 데이터를 하나 이상의 NVM 블레이드에 송신하도록 더 구성될 수 있다.
특정 구현예에서, 복수의 NVM 블레이드 중 적어도 하나는 제1 컨트롤러로부터의 명령을 버퍼링하기 위해 제1 라우팅 인터페이스에 결합되는 제1 버퍼를 포함할 수 있다. 복수의 NVM 블레이드 중 적어도 하나는 제1 버퍼가 미리 결정된 임계값을 넘어서 가득차면 제1 컨트롤러로부터 명령을 폐기하도록 더 구성될 수 있다. 일부 구현예에서, 복수의 NVM 블레이드 중 적어도 하나는 또한 제1 컨트롤러 및 제2 컨트롤러로부터의 명령에 대한 NVM 인터페이스에의 액세스를 중재하는 명령 매니저를 포함할 수 있다. 명령 매니저가 명령에 대한 에러를 검출하는 사례에서, 적어도 하나의 NVM 블레이드는 I/O 요청과 연관되는 에러 정보를 명령이 발신된 컨트롤러에 다시 송신할 수 있다.
일부 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 장애 허용 정보를 서로 통신할 수 있다. 일 양태에서, 제1 컨트롤러 및 제2 컨트롤러는 비-PCIe 브리지를 사용하여 장애 허용 정보를 서로 통신할 수 있다. 일부 사례에서, 장애 허용 정보는 제1 컨트롤러로부터 복수의 NVM 블레이드 중 하나로 제1 I/O 요청의 실패에 관한 정보를 포함할 수 있다.
일 구현예에서, 제1 컨트롤러, 제2 컨트롤러 및 복수의 NVM 블레이드는 파워 레일에 결합될 수 있으며, 파워 레일은 복수의 전원에 의해 전력 공급된다. 일 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 I/O 요청을 처리하는 하나 이상의 프로세서 및 컨트롤러와 복수의 NVM 블레이드 사이의 라우팅 동작을 위한 하나 이상의 라우터를 포함하는 인쇄 회로 보드(PCB)일 수 있다. 다른 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 처리 로직 및 라우팅 로직을 각각 포함하는 주문형 집적 회로(ASIC)일 수 있다.
저장 디바이스 상에 데이터를 저장하는 예시적 방법은 슬레이브 컨트롤러에서 제1 I/O 요청을 수신하는 단계, 제1 I/O 요청이 제1 I/O 요청과 연관되는 제1 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하는 단계, 제1 I/O 요청과 연관되는 명령 정보를 마스터 컨트롤러에 송신하는 단계, 마스터 컨트롤러에서, 슬레이브 컨트롤러로부터 송신된 명령 정보를 수신하는 단계, 및 제1 위치에 제1 데이터를 저장하기 위해 마스터 컨트롤러로부터의 제1 I/O 요청 및 슬레이브 컨트롤러로부터의 제1 데이터에 대한 송신된 명령 정보를 사용하는 저장 명령을 NVM 저장 매체를 포함하는 복수의 NVM 블레이드 중 적어도 하나에 송신하는 단계를 포함할 수 있다.
예시적 방법은 마스터 컨트롤러에서 제2 I/O 요청을 수신하는 단계, 제2 I/O 요청이 제2 I/O 요청과 연관되는 제2 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하는 단계, 및 제2 위치에 제2 데이터를 저장하기 위해 명령 및 제2 데이터를 NVM 저장 매체를 포함하는 복수의 NVM 블레이드 중 적어도 하나에 송신하는 단계를 더 포함할 수 있다. 방법은 마스터 컨트롤러에서 제2 I/O 요청을 수신하는 단계, 제2 I/O 요청이 NVM 저장 매체로부터 제2 위치로부터의 제2 데이터를 판독하는 요청인 것을 결정하는 단계, NVM 저장 매체로부터 제2 I/O 요청과 연관되는 제2 데이터를 검색하는 단계, 슬레이브 컨트롤러에서 제3 I/O 요청을 수신하는 단계, 제3 I/O 요청이 NVM 저장 매체로부터 제3 위치로부터의 제3 데이터를 판독하는 요청인 것을 결정하는 단계, 및 NVM 저장 매체로부터 제3 I/O 요청과 연관되는 제3 데이터를 검색하는 단계를 더 포함할 수 있다. 일 구현예에서, 마스터 및 슬레이브 컨트롤러는 복수의 NVM 블레이드와 통신하기 위해 PCIe 프로토콜을 사용할 수 있다.
상술한 것은 이하의 상세한 설명이 더 잘 이해될 수 있도록 예의 특징 및 기술적 장점을 오히려 광범위하게 개략 설명했다. 부가 특징 및 장점은 이하에 설명될 것이다. 개시된 개념 및 특정 예는 본 개시의 동일한 목적을 수행하기 위해 다른 구조를 수정하거나 설계하는 기초로서 용이하게 이용될 수 있다. 이와 같은 등가 구성은 첨부된 청구항의 사상 및 범위로부터 벗어나지 않는다. 연관된 장점과 함께, 조직 및 동작 방법 둘 다에 관해, 본원에 개시되는 개념의 특징인 것으로 생각되는 특징은 첨부 도면과 관련하여 고려될 때 이하의 설명으로부터 더 잘 이해될 것이다. 도면 각각은 예시 및 설명만의 목적을 위해 제공되고 청구항의 제한의 정의로서 제공되지 않는다.
상술한 것은 이하의 상세한 설명이 더 잘 이해될 수 있도록 예의 특징 및 기술적 장점을 오히려 광범위하게 개략 설명했다. 부가 특징 및 장점은 이하에 설명될 것이다. 개시된 개념 및 특정 예는 본 개시의 동일한 목적을 수행하기 위해 다른 구조를 수정하거나 설계하는 기초로서 용이하게 이용될 수 있다. 이와 같은 등가 구성은 첨부된 청구항의 사상 및 범위로부터 벗어나지 않는다. 연관된 장점과 함께, 조직 및 동작 방법 둘 다에 관해, 본원에 개시되는 개념의 특징인 것으로 생각되는 특징은 첨부 도면과 관련하여 고려될 때 이하의 설명으로부터 더 잘 이해될 것이다. 도면 각각은 예시 및 설명만의 목적을 위해 제공되고 청구항의 제한의 정의로서 제공되지 않는다.
본 개시의 양태는 예로서 예시된다. 이하의 설명은 동일한 참조 숫자가 도처에서 동일한 요소를 언급하기 위해 사용되는 도면을 참조하여 제공된다. 하나 이상의 기술의 다양한 상세가 본원에 설명되지만, 다른 기술이 또한 가능하다. 일부 사례에서, 널리 공지된 구조 및 디바이스는 다양한 기술을 설명하는 것을 용이하게 하기 위해 블록도 형태로 도시된다.
본 개시에 의해 제공되는 예의 본질 및 장점의 추가 이해는 명세서 및 도면의 나머지 부분을 참조하여 실현될 수 있으며, 여기서 동일한 참조 숫자는 유사한 구성요소를 언급하기 위해 수개의 도면 도처에서 사용된다. 일부 사례에서, 서브라벨은 다수의 유사한 구성요소 중 하나를 나타내기 위해 참조 숫자와 연관된다. 기존 서브라벨에 명세서 없이 참조 숫자가 참조될 때, 참조 숫자는 모든 이와 같은 유사한 구성요소를 언급한다.
도 1은 본 발명의 일 구현예에 따른 저장 디바이스의 예시적 하이 레벨 블록도를 예시한다.
도 2는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 블록도를 예시한다.
도 3은 본 발명의 일 구현예에 따른 저장 디바이스의 또 다른 예시적 블록도를 예시한다.
도 4는 본 발명의 또 다른 구현예에 따른 저장 디바이스의 예시적 블록도를 예시한다.
도 5는 본 발명의 일 구현예에 따른 본 발명의 구현예를 수행하는 방법을 예시하는 흐름도이다.
도 6은 본 발명의 다른 구현예에 따른 본 발명의 구현예를 수행하는 다른 방법을 예시하는 흐름도이다.
도 7은 본 발명의 일 구현예에 따른 컨트롤러 보드의 예시적 블록도를 예시한다.
도 8은 본 발명의 적어도 하나의 구현예에 따른 컨트롤러 보드 상의 각각의 구성요소에 의해 보여지는 바와 같이 다양한 구성요소에 대한 어드레스 공간의 예시적 블록도를 예시한다.
도 9는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 하이 레벨 블록도를 예시한다.
도 10은 본 발명의 일 구현예에 따른 NVM 블레이드의 예시적 블록도를 예시한다.
도 11은 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 예시적 블록도를 예시한다.
도 12는 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 다른 예시적 블록도를 예시한다.
도 13은 본 발명의 구현예를 수행하는 컴퓨터 시스템을 도시한다.
수개의 예시적 구현예는 이제 그것의 일부를 형성하는 첨부 도면에 대해 설명될 것이다. 본 개시의 하나 이상의 양태가 구현될 수 있는 특정 구현예가 아래에 설명되지만, 다른 구현예가 사용될 수 있고 다양한 수정은 본 개시의 범위 또는 첨부된 청구항의 사상으로부터 벗어나는 것 없이 이루어질 수 있다.
본 발명의 구현예를 논의하기 전에, 일부 용어의 설명은 본 발명의 구현예를 이해할 시에 도움이 될 수 있다.
일부 구현예에서, "저장 디바이스"는 본원에서 논의되는 바와 같이, 저장 매체로부터 데이터를 저장하고 검색하도록 구성되는 컴퓨터 시스템을 포함할 수 있다. 컴퓨터 시스템은 도 13을 참조하여 설명되는 일부 또는 모든 구성요소를 사용하여 구현될 수 있다. 일부 구현예에서, 저장 디바이스는 저장 디바이스에 저레이턴시 및 고가용성 링크를 사용하는 네트워크를 통한 데이터의 액세스에 대한 요구를 갖는 기업 환경 또는 다른 유사한 환경에 사용될 수 있다. 더 낮은 전력 소비, 더 낮은 비용 및 좋은 열 소산은 또한 저장 디바이스로부터 바람직할 수 있다. 일부 구현예에서, 저장 디바이스는 랙 마운터블 디바이스일 수 있으며, 다수의 저장 디바이스는 집합적으로 배치되고 유지될 수 있다. 다른 구현예에서, 저장 디바이스는 독립형 디바이스일 수 있다. 저장 디바이스는 종래의 컴퓨터 시스템과 유사한 다른 주변 장치 및 디바이스를 가질 수 있지만, 일부 구현예에서, 저장 디바이스는 물리 공간 및 에너지의 사용을 최소화하기 위해 최적화되는 모듈식 설계를 갖는 스트립 다운(stripped down) 서버 컴퓨터일 수 있다. 저장 디바이스는 또한 I/O 요청을 수신하고, 그들 I/O 요청을 디코딩하고 I/O 요청을 기본 물리 매체에 대한 판독, 기록 및 구성 명령으로 변환하기 위해 저장 디바이스 내의 저장 매체 상에 저장되고 프로세서에 의해 실행되는 파일 시스템 소프트웨어 스택을 포함할 수 있다.
본 발명의 일부 구현예에서, "플래시 저장 매체"는 본원에서 논의되는 바와 같이, 비휘발성 메모리(NVM)를 포함할 수 있다. 일부 사례에서, NVM을 사용하는 저장 디바이스의 구현예는 또한 고체 상태 디바이스로 언급될 수 있다. NVM 기반 디바이스의 예시적 구현예는 NOR, NAND, MRAM(Magnetoresistive RAM), FRAM(Ferroelectric RAM), RRAM(Resistive RAM)), 상 변화 메모리 또는 임의의 다른 적절한 기술을 사용하는 것을 포함할 수 있지만, 이에 제한되지 않는다. NOR 플래시는 고속 랜덤 액세스를 제공하고 데이터를 특정 메모리 위치에 예컨대 단일 바이트까지 판독하고 기록할 수 있다. NAND 플래시는 랜덤하게 판독될 수 있지만 전형적으로 고속으로 순차 기록되어, 페이지로 칭해지는 작은 블록에서 데이터를 처리한다. NAND 플래시는 그것이 기록하는 것보다 더 빠르게 판독할 수 있어, 데이터의 전체 페이지를 신속히 전송한다. NOR 플래시는 판독이 NAND 플래시보다 더 빠를 수 있고 기록이 더 느릴 수 있는 것을 제외하고 동일한 방식으로 작용할 수 있다. 일반적으로, 고밀도의 NOR 플래시보다 덜 비싼 NAND 기술은 동일한 크기 실리콘을 위해 더 높은 용량을 제공할 수 있다.
일부 구현예에서, 본 발명의 구현예는 단일 레벨 셀(SLC) NAND 플래시 기술을 이용할 수 있다. 다른 구현예에서, 본 발명의 구현예는 멀티 레벨 셀(MLC) NAND 플래시 저장 매체를 이용할 수 있다. MLC NAND는 더 많은 비트가 동일한 수의 트랜지스터들을 사용하여 저장되는 것을 허용하기 위해 셀 당 다수의 레벨을 사용하는 플래시 메모리 기술이다. SLC NAND 플래시 기술에서, 각각의 셀은 2개의 상태 중 하나에 존재할 수 있어, 셀 당 1 비트의 정보를 저장한다. 대부분의 MLC NAND 플래시 메모리 기술은 셀 당 4개의 가능한 상태를 가지므로, 그것은 셀 당 2 비트의 정보를 저장할 수 있다. MLC NAND를 사용하는 것은 더 높은 데이터 밀도로 인해 저장 단위 당의 비용을 감소시키는데 유리할 수 있다.
본원에 설명되는 바와 같이, "블레이드", "플래시 블레이드" 또는 "NVM 블레이드"는 일부 구현예에서, 저장을 제공하기 위해 함께 하나 이상의 NVM 칩의 그룹화를 언급할 수 있으며, NVM 칩은 NVM 저장 매체를 포함한다. NVM 블레이드는 NVM 저장 매체에의 액세스를 중재하는 블레이드 컨트롤러를 가질 수 있다. NVM 블레이드 컨트롤러는 NVM 저장 매체 상에서 데이터를 액세스/저장하는 명령을 수신하거나, 명령을 처리하며 NVM 저장 매체로부터 데이터를 저장하거나 검색할 책임이 있을 수 있다. 일 구현예에서, NVM 블레이드 컨트롤러는 주문형 집적 회로(ASIC)를 사용하여 구현될 수 있다. 다른 구현예에서, NVM 블레이드 컨트롤러는 필드 프로그램 가능 게이트 어레이(FPGA)를 사용하여 구현될 수 있다.
본원에 정의되는 바와 같이, "컨트롤러 보드"는 I/O 요청을 수신하고 그들 I/O 요청을 NVM 저장 매체를 판독, 기록 또는 구성하는 명령으로 변환하는 다양한 하드웨어, 펌웨어 및 소프트웨어 구성요소를 포함할 수 있다. 일 구현예에서, 컨트롤러 보드는 인쇄 회로 보드(PCB)를 사용하여 구현될 수 있으며, 컨트롤러 보드의 다양한 구성요소는 보드에 결합되고 버스를 사용하여 서로 통신할 수 있다. 다른 구현예에서, 무선과 같은, 다른 통신 수단은 구성요소 사이에서 통신하기 위해 사용될 수 있다. 도 7은 컨트롤러 보드의 예시적 구현예이다. 본 발명의 구현예가 수개의 별개 구성요소에 관해 설명될 수 있지만, 일부 구현예에서, 수개의 별개 구성요소의 기능성은 하나의 실리콘 다이에 의해 수행될 수 있다. 예를 들어, 처리 및 라우팅과 같은 다수의 별개 구성요소의 기능성은 본원에 설명되는 바와 같이, 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 멀티칩 모듈(MCM) 또는 임의의 다른 실리콘 기술로 구현되는 컨트롤러에 의해 수행될 수 있다. 본원에 설명되는 바와 같이, 일 구현예에서, "컨트롤러 보드"는 인쇄 회로 보드를 사용하여 한 세트의 기능을 구현하는 수개의 별개 구성요소를 언급할 수 있지만, "컨트롤러"는 컨트롤러 보드(예를 들어, 별개 구성요소를 갖는 PCB 보드) 및 컨트롤러(예를 들어, ASIC, FPGA 등으로 구현되는 수개의 별개 구성요소의 기능성) 둘 다를 언급할 수 있다.
본원에 설명되는 바와 같이, "처리 엔티티"는 하나 이상의 물리 또는 논리 프로세서를 언급할 수 있다. 용어 "처리 엔티티" 또는 "처리 컴플렉스"는 본 발명의 범위에서 벗어나는 것 없이, 본 명세서 도처에서 교환 가능하게 사용될 수 있다. 예를 들어, 처리 엔티티는 인텔, 퀄컴, 및 타일라와 같은 벤더로부터의 듀얼 코어, 쿼드 코어 또는 멀티 코어 프로세서를 포함할 수 있다. 처리 엔티티는 저장 매체에 액세스하기 위해 파일 시스템 소프트웨어 스택을 실행하고 네트워크로부터의 I/O 요청을 디코딩할 수 있다. 일 구현예에서, 처리 엔티티는 PCIe 프로토콜 또는 유사한 프로토콜을 위한 루트 컴플렉스를 포함할 수 있다. 일 구현예에서, 처리 엔티티는 ASIC, FPGA 또는 MCM 내에서 처리 로직으로 구현될 수 있다.
본원에 설명되는 바와 같이, "라우팅 엔티티"는 인터페이싱 엔티티, 처리 엔티티, NVM 블레이드 및 라우팅 엔티티 자체 사이에서 데이터를 라우팅하는 하나 이상의 라우터를 언급할 수 있다. 일 구현예에서, 라우팅 엔티티는 PCIe 프로토콜을 위한 PCIe 노드 또는 종단점을 나타낼 수 있다.
본원에 설명되는 바와 같이, "인터페이싱 엔티티"는 저장 디바이스와 인터페이스하는 하나 이상의 호스트 인터페이스 칩을 언급할 수 있다. 일 구현예에서, 인터페이싱 엔티티는 PCIe 프로토콜을 사용하여 I/O 요청을 라우팅 엔티티에 전송할 수 있다. 인터페이스 칩에서의 I/O 요청은 기가비트 이더넷, 파이버 채널, 다이얼 인 또는 심지어 PCIe 프로토콜과 같은 임의의 적절한 프로토콜을 사용하여 수신될 수 있다.
본원에 설명되는 바와 같이, "I/O 요청"은 저장 매체로부터 데이터를 저장하거나 검색하기 위해 네트워크로부터 저장 디바이스로의 입력/출력 요청을 언급할 수 있다.
본원에 설명되는 바와 같이, "주변 구성요소 상호연결 익스프레스(PCIe)"는 더 높은 최대 시스템 버스 처리량, 더 낮은 I/O 핀 카운트 및 더 작은 물리 풋프린트, 버스 디바이스에 대한 더 좋은 성능 스케일링, 더 상세한 에러 검출 및 보고 메커니즘 및 고유 핫 플러그 기능성을 위해 설계되는 고속 직렬 컴퓨터 확장 버스 표준을 언급할 수 있다. 종래의 PCIe 시스템에서, PCIe 루트 컴플렉스는 프로세서에 결합되는 모든 종단점 디바이스를 열거하고 트리형 구조를 생성한다.
기업 시스템에 대한 저장 디바이스는 대량 저장 용량, 저장 디바이스에 판독 및 기록을 위한 저레이턴시, 고대역폭, 저전력 소비, 및 신뢰성을 필요로 한다. 전통적으로, 기업 시스템은 전력이 턴 오프되는 동안에 데이터를 유지하는 하드 디스크 드라이브(HDD)와 같은 저장 매체를 사용하여 구현된다. HDD는 신속 회전 디스크를 사용하여 디지털 정보를 저장하고 검색하기 위해 사용되는 데이터 저장 디바이스이다. HDD는 데이터를 판독하고 그것을 표면에 기록하기 위해 가동 액추에이터 아암 상에 배열되는 자기 헤드를 갖는 하나 이상의 강성("하드") 신속 회전 디스크(플래터)로 구성된다.
데이터를 판독하고 기록할 시에 수반되는 가동 부분으로 인해, HDD는 에러 및 고장의 경향이 본질적으로 있고, 데이터에 대한 탐색 시간의 개선에 관한 플로어를 갖는다. 부가적으로, HDD는 스피닝 플래터를 가지므로, 또한 부분이 얼마나 작게 제조될 수 있는지 및 부분의 전력 소비에 관한 제한이 있다.
특정 구현예에서, 본원에 설명되는 기술은 NVM 저장 매체를 사용하여 저장 디바이스를 구현하는 것을 제안한다. 일부 구현예에서, NVM 저장 매체는 더 낮은 탐색 시간을 갖고, 가동 부분을 갖지 않고, HDD보다 일반적으로 더 신뢰성이 있을 수 있으므로, NVM 저장 매체를 사용하는 것이 일반적으로 유리할 수 있다.
일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다.
종래의 저장 디바이스는 I/O 요청을 수신하고, 요청을 처리하고 저장 요청을 적절한 저장 매체에 전송하기 위해 유니터리 처리 컴플렉스를 포함하는 각각의 컨트롤러 보드를 갖는 하나 이상의 컨트롤러 보드를 제공할 수 있다. 증가하는 네트워크 속도 및 저장 디바이스의 크기의 증가에 대한 계속 증가하는 요구에 따라, 저장을 위해 물리 매체에 액세스하는 유니터리 포인트는 I/O 요청에 대해 고레이턴시를 야기하는 시스템에 대한 보틀넥이 될 수 있다. 유니터리 처리 컴플렉스에서 처리 부하를 증가시키는 것은 더 작은 영역에 더 높은 열 집중을 야기해서 적절한 열 소산을 도전하고 있다. 더욱이, 단일 처리 유닛은 I/O 요청을 따르기에 충분히 빠른 트랜잭션을 처리 가능하게 하지 않을 수 있다. 종래의 시스템에서, 유니터리 시스템 설계는 트랜잭션 보틀넥이 종종 HDD에 대한 판독 및 기록을 위한 탐색 시간 이상이고 HDD에 대한 처리 경로가 아니므로, 문제가 되지 않을 수 있다.
일부 구현예에서, 저장 디바이스는 NVM 저장 매체를 사용하여 구현될 수 있다. 일반적으로, NVM 저장 매체는 종래의 HDD보다 더 낮은 탐색 시간을 가질 수 있다. NVM 저장 매체에 의해 제공되는 더 낮은 탐색 기간의 경우, 단일 처리 컴플렉스를 사용하는 종래의 컨트롤러 보드 설계는 차선의 구성을 야기할 수 있다. 본 발명의 구현예는 또한 NVM 저장 매체에의 액세스 시간을 개선하기 위해 추가 강화를 제공할 수 있다. 본 발명의 일부 구현예는 예시 목적을 위해 NVM 저장 매체를 사용하여 본원에 설명될 수 있지만, 본 발명은 NVM 저장 매체에 제한되지 않을 수 있고 다른 적절한 물리 저장 매체는 본 발명의 범위로부터 벗어나는 것 없이 사용될 수 있다.
더욱이, 종래의 저장 디바이스는 데이터에 대한 미러링된 저장을 유지함으로써 장애 허용 시스템을 구현할 수 있다. 다시 말하면, 각각의 기록 동작에 대해, 데이터는 독립 처리 경로를 사용하여 적어도 2개의 개별 저장 서브시스템에 저장될 수 있다. 전원 고장, 저장 매체의 고장 또는 처리 경로 내의 에러와 같은 제1 저장 서브시스템 내의 돌발 고장의 경우에, 미러링된 데이터를 갖는 제2 저장 시스템은 제1 시스템이 복구하는 동안에 데이터를 검색하고 저장하기 위해 활성 백업으로서 사용될 수 있다. HDD에 대해, 미러링된 데이터를 유지하는 것은 매체의 저신뢰성으로 인해 필수적이고 매체와 연관되는 더 낮은 비용으로 인해 실현 가능할 수 있다.
일부 구현예에서, NVM 저장 매체는 장애 허용 시스템을 구현하기 위해 사용될 수 있다. 상대적으로, NVM 저장 매체는 종래의 저장 매체보다 더 신뢰성이 있고 에러의 경향이 더 적을 수 있다. 일부 구현예에서, NVM 저장 매체 상에 저장되는 데이터의 신뢰성은 복수 어레이 독립 디스크(RAID) 또는 다른 적절한 에러 복구 및 정정 기술과 같은 기술을 사용하여 보장될 수 있다. 따라서 도면을 참조하여 본원에서 논의되는 구현예에 더 상세히 설명되는 바와 같이, 저장 매체를 포함하는 전체 시스템을 미러링하는 대신에, 동일한 판독 또는 기록 동작을 위한 다수의 경로를 NVM 저장 매체의 동일한 물리 위치에 제공함으로써 시스템의 전체 비용을 감소시키는 것은 NVM 저장 매체를 사용하여 구현되는 구현예에서 유리할 수 있다.
도 1은 본 발명의 일 구현예에 따른 저장 디바이스의 예시적 하이 레벨 블록도를 예시한다. 블록(102)은 2개의 컨트롤러 보드(104 및 106) 및 컨트롤러 보드에 결합되는 블레이드(120a-n)의 어레이를 갖는 저장 디바이스를 예시한다. 일 구현예에서, 도 1로부터의 저장 디바이스는 능동/능동 저장 시스템을 나타낼 수 있다. 능동/능동 구성은 컨트롤러 보드 둘 다에 대한 처리 모듈이 I/O를 처리하고 다른 것에 대한 대기 능력을 제공할 수 있게 한다. 하나의 단순한 예에서, 특정 블레이드에 대한 판독 또는 기록 명령이 컨트롤러 보드(104)로부터 실패하면, 동일한 판독 또는 기록은 컨트롤러 보드(106)를 통해 시도될 수 있다. 통신 프로토콜은 컨트롤러 보드(104 및 106) 사이에서 상태 정보를 통신하기 위해 구현될 수 있다. 컨트롤러 보드 둘 다와 연관되는 처리 모듈이 I/O를 동시에 또는 거의 동시에 처리할 수 있으므로, 성능을 향상시키기 위해 능동/능동 저장 디바이스를 구현하는 것이 유리할 수 있다. 그러나, 도 1로부터의 저장 디바이스는 능동/능동 저장 디바이스에 제한되지 않고 또한 능동/수동 구성으로 사용될 수 있으며, 하나의 컨트롤러 보드에 대한 처리 모듈은 I/O 요청을 처리하기 위해 활성인 반면에, 다른 것은 능동 일차 컨트롤러 보드가 고장나거나 오프라인으로 취해져야 하는 I/O 활동을 대체할 준비가 되어있는 대기 모드에서 아이들(idle)이다.
도 1에 도시된 바와 같이, 각각의 NVM 블레이드는 컨트롤러 보드 둘 다에 결합될 수 있다. 각각의 컨트롤러 보드는 라우팅을 위한 라우팅 모듈(108 및 110), I/O 요청을 처리하는 처리 모듈(112 및 114) 및 I/O 요청을 수신하는 호스트 인터페이스(116 및 118)를 갖는다. 일 구현예에서, 라우팅 모듈(108 및 110)은 I/O 요청의 추가 처리를 위해 I/O 요청을 인터페이스 모듈(116 및 118)로부터 처리 모듈(112 및 114)로 라우팅할 책임이 있을 수 있다. 처리 모듈(112 및 114)은 파일 시스템 소프트웨어 스택(도시되지 않음)을 사용하여 I/O 요청을 처리할 수 있다. 라우팅 모듈(108 및 110)은 또한 액세스 및 저장 요청을 처리 모듈(112 및 114)로부터 NVM 블레이드(120a-n)로 라우팅한다. 일 구현예에서, NVM 블레이드는 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 라우팅 모듈(108 및 110)에 결합된다.
일 구현예에서, 각각의 NVM 블레이드는 컨트롤러 보드(104 및 106) 둘 다에 결합될 수 있어 NVM 저장 매체의 각각의 물리 어드레스가 컨트롤러 보드 중 어느 한쪽에 의해 액세스 가능하게 하는 것을 허용한다. 이와 같은 구성은 기본 저장 매체의 복제 및 데이터의 미러링을 회피하는 것에 유리할 수 있으며, 물리 매체 상의 데이터의 신뢰성은 RAID, 또는 그것의 임의의 조합과 같은 더 신뢰성 있는 저장 매체 및/또는 정교한 데이터 복구 기술을 사용함으로써 보증될 수 있다.
도 2는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 블록도를 예시한다. 도 2는 2개의 컨트롤러 보드의 이미지를 도시하며, 각각의 컨트롤러 보드는 2개의 프로세서, 메모리, 라우터, 및 인터페이스 칩을 포함한다. 도 2는 또한 공기흐름을 위한 중심 채널을 갖는 42 NVM 블레이드를 도시한다. 도시되지 않지만, 저장 디바이스는 또한 전력 관리 기능성 및 온보드 NVM을 갖는 2개의 브리지 보드를 포함할 수 있다. 온보드 NVM은 포인터, 갱신된 활동, 캐시 백업 및 판독/기록 버퍼와 같은 동적 메타데이터를 저장하기 위해 사용될 수 있다. 일부 구현예에서, 바이트 기록 가능한 자기 RAM과 같은 NVM은 온보드 NVM을 구현하기 위해 사용될 수 있다. 부가적으로, 저장 디바이스는 12 팬을 포함할 수 있으며, 8 팬은 NVM 메모리를 냉각시키는데 사용되고 4 팬은 컨트롤러 보드를 냉각시키는데 사용된다. 구성요소는 공기흐름, 처리 부하, 열 소산을 최적화하기 위해 도 2의 예시적 구성에 배치될 수 있다. 저장 디바이스 또한 다수의 전원을 포함할 수 있다. 전원은 일반적으로 고장이 나기 쉽고 팬 또는 다른 전력 구성요소의 고장으로 인해 고장날 수 있다. 저장 디바이스에 전력 공급하는 다수의 전원을 갖는 것은 전원 중 하나에 대한 구성요소의 고장으로 인한 저장 디바이스의 고장을 회피할 수 있다. 일 구현예에서, 컨트롤러 또는 컨트롤러 보드는 파워 레일을 통해 전력 공급될 수 있으며, 파워 레일은 다수의 전원으로부터 전력을 공급할 수 있다. 파워 레일에 연결되는 전원 중 하나의 고장의 경우에, 파워 레일은 기능 전원으로부터 전력을 계속 공급한다. 일부 구현예에서, 고장난 전원은 적절한 기능 전원으로 핫 스왑 가능(hot-swappable)(즉, 저장 디바이스를 사이클링하는 전력 없이 대체 가능)할 수 있다.
NVM 블레이드 및 컨트롤러/컨트롤러 보드는 보드 중 어느 하나가 고장나면 단락을 방지하는 개별적으로 구현된 디지털 회로 차단기를 가질 수 있다. 더욱이, 전원은 또한 그것이 파워 레일에 전력만을 공급하지만, 전원이 고장난 경우에 파워 레일로부터 전력을 배출하지 않는 것을 허용하는 방식으로 구현될 수 있다. 일 구현예에서, 다이오드는 전력이 고장난 전원으로부터 배출되는 것을 방지하기 위해 사용될 수 있다.
컨트롤러 보드, 전원, NVM 블레이드, 브리지 보드 및 팬 및 그것의 연관된 구성과 같은 도 2를 참조하여 설명되는 구성요소의 수는 제한되지 않고 저장 디바이스의 특정 구성을 예시하는 일 예로 제공된다.
도 3은 본 발명의 일 구현예에 따른 저장 디바이스의 또 다른 예시적 블록도를 예시한다. 도 3에 도시된 바와 같이, 저장 디바이스의 구성요소는 직사각형 형상 박스에 끼워맞춰지도록 구성될 수 있다. 하나의 예시적 구성에서, 공기흐름은 전면에서 후면까지일 수 있으며, 팬은 저장 디바이스의 후면에 배치된다. 이와 같은 형상은 다수의 저장 디바이스를 기업 데이터 저장 시설에서 랙 구성으로 함께 그룹화하는 데 유리할 수 있다. 그러나 저장 디바이스의 형상은 도 3에 도시된 직사각형 형상 박스에 제한되지 않는다.
도 4는 본 발명의 일 구현예에 따른 저장 디바이스의 예시적 블록도를 예시한다. 도 4의 시스템(402)은 제1 컨트롤러 보드(404) 및 제2 컨트롤러 보드(406)를 갖는 저장 디바이스를 예시한다. 예시 목적을 위해, 도 4는 복수의 NVM 블레이드로부터의 단일 NVM 블레이드(420)를 도시한다.
제1 컨트롤러 보드(404)는 제1 처리 엔티티(412), 제1 처리 엔티티(416)에 결합되는 메모리, 제2 처리 엔티티(414), 제2 처리 엔티티(432)에 결합되는 메모리, 인터페이싱 엔티티(408), 및 라우팅 엔티티(410)를 가질 수 있다.
제2 컨트롤러 보드(406)는 제3 처리 엔티티(424), 제3 처리 엔티티(428)에 결합되는 메모리, 제4 처리 엔티티(418), 제4 처리 엔티티(430)에 결합되는 메모리, 인터페이싱 엔티티(422), 및 라우팅 엔티티(426)를 가질 수 있다.
일 구현예에서, 라우팅 엔티티(410 및 426)는 I/O 요청의 추가 처리를 위해 인터페이싱 엔티티(408 및 422)로부터의 I/O 요청을 처리 엔티티(412, 416, 428 및 430) 중 하나에 라우팅할 책임이 있을 수 있다. 처리 엔티티는 파일 시스템 소프트웨어 스택(도시되지 않음)을 사용하여 I/O 요청을 처리할 수 있다. 라우팅 엔티티(410 및 426)는 또한 처리 엔티티(412, 416, 428 및 430)로부터의 데이터 요청을 NVM 블레이드(420)에 라우팅한다.
일부 구현예에서, 제1 컨트롤러 보드(404)로부터의 라우팅 엔티티(410) 및 제2 컨트롤러 보드(406)로부터의 라우팅 엔티티(426)는 NVM 블레이드(420)로부터 데이터를 저장하고 검색하기 위해 NVM 블레이드(420)에 결합될 수 있다. 일 구현예에서, NVM 블레이드(420)는 PCIe 프로토콜을 사용하여 라우팅 엔티티에 결합된다. 이와 같은 구성은 기본 저장 매체의 복제 및 데이터의 미러링을 회피하는 것에 유리할 수 있으며, 물리 매체 상의 데이터의 신뢰성은 RAID, 또는 그것의 임의의 조합과 같은 더 신뢰성있는 저장 매체 및/또는 정교한 데이터 복구 기술을 사용함으로써 보장될 수 있다.
도 4에 있어서, 하나의 예시적 구성에서, 제1 처리 엔티티(412)는 하나 이상의 I/O 요청을 수신하고, I/O 요청과 연관되는 데이터가 저장 동작을 위한 것이고 제1 라우팅 엔티티(410)에 결합되는 제1 블레이드 상의 특정 위치와 연관되는 것을 결정하고, 제1 블레이드(420) 상의 제1 데이터의 저장을 위해 I/O 요청과 연관되는 데이터를 제1 라우팅 엔티티에 송신하도록 구성될 수 있다. 일 구현예에서, 제1 처리 엔티티(412) 상에 실행하는 파일 시스템 소프트웨어 스택은 I/O 요청과 연관되는 위치 및 NVM 블레이드 동작을 결정할 수 있다. 예를 들어, 일 구현예에서, 제1 처리 엔티티(412)는 물리 저장 매체 상의 데이터를 위해 파일 식별자로부터의 하나 이상의 어드레스 변환을 물리 위치에 수행할 수 있다. 일 양태에서, 제1 처리 엔티티(412)에 의해 수신되는 I/O 요청은 인터페이싱 엔티티(408)에서 우선 수신되고 복수의 라우팅 엔티티 중 하나를 통해 제1 처리 엔티티(412)에 송신될 수 있다.
유사하게, 제2 처리 엔티티(414)는 다른 I/O 요청을 수신하고, I/O 요청과 연관되는 데이터가 제1 라우팅 엔티티(410)에 결합되는 제1 블레이드(420) 상의 다른 위치에 저장되는 것을 결정하고 제1 블레이드(420) 상의 데이터의 저장을 위해 I/O 요청과 연관되는 데이터를 제1 라우팅 엔티티(410)에 송신하도록 구성될 수 있다. 제2 처리 엔티티(414)는 또한 I/O 요청과 연관되는 위치 및 저장 동작을 결정하는 파일 시스템 소프트웨어 스택을 실행할 수 있다.
상기 예는 동일한 컨트롤러 보드로부터 2개의 처리 엔티티 사이의 동일한 NVM 블레이드(420)에 액세스하기 위해 로드 밸런싱을 수행하고 처리 엔티티(412 및 414) 사이에서 다수의 I/O 요청을 확산시키는 예시적 구성 및 프로세스를 예시한다. 2개의 처리 엔티티가 도시되지만, 다수의 처리 엔티티가 사용될 수 있다. 이것은 다수의 저장 동작을 동일한 물리 매체와 동시에 매우 고속으로 수행하는 동안에 I/O 요청을 처리하는 부하를 확산시키고 또한 보틀넥을 회피하는 데에 유리할 수 있다.
저장된 데이터는 또한 유사한 기술을 사용하여 물리 매체로부터 검색될 수 있다. 예를 들어, 제2 처리 엔티티(414)는 이와 같은 점에 대해 제1 처리 엔티티(412) 또는 임의의 다른 처리 엔티티에 의해 저장되는 데이터를 판독하기 위해 I/O 요청을 수신하도록 구성될 수 있다. 제2 처리 엔티티(414)는 I/O 요청이 제1 라우팅 엔티티(410)에 결합되는 제1 블레이드(420)의 위치에서의 데이터에 대한 판독 요청인 것을 결정하고, 제1 라우팅 엔티티(410)로부터 위치로부터의 데이터를 요청하고, 제1 라우팅 엔티티(410)로부터 제1 데이터를 수신할 수 있다.
하나의 예시적 구성에서, 제1 처리 엔티티(412) 및 제2 처리 엔티티(414)는 직접 결합되는 것이 아니라, 제1 라우팅 엔티티(410)를 통해 서로 결합될 수 있다. 제1 처리 엔티티(412)와 제1 라우팅 엔티티(410) 사이의 데이터의 송신 및 제2 처리 엔티티(414)와 제1 라우팅 엔티티(410) 사이의 데이터의 송신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다.
예시 목적을 위해, 도 4는 하나의 NVM 블레이드 및 2개의 컨트롤러 보드를 도시하지만, 각각의 컨트롤러 보드는 2개의 처리 엔티티, 2개의 메모리 및 라우팅 엔티티 및 인터페이싱 엔티티를 가지며, 본 발명의 구현예는 도면에 도시되는 엔티티의 수에 제한되지 않는다. 예를 들어, 다른 예시적 구성은 본 발명의 범위로부터 벗어나는 것 없이, 다수의 NVM 블레이드, 다수의 라우팅 엔티티 및 다수의 인터페이싱 엔티티를 포함할 수 있다. 도 7은 다수의 라우터(라우팅 엔티티) 및 다수의 인터페이스 칩(인터페이싱 엔티티)을 갖는 이와 같은 구성의 일 예이다.
다른 예시적 구성에서, 제1 처리 엔티티(412) 및 제2 처리 엔티티(414)는 제1 컨트롤러 보드(404) 상의 다른(제2) 라우팅 엔티티(도시되지 않음)에 결합될 수 있다. 라우팅 엔티티(410)와 유사하게, 제2 라우팅 엔티티는 또한 다른 NVM 블레이드에 결합될 수 있고 제1 처리 엔티티(412) 및 제2 처리 엔티티(414) 둘 다로부터 수신되는 저장 액세스 명령을 처리할 수 있다. 제1 처리 엔티티(412)와 제2 라우팅 엔티티(도시되지 않음) 사이의 데이터의 송신 및 제2 처리 엔티티(414)와 제2 라우팅 엔티티(도시되지 않음) 사이의 데이터의 송신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다. 유사하게, 제2 컨트롤러 보드(406) 상의 구성요소는 상기 설명된 제1 컨트롤러 보드(404)와 유사한 방식으로 구성되고 동작될 수 있다.
NVM 블레이드(420)는 복수의 컨트롤러 보드와 통신하기 위해 다수의 라우팅 인터페이스를 포함할 수 있다. 저장 디바이스(402)의 하나의 예시적 구현예에서, 라우팅 엔티티(410)를 포함하는 제1 컨트롤러 보드(404) 및 라우팅 엔티티(426)를 포함하는 제2 컨트롤러 보드(406)는 NVM 블레이드(420)에 결합된다. NVM 블레이드(420)는 라우팅 엔티티(410)를 통해 제1 컨트롤러 보드(404)에 결합될 수 있고 NVM 블레이드는 라우팅 엔티티(426)를 통해 제2 컨트롤러 보드(406)에 결합될 수 있다. 일 구현예에서, NVM 블레이드(420)는 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 컨트롤러 보드 상의 라우팅 엔티티(410 및 426)와 통신한다. 일 구현예에서, NVM 블레이드는 NVM 저장 매체를 포함한다. 다른 구현예에서, 저장 디바이스는 복수의 NVM 블레이드를 포함할 수 있고 컨트롤러 보드는 복수의 라우팅 엔티티를 포함할 수 있다.
일부 구현예에서, 제1 컨트롤러 보드(404)로부터의 라우팅 엔티티(410) 및 제2 컨트롤러 보드(406)로부터의 라우팅 엔티티(426)는 서로 결합될 수 있다. 일부 구현예에서, 2개의 라우팅 엔티티는 비-PCIe-부합 투명 브리지를 사용하여 서로 결합될 수 있다. 일 구현예에서, 2개의 라우팅 엔티티(410 및 426)는 장애 허용 정보, 시스템 상태 정보, 트랜잭션 완료의 정보 및 컨트롤러 보드의 상태에 관한 다른 정보를 서로 통신할 수 있다.
일 구현예에서, 도 4로부터의 저장 디바이스(402)는 능동/능동 저장 시스템을 나타낼 수 있다. 능동/능동 구성은 컨트롤러 보드 둘 다에 대한 처리 모듈이 I/O 판독을 처리하고 다른 것에 대한 대기 능력을 제공할 수 있게 한다. 하나의 단순한 예에서, 특정 블레이드에 대한 판독 또는 기록 명령이 컨트롤러 보드(404)로부터 실패하면, 동일한 판독 또는 기록은 컨트롤러 보드(406)를 통해 시도될 수 있다. 상기 설명된 바와 같이, 통신 프로토콜은 라우팅 엔티티(410 및 426)를 통해 컨트롤러 보드(404 및 406) 사이에 상태 정보를 통신하도록 구현될 수 있다. 컨트롤러 보드 둘 다와 연관되는 처리 모듈이 I/O를 동시에 처리할 수 있으므로, 성능을 향상시키기 위해 능동/능동 저장 디바이스를 구현하는 것이 유리할 수 있다. 그러나, 도 4로부터의 저장 디바이스는 능동/능동 저장 디바이스에 제한되지 않고 또한 능동/수동 구성으로 사용될 수 있으며, 하나의 컨트롤러 보드에 대한 처리 모듈은 I/O 요청을 처리하기 위해 활성인 반면에, 다른 것은 능동 일차 컨트롤러 보드가 고장나거나 오프라인으로 취해져야 하는 I/O 활동을 대체할 준비가 되어 있는 대기 모드에서 아이들이다.
능동/능동 시스템의 일 구현예에서, 하나 이상의 컨트롤러 보드는 마스터 보드의 역할을 가정할 수 있고 다른 하나 이상의 보드는 슬레이브 보드의 역할을 가정할 수 있다. 마스터 컨트롤러 보드는 모든 데이터 기록을 NVM 블레이드에 수행할 수 있는 반면에, 마스터 또는 슬레이브 보드 중 어느 한쪽은 판독을 수행할 수 있다.
하나의 예시적 구현예에서, 슬레이브 컨트롤러 보드에 도달하는 I/O 기록 동작은 마스터 컨트롤러 보드에 의해 부분적으로 수행될 수 있다. 예를 들어, 기록 명령 또는 기록 명령과 연관되는 정보는 슬레이브 컨트롤러 보드로부터 마스터 컨트롤러 보드로 송신될 수 있다. 일 구현예에서, NT PCIe 브리지는 기록 동작과 연관되는 정보를 슬레이브 컨트롤러 보드로부터 마스터 컨트롤러 보드로 전달하기 위해 사용될 수 있다. 일 구현예에서, 슬레이브 컨트롤러 보드에 도달하는 기록 동작에 대한 데이터는 슬레이브 컨트롤러 보드에 의해 NVM 블레이드에 여전히 제공될 수 있다.
마스터 및 슬레이브 컨트롤러 보드는 판독 및 기록 동작을 NVM 블레이드에 매핑하는 매핑 테이블을 유지할 수 있다. 일 구현예에서, 판독 및 기록 테이블은 NVM 블레이드 중 하나에 저장된다. 일 구현예에서, 판독 및 기록 테이블은 2개의 컨트롤러 보드에 의해 공유될 수 있다. 게다가, 다른 구현예에서, 판독 및 기록 테이블은 컨트롤러 보드에 의해 개별적으로 유지될 수 있다. 각각의 컨트롤러 보드가 그 자체의 테이블을 갖는 사례에서, 마스터 컨트롤러 보드는 마스터 및 슬레이브 컨트롤러 보드를 위해 테이블을 갱신할 수 있다.
슬레이브 컨트롤러 보드가 고장나면, 마스터 컨트롤러 보드는 동작을 계속 처리한다. 다른 한편, 마스터 컨트롤러 보드가 고장나면, 저장 디바이스는 슬레이브 컨트롤러 보드로 오류 해결된다. 슬레이브 컨트롤러 보드는 새로운 마스터 컨트롤러 보드가 되고 모든 I/O 기록 동작을 처리하는 것을 시작할 수 있다.
상기 설명된 시스템은 판독 동작이 I/O 요청을 디코딩하는 시간 및 처리 전력을 요구하므로, 2개 이상의 컨트롤러 보드 도처에 판독 트랜잭션을 위한 워크로드를 분배하는 것을 허용할 수 있다.
도 5는 본 발명의 일 구현예에 따른 본 발명의 구현예를 수행하는 방법을 예시하는 흐름도이다. 방법(500)에서의 시그널링은 하드웨어(회로, 전용 로직 등), 소프트웨어(예컨대 범용 컴퓨팅 시스템 또는 전용 머신 상에 실행됨), 펌웨어(내장 소프트웨어), 또는 그것의 임의의 조합을 포함하는 처리 로직에 의해 수행된다. 일 구현예에서, 방법(500)은 도 13에 설명되는 바와 같이 하나 이상의 컴퓨터 시스템(1300)에 의해 수행된다.
도 5의 흐름도는 I/O 요청을 처리하는 제1 처리 엔티티(502) 및 제2 처리(504)를 도시한다. 도 5는 2개의 처리 엔티티만을 도시하지만, 다수의 처리 엔티티는 도 5를 참조하여 설명되는 바와 같이 본 발명의 구현예를 수행하기 위해 구현될 수 있다. 예를 들어, 본 발명의 구현예는 제3, 제4, 제5, 또는 임의의 수의 처리 엔티티를 사용하여, 제1 처리 엔티티 또는 제2 처리 엔티티에 의해 수행되는 본 발명의 유사한 단계를 수행할 수 있다. 더욱이, 하나의 I/O 요청만이 도 6에서 시작 및 종료 표시기 사이의 각각의 처리 엔티티를 위해 도시되지만, 임의의 수의 I/O 요청이 수행될 수 있다.
단계(506)에서, 복수의 NVM 블레이드에 결합되는 제1 처리 엔티티는 라우팅 엔티티를 통해 제1 I/O 요청을 수신한다.
단계(508)에서, 제1 처리 엔티티는 제1 I/O 요청이 기록 또는 판독 요청인지를 결정한다. 단계(508)에서, 제1 I/O 요청이 판독 요청인 것으로 결정되면, 단계(510)에서, 제1 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다.
단계(512)에서, 제1 처리 엔티티는 제1 I/O 요청과 연관되는 데이터를 요청한다. 단계(514)에서, 제1 처리 엔티티는 판독 I/O 요청을 위한 라우팅 엔티티를 통해 데이터를 수신한다.
단계(508)에서, 제1 I/O 요청이 기록 요청인 것으로 결정되면, 단계(516)에서, 제1 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 단계(518)에서, 제1 처리 엔티티는 기록 I/O 요청을 위한 타겟 NVM 블레이드에 데이터를 저장하기 위해 데이터를 라우팅 엔티티를 통해 타겟 NVM 블레이드에 송신한다.
유사하게, 제2 처리 엔티티(504)에 있어서, 단계(520)에서, 복수의 NVM 블레이드에 결합되는 제2 처리 엔티티는 라우팅 엔티티를 통해 제2 I/O 요청을 수신할 수 있다. 제2 처리 엔티티(504)는 제1 처리 엔티티에서 수신되는 제1 I/O 요청 전/후에 또는 제1 I/O 요청과 동시에 제2 I/O 요청을 수신할 수 있다. 더욱이, 제1 처리 엔티티(502) 및 제2 처리 엔티티(504)는 서로 독립적으로 도 5에서 식별되는 단계를 수행할 수 있다.
단계(522)에서, 제2 처리 엔티티는 제2 I/O 요청이 기록 또는 판독 요청인지를 결정한다. 단계(522)에서, 제2 I/O 요청이 판독 요청인 것으로 결정되면, 단계(524)에서, 제2 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제2 처리 엔티티는 제2 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 단계(526)에서, 제2 처리 엔티티는 제2 I/O 요청과 연관되는 데이터를 요청한다. 단계(528)에서, 제2 처리 엔티티는 판독 I/O 요청을 위한 라우팅 엔티티를 통해 데이터를 수신한다.
대안에 있어서, 단계(522)에서, 제2 I/O 요청이 기록 요청인 것으로 결정되면, 단계(530)에서, 제2 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제2 처리 엔티티는 제2 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 단계(532)에서, 제2 처리 엔티티는 기록 I/O 요청을 위한 타겟 NVM 블레이드에 데이터를 저장하기 위해 데이터를 라우팅 엔티티를 통해 타겟 NVM 블레이드에 송신한다.
상기 논의된 바와 같이, 제1 처리 엔티티(502)와 유사하게, 제2 처리 엔티티(504)는 I/O 요청을 처리할 수 있다. 일부 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 I/O 요청을 서로에 대해 임의의 시퀀스로 처리하고 또한 I/O 요청을 동시에 처리할 수 있다. 더욱이, 제1 처리 엔티티 및 제2 처리 엔티티는 복수의 NVM 블레이드 중 하나에 타겟팅되는 트랜잭션을 동시에 처리할 수 있다.
도 4를 다시 참조하면, 시스템 내의 2개의 처리 엔티티의 예는 도 4에 도시된 처리 엔티티 중 어느 것에 의해 예시될 수 있다. 예를 들어, 2개의 처리 엔티티는 동일한 컨트롤러 보드(404) 상의 412 및 414, 또는 상이한 컨트롤러 보드 상에 상주하는 처리 엔티티(412) 및 처리 엔티티(428)일 수 있다.
도 5를 참조하여 논의되는 하나 이상의 구성요소 사이의 통신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다. 도 5의 방법은 다수의 처리 엔티티 사이에서 I/O 요청을 확산시키는 데에 유리할 수 있지만, I/O 요청은 더 빠른 처리를 가능하게 하고, 보틀넥을 회피하고 더 좋은 열 소산을 용이하게 하기 위해 동일한 NVM 블레이드에 메모리 동작을 야기한다.
도 5에 예시된 특정 단계는 본 발명의 일 구현예에 따른 동작 모드 사이에서 스위칭하는 특정 방법을 제공한다는 점이 이해되어야 한다. 단계의 다른 시퀀스는 또한 대안 구현예에서 적절히 수행될 수 있다. 예를 들어, 본 발명의 대안 구현예는 상이한 순서로 상기 개략 설명된 단계를 수행할 수 있다. 예시하기 위해, 사용자는 제3 동작 모드로부터 제1 동작 모드로, 제4 모드로부터 제2 모드로, 또는 그들 사이의 임의의 조합으로 변화되는 것을 선택할 수 있다. 더욱이, 도 5에 예시된 개별 단계는 개별 단계에 적절하게 다양한 시퀀스로 수행될 수 있는 다수의 서브단계를 포함할 수 있다. 더욱이, 부가 단계는 특정 적용에 따라 추가되거나 제거될 수 있다. 한 보통의 당업자는 방법(500)의 많은 변화, 수정, 및 대안을 인식하고 이해할 것이다.
도 6은 본 발명의 일 구현예에 따른 본 발명의 구현예를 수행하는 다른 방법을 예시하는 흐름도이다. 방법(600)에서의 시그널링은 하드웨어(회로, 전용 로직 등), 소프트웨어(예컨대 범용 컴퓨팅 시스템 또는 전용 머신 상에 실행됨), 펌웨어(내장 소프트웨어), 또는 그것의 임의의 조합을 포함하는 처리 로직에 의해 수행된다. 일 구현예에서, 방법(600)은 도 13에 설명되는 바와 같이 하나 이상의 컴퓨터 시스템(1300)에 의해 수행된다.
도 6의 흐름도는 I/O 요청을 처리하는 제1 처리 엔티티(602) 및 제2 처리(604)를 도시한다. 도 6은 2개의 처리 엔티티만을 도시하지만, 다수의 처리 엔티티는 도 6을 참조하여 설명되는 바와 같이 본 발명의 구현예를 수행하기 위해 구현될 수 있다. 예를 들어, 본 발명의 구현예는 제3, 제4, 제5, 또는 임의의 수의 처리 엔티티를 사용하여, 제1 처리 엔티티 또는 제2 처리 엔티티에 의해 수행되는 본 발명의 유사한 단계를 수행할 수 있다. 더욱이, 하나의 I/O 요청만이 도 6에서 시작 및 종료 표시기 사이의 각각의 처리 엔티티를 위해 도시되지만, 임의의 수의 I/O 요청이 수행될 수 있다. 도 6은 도 5에 설명되는 구현예의 일 구현예를 설명한다.
단계(606)에서, 복수의 NVM 블레이드에 결합되는 제1 처리 엔티티는 제1 라우팅 엔티티를 통해 제1 I/O 요청을 수신한다.
단계(608)에서, 제1 처리 엔티티는 제1 I/O 요청이 기록 또는 판독 요청인지를 결정한다. 단계(608)에서, 제1 I/O 요청이 판독 요청인 것으로 결정되면, 단계(610)에서, 제1 처리 엔티티는 판독 요청이 제1 라우팅 엔티티에 결합되는 복수의 NVM 블레이드로부터의 제1 NVM 블레이드의 제1 위치로부터의 데이터에 대한 판독인 것을 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 제1 NVM 블레이드 및 제1 NVM 블레이드 상의 제1 위치를 결정할 수 있다.
단계(612)에서, 제1 처리 엔티티는 제1 라우팅 엔티티를 통해 제1 I/O 요청과 연관되는 데이터를 요청한다. 단계(614)에서, 제1 처리 엔티티는 제1 라우팅 엔티티를 통해 데이터를 수신하고 판독 I/O 요청을 완료한다.
단계(608)에서, 제1 I/O 요청이 기록 요청인 것으로 결정되면, 단계(616)에서, 제1 처리 엔티티는 복수의 NVM 블레이드로부터의 제1 NVM 블레이드 및 데이터가 저장되는 제1 NVM 블레이드 상의 제1 위치를 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 제1 NVM 블레이드 및 제1 NVM 블레이드 상의 제1 위치를 결정할 수 있다. 단계(618)에서, 제1 처리 엔티티는 제1 NVM 블레이드 상의 제1 위치에 데이터를 저장하기 위해 데이터를 제1 라우팅 엔티티를 통해 제1 NVM 블레이드에 송신한다.
유사하게, 제2 처리 엔티티(604)에 있어서, 단계(620)에서, 복수의 NVM 블레이드에 결합되는 제2 처리 엔티티는 제1 라우팅 엔티티를 통해 제2 I/O 요청을 수신할 수 있다. 제2 처리 엔티티(604)는 제1 처리 엔티티에서 수신되는 제1 I/O 요청 전/후에 또는 제1 I/O 요청과 동시에 제2 I/O 요청을 수신할 수 있다.
단계(622)에서, 제2 처리 엔티티는 제2 I/O 요청이 기록 또는 판독 요청인지를 결정한다. 단계(622)에서, 제2 I/O 요청이 판독 요청인 것으로 결정되면, 단계(624)에서, 제2 처리 엔티티는 판독 요청이 제1 라우팅 엔티티에 결합되는 복수의 NVM 블레이드로부터의 제1 NVM 블레이드의 제1 위치로부터의 데이터에 대한 판독인 것을 결정할 수 있다. 일 구현예에서, 제2 처리 엔티티는 제2 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 제1 NVM 블레이드 및 제1 NVM 블레이드 상의 제1 위치를 결정할 수 있다. 단계(626)에서, 제2 처리 엔티티는 제1 라우팅 엔티티를 통해 제2 I/O 요청과 연관되는 데이터를 요청한다. 단계(628)에서, 제2 처리 엔티티는 제1 라우팅 엔티티를 통해 데이터를 수신하고 판독 I/O 요청을 완료한다.
대안에 있어서, 단계(622)에서, 제2 I/O 요청이 기록 요청인 것으로 결정되면, 단계(630)에서, 제2 처리 엔티티는 기록 요청이 제1 라우팅 엔티티에 결합되는 복수의 NVM 블레이드로부터의 제1 NVM 블레이드 상의 제1 위치에 데이터를 저장하는 요청일 수 있는 것을 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제2 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 제1 NVM 블레이드 및 제1 NVM 블레이드 상의 제1 위치를 결정할 수 있다. 단계(632)에서, 제2 처리 엔티티는 기록 I/O 요청을 위한 타겟 NVM에 데이터를 저장하기 위해 데이터를 제1 라우팅 엔티티를 통해 타겟 NVM 블레이드에 송신한다.
상기 논의된 바와 같이, 제1 처리 엔티티(602)와 유사하게, 제2 처리 엔티티(604)는 I/O 요청을 처리할 수 있다. 일부 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 I/O 요청을 서로에 대해 임의의 시퀀스로 처리하고 또한 I/O 요청을 동시에 처리할 수 있다. 더욱이, 제1 처리 엔티티 및 제2 처리 엔티티는 복수의 NVM 블레이드 중 하나에 타겟팅되는 트랜잭션을 동시에 처리할 수 있다.
도 4를 다시 참조하면, 동일한 컨트롤러 보드 상에 상주하고 동일한 라우팅 엔티티를 통해 동일한 NVM 블레이드에 액세스하는 2개의 처리 엔티티의 예는 동일한 컨트롤러 보드(404) 상에 상주하는 처리 엔티티(412 및 414)에 의해 예시될 수 있다. 도 6에 설명되는 단계는 동일한 컨트롤러 보드 상에 상주하는 2개의 처리 엔티티가 동일한 NVM 블레이드 또는 심지어 NVM 블레이드 상의 동일한 위치에 타겟팅되는 I/O 요청을 동시에 처리하고 서비스하는 것을 허용한다. 도 6에 도시된 바와 같이, I/O 요청이 개별 처리 엔티티에서 디코딩되고 처리될 수 있지만, 그것은 NVM 블레이드에 액세스하기 위해 동일한 라우팅 엔티티를 사용할 수 있으며, 따라서 하드웨어의 복제를 회피함으로써 비용을 절약한다.
도 6을 참조하여 논의되는 하나 이상의 구성요소 사이의 통신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다. 도 6의 방법은 다수의 처리 엔티티 사이에 I/O 요청을 확산시키는 데에 유리할 수 있지만, I/O 요청은 더 빠른 처리를 가능하게 하고, 보틀넥을 회피하고 더 좋은 열 소산을 용이하게 하기 위해 동일한 NVM 블레이드에 메모리 동작을 야기한다.
도 6에 예시된 특정 단계는 본 발명의 일 구현예에 따른 동작 모드 사이에서 스위칭하는 특정 방법을 제공한다는 점이 이해되어야 한다. 단계의 다른 시퀀스는 또한 대안 구현예에서 적절히 수행될 수 있다. 예를 들어, 본 발명의 대안 구현예는 상이한 순서로 상기 개략 설명된 단계를 수행할 수 있다. 예시하기 위해, 사용자는 제3 동작 모드로부터 제1 동작 모드로, 제4 모드로부터 제2 모드로, 또는 그들 사이의 임의의 조합으로 변화되는 것을 선택할 수 있다. 더욱이, 도 6에 예시된 개별 단계는 개별 단계에 적절하게 다양한 시퀀스로 수행될 수 있는 다수의 서브단계를 포함할 수 있다. 더욱이, 부가 단계는 특정 적용에 따라 추가되거나 제거될 수 있다. 한 보통의 당업자는 방법(600)의 많은 변형, 수정, 및 대안을 인식하고 이해할 것이다.
도 7은 본 발명의 일 구현예에 따른 컨트롤러 보드의 예시적 블록도를 예시한다. 일 구현예에서, 컨트롤러 보드(702)는 도 1의 컨트롤러 보드(104 또는 106)를 나타낼 수 있다. 도 7에 도시된 바와 같이, 컨트롤러 보드는 2개의 프로세서(704 및 708), 4개의 라우터(712, 714, 716, 718) 및 4개의 인터페이스 칩(720, 722, 724 및 726)을 갖는다. 프로세서 0(704)은 그것의 로컬 메모리(706a-d)에의 액세스를 제어하는 메모리 컨트롤러를 가질 수 있다. 유사하게, 프로세서 1(708)은 또한 그것의 로컬 메모리(710a-d)에의 액세스를 제어하는 메모리 컨트롤러를 가질 수 있다. 일 구현예에서, 인터페이스 칩 및 라우터는 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 서로 통신할 수 있다. PCIe는 또한 프로세서와 라우터 사이의 통신을 위한 라우팅 프로토콜로 사용될 수 있다. 인터페이스 칩에서의 I/O 요청은 기가비트 이더넷, 파이버 채널, 다이얼 인 또는 심지어 PCIe 프로토콜과 같은 임의의 프로토콜을 사용하여 수신될 수 있다.
도 7에 도시된 바와 같이, 일 구현예에서, 각각의 인터페이스 칩은 데이터를 라우터를 통해 프로세서(704 및 708) 중 어느 한쪽에 통신할 수 있다. 각각의 인터페이스 칩은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 통해 적어도 하나의 라우터에 결합될 수 있다. I/O 요청은 인터페이스 칩 중 하나에 도달할 수 있다. 인터페이스 칩은 PCIe 프로토콜을 사용하여 I/O 요청을 라우터에 송신할 수 있다. 각각의 라우터는 컨트롤러 보드(702) 상의 프로세서 둘 다에 연결된다. 라우터는 I/O 요청을 수신하고 프로세서를 결정하여 I/O 요청을 추가 처리를 위해 송신한다. 프로세서가 I/O 요청을 디코딩하고 NVM 저장 매체로부터 데이터를 저장하거나 검색하는 동작을 확인했으면, 프로세서는 메모리 동작 명령을 라우터 중 하나에 송신한다. 각각의 라우터는 NVM 블레이드를 통해 NVM 저장 매체의 서브세트에 결합된다. 예를 들어, 도 7에서, 각각의 라우터는 NVM 블레이드의 전체 수의 거의 1/4에 연결한다. NVM 저장 매체 요청을 라우터에 송신하는 결정은 NVM 저장 어드레스 공간 내의 저장/액세스 요청의 어드레스에 기초할 수 있다. 예를 들어, 프로세서(704)는 I/O 요청이 라우터(R2)(716)를 결합한 NVM 블레이드에 저장을 야기하는 것을 결정하면, 이때 프로세서는 PCIe 프로토콜을 사용하여 요청을 라우터(R2)(716)에 송신할 수 있다. 라우터(R2)(716)는 저장을 위해 저장 요청을 각각의 NVM 블레이드에 송신한다.
특정 구현예에서, 도 7에 대해 설명되는 구성은 다양한 전기 구성요소와 연관되는 부하를 감소시키고, NVM 저장 매체에 대한 동작의 처리량을 증가시키고, 저장 디바이스 내의 다양한 구성요소로부터 열을 소산시키는 데에 유리할 수 있다.
종래의 PCIe 시스템에서, 중앙 처리 유닛은 전체 시스템에 대한 루트 컴플렉스를 포함할 수 있다. PCIe 루트 컴플렉스는 프로세서에 결합되는 모든 종단점 디바이스를 열거하고 트리형 구조를 생성한다. 종단점에서 발신되는 모든 요청들은 PCIe 루트 컴플렉스에 결합되는 하나 이상의 프로세서에 의해 처리된다. 인터페이스 칩과 같은 종단점에서 발신되는 다수의 요청을 갖는 저장 디바이스에서, 루트 컴플렉스 및 프로세서는 시스템에서 트랜잭션의 처리를 위한 보틀넥이 된다. 일 구현예에서, 더 강력한 프로세서는 I/O 요청을 신속히 처리하고 보틀넥을 보조하기 위해 사용될 수 있다. 이와 같은 접근법은 보틀넥을 일시적으로 보조할 수 있지만, 그것은 프로세서와 연관되는 전력 부하를 증가시킬 수 있다. 더욱이, 프로세서는 또한 프로세서에 의해 처리되는 증가된 수 또는 I/O 요청으로 인해 컨트롤러 보드 상의 작은 영역에 걸쳐 더 많은 열을 생성할 수 있다. 하나의 프로세서 또는 밀접하게 클러스터화된 프로세서에서의 증가된 열은 저장 디바이스에 대한 더 엄격한 열 포락선을 전체적으로, 허용 가능 레벨에서 유지하는 것에 도전하게 할 수 있다. 부가 전력 부하 및 열은 구성요소 레벨 및 디바이스 레벨 둘 다에서 더 많은 고장을 생성할 수 있다.
본 발명의 구현예는 복수의 처리 엔티티에 대한 컨트롤러 보드에 걸친 NVM 스토리지에 액세스하는 처리 및 라우팅 기능성을 확산시키는 것을 제안한다. 일 구현예에서, 다수의 처리 엔티티는 I/O 요청을 처리하는 컨트롤러 보드에 걸쳐 확산될 수 있다. 일 구현예에서, 처리 엔티티 중 하나는 PCIe 루트 컴플렉스의 역할을 할 수 있고 제2 처리 엔티티는 종단점의 역할을 할 수 있다. 예를 들어, 도 7에서, 프로세서 0(707)은 PCIe 루트 컴플렉스로 구성될 수 있고 프로세서 1(708)는 종단점으로 구성될 수 있다. 일 구현예에서, 프로세서 1(708)에 대한 메모리 공간은 라우터(라우터 0(712), 라우터 2(714), 라우터 3(716) 및 라우터 4(718)) 각각에 대해 종단점으로서 4회 열거될 수 있다. I/O 요청을 위한 수신 라우터가 I/O 요청을 위한 적절한 매핑을 갖지 않은 사례에서, 라우터는 매핑을 결정하기 위해 PCIe 루트 컴플렉스로 구성되는 처리 엔티티에 I/O 요청을 송신할 수 있다. 또한, 인터페이스 칩은 구성 시에 라우팅 정보로 구성될 수 있다.
라우팅이 인터페이스 칩 및 라우터에 이미 설정된 사례에서, 인터페이스 칩에 도달하고 라우터에 송신되는 I/O 요청은 처리 기능성을 확산시키는 처리 엔티티(704 및 708) 중 어느 한쪽에 송신될 수 있다. 처리 외에, 설명된 아키텍처는 또한 링크의 연결성을 확산시킬 수 있다. 예를 들어, 다수의 인터페이스 칩은 I/O 요청을 동시에 수신하고 그들 I/O 요청을 라우터에 송신하기 위해 구현될 수 있다. 더욱이, NVM 블레이드는 라우터 사이에 분배되어, NVM 블레이드에의 액세스가 다수의 라우터 사이에 분배되는 것을 허용하거나, 버스를 회피하거나 백로그를 라우팅한다. 이와 같은 구성은 도 7에 설명되는 바와 같이, 또한 다수의 블레이드에의 액세스를 동시에 허용하는 데에 유리할 수 있어, 상이한 라우터를 통해 액세스 가능한 NVM 블레이드에 액세스할 때 판독 및 기록 성능을 대폭 개선한다. 대체 구현예에서, 본 발명의 구현예는 컨트롤러 보드에 걸친 NVM 스토리지에 액세스하는 처리 및 라우팅 기능성을 확산시키기 위해 그 자체의 루트 컴플렉스를 각각 갖는 다수의 처리 엔티티를 제안한다. 각각의 종단점(즉, 라우터)은 1 초과의 루트 컴플렉스에 연결될 수 있다. 따라서, 인터페이스 칩에 도달하고 라우터에 전송되는 I/O 요청은 처리 기능성을 확산시키는 처리 엔티티(704 및 708) 중 어느 하나에 송신될 수 있다. 처리 외에, 설명된 아키텍처는 또한 링크의 연결성을 확산시킬 수 있다. 예를 들어, 다수의 인터페이스 칩은 I/O 요청을 동시에 수신하고 그들 I/O 요청을 라우터에 송신하기 위해 구현될 수 있다. 더욱이, NVM 블레이드는 라우터 사이에 분배되어, NVM 블레이드에의 액세스가 다수의 라우터 사이에 분배되는 것을 허용하거나, 버스를 회피하거나 백로그를 라우팅한다. 각각의 프로세서가 컨트롤러 보드 상의 모든 라우터에 연결되므로, 각각의 프로세서는 임의의 NVM 저장 어드레스를 개별적으로 어드레스할 수 있다. 이와 같은 구성은 도 7에 도시된 바와 같이, 또한 다수의 블레이드에의 액세스를 동시에 허용하는 데 유리할 수 있어, 상이한 라우터를 통해 액세스 가능한 NVM 블레이드에 액세스할 때 판독 및 기록 성능을 대폭 개선한다.
프로세서 0(704)은 부트 ROM(728)에서 부팅될 수 있고 프로세서 1(708)은 부트 ROM(734)에서 부팅될 수 있다. 일 구현예에서, 프로세서(704) 상에 실행되는 부트 ROM 이미지는 또한 저장 파일 시스템 스택에 대한 초기화 정보를 포함할 수 있다. 일 구현예에서, 저장 파일 시스템 운영 체제(OS)는 온보드 NVM으로부터 로딩될 수 있다. 다른 구현예에서, 저장 파일 시스템 OS는 NVM 블레이드 중 하나로부터 로딩될 수 있다. 일 구현예에서, 프로세서 0(704) 및 프로세서 1(708) 상에 실행하는 OS에 대한 이미지는 상이할 수 있다. 파일 시스템 OS는 I/O 요청을 하드웨어 판독 및 기록으로 변환할 책임이 있을 수 있다.
특정 구현예에서, 온보드 NVM(736)은 포인터, 갱신된 활동, 캐시 백업 및 판독/기록 버퍼와 같은 동적 메타데이터를 저장하기 위해 사용될 수 있다. 일부 구현예에서, 바이트 기록 가능한 자기 RAM(MRAM)과 같은 NVM은 온보드 NVM을 구현하기 위해 사용될 수 있다. 컨트롤러 보드는 또한 프로세서(704) 및 프로세서(708)에 연결되는 디버그 포트(740)를 가질 수 있다. 디버그 포트는 USB, PCIe, 기가비트 이더넷 등과 같은 하나 이상의 개별 인터페이스를 지원할 수 있다.
도 8은 본 발명의 적어도 하나의 구현예에 따른 컨트롤러 보드 상의 각각의 구성요소에 의해 보여지는 바와 같이 다양한 구성요소에 대한 어드레스 공간의 예시적 블록도를 예시한다. 일 구현예에서, 어드레스 공간은 PCIe 어드레스 공간으로 정의될 수 있다.
P0(810)은 도 7의 프로세서 0(704)으로부터의 PCIe 어드레스 공간의 뷰를 나타낸다. P1(830)은 도 7의 프로세서 1(708)로부터 보여지는 PCIe 어드레스 공간의 뷰를 나타낸다. R0(850), R1(860), R2(870), 및 R3(880)은 라우터 0(712), 라우터 1(714), 라우터 2(716), 및 라우터 3(718) 각각으로부터의 PCIe 어드레스 공간의 뷰를 나타낸다. 일 구현예에서, 프로세서 0(704)과 같은 PCIe 루트 컴플렉스는 모든 종단점을 발견하고 각각의 종단점에 대한 PCIe 어드레스 공간을 구성할 수 있다.
일부 구현예에서, 컨트롤러 보드의 구성요소 중 어느 하나로부터 보여지는 다양한 PCIe 범위 중 어느 하나에의 액세스는 다른 PCIe 어드레스 범위에의 액세스와 상이한 타입의 응답을 야기할 수 있다. 예를 들어, 본 발명의 일 구현예에 따르면, 프로세서로부터 PCIe 어드레스 공간의 하나의 범위에 액세스하는 것은 라우터 중 하나에 구성 변화를 야기할 수 있다. 다른 예에서, PCIe 어드레스 공간의 다른 범위에 액세스하는 것은 라우터 중 하나에 결합되는 NVM 블레이드 중 하나에 판독/기록 액세스를 야기할 수 있다. PCIe 어드레스 공간에의 일부 액세스는 또한 프로세서에 대한 로컬 메모리 또는 컨트롤러 보드 상의 인접 프로세서 중 하나에 대한 메모리에 매핑될 수 있다. 또 다른 예에서, PCIe 어드레스 공간에의 일부 액세스는 비투명(NT) PCIe 브리지를 통해 인접 컨트롤러 보드 상의 구성요소에 판독/기록을 야기할 수 있다.
PCIe 어드레스 공간을 통해, 수개의 엔티티는 컨트롤러 보드 상의 다른 엔티티의 어드레스 공간에 적어도 부분 액세스를 갖는다. 예를 들어, P0(810)에서, 프로세서(P0)(704)는 그 자체의 메모리에 액세스를 가지며, 프로세서(P1)(708)의 메모리 및 라우터의 어드레스 공간 각각에 부분 액세스를 갖는다. 일 구현예에서, NVM 블레이드는 4개의 개별 그룹의 NVM 블레이드로 그룹화되며, 각각의 그룹의 NVM 블레이드는 라우터 중 하나에 결합될 수 있다. 특정 그룹의 NVM 블레이드에 속하는 NVM 블레이드 중 어느 하나는 NVM 블레이드의 그룹이 결합될 수 있는 라우터를 통해 액세스 가능하다.
도 8에서, P0(810)에 대한 PCIe 어드레스 공간으로부터, B-G0(808)은 라우터(R0)(712)를 통해 액세스 가능한 제1 그룹의 NVM 블레이드에 대한 어드레스 공간을 나타낸다. 라우터(R0)(712)는 제1 그룹의 NVM 블레이드에 결합될 수 있고 또한 호스트 버스 어댑터 0(HBA0)(806)에 의해 지정되는 어드레스 공간을 통해 프로세서(P0)(704)로부터 구성 가능할 수 있다. 유사하게, 프로세서(P0)(704)는 어드레스 공간(B-G1)(814)을 통한 제2 그룹의 NVM 블레이드 및 HBA1(812)을 통한 제2 라우터(R1)(714), 어드레스 공간(B-G2)(818)을 통한 제3 그룹의 NVM 블레이드 및 HBA2(816)를 통한 제3 라우터(R2)(716), 및 어드레스 공간(B-G3)(822)을 통한 제4 그룹의 NVM 블레이드 및 HBA3(820)을 통한 제4 라우터(R3)(718)에 액세스할 수 있다. 일부 구현예에서, 어드레스 공간(824)의 일부가 예약될 수 있다. 특정 구현예에서, MRAM(828)과 같은 온보드 NVM은 포인터, 갱신된 활동, 캐시 백업 및 판독/기록 버퍼와 같은 동적 메타데이터를 저장하기 위해 사용될 수 있다. 더욱이, 프로세서(P0)(704)는 PCIe 어드레스 공간 DRAM(P0)(802)을 통한 그 자체의 로컬 메모리(706a-d) 및 PCIe 어드레스 DRAM(P1)(804)을 통한 인접 프로세서(P1)(708)의 메모리에 액세스할 수 있다. 일부 구현예에서, 프로세서(P0)(704)는 또한 메시지를 NT 포트(826)를 통해 인접 컨트롤러 보드의 구성요소에 송신할 수 있다.
P0(810)과 유사하게, 구성요소 각각으로부터의 PCIe 어드레스 공간의 뷰는 PCIe 어드레스 공간을 사용하여 서로 상호작용하는 능력을 각각의 구성요소에 제공할 수 있다. 예를 들어, 프로세서(P1)(708)는 그것의 PCIe 어드레스 공간(P1)(830)을 통해, 또한 각각의 라우터(HBA0(840), HBA1(838), HBA2(836), 및 HBA3(833)), 연관된 그룹의 NVM 블레이드(B-G0(841), B-G1(839), B-G2(837) 및 B-G3(834)), DRAM(P1)(831)에 대한 PCIe 어드레스 공간을 통한 그 자체의 로컬 메모리(710a-d) 및 인접 프로세서(P0)(704) DRAM(P0)(832), MRAM(842), 및 NT 포트(838)에 대한 메모리에 액세스할 수 있다.
라우터는 또한 PCIe 어드레스 공간의 뷰와 유사하지만, 더 제한된 뷰를 가질 수 있다. 예를 들어, 라우터(R0)(712)는 시스템의 PCIe 어드레스 공간 뷰 R0(850)를 가질 수 있다. 라우터(R0)는 DRAM(P0)(851) 및 DRAM(P1)(853) 각각을 통해 프로세서(P0)(704), 프로세서(P1)(708)와 통신 가능할 수 있다. 특정 구현예에서, MRAM(854)과 같은 온보드 NVM은 포인터, 갱신된 활동, 캐시 백업 및 판독/기록 버퍼와 같은 동적 메타데이터를 저장하기 위해 사용될 수 있다. 컨트롤러 보드 상의 다른 구성요소에 의해 PCIe 어드레스 공간(HBA0)(858)에의 액세스는 라우터(R0)(712)에 대한 명령으로 해석될 수 있다. B-G0(856)에의 액세스는 라우터(R0)(712)에 결합되는 NVM 블레이드에 대한 판독 및 기록 요청으로 해석될 수 있다. 라우터(R0)(712)는 도 7에 도시된 바와 같이, 그들 구성요소 사이에 직접 결합이 없으므로 다른 라우터 또는 NVM 블레이드를 위해 예약되는 PCIe 어드레스 공간을 갖지 않을 수 있다. 라우터(R3)(718)는 또한 HBA3(886) 및 B-G3(887) 각각을 통해 라우터에 결합되는 프로세서(P0)(704) DRAM(P0)(881), 프로세서(P1)(708) DRAM(P1)(883), MRAN(885), 그 자체의 구성 공간, 및 NVM 블레이드에 액세스를 갖는다.
라우터(R1(714) 및 R2(716))는 또한 DRAM(P0)(861, 871) 및 DRAM(P1)(863, 873) 각각을 통해 프로세서(P0(704) 및 P1(708))에 액세스를 갖는다. 라우터(R1(714) 및 R2(716))에 대한 구성 공간은 HBA1(866) 및 HBA2(877) 및 그것의 연관된 NVM 블레이드(B-G1(867) 및 B-G2(878))를 통해 액세스될 수 있다. 게다가, 라우터(R1(714) 및 R2(716))는 메시지를 NT 포트(865 및 875) 각각을 통해 인접 컨트롤러 보드 상의 라우터에 송신 가능할 수 있다.
일부 구현예에서, 각각의 구성요소에 대한 PCIe 어드레스 공간 내의 일부 어드레스 범위는 장래의 사용(843, 852, 857, 862, 864, 868, 872, 874, 876, 879, 882, 884 및 888)을 위해 사용되지 않고 예약될 수 있다.
이전에 논의된 바와 같이, 도 8에 도시된 PCIe 어드레스 공간 구성은 예시 목적을 위한 것이고 어드레스 공간의 다른 구현예에 제한되지 않는다.
도 9는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 하이 레벨 블록도를 예시한다. 블록(902)은 2개의 컨트롤러(904 및 906) 및 컨트롤러에 결합되는 NVM 블레이드(920a-n)의 어레이를 갖는 저장 디바이스를 예시한다. 일 구현예에서, 컨트롤러(904 및 906)는 브리지(908)를 사용하여 판독 및 기록 트랜잭션을 위한 컨트롤러(904 및 906) 사이에 상태 정보를 통신하기 위해 통신 프로토콜을 사용하여 함께 결합될 수 있다.
일 구현예에서, 제1 컨트롤러(904) 및 제2 컨트롤러(906)는 I/O 요청을 처리하는 하나 이상의 프로세서, 컨트롤러와 복수의 NVM 블레이드 사이의 라우팅 동작을 위한 하나 이상의 라우터 및 하나 이상의 인터페이싱 칩을 포함하는 인쇄 회로 보드(PCB)이다. 이와 같은 컨트롤러 보드의 예는 도 1 내지 도 8에서 이전에 논의되었다. 다른 구현예에서, 다수의 별개 구성요소의 기능성은 ASIC, FGPA, MCM 또는 임의의 다른 적절한 솔루션으로 구현되는 컨트롤러에 의해 수행될 수 있다. 일 구현예에서, 제1 컨트롤러(904) 및 제2 컨트롤러(906)는 처리 로직 및 라우팅 로직을 각각 포함하는 ASIC으로 구현될 수 있다. 일 구현예에서, 컨트롤러는 또한 인터페이싱 로직을 포함할 수 있다. 다른 구현예에서, 도 9에 도시된 바와 같이, I/O 요청을 수신하고 I/O 요청에 응답하기 위해 제1 컨트롤러(904)는 호스트 인터페이스(916)에 결합될 수 있고 제2 컨트롤러(906)는 다른 호스트 인터페이스(918)에 결합될 수 있다.
특정 구현예에서, 도 9로부터의 저장 디바이스는 능동/능동 저장 디바이스를 나타낼 수 있다. 능동/능동 구성은 컨트롤러에 대한 처리 로직이 I/O를 처리하고 다른 것에 대한 대기 능력을 제공할 수 있게 한다. 컨트롤러 둘 다와 연관되는 처리 로직이 I/O를 동시에 또는 거의 동시에 처리할 수 있으므로, 성능을 향상시키기 위해 능동/능동 저장 디바이스를 구현하는 것이 유리할 수 있다. 그러나, 도 9로부터의 저장 디바이스는 능동/능동 저장 디바이스에 제한되지 않고 또한 능동/수동 구성에 사용될 수 있으며, 하나의 컨트롤러에 대한 처리 로직은 I/O 요청을 처리하기 위해 활성인 반면에, 다른 것은 능동 일차 컨트롤러 보드가 고장나거나 오프라인으로 취해져야 하는 I/O 활동을 대체할 준비가 되어 있는 대기 모드에서 아이들이다.
일 구현예에서, 도 9에 도시된 능동/능동 시스템에서, 제1 컨트롤러(904)는 활성 모드에서 동작하고 NVM 저장 매체로부터 데이터를 저장하고 검색하는 I/O 요청을 수신하도록 구성될 수 있다. 유사하게, 제2 컨트롤러(906)는 또한 활성 모드에서 동작하고 NVM 저장 매체로부터 데이터를 저장하고 검색하는 I/O 요청을 수신하도록 구성될 수 있다. 도 9는 2개의 컨트롤러만을 도시하지만, 다수의 컨트롤러는 활성 모드에서 동작할 수 있다.
부가적으로, 저장 디바이스는 NVM 저장 매체를 포함하는 복수의 NVM 블레이드(920a-n)를 포함할 수 있다. 일 구현예에서, 각각의 NVM 블레이드는 컨트롤러(904 및 906) 둘 다에 결합될 수 있어, NVM 저장 매체의 각각의 물리 어드레스가 컨트롤러 중 어느 한쪽에 의해 액세스 가능하게 되는 것을 허용한다. 이와 같은 구성은 기본 저장 매체의 복제 및 데이터의 미러링을 회피하는 데 유리할 수 있으며, 물리 매체 상의 데이터의 신뢰성은 RAID, 또는 그것의 임의의 조합과 같은 더 신뢰성있는 저장 매체 및/또는 정교한 데이터 복구 기술을 사용함으로써 보장될 수 있다. 각각의 NVM 블레이드는 제1 컨트롤러(904)와 통신하는 제1 라우팅 인터페이스 및 제2 컨트롤러(906)와 통신하는 제2 라우팅 인터페이스를 포함할 수 있다. 일 구현예에서, PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 제1 라우팅 인터페이스는 제1 컨트롤러와 통신하고 제2 라우팅 인터페이스는 제2 컨트롤러와 통신한다.
능동/능동 시스템의 일 구현예에서, 하나 이상의 컨트롤러는 마스터 컨트롤러의 역할을 가정하고 다른 하나 이상의 컨트롤러는 슬레이브 컨트롤러의 역할을 가정한다. 일 구현예에서, 마스터 컨트롤러는 NVM 블레이드에 모든 데이터 기록을 수행하거나 개시할 수 있는 반면에, 마스터 또는 슬레이브 보드 중 어느 하나는 판독을 수행할 수 있다.
일반적으로, 저장 디바이스는 저장 매체에의 저장 또는 기록 동작보다 더 많은 판독 동작을 서비스할 수 있다. 또한, 일반적으로 판독 동작은 저장 또는 기록 동작보다 더 빠르게 완료할 수 있다. 따라서, 판독 동작이 서비스될 수 있는 속도는 I/O 요청이 디코딩되고 컨트롤러의 처리 로직에 의해 처리될 수 있는 속도에 의해 제약될 수 있다. 따라서, I/O 판독 동작의 처리 및 디코딩을 위한 능동/능동 시스템에서 2개 이상의 컨트롤러 사이의 I/O 판독 동작을 로드 밸런싱하는 것이 유리할 수 있다. 따라서, 마스터 및 슬레이브 컨트롤러 둘 다는 I/O 판독 동작을 처리할 수 있다. 따라서, 도 9에서, 제1 컨트롤러(904) 및 제2 컨트롤러(906) 둘 다는 판독 동작을 위해 I/O 요청을 동시에 또는 거의 동시에 디코딩하고 NVM 저장 매체로부터 데이터를 요청하도록 구성될 수 있다.
하나의 예시적 구현예에서, 슬레이브 컨트롤러 보드에 도달하는 기록 동작은 마스터 컨트롤러에 의해 부분적으로 수행될 수 있다. 예를 들어, 기록 명령 또는 기록 명령과 연관되는 정보는 슬레이브 컨트롤러로부터 마스터 컨트롤러로 송신될 수 있다. 일 구현예에서, 브리지(908)(예를 들어, PCIe NT 브리지)는 기록 동작과 연관되는 정보를 슬레이브 컨트롤러로부터 마스터 컨트롤러로 전달하기 위해 사용될 수 있다. 일 구현예에서, 슬레이브 컨트롤러에 도달하는 기록 동작을 위한 데이터는 슬레이브 컨트롤러에 의해 NVM 블레이드에 여전히 제공될 수 있다.
예시 목적을 위해, 주어진 시점에, 제1 컨트롤러(904)는 마스터 컨트롤러일 수 있고 제2 컨트롤러(906)는 슬레이브 컨트롤러일 수 있다. 일 예에서, I/O 요청은 마스터 컨트롤러로 동작할 수 있는 제1 컨트롤러(904)에 도달할 수 있다. 제1 컨트롤러(904)는 I/O 요청이 I/O 요청과 연관되는 데이터가 NVM 저장 매체에 저장하는 기록 동작인 것을 결정할 수 있다. 마스터 컨트롤러는 I/O 요청을 처리하고, NVM 블레이드를 결정하여 기록 명령을 발송하고 명령 및 데이터를, 데이터를 저장하는 NVM 블레이드에 송신할 수 있다.
다른 예에서, I/O 요청은 슬레이브 컨트롤러로 동작할 수 있는 제2 컨트롤러(906)에 도달할 수 있다. 제2 컨트롤러(906)는 I/O 요청이 I/O 요청과 연관되는 데이터를 NVM 저장 매체에 저장하는 기록 동작인 것을 결정할 수 있다. 제2 컨트롤러(906)는 제2 I/O 요청과 연관되는 명령 정보를 마스터 컨트롤러의 역할을 할 수 있는 제1 컨트롤러(904)에 송신할 수 있다. 마스터/제1 컨트롤러(904)는 제2 컨트롤러(906)로부터 송신된 명령 정보를 수신하고, 데이터가 저장될 수 있는 NVM 블레이드를 결정하고 기록 명령을 NVM 블레이드에 송신할 수 있다. 기록 명령이 마스터 컨트롤러에 의해 송신될 수 있지만, 슬레이브 컨트롤러의 역할을 하는 제2 컨트롤러(906)는 I/O 요청과 연관되는 데이터를 NVM 블레이드에 송신할 수 있다. 마스터로부터 모든 기록 동작을 관리하는 것은 시스템에서 기록 일관성을 유지하는 것을 도울 수 있다. 다른 한편, 슬레이브 컨트롤러에서 수신된 I/O 기록 요청을 위해 데이터를 슬레이브 컨트롤러로부터 NVM 블레이드로 송신하는 것은 둘 사이에 데이터를 송신하기 위해 제1 컨트롤러(904)와 제2 컨트롤러(906) 사이의 브리지(908)(예를 들어, NT PCIe 브리지)의 대역폭의 상당한 증가를 필요로 하는 것을 회피한다.
마스터 및 슬레이브 컨트롤러는 판독 및 기록 동작을 NVM 블레이드에 매핑하는 매핑 테이블을 유지할 수 있다. 일 구현예에서, 판독 및 기록 테이블은 NVM 블레이드 중 하나에 저장된다. 일 구현예에서, 판독 및 기록 테이블은 2개의 컨트롤러에 의해 공유될 수 있다. 게다가, 다른 구현예에서, 판독 및 기록 테이블은 컨트롤러에 의해 개별적으로 유지될 수 있다. 각각의 컨트롤러가 그 자체의 테이블을 갖는 사례에서, 마스터 컨트롤러는 마스터 및 슬레이브 컨트롤러 둘 다에 대한 테이블을 갱신할 수 있다.
슬레이브 컨트롤러가 고장나면, 마스터 컨트롤러는 이전과 같이 동작을 계속 처리한다. 다른 한편, 마스터 컨트롤러가 고장나면, 저장 디바이스는 슬레이브 컨트롤러로 오류 해결된다. 다시 말하면, 슬레이브 컨트롤러는 새로운 마스터 컨트롤러가 되고 기록 동작을 처리하는 것을 시작할 수 있다. 예를 들어, 마스터 컨트롤러의 역할을 하는 제1 컨트롤러(904)가 복구 불가능 에러에 직면하면, 시스템은 오류 해결될 수 있고 제2 컨트롤러(906)는 마스터 컨트롤러가 될 수 있다.
일부 구현예에서, 저장 디바이스는 또한 다수의 전원을 포함할 수 있다. 전원은 일반적으로 고장이 나기 쉽고 팬 또는 다른 전력 구성요소의 고장으로 인해 고장날 수 있다. 저장 디바이스에 전력 공급하는 다수의 전원을 갖는 것은 전원 중 하나에 대한 구성요소의 고장으로 인한 저장 디바이스의 고장을 회피할 수 있다. 일 구현예에서, 컨트롤러 보드는 파워 레일을 통해 전력 공급될 수 있으며, 파워 레일은 다수의 전원으로부터 전원을 공급할 수 있다. 파워 레일에 연결되는 전원 중 하나의 고장의 경우에, 파워 레일은 기능 전원으로부터 전력을 계속 공급한다. 일부 구현예에서, 고장난 전원은 적절한 기능 전원으로 핫 스왑 가능(즉, 저장 디바이스를 사이클링하는 전력 없이 대체 가능)할 수 있다. 도 10은 본 발명의 일 구현예에 따른 NVM 블레이드의 예시적 블록도를 예시한다. 일부 구현예에서, NVM 블레이드(1002)는 도 4의 NVM 블레이드(420) 또는 도 9로부터의 NVM 블레이드(920a-n) 중 하나의 일 구현예를 나타낼 수 있다. 예시적 NVM 블레이드(1002)는 하나 이상의 NVM 칩(1006 및 1008) 및 블레이드 컨트롤러(1004)를 포함할 수 있다. NVM 칩은 NVM 저장 매체를 포함할 수 있다. NVM 칩은 공유 버스(912 및 1014) 또는 전용 버스(도시되지 않음)를 통해 블레이드 컨트롤러(1004)에 결합될 수 있다. 블레이드 컨트롤러(1004)는 NVM 칩 상에서 데이터를 액세스/저장하는 명령을 수신하고, 명령을 처리를 처리하고, NVM 칩 및 다른 구성 명령으로부터 데이터를 저장하거나 검색할 책임이 있을 수 있다. 도시되지 않지만, NVM 칩은 또한 NVM 블레이드의 반대 측 상에 상주할 수 있다. 일 구현예에서, 블레이드 컨트롤러(1004)는 주문형 집적 회로(ASIC)를 사용하여 구현될 수 있다. 다른 구현예에서, NVM 블레이드 컨트롤러는 필드 프로그램 가능 게이트 어레이(FPGA)를 사용하여 구현될 수 있다.
도 11은 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 예시적 블록도를 예시한다. 일 구현예에서, 블레이드 컨트롤러(1004)는 컨트롤러(또는 컨트롤러 보드) 상의 라우팅 엔티티에 연결하는 2개 이상의 PCIe 인터페이스(1014 및 1116)를 가질 수 있다. 예를 들어, PCIe 인터페이스(1114)는 제1 컨트롤러로부터의 라우팅 엔티티 상의 PCIe 인터페이스 중 하나에 결합될 수 있고 PCIe 인터페이스(1116)는 제2 컨트롤러로부터의 라우팅 엔티티 상의 PCIe 인터페이스 중 하나에 결합될 수 있다. 각각의 PCIe 인터페이스는 PCIe 인터페이스가 결합되는 각각의 컨트롤러로부터 도달하는 명령과 연관되는 명령 큐(1010 및 1112)를 유지할 수 있다. 일 구현예에서, 컨트롤러와 연관되는 데이터에 대한 데이터 경로는 개별적으로 유지될 수 있다. 예를 들어, 각각의 컨트롤러와 연관되는 데이터는 NVM 저장 매체에 데이터의 저장 전에, 블록(1106 및 1108)에서 적절히 압축되고 NVM 저장 매체로부터 데이터를 검색한 후에 압축 해제될 수 있다. 개별 데이터 경로를 유지하는 것은 데이터의 더 높은 처리량을 허용하고 데이터 경로와 연관되는 에러를 감소시킬 수 있다. 일 구현예에서, 에러 검출 및/또는 정정은 블록(1106 및 1108)에서, 에러 정정 코드(ECC)를 사용하여 수행될 수 있다. 예를 들어, 데이터는 NVM 저장 매체에 데이터를 저장하기 전에 코딩되고 압축되며 데이터를 검색할 시에 에러에 대해 압축 해제되고 체크될 수 있다. 에러가 검출되면, 일부 시나리오에서, 데이터는 복구 가능할 수 있다. 에러가 복구 불가능하면, NVM 블레이드는 판독 요청을 폐기하거나 컨트롤러 보드에 대한 에러 조건에 응답할 수 있다.
명령 매니저(1104)는 다수의 PCIe 인터페이스에서 명령을 중재한다. 명령 매니저(1104)는 명령을 디코딩하고, 데이터의 저장/액세스를 위해 칩의 어레이로부터 적절한 NVM 저장 매체에 액세스한다. 명령을 중재함으로써, 일부 구현예에서, 명령 매니저(1104)는 하나의 활성 명령만이 임의의 특정 시간 기간에 NVM 인터페이스(1102)를 통해 데이터를 액세스/저장하는 것을 허용할 수 있다. 일부 구현예에서, PCIe 인터페이스, 명령 큐 및 ECC 압축/압축 해제 로직은 각각의 컨트롤러 보드와 인터페이스하기 위해 개별적으로 구현될 수 있다. 판독/기록 경로, 큐 및 로직 사이의 이와 같은 분리는 NVM 블레이드의 제2 인터페이스에 악영향을 미치는 NVM 블레이드의 하나의 인터페이스 상에서 고장을 회피하는 데 유리할 수 있다. 예를 들어, 명령 큐(1110)가 제1 컨트롤러 보드에서 NVM 인터페이스(1102)까지의 어디든지의 에러로 인해 백업을 시작하면, 제2 컨트롤러 보드에서 NVM 저장 매체까지의 판독/기록 데이터 경로는 정상적으로 계속 기능할 수 있다. 따라서, NVM 저장 매체에 대한 저장 동작이 하나의 제1 컨트롤러 보드로부터 실패하는 사례에서, 이와 같은 에러의 검출 시에, 비휘발성 메모리 상의 동일한 메모리 위치에 대한 저장 동작은 제2 컨트롤러 보드를 사용하여 완료될 수 있다.
도 12는 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 다른 예시적 블록도를 예시한다. 블레이드 컨트롤러(1004)의 이와 같은 대체 구현예는 또한 컨트롤러 상의 라우팅 로직에 연결하는 2개 이상의 PCIe 인터페이스(1214 및 1216) 및 PCIe 인터페이스가 결합되는 각각의 컨트롤러로부터 도달하는 명령과 연관되는 명령 큐(1210 및 1212)를 가질 수 있다. 일 구현예에서, 명령 큐는 버퍼를 사용하여 구현될 수 있다. 일 구현예에서, 명령 큐는 명령 큐 버퍼가 미리 결정된 임계값을 넘어서 가득차면 제1 컨트롤러로부터 명령을 폐기하도록 구성될 수 있다.
일 구현예에서, 통합 데이터 경로 및 통합 명령 경로는 도 12에 도시된 바와 같이 구현될 수 있다. 일부 구현예에서, 데이터 경로로부터의 데이터는 데이터가 NVM 저장 매체에 저장되기 전에 블록(1206)에서 압축되고 NVM 저장 매체로부터의 검색 후에 압축 해제될 수 있다. 일 구현예에서, 에러 검출 및/또는 정정은 블록(1206)에서, 에러 정정 코드(ECC)를 사용하여 수행될 수 있다. 예를 들어, 데이터는 데이터가 NVM 저장 매체에 저장되기 전에 코딩되고 압축되며 데이터를 검색할 시에 에러에 대해 압축 해제되고 체크될 수 있다. 에러가 검출되면, 일부 시나리오에서, 데이터는 복구 가능할 수 있다. 에러가 복구 불가능하면, NVM 블레이드는 판독 요청을 폐기하거나 컨트롤러에 대한 에러 조건에 응답할 수 있다.
명령 매니저(1204)는 다수의 PCIe 인터페이스로부터의 명령을 중재할 수 있다. 명령 매니저(1204)는 명령을 디코딩하고, 데이터의 저장/액세스를 위해 칩의 어레이로부터 적절한 NVM 저장 매체에 액세스한다. 명령을 중재함으로써, 명령 매니저(1204)는 하나의 활성 명령만이 임의의 특정 시간 기간에 NVM 인터페이스(1202)를 통해 데이터를 액세스/저장하는 것을 허용할 수 있다. 도 12에 도시된 바와 같이, 통합 데이터 및 명령 경로는 비용 및 설계 효율을 야기할 수 있다.
상기 도면에 도시되지 않지만, 일 구현예에서, 개별 명령 및/또는 데이터 큐는 NVM 블레이드에 대한 NVM 저장 매체를 포함하는 복수의 NVM 칩으로부터의 각각의 NVM 칩에 대해 유지될 수 있다. 더욱이, 개별 세트의 명령 및/또는 데이터 큐는 각각의 컨트롤러에 대해 유지될 수 있다. 예를 들어, 32개의 NVM 칩을 갖는 NVM 블레이드의 일 구현예에서, 32개의 명령 및/또는 데이터 큐는 제1 컨트롤러에서 발신되는 요청에 대해 유지될 수 있고 32개의 명령 및/또는 데이터 큐는 제2 컨트롤러에서 발신되는 요청에 대해 유지될 수 있다. 이와 같은 구성은 동작이 동일한 NVM 칩에 타겟팅되지 않는 한, 다른 명령이 NVM 블레이드 상에 개시, 처리 및 완료되는 동안에 다수의 현저한 명령이 개시, 처리 및/또는 완료되는 것을 허용할 수 있다. 명령 매니저(1004)는 2개의 컨트롤러에서 발신되는 명령을 중재할 수 있다.
수직으로 통합된 아키텍처의 다수의 양태를 설명했지만, 본 개시의 다양한 양태가 구현될 수 있는 컴퓨팅 시스템의 일 예는 이제 도 13에 대해 설명될 수 있다. 하나 이상의 양태에 따르면, 도 13에 예시된 바와 같은 컴퓨터 시스템은 본원에 설명되는 특징, 방법, 및/또는 방법 단계의 어느 것 및/또는 전부를 구현, 수행, 및/또는 실행할 수 있는 컴퓨팅 디바이스의 일부로 포함될 수 있다. 예를 들어, 컴퓨터 시스템(1300)은 디바이스 및/또는 액세스 포인트 장치의 구성요소의 일부를 나타낼 수 있다. 디바이스는 RF 수신기와 같은 무선 유닛을 갖는 임의의 컴퓨팅 디바이스일 수 있다. 일 구현예에서, 시스템(1300)은 본원에 설명되는 방법 중 어느 것을 구현하도록 구성된다. 도 13은 본원에 설명되는 바와 같이, 다양한 다른 구현예에 의해 제공되는 방법을 수행할 수 있고, 및/또는 호스트 컴퓨터 시스템, 원격 키오스크/단말, 판매 디바이스, 이동 디바이스, 셋톱 박스, 및/또는 컴퓨터 시스템의 기능을 할 수 있는 컴퓨터 시스템(1300)의 일 구현예의 개략적 예시를 제공한다. 도 13은 다양한 구성요소의 일반적 예시만을 제공하도록 의미되며, 그것의 어느 것 및/또는 전부는 적절하게 이용될 수 있다. 따라서, 도 13은 개별 시스템 요소가 상대적으로 분리되거나 상대적으로 더 통합된 방식으로 어떻게 구현될 수 있는지를 광범위하게 예시한다.
버스(1305)를 통해 전기적으로 결합될 수 있는(또는 적절하게, 다른 방법으로 통신할 수 있는) 하드웨어 요소를 포함하는 컴퓨터 시스템(1300)이 도시된다. 하드웨어 요소는 하나 이상의 범용 프로세서 및/또는 하나 이상의 특수 목적 프로세서(예컨대 디지털 신호 처리 칩, 그래픽 가속 프로세서 등)를 제한 없이 포함하는 하나 이상의 프로세서(1310); 카메라, 마우스, 키보드 등을 제한 없이 포함할 수 있는 하나 이상의 입력 디바이스(1315); 및 디스플레이 유닛, 프린터 등을 제한 없이 포함할 수 있는 하나 이상의 출력 디바이스(1320)를 포함할 수 있다. 컴퓨팅 디바이스(1300)는 또한 시스템의 헬스를 감시하기 위해 온도 센서, 전력 센서 등과 같은 센서(들)를 포함할 수 있다.
컴퓨터 시스템(1300)은 하나 이상의 비일시적 저장 디바이스(1325)를 더 포함할 수 있으며(및/또는 이와 통신할 수 있음), 하나 이상의 비일시적 저장 디바이스는 로컬 및/또는 네트워크 액세스 가능 스토리지를 제한 없이 포함할 수 있고, 및/또는 디스크 드라이브, 드라이브 어레이, 광 저장 디바이스, 고체 상태 저장 디바이스 예컨대 랜덤 액세스 메모리("RAM") 및/또는 판독 전용 메모리("ROM")를 제한 없이 포함할 수 있고, 판독 전용 메모리는 프로그램 가능하고, NVM-갱신 가능한 등등일 수 있다. 이와 같은 저장 디바이스는 다양한 파일 시스템, 데이터베이스 구조 등을 제한 없이 포함하는 임의의 적절한 데이터 스토리지를 구현하도록 구성될 수 있다.
컴퓨터 시스템(1300)은 또한 통신 서브시스템(1330)을 포함할 수 있으며, 통신 서브시스템은 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스, 무선 통신 디바이스 및/또는 칩셋(예컨대 블루투스® 디바이스, 802.11 디바이스, WiFi 디바이스, WiMax 디바이스, 셀룰러 통신 시설 등) 등을 제한 없이 포함할 수 있다. 통신 서브시스템(1330)은 데이터가 본원에 설명되는 네트워크(예컨대 일 예를 들자면, 아래에 설명되는 네트워크), 다른 컴퓨터 시스템, 및/또는 임의의 다른 디바이스와 교환되는 것을 허용할 수 있다. 많은 구현예에서, 컴퓨터 시스템(1300)은 상기 설명된 바와 같이, RAM 또는 ROM 디바이스를 포함할 수 있는 비일시적 작업 메모리(1335)를 더 포함할 수 있다. 컴퓨터 시스템(1300)은 또한 통신 서브시스템(1330)에 의해 외부 엔티티와 통신을 용이하게 하는 송수신기(1350)를 포함할 수 있다.
컴퓨터 시스템(1300)은 또한 운영 체제(1340), 디바이스 드라이버, 실행 가능 라이브러리, 및/또는 다른 코드, 예컨대 하나 이상의 애플리케이션 프로그램(1345)을 포함하는 작업 메모리(1335) 내에 현재 위치되는 것으로 도시되는 소프트웨어 요소를 포함할 수 있으며, 하나 이상의 애플리케이션 프로그램은 본원에 설명되는 바와 같이, 다양한 구현예에 의해 제공되는 컴퓨터 프로그램을 포함할 수 있고, 및/또는 다른 구현예에 의해 제공되는 방법을 구현하고, 및/또는 시스템을 구성하도록 설계될 수 있다. 단지 예로서, 상기 논의된 방법(들)에 대해 설명되는 하나 이상의 절차는 컴퓨터(및/또는 컴퓨터 내의 프로세서)에 의해 실행 가능한 코드 및/또는 명령어로 구현될 수 있으며; 일 양태에서, 이때, 이와 같은 코드 및/또는 명령어는 설명된 방법에 따라 하나 이상의 동작을 수행하기 위해 범용 컴퓨터(또는 다른 디바이스)를 구성하고 및/또는 적응하도록 사용될 수 있다.
이들 명령어 및/또는 코드의 한 세트는 상기 설명된 저장 디바이스(들)(1325)와 같은 컴퓨터 판독 가능 저장 매체 상에 저장될 수 있다. 일부 경우에, 저장 매체는 컴퓨터 시스템(1300)과 같은 컴퓨터 시스템 내에 포함될 수 있다. 다른 구현예에서, 저장 매체는 컴퓨터 시스템(예를 들어, 콤팩트 디스크와 같은 제거식 매체)으로부터 분리되고, 및/또는 설치 패키지에 제공될 수 있어, 저장 매체는 그 위에 저장된 명령어/코드로 범용 컴퓨터를 프로그래밍하고, 구성하고 및/또는 적응하기 위해 사용될 수 있다. 이들 명령어는 컴퓨터 시스템(1300)에 의해 실행 가능하고 및/또는 소스의 형태를 취할 수 있는 실행 가능 코드 및/또는 컴퓨터 시스템(1300)(예를 들어, 다양한 일반적으로 이용 가능한 컴파일러, 설치 프로그램, 압축/압축 해제 유틸리티 등 중 어느 것을 사용함) 상의 컴파일 및/또는 설치 시에 실행 가능 코드의 형태를 취하는 설치 코드의 형태를 취할 수 있다.
실질적인 변화는 특정 요건에 따라 이루어질 수 있다. 예를 들어, 맞춤형 하드웨어가 또한 사용될 수 있고, 및/또는 특정 요소는 하드웨어, 소프트웨어(휴대용 소프트웨어, 예컨대 애플릿 등을 포함함), 또는 둘 다로 구현될 수 있다. 게다가, 네트워크 입력/출력 디바이스와 같은 다른 컴퓨팅 디바이스에의 연결이 이용될 수 있다.
일부 구현예는 본 개시에 따라 방법을 수행하기 위해 컴퓨터 시스템(예컨대 컴퓨터 시스템(1300))을 이용할 수 있다. 예를 들어, 설명된 방법의 절차의 일부 또는 전부는 프로세서(1310)가 작업 메모리(1335)에 포함되는 하나 이상의 명령어(운영 체제(1340) 및/또는 다른 코드, 예컨대 애플리케이션 프로그램(1345)에 포함될 수 있음)의 하나 이상의 시퀀스를 실행하는 것에 응답하여 컴퓨터 시스템(1300)에 의해 수행될 수 있다. 이와 같은 명령어는 저장 디바이스(들)(1325) 중 하나 이상과 같은 다른 컴퓨터 판독 가능 매체로부터 작업 메모리(1335)로 판독될 수 있다. 단지 예로서, 작업 메모리(1335)에 포함되는 명령어의 시퀀스의 실행은 프로세서(들)(1310)가 본원에 설명되는 방법의 하나 이상의 절차를 수행하게 할 수 있다.
용어 "머신 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 본원에 사용되는 바와 같이, 머신이 특정 방식으로 동작하게 하는 데이터를 제공하는 것에 참여하는 임의의 매체를 언급한다. 컴퓨터 시스템(1300)을 사용하여 구현되는 일 구현예에서, 다양한 컴퓨터 판독 가능 매체는 실행을 위해 명령어/코드를 프로세서(들)(1310)에 제공하는 것에 수반될 수 있고 및/또는 이와 같은 명령어/코드를 (예를 들어, 신호로서) 저장하고 및/또는 기억하기 위해 사용될 수 있다. 많은 구현예에서, 컴퓨터 판독 가능 매체는 물리 및/또는 유형 저장 매체이다. 이와 같은 매체는 비휘발성 매체, 휘발성 매체, 및 송신 매체를 포함하지만 이에 제한되지 않는 많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어 저장 디바이스(들)(1325)와 같은 광 및/또는 자기 디스크를 포함한다. 휘발성 매체는 작업 메모리(1335)와 같은 동적 메모리를 제한 없이 포함한다. 송신 매체는 통신 서브시스템(1330)의 다양한 구성요소(및/또는 통신 서브시스템(1330)이 다른 디바이스와의 통신을 제공하는 매체)뿐만 아니라, 버스(1305)를 포함하는 와이어를 포함하는 동축 케이블, 구리선 및 광섬유를 제한 없이 포함한다. 그러므로, 송신 매체는 또한 파(전파, 음향파 및/또는 광파, 예컨대 전파 및 적외선 데이터 통신 동안에 생성되는 것을 제한 없이 포함함)의 형태를 취할 수 있다.
일부 구현예는 본 개시에 따라 방법을 수행하기 위해 컴퓨터 시스템(예컨대 프로세서(1310))을 이용할 수 있다. 예를 들어, 설명된 방법의 절차의 일부 또는 전부는 프로세서가 작업 메모리에 포함되는 하나 이상의 명령어(운영 체제 및/또는 다른 코드, 예컨대 애플리케이션 프로그램에 포함될 수 있음)의 하나 이상의 시퀀스를 실행하는 것에 응답하여 뷰잉 장치에 의해 수행될 수 있다. 이와 같은 명령어는 저장 디바이스(들) 중 하나 이상과 같은 다른 컴퓨터 판독 가능 매체로부터 작업 메모리로 판독될 수 있다. 단지 예로서, 작업 메모리에 포함되는 명령어의 시퀀스의 실행은 프로세서(들)가 본원에 설명되는 방법의 하나 이상의 절차를 수행하게 할 수 있다.
또한, 본원에 설명되는 컴퓨터 시스템을 이용하는 구현예는 뷰잉 장치에 물리적으로 연결되는 것에 제한되지 않는다. 처리는 유선을 통해 또는 무선으로 뷰잉 장치에 연결되는 다른 장치에서 발생할 수 있다. 예를 들어, 전화 내의 프로세서 또는 전화 또는 태블릿에 의해 명령을 실행하는 명령어는 이들 설명에 포함될 수 있다. 유사하게, 원격 위치 내의 네트워크는 프로세서를 수용하고 데이터를 뷰잉 장치에 송신할 수 있다.
용어 "머신 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 본원에 사용되는 바와 같이, 머신이 특정 방식으로 동작하게 하는 데이터를 제공하는 것에 참여하는 임의의 매체를 언급한다. 프로세서(1310)를 사용하여 구현되는 일 구현예에서, 다양한 컴퓨터 판독 가능 매체는 실행을 위해 명령어/코드를 프로세서(들)(1310)에 제공하는 것에 수반될 수 있고 및/또는 이와 같은 명령어/코드를 (예를 들어, 신호로서) 저장하고 및/또는 기억하기 위해 사용될 수 있다. 많은 구현예에서, 컴퓨터 판독 가능 매체는 물리 및/또는 유형 저장 매체이다. 이와 같은 매체는 비휘발성 매체, 휘발성 매체, 및 송신 매체를 포함하지만 이에 제한되지 않는 많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어 광 및/또는 자기 디스크를 포함한다. 휘발성 매체는 NVM 메모리 또는 DDR3 RAM과 같은 동적 메모리를 제한 없이 포함한다. 송신 매체는 통신 서브시스템의 다양한 구성요소(및/또는 통신 서브시스템이 다른 디바이스와 통신을 제공하는 매체)뿐만 아니라, 동축 케이블, 구리선 및 광섬유를 제한 없이 포함한다. 그러므로, 송신 매체는 또한 파(전파, 음향파 및/또는 광파, 예컨대 전파 및 적외선 데이터 통신 동안에 생성되는 것을 제한 없이 포함함)의 형태를 취할 수 있다.
하나 이상의 예에서, 설명되는 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 그것의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능은 컴퓨터 판독 가능 매체 상의 하나 이상의 명령어 또는 코드로서 저장되거나 송신될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 데이터 저장 매체를 포함할 수 있다. 데이터 저장 매체는 본 개시에 설명되는 기술의 구현예에 대한 명령어, 코드 및/또는 데이터 구조를 검색하도록 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능 매체일 수 있다. "데이터 저장 매체"는 본원에 사용되는 바와 같이 제품을 언급하고 일시적 전파 신호를 언급하지 않는다. 제한이 아닌 예로서, 이와 같은 컴퓨터 판독 가능 매체는 원하는 프로그램 코드를 명령어 또는 데이터 구조의 형태로 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스, NVM 메모리, 또는 임의의 다른 매체를 포함할 수 있다. 디스크는 본원에 사용되는 바와 같이, 콤팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크(DVD), 플로피 디스크 및 블루레이 디스크를 포함하며 디스크(disk)는 데이터를 자기적으로 통상 재생하는 반면에, 디스크(disc)는 데이터를 레이저로 광학적으로 재생한다. 상기의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
코드는 하나 이상의 프로세서, 예컨대 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그램 가능 로직 어레이(FPGA), 또는 다른 등가 집적 또는 별개 로직 회로에 의해 실행될 수 있다. 따라서, 용어 "프로세서"는 본원에 사용되는 바와 같이, 본원에 설명되는 기술의 구현예에 적절한 이전 구조 또는 임의의 다른 구조 중 어느 것을 언급할 수 있다. 게다가, 일부 양태에서, 본원에 설명되는 기능성은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 결합 코덱에 포함될 수 있다. 또한, 기술은 하나 이상의 회로 또는 로직 소자로 완전히 구현될 수 있다.
본 개시의 기술은 무선 핸드셋, 집적 회로(IC) 또는 한 세트의 IC(예를 들어, 칩셋)를 포함하는 매우 다양한 디바이스 또는 장치로 구현될 수 있다. 다양한 구성요소, 모듈, 또는 유닛은 개시된 기술을 수행하도록 구성되는 디바이스의 기능 양태를 강조하기 위해 본 개시에 설명되지만, 반드시 상이한 하드웨어 유닛에 의한 실현을 필요로 하는 것은 아니다, 오히려, 상기 설명된 바와 같이, 다양한 유닛은 컴퓨터 판독 가능 매체 상에 저장되는 적절한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같이 하나 이상의 프로세서를 포함하여, 코덱 하드웨어 유닛으로 조합되거나 상호작용 하드웨어 유닛의 집합에 의해 제공될 수 있다.
다양한 예가 설명되었다. 이들 및 다른 예는 이하의 청구항의 범위 내에 있다.

Claims (40)

  1. 복수의 비휘발성 메모리(NVM) 블레이드로서, 상기 복수의 NVM 블레이드로부터의 NVM 블레이드 각각은 비휘발성 메모리(NVM)를 포함하는 복수의 비휘발성 메모리(NVM) 블레이드;
    상기 복수의 NVM 블레이드에 결합(couple)되는 제1 처리 엔티티로서,
    제1 입력/출력(I/O) 요청을 수신하고;
    상기 제1 I/O 요청이 판독 요청인지 또는 기록 요청인지를 결정하고;
    상기 제1 I/O 요청이 판독 요청이라고 결정하는 것에 응답하여,
    상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독될 타겟 NVM 블레이드 내의 위치를 결정하고;
    상기 타겟 NVM 블레이드로부터 상기 제1 I/O 요청과 연관된 데이터를 요청하고 수신하고;
    상기 제1 I/O 요청이 기록 요청이라고 결정하는 것에 응답하여;
    상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장될 타겟 NVM 블레이드 내의 위치를 결정하고;
    상기 타겟 NVM 블레이드에 데이터를 저장하기 위해 상기 데이터를 상기 타겟 NVM 블레이드에 송신하도록 구성되는 제1 처리 엔티티; 및
    상기 복수의 NVM 블레이드에 결합(couple)되는 제2 처리 엔티티로서,
    제2 입력/출력(I/O) 요청을 수신하고;
    상기 제2 I/O 요청이 판독 요청인지 또는 기록 요청인지를 결정하고;
    상기 제2 I/O 요청이 판독 요청이라고 결정하는 것에 응답하여,
    상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독될 타겟 NVM 블레이드 내의 위치를 결정하고;
    상기 타겟 NVM 블레이드로부터 상기 제2 I/O 요청과 연관된 데이터를 요청하고 수신하고;
    상기 제2 I/O 요청이 기록 요청이라고 결정하는 것에 응답하여;
    상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장될 타겟 NVM 블레이드 내의 위치를 결정하고;
    상기 타겟 NVM 블레이드에 데이터를 저장하기 위해 상기 데이터를 상기 타겟 NVM 블레이드에 송신하도록 구성되는 제2 처리 엔티티를 포함하는 저장 디바이스.
  2. 제1항에 있어서, 상기 복수의 NVM 블레이드는 하나 이상의 라우팅 엔티티를 사용하여 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티에 결합되는 저장 디바이스.
  3. 제1항에 있어서, 상기 제1 처리 엔티티는, 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티와 동일한, 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드에 액세스하는 저장 디바이스.
  4. 제1항에 있어서, 상기 제1 처리 엔티티는, 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티와 동일한, 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드 상의 동일한 위치에 액세스하는 저장 디바이스.
  5. 제1항에 있어서, 컨트롤러 보드는 상기 제1 처리 엔티티, 상기 제2 처리 엔티티 및 상기 처리 엔티티들과 상기 복수의 NVM 블레이드 사이에 데이터를 라우팅하는 라우팅 엔티티를 포함하는 저장 디바이스.
  6. 제5항에 있어서, 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티는 동일한 상기 라우팅 엔티티를 통해 상기 타겟 NVM 블레이드에 액세스하는 저장 디바이스.
  7. 제1항에 있어서, 제1 컨트롤러 보드는 상기 제1 처리 엔티티를 포함하고 제1 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되며 제2 컨트롤러 보드는 상기 제2 처리 엔티티를 포함하고 제2 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되는 저장 디바이스.
  8. 제1항에 있어서, 상기 제1 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신 및 상기 제2 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행되는 저장 디바이스.
  9. 제1항에 있어서, 상기 제1 처리 엔티티에 의해 수신되는 제1 I/O 요청은, 하나 이상의 인터페이싱 엔티티에 우선 수신되고 복수의 라우팅 엔티티 중 하나를 통해 상기 제1 처리 엔티티에 송신되는 저장 디바이스.
  10. 제1항에 있어서, 상기 NVM은 NAND 플래시인 저장 디바이스.
  11. 데이터를 저장하는 방법으로서,
    제1 처리 엔티티에서, 제1 입력/출력(I/O) 요청을 수신하는 단계로서, 상기 제1 처리 엔티티는 복수의 비휘발성 메모리(NVM) 블레이드에 결합되고 상기 복수의 NVM 블레이드로부터의 NVM 블레이드 각각은 비휘발성 메모리(NVM)를 포함하는 단계;
    상기 제1 처리 엔티티에서, 상기 제1 I/O 요청이 판독 요청인지 또는 기록 요청인지를 결정하는 단계;
    상기 제1 I/O 요청이 판독 요청이라고 결정하는 것에 응답하여,
    상기 제1 처리 엔티티에 의해, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독될 타겟 NVM 블레이드 내의 위치를 결정하는 단계, 및
    상기 제1 처리 엔티티에 의해, 상기 타겟 NVM 블레이드로부터 상기 제1 I/O 요청과 연관된 데이터를 요청하고 수신하는 단계; 및
    상기 제1 I/O 요청이 기록 요청이라고 결정하는 것에 응답하여,
    상기 제1 처리 엔티티에 의해, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장될 타겟 NVM 블레이드 내의 위치를 결정하는 단계, 및
    상기 타겟 NVM 블레이드에 데이터를 저장하기 위해, 상기 제1 처리 엔티티로부터 상기 데이터를 상기 타겟 NVM 블레이드에 송신하는 단계; 및
    제2 처리 엔티티에서, 제2 입력/출력(I/O) 요청을 수신하는 단계로서, 상기 제2 처리 엔티티는 상기 복수의 NVM 블레이드에 결합되어 있는 것인 단계;
    상기 제2 처리 엔티티에서, 상기 제2 I/O 요청이 판독 요청인지 또는 기록 요청인지를 결정하는 단계;
    상기 제2 I/O 요청이 판독 요청이라고 결정하는 것에 응답하여,
    상기 제2 처리 엔티티에서, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독될 타겟 NVM 블레이드 내의 위치를 결정하는 단계;
    상기 제2 처리 엔티티에서, 상기 타겟 NVM 블레이드로부터 상기 제2 I/O 요청과 연관된 데이터를 요청하고 수신하는 단계; 및
    상기 제2 I/O 요청이 기록 요청이라고 결정하는 것에 응답하여;
    상기 제2 처리 엔티티에서, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장될 타겟 NVM 블레이드 내의 위치를 결정하는 단계; 및
    상기 타겟 NVM 블레이드에 데이터를 저장하기 위해, 상기 제2 처리 엔티티로부터 상기 데이터를 상기 타겟 NVM 블레이드에 송신하는 단계를 포함하는 방법.
  12. 제11항에 있어서, 상기 복수의 NVM 블레이드는 하나 이상의 라우팅 엔티티를 사용하여 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티에 결합되는 방법.
  13. 제11항에 있어서, 상기 제1 처리 엔티티는, 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티와 동일한, 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드에 액세스하는 방법.
  14. 제11항에 있어서, 상기 제1 처리 엔티티는, 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티와 동일한, 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드 상의 동일한 위치에 액세스하는 방법.
  15. 제11항에 있어서, 컨트롤러 보드는 상기 제1 처리 엔티티, 상기 제2 처리 엔티티 및 상기 처리 엔티티들과 상기 복수의 NVM 블레이드 사이에 데이터를 라우팅하는 라우팅 엔티티를 포함하는 방법.
  16. 제15항에 있어서, 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티는 동일한 상기 라우팅 엔티티를 통해 상기 타겟 NVM 블레이드에 액세스하는 방법.
  17. 제11항에 있어서, 제1 컨트롤러 보드는 상기 제1 처리 엔티티를 포함하고 제1 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되며 제2 컨트롤러 보드는 상기 제2 처리 엔티티를 포함하고 제2 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되는 방법.
  18. 제11항에 있어서, 상기 제1 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신 및 상기 제2 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행되는 방법.
  19. 제11항에 있어서, 상기 제1 처리 엔티티에 의해 수신되는 제1 I/O 요청은, 하나 이상의 인터페이싱 엔티티에 우선 수신되고 복수의 라우팅 엔티티 중 하나를 통해 상기 제1 처리 엔티티에 송신되는 방법.
  20. 제11항에 있어서, 상기 NVM은 NAND 플래시인 방법.
  21. 활성 모드에서 동작하도록 구성되는 제1 컨트롤러로서, 비휘발성 메모리(NVM) 저장 매체로부터 데이터를 저장하고 검색하기 위해 입력/출력(I/O) 요청을 수신하도록 구성되는 제1 컨트롤러;
    활성 모드에서 동작하도록 구성되는 제2 컨트롤러로서, 상기 NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 I/O 요청을 수신하도록 또한 구성되는 제2 컨트롤러; 및
    NVM 저장 매체를 포함하는 복수의 비휘발성 메모리(NVM) 블레이드로서, 상기 복수의 NVM 블레이드 중 적어도 하나의 NVM 블레이드는 상기 NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 상기 제1 컨트롤러 및 상기 제2 컨트롤러에 결합되는 복수의 비휘발성 메모리(NVM) 블레이드를 포함하는 저장 디바이스.
  22. 제21항에 있어서, 상기 복수의 NVM 블레이드 중 상기 적어도 하나의 NVM 블레이드는 상기 제1 컨트롤러와 통신하는 제1 라우팅 인터페이스 및 상기 제2 컨트롤러와 통신하는 제2 라우팅 인터페이스를 포함하는 저장 디바이스.
  23. 제22항에 있어서, PCIe 프로토콜을 사용하여 상기 제1 라우팅 인터페이스는 상기 제1 컨트롤러와 통신하고 상기 제2 라우팅 인터페이스는 상기 제2 컨트롤러와 통신하는 저장 디바이스.
  24. 제21항에 있어서, 상기 제1 컨트롤러는,
    제1 I/O 요청을 수신하고;
    상기 제1 I/O 요청이 상기 제1 I/O 요청과 연관된 제1 데이터를 상기 NVM 저장 매체에 저장하라는 요청이라고 결정하고;
    상기 제1 데이터를 제1 위치에 저장하기 위해 명령 및 상기 제1 데이터를 상기 복수의 NVM 블레이드 중 상기 적어도 하나의 NVM 블레이드에 송신하도록 구성되는 저장 디바이스.
  25. 제24항에 있어서,
    상기 제2 컨트롤러는,
    제2 I/O 요청을 수신하고;
    상기 제2 I/O 요청이 상기 제2 I/O 요청과 연관된 제2 데이터를 상기 NVM 저장 매체에 저장하라는 요청이라고 결정하고;
    상기 제2 I/O 요청과 연관된 명령 정보를 상기 제1 컨트롤러에 송신하도록 구성되고;
    상기 제1 컨트롤러는,
    상기 제2 컨트롤러로부터 상기 송신된 명령 정보를 수신하고;
    저장 명령을 상기 복수의 NVM 블레이드 중 상기 적어도 하나의 NVM 블레이드에 송신하도록 구성되고;
    상기 제2 컨트롤러는 또한, 상기 제2 I/O 요청과 연관된 제2 데이터를 상기 적어도 하나의 NVM 블레이드에 송신하도록 구성되는 저장 디바이스.
  26. 제21항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 판독 동작들을 위한 I/O 요청들을 동시에 디코딩하고 상기 NVM 저장 매체로부터 데이터를 요청하도록 구성되는 저장 디바이스.
  27. 제21항에 있어서, 상기 제1 컨트롤러, 제2 컨트롤러 및 상기 복수의 NVM 블레이드는 파워 레일에 결합되며, 상기 파워 레일은 복수의 전원에 의해 전력 공급되는 저장 디바이스.
  28. 제21항에 있어서, 상기 복수의 NVM 블레이드 중 상기 적어도 하나의 NVM 블레이드는 상기 제1 컨트롤러로부터의 명령을 버퍼링하기 위해 제1 라우팅 인터페이스에 결합되는 제1 버퍼를 포함하는 저장 디바이스.
  29. 제28항에 있어서, 상기 복수의 NVM 블레이드 중 상기 적어도 하나의 NVM 블레이드는 또한, 상기 제1 버퍼가 미리 결정된 임계값을 넘어서 가득차면 상기 제1 컨트롤러로부터의 명령을 폐기하도록 구성되는 저장 디바이스.
  30. 제21항에 있어서, 상기 복수의 NVM 블레이드 중 상기 적어도 하나의 NVM 블레이드는 상기 제1 컨트롤러 및 상기 제2 컨트롤러로부터의 명령에 대한 NVM 인터페이스에의 액세스를 중재하는 명령 매니저를 포함하는 저장 디바이스.
  31. 제30항에 있어서, 상기 명령 매니저는 명령에 대한 에러를 검출할 시에, 상기 I/O 요청과 연관된 에러 정보를 상기 명령이 발신된 컨트롤러에 다시 송신하는 저장 디바이스.
  32. 제31항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 장애 허용 정보를 서로 통신하는 저장 디바이스.
  33. 제32항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 비-PCIe 브리지를 사용하여 장애 허용 정보를 서로 통신하는 저장 디바이스.
  34. 제32항에 있어서, 상기 장애 허용 정보는 상기 제1 컨트롤러로부터 상기 복수의 NVM 블레이드 중 하나로 제1 I/O 요청의 실패에 관한 정보를 포함하는 저장 디바이스.
  35. 제31항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 I/O 요청을 처리하는 하나 이상의 프로세서 및 상기 컨트롤러와 상기 복수의 NVM 블레이드 사이의 라우팅 동작을 위한 하나 이상의 라우터를 포함하는 인쇄 회로 보드(PCB)인 저장 디바이스.
  36. 제31항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 처리 로직 및 라우팅 로직을 각각 포함하는 주문형 집적 회로(ASIC)인 저장 디바이스.
  37. 저장 디바이스 상에 데이터를 저장하는 방법으로서,
    슬레이브 컨트롤러에서 제1 I/O 요청을 수신하는 단계;
    상기 제1 I/O 요청이 상기 제1 I/O 요청과 연관된 제1 데이터를 비휘발성 메모리(NVM) 저장 매체에 저장하라는 요청이라고 결정하는 단계;
    상기 제1 I/O 요청과 연관된 명령 정보를 마스터 컨트롤러에 송신하는 단계;
    상기 마스터 컨트롤러에서, 상기 슬레이브 컨트롤러로부터 상기 송신된 명령 정보를 수신하는 단계; 및
    제1 위치에 상기 제1 데이터를 저장하기 위해 상기 마스터 컨트롤러로부터의 제1 I/O 요청에 대한 송신된 명령 정보를 사용하는 저장 명령 및 상기 슬레이브 컨트롤러로부터의 제1 데이터를 NVM 저장 매체를 포함하는 복수의 비휘발성 메모리(NVM) 블레이드 중 적어도 하나에 송신하는 단계를 포함하는 방법.
  38. 제37항에 있어서,
    상기 마스터 컨트롤러에서 제2 I/O 요청을 수신하는 단계;
    상기 제2 I/O 요청이 상기 제2 I/O 요청과 연관된 제2 데이터를 NVM 저장 매체에 저장하라는 요청이라고 결정하는 단계;
    제2 위치에 상기 제2 데이터를 저장하기 위해 명령 및 상기 제2 데이터를 NVM 저장 매체를 포함하는 복수의 NVM 블레이드 중 적어도 하나에 송신하는 단계를 더 포함하는 방법.
  39. 제37항에 있어서, 상기 마스터 및 슬레이브 컨트롤러는 상기 복수의 NVM 블레이드와 통신하기 위해 PCIe 프로토콜을 사용하는 방법.
  40. 제37항에 있어서,
    상기 마스터 컨트롤러에서 제2 I/O 요청을 수신하는 단계;
    상기 제2 I/O 요청이 상기 NVM 저장 매체로부터 제2 위치로부터의 제2 데이터를 판독하라는 요청이라고 결정하는 단계;
    상기 NVM 저장 매체로부터 상기 제2 I/O 요청과 연관된 제2 데이터를 검색(retrieving)하는 단계;
    상기 슬레이브 컨트롤러에서 제3 I/O 요청을 수신하는 단계;
    상기 제3 I/O 요청이 상기 NVM 저장 매체로부터 제3 위치로부터의 제3 데이터를 판독하라는 요청이라고 결정하는 단계; 및
    상기 NVM 저장 매체로부터 상기 제3 I/O 요청과 연관된 제3 데이터를 검색하는 단계를 더 포함하는 방법.
KR1020167015204A 2013-11-12 2014-11-12 비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법 KR101824671B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/078,302 US9229855B2 (en) 2013-11-12 2013-11-12 Apparatus and method for routing information in a non-volatile memory-based storage device
US14/078,302 2013-11-12
US14/078,308 US9336134B2 (en) 2013-11-12 2013-11-12 Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US14/078,308 2013-11-12
PCT/US2014/065162 WO2015073503A1 (en) 2013-11-12 2014-11-12 Apparatus and method for routing information in a non-volatile memory-based storage device

Publications (2)

Publication Number Publication Date
KR20160107158A KR20160107158A (ko) 2016-09-13
KR101824671B1 true KR101824671B1 (ko) 2018-03-14

Family

ID=53057954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167015204A KR101824671B1 (ko) 2013-11-12 2014-11-12 비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법

Country Status (7)

Country Link
EP (1) EP3069253A4 (ko)
JP (1) JP6358483B2 (ko)
KR (1) KR101824671B1 (ko)
CN (1) CN105980990A (ko)
AU (1) AU2014348774A1 (ko)
CA (1) CA2930379A1 (ko)
WO (1) WO2015073503A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102387181B1 (ko) * 2017-10-31 2022-04-19 에스케이하이닉스 주식회사 컴퓨팅 디바이스 및 그것의 동작방법
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same
US11687273B2 (en) * 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307647A1 (en) * 2010-06-11 2011-12-15 California Institute Of Technology Systems and methods for rapid processing and storage of data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681339B2 (en) * 2001-01-16 2004-01-20 International Business Machines Corporation System and method for efficient failover/failback techniques for fault-tolerant data storage system
US7855916B2 (en) * 2007-10-24 2010-12-21 Rao G R Mohan Nonvolatile memory systems with embedded fast read and write memories
JP5147586B2 (ja) * 2008-07-30 2013-02-20 株式会社日立製作所 ストレージ装置及びその制御方法
US10236032B2 (en) * 2008-09-18 2019-03-19 Novachips Canada Inc. Mass data storage system with non-volatile memory modules
KR101541040B1 (ko) * 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US9600315B2 (en) * 2010-10-22 2017-03-21 Netapp, Inc. Seamless takeover of a stateful protocol session in a virtual machine environment
US8589723B2 (en) * 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
US20130007368A1 (en) * 2011-06-29 2013-01-03 Lsi Corporation Methods and systems for improved miorroring of data between storage controllers using bidirectional communications
US8806124B2 (en) * 2011-09-09 2014-08-12 Lsi Corporation Methods and structure for transferring ownership of a logical volume by transfer of native-format metadata in a clustered storage environment
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
CN103246622B (zh) * 2013-04-10 2015-12-02 华为技术有限公司 一种扩展内存的方法、内存节点、主节点及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110307647A1 (en) * 2010-06-11 2011-12-15 California Institute Of Technology Systems and methods for rapid processing and storage of data

Also Published As

Publication number Publication date
AU2014348774A1 (en) 2016-06-30
KR20160107158A (ko) 2016-09-13
CA2930379A1 (en) 2015-05-21
JP2016539418A (ja) 2016-12-15
EP3069253A4 (en) 2017-07-26
JP6358483B2 (ja) 2018-07-18
WO2015073503A1 (en) 2015-05-21
EP3069253A1 (en) 2016-09-21
CN105980990A (zh) 2016-09-28

Similar Documents

Publication Publication Date Title
US9507529B2 (en) Apparatus and method for routing information in a non-volatile memory-based storage device
US9645940B2 (en) Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US10810085B2 (en) Baseboard management controllers for server chassis
US10585609B2 (en) Transfer of storage operations between processors
US20160259568A1 (en) Method and apparatus for storing data
US20150222705A1 (en) Large-scale data storage and delivery system
US20150143027A1 (en) Solid state drive with raid functions
US10901626B1 (en) Storage device
US9575914B2 (en) Information processing apparatus and bus control method
TW200928746A (en) IO processor
JP2017531856A (ja) アクティブストレージユニットおよびアレイ
US20190384532A1 (en) Method of nvme over fabric raid implementation for read command execution
TW201939506A (zh) 儲存系統
WO2014094250A1 (zh) 数据处理方法和设备
KR101824671B1 (ko) 비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법
US9824716B2 (en) Storage control apparatus, storage apparatus, and computer-readable recording medium having stored therein storage control program
US11385815B2 (en) Storage system
US20140316539A1 (en) Drivers and controllers
US10846020B2 (en) Drive assisted storage controller system and method

Legal Events

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