KR20210134997A - 연산 스토리지 및 네트워크 기반 시스템 - Google Patents

연산 스토리지 및 네트워크 기반 시스템 Download PDF

Info

Publication number
KR20210134997A
KR20210134997A KR1020217035418A KR20217035418A KR20210134997A KR 20210134997 A KR20210134997 A KR 20210134997A KR 1020217035418 A KR1020217035418 A KR 1020217035418A KR 20217035418 A KR20217035418 A KR 20217035418A KR 20210134997 A KR20210134997 A KR 20210134997A
Authority
KR
South Korea
Prior art keywords
storage
host
data
logic
computational
Prior art date
Application number
KR1020217035418A
Other languages
English (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 마이크론 테크놀로지, 인크.
Publication of KR20210134997A publication Critical patent/KR20210134997A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

연산 스토리지와 관련된 방법, 시스템 및 장치가 설명된다. 예를 들어, 가속기에 액세스 가능한 스토리지는 호스트와 가속기 사이에 공유될 수 있고 둘 중 어느 하나에 액세스 가능하다. 연산 스토리지 시스템은 호스트에 의해, 그리고 연산 스토리지 시스템의 가속기 로직에 의해 액세스 가능한 공유 파일 시스템의 일부를 제공하는 스토리지를 포함할 수 있다. 호스트 인터페이스 로직은 데이터가 생성될 때 스토리지에 데이터를 저장하기 위해 호스트로부터 스토리지 명령을 수신하도록 구성될 수 있다. 호스트 인터페이스 로직은 가속기 로직이 스토리지에 저장된 데이터를 사용하여 연산 작업을 수행하도록 호스트로부터 스토리지 명령을 수신하도록 추가로 구성될 수 있다. 가속기 로직은 스토리지에 저장된 데이터를 사용하여 연산 작업을 수행할 수 있다.

Description

연산 스토리지 및 네트워크 기반 시스템
관련 출원에 대한 상호 참조
본 출원은 35 U.S.C. §119 하에 2019년 3월 29일자로 출원된 미국 가출원 제62/826,591호의 최초 출원일의 이점을 주장하며, 이의 전체 내용은 모든 목적을 위해서 그의 전문이 참조에 의해 본 명세서에 원용된다.
기술분야
본 명세서에 기술된 예는 일반적으로 연산 스토리지(computational storage) 및 시스템에 관한 것이다.
종종 가속기로서 지칭되는 이종 컴퓨팅 유닛은 전형적으로 일반적인 CPU와 다른 아키텍처와 명령어 세트를 가진다. 일부 가속기는 동시에 작동하는 부동 소수점 연산 코어를 가질 수 있고, 일부 가속기는 특정 애플리케이션을 가속하기 위해 맞춤형 연산 로직(compute logic)을 가질 수 있다. 애플리케이션에 가속기를 통합하기 위해, 프로그래머는 애플리케이션을 프로파일링하고, 연산 집약적 작업을 식별하고, 이어서 애플리케이션을 호스트 코드와 가속기 코드로 구획할 수 있다. 실행 동안, 호스트 애플리케이션은 입력 데이터를 가속기로 전달하고, 가속기는 입력 데이터에 대한 작업을 수행하고, 이어서 결과를 호스트에 다시 기록하도록 프로그래밍된다.
예시적인 장치가 본 명세서에서 설명된다. 장치의 일부 예는 호스트 인터페이스, 및 호스트 인터페이스를 통해 호스트와 연결되고 호스트로부터 통신된 연산 작업을 수행하도록 구성된 로직을 포함한다. 로직에 결합된 스토리지 제어기는 비휘발성 메모리를 포함하는 스토리지와 통신하도록 구성되며, 스토리지는 로직과 호스트 사이의 공유 파일 시스템의 일부를 형성하고, 스토리지에 상주하는 데이터는 호스트 디바이스로부터 통신된 연산 작업을 위해 로직에 의해 액세스 가능하다.
일부 예에서, 데이터는 호스트로부터의 명령에 응답하여 생성될 수 있고, 데이터는 데이터의 생성 시에 스토리지에 저장될 수 있다.
일부 예에서, 공유 파일 시스템은 하나 이상의 추가 호스트에 의해 추가로 공유될 수 있다.
일부 예에서, 로직은 주문형 집적 회로(ASIC)를 포함할 수 있다.
일부 예에서, 로직은 필드 프로그램 가능 게이트 어레이(FPGA)를 포함할 수 있고, 로직은 연산 작업을 수행하는 로직을 구성하기 위해 호스트로부터 명령어를 수신하도록 구성될 수 있다.
일부 예는 호스트 인터페이스 및 로직에 결합된 메모리 제어기를 더 포함할 수 있다.
일부 예에서, 메모리 제어기는 호스트로부터 추가 데이터를 수신하고, 추가 데이터를 로직에 통신하도록 구성될 수 있다.
일부 예에서, 로직은 연산 작업의 결과를 스토리지에 기록하도록 추가로 구성될 수 있다.
일부 예는 호스트 및 로직에 의해 액세스 가능한 공유 파일 시스템의 제2 부분을 제공하도록 구성된 제2 스토리지를 더 포함할 수 있다.
방법의 예가 본 명세서에서 설명된다. 일부 예시적인 방법은 스토리지 제어기에 결합된 로직에서의 연산 작업을 호스트로부터 수신하는 단계로서, 스토리지 제어기는 비휘발성 메모리를 포함하는 스토리지와 통신하도록 구성되는 상기 단계, 스토리지에 상주하는 데이터에 액세스하는 단계로서, 스토리지는 호스트와 로직 사이의 공유 파일 시스템의 일부를 형성하는 상기 단계, 및 데이터가 스토리지 제어기를 통해 액세스됨에 따라서 데이터를 사용하여 연산 작업을 수행하는 단계를 포함한다.
일부 예에서, 제2 스토리지는 공유 파일 시스템의 제2 부분을 형성할 수 있고, 연산 작업을 수행하는 단계는 제2 스토리지에 상주하는 제2 데이터를 사용하는 단계를 더 포함한다.
일부 예에서, 스토리지 제어기는 호스트에 의한 스토리지에 대한 액세스를 제공하기 위해 호스트 인터페이스 로직에 결합될 수 있다.
일부 예시적인 방법은 연산 작업의 결과로서 생성된 데이터를 스토리지에 기록하는 단계를 더 포함할 수 있다.
일부 예에서, 호스트로부터 수신된 연산 작업은 연산 작업의 수행을 위해 로직을 맞춤화하기 위한 명령어를 포함할 수 있다.
시스템의 예가 본 명세서에서 설명된다. 일부 예시적인 시스템은 비휘발성 메모리를 포함하는 스토리지로서, 스토리지는 호스트에 의해, 그리고 스토리지와 통신하도록 구성된 스토리지 제어기에 결합된 로직에 의해 액세스 가능한 공유 파일 시스템의 일부를 제공하도록 구성되는, 상기 스토리지, 및 로직에 결합되는 호스트 인터페이스로서, 호스트 인터페이스는 데이터가 생성될 때 스토리지에 데이터를 저장하기 위해 호스트로부터 스토리지 명령을 수신하도록 구성되는, 상기 호스트 인터페이스를 포함할 수 있으며, 호스트 인터페이스는 스토리지에 저장된 데이터를 사용하여 연산 작업을 수행하는 로직을 위하여 호스트로부터 작업을 수신하도록 추가로 구성되며, 로직은 스토리지에 저장된 데이터를 사용하여 연산 작업을 수행하도록 구성된다.
일부 예에서, 로직은 연산 작업의 결과를 스토리지에 기록하도록 추가로 구성될 수 있다.
일부 예에서, 로직은 연산 작업을 수행하기 위한 로직을 구성하기 위해 호스트로부터 명령어를 수신하도록 추가로 구성될 수 있다.
일부 예시적인 시스템은 호스트 및 로직에 의해 액세스 가능한 공유 파일 시스템의 제2 부분을 제공하도록 구성된 제2 스토리지를 더 포함할 수 있다.
일부 예에서, 연산 작업은 제2 스토리지에 상주하는 제2 데이터를 추가로 사용할 수 있고, 로직은 스토리지에 저장된 데이터 및 제2 스토리지의 제2 데이터를 사용하여 연산 작업을 수행하도록 추가로 구성될 수 있다.
도 1은 본 명세서에서 설명된 예에 따른 환경(100)의 개략도이다.
도 2는 본 명세서에서 설명된 예에 따른 가속 아키텍처(200)의 개략도이다.
도 3은 본 명세서에서 설명된 예에 따른 연산 스토리지 시스템(300)의 개략도이다.
도 4는 본 명세서에서 설명된 예에 따른 방법(400)을 도시한다.
도 5는 본 명세서에서 설명된 예에 따른 방법(500)을 도시한다.
도 6은 본 명세서에서 설명된 예에 따른 데이터 패킷(600)을 도시한다.
기계 학습, 인공 지능 및 일반적으로 대용량 데이터 세트를 포함하여 데이터 분석이 더욱 복잡해짐에 따라서, 연산 속도는 가속기의 사용을 통하여 향상될 수 있다. 가속기는 일반적으로 지정된 연산 작업을 수행하기 위해 제공되는 하드웨어(예를 들어, 회로)를 지칭한다. 예를 들어, 가속기는 특정 연산을 수행하도록 설계될 수 있는 하나 이상의 필드 프로그램 가능 게이트 어레이(FPGA) 및/또는 주문형 집적 회로(ASIC)를 포함할 수 있다. 연산 집약적 작업이 호스트 CPU로부터 오프로드되고 가속기에 의해 수행될 수 있어서, 호스트 CPU는 다른 작업을 계속 실행하도록 자유롭다. 그러나, 연산 작업을 가속기로 오프로드하는 것은 때때로 호스트 CPU로부터, 가속기에 의해 액세스 가능한 임시 메모리(예를 들어, DRAM 버퍼)로 연산 작업에서 사용된 데이터(예를 들어, 작업에 의해 분석된 데이터)를 전송하는 것을 포함한다. 호스트 CPU로부터 데이터를 검색하고 데이터를 가속기 메모리로 전송하는데 사용되는 시간과 에너지는 복잡한 연산 작업을 위하여 호스트 CPU를 사용하는 대신 가속기의 사용을 통해 실현되는 시간 및 에너지 절약에 상당한 영향을 미칠 수 있다.
본 명세서에 기술된 연산 스토리지 시스템의 예는 일반적으로 가속기에 액세스 가능한 스토리지를 제공하며, 스토리지는 호스트와 가속기 사이에서 공유되는 공유 파일 시스템의 일부를 형성한다. 호스트와 가속기가 모두 스토리지의 데이터에 액세스할 수 있기 때문에, 데이터가 처음 시스템에 들어올 때(예를 들어, 외부 소스로부터 수집 또는 다운로드를 통해, 또는 호스트에 의한 생성을 통해), 호스트는 스토리지에 데이터를 저장할 수 있다. 스토리지의 데이터를 이용하는 작업을 수행하기 위해, 호스트는 하나 이상의 명령(예를 들어, 일련의 API 호출)을 가속기에 전송하여, 스토리지의 데이터에 액세스하고, 호스트에 의해 식별된 연산 작업을 수행할 수 있다. 데이터가 공유 파일 시스템의 일부이기 때문에, 호스트는 호스트와 가속기 사이의 인터페이스를 통해 데이터 자체를 전송하는 대신에 데이터에 포인터를 전송하여, 시간과 리소스를 절약한다. 작업을 수행하도록 사용되는 가속기에서의 로직과 스토리지 사이의 인터페이스는 호스트와 가속기 사이의 인터페이스와 다르고 일부 예에서 이보다 더 빠를 수 있다. 이러한 방식으로, 가속기 로직과 스토리지 사이의 인터페이스를 사용하여 데이터에 액세스하는 것은 가속기 로직에 의한 사용을 위해 호스트 인터페이스를 통해 데이터를 수신하는 것보다 바람직할 수 있다.
도 1은 연산 스토리지 시스템(100)의 예시적인 사용을 도시한다. 도 1에 도시된 바와 같이, 호스트(106)와 서버(102)는 네트워크(104)를 통해 연결된다. 서버(102)는 연산 스토리지 시스템(300)을 포함한다. 예를 들어, 연산 스토리지 시스템(300)이 서버(102)의 랙에 위치된 하드웨어의 개별 조각일 수 있어서, 연산 스토리지 시스템(300)의 가속기 로직과 연산 스토리지 시스템(300)의 스토리지는 물리적으로 연결될 수 있다. 다른 구현예에서, 연산 스토리지 시스템(300)의 컴포넌트는 서버(102)의 개별 부분에 또는 네트워크(104)를 통해 액세스 가능한 추가 서버에 위치될 수 있다. 도 1에 도시된 컴포넌트는 예시일 뿐이다. 추가의, 더 적은 및/또는 상이한 컴포넌트가 다른 예에서 사용될 수 있다.
다양한 실시형태에서, 네트워크(104)는 인터넷, 근거리 통신망(LAN), 광역 통신망(WAN), 및/또는 다른 네트워크(들)를 사용하여 구현될 수 있다. 전통적인 데이터 네트워킹 프로토콜에 더하여, 일부 실시형태에서, 데이터는 근거리 통신(NFC), 블루투스, 셀룰러 네트워크 등을 포함하는 프로토콜 및/또는 표준에 따라서 통신될 수 있다. 또한, 네트워크(104)는 도 1에 도시된 다양한 디바이스 및 컴포넌트 사이의 상이한 연결을 포함할 수 있다. 예를 들어, 호스트(106)는 WAN 연결을 통해 서버(102) 및 연산 스토리지 시스템(300)에 연결되고, 인터넷을 통해 제3자 스토리지(110)에 연결되고, 셀룰러 네트워크를 통해 데이터 수집 디바이스(108)에 연결될 수 있다. 호스트(106), 서버(102), 및 다른 컴포넌트는 주변 컴포넌트 상호 연결 익스프레스 (PCIe) 인터페이스와 같은 물리적 연결을 통해 네트워크(104)에 연결될 수 있다.
본 명세서에서 설명된 예는 호스트(106)와 같은, 호스트를 포함할 수 있고 그리고/또는 호스트와 함께 이용될 수 있다. 호스트(106)는 컴퓨터, 랩톱, 태블릿, 휴대전화, 스마트폰, 스마트 스피커, 차량(예를 들어, 자동차) 또는 가전 제품을 포함하지만 이에 제한되지 않는 임의의 수의 컴퓨팅 디바이스를 사용하여 구현될 수 있다. 일반적으로, 호스트(106)는 중앙 처리 유닛(CPU) 및/또는 그래픽 처리 유닛(GPU)과 같은 하나 이상의 프로세서를 포함할 수 있다. 호스트(106)는 일반적으로 프로세서(들)를 사용하여 실행 가능한 명령어(예를 들어, 소프트웨어)를 실행하는 것에 의해 동작을 수행할 수 있다. 본 명세서에 설명된 바와 같이, 일부 예에서, 호스트(106)는 특정 연산 작업의 가속을 얻기 위해 하나 이상의 서버 및/또는 연산 스토리지 시스템과 통신할 수 있다.
본 명세서에서 설명된 예는 도 1의 데이터 수집 디바이스(108)와 같은 데이터 수집 디바이스를 포함할 수 있다. 단일 데이터 수집 디바이스(108)가 도시되었지만, 임의의 수의 데이터 수집 디바이스가 본 명세서에서 설명된 시스템에 포함될 수 있다. 드론, 스마트폰, 스마트 스피커, 컴퓨터, 센서, 비디오 카메라, 카메라, 마이크 등을 포함하는 임의의 수의 디바이스가 데이터 수집 디바이스(108)를 구현하기 위해 사용될 수 있다.
본 명세서에서 설명된 예는 도 1의 제3자 스토리지(110)와 같은 스토리지 디바이스를 포함할 수 있다. 예를 들어, 제3자 스토리지(110)는 데이터베이스, 서버 또는 인터넷 또는 다른 네트워크(104)를 통해 액세스 가능한 다른 데이터의 저장소일 수 있다. 제3자 스토리지(110)는 하나 이상의 물리적 디바이스를 포함할 수 있으며, 일부 구현예에서 둘 이상의 상이한 제3자에 속하는 스토리지 컴포넌트 및 디바이스를 포함할 수 있다.
본 명세서의 예는 도 1의 연산 스토리지 시스템(300)과 같은 연산 스토리지 시스템을 포함하는 도 1의 서버(102)와 같은 서버를 포함하거나 또는 이와 함께 이용될 수 있다. 연산 스토리지 시스템(300)은 연산 작업 및 저장을 수행하도록 구성된 가속기 로직을 광범위하게 포함한다. 연산 스토리지 시스템(300)의 스토리지는 비휘발성 메모리일 수 있고, 스토리지 시스템은 본 명세서에 설명된 프로세스의 다양한 실시형태를 구현하기 위해 컴퓨터 판독 가능 데이터 및 명령어를 저장하도록 구성된 다른 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 가속기 로직은 구성 가능한 로직(예를 들어, 하나 이상의 FPGA)을 포함할 수 있거나, 또는 연산 스토리지 시스템(300) 내의 휘발성 또는 비휘발성 메모리에 저장된 컴퓨터 실행 가능한 명령어일 수 있다.
도 1에 도시된 시스템을 사용하여, 호스트(106)는 데이터 수집 디바이스(108)에 의한 데이터의 수집을 개시하고, 연산 스토리지 시스템(300)을 사용하여 수집된 데이터의 분석을 지시할 수 있다. 호스트(106)는 또한 제3자 스토리지(110)로부터의 분석을 위해 데이터에 액세스하고, 연산 스토리지 시스템(300)을 사용하여 그 데이터의 직접적인 분석을 지시할 수 있다.
도 1에 도시된 하나의 예에서, 호스트(106)는 데이터 수집 디바이스(108)에 의한 데이터 수집 및 연산 스토리지 시스템(300)을 사용하여 수집된 데이터의 분석을 지시한다. 데이터 수집 디바이스(108)는 이미지 데이터를 수집하는 무인 항공기(UAV)로 도시되었지만, 다른 데이터 수집 디바이스는 예를 들어 위성, 다른 유인 또는 무인 항공기, 기상 관측소, 의료 센서, 의료 영상 디바이스, 게놈 시퀀서, 전파 망원경 등을 포함하는 호스트(106)에 의해 지시받을 수 있다. 본 명세서에서 설명된 예에서, 데이터 수집 디바이스(108)는 데이터 수집 디바이스(108)에 의해 캡처된 이미지 데이터에 포함된 육지 영역에 대한 토지 커버 특징을 결정하기 위해 호스트(106)에 의한 최대 가능성 분류(MLC)에서 사용하기 위해 넓은 육지 영역에 걸쳐서 항공 이미지 데이터를 캡처한다.
호스트(106)는 예를 들어 육지 적용 범위의 좌표, 고도, 이미지 해상도 등과 같은 입력을 제공하는 것에 의해 데이터를 수집하도록 데이터 수집 디바이스(108)에 지시할 수 있다. 다른 구현예에서, 데이터 수집 디바이스(108)는 데이터 수집을 개시하고, 호스트(106)에 수집된 데이터를 통신할 수 있다. 일단 데이터가 데이터 수집 디바이스(108)에 의해 수집되면, 호스트(106)는 데이터 수집 디바이스(108)에게 데이터를 서버(102)에 있는 연산 스토리지 시스템(300)에 저장하도록 지시할 수 있다. 연산 스토리지 시스템(300)의 스토리지가 호스트(106)에 의해 직접 주소 지정 가능하기 때문에, 호스트(106)는 데이터를 저장하기 위해 공유 파일 시스템 내의 특정 위치를 데이터 수집 디바이스(108)에 제공할 수 있다. 공유 파일 시스템은 예를 들어 호스트의 메모리에 있는 데이터, 연산 스토리지 시스템(300)의 스토리지에 위치된 데이터, 및 일부 구현예에서 다른 물리적 위치에 저장된 데이터를 포함하는 파일 시스템일 수 있다. 공유 파일 시스템 내에 저장된 데이터는 호스트 및 연산 스토리지 시스템(300)의 가속기 로직 모두에 의해 주소 지정 가능하다.
데이터 수집 디바이스(108)에 의해 수집된 데이터를 사용하여 연산 작업(예를 들어, MLC)를 실행하기 위해, 호스트(106)는 이미지 데이터에 대한 MLC를 수행하기 위해 연산 스토리지 시스템(300)의 가속기 로직에 일련의 명령(예를 들어, API 호출)을 전송할 수 있다. 예를 들어, 호스트(106)는 가속기 로직을 초기화하고, 파라미터를 가속기 로직으로 전달하고, 가속기 로직에서 작업을 착수할 수 있다. 호스트(106)에 의해 가속기 로직으로 전달되는 파라미터는 일반적으로 연산 스토리지 시스템(300) 상의 데이터에 대한 포인터 및 데이터 크기를 포함한다. 필드 프로그램 가능 게이트 어레이(FPGA)와 같은 가속기 로직이 재구성 가능한 일부 구현예에서, 호스트(106)는 구성 정보(configuration information)를 가속기 로직으로 전송할 수 있다. 가속기 로직이 주문형 집적 회로(ASIC)인 다른 구현예에서, 호스트(106)는 작업을 위해 컴파일된 명령어를 가속기 로직으로 전송할 수 있다. 호스트(106)가 가속기 로직에서 작업을 착수하기 위해 API 호출을 연산 스토리지 시스템(300)에 전송할 때, 가속기 로직은 연산 스토리지 시스템(300)의 스토리지로부터 데이터에 액세스하는 것에 의해 이미지 데이터에 대한 MLC를 수행한다.
가속기 로직이 호스트(106)에 의해 요청된 작업을 실행하였으면, 작업의 결과는 연산 스토리지 시스템(300)에 저장되고, 호스트(106)로 반환되고, 호스트(106)의 디스플레이에서 디스플레이되고, 호스트(106)에 의해 지시된 바와 같이, 상이한 스토리지 위치, 또는 이전 옵션의 임의의 조합으로 전송될 수 있다.
연산 스토리지 시스템(300)은 제3자 스토리지(110)에 초기에 저장된 데이터에 대한 분석을 실행하기 위해 유사하게 사용될 수 있다. 예를 들어, 호스트(106)는 다양한 연구 엔티티 또는 다른 당사자에 의해 수집되고 제3자 스토리지(110)에 저장되고 인터넷 또는 다른 네트워크(104)를 통해 액세스 가능한 이미지 데이터의 공유 데이터 저장소에 대한 액세스를 가질 수 있다. 제3자 스토리지(110)의 데이터를 다운로드하기 위해, 호스트(106)는 연산 스토리지 시스템(300)의 공유 파일 시스템 내의 다운로드 위치를 포함하는 다운로드 요청을 개시할 수 있다. 다운로드된 데이터의 분석은 데이터 수집 디바이스(108)에 의해 수집된 데이터에 대해 위에서 설명한 것과 동일한 방식으로 발생할 수 있다.
일부 구현예에서, 하나 이상의 호스트(106)는 서버(102)에 연결되어 연산 스토리지 시스템(300)을 공유할 수 있다. 또한, 서버(102)는 하나 이상의 연산 스토리지 시스템(300)을 포함할 수 있으며, 다수의 연산 스토리지 시스템의 스토리지 컴포넌트는 공유 데이터에 대한 분석을 수행하는 다수의 호스트에 의해 액세스 가능한 공유 파일 시스템을 함께 형성할 수 있다. 예를 들어, 가속 시스템은 서버(102)와 통신하는 호스트에 의해 사용하기 위한 하나 이상의 연산 스토리지 시스템 및 다른 이종 컴퓨팅 시스템을 포함할 수 있다.
호스트(106), 데이터 수집 디바이스(108), 제3자 스토리지(110), 및 기타 컴퓨팅 디바이스는 도 6에 도시된 패킷(600)과 같은 데이터 패킷을 사용하여 연산 스토리지 시스템(300)과 통신할 수 있다. 패킷(600)은 라우팅 정보(602), 패킷 유형(604), 구성 정보(606), 및 페이로드(608)를 포함한다. 패킷의 유형에 의존하여, 패킷은 추가적인 또는 상이한 정보를 포함할 수 있다. 패킷(600)은 일반적으로 호스트(106) 또는 데이터 수집 디바이스(108)와 연산 스토리지 시스템(300) 사이의 통신을 위한 예시적인 패킷이다.
라우팅 정보(602)는 연산 스토리지 디바이스를 식별하고, 소스 식별자 또는 네트워크 흐름 제어를 더 포함할 수 있다. 예시적인 구현에서, 라우팅 정보(602)는 지정된 포트를 포함하는 IP 주소이다. 패킷 유형(602)은 패킷(600)의 유형 또는 목적을 식별한다. 예를 들어, 패킷(600)은 순수 데이터 패킷, 제어 또는 명령 패킷, 또는 구성 패킷일 수 있다. 일반적으로 제어 및 명령 패킷은 구성(606) 또는 페이로드(608)를 포함하지 않는다.
구성 패킷은 예를 들어 작업을 수행하도록 연산 스토리지 시스템(300)의 로직을 구성하는 정보일 수 있는 구성(606)을 포함한다. 연산 스토리지 시스템(300)의 로직이 FPGA를 포함하는 경우에, 구성(606)은 비트스트림일 수 있다. 연산 스토리지 시스템(300)의 로직이 ASIC을 포함하는 경우에, 구성(606)은 컴파일된 명령어일 수 있다. 순수 데이터 패킷은 일반적으로 페이로드(608)를 포함한다. 페이로드(608)는 일반적으로 패킷(600)에 의해 운반되는 데이터이다. 일부 패킷(600)은 구성 패킷, 및 구성(606) 및 페이로드(608) 모두를 포함하는 스토리지 패킷의 조합일 수 있다. 일부 구현예에서, 구성(606) 및 페이로드(608)는 연산 스토리지 시스템(300)이 외부 위치로부터 그 구성 또는 페이로드 데이터를 검색할 수 있도록 연산 스토리지 시스템(300)을 외부 위치(예를 들어, 제3자 스토리지(110))로 지향시키는 포인터일 수 있다.
도 2는 본 명세서에서 설명된 예에 따라서 배열된 가속 아키텍처(200)의 개략도이다. 도 2는 가속 시스템(202)과 통신하는 호스트(106)를 포함한다. 호스트(106)는 호스트 CPU(204), 호스트 메모리(206), 및 주변 장치 인터페이스(240)에 결합된 호스트 스토리지(208)를 포함한다. 주변 장치 인터페이스는 가속 시스템(202)의 스위치(210)에 결합된다. 가속 시스템(202)은 이종 컴퓨팅 시스템(212), 연산 스토리지 시스템(300), 및 주변 장치 인터페이스(242)에 결합된 연산 스토리지 시스템(214)을 포함한다. 이종 컴퓨팅 시스템(212)은 프로세서(216)에 결합된 메모리(218)를 포함한다. 연산 스토리지 시스템(300)은 프로세서(220)에 결합된 스토리지(224)를 포함한다. 연산 스토리지 시스템(214)은 프로세서(222)에 결합된 스토리지(226)를 포함한다. 도 2에 도시된 소자들은 예시일 뿐이다. 추가적인, 상이한, 및/또는 더 적은 수의 컴포넌트가 다른 예에서 사용될 수 있다.
비록 도 2의 호스트(106)가 도 1의 호스트(106)와 동일한 도면 부호를 사용하여 예시되더라도, 일부 예에서, 도 1의 호스트(106)가 도 2에서 구체적으로 도시된 것과는 다른 변형으로 구현될 수 있다는 것이 이해되어야 한다. 유사하게, 비록 도 2의 연산 스토리지 시스템(300)이 도 1의 연산 스토리지 시스템(300)과 동일한 도면 부호를 사용하여 예시되더라도, 일부 예에서, 도 1의 연산 스토리지 시스템(300)이 도 2에 구체적으로 도시된 것과는 다른 변형으로 구현될 수 있다는 것이 이해되어야 한다.
본 명세서에서의 예는 호스트(106)와 같은, 호스트를 포함할 수 있고 그리고/또는 호스트와 함께 이용될 수 있다. 호스트(106)는 컴퓨터, 랩톱, 태블릿, 휴대폰, 스마트폰, 스마트 스피커, 차량(예를 들어, 자동차), 또는 가전 제품을 포함하지만 이에 제한되지 않는 임의의 수의 컴퓨팅 디바이스를 사용하여 구현될 수 있다. 일반적으로, 호스트(106)는 CPU(204) 및/또는 그래픽 처리 유닛(GPU)과 같은 하나 이상의 프로세서를 포함할 수 있다. 호스트(106)는 일반적으로 프로세서(들)를 사용하여 실행 가능한 명령어(예를 들어, 소프트웨어)를 실행하는 것에 의해 동작을 수행할 수 있다. 본 명세서에 설명된 바와 같이, 일부 예에서, 호스트(106)는 특정 연산 작업의 가속을 얻기 위해 하나 이상의 서버 및/또는 연산 스토리지 시스템과 통신할 수 있다.
본 명세서에서의 예는 가속 시스템(202)과 같은, 가속 시스템을 포함할 수 있고 그리고/또는 가속 시스템과 함께 이용될 수 있다. 가속 시스템(202)은, 이종 컴퓨팅 시스템(212), 연산 스토리지 시스템(300), 및 연산 스토리지 시스템(214)이 물리적으로 결합되거나 또는 이종 컴퓨팅 시스템(212), 연산 스토리지 시스템(214), 및 연산 스토리지 시스템(300)이 통신 가능하게 연결될 수 있도록(예를 들어, 서버 상의 또는 네트워크에 의해 연결된 개별 서버 상의 개별 소자로서) 단일 편의 하드웨어일 수 있다.
본 명세서에서의 가속 시스템(202)의 예는 이종 컴퓨팅 시스템(212), 연산 스토리지 시스템(300), 및 연산 스토리지 시스템(214)을 포함할 수 있다. 일부 구현예에서, 이종 컴퓨팅 시스템(212), 연산 스토리지 시스템(214), 및 연산 스토리지 시스템(300)은 유사하거나 동일한 하드웨어 컴포넌트를 가질 수 있고, 호스트(106)로부터 수신된 명령에 따라 연산 스토리지 시스템 또는 이종 컴퓨팅 시스템으로서 작용할 수 있다. 연산 스토리지 시스템(300 및 212)은 예를 들어 메모리(218)와 유사한 메모리를 포함할 수 있다.
본 명세서에서 설명된 예시적인 연산 스토리지 시스템(300 및 212) 및 예시적인 이종 컴퓨팅 시스템은 프로세서(예를 들어, 도 2의 프로세서(216, 220, 및 222))를 포함하거나 이용할 수 있다. 프로세서(216, 220, 및 222)는 연산 작업을 실행하기 위한 처리 로직으로서 구현될 수 있다. 예를 들어, 프로세서(216, 220, 및 222)는 하나 이상의 FPGA와 같은 구성 가능한 로직에 의해 구현될 수 있거나, 또는 휘발성 또는 비휘발성 메모리에 저장된 컴퓨터 판독 가능한 명령어로서 구현될 수 있다.
예시적인 연산 스토리지 시스템(300 및 212)은 스토리지(224) 및 스토리지(226)와 같은 스토리지를 포함하거나 이용할 수 있다. 스토리지(224 및 226)는 SSD, NVMe SSD, 영구 메모리, 기계적 드라이브 및 다른 유형의 비휘발성 메모리 또는 비휘발성 스토리지를 포함하지만 이에 제한되지 않는 비휘발성 스토리지 컴포넌트일 수 있다.
호스트(106)는 주변 장치 인터페이스(240)에 연결되고, 주변 장치 인터페이스(240)를 사용하여 가속 시스템(202)에 데이터 및 명령을 전송한다. 주변 장치 인터페이스(240)는 가속 시스템(202)의 스위치(210)에 통신 가능하게 연결되며(예를 들어, 물리적 또는 무선 연결되며), 스위치는 주변 장치 인터페이스(240)로부터 수신된 데이터를 가속 시스템(202)의 주변 장치 인터페이스(242)로 전환한다. 이종 컴퓨팅 시스템(212), 연산 스토리지 시스템(214), 및 연산 스토리지 시스템(300)은 호스트(106)로부터 명령 및 데이터를 수신하기 위해 주변 장치 인터페이스(242)에 연결된다. 일부 구현예에서, 주변 장치 인터페이스(240) 및 주변 장치 인터페이스(242)는 PCIe 인터페이스이더라도, 다른 유형의 인터페이스가 고려된다.
도 2에 도시된 가속 아키텍처(200)는 다수의 방식으로 데이터 분석을 지원할 수 있다. 호스트 CPU(204)는 호스트 스토리지(208)에 저장된 데이터에 대한 연산 작업을 실행할 수 있다. 이종 컴퓨팅 시스템(212)의 프로세서(216)는 또한 이종 컴퓨팅 시스템(212)에 데이터를 전송하는 것에 의해 호스트 스토리지(208)에 저장된 데이터에 대한 연산 작업을 실행하는데 사용될 수 있다. 연산 스토리지 시스템(300)의 프로세서(220)는 연산 스토리지 시스템(300)의 스토리지(224) 또는 연산 스토리지 시스템(214)의 스토리지(226)에 저장된 데이터에 대한 작업을 실행하기 위해 호스트 스토리지(208)에 의해 사용될 수 있다.
호스트 스토리지(208)에 저장된 데이터를 분석하기 위해, 데이터는 호스트 스토리지(208)로부터 호스트 메모리(206)로 경로(228)를 따라서, 그리고 호스트 메모리(206)로부터 호스트 CPU(204)로 경로(230)를 따라서 이동한다. 결과적인 데이터는 호스트 CPU(204)로부터 호스트 메모리(206)로 경로(230)를 따라서, 그리고 호스트 메모리(206)로부터 호스트 스토리지(208)로 경로(228)를 따라서 이동할 수 있다. 호스트 스토리지(208)의 데이터를 분석하기 위해 호스트 CPU(204)를 사용하는 것은 호스트(106)와 가속 시스템(202) 사이의 데이터 이동을 제거한다. 그러나, 연산 집약적인 작업을 위하여, 분석은 호스트 CPU(204)를 완전히 이용할 수 있거나, 또는 다른 작업을 동시에 실행하는 호스트 CPU(204)로 인하여 시간이 오래 걸릴 수 있다.
이종 컴퓨팅 시스템(212)의 프로세서(216)는 또한 호스트 스토리지(208)에 저장된 데이터를 분석하는데 사용될 수 있다. 데이터는 경로(228)를 따라서 호스트 스토리지(208)로부터 호스트 메모리(206)로 이동하고, 이어서 경로(232)를 따라서(일반적으로 주변 장치 인터페이스(240), 스위치(210), 및 주변 장치 인터페이스(242)를 통해) 호스트 메모리(206)로부터 이종 컴퓨팅 시스템(212)의 메모리(218)로 이동한다. 마지막으로, 데이터는 처리를 위해 이종 컴퓨팅 시스템(212)의 메모리(218)로부터 프로세서(216)로 이동한다. 일부 데이터 집약적인 작업에 대하여, 데이터 이동의 이러한 사이클은 단일 명령을 실행하기 위해 한번 이상 발생할 수 있다. 예를 들어, 연산 작업을 위한 입력으로서 사용되는 데이터는 이종 컴퓨팅 시스템(212)의 메모리(218)에서 이용 가능한 것보다 많은 저장 공간을 사용할 수 있다. 호스트(106)와 이종 컴퓨팅 시스템(212) 사이의 데이터의 이동, 특히 반복된 이동은 많은 양의 입력 데이터가 있는 작업에 대해 총 연산 시간이 느릴 수 있다.
도 1에 대해 설명된 바와 같이, 호스트(106)는 추후 분석을 위해 데이터를 생성하거나 수집할 때 공유 파일 시스템의 부분으로서, 연산 스토리지 시스템(300)의 스토리지(224) 및 연산 스토리지 시스템(214)의 스토리지(226)를 이용할 수 있다. 데이터가 연산 스토리지 시스템(300)의 스토리지(224)에 저장되는 예에서, 호스트(106)는 데이터를 분석하기 위한 명령을 실행하도록 연산 스토리지 시스템(300)의 프로세서(220)에 지시하기 위해 일련의 API 호출 또는 다른 명령을 전송할 수 있다. 데이터는 프로세서(220)가 명령을 실행하기 위해 경로(236)를 따라서 스토리지(224)로부터 프로세서(220)로 이동된다. 데이터는 가속 시스템(202)과 호스트(106) 사이에서 이동하지 않아, 시간과 데이터 전달 리소스를 절약한다.
데이터가 연산 스토리지 시스템(214)의 스토리지(226)에 저장되는 예에서, 호스트(106)는 데이터를 분석하기 위한 작업을 실행하도록 연산 스토리지 시스템(300)의 프로세서(220)에 지시할 수 있다. 연산 스토리지 시스템(214)과 연산 스토리지 시스템(300)이 모두 주변 장치 인터페이스(242)에 연결되기 때문에, 스토리지(226)로부터의 데이터는 경로(238)를 따라서 스토리지(226)로부터 프로세서(220)로 전송되어, 호스트(106)를 우회하고 데이터 전달을 최소화할 수 있다. 이러한 것은 프로세서(220)가 데이터의 하나 이상의 서브세트를 사용하여 연산 작업을 수행하도록 지시받은 경우에 특히 유용할 수 있으며, 여기에서, 일부 데이터는 스토리지(224)에 저장되고 일부 데이터는 스토리지(226)에 저장된다.
모든 구현에 대해, 결과적인 데이터는 입력 데이터와 동일한 경로 또는 상이한 경로를 사용하여 스토리지로 전송될 수 있다. 예를 들어, 이종 컴퓨팅 시스템(212)의 프로세서(216)는 호스트 스토리지(208)로부터의 입력 데이터를 사용하여 연산 작업을 실행할 수 있다. 사용자가 결과적인 데이터의 추가적인 분석을 실행하기 위해 연산 스토리지 시스템으로서 이종 컴퓨팅 시스템(212)을 추후에 사용하기를 원하면, 결과적인 데이터는 이종 컴퓨팅 시스템(212)의 스토리지(도 2에 도시되지 않음)에 저장될 수 있다. 대안적으로, 결과적인 데이터는 연산 스토리지 시스템(300)의 스토리지(224), 연산 스토리지 시스템(214)의 스토리지(226)에 저장되거나, 또는 호스트 스토리지(208)에서의 저장을 위해 경로(232)를 따라서 호스트(106)로 반환될 수 있다. 유사하게, 프로세서(220), 프로세서(222) 또는 호스트 CPU(204)로부터의 결과적인 데이터는 가속 시스템(202) 내의 임의의 스토리지 컴포넌트에서 저장을 위해 전송될 수 있다.
도 3은 연산 스토리지 시스템(300)을 도시한다. 도 1 및 도 2에 대하여 전술한 바와 같이, 연산 스토리지 시스템(300)은 서버(예를 들어, 서버(102))에서 개별적으로, 분산된 컴포넌트로서, 또는 가속 시스템(예를 들어, 가속 시스템(202))의 일부로서 구현될 수 있다. 연산 스토리지 시스템(300)이 스토리지(314)를 포함하는 것으로 도시되었지만, 일부 구현예에서, 연산 스토리지 시스템(300)은 하나 이상의 호스트(예를 들어, 호스트(106))와 연산 스토리지 시스템(300)의 가속기 로직(308) 사이에서 공유 파일 시스템을 형성하는 다수의 스토리지 컴포넌트를 포함할 수 있다. 연산 스토리지 시스템(300)은 (예를 들어, 단일 보드 상에 모든 컴포넌트가 있는) 단편의 하드웨어로서 구현될 수 있거나 또는 연산 스토리지 시스템(300)에 물리적으로 또는 무선으로 연결된 스토리지 주변 장치 인터페이스(316)를 통해 연산 스토리지 시스템(300)의 다른 컴포넌트에 연결된 스토리지(314)로 구현될 수 있다.
도 3의 연산 스토리지 시스템(300)이 도 1 및 도 2의 연산 스토리지 시스템(300)과 동일한 도면 부호를 사용하여 도시되었지만, 일부 예에서, 도 1 및 도 2의 연산 스토리지 시스템(300)이 도 3에 구체적으로 도시된 것과는 다른 변형으로 구현될 수 있음이 이해되어야 한다.
본 명세서에서의 예는 도 3의 호스트 인터페이스 로직(302)과 같은 호스트 인터페이스 로직을 포함하고 그리고/또는 이와 함께 이용될 수 있다. 호스트 인터페이스 로직(302)은 호스트(106)에 직접 메모리 액세스(DMA) 능력을 제공하기 위해 다양한 방식으로 구현될 수 있다. 예를 들어, 호스트 인터페이스 로직(302)은 스트림 기반 분산-수집 DMA 엔진으로서 구현될 수 있다. 호스트 인터페이스 로직(302)은 또한 네트워크 인터페이스로서 구현될 수 있고, 연산 스토리지 시스템(300)은 네트워크에 직접 연결될 수 있는 능력을 제공한다. 호스트 인터페이스 로직(302)은 또한 연산 스토리지 시스템(300)의 일반적인 로직으로서 가속기 로직(308) 내에 내장될 수 있다.
본 명세서에서의 예는 도 3의 가속기 로직(308)과 같은 가속기 로직을 포함하고 그리고/또는 이와 함께 이용될 수 있다. 가속기 로직(308)은 연산 작업의 실행 전에 호스트(예를 들어, 호스트(106))로부터의 명령에 의해 재구성될 수 있는 FPGA와 같은 재구성 가능한 로직으로서 구현될 수 있다. 재구성은 가속기 로직(308)이 작업 실행 전에 재구성을 통해 다양한 연산 작업을 위해 사용되는 것을 가능하게 한다. 다른 구현예에서, 가속기 로직(308)은 특정 연산 작업의 반복된 실행을 위해 구성된 정적 로직일 수 있다.
본 명세서의 예는 도 3의 메모리 제어기(306)와 같은 메모리 제어기를 포함하고 그리고/또는 이와 함께 이용될 수 있다. 메모리 제어기(306)는 호스트 인터페이스 로직(302)을 통해 가속기 로직(308) 및 호스트를 위한 DDR 메모리에 대한 액세스를 제공하는 더블 데이터 레이트(DDR) 메모리 제어기일 수 있다.
본 명세서의 예는 도 3의 스토리지 제어기(304)와 같은 스토리지 제어기에 의해 관리되는 도 3의 스토리지(314)와 같은 스토리지를 포함하고 그리고/또는 이와 함께 이용될 수 있다. 스토리지 제어기(304)는 판독 및 기록 동작을 수신하고 스토리지(314)에 지시한다. 하나의 구현에서, 스토리지 제어기(304)는 비휘발성 메모리 익스프레스(NVMe) 제어기이고, 스토리지 주변 장치 인터페이스(316)는 PCIe 인터페이스이고, 스토리지(314)는 NVMe SSD이다. 다른 구현예에서, 스토리지(314)는 다른 유형의 비휘발성 메모리일 수 있다. 일부 구현예에서, 연산 스토리지 시스템(300)은 가속기 로직(308) 및 호스트(106) 모두에 의해 액세스 가능한 추가 스토리지 제어기 및 스토리지 컴포넌트를 포함할 수 있다.
명령(예를 들어, 호스트(106)로부터의 명령)은 주변 장치 인터페이스(242)를 통해 연산 스토리지 시스템(300)으로 들어간다. 호스트(106)(및 연산 스토리지 시스템(300)를 사용하는 임의의 다른 호스트)로부터의 명령은 일반적으로 스토리지 제어기(304), 가속기 로직(308), 또는 메모리 제어기(306) 중 하나 이상에 액세스하도록 포맷된다. 예를 들어, 명령은 일반 스트림 파라미터(regular stream parameter)에 추가하여 특정 리소스의 전용 스트림 ID 및 메모리 매핑을 포함하는 스트림으로서 호스트(106)로부터 포맷될 수 있다. 예를 들어, 스토리지(314)에 데이터를 저장하기 위한 호스트(106)로부터의 스트림은 스토리지 제어기(304)를 식별하는 스트림 내의 헤더를 포함할 것이다. 예를 들어, AXI 메모리-맵 프로토콜은 스토리지 제어기(304)를 식별하기 위해 사용될 수 있다.
호스트 인터페이스 로직(302)은 주변 장치 인터페이스(242)로부터 통신을 수신하고, 호스트(106)로부터 수신된 스트림에 내장된 리소스 어드레스를 파싱(parsing)하는 것에 의해 스토리지 제어기(304), 가속기 로직(308) 또는 메모리 제어기(306) 중 하나 이상으로의 통신을 지시한다. 호스트 인터페이스 로직(302)은 호스트(106)에 DMA 능력을 제공하여, 호스트 인터페이스 로직(302)으로부터 스토리지 제어기(304)로 명령 또는 데이터와 같은 통신을 보내는 것에 의해, 호스트(106)가 스토리지 제어기(304)(및 이에 따라 스토리지(314))에 액세스하는 것을 가능하게 한다. 호스트 인터페이스 로직(302)은 호스트(106)에 DMA 능력을 제공하기 위해 다양한 방식으로 구현될 수 있다. 하나의 구현에서, 호스트 인터페이스 로직(302)은 스트림 기반 분산-수집 DMA 엔진으로서 구현되어, 다수의 스트림이 스토리지 제어기(304), 가속기 로직(308), 및 메모리 제어기(306)에 동시에 액세스하는 것을 가능하게 한다. 수신된 스트림에 기초하여, 호스트 인터페이스 로직(302)은 호스트로부터 수신된 스트림을 호스트 메모리 경로(322)를 통해 메모리 제어기(306)로, 호스트 가속기 경로(320)를 통해 가속기 로직(308)으로, 또는 호스트 저장 경로(318)를 통해 스토리지 제어기(304)로 보낸다.
가속기 로직(308)은 가속기 메모리 경로(326)에 의해 메모리 제어기(306)에, 가속기 저장 경로(324)에 의해 스토리지 제어기(304)에 결합될 수 있다. 가속기 저장 경로(324) 및 가속기 메모리 경로(326) 모두 가속기 로직(308)이 메모리 제어기(306)를 통해 액세스 가능한 DDR 메모리 및 스토리지(314)에 직접 액세스하는 것을 가능하게 하도록 메모리 매핑 인터페이스(예를 들어, AXI 메모리 매핑 인터페이스)일 수 있다. 가속기 로직(308)이 메모리 제어기(306) 및 스토리지 제어기(304) 모두에 대한 연결을 포함하기 때문에, 가속기 로직(308)은 스토리지(314)에 저장된 데이터(CSS 모드), 또는 호스트로부터 전송되고 메모리 제어기(306)에 의해 액세스 가능한 DDR 메모리에 일시적으로 저장된 데이터를 분석하는데 사용될 수 있다.
예에서, 연산 스토리지 시스템(300)은 연산 스토리지 시스템(300)을 사용하여 데이터를 저장하고 분석하기 위해 호스트(예를 들어, 도 2의 호스트(106))로부터 통신을 수신한다.
위에서 설명된 바와 같이, 호스트(106)는 가속기 로직(308)을 가지는 공유 파일 시스템의 일부로서 스토리지(314)에 액세스할 수 있다. 공유 파일 시스템은 호스트(106) 및 가속기 로직(308)으로부터의 명령을 통해 Open( ), Close( ), Write( ), 및 Read( )와 같은 기본 파일 동작을 지원할 수 있다.
호스트(106)는 데이터를 저장하거나 스토리지(314)에 이전에 저장된 데이터에 액세스하기 위해 스토리지 제어기(304)에 액세스할 수 있다. 호스트(106)는 또한 스토리지(314)의 데이터(예를 들어, 외부 데이터 소스로부터 검색되거나 또는 데이터 수집 디바이스를 사용하여 수집된 데이터)의 저장을 지시하도록 스토리지 제어기(304)를 사용하여 공유 파일 시스템에 액세스할 수 있다. 호스트(106)는 일반적으로 스토리지 제어기(304)를 식별하는 호스트 인터페이스 로직(302)으로 스트림을 전송한다. 스트림은 일반적으로 스토리지(314)로의 전달을 위한 데이터 또는 스토리지(314)의 공유 파일 시스템에 있는 새로운 파일에 대한 포인터와 같은 추가 정보를 포함한다. 스트림이 수신될 때, 호스트 인터페이스 로직(302)은 스트림에서 스토리지 제어기(304) 식별의 위치를 찾고, 스트림을 스토리지 제어기(304)로 전송한다. 하나의 예에서, 새로운 파일은 호스트(106)가 데이터 수집 디바이스에 의해 수집된 데이터의 저장을 새롭게 생성된 파일에 보낼 수 있도록 스토리지(314)의 공유 파일 시스템 내에 생성된다.
호스트는 호스트(106)에 의해 분석이 개시되는 스토리지(314)에 저장된 데이터를 분석하기 위해 가속기 로직(308)을 추가로 사용할 수 있다. 호스트는 스토리지(314)의 데이터에 대한 포인터로 스트림을 포맷한 호스트 인터페이스 로직(302)에 요청을 전송할 수 있다. 요청은 호스트에 의해 요청된 연산 작업을 수행하기 위해 가속기 로직(308)을 재구성하기 위한 재구성 정보를 포함하는 추가 스트림을 포함할 수 있다. 재구성 정보를 포함하고, 연산 작업을 위한 입력으로서 사용하기 위한 데이터를 식별하는 스트림은 가속기 로직(308)을 식별하는 식별자를 포함할 수 있다. 호스트 인터페이스 로직(302)은 통신(406)을 수신하고, 식별자를 파싱하고, 스트림을 가속기 로직으로 전송한다. 일부 구현예에서, 호스트 인터페이스 로직(302)은 호스트(106)로부터 예를 들어, 메모리 제어기(306)로 다른 스트림들을 동시에 전송할 수 있다.
요청이 가속기 로직(308)을 위한 재구성 정보를 포함하는 경우에, 가속기 로직(308)은 연산 작업을 수행하도록 재구성된다. 가속기 로직(308)은 임시 저장 및 가속기 로직(308)에 의한 액세스를 위해 메모리 제어기(306)에, 재구성 정보를 포함하는 작업 실행을 위한 일부 정보를 전송할 수 있다. 가속기 로직(308)은 스토리지(314)의 데이터에 대한 포인터를 포함하는 스트림의 부분을 스토리지 제어기(304)에 전송한다. 스토리지 제어기(304)는 요청된 데이터를 검색하고, 가속기 로직(308)으로 데이터를 반환한다. 가속기 로직(308)은, 가속기 로직(308)이 재구성된 후에, 데이터가 수신됨에 따라서 가속기 로직(308)이 연산 작업을 실행하도록 메모리 제어기(306)를 통해 연산 작업에 관한 정보를 가속기 로직(308)이 액세스함에 따라서 요청된 데이터를 검색할 수 있다.
가속기 로직(308)에 의한 연산 작업의 실행 후에, 가속기 로직(308)은 일부 구현예에서 결과를 스토리지 제어기(304)에 전송하는 것에 의해 공유 파일 시스템에 결과를 저장할 수 있다. 연산 작업의 결과는 호스트(106)에서 디스플레이 또는 저장을 위하여 호스트(106)로 동시에 반환될 수 있다. 다른 구현예에서, 작업의 결과는 결과를 스토리지 제어기(304)에 통신함이 없이 호스트(106)로 직접 반환될 수 있다. 대안적으로, 결과는 호스트(106)로 결과를 반환함이 없이 스토리지 제어기(304)와의 통신에 의해 스토리지(314)에 저장될 수 있다. 결과는 또한 연산 스토리지 시스템(300) 내의 또는 외부의 다른 스토리지 컴포넌트에 저장될 수 있거나, 또는 연산 스토리지 시스템(300)에 대한 액세스와 함께 다른 호스트로 반환될 수 있다.
도 4는 본 명세서에 기술된 예에 따른 방법을 예시한다. 루틴(400)은 일반적으로 연산 스토리지 시스템(예를 들어, 연산 스토리지 시스템(300))의 일부를 형성하는 가속기 로직(예를 들어, 가속기 로직(308))에 의해 실행된다. 블록(402)에서, 루틴(400)은 가속기와 스토리지를 관리하는 스토리지 제어기 사이의 인터페이스를 제공하는 가속기 저장 경로를 통해 스토리지에 상주하는 데이터에 액세스한다. 블록(404)에서, 루틴(400)은 데이터가 가속기 저장 경로를 통해 액세스됨에 따라서 데이터를 사용하여 연산 작업을 수행한다. 블록(402) 및 블록(504)은 동시에 발생할 수 있다. 블록(406)에서, 루틴(400)은 연산 작업의 결과로서 생성된 데이터를 스토리지로 반환한다. 일부 구현예에서, 추가적인 블록이 루틴(400)에 추가될 수 있다.
일부 구현예에서, 가속기 로직은 연산 스토리지 시스템이 여러 상이한 연산 작업을 수행하는데 사용될 수 있도록 재구성 가능하다. 재구성 가능한 가속기 로직은 예를 들어 FPGA일 수 있다. 이러한 구현에서, 호스트는 특정 연산 작업을 위해 가속기 로직을 맞춤화하도록 구성 데이터를 가속기 로직으로 전송할 수 있다.
블록(402)은 가속기와 스토리지를 관리하는 스토리지 제어기 사이의 인터페이스를 제공하는 가속기 저장 경로를 통해 스토리지에 상주하는 데이터에 액세스한다. 스토리지는 가속기 로직과, 연산 스토리지 시스템에 연결된 호스트(예를 들어, 호스트(106)) 사이에서 공유되는 공유 파일 시스템의 일부를 형성한다. 따라서, 블록(402)은 가속기 로직에 의한, 스토리지에 저장된 데이터를 사용하여 연산 작업을 수행하라는 호스트로부터의 명령의 수신에 응답하여 실행될 수 있다. 호스트로부터의 요청은 일반적으로 공유 파일 시스템 내의 데이터 위치에 대한 포인터를 포함한다. 가속기 로직은 스토리지 제어기에 대한 포인터를 제공하는 것에 의해 가속기 저장 경로를 통해 데이터에 직접 액세스한다. 가속기 저장 경로를 통한 데이터의 직접적인 액세스는 일반적으로 가속기 로직이 데이터를 입력으로 사용하여 연산 작업을 시작하기 전에 데이터를 다른 메모리 위치로 이동시키지 않는다는 것을 의미한다. 대신, 가속기 로직은 가속기 저장 경로를 통해 데이터가 액세스됨에 따라서 연산 작업을 수행할 수 있다.
일부 구현예에서, 연산 스토리지 시스템은 또한 호스트에 의해 액세스 가능한 다른 유사한 연산 스토리지 시스템과 네트워크화될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 다수의 연산 스토리지 시스템은 PCIe 인터페이스를 통해 연결될 수 있다. 그 결과, 공유 파일 시스템은 인터페이스를 통해 연결된 다수의 연산 스토리지 시스템의 다수의 스토리지 컴포넌트를 사용하여 구현될 수 있고, 가속기 로직은 블록(402)의 동작에 더하여 연산 스토리지 시스템을 연결하는 인터페이스를 통해 다른 연산 스토리지 시스템의 스토리지 컴포넌트에 상주하는 데이터에 추가로 액세스할 수 있다. 또한, 일부 구현예에서, 연산 작업을 수행하는 가속기 로직을 포함하는 연산 스토리지 시스템은 다수의 스토리지 컴포넌트를 포함할 수 있고, 가속기 로직은 블록(402)의 동작과 동시에 또는 연속적으로 추가의 스토리지 컴포넌트의 데이터에 액세스할 수 있다.
블록(404)은 데이터가 가속기 저장 경로를 통해 액세스됨에 따라서 데이터를 사용하여 연산 작업을 수행한다. 데이터가 가속기 저장 경로를 통해 액세스됨에 따라서 데이터를 사용하여 연산 작업을 수행할 때, 가속기 로직은 데이터를 사용하여 연산 작업을 수행하기 전에 데이터를 다른 스토리지 위치(예를 들어, 저장 DRAM 스토리지)로 전달하지 않는다. 따라서, 데이터는 (스토리지 제어기에 의해 지시된) 스토리지와 가속기 로직 사이를 이동하고, 데이터의 이동을 필요로 하는 복사, 다운로드 또는 유사한 동작을 우회할 수 있다.
블록(406)은 연산 작업의 결과로서 생성된 데이터를 스토리지로 반환한다. 일부 구현예에서, (예를 들어, 공유 파일 시스템 내에 있는) 스토리지 상의 위치는 호스트로부터의 초기 연산 작업과 함께 가속기 로직에 의해 수신된다. 가속기 로직은 또한 생성된 데이터를, 호스트 CPU에 의해 실행되는 추가 연산 작업에서 디스플레이, 저장 또는 사용하기 위해 호스트로; 추가 연산 작업의 실행시에 저장 또는 사용을 위해 호스트에 의해 액세스 가능한 다른 연산 스토리지 시스템으로; 연산 스토리지 시스템의 공유 파일 시스템에 액세스와 함께 다른 호스트로; 또는 가속기 로직과 호스트에 의해 공유되는 네트워크 내부 또는 외부의 다른 위치로 반환할 수 있다. 일부 구현예에서, 위에서 설명된 대안적인 위치로의 반환은 생성된 데이터를 스토리지로 반환하는 대신 발생할 수 있다.
도 5는 본 명세서에 기술된 예에 따른 방법을 예시한다. 루틴(500)은 일반적으로 연산 집약적인 작업의 실행을 위해 연산 스토리지 시스템(예를 들어, 연산 스토리지 시스템(300))을 사용하여 호스트(예를 들어, 호스트(106))에 의해 실행된다. 블록(502)에서, 루틴(500)은 추후 분석에 사용하기 위해 외부 데이터를 식별한다. 블록(504)에서, 루틴(500)은 연산 스토리지 시스템의 스토리지 디바이스에 데이터의 저장을 개시한다. 블록(506)에서, 루틴(500)은 데이터에 대한 분석을 수행하기 위한 명령을 생성한다. 블록(508)에서, 루틴(500)은 생성된 명령을 연산 스토리지 시스템의 호스트 인터페이스로 전송한다. 블록(510)에서, 루틴(500)은 분석으로부터 생성된 결과적인 데이터에 액세스한다. 일부 구현예에서, 추가적인 블록이 루틴(500)에 추가될 수 있다.
블록(502)은 추후 분석에 사용하기 위해 외부 데이터를 식별한다. 외부 데이터는 데이터 수집 디바이스(예를 들어, 데이터 수집 디바이스(108))를 사용하여 호스트의 지시로 수집된 데이터일 수 있다. 외부 데이터는, 추가적으로, 제3자 스토리지(또는 호스트를 포함하는 직결 네트워크(immediate network) 외부의 다른 스토리지)에 저장되고 인터넷 또는 다른 통신 네트워크를 통해 호스트에 액세스 가능한 데이터일 수 있다. 일부 구현예에서, 식별된 데이터는 데이터 수집 디바이스에 의해 호스트의 지시로 수집된 데이터와 제3자 스토리지에 저장된 데이터 모두를 포함할 수 있다.
블록(504)은 연산 스토리지 시스템의 스토리지 디바이스에서 데이터의 저장을 개시한다. 일부 구현예에서, 블록(502) 및 블록(504)의 동작은 동시에 발생할 수 있다. 예를 들어, 데이터 수집 디바이스에 의한 데이터 수집을 지시할 때, 호스트는 수집된 데이터를 연산 스토리지 시스템의 데이터 스토리지 디바이스로 내보내거나 또는 전달하라는, 데이터 수집 디바이스에 대한 명령을 포함할 수 있다. 데이터가 다른 스토리지 위치로부터 수집될 때, 호스트는 연산 스토리지 시스템의 스토리지 디바이스로의 데이터의 직접적인 다운로드를 지시할 것이다. 일부 구현예에서, 호스트는 하나 이상의 위치로부터의 데이터가 스토리지 디바이스에 저장되도록 요청할 수 있다. 또한, 데이터는 공유 파일 시스템의 일부를 형성하는 다수의 스토리지 디바이스, 동일하거나 상이한 연산 스토리지 시스템에 저장될 수 있다. 호스트는 공유 파일 시스템에 액세스하고, 데이터의 저장을 위해 공유 파일 시스템 내의 폴더 또는 디렉토리와 같은 객체를 생성할 수 있다.
블록(506)은 데이터에 대한 분석을 수행하기 위한 명령을 생성한다. 명령은 호스트에서 실행되는 대형 프로그램의 일부로서 생성될 수 있다. 호스트로부터 연산 스토리지 시스템의 가속기 로직으로 오프로드된 분석의 예는 최대 가능성 분류, 자연어 처리, 기계 학습 알고리즘, 및 다른 프로세서 집약적인 알고리즘을 포함하지지만 이에 제한되지 않는다. 명령은 가속기 로직에 대한 일련의 API 호출로서 생성될 수 있고, 가속기 로직에 대한 구성 정보, 스토리지에 대한 식별자, 공유 파일 시스템 내의 데이터 위치에 대한 포인터, 결과적인 데이터을 저장하거나 또는 내보내는 방법에 대한 명령어, 및 연산 작업 실행에 유용한 다른 정보를 포함할 수 있다.
블록(508)은 생성된 명령을 연산 스토리지 시스템의 호스트 인터페이스로 전송한다. 생성된 명령은 호스트로부터 연산 스토리지 시스템의 호스트 인터페이스로 하나 이상의 스트림으로서 전송될 수 있다. 전송은 PCIe 인터페이스, LAN, WLAN, 인터넷, 또는 연산 스토리지 시스템과 호스트를 연결하는 다른 네트워크를 통해, 네트워크(예를 들어, 네트워크(104))를 경유하여 발생할 수 있다. 일반적으로, 호스트 인터페이스는 명령이 의도하는 연산 스토리지 시스템의 컴포넌트 또는 컴포넌트들을 결정하기 위해 명령을 파싱한다. 명령이 가속기 로직으로 전송되면, 가속기 로직은 데이터를 분석하고, 결과를 호스트 또는 다른 스토리지에 반환하기 위해 루틴(400) 또는 유사한 프로세스를 사용할 수 있다.
블록(510)은 분석으로부터 생성된 결과적인 데이터에 액세스한다. 일부 구현예에서, 결과적인 데이터는 호스트에 의해 실행되는 프로그램에서 추가 사용을 위해, 또는 호스트 CPU에 저장하기 위해 호스트로 반환된다. 다른 구현예에서, 호스트는 공유 파일 시스템을 통해 스토리지 또는 다른 위치로부터 결과적인 데이터에 액세스할 수 있다.
전술한 내용으로부터, 특정 실시형태가 예시의 목적으로 본 명세서에서 설명되었지만, 청구된 기술의 범위를 유지하면서 다양한 변경이 이루어질 수 있다는 것이 이해될 것이다. 기술의 설명된 실시형태에 대한 이해를 제공하기 위해 특정 세부사항이 본 명세서에서 설명된다. 그러나, 다른 예들은 다양한 이러한 특정 세부사항 없이 실시될 수 있다. 일부 예에서, 설명된 실시형태를 불필요하게 모호하게 하는 것을 피하기 위해 널리 공지된 회로, 제어 신호, 타이밍 프로토콜, 메모리 디바이스, 및/또는 소프트웨어 동작은 상세하게 도시되지 않았다. 본 명세서에서 제시된 요지의 사상 또는 범위를 벗어남이 없이, 다른 실시형태가 이용될 수 있고, 다른 변경이 이루어질 수 있다.
본 명세서에서 기술된 예는 "결합된" 다양한 구성요소 또는 특정 구성요소로부터 "제공되는" 또는 "수신되는" 신호를 참조할 수 있다. 일부 예에서, 구성요소들은 서로 직접 결합되는 반면에, 다른 예에서, 구성요소들은 그 사이에 배치된 개재 구성요소와 결합된다는 것을 이해해야 한다. 유사하게, 신호는 개재 구성요소 없이 인용된 구성요소에 직접 제공되고 그리고/또는 이로부터 직접 수신될 수 있지만, 또한 개재 구성요소를 통해 특정 구성요소에 제공되고 그리고/또는 이로부터 수신될 수 있다.

Claims (20)

  1. 장치로서,
    호스트 인터페이스;
    상기 호스트 인터페이스를 통해 호스트와 연결되고 상기 호스트로부터 통신된 연산 작업을 수행하도록 구성되는 로직; 및
    상기 로직에 결합되고, 비휘발성 메모리를 포함하는 스토리지와 통신하도록 구성되는 스토리지 제어기
    를 포함하되, 상기 스토리지는 상기 로직과 상기 호스트 사이의 공유 파일 시스템의 일부를 형성하고, 상기 스토리지에 상주하는 데이터는 상기 호스트 인터페이스로부터 통신된 연산 작업을 위해 상기 로직에 의해 액세스 가능한, 장치.
  2. 제1항에 있어서, 상기 데이터는 상기 호스트로부터의 명령에 응답하여 생성되고, 상기 데이터는 상기 데이터의 생성시에 상기 스토리지에 저장되는, 장치.
  3. 제1항에 있어서, 상기 공유 파일 시스템은 하나 이상의 추가 호스트에 의해 추가로 공유되는, 장치.
  4. 제1항에 있어서, 상기 로직은 주문형 집적 회로(ASIC)를 포함하는, 장치.
  5. 제1항에 있어서, 상기 로직은 필드 프로그램 가능 게이트 어레이(FPGA)를 포함하며, 상기 로직은 상기 연산 작업을 수행하는 상기 로직을 구성하도록 상기 호스트로부터의 명령어를 수신하도록 구성되는, 장치.
  6. 제1항에 있어서,
    상기 호스트 인터페이스 및 상기 로직에 결합되는 메모리 제어기를 더 포함하는, 장치.
  7. 제6항에 있어서, 상기 메모리 제어기는 상기 호스트로부터 추가 데이터를 수신하고 상기 추가 데이터를 상기 로직에 통신하도록 구성되는, 장치.
  8. 제1항에 있어서, 상기 로직은 상기 연산 작업의 결과를 상기 스토리지에 기록하도록 추가로 구성되는, 장치.
  9. 제1항에 있어서,
    상기 호스트 및 상기 로직에 의해 액세스 가능한, 상기 공유 파일 시스템의 제2 부분을 제공하도록 구성되는 제2 스토리지를 더 포함하는, 장치.
  10. 방법으로서,
    스토리지 제어기에 결합된 로직에서의 연산 작업을 호스트로부터 수신하는 단계로서, 상기 스토리지 제어기는 비휘발성 메모리를 포함하는 스토리지와 통신하도록 구성되는, 상기 수신하는 단계;
    상기 스토리지에 상주하는 데이터에 액세스하는 단계로서, 상기 스토리지는 상기 호스트와 상기 로직 사이의 공유 파일 시스템의 일부를 형성하는 상기 액세스하는 단계; 및
    상기 데이터가 상기 스토리지 제어기를 통해 액세스됨에 따라서 상기 데이터를 사용하여 상기 연산 작업을 수행하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서, 제2 스토리지가 상기 공유 파일 시스템의 제2 부분을 형성하고, 상기 연산 작업을 수행하는 단계는 상기 제2 스토리지에 상주하는 제2 데이터를 사용하는 단계를 더 포함하는, 방법.
  12. 제10항에 있어서, 상기 스토리지 제어기는 상기 호스트에 의한 상기 스토리지에 대한 액세스를 제공하기 위해 호스트 인터페이스 로직에 결합되는, 방법.
  13. 제10항에 있어서,
    상기 연산 작업의 결과로서 생성된 데이터를 상기 스토리지에 기록하는 단계를 더 포함하는, 방법.
  14. 제10항에 있어서, 상기 스토리지에 상주하는 데이터는 상기 호스토로부터의 명령에 응답하여 생성되고 생성 시에 상기 스토리지에 저장되는, 방법.
  15. 제10항에 있어서, 상기 호스트로부터 수신된 연산 작업은 상기 연산 작업의 수행을 위해 상기 로직을 맞춤화하기 위한 명령어를 포함하는, 방법.
  16. 시스템으로서,
    비휘발성 메모리를 포함하는 스토리지로서, 호스트에 의해, 그리고 상기 스토리지와 통신하도록 구성된 스토리지 제어기에 결합된 로직에 의해 액세스 가능한 공유 파일 시스템의 일부를 제공하도록 구성되는, 상기 스토리지; 및
    상기 로직에 결합되는 호스트 인터페이스로서, 데이터가 생성될 때 상기 스토리지에 상기 데이터를 저장하기 위해 상기 호스트로부터 스토리지 명령을 수신하도록 구성되고, 상기 스토리지에 저장된 데이터를 사용하여 연산 작업을 수행하는 상기 로직을 위하여 상기 호스트로부터 작업을 수신하도록 추가로 구성되는, 상기 호스트 인터페이스
    를 포함하되, 상기 로직은 상기 스토리지에 저장된 데이터를 사용하여 상기 연산 작업을 수행하도록 구성되는, 시스템.
  17. 제16항에 있어서, 상기 로직은 상기 연산 작업의 결과를 상기 스토리지에 기록하도록 추가로 구성되는, 시스템.
  18. 제16항에 있어서, 상기 로직은 상기 연산 작업을 수행하기 위한 상기 로직을 구성하기 위해 상기 호스트로부터 명령어를 수신하도록 추가로 구성되는, 시스템.
  19. 제16항에 있어서, 상기 호스트 및 상기 로직에 의해 액세스 가능한 상기 공유 파일 시스템의 제2 부분을 제공하도록 구성된 제2 스토리지를 더 포함하는, 시스템.
  20. 제19항에 있어서, 상기 연산 작업은 상기 제2 스토리지에 상주하는 제2 데이터를 추가로 사용하며, 상기 로직은 상기 스토리지에 저장된 데이터 및 상기 제2 스토리지의 상기 제2 데이터를 사용하여 상기 연산 작업을 수행하도록 추가로 구성되는, 시스템.
KR1020217035418A 2019-03-29 2020-03-27 연산 스토리지 및 네트워크 기반 시스템 KR20210134997A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962826591P 2019-03-29 2019-03-29
US62/826,591 2019-03-29
PCT/US2020/025405 WO2020205598A1 (en) 2019-03-29 2020-03-27 Computational storage and networked based system

Publications (1)

Publication Number Publication Date
KR20210134997A true KR20210134997A (ko) 2021-11-11

Family

ID=72606144

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217035418A KR20210134997A (ko) 2019-03-29 2020-03-27 연산 스토리지 및 네트워크 기반 시스템

Country Status (5)

Country Link
US (2) US11550500B2 (ko)
EP (1) EP3948555A4 (ko)
KR (1) KR20210134997A (ko)
CN (1) CN113678113A (ko)
WO (1) WO2020205598A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) * 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US11941433B2 (en) * 2020-03-24 2024-03-26 Via Technologies Inc. Computing apparatus and data processing method for offloading data processing of data processing task from at least one general purpose processor
US11429279B2 (en) * 2020-09-16 2022-08-30 Samsung Electronics Co., Ltd. Automatic data separation and placement for compressed data in a storage device
US11687276B2 (en) 2021-01-26 2023-06-27 Seagate Technology Llc Data streaming for computational storage
US20220236902A1 (en) * 2021-01-27 2022-07-28 Samsung Electronics Co., Ltd. Systems and methods for data transfer for computational storage devices
CN115344245A (zh) * 2021-05-14 2022-11-15 瑞昱半导体股份有限公司 加速比较函式执行的方法及加速比较函式执行的系统
US11687253B2 (en) 2021-06-16 2023-06-27 Hewlett Packard Enterprise Development Lp Configuration of a computational drive
US11675540B2 (en) 2021-08-05 2023-06-13 Seagate Technology Llc In-line data flow for computational storage
US20230112448A1 (en) * 2021-10-12 2023-04-13 Seagate Technology Llc Computational storage drive using fpga implemented interface
US11880568B2 (en) 2021-11-17 2024-01-23 Seagate Technology Llc On demand configuration of FPGA interfaces

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799903B1 (en) * 2007-07-31 2014-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for exchanging runtime functionalities between software stacks
JP5294014B2 (ja) * 2008-12-26 2013-09-18 株式会社日立製作所 ファイル共有方法、計算機システム及びジョブスケジューラ
US8521686B2 (en) * 2009-07-13 2013-08-27 Vmware, Inc. Concurrency control in a file system shared by application hosts
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US9535628B2 (en) * 2013-10-10 2017-01-03 Apple Inc. Memory system with shared file system
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
KR102430209B1 (ko) * 2017-09-07 2022-08-05 삼성전자주식회사 저장 장치 및 저장 장치에 포함된 컨트롤러들
US10846235B2 (en) * 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US10986183B2 (en) * 2018-05-02 2021-04-20 Hewlett Packard Enterprise Development Lp Data management in a network environment
US11360829B2 (en) * 2018-10-16 2022-06-14 Ngd Systems, Inc. System and method for communicating between computational storage devices

Also Published As

Publication number Publication date
EP3948555A1 (en) 2022-02-09
EP3948555A4 (en) 2022-11-16
WO2020205598A1 (en) 2020-10-08
US20200310694A1 (en) 2020-10-01
US20230161512A1 (en) 2023-05-25
CN113678113A (zh) 2021-11-19
US11550500B2 (en) 2023-01-10

Similar Documents

Publication Publication Date Title
US11550500B2 (en) Computational storage and networked based system
KR102513924B1 (ko) 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
US10990650B1 (en) Reducing computations for data including padding
US10678479B1 (en) Registers for restricted memory
US10768856B1 (en) Memory access for multiple circuit components
DE102018210537A1 (de) Mikrodienste-Architektur
US20220198117A1 (en) Executing a neural network graph using a non-homogenous set of reconfigurable processors
CN113849293B (zh) 数据处理方法、装置、系统及计算机可读存储介质
EP4133423A1 (en) Edge server with deep learning accelerator and random access memory
US11467992B1 (en) Memory access operation in distributed computing system
US20220327359A1 (en) Compression for split neural network computing to accommodate varying bitrate
CN105389120A (zh) 支持通过活动消息的rma api
EP4073631A1 (en) Zero packet loss upgrade of an io device
CN107113231B (zh) 将基于图形的计算卸载到后端设备
US11467946B1 (en) Breakpoints in neural network accelerator
CN118043796A (zh) 存储器计算系统中的基于片块的结果缓冲
US11018982B2 (en) Data flow scheduling between processors
CN118076944A (zh) 可重新配置计算组构中的循环执行期间的数据存储
CN109726800B (zh) 运算方法、装置及相关产品
CN117255987A (zh) 增加合成孔径雷达的高速缓存命中
US20220318162A1 (en) Interpolation acceleration in a processor memory interface
US10942861B2 (en) Configurable logic block networks and managing coherent memory in the same
US10877911B1 (en) Pattern generation using a direct memory access engine
US20230074452A1 (en) Mechanism to trigger early termination of cooperating processes
Nguyen et al. Reducing data copies between gpus and nics

Legal Events

Date Code Title Description
E902 Notification of reason for refusal