KR20190056951A - Storage device performing peer-to-peer communication with external device without intervention of host - Google Patents
Storage device performing peer-to-peer communication with external device without intervention of host Download PDFInfo
- Publication number
- KR20190056951A KR20190056951A KR1020180079419A KR20180079419A KR20190056951A KR 20190056951 A KR20190056951 A KR 20190056951A KR 1020180079419 A KR1020180079419 A KR 1020180079419A KR 20180079419 A KR20180079419 A KR 20180079419A KR 20190056951 A KR20190056951 A KR 20190056951A
- Authority
- KR
- South Korea
- Prior art keywords
- storage device
- port
- data
- storage
- interface circuit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Memory System (AREA)
Abstract
Description
본 개시는 전자 장치에 관한 것으로, 좀 더 구체적으로는 데이터를 저장하고 출력하는 스토리지 장치의 구성들 및 동작들에 관한 것이다.The present disclosure relates to electronic devices, and more particularly to configurations and operations of storage devices that store and output data.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 전자 장치는 그것에 포함되는 전자 회로들의 동작들에 따라 고유의 기능을 수행한다. 전자 장치는 단독으로 동작하면서 고유의 기능을 수행할 수 있다. 몇몇 경우, 전자 장치는 다른 전자 장치와 통신하면서 고유의 기능을 수행할 수 있다.Various types of electronic devices have been used in recent years. The electronic device performs its own functions according to the operations of the electronic circuits included therein. The electronic device can perform its own function while operating alone. In some cases, the electronic device can perform its own functions while communicating with other electronic devices.
스토리지 장치는 다양한 전자 장치의 한 예이다. 스토리지 장치는 그것에 포함되는 구성 요소들의 동작들에 따라 데이터를 저장하고 출력할 수 있고, 따라서 사용자에게 스토리지 서비스를 제공할 수 있다. 스토리지 장치는 단독으로 데이터를 관리할 수 있고, 또는 다른 전자 장치와 통신하면서 데이터를 관리할 수 있다.Storage devices are an example of a variety of electronic devices. The storage device is capable of storing and outputting data according to the operations of the components included therein and thus can provide storage services to the user. The storage device can manage data on its own, or can manage data while communicating with other electronic devices.
다양한 정보가 유통되고 데이터의 양이 급격하게 증가함에 따라, 많은 양의 데이터를 관리하기 위해 스토리지 장치의 용량 역시 증가하고 있다. 게다가, 더 많은 양의 데이터를 저장하기 위해, 복수의 스토리지 장치가 단일 전자 시스템의 데이터를 관리하기 위해 함께 채용될 수 있다. 복수의 스토리지 장치는 서로 통신하며 데이터를 저장하고 출력할 수 있고, 더 많은 양의 데이터를 저장하기 위한 용량을 제공할 수 있다.As diverse information circulates and the volume of data increases dramatically, the capacity of storage devices is also increasing to manage large amounts of data. Moreover, in order to store a larger amount of data, a plurality of storage devices can be employed together to manage data of a single electronic system. A plurality of storage devices communicate with each other and can store and output data, and can provide capacity for storing a larger amount of data.
그러나, 복수의 스토리지 장치에서 관리되는 데이터의 양이 과도하게 증가하고 각 스토리지 장치의 성능이 높아지는 경우, 스토리지 장치들 및 데이터를 관리하는 것에 대한 부하(Load)가 증가할 수 있다. 특히, 호스트 시스템이 스토리지 장치들 및 데이터를 관리하는 것을 전담하는 경우, 호스트 시스템의 작업부하가 심해질 수 있다.However, if the amount of data managed in a plurality of storage devices becomes excessive and the performance of each storage device increases, the load on managing storage devices and data may increase. In particular, if the host system is dedicated to managing storage devices and data, the workload of the host system can be increased.
본 개시는 호스트의 개입 없이 다른 스토리지 장치와 피어-투-피어(Peer-to-peer) 통신을 수행하도록 구성되는 스토리지 장치를 제공할 수 있다.The present disclosure can provide a storage device configured to perform peer-to-peer communication with another storage device without the intervention of a host.
몇몇 실시 예에서, 스토리지 장치는 FPGA(Field Programmable Gate Array) 보드 및 스토리지 컨트롤러를 포함할 수 있다. FPGA 보드는 스토리지 장치의 제 1 포트로 연결될 수 있다. 스토리지 컨트롤러의 제 1 인터페이스 회로는 FPGA 보드로 연결될 수 있고, 스토리지 컨트롤러의 제 2 인터페이스 회로는 스토리지 장치의 제 2 포트로 연결될 수 있다. 제 1 포트 및 제 2 포트 중 적어도 하나의 포트는 스토리지 장치 외부의 다른 스토리지 장치로 연결될 수 있다. 제 1 포트가 다른 스토리지 장치로 연결되는 경우, FPGA 보드는 호스트의 개입 없이 스토리지 컨트롤러와 다른 스토리지 장치 사이에서 피어-투-피어 방식으로 데이터를 전달하기 위한 경로를 제공할 수 있다.In some embodiments, the storage device may include a Field Programmable Gate Array (FPGA) board and a storage controller. The FPGA board can be connected to the first port of the storage device. The first interface circuit of the storage controller may be coupled to the FPGA board and the second interface circuit of the storage controller may be coupled to the second port of the storage device. At least one port of the first port and the second port may be connected to another storage device outside the storage device. When the first port is connected to another storage device, the FPGA board can provide a path for transferring data in a peer-to-peer manner between the storage controller and another storage device without the intervention of the host.
몇몇 실시 예에서, 스토리지 장치는 스토리지 컨트롤러 및 메모리 장치를 포함할 수 있다. 스토리지 컨트롤러의 제 1 인터페이스 회로는 스토리지 장치의 제 1 포트로 연결될 수 있고, 스토리지 컨트롤러의 제 2 인터페이스 회로는 스토리지 장치의 제 2 포트로 연결될 수 있다. 메모리 장치는 스토리지 컨트롤러의 제어에 따라 데이터를 저장하거나 출력할 수 있다. 제 1 인터페이스 회로는 제 1 포트가 스토리지 장치 외부의 다른 장치로 연결되는지 여부 및 제 1 포트로 연결되는 다른 장치의 유형에 기초하여 복수의 동작 모드 중에서 선택되는 동작 모드로 동작할 수 있다. 제 1 포트가 스토리지 장치 외부의 다른 스토리지 장치로 연결되는 경우, 스토리지 컨트롤러는 호스트의 개입 없이 제 1 포트를 통해 다른 스토리지 장치와 피어-투-피어 방식으로 데이터를 교환할 수 있다.In some embodiments, the storage device may comprise a storage controller and a memory device. The first interface circuit of the storage controller may be coupled to a first port of the storage device and the second interface circuit of the storage controller may be coupled to a second port of the storage device. The memory device can store or output data according to the control of the storage controller. The first interface circuit may operate in an operating mode selected from a plurality of operating modes based on whether the first port is connected to another device external to the storage device and the type of another device connected to the first port. When the first port is connected to another storage device external to the storage device, the storage controller can exchange data in a peer-to-peer manner with another storage device through the first port without the intervention of the host.
몇몇 실시 예에서, 스토리지 장치는 스토리지 컨트롤러 및 연산 로직 회로를 포함할 수 있다. 스토리지 컨트롤러는 스토리지 장치의 제 1 포트와 스토리지 장치의 제 2 포트 사이에 놓일 수 있다. 연산 로직 회로는 스토리지 컨트롤러 또는 제 2 포트로부터 수신되는 데이터에 기초하여 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 제 1 포트가 스토리지 장치 외부의 다른 스토리지 장치로 연결되는 경우, 스토리지 장치는 호스트의 개입 없이 제 1 포트를 통해 다른 스토리지 장치로 가공된 데이터를 출력할 수 있다.In some embodiments, the storage device may comprise a storage controller and arithmetic logic circuitry. The storage controller may be located between a first port of the storage device and a second port of the storage device. The arithmetic logic circuit may perform processing operations based on data received from the storage controller or the second port to produce the processed data. When the first port is connected to another storage device outside the storage device, the storage device can output the processed data to the other storage device via the first port without the intervention of the host.
몇몇 실시 예에서, 스토리지 장치는 스토리지 컨트롤러 및 메모리 장치를 포함할 수 있다. 스토리지 컨트롤러는 스토리지 장치의 제 1 포트와 스토리지 장치의 제 2 포트 사이에 놓일 수 있다. 메모리 장치는 스토리지 컨트롤러의 제어에 따라 데이터를 저장하거나 출력할 수 있다. 제 1 포트가 스토리지 장치 외부의 다른 스토리지 장치로 연결되는 경우, 스토리지 장치는 메모리 장치에 저장된 제 1 데이터 및 제 2 포트를 통해 수신되는 제 2 데이터 중 적어도 하나의 데이터에 기초하여 생성되는 제 3 데이터를 호스트의 개입 없이 제 1 포트를 통해 다른 스토리지 장치로 출력할 수 있다.In some embodiments, the storage device may comprise a storage controller and a memory device. The storage controller may be located between a first port of the storage device and a second port of the storage device. The memory device can store or output data according to the control of the storage controller. When the first port is connected to another storage device outside the storage device, the storage device stores third data generated based on at least one of the first data stored in the memory device and the second data received via the second port Can be output to the other storage device via the first port without involvement of the host.
몇몇 실시 예에서, 스토리지 시스템은 제 1 스토리지 장치 및 제 2 스토리지 장치를 포함할 수 있다. 제 1 스토리지 장치는 제 1 포트 및 제 2 포트를 포함할 수 있고, 제 2 스토리지 장치는 제 3 포트를 포함할 수 있다. 제 2 포트는 제 3 포트로 연결될 수 있고, 제 1 스토리지 장치는 호스트의 개입 없이 제 2 포트 및 제 3 포트를 통해 제 2 스토리지 장치와 통신할 수 있다. 제 1 스토리지 장치는 제 1 포트를 통해 수신되는 제 1 데이터 및 제 1 스토리지 장치에 저장된 제 2 데이터 중 적어도 하나의 데이터에 기초하여 제 2 포트를 통해 제 3 데이터를 출력할 수 있다. 제 2 스토리지 장치는 제 3 포트를 통해 수신되는 제 3 데이터 및 제 2 스토리지 장치에 저장된 제 4 데이터 중 적어도 하나의 데이터에 기초하여 제 5 데이터를 생성할 수 있다. 호스트의 요청에 대응하는 연산 결과는 제 5 데이터에 기초하여 호스트로 제공될 수 있다.In some embodiments, the storage system may include a first storage device and a second storage device. The first storage device may include a first port and a second port, and the second storage device may include a third port. The second port can be connected to the third port and the first storage device can communicate with the second storage device via the second port and the third port without the intervention of the host. The first storage device may output the third data via the second port based on at least one of the first data received through the first port and the second data stored in the first storage device. The second storage device may generate the fifth data based on at least one of the third data received via the third port and the fourth data stored in the second storage device. The operation result corresponding to the request of the host can be provided to the host based on the fifth data.
본 개시의 실시 예들에 따르면, 복수의 스토리지 장치는 호스트의 개입 없이 피어-투-피어 통신을 수행할 수 있다. 따라서, 데이터의 양이 증가하고 각 스토리지 장치의 성능이 높아지더라도, 스토리지 장치들 및 데이터를 관리하는 것에 대한 호스트의 부하가 현저하게 경감될 수 있다. 이는 전체 전자 시스템의 설계 비용 및 관리 비용을 감소시킬 수 있다.According to embodiments of the present disclosure, a plurality of storage devices can perform peer-to-peer communication without the intervention of the host. Thus, even if the amount of data increases and the performance of each storage device increases, the load on the host for managing storage devices and data can be significantly reduced. This can reduce the design and management costs of the entire electronic system.
도 1은 몇몇 실시 예에 따른 전자 시스템의 예시적인 구성을 보여주는 블록도이다.
도 2는 도 1의 스토리지 장치와 관련되는 예시적인 구현을 보여주는 개념도이다.
도 3 및 도 4는 도 1의 전자 시스템과 관련되는 예시적인 구성들을 보여주는 블록도들이다.
도 5는 도 1의 스토리지 장치들과 관련되는 예시적인 구성을 보여주는 블록도이다.
도 6 내지 도 10은 도 5의 스토리지 장치들과 관련되는 예시적인 동작들을 설명하기 위한 블록도들이다.
도 11 및 도 12는 도 5의 스토리지 장치들과 관련되는 예시적인 구성들을 보여주는 블록도들이다.
도 13 및 도 14는 도 1의 스토리지 장치와 관련되는 예시적인 구성들을 보여주는 블록도들이다.
도 15는 도 1의 스토리지 장치들과 관련되는 예시적인 구성을 보여주는 블록도이다.
도 16 및 도 17은 도 15의 가변 인터페이스 회로의 예시적인 동작들을 설명하는 흐름도들이다.
도 18은 도 1의 스토리지 장치들과 관련되는 예시적인 구성을 보여주는 블록도이다.
도 19는 도 1의 전자 시스템과 관련되는 예시적인 구현을 보여주는 개념도이다.1 is a block diagram illustrating an exemplary configuration of an electronic system according to some embodiments.
2 is a conceptual diagram illustrating an exemplary implementation associated with the storage device of FIG.
Figures 3 and 4 are block diagrams illustrating exemplary configurations associated with the electronic system of Figure 1;
5 is a block diagram illustrating an exemplary configuration associated with the storage devices of FIG.
FIGS. 6 through 10 are block diagrams illustrating exemplary operations associated with the storage devices of FIG.
Figures 11 and 12 are block diagrams illustrating exemplary configurations associated with the storage devices of Figure 5.
Figures 13 and 14 are block diagrams illustrating exemplary configurations associated with the storage device of Figure 1;
15 is a block diagram illustrating an exemplary configuration associated with the storage devices of FIG.
Figs. 16 and 17 are flowcharts illustrating exemplary operations of the variable interface circuit of Fig.
18 is a block diagram illustrating an exemplary configuration associated with the storage devices of FIG.
19 is a conceptual diagram illustrating an exemplary implementation associated with the electronic system of FIG.
아래에서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자들이 본 발명을 용이하게 실시할 수 있도록, 첨부되는 도면들을 참조하여 몇몇 실시 예가 명확하고 상세하게 설명될 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention.
도 1은 몇몇 실시 예에 따른 전자 시스템(1000)의 예시적인 구성을 보여주는 블록도이다.1 is a block diagram illustrating an exemplary configuration of an
전자 시스템(1000)은 메인 프로세서(1101), 워킹 메모리(1200), 스토리지 시스템(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 버스(1600)를 포함할 수 있다. 예로서, 전자 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console), 워크스테이션, 하나 이상의 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들 중 하나일 수 있다.The
메인 프로세서(1101)는 전자 시스템(1000)의 전반적인 동작들을 제어할 수 있다. 예로서, 메인 프로세서(1101)는 하나 이상의 프로세서 코어를 포함하는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서로 구현될 수 있다.The
워킹 메모리(1200)는 전자 시스템(1000)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 워킹 메모리(1200)는 메인 프로세서(1101)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 예로서, 워킹 메모리(1200)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.The
스토리지 시스템(1300)은 하나 이상의 스토리지 장치를 포함할 수 있다. 예로서, 스토리지 시스템(1300)은 스토리지 장치들(1300a, 1300b, 1300c)을 포함할 수 있다. 도 1은 3개의 스토리지 장치들(1300a, 1300b, 1300c)을 보여주지만, 스토리지 시스템(1300)에 포함되는 스토리지 장치들의 개수는 전자 시스템(1000)의 요구사항(Requirement)에 적합하도록 다양하게 변경 또는 수정될 수 있다.The
각 스토리지 장치(1300a, 1300b, 1300c)는 전력 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 각 스토리지 장치(1300a, 1300b, 1300c)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다. 예로서, 각 스토리지 장치(1300a, 1300b, 1300c)는 SSD(Solid State Drive), 카드 스토리지, 임베디드(Embedded) 스토리지 등과 같은 스토리지 매체를 포함할 수 있다.Each
통신 블록(1400)은 전자 시스템(1000)의 외부 장치/시스템과 통신하기 위해 다양한 무선/유선 통신 규약 중 적어도 하나를 지원할 수 있다. 유저 인터페이스(1500)는 사용자와 전자 시스템(1000) 사이의 통신을 중재하기 위해 다양한 입력/출력 인터페이스를 포함할 수 있다.
버스(1600)는 전자 시스템(1000)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 전자 시스템(1000)의 구성 요소들은 버스(1600)의 버스 포맷에 따라 데이터를 교환할 수 있다. 예로서, 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCIe(Peripheral Component Interconnect Express), SATA(Serial Advanced Technology Attachment), SAS(Serial Attached SCSI), NVMe(Nonvolatile Memory Express), UFS(Universal Flash Storage), DDR(Double Data Rate), LPDDR(Low Power DDR) 등의 다양한 인터페이스 규약 중 하나 이상을 포함할 수 있다.The
아래에서, PCIe 규약과 관련되는 예시적인 구성들 및 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 실시 예들이 설명될 것이다. 그러나, 본 개시의 실시 예들은 PCIe 규약 외의 다른 인터페이스 규약과 관련하여 채용되도록 다양하게 변경 또는 수정될 수 있다. 나아가, 본 개시의 실시 예들은 스토리지 장치들(1300a, 1300b, 1300c) 뿐만 아니라, 데이터를 저장하고 출력할 수 있는 어떤 전자 장치(예컨대, 워킹 메모리(1200))에서든 채용될 수 있다. 아래의 설명들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지 않는다.In the following, embodiments related to the exemplary configurations and
도 2는 도 1의 스토리지 장치(1300a)와 관련되는 예시적인 구현을 보여주는 개념도이다.FIG. 2 is a conceptual diagram illustrating an exemplary implementation associated with the
몇몇 실시 예에서, 스토리지 장치(1300a)는 PCB(Printed Circuit Board)(1307a)를 포함할 수 있다. 스토리지 장치(1300a)는 PCB(1307a) 상에 실장 또는 장착되는 하나 이상의 칩 또는 패키지를 포함할 수 있다. 예로서, 메모리 장치들(1310a) 및 스토리지 컨트롤러(1330a)가 PCB(1307a) 상에 실장 또는 장착될 수 있다.In some embodiments, the
스토리지 컨트롤러(1330a)는 스토리지 장치(1300a)의 전반적인 동작들을 제어하고 관리할 수 있다. 이를 위해, 스토리지 컨트롤러(1330a)는 의도된 동작들을 수행하도록 구성되는 하드웨어 회로(예컨대, 아날로그 회로, 논리 회로 등)를 포함할 수 있다. 추가로 또는 대안적으로, 스토리지 컨트롤러(1330a)는 의도된 동작들을 수행하기 위한 프로그램 코드의 명령어 집합을 실행하도록 구성되는 하나 이상의 프로세서 코어를 포함할 수 있다.The
메모리 장치들(1310a)은 하나 이상의 유형의 메모리들을 포함할 수 있다. 메모리 장치들(1310a)은 스토리지 컨트롤러(1330a)의 제어에 따라 데이터를 저장하거나 출력할 수 있다. 예로서, 메모리 장치들(1310a)은 PCB(1307a) 상에 인쇄된 도전성 패턴(Conductive Pattern)들을 통해 스토리지 컨트롤러(1330a)와 통신할 수 있다.
몇몇 실시 예에서, 스토리지 장치(1300a)는 듀얼-포트(Dual-port)를 통해 스토리지 장치(1300a) 외부의 다른 장치와 통신하도록 구성될 수 있다. 예로서, 스토리지 장치(1300a)의 듀얼-포트는 제 1 포트 및 제 2 포트를 포함할 수 있고, 스토리지 장치(1300a)는 제 1 포트 및 제 2 포트를 통해 다른 장치로부터 데이터를 수신하거나 다른 장치로 데이터를 출력할 수 있다. 예로서, 스토리지 장치(1300a)가 SSD인 경우, 스토리지 장치(1300a)는 듀얼-포트 SSD로 불릴 수 있다.In some embodiments, the
예로서, 스토리지 장치(1300a)는 듀얼-포트에 대응하는 커넥터들(1390a, 1395a)을 포함할 수 있다. 커넥터들(1390a, 1395a)은 도전성 물질로 구현되는 핀들 또는 패턴들(1391a, 1396a)을 포함할 수 있다. 예로서, 커넥터들(1390a, 1395a) 각각은 직접적으로 또는 간접적으로(예컨대, 도선, 케이블 등을 통해) 다른 장치로 연결될 수 있다. 이 경우, 스토리지 장치(1300a)는 핀들 또는 패턴들(1391a, 1396a)을 통해 다른 장치와 데이터를 교환할 수 있다.By way of example,
예로서, 커넥터(1390a) 및 핀들 또는 패턴들(1391a)은 제 1 포트에 대응할 수 있고, 커넥터(1395a) 및 핀들 또는 패턴들(1396a)은 제 2 포트에 대응할 수 있다. 예로서, 스토리지 컨트롤러(1330a)는 PCB(1307a) 상에 인쇄된 도전성 패턴들을 통해 핀들 또는 패턴들(1391a, 1396a)로 연결될 수 있다. 따라서, 스토리지 컨트롤러(1330a)는 제 1 포트 및 제 2 포트를 통해 데이터를 출력하거나 수신할 수 있다.By way of example,
제 1 포트 및 제 2 포트는 독립적인 통신을 제공할 수 있다. 예로서, 제 1 포트를 통해 데이터를 출력 또는 수신하는 것은 제 2 포트를 통해 데이터를 출력 또는 수신하는 것과 독립적일 수 있다.The first port and the second port may provide independent communication. By way of example, outputting or receiving data via the first port may be independent of outputting or receiving data via the second port.
스토리지 장치(1300a)의 구성(예컨대, 메모리 장치들(1310a)의 개수, 메모리 장치들(1310a) 및 스토리지 컨트롤러(1330a)의 배치, 커넥터들(1390a, 1395a)의 위치 및 모양, 핀들 또는 패턴들(1391a, 1396a)의 위치 및 모양 등)은 도 2의 도시와 상이하도록 다양하게 변경 또는 수정될 수 있다. 도 2의 예시적인 구현은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지 않는다. 스토리지 장치들(1300b, 1300c)은 스토리지 장치(1300a)와 동일 또는 유사하게 구성될 수 있다.(E.g., the number of
도 3은 도 1의 전자 시스템(1000)과 관련되는 예시적인 구성을 보여주는 블록도이다.3 is a block diagram illustrating an exemplary configuration associated with the
예로서, 전자 시스템(1000)은 구성(1000a)을 포함할 수 있다. 구성(1000a)은 메인 프로세서(1101), 루트 컴플렉스(Root Complex)(1003), 스위치(1005), 워킹 메모리(1200), 및 스토리지 장치들(1300a, 1300b)을 포함할 수 있다.By way of example,
루트 컴플렉스(1003)는 전자 시스템(1000)의 구성 요소들 사이에서 데이터 흐름을 관리할 수 있다. 예로서, 루트 컴플렉스(1003)는 데이터 경로를 제어하거나, 데이터 전달을 스케줄링하거나, 통신 충돌을 해소할 수 있다. 예로서, 메인 프로세서(1101), 워킹 메모리(1200), 및 스토리지 장치들(1300a, 1300b)이 루트 컴플렉스(1003)로 연결될 수 있고, 루트 컴플렉스(1003)를 통해 서로 통신하며 데이터를 교환할 수 있다.The
몇몇 경우, 스위치(1005)가 루트 컴플렉스(1003)로 더 연결될 수 있고, 스토리지 장치들(1300a, 1300b)은 스위치(1005)를 통해 루트 컴플렉스(1003)로 연결될 수 있다. 예로서, 스위치(1005)는 PCIe 스위치 또는 다른 유형의 스위치를 포함할 수 있다. 스위치(1005)는 루트 컴플렉스(1003)와 스토리지 장치들(1300a, 1300b) 사이의 데이터 경로를 제어할 수 있다. 루트 컴플렉스(1003) 및 스위치(1005)는 데이터 제어 및 데이터 전달을 위한 하드웨어 회로로 구현될 수 있다.In some cases,
몇몇 예에서, 스토리지 장치(1300a)는 듀얼-포트를 통해 스위치(1005)로 연결될 수 있다. 예로서, 스토리지 장치(1300a)의 제 1 포트는 스토리지 장치(1300a)와 스위치(1005) 사이에 데이터 경로(P11)를 제공할 수 있고, 스토리지 장치(1300a)의 제 2 포트는 스토리지 장치(1300a)와 스위치(1005) 사이에 데이터 경로(P12)를 제공할 수 있다. 유사하게, 스토리지 장치(1300b) 역시 듀얼-포트를 통해 스위치(1005)로 연결될 수 있다. 도 3에는 도시되지 않았으나, 스토리지 장치(1300c) 역시 듀얼-포트를 통해 스위치(1005)로 연결될 수 있다.In some instances,
메인 프로세서(1101)는 루트 컴플렉스(1003) 및 스위치(1005)를 통해 스토리지 장치들(1300a, 1300b)과 통신할 수 있다. 본 개시에서, 스토리지 장치들(1300a, 1300b)과 같은 전자 시스템(1000)의 구성 요소로 접근할 수 있는 객체는 “호스트”로 불릴 수 있다. 메인 프로세서(1101)는 호스트로서 동작할 수 있는 객체들의 한 예일 수 있으나, 본 발명은 여기에 한정되지 않는다.The
각 스토리지 장치(1300a, 1300b)가 듀얼-포트를 통해 메인 프로세서(1101)와 통신하는 경우, 신뢰성이 향상될 수 있다. 예로서, 스토리지 장치(1300a)의 하나의 포트가 장애를 갖거나(Failure) 비활성화(Disable)되더라도, 다른 하나의 포트가 통신을 지원할 수 있다.Reliability can be improved if each
도 3의 예에서, 스토리지 장치들(1300a, 1300b)은 스위치(1005)를 통해 피어-투-피어(Peer-to-peer) 방식으로 서로 통신할 수 있다. 이 경우, 호스트(예컨대, 메인 프로세서(1101))가 스토리지 장치들(1300a, 1300b) 사이의 통신에 개입할 수 있다.In the example of FIG. 3, the
예로서, 데이터가 스토리지 장치(1300a)로부터 스위치(1005)를 통해 스토리지 장치(1300b)로 전달되는 경우, 메인 프로세서(1101)는 스토리지 장치(1300b)로의 데이터 경로를 제어하고 메모리 어드레스를 맵핑하는 데에 개입할 수 있다. 이를 위해, 메인 프로세서(1101)는 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터를 가공하는 데에 개입할 수 있다.By way of example, when data is transferred from
한편, 각 스토리지 장치(1300a, 1300b)의 용량이 큰 경우, 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터의 양이 많을 수 있다. 또한, 많은 양의 데이터를 관리하기 위해 각 스토리지 장치(1300a, 1300b)의 성능이 높을 수 있다. 이 경우, 호스트가 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터를 가공하는 데에 개입함에 따라, 호스트의 작업부하(Workload)가 심해질 수 있다.On the other hand, when the capacity of each of the
도 4는 도 1의 전자 시스템(1000)과 관련되는 예시적인 구성을 보여주는 블록도이다.4 is a block diagram illustrating an exemplary configuration associated with the
예로서, 전자 시스템(1000)은 구성(1000b)을 포함할 수 있다. 구성(1000b)은 메인 프로세서(1101), 루트 컴플렉스(1003), 스위치(1005), 워킹 메모리(1200), 및 스토리지 장치들(1300a, 1300b)을 포함할 수 있다.By way of example,
몇몇 실시 예에 따른 구성(1000b)에서, 스토리지 장치(1300a)의 제 1 포트 및 제 2 포트 모두가 스위치(1005)로 연결되지는 않을 수 있다. 대신, 스토리지 장치(1300a)의 제 1 포트는 스토리지 장치(1300b)로 연결될 수 있고, 스토리지 장치(1300a)의 제 2 포트는 스위치(1005)로 연결될 수 있다.In the
예로서, 스토리지 장치(1300a)의 제 2 포트는 스토리지 장치(1300a)와 스위치(1005) 사이에 데이터 경로(P21)를 제공할 수 있고, 스토리지 장치(1300a)의 제 1 포트는 스토리지 장치들(1300a, 1300b) 사이에 데이터 경로(P22)를 제공할 수 있다. 스토리지 장치(1300a)는 데이터 경로(P21), 스위치(1005), 및 루트 컴플렉스(1003)를 통해 메인 프로세서(1101)와 통신할 수 있다.By way of example, a second port of the
유사하게, 스토리지 장치(1300b)의 듀얼-포트의 하나의 포트는 스토리지 장치(1300a)로 연결될 수 있다. 스토리지 장치(1300a)는 데이터 경로(P22)를 통해 스토리지 장치(1300b)와 피어-투-피어 방식으로 통신할 수 있다. 도 4에는 도시되지 않았으나, 스토리지 장치(1300c) 역시 피어-투-피어 통신을 위해 듀얼-포트의 하나의 포트를 통해 스토리지 장치(1300a 또는 1300b)로 연결될 수 있다.Similarly, one port of the dual-port of
스토리지 장치(1300b)의 듀얼-포트의 다른 하나의 포트는 스위치(1005)로 연결되거나 연결되지 않을 수 있다. 스토리지 장치(1300b)가 스위치(1005)로 연결되지 않는 경우, 스토리지 장치(1300b)는 스토리지 장치(1300a)를 통해 메인 프로세서(1101)와 통신할 수 있다. 스토리지 장치(1300b)가 스위치(1005)로 연결되는 경우, 스토리지 장치(1300b)는 스위치(1005)를 통해 메인 프로세서(1101)와 통신할 수 있다.The other port of the dual-port of the
구성(1000b)에서, 스토리지 장치들(1300a, 1300b) 사이의 통신에는 스위치(1005)가 요구되지 않을 수 있다. 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터는 스토리지 장치(1300a) 및/또는 스토리지 장치(1300b)에 의해 가공될 수 있다. 호스트(예컨대, 메인 프로세서(1101))는 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터를 가공하는 데에 개입하지 않을 수 있다(또는 최소한으로만 개입할 수 있다).In
구성(1000a)에서 호스트에 수행되었던 데이터 가공의 일부 또는 전부는 구성(1000b)에서 스토리지 장치들(1300a, 1300b)에 의해 수행될 수 있다. 따라서, 구성(1000b)에서, 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터의 양이 증가하고 스토리지 장치들(1300a, 1300b)의 성능이 높아지더라도, 호스트의 작업부하가 현저하게 경감될 수 있다. 이는 전체 전자 시스템(1000)의 설계 비용 및 관리 비용을 감소시킬 수 있다.Some or all of the data manipulation performed on the host in
도 4는 스토리지 장치(1300a)가 스위치(1005)로 연결되는 것을 보여준다. 몇몇 실시 예에서, 스토리지 장치(1300a)는 스위치(1005) 없이 루트 컴플렉스(1003)로 연결될 수 있다. 전자 시스템(1000)은 구성(1000b)과 상이하도록 다양하게 변경 또는 수정될 수 있다.4 shows that the
도 5는 도 1의 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 예시적인 구성을 보여주는 블록도이다.FIG. 5 is a block diagram illustrating an exemplary configuration associated with the
몇몇 실시 예에서, 스토리지 장치들(1300a, 1300b, 1300c)은 각각 스토리지 장치들(1301a, 1301b, 1301c)을 포함할 수 있다. 도 4를 참조하여 설명된 것들과 유사하게, 스토리지 장치들(1301a, 1301b, 1301c)은 피어-투-피어 방식으로 통신하기 위해 루트 컴플렉스(1003) 또는 스위치(1005) 없이 서로 연결될 수 있다. 이를 위해, 스토리지 장치들(1301a, 1301b, 1301c) 각각은 듀얼-포트의 구조로 구현될 수 있다.In some embodiments, the
도 5는 스토리지 장치들(1301a, 1301c)이 메인 프로세서(1101)로 직접 연결되는 것을 보여준다. 그러나, 몇몇 실시 예에서, 루트 컴플렉스(1003) 및/또는 스위치(1005)가 스토리지 장치들(1301a, 1301c)과 메인 프로세서(1101) 사이에 제공될 수 있다. 본 개시에서, 메인 프로세서(1101)로의 연결은 직접적인 및 간접적인 연결을 포함할 수 있다.FIG. 5 shows that the
스토리지 장치(1301a)는 하나 이상의 메모리 장치(1310a), 스토리지 컨트롤러(1331a), 및 피어-투-피어 관리기(1350a)를 포함할 수 있다. 스토리지 컨트롤러(1331a)는 스토리지 컨트롤러(1330a)에 대응할 수 있다. 스토리지 컨트롤러(1331a)는 스토리지 장치(1301a)의 전반적인 동작들을 제어하고 관리할 수 있다. 메모리 장치(1310a)는 스토리지 컨트롤러(1331a)의 제어에 따라 데이터를 저장하거나 출력할 수 있다.
스토리지 컨트롤러(1331a)는 인터페이스 회로들(1335a, 1336a)을 포함할 수 있다. 인터페이스 회로들(1335a, 1336a) 각각은 스토리지 컨트롤러(1331a)가 스토리지 컨트롤러(1331a) 외부의 구성 요소와 통신하도록 만들기 위해 데이터, 신호, 및/또는 패킷을 송신/수신하고 처리하도록 구성되는 물리 계층 및/또는 논리 계층을 포함할 수 있다. 인터페이스 회로들(1335a, 1336a) 각각은 스토리지 컨트롤러(1331a)와 외부 구성 요소 사이의 통신을 처리하도록 구성되는 하드웨어 회로를 포함할 수 있다.The
예로서, 인터페이스 회로(1335a)는 스토리지 장치(1301a)의 제 2 포트로 연결될 수 있다. 스토리지 장치(1301a)의 제 2 포트는 스토리지 컨트롤러(1331a)와 메인 프로세서(1101) 사이에 데이터 경로(P21a)를 제공할 수 있다. 스토리지 장치(1301a)는 인터페이스 회로(1335a), 데이터 경로(P21a), 및 제 2 포트를 통해 메인 프로세서(1101)와 통신할 수 있다.By way of example,
예로서, 인터페이스 회로(1336a)는 피어-투-피어 관리기(1350a)로 연결될 수 있다. 데이터 경로(P23a)가 인터페이스 회로(1336a)와 피어-투-피어 관리기(1350a) 사이에 제공될 수 있다. 스토리지 컨트롤러(1331a)는 인터페이스 회로(1336a) 및 데이터 경로(P23a)를 통해 피어-투-피어 관리기(1350a)와 통신할 수 있다.By way of example,
피어-투-피어 관리기(1350a)는 스토리지 장치(1301a)의 제 1 포트로 연결될 수 있다. 피어-투-피어 관리기(1350a)는 제 1 포트와 스토리지 컨트롤러(1331a) 사이에 놓일 수 있다. 스토리지 컨트롤러(1331a)는 스토리지 장치(1301a)의 제 1 포트와 스토리지 장치(1301a)의 제 2 포트 사이에 놓일 수 있다.The peer-to-
스토리지 장치(1301a)는 제 1 포트를 통해 스토리지 장치(1301a) 외부의 다른 장치(예컨대, 스토리지 장치(1301b))로 연결될 수 있다. 스토리지 장치(1301a)의 제 1 포트는 피어-투-피어 관리기(1350a)와 스토리지 장치(1301b) 사이에 데이터 경로(P22a)를 제공할 수 있다. 스토리지 장치(1301a)는 데이터 경로(P22a) 및 제 1 포트를 통해 스토리지 장치(1301b)와 통신할 수 있다.The
피어-투-피어 관리기(1350a)는 내부 스위치(1351a) 및 연산 로직 회로(1352a)를 포함할 수 있다. 내부 스위치(1351a) 및 연산 로직 회로(1352a)는 피어-투-피어 관리기(1350a) 내부의 버스를 통해 서로 통신할 수 있다. 내부 스위치(1351a) 및 연산 로직 회로(1352a)의 동작들에 따라, 피어-투-피어 관리기(1350a)는 스토리지 컨트롤러(1331a)와 스토리지 장치(1301b) 사이에서 피어-투-피어 방식으로 데이터를 전달하기 위한 경로(예컨대, 데이터 경로들(P22a, P23a))를 제공할 수 있다.Peer-to-
내부 스위치(1351a)는 제 1 포트를 통해 스토리지 장치(1301a)로부터 출력되는 데이터 및 제 1 포트를 통해 스토리지 장치(1301a)에 의해 수신되는 데이터의 흐름을 관리할 수 있다. 따라서, 피어-투-피어 관리기(1350a)는, 스토리지 컨트롤러(1331a)와 교환되는 데이터에 기초하여, 제 1 포트를 통해 스토리지 장치(1301b)로 데이터를 출력하거나 제 1 포트를 통해 스토리지 장치(1301b)로부터 데이터를 수신할 수 있다.The
내부 스위치(1351a)는 데이터 흐름을 관리하기 위해 하드웨어 회로로 구현될 수 있다. 여기서, “스위치”라는 용어가 사용되지만, 내부 스위치(1351a)의 구현은 다양하게 변경 또는 수정될 수 있다. 예로서, 내부 스위치(1351a)는 (루트 컴플렉스(1003)와 유사하게) 데이터 경로를 제어하거나, 데이터 전달을 스케줄링하거나, 통신 충돌을 해소하기 위해, 내부 루트 컴플렉스의 형태로 구현될 수 있다. 또는, 내부 스위치(1351a)는 (루트 컴플렉스(1003) 및 스위치(1005)와 유사하게) 내부 루트 컴플렉스가 스위치와 조합된 형태로 구현될 수 있다.The
다만, 내부 스위치(1351a)는 스토리지 컨트롤러(13331a)와 제 1 포트 사이의 데이터 흐름만을 관리할 수 있다. 따라서, 내부 스위치(1351a)는 루트 컴플렉스(1003) 및/또는 스위치(1005)의 크기(예컨대, 회로 크기, 회로 면적, 회로 규모 등)보다 작은 크기를 갖도록 구현될 수 있다.However, the
연산 로직 회로(1352a)는 피어-투-피어 관리기(1350a)에서 수신되는 데이터에 기초하여 가공 연산을 수행할 수 있다. 예로서, 가공 연산은 수신되는 데이터와 관련되는 정보(예컨대, 데이터 양, 데이터 경로, 어드레스 등)를 모니터링하는 연산, 수신되는 데이터에 기반하는 RAID(Redundant Array of Independent Disks) 연산, 수신되는 데이터에 기반하는 정규식 검색(Regular Expression Search) 연산 등과 같은 다양한 연산 중 하나 이상을 포함할 수 있다. 다만, 본 발명은 이 예로 한정되지 않는다.The
예로서, 연산 로직 회로(1352a)는 스토리지 컨트롤러(1331a)로부터 수신되는 데이터에 기초하여 가공 연산을 수행할 수 있고, 수신되는 데이터를 가공하여 제 1 포트를 통해 출력될 가공된 데이터를 생성할 수 있다. 예로서, 연산 로직 회로(1352a)는 제 1 포트를 통해 수신되는 데이터에 기초하여 가공 연산을 수행할 수 있고, 수신되는 데이터를 가공하여 스토리지 컨트롤러(1331a)로 제공될 가공된 데이터를 생성할 수 있다.By way of example,
이를 위해, 연산 로직 회로(1352a)는 가공 연산을 수행하도록 구성되는 하드웨어 회로로 구현될 수 있다. 몇몇 실시 예에서, 피어-투-피어 관리기(1350a)는 스토리지 장치(1301a)의 세트 내부에서 스토리지 컨트롤러(1331a)와 별개인 FPGA(Field Programmable Gate Array) 보드 또는 ASICs(Application Specific Integrated Circuits)의 형태로 구현될 수 있다. 예로서, 연산 로직 회로(1352a)는 FPGA 보드의 구성에 기초하여 재구성 가능한(Reconfigurable) 로직 회로로 구현될 수 있다.To this end,
따라서, 피어-투-피어 관리기(1350a)는, 단순히 데이터 흐름을 관리한다기 보다는, 수신되는 데이터 자체를 가공 또는 변환하여 가공된 데이터 또는 변환된 데이터를 출력할 수 있다. 출력되는 데이터는 스토리지 컨트롤러(1331a)로 제공되거나, 제 1 포트를 통해 스토리지 장치(1301b)로 제공될 수 있다. 이를 위해, 피어-투-피어 관리기(1350a)는 스토리지 컨트롤러(1331a) 및 제 1 포트로 연결되는 두 개의 다운스트림(Downstream) 포트를 포함할 수 있다.Thus, rather than simply managing the data flow, the peer-to-
연산 로직 회로(1352a)의 가공 연산은 메인 프로세서(1101)에 의해 수행될 수도 있다. 그러나, 실시 예들에서, 메인 프로세서(1101)의 작업부하를 경감시키기 위해, 스토리지 장치(1301a)가 연산 로직 회로(1352a)를 이용하여 가공 연산을 대신 수행할 수 있다. 가공 연산과 관련되는 예가 도 6 내지 도 9를 참조하여 설명될 것이다.The processing operation of the
스토리지 장치(1301b)는 하나 이상의 메모리 장치(1310b), 스토리지 컨트롤러(1331b), 및 피어-투-피어 관리기(1350b)를 포함할 수 있다. 스토리지 컨트롤러(1331b)는 인터페이스 회로들(1335b, 1336b)을 포함할 수 있다. 피어-투-피어 관리기(1350b)는 내부 스위치(1351b) 및 연산 로직 회로(1352b)를 포함할 수 있다.
피어-투-피어 관리기(1350b)는 스토리지 장치(1301b)의 제 1 포트 및 데이터 경로(P24a)를 통해 스토리지 장치(1301c)로 연결될 수 있다. 인터페이스 회로(1335b)는 스토리지 장치(1301b)의 제 2 포트 및 데이터 경로(P22a)를 통해 스토리지 장치(1301a)로 연결될 수 있다. 인터페이스 회로(1336b)는 데이터 경로(P25a)를 통해 피어-투-피어 관리기(1350b)로 연결될 수 있다.The peer-to-
스토리지 장치(1301b), 메모리 장치(1310b), 스토리지 컨트롤러(1331b), 인터페이스 회로들(1335b, 1336b), 피어-투-피어 관리기(1350b), 내부 스위치(1351b), 및 연산 로직 회로(1352b)는 스토리지 장치(1301a), 메모리 장치(1310a), 스토리지 컨트롤러(1331a), 인터페이스 회로들(1335a, 1335b), 피어-투-피어 관리기(1350a), 내부 스위치(1351a), 및 연산 로직 회로(1352a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명은 이하 생략될 것이다.A
스토리지 장치(1301c)는 하나 이상의 메모리 장치(1310c), 스토리지 컨트롤러(1331c), 및 피어-투-피어 관리기(1350c)를 포함할 수 있다. 스토리지 컨트롤러(1331c)는 인터페이스 회로들(1335c, 1336c)을 포함할 수 있다. 피어-투-피어 관리기(1350c)는 내부 스위치(1351c) 및 연산 로직 회로(1352c)를 포함할 수 있다.
피어-투-피어 관리기(1350c)는 스토리지 장치(1301c)의 제 1 포트 및 데이터 경로(P27a)를 통해 메인 프로세서(1101)로 연결될 수 있다. 인터페이스 회로(1335c)는 스토리지 장치(1301c)의 제 2 포트 및 데이터 경로(P24a)를 통해 스토리지 장치(1301b)로 연결될 수 있다. 인터페이스 회로(1336c)는 데이터 경로(P26a)를 통해 피어-투-피어 관리기(1350c)로 연결될 수 있다.The peer-to-
스토리지 장치(1301c), 메모리 장치(1310c), 스토리지 컨트롤러(1331c), 인터페이스 회로들(1335c, 1336c), 피어-투-피어 관리기(1350c), 내부 스위치(1351c), 및 연산 로직 회로(1352c)는 스토리지 장치(1301a), 메모리 장치(1310a), 스토리지 컨트롤러(1331a), 인터페이스 회로들(1335a, 1335b), 피어-투-피어 관리기(1350a), 내부 스위치(1351a), 및 연산 로직 회로(1352a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명은 이하 생략될 것이다.A
각 스토리지 장치(1301a, 1301b, 1301c)에서, 제 1 포트 및 제 2 포트 중 적어도 하나의 포트는 다른 스토리지 장치로 연결될 수 있다. 한편, 제 1 포트 및 제 2 포트 중 다른 스토리지 장치로 연결되지 않는 포트는 호스트(예컨대, 메인 프로세서(1101))로 연결될 수 있다.At each
예로서, 스토리지 장치(1301b)에서, 제 1 포트 및 제 2 포트 모두가 다른 스토리지 장치로 연결되는 경우, 스토리지 장치(1301b)는 호스트로 연결되지 않을 수 있다. 이 경우, 스토리지 장치(1301b)는 메인 프로세서(1101)와 직접 통신하지는 않을 수 있다. 대신, 스토리지 장치(1301b)는 스토리지 장치(1301a 또는 1301c)를 통해 메인 프로세서(1101)와 통신할 수 있다.For example, in the
스토리지 장치들(1301a, 1301b, 1301c)의 몇몇 포트는 메인 프로세서(1101)로 연결되지 않을 수 있다. 그러나, 메인 프로세서(1101)로의 데이터 경로들(P21a, P27a)이 제공되는 경우, 신뢰성이 향상될 수 있다. 예로서, 데이터 경로(P27a)가 장애를 갖거나 비활성화되더라도, 데이터 경로(P21a)가 메인 프로세서(1101)와의 통신을 제공할 수 있다.Some ports of the
도 6 내지 도 9는 도 5의 스토리지 장치들(1301a, 1301b, 1301c)과 관련되는 예시적인 동작들을 설명하기 위한 블록도들이다.FIGS. 6-9 are block diagrams illustrating exemplary operations associated with the
도 6 내지 도 9의 예시적인 동작들은 호스트(예컨대, 메인 프로세서(1101))가 스토리지 장치들(1301a, 1301b, 1301c)에 저장된 데이터(D1, D2, D3)와 관련하여 RAID 연산(예컨대, 패리티 연산)을 요청하는 경우와 관련될 수 있다. 연산 로직 회로들(1352a, 1352b, 1352c)은 가공 연산으로서 RAID 연산을 수행할 수 있다.The exemplary operations of FIGS. 6-9 illustrate that a host (e.g., main processor 1101) may perform a RAID operation (e.g., parity) with respect to data D1, D2, D3 stored in
도 6을 참조하면, 스토리지 컨트롤러(1331a)는 스토리지 장치(1301a)의 제 2 포트 및 인터페이스 회로(1335a)를 통해 메인 프로세서(1101)로부터 요청(REQ)을 수신할 수 있다. 요청(REQ)은 스토리지 장치(1301a) 및 다른 스토리지 장치(예컨대, 스토리지 장치들(1301b, 1301c))로 지시(Direct)될 수 있다. 예로서, 요청(REQ)은 데이터(D1, D2, D3)에 대응하는 패리티를 계산할 것을 요청할 수 있다.Referring to FIG. 6, the
도 7을 참조하면, 스토리지 컨트롤러(1331a)는 요청(REQ)에 응답하여, 스토리지 장치(1301a)에 대해 요청되는 동작을 수행할 수 있다. 예로서, 스토리지 컨트롤러(1331a)는 메모리 장치(1310a)가 데이터(D1)를 출력하도록 메모리 장치(1310a)를 제어할 수 있다.Referring to FIG. 7, in response to a request (REQ), the
나아가, 스토리지 컨트롤러(1331a)는 요청(REQ)에 응답하여, 인터페이스 회로(1336a)를 통해 다른 스토리지 장치에 대해 요청되는 동작과 관련되는 데이터를 피어-투-피어 관리기(1350a)와 교환할 수 있다. 예로서, 스토리지 컨트롤러(1331a)는 데이터(D1)를 피어-투-피어 관리기(1350a)로 제공할 수 있다.Further, in response to the request (REQ), the
연산 로직 회로(1352a)는 메모리 장치(1310a)에 저장된 데이터 및 스토리지 장치(1301a)의 제 2 포트를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 예로서, 연산 로직 회로(1352a)는 데이터(D1)에 기초하여 가공 연산(예컨대, 패리티 연산)을 수행할 수 있다.The
연산 로직 회로(1352a)는 데이터(D1)를 가공하여 가공된 데이터(D1')를 생성할 수 있다. 데이터(D1')는 스토리지 장치(1301b)에서 수행될 동작에 이용될 수 있다. 패리티 연산이 아직 하나의 데이터(D1)에 대해서만 수행되었고, 데이터(D1')는 데이터(D1)와 동일할 수 있다.The
내부 스위치(1351a)는 데이터(D1, D1')의 흐름을 관리할 수 있다. 내부 스위치(1351a)는 스토리지 컨트롤러(1331a)로부터 데이터(D1)를 수신할 수 있고, 데이터(D1')를 스토리지 장치(1301a)의 제 1 포트로 출력할 수 있다. 따라서, 피어-투-피어 관리기(1350a)는 호스트의 개입 없이 스토리지 장치(1301b)로 데이터(D1')를 출력할 수 있다.The
스토리지 장치(1301a)는 호스트의 개입 없이 스토리지 장치(1301a)의 제 1 포트 및 스토리지 장치(1301b)의 제 2 포트를 통해 스토리지 장치(1301b)와 통신할 수 있다. 스토리지 컨트롤러(1331b)는 스토리지 장치(1301b)의 제 2 포트 및 인터페이스 회로(1335b)를 통해 스토리지 장치(1301a)로부터 데이터(D1')를 수신할 수 있다.The
도 8을 참조하면, 스토리지 컨트롤러(1331b)는 스토리지 장치(1301b)에 대해 요청되는 동작을 수행할 수 있다. 예로서, 스토리지 컨트롤러(1331b)는 메모리 장치(1310b)가 데이터(D2)를 출력하도록 메모리 장치(1310b)를 제어할 수 있다. 이를 위해, 예로서, 스토리지 컨트롤러(1331b)는 데이터(D2) 및 요청(REQ)에 관한 정보를 데이터(D1')와 함께 스토리지 장치(1301a)로부터 수신할 수 있다. 스토리지 컨트롤러(1331b)는 인터페이스 회로(1336b)를 통해 데이터(D1', D2)를 피어-투-피어 관리기(1350b)로 제공할 수 있다.Referring to Figure 8, the
연산 로직 회로(1352b)는 메모리 장치(1310b)에 저장된 데이터 및 스토리지 장치(1301b)의 제 2 포트를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 예로서, 연산 로직 회로(1352b)는 데이터(D1', D2)에 기초하여 패리티 연산을 수행할 수 있다. 연산 로직 회로(1352b)는 데이터(D1', D2)를 가공하여 가공된 데이터(D2')를 생성할 수 있다.The
연산 로직 회로(1352a)에 의해 수행되는 패리티 연산은 메인 프로세서(1101)에 의해 요청되는 전체 연산의 제 1 부분(예컨대, 데이터(D1)에 대한 부분 연산)을 포함할 수 있다. 스토리지 장치(1301a)가 데이터(D1')를 스토리지 장치(1301b)로 출력함에 따라, 연산 로직 회로(1352b)는 메인 프로세서(1101)에 의해 요청되는 전체 연산의 제 2 부분(예컨대, 데이터(D1', D2)에 대한 부분 연산)을 수행할 수 있다. 여기서, 제 2 부분의 연산은 제 1 부분의 연산과 중첩하지 않을 수 있다.The parity operation performed by
연산 로직 회로(1352b)가 패리티 연산을 수행함에 따라, 데이터(D2')는 데이터(D1') 및 데이터(D2) 각각과 상이하도록 생성될 수 있다. 데이터(D2')는 스토리지 장치(1301c)에서 수행될 동작에 이용될 수 있다.As the
내부 스위치(1351b)는 데이터(D1', D2, D2')의 흐름을 관리할 수 있다. 내부 스위치(1351b)는 스토리지 컨트롤러(1331b)로부터 데이터(D1', D2)를 수신할 수 있고, 데이터(D2')를 스토리지 장치(1301b)의 제 1 포트로 출력할 수 있다. 피어-투-피어 관리기(1350b)는 호스트의 개입 없이 스토리지 장치(1301c)로 데이터(D2')를 출력할 수 있다.The
스토리지 장치(1301b)는 호스트의 개입 없이 스토리지 장치(1301b)의 제 1 포트 및 스토리지 장치(1301c)의 제 2 포트를 통해 스토리지 장치(1301c)와 통신할 수 있다. 스토리지 컨트롤러(1331c)는 스토리지 장치(1301c)의 제 2 포트 및 인터페이스 회로(1335c)를 통해 스토리지 장치(1301b)로부터 데이터(D2')를 수신할 수 있다.The
도 9를 참조하면, 스토리지 컨트롤러(1331c)는 메모리 장치(1310c)가 데이터(D3)를 출력하도록 메모리 장치(1310c)를 제어할 수 있다. 스토리지 컨트롤러(1331c)는 인터페이스 회로(1336c)를 통해 데이터(D2', D3)를 피어-투-피어 관리기(1350c)로 제공할 수 있다.9, the
연산 로직 회로(1352c)는 데이터(D2', D3)에 기초하여 패리티 연산을 수행할 수 있다. 연산 로직 회로(1352c)는 가공된 데이터로서 패리티(P)를 생성할 수 있다. 패리티(P)는 메인 프로세서(1101)의 요청(REQ)에 대응하는 연산 결과일 수 있다.The
패리티(P)를 얻기 위해 메인 프로세서(1101)에 의해 요청되는 전체 연산은 스토리지 장치들(1301a, 1301b, 1301c) 상에서 분산하여 수행될 수 있다. 메인 프로세서(1101)는 패리티 연산에 개입하지 않을 수 있고, 따라서 메인 프로세서(1101)의 작업 부하가 경감될 수 있다. 연산 로직 회로들(1352a, 1352b, 1352c) 각각은 전체 연산을 부분적으로 수행할 수 있다. 부분적인 연산들이 연이어 수행됨에 따라, 전체 연산이 완성될 수 있고 패리티(P)가 얻어질 수 있다.The entire operation requested by the
내부 스위치(1351c)는 스토리지 컨트롤러(1331b)로부터 데이터(D2', D3)를 수신할 수 있고, 패리티(P)를 스토리지 장치(1301c)의 제 1 포트로 출력할 수 있다. 스토리지 장치(1301c)는 스토리지 장치(1301c)의 제 1 포트를 통해 패리티(P)를 출력할 수 있다. 따라서, 패리티(P)가 메인 프로세서(1101)로 제공될 수 있다.The
도 10은 도 5의 스토리지 장치들(1301a, 1301b, 1301c)과 관련되는 예시적인 동작들을 설명하기 위한 블록도이다.10 is a block diagram illustrating exemplary operations associated with the
몇몇 경우, 도 5의 데이터 경로(P27a)가 연결되지 않을 수 있다. 예로서, 데이터 경로(P27a)가 장애를 갖거나 비활성화될 수 있다. 예로서, 회로 구성의 단순화를 위해, 데이터 경로(P27a)가 제공되지 않을 수 있다.In some cases, the data path P27a of FIG. 5 may not be connected. By way of example, data path P27a may be faulty or inactive. For example, in order to simplify the circuit configuration, the data path P27a may not be provided.
이 경우, 스토리지 장치(1301c)는 스토리지 장치(1301c)의 제 2 포트 및 스토리지 장치(1301b)의 제 1 포트를 통해 패리티(P)를 스토리지 장치(1301b)로 전달할 수 있다. 이러한 방식으로, 패리티(P)는 스토리지 장치들(1301b, 1301a)을 통해 메인 프로세서(1101)로 제공될 수 있다. 스토리지 장치(1301a)는 스토리지 장치(1301a)의 제 2 포트를 통해 패리티(P)를 메인 프로세서(1101)로 출력할 수 있다.In this case, the
도 10의 예에서 패리티(P)를 메인 프로세서(1101)로 전달하기 위한 경로의 방향은 도 6 내지 도 9의 예에서 데이터를 전달하기 위한 경로의 방향과 반대일 수 있다. 인터페이스 회로들(1335a, 1336a, 1335b, 1336b, 1335c, 1336c) 및 피어-투-피어 관리기들(1350a, 1350b, 1350c)은 양 방향 통신을 지원할 수 있다.In the example of FIG. 10, the direction of the path for transferring the parity P to the
도 6 내지 도 10을 참조하여 예시적인 동작들이 설명되었다. 그러나, 이 설명들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지 않는다. 스토리지 장치들(1301a, 1301b, 1301c)의 동작들은 스토리지 장치들(1301a, 1301b, 1301c) 사이의 피어-투-피어 통신 및 가공 연산을 제공하기 위해 다양하게 변경 또는 수정될 수 있다. 나아가, 본 개시의 실시 예들이 패리티 연산 외의 다양한 가공 연산에 대해서도 응용될 수 있음이 잘 이해될 것이다.Exemplary operations have been described with reference to Figures 6-10. However, these descriptions are provided to enable a better understanding, and are not intended to limit the present invention. Operations of the
도 11 및 도 12는 도 5의 스토리지 장치들(1301a, 1301b, 1301c)과 관련되는 예시적인 구성들을 보여주는 블록도들이다.Figures 11 and 12 are block diagrams illustrating exemplary configurations associated with the
도 11을 참조하면, 메인 프로세서(1101)는 데이터 경로들(P21b, P27b)을 통해 스토리지 장치들(1301a, 1301b, 1301c)과 통신할 수 있다. 스토리지 장치들(1301a, 1301b, 1301c)은 데이터 경로들(P22b 내지 P26b)을 통해 피어-투-피어 방식으로 서로 통신할 수 있다. 데이터 경로들(P21b 내지 P27b)은 각각 데이터 경로들(P21a 내지 P27a)에 대응할 수 있다.Referring to FIG. 11, the
도 6 내지 도 10의 예시적인 동작들과 달리, 도 11의 예에서, 스토리지 장치(1301c)가 메인 프로세서(1101)로부터 요청을 수신할 수 있다. 피어-투-피어 관리기(1350c)는 메인 프로세서(1101)의 요청에 응답하여 가공 연산을 수행할 수 있고, 따라서 가공된 데이터를 스토리지 컨트롤러(1331c)로 제공할 수 있다.Unlike the exemplary operations of FIGS. 6-10, in the example of FIG. 11, a
이러한 방식으로, 피어-투-피어 관리기들(1350c, 1350b, 1350a)이 메인 프로세서(1101)에 의해 요청되는 전체 연산을 분산하여 수행할 수 있고, 따라서 연산 결과를 생성할 수 있다. 연산 결과는 스토리지 장치(1301a)의 스토리지 컨트롤러(1331a)를 통해 메인 프로세서(1101)로 출력될 수 있다.In this manner, the peer-to-
몇몇 실시 예에서, 메인 프로세서(1101)와 스토리지 컨트롤러(1331a) 사이에 연산 로직 회로가 제공되지 않을 수 있다. 몇몇 경우, 스토리지 컨트롤러(1331a)로부터 출력되는 데이터에 대해 추가의 가공이 요구될 수 있다. 예로서, 피어-투-피어 관리기(1350a)로부터 제공되는 가공된 데이터 및 스토리지 장치(1301a)의 메모리 장치(1310a)에 저장된 데이터에 대해 추가의 패리티 연산이 요구될 수 있고, 스토리지 컨트롤러(1331a)는 가공된 데이터 및 저장된 데이터를 메인 프로세서(1101)로 제공할 수 있다.In some embodiments, arithmetic logic circuitry may not be provided between the
이 예에서, 메인 프로세서(1101)가 추가의 패리티 연산을 수행할 수 있다. 메인 프로세서(1101)가 가공 연산에 부분적으로 개입하지만, 피어-투-피어 관리기들(1350c, 1350b, 1350a)이 전체 연산의 대부분을 수행할 수 있다. 나아가, 메인 프로세서(1101)는 스토리지 장치들(1301a, 1301b, 1301c) 사이의 통신에는 개입하지 않을 수 있다. 따라서, 메인 프로세서(1101)의 개입이 최소화될 수 있다.In this example, the
도 12를 참조하면, 몇몇 경우, 도 11의 데이터 경로(P21b)가 연결되지 않을 수 있다. 예로서, 데이터 경로(P21b)가 장애를 갖거나 비활성화될 수 있다. 예로서, 회로 구성의 단순화를 위해, 데이터 경로(P21b)가 제공되지 않을 수 있다. 이 경우, 피어-투-피어 관리기(1350a)의 연산 결과는 스토리지 장치들(1301b, 1301c)을 통해 메인 프로세서(1101)로 제공될 수 있다. 도 12의 예에서 연산 결과를 메인 프로세서(1101)로 전달하기 위한 경로의 방향은 도 11의 예에서 데이터를 전달하기 위한 경로의 방향과 반대일 수 있다.Referring to FIG. 12, in some cases, the data path P21b of FIG. 11 may not be connected. By way of example, data path P21b may be faulty or inactive. For example, in order to simplify the circuit configuration, the data path P21b may not be provided. In this case, the operation result of the peer-to-
도 5 내지 도 12를 참조하여 설명된 실시 예들과 관련하여, 인터페이스 회로들(1335a, 1336a, 1335b, 1336b, 1335c, 1336c) 각각은 메인 프로세서(1101) 또는 피어-투-피어 관리기들(1350a, 1350b, 1350c)의 다운스트림 포트들로 연결될 수 있다. 따라서, 인터페이스 회로들(1335a, 1336a, 1335b, 1336b, 1335c, 1336c)은 각 스토리지 장치들(1301a, 1301b, 1301c)이 종단(Endpoint) 장치들로서 동작하도록 동작할 수 있다.Each of the
도 13 및 도 14는 도 1의 스토리지 장치(1300a)와 관련되는 예시적인 구성들을 보여주는 블록도들이다.13 and 14 are block diagrams illustrating exemplary configurations associated with the
도 13을 참조하면, 몇몇 실시 예에서, 스토리지 장치(1300a)는 스토리지 장치(1302a)를 포함할 수 있다. 스토리지 장치(1302a)는 하나 이상의 메모리 장치(1310a), 스토리지 컨트롤러(1332a), 및 연산 로직 회로(1355a)를 포함할 수 있다. 스토리지 컨트롤러(1332a)는 인터페이스 회로(1337a) 및 가변 인터페이스 회로(1338a)를 포함할 수 있다.Referring to FIG. 13, in some embodiments, the
스토리지 컨트롤러(1332a), 인터페이스 회로(1337a), 및 연산 로직 회로(1355a)는 각각 스토리지 컨트롤러(1331a), 인터페이스 회로(1335a), 및 연산 로직 회로(1352a)에 대응할 수 있다. 스토리지 컨트롤러(1332a)는 스토리지 장치(1302a)의 전반적인 동작들을 제어하고 관리할 수 있다. 인터페이스 회로(1337a)는 스토리지 장치(1302a)의 제 2 포트를 통해 스토리지 장치(1302a) 외부의 A장치(예컨대, 호스트, 다른 스토리지 장치 등)와의 통신을 지원할 수 있다.The
연산 로직 회로(1355a)는 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 연산 로직 회로(1355a)는 스토리지 장치(1302a)의 제 1 포트를 통해 스토리지 장치(1302a) 외부의 B장치(예컨대, 호스트, 다른 스토리지 장치 등)와 데이터를 교환할 수 있다. 연산 로직 회로(1355a)는 가변 인터페이스 회로(1338a)로 연결될 수 있다.The
도 5 내지 도 12를 참조하여 설명된 내부 스위치(1351a) 및 연산 로직 회로(1352a)는 하나의 구성 요소(예컨대, 하나의 FPGA 보드, 하나의 칩 등) 상에 구현될 수 있다. 그러나, 몇몇 실시 예에서, 내부 스위치(1351a) 및 연산 로직 회로(1352a)는 별개의 구성 요소들(예컨대, 별개의 칩들, 별개의 회로들 등)로 구현될 수 있다. 내부 스위치(1351a)가 연산 로직 회로(1352a)로부터 분리되는 경우, 몇몇 실시 예에서, 내부 스위치(1351a)가 스토리지 컨트롤러(1331a) 내부에 구현될 수 있다.The
예로서, 스토리지 컨트롤러(1332a)의 가변 인터페이스 회로(1338a)가 내부 스위치(1351a)의 구성들을 포함하고 내부 스위치(1351a)의 동작들을 수행할 수 있다. 가변 인터페이스 회로(1338a)는 복수의 동작 모드 중에서 선택되는 동작 모드로 동작할 수 있다. 동작 모드는 스토리지 장치(1302a)의 제 1 포트가 B장치로 연결되는지 여부 및 연결된 B장치의 유형에 기초하여 선택될 수 있다.By way of example, the
예로서, 가변 인터페이스 회로(1338a)의 동작 모드는 종단 장치의 동작과 관련되는(예컨대, 스토리지 장치(1302a)가 종단 장치로서 동작하도록 스토리지 장치(1302a)를 지원하기 위한) 종단 동작 모드를 포함할 수 있다. 예로서, 가변 인터페이스 회로(1338a)의 동작 모드는 B장치와의 통신과 관련되는(예컨대, B장치와의 통신을 지원하기 위한) 스위치 동작 모드를 포함할 수 있다.By way of example, the operational mode of the
이를 위해, 가변 인터페이스 회로(1338a)는 데이터, 신호 및/또는 패킷을 송신/수신하고 처리하도록 구성되는 물리 계층 및/또는 논리 계층의 하드웨어 회로를 포함할 수 있다. 나아가, 가변 인터페이스 회로(1338a)는 B장치와의 데이터 교환을 관리하기 위해 루트 컴플렉스 및/또는 스위치의 하드웨어 회로를 포함할 수 있다. 가변 인터페이스 회로(1338a)는 선택되는 동작 모드에 의존하여 상이하게 동작할 수 있다.To this end, the
도 14를 참조하면, 몇몇 실시 예에서, 스토리지 장치(1300a)는 스토리지 장치(1303a)를 포함할 수 있다. 스토리지 장치(1303a)는 하나 이상의 메모리 장치(1310a) 및 스토리지 컨트롤러(1333a)를 포함할 수 있다. 스토리지 컨트롤러(1333a)는 인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)를 포함할 수 있다. 스토리지 컨트롤러(1333a)는 스토리지 컨트롤러(1331a)에 대응할 수 있고, 스토리지 장치(1303a)의 전반적인 동작들을 제어하고 관리할 수 있다.14, in some embodiments, the
인터페이스 회로(1337a)는 스토리지 장치(1303a)의 제 2 포트로 연결될 수 있고, 제 2 포트를 통해 A장치와의 통신을 지원할 수 있다. 가변 인터페이스 회로(1338a)는 스토리지 장치(1303a)의 제 1 포트로 연결될 수 있고, 제 1 포트를 통해 B장치와의 통신을 지원할 수 있다. 가변 인터페이스 회로(1338a)는 스토리지 장치(1303a)의 제 1 포트가 B장치로 연결되는지 여부 및 연결된 B장치의 유형에 기초하여 선택되는 동작 모드로 동작할 수 있다.The
몇몇 실시 예에서, 연산 로직 회로(1352a 또는 1355a) 역시 스토리지 컨트롤러(1331a) 내부에 구현될 수 있다. 예로서, 스토리지 컨트롤러(1333a)의 내장 연산 로직 회로(1339a)가 연산 로직 회로(1352a 또는 1355a)의 구성들을 포함하고 연산 로직 회로(1352a 또는 1355a)의 동작들을 수행할 수 있다.In some embodiments,
인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)는 스토리지 컨트롤러(1333a) 내부의 버스를 통해 서로 통신할 수 있다. 예로서, 내장 연산 로직 회로(1339a)는 내장 FPGA 또는 내장 ASICs의 형태로 구현될 수 있다. 예로서, 내장 연산 로직 회로(1339a)는 재구성 가능한 로직 회로로 구현될 수 있다.The
내장 연산 로직 회로(1339a)는 가공 연산을 수행할 수 있다. 내장 연산 로직 회로(1339a)는 스토리지 장치(1303a)의 제 1 포트를 통해 수신되는 데이터를 가공하여 스토리지 장치(1303a)의 제 2 포트를 통해 출력될 가공된 데이터를 생성할 수 있다. 내장 연산 로직 회로(1339a)는 스토리지 장치(1303a)의 제 2 포트를 통해 수신되는 데이터를 가공하여 스토리지 장치(1303a)의 제 1 포트를 통해 출력될 가공된 데이터를 생성할 수 있다.The internal
도 15는 도 1의 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 예시적인 구성을 보여주는 블록도이다.15 is a block diagram illustrating an exemplary configuration associated with the
몇몇 실시 예에서, 스토리지 장치들(1300a, 1300b, 1300c)은 각각 스토리지 장치들(1303a, 1303b, 1303c)을 포함할 수 있다. 스토리지 장치들(1303a, 1303b, 1303c) 각각은 듀얼-포트의 구조로 구현될 수 있고, 호스트(예컨대, 메인 프로세서(1101))의 개입 없이 피어-투-피어 방식으로 서로 통신할 수 있다.In some embodiments, the
스토리지 장치(1303b)는 하나 이상의 메모리 장치(1310b) 및 스토리지 컨트롤러(1333b)를 포함할 수 있다. 스토리지 컨트롤러(1333b)는 인터페이스 회로(1337b), 가변 인터페이스 회로(1338b), 및 내장 연산 로직 회로(1339b)를 포함할 수 있다. 스토리지 컨트롤러(1333b), 인터페이스 회로(1337b), 가변 인터페이스 회로(1338b), 및 내장 연산 로직 회로(1339b)는 스토리지 컨트롤러(1333a), 인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다.
스토리지 장치(1303c)는 하나 이상의 메모리 장치(1310c) 및 스토리지 컨트롤러(1333c)를 포함할 수 있다. 스토리지 컨트롤러(1333c)는 인터페이스 회로(1337c), 가변 인터페이스 회로(1338c), 및 내장 연산 로직 회로(1339c)를 포함할 수 있다. 스토리지 컨트롤러(1333c), 인터페이스 회로(1337c), 가변 인터페이스 회로(1338c), 및 내장 연산 로직 회로(1339c)는 스토리지 컨트롤러(1333a), 인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명은 이하 생략될 것이다.The
인터페이스 회로(1337a)는 스토리지 장치(1303a)의 제 2 포트로 연결될 수 있다. 스토리지 장치(1303a)의 제 2 포트는 스토리지 컨트롤러(1333a)와 메인 프로세서(1101) 사이에 데이터 경로(P21c)를 제공할 수 있다. 따라서, 스토리지 장치(1303a)는 데이터 경로(P21c)를 통해 메인 프로세서(1101)와 통신하고 데이터를 교환할 수 있다.The
내장 연산 로직 회로(1339a)는 메모리 장치(1310a)에 저장된 데이터 및 스토리지 장치(1303a)의 제 2 포트(또는 제 1 포트)를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 내장 연산 로직 회로(1339a)는 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 가공된 데이터는 스토리지 장치(1303a)의 제 1 포트(또는 제 2 포트)를 통해 다른 장치(예컨대, 메인 프로세서(1101), 스토리지 장치(1303b) 등)로 출력될 수 있다.The internal
가변 인터페이스 회로(1338a)는 스토리지 장치(1303a)의 제 1 포트로 연결될 수 있다. 인터페이스 회로(1337b)는 스토리지 장치(1303b)의 제 2 포트로 연결될 수 있다. 스토리지 장치(1303a)의 제 1 포트 및 스토리지 장치(1303b)의 제 2 포트는 스토리지 컨트롤러들(1333a, 1333b) 사이에 데이터 경로(P22c)를 제공할 수 있다. 따라서, 스토리지 장치(1303a)는 메인 프로세서(1101)의 개입 없이 스토리지 장치(1303b)와 피어-투-피어 방식으로 통신하고 데이터를 교환할 수 있다.The
내장 연산 로직 회로(1339b)는 메모리 장치(1310b)에 저장된 데이터 및 스토리지 장치(1303b)의 제 2 포트(또는 제 1 포트)를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 내장 연산 로직 회로(1339b)는 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 가공된 데이터는 스토리지 장치(1303b)의 제 1 포트(또는 제 2 포트)를 통해 다른 장치(예컨대, 스토리지 장치(1303a 또는 1303c) 등)로 출력될 수 있다.The internal
유사하게, 스토리지 장치(1303b)의 제 1 포트 및 스토리지 장치(1303c)의 제 2 포트는 스토리지 컨트롤러들(1333b, 1333c) 사이에 데이터 경로(P24c)를 제공할 수 있다. 스토리지 장치(1303b)는 메인 프로세서(1101)의 개입 없이 가변 인터페이스 회로(1338b), 데이터 경로(P24c), 및 인터페이스 회로(1337c)를 통해 스토리지 장치(1303c)와 피어-투-피어 방식으로 통신하고 데이터를 교환할 수 있다.Similarly, a first port of the
스토리지 장치(1303c)의 제 1 포트는 스토리지 컨트롤러(1333c)와 메인 프로세서(1101) 사이에 데이터 경로(P27c)를 제공할 수 있다. 스토리지 장치(1303c)는 가변 인터페이스 회로(1337c) 및 데이터 경로(P27c)를 통해 메인 프로세서(1101)와 통신하고 데이터를 교환할 수 있다. 내장 연산 로직 회로(1339c)는 스토리지 장치(1303c)의 제 1 포트 및 제 2 포트를 통해 수신되는 데이터 및 메모리 장치(1310c)에 저장된 데이터 중 적어도 하나의 데이터에 기초하여 가공된 데이터를 생성할 수 있다.The first port of the
예로서, 스토리지 컨트롤러(1333a)는 인터페이스 회로(1337a)를 통해 스토리지 장치들(1303a, 1303b, 1303c)로 지시되는 요청을 수신할 수 있다. 스토리지 컨트롤러(1333a)는 스토리지 장치(1303a)에 대해 요청되는 동작을 수행할 수 있다. 스토리지 컨트롤러(1333a)는 가변 인터페이스 회로(1338a)를 통해 스토리지 장치들(1303b, 1303c)에 대해 요청되는 동작과 관련되는 데이터를 출력하거나 수신할 수 있다.By way of example, the
내장 연산 로직 회로들(1339a, 1339b, 1339c)은 메인 프로세서(1101)에 의해 요청되는 전체 연산을 분산하여 수행할 수 있다. 따라서, 스토리지 컨트롤러(1333c)는 가변 인터페이스 회로(1338c)를 통해 메인 프로세서(1101)의 요청에 대응하는 연산 결과의 데이터를 메인 프로세서(1101)로 출력할 수 있다. 몇몇 경우, 스토리지 컨트롤러(1333c)는 가변 인터페이스 회로(1338c)를 통해 메인 프로세서(1101)로부터 데이터 또는 요청을 수신할 수 있다.The built-in
스토리지 장치들(1303a, 1303b, 1303c)은 도 5 내지 도 12를 참조하여 설명된 것들과 유사하게 구성되고 동작할 수 있다. 몇몇 경우, 데이터 경로(P21c 또는 P27c)가 제공되지 않을 수 있고, 스토리지 컨트롤러들(1333a, 1333b, 1333c)은 양 방향 통신을 지원할 수 있다. 도 15는 도 14의 스토리지 장치(1303a)와 관련되는 구성을 보여주지만, 도 13의 스토리지 장치(1302a) 역시 도 5 내지 도 12 및 도 15를 참조하여 설명된 것들과 유사한 방식으로 채용될 수 있음이 잘 이해될 것이다.The
인터페이스 회로들(1337a, 1337b, 1337c) 각각은 메인 프로세서(1101) 또는 다운스트림 포트로 연결될 수 있다. 인터페이스 회로들(1337a, 1337b, 1337c)은 종단 동작 모드로 동작할 수 있다. 가변 인터페이스 회로(1338c)는 메인 프로세서(1101)로 연결될 수 있고, 따라서 종단 동작 모드로 동작할 수 있다. 가변 인터페이스 회로(1338c)가 종단 동작 모드로 동작함에 따라, 스토리지 장치(1303c)의 제 1 포트는 다운스트림 포트로 이해될 수 있다.Each of the
가변 인터페이스 회로들(1338a, 1338b)은 각각 스토리지 장치들(1303b, 1303c)로 연결될 수 있다. 가변 인터페이스 회로들(1338a, 1338b) 각각은 외부 스토리지 장치와의 통신을 지원하기 위해 스위치 동작 모드로 동작할 수 있다. 스위치 동작 모드에서, 가변 인터페이스 회로들(1338a, 1338b)은 루트 컴플렉스 및/또는 스위치의 기능을 제공하여 데이터 교환을 관리할 수 있다. 가변 인터페이스 회로들(1338a, 1338b)이 스위치 동작 모드로 동작함에 따라, 스토리지 장치들(1303a, 1303b) 각각의 제 1 포트는 업스트림(Upstream) 포트로 이해될 수 있다.The
도 15는 스토리지 장치들(1303a, 1303b, 1303c) 각각이 하나의 가변 인터페이스 회로를 포함하는 것을 보여준다. 몇몇 실시 예에서, 스토리지 장치들(1303a, 1303b, 1303c) 각각이 두 개의 가변 인터페이스 회로를 포함할 수 있다. 예로서, 스토리지 장치(1303a)의 인터페이스 회로(1337a) 역시 가변 인터페이스 회로로 구현될 수 있다. 이 경우, 인터페이스 회로(1337a) 역시 메인 프로세서(1101)와의 통신은 물론 외부 스토리지 장치와의 통신도 지원할 수 있고, 따라서 스토리지 장치(1303a)의 연결에 대한 유연성이 향상될 수 있다.FIG. 15 shows that each of the
도 16은 도 15의 가변 인터페이스 회로의 예시적인 동작을 설명하는 흐름도이다.16 is a flow chart illustrating an exemplary operation of the variable interface circuit of FIG.
스토리지 장치로 전력이 공급되고 스토리지 장치가 켜짐에 따라, 스토리지 장치는 구성을 초기화할 수 있다(S110). 예로서, 스토리지 장치는 부팅 동작 동안 구성 요소들의 상태, 외부 장치로의 연결 상태, 설정 값 등을 인식하고 구성할 수 있다.As power is supplied to the storage device and the storage device is turned on, the storage device can initialize the configuration (S110). By way of example, a storage device may recognize and configure the status of components, connection status to external devices, settings, and the like during a boot operation.
이후, 스토리지 장치는 연결된 외부 장치와 링크 업(Linkup) 상태를 설정할 수 있다(S120). 링크 업 상태는 상대방 장치를 인식하고 상대방 장치와 통신하기 위한 환경을 구성하기 위해 제공될 수 있다. 링크 업 상태를 설정하기 위해, 스토리지 장치는 스토리지 장치의 정보(예컨대, 장치 유형, 통신 성능, 송신/수신 회로의 구성 등)를 외부 장치로 제공할 수 있고, 외부 장치로부터 외부 장치의 정보를 수신할 수 있다.Thereafter, the storage device can establish a linkup state with the connected external device (S120). The link-up state can be provided for recognizing the partner device and configuring an environment for communicating with the partner device. In order to set up the link-up state, the storage device can provide the information of the storage device (e.g., device type, communication performance, configuration of the transmission / reception circuit, etc.) to the external device, can do.
링크 업 상태에 따라, 스토리지 장치는 연결된 외부 장치의 정보를 획득할 수 있다(S130). 예로서, 스토리지 장치(1303a)는 가변 인터페이스 회로(1338a)를 통해 연결되는 외부 장치가 다른 스토리지 장치(1303b)임을 인식할 수 있고, 스토리지 장치(1303c)는 가변 인터페이스 회로(1338c)를 통해 연결되는 외부 장치가 메인 프로세서(1101)임을 인식할 수 있다. 몇몇 실시 예에서, 스토리지 장치는 링크 업 상태와 무관하게 추가 핀(예컨대, GPIO(General Purpose Input/Output) 핀)을 통해 외부 장치의 유형을 인식할 수 있다.According to the link-up state, the storage device can acquire information of a connected external device (S130). For example, the
스토리지 장치는 연결된 외부 장치의 정보에 기초하여 인터페이스 회로의 동작 모드를 선택할 수 있다(S140). 예로서, 스토리지 컨트롤러(1333a)는 다른 스토리지 장치(1303b)로의 연결에 응답하여 가변 인터페이스 회로(1338a)를 스위치 동작 모드로 동작시킬 수 있고, 스토리지 컨트롤러(1333c)는 메인 프로세서(1101)로의 연결에 응답하여 가변 인터페이스 회로(1338c)를 종단 동작 모드로 동작시킬 수 있다.The storage device can select the operation mode of the interface circuit based on the information of the connected external device (S140). For example, the
도 17은 도 15의 가변 인터페이스 회로의 예시적인 동작을 설명하는 흐름도이다.17 is a flowchart illustrating an exemplary operation of the variable interface circuit of Fig.
예로서, 가변 인터페이스 회로는 먼저 스위치 동작 모드로 동작할 것을 시도할 수 있다. 시도된 스위치 동작 모드에서, 가변 인터페이스 회로는 테스트 신호를 송신할 수 있다(S210). 테스트 신호는 외부 장치가 가변 인터페이스 회로로 연결되었는지 여부 및 외부 장치의 유형을 식별하는 데에 적합하도록 구성될 수 있다. 다른 예로서, 가변 인터페이스 회로는 먼저 종단 동작 모드로 동작할 것을 시도하여 테스트 신호를 송신할 수 있다.By way of example, the variable interface circuit may first attempt to operate in a switch operating mode. In the attempted switch operation mode, the variable interface circuit may transmit a test signal (S210). The test signal may be configured to be suitable for identifying whether the external device is connected to a variable interface circuit and the type of external device. As another example, the variable interface circuit may first attempt to operate in the termination mode of operation and transmit a test signal.
가변 인터페이스 회로 또는 스토리지 컨트롤러는 테스트 신호에 대응하는 응답이 수신되는지 여부를 판별할 수 있다(S220). 응답이 수신되지 않는 경우(S220의 No), 이는 가변 인터페이스 회로가 외부 장치로 연결되지 않음을 나타낼 수 있다. 이 경우, 가변 인터페이스 회로는 전력 소모를 줄이기 위해 종단 동작 모드로 동작하거나 턴-오프(Turn-off)될 수 있다(S240). 턴-오프는 전력이 공급됨이 없이 의도된 기능 또는 동작이 수행되지 않는 상태를 의미할 수 있다.The variable interface circuit or the storage controller may determine whether a response corresponding to the test signal is received (S220). If no response is received (No in S220), this indicates that the variable interface circuit is not connected to the external device. In this case, the variable interface circuit may be operated in the terminal operation mode or turned off to reduce power consumption (S240). Turn-off may mean a state in which the intended function or operation is not performed without power being supplied.
응답이 수신되는 경우(S220의 Yes), 이는 가변 인터페이스 회로가 외부 장치로 연결됨을 나타낼 수 있다. 예로서, 종단 장치(예컨대, 스토리지 장치)로부터의 응답은 호스트(예컨대, 메인 프로세서(1101))로부터의 응답과 상이하도록 구현될 수 있다. 이 경우, 가변 인터페이스 회로 또는 스토리지 컨트롤러는 응답에 대응하는 외부 장치의 유형을 판별(예컨대, 응답이 종단 장치와 관련되는지 또는 호스트와 관련되는지 판별)할 수 있다(S230).If a response is received (S220: Yes), this indicates that the variable interface circuit is connected to the external device. By way of example, the response from a terminating device (e.g., a storage device) may be implemented to differ from the response from the host (e.g., main processor 1101). In this case, the variable interface circuit or the storage controller may determine the type of external device corresponding to the response (e.g., determine whether the response is related to the end device or the host) (S230).
응답이 종단 장치와 관련되는 경우(S230의 Yes), 가변 인터페이스 회로는 스위치 동작 모드로 동작할 수 있다(S250). 예로서, 가변 인터페이스 회로(1338a)는 스토리지 장치(1303b)로부터의 응답에 기초하여 스위치 동작 모드에서 루트 컴플렉스 및/또는 스위치의 동작을 제공할 수 있다.If the response is related to the terminal equipment (Yes in S230), the variable interface circuit can operate in the switch operation mode (S250). By way of example,
응답이 호스트와 관련되는 경우(S230의 No), 가변 인터페이스 회로는 종단 동작 모드로 동작할 수 있다(S260). 예로서, 가변 인터페이스 회로(1338c)는 메인 프로세서(1101)로부터의 응답에 기초하여 종단 동작 모드에서 종단 장치의 통신을 지원할 수 있다.When the response is related to the host (No in S230), the variable interface circuit can operate in the termination operation mode (S260). By way of example, the
도 18은 도 1의 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 예시적인 구성을 보여주는 블록도이다.FIG. 18 is a block diagram illustrating an exemplary configuration associated with the
몇몇 실시 예에서, 스토리지 장치들(1300a, 1300b, 1300c)은 스토리지 장치들(1304a, 1301b, 1301c, 1304d, 1304e)을 포함할 수 있다. 도 5의 예시적인 구성과 유사하게, 스토리지 장치들(1304a, 1301b, 1301c)은 서로 연결되어 피어-투-피어 방식으로 통신할 수 있다.In some embodiments, the
예로서, 피어-투-피어 관리기(1357a)는 세 개의 다운스트림 포트를 포함할 수 있다. 세 개의 다운스트림 포트 중 둘은 각각 스토리지 컨트롤러들(1331a, 1331b)로 연결될 수 있다. 세 개의 다운스트림 포트 중 다른 하나는 스토리지 장치(1304d)의 스토리지 컨트롤러(1331d)로 연결될 수 있다.As an example, peer-to-
스토리지 장치들(1304a, 1301b, 1301c) 사이의 연결과 유사하게, 스토리지 장치들(1304a, 1304d, 1304e)은 서로 연결되어 피어-투-피어 방식으로 통신할 수 있다. 피어-투-피어 관리기(1350d)는 두 개의 다운스트림 포트를 통해 스토리지 컨트롤러들(1331d, 1331e)로 연결될 수 있다. 피어-투-피어 관리기(1350e)는 두 개의 다운스트림 포트를 통해 스토리지 컨트롤러(1331e) 및 메인 프로세서(1101)로 연결될 수 있다.Similar to the connection between the
피어-투-피어 관리기들(1357a, 1350b, 1350c, 1350d, 1350e)은 데이터 흐름을 관리할 수 있고, 메인 프로세서(1101)에 의해 요청되는 전체 연산을 분산하여 수행할 수 있다. 각 피어-투-피어 관리기에 포함되는 다운스트림 포트들의 개수에 따라 스토리지 장치들 사이의 연결이 다양하게 변경 또는 수정될 수 있음이 잘 이해될 것이다. 이러한 변경 또는 수정은 도 13 내지 도 15를 참조하여 설명된 예시적인 구성들에 대해서도 유사하게 적용될 수 있다.The peer-to-
도 19는 도 1의 전자 시스템(1000)과 관련되는 예시적인 구현을 보여주는 개념도이다.19 is a conceptual diagram illustrating an exemplary implementation associated with the
예로서, 전자 시스템(1000)은 서버(1000c)로 구현될 수 있다. 스토리지 장치들(1300a, 1300b, 1300c)은 듀얼-포트의 구조로 구현될 수 있고, 서버(1000c)에 연결 또는 장착될 수 있다.By way of example, the
스토리지 장치(1300a)의 커넥터(1390a)는 케이블(P21d) 및 커넥터(1007a)를 통해 백플레인(Backplane)(1007)으로 연결될 수 있다. 도 19는 케이블(P21d)을 통한 연결을 보여주지만, 몇몇 실시 예에서 커넥터(1390a)는 커넥터(1007a)로 직접 연결될 수 있다.The
스토리지 장치(1300a)의 커넥터(1395a)는 케이블(P22d)을 통해 스토리지 장치(1300b)의 커넥터(1390b)로 연결될 수 있다. 스토리지 장치(1300b)의 커넥터(1395b)는 케이블(P24d)을 통해 스토리지 장치(1300c)의 커넥터(1390c)로 연결될 수 있다. 스토리지 장치(1300c)의 커넥터(1395c)는 케이블(P27d) 및 커넥터(1007c)를 통해 백플레인(1007)으로 연결될 수 있고, 몇몇 경우 백플레인(1007)으로 연결되지 않을 수 있다.The
이러한 방식으로, 스토리지 장치들(1300a, 1300b, 1300c)은 피어-투-피어 방식으로 서로 통신할 수 있다. 스토리지 장치들(1300a, 1300b, 1300c) 사이의 피어-투-피어 연결은 백플레인(1007)으로부터 완전히 분리될 수 있다. 따라서, 메인 프로세서(1101)는 스토리지 장치들(1300a, 1300b, 1300c) 사이의 통신에 개입하지 않을 수 있다.In this manner, the
메인 프로세서(1101)는 도전성 라인들(L21)을 통해 백플레인(1007)으로 연결될 수 있고, 따라서 스토리지 장치(1300a)와 통신할 수 있다. 메인 프로세서(1101)는 도전성 라인들(L27)을 통해 스토리지 장치(1300c)와 통신할 수 있고, 몇몇 경우 도전성 라인들(L27)이 제공되지 않을 수 있다.The
위 설명들은 본 발명을 구현하기 위한 예시적인 구성들 및 동작들을 제공하도록 의도된다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 위 실시 예들을 단순하게 변경하거나 수정하여 얻어질 수 있는 구현들도 포함할 것이다. 또한, 본 발명의 기술 사상은 위에서 설명된 실시 예들을 앞으로 용이하게 변경하거나 수정하여 달성될 수 있는 구현들도 포함할 것이다.The foregoing description is intended to provide exemplary configurations and operations for implementing the invention. The technical spirit of the present invention will include implementations not only described above, but also implementations that can be obtained by simply modifying or modifying the above embodiments. In addition, the technical spirit of the present invention will also include implementations that can be achieved by easily modifying or modifying the embodiments described above.
1000 : 전자 시스템1000: Electronic system
Claims (20)
상기 스토리지 장치의 제 1 포트로 연결되는 FPGA(Field Programmable Gate Array) 보드; 및
상기 FPGA 보드로 연결되는 제 1 인터페이스 회로, 및 상기 스토리지 장치의 제 2 포트로 연결되는 제 2 인터페이스 회로를 포함하는 스토리지 컨트롤러를 포함하되,
상기 제 1 포트 및 상기 제 2 포트 중 적어도 하나의 포트는 상기 스토리지 장치 외부의 다른 스토리지 장치로 연결되도록 구성되고,
상기 제 1 포트가 상기 다른 스토리지 장치로 연결되는 경우, 상기 FPGA 보드는 호스트의 개입 없이 상기 스토리지 컨트롤러와 상기 다른 스토리지 장치 사이에서 피어-투-피어(Peer-to-peer) 방식으로 데이터를 전달하기 위한 경로를 제공하도록 구성되는 스토리지 장치.In a storage device,
An FPGA (Field Programmable Gate Array) board connected to the first port of the storage device; And
A storage controller including a first interface circuit coupled to the FPGA board and a second interface circuit coupled to a second port of the storage device,
Wherein at least one port of the first port and the second port is configured to be connected to another storage device outside the storage device,
When the first port is connected to the other storage device, the FPGA board transmits data in a peer-to-peer manner between the storage controller and the other storage device without intervention of a host A storage device configured to provide a path for the storage device.
상기 스토리지 장치는 상기 제 1 포트 및 상기 제 2 포트를 통해 데이터를 수신하거나 출력하도록 구성되는 듀얼-포트 SSD(Dual-port Solid State Drive)를 포함하고,
상기 FPGA 보드는 상기 듀얼-포트 SSD의 세트 내부에서 상기 스토리지 컨트롤러와 별개로 구현되는 스토리지 장치.The method according to claim 1,
The storage device includes a dual-port solid-state drive (SSD) configured to receive or output data through the first port and the second port,
Wherein the FPGA board is implemented separately from the storage controller within the set of dual-port SSDs.
상기 제 1 포트 및 상기 제 2 포트 중 상기 다른 스토리지 장치로 연결되지 않는 포트는 상기 호스트로 연결되도록 구성되는 스토리지 장치.The method according to claim 1,
Wherein the port of the first port and the port of the second port that are not connected to the other storage device are connected to the host.
상기 제 1 포트가 상기 다른 스토리지 장치로 연결되는 경우, 상기 스토리지 컨트롤러는,
상기 제 2 포트 및 상기 제 2 인터페이스 회로를 통해 상기 스토리지 장치 및 상기 다른 스토리지 장치로 지시되는 요청을 수신하고,
상기 요청에 응답하여, 상기 스토리지 장치에 대해 요청되는 동작을 수행하고, 상기 제 1 인터페이스 회로를 통해 상기 다른 스토리지 장치에 대해 요청되는 동작과 관련되는 데이터를 상기 FPGA 보드와 교환하도록 구성되는 스토리지 장치.The method according to claim 1,
When the first port is connected to the other storage device,
Receive a request directed to the storage device and the other storage device via the second port and the second interface circuit,
And in response to the request, perform a requested operation on the storage device and exchange data associated with the requested operation for the other storage device via the first interface circuit with the FPGA board.
상기 FPGA 보드는, 상기 스토리지 컨트롤러와 교환되는 상기 데이터에 기초하여, 상기 제 1 포트를 통해 상기 다른 스토리지 장치로 데이터를 출력하거나 상기 제 1 포트를 통해 상기 다른 스토리지 장치로부터 데이터를 수신하도록 더 구성되는 스토리지 장치.5. The method of claim 4,
The FPGA board is further configured to output data to the other storage device via the first port or receive data from the other storage device via the first port based on the data exchanged with the storage controller Storage device.
상기 FPGA 보드는 상기 스토리지 컨트롤러와 상기 제 1 포트 사이에서 데이터 흐름을 관리하도록 구성되는 내부 루트 컴플렉스(Internal Root Complex) 회로를 포함하는 스토리지 장치.The method according to claim 1,
Wherein the FPGA board comprises an internal root complex circuit configured to manage data flow between the storage controller and the first port.
상기 FPGA 보드는 상기 스토리지 컨트롤러로부터 수신되는 데이터를 가공하여 상기 제 1 포트를 통해 출력될 데이터를 생성하거나 상기 제 1 포트를 통해 수신되는 데이터를 가공하여 상기 스토리지 컨트롤러로 제공될 데이터를 생성하도록 구성되는 연산 로직 회로를 포함하는 스토리지 장치.The method according to claim 1,
The FPGA board is configured to process data received from the storage controller to generate data to be output through the first port or to process data received through the first port to generate data to be provided to the storage controller A storage device comprising an arithmetic logic circuit.
상기 스토리지 장치의 제 1 포트로 연결되는 제 1 인터페이스 회로, 및 상기 스토리지 장치의 제 2 포트로 연결되는 제 2 인터페이스 회로를 포함하는 스토리지 컨트롤러; 및
상기 스토리지 컨트롤러의 제어에 따라 데이터를 저장하거나 출력하도록 구성되는 메모리 장치를 포함하되,
상기 제 1 인터페이스 회로는 상기 제 1 포트가 상기 스토리지 장치 외부의 다른 장치로 연결되는지 여부 및 상기 제 1 포트로 연결되는 상기 다른 장치의 유형에 기초하여 복수의 동작 모드 중에서 선택되는 동작 모드로 동작하도록 구성되고,
상기 제 1 포트가 상기 스토리지 장치 외부의 다른 스토리지 장치로 연결되는 경우, 상기 스토리지 컨트롤러는 호스트의 개입 없이 상기 제 1 포트를 통해 상기 다른 스토리지 장치와 피어-투-피어 방식으로 데이터를 교환하도록 구성되는 스토리지 장치.In a storage device,
A storage controller including a first interface circuit coupled to a first port of the storage device and a second interface circuit coupled to a second port of the storage device; And
And a memory device configured to store or output data under the control of the storage controller,
The first interface circuit operates in an operation mode selected from a plurality of operation modes based on whether the first port is connected to another device outside the storage device and the type of the other device connected to the first port Respectively,
The storage controller is configured to exchange data in a peer-to-peer manner with the other storage device via the first port without intervention of a host, when the first port is connected to another storage device external to the storage device Storage device.
상기 복수의 동작 모드는 종단(Endpoint) 장치의 동작과 관련되는 제 1 동작 모드 및 상기 다른 스토리지 장치와의 통신과 관련되는 제 2 동작 모드를 포함하는 스토리지 장치.9. The method of claim 8,
Wherein the plurality of operation modes comprises a first mode of operation associated with operation of an endpoint device and a second mode of operation associated with communication with the other storage device.
상기 제 1 포트가 상기 다른 스토리지 장치로 연결되는 경우, 상기 제 1 인터페이스 회로는 상기 제 2 동작 모드로 동작하고, 상기 스토리지 컨트롤러는 상기 제 1 인터페이스 회로 및 상기 제 1 포트를 통해 상기 다른 스토리지 장치로 데이터를 출력하거나 상기 제 1 포트 및 상기 제 1 인터페이스 회로를 통해 상기 다른 스토리지 장치로부터 데이터를 수신하도록 더 구성되는 스토리지 장치.10. The method of claim 9,
Wherein the first interface circuit operates in the second mode of operation when the first port is connected to the other storage device and the storage controller is connected to the other storage device via the first interface circuit and the first port And to output data or receive data from the other storage device via the first port and the first interface circuit.
상기 제 1 포트가 상기 호스트로 연결되는 경우, 상기 제 1 인터페이스 회로는 상기 제 1 동작 모드로 동작하고, 상기 스토리지 컨트롤러는 상기 제 1 인터페이스 회로 및 상기 제 1 포트를 통해 상기 호스트로 데이터를 출력하거나 상기 제 1 포트 및 상기 제 1 인터페이스 회로를 통해 상기 호스트로부터 데이터를 수신하도록 더 구성되는 스토리지 장치.10. The method of claim 9,
Wherein the first interface circuit operates in the first mode of operation when the first port is coupled to the host and the storage controller outputs data to the host via the first interface circuit and the first port, And receive data from the host through the first port and the first interface circuit.
상기 제 1 포트가 상기 스토리지 장치 외부의 다른 장치로 연결되지 않는 경우, 상기 제 1 인터페이스 회로는 상기 제 1 동작 모드로 동작하거나 턴-오프(Turn-off)되는 스토리지 장치.10. The method of claim 9,
Wherein the first interface circuit operates in the first operation mode or is turned off when the first port is not connected to another device outside the storage device.
상기 제 1 포트가 상기 다른 스토리지 장치로 연결되는 경우, 상기 스토리지 컨트롤러는,
상기 제 2 포트 및 상기 제 2 인터페이스 회로를 통해 상기 스토리지 장치 및 상기 다른 스토리지 장치로 지시되는 요청을 수신하고,
상기 요청에 응답하여, 상기 스토리지 장치에 대해 요청되는 동작을 수행하고, 상기 제 1 인터페이스 회로 및 상기 제 1 포트를 통해 상기 다른 스토리지 장치에 대해 요청되는 동작과 관련되는 데이터를 출력하거나 수신하도록 더 구성되는 스토리지 장치.9. The method of claim 8,
When the first port is connected to the other storage device,
Receive a request directed to the storage device and the other storage device via the second port and the second interface circuit,
In response to the request, perform a requested operation on the storage device and output or receive data associated with the requested operation on the other storage device via the first interface circuit and the first port Storage device.
상기 스토리지 컨트롤러는 상기 제 1 포트를 통해 수신되는 데이터를 가공하여 상기 제 2 포트를 통해 출력될 데이터를 생성하거나 상기 제 2 포트를 통해 수신되는 데이터를 가공하여 상기 제 1 포트를 통해 출력될 데이터를 생성하도록 구성되는 내장(Embedded) FPGA를 더 포함하는 스토리지 장치.9. The method of claim 8,
The storage controller may process data received through the first port to generate data to be output through the second port or to process data received through the second port to output data to be output through the first port Wherein the storage device further comprises an embedded FPGA configured to create the storage device.
상기 스토리지 장치의 제 1 포트와 상기 스토리지 장치의 제 2 포트 사이의 스토리지 컨트롤러; 및
상기 스토리지 컨트롤러 또는 상기 제 2 포트로부터 수신되는 데이터에 기초하여 가공 연산을 수행하여 가공된 데이터를 생성하도록 구성되는 연산 로직 회로를 포함하되,
상기 제 1 포트가 상기 스토리지 장치 외부의 다른 스토리지 장치로 연결되는 경우, 상기 스토리지 장치는 호스트의 개입 없이 상기 제 1 포트를 통해 상기 다른 스토리지 장치로 상기 가공된 데이터를 출력하도록 구성되는 스토리지 장치.In a storage device,
A storage controller between a first port of the storage device and a second port of the storage device; And
And an arithmetic logic circuit configured to perform a processing operation based on data received from the storage controller or the second port to generate processed data,
Wherein the storage device is configured to output the processed data to the another storage device via the first port without intervention of a host when the first port is connected to another storage device outside the storage device.
상기 연산 로직 회로에 의해 수행되는 상기 가공 연산은 상기 호스트에 의해 요청되는 전체 연산의 제 1 부분을 포함하고,
상기 스토리지 장치는, 상기 다른 스토리지 장치가 상기 가공된 데이터에 기초하여 상기 전체 연산의 제 2 부분을 수행하도록, 상기 다른 스토리지 장치로 상기 가공된 데이터를 출력하도록 더 구성되고,
상기 제 2 부분은 상기 제 1 부분과 중첩하지 않는 스토리지 장치.16. The method of claim 15,
Wherein the processing operation performed by the arithmetic logic circuit includes a first portion of the overall operation requested by the host,
Wherein the storage device is further configured to output the processed data to the other storage device such that the other storage device performs a second portion of the overall operation based on the processed data,
Wherein the second portion does not overlap with the first portion.
상기 가공 연산은 상기 수신되는 데이터와 관련되는 정보를 모니터링하는 연산, 상기 수신되는 데이터에 기반하는 RAID(Redundant Array of Independent Disks) 관련 연산, 및 상기 수신되는 데이터에 기반하는 정규식 검색 연산 중 하나 이상의 연산을 포함하는 스토리지 장치.16. The method of claim 15,
Wherein the processing operation comprises: an operation to monitor information associated with the received data; a Redundant Array of Independent Disks (RAID) -based operation based on the received data; and a regex search operation based on the received data Lt; / RTI >
상기 스토리지 장치의 제 1 포트와 상기 스토리지 장치의 제 2 포트 사이의 스토리지 컨트롤러; 및
상기 스토리지 컨트롤러의 제어에 따라 데이터를 저장하거나 출력하도록 구성되는 메모리 장치를 포함하되,
상기 제 1 포트가 상기 스토리지 장치 외부의 다른 스토리지 장치로 연결되는 경우, 상기 스토리지 장치는 상기 메모리 장치에 저장된 제 1 데이터 및 상기 제 2 포트를 통해 수신되는 제 2 데이터 중 적어도 하나의 데이터에 기초하여 생성되는 제 3 데이터를 호스트의 개입 없이 상기 제 1 포트를 통해 상기 다른 스토리지 장치로 출력하도록 구성되는 스토리지 장치.In a storage device,
A storage controller between a first port of the storage device and a second port of the storage device; And
And a memory device configured to store or output data under the control of the storage controller,
Wherein when the first port is connected to another storage device outside the storage device, the storage device is configured to store, based on at least one of the first data stored in the memory device and the second data received via the second port And to output the generated third data to the other storage device via the first port without involvement of a host.
제 3 포트를 포함하는 제 2 스토리지 장치를 포함하되,
상기 제 2 포트는 상기 제 3 포트로 연결되고, 상기 제 1 스토리지 장치는 호스트의 개입 없이 상기 제 2 포트 및 상기 제 3 포트를 통해 상기 제 2 스토리지 장치와 통신하도록 구성되고,
상기 제 1 스토리지 장치는 상기 제 1 포트를 통해 수신되는 제 1 데이터 및 상기 제 1 스토리지 장치에 저장된 제 2 데이터 중 적어도 하나의 데이터에 기초하여 상기 제 2 포트를 통해 제 3 데이터를 출력하도록 더 구성되고,
상기 제 2 스토리지 장치는 상기 제 3 포트를 통해 수신되는 상기 제 3 데이터 및 상기 제 2 스토리지 장치에 저장된 제 4 데이터 중 적어도 하나의 데이터에 기초하여 제 5 데이터를 생성하도록 구성되고,
상기 호스트의 요청에 대응하는 연산 결과는 상기 제 5 데이터에 기초하여 상기 호스트로 제공되는 스토리지 시스템.A first storage device including a first port and a second port; And
And a second storage device including a third port,
Wherein the second port is coupled to the third port and the first storage device is configured to communicate with the second storage device via the second port and the third port without the intervention of a host,
Wherein the first storage device is further configured to output third data via the second port based on at least one of the first data received via the first port and the second data stored in the first storage device And,
The second storage device is configured to generate fifth data based on at least one of the third data received via the third port and the fourth data stored in the second storage device,
And the result of the operation corresponding to the request of the host is provided to the host based on the fifth data.
상기 연산 결과를 얻기 위해 상기 호스트에 의해 요청되는 전체 연산은 상기 제 1 스토리지 장치 및 상기 제 2 스토리지 장치 상에서 분산하여 수행되는 스토리지 시스템.20. The method of claim 19,
Wherein all operations requested by the host to obtain the operation result are performed in a distributed manner on the first storage device and the second storage device.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102018125297.8A DE102018125297A1 (en) | 2017-11-17 | 2018-10-12 | Storage device that performs peer-to-peer communication with external device without the intervention of a host |
US16/170,264 US10628364B2 (en) | 2017-11-17 | 2018-10-25 | Dual port storage device performing peer-to-peer communication with external device without intervention of host |
CN201811366495.4A CN109799952B (en) | 2017-11-17 | 2018-11-16 | Storage device performing peer-to-peer communication with external device without host intervention |
US16/853,373 US11055251B2 (en) | 2017-11-17 | 2020-04-20 | Storage device performing peer-to-peer communication with external device without intervention of host |
US17/343,215 US11816055B2 (en) | 2017-11-17 | 2021-06-09 | Storage device performing peer-to-peer communication with external device without intervention of host |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20170154281 | 2017-11-17 | ||
KR1020170154281 | 2017-11-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190056951A true KR20190056951A (en) | 2019-05-27 |
KR102527832B1 KR102527832B1 (en) | 2023-05-03 |
Family
ID=66679534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180079419A KR102527832B1 (en) | 2017-11-17 | 2018-07-09 | Storage device performing peer-to-peer communication with external device without intervention of host |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102527832B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586559B2 (en) | 2019-12-03 | 2023-02-21 | Samsung Electronics Co., Ltd. | Storage device, nonvolatile memory system including memory controller, and operating method of the storage device for independently performing a relink to a host device |
WO2023149914A1 (en) * | 2022-02-02 | 2023-08-10 | Western Digital Technologies, Inc. | Dynamic port allocation in pcie bifurcation system |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170091127A (en) * | 2014-11-28 | 2017-08-08 | 지멘스 메탈스 테크놀로지스 베르뫼겐스베르발퉁스 게엠베하 | Method for casting metal strip with crown control |
-
2018
- 2018-07-09 KR KR1020180079419A patent/KR102527832B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170091127A (en) * | 2014-11-28 | 2017-08-08 | 지멘스 메탈스 테크놀로지스 베르뫼겐스베르발퉁스 게엠베하 | Method for casting metal strip with crown control |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11586559B2 (en) | 2019-12-03 | 2023-02-21 | Samsung Electronics Co., Ltd. | Storage device, nonvolatile memory system including memory controller, and operating method of the storage device for independently performing a relink to a host device |
US11947466B2 (en) | 2019-12-03 | 2024-04-02 | Samsung Electronics Co., Ltd. | Storage device, nonvolatile memory system including memory controller, and operating method of the storage device |
WO2023149914A1 (en) * | 2022-02-02 | 2023-08-10 | Western Digital Technologies, Inc. | Dynamic port allocation in pcie bifurcation system |
US11734207B1 (en) | 2022-02-02 | 2023-08-22 | Western Digital Technologies, Inc. | Dynamic port allocation in PCIe bifurcation system |
Also Published As
Publication number | Publication date |
---|---|
KR102527832B1 (en) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109799952B (en) | Storage device performing peer-to-peer communication with external device without host intervention | |
KR102542562B1 (en) | Modular non-volatile flash memory blade | |
CN107643996B (en) | PCI EXPRESS-based dual port memory cartridge including single port memory controller | |
TWI744238B (en) | Peripheral component interconnect express card | |
US9887008B2 (en) | DDR4-SSD dual-port DIMM device | |
US11157200B2 (en) | Communicating over portions of a communication medium | |
US9442877B2 (en) | Storage device | |
KR101839027B1 (en) | Configurable Interconnection System | |
KR20200010139A (en) | Storage system and method of selecting operating mode for a storage device | |
KR102705791B1 (en) | Mechanism to autonomously manage ssds in an array | |
US12041124B2 (en) | Methods and apparatus for peer-to-peer data channels for storage devices | |
US20240357010A1 (en) | Server system | |
KR102527832B1 (en) | Storage device performing peer-to-peer communication with external device without intervention of host | |
JP2014154157A (en) | Chained, scalable storage devices | |
US10809926B2 (en) | Server system | |
US12111763B2 (en) | Apparatus and method for distributing work to a plurality of compute express link devices | |
KR102156124B1 (en) | Information processing apparatus and storage device | |
US20240071464A1 (en) | Dynamic Address Scramble | |
US20240296136A1 (en) | Cxl dram switch fabric | |
US20240006791A1 (en) | Cxl memory expansion riser card | |
KR20240013252A (en) | A storage device that performs data migration operations with an external storage deivice | |
CN117421268A (en) | Interconnection system, equipment and network | |
KR20180080002A (en) | Method of designing topology for network on chip |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |