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

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 PDF

Info

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
Application number
KR1020180079419A
Other languages
Korean (ko)
Other versions
KR102527832B1 (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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to DE102018125297.8A priority Critical patent/DE102018125297A1/en
Priority to US16/170,264 priority patent/US10628364B2/en
Priority to CN201811366495.4A priority patent/CN109799952B/en
Publication of KR20190056951A publication Critical patent/KR20190056951A/en
Priority to US16/853,373 priority patent/US11055251B2/en
Priority to US17/343,215 priority patent/US11816055B2/en
Application granted granted Critical
Publication of KR102527832B1 publication Critical patent/KR102527832B1/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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

The present invention provides a storage device including a field programmable gate array (FPGA) board and a storage controller. The FPGA board is connected to a first port of the storage device. A first interface circuit of the storage controller is connected to the FPGA board and a second interface circuit of the storage controller is connected to a second port of the storage device. At least one of the first port and the second port is connected to another storage device outside the storage device. When the first port is connected to another storage device, the FPGA board provides a path for transferring data in a peer-to-peer manner between the storage controller and another storage device without intervention of a host.

Description

호스트의 개입 없이 외부 장치와 피어-투-피어 통신을 수행하는 스토리지 장치 {STORAGE DEVICE PERFORMING PEER-TO-PEER COMMUNICATION WITH EXTERNAL DEVICE WITHOUT INTERVENTION OF HOST}TECHNICAL FIELD [0001] The present invention relates to a storage device that performs peer-to-peer communication with an external device without intervention of a host.

본 개시는 전자 장치에 관한 것으로, 좀 더 구체적으로는 데이터를 저장하고 출력하는 스토리지 장치의 구성들 및 동작들에 관한 것이다.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 electronic system 1000 in accordance with some embodiments.

전자 시스템(1000)은 메인 프로세서(1101), 워킹 메모리(1200), 스토리지 시스템(1300), 통신 블록(1400), 유저 인터페이스(1500), 및 버스(1600)를 포함할 수 있다. 예로서, 전자 시스템(1000)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console), 워크스테이션, 하나 이상의 서버, 전기 자동차, 가전기기, 의료기기 등과 같은 전자 장치들 중 하나일 수 있다.The electronic system 1000 may include a main processor 1101, a working memory 1200, a storage system 1300, a communication block 1400, a user interface 1500, and a bus 1600. By way of example, electronic system 1000 may be a desktop computer, a laptop computer, a tablet computer, a smart phone, a wearable device, a video game console, a workstation, one or more servers, an electric vehicle, Or the like.

메인 프로세서(1101)는 전자 시스템(1000)의 전반적인 동작들을 제어할 수 있다. 예로서, 메인 프로세서(1101)는 하나 이상의 프로세서 코어를 포함하는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서로 구현될 수 있다.The main processor 1101 can control the overall operations of the electronic system 1000. By way of example, main processor 1101 may be implemented as a general purpose processor, a dedicated processor, or an application processor, including one or more processor cores.

워킹 메모리(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 working memory 1200 may store data used in the operation of the electronic system 1000. By way of example, the working memory 1200 may temporarily store data to be processed or to be processed by the main processor 1101. [ For example, the working memory 1200 may be a volatile memory such as SRAM (Static Random Access Memory), DRAM (Dynamic RAM), SDRAM (Synchronous RAM), and / ), ReRAM (Resistive RAM), FRAM (Ferro-electric RAM), and the like.

스토리지 시스템(1300)은 하나 이상의 스토리지 장치를 포함할 수 있다. 예로서, 스토리지 시스템(1300)은 스토리지 장치들(1300a, 1300b, 1300c)을 포함할 수 있다. 도 1은 3개의 스토리지 장치들(1300a, 1300b, 1300c)을 보여주지만, 스토리지 시스템(1300)에 포함되는 스토리지 장치들의 개수는 전자 시스템(1000)의 요구사항(Requirement)에 적합하도록 다양하게 변경 또는 수정될 수 있다.The storage system 1300 may include one or more storage devices. By way of example, the storage system 1300 may include storage devices 1300a, 1300b, and 1300c. Although FIG. 1 illustrates three storage devices 1300a, 1300b, and 1300c, the number of storage devices included in the storage system 1300 may vary or be varied to suit the requirements of the electronic system 1000 Can be modified.

각 스토리지 장치(1300a, 1300b, 1300c)는 전력 공급에 관계없이 데이터를 저장할 수 있다. 예로서, 각 스토리지 장치(1300a, 1300b, 1300c)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다. 예로서, 각 스토리지 장치(1300a, 1300b, 1300c)는 SSD(Solid State Drive), 카드 스토리지, 임베디드(Embedded) 스토리지 등과 같은 스토리지 매체를 포함할 수 있다.Each storage device 1300a, 1300b, and 1300c can store data regardless of power supply. By way of example, each storage device 1300a, 1300b, 1300c may include a non-volatile memory such as flash memory, PRAM, MRAM, ReRAM, FRAM, By way of example, each storage device 1300a, 1300b, 1300c may include a storage medium such as a solid state drive (SSD), card storage, embedded storage, and the like.

통신 블록(1400)은 전자 시스템(1000)의 외부 장치/시스템과 통신하기 위해 다양한 무선/유선 통신 규약 중 적어도 하나를 지원할 수 있다. 유저 인터페이스(1500)는 사용자와 전자 시스템(1000) 사이의 통신을 중재하기 위해 다양한 입력/출력 인터페이스를 포함할 수 있다.Communication block 1400 may support at least one of various wireless / wired communication protocols for communicating with an external device / system of electronic system 1000. The user interface 1500 may include various input / output interfaces to mediate communication between the user and the electronic system 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 bus 1600 may provide a communication path between the components of the electronic system 1000. The components of the electronic system 1000 may exchange data according to the bus format of the bus 1600. For example, the bus format may be a USB (Universal Serial Bus), a Small Computer System Interface (SCSI), a Peripheral Component Interconnect Express (PCIe), a Serial Advanced Technology Attachment (SATA), a Serial Attached SCSI (SAS), a Nonvolatile Memory Express , UFS (Universal Flash Storage), DDR (Double Data Rate), and LPDDR (Low Power DDR).

아래에서, PCIe 규약과 관련되는 예시적인 구성들 및 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 실시 예들이 설명될 것이다. 그러나, 본 개시의 실시 예들은 PCIe 규약 외의 다른 인터페이스 규약과 관련하여 채용되도록 다양하게 변경 또는 수정될 수 있다. 나아가, 본 개시의 실시 예들은 스토리지 장치들(1300a, 1300b, 1300c) 뿐만 아니라, 데이터를 저장하고 출력할 수 있는 어떤 전자 장치(예컨대, 워킹 메모리(1200))에서든 채용될 수 있다. 아래의 설명들은 더 나은 이해를 가능하게 하기 위해 제공되고, 본 발명을 한정하도록 의도되지 않는다.In the following, embodiments related to the exemplary configurations and storage devices 1300a, 1300b, and 1300c related to the PCIe protocol will be described. However, the embodiments of the present disclosure may be variously modified or modified so as to be employed in connection with other interface protocols other than the PCIe protocol. Furthermore, embodiments of the present disclosure may be employed in any electronic device (e.g., working memory 1200) capable of storing and outputting data, as well as storage devices 1300a, 1300b, and 1300c. The following description is provided to enable a better understanding, and is not intended to limit the invention.

도 2는 도 1의 스토리지 장치(1300a)와 관련되는 예시적인 구현을 보여주는 개념도이다.FIG. 2 is a conceptual diagram illustrating an exemplary implementation associated with the storage device 1300a of FIG.

몇몇 실시 예에서, 스토리지 장치(1300a)는 PCB(Printed Circuit Board)(1307a)를 포함할 수 있다. 스토리지 장치(1300a)는 PCB(1307a) 상에 실장 또는 장착되는 하나 이상의 칩 또는 패키지를 포함할 수 있다. 예로서, 메모리 장치들(1310a) 및 스토리지 컨트롤러(1330a)가 PCB(1307a) 상에 실장 또는 장착될 수 있다.In some embodiments, the storage device 1300a may include a printed circuit board (PCB) 1307a. The storage device 1300a may include one or more chips or packages mounted or mounted on the PCB 1307a. As an example, memory devices 1310a and storage controller 1330a may be mounted or mounted on PCB 1307a.

스토리지 컨트롤러(1330a)는 스토리지 장치(1300a)의 전반적인 동작들을 제어하고 관리할 수 있다. 이를 위해, 스토리지 컨트롤러(1330a)는 의도된 동작들을 수행하도록 구성되는 하드웨어 회로(예컨대, 아날로그 회로, 논리 회로 등)를 포함할 수 있다. 추가로 또는 대안적으로, 스토리지 컨트롤러(1330a)는 의도된 동작들을 수행하기 위한 프로그램 코드의 명령어 집합을 실행하도록 구성되는 하나 이상의 프로세서 코어를 포함할 수 있다.The storage controller 1330a can control and manage the overall operations of the storage device 1300a. To this end, the storage controller 1330a may include hardware circuitry (e.g., analog circuitry, logic circuitry, etc.) configured to perform the intended operations. Additionally or alternatively, the storage controller 1330a may include one or more processor cores configured to execute a set of instructions of the program code for performing the intended operations.

메모리 장치들(1310a)은 하나 이상의 유형의 메모리들을 포함할 수 있다. 메모리 장치들(1310a)은 스토리지 컨트롤러(1330a)의 제어에 따라 데이터를 저장하거나 출력할 수 있다. 예로서, 메모리 장치들(1310a)은 PCB(1307a) 상에 인쇄된 도전성 패턴(Conductive Pattern)들을 통해 스토리지 컨트롤러(1330a)와 통신할 수 있다.Memory devices 1310a may comprise one or more types of memories. The memory devices 1310a may store or output data under the control of the storage controller 1330a. By way of example, memory devices 1310a may communicate with storage controller 1330a via conductive patterns printed on PCB 1307a.

몇몇 실시 예에서, 스토리지 장치(1300a)는 듀얼-포트(Dual-port)를 통해 스토리지 장치(1300a) 외부의 다른 장치와 통신하도록 구성될 수 있다. 예로서, 스토리지 장치(1300a)의 듀얼-포트는 제 1 포트 및 제 2 포트를 포함할 수 있고, 스토리지 장치(1300a)는 제 1 포트 및 제 2 포트를 통해 다른 장치로부터 데이터를 수신하거나 다른 장치로 데이터를 출력할 수 있다. 예로서, 스토리지 장치(1300a)가 SSD인 경우, 스토리지 장치(1300a)는 듀얼-포트 SSD로 불릴 수 있다.In some embodiments, the storage device 1300a may be configured to communicate with other devices external to the storage device 1300a via a dual-port. By way of example, the dual-port of the storage device 1300a may include a first port and a second port, and the storage device 1300a may receive data from another device via the first port and the second port, As shown in FIG. By way of example, if storage device 1300a is an SSD, storage device 1300a may be referred to as a dual-port SSD.

예로서, 스토리지 장치(1300a)는 듀얼-포트에 대응하는 커넥터들(1390a, 1395a)을 포함할 수 있다. 커넥터들(1390a, 1395a)은 도전성 물질로 구현되는 핀들 또는 패턴들(1391a, 1396a)을 포함할 수 있다. 예로서, 커넥터들(1390a, 1395a) 각각은 직접적으로 또는 간접적으로(예컨대, 도선, 케이블 등을 통해) 다른 장치로 연결될 수 있다. 이 경우, 스토리지 장치(1300a)는 핀들 또는 패턴들(1391a, 1396a)을 통해 다른 장치와 데이터를 교환할 수 있다.By way of example, storage device 1300a may include connectors 1390a, 1395a corresponding to a dual-port. The connectors 1390a, 1395a may include pins or patterns 1391a, 1396a embodied in a conductive material. By way of example, each of the connectors 1390a, 1395a may be connected to another device, either directly or indirectly (e.g., via leads, cables, etc.). In this case, the storage device 1300a can exchange data with other devices via pins or patterns 1391a, 1396a.

예로서, 커넥터(1390a) 및 핀들 또는 패턴들(1391a)은 제 1 포트에 대응할 수 있고, 커넥터(1395a) 및 핀들 또는 패턴들(1396a)은 제 2 포트에 대응할 수 있다. 예로서, 스토리지 컨트롤러(1330a)는 PCB(1307a) 상에 인쇄된 도전성 패턴들을 통해 핀들 또는 패턴들(1391a, 1396a)로 연결될 수 있다. 따라서, 스토리지 컨트롤러(1330a)는 제 1 포트 및 제 2 포트를 통해 데이터를 출력하거나 수신할 수 있다.By way of example, connector 1390a and fins or patterns 1391a may correspond to a first port, and connector 1395a and fins or patterns 1396a may correspond to a second port. By way of example, the storage controller 1330a may be connected to the pins or patterns 1391a, 1396a via conductive patterns printed on the PCB 1307a. Accordingly, the storage controller 1330a can output or receive data via the first port and the second port.

제 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 memory devices 1310a, the placement of memory devices 1310a and storage controller 1330a, the location and shape of connectors 1390a, 1395a, pins or patterns The positions and shapes of the light emitting elements 1391a and 1396a, and the like) may be variously modified or modified so as to be different from those shown in Fig. The exemplary implementation of FIG. 2 is provided to enable a better understanding, and is not intended to limit the present invention. The storage devices 1300b and 1300c may be configured to be the same as or similar to the storage device 1300a.

도 3은 도 1의 전자 시스템(1000)과 관련되는 예시적인 구성을 보여주는 블록도이다.3 is a block diagram illustrating an exemplary configuration associated with the electronic system 1000 of FIG.

예로서, 전자 시스템(1000)은 구성(1000a)을 포함할 수 있다. 구성(1000a)은 메인 프로세서(1101), 루트 컴플렉스(Root Complex)(1003), 스위치(1005), 워킹 메모리(1200), 및 스토리지 장치들(1300a, 1300b)을 포함할 수 있다.By way of example, electronic system 1000 may include configuration 1000a. The configuration 1000a may include a main processor 1101, a root complex 1003, a switch 1005, a working memory 1200, and storage devices 1300a and 1300b.

루트 컴플렉스(1003)는 전자 시스템(1000)의 구성 요소들 사이에서 데이터 흐름을 관리할 수 있다. 예로서, 루트 컴플렉스(1003)는 데이터 경로를 제어하거나, 데이터 전달을 스케줄링하거나, 통신 충돌을 해소할 수 있다. 예로서, 메인 프로세서(1101), 워킹 메모리(1200), 및 스토리지 장치들(1300a, 1300b)이 루트 컴플렉스(1003)로 연결될 수 있고, 루트 컴플렉스(1003)를 통해 서로 통신하며 데이터를 교환할 수 있다.The root complex 1003 may manage data flow among the components of the electronic system 1000. By way of example, the root complex 1003 may control the data path, schedule data delivery, or resolve communication conflicts. By way of example, the main processor 1101, the working memory 1200, and the storage devices 1300a and 1300b can be connected to the root complex 1003, communicate with each other via the root complex 1003, have.

몇몇 경우, 스위치(1005)가 루트 컴플렉스(1003)로 더 연결될 수 있고, 스토리지 장치들(1300a, 1300b)은 스위치(1005)를 통해 루트 컴플렉스(1003)로 연결될 수 있다. 예로서, 스위치(1005)는 PCIe 스위치 또는 다른 유형의 스위치를 포함할 수 있다. 스위치(1005)는 루트 컴플렉스(1003)와 스토리지 장치들(1300a, 1300b) 사이의 데이터 경로를 제어할 수 있다. 루트 컴플렉스(1003) 및 스위치(1005)는 데이터 제어 및 데이터 전달을 위한 하드웨어 회로로 구현될 수 있다.In some cases, switch 1005 may be further connected to root complex 1003 and storage devices 1300a and 1300b may be connected to root complex 1003 via switch 1005. By way of example, switch 1005 may include a PCIe switch or other type of switch. The switch 1005 can control the data path between the root complex 1003 and the storage devices 1300a and 1300b. The root complex 1003 and the switch 1005 may be implemented as hardware circuits for data control and data transfer.

몇몇 예에서, 스토리지 장치(1300a)는 듀얼-포트를 통해 스위치(1005)로 연결될 수 있다. 예로서, 스토리지 장치(1300a)의 제 1 포트는 스토리지 장치(1300a)와 스위치(1005) 사이에 데이터 경로(P11)를 제공할 수 있고, 스토리지 장치(1300a)의 제 2 포트는 스토리지 장치(1300a)와 스위치(1005) 사이에 데이터 경로(P12)를 제공할 수 있다. 유사하게, 스토리지 장치(1300b) 역시 듀얼-포트를 통해 스위치(1005)로 연결될 수 있다. 도 3에는 도시되지 않았으나, 스토리지 장치(1300c) 역시 듀얼-포트를 통해 스위치(1005)로 연결될 수 있다.In some instances, storage device 1300a may be coupled to switch 1005 via a dual-port. The first port of the storage device 1300a may provide a data path P11 between the storage device 1300a and the switch 1005 and the second port of the storage device 1300a may provide the data path P11 between the storage device 1300a And a switch 1005. The switch 1005 may be connected to the switch 1005 via a data path P12. Similarly, storage device 1300b may also be coupled to switch 1005 via a dual-port. Although not shown in FIG. 3, the storage device 1300c may also be coupled to the switch 1005 via a dual-port.

메인 프로세서(1101)는 루트 컴플렉스(1003) 및 스위치(1005)를 통해 스토리지 장치들(1300a, 1300b)과 통신할 수 있다. 본 개시에서, 스토리지 장치들(1300a, 1300b)과 같은 전자 시스템(1000)의 구성 요소로 접근할 수 있는 객체는 “호스트”로 불릴 수 있다. 메인 프로세서(1101)는 호스트로서 동작할 수 있는 객체들의 한 예일 수 있으나, 본 발명은 여기에 한정되지 않는다.The main processor 1101 can communicate with the storage devices 1300a and 1300b via the root complex 1003 and the switch 1005. [ In this disclosure, an object capable of accessing components of electronic system 1000, such as storage devices 1300a, 1300b, may be referred to as a " host ". The main processor 1101 may be an example of objects that can operate as a host, but the present invention is not limited thereto.

각 스토리지 장치(1300a, 1300b)가 듀얼-포트를 통해 메인 프로세서(1101)와 통신하는 경우, 신뢰성이 향상될 수 있다. 예로서, 스토리지 장치(1300a)의 하나의 포트가 장애를 갖거나(Failure) 비활성화(Disable)되더라도, 다른 하나의 포트가 통신을 지원할 수 있다.Reliability can be improved if each storage device 1300a, 1300b communicates with the main processor 1101 via a dual-port. For example, even if one port of the storage device 1300a fails or is disabled, another port can support communication.

도 3의 예에서, 스토리지 장치들(1300a, 1300b)은 스위치(1005)를 통해 피어-투-피어(Peer-to-peer) 방식으로 서로 통신할 수 있다. 이 경우, 호스트(예컨대, 메인 프로세서(1101))가 스토리지 장치들(1300a, 1300b) 사이의 통신에 개입할 수 있다.In the example of FIG. 3, the storage devices 1300a and 1300b can communicate with each other in a peer-to-peer manner via the switch 1005. [ In this case, a host (e.g., main processor 1101) may intervene in communication between storage devices 1300a and 1300b.

예로서, 데이터가 스토리지 장치(1300a)로부터 스위치(1005)를 통해 스토리지 장치(1300b)로 전달되는 경우, 메인 프로세서(1101)는 스토리지 장치(1300b)로의 데이터 경로를 제어하고 메모리 어드레스를 맵핑하는 데에 개입할 수 있다. 이를 위해, 메인 프로세서(1101)는 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터를 가공하는 데에 개입할 수 있다.By way of example, when data is transferred from storage device 1300a via switch 1005 to storage device 1300b, main processor 1101 controls the data path to storage device 1300b and maps the memory address . ≪ / RTI > To this end, the main processor 1101 may intervene in processing data exchanged between the storage devices 1300a, 1300b.

한편, 각 스토리지 장치(1300a, 1300b)의 용량이 큰 경우, 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터의 양이 많을 수 있다. 또한, 많은 양의 데이터를 관리하기 위해 각 스토리지 장치(1300a, 1300b)의 성능이 높을 수 있다. 이 경우, 호스트가 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터를 가공하는 데에 개입함에 따라, 호스트의 작업부하(Workload)가 심해질 수 있다.On the other hand, when the capacity of each of the storage devices 1300a and 1300b is large, the amount of data exchanged between the storage devices 1300a and 1300b may be large. In addition, the performance of each of the storage devices 1300a and 1300b may be high to manage a large amount of data. In this case, as the host intervenes in processing the data exchanged between the storage devices 1300a and 1300b, the workload of the host may become worse.

도 4는 도 1의 전자 시스템(1000)과 관련되는 예시적인 구성을 보여주는 블록도이다.4 is a block diagram illustrating an exemplary configuration associated with the electronic system 1000 of FIG.

예로서, 전자 시스템(1000)은 구성(1000b)을 포함할 수 있다. 구성(1000b)은 메인 프로세서(1101), 루트 컴플렉스(1003), 스위치(1005), 워킹 메모리(1200), 및 스토리지 장치들(1300a, 1300b)을 포함할 수 있다.By way of example, electronic system 1000 may include configuration 1000b. The configuration 1000b may include a main processor 1101, a root complex 1003, a switch 1005, a working memory 1200, and storage devices 1300a and 1300b.

몇몇 실시 예에 따른 구성(1000b)에서, 스토리지 장치(1300a)의 제 1 포트 및 제 2 포트 모두가 스위치(1005)로 연결되지는 않을 수 있다. 대신, 스토리지 장치(1300a)의 제 1 포트는 스토리지 장치(1300b)로 연결될 수 있고, 스토리지 장치(1300a)의 제 2 포트는 스위치(1005)로 연결될 수 있다.In the configuration 1000b according to some embodiments, neither the first port nor the second port of the storage device 1300a may be connected to the switch 1005. [ Instead, the first port of the storage device 1300a may be coupled to the storage device 1300b, and the second port of the storage device 1300a may be coupled to the switch 1005. [

예로서, 스토리지 장치(1300a)의 제 2 포트는 스토리지 장치(1300a)와 스위치(1005) 사이에 데이터 경로(P21)를 제공할 수 있고, 스토리지 장치(1300a)의 제 1 포트는 스토리지 장치들(1300a, 1300b) 사이에 데이터 경로(P22)를 제공할 수 있다. 스토리지 장치(1300a)는 데이터 경로(P21), 스위치(1005), 및 루트 컴플렉스(1003)를 통해 메인 프로세서(1101)와 통신할 수 있다.By way of example, a second port of the storage device 1300a may provide a data path P21 between the storage device 1300a and the switch 1005, and a first port of the storage device 1300a may be a storage device 1300a, and 1300b. Storage device 1300a may communicate with main processor 1101 via data path P21, switch 1005, and root complex 1003.

유사하게, 스토리지 장치(1300b)의 듀얼-포트의 하나의 포트는 스토리지 장치(1300a)로 연결될 수 있다. 스토리지 장치(1300a)는 데이터 경로(P22)를 통해 스토리지 장치(1300b)와 피어-투-피어 방식으로 통신할 수 있다. 도 4에는 도시되지 않았으나, 스토리지 장치(1300c) 역시 피어-투-피어 통신을 위해 듀얼-포트의 하나의 포트를 통해 스토리지 장치(1300a 또는 1300b)로 연결될 수 있다.Similarly, one port of the dual-port of storage device 1300b may be coupled to storage device 1300a. Storage device 1300a may communicate with storage device 1300b in a peer-to-peer manner via data path P22. Although not shown in FIG. 4, the storage device 1300c may also be connected to the storage device 1300a or 1300b via one port of a dual-port for peer-to-peer communication.

스토리지 장치(1300b)의 듀얼-포트의 다른 하나의 포트는 스위치(1005)로 연결되거나 연결되지 않을 수 있다. 스토리지 장치(1300b)가 스위치(1005)로 연결되지 않는 경우, 스토리지 장치(1300b)는 스토리지 장치(1300a)를 통해 메인 프로세서(1101)와 통신할 수 있다. 스토리지 장치(1300b)가 스위치(1005)로 연결되는 경우, 스토리지 장치(1300b)는 스위치(1005)를 통해 메인 프로세서(1101)와 통신할 수 있다.The other port of the dual-port of the storage device 1300b may or may not be connected to the switch 1005. If the storage device 1300b is not connected to the switch 1005, the storage device 1300b can communicate with the main processor 1101 via the storage device 1300a. When the storage device 1300b is connected to the switch 1005, the storage device 1300b can communicate with the main processor 1101 via the switch 1005. [

구성(1000b)에서, 스토리지 장치들(1300a, 1300b) 사이의 통신에는 스위치(1005)가 요구되지 않을 수 있다. 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터는 스토리지 장치(1300a) 및/또는 스토리지 장치(1300b)에 의해 가공될 수 있다. 호스트(예컨대, 메인 프로세서(1101))는 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터를 가공하는 데에 개입하지 않을 수 있다(또는 최소한으로만 개입할 수 있다).In configuration 1000b, switch 1005 may not be required for communication between storage devices 1300a and 1300b. Data exchanged between the storage devices 1300a and 1300b may be processed by the storage device 1300a and / or the storage device 1300b. The host (e.g., main processor 1101) may not intervene (or at least intervene) in processing data exchanged between storage devices 1300a, 1300b.

구성(1000a)에서 호스트에 수행되었던 데이터 가공의 일부 또는 전부는 구성(1000b)에서 스토리지 장치들(1300a, 1300b)에 의해 수행될 수 있다. 따라서, 구성(1000b)에서, 스토리지 장치들(1300a, 1300b) 사이에서 교환되는 데이터의 양이 증가하고 스토리지 장치들(1300a, 1300b)의 성능이 높아지더라도, 호스트의 작업부하가 현저하게 경감될 수 있다. 이는 전체 전자 시스템(1000)의 설계 비용 및 관리 비용을 감소시킬 수 있다.Some or all of the data manipulation performed on the host in configuration 1000a may be performed by storage devices 1300a and 1300b in configuration 1000b. Thus, in configuration 1000b, even if the amount of data exchanged between storage devices 1300a, 1300b increases and the performance of storage devices 1300a, 1300b increases, the workload of the host can be significantly reduced have. This can reduce the design and management costs of the entire electronic system 1000.

도 4는 스토리지 장치(1300a)가 스위치(1005)로 연결되는 것을 보여준다. 몇몇 실시 예에서, 스토리지 장치(1300a)는 스위치(1005) 없이 루트 컴플렉스(1003)로 연결될 수 있다. 전자 시스템(1000)은 구성(1000b)과 상이하도록 다양하게 변경 또는 수정될 수 있다.4 shows that the storage device 1300a is connected to the switch 1005. Fig. In some embodiments, storage device 1300a may be coupled to root complex 1003 without switch 1005. [ The electronic system 1000 can be variously modified or modified to be different from the configuration 1000b.

도 5는 도 1의 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 예시적인 구성을 보여주는 블록도이다.FIG. 5 is a block diagram illustrating an exemplary configuration associated with the storage devices 1300a, 1300b, and 1300c of FIG.

몇몇 실시 예에서, 스토리지 장치들(1300a, 1300b, 1300c)은 각각 스토리지 장치들(1301a, 1301b, 1301c)을 포함할 수 있다. 도 4를 참조하여 설명된 것들과 유사하게, 스토리지 장치들(1301a, 1301b, 1301c)은 피어-투-피어 방식으로 통신하기 위해 루트 컴플렉스(1003) 또는 스위치(1005) 없이 서로 연결될 수 있다. 이를 위해, 스토리지 장치들(1301a, 1301b, 1301c) 각각은 듀얼-포트의 구조로 구현될 수 있다.In some embodiments, the storage devices 1300a, 1300b, and 1300c may include storage devices 1301a, 1301b, and 1301c, respectively. Similar to those described with reference to Fig. 4, the storage devices 1301a, 1301b, 1301c may be interconnected without a root complex 1003 or switch 1005 to communicate in a peer-to-peer manner. To this end, each of the storage devices 1301a, 1301b, and 1301c may be implemented as a dual-port structure.

도 5는 스토리지 장치들(1301a, 1301c)이 메인 프로세서(1101)로 직접 연결되는 것을 보여준다. 그러나, 몇몇 실시 예에서, 루트 컴플렉스(1003) 및/또는 스위치(1005)가 스토리지 장치들(1301a, 1301c)과 메인 프로세서(1101) 사이에 제공될 수 있다. 본 개시에서, 메인 프로세서(1101)로의 연결은 직접적인 및 간접적인 연결을 포함할 수 있다.FIG. 5 shows that the storage devices 1301a and 1301c are directly connected to the main processor 1101. FIG. However, in some embodiments, a root complex 1003 and / or a switch 1005 may be provided between the storage devices 1301a and 1301c and the main processor 1101. [ In this disclosure, the connection to the main processor 1101 may include direct and indirect connections.

스토리지 장치(1301a)는 하나 이상의 메모리 장치(1310a), 스토리지 컨트롤러(1331a), 및 피어-투-피어 관리기(1350a)를 포함할 수 있다. 스토리지 컨트롤러(1331a)는 스토리지 컨트롤러(1330a)에 대응할 수 있다. 스토리지 컨트롤러(1331a)는 스토리지 장치(1301a)의 전반적인 동작들을 제어하고 관리할 수 있다. 메모리 장치(1310a)는 스토리지 컨트롤러(1331a)의 제어에 따라 데이터를 저장하거나 출력할 수 있다.Storage device 1301a may include one or more memory devices 1310a, a storage controller 1331a, and a peer-to-peer manager 1350a. The storage controller 1331a may correspond to the storage controller 1330a. The storage controller 1331a can control and manage the overall operations of the storage device 1301a. The memory device 1310a can store or output data under the control of the storage controller 1331a.

스토리지 컨트롤러(1331a)는 인터페이스 회로들(1335a, 1336a)을 포함할 수 있다. 인터페이스 회로들(1335a, 1336a) 각각은 스토리지 컨트롤러(1331a)가 스토리지 컨트롤러(1331a) 외부의 구성 요소와 통신하도록 만들기 위해 데이터, 신호, 및/또는 패킷을 송신/수신하고 처리하도록 구성되는 물리 계층 및/또는 논리 계층을 포함할 수 있다. 인터페이스 회로들(1335a, 1336a) 각각은 스토리지 컨트롤러(1331a)와 외부 구성 요소 사이의 통신을 처리하도록 구성되는 하드웨어 회로를 포함할 수 있다.The storage controller 1331a may include interface circuits 1335a and 1336a. Each of the interface circuits 1335a and 1336a includes a physical layer configured to transmit / receive and process data, signals, and / or packets to cause the storage controller 1331a to communicate with components external to the storage controller 1331a, / ≪ / RTI > logic layer. Each of the interface circuits 1335a, 1336a may include hardware circuitry configured to handle communications between the storage controller 1331a and the external components.

예로서, 인터페이스 회로(1335a)는 스토리지 장치(1301a)의 제 2 포트로 연결될 수 있다. 스토리지 장치(1301a)의 제 2 포트는 스토리지 컨트롤러(1331a)와 메인 프로세서(1101) 사이에 데이터 경로(P21a)를 제공할 수 있다. 스토리지 장치(1301a)는 인터페이스 회로(1335a), 데이터 경로(P21a), 및 제 2 포트를 통해 메인 프로세서(1101)와 통신할 수 있다.By way of example, interface circuit 1335a may be coupled to a second port of storage device 1301a. A second port of the storage device 1301a may provide a data path P21a between the storage controller 1331a and the main processor 1101. [ Storage device 1301a may communicate with main processor 1101 via interface circuitry 1335a, data path P21a, and a second port.

예로서, 인터페이스 회로(1336a)는 피어-투-피어 관리기(1350a)로 연결될 수 있다. 데이터 경로(P23a)가 인터페이스 회로(1336a)와 피어-투-피어 관리기(1350a) 사이에 제공될 수 있다. 스토리지 컨트롤러(1331a)는 인터페이스 회로(1336a) 및 데이터 경로(P23a)를 통해 피어-투-피어 관리기(1350a)와 통신할 수 있다.By way of example, interface circuitry 1336a may be coupled to peer-to-peer manager 1350a. A data path P23a may be provided between the interface circuit 1336a and the peer-to-peer manager 1350a. Storage controller 1331a may communicate with peer-to-peer manager 1350a via interface circuit 1336a and data path P23a.

피어-투-피어 관리기(1350a)는 스토리지 장치(1301a)의 제 1 포트로 연결될 수 있다. 피어-투-피어 관리기(1350a)는 제 1 포트와 스토리지 컨트롤러(1331a) 사이에 놓일 수 있다. 스토리지 컨트롤러(1331a)는 스토리지 장치(1301a)의 제 1 포트와 스토리지 장치(1301a)의 제 2 포트 사이에 놓일 수 있다.The peer-to-peer manager 1350a may be coupled to a first port of the storage device 1301a. The peer-to-peer manager 1350a may be located between the first port and the storage controller 1331a. The storage controller 1331a may be located between a first port of the storage device 1301a and a second port of the storage device 1301a.

스토리지 장치(1301a)는 제 1 포트를 통해 스토리지 장치(1301a) 외부의 다른 장치(예컨대, 스토리지 장치(1301b))로 연결될 수 있다. 스토리지 장치(1301a)의 제 1 포트는 피어-투-피어 관리기(1350a)와 스토리지 장치(1301b) 사이에 데이터 경로(P22a)를 제공할 수 있다. 스토리지 장치(1301a)는 데이터 경로(P22a) 및 제 1 포트를 통해 스토리지 장치(1301b)와 통신할 수 있다.The storage device 1301a may be connected to another device (e.g., storage device 1301b) outside the storage device 1301a via the first port. A first port of the storage device 1301a may provide a data path P22a between the peer-to-peer manager 1350a and the storage device 1301b. Storage device 1301a may communicate with storage device 1301b via data path P22a and a first port.

피어-투-피어 관리기(1350a)는 내부 스위치(1351a) 및 연산 로직 회로(1352a)를 포함할 수 있다. 내부 스위치(1351a) 및 연산 로직 회로(1352a)는 피어-투-피어 관리기(1350a) 내부의 버스를 통해 서로 통신할 수 있다. 내부 스위치(1351a) 및 연산 로직 회로(1352a)의 동작들에 따라, 피어-투-피어 관리기(1350a)는 스토리지 컨트롤러(1331a)와 스토리지 장치(1301b) 사이에서 피어-투-피어 방식으로 데이터를 전달하기 위한 경로(예컨대, 데이터 경로들(P22a, P23a))를 제공할 수 있다.Peer-to-peer manager 1350a may include internal switch 1351a and arithmetic logic circuit 1352a. Internal switch 1351a and arithmetic logic circuitry 1352a may communicate with each other via a bus within peer-to-peer manager 1350a. Depending on the operations of the internal switch 1351a and the arithmetic logic circuit 1352a, the peer-to-peer manager 1350a may exchange data in a peer-to-peer manner between the storage controller 1331a and the storage device 1301b (E. G., Data paths P22a and P23a) for transmission.

내부 스위치(1351a)는 제 1 포트를 통해 스토리지 장치(1301a)로부터 출력되는 데이터 및 제 1 포트를 통해 스토리지 장치(1301a)에 의해 수신되는 데이터의 흐름을 관리할 수 있다. 따라서, 피어-투-피어 관리기(1350a)는, 스토리지 컨트롤러(1331a)와 교환되는 데이터에 기초하여, 제 1 포트를 통해 스토리지 장치(1301b)로 데이터를 출력하거나 제 1 포트를 통해 스토리지 장치(1301b)로부터 데이터를 수신할 수 있다.The internal switch 1351a can manage the data output from the storage device 1301a through the first port and the flow of data received by the storage device 1301a through the first port. Thus, the peer-to-peer manager 1350a can output data to the storage device 1301b via the first port or to the storage device 1301b via the first port based on the data exchanged with the storage controller 1331a As shown in FIG.

내부 스위치(1351a)는 데이터 흐름을 관리하기 위해 하드웨어 회로로 구현될 수 있다. 여기서, “스위치”라는 용어가 사용되지만, 내부 스위치(1351a)의 구현은 다양하게 변경 또는 수정될 수 있다. 예로서, 내부 스위치(1351a)는 (루트 컴플렉스(1003)와 유사하게) 데이터 경로를 제어하거나, 데이터 전달을 스케줄링하거나, 통신 충돌을 해소하기 위해, 내부 루트 컴플렉스의 형태로 구현될 수 있다. 또는, 내부 스위치(1351a)는 (루트 컴플렉스(1003) 및 스위치(1005)와 유사하게) 내부 루트 컴플렉스가 스위치와 조합된 형태로 구현될 수 있다.The internal switch 1351a may be implemented as a hardware circuit for managing the data flow. Here, the term " switch " is used, but the implementation of internal switch 1351a can be variously modified or modified. By way of example, internal switch 1351a may be implemented in the form of an internal root complex to control the data path (similar to root complex 1003), to schedule data transfers, or to resolve communication conflicts. Alternatively, internal switch 1351a may be implemented in the form of an internal root complex combined with a switch (similar to root complex 1003 and switch 1005).

다만, 내부 스위치(1351a)는 스토리지 컨트롤러(13331a)와 제 1 포트 사이의 데이터 흐름만을 관리할 수 있다. 따라서, 내부 스위치(1351a)는 루트 컴플렉스(1003) 및/또는 스위치(1005)의 크기(예컨대, 회로 크기, 회로 면적, 회로 규모 등)보다 작은 크기를 갖도록 구현될 수 있다.However, the internal switch 1351a can manage only the data flow between the storage controller 13331a and the first port. Thus, the internal switch 1351a can be implemented to have a smaller size than the size of the root complex 1003 and / or the switch 1005 (e.g., circuit size, circuit area, circuit scale, etc.).

연산 로직 회로(1352a)는 피어-투-피어 관리기(1350a)에서 수신되는 데이터에 기초하여 가공 연산을 수행할 수 있다. 예로서, 가공 연산은 수신되는 데이터와 관련되는 정보(예컨대, 데이터 양, 데이터 경로, 어드레스 등)를 모니터링하는 연산, 수신되는 데이터에 기반하는 RAID(Redundant Array of Independent Disks) 연산, 수신되는 데이터에 기반하는 정규식 검색(Regular Expression Search) 연산 등과 같은 다양한 연산 중 하나 이상을 포함할 수 있다. 다만, 본 발명은 이 예로 한정되지 않는다.The arithmetic logic circuitry 1352a may perform processing operations based on data received at the peer-to-peer manager 1350a. By way of example, a processing operation may include operations to monitor information (e.g., amount of data, data path, address, etc.) associated with the received data, Redundant Array of Independent Disks (RAID) operations based on the received data, Based Regular Expression Search operation, and the like. However, the present invention is not limited to this example.

예로서, 연산 로직 회로(1352a)는 스토리지 컨트롤러(1331a)로부터 수신되는 데이터에 기초하여 가공 연산을 수행할 수 있고, 수신되는 데이터를 가공하여 제 1 포트를 통해 출력될 가공된 데이터를 생성할 수 있다. 예로서, 연산 로직 회로(1352a)는 제 1 포트를 통해 수신되는 데이터에 기초하여 가공 연산을 수행할 수 있고, 수신되는 데이터를 가공하여 스토리지 컨트롤러(1331a)로 제공될 가공된 데이터를 생성할 수 있다.By way of example, arithmetic logic circuit 1352a may perform processing operations based on data received from storage controller 1331a and may generate processed data to be output via the first port by processing the received data have. By way of example, arithmetic logic circuitry 1352a may perform processing operations based on data received over the first port and may process the received data to generate processed data to be provided to storage controller 1331a have.

이를 위해, 연산 로직 회로(1352a)는 가공 연산을 수행하도록 구성되는 하드웨어 회로로 구현될 수 있다. 몇몇 실시 예에서, 피어-투-피어 관리기(1350a)는 스토리지 장치(1301a)의 세트 내부에서 스토리지 컨트롤러(1331a)와 별개인 FPGA(Field Programmable Gate Array) 보드 또는 ASICs(Application Specific Integrated Circuits)의 형태로 구현될 수 있다. 예로서, 연산 로직 회로(1352a)는 FPGA 보드의 구성에 기초하여 재구성 가능한(Reconfigurable) 로직 회로로 구현될 수 있다.To this end, arithmetic logic circuitry 1352a may be implemented with hardware circuitry configured to perform processing operations. In some embodiments, the peer-to-peer manager 1350a may include a form of an FPGA (Field Programmable Gate Array) board or ASICs (Application Specific Integrated Circuits) separate from the storage controller 1331a in the set of storage devices 1301a . ≪ / RTI > As an example, the arithmetic logic circuit 1352a may be implemented as a reconfigurable logic circuit based on the configuration of the FPGA board.

따라서, 피어-투-피어 관리기(1350a)는, 단순히 데이터 흐름을 관리한다기 보다는, 수신되는 데이터 자체를 가공 또는 변환하여 가공된 데이터 또는 변환된 데이터를 출력할 수 있다. 출력되는 데이터는 스토리지 컨트롤러(1331a)로 제공되거나, 제 1 포트를 통해 스토리지 장치(1301b)로 제공될 수 있다. 이를 위해, 피어-투-피어 관리기(1350a)는 스토리지 컨트롤러(1331a) 및 제 1 포트로 연결되는 두 개의 다운스트림(Downstream) 포트를 포함할 수 있다.Thus, rather than simply managing the data flow, the peer-to-peer manager 1350a may process or transform the received data itself to output processed or transformed data. The output data may be provided to the storage controller 1331a or may be provided to the storage device 1301b via the first port. To this end, the peer-to-peer manager 1350a may include a storage controller 1331a and two downstream ports connected to the first port.

연산 로직 회로(1352a)의 가공 연산은 메인 프로세서(1101)에 의해 수행될 수도 있다. 그러나, 실시 예들에서, 메인 프로세서(1101)의 작업부하를 경감시키기 위해, 스토리지 장치(1301a)가 연산 로직 회로(1352a)를 이용하여 가공 연산을 대신 수행할 수 있다. 가공 연산과 관련되는 예가 도 6 내지 도 9를 참조하여 설명될 것이다.The processing operation of the arithmetic logic circuit 1352a may be performed by the main processor 1101. [ However, in embodiments, to alleviate the workload of main processor 1101, storage device 1301a may perform arithmetic operations using arithmetic logic circuitry 1352a instead. Examples related to the machining operation will be described with reference to Figs. 6 to 9. Fig.

스토리지 장치(1301b)는 하나 이상의 메모리 장치(1310b), 스토리지 컨트롤러(1331b), 및 피어-투-피어 관리기(1350b)를 포함할 수 있다. 스토리지 컨트롤러(1331b)는 인터페이스 회로들(1335b, 1336b)을 포함할 수 있다. 피어-투-피어 관리기(1350b)는 내부 스위치(1351b) 및 연산 로직 회로(1352b)를 포함할 수 있다.Storage device 1301b may include one or more memory devices 1310b, a storage controller 1331b, and a peer-to-peer manager 1350b. Storage controller 1331b may include interface circuits 1335b and 1336b. Peer-to-peer manager 1350b may include internal switch 1351b and arithmetic logic circuit 1352b.

피어-투-피어 관리기(1350b)는 스토리지 장치(1301b)의 제 1 포트 및 데이터 경로(P24a)를 통해 스토리지 장치(1301c)로 연결될 수 있다. 인터페이스 회로(1335b)는 스토리지 장치(1301b)의 제 2 포트 및 데이터 경로(P22a)를 통해 스토리지 장치(1301a)로 연결될 수 있다. 인터페이스 회로(1336b)는 데이터 경로(P25a)를 통해 피어-투-피어 관리기(1350b)로 연결될 수 있다.The peer-to-peer manager 1350b may be coupled to the storage device 1301c via a first port of the storage device 1301b and a data path P24a. The interface circuit 1335b may be connected to the storage device 1301a via the second port of the storage device 1301b and the data path P22a. Interface circuit 1336b may be coupled to peer-to-peer manager 1350b via data path P25a.

스토리지 장치(1301b), 메모리 장치(1310b), 스토리지 컨트롤러(1331b), 인터페이스 회로들(1335b, 1336b), 피어-투-피어 관리기(1350b), 내부 스위치(1351b), 및 연산 로직 회로(1352b)는 스토리지 장치(1301a), 메모리 장치(1310a), 스토리지 컨트롤러(1331a), 인터페이스 회로들(1335a, 1335b), 피어-투-피어 관리기(1350a), 내부 스위치(1351a), 및 연산 로직 회로(1352a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명은 이하 생략될 것이다.A storage device 1301b, a memory device 1310b, a storage controller 1331b, interface circuits 1335b and 1336b, a peer-to-peer manager 1350b, an internal switch 1351b and an arithmetic logic circuit 1352b. A peer-to-peer manager 1350a, an internal switch 1351a, and an arithmetic logic circuit 1352a, a storage device 1301a, a memory device 1310a, a storage controller 1331a, interface circuits 1335a and 1335b, ), Respectively, as shown in FIG. For brevity, redundant descriptions will be omitted below.

스토리지 장치(1301c)는 하나 이상의 메모리 장치(1310c), 스토리지 컨트롤러(1331c), 및 피어-투-피어 관리기(1350c)를 포함할 수 있다. 스토리지 컨트롤러(1331c)는 인터페이스 회로들(1335c, 1336c)을 포함할 수 있다. 피어-투-피어 관리기(1350c)는 내부 스위치(1351c) 및 연산 로직 회로(1352c)를 포함할 수 있다.Storage device 1301c may include one or more memory devices 1310c, a storage controller 1331c, and a peer-to-peer manager 1350c. The storage controller 1331c may include interface circuits 1335c and 1336c. Peer-to-peer manager 1350c may include internal switch 1351c and arithmetic logic circuit 1352c.

피어-투-피어 관리기(1350c)는 스토리지 장치(1301c)의 제 1 포트 및 데이터 경로(P27a)를 통해 메인 프로세서(1101)로 연결될 수 있다. 인터페이스 회로(1335c)는 스토리지 장치(1301c)의 제 2 포트 및 데이터 경로(P24a)를 통해 스토리지 장치(1301b)로 연결될 수 있다. 인터페이스 회로(1336c)는 데이터 경로(P26a)를 통해 피어-투-피어 관리기(1350c)로 연결될 수 있다.The peer-to-peer manager 1350c may be connected to the main processor 1101 via a first port of the storage device 1301c and a data path P27a. The interface circuit 1335c may be connected to the storage device 1301b through the second port of the storage device 1301c and the data path P24a. Interface circuit 1336c may be coupled to peer-to-peer manager 1350c via data path P26a.

스토리지 장치(1301c), 메모리 장치(1310c), 스토리지 컨트롤러(1331c), 인터페이스 회로들(1335c, 1336c), 피어-투-피어 관리기(1350c), 내부 스위치(1351c), 및 연산 로직 회로(1352c)는 스토리지 장치(1301a), 메모리 장치(1310a), 스토리지 컨트롤러(1331a), 인터페이스 회로들(1335a, 1335b), 피어-투-피어 관리기(1350a), 내부 스위치(1351a), 및 연산 로직 회로(1352a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명은 이하 생략될 것이다.A storage device 1301c, a memory device 1310c, a storage controller 1331c, interface circuits 1335c and 1336c, a peer-to-peer manager 1350c, an internal switch 1351c and an arithmetic logic circuit 1352c. A peer-to-peer manager 1350a, an internal switch 1351a, and an arithmetic logic circuit 1352a, a storage device 1301a, a memory device 1310a, a storage controller 1331a, interface circuits 1335a and 1335b, ), Respectively, as shown in FIG. For brevity, redundant descriptions will be omitted below.

각 스토리지 장치(1301a, 1301b, 1301c)에서, 제 1 포트 및 제 2 포트 중 적어도 하나의 포트는 다른 스토리지 장치로 연결될 수 있다. 한편, 제 1 포트 및 제 2 포트 중 다른 스토리지 장치로 연결되지 않는 포트는 호스트(예컨대, 메인 프로세서(1101))로 연결될 수 있다.At each storage device 1301a, 1301b, 1301c, at least one port of the first port and the second port may be connected to another storage device. Meanwhile, a port other than the first port and the second port that are not connected to another storage device may be connected to the host (e.g., the main processor 1101).

예로서, 스토리지 장치(1301b)에서, 제 1 포트 및 제 2 포트 모두가 다른 스토리지 장치로 연결되는 경우, 스토리지 장치(1301b)는 호스트로 연결되지 않을 수 있다. 이 경우, 스토리지 장치(1301b)는 메인 프로세서(1101)와 직접 통신하지는 않을 수 있다. 대신, 스토리지 장치(1301b)는 스토리지 장치(1301a 또는 1301c)를 통해 메인 프로세서(1101)와 통신할 수 있다.For example, in the storage device 1301b, if both the first port and the second port are connected to another storage device, the storage device 1301b may not be connected to the host. In this case, the storage apparatus 1301b may not directly communicate with the main processor 1101. [ Instead, the storage device 1301b may communicate with the main processor 1101 via the storage device 1301a or 1301c.

스토리지 장치들(1301a, 1301b, 1301c)의 몇몇 포트는 메인 프로세서(1101)로 연결되지 않을 수 있다. 그러나, 메인 프로세서(1101)로의 데이터 경로들(P21a, P27a)이 제공되는 경우, 신뢰성이 향상될 수 있다. 예로서, 데이터 경로(P27a)가 장애를 갖거나 비활성화되더라도, 데이터 경로(P21a)가 메인 프로세서(1101)와의 통신을 제공할 수 있다.Some ports of the storage devices 1301a, 1301b, and 1301c may not be connected to the main processor 1101. [ However, when the data paths P21a and P27a to the main processor 1101 are provided, the reliability can be improved. By way of example, data path P21a may provide communication with main processor 1101, even if data path P27a is faulty or inactive.

도 6 내지 도 9는 도 5의 스토리지 장치들(1301a, 1301b, 1301c)과 관련되는 예시적인 동작들을 설명하기 위한 블록도들이다.FIGS. 6-9 are block diagrams illustrating exemplary operations associated with the storage devices 1301a, 1301b, and 1301c of FIG.

도 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 storage devices 1301a, 1301b, Operation) on the request. The arithmetic logic circuits 1352a, 1352b, and 1352c may perform a RAID operation as a machining operation.

도 6을 참조하면, 스토리지 컨트롤러(1331a)는 스토리지 장치(1301a)의 제 2 포트 및 인터페이스 회로(1335a)를 통해 메인 프로세서(1101)로부터 요청(REQ)을 수신할 수 있다. 요청(REQ)은 스토리지 장치(1301a) 및 다른 스토리지 장치(예컨대, 스토리지 장치들(1301b, 1301c))로 지시(Direct)될 수 있다. 예로서, 요청(REQ)은 데이터(D1, D2, D3)에 대응하는 패리티를 계산할 것을 요청할 수 있다.Referring to FIG. 6, the storage controller 1331a may receive a request (REQ) from the main processor 1101 through the second port of the storage device 1301a and the interface circuit 1335a. The request REQ may be directed to the storage device 1301a and other storage devices (e.g., storage devices 1301b and 1301c). As an example, the request REQ may request to calculate the parity corresponding to data D1, D2, D3.

도 7을 참조하면, 스토리지 컨트롤러(1331a)는 요청(REQ)에 응답하여, 스토리지 장치(1301a)에 대해 요청되는 동작을 수행할 수 있다. 예로서, 스토리지 컨트롤러(1331a)는 메모리 장치(1310a)가 데이터(D1)를 출력하도록 메모리 장치(1310a)를 제어할 수 있다.Referring to FIG. 7, in response to a request (REQ), the storage controller 1331a may perform the requested operation on the storage device 1301a. By way of example, the storage controller 1331a may control the memory device 1310a such that the memory device 1310a outputs the data D1.

나아가, 스토리지 컨트롤러(1331a)는 요청(REQ)에 응답하여, 인터페이스 회로(1336a)를 통해 다른 스토리지 장치에 대해 요청되는 동작과 관련되는 데이터를 피어-투-피어 관리기(1350a)와 교환할 수 있다. 예로서, 스토리지 컨트롤러(1331a)는 데이터(D1)를 피어-투-피어 관리기(1350a)로 제공할 수 있다.Further, in response to the request (REQ), the storage controller 1331a may exchange data associated with the requested operation for the other storage device via the interface circuit 1336a with the peer-to-peer manager 1350a . As an example, the storage controller 1331a may provide the data D1 to the peer-to-peer manager 1350a.

연산 로직 회로(1352a)는 메모리 장치(1310a)에 저장된 데이터 및 스토리지 장치(1301a)의 제 2 포트를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 예로서, 연산 로직 회로(1352a)는 데이터(D1)에 기초하여 가공 연산(예컨대, 패리티 연산)을 수행할 수 있다.The arithmetic logic circuit 1352a may perform processing operations based on at least one of the data stored in the memory device 1310a and the data received via the second port of the storage device 1301a. By way of example, arithmetic logic circuitry 1352a may perform arithmetic operations (e.g., parity arithmetic) based on data D1.

연산 로직 회로(1352a)는 데이터(D1)를 가공하여 가공된 데이터(D1')를 생성할 수 있다. 데이터(D1')는 스토리지 장치(1301b)에서 수행될 동작에 이용될 수 있다. 패리티 연산이 아직 하나의 데이터(D1)에 대해서만 수행되었고, 데이터(D1')는 데이터(D1)와 동일할 수 있다.The arithmetic logic circuit 1352a may process the data D1 to produce processed data D1 '. The data D1 'may be used for operations to be performed in the storage device 1301b. The parity operation is still performed on only one data D1, and the data D1 'may be the same as the data D1.

내부 스위치(1351a)는 데이터(D1, D1')의 흐름을 관리할 수 있다. 내부 스위치(1351a)는 스토리지 컨트롤러(1331a)로부터 데이터(D1)를 수신할 수 있고, 데이터(D1')를 스토리지 장치(1301a)의 제 1 포트로 출력할 수 있다. 따라서, 피어-투-피어 관리기(1350a)는 호스트의 개입 없이 스토리지 장치(1301b)로 데이터(D1')를 출력할 수 있다.The internal switch 1351a can manage the flow of data D1 and D1 '. The internal switch 1351a can receive the data D1 from the storage controller 1331a and output the data D1 'to the first port of the storage device 1301a. Thus, the peer-to-peer manager 1350a can output the data D1 'to the storage device 1301b without involvement of the host.

스토리지 장치(1301a)는 호스트의 개입 없이 스토리지 장치(1301a)의 제 1 포트 및 스토리지 장치(1301b)의 제 2 포트를 통해 스토리지 장치(1301b)와 통신할 수 있다. 스토리지 컨트롤러(1331b)는 스토리지 장치(1301b)의 제 2 포트 및 인터페이스 회로(1335b)를 통해 스토리지 장치(1301a)로부터 데이터(D1')를 수신할 수 있다.The storage device 1301a can communicate with the storage device 1301b through the first port of the storage device 1301a and the second port of the storage device 1301b without the intervention of the host. The storage controller 1331b may receive the data D1 'from the storage device 1301a via the second port of the storage device 1301b and the interface circuit 1335b.

도 8을 참조하면, 스토리지 컨트롤러(1331b)는 스토리지 장치(1301b)에 대해 요청되는 동작을 수행할 수 있다. 예로서, 스토리지 컨트롤러(1331b)는 메모리 장치(1310b)가 데이터(D2)를 출력하도록 메모리 장치(1310b)를 제어할 수 있다. 이를 위해, 예로서, 스토리지 컨트롤러(1331b)는 데이터(D2) 및 요청(REQ)에 관한 정보를 데이터(D1')와 함께 스토리지 장치(1301a)로부터 수신할 수 있다. 스토리지 컨트롤러(1331b)는 인터페이스 회로(1336b)를 통해 데이터(D1', D2)를 피어-투-피어 관리기(1350b)로 제공할 수 있다.Referring to Figure 8, the storage controller 1331b may perform the requested operation on the storage device 1301b. By way of example, storage controller 1331b may control memory device 1310b such that memory device 1310b outputs data D2. To this end, for example, the storage controller 1331b may receive information regarding the data D2 and the request REQ from the storage device 1301a together with the data D1 '. The storage controller 1331b may provide the data D1 ', D2 via the interface circuit 1336b to the peer-to-peer manager 1350b.

연산 로직 회로(1352b)는 메모리 장치(1310b)에 저장된 데이터 및 스토리지 장치(1301b)의 제 2 포트를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 예로서, 연산 로직 회로(1352b)는 데이터(D1', D2)에 기초하여 패리티 연산을 수행할 수 있다. 연산 로직 회로(1352b)는 데이터(D1', D2)를 가공하여 가공된 데이터(D2')를 생성할 수 있다.The arithmetic logic circuitry 1352b may perform processing operations based on at least one of the data stored in the memory device 1310b and the data received via the second port of the storage device 1301b. By way of example, the arithmetic logic circuit 1352b may perform a parity operation based on the data D1 ', D2. The arithmetic logic circuit 1352b may process the data D1 ', D2 to produce processed data D2'.

연산 로직 회로(1352a)에 의해 수행되는 패리티 연산은 메인 프로세서(1101)에 의해 요청되는 전체 연산의 제 1 부분(예컨대, 데이터(D1)에 대한 부분 연산)을 포함할 수 있다. 스토리지 장치(1301a)가 데이터(D1')를 스토리지 장치(1301b)로 출력함에 따라, 연산 로직 회로(1352b)는 메인 프로세서(1101)에 의해 요청되는 전체 연산의 제 2 부분(예컨대, 데이터(D1', D2)에 대한 부분 연산)을 수행할 수 있다. 여기서, 제 2 부분의 연산은 제 1 부분의 연산과 중첩하지 않을 수 있다.The parity operation performed by arithmetic logic circuit 1352a may include a first portion of the overall operation requested by main processor 1101 (e.g., a partial operation on data D1). As the storage device 1301a outputs the data D1 'to the storage device 1301b, the arithmetic logic circuit 1352b generates a second portion of the overall operation requested by the main processor 1101 ', D2), for example. Here, the operation of the second part may not overlap with the operation of the first part.

연산 로직 회로(1352b)가 패리티 연산을 수행함에 따라, 데이터(D2')는 데이터(D1') 및 데이터(D2) 각각과 상이하도록 생성될 수 있다. 데이터(D2')는 스토리지 장치(1301c)에서 수행될 동작에 이용될 수 있다.As the arithmetic logic circuit 1352b performs the parity operation, the data D2 'may be generated so as to be different from the data D1' and the data D2, respectively. The data D2 'may be used for operations to be performed in the storage device 1301c.

내부 스위치(1351b)는 데이터(D1', D2, D2')의 흐름을 관리할 수 있다. 내부 스위치(1351b)는 스토리지 컨트롤러(1331b)로부터 데이터(D1', D2)를 수신할 수 있고, 데이터(D2')를 스토리지 장치(1301b)의 제 1 포트로 출력할 수 있다. 피어-투-피어 관리기(1350b)는 호스트의 개입 없이 스토리지 장치(1301c)로 데이터(D2')를 출력할 수 있다.The internal switch 1351b can manage the flow of data D1 ', D2, and D2'. The internal switch 1351b can receive the data D1 'and D2 from the storage controller 1331b and output the data D2' to the first port of the storage device 1301b. The peer-to-peer manager 1350b can output the data D2 'to the storage device 1301c without involvement of the host.

스토리지 장치(1301b)는 호스트의 개입 없이 스토리지 장치(1301b)의 제 1 포트 및 스토리지 장치(1301c)의 제 2 포트를 통해 스토리지 장치(1301c)와 통신할 수 있다. 스토리지 컨트롤러(1331c)는 스토리지 장치(1301c)의 제 2 포트 및 인터페이스 회로(1335c)를 통해 스토리지 장치(1301b)로부터 데이터(D2')를 수신할 수 있다.The storage device 1301b can communicate with the storage device 1301c through the first port of the storage device 1301b and the second port of the storage device 1301c without the intervention of the host. The storage controller 1331c can receive the data D2 'from the storage device 1301b via the second port of the storage device 1301c and the interface circuit 1335c.

도 9를 참조하면, 스토리지 컨트롤러(1331c)는 메모리 장치(1310c)가 데이터(D3)를 출력하도록 메모리 장치(1310c)를 제어할 수 있다. 스토리지 컨트롤러(1331c)는 인터페이스 회로(1336c)를 통해 데이터(D2', D3)를 피어-투-피어 관리기(1350c)로 제공할 수 있다.9, the storage controller 1331c may control the memory device 1310c such that the memory device 1310c outputs the data D3. The storage controller 1331c may provide the data D2 ', D3 to the peer-to-peer manager 1350c via the interface circuit 1336c.

연산 로직 회로(1352c)는 데이터(D2', D3)에 기초하여 패리티 연산을 수행할 수 있다. 연산 로직 회로(1352c)는 가공된 데이터로서 패리티(P)를 생성할 수 있다. 패리티(P)는 메인 프로세서(1101)의 요청(REQ)에 대응하는 연산 결과일 수 있다.The arithmetic logic circuit 1352c may perform a parity operation based on the data D2 'and D3. The arithmetic logic circuit 1352c can generate parity (P) as the processed data. The parity P may be an operation result corresponding to the request (REQ) of the main processor 1101.

패리티(P)를 얻기 위해 메인 프로세서(1101)에 의해 요청되는 전체 연산은 스토리지 장치들(1301a, 1301b, 1301c) 상에서 분산하여 수행될 수 있다. 메인 프로세서(1101)는 패리티 연산에 개입하지 않을 수 있고, 따라서 메인 프로세서(1101)의 작업 부하가 경감될 수 있다. 연산 로직 회로들(1352a, 1352b, 1352c) 각각은 전체 연산을 부분적으로 수행할 수 있다. 부분적인 연산들이 연이어 수행됨에 따라, 전체 연산이 완성될 수 있고 패리티(P)가 얻어질 수 있다.The entire operation requested by the main processor 1101 to obtain the parity P may be performed on the storage devices 1301a, 1301b, and 1301c in a distributed manner. The main processor 1101 may not intervene in the parity operation, and thus the workload of the main processor 1101 may be reduced. Each of the arithmetic logic circuits 1352a, 1352b, 1352c may partially perform the entire operation. As the partial operations are successively performed, the entire operation can be completed and the parity P can be obtained.

내부 스위치(1351c)는 스토리지 컨트롤러(1331b)로부터 데이터(D2', D3)를 수신할 수 있고, 패리티(P)를 스토리지 장치(1301c)의 제 1 포트로 출력할 수 있다. 스토리지 장치(1301c)는 스토리지 장치(1301c)의 제 1 포트를 통해 패리티(P)를 출력할 수 있다. 따라서, 패리티(P)가 메인 프로세서(1101)로 제공될 수 있다.The internal switch 1351c can receive the data D2 'and D3 from the storage controller 1331b and output the parity P to the first port of the storage device 1301c. The storage apparatus 1301c can output the parity P through the first port of the storage apparatus 1301c. Accordingly, the parity P may be provided to the main processor 1101. [

도 10은 도 5의 스토리지 장치들(1301a, 1301b, 1301c)과 관련되는 예시적인 동작들을 설명하기 위한 블록도이다.10 is a block diagram illustrating exemplary operations associated with the storage devices 1301a, 1301b, and 1301c of FIG.

몇몇 경우, 도 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 storage apparatus 1301c can transmit the parity P to the storage apparatus 1301b through the second port of the storage apparatus 1301c and the first port of the storage apparatus 1301b. In this manner, the parity P may be provided to the main processor 1101 through the storage devices 1301b and 1301a. The storage apparatus 1301a can output the parity P to the main processor 1101 through the second port of the storage apparatus 1301a.

도 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 main processor 1101 may be opposite to the direction of the path for transferring data in the examples of FIGS. The interface circuits 1335a, 1336a, 1335b, 1336b, 1335c and 1336c and the peer-to-peer managers 1350a, 1350b and 1350c may support bi-directional communication.

도 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 storage devices 1301a, 1301b, 1301c may be variously modified or modified to provide peer-to-peer communication and processing operations between the storage devices 1301a, 1301b, 1301c. Further, it will be appreciated that embodiments of the present disclosure may be applied to various processing operations other than parity operations.

도 11 및 도 12는 도 5의 스토리지 장치들(1301a, 1301b, 1301c)과 관련되는 예시적인 구성들을 보여주는 블록도들이다.Figures 11 and 12 are block diagrams illustrating exemplary configurations associated with the storage devices 1301a, 1301b, and 1301c of Figure 5.

도 11을 참조하면, 메인 프로세서(1101)는 데이터 경로들(P21b, P27b)을 통해 스토리지 장치들(1301a, 1301b, 1301c)과 통신할 수 있다. 스토리지 장치들(1301a, 1301b, 1301c)은 데이터 경로들(P22b 내지 P26b)을 통해 피어-투-피어 방식으로 서로 통신할 수 있다. 데이터 경로들(P21b 내지 P27b)은 각각 데이터 경로들(P21a 내지 P27a)에 대응할 수 있다.Referring to FIG. 11, the main processor 1101 can communicate with the storage devices 1301a, 1301b, and 1301c through data paths P21b and P27b. Storage devices 1301a, 1301b, and 1301c may communicate with each other in a peer-to-peer manner via data paths P22b through P26b. The data paths P21b to P27b may correspond to the data paths P21a to P27a, respectively.

도 6 내지 도 10의 예시적인 동작들과 달리, 도 11의 예에서, 스토리지 장치(1301c)가 메인 프로세서(1101)로부터 요청을 수신할 수 있다. 피어-투-피어 관리기(1350c)는 메인 프로세서(1101)의 요청에 응답하여 가공 연산을 수행할 수 있고, 따라서 가공된 데이터를 스토리지 컨트롤러(1331c)로 제공할 수 있다.Unlike the exemplary operations of FIGS. 6-10, in the example of FIG. 11, a storage device 1301c may receive a request from the main processor 1101. FIG. The peer-to-peer manager 1350c may perform processing operations in response to a request from the main processor 1101, and thus may provide the processed data to the storage controller 1331c.

이러한 방식으로, 피어-투-피어 관리기들(1350c, 1350b, 1350a)이 메인 프로세서(1101)에 의해 요청되는 전체 연산을 분산하여 수행할 수 있고, 따라서 연산 결과를 생성할 수 있다. 연산 결과는 스토리지 장치(1301a)의 스토리지 컨트롤러(1331a)를 통해 메인 프로세서(1101)로 출력될 수 있다.In this manner, the peer-to-peer managers 1350c, 1350b, 1350a can perform the entire operations requested by the main processor 1101 in a distributed manner, and thus generate the operation results. The operation result may be output to the main processor 1101 through the storage controller 1331a of the storage device 1301a.

몇몇 실시 예에서, 메인 프로세서(1101)와 스토리지 컨트롤러(1331a) 사이에 연산 로직 회로가 제공되지 않을 수 있다. 몇몇 경우, 스토리지 컨트롤러(1331a)로부터 출력되는 데이터에 대해 추가의 가공이 요구될 수 있다. 예로서, 피어-투-피어 관리기(1350a)로부터 제공되는 가공된 데이터 및 스토리지 장치(1301a)의 메모리 장치(1310a)에 저장된 데이터에 대해 추가의 패리티 연산이 요구될 수 있고, 스토리지 컨트롤러(1331a)는 가공된 데이터 및 저장된 데이터를 메인 프로세서(1101)로 제공할 수 있다.In some embodiments, arithmetic logic circuitry may not be provided between the main processor 1101 and the storage controller 1331a. In some cases, additional processing may be required for the data output from the storage controller 1331a. As an example, additional parity operations may be required for the processed data provided from the peer-to-peer manager 1350a and the data stored in the memory device 1310a of the storage device 1301a, and the storage controller 1331a, May provide the processed data and the stored data to the main processor 1101.

이 예에서, 메인 프로세서(1101)가 추가의 패리티 연산을 수행할 수 있다. 메인 프로세서(1101)가 가공 연산에 부분적으로 개입하지만, 피어-투-피어 관리기들(1350c, 1350b, 1350a)이 전체 연산의 대부분을 수행할 수 있다. 나아가, 메인 프로세서(1101)는 스토리지 장치들(1301a, 1301b, 1301c) 사이의 통신에는 개입하지 않을 수 있다. 따라서, 메인 프로세서(1101)의 개입이 최소화될 수 있다.In this example, the main processor 1101 may perform additional parity operations. Although the main processor 1101 partially intervenes in the machining operations, the peer-to-peer managers 1350c, 1350b, 1350a may perform most of the overall operation. Furthermore, the main processor 1101 may not intervene in communication between the storage devices 1301a, 1301b, and 1301c. Therefore, the intervention of the main processor 1101 can be minimized.

도 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-peer manager 1350a may be provided to the main processor 1101 through the storage devices 1301b and 1301c. In the example of FIG. 12, the direction of the path for transferring the operation result to the main processor 1101 may be opposite to the direction of the path for transferring data in the example of FIG.

도 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 interface circuits 1335a, 1336a, 1335b, 1336b, 1335c and 1336c is connected to the main processor 1101 or the peer-to-peer managers 1350a, 1350b, and 1350c, respectively. Accordingly, the interface circuits 1335a, 1336a, 1335b, 1336b, 1335c, and 1336c may operate to operate the respective storage devices 1301a, 1301b, and 1301c as endpoint devices.

도 13 및 도 14는 도 1의 스토리지 장치(1300a)와 관련되는 예시적인 구성들을 보여주는 블록도들이다.13 and 14 are block diagrams illustrating exemplary configurations associated with the storage device 1300a of FIG.

도 13을 참조하면, 몇몇 실시 예에서, 스토리지 장치(1300a)는 스토리지 장치(1302a)를 포함할 수 있다. 스토리지 장치(1302a)는 하나 이상의 메모리 장치(1310a), 스토리지 컨트롤러(1332a), 및 연산 로직 회로(1355a)를 포함할 수 있다. 스토리지 컨트롤러(1332a)는 인터페이스 회로(1337a) 및 가변 인터페이스 회로(1338a)를 포함할 수 있다.Referring to FIG. 13, in some embodiments, the storage device 1300a may include a storage device 1302a. Storage device 1302a may include one or more memory devices 1310a, a storage controller 1332a, and arithmetic logic circuitry 1355a. The storage controller 1332a may include an interface circuit 1337a and a variable interface circuit 1338a.

스토리지 컨트롤러(1332a), 인터페이스 회로(1337a), 및 연산 로직 회로(1355a)는 각각 스토리지 컨트롤러(1331a), 인터페이스 회로(1335a), 및 연산 로직 회로(1352a)에 대응할 수 있다. 스토리지 컨트롤러(1332a)는 스토리지 장치(1302a)의 전반적인 동작들을 제어하고 관리할 수 있다. 인터페이스 회로(1337a)는 스토리지 장치(1302a)의 제 2 포트를 통해 스토리지 장치(1302a) 외부의 A장치(예컨대, 호스트, 다른 스토리지 장치 등)와의 통신을 지원할 수 있다.The storage controller 1332a, the interface circuit 1337a and the arithmetic logic circuit 1355a may correspond to the storage controller 1331a, the interface circuit 1335a, and the arithmetic logic circuit 1352a, respectively. The storage controller 1332a can control and manage the overall operations of the storage device 1302a. The interface circuit 1337a can support communication with an A device (e.g., a host, another storage device, etc.) outside the storage device 1302a through a second port of the storage device 1302a.

연산 로직 회로(1355a)는 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 연산 로직 회로(1355a)는 스토리지 장치(1302a)의 제 1 포트를 통해 스토리지 장치(1302a) 외부의 B장치(예컨대, 호스트, 다른 스토리지 장치 등)와 데이터를 교환할 수 있다. 연산 로직 회로(1355a)는 가변 인터페이스 회로(1338a)로 연결될 수 있다.The arithmetic logic circuit 1355a may perform processing operations to generate processed data. The arithmetic logic circuit 1355a may exchange data with a B device (e.g., a host, another storage device, etc.) external to the storage device 1302a via a first port of the storage device 1302a. The arithmetic logic circuit 1355a may be connected to a variable interface circuit 1338a.

도 5 내지 도 12를 참조하여 설명된 내부 스위치(1351a) 및 연산 로직 회로(1352a)는 하나의 구성 요소(예컨대, 하나의 FPGA 보드, 하나의 칩 등) 상에 구현될 수 있다. 그러나, 몇몇 실시 예에서, 내부 스위치(1351a) 및 연산 로직 회로(1352a)는 별개의 구성 요소들(예컨대, 별개의 칩들, 별개의 회로들 등)로 구현될 수 있다. 내부 스위치(1351a)가 연산 로직 회로(1352a)로부터 분리되는 경우, 몇몇 실시 예에서, 내부 스위치(1351a)가 스토리지 컨트롤러(1331a) 내부에 구현될 수 있다.The internal switch 1351a and the arithmetic logic circuit 1352a described with reference to Figs. 5 to 12 may be implemented on one component (e.g., one FPGA board, one chip, etc.). However, in some embodiments, internal switch 1351a and arithmetic logic circuit 1352a may be implemented as separate components (e.g., separate chips, separate circuits, etc.). When the internal switch 1351a is disconnected from the arithmetic logic circuit 1352a, in some embodiments, the internal switch 1351a may be implemented within the storage controller 1331a.

예로서, 스토리지 컨트롤러(1332a)의 가변 인터페이스 회로(1338a)가 내부 스위치(1351a)의 구성들을 포함하고 내부 스위치(1351a)의 동작들을 수행할 수 있다. 가변 인터페이스 회로(1338a)는 복수의 동작 모드 중에서 선택되는 동작 모드로 동작할 수 있다. 동작 모드는 스토리지 장치(1302a)의 제 1 포트가 B장치로 연결되는지 여부 및 연결된 B장치의 유형에 기초하여 선택될 수 있다.By way of example, the variable interface circuit 1338a of the storage controller 1332a can include the configurations of the internal switch 1351a and perform the operations of the internal switch 1351a. The variable interface circuit 1338a may operate in an operation mode selected from a plurality of operation modes. The operational mode may be selected based on whether the first port of the storage device 1302a is connected to the B device and the type of the connected B device.

예로서, 가변 인터페이스 회로(1338a)의 동작 모드는 종단 장치의 동작과 관련되는(예컨대, 스토리지 장치(1302a)가 종단 장치로서 동작하도록 스토리지 장치(1302a)를 지원하기 위한) 종단 동작 모드를 포함할 수 있다. 예로서, 가변 인터페이스 회로(1338a)의 동작 모드는 B장치와의 통신과 관련되는(예컨대, B장치와의 통신을 지원하기 위한) 스위치 동작 모드를 포함할 수 있다.By way of example, the operational mode of the variable interface circuit 1338a may include a termination mode of operation associated with the operation of the terminating device (e.g., to support the storage device 1302a such that the storage device 1302a operates as a terminating device) . By way of example, the operational mode of the variable interface circuit 1338a may include a switch operation mode (e.g., to support communication with the B device) associated with communication with the B device.

이를 위해, 가변 인터페이스 회로(1338a)는 데이터, 신호 및/또는 패킷을 송신/수신하고 처리하도록 구성되는 물리 계층 및/또는 논리 계층의 하드웨어 회로를 포함할 수 있다. 나아가, 가변 인터페이스 회로(1338a)는 B장치와의 데이터 교환을 관리하기 위해 루트 컴플렉스 및/또는 스위치의 하드웨어 회로를 포함할 수 있다. 가변 인터페이스 회로(1338a)는 선택되는 동작 모드에 의존하여 상이하게 동작할 수 있다.To this end, the variable interface circuit 1338a may comprise a physical and / or logical layer of hardware circuitry configured to transmit / receive and process data, signals and / or packets. Further, variable interface circuit 1338a may include hardware circuitry of the root complex and / or switch to manage the exchange of data with the B device. Variable interface circuit 1338a may operate differently depending on the selected operating mode.

도 14를 참조하면, 몇몇 실시 예에서, 스토리지 장치(1300a)는 스토리지 장치(1303a)를 포함할 수 있다. 스토리지 장치(1303a)는 하나 이상의 메모리 장치(1310a) 및 스토리지 컨트롤러(1333a)를 포함할 수 있다. 스토리지 컨트롤러(1333a)는 인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)를 포함할 수 있다. 스토리지 컨트롤러(1333a)는 스토리지 컨트롤러(1331a)에 대응할 수 있고, 스토리지 장치(1303a)의 전반적인 동작들을 제어하고 관리할 수 있다.14, in some embodiments, the storage device 1300a may include a storage device 1303a. Storage device 1303a may include one or more memory devices 1310a and a storage controller 1333a. The storage controller 1333a may include an interface circuit 1337a, a variable interface circuit 1338a, and an internal arithmetic logic circuit 1339a. The storage controller 1333a may correspond to the storage controller 1331a and may control and manage the overall operations of the storage device 1303a.

인터페이스 회로(1337a)는 스토리지 장치(1303a)의 제 2 포트로 연결될 수 있고, 제 2 포트를 통해 A장치와의 통신을 지원할 수 있다. 가변 인터페이스 회로(1338a)는 스토리지 장치(1303a)의 제 1 포트로 연결될 수 있고, 제 1 포트를 통해 B장치와의 통신을 지원할 수 있다. 가변 인터페이스 회로(1338a)는 스토리지 장치(1303a)의 제 1 포트가 B장치로 연결되는지 여부 및 연결된 B장치의 유형에 기초하여 선택되는 동작 모드로 동작할 수 있다.The interface circuit 1337a may be connected to the second port of the storage device 1303a and may support communication with the A device through the second port. The variable interface circuit 1338a may be connected to the first port of the storage device 1303a and may support communication with the B device via the first port. Variable interface circuit 1338a may operate in an operating mode that is selected based on whether the first port of storage device 1303a is connected to the B device and the type of connected B device.

몇몇 실시 예에서, 연산 로직 회로(1352a 또는 1355a) 역시 스토리지 컨트롤러(1331a) 내부에 구현될 수 있다. 예로서, 스토리지 컨트롤러(1333a)의 내장 연산 로직 회로(1339a)가 연산 로직 회로(1352a 또는 1355a)의 구성들을 포함하고 연산 로직 회로(1352a 또는 1355a)의 동작들을 수행할 수 있다.In some embodiments, arithmetic logic circuit 1352a or 1355a may also be implemented within storage controller 1331a. By way of example, the internal arithmetic logic circuit 1339a of the storage controller 1333a may include the arrangements of arithmetic logic circuit 1352a or 1355a and may perform operations of arithmetic logic circuit 1352a or 1355a.

인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)는 스토리지 컨트롤러(1333a) 내부의 버스를 통해 서로 통신할 수 있다. 예로서, 내장 연산 로직 회로(1339a)는 내장 FPGA 또는 내장 ASICs의 형태로 구현될 수 있다. 예로서, 내장 연산 로직 회로(1339a)는 재구성 가능한 로직 회로로 구현될 수 있다.The interface circuit 1337a, the variable interface circuit 1338a, and the internal arithmetic logic circuit 1339a can communicate with each other via a bus inside the storage controller 1333a. By way of example, the embedded arithmetic logic circuit 1339a may be implemented in the form of an embedded FPGA or embedded ASICs. By way of example, the embedded arithmetic logic circuit 1339a may be implemented as a reconfigurable logic circuit.

내장 연산 로직 회로(1339a)는 가공 연산을 수행할 수 있다. 내장 연산 로직 회로(1339a)는 스토리지 장치(1303a)의 제 1 포트를 통해 수신되는 데이터를 가공하여 스토리지 장치(1303a)의 제 2 포트를 통해 출력될 가공된 데이터를 생성할 수 있다. 내장 연산 로직 회로(1339a)는 스토리지 장치(1303a)의 제 2 포트를 통해 수신되는 데이터를 가공하여 스토리지 장치(1303a)의 제 1 포트를 통해 출력될 가공된 데이터를 생성할 수 있다.The internal arithmetic logic circuit 1339a can perform the arithmetic operation. The internal arithmetic logic circuit 1339a may process the data received via the first port of the storage device 1303a to generate the processed data to be output via the second port of the storage device 1303a. The internal arithmetic logic circuit 1339a may process the data received via the second port of the storage device 1303a to generate processed data to be output via the first port of the storage device 1303a.

도 15는 도 1의 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 예시적인 구성을 보여주는 블록도이다.15 is a block diagram illustrating an exemplary configuration associated with the storage devices 1300a, 1300b, and 1300c of FIG.

몇몇 실시 예에서, 스토리지 장치들(1300a, 1300b, 1300c)은 각각 스토리지 장치들(1303a, 1303b, 1303c)을 포함할 수 있다. 스토리지 장치들(1303a, 1303b, 1303c) 각각은 듀얼-포트의 구조로 구현될 수 있고, 호스트(예컨대, 메인 프로세서(1101))의 개입 없이 피어-투-피어 방식으로 서로 통신할 수 있다.In some embodiments, the storage devices 1300a, 1300b, and 1300c may include storage devices 1303a, 1303b, and 1303c, respectively. Each of the storage devices 1303a, 1303b, and 1303c may be implemented as a dual-port architecture and may communicate with each other in a peer-to-peer manner without the intervention of a host (e.g., main processor 1101).

스토리지 장치(1303b)는 하나 이상의 메모리 장치(1310b) 및 스토리지 컨트롤러(1333b)를 포함할 수 있다. 스토리지 컨트롤러(1333b)는 인터페이스 회로(1337b), 가변 인터페이스 회로(1338b), 및 내장 연산 로직 회로(1339b)를 포함할 수 있다. 스토리지 컨트롤러(1333b), 인터페이스 회로(1337b), 가변 인터페이스 회로(1338b), 및 내장 연산 로직 회로(1339b)는 스토리지 컨트롤러(1333a), 인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다.Storage device 1303b may include one or more memory devices 1310b and a storage controller 1333b. The storage controller 1333b may include an interface circuit 1337b, a variable interface circuit 1338b, and an internal arithmetic logic circuit 1339b. The storage controller 1333b, the interface circuit 1337b, the variable interface circuit 1338b and the internal arithmetic logic circuit 1339b are connected to the storage controller 1333a, the interface circuit 1337a, the variable interface circuit 1338a, And logic circuit 1339a, respectively.

스토리지 장치(1303c)는 하나 이상의 메모리 장치(1310c) 및 스토리지 컨트롤러(1333c)를 포함할 수 있다. 스토리지 컨트롤러(1333c)는 인터페이스 회로(1337c), 가변 인터페이스 회로(1338c), 및 내장 연산 로직 회로(1339c)를 포함할 수 있다. 스토리지 컨트롤러(1333c), 인터페이스 회로(1337c), 가변 인터페이스 회로(1338c), 및 내장 연산 로직 회로(1339c)는 스토리지 컨트롤러(1333a), 인터페이스 회로(1337a), 가변 인터페이스 회로(1338a), 및 내장 연산 로직 회로(1339a)와 각각 실질적으로 동일하거나 유사하게 구성되고 동작할 수 있다. 간결성을 위해, 중복되는 설명은 이하 생략될 것이다.The storage device 1303c may include one or more memory devices 1310c and a storage controller 1333c. The storage controller 1333c may include an interface circuit 1337c, a variable interface circuit 1338c, and an internal arithmetic logic circuit 1339c. The storage controller 1333c, the interface circuit 1337c, the variable interface circuit 1338c and the internal arithmetic logic circuit 1339c are connected to the storage controller 1333a, the interface circuit 1337a, the variable interface circuit 1338a, And logic circuit 1339a, respectively. For brevity, redundant descriptions will be omitted below.

인터페이스 회로(1337a)는 스토리지 장치(1303a)의 제 2 포트로 연결될 수 있다. 스토리지 장치(1303a)의 제 2 포트는 스토리지 컨트롤러(1333a)와 메인 프로세서(1101) 사이에 데이터 경로(P21c)를 제공할 수 있다. 따라서, 스토리지 장치(1303a)는 데이터 경로(P21c)를 통해 메인 프로세서(1101)와 통신하고 데이터를 교환할 수 있다.The interface circuit 1337a may be connected to the second port of the storage device 1303a. A second port of the storage device 1303a may provide a data path P21c between the storage controller 1333a and the main processor 1101. [ Accordingly, the storage device 1303a can communicate with the main processor 1101 via the data path P21c and exchange data.

내장 연산 로직 회로(1339a)는 메모리 장치(1310a)에 저장된 데이터 및 스토리지 장치(1303a)의 제 2 포트(또는 제 1 포트)를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 내장 연산 로직 회로(1339a)는 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 가공된 데이터는 스토리지 장치(1303a)의 제 1 포트(또는 제 2 포트)를 통해 다른 장치(예컨대, 메인 프로세서(1101), 스토리지 장치(1303b) 등)로 출력될 수 있다.The internal arithmetic logic circuit 1339a performs processing operations based on at least one of the data stored in the memory device 1310a and the data received via the second port (or first port) of the storage device 1303a . The internal arithmetic logic circuit 1339a can perform processing operations to generate processed data. The processed data may be output to another device (e.g., main processor 1101, storage device 1303b, etc.) via a first port (or a second port) of the storage device 1303a.

가변 인터페이스 회로(1338a)는 스토리지 장치(1303a)의 제 1 포트로 연결될 수 있다. 인터페이스 회로(1337b)는 스토리지 장치(1303b)의 제 2 포트로 연결될 수 있다. 스토리지 장치(1303a)의 제 1 포트 및 스토리지 장치(1303b)의 제 2 포트는 스토리지 컨트롤러들(1333a, 1333b) 사이에 데이터 경로(P22c)를 제공할 수 있다. 따라서, 스토리지 장치(1303a)는 메인 프로세서(1101)의 개입 없이 스토리지 장치(1303b)와 피어-투-피어 방식으로 통신하고 데이터를 교환할 수 있다.The variable interface circuit 1338a may be connected to the first port of the storage device 1303a. The interface circuit 1337b may be connected to the second port of the storage device 1303b. The first port of the storage device 1303a and the second port of the storage device 1303b may provide a data path P22c between the storage controllers 1333a and 1333b. Accordingly, the storage apparatus 1303a can communicate and exchange data with the storage apparatus 1303b in a peer-to-peer manner without the intervention of the main processor 1101. [

내장 연산 로직 회로(1339b)는 메모리 장치(1310b)에 저장된 데이터 및 스토리지 장치(1303b)의 제 2 포트(또는 제 1 포트)를 통해 수신되는 데이터 중 적어도 하나의 데이터에 기초하여 가공 연산을 수행할 수 있다. 내장 연산 로직 회로(1339b)는 가공 연산을 수행하여 가공된 데이터를 생성할 수 있다. 가공된 데이터는 스토리지 장치(1303b)의 제 1 포트(또는 제 2 포트)를 통해 다른 장치(예컨대, 스토리지 장치(1303a 또는 1303c) 등)로 출력될 수 있다.The internal arithmetic logic circuit 1339b performs processing operations based on at least one of the data stored in the memory device 1310b and the data received via the second port (or first port) of the storage device 1303b . The internal arithmetic logic circuit 1339b can perform processing operations to generate processed data. The processed data may be output to another device (e.g., storage device 1303a or 1303c, etc.) through a first port (or a second port) of the storage device 1303b.

유사하게, 스토리지 장치(1303b)의 제 1 포트 및 스토리지 장치(1303c)의 제 2 포트는 스토리지 컨트롤러들(1333b, 1333c) 사이에 데이터 경로(P24c)를 제공할 수 있다. 스토리지 장치(1303b)는 메인 프로세서(1101)의 개입 없이 가변 인터페이스 회로(1338b), 데이터 경로(P24c), 및 인터페이스 회로(1337c)를 통해 스토리지 장치(1303c)와 피어-투-피어 방식으로 통신하고 데이터를 교환할 수 있다.Similarly, a first port of the storage device 1303b and a second port of the storage device 1303c may provide a data path P24c between the storage controllers 1333b and 1333c. The storage device 1303b communicates in a peer-to-peer manner with the storage device 1303c via the variable interface circuit 1338b, the data path P24c, and the interface circuit 1337c without the intervention of the main processor 1101 Data can be exchanged.

스토리지 장치(1303c)의 제 1 포트는 스토리지 컨트롤러(1333c)와 메인 프로세서(1101) 사이에 데이터 경로(P27c)를 제공할 수 있다. 스토리지 장치(1303c)는 가변 인터페이스 회로(1337c) 및 데이터 경로(P27c)를 통해 메인 프로세서(1101)와 통신하고 데이터를 교환할 수 있다. 내장 연산 로직 회로(1339c)는 스토리지 장치(1303c)의 제 1 포트 및 제 2 포트를 통해 수신되는 데이터 및 메모리 장치(1310c)에 저장된 데이터 중 적어도 하나의 데이터에 기초하여 가공된 데이터를 생성할 수 있다.The first port of the storage device 1303c may provide a data path P27c between the storage controller 1333c and the main processor 1101. [ The storage device 1303c can communicate with and exchange data with the main processor 1101 via the variable interface circuit 1337c and the data path P27c. The internal arithmetic logic circuit 1339c can generate processed data based on at least one of the data received via the first and second ports of the storage device 1303c and the data stored in the memory device 1310c have.

예로서, 스토리지 컨트롤러(1333a)는 인터페이스 회로(1337a)를 통해 스토리지 장치들(1303a, 1303b, 1303c)로 지시되는 요청을 수신할 수 있다. 스토리지 컨트롤러(1333a)는 스토리지 장치(1303a)에 대해 요청되는 동작을 수행할 수 있다. 스토리지 컨트롤러(1333a)는 가변 인터페이스 회로(1338a)를 통해 스토리지 장치들(1303b, 1303c)에 대해 요청되는 동작과 관련되는 데이터를 출력하거나 수신할 수 있다.By way of example, the storage controller 1333a may receive requests directed to the storage devices 1303a, 1303b, and 1303c via interface circuitry 1337a. The storage controller 1333a may perform the requested operation on the storage device 1303a. The storage controller 1333a may output or receive data associated with the requested operation for the storage devices 1303b and 1303c via the variable interface circuit 1338a.

내장 연산 로직 회로들(1339a, 1339b, 1339c)은 메인 프로세서(1101)에 의해 요청되는 전체 연산을 분산하여 수행할 수 있다. 따라서, 스토리지 컨트롤러(1333c)는 가변 인터페이스 회로(1338c)를 통해 메인 프로세서(1101)의 요청에 대응하는 연산 결과의 데이터를 메인 프로세서(1101)로 출력할 수 있다. 몇몇 경우, 스토리지 컨트롤러(1333c)는 가변 인터페이스 회로(1338c)를 통해 메인 프로세서(1101)로부터 데이터 또는 요청을 수신할 수 있다.The built-in arithmetic logic circuits 1339a, 1339b, and 1339c may perform the entire operations requested by the main processor 1101 in a distributed manner. Accordingly, the storage controller 1333c can output the data of the operation result corresponding to the request of the main processor 1101 to the main processor 1101 through the variable interface circuit 1338c. In some cases, the storage controller 1333c may receive data or requests from the main processor 1101 via the variable interface circuit 1338c.

스토리지 장치들(1303a, 1303b, 1303c)은 도 5 내지 도 12를 참조하여 설명된 것들과 유사하게 구성되고 동작할 수 있다. 몇몇 경우, 데이터 경로(P21c 또는 P27c)가 제공되지 않을 수 있고, 스토리지 컨트롤러들(1333a, 1333b, 1333c)은 양 방향 통신을 지원할 수 있다. 도 15는 도 14의 스토리지 장치(1303a)와 관련되는 구성을 보여주지만, 도 13의 스토리지 장치(1302a) 역시 도 5 내지 도 12 및 도 15를 참조하여 설명된 것들과 유사한 방식으로 채용될 수 있음이 잘 이해될 것이다.The storage devices 1303a, 1303b, and 1303c may be configured and operated similarly to those described with reference to FIGS. In some cases, the data path P21c or P27c may not be provided, and the storage controllers 1333a, 1333b, and 1333c may support bi-directional communication. Although FIG. 15 shows a configuration associated with storage device 1303a of FIG. 14, storage device 1302a of FIG. 13 may also be employed in a manner similar to that described with reference to FIGS. 5-12 and 15 This will be well understood.

인터페이스 회로들(1337a, 1337b, 1337c) 각각은 메인 프로세서(1101) 또는 다운스트림 포트로 연결될 수 있다. 인터페이스 회로들(1337a, 1337b, 1337c)은 종단 동작 모드로 동작할 수 있다. 가변 인터페이스 회로(1338c)는 메인 프로세서(1101)로 연결될 수 있고, 따라서 종단 동작 모드로 동작할 수 있다. 가변 인터페이스 회로(1338c)가 종단 동작 모드로 동작함에 따라, 스토리지 장치(1303c)의 제 1 포트는 다운스트림 포트로 이해될 수 있다.Each of the interface circuits 1337a, 1337b, and 1337c may be connected to the main processor 1101 or a downstream port. The interface circuits 1337a, 1337b, and 1337c may operate in a termination mode of operation. The variable interface circuit 1338c may be coupled to the main processor 1101 and thus may operate in the termination mode of operation. As the variable interface circuit 1338c operates in the termination mode of operation, the first port of the storage device 1303c can be understood as a downstream port.

가변 인터페이스 회로들(1338a, 1338b)은 각각 스토리지 장치들(1303b, 1303c)로 연결될 수 있다. 가변 인터페이스 회로들(1338a, 1338b) 각각은 외부 스토리지 장치와의 통신을 지원하기 위해 스위치 동작 모드로 동작할 수 있다. 스위치 동작 모드에서, 가변 인터페이스 회로들(1338a, 1338b)은 루트 컴플렉스 및/또는 스위치의 기능을 제공하여 데이터 교환을 관리할 수 있다. 가변 인터페이스 회로들(1338a, 1338b)이 스위치 동작 모드로 동작함에 따라, 스토리지 장치들(1303a, 1303b) 각각의 제 1 포트는 업스트림(Upstream) 포트로 이해될 수 있다.The variable interface circuits 1338a and 1338b may be connected to the storage devices 1303b and 1303c, respectively. Each of the variable interface circuits 1338a and 1338b may operate in a switch operation mode to support communication with an external storage device. In switch operating mode, variable interface circuits 1338a, 1338b can provide the functionality of a root complex and / or switch to manage data exchange. As the variable interface circuits 1338a and 1338b operate in the switch operation mode, the first port of each of the storage devices 1303a and 1303b can be understood as an upstream port.

도 15는 스토리지 장치들(1303a, 1303b, 1303c) 각각이 하나의 가변 인터페이스 회로를 포함하는 것을 보여준다. 몇몇 실시 예에서, 스토리지 장치들(1303a, 1303b, 1303c) 각각이 두 개의 가변 인터페이스 회로를 포함할 수 있다. 예로서, 스토리지 장치(1303a)의 인터페이스 회로(1337a) 역시 가변 인터페이스 회로로 구현될 수 있다. 이 경우, 인터페이스 회로(1337a) 역시 메인 프로세서(1101)와의 통신은 물론 외부 스토리지 장치와의 통신도 지원할 수 있고, 따라서 스토리지 장치(1303a)의 연결에 대한 유연성이 향상될 수 있다.FIG. 15 shows that each of the storage devices 1303a, 1303b, and 1303c includes one variable interface circuit. In some embodiments, each of the storage devices 1303a, 1303b, 1303c may include two variable interface circuits. For example, the interface circuit 1337a of the storage device 1303a may also be implemented as a variable interface circuit. In this case, the interface circuit 1337a can also support communication with the external storage device as well as with the main processor 1101, so that flexibility in connection of the storage device 1303a can be improved.

도 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 storage device 1303a can recognize that the external device connected through the variable interface circuit 1338a is another storage device 1303b, and the storage device 1303c is connected through the variable interface circuit 1338c It can recognize that the external device is the main processor 1101. In some embodiments, the storage device may recognize the type of external device via additional pins (e.g., General Purpose Input / Output (GPIO) pins), regardless of the link up state.

스토리지 장치는 연결된 외부 장치의 정보에 기초하여 인터페이스 회로의 동작 모드를 선택할 수 있다(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 storage controller 1333a may operate the variable interface circuit 1338a in a switch mode of operation in response to a connection to another storage device 1303b, and the storage controller 1333c may be coupled to the main processor 1101 The variable interface circuit 1338c can be operated in the termination operation mode in response.

도 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, variable interface circuit 1338a may provide operation of a root complex and / or switch in a switch mode of operation based on a response from storage device 1303b.

응답이 호스트와 관련되는 경우(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 variable interface circuit 1338c can support communication of an end device in an end operation mode based on a response from the main processor 1101. [

도 18은 도 1의 스토리지 장치들(1300a, 1300b, 1300c)과 관련되는 예시적인 구성을 보여주는 블록도이다.FIG. 18 is a block diagram illustrating an exemplary configuration associated with the storage devices 1300a, 1300b, and 1300c of FIG.

몇몇 실시 예에서, 스토리지 장치들(1300a, 1300b, 1300c)은 스토리지 장치들(1304a, 1301b, 1301c, 1304d, 1304e)을 포함할 수 있다. 도 5의 예시적인 구성과 유사하게, 스토리지 장치들(1304a, 1301b, 1301c)은 서로 연결되어 피어-투-피어 방식으로 통신할 수 있다.In some embodiments, the storage devices 1300a, 1300b, and 1300c may include storage devices 1304a, 1301b, 1301c, 1304d, and 1304e. Similar to the exemplary configuration of FIG. 5, the storage devices 1304a, 1301b, and 1301c may be connected to one another to communicate in a peer-to-peer manner.

예로서, 피어-투-피어 관리기(1357a)는 세 개의 다운스트림 포트를 포함할 수 있다. 세 개의 다운스트림 포트 중 둘은 각각 스토리지 컨트롤러들(1331a, 1331b)로 연결될 수 있다. 세 개의 다운스트림 포트 중 다른 하나는 스토리지 장치(1304d)의 스토리지 컨트롤러(1331d)로 연결될 수 있다.As an example, peer-to-peer manager 1357a may include three downstream ports. Two of the three downstream ports may be connected to the storage controllers 1331a and 1331b, respectively. The other of the three downstream ports may be connected to the storage controller 1331d of the storage device 1304d.

스토리지 장치들(1304a, 1301b, 1301c) 사이의 연결과 유사하게, 스토리지 장치들(1304a, 1304d, 1304e)은 서로 연결되어 피어-투-피어 방식으로 통신할 수 있다. 피어-투-피어 관리기(1350d)는 두 개의 다운스트림 포트를 통해 스토리지 컨트롤러들(1331d, 1331e)로 연결될 수 있다. 피어-투-피어 관리기(1350e)는 두 개의 다운스트림 포트를 통해 스토리지 컨트롤러(1331e) 및 메인 프로세서(1101)로 연결될 수 있다.Similar to the connection between the storage devices 1304a, 1301b, 1301c, the storage devices 1304a, 1304d, 1304e can be connected to one another and communicate in a peer-to-peer manner. The peer-to-peer manager 1350d may be connected to the storage controllers 1331d and 1331e via two downstream ports. The peer-to-peer manager 1350e may be coupled to the storage controller 1331e and the main processor 1101 via two downstream ports.

피어-투-피어 관리기들(1357a, 1350b, 1350c, 1350d, 1350e)은 데이터 흐름을 관리할 수 있고, 메인 프로세서(1101)에 의해 요청되는 전체 연산을 분산하여 수행할 수 있다. 각 피어-투-피어 관리기에 포함되는 다운스트림 포트들의 개수에 따라 스토리지 장치들 사이의 연결이 다양하게 변경 또는 수정될 수 있음이 잘 이해될 것이다. 이러한 변경 또는 수정은 도 13 내지 도 15를 참조하여 설명된 예시적인 구성들에 대해서도 유사하게 적용될 수 있다.The peer-to-peer managers 1357a, 1350b, 1350c, 1350d, and 1350e can manage the data flow and can distribute and perform the entire operations requested by the main processor 1101. [ It will be appreciated that the connection between storage devices may vary or be modified depending on the number of downstream ports included in each peer-to-peer manager. Such changes or modifications may be similarly applied to the exemplary configurations described with reference to Figs.

도 19는 도 1의 전자 시스템(1000)과 관련되는 예시적인 구현을 보여주는 개념도이다.19 is a conceptual diagram illustrating an exemplary implementation associated with the electronic system 1000 of FIG.

예로서, 전자 시스템(1000)은 서버(1000c)로 구현될 수 있다. 스토리지 장치들(1300a, 1300b, 1300c)은 듀얼-포트의 구조로 구현될 수 있고, 서버(1000c)에 연결 또는 장착될 수 있다.By way of example, the electronic system 1000 may be implemented as a server 1000c. The storage devices 1300a, 1300b, and 1300c may be implemented as a dual-port structure and may be connected to or mounted to the server 1000c.

스토리지 장치(1300a)의 커넥터(1390a)는 케이블(P21d) 및 커넥터(1007a)를 통해 백플레인(Backplane)(1007)으로 연결될 수 있다. 도 19는 케이블(P21d)을 통한 연결을 보여주지만, 몇몇 실시 예에서 커넥터(1390a)는 커넥터(1007a)로 직접 연결될 수 있다.The connector 1390a of the storage apparatus 1300a can be connected to the backplane 1007 through the cable P21d and the connector 1007a. Figure 19 shows the connection through cable P21d, but in some embodiments connector 1390a may be directly connected to connector 1007a.

스토리지 장치(1300a)의 커넥터(1395a)는 케이블(P22d)을 통해 스토리지 장치(1300b)의 커넥터(1390b)로 연결될 수 있다. 스토리지 장치(1300b)의 커넥터(1395b)는 케이블(P24d)을 통해 스토리지 장치(1300c)의 커넥터(1390c)로 연결될 수 있다. 스토리지 장치(1300c)의 커넥터(1395c)는 케이블(P27d) 및 커넥터(1007c)를 통해 백플레인(1007)으로 연결될 수 있고, 몇몇 경우 백플레인(1007)으로 연결되지 않을 수 있다.The connector 1395a of the storage apparatus 1300a can be connected to the connector 1390b of the storage apparatus 1300b via the cable P22d. The connector 1395b of the storage apparatus 1300b can be connected to the connector 1390c of the storage apparatus 1300c via the cable P24d. The connector 1395c of the storage apparatus 1300c may be connected to the backplane 1007 through the cable P27d and the connector 1007c and may not be connected to the backplane 1007 in some cases.

이러한 방식으로, 스토리지 장치들(1300a, 1300b, 1300c)은 피어-투-피어 방식으로 서로 통신할 수 있다. 스토리지 장치들(1300a, 1300b, 1300c) 사이의 피어-투-피어 연결은 백플레인(1007)으로부터 완전히 분리될 수 있다. 따라서, 메인 프로세서(1101)는 스토리지 장치들(1300a, 1300b, 1300c) 사이의 통신에 개입하지 않을 수 있다.In this manner, the storage devices 1300a, 1300b, and 1300c can communicate with each other in a peer-to-peer manner. The peer-to-peer connection between the storage devices 1300a, 1300b, and 1300c can be completely disconnected from the backplane 1007. Thus, the main processor 1101 may not intervene in communication between the storage devices 1300a, 1300b, and 1300c.

메인 프로세서(1101)는 도전성 라인들(L21)을 통해 백플레인(1007)으로 연결될 수 있고, 따라서 스토리지 장치(1300a)와 통신할 수 있다. 메인 프로세서(1101)는 도전성 라인들(L27)을 통해 스토리지 장치(1300c)와 통신할 수 있고, 몇몇 경우 도전성 라인들(L27)이 제공되지 않을 수 있다.The main processor 1101 may be connected to the backplane 1007 via conductive lines L21 and thus may communicate with the storage device 1300a. The main processor 1101 can communicate with the storage device 1300c via the conductive lines L27 and in some cases the conductive lines L27 may not be provided.

위 설명들은 본 발명을 구현하기 위한 예시적인 구성들 및 동작들을 제공하도록 의도된다. 본 발명의 기술 사상은 위에서 설명된 실시 예들뿐만 아니라, 위 실시 예들을 단순하게 변경하거나 수정하여 얻어질 수 있는 구현들도 포함할 것이다. 또한, 본 발명의 기술 사상은 위에서 설명된 실시 예들을 앞으로 용이하게 변경하거나 수정하여 달성될 수 있는 구현들도 포함할 것이다.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 항에 있어서,
상기 스토리지 장치는 상기 제 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 항에 있어서,
상기 제 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 항에 있어서,
상기 제 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.
제 4 항에 있어서,
상기 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.
제 1 항에 있어서,
상기 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.
제 1 항에 있어서,
상기 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.
제 8 항에 있어서,
상기 복수의 동작 모드는 종단(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.
제 9 항에 있어서,
상기 제 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.
제 9 항에 있어서,
상기 제 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.
제 9 항에 있어서,
상기 제 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.
제 8 항에 있어서,
상기 제 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.
제 8 항에 있어서,
상기 스토리지 컨트롤러는 상기 제 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.
제 15 항에 있어서,
상기 연산 로직 회로에 의해 수행되는 상기 가공 연산은 상기 호스트에 의해 요청되는 전체 연산의 제 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.
제 15 항에 있어서,
상기 가공 연산은 상기 수신되는 데이터와 관련되는 정보를 모니터링하는 연산, 상기 수신되는 데이터에 기반하는 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.
제 1 포트 및 제 2 포트를 포함하는 제 1 스토리지 장치; 및
제 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.
제 19 항에 있어서,
상기 연산 결과를 얻기 위해 상기 호스트에 의해 요청되는 전체 연산은 상기 제 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.
KR1020180079419A 2017-11-17 2018-07-09 Storage device performing peer-to-peer communication with external device without intervention of host KR102527832B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170091127A (en) * 2014-11-28 2017-08-08 지멘스 메탈스 테크놀로지스 베르뫼겐스베르발퉁스 게엠베하 Method for casting metal strip with crown control

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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