[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20160107158A - Apparatus and method for routing information in a non-volatile memory-based storage device - Google Patents

Apparatus and method for routing information in a non-volatile memory-based storage device Download PDF

Info

Publication number
KR20160107158A
KR20160107158A KR1020167015204A KR20167015204A KR20160107158A KR 20160107158 A KR20160107158 A KR 20160107158A KR 1020167015204 A KR1020167015204 A KR 1020167015204A KR 20167015204 A KR20167015204 A KR 20167015204A KR 20160107158 A KR20160107158 A KR 20160107158A
Authority
KR
South Korea
Prior art keywords
nvm
request
controller
data
processing entity
Prior art date
Application number
KR1020167015204A
Other languages
Korean (ko)
Other versions
KR101824671B1 (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 US14/078,308 external-priority patent/US9336134B2/en
Priority claimed from US14/078,302 external-priority patent/US9229855B2/en
Application filed by 스카이에라, 엘엘씨 filed Critical 스카이에라, 엘엘씨
Publication of KR20160107158A publication Critical patent/KR20160107158A/en
Application granted granted Critical
Publication of KR101824671B1 publication Critical patent/KR101824671B1/en

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 저장 매체 사이에서 통신하기 위해 사용될 수 있다.Various systems, methods, devices, and computer-readable media for accessing a storage device are described. In certain exemplary implementations, an active / active fault tolerant storage device including two or more controllers may be implemented. In an aspect, each controller may have two or more processing entities that distribute processing of I / O requests. In one implementation, the components, modules, and configuration of the controller board can be arranged in a manner that increases heat dissipation, reduces power consumption, spreads power and workload, and reduces latency. In one implementation, each controller may be coupled to a non-volatile memory (NVM) blade that includes a non-volatile memory (NVM) storage medium. In one exemplary implementation, a standardization protocol, such as the Peripheral Component Interconnect Express protocol, may be used to communicate between the various components of the controller and also the NVM storage medium.

Figure P1020167015204
Figure P1020167015204

Description

비휘발성 메모리 기반 저장 디바이스에서 정보를 라우팅하는 장치 및 방법{APPARATUS AND METHOD FOR ROUTING INFORMATION IN A NON-VOLATILE MEMORY-BASED STORAGE DEVICE}Field of the Invention [0001] The present invention relates generally to a non-volatile memory based storage device, and more particularly,

본 개시의 양태는 컴퓨팅 및 통신 기술에 관한 것이다. 특히, 본 개시의 양태는 저장 디바이스의 성능을 개선하는 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체에 관한 것이다.Aspects of the present disclosure relate to computing and communication technologies. In particular, aspects of the present disclosure are directed to systems, methods, apparatus, and computer readable media for improving the performance of a storage device.

기업 시스템에 대한 저장 디바이스는 대량 저장 용량, 저장 디바이스에의 판독 및 기록을 위한 저레이턴시, 고대역폭, 저전력 소비, 및 신뢰성을 필요로 한다. 전통적으로, 기업 시스템은 전력이 턴 오프되는 동안에 데이터를 유지하는 하드 디스크 드라이브(HDD)와 같은 매체를 사용하여 구현된다. 하드 디스크 드라이브는 신속 회전 디스크를 사용하는 디지털 정보를 저장하고 검색하기 위해 사용되는 데이터 저장 디바이스이다. HDD는 데이터를 판독하고 데이터를 디스크 표면에 기록하기 위해 가동 액추에이터 아암 상에 배열되는 자기 헤드를 갖는 하나 이상의 강성("하드") 신속 회전 디스크(플래터)로 구성된다. 가동 부분으로 인해, HDD는 에러 및 고장의 경향이 본질적으로 있고, 그들의 액세스 시간 및 가격이 얼마나 낮게 떨어지는지에 관한 플로어(floor)를 갖는다.Storage devices for enterprise systems require mass storage capacity, low latency for reading and writing to storage devices, high bandwidth, low power consumption, and reliability. Traditionally, enterprise systems are implemented using media such as hard disk drives (HDDs) that hold data while power is turned off. A hard disk drive is a data storage device used to store and retrieve digital information using a fast spinning disk. The HDD consists of one or more rigid ("hard") rapidly rotating disks (platters) having magnetic heads arranged on the movable actuator arms for reading data and writing data to the disk surface. Due to the moving part, the HDDs are essentially prone to errors and failures and have a floor as to how low their access times and prices are.

본 발명의 구현예는 이와 같은 그리고 다른 문제들을 해결한다.Embodiments of the present invention solve these and other problems.

저장 매체에 액세스하는 다양한 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체가 설명된다. 저장 매체에 최적으로 액세스하는 기술이 설명된다. 일 구현예에서, 저장 디바이스는 비휘발성 메모리(NVM)를 사용하여 구현될 수 있다.Various systems, methods, devices, and computer-readable media for accessing a storage medium are described. Techniques for optimally accessing the storage medium are described. In one implementation, the storage device may be implemented using nonvolatile memory (NVM).

특정 예시적 구현예에서, 2개 이상의 컨트롤러를 포함하는 능동/능동 장애 허용 저장 디바이스가 구현될 수 있다. 그러나 다른 예시적 구현예에서, 능동/대기 시스템이 또한 구현될 수 있다. 일부 구현예에서, 컨트롤러는 단일 다이 위로 수개의 별개 구성요소의 기능성을 통합하는 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 임의의 다른 기술을 사용하여 구현될 수 있다. 다른 구현예에서, 컨트롤러는 또한 다수의 별개 구성요소를 갖는 컨트롤러 보드를 포함할 수 있다. 일 양태에서, 각각의 컨트롤러 보드는 입력/출력(I/O) 요청의 처리를 분배하는 2개 이상의 처리 엔티티를 가질 수 있다. 일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 I/O 요청을 서비스하기 위해 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다.In certain exemplary implementations, an active / active fault tolerant storage device including two or more controllers may be implemented. However, in other exemplary embodiments, an active / standby system may also be implemented. In some implementations, the controller may be implemented using an application specific integrated circuit (ASIC), field programmable gate array (FPGA), or any other technology that integrates the functionality of several distinct components onto a single die. In other implementations, the controller may also include a controller board having a plurality of discrete components. In an aspect, each controller board may have two or more processing entities that distribute processing of input / output (I / O) requests. In one implementation, the configuration of components, modules, and controller boards is arranged in a manner that increases heat dissipation to service I / O requests, reduces power consumption, spreads power and workload, and reduces latency .

일 구현예에서, 각각의 컨트롤러는 NVM 저장 매체를 포함하는 비휘발성 메모리(NVM) 블레이드에 결합될 수 있다. 본 발명의 구현예는 또한 NVM 저장 매체에의 액세스 시간을 개선하는 추가 향상을 제공할 수 있다. 본 발명의 일부 구현예는 예시 목적을 위해 NVM 저장 매체를 사용하여 본원에 설명될 수 있지만, 특정 구현예에서, 본 발명은 NVM 저장 매체에 제한되지 않을 수 있고 다른 적절한 물리 저장 매체는 본 발명의 범위로부터 벗어나는 것 없이 사용될 수 있다.In one implementation, each controller may be coupled to a non-volatile memory (NVM) blade that includes an NVM storage medium. Embodiments of the present invention may also provide additional enhancements to improve access time to NVM storage media. While some embodiments of the invention may be described herein using NVM storage media for illustrative purposes, in certain embodiments, the invention may not be limited to NVM storage media, and other suitable physical storage media may be used with the present invention Can be used without departing from the scope.

일 구현예에서, 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜과 같은 표준화 프로토콜은 컨트롤러 보드의 다양한 구성요소와 또한 NVM 저장 매체 사이에서 통신하기 위해 사용될 수 있다.In one implementation, a standardization protocol such as the Peripheral Component Interconnect Express (PCIe) protocol may be used to communicate between various components of the controller board and also NVM storage media.

예시적 저장 디바이스는 복수의 블레이드로부터의 제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 라우팅 엔티티에 송신하도록 구성된다.An exemplary storage device is a first routing entity from a plurality of routing entities coupled to a first blade from a plurality of blades, wherein the first blade can include an NVM storage medium, and the first blade coupled to the first routing entity The first processing entity may receive a first input / output (I / O) request, and the first data associated with the first I / O request may be coupled to the first routing entity, And to transmit the first data associated with the first I / O request to the first routing entity for storage of the first data on the first blade. The second processing entity may be coupled to the first routing entity, the second processing entity receiving the second I / O request, and the second data associated with the second I / O request being coupled to the first routing entity 1 blade and to transmit second data associated with the second I / O request to the first routing entity for storage of the second data on the first blade.

일부 구현예에서, 저장 디바이스는 제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) 프로토콜을 사용하여 수행된다.In some implementations, the storage device receives a third I / O request and the third I / O request is a read request for first data at a first location of the first blade coupled to the first routing entity And may further have a second processing entity configured to request the first data from the first location from the first routing entity and receive the first data from the first routing entity. In one implementation, the first processing entity and the second processing entity may be indirectly coupled to each other via the first routing entity. In one implementation, the controller board includes a first routing entity, a first processing entity, and a second processing entity. In one implementation, the first processing entity may be coupled to a first memory and the second processing entity may be coupled to a second memory. In one aspect, the transmission of data between the first processing entity and the first routing entity and the transmission of data between the second processing entity and the first routing entity are performed using a Peripheral Component Interconnect Express (PCIe) protocol.

저장 디바이스의 특정 구현예에서, 저장 디바이스는 복수의 블레이드로부터의 제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 라우팅 엔티티에 송신하도록 구성될 수 있다.In a particular implementation of the storage device, the storage device is a second routing entity from a plurality of routing entities coupled to a second blade from a plurality of blades, the second blade comprises an NVM storage medium, and the second routing entity The first processing entity may receive a third I / O request, and third data associated with the third I / O request may be stored on the second blade at a third location, And to transmit to the second routing entity third data associated with the third I / O request for storage of data associated with the third I / O request on the second blade. The storage device may further have a second processing entity coupled to a second routing entity, the second processing entity receiving a fourth I / O request, and wherein fourth data associated with the fourth I / To the second routing entity, fourth data associated with the fourth I / O request for storage of data associated with the fourth I / O request on the second blade .

일 구현예에서, 제1 처리 엔티티와 제2 라우팅 엔티티 사이의 데이터의 송신 및 제2 처리 엔티티와 제2 라우팅 엔티티 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행될 수 있다. 일 양태에서, 제1 처리 엔티티에 의해 수신되는 제1 I/O 요청은 하나 이상의 인터페이싱 엔티티에서 우선 수신되고 복수의 라우팅 엔티티 중 하나를 통해 제1 처리 엔티티에 송신될 수 있다.In one implementation, the transmission of data between the first processing entity and the second routing entity and the transmission of data between the second processing entity and the second routing entity are performed using a Peripheral Component Interconnect Express (PCIe) protocol . In an aspect, a first I / O request received by a first processing entity may first be received at one or more interfacing entities and transmitted to the first processing entity via one of the plurality of routing entities.

데이터를 저장하는 예시적 방법은 제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 라우팅 엔티티에 송신하는 단계를 포함할 수 있다.An exemplary method of storing data includes receiving, at a first processing entity, a first I / O request, wherein at a first processing entity, first data associated with a first I / O request is coupled to a first routing entity Wherein the first blade includes an NVM storage medium, a second I / O module coupled to the first I / O module by a first processing entity for storage of data on the first blade, O request to a first routing entity, at a second processing entity, receiving a second I / O request, at a second processing entity, the first data associated with the second I / O request Determining that the second data is to be stored on the first blade at a second location coupled to the first routing entity, and determining that the second data associated with the second I / O request for storage of data on the first blade To the first routing entity System.

일부 구현예에서, 예시적 방법은 제2 처리 엔티티에서, 제3 I/O 요청을 수신하는 단계, 제2 처리 엔티티에서, 제3 I/O 요청이 제1 라우팅 엔티티에 결합되는 제1 블레이드의 제1 위치로부터의 제1 데이터에 대한 판독 요청인 것을 결정하는 단계, 제1 라우팅 엔티티로부터 제1 위치로부터의 제1 데이터를 요청하는 단계, 및 제1 라우팅 엔티티로부터 제1 데이터를 수신하는 단계를 더 포함할 수 있다.In some implementations, the exemplary method includes receiving, at a second processing entity, a third I / O request; at a second processing entity, a third I / O request is sent to the first routing entity Requesting first data from a first location from a first routing entity, and receiving first data from a first routing entity, .

일 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 라우팅 엔티티를 통해 서로 간접적으로 결합된다. 일 양태에서, 컨트롤러 보드는 제1 라우팅 엔티티, 제1 처리 엔티티 및 제2 처리 엔티티를 포함한다. 제1 처리 엔티티는 제1 메모리에 결합될 수 있고 제2 처리 엔티티는 제2 메모리에 결합될 수 있다. 방법의 일부 구현예에서, 제1 처리 엔티티와 제1 라우팅 엔티티 사이의 제1 데이터의 송신 및 제2 처리 엔티티와 제1 라우팅 엔티티 사이의 제2 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행될 수 있다.In one implementation, the first processing entity and the second processing entity are indirectly coupled to each other through a routing entity. In one aspect, the controller board includes a first routing entity, a first processing entity, and a second processing entity. The first processing entity may be coupled to the first memory and the second processing entity may be coupled to the second memory. In some implementations of the method, the transmission of the first data between the first processing entity and the first routing entity and the transmission of the second data between the second processing entity and the first routing entity are performed by peripheral component interconnect (PCIe) Protocol. ≪ / RTI >

방법의 특정 구현예에서, 방법은 또한 제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 처리 엔티티에 송신될 수 있다.In a particular implementation of the method, the method further comprises: receiving, at the first processing entity, a third I / O request; at the first processing entity, the third data associated with the third I / Wherein the second blade includes a NVM storage medium, storing data associated with a third I / O request on a second blade in a second position Sending a third data associated with a third I / O request by the first processing entity to a second routing entity; receiving, at a second processing entity, a fourth I / O request; Determining that fourth data associated with a fourth I / O request is stored on a second blade at a fourth location coupled to a second routing entity, generating a fourth I / O request on the second blade, To the second processing entity for storage of the associated data. The fourth data are associated with 4 I / O request may include the step of transmitting to the second routing entity. In some implementations, the transmission of the third data between the first processing entity and the second routing entity and the transmission of the fourth data between the second processing entity and the second routing entity are performed using a Peripheral Component Interconnect Express (PCIe) protocol . The first blade may be one of a plurality of blades and the first routing entity may be one of a plurality of routing entities. The first packet received by the first processing entity may first be received at one or more interfacing entities and transmitted to the first processing entity via one of the plurality of routing entities.

예시적 장치는 제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 라우팅 엔티티에 송신하는 수단을 포함할 수 있다.The exemplary device comprises means for receiving a first I / O request, means for determining that first data associated with a first I / O request is stored on a first blade at a first location coupled to a first routing entity Wherein the first blade comprises means comprising an NVM storage medium, means for transmitting to the first routing entity first data associated with a first I / O request for storage of data on the first blade; Means for receiving a second I / O request; means for determining that second data associated with a second I / O request is stored on a second blade at a second location coupled to a second routing entity; And means for transmitting to the second routing entity second data associated with a second I / O request for storage of second data on the blade.

저장 매체에 액세스하는 다양한 시스템, 방법, 장치, 및 컴퓨터 판독 가능 매체가 설명된다. 저장 매체에 최적으로 액세스하는 기술이 설명된다. 일 구현예에서, 저장 디바이스는 비휘발성 메모리(NVM) 저장 매체를 사용하여 구현될 수 있다.Various systems, methods, devices, and computer-readable media for accessing a storage medium are described. Techniques for optimally accessing the storage medium are described. In one implementation, the storage device may be implemented using nonvolatile memory (NVM) storage media.

특정 예시적 구현예에서, 2개 이상의 컨트롤러를 포함하는 능동/능동 장애 허용 저장 디바이스가 구현될 수 있다. 그러나 다른 예시적 구현예에서, 능동/대기 시스템이 또한 구현될 수 있다. 일부 구현예에서, 컨트롤러는 단일 다이 위로 수개의 별개 구성요소의 기능성을 통합하는 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA) 또는 임의의 다른 기술을 사용하여 구현될 수 있다. 다른 구현예에서, 컨트롤러는 또한 다수의 별개 구성요소를 갖는 컨트롤러 보드를 포함할 수 있다. 일 양태에서, 각각의 컨트롤러 보드는 입력/출력(I/O) 요청의 처리를 분배하는 2개 이상의 처리 엔티티를 가질 수 있다. 일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 I/O 요청을 서비스하기 위해 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다.In certain exemplary implementations, an active / active fault tolerant storage device including two or more controllers may be implemented. However, in other exemplary embodiments, an active / standby system may also be implemented. In some implementations, the controller may be implemented using an application specific integrated circuit (ASIC), field programmable gate array (FPGA), or any other technology that integrates the functionality of several distinct components onto a single die. In other implementations, the controller may also include a controller board having a plurality of discrete components. In an aspect, each controller board may have two or more processing entities that distribute processing of input / output (I / O) requests. In one implementation, the configuration of components, modules, and controller boards is arranged in a manner that increases heat dissipation to service I / O requests, reduces power consumption, spreads power and workload, and reduces latency .

일 구현예에서, 각각의 컨트롤러는 NVM 저장 매체를 포함하는 NVM 블레이드에 결합될 수 있다. 본 발명의 구현예는 또한 NVM 저장 매체에의 액세스 시간을 개선하는 추가 향상을 제공할 수 있다. 본 발명의 일부 구현예가 예시 목적을 위해 NVM 저장 매체를 사용하여 본원에 설명될 수 있지만, 특정 구현예에서, 본 발명은 NVM 저장 매체에 제한되지 않을 수 있고 다른 적절한 물리 저장 매체는 본 발명의 범위로부터 벗어나는 것 없이 사용될 수 있다.In one implementation, each controller may be coupled to an NVM blade that includes an NVM storage medium. Embodiments of the present invention may also provide additional enhancements to improve access time to NVM storage media. Although some embodiments of the invention may be described herein using NVM storage media for illustrative purposes, in certain embodiments, the invention may not be limited to NVM storage media, and other suitable physical storage media may be used within the scope of the present invention Can be used without deviating from.

일 구현예에서, 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜과 같은 표준화 프로토콜은 컨트롤러 보드의 다양한 구성요소와 또한 NVM 저장 매체 사이에서 통신하기 위해 사용될 수 있다.In one implementation, a standardization protocol such as the Peripheral Component Interconnect Express (PCIe) protocol may be used to communicate between various components of the controller board and also NVM storage media.

예시적 저장 디바이스는 활성 모드에서 동작하도록 구성되는 제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 컨트롤러와 통신할 수 있다.An exemplary storage device is a first controller configured to operate in an active mode, the first controller being configured to receive an input / output (I / O) request to store and retrieve data from an NVM storage medium, A second controller configured to receive I / O requests for storing and retrieving data from an NVM storage medium, and a plurality of NVM blades including an NVM storage medium, wherein the plurality of NVM blades At least one of which may include a storage device comprising a plurality of NVM blades coupled to a first controller and a second controller for storing and retrieving data from an NVM storage medium. In one implementation, at least one of the plurality of NVM blades includes a first routing interface in communication with the first controller and a second routing interface in communication with the second controller. In some implementations, the first routing interface can communicate with the first controller and the second routing interface can communicate with the second controller using the PCIe protocol.

특정 구현예에서, 판독 동작에 대해, 제1 컨트롤러는 제1 I/O 요청을 수신하고, 제1 I/O 요청이 제1 I/O 요청과 연관되는 제1 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하고, 제1 위치에 제1 데이터를 저장하기 위해 명령 및 제1 데이터를 복수의 NVM 블레이드 중 적어도 하나에 송신하도록 구성될 수 있다. 저장 디바이스의 일 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 판독 동작을 위해 I/O 요청을 동시에 디코딩하고 NVM 저장 매체로부터 데이터를 요청하도록 구성될 수 있다.In a particular implementation, for a read operation, the first controller receives the first I / O request and the first I / O request stores the first data associated with the first I / O request to the NVM storage medium Request and to transmit the command and the first data to at least one of the plurality of NVM blades to store the first data in the first location. In one implementation of the storage device, the first controller and the second controller may be configured to simultaneously decode I / O requests for read operations and request data from the NVM storage medium.

특정 구현예에서, 기록 동작에 대해, 제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 블레이드에 송신하도록 더 구성될 수 있다.In a particular implementation, for a write operation, the second controller receives a second I / O request, and the second I / O request stores second data associated with the second I / O request on the NVM storage medium Request, and to transmit the command information associated with the second I / O request to the first controller. The first controller may be configured to receive the command information transmitted from the second controller and to transmit the storage command to at least one of the plurality of NVM blades. The second controller may be further configured to transmit the second data associated with the second I / O request to the one or more NVM blades.

특정 구현예에서, 복수의 NVM 블레이드 중 적어도 하나는 제1 컨트롤러로부터의 명령을 버퍼링하기 위해 제1 라우팅 인터페이스에 결합되는 제1 버퍼를 포함할 수 있다. 복수의 NVM 블레이드 중 적어도 하나는 제1 버퍼가 미리 결정된 임계값을 넘어서 가득차면 제1 컨트롤러로부터 명령을 폐기하도록 더 구성될 수 있다. 일부 구현예에서, 복수의 NVM 블레이드 중 적어도 하나는 또한 제1 컨트롤러 및 제2 컨트롤러로부터의 명령에 대한 NVM 인터페이스에의 액세스를 중재하는 명령 매니저를 포함할 수 있다. 명령 매니저가 명령에 대한 에러를 검출하는 사례에서, 적어도 하나의 NVM 블레이드는 I/O 요청과 연관되는 에러 정보를 명령이 발신된 컨트롤러에 다시 송신할 수 있다.In certain implementations, at least one of the plurality of NVM blades may include a first buffer coupled to the first routing interface for buffering instructions from the first controller. At least one of the plurality of NVM blades may be further configured to discard the command from the first controller if the first buffer is full beyond a predetermined threshold. In some implementations, at least one of the plurality of NVM blades may also include a command manager that mediates access to the NVM interface for commands from the first controller and the second controller. In the case where the command manager detects an error for the command, at least one NVM blade may send error information associated with the I / O request back to the commanded controller.

일부 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 장애 허용 정보를 서로 통신할 수 있다. 일 양태에서, 제1 컨트롤러 및 제2 컨트롤러는 비-PCIe 브리지를 사용하여 장애 허용 정보를 서로 통신할 수 있다. 일부 사례에서, 장애 허용 정보는 제1 컨트롤러로부터 복수의 NVM 블레이드 중 하나로 제1 I/O 요청의 실패에 관한 정보를 포함할 수 있다.In some implementations, the first controller and the second controller may communicate fault tolerance information with each other. In an aspect, the first controller and the second controller may communicate fault tolerance information using non-PCIe bridges. In some instances, the fault tolerance information may include information about the failure of the first I / O request from the first controller to one of the plurality of NVM blades.

일 구현예에서, 제1 컨트롤러, 제2 컨트롤러 및 복수의 NVM 블레이드는 파워 레일에 결합될 수 있으며, 파워 레일은 복수의 전원에 의해 전력 공급된다. 일 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 I/O 요청을 처리하는 하나 이상의 프로세서 및 컨트롤러와 복수의 NVM 블레이드 사이의 라우팅 동작을 위한 하나 이상의 라우터를 포함하는 인쇄 회로 보드(PCB)일 수 있다. 다른 구현예에서, 제1 컨트롤러 및 제2 컨트롤러는 처리 로직 및 라우팅 로직을 각각 포함하는 주문형 집적 회로(ASIC)일 수 있다.In one implementation, the first controller, the second controller, and the plurality of NVM blades may be coupled to a power rail, wherein the power rail is powered by a plurality of power sources. In one implementation, the first controller and the second controller may be a printed circuit board (PCB) that includes one or more processors for processing I / O requests and one or more routers for routing operations between a controller and a plurality of NVM blades have. In other implementations, the first controller and the second controller may be application specific integrated circuits (ASICs), each of which includes processing logic and routing logic.

저장 디바이스 상에 데이터를 저장하는 예시적 방법은 슬레이브 컨트롤러에서 제1 I/O 요청을 수신하는 단계, 제1 I/O 요청이 제1 I/O 요청과 연관되는 제1 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하는 단계, 제1 I/O 요청과 연관되는 명령 정보를 마스터 컨트롤러에 송신하는 단계, 마스터 컨트롤러에서, 슬레이브 컨트롤러로부터 송신된 명령 정보를 수신하는 단계, 및 제1 위치에 제1 데이터를 저장하기 위해 마스터 컨트롤러로부터의 제1 I/O 요청 및 슬레이브 컨트롤러로부터의 제1 데이터에 대한 송신된 명령 정보를 사용하는 저장 명령을 NVM 저장 매체를 포함하는 복수의 NVM 블레이드 중 적어도 하나에 송신하는 단계를 포함할 수 있다.An exemplary method for storing data on a storage device includes receiving a first I / O request at a slave controller, receiving a first data associated with a first I / O request with a first I / O request to an NVM storage medium Sending a command information associated with a first I / O request to a master controller, receiving command information transmitted from a slave controller at a master controller, 1 < / RTI > data from a slave controller to a first I / O request from a master controller and from a slave controller to at least one of a plurality of NVM blades including an NVM storage medium And transmitting the data.

예시적 방법은 마스터 컨트롤러에서 제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 프로토콜을 사용할 수 있다.The exemplary method includes receiving a second I / O request at the master controller, determining that the second I / O request is a request to store second data associated with the second I / O request to the NVM storage medium And transmitting the command and the second data to at least one of the plurality of NVM blades including the NVM storage medium to store the second data in the second location. The method includes receiving a second I / O request at a master controller, determining that a second I / O request is a request to read second data from a second location from an NVM storage medium, Retrieving second data associated with the second I / O request, receiving a third I / O request at the slave controller, receiving a third I / O request from the NVM storage medium from the third location, Reading from the NVM storage medium, and retrieving third data associated with the third I / O request from the NVM storage medium. In one implementation, the master and slave controllers can use the PCIe protocol to communicate with multiple NVM blades.

상술한 것은 이하의 상세한 설명이 더 잘 이해될 수 있도록 예의 특징 및 기술적 장점을 오히려 광범위하게 개략 설명했다. 부가 특징 및 장점은 이하에 설명될 것이다. 개시된 개념 및 특정 예는 본 개시의 동일한 목적을 수행하기 위해 다른 구조를 수정하거나 설계하는 기초로서 용이하게 이용될 수 있다. 이와 같은 등가 구성은 첨부된 청구항의 사상 및 범위로부터 벗어나지 않는다. 연관된 장점과 함께, 조직 및 동작 방법 둘 다에 관해, 본원에 개시되는 개념의 특징인 것으로 생각되는 특징은 첨부 도면과 관련하여 고려될 때 이하의 설명으로부터 더 잘 이해될 것이다. 도면 각각은 예시 및 설명만의 목적을 위해 제공되고 청구항의 제한의 정의로서 제공되지 않는다.The foregoing has outlined rather broadly the exemplary features and technical advantages in order that the detailed description that follows may be better understood. Additional features and advantages will be described below. The disclosed concepts and specific examples may be readily utilized as a basis for modifying or designing other structures to accomplish the same purpose of this disclosure. Such equivalent constructions do not depart from the spirit and scope of the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS The features believed to be characteristic of the concepts disclosed herein, both as to organization and method of operation, as well as their associated advantages, will be better understood from the following description when considered in conjunction with the accompanying drawings. Each of which is provided for the purposes of illustration and description only and is not provided as a definition of the limitations of the claims.

상술한 것은 이하의 상세한 설명이 더 잘 이해될 수 있도록 예의 특징 및 기술적 장점을 오히려 광범위하게 개략 설명했다. 부가 특징 및 장점은 이하에 설명될 것이다. 개시된 개념 및 특정 예는 본 개시의 동일한 목적을 수행하기 위해 다른 구조를 수정하거나 설계하는 기초로서 용이하게 이용될 수 있다. 이와 같은 등가 구성은 첨부된 청구항의 사상 및 범위로부터 벗어나지 않는다. 연관된 장점과 함께, 조직 및 동작 방법 둘 다에 관해, 본원에 개시되는 개념의 특징인 것으로 생각되는 특징은 첨부 도면과 관련하여 고려될 때 이하의 설명으로부터 더 잘 이해될 것이다. 도면 각각은 예시 및 설명만의 목적을 위해 제공되고 청구항의 제한의 정의로서 제공되지 않는다.The foregoing has outlined rather broadly the exemplary features and technical advantages in order that the detailed description that follows may be better understood. Additional features and advantages will be described below. The disclosed concepts and specific examples may be readily utilized as a basis for modifying or designing other structures to accomplish the same purpose of this disclosure. Such equivalent constructions do not depart from the spirit and scope of the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS The features believed to be characteristic of the concepts disclosed herein, both as to organization and method of operation, as well as their associated advantages, will be better understood from the following description when considered in conjunction with the accompanying drawings. Each of which is provided for the purposes of illustration and description only and is not provided as a definition of the limitations of the claims.

본 개시의 양태는 예로서 예시된다. 이하의 설명은 동일한 참조 숫자가 도처에서 동일한 요소를 언급하기 위해 사용되는 도면을 참조하여 제공된다. 하나 이상의 기술의 다양한 상세가 본원에 설명되지만, 다른 기술이 또한 가능하다. 일부 사례에서, 널리 공지된 구조 및 디바이스는 다양한 기술을 설명하는 것을 용이하게 하기 위해 블록도 형태로 도시된다.
본 개시에 의해 제공되는 예의 본질 및 장점의 추가 이해는 명세서 및 도면의 나머지 부분을 참조하여 실현될 수 있으며, 여기서 동일한 참조 숫자는 유사한 구성요소를 언급하기 위해 수개의 도면 도처에서 사용된다. 일부 사례에서, 서브라벨은 다수의 유사한 구성요소 중 하나를 나타내기 위해 참조 숫자와 연관된다. 기존 서브라벨에 명세서 없이 참조 숫자가 참조될 때, 참조 숫자는 모든 이와 같은 유사한 구성요소를 언급한다.
도 1은 본 발명의 일 구현예에 따른 저장 디바이스의 예시적 하이 레벨 블록도를 예시한다.
도 2는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 블록도를 예시한다.
도 3은 본 발명의 일 구현예에 따른 저장 디바이스의 또 다른 예시적 블록도를 예시한다.
도 4는 본 발명의 또 다른 구현예에 따른 저장 디바이스의 예시적 블록도를 예시한다.
도 5는 본 발명의 일 구현예에 따른 본 발명의 구현예를 수행하는 방법을 예시하는 흐름도이다.
도 6은 본 발명의 다른 구현예에 따른 본 발명의 구현예를 수행하는 다른 방법을 예시하는 흐름도이다.
도 7은 본 발명의 일 구현예에 따른 컨트롤러 보드의 예시적 블록도를 예시한다.
도 8은 본 발명의 적어도 하나의 구현예에 따른 컨트롤러 보드 상의 각각의 구성요소에 의해 보여지는 바와 같이 다양한 구성요소에 대한 어드레스 공간의 예시적 블록도를 예시한다.
도 9는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 하이 레벨 블록도를 예시한다.
도 10은 본 발명의 일 구현예에 따른 NVM 블레이드의 예시적 블록도를 예시한다.
도 11은 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 예시적 블록도를 예시한다.
도 12는 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 다른 예시적 블록도를 예시한다.
도 13은 본 발명의 구현예를 수행하는 컴퓨터 시스템을 도시한다.
An aspect of the disclosure is illustrated by way of example. The following description is provided with reference to the drawings, in which like reference numerals are used to refer to like elements throughout. While various details of one or more of the techniques are set forth herein, other techniques are also possible. In some instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the various techniques.
A further understanding of the nature and advantages of the examples provided by this disclosure may be realized by reference to the remaining portions of the specification and the drawings, wherein like reference numerals are used throughout the several figures to refer to like elements. In some instances, a sub-label is associated with a reference number to represent one of a number of similar components. Where reference numerals are referenced in the existing sublabels without the specification, reference numerals refer to all such similar components.
Figure 1 illustrates an exemplary high-level block diagram of a storage device in accordance with an embodiment of the invention.
Figure 2 illustrates another exemplary block diagram of a storage device according to an embodiment of the invention.
Figure 3 illustrates another exemplary block diagram of a storage device according to an embodiment of the invention.
Figure 4 illustrates an exemplary block diagram of a storage device according to another embodiment of the present invention.
5 is a flow chart illustrating a method of performing an embodiment of the present invention in accordance with an embodiment of the present invention.
Figure 6 is a flow chart illustrating another method of performing an embodiment of the present invention in accordance with another embodiment of the present invention.
Figure 7 illustrates an exemplary block diagram of a controller board in accordance with an embodiment of the present invention.
Figure 8 illustrates an exemplary block diagram of address space for various components as seen by respective components on a controller board in accordance with at least one implementation of the present invention.
9 illustrates another exemplary high-level block diagram of a storage device according to an embodiment of the invention.
Figure 10 illustrates an exemplary block diagram of an NVM blade in accordance with an embodiment of the present invention.
11 illustrates an exemplary block diagram of a blade controller in accordance with an embodiment of the invention.
12 illustrates another exemplary block diagram of a blade controller in accordance with an embodiment of the present invention.
Figure 13 illustrates a computer system that performs an embodiment of the present invention.

수개의 예시적 구현예는 이제 그것의 일부를 형성하는 첨부 도면에 대해 설명될 것이다. 본 개시의 하나 이상의 양태가 구현될 수 있는 특정 구현예가 아래에 설명되지만, 다른 구현예가 사용될 수 있고 다양한 수정은 본 개시의 범위 또는 첨부된 청구항의 사상으로부터 벗어나는 것 없이 이루어질 수 있다.Several exemplary implementations will now be described with reference to the accompanying drawings, which form a part thereof. Although specific embodiments in which one or more aspects of the disclosure may be implemented are described below, other implementations may be used and various modifications may be made without departing from the scope of the present disclosure or the scope of the appended claims.

본 발명의 구현예를 논의하기 전에, 일부 용어의 설명은 본 발명의 구현예를 이해할 시에 도움이 될 수 있다.Before discussing embodiments of the present invention, the description of some terms may be helpful in understanding embodiments of the present invention.

일부 구현예에서, "저장 디바이스"는 본원에서 논의되는 바와 같이, 저장 매체로부터 데이터를 저장하고 검색하도록 구성되는 컴퓨터 시스템을 포함할 수 있다. 컴퓨터 시스템은 도 13을 참조하여 설명되는 일부 또는 모든 구성요소를 사용하여 구현될 수 있다. 일부 구현예에서, 저장 디바이스는 저장 디바이스에 저레이턴시 및 고가용성 링크를 사용하는 네트워크를 통한 데이터의 액세스에 대한 요구를 갖는 기업 환경 또는 다른 유사한 환경에 사용될 수 있다. 더 낮은 전력 소비, 더 낮은 비용 및 좋은 열 소산은 또한 저장 디바이스로부터 바람직할 수 있다. 일부 구현예에서, 저장 디바이스는 랙 마운터블 디바이스일 수 있으며, 다수의 저장 디바이스는 집합적으로 배치되고 유지될 수 있다. 다른 구현예에서, 저장 디바이스는 독립형 디바이스일 수 있다. 저장 디바이스는 종래의 컴퓨터 시스템과 유사한 다른 주변 장치 및 디바이스를 가질 수 있지만, 일부 구현예에서, 저장 디바이스는 물리 공간 및 에너지의 사용을 최소화하기 위해 최적화되는 모듈식 설계를 갖는 스트립 다운(stripped down) 서버 컴퓨터일 수 있다. 저장 디바이스는 또한 I/O 요청을 수신하고, 그들 I/O 요청을 디코딩하고 I/O 요청을 기본 물리 매체에 대한 판독, 기록 및 구성 명령으로 변환하기 위해 저장 디바이스 내의 저장 매체 상에 저장되고 프로세서에 의해 실행되는 파일 시스템 소프트웨어 스택을 포함할 수 있다.In some implementations, a "storage device" may include a computer system configured to store and retrieve data from a storage medium, as discussed herein. The computer system may be implemented using some or all of the components described with reference to FIG. In some implementations, the storage device may be used in a corporate environment or other similar environment having a need for accessing data over the network using a low latency and highly available link to the storage device. Lower power consumption, lower cost, and better heat dissipation may also be desirable from a storage device. In some implementations, the storage device may be a rackmountable device, and multiple storage devices may be deployed and maintained collectively. In other implementations, the storage device may be a stand-alone device. Although the storage device may have other peripherals and devices similar to conventional computer systems, in some implementations the storage device may be stripped down with a modular design that is optimized to minimize the use of physical space and energy, Server computer. The storage device also stores on the storage medium within the storage device to receive I / O requests, decode their I / O requests, and convert I / O requests into read, write, and configure instructions for the underlying physical medium, Lt; RTI ID = 0.0 > a < / RTI > file system software stack.

본 발명의 일부 구현예에서, "플래시 저장 매체"는 본원에서 논의되는 바와 같이, 비휘발성 메모리(NVM)를 포함할 수 있다. 일부 사례에서, NVM을 사용하는 저장 디바이스의 구현예는 또한 고체 상태 디바이스로 언급될 수 있다. NVM 기반 디바이스의 예시적 구현예는 NOR, NAND, MRAM(Magnetoresistive RAM), FRAM(Ferroelectric RAM), RRAM(Resistive RAM)), 상 변화 메모리 또는 임의의 다른 적절한 기술을 사용하는 것을 포함할 수 있지만, 이에 제한되지 않는다. NOR 플래시는 고속 랜덤 액세스를 제공하고 데이터를 특정 메모리 위치에 예컨대 단일 바이트까지 판독하고 기록할 수 있다. NAND 플래시는 랜덤하게 판독될 수 있지만 전형적으로 고속으로 순차 기록되어, 페이지로 칭해지는 작은 블록에서 데이터를 처리한다. NAND 플래시는 그것이 기록하는 것보다 더 빠르게 판독할 수 있어, 데이터의 전체 페이지를 신속히 전송한다. NOR 플래시는 판독이 NAND 플래시보다 더 빠를 수 있고 기록이 더 느릴 수 있는 것을 제외하고 동일한 방식으로 작용할 수 있다. 일반적으로, 고밀도의 NOR 플래시보다 덜 비싼 NAND 기술은 동일한 크기 실리콘을 위해 더 높은 용량을 제공할 수 있다.In some embodiments of the present invention, "flash storage media" may include non-volatile memory (NVM), as discussed herein. In some instances, an implementation of a storage device using an NVM may also be referred to as a solid state device. An exemplary implementation of an NVM-based device may include using NOR, NAND, Magnetoresistive RAM (MRAM), Ferroelectric RAM (FRAM), Resistive RAM (RRAM)), phase change memory or any other suitable technique, But is not limited thereto. NOR flash provides high-speed random access and allows data to be read and written to a specific memory location, e.g., to a single byte. The NAND flash can be read randomly, but typically processes data in small blocks that are sequentially written at high speed, called pages. The NAND flash can read faster than it records, thus quickly transferring the entire page of data. NOR Flash can act in the same way except that readings can be faster than NAND flash and the write can be slower. In general, NAND technology, which is less expensive than high density NOR flash, can provide higher capacities for the same size silicon.

일부 구현예에서, 본 발명의 구현예는 단일 레벨 셀(SLC) NAND 플래시 기술을 이용할 수 있다. 다른 구현예에서, 본 발명의 구현예는 멀티 레벨 셀(MLC) NAND 플래시 저장 매체를 이용할 수 있다. MLC NAND는 더 많은 비트가 동일한 수의 트랜지스터들을 사용하여 저장되는 것을 허용하기 위해 셀 당 다수의 레벨을 사용하는 플래시 메모리 기술이다. SLC NAND 플래시 기술에서, 각각의 셀은 2개의 상태 중 하나에 존재할 수 있어, 셀 당 1 비트의 정보를 저장한다. 대부분의 MLC NAND 플래시 메모리 기술은 셀 당 4개의 가능한 상태를 가지므로, 그것은 셀 당 2 비트의 정보를 저장할 수 있다. MLC NAND를 사용하는 것은 더 높은 데이터 밀도로 인해 저장 단위 당의 비용을 감소시키는데 유리할 수 있다.In some implementations, embodiments of the present invention may utilize single level cell (SLC) NAND flash technology. In other implementations, embodiments of the invention may utilize multi-level cell (MLC) NAND flash storage media. MLC NAND is a flash memory technology that uses multiple levels per cell to allow more bits to be stored using the same number of transistors. In SLC NAND flash technology, each cell may be in one of two states, storing one bit of information per cell. Most MLC NAND flash memory technologies have four possible states per cell, so it can store two bits of information per cell. Using MLC NAND may be advantageous to reduce the cost per storage unit due to the higher data density.

본원에 설명되는 바와 같이, "블레이드", "플래시 블레이드" 또는 "NVM 블레이드"는 일부 구현예에서, 저장을 제공하기 위해 함께 하나 이상의 NVM 칩의 그룹화를 언급할 수 있으며, NVM 칩은 NVM 저장 매체를 포함한다. NVM 블레이드는 NVM 저장 매체에의 액세스를 중재하는 블레이드 컨트롤러를 가질 수 있다. NVM 블레이드 컨트롤러는 NVM 저장 매체 상에서 데이터를 액세스/저장하는 명령을 수신하거나, 명령을 처리하며 NVM 저장 매체로부터 데이터를 저장하거나 검색할 책임이 있을 수 있다. 일 구현예에서, NVM 블레이드 컨트롤러는 주문형 집적 회로(ASIC)를 사용하여 구현될 수 있다. 다른 구현예에서, NVM 블레이드 컨트롤러는 필드 프로그램 가능 게이트 어레이(FPGA)를 사용하여 구현될 수 있다.As described herein, a "blade", "flash blade", or "NVM blade" may, in some implementations, refer to a grouping of one or more NVM chips together to provide storage, . An NVM blade may have a blade controller that mediates access to NVM storage media. The NVM blade controller may be responsible for receiving commands to access / store data on NVM storage media, processing instructions, and storing or retrieving data from NVM storage media. In one implementation, the NVM blade controller may be implemented using an application specific integrated circuit (ASIC). In other implementations, the NVM blade controller may be implemented using a field programmable gate array (FPGA).

본원에 정의되는 바와 같이, "컨트롤러 보드"는 I/O 요청을 수신하고 그들 I/O 요청을 NVM 저장 매체를 판독, 기록 또는 구성하는 명령으로 변환하는 다양한 하드웨어, 펌웨어 및 소프트웨어 구성요소를 포함할 수 있다. 일 구현예에서, 컨트롤러 보드는 인쇄 회로 보드(PCB)를 사용하여 구현될 수 있으며, 컨트롤러 보드의 다양한 구성요소는 보드에 결합되고 버스를 사용하여 서로 통신할 수 있다. 다른 구현예에서, 무선과 같은, 다른 통신 수단은 구성요소 사이에서 통신하기 위해 사용될 수 있다. 도 7은 컨트롤러 보드의 예시적 구현예이다. 본 발명의 구현예가 수개의 별개 구성요소에 관해 설명될 수 있지만, 일부 구현예에서, 수개의 별개 구성요소의 기능성은 하나의 실리콘 다이에 의해 수행될 수 있다. 예를 들어, 처리 및 라우팅과 같은 다수의 별개 구성요소의 기능성은 본원에 설명되는 바와 같이, 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 멀티칩 모듈(MCM) 또는 임의의 다른 실리콘 기술로 구현되는 컨트롤러에 의해 수행될 수 있다. 본원에 설명되는 바와 같이, 일 구현예에서, "컨트롤러 보드"는 인쇄 회로 보드를 사용하여 한 세트의 기능을 구현하는 수개의 별개 구성요소를 언급할 수 있지만, "컨트롤러"는 컨트롤러 보드(예를 들어, 별개 구성요소를 갖는 PCB 보드) 및 컨트롤러(예를 들어, ASIC, FPGA 등으로 구현되는 수개의 별개 구성요소의 기능성) 둘 다를 언급할 수 있다.As defined herein, a "controller board" includes a variety of hardware, firmware, and software components that receive I / O requests and convert their I / O requests into instructions to read, write, or configure NVM storage media . In one implementation, the controller board may be implemented using a printed circuit board (PCB), wherein the various components of the controller board are coupled to the board and can communicate with each other using a bus. In other implementations, other communication means, such as wireless, may be used to communicate between the components. Figure 7 is an exemplary implementation of a controller board. While embodiments of the invention may be described with respect to several discrete components, in some embodiments, the functionality of several discrete components may be performed by a single silicon die. For example, the functionality of a number of distinct components, such as processing and routing, may be implemented within an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a multi-chip module (MCM) Can be performed by a controller implemented in silicon technology. As described herein, in one implementation, a "controller board" may refer to several distinct components that implement a set of functions using a printed circuit board, while a "controller" For example, a PCB board with separate components) and a controller (e.g., functionality of several distinct components implemented in an ASIC, FPGA, etc.).

본원에 설명되는 바와 같이, "처리 엔티티"는 하나 이상의 물리 또는 논리 프로세서를 언급할 수 있다. 용어 "처리 엔티티" 또는 "처리 컴플렉스"는 본 발명의 범위에서 벗어나는 것 없이, 본 명세서 도처에서 교환 가능하게 사용될 수 있다. 예를 들어, 처리 엔티티는 인텔, 퀄컴, 및 타일라와 같은 벤더로부터의 듀얼 코어, 쿼드 코어 또는 멀티 코어 프로세서를 포함할 수 있다. 처리 엔티티는 저장 매체에 액세스하기 위해 파일 시스템 소프트웨어 스택을 실행하고 네트워크로부터의 I/O 요청을 디코딩할 수 있다. 일 구현예에서, 처리 엔티티는 PCIe 프로토콜 또는 유사한 프로토콜을 위한 루트 컴플렉스를 포함할 수 있다. 일 구현예에서, 처리 엔티티는 ASIC, FPGA 또는 MCM 내에서 처리 로직으로 구현될 수 있다.As discussed herein, a "processing entity" may refer to one or more physical or logical processors. The term " processing entity "or" processing complex "may be used interchangeably throughout this specification without departing from the scope of the present invention. For example, processing entities may include dual-core, quad-core, or multicore processors from vendors such as Intel, Qualcomm, and Tyler. The processing entity may execute the file system software stack to access the storage medium and may decode the I / O request from the network. In one implementation, the processing entity may include a root complex for a PCIe protocol or similar protocol. In one implementation, the processing entity may be implemented as processing logic within an ASIC, FPGA, or MCM.

본원에 설명되는 바와 같이, "라우팅 엔티티"는 인터페이싱 엔티티, 처리 엔티티, NVM 블레이드 및 라우팅 엔티티 자체 사이에서 데이터를 라우팅하는 하나 이상의 라우터를 언급할 수 있다. 일 구현예에서, 라우팅 엔티티는 PCIe 프로토콜을 위한 PCIe 노드 또는 종단점을 나타낼 수 있다.As described herein, a "routing entity" may refer to one or more routers that route data between an interfacing entity, a processing entity, an NVM blade, and a routing entity itself. In one implementation, the routing entity may represent a PCIe node or endpoint for the PCIe protocol.

본원에 설명되는 바와 같이, "인터페이싱 엔티티"는 저장 디바이스와 인터페이스하는 하나 이상의 호스트 인터페이스 칩을 언급할 수 있다. 일 구현예에서, 인터페이싱 엔티티는 PCIe 프로토콜을 사용하여 I/O 요청을 라우팅 엔티티에 전송할 수 있다. 인터페이스 칩에서의 I/O 요청은 기가비트 이더넷, 파이버 채널, 다이얼 인 또는 심지어 PCIe 프로토콜과 같은 임의의 적절한 프로토콜을 사용하여 수신될 수 있다.As described herein, an "interfacing entity" may refer to one or more host interface chips that interface with a storage device. In one implementation, the interfacing entity may send an I / O request to the routing entity using the PCIe protocol. I / O requests at the interface chip may be received using any suitable protocol, such as Gigabit Ethernet, Fiber Channel, dial-in, or even the PCIe protocol.

본원에 설명되는 바와 같이, "I/O 요청"은 저장 매체로부터 데이터를 저장하거나 검색하기 위해 네트워크로부터 저장 디바이스로의 입력/출력 요청을 언급할 수 있다.As described herein, an "I / O request" may refer to an input / output request from a network to a storage device for storing or retrieving data from a storage medium.

본원에 설명되는 바와 같이, "주변 구성요소 상호연결 익스프레스(PCIe)"는 더 높은 최대 시스템 버스 처리량, 더 낮은 I/O 핀 카운트 및 더 작은 물리 풋프린트, 버스 디바이스에 대한 더 좋은 성능 스케일링, 더 상세한 에러 검출 및 보고 메커니즘 및 고유 핫 플러그 기능성을 위해 설계되는 고속 직렬 컴퓨터 확장 버스 표준을 언급할 수 있다. 종래의 PCIe 시스템에서, PCIe 루트 컴플렉스는 프로세서에 결합되는 모든 종단점 디바이스를 열거하고 트리형 구조를 생성한다.As described herein, "Peripheral Component Interconnect Express (PCIe)" includes higher maximum system bus throughput, lower I / O pin count and smaller physical footprint, better performance scaling for bus devices, A high-speed serial computer expansion bus standard designed for detailed error detection and reporting mechanisms and unique hot plug functionality. In a conventional PCIe system, a PCIe root complex enumerates all endpoint devices coupled to the processor and creates a tree-like structure.

기업 시스템에 대한 저장 디바이스는 대량 저장 용량, 저장 디바이스에 판독 및 기록을 위한 저레이턴시, 고대역폭, 저전력 소비, 및 신뢰성을 필요로 한다. 전통적으로, 기업 시스템은 전력이 턴 오프되는 동안에 데이터를 유지하는 하드 디스크 드라이브(HDD)와 같은 저장 매체를 사용하여 구현된다. HDD는 신속 회전 디스크를 사용하여 디지털 정보를 저장하고 검색하기 위해 사용되는 데이터 저장 디바이스이다. HDD는 데이터를 판독하고 그것을 표면에 기록하기 위해 가동 액추에이터 아암 상에 배열되는 자기 헤드를 갖는 하나 이상의 강성("하드") 신속 회전 디스크(플래터)로 구성된다.Storage devices for enterprise systems require mass storage capacity, low latency for reading and writing to storage devices, high bandwidth, low power consumption, and reliability. Traditionally, an enterprise system is implemented using a storage medium, such as a hard disk drive (HDD), that holds data while power is turned off. An HDD is a data storage device used to store and retrieve digital information using a fast spinning disk. An HDD is composed of one or more rigid ("hard") rapidly rotating disks (platters) having magnetic heads arranged on a movable actuator arm for reading data and writing it to a surface.

데이터를 판독하고 기록할 시에 수반되는 가동 부분으로 인해, HDD는 에러 및 고장의 경향이 본질적으로 있고, 데이터에 대한 탐색 시간의 개선에 관한 플로어를 갖는다. 부가적으로, HDD는 스피닝 플래터를 가지므로, 또한 부분이 얼마나 작게 제조될 수 있는지 및 부분의 전력 소비에 관한 제한이 있다.Due to the moving parts involved in reading and writing data, the HDD is inherently prone to errors and failures and has a floor for improving the seek time for the data. Additionally, since the HDD has a spinning platter, there is also a limit on how small the part can be manufactured and the power consumption of the part.

특정 구현예에서, 본원에 설명되는 기술은 NVM 저장 매체를 사용하여 저장 디바이스를 구현하는 것을 제안한다. 일부 구현예에서, NVM 저장 매체는 더 낮은 탐색 시간을 갖고, 가동 부분을 갖지 않고, HDD보다 일반적으로 더 신뢰성이 있을 수 있으므로, NVM 저장 매체를 사용하는 것이 일반적으로 유리할 수 있다.In certain implementations, the techniques described herein propose to implement a storage device using an NVM storage medium. In some implementations, it may generally be advantageous to use an NVM storage medium because the NVM storage medium has a lower seek time, does not have a moving part, and may be generally more reliable than an HDD.

일 구현예에서, 구성요소, 모듈 및 컨트롤러 보드의 구성은 열 소산을 증대시키고, 전력 소비를 감소시키고, 전력 및 워크 로드를 확산시키고, 레이턴시를 감소시키는 방식으로 배열될 수 있다.In one implementation, the components, modules, and configuration of the controller board can be arranged in a manner that increases heat dissipation, reduces power consumption, spreads power and workload, and reduces latency.

종래의 저장 디바이스는 I/O 요청을 수신하고, 요청을 처리하고 저장 요청을 적절한 저장 매체에 전송하기 위해 유니터리 처리 컴플렉스를 포함하는 각각의 컨트롤러 보드를 갖는 하나 이상의 컨트롤러 보드를 제공할 수 있다. 증가하는 네트워크 속도 및 저장 디바이스의 크기의 증가에 대한 계속 증가하는 요구에 따라, 저장을 위해 물리 매체에 액세스하는 유니터리 포인트는 I/O 요청에 대해 고레이턴시를 야기하는 시스템에 대한 보틀넥이 될 수 있다. 유니터리 처리 컴플렉스에서 처리 부하를 증가시키는 것은 더 작은 영역에 더 높은 열 집중을 야기해서 적절한 열 소산을 도전하고 있다. 더욱이, 단일 처리 유닛은 I/O 요청을 따르기에 충분히 빠른 트랜잭션을 처리 가능하게 하지 않을 수 있다. 종래의 시스템에서, 유니터리 시스템 설계는 트랜잭션 보틀넥이 종종 HDD에 대한 판독 및 기록을 위한 탐색 시간 이상이고 HDD에 대한 처리 경로가 아니므로, 문제가 되지 않을 수 있다.Conventional storage devices may provide one or more controller boards with respective controller boards containing a unit processing complex to receive I / O requests, process requests, and send storage requests to appropriate storage media. In accordance with the ever increasing demands for increasing network speed and increasing storage device size, a unitary point of access to the physical medium for storage is a bottleneck for a system that causes high latency for I / O requests . Increasing the processing load in a unit processing complex causes higher heat concentration in smaller areas, thus challenging proper heat dissipation. Moreover, a single processing unit may not be able to process transactions fast enough to follow an I / O request. In conventional systems, the unitary system design may not be a problem since the transaction bottleneck is often more than the seek time for reading and writing to the HDD and not the processing path for the HDD.

일부 구현예에서, 저장 디바이스는 NVM 저장 매체를 사용하여 구현될 수 있다. 일반적으로, NVM 저장 매체는 종래의 HDD보다 더 낮은 탐색 시간을 가질 수 있다. NVM 저장 매체에 의해 제공되는 더 낮은 탐색 기간의 경우, 단일 처리 컴플렉스를 사용하는 종래의 컨트롤러 보드 설계는 차선의 구성을 야기할 수 있다. 본 발명의 구현예는 또한 NVM 저장 매체에의 액세스 시간을 개선하기 위해 추가 강화를 제공할 수 있다. 본 발명의 일부 구현예는 예시 목적을 위해 NVM 저장 매체를 사용하여 본원에 설명될 수 있지만, 본 발명은 NVM 저장 매체에 제한되지 않을 수 있고 다른 적절한 물리 저장 매체는 본 발명의 범위로부터 벗어나는 것 없이 사용될 수 있다.In some implementations, the storage device may be implemented using an NVM storage medium. In general, NVM storage media may have a lower seek time than conventional HDDs. In the case of the lower search period provided by the NVM storage medium, a conventional controller board design using a single processing complex may cause a lane configuration. Embodiments of the present invention may also provide additional enhancements to improve access time to NVM storage media. While some embodiments of the invention may be described herein using NVM storage media for illustrative purposes, the invention is not limited to NVM storage media and other suitable physical storage media may be used without departing from the scope of the present invention. Can be used.

더욱이, 종래의 저장 디바이스는 데이터에 대한 미러링된 저장을 유지함으로써 장애 허용 시스템을 구현할 수 있다. 다시 말하면, 각각의 기록 동작에 대해, 데이터는 독립 처리 경로를 사용하여 적어도 2개의 개별 저장 서브시스템에 저장될 수 있다. 전원 고장, 저장 매체의 고장 또는 처리 경로 내의 에러와 같은 제1 저장 서브시스템 내의 돌발 고장의 경우에, 미러링된 데이터를 갖는 제2 저장 시스템은 제1 시스템이 복구하는 동안에 데이터를 검색하고 저장하기 위해 활성 백업으로서 사용될 수 있다. HDD에 대해, 미러링된 데이터를 유지하는 것은 매체의 저신뢰성으로 인해 필수적이고 매체와 연관되는 더 낮은 비용으로 인해 실현 가능할 수 있다.Moreover, conventional storage devices can implement a fault tolerant system by maintaining mirrored storage of data. In other words, for each write operation, the data may be stored in at least two separate storage subsystems using independent processing paths. In the event of an unexpected failure in the first storage subsystem, such as a power failure, a failure of the storage medium, or an error in the processing path, the second storage system with the mirrored data is used to retrieve and store data during the recovery of the first system Can be used as an active backup. For HDDs, maintaining mirrored data is essential due to the low reliability of the medium and may be feasible due to the lower cost associated with the medium.

일부 구현예에서, NVM 저장 매체는 장애 허용 시스템을 구현하기 위해 사용될 수 있다. 상대적으로, NVM 저장 매체는 종래의 저장 매체보다 더 신뢰성이 있고 에러의 경향이 더 적을 수 있다. 일부 구현예에서, NVM 저장 매체 상에 저장되는 데이터의 신뢰성은 복수 어레이 독립 디스크(RAID) 또는 다른 적절한 에러 복구 및 정정 기술과 같은 기술을 사용하여 보장될 수 있다. 따라서 도면을 참조하여 본원에서 논의되는 구현예에 더 상세히 설명되는 바와 같이, 저장 매체를 포함하는 전체 시스템을 미러링하는 대신에, 동일한 판독 또는 기록 동작을 위한 다수의 경로를 NVM 저장 매체의 동일한 물리 위치에 제공함으로써 시스템의 전체 비용을 감소시키는 것은 NVM 저장 매체를 사용하여 구현되는 구현예에서 유리할 수 있다.In some implementations, the NVM storage medium may be used to implement a fault tolerant system. In comparison, NVM storage media may be more reliable and less prone to error than conventional storage media. In some implementations, the reliability of the data stored on the NVM storage medium may be assured using techniques such as multiple array independent disks (RAID) or other suitable error recovery and correction techniques. Thus, instead of mirroring the entire system including the storage medium, as described in more detail in the embodiments discussed herein with reference to the figures, a number of paths for the same read or write operation may be stored on the same physical location of the NVM storage medium To reduce the overall cost of the system may be advantageous in implementations implemented using NVM storage media.

도 1은 본 발명의 일 구현예에 따른 저장 디바이스의 예시적 하이 레벨 블록도를 예시한다. 블록(102)은 2개의 컨트롤러 보드(104 및 106) 및 컨트롤러 보드에 결합되는 블레이드(120a-n)의 어레이를 갖는 저장 디바이스를 예시한다. 일 구현예에서, 도 1로부터의 저장 디바이스는 능동/능동 저장 시스템을 나타낼 수 있다. 능동/능동 구성은 컨트롤러 보드 둘 다에 대한 처리 모듈이 I/O를 처리하고 다른 것에 대한 대기 능력을 제공할 수 있게 한다. 하나의 단순한 예에서, 특정 블레이드에 대한 판독 또는 기록 명령이 컨트롤러 보드(104)로부터 실패하면, 동일한 판독 또는 기록은 컨트롤러 보드(106)를 통해 시도될 수 있다. 통신 프로토콜은 컨트롤러 보드(104 및 106) 사이에서 상태 정보를 통신하기 위해 구현될 수 있다. 컨트롤러 보드 둘 다와 연관되는 처리 모듈이 I/O를 동시에 또는 거의 동시에 처리할 수 있으므로, 성능을 향상시키기 위해 능동/능동 저장 디바이스를 구현하는 것이 유리할 수 있다. 그러나, 도 1로부터의 저장 디바이스는 능동/능동 저장 디바이스에 제한되지 않고 또한 능동/수동 구성으로 사용될 수 있으며, 하나의 컨트롤러 보드에 대한 처리 모듈은 I/O 요청을 처리하기 위해 활성인 반면에, 다른 것은 능동 일차 컨트롤러 보드가 고장나거나 오프라인으로 취해져야 하는 I/O 활동을 대체할 준비가 되어있는 대기 모드에서 아이들(idle)이다.Figure 1 illustrates an exemplary high-level block diagram of a storage device in accordance with an embodiment of the invention. Block 102 illustrates a storage device having an array of blades 120a-n coupled to two controller boards 104 and 106 and a controller board. In one implementation, the storage device from Figure 1 may represent an active / active storage system. The active / active configuration allows the processing module for both controller boards to process I / O and provide standby capability for others. In one simple example, if a read or write command for a particular blade fails from the controller board 104, the same read or write may be attempted through the controller board 106. The communication protocol may be implemented to communicate status information between the controller boards 104 and 106. It may be advantageous to implement active / active storage devices to improve performance, since the processing modules associated with both controller boards can handle I / Os simultaneously or nearly simultaneously. However, the storage device from Figure 1 is not limited to active / active storage devices and can also be used in an active / passive configuration, and the processing module for one controller board is active to handle I / O requests, The other is idle in idle mode where the active primary controller board is ready to replace I / O activity that may have failed or taken offline.

도 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)에 결합된다.As shown in Figure 1, each NVM blade may be coupled to both controller boards. Each controller board has routing modules 108 and 110 for routing, processing modules 112 and 114 for processing I / O requests, and host interfaces 116 and 118 for receiving I / O requests. In one implementation, routing modules 108 and 110 may be responsible for routing I / O requests from interface modules 116 and 118 to processing modules 112 and 114 for further processing of I / O requests . Processing modules 112 and 114 may use the file system software stack (not shown) to process I / O requests. Routing modules 108 and 110 also route access and storage requests from processing modules 112 and 114 to NVM blades 120a-n. In one implementation, the NVM blades are coupled to routing modules 108 and 110 using a PCIe protocol or any other suitable protocol.

일 구현예에서, 각각의 NVM 블레이드는 컨트롤러 보드(104 및 106) 둘 다에 결합될 수 있어 NVM 저장 매체의 각각의 물리 어드레스가 컨트롤러 보드 중 어느 한쪽에 의해 액세스 가능하게 하는 것을 허용한다. 이와 같은 구성은 기본 저장 매체의 복제 및 데이터의 미러링을 회피하는 것에 유리할 수 있으며, 물리 매체 상의 데이터의 신뢰성은 RAID, 또는 그것의 임의의 조합과 같은 더 신뢰성 있는 저장 매체 및/또는 정교한 데이터 복구 기술을 사용함으로써 보증될 수 있다.In one implementation, each NVM blade may be coupled to both controller boards 104 and 106 to allow each physical address of the NVM storage medium to be accessible by either one of the controller boards. Such an arrangement may be advantageous in avoiding duplication of the underlying storage medium and mirroring of data, and the reliability of the data on the physical medium may be enhanced by a more reliable storage medium such as RAID, or any combination thereof, and / or a sophisticated data recovery technique As shown in FIG.

도 2는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 블록도를 예시한다. 도 2는 2개의 컨트롤러 보드의 이미지를 도시하며, 각각의 컨트롤러 보드는 2개의 프로세서, 메모리, 라우터, 및 인터페이스 칩을 포함한다. 도 2는 또한 공기흐름을 위한 중심 채널을 갖는 42 NVM 블레이드를 도시한다. 도시되지 않지만, 저장 디바이스는 또한 전력 관리 기능성 및 온보드 NVM을 갖는 2개의 브리지 보드를 포함할 수 있다. 온보드 NVM은 포인터, 갱신된 활동, 캐시 백업 및 판독/기록 버퍼와 같은 동적 메타데이터를 저장하기 위해 사용될 수 있다. 일부 구현예에서, 바이트 기록 가능한 자기 RAM과 같은 NVM은 온보드 NVM을 구현하기 위해 사용될 수 있다. 부가적으로, 저장 디바이스는 12 팬을 포함할 수 있으며, 8 팬은 NVM 메모리를 냉각시키는데 사용되고 4 팬은 컨트롤러 보드를 냉각시키는데 사용된다. 구성요소는 공기흐름, 처리 부하, 열 소산을 최적화하기 위해 도 2의 예시적 구성에 배치될 수 있다. 저장 디바이스 또한 다수의 전원을 포함할 수 있다. 전원은 일반적으로 고장이 나기 쉽고 팬 또는 다른 전력 구성요소의 고장으로 인해 고장날 수 있다. 저장 디바이스에 전력 공급하는 다수의 전원을 갖는 것은 전원 중 하나에 대한 구성요소의 고장으로 인한 저장 디바이스의 고장을 회피할 수 있다. 일 구현예에서, 컨트롤러 또는 컨트롤러 보드는 파워 레일을 통해 전력 공급될 수 있으며, 파워 레일은 다수의 전원으로부터 전력을 공급할 수 있다. 파워 레일에 연결되는 전원 중 하나의 고장의 경우에, 파워 레일은 기능 전원으로부터 전력을 계속 공급한다. 일부 구현예에서, 고장난 전원은 적절한 기능 전원으로 핫 스왑 가능(hot-swappable)(즉, 저장 디바이스를 사이클링하는 전력 없이 대체 가능)할 수 있다.Figure 2 illustrates another exemplary block diagram of a storage device according to an embodiment of the invention. Figure 2 shows an image of two controller boards, each controller board comprising two processors, a memory, a router, and an interface chip. Figure 2 also shows a 42 NVM blade with a center channel for air flow. Although not shown, the storage device may also include two bridge boards with power management functionality and onboard NVM. The onboard NVM may be used to store dynamic metadata such as pointers, updated activities, cache backups, and read / write buffers. In some implementations, an NVM, such as a byte recordable magnetic RAM, may be used to implement the onboard NVM. Additionally, the storage device may include 12 fans, 8 fans used to cool the NVM memory, and 4 fans used to cool the controller board. The components can be placed in the exemplary configuration of FIG. 2 to optimize air flow, process load, and heat dissipation. The storage device may also include multiple power sources. The power supply is generally susceptible to failure and can fail due to a failure of the fan or other power components. Having multiple power supplies to power the storage device can avoid failures of the storage device due to component failure for one of the power supplies. In one implementation, the controller or controller board can be powered through a power rail, which can supply power from multiple power sources. In the event of a fault in one of the power sources connected to the power rail, the power rail continues to supply power from the functional power source. In some implementations, a failed power source may be hot-swappable (i.e., can be replaced without power cycling the storage device) with an appropriate functional power source.

NVM 블레이드 및 컨트롤러/컨트롤러 보드는 보드 중 어느 하나가 고장나면 단락을 방지하는 개별적으로 구현된 디지털 회로 차단기를 가질 수 있다. 더욱이, 전원은 또한 그것이 파워 레일에 전력만을 공급하지만, 전원이 고장난 경우에 파워 레일로부터 전력을 배출하지 않는 것을 허용하는 방식으로 구현될 수 있다. 일 구현예에서, 다이오드는 전력이 고장난 전원으로부터 배출되는 것을 방지하기 위해 사용될 수 있다.NVM blades and controller / controller boards can have individually implemented digital circuit breakers that prevent shorts if any of the boards fails. Moreover, the power supply can also be implemented in a manner that only allows it to supply power to the power rail, but not to draw power from the power rail in the event of a power failure. In one embodiment, the diode may be used to prevent power from being discharged from a failed power source.

컨트롤러 보드, 전원, NVM 블레이드, 브리지 보드 및 팬 및 그것의 연관된 구성과 같은 도 2를 참조하여 설명되는 구성요소의 수는 제한되지 않고 저장 디바이스의 특정 구성을 예시하는 일 예로 제공된다.The number of components described with reference to FIG. 2, such as the controller board, the power supply, the NVM blade, the bridge board, and the fan and its associated configuration, is not limited and is provided as an example illustrating a particular configuration of the storage device.

도 3은 본 발명의 일 구현예에 따른 저장 디바이스의 또 다른 예시적 블록도를 예시한다. 도 3에 도시된 바와 같이, 저장 디바이스의 구성요소는 직사각형 형상 박스에 끼워맞춰지도록 구성될 수 있다. 하나의 예시적 구성에서, 공기흐름은 전면에서 후면까지일 수 있으며, 팬은 저장 디바이스의 후면에 배치된다. 이와 같은 형상은 다수의 저장 디바이스를 기업 데이터 저장 시설에서 랙 구성으로 함께 그룹화하는 데 유리할 수 있다. 그러나 저장 디바이스의 형상은 도 3에 도시된 직사각형 형상 박스에 제한되지 않는다.Figure 3 illustrates another exemplary block diagram of a storage device according to an embodiment of the invention. As shown in Figure 3, the components of the storage device may be configured to fit into a rectangular shaped box. In one exemplary configuration, the airflow can be from front to back, and the fan is disposed on the back side of the storage device. Such a configuration can be advantageous for grouping together a number of storage devices into a rack configuration from an enterprise data storage facility. However, the shape of the storage device is not limited to the rectangular shaped box shown in Fig.

도 4는 본 발명의 일 구현예에 따른 저장 디바이스의 예시적 블록도를 예시한다. 도 4의 시스템(402)은 제1 컨트롤러 보드(404) 및 제2 컨트롤러 보드(406)를 갖는 저장 디바이스를 예시한다. 예시 목적을 위해, 도 4는 복수의 NVM 블레이드로부터의 단일 NVM 블레이드(420)를 도시한다.Figure 4 illustrates an exemplary block diagram of a storage device according to an embodiment of the invention. The system 402 of FIG. 4 illustrates a storage device having a first controller board 404 and a second controller board 406. For illustrative purposes, FIG. 4 shows a single NVM blade 420 from a plurality of NVM blades.

제1 컨트롤러 보드(404)는 제1 처리 엔티티(412), 제1 처리 엔티티(416)에 결합되는 메모리, 제2 처리 엔티티(414), 제2 처리 엔티티(432)에 결합되는 메모리, 인터페이싱 엔티티(408), 및 라우팅 엔티티(410)를 가질 수 있다.The first controller board 404 includes a first processing entity 412, a memory coupled to the first processing entity 416, a second processing entity 414, a memory coupled to the second processing entity 432, (408), and a routing entity (410).

제2 컨트롤러 보드(406)는 제3 처리 엔티티(424), 제3 처리 엔티티(428)에 결합되는 메모리, 제4 처리 엔티티(418), 제4 처리 엔티티(430)에 결합되는 메모리, 인터페이싱 엔티티(422), 및 라우팅 엔티티(426)를 가질 수 있다.The second controller board 406 includes a third processing entity 424, a memory coupled to the third processing entity 428, a fourth processing entity 418, a memory coupled to the fourth processing entity 430, A routing entity 422, and a routing entity 426.

일 구현예에서, 라우팅 엔티티(410 및 426)는 I/O 요청의 추가 처리를 위해 인터페이싱 엔티티(408 및 422)로부터의 I/O 요청을 처리 엔티티(412, 416, 428 및 430) 중 하나에 라우팅할 책임이 있을 수 있다. 처리 엔티티는 파일 시스템 소프트웨어 스택(도시되지 않음)을 사용하여 I/O 요청을 처리할 수 있다. 라우팅 엔티티(410 및 426)는 또한 처리 엔티티(412, 416, 428 및 430)로부터의 데이터 요청을 NVM 블레이드(420)에 라우팅한다.In one implementation, routing entities 410 and 426 send I / O requests from interfacing entities 408 and 422 to one of the processing entities 412, 416, 428, and 430 for further processing of I / You may be responsible for routing. The processing entity may process the I / O request using a file system software stack (not shown). Routing entities 410 and 426 also route data requests from processing entities 412, 416, 428, and 430 to NVM blade 420.

일부 구현예에서, 제1 컨트롤러 보드(404)로부터의 라우팅 엔티티(410) 및 제2 컨트롤러 보드(406)로부터의 라우팅 엔티티(426)는 NVM 블레이드(420)로부터 데이터를 저장하고 검색하기 위해 NVM 블레이드(420)에 결합될 수 있다. 일 구현예에서, NVM 블레이드(420)는 PCIe 프로토콜을 사용하여 라우팅 엔티티에 결합된다. 이와 같은 구성은 기본 저장 매체의 복제 및 데이터의 미러링을 회피하는 것에 유리할 수 있으며, 물리 매체 상의 데이터의 신뢰성은 RAID, 또는 그것의 임의의 조합과 같은 더 신뢰성있는 저장 매체 및/또는 정교한 데이터 복구 기술을 사용함으로써 보장될 수 있다.In some implementations, the routing entity 410 from the first controller board 404 and the routing entity 426 from the second controller board 406 are connected to the NVM blade 420 to store and retrieve data from the NVM blade 420. [ (Not shown). In one implementation, the NVM blade 420 is coupled to the routing entity using the PCIe protocol. Such an arrangement may be advantageous in avoiding duplication of the underlying storage medium and mirroring of data, and the reliability of the data on the physical medium may be enhanced by a more reliable storage medium such as RAID, or any combination thereof, and / or a sophisticated data recovery technique As shown in FIG.

도 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)에 송신될 수 있다.4, in one exemplary configuration, the first processing entity 412 receives one or more I / O requests and the data associated with the I / O requests is for a storage operation and the first routing entity 410 And to send data associated with the I / O request to the first routing entity for storage of the first data on the first blade 420, have. In one implementation, the file system software stack executing on the first processing entity 412 can determine the location and NVM blade operation associated with the I / O request. For example, in one implementation, the first processing entity 412 may perform one or more address translations from the file identifier for the data on the physical storage medium to the physical location. In one aspect, the I / O request received by the first processing entity 412 may first be received at the interfacing entity 408 and transmitted to the first processing entity 412 via one of the plurality of routing entities.

유사하게, 제2 처리 엔티티(414)는 다른 I/O 요청을 수신하고, I/O 요청과 연관되는 데이터가 제1 라우팅 엔티티(410)에 결합되는 제1 블레이드(420) 상의 다른 위치에 저장되는 것을 결정하고 제1 블레이드(420) 상의 데이터의 저장을 위해 I/O 요청과 연관되는 데이터를 제1 라우팅 엔티티(410)에 송신하도록 구성될 수 있다. 제2 처리 엔티티(414)는 또한 I/O 요청과 연관되는 위치 및 저장 동작을 결정하는 파일 시스템 소프트웨어 스택을 실행할 수 있다.Similarly, the second processing entity 414 receives another I / O request and stores the data associated with the I / O request in another location on the first blade 420 that is coupled to the first routing entity 410 And to transmit data associated with the I / O request to the first routing entity 410 for storage of data on the first blade 420. [ The second processing entity 414 may also execute a file system software stack that determines the location and storage operation associated with the I / O request.

상기 예는 동일한 컨트롤러 보드로부터 2개의 처리 엔티티 사이의 동일한 NVM 블레이드(420)에 액세스하기 위해 로드 밸런싱을 수행하고 처리 엔티티(412 및 414) 사이에서 다수의 I/O 요청을 확산시키는 예시적 구성 및 프로세스를 예시한다. 2개의 처리 엔티티가 도시되지만, 다수의 처리 엔티티가 사용될 수 있다. 이것은 다수의 저장 동작을 동일한 물리 매체와 동시에 매우 고속으로 수행하는 동안에 I/O 요청을 처리하는 부하를 확산시키고 또한 보틀넥을 회피하는 데에 유리할 수 있다.The example illustrates an exemplary configuration for performing load balancing to access the same NVM blade 420 between two processing entities from the same controller board and for spreading multiple I / O requests between processing entities 412 and 414 and ≪ / RTI > Although two processing entities are shown, a number of processing entities may be used. This may be advantageous in spreading loads handling I / O requests and also avoiding bottlenecks while performing multiple storage operations at the same time as the same physical medium at very high speeds.

저장된 데이터는 또한 유사한 기술을 사용하여 물리 매체로부터 검색될 수 있다. 예를 들어, 제2 처리 엔티티(414)는 이와 같은 점에 대해 제1 처리 엔티티(412) 또는 임의의 다른 처리 엔티티에 의해 저장되는 데이터를 판독하기 위해 I/O 요청을 수신하도록 구성될 수 있다. 제2 처리 엔티티(414)는 I/O 요청이 제1 라우팅 엔티티(410)에 결합되는 제1 블레이드(420)의 위치에서의 데이터에 대한 판독 요청인 것을 결정하고, 제1 라우팅 엔티티(410)로부터 위치로부터의 데이터를 요청하고, 제1 라우팅 엔티티(410)로부터 제1 데이터를 수신할 수 있다.The stored data may also be retrieved from the physical medium using similar techniques. For example, the second processing entity 414 may be configured to receive an I / O request to read data stored by the first processing entity 412 or any other processing entity for this point . The second processing entity 414 determines that the I / O request is a read request for data at the location of the first blade 420 coupled to the first routing entity 410, and the first routing entity 410 determines that the I / And may receive the first data from the first routing entity 410. [

하나의 예시적 구성에서, 제1 처리 엔티티(412) 및 제2 처리 엔티티(414)는 직접 결합되는 것이 아니라, 제1 라우팅 엔티티(410)를 통해 서로 결합될 수 있다. 제1 처리 엔티티(412)와 제1 라우팅 엔티티(410) 사이의 데이터의 송신 및 제2 처리 엔티티(414)와 제1 라우팅 엔티티(410) 사이의 데이터의 송신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다.In one exemplary configuration, the first processing entity 412 and the second processing entity 414 may not be directly coupled, but may be coupled to each other through the first routing entity 410. The transmission of data between the first processing entity 412 and the first routing entity 410 and the transmission of data between the second processing entity 414 and the first routing entity 410 is accomplished using the PCIe protocol or any other suitable protocol . ≪ / RTI >

예시 목적을 위해, 도 4는 하나의 NVM 블레이드 및 2개의 컨트롤러 보드를 도시하지만, 각각의 컨트롤러 보드는 2개의 처리 엔티티, 2개의 메모리 및 라우팅 엔티티 및 인터페이싱 엔티티를 가지며, 본 발명의 구현예는 도면에 도시되는 엔티티의 수에 제한되지 않는다. 예를 들어, 다른 예시적 구성은 본 발명의 범위로부터 벗어나는 것 없이, 다수의 NVM 블레이드, 다수의 라우팅 엔티티 및 다수의 인터페이싱 엔티티를 포함할 수 있다. 도 7은 다수의 라우터(라우팅 엔티티) 및 다수의 인터페이스 칩(인터페이싱 엔티티)을 갖는 이와 같은 구성의 일 예이다.For illustrative purposes, Figure 4 shows one NVM blade and two controller boards, but each controller board has two processing entities, two memory and routing entities and an interfacing entity, But is not limited to the number of entities shown in FIG. For example, other exemplary configurations may include multiple NVM blades, multiple routing entities, and multiple interfacing entities, without departing from the scope of the present invention. Figure 7 is an example of such a configuration with multiple routers (routing entities) and multiple interface chips (interfacing entities).

다른 예시적 구성에서, 제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)와 유사한 방식으로 구성되고 동작될 수 있다.In another exemplary configuration, the first processing entity 412 and the second processing entity 414 may be coupled to another (second) routing entity (not shown) on the first controller board 404. Similar to the routing entity 410, the second routing entity can also be coupled to another NVM blade and can handle storage access commands received from both the first processing entity 412 and the second processing entity 414 have. The transmission of data between the first processing entity 412 and the second routing entity (not shown) and the transmission of data between the second processing entity 414 and the second routing entity (not shown) Lt; RTI ID = 0.0 > protocol. ≪ / RTI > Similarly, the components on the second controller board 406 may be configured and operated in a manner similar to the first controller board 404 described above.

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 블레이드를 포함할 수 있고 컨트롤러 보드는 복수의 라우팅 엔티티를 포함할 수 있다.The NVM blade 420 may include a plurality of routing interfaces to communicate with a plurality of controller boards. In one exemplary implementation of the storage device 402 a first controller board 404 including the routing entity 410 and a second controller board 406 including the routing entity 426 are coupled to the NVM blade 420 ). The NVM blade 420 may be coupled to the first controller board 404 via the routing entity 410 and the NVM blade may be coupled to the second controller board 406 via the routing entity 426. [ In one implementation, the NVM blade 420 communicates with the routing entities 410 and 426 on the controller board using the PCIe protocol or any other suitable protocol. In one implementation, the NVM blade includes an NVM storage medium. In other implementations, the storage device may comprise a plurality of NVM blades and the controller board may comprise a plurality of routing entities.

일부 구현예에서, 제1 컨트롤러 보드(404)로부터의 라우팅 엔티티(410) 및 제2 컨트롤러 보드(406)로부터의 라우팅 엔티티(426)는 서로 결합될 수 있다. 일부 구현예에서, 2개의 라우팅 엔티티는 비-PCIe-부합 투명 브리지를 사용하여 서로 결합될 수 있다. 일 구현예에서, 2개의 라우팅 엔티티(410 및 426)는 장애 허용 정보, 시스템 상태 정보, 트랜잭션 완료의 정보 및 컨트롤러 보드의 상태에 관한 다른 정보를 서로 통신할 수 있다.In some implementations, the routing entity 410 from the first controller board 404 and the routing entity 426 from the second controller board 406 may be coupled together. In some implementations, the two routing entities may be coupled to each other using a non-PCIe-compliant transparent bridge. In one implementation, the two routing entities 410 and 426 may communicate fault tolerance information, system state information, transaction completion information, and other information regarding the state of the controller board.

일 구현예에서, 도 4로부터의 저장 디바이스(402)는 능동/능동 저장 시스템을 나타낼 수 있다. 능동/능동 구성은 컨트롤러 보드 둘 다에 대한 처리 모듈이 I/O 판독을 처리하고 다른 것에 대한 대기 능력을 제공할 수 있게 한다. 하나의 단순한 예에서, 특정 블레이드에 대한 판독 또는 기록 명령이 컨트롤러 보드(404)로부터 실패하면, 동일한 판독 또는 기록은 컨트롤러 보드(406)를 통해 시도될 수 있다. 상기 설명된 바와 같이, 통신 프로토콜은 라우팅 엔티티(410 및 426)를 통해 컨트롤러 보드(404 및 406) 사이에 상태 정보를 통신하도록 구현될 수 있다. 컨트롤러 보드 둘 다와 연관되는 처리 모듈이 I/O를 동시에 처리할 수 있으므로, 성능을 향상시키기 위해 능동/능동 저장 디바이스를 구현하는 것이 유리할 수 있다. 그러나, 도 4로부터의 저장 디바이스는 능동/능동 저장 디바이스에 제한되지 않고 또한 능동/수동 구성으로 사용될 수 있으며, 하나의 컨트롤러 보드에 대한 처리 모듈은 I/O 요청을 처리하기 위해 활성인 반면에, 다른 것은 능동 일차 컨트롤러 보드가 고장나거나 오프라인으로 취해져야 하는 I/O 활동을 대체할 준비가 되어 있는 대기 모드에서 아이들이다.In one implementation, the storage device 402 from FIG. 4 may represent an active / active storage system. The active / active configuration allows the processing module for both controller boards to handle I / O reads and provide standby capability for others. In one simple example, if a read or write command for a particular blade fails from the controller board 404, the same read or write may be attempted through the controller board 406. As described above, the communication protocol may be implemented to communicate status information between the controller boards 404 and 406 via routing entities 410 and 426. [ Since the processing modules associated with both controller boards can handle I / O concurrently, it may be advantageous to implement active / active storage devices to improve performance. However, the storage device from Figure 4 is not limited to active / active storage devices and can also be used in an active / passive configuration, and the processing module for one controller board is active to handle I / O requests, The other is the idle mode in which the active primary controller board is ready to replace I / O activity that may have failed or taken offline.

능동/능동 시스템의 일 구현예에서, 하나 이상의 컨트롤러 보드는 마스터 보드의 역할을 가정할 수 있고 다른 하나 이상의 보드는 슬레이브 보드의 역할을 가정할 수 있다. 마스터 컨트롤러 보드는 모든 데이터 기록을 NVM 블레이드에 수행할 수 있는 반면에, 마스터 또는 슬레이브 보드 중 어느 한쪽은 판독을 수행할 수 있다.In one implementation of the active / active system, one or more controller boards may assume the role of a master board and one or more other boards may assume the role of a slave board. The master controller board can perform all data writing to the NVM blade, while the master or slave board can perform the reading.

하나의 예시적 구현예에서, 슬레이브 컨트롤러 보드에 도달하는 I/O 기록 동작은 마스터 컨트롤러 보드에 의해 부분적으로 수행될 수 있다. 예를 들어, 기록 명령 또는 기록 명령과 연관되는 정보는 슬레이브 컨트롤러 보드로부터 마스터 컨트롤러 보드로 송신될 수 있다. 일 구현예에서, NT PCIe 브리지는 기록 동작과 연관되는 정보를 슬레이브 컨트롤러 보드로부터 마스터 컨트롤러 보드로 전달하기 위해 사용될 수 있다. 일 구현예에서, 슬레이브 컨트롤러 보드에 도달하는 기록 동작에 대한 데이터는 슬레이브 컨트롤러 보드에 의해 NVM 블레이드에 여전히 제공될 수 있다.In one exemplary implementation, the I / O write operation reaching the slave controller board can be partially performed by the master controller board. For example, information associated with a write command or a write command may be transmitted from the slave controller board to the master controller board. In one implementation, the NT PCIe bridge may be used to transfer information associated with the write operation from the slave controller board to the master controller board. In one implementation, data for a write operation reaching the slave controller board may still be provided to the NVM blade by the slave controller board.

마스터 및 슬레이브 컨트롤러 보드는 판독 및 기록 동작을 NVM 블레이드에 매핑하는 매핑 테이블을 유지할 수 있다. 일 구현예에서, 판독 및 기록 테이블은 NVM 블레이드 중 하나에 저장된다. 일 구현예에서, 판독 및 기록 테이블은 2개의 컨트롤러 보드에 의해 공유될 수 있다. 게다가, 다른 구현예에서, 판독 및 기록 테이블은 컨트롤러 보드에 의해 개별적으로 유지될 수 있다. 각각의 컨트롤러 보드가 그 자체의 테이블을 갖는 사례에서, 마스터 컨트롤러 보드는 마스터 및 슬레이브 컨트롤러 보드를 위해 테이블을 갱신할 수 있다.The master and slave controller boards can maintain a mapping table that maps read and write operations to the NVM blades. In one implementation, the read and write tables are stored in one of the NVM blades. In one implementation, the read and write tables may be shared by two controller boards. In addition, in other implementations, the read and write tables can be maintained separately by the controller board. In the case where each controller board has its own table, the master controller board can update the table for the master and slave controller boards.

슬레이브 컨트롤러 보드가 고장나면, 마스터 컨트롤러 보드는 동작을 계속 처리한다. 다른 한편, 마스터 컨트롤러 보드가 고장나면, 저장 디바이스는 슬레이브 컨트롤러 보드로 오류 해결된다. 슬레이브 컨트롤러 보드는 새로운 마스터 컨트롤러 보드가 되고 모든 I/O 기록 동작을 처리하는 것을 시작할 수 있다.If the slave controller board fails, the master controller board continues to operate. On the other hand, if the master controller board fails, the storage device resolves to the slave controller board. The slave controller board becomes the new master controller board and can begin to handle all I / O write operations.

상기 설명된 시스템은 판독 동작이 I/O 요청을 디코딩하는 시간 및 처리 전력을 요구하므로, 2개 이상의 컨트롤러 보드 도처에 판독 트랜잭션을 위한 워크로드를 분배하는 것을 허용할 수 있다.The system described above may allow for distributing workloads for read transactions across two or more controller boards as the read operation requires time and processing power to decode I / O requests.

도 5는 본 발명의 일 구현예에 따른 본 발명의 구현예를 수행하는 방법을 예시하는 흐름도이다. 방법(500)에서의 시그널링은 하드웨어(회로, 전용 로직 등), 소프트웨어(예컨대 범용 컴퓨팅 시스템 또는 전용 머신 상에 실행됨), 펌웨어(내장 소프트웨어), 또는 그것의 임의의 조합을 포함하는 처리 로직에 의해 수행된다. 일 구현예에서, 방법(500)은 도 13에 설명되는 바와 같이 하나 이상의 컴퓨터 시스템(1300)에 의해 수행된다.5 is a flow chart illustrating a method of performing an embodiment of the present invention in accordance with an embodiment of the present invention. Signaling in method 500 may be performed on processing logic that includes hardware (circuitry, dedicated logic, etc.), software (e.g., executed on a general purpose computing system or a dedicated machine), firmware (embedded software) Lt; / RTI > In one implementation, method 500 is performed by one or more computer systems 1300 as described in FIG.

도 5의 흐름도는 I/O 요청을 처리하는 제1 처리 엔티티(502) 및 제2 처리(504)를 도시한다. 도 5는 2개의 처리 엔티티만을 도시하지만, 다수의 처리 엔티티는 도 5를 참조하여 설명되는 바와 같이 본 발명의 구현예를 수행하기 위해 구현될 수 있다. 예를 들어, 본 발명의 구현예는 제3, 제4, 제5, 또는 임의의 수의 처리 엔티티를 사용하여, 제1 처리 엔티티 또는 제2 처리 엔티티에 의해 수행되는 본 발명의 유사한 단계를 수행할 수 있다. 더욱이, 하나의 I/O 요청만이 도 6에서 시작 및 종료 표시기 사이의 각각의 처리 엔티티를 위해 도시되지만, 임의의 수의 I/O 요청이 수행될 수 있다.The flowchart of FIG. 5 shows a first processing entity 502 and a second processing 504 that process I / O requests. Although Figure 5 shows only two processing entities, a number of processing entities may be implemented to perform the embodiments of the present invention as described with reference to Figure 5. For example, an embodiment of the present invention performs similar steps of the present invention performed by a first processing entity or a second processing entity using a third, fourth, fifth, or any number of processing entities can do. Moreover, although only one I / O request is shown for each processing entity between the start and end indicators in FIG. 6, any number of I / O requests can be performed.

단계(506)에서, 복수의 NVM 블레이드에 결합되는 제1 처리 엔티티는 라우팅 엔티티를 통해 제1 I/O 요청을 수신한다.At step 506, the first processing entity coupled to the plurality of NVM blades receives the first I / O request through the routing entity.

단계(508)에서, 제1 처리 엔티티는 제1 I/O 요청이 기록 또는 판독 요청인지를 결정한다. 단계(508)에서, 제1 I/O 요청이 판독 요청인 것으로 결정되면, 단계(510)에서, 제1 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다.In step 508, the first processing entity determines whether the first I / O request is a write or read request. If it is determined in step 508 that the first I / O request is a read request, then in step 510, the first processing entity determines whether the target NVM blade from the plurality of NVM blades and the location Can be determined. In one implementation, the first processing entity may determine the location in the target NVM blade and the target NVM blade by performing one or more address translations using the file system software stack executing on the first processing entity.

단계(512)에서, 제1 처리 엔티티는 제1 I/O 요청과 연관되는 데이터를 요청한다. 단계(514)에서, 제1 처리 엔티티는 판독 I/O 요청을 위한 라우팅 엔티티를 통해 데이터를 수신한다.At step 512, the first processing entity requests data associated with the first I / O request. At step 514, the first processing entity receives data via a routing entity for a read I / O request.

단계(508)에서, 제1 I/O 요청이 기록 요청인 것으로 결정되면, 단계(516)에서, 제1 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 단계(518)에서, 제1 처리 엔티티는 기록 I/O 요청을 위한 타겟 NVM 블레이드에 데이터를 저장하기 위해 데이터를 라우팅 엔티티를 통해 타겟 NVM 블레이드에 송신한다.If it is determined in step 508 that the first I / O request is a write request, then in step 516, the first processing entity determines whether the target NVM blade from the plurality of NVM blades and the location in the target NVM blade Can be determined. In one implementation, the first processing entity may determine the location in the target NVM blade and the target NVM blade by performing one or more address translations using the file system software stack executing on the first processing entity. At step 518, the first processing entity sends data to the target NVM blade via the routing entity to store data in the target NVM blade for the write I / O request.

유사하게, 제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에서 식별되는 단계를 수행할 수 있다.Similarly, for a second processing entity 504, at step 520, a second processing entity coupled to a plurality of NVM blades may receive a second I / O request via the routing entity. The second processing entity 504 may receive a second I / O request before / after the first I / O request received at the first processing entity or simultaneously with the first I / O request. Moreover, the first processing entity 502 and the second processing entity 504 may perform steps identified in FIG. 5 independently of each other.

단계(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 요청을 위한 라우팅 엔티티를 통해 데이터를 수신한다.At step 522, the second processing entity determines whether the second I / O request is a write or read request. If it is determined in step 522 that the second I / O request is a read request, then in step 524, the second processing entity determines whether the target NVM blade from the plurality of NVM blades and the location within the target NVM blade Can be determined. In one implementation, the second processing entity may determine the location within the target NVM blade and the target NVM blade by performing one or more address translations using the file system software stack executing on the second processing entity. At step 526, the second processing entity requests data associated with the second I / O request. At step 528, the second processing entity receives data via a routing entity for a read I / O request.

대안에 있어서, 단계(522)에서, 제2 I/O 요청이 기록 요청인 것으로 결정되면, 단계(530)에서, 제2 처리 엔티티는 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 일 구현예에서, 제2 처리 엔티티는 제2 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 타겟 NVM 블레이드 및 타겟 NVM 블레이드 내의 위치를 결정할 수 있다. 단계(532)에서, 제2 처리 엔티티는 기록 I/O 요청을 위한 타겟 NVM 블레이드에 데이터를 저장하기 위해 데이터를 라우팅 엔티티를 통해 타겟 NVM 블레이드에 송신한다.Alternatively, in step 522, if it is determined in step 522 that the second I / O request is a write request, then in step 530, the second processing entity determines whether the target NVM blade from the plurality of NVM blades, The position within the NVM blade can be determined. In one implementation, the second processing entity may determine the location within the target NVM blade and the target NVM blade by performing one or more address translations using the file system software stack executing on the second processing entity. At step 532, the second processing entity sends data to the target NVM blade via the routing entity to store data in the target NVM blade for a write I / O request.

상기 논의된 바와 같이, 제1 처리 엔티티(502)와 유사하게, 제2 처리 엔티티(504)는 I/O 요청을 처리할 수 있다. 일부 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 I/O 요청을 서로에 대해 임의의 시퀀스로 처리하고 또한 I/O 요청을 동시에 처리할 수 있다. 더욱이, 제1 처리 엔티티 및 제2 처리 엔티티는 복수의 NVM 블레이드 중 하나에 타겟팅되는 트랜잭션을 동시에 처리할 수 있다.As discussed above, similar to the first processing entity 502, the second processing entity 504 may process the I / O request. In some implementations, the first processing entity and the second processing entity may process I / O requests in any sequence with respect to each other and also process I / O requests simultaneously. Moreover, the first processing entity and the second processing entity may concurrently process transactions targeted to one of the plurality of NVM blades.

도 4를 다시 참조하면, 시스템 내의 2개의 처리 엔티티의 예는 도 4에 도시된 처리 엔티티 중 어느 것에 의해 예시될 수 있다. 예를 들어, 2개의 처리 엔티티는 동일한 컨트롤러 보드(404) 상의 412 및 414, 또는 상이한 컨트롤러 보드 상에 상주하는 처리 엔티티(412) 및 처리 엔티티(428)일 수 있다.Referring again to Fig. 4, an example of two processing entities in the system may be illustrated by any of the processing entities shown in Fig. For example, the two processing entities may be 412 and 414 on the same controller board 404, or the processing entity 412 and processing entity 428 residing on different controller boards.

도 5를 참조하여 논의되는 하나 이상의 구성요소 사이의 통신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다. 도 5의 방법은 다수의 처리 엔티티 사이에서 I/O 요청을 확산시키는 데에 유리할 수 있지만, I/O 요청은 더 빠른 처리를 가능하게 하고, 보틀넥을 회피하고 더 좋은 열 소산을 용이하게 하기 위해 동일한 NVM 블레이드에 메모리 동작을 야기한다.Communication between one or more components discussed with reference to FIG. 5 may be performed using a PCIe protocol or any other suitable protocol. Although the method of FIG. 5 may be advantageous to spread I / O requests among a plurality of processing entities, I / O requests may allow for faster processing, avoid bottlenecks and facilitate better heat dissipation Causing memory behavior on the same NVM blade.

도 5에 예시된 특정 단계는 본 발명의 일 구현예에 따른 동작 모드 사이에서 스위칭하는 특정 방법을 제공한다는 점이 이해되어야 한다. 단계의 다른 시퀀스는 또한 대안 구현예에서 적절히 수행될 수 있다. 예를 들어, 본 발명의 대안 구현예는 상이한 순서로 상기 개략 설명된 단계를 수행할 수 있다. 예시하기 위해, 사용자는 제3 동작 모드로부터 제1 동작 모드로, 제4 모드로부터 제2 모드로, 또는 그들 사이의 임의의 조합으로 변화되는 것을 선택할 수 있다. 더욱이, 도 5에 예시된 개별 단계는 개별 단계에 적절하게 다양한 시퀀스로 수행될 수 있는 다수의 서브단계를 포함할 수 있다. 더욱이, 부가 단계는 특정 적용에 따라 추가되거나 제거될 수 있다. 한 보통의 당업자는 방법(500)의 많은 변화, 수정, 및 대안을 인식하고 이해할 것이다.It should be appreciated that the particular steps illustrated in Figure 5 provide a particular way of switching between operating modes according to an embodiment of the present invention. Other sequences of steps may also be suitably performed in alternative embodiments. For example, alternative embodiments of the present invention may perform the outlined steps in a different order. To illustrate, a user may choose to change from a third operating mode to a first operating mode, from a fourth mode to a second mode, or any combination thereof. Moreover, the individual steps illustrated in FIG. 5 may include a number of sub-steps that may be performed in various sequences as appropriate for the individual steps. Moreover, the additional steps may be added or removed depending on the particular application. One of ordinary skill in the art will recognize and appreciate many of the variations, modifications, and alternatives of method 500.

도 6은 본 발명의 일 구현예에 따른 본 발명의 구현예를 수행하는 다른 방법을 예시하는 흐름도이다. 방법(600)에서의 시그널링은 하드웨어(회로, 전용 로직 등), 소프트웨어(예컨대 범용 컴퓨팅 시스템 또는 전용 머신 상에 실행됨), 펌웨어(내장 소프트웨어), 또는 그것의 임의의 조합을 포함하는 처리 로직에 의해 수행된다. 일 구현예에서, 방법(600)은 도 13에 설명되는 바와 같이 하나 이상의 컴퓨터 시스템(1300)에 의해 수행된다.Figure 6 is a flow chart illustrating another method of performing an embodiment of the present invention in accordance with an embodiment of the present invention. Signaling in method 600 may be performed on processing logic that includes hardware (circuitry, dedicated logic, etc.), software (e.g., executed on a general purpose computing system or a dedicated machine), firmware (embedded software) Lt; / RTI > In one implementation, the method 600 is performed by one or more computer systems 1300 as described in FIG.

도 6의 흐름도는 I/O 요청을 처리하는 제1 처리 엔티티(602) 및 제2 처리(604)를 도시한다. 도 6은 2개의 처리 엔티티만을 도시하지만, 다수의 처리 엔티티는 도 6을 참조하여 설명되는 바와 같이 본 발명의 구현예를 수행하기 위해 구현될 수 있다. 예를 들어, 본 발명의 구현예는 제3, 제4, 제5, 또는 임의의 수의 처리 엔티티를 사용하여, 제1 처리 엔티티 또는 제2 처리 엔티티에 의해 수행되는 본 발명의 유사한 단계를 수행할 수 있다. 더욱이, 하나의 I/O 요청만이 도 6에서 시작 및 종료 표시기 사이의 각각의 처리 엔티티를 위해 도시되지만, 임의의 수의 I/O 요청이 수행될 수 있다. 도 6은 도 5에 설명되는 구현예의 일 구현예를 설명한다.The flow chart of FIG. 6 shows a first processing entity 602 and a second process 604 that process an I / O request. Although Figure 6 shows only two processing entities, a number of processing entities may be implemented to perform the embodiments of the present invention as described with reference to Figure 6. [ For example, an embodiment of the present invention performs similar steps of the present invention performed by a first processing entity or a second processing entity using a third, fourth, fifth, or any number of processing entities can do. Moreover, although only one I / O request is shown for each processing entity between the start and end indicators in FIG. 6, any number of I / O requests can be performed. Figure 6 illustrates one implementation of the implementation illustrated in Figure 5.

단계(606)에서, 복수의 NVM 블레이드에 결합되는 제1 처리 엔티티는 제1 라우팅 엔티티를 통해 제1 I/O 요청을 수신한다.In step 606, the first processing entity coupled to the plurality of NVM blades receives the first I / O request via the first routing entity.

단계(608)에서, 제1 처리 엔티티는 제1 I/O 요청이 기록 또는 판독 요청인지를 결정한다. 단계(608)에서, 제1 I/O 요청이 판독 요청인 것으로 결정되면, 단계(610)에서, 제1 처리 엔티티는 판독 요청이 제1 라우팅 엔티티에 결합되는 복수의 NVM 블레이드로부터의 제1 NVM 블레이드의 제1 위치로부터의 데이터에 대한 판독인 것을 결정할 수 있다. 일 구현예에서, 제1 처리 엔티티는 제1 처리 엔티티 상에 실행하는 파일 시스템 소프트웨어 스택을 사용하여 하나 이상의 어드레스 변환을 수행함으로써 제1 NVM 블레이드 및 제1 NVM 블레이드 상의 제1 위치를 결정할 수 있다.In step 608, the first processing entity determines whether the first I / O request is a write or read request. If it is determined in step 608 that the first I / O request is a read request, then in step 610, the first processing entity receives the first NVM from the plurality of NVM blades coupled to the first routing entity, It can be determined that the data is read from the first position of the blade. In one implementation, the first processing entity may determine a first location on the first NVM blade and the first NVM blade by performing one or more address translations using a file system software stack executing on the first processing entity.

단계(612)에서, 제1 처리 엔티티는 제1 라우팅 엔티티를 통해 제1 I/O 요청과 연관되는 데이터를 요청한다. 단계(614)에서, 제1 처리 엔티티는 제1 라우팅 엔티티를 통해 데이터를 수신하고 판독 I/O 요청을 완료한다.At step 612, the first processing entity requests data associated with the first I / O request via the first routing entity. In step 614, the first processing entity receives the data via the first routing entity and completes the read I / O request.

단계(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 블레이드에 송신한다.If it is determined in step 608 that the first I / O request is a write request, then in step 616, the first processing entity is configured to receive a first NVM blade from a plurality of NVM blades and a first NVM blade Lt; RTI ID = 0.0 > position. ≪ / RTI > In one implementation, the first processing entity may determine a first location on the first NVM blade and the first NVM blade by performing one or more address translations using a file system software stack executing on the first processing entity. In step 618, the first processing entity transmits data to the first NVM blade through the first routing entity to store data at a first location on the first NVM blade.

유사하게, 제2 처리 엔티티(604)에 있어서, 단계(620)에서, 복수의 NVM 블레이드에 결합되는 제2 처리 엔티티는 제1 라우팅 엔티티를 통해 제2 I/O 요청을 수신할 수 있다. 제2 처리 엔티티(604)는 제1 처리 엔티티에서 수신되는 제1 I/O 요청 전/후에 또는 제1 I/O 요청과 동시에 제2 I/O 요청을 수신할 수 있다.Similarly, for the second processing entity 604, at step 620, the second processing entity coupled to the plurality of NVM blades may receive a second I / O request via the first routing entity. The second processing entity 604 may receive a second I / O request before / after the first I / O request received at the first processing entity or concurrently with the first I / O request.

단계(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 요청을 완료한다.At step 622, the second processing entity determines whether the second I / O request is a write or read request. If it is determined in step 622 that the second I / O request is a read request, then in step 624, the second processing entity receives the first NVM from the plurality of NVM blades coupled to the first routing entity, It can be determined that the data is read from the first position of the blade. In one implementation, the second processing entity may determine a first location on the first NVM blade and the first NVM blade by performing one or more address translations using a file system software stack executing on the second processing entity. At step 626, the second processing entity requests data associated with the second I / O request via the first routing entity. At step 628, the second processing entity receives the data via the first routing entity and completes the read I / O request.

대안에 있어서, 단계(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 블레이드에 송신한다.Alternatively, at step 622, if it is determined that the second I / O request is a write request, then at step 630, the second processing entity receives a write request from a plurality of NVM blades coupled to the first routing entity Lt; RTI ID = 0.0 > NVM < / RTI > In one implementation, the first processing entity may determine a first location on the first NVM blade and the first NVM blade by performing one or more address translations using a file system software stack executing on the second processing entity. At step 632, the second processing entity sends data to the target NVM blade via the first routing entity to store data in the target NVM for the write I / O request.

상기 논의된 바와 같이, 제1 처리 엔티티(602)와 유사하게, 제2 처리 엔티티(604)는 I/O 요청을 처리할 수 있다. 일부 구현예에서, 제1 처리 엔티티 및 제2 처리 엔티티는 I/O 요청을 서로에 대해 임의의 시퀀스로 처리하고 또한 I/O 요청을 동시에 처리할 수 있다. 더욱이, 제1 처리 엔티티 및 제2 처리 엔티티는 복수의 NVM 블레이드 중 하나에 타겟팅되는 트랜잭션을 동시에 처리할 수 있다.As discussed above, similar to the first processing entity 602, the second processing entity 604 may process the I / O request. In some implementations, the first processing entity and the second processing entity may process I / O requests in any sequence with respect to each other and also process I / O requests simultaneously. Moreover, the first processing entity and the second processing entity may concurrently process transactions targeted to one of the plurality of NVM blades.

도 4를 다시 참조하면, 동일한 컨트롤러 보드 상에 상주하고 동일한 라우팅 엔티티를 통해 동일한 NVM 블레이드에 액세스하는 2개의 처리 엔티티의 예는 동일한 컨트롤러 보드(404) 상에 상주하는 처리 엔티티(412 및 414)에 의해 예시될 수 있다. 도 6에 설명되는 단계는 동일한 컨트롤러 보드 상에 상주하는 2개의 처리 엔티티가 동일한 NVM 블레이드 또는 심지어 NVM 블레이드 상의 동일한 위치에 타겟팅되는 I/O 요청을 동시에 처리하고 서비스하는 것을 허용한다. 도 6에 도시된 바와 같이, I/O 요청이 개별 처리 엔티티에서 디코딩되고 처리될 수 있지만, 그것은 NVM 블레이드에 액세스하기 위해 동일한 라우팅 엔티티를 사용할 수 있으며, 따라서 하드웨어의 복제를 회피함으로써 비용을 절약한다.Referring again to FIG. 4, an example of two processing entities residing on the same controller board and accessing the same NVM blades through the same routing entity is shown in the processing entities 412 and 414 resident on the same controller board 404 ≪ / RTI > The steps described in Figure 6 allow two processing entities residing on the same controller board to simultaneously process and service I / O requests targeted to the same location on the same NVM blade or even NVM blades. As shown in FIG. 6, although I / O requests can be decoded and processed at the individual processing entities, it can use the same routing entity to access the NVM blades, thus saving cost by avoiding duplication of hardware .

도 6을 참조하여 논의되는 하나 이상의 구성요소 사이의 통신은 PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 수행될 수 있다. 도 6의 방법은 다수의 처리 엔티티 사이에 I/O 요청을 확산시키는 데에 유리할 수 있지만, I/O 요청은 더 빠른 처리를 가능하게 하고, 보틀넥을 회피하고 더 좋은 열 소산을 용이하게 하기 위해 동일한 NVM 블레이드에 메모리 동작을 야기한다.Communication between one or more components discussed with reference to FIG. 6 may be performed using a PCIe protocol or any other suitable protocol. While the method of Figure 6 may be advantageous for spreading I / O requests among a plurality of processing entities, I / O requests may allow for faster processing, avoid bottlenecks and facilitate better heat dissipation Causing memory behavior on the same NVM blade.

도 6에 예시된 특정 단계는 본 발명의 일 구현예에 따른 동작 모드 사이에서 스위칭하는 특정 방법을 제공한다는 점이 이해되어야 한다. 단계의 다른 시퀀스는 또한 대안 구현예에서 적절히 수행될 수 있다. 예를 들어, 본 발명의 대안 구현예는 상이한 순서로 상기 개략 설명된 단계를 수행할 수 있다. 예시하기 위해, 사용자는 제3 동작 모드로부터 제1 동작 모드로, 제4 모드로부터 제2 모드로, 또는 그들 사이의 임의의 조합으로 변화되는 것을 선택할 수 있다. 더욱이, 도 6에 예시된 개별 단계는 개별 단계에 적절하게 다양한 시퀀스로 수행될 수 있는 다수의 서브단계를 포함할 수 있다. 더욱이, 부가 단계는 특정 적용에 따라 추가되거나 제거될 수 있다. 한 보통의 당업자는 방법(600)의 많은 변형, 수정, 및 대안을 인식하고 이해할 것이다.It should be understood that the particular steps illustrated in FIG. 6 provide a particular way of switching between operating modes according to an embodiment of the present invention. Other sequences of steps may also be suitably performed in alternative embodiments. For example, alternative embodiments of the present invention may perform the outlined steps in a different order. To illustrate, a user may choose to change from a third operating mode to a first operating mode, from a fourth mode to a second mode, or any combination thereof. Moreover, the individual steps illustrated in FIG. 6 may include a number of sub-steps that may be performed in various sequences as appropriate for the individual steps. Moreover, the additional steps may be added or removed depending on the particular application. One of ordinary skill in the art will recognize and appreciate many of the variations, modifications, and alternatives of method 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 프로토콜과 같은 임의의 프로토콜을 사용하여 수신될 수 있다.Figure 7 illustrates an exemplary block diagram of a controller board in accordance with an embodiment of the present invention. In one implementation, the controller board 702 may represent the controller board 104 or 106 of FIG. 7, the controller board has two processors 704 and 708, four routers 712, 714, 716 and 718 and four interface chips 720, 722, 724 and 726. Processor 0 704 may have a memory controller that controls access to its local memory 706a-d. Similarly, processor 1 708 may also have a memory controller that controls access to its local memory 710a-d. In one implementation, the interface chips and routers may communicate with each other using a PCIe protocol or any other suitable protocol. PCIe can also be used as a routing protocol for communication between a processor and a router. I / O requests at the interface chip may be received using any protocol, such as Gigabit Ethernet, Fiber Channel, dial-in, or even PCIe protocol.

도 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 블레이드에 송신한다.As shown in FIG. 7, in one implementation, each interface chip may communicate data to either processor 704 and 708 through a router. Each interface chip may be coupled to at least one router via a PCIe protocol or any other suitable protocol. An I / O request can reach one of the interface chips. The interface chip can send I / O requests to the router using the PCIe protocol. Each router is connected to both processors on the controller board 702. The router receives the I / O request and determines the processor to send the I / O request for further processing. Once the processor has decoded the I / O request and confirmed the operation of storing or retrieving data from the NVM storage medium, the processor sends a memory operation command to one of the routers. Each router is coupled to a subset of NVM storage media via NVM blades. For example, in FIG. 7, each router connects to approximately one quarter of the total number of NVM blades. The decision to send the NVM storage media request to the router may be based on the address of the storage / access request in the NVM storage address space. For example, if the processor 704 determines to cause the I / O request to cause storage on the NVM blade that combined the router (R2) 716, then the processor uses the PCIe protocol to send the request to the router (R2) 716 As shown in Fig. The router (R2) 716 sends a storage request to each NVM blade for storage.

특정 구현예에서, 도 7에 대해 설명되는 구성은 다양한 전기 구성요소와 연관되는 부하를 감소시키고, NVM 저장 매체에 대한 동작의 처리량을 증가시키고, 저장 디바이스 내의 다양한 구성요소로부터 열을 소산시키는 데에 유리할 수 있다.In certain implementations, the configuration described with respect to FIG. 7 reduces the load associated with various electrical components, increases the throughput of operations on NVM storage media, and dissipates heat from various components within the storage device Can be advantageous.

종래의 PCIe 시스템에서, 중앙 처리 유닛은 전체 시스템에 대한 루트 컴플렉스를 포함할 수 있다. PCIe 루트 컴플렉스는 프로세서에 결합되는 모든 종단점 디바이스를 열거하고 트리형 구조를 생성한다. 종단점에서 발신되는 모든 요청들은 PCIe 루트 컴플렉스에 결합되는 하나 이상의 프로세서에 의해 처리된다. 인터페이스 칩과 같은 종단점에서 발신되는 다수의 요청을 갖는 저장 디바이스에서, 루트 컴플렉스 및 프로세서는 시스템에서 트랜잭션의 처리를 위한 보틀넥이 된다. 일 구현예에서, 더 강력한 프로세서는 I/O 요청을 신속히 처리하고 보틀넥을 보조하기 위해 사용될 수 있다. 이와 같은 접근법은 보틀넥을 일시적으로 보조할 수 있지만, 그것은 프로세서와 연관되는 전력 부하를 증가시킬 수 있다. 더욱이, 프로세서는 또한 프로세서에 의해 처리되는 증가된 수 또는 I/O 요청으로 인해 컨트롤러 보드 상의 작은 영역에 걸쳐 더 많은 열을 생성할 수 있다. 하나의 프로세서 또는 밀접하게 클러스터화된 프로세서에서의 증가된 열은 저장 디바이스에 대한 더 엄격한 열 포락선을 전체적으로, 허용 가능 레벨에서 유지하는 것에 도전하게 할 수 있다. 부가 전력 부하 및 열은 구성요소 레벨 및 디바이스 레벨 둘 다에서 더 많은 고장을 생성할 수 있다.In conventional PCIe systems, the central processing unit may include a root complex for the entire system. A PCIe root complex enumerates all endpoint devices coupled to the processor and creates a tree-like structure. All requests originating at the endpoints are handled by one or more processors coupled to the PCIe root complex. In a storage device having multiple requests originating at the same endpoint as the interface chip, the root complex and the processor become bottlenecks for processing transactions in the system. In one implementation, a more powerful processor can be used to expedite I / O requests and assist the bottleneck. This approach can temporarily assist the bottle neck, but it can increase the power load associated with the processor. Moreover, the processor can also generate more heat over a small area on the controller board due to the increased number of I / O requests processed by the processor. Increased heat on a single processor or closely clustered processor can challenge maintaining a stricter thermal envelope for the storage device as a whole, at an acceptable level. Additional power loads and heat can generate more failures at both component and device levels.

본 발명의 구현예는 복수의 처리 엔티티에 대한 컨트롤러 보드에 걸친 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 요청을 송신할 수 있다. 또한, 인터페이스 칩은 구성 시에 라우팅 정보로 구성될 수 있다.Embodiments of the present invention propose to spread processing and routing functionality to access NVM storage across controller boards for a plurality of processing entities. In one implementation, multiple processing entities may be spread across a controller board that processes I / O requests. In one implementation, one of the processing entities may serve as a PCIe root complex and the second processing entity may serve as an endpoint. For example, in FIG. 7, processor 0 (707) may be configured as a PCIe root complex and processor 1 (708) may be configured as an endpoint. In one implementation, the memory space for processor 1 708 is listed four times as an endpoint for each of the routers (router 0 712, router 2 714, router 3 716, and router 4 718) . In instances where the receiving router for an I / O request does not have the proper mapping for an I / O request, the router may send an I / O request to a processing entity configured as a PCIe root complex to determine the mapping. Also, the interface chip may be configured with routing information at the time of configuration.

라우팅이 인터페이스 칩 및 라우터에 이미 설정된 사례에서, 인터페이스 칩에 도달하고 라우터에 송신되는 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 블레이드에 액세스할 때 판독 및 기록 성능을 대폭 개선한다.In the case where routing is already established in the interface chips and routers, I / O requests arriving at the interface chip and sent to the router may be sent to either of the processing entities 704 and 708 that spread processing functionality. Besides processing, the described architecture can also propagate the connectivity of the link. For example, multiple interface chips may be implemented to receive I / O requests at the same time and send their I / O requests to the router. Moreover, the NVM blades are distributed among the routers to allow access to the NVM blades to be distributed among multiple routers, to avoid buses, or to route backlogs. Such a configuration can also be advantageous to allow simultaneous access to multiple blades, as described in FIG. 7, which significantly improves read and write performance when accessing NVM blades accessible via different routers. In an alternative embodiment, an implementation of the present invention proposes a plurality of processing entities each having its own root complex to spread processing and routing functionality to access NVM storage across the controller board. Each endpoint (i. E., A router) may be connected to more than one root complex. Thus, an I / O request arriving at the interface chip and forwarded to the router may be sent to any of the processing entities 704 and 708 that spread processing functionality. Besides processing, the described architecture can also propagate the connectivity of the link. For example, multiple interface chips may be implemented to receive I / O requests at the same time and send their I / O requests to the router. Moreover, the NVM blades are distributed among the routers to allow access to the NVM blades to be distributed among multiple routers, to avoid buses, or to route backlogs. Since each processor is connected to all the routers on the controller board, each processor can address any NVM storage address separately. Such a configuration can also be beneficial to allow simultaneous access to multiple blades, as shown in Figure 7, which significantly improves read and write performance when accessing NVM blades accessible via different routers.

프로세서 0(704)은 부트 ROM(728)에서 부팅될 수 있고 프로세서 1(708)은 부트 ROM(734)에서 부팅될 수 있다. 일 구현예에서, 프로세서(704) 상에 실행되는 부트 ROM 이미지는 또한 저장 파일 시스템 스택에 대한 초기화 정보를 포함할 수 있다. 일 구현예에서, 저장 파일 시스템 운영 체제(OS)는 온보드 NVM으로부터 로딩될 수 있다. 다른 구현예에서, 저장 파일 시스템 OS는 NVM 블레이드 중 하나로부터 로딩될 수 있다. 일 구현예에서, 프로세서 0(704) 및 프로세서 1(708) 상에 실행하는 OS에 대한 이미지는 상이할 수 있다. 파일 시스템 OS는 I/O 요청을 하드웨어 판독 및 기록으로 변환할 책임이 있을 수 있다.Processor 0 704 may be booted from boot ROM 728 and processor 1 708 may be booted from boot ROM 734. [ In one implementation, the boot ROM image running on the processor 704 may also include initialization information for the storage file system stack. In one implementation, the storage file system operating system (OS) may be loaded from onboard NVM. In other implementations, the storage file system OS may be loaded from one of the NVM blades. In one implementation, the image for the OS running on processor 0 704 and processor 1 708 may be different. The file system OS may be responsible for converting I / O requests into hardware reads and writes.

특정 구현예에서, 온보드 NVM(736)은 포인터, 갱신된 활동, 캐시 백업 및 판독/기록 버퍼와 같은 동적 메타데이터를 저장하기 위해 사용될 수 있다. 일부 구현예에서, 바이트 기록 가능한 자기 RAM(MRAM)과 같은 NVM은 온보드 NVM을 구현하기 위해 사용될 수 있다. 컨트롤러 보드는 또한 프로세서(704) 및 프로세서(708)에 연결되는 디버그 포트(740)를 가질 수 있다. 디버그 포트는 USB, PCIe, 기가비트 이더넷 등과 같은 하나 이상의 개별 인터페이스를 지원할 수 있다.In certain implementations, onboard NVM 736 may be used to store dynamic metadata such as pointers, updated activities, cache backups, and read / write buffers. In some implementations, an NVM, such as a byte recordable magnetic RAM (MRAM), may be used to implement the onboard NVM. The controller board may also have a debug port 740 coupled to the processor 704 and the processor 708. The debug port may support one or more separate interfaces such as USB, PCIe, Gigabit Ethernet, and the like.

도 8은 본 발명의 적어도 하나의 구현예에 따른 컨트롤러 보드 상의 각각의 구성요소에 의해 보여지는 바와 같이 다양한 구성요소에 대한 어드레스 공간의 예시적 블록도를 예시한다. 일 구현예에서, 어드레스 공간은 PCIe 어드레스 공간으로 정의될 수 있다.Figure 8 illustrates an exemplary block diagram of address space for various components as seen by respective components on a controller board in accordance with at least one implementation of the present invention. In one implementation, the address space may be defined as a PCIe address space.

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 어드레스 공간을 구성할 수 있다.P0 810 represents a view of the PCIe address space from processor 0 704 in FIG. P1 830 represents a view of the PCIe address space as seen from processor 1 708 of FIG. R0 850, R1 860, R2 870 and R3 880 are the PCIe addresses from router 0 712, router 1 714, router 2 716, and router 3 718, respectively. Represents a view of space. In one implementation, a PCIe root complex such as processor 0 (704) may find all endpoints and configure the PCIe address space for each endpoint.

일부 구현예에서, 컨트롤러 보드의 구성요소 중 어느 하나로부터 보여지는 다양한 PCIe 범위 중 어느 하나에의 액세스는 다른 PCIe 어드레스 범위에의 액세스와 상이한 타입의 응답을 야기할 수 있다. 예를 들어, 본 발명의 일 구현예에 따르면, 프로세서로부터 PCIe 어드레스 공간의 하나의 범위에 액세스하는 것은 라우터 중 하나에 구성 변화를 야기할 수 있다. 다른 예에서, PCIe 어드레스 공간의 다른 범위에 액세스하는 것은 라우터 중 하나에 결합되는 NVM 블레이드 중 하나에 판독/기록 액세스를 야기할 수 있다. PCIe 어드레스 공간에의 일부 액세스는 또한 프로세서에 대한 로컬 메모리 또는 컨트롤러 보드 상의 인접 프로세서 중 하나에 대한 메모리에 매핑될 수 있다. 또 다른 예에서, PCIe 어드레스 공간에의 일부 액세스는 비투명(NT) PCIe 브리지를 통해 인접 컨트롤러 보드 상의 구성요소에 판독/기록을 야기할 수 있다.In some implementations, access to any of the various PCIe ranges seen from any of the components of the controller board may result in access to different PCIe address ranges and different types of responses. For example, according to one embodiment of the invention, accessing one range of PCIe address space from the processor may cause a configuration change in one of the routers. In another example, accessing another range of PCIe address space may cause read / write access to one of the NVM blades coupled to one of the routers. Some access to the PCIe address space may also be mapped to memory for one of the local processors for the processor or one of the contiguous processors on the controller board. In another example, some access to the PCIe address space may cause read / write to components on the adjacent controller board via non-transparent (NT) PCIe bridges.

PCIe 어드레스 공간을 통해, 수개의 엔티티는 컨트롤러 보드 상의 다른 엔티티의 어드레스 공간에 적어도 부분 액세스를 갖는다. 예를 들어, P0(810)에서, 프로세서(P0)(704)는 그 자체의 메모리에 액세스를 가지며, 프로세서(P1)(708)의 메모리 및 라우터의 어드레스 공간 각각에 부분 액세스를 갖는다. 일 구현예에서, NVM 블레이드는 4개의 개별 그룹의 NVM 블레이드로 그룹화되며, 각각의 그룹의 NVM 블레이드는 라우터 중 하나에 결합될 수 있다. 특정 그룹의 NVM 블레이드에 속하는 NVM 블레이드 중 어느 하나는 NVM 블레이드의 그룹이 결합될 수 있는 라우터를 통해 액세스 가능하다.Through the PCIe address space, several entities have at least partial access to the address space of other entities on the controller board. For example, at P0 810, the processor (P0) 704 has access to its own memory and has partial access to the memory of the processor (P1) 708 and the address space of the router, respectively. In one implementation, the NVM blades are grouped into four separate groups of NVM blades, and each group of NVM blades can be coupled to one of the routers. Any one of the NVM blades belonging to a particular group of NVM blades is accessible through a router to which a group of NVM blades can be coupled.

도 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)를 통해 인접 컨트롤러 보드의 구성요소에 송신할 수 있다.In FIG. 8, from the PCIe address space for P0 810, B-G0 808 represents the address space for the first group of NVM blades accessible via router (R0) 712. The router (R0) 712 may be coupled to the first group of NVM blades and may be configurable from the processor (P0) 704 via an address space designated by host bus adapter 0 (HBA0) 806 . Similarly, processor (P0) 704 includes a second group of NVM blades through address space (B-G1) 814 and a second router (Rl) 714 via HBA1 812, an address space B -G2) 818 and the third router (R2) 716 through the HBA2 816 and the fourth group of NVM blades through the address space (B-G3) 822, And the fourth router (R3) 718 via the HBA 3 820. In some implementations, a portion of the address space 824 may be reserved. In certain implementations, onboard NVM, such as MRAM 828, may be used to store dynamic metadata such as pointers, updated activities, cache backups, and read / write buffers. Furthermore, the processor (P0) 704 is connected to the local processor 706a-d via its own local memory 706a-d via the PCIe address space DRAM (P0) 802 and the adjacent processor P1 0.0 > 708 < / RTI > In some implementations, processor (P0) 704 may also send a message to an element of the adjacent controller board via NT port 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)에 대한 메모리에 액세스할 수 있다.Similar to P0 810, views of the PCIe address space from each of the components can provide each component with the ability to interact with each other using the PCIe address space. For example, processor (P1) 708 may communicate with each of the routers (HBA0 840, HBA1 838, HBA2 836, and HBA3 833) via its PCIe address space (P1) ), The PCIe address space for the NVM blades (B-G0 841, B-G1 839, B-G2 837 and B-G3 834) (P0) 832, MRAM 842, and NT port 838 of its own local memory 710a-d via the processor (P0) 704 and the adjacent processor (P0)

라우터는 또한 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 블레이드에 액세스를 갖는다.A router is also similar to a view of the PCIe address space, but can have a more limited view. For example, the router (Ro) 712 may have a PCIe address space view R0 850 of the system. The router R0 may be capable of communicating with the processor P0 704 and the processor P1 708 via the DRAM (P0) 851 and the DRAM (P1) 853, respectively. In certain implementations, onboard NVM, such as MRAM 854, may be used to store dynamic metadata such as pointers, updated activity, cache backups, and read / write buffers. Access to the PCIe address space (HBA0) 858 by other components on the controller board can be interpreted as an instruction to the router (R0) 712. [ Access to the B-G0 856 may be interpreted as a read and write request to the NVM blade coupled to the router (R0) 712. The routers (R0) 712 may not have a PCIe address space reserved for other routers or NVM blades since there is no direct coupling between their components, as shown in Fig. The router (R3) 718 also includes a processor (P0) 704, a DRAM (P0) 881, a processor (P1) 708, a DRAM (P1) 883, MRAN 885, its own configuration space, and NVM blades.

라우터(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) 각각을 통해 인접 컨트롤러 보드 상의 라우터에 송신 가능할 수 있다.Routers R1 714 and R2 716 also access processors P0 704 and P1 708 via DRAMs P0 861 and 871 and DRAM P1 863 and 873, . The configuration space for routers R1 714 and R2 716 is accessed through HBA1 866 and HBA2 877 and its associated NVM blades B-G1 867 and B-G2 878 . In addition, the routers R1 714 and R2 716 may be capable of transmitting messages to the routers on the adjacent controller boards via each of the NT ports 865 and 875. [

일부 구현예에서, 각각의 구성요소에 대한 PCIe 어드레스 공간 내의 일부 어드레스 범위는 장래의 사용(843, 852, 857, 862, 864, 868, 872, 874, 876, 879, 882, 884 및 888)을 위해 사용되지 않고 예약될 수 있다.In some implementations, some of the address ranges in the PCIe address space for each component may be used for future use (843, 852, 857, 862, 864, 868, 872, 874, 876, 879, 882, 884 and 888) And can be reserved for use.

이전에 논의된 바와 같이, 도 8에 도시된 PCIe 어드레스 공간 구성은 예시 목적을 위한 것이고 어드레스 공간의 다른 구현예에 제한되지 않는다.As discussed previously, the PCIe address space configuration shown in FIG. 8 is for illustrative purposes only and is not limited to other implementations of address space.

도 9는 본 발명의 일 구현예에 따른 저장 디바이스의 다른 예시적 하이 레벨 블록도를 예시한다. 블록(902)은 2개의 컨트롤러(904 및 906) 및 컨트롤러에 결합되는 NVM 블레이드(920a-n)의 어레이를 갖는 저장 디바이스를 예시한다. 일 구현예에서, 컨트롤러(904 및 906)는 브리지(908)를 사용하여 판독 및 기록 트랜잭션을 위한 컨트롤러(904 및 906) 사이에 상태 정보를 통신하기 위해 통신 프로토콜을 사용하여 함께 결합될 수 있다.9 illustrates another exemplary high-level block diagram of a storage device according to an embodiment of the invention. Block 902 illustrates a storage device having an array of NVM blades 920a-n coupled to two controllers 904 and 906 and a controller. In one implementation, controllers 904 and 906 may be coupled together using a communication protocol to communicate status information between controllers 904 and 906 for read and write transactions using bridge 908. [

일 구현예에서, 제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)에 결합될 수 있다.In one implementation, the first controller 904 and the second controller 906 include one or more processors for processing I / O requests, one or more routers for routing operations between a controller and a plurality of NVM blades, and one or more interfacing chips (PCB) including a printed circuit board (PCB). An example of such a controller board has been discussed previously in Figures 1-8. In other implementations, the functionality of a number of discrete components may be performed by a controller implemented in an ASIC, FGPA, MCM, or any other suitable solution. In one implementation, the first controller 904 and the second controller 906 may be implemented in an ASIC that includes processing logic and routing logic, respectively. In one implementation, the controller may also include interfacing logic. 9, the first controller 904 may be coupled to the host interface 916 to receive an I / O request and respond to an I / O request, and the second controller 906 May be coupled to another host interface 918. [

특정 구현예에서, 도 9로부터의 저장 디바이스는 능동/능동 저장 디바이스를 나타낼 수 있다. 능동/능동 구성은 컨트롤러에 대한 처리 로직이 I/O를 처리하고 다른 것에 대한 대기 능력을 제공할 수 있게 한다. 컨트롤러 둘 다와 연관되는 처리 로직이 I/O를 동시에 또는 거의 동시에 처리할 수 있으므로, 성능을 향상시키기 위해 능동/능동 저장 디바이스를 구현하는 것이 유리할 수 있다. 그러나, 도 9로부터의 저장 디바이스는 능동/능동 저장 디바이스에 제한되지 않고 또한 능동/수동 구성에 사용될 수 있으며, 하나의 컨트롤러에 대한 처리 로직은 I/O 요청을 처리하기 위해 활성인 반면에, 다른 것은 능동 일차 컨트롤러 보드가 고장나거나 오프라인으로 취해져야 하는 I/O 활동을 대체할 준비가 되어 있는 대기 모드에서 아이들이다.In certain implementations, the storage device from Figure 9 may represent an active / active storage device. An active / active configuration allows the processing logic on the controller to handle I / O and provide standby capabilities for others. Since the processing logic associated with both controllers can handle I / O concurrently or nearly simultaneously, it may be advantageous to implement an active / active storage device to improve performance. However, the storage device from Figure 9 is not limited to active / active storage devices and can also be used for active / passive configuration, and the processing logic for one controller is active to handle I / O requests, Is the idle mode in which the active primary controller board is ready to replace the I / O activity that may have failed or taken offline.

일 구현예에서, 도 9에 도시된 능동/능동 시스템에서, 제1 컨트롤러(904)는 활성 모드에서 동작하고 NVM 저장 매체로부터 데이터를 저장하고 검색하는 I/O 요청을 수신하도록 구성될 수 있다. 유사하게, 제2 컨트롤러(906)는 또한 활성 모드에서 동작하고 NVM 저장 매체로부터 데이터를 저장하고 검색하는 I/O 요청을 수신하도록 구성될 수 있다. 도 9는 2개의 컨트롤러만을 도시하지만, 다수의 컨트롤러는 활성 모드에서 동작할 수 있다.In one implementation, in the active / active system shown in FIG. 9, the first controller 904 may be configured to operate in an active mode and receive an I / O request to store and retrieve data from the NVM storage medium. Similarly, the second controller 906 may also be configured to operate in an active mode and receive an I / O request to store and retrieve data from the NVM storage medium. 9 shows only two controllers, but a plurality of controllers can operate in an active mode.

부가적으로, 저장 디바이스는 NVM 저장 매체를 포함하는 복수의 NVM 블레이드(920a-n)를 포함할 수 있다. 일 구현예에서, 각각의 NVM 블레이드는 컨트롤러(904 및 906) 둘 다에 결합될 수 있어, NVM 저장 매체의 각각의 물리 어드레스가 컨트롤러 중 어느 한쪽에 의해 액세스 가능하게 되는 것을 허용한다. 이와 같은 구성은 기본 저장 매체의 복제 및 데이터의 미러링을 회피하는 데 유리할 수 있으며, 물리 매체 상의 데이터의 신뢰성은 RAID, 또는 그것의 임의의 조합과 같은 더 신뢰성있는 저장 매체 및/또는 정교한 데이터 복구 기술을 사용함으로써 보장될 수 있다. 각각의 NVM 블레이드는 제1 컨트롤러(904)와 통신하는 제1 라우팅 인터페이스 및 제2 컨트롤러(906)와 통신하는 제2 라우팅 인터페이스를 포함할 수 있다. 일 구현예에서, PCIe 프로토콜 또는 임의의 다른 적절한 프로토콜을 사용하여 제1 라우팅 인터페이스는 제1 컨트롤러와 통신하고 제2 라우팅 인터페이스는 제2 컨트롤러와 통신한다.Additionally, the storage device may include a plurality of NVM blades 920a-n that include NVM storage media. In one implementation, each NVM blade can be coupled to both controllers 904 and 906, allowing each physical address of the NVM storage medium to be made accessible by either one of the controllers. Such a configuration may be advantageous to avoid duplication of basic storage media and mirroring of data, and the reliability of data on the physical medium may be more reliable storage media such as RAID, or any combination thereof, and / or sophisticated data recovery technology As shown in FIG. Each NVM blade may include a first routing interface in communication with the first controller 904 and a second routing interface in communication with the second controller 906. In one implementation, the first routing interface communicates with the first controller and the second routing interface uses the PCIe protocol or any other suitable protocol to communicate with the second controller.

능동/능동 시스템의 일 구현예에서, 하나 이상의 컨트롤러는 마스터 컨트롤러의 역할을 가정하고 다른 하나 이상의 컨트롤러는 슬레이브 컨트롤러의 역할을 가정한다. 일 구현예에서, 마스터 컨트롤러는 NVM 블레이드에 모든 데이터 기록을 수행하거나 개시할 수 있는 반면에, 마스터 또는 슬레이브 보드 중 어느 하나는 판독을 수행할 수 있다.In one implementation of the active / active system, one or more controllers assume the role of a master controller and the other one or more controllers assume the role of a slave controller. In one implementation, the master controller may perform or initiate all data writes to the NVM blade, while either the master or the slave board may perform the read.

일반적으로, 저장 디바이스는 저장 매체에의 저장 또는 기록 동작보다 더 많은 판독 동작을 서비스할 수 있다. 또한, 일반적으로 판독 동작은 저장 또는 기록 동작보다 더 빠르게 완료할 수 있다. 따라서, 판독 동작이 서비스될 수 있는 속도는 I/O 요청이 디코딩되고 컨트롤러의 처리 로직에 의해 처리될 수 있는 속도에 의해 제약될 수 있다. 따라서, I/O 판독 동작의 처리 및 디코딩을 위한 능동/능동 시스템에서 2개 이상의 컨트롤러 사이의 I/O 판독 동작을 로드 밸런싱하는 것이 유리할 수 있다. 따라서, 마스터 및 슬레이브 컨트롤러 둘 다는 I/O 판독 동작을 처리할 수 있다. 따라서, 도 9에서, 제1 컨트롤러(904) 및 제2 컨트롤러(906) 둘 다는 판독 동작을 위해 I/O 요청을 동시에 또는 거의 동시에 디코딩하고 NVM 저장 매체로부터 데이터를 요청하도록 구성될 수 있다.In general, a storage device can service more read operations than a storage or write operation to a storage medium. Also, read operations in general can be completed faster than write or write operations. Thus, the rate at which the read operation can be serviced can be constrained by the rate at which the I / O request can be decoded and processed by the processing logic of the controller. Thus, it may be advantageous to load balance the I / O read operation between the two or more controllers in an active / active system for processing and decoding. Thus, both the master and slave controllers can handle I / O read operations. Thus, in FIG. 9, both the first controller 904 and the second controller 906 can be configured to decode I / O requests simultaneously or nearly simultaneously for read operations and to request data from the NVM storage medium.

하나의 예시적 구현예에서, 슬레이브 컨트롤러 보드에 도달하는 기록 동작은 마스터 컨트롤러에 의해 부분적으로 수행될 수 있다. 예를 들어, 기록 명령 또는 기록 명령과 연관되는 정보는 슬레이브 컨트롤러로부터 마스터 컨트롤러로 송신될 수 있다. 일 구현예에서, 브리지(908)(예를 들어, PCIe NT 브리지)는 기록 동작과 연관되는 정보를 슬레이브 컨트롤러로부터 마스터 컨트롤러로 전달하기 위해 사용될 수 있다. 일 구현예에서, 슬레이브 컨트롤러에 도달하는 기록 동작을 위한 데이터는 슬레이브 컨트롤러에 의해 NVM 블레이드에 여전히 제공될 수 있다.In one exemplary implementation, the write operation to reach the slave controller board can be performed in part by the master controller. For example, information associated with a write command or a write command may be transmitted from the slave controller to the master controller. In one implementation, bridge 908 (e.g., a PCIe NT bridge) may be used to transfer information associated with a write operation from the slave controller to the master controller. In one implementation, data for a write operation reaching the slave controller may still be provided to the NVM blade by the slave controller.

예시 목적을 위해, 주어진 시점에, 제1 컨트롤러(904)는 마스터 컨트롤러일 수 있고 제2 컨트롤러(906)는 슬레이브 컨트롤러일 수 있다. 일 예에서, I/O 요청은 마스터 컨트롤러로 동작할 수 있는 제1 컨트롤러(904)에 도달할 수 있다. 제1 컨트롤러(904)는 I/O 요청이 I/O 요청과 연관되는 데이터가 NVM 저장 매체에 저장하는 기록 동작인 것을 결정할 수 있다. 마스터 컨트롤러는 I/O 요청을 처리하고, NVM 블레이드를 결정하여 기록 명령을 발송하고 명령 및 데이터를, 데이터를 저장하는 NVM 블레이드에 송신할 수 있다.For purposes of illustration, at a given point in time, the first controller 904 may be a master controller and the second controller 906 may be a slave controller. In one example, the I / O request can reach the first controller 904, which can act as a master controller. The first controller 904 may determine that the I / O request is a write operation that stores data associated with the I / O request on the NVM storage medium. The master controller can process I / O requests, determine NVM blades, send write commands, and send commands and data to the NVM blades that store the data.

다른 예에서, 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 브리지)의 대역폭의 상당한 증가를 필요로 하는 것을 회피한다.In another example, the I / O request may arrive at a second controller 906 that can act as a slave controller. The second controller 906 may determine that the I / O request is a write operation that stores data associated with the I / O request on the NVM storage medium. The second controller 906 may send command information associated with the second I / O request to the first controller 904, which may act as a master controller. The master / first controller 904 may receive command information sent from the second controller 906, determine an NVM blade on which data may be stored, and send a write command to the NVM blade. A write command may be sent by the master controller, but a second controller 906, acting as a slave controller, may send data associated with the I / O request to the NVM blade. Managing all write operations from the master can help to maintain write consistency in the system. On the other hand, sending data from the slave controller to the NVM blade for an I / O write request received at the slave controller requires a bridge between the first controller 904 and the second controller 906 to transmit data between the two. (E.g., a NT PCIe bridge) that requires a significant increase in the bandwidth of the bridge 908 (e.g., NT PCIe bridge).

마스터 및 슬레이브 컨트롤러는 판독 및 기록 동작을 NVM 블레이드에 매핑하는 매핑 테이블을 유지할 수 있다. 일 구현예에서, 판독 및 기록 테이블은 NVM 블레이드 중 하나에 저장된다. 일 구현예에서, 판독 및 기록 테이블은 2개의 컨트롤러에 의해 공유될 수 있다. 게다가, 다른 구현예에서, 판독 및 기록 테이블은 컨트롤러에 의해 개별적으로 유지될 수 있다. 각각의 컨트롤러가 그 자체의 테이블을 갖는 사례에서, 마스터 컨트롤러는 마스터 및 슬레이브 컨트롤러 둘 다에 대한 테이블을 갱신할 수 있다.The master and slave controllers can maintain a mapping table that maps read and write operations to the NVM blades. In one implementation, the read and write tables are stored in one of the NVM blades. In one implementation, the read and write tables may be shared by the two controllers. Furthermore, in other implementations, the read and write tables may be maintained separately by the controller. In the case where each controller has its own table, the master controller can update the table for both the master and slave controllers.

슬레이브 컨트롤러가 고장나면, 마스터 컨트롤러는 이전과 같이 동작을 계속 처리한다. 다른 한편, 마스터 컨트롤러가 고장나면, 저장 디바이스는 슬레이브 컨트롤러로 오류 해결된다. 다시 말하면, 슬레이브 컨트롤러는 새로운 마스터 컨트롤러가 되고 기록 동작을 처리하는 것을 시작할 수 있다. 예를 들어, 마스터 컨트롤러의 역할을 하는 제1 컨트롤러(904)가 복구 불가능 에러에 직면하면, 시스템은 오류 해결될 수 있고 제2 컨트롤러(906)는 마스터 컨트롤러가 될 수 있다.If the slave controller fails, the master controller continues to operate as before. On the other hand, if the master controller fails, the storage device is resolved as a slave controller. In other words, the slave controller becomes a new master controller and can begin to process the write operation. For example, if the first controller 904 acting as the master controller encounters a non-recoverable error, the system can be resolved and the second controller 906 can become the master controller.

일부 구현예에서, 저장 디바이스는 또한 다수의 전원을 포함할 수 있다. 전원은 일반적으로 고장이 나기 쉽고 팬 또는 다른 전력 구성요소의 고장으로 인해 고장날 수 있다. 저장 디바이스에 전력 공급하는 다수의 전원을 갖는 것은 전원 중 하나에 대한 구성요소의 고장으로 인한 저장 디바이스의 고장을 회피할 수 있다. 일 구현예에서, 컨트롤러 보드는 파워 레일을 통해 전력 공급될 수 있으며, 파워 레일은 다수의 전원으로부터 전원을 공급할 수 있다. 파워 레일에 연결되는 전원 중 하나의 고장의 경우에, 파워 레일은 기능 전원으로부터 전력을 계속 공급한다. 일부 구현예에서, 고장난 전원은 적절한 기능 전원으로 핫 스왑 가능(즉, 저장 디바이스를 사이클링하는 전력 없이 대체 가능)할 수 있다. 도 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)를 사용하여 구현될 수 있다.In some implementations, the storage device may also include multiple power sources. The power supply is generally susceptible to failure and can fail due to a failure of the fan or other power components. Having multiple power supplies to power the storage device can avoid failures of the storage device due to component failure for one of the power supplies. In one implementation, the controller board can be powered via a power rail, and the power rail can supply power from multiple power sources. In the event of a fault in one of the power sources connected to the power rail, the power rail continues to supply power from the functional power source. In some implementations, the failed power supply may be hot-swappable (i.e., without power cycling the storage device) to an appropriate functional power source. Figure 10 illustrates an exemplary block diagram of an NVM blade in accordance with an embodiment of the present invention. In some implementations, the NVM blade 1002 may represent one implementation of one of the NVM blades 420 of FIG. 4 or the NVM blades 920a-n from FIG. The exemplary NVM blade 1002 may include one or more NVM chips 1006 and 1008 and a blade controller 1004. The NVM chip may include an NVM storage medium. The NVM chip may be coupled to the blade controller 1004 via shared buses 912 and 1014 or a dedicated bus (not shown). The blade controller 1004 may be responsible for receiving instructions to access / store data on the NVM chip, to process the instructions, and to store or retrieve data from the NVM chips and other configuration instructions. Although not shown, the NVM chip may also reside on the opposite side of the NVM blade. In one implementation, the blade controller 1004 may be implemented using an application specific integrated circuit (ASIC). In other implementations, the NVM blade controller may be implemented using a field programmable gate array (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 블레이드는 판독 요청을 폐기하거나 컨트롤러 보드에 대한 에러 조건에 응답할 수 있다.11 illustrates an exemplary block diagram of a blade controller in accordance with an embodiment of the invention. In one implementation, blade controller 1004 may have two or more PCIe interfaces 1014 and 1116 connecting to a routing entity on a controller (or controller board). For example, the PCIe interface 1114 may be coupled to one of the PCIe interfaces on the routing entity from the first controller and the PCIe interface 1116 may be coupled to one of the PCIe interfaces on the routing entity from the second controller . Each PCIe interface may maintain command queues 1010 and 1112 associated with commands arriving from each controller to which the PCIe interface is coupled. In one implementation, the data path for the data associated with the controller can be maintained separately. For example, data associated with each controller may be decompressed after appropriately compressing in blocks 1106 and 1108 and retrieving data from the NVM storage medium, prior to storage of data on the NVM storage medium. Maintaining the individual data paths allows higher throughput of the data and can reduce errors associated with the data path. In one implementation, error detection and / or correction may be performed in blocks 1106 and 1108 using an error correction code (ECC). For example, data may be coded and compressed before storing data on the NVM storage medium, and decompressed and checked for errors when retrieving data. If an error is detected, in some scenarios, the data may be recoverable. If the error is irrecoverable, the NVM blade may discard the read request or respond to an error condition for the controller board.

명령 매니저(1104)는 다수의 PCIe 인터페이스에서 명령을 중재한다. 명령 매니저(1104)는 명령을 디코딩하고, 데이터의 저장/액세스를 위해 칩의 어레이로부터 적절한 NVM 저장 매체에 액세스한다. 명령을 중재함으로써, 일부 구현예에서, 명령 매니저(1104)는 하나의 활성 명령만이 임의의 특정 시간 기간에 NVM 인터페이스(1102)를 통해 데이터를 액세스/저장하는 것을 허용할 수 있다. 일부 구현예에서, PCIe 인터페이스, 명령 큐 및 ECC 압축/압축 해제 로직은 각각의 컨트롤러 보드와 인터페이스하기 위해 개별적으로 구현될 수 있다. 판독/기록 경로, 큐 및 로직 사이의 이와 같은 분리는 NVM 블레이드의 제2 인터페이스에 악영향을 미치는 NVM 블레이드의 하나의 인터페이스 상에서 고장을 회피하는 데 유리할 수 있다. 예를 들어, 명령 큐(1110)가 제1 컨트롤러 보드에서 NVM 인터페이스(1102)까지의 어디든지의 에러로 인해 백업을 시작하면, 제2 컨트롤러 보드에서 NVM 저장 매체까지의 판독/기록 데이터 경로는 정상적으로 계속 기능할 수 있다. 따라서, NVM 저장 매체에 대한 저장 동작이 하나의 제1 컨트롤러 보드로부터 실패하는 사례에서, 이와 같은 에러의 검출 시에, 비휘발성 메모리 상의 동일한 메모리 위치에 대한 저장 동작은 제2 컨트롤러 보드를 사용하여 완료될 수 있다.Command manager 1104 arbitrates commands on multiple PCIe interfaces. Command manager 1104 decodes the instruction and accesses the appropriate NVM storage medium from the array of chips for storage / access of data. By arbitrating the command, in some implementations, the command manager 1104 may allow only one active command to access / store data via the NVM interface 1102 in any particular time period. In some implementations, the PCIe interface, command queue, and ECC compression / decompression logic may be implemented separately to interface with each controller board. Such a separation between the read / write path, the queue and the logic may be advantageous to avoid a failure on one interface of the NVM blade that adversely affects the second interface of the NVM blade. For example, if the command queue 1110 begins to back up due to an error anywhere from the first controller board to the NVM interface 1102, the read / write data path from the second controller board to the NVM storage medium will normally You can continue to function. Therefore, in the case where the storage operation for the NVM storage medium fails from one first controller board, the storage operation for the same memory location on the nonvolatile memory is completed using the second controller board .

도 12는 본 발명의 일 구현예에 따른 블레이드 컨트롤러의 다른 예시적 블록도를 예시한다. 블레이드 컨트롤러(1004)의 이와 같은 대체 구현예는 또한 컨트롤러 상의 라우팅 로직에 연결하는 2개 이상의 PCIe 인터페이스(1214 및 1216) 및 PCIe 인터페이스가 결합되는 각각의 컨트롤러로부터 도달하는 명령과 연관되는 명령 큐(1210 및 1212)를 가질 수 있다. 일 구현예에서, 명령 큐는 버퍼를 사용하여 구현될 수 있다. 일 구현예에서, 명령 큐는 명령 큐 버퍼가 미리 결정된 임계값을 넘어서 가득차면 제1 컨트롤러로부터 명령을 폐기하도록 구성될 수 있다.12 illustrates another exemplary block diagram of a blade controller in accordance with an embodiment of the present invention. This alternative implementation of the blade controller 1004 also includes two or more PCIe interfaces 1214 and 1216 connecting to the routing logic on the controller and a command queue 1210 And 1212). In one implementation, the instruction queue can be implemented using buffers. In one implementation, the instruction queue may be configured to discard instructions from the first controller if the instruction queue buffer is full beyond a predetermined threshold.

일 구현예에서, 통합 데이터 경로 및 통합 명령 경로는 도 12에 도시된 바와 같이 구현될 수 있다. 일부 구현예에서, 데이터 경로로부터의 데이터는 데이터가 NVM 저장 매체에 저장되기 전에 블록(1206)에서 압축되고 NVM 저장 매체로부터의 검색 후에 압축 해제될 수 있다. 일 구현예에서, 에러 검출 및/또는 정정은 블록(1206)에서, 에러 정정 코드(ECC)를 사용하여 수행될 수 있다. 예를 들어, 데이터는 데이터가 NVM 저장 매체에 저장되기 전에 코딩되고 압축되며 데이터를 검색할 시에 에러에 대해 압축 해제되고 체크될 수 있다. 에러가 검출되면, 일부 시나리오에서, 데이터는 복구 가능할 수 있다. 에러가 복구 불가능하면, NVM 블레이드는 판독 요청을 폐기하거나 컨트롤러에 대한 에러 조건에 응답할 수 있다.In one implementation, the unified data path and the unified command path may be implemented as shown in FIG. In some implementations, data from the data path may be compressed in block 1206 and decompressed after retrieval from the NVM storage medium before the data is stored in the NVM storage medium. In one implementation, error detection and / or correction may be performed at block 1206 using an error correction code (ECC). For example, the data may be coded and compressed before the data is stored on the NVM storage medium, and decompressed and checked for errors when retrieving the data. If an error is detected, in some scenarios, the data may be recoverable. If the error is irrecoverable, the NVM blade may discard the read request or respond to an error condition for the controller.

명령 매니저(1204)는 다수의 PCIe 인터페이스로부터의 명령을 중재할 수 있다. 명령 매니저(1204)는 명령을 디코딩하고, 데이터의 저장/액세스를 위해 칩의 어레이로부터 적절한 NVM 저장 매체에 액세스한다. 명령을 중재함으로써, 명령 매니저(1204)는 하나의 활성 명령만이 임의의 특정 시간 기간에 NVM 인터페이스(1202)를 통해 데이터를 액세스/저장하는 것을 허용할 수 있다. 도 12에 도시된 바와 같이, 통합 데이터 및 명령 경로는 비용 및 설계 효율을 야기할 수 있다.Command manager 1204 can arbitrate commands from multiple PCIe interfaces. Command manager 1204 decodes the commands and accesses the appropriate NVM storage medium from the array of chips for storage / access of data. By arbitrating the command, the command manager 1204 can allow only one active command to access / store data via the NVM interface 1202 in any particular time period. As shown in Figure 12, consolidated data and command paths can result in cost and design efficiency.

상기 도면에 도시되지 않지만, 일 구현예에서, 개별 명령 및/또는 데이터 큐는 NVM 블레이드에 대한 NVM 저장 매체를 포함하는 복수의 NVM 칩으로부터의 각각의 NVM 칩에 대해 유지될 수 있다. 더욱이, 개별 세트의 명령 및/또는 데이터 큐는 각각의 컨트롤러에 대해 유지될 수 있다. 예를 들어, 32개의 NVM 칩을 갖는 NVM 블레이드의 일 구현예에서, 32개의 명령 및/또는 데이터 큐는 제1 컨트롤러에서 발신되는 요청에 대해 유지될 수 있고 32개의 명령 및/또는 데이터 큐는 제2 컨트롤러에서 발신되는 요청에 대해 유지될 수 있다. 이와 같은 구성은 동작이 동일한 NVM 칩에 타겟팅되지 않는 한, 다른 명령이 NVM 블레이드 상에 개시, 처리 및 완료되는 동안에 다수의 현저한 명령이 개시, 처리 및/또는 완료되는 것을 허용할 수 있다. 명령 매니저(1004)는 2개의 컨트롤러에서 발신되는 명령을 중재할 수 있다.Although not shown in the figures, in one implementation, individual instructions and / or data queues may be maintained for each NVM chip from a plurality of NVM chips including NVM storage media for NVM blades. Furthermore, a separate set of commands and / or data queues may be maintained for each controller. For example, in one implementation of an NVM blade with 32 NVM chips, 32 commands and / or data queues may be maintained for requests originating from the first controller and 32 commands and / 2 controller. ≪ / RTI > Such an arrangement may allow a number of outstanding commands to be initiated, processed and / or completed while other commands are initiated, processed and completed on the NVM blades, unless the operation is targeted to the same NVM chip. The command manager 1004 can arbitrate commands issued from the two controllers.

수직으로 통합된 아키텍처의 다수의 양태를 설명했지만, 본 개시의 다양한 양태가 구현될 수 있는 컴퓨팅 시스템의 일 예는 이제 도 13에 대해 설명될 수 있다. 하나 이상의 양태에 따르면, 도 13에 예시된 바와 같은 컴퓨터 시스템은 본원에 설명되는 특징, 방법, 및/또는 방법 단계의 어느 것 및/또는 전부를 구현, 수행, 및/또는 실행할 수 있는 컴퓨팅 디바이스의 일부로 포함될 수 있다. 예를 들어, 컴퓨터 시스템(1300)은 디바이스 및/또는 액세스 포인트 장치의 구성요소의 일부를 나타낼 수 있다. 디바이스는 RF 수신기와 같은 무선 유닛을 갖는 임의의 컴퓨팅 디바이스일 수 있다. 일 구현예에서, 시스템(1300)은 본원에 설명되는 방법 중 어느 것을 구현하도록 구성된다. 도 13은 본원에 설명되는 바와 같이, 다양한 다른 구현예에 의해 제공되는 방법을 수행할 수 있고, 및/또는 호스트 컴퓨터 시스템, 원격 키오스크/단말, 판매 디바이스, 이동 디바이스, 셋톱 박스, 및/또는 컴퓨터 시스템의 기능을 할 수 있는 컴퓨터 시스템(1300)의 일 구현예의 개략적 예시를 제공한다. 도 13은 다양한 구성요소의 일반적 예시만을 제공하도록 의미되며, 그것의 어느 것 및/또는 전부는 적절하게 이용될 수 있다. 따라서, 도 13은 개별 시스템 요소가 상대적으로 분리되거나 상대적으로 더 통합된 방식으로 어떻게 구현될 수 있는지를 광범위하게 예시한다.Having described many aspects of a vertically integrated architecture, an example of a computing system in which various aspects of the present disclosure may be implemented can now be described with respect to FIG. According to one or more aspects, a computer system as illustrated in FIG. 13 may be implemented in a computing device that can implement, perform, and / or execute any and / or all of the features, methods, and / May be included as part thereof. For example, computer system 1300 may represent a portion of a device and / or an element of an access point device. The device may be any computing device having a wireless unit such as an RF receiver. In one implementation, the system 1300 is configured to implement any of the methods described herein. FIG. 13 illustrates an example of a system that can perform the methods provided by various other implementations, and / or may be implemented in a host computer system, a remote kiosk / terminal, a sales device, a mobile device, a set top box, and / Which provides a schematic illustration of one implementation of a computer system 1300 capable of functioning as a system. Figure 13 is intended to provide only a general illustration of various components, any and / or all of which may be suitably utilized. Thus, Figure 13 extensively illustrates how individual system components can be implemented in relatively separate or relatively more integrated ways.

버스(1305)를 통해 전기적으로 결합될 수 있는(또는 적절하게, 다른 방법으로 통신할 수 있는) 하드웨어 요소를 포함하는 컴퓨터 시스템(1300)이 도시된다. 하드웨어 요소는 하나 이상의 범용 프로세서 및/또는 하나 이상의 특수 목적 프로세서(예컨대 디지털 신호 처리 칩, 그래픽 가속 프로세서 등)를 제한 없이 포함하는 하나 이상의 프로세서(1310); 카메라, 마우스, 키보드 등을 제한 없이 포함할 수 있는 하나 이상의 입력 디바이스(1315); 및 디스플레이 유닛, 프린터 등을 제한 없이 포함할 수 있는 하나 이상의 출력 디바이스(1320)를 포함할 수 있다. 컴퓨팅 디바이스(1300)는 또한 시스템의 헬스를 감시하기 위해 온도 센서, 전력 센서 등과 같은 센서(들)를 포함할 수 있다.A computer system 1300 is shown that includes hardware components that can be electrically coupled (or otherwise communicate in any other manner) via bus 1305. [ The hardware components may include one or more processors 1310 that include, without limitation, one or more general purpose processors and / or one or more special purpose processors (e.g., digital signal processing chips, graphics acceleration processors, etc.); One or more input devices 1315 that may include, without limitation, a camera, a mouse, a keyboard, and the like; And one or more output devices 1320 that may include, without limitation, display units, printers, and the like. The computing device 1300 may also include a sensor (s), such as a temperature sensor, a power sensor, etc., to monitor the health of the system.

컴퓨터 시스템(1300)은 하나 이상의 비일시적 저장 디바이스(1325)를 더 포함할 수 있으며(및/또는 이와 통신할 수 있음), 하나 이상의 비일시적 저장 디바이스는 로컬 및/또는 네트워크 액세스 가능 스토리지를 제한 없이 포함할 수 있고, 및/또는 디스크 드라이브, 드라이브 어레이, 광 저장 디바이스, 고체 상태 저장 디바이스 예컨대 랜덤 액세스 메모리("RAM") 및/또는 판독 전용 메모리("ROM")를 제한 없이 포함할 수 있고, 판독 전용 메모리는 프로그램 가능하고, NVM-갱신 가능한 등등일 수 있다. 이와 같은 저장 디바이스는 다양한 파일 시스템, 데이터베이스 구조 등을 제한 없이 포함하는 임의의 적절한 데이터 스토리지를 구현하도록 구성될 수 있다.The computer system 1300 may further include (and / or communicate with) one or more non-volatile storage devices 1325, one or more non-volatile storage devices may store local and / or network accessible storage And may include without limitation, disk drives, drive arrays, optical storage devices, solid state storage devices such as random access memory ("RAM") and / or read only memory ("ROM" The read-only memory may be programmable, NVM-updatable, and so on. Such a storage device may be configured to implement any suitable data storage including, without limitation, various file systems, database structures, and the like.

컴퓨터 시스템(1300)은 또한 통신 서브시스템(1330)을 포함할 수 있으며, 통신 서브시스템은 모뎀, 네트워크 카드(무선 또는 유선), 적외선 통신 디바이스, 무선 통신 디바이스 및/또는 칩셋(예컨대 블루투스® 디바이스, 802.11 디바이스, WiFi 디바이스, WiMax 디바이스, 셀룰러 통신 시설 등) 등을 제한 없이 포함할 수 있다. 통신 서브시스템(1330)은 데이터가 본원에 설명되는 네트워크(예컨대 일 예를 들자면, 아래에 설명되는 네트워크), 다른 컴퓨터 시스템, 및/또는 임의의 다른 디바이스와 교환되는 것을 허용할 수 있다. 많은 구현예에서, 컴퓨터 시스템(1300)은 상기 설명된 바와 같이, RAM 또는 ROM 디바이스를 포함할 수 있는 비일시적 작업 메모리(1335)를 더 포함할 수 있다. 컴퓨터 시스템(1300)은 또한 통신 서브시스템(1330)에 의해 외부 엔티티와 통신을 용이하게 하는 송수신기(1350)를 포함할 수 있다.The computer system 1300 may also include a communication subsystem 1330 that may be a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device, and / or a chipset 802.11 devices, WiFi devices, WiMax devices, cellular communication facilities, etc.). Communication subsystem 1330 may allow data to be exchanged with a network (e.g., a network, such as described below), another computer system, and / or any other device as described herein. In many implementations, the computer system 1300 may further include a non-volatile memory 1335, which may include RAM or ROM devices, as described above. Computer system 1300 may also include a transceiver 1350 that facilitates communication with external entities by communication subsystem 1330.

컴퓨터 시스템(1300)은 또한 운영 체제(1340), 디바이스 드라이버, 실행 가능 라이브러리, 및/또는 다른 코드, 예컨대 하나 이상의 애플리케이션 프로그램(1345)을 포함하는 작업 메모리(1335) 내에 현재 위치되는 것으로 도시되는 소프트웨어 요소를 포함할 수 있으며, 하나 이상의 애플리케이션 프로그램은 본원에 설명되는 바와 같이, 다양한 구현예에 의해 제공되는 컴퓨터 프로그램을 포함할 수 있고, 및/또는 다른 구현예에 의해 제공되는 방법을 구현하고, 및/또는 시스템을 구성하도록 설계될 수 있다. 단지 예로서, 상기 논의된 방법(들)에 대해 설명되는 하나 이상의 절차는 컴퓨터(및/또는 컴퓨터 내의 프로세서)에 의해 실행 가능한 코드 및/또는 명령어로 구현될 수 있으며; 일 양태에서, 이때, 이와 같은 코드 및/또는 명령어는 설명된 방법에 따라 하나 이상의 동작을 수행하기 위해 범용 컴퓨터(또는 다른 디바이스)를 구성하고 및/또는 적응하도록 사용될 수 있다.The computer system 1300 also includes software that is presently located in a working memory 1335 that includes an operating system 1340, a device driver, an executable library, and / or other code such as one or more application programs 1345 Elements, and one or more application programs may include computer programs provided by various implementations, as described herein, and / or implement methods provided by other implementations, and / RTI > and / or < / RTI > By way of example only, the one or more procedures described for the discussed method (s) discussed above may be implemented with code and / or instructions executable by a computer (and / or a processor within the computer); In an aspect, such code and / or instructions may then be used to configure and / or adapt a general purpose computer (or other device) to perform one or more operations in accordance with the described methods.

이들 명령어 및/또는 코드의 한 세트는 상기 설명된 저장 디바이스(들)(1325)와 같은 컴퓨터 판독 가능 저장 매체 상에 저장될 수 있다. 일부 경우에, 저장 매체는 컴퓨터 시스템(1300)과 같은 컴퓨터 시스템 내에 포함될 수 있다. 다른 구현예에서, 저장 매체는 컴퓨터 시스템(예를 들어, 콤팩트 디스크와 같은 제거식 매체)으로부터 분리되고, 및/또는 설치 패키지에 제공될 수 있어, 저장 매체는 그 위에 저장된 명령어/코드로 범용 컴퓨터를 프로그래밍하고, 구성하고 및/또는 적응하기 위해 사용될 수 있다. 이들 명령어는 컴퓨터 시스템(1300)에 의해 실행 가능하고 및/또는 소스의 형태를 취할 수 있는 실행 가능 코드 및/또는 컴퓨터 시스템(1300)(예를 들어, 다양한 일반적으로 이용 가능한 컴파일러, 설치 프로그램, 압축/압축 해제 유틸리티 등 중 어느 것을 사용함) 상의 컴파일 및/또는 설치 시에 실행 가능 코드의 형태를 취하는 설치 코드의 형태를 취할 수 있다.A set of these instructions and / or code may be stored on a computer readable storage medium, such as the storage device (s) 1325 described above. In some cases, the storage medium may be contained within a computer system, such as computer system 1300. In other implementations, the storage medium may be separate from and / or be provided in an installation package, such as a computer system (e.g., a removable medium such as a compact disc) May be used to program, configure, and / or adapt. These instructions may include executable code and / or computer system 1300 (e.g., a variety of commonly available compilers, installers, compressors, etc.) that may be executed by computer system 1300 and / / Decompression utility), and / or install code that takes the form of executable code upon installation.

실질적인 변화는 특정 요건에 따라 이루어질 수 있다. 예를 들어, 맞춤형 하드웨어가 또한 사용될 수 있고, 및/또는 특정 요소는 하드웨어, 소프트웨어(휴대용 소프트웨어, 예컨대 애플릿 등을 포함함), 또는 둘 다로 구현될 수 있다. 게다가, 네트워크 입력/출력 디바이스와 같은 다른 컴퓨팅 디바이스에의 연결이 이용될 수 있다.Substantial changes can be made according to specific requirements. For example, customized hardware may also be used, and / or certain elements may be implemented in hardware, software (including portable software such as an applet, etc.), or both. In addition, a connection to another computing device such as a network input / output device may be utilized.

일부 구현예는 본 개시에 따라 방법을 수행하기 위해 컴퓨터 시스템(예컨대 컴퓨터 시스템(1300))을 이용할 수 있다. 예를 들어, 설명된 방법의 절차의 일부 또는 전부는 프로세서(1310)가 작업 메모리(1335)에 포함되는 하나 이상의 명령어(운영 체제(1340) 및/또는 다른 코드, 예컨대 애플리케이션 프로그램(1345)에 포함될 수 있음)의 하나 이상의 시퀀스를 실행하는 것에 응답하여 컴퓨터 시스템(1300)에 의해 수행될 수 있다. 이와 같은 명령어는 저장 디바이스(들)(1325) 중 하나 이상과 같은 다른 컴퓨터 판독 가능 매체로부터 작업 메모리(1335)로 판독될 수 있다. 단지 예로서, 작업 메모리(1335)에 포함되는 명령어의 시퀀스의 실행은 프로세서(들)(1310)가 본원에 설명되는 방법의 하나 이상의 절차를 수행하게 할 수 있다.Some implementations may utilize a computer system (e.g., computer system 1300) to perform the method in accordance with the present disclosure. For example, some or all of the procedures of the described method may be performed by one or more instructions (including operating system 1340 and / or other code, e.g., application programs 1345) included in work memory 1335 May be performed by the computer system 1300 in response to executing one or more sequences of instructions (e. Such instructions may be read into the working memory 1335 from another computer readable medium, such as one or more of the storage device (s) 1325. [ By way of example only, execution of a sequence of instructions contained in working memory 1335 may cause processor (s) 1310 to perform one or more procedures of the methods described herein.

용어 "머신 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 본원에 사용되는 바와 같이, 머신이 특정 방식으로 동작하게 하는 데이터를 제공하는 것에 참여하는 임의의 매체를 언급한다. 컴퓨터 시스템(1300)을 사용하여 구현되는 일 구현예에서, 다양한 컴퓨터 판독 가능 매체는 실행을 위해 명령어/코드를 프로세서(들)(1310)에 제공하는 것에 수반될 수 있고 및/또는 이와 같은 명령어/코드를 (예를 들어, 신호로서) 저장하고 및/또는 기억하기 위해 사용될 수 있다. 많은 구현예에서, 컴퓨터 판독 가능 매체는 물리 및/또는 유형 저장 매체이다. 이와 같은 매체는 비휘발성 매체, 휘발성 매체, 및 송신 매체를 포함하지만 이에 제한되지 않는 많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어 저장 디바이스(들)(1325)와 같은 광 및/또는 자기 디스크를 포함한다. 휘발성 매체는 작업 메모리(1335)와 같은 동적 메모리를 제한 없이 포함한다. 송신 매체는 통신 서브시스템(1330)의 다양한 구성요소(및/또는 통신 서브시스템(1330)이 다른 디바이스와의 통신을 제공하는 매체)뿐만 아니라, 버스(1305)를 포함하는 와이어를 포함하는 동축 케이블, 구리선 및 광섬유를 제한 없이 포함한다. 그러므로, 송신 매체는 또한 파(전파, 음향파 및/또는 광파, 예컨대 전파 및 적외선 데이터 통신 동안에 생성되는 것을 제한 없이 포함함)의 형태를 취할 수 있다.The terms "machine readable medium" and "computer readable medium ", as used herein, refer to any medium that participates in providing data that allows the machine to operate in a particular manner. In one implementation, which is implemented using computer system 1300, various computer readable media may be involved in providing instructions / code to processor (s) 1310 for execution and / May be used to store and / or store code (e.g., as a signal). In many implementations, the computer-readable medium is a physical and / or typed storage medium. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical and / or magnetic disks, such as storage device (s) 1325. Volatile media include, without limitation, dynamic memory, such as work memory 1335. [ The transmission medium may include a coaxial cable (not shown) including wires including a bus 1305, as well as various components of the communication subsystem 1330 (and / or a medium in which the communication subsystem 1330 provides communication with other devices) , Copper wire, and optical fiber. Therefore, the transmission medium may also take the form of waves (including, without limitation, waves, acoustic waves and / or light waves, such as those generated during radio wave and infrared data communication).

일부 구현예는 본 개시에 따라 방법을 수행하기 위해 컴퓨터 시스템(예컨대 프로세서(1310))을 이용할 수 있다. 예를 들어, 설명된 방법의 절차의 일부 또는 전부는 프로세서가 작업 메모리에 포함되는 하나 이상의 명령어(운영 체제 및/또는 다른 코드, 예컨대 애플리케이션 프로그램에 포함될 수 있음)의 하나 이상의 시퀀스를 실행하는 것에 응답하여 뷰잉 장치에 의해 수행될 수 있다. 이와 같은 명령어는 저장 디바이스(들) 중 하나 이상과 같은 다른 컴퓨터 판독 가능 매체로부터 작업 메모리로 판독될 수 있다. 단지 예로서, 작업 메모리에 포함되는 명령어의 시퀀스의 실행은 프로세서(들)가 본원에 설명되는 방법의 하나 이상의 절차를 수행하게 할 수 있다.Some implementations may use a computer system (e.g., processor 1310) to perform the method in accordance with the present disclosure. For example, some or all of the procedures of the described method may be performed in response to executing one or more sequences of one or more instructions (which may be included in an operating system and / or other code, e.g., an application program) And can be performed by a viewing apparatus. Such instructions may be read into the working memory from another computer readable medium, such as one or more of the storage device (s). By way of example only, execution of a sequence of instructions contained in a work memory may cause the processor (s) to perform one or more procedures of the methods described herein.

또한, 본원에 설명되는 컴퓨터 시스템을 이용하는 구현예는 뷰잉 장치에 물리적으로 연결되는 것에 제한되지 않는다. 처리는 유선을 통해 또는 무선으로 뷰잉 장치에 연결되는 다른 장치에서 발생할 수 있다. 예를 들어, 전화 내의 프로세서 또는 전화 또는 태블릿에 의해 명령을 실행하는 명령어는 이들 설명에 포함될 수 있다. 유사하게, 원격 위치 내의 네트워크는 프로세서를 수용하고 데이터를 뷰잉 장치에 송신할 수 있다.Also, implementations using the computer system described herein are not limited to being physically connected to a viewing device. The processing may occur in a wired or other device connected to the viewing device wirelessly. For example, instructions that execute instructions by a processor or phone or tablet within a phone may be included in these descriptions. Similarly, a network within a remote location may receive the processor and send data to the viewing device.

용어 "머신 판독 가능 매체" 및 "컴퓨터 판독 가능 매체"는 본원에 사용되는 바와 같이, 머신이 특정 방식으로 동작하게 하는 데이터를 제공하는 것에 참여하는 임의의 매체를 언급한다. 프로세서(1310)를 사용하여 구현되는 일 구현예에서, 다양한 컴퓨터 판독 가능 매체는 실행을 위해 명령어/코드를 프로세서(들)(1310)에 제공하는 것에 수반될 수 있고 및/또는 이와 같은 명령어/코드를 (예를 들어, 신호로서) 저장하고 및/또는 기억하기 위해 사용될 수 있다. 많은 구현예에서, 컴퓨터 판독 가능 매체는 물리 및/또는 유형 저장 매체이다. 이와 같은 매체는 비휘발성 매체, 휘발성 매체, 및 송신 매체를 포함하지만 이에 제한되지 않는 많은 형태를 취할 수 있다. 비휘발성 매체는 예를 들어 광 및/또는 자기 디스크를 포함한다. 휘발성 매체는 NVM 메모리 또는 DDR3 RAM과 같은 동적 메모리를 제한 없이 포함한다. 송신 매체는 통신 서브시스템의 다양한 구성요소(및/또는 통신 서브시스템이 다른 디바이스와 통신을 제공하는 매체)뿐만 아니라, 동축 케이블, 구리선 및 광섬유를 제한 없이 포함한다. 그러므로, 송신 매체는 또한 파(전파, 음향파 및/또는 광파, 예컨대 전파 및 적외선 데이터 통신 동안에 생성되는 것을 제한 없이 포함함)의 형태를 취할 수 있다.The terms "machine readable medium" and "computer readable medium ", as used herein, refer to any medium that participates in providing data that allows the machine to operate in a particular manner. In one implementation, which is implemented using processor 1310, various computer readable media may be involved in providing instructions / code to processor (s) 1310 for execution and / or may be associated with such instructions / (E. G., As a signal). ≪ / RTI > In many implementations, the computer-readable medium is a physical and / or typed storage medium. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical and / or magnetic disks. Volatile media include, without limitation, dynamic memory such as NVM memory or DDR3 RAM. The transmission medium includes, without limitation, coaxial cables, copper wires, and optical fibers, as well as the various components of the communication subsystem (and / or the medium over which the communication subsystem provides communication with other devices). Therefore, the transmission medium may also take the form of waves (including, without limitation, waves, acoustic waves and / or light waves, such as those generated during radio wave and infrared data communication).

하나 이상의 예에서, 설명되는 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 그것의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능은 컴퓨터 판독 가능 매체 상의 하나 이상의 명령어 또는 코드로서 저장되거나 송신될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 데이터 저장 매체를 포함할 수 있다. 데이터 저장 매체는 본 개시에 설명되는 기술의 구현예에 대한 명령어, 코드 및/또는 데이터 구조를 검색하도록 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능 매체일 수 있다. "데이터 저장 매체"는 본원에 사용되는 바와 같이 제품을 언급하고 일시적 전파 신호를 언급하지 않는다. 제한이 아닌 예로서, 이와 같은 컴퓨터 판독 가능 매체는 원하는 프로그램 코드를 명령어 또는 데이터 구조의 형태로 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스, NVM 메모리, 또는 임의의 다른 매체를 포함할 수 있다. 디스크는 본원에 사용되는 바와 같이, 콤팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크(DVD), 플로피 디스크 및 블루레이 디스크를 포함하며 디스크(disk)는 데이터를 자기적으로 통상 재생하는 반면에, 디스크(disc)는 데이터를 레이저로 광학적으로 재생한다. 상기의 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer readable medium. The computer readable medium may comprise a computer data storage medium. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and / or data structures for implementations of the techniques described in this disclosure. "Data storage medium" refers to a product as used herein and does not refer to a transient propagation signal. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM, or other optical disk, which may be used to store the desired program code in the form of an instruction or data structure, Storage, magnetic disk storage, or other magnetic storage device, NVM memory, or any other medium. As used herein, a disk includes a compact disk (CD), a laser disk, an optical disk, a digital versatile disk (DVD), a floppy disk and a Blu-ray disk, and a disk typically reproduces data magnetically On the other hand, a disc optically reproduces data with a laser. Combinations of the above should also be included within the scope of computer readable media.

코드는 하나 이상의 프로세서, 예컨대 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그램 가능 로직 어레이(FPGA), 또는 다른 등가 집적 또는 별개 로직 회로에 의해 실행될 수 있다. 따라서, 용어 "프로세서"는 본원에 사용되는 바와 같이, 본원에 설명되는 기술의 구현예에 적절한 이전 구조 또는 임의의 다른 구조 중 어느 것을 언급할 수 있다. 게다가, 일부 양태에서, 본원에 설명되는 기능성은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 결합 코덱에 포함될 수 있다. 또한, 기술은 하나 이상의 회로 또는 로직 소자로 완전히 구현될 수 있다.The code may be executed by one or more processors, e.g., one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Thus, the term "processor" as used herein may refer to any previous structure or any other structure that is appropriate for the implementation of the techniques described herein. Further, in some aspects, the functionality described herein may be provided in dedicated hardware and / or software modules configured for encoding and decoding, or included in a combined codec. Further, the techniques may be fully implemented with one or more circuits or logic elements.

본 개시의 기술은 무선 핸드셋, 집적 회로(IC) 또는 한 세트의 IC(예를 들어, 칩셋)를 포함하는 매우 다양한 디바이스 또는 장치로 구현될 수 있다. 다양한 구성요소, 모듈, 또는 유닛은 개시된 기술을 수행하도록 구성되는 디바이스의 기능 양태를 강조하기 위해 본 개시에 설명되지만, 반드시 상이한 하드웨어 유닛에 의한 실현을 필요로 하는 것은 아니다, 오히려, 상기 설명된 바와 같이, 다양한 유닛은 컴퓨터 판독 가능 매체 상에 저장되는 적절한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같이 하나 이상의 프로세서를 포함하여, 코덱 하드웨어 유닛으로 조합되거나 상호작용 하드웨어 유닛의 집합에 의해 제공될 수 있다.The techniques of the present disclosure may be implemented in a wide variety of devices or devices, including wireless handsets, integrated circuits (ICs), or a set of ICs (e.g., chipsets). The various elements, modules, or units are described in this disclosure to emphasize the functional aspects of a device configured to perform the disclosed technique, but need not necessarily be realized by different hardware units, rather, Likewise, various units may be combined with a codec hardware unit, or may be provided by a set of interactive hardware units, including one or more processors as described above, along with appropriate software and / or firmware stored on a computer readable medium .

다양한 예가 설명되었다. 이들 및 다른 예는 이하의 청구항의 범위 내에 있다.Various examples have been described. These and other examples are within the scope of the following claims.

Claims (40)

복수의 비휘발성 메모리(NVM) 블레이드로서, 상기 복수의 nvm 블레이드로부터의 nvm 블레이드 각각은 비휘발성 메모리(NVM)를 포함하는 복수의 비휘발성 메모리(NVM) 블레이드;
상기 복수의 NVM 블레이드에 연결되는 제1 처리 엔티티로서,
제1 입력/출력(I/O) 요청을 수신하고;
상기 I/O 요청이 판독 또는 기록 요청인지를 결정하고;
상기 I/O 요청이 판독 요청인 것을 결정하는 것에 응답하여,
상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정하고;
상기 타겟 NVM 블레이드로부터 상기 제1 I/O 요청과 연관되는 데이터를 요청하고 수신하고;
상기 I/O 요청이 기록 요청인 것을 결정하는 것에 응답하여;
상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정하고;
상기 타겟 NVM 블레이드에 상기 데이터를 저장하기 위해 데이터를 상기 타겟 NVM 블레이드에 송신하도록 구성되는 제1 처리 엔티티; 및
상기 복수의 NVM 블레이드에 결합되는 제2 처리 엔티티로서,
제2 입력/출력(I/O) 요청을 수신하고;
상기 I/O 요청이 판독 또는 기록 요청인지를 결정하고;
상기 I/O 요청이 판독 요청인 것을 결정하는 것에 응답하여,
상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정하고;
상기 타겟 NVM 블레이드로부터 상기 제2 I/O 요청과 연관되는 데이터를 요청하고 수신하고;
상기 I/O 요청이 기록 요청인 것을 결정하는 것에 응답하여;
상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정하고;
상기 타겟 NVM 블레이드에 상기 데이터를 저장하기 위해 데이터를 상기 타겟 NVM 블레이드에 송신하도록 구성되는 제2 처리 엔티티를 포함하는 저장 디바이스.
17. A plurality of nonvolatile memory (NVM) blades, each of the nvm blades from the plurality of nvm blades comprising: a plurality of nonvolatile memory (NVM) blades comprising nonvolatile memory (NVM);
A first processing entity coupled to the plurality of NVM blades,
Receiving a first input / output (I / O) request;
Determine if the I / O request is a read or write request;
In response to determining that the I / O request is a read request,
Determine a location in the target NVM blade from which the target NVM blades and data from the plurality of NVM blades are read;
Request and receive data associated with the first I / O request from the target NVM blade;
In response to determining that the I / O request is a write request;
Determining a location in the target NVM blade from which the target NVM blades and data from the plurality of NVM blades are stored;
A first processing entity configured to transmit data to the target NVM blade to store the data in the target NVM blade; And
A second processing entity coupled to the plurality of NVM blades,
Receiving a second input / output (I / O) request;
Determine if the I / O request is a read or write request;
In response to determining that the I / O request is a read request,
Determine a location in the target NVM blade from which the target NVM blades and data from the plurality of NVM blades are read;
Requesting and receiving data associated with the second I / O request from the target NVM blade;
In response to determining that the I / O request is a write request;
Determining a location in the target NVM blade from which the target NVM blades and data from the plurality of NVM blades are stored;
And a second processing entity configured to transmit data to the target NVM blade to store the data in the target NVM blade.
제1항에 있어서, 상기 복수의 NVM 블레이드는 하나 이상의 라우팅 엔티티를 사용하여 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티에 결합되는 저장 디바이스.2. The storage device of claim 1, wherein the plurality of NVM blades are coupled to the first processing entity and the second processing entity using one or more routing entities. 제1항에 있어서, 상기 제1 처리 엔티티는 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티로서 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드에 액세스하는 저장 디바이스.2. The storage device of claim 1, wherein the first processing entity accesses the same target NVM blade servicing the first I / O request as a second processing entity serving the second I / O request. 제1항에 있어서, 상기 제1 처리 엔티티는 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티로서 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드 상의 동일한 위치에 액세스하는 저장 디바이스.2. The storage device of claim 1, wherein the first processing entity accesses the same location on the same target NVM blade servicing the first I / O request as a second processing entity serving the second I / O request. 제1항에 있어서, 컨트롤러 보드는 상기 제1 처리 엔티티, 상기 제2 처리 엔티티 및 상기 처리 엔티티와 상기 복수의 NVM 블레이드 사이에 데이터를 라우팅하는 라우팅 엔티티를 포함하는 저장 디바이스.The storage device of claim 1, wherein the controller board comprises a first processing entity, a second processing entity, and a routing entity that routes data between the processing entity and the plurality of NVM blades. 제5항에 있어서, 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티는 상기 동일한 라우팅 엔티티를 통해 상기 타겟 NVM 블레이드에 액세스하는 저장 디바이스.6. The storage device of claim 5, wherein the first processing entity and the second processing entity access the target NVM blade through the same routing entity. 제1항에 있어서, 제1 컨트롤러 보드는 상기 제1 처리 엔티티를 포함하고 제1 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되며 제2 컨트롤러 보드는 상기 제2 처리 엔티티를 포함하고 제2 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되는 저장 디바이스.2. The system of claim 1 wherein a first controller board comprises the first processing entity and is coupled to the plurality of NVM blades using a first routing entity and the second controller board includes the second processing entity, Wherein the storage device is coupled to the plurality of NVM blades using an entity. 제1항에 있어서, 상기 제1 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신 및 상기 제2 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행되는 저장 디바이스.2. The method of claim 1, wherein the transmission of data between the first processing entity and the target NVM blade and the transmission of data between the second processing entity and the target NVM blade use a Peripheral Component Interconnect Express (PCIe) protocol ≪ / RTI > 제1항에 있어서, 상기 제1 처리 엔티티에 의해 수신되는 제1 I/O 요청은 하나 이상의 인터페이싱 엔티티에 우선 수신되고 상기 복수의 라우팅 엔티티 중 하나를 통해 상기 제1 처리 엔티티에 송신되는 저장 디바이스.2. The storage device of claim 1, wherein a first I / O request received by the first processing entity is received prior to one or more interfacing entities and is transmitted to the first processing entity via one of the plurality of routing entities. 제1항에 있어서, 상기 NVM 저장 매체는 NAND 플래시인 저장 디바이스.The storage device of claim 1, wherein the NVM storage medium is NAND flash. 데이터를 저장하는 방법으로서,
제1 처리 엔티티에서, 제1 입력/출력(I/O) 요청을 수신하는 단계로서, 상기 제1 처리 엔티티는 복수의 비휘발성 메모리(NVM) 블레이드에 결합되고 상기 복수의 NVM 블레이드로부터의 NVM 블레이드 각각은 비휘발성 메모리(NVM)를 포함하는 단계;
상기 제1 처리 엔티티에서, 상기 I/O 요청이 판독 또는 기록 요청인지를 결정하는 단계;
상기 I/O 요청이 판독 요청인 것을 결정하는 것에 응답하여,
상기 제1 처리 엔티티에 의해, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정하는 단계, 및
상기 제1 처리 엔티티에 의해, 상기 타겟 NVM 블레이드로부터 상기 제1 I/O 요청과 연관되는 데이터를 요청하고 수신하는 단계; 및
상기 I/O 요청이 기록 요청인 것을 결정하는 것에 응답하여;
상기 I/O 요청이 기록 요청인 것을 결정하는 것에 응답하여,
상기 제1 처리 엔티티에 의해, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정하는 단계, 및
상기 타겟 NVM 블레이드에 상기 데이터를 저장하기 위해 상기 제1 처리 엔티티로부터, 데이터를 상기 타겟 NVM 블레이드에 송신하는 단계; 및
제2 처리 엔티티에서, 제2 입력/출력(I/O) 요청을 수신하는 단계로서, 상기 제2 처리 엔티티는 상기 복수의 NVM 블레이드에 결합되는 단계;
상기 제2 처리 엔티티에서, 상기 I/O 요청이 판독 또는 기록 요청인지를 결정하는 단계;
상기 I/O 요청이 판독 요청인 것을 결정하는 것에 응답하여,
상기 제2 처리 엔티티에서, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 판독되는 타겟 NVM 블레이드 내의 위치를 결정하는 단계;
상기 제2 처리 엔티티에서, 상기 타겟 NVM 블레이드로부터 상기 제2 I/O 요청과 연관되는 데이터를 요청하고 수신하는 단계; 및
상기 I/O 요청이 기록 요청인 것을 결정하는 것에 응답하여;
상기 제2 처리 엔티티에서, 상기 복수의 NVM 블레이드로부터의 타겟 NVM 블레이드 및 데이터가 저장되는 타겟 NVM 블레이드 내의 위치를 결정하는 단계; 및
상기 타겟 NVM 블레이드에 상기 데이터를 저장하기 위해 상기 제2 처리 엔티티로부터, 데이터를 상기 타겟 NVM 블레이드에 송신하는 단계를 포함하는 방법.
CLAIMS 1. A method of storing data,
Receiving a first input / output (I / O) request at a first processing entity, the first processing entity being coupled to a plurality of non-volatile memory (NVM) blades and having a plurality of NVM blades Each comprising a non-volatile memory (NVM);
Determining, at the first processing entity, whether the I / O request is a read or write request;
In response to determining that the I / O request is a read request,
Determining, by the first processing entity, a target NVM blade from the plurality of NVM blades and a location within a target NVM blade from which data is read; and
Requesting and receiving, by the first processing entity, data associated with the first I / O request from the target NVM blade; And
In response to determining that the I / O request is a write request;
In response to determining that the I / O request is a write request,
Determining, by the first processing entity, a target NVM blade from the plurality of NVM blades and a location in a target NVM blade where data is stored; and
Transmitting data from the first processing entity to the target NVM blade to store the data in the target NVM blade; And
Receiving, at a second processing entity, a second input / output (I / O) request, said second processing entity being coupled to said plurality of NVM blades;
Determining, at the second processing entity, whether the I / O request is a read or write request;
In response to determining that the I / O request is a read request,
Determining, at the second processing entity, a target NVM blade from the plurality of NVM blades and a location within a target NVM blade from which data is read;
Requesting and receiving, at the second processing entity, data associated with the second I / O request from the target NVM blade; And
In response to determining that the I / O request is a write request;
Determining, at the second processing entity, a location within a target NVM blade from which the target NVM blades and data from the plurality of NVM blades are stored; And
And transmitting data from the second processing entity to the target NVM blade to store the data in the target NVM blade.
제11항에 있어서, 상기 복수의 NVM 블레이드는 하나 이상의 라우팅 엔티티를 사용하여 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티에 결합되는 방법.12. The method of claim 11, wherein the plurality of NVM blades are coupled to the first processing entity and the second processing entity using one or more routing entities. 제11항에 있어서, 상기 제1 처리 엔티티는 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티로서 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드에 액세스하는 방법.12. The method of claim 11, wherein the first processing entity accesses the same target NVM blade servicing the first I / O request as a second processing entity servicing the second I / O request. 제11항에 있어서, 상기 제1 처리 엔티티는 상기 제2 I/O 요청을 서비스하는 제2 처리 엔티티로서 상기 제1 I/O 요청을 서비스하는 동일한 타겟 NVM 블레이드 상의 동일한 위치에 액세스하는 방법.12. The method of claim 11, wherein the first processing entity accesses the same location on the same target NVM blade servicing the first I / O request as a second processing entity serving the second I / O request. 제11항에 있어서, 컨트롤러 보드는 상기 제1 처리 엔티티, 상기 제2 처리 엔티티 및 상기 처리 엔티티와 상기 복수의 NVM 블레이드 사이에 데이터를 라우팅하는 라우팅 엔티티를 포함하는 방법.12. The method of claim 11, wherein the controller board comprises a routing entity that routes data between the first processing entity, the second processing entity, and the processing entity and the plurality of NVM blades. 제15항에 있어서, 상기 제1 처리 엔티티 및 상기 제2 처리 엔티티는 상기 동일한 라우팅 엔티티를 통해 상기 타겟 NVM 블레이드에 액세스하는 방법.16. The method of claim 15, wherein the first processing entity and the second processing entity access the target NVM blade through the same routing entity. 제11항에 있어서, 제1 컨트롤러 보드는 상기 제1 처리 엔티티를 포함하고 제1 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되며 제2 컨트롤러 보드는 상기 제2 처리 엔티티를 포함하고 제2 라우팅 엔티티를 사용하여 상기 복수의 NVM 블레이드에 결합되는 방법.12. The system of claim 11, wherein the first controller board comprises the first processing entity and is coupled to the plurality of NVM blades using a first routing entity and the second controller board includes the second processing entity and the second routing entity Wherein the plurality of NVM blades are coupled to the plurality of NVM blades using an entity. 제11항에 있어서, 상기 제1 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신 및 상기 제2 처리 엔티티와 상기 타겟 NVM 블레이드 사이의 데이터의 송신은 주변 구성요소 상호연결 익스프레스(PCIe) 프로토콜을 사용하여 수행되는 방법.12. The method of claim 11, wherein the transmission of data between the first processing entity and the target NVM blade and the transmission of data between the second processing entity and the target NVM blade use a Peripheral Component Interconnect Express (PCIe) protocol Lt; / RTI > 제11항에 있어서, 상기 제1 처리 엔티티에 의해 수신되는 제1 I/O 요청은 하나 이상의 인터페이싱 엔티티에 우선 수신되고 상기 복수의 라우팅 엔티티 중 하나를 통해 상기 제1 처리 엔티티에 송신되는 방법.12. The method of claim 11 wherein a first I / O request received by the first processing entity is received prior to one or more interfacing entities and is transmitted to the first processing entity via one of the plurality of routing entities. 제11항에 있어서, 상기 NVM 저장 매체는 NAND 플래시인 방법.12. The method of claim 11, wherein the NVM storage medium is NAND flash. 활성 모드에서 동작하도록 구성되는 제1 컨트롤러로서, 비휘발성 메모리(NVM) 저장 매체로부터 데이터를 저장하고 검색하기 위해 입력/출력(I/O) 요청을 수신하도록 구성되는 제1 컨트롤러;
활성 모드에서 동작하도록 구성되는 제2 컨트롤러로서, 상기 NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 I/O 요청을 수신하도록 또한 구성되는 제2 컨트롤러; 및
NVM 저장 매체를 포함하는 복수의 비휘발성 메모리(NVM) 블레이드로서, 상기 복수의 NVM 블레이드 중 적어도 하나는 상기 NVM 저장 매체로부터 데이터를 저장하고 검색하기 위해 상기 제1 컨트롤러 및 상기 제2 컨트롤러에 결합되는 복수의 비휘발성 메모리(NVM) 블레이드를 포함하는 저장 디바이스.
A first controller configured to operate in an active mode, the first controller configured to receive an input / output (I / O) request to store and retrieve data from a non-volatile memory (NVM) storage medium;
A second controller configured to operate in an active mode, the second controller being further configured to receive an I / O request to store and retrieve data from the NVM storage medium; And
A plurality of non-volatile memory (NVM) blades comprising an NVM storage medium, wherein at least one of the plurality of NVM blades is coupled to the first controller and the second controller for storing and retrieving data from the NVM storage medium A storage device comprising a plurality of non-volatile memory (NVM) blades.
제21항에 있어서, 상기 복수의 NVM 블레이드 중 적어도 하나는 상기 제1 컨트롤러와 통신하는 제1 라우팅 인터페이스 및 상기 제2 컨트롤러와 통신하는 제2 라우팅 인터페이스를 포함하는 저장 디바이스.22. The storage device of claim 21, wherein at least one of the plurality of NVM blades comprises a first routing interface in communication with the first controller and a second routing interface in communication with the second controller. 제22항에 있어서, PCIe 프로토콜을 사용하여 상기 제1 라우팅 인터페이스는 상기 제1 컨트롤러와 통신하고 상기 제2 라우팅 인터페이스는 상기 제2 컨트롤러와 통신하는 저장 디바이스.23. The storage device of claim 22, wherein the first routing interface communicates with the first controller using the PCIe protocol and the second routing interface communicates with the second controller. 제24항에 있어서, 상기 제1 컨트롤러는,
제1 I/O 요청을 수신하고;
상기 제1 I/O 요청이 상기 제1 I/O 요청과 연관되는 제1 데이터를 상기 NVM 저장 매체에 저장하는 요청인 것을 결정하고;
상기 제1 데이터를 제1 위치에 저장하기 위해 명령 및 상기 제1 데이터를 상기 복수의 NVM 블레이드 중 적어도 하나에 송신하도록 구성되는 저장 디바이스.
25. The apparatus of claim 24, wherein the first controller comprises:
Receive a first I / O request;
Determining that the first I / O request is a request to store first data associated with the first I / O request on the NVM storage medium;
And to transmit the command and the first data to at least one of the plurality of NVM blades to store the first data in a first location.
제24항에 있어서,
상기 제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 블레이드에 송신하도록 더 구성되는 저장 디바이스.
25. The method of claim 24,
The second controller,
Receive a second I / O request;
Determine that the second I / O request is a request to store second data associated with the second I / O request on the NVM storage medium;
And send command information associated with the second I / O request to the first controller;
The first controller,
Receive the transmitted command information from the second controller;
And to send the store command to at least one of the plurality of NVM blades;
And wherein the second controller is further configured to transmit second data associated with the second I / O request to the one or more NVM blades.
제21항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 판독 동작을 위해 I/O 요청을 동시에 디코딩하고 상기 NVM 저장 매체로부터 데이터를 요청하도록 구성되는 저장 디바이스.22. The storage device of claim 21 wherein the first controller and the second controller are configured to simultaneously decode I / O requests for read operations and request data from the NVM storage medium. 제21항에 있어서, 상기 제1 컨트롤러, 제2 컨트롤러 및 상기 복수의 NVM 블레이드는 파워 레일에 결합되며, 상기 파워 레일은 복수의 전원에 의해 전력 공급되는 저장 디바이스.22. The storage device of claim 21, wherein the first controller, the second controller, and the plurality of NVM blades are coupled to a power rail, wherein the power rail is powered by a plurality of power sources. 제21항에 있어서, 상기 복수의 NVM 블레이드 중 적어도 하나는 상기 제1 컨트롤러로부터 명령을 버퍼링하기 위해 제1 라우팅 인터페이스에 결합되는 제1 버퍼를 포함하는 저장 디바이스.22. The storage device of claim 21, wherein at least one of the plurality of NVM blades comprises a first buffer coupled to a first routing interface for buffering instructions from the first controller. 제28항에 있어서, 상기 복수의 NVM 블레이드 중 적어도 하나는 상기 제1 버퍼가 미리 결정된 임계값을 넘어서 가득차면 상기 제1 컨트롤러로부터 명령을 폐기하도록 더 구성되는 저장 디바이스.29. The storage device of claim 28, wherein at least one of the plurality of NVM blades is further configured to discard the command from the first controller if the first buffer is full beyond a predetermined threshold. 제21항에 있어서, 상기 복수의 NVM 블레이드 중 적어도 하나는 상기 제1 컨트롤러 및 상기 제2 컨트롤러로부터의 명령에 대한 NVM 인터페이스에의 액세스를 중재하는 명령 매니저를 포함하는 저장 디바이스.22. The storage device of claim 21, wherein at least one of the plurality of NVM blades includes a command manager for arbitrating access to an NVM interface for commands from the first controller and the second controller. 제30항에 있어서, 상기 명령 매니저는 명령에 대한 에러를 검출할 시에, 상기 I/O 요청과 연관되는 에러 정보를 상기 명령이 발신된 컨트롤러에 다시 송신하는 저장 디바이스.32. The storage device of claim 30, wherein the command manager, upon detecting an error for the command, sends error information associated with the I / O request back to the controller from which the command originated. 제31항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 장애 허용 정보를 서로 통신하는 저장 디바이스.32. The storage device of claim 31, wherein the first controller and the second controller communicate fault tolerance information with each other. 제32항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 비-PCIe 브리지를 사용하여 장애 허용 정보를 서로 통신하는 저장 디바이스.33. The storage device of claim 32, wherein the first controller and the second controller communicate with each other using fail-over information using a non-PCIe bridge. 제32항에 있어서, 상기 장애 허용 정보는 상기 제1 컨트롤러로부터 상기 복수의 NVM 블레이드 중 하나로 제1 I/O 요청의 실패에 관한 정보를 포함하는 저장 디바이스.33. The storage device of claim 32, wherein the failure tolerance information includes information about failure of a first I / O request from the first controller to one of the plurality of NVM blades. 제31항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 I/O 요청을 처리하는 하나 이상의 프로세서 및 상기 컨트롤러와 상기 복수의 NVM 블레이드 사이의 라우팅 동작을 위한 하나 이상의 라우터를 포함하는 인쇄 회로 보드(PCB)인 저장 디바이스.32. The system of claim 31, wherein the first controller and the second controller include a printed circuit board including one or more processors for processing I / O requests and one or more routers for routing operations between the controller and the plurality of NVM blades (PCB). 제31항에 있어서, 상기 제1 컨트롤러 및 상기 제2 컨트롤러는 처리 로직 및 라우팅 로직을 각각 포함하는 주문형 집적 회로(ASIC)인 저장 디바이스.32. The storage device of claim 31, wherein the first controller and the second controller are application specific integrated circuits (ASICs) each comprising processing logic and routing logic. 저장 디바이스 상에 데이터를 저장하는 방법으로서,
슬레이브 컨트롤러에서 제1 I/O 요청을 수신하는 단계;
상기 제1 I/O 요청이 상기 제1 I/O 요청과 연관되는 제1 데이터를 비휘발성 메모리(NVM) 저장 매체에 저장하는 요청인 것을 결정하는 단계;
상기 제1 I/O 요청과 연관되는 명령 정보를 마스터 컨트롤러에 송신하는 단계;
상기 마스터 컨트롤러에서, 상기 슬레이브 컨트롤러로부터 상기 송신된 명령 정보를 수신하는 단계; 및
제1 위치에 상기 제1 데이터를 저장하기 위해 상기 마스터 컨트롤러로부터의 제1 I/O 요청 및 상기 슬레이브 컨트롤러로부터의 제1 데이터에 대한 송신된 명령 정보를 사용하는 저장 명령을 NVM 저장 매체를 포함하는 복수의 비휘발성 메모리(NVM) 블레이드 중 적어도 하나에 송신하는 단계를 포함하는 방법.
A method of storing data on a storage device,
Receiving a first I / O request from a slave controller;
Determining that the first I / O request is a request to store first data associated with the first I / O request in a nonvolatile memory (NVM) storage medium;
Sending command information associated with the first I / O request to a master controller;
Receiving, at the master controller, the transmitted command information from the slave controller; And
And an NVM storage medium for storing instructions that use transmitted command information for the first data from the slave controller and a first I / O request from the master controller to store the first data in a first location To at least one of a plurality of non-volatile memory (NVM) blades.
제37항에 있어서,
상기 마스터 컨트롤러에서 제2 I/O 요청을 수신하는 단계;
상기 제2 I/O 요청이 상기 제2 I/O 요청과 연관되는 제2 데이터를 NVM 저장 매체에 저장하는 요청인 것을 결정하는 단계;
제2 위치에 상기 제2 데이터를 저장하기 위해 명령 및 상기 제2 데이터를 NVM 저장 매체를 포함하는 복수의 NVM 블레이드 중 적어도 하나에 송신하는 단계를 더 포함하는 방법.
39. The method of claim 37,
Receiving a second I / O request from the master controller;
Determining that the second I / O request is a request to store second data associated with the second I / O request on an NVM storage medium;
Sending an instruction to store the second data at a second location and transmitting the second data to at least one of a plurality of NVM blades comprising an NVM storage medium.
제37항에 있어서, 상기 마스터 및 슬레이브 컨트롤러는 상기 복수의 NVM 블레이드와 통신하기 위해 PCIe 프로토콜을 사용하는 방법.38. The method of claim 37, wherein the master and slave controllers use the PCIe protocol to communicate with the plurality of NVM blades. 제37항에 있어서,
상기 마스터 컨트롤러에서 제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 데이터를 검색하는 단계를 더 포함하는 방법.
39. The method of claim 37,
Receiving a second I / O request from the master controller;
Determining that the second I / O request is a request to read second data from a second location from the NVM storage medium;
Retrieving second data associated with the second I / O request from the NVM storage medium;
Receiving a third I / O request from the slave controller;
Determining that the third I / O request is a request to read third data from a third location from the NVM storage medium; And
Retrieving third data associated with the third I / O request from the NVM storage medium.
KR1020167015204A 2013-11-12 2014-11-12 Apparatus and method for routing information in a non-volatile memory-based storage device KR101824671B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
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,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 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 true KR20160107158A (en) 2016-09-13
KR101824671B1 KR101824671B1 (en) 2018-03-14

Family

ID=53057954

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167015204A KR101824671B1 (en) 2013-11-12 2014-11-12 Apparatus and method for routing information in a non-volatile memory-based storage device

Country Status (7)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190048456A (en) * 2017-10-31 2019-05-09 에스케이하이닉스 주식회사 Computing device system and operation method thereof
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same
US12050508B2 (en) 2018-01-12 2024-07-30 SK Hynix Inc. Data processing system and operating method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11687273B2 (en) * 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information

Family Cites Families (12)

* 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 (en) * 2008-07-30 2013-02-20 株式会社日立製作所 Storage apparatus and control method thereof
US10236032B2 (en) * 2008-09-18 2019-03-19 Novachips Canada Inc. Mass data storage system with non-volatile memory modules
JP5806792B2 (en) * 2010-03-12 2015-11-10 エルエスアイ コーポレーション LDPC erasure decoding for flash memory
US9552299B2 (en) * 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
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
US8984222B2 (en) 2011-09-09 2015-03-17 Lsi Corporation Methods and structure for task management in storage controllers of a clustered storage system
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
CN103246622B (en) * 2013-04-10 2015-12-02 华为技术有限公司 A kind of method of exented memory, memory node, host node and system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190048456A (en) * 2017-10-31 2019-05-09 에스케이하이닉스 주식회사 Computing device system and operation method thereof
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same
US12050508B2 (en) 2018-01-12 2024-07-30 SK Hynix Inc. Data processing system and operating method thereof

Also Published As

Publication number Publication date
CN105980990A (en) 2016-09-28
EP3069253A4 (en) 2017-07-26
WO2015073503A1 (en) 2015-05-21
JP6358483B2 (en) 2018-07-18
CA2930379A1 (en) 2015-05-21
KR101824671B1 (en) 2018-03-14
EP3069253A1 (en) 2016-09-21
JP2016539418A (en) 2016-12-15
AU2014348774A1 (en) 2016-06-30

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
CN101452373B (en) I/O processor
US10810085B2 (en) Baseboard management controllers for server chassis
CN104704569B (en) NVRAM Path selections
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
US20210109661A1 (en) Storage device
US9575914B2 (en) Information processing apparatus and bus control method
JP2017531856A (en) Active storage units and arrays
US20190384532A1 (en) Method of nvme over fabric raid implementation for read command execution
TW201939506A (en) Storage system
KR101824671B1 (en) Apparatus and method for routing information in a non-volatile memory-based storage device
US9824716B2 (en) Storage control apparatus, storage apparatus, and computer-readable recording medium having stored therein storage control program
US11385815B2 (en) Storage system
US8990523B1 (en) Storage apparatus and its data processing method
US20140316539A1 (en) Drivers and controllers
Dong et al. Design and performance evaluation of a disk array controller with fibre channel interface

Legal Events

Date Code Title Description
A201 Request for examination
PA0105 International application

Patent event date: 20160608

Patent event code: PA01051R01D

Comment text: International Patent Application

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20161212

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20171025

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20180126

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20180129

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20210108

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20231218

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20241216

Start annual number: 8

End annual number: 8