KR102333445B1 - Ssd 폼 팩터에서 내장된 gpu를 포함하는 nvme-of 이더넷 ssd 섀시를 포함하는 머신 러닝을 위한 시스템 및 방법 - Google Patents

Ssd 폼 팩터에서 내장된 gpu를 포함하는 nvme-of 이더넷 ssd 섀시를 포함하는 머신 러닝을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102333445B1
KR102333445B1 KR1020180010554A KR20180010554A KR102333445B1 KR 102333445 B1 KR102333445 B1 KR 102333445B1 KR 1020180010554 A KR1020180010554 A KR 1020180010554A KR 20180010554 A KR20180010554 A KR 20180010554A KR 102333445 B1 KR102333445 B1 KR 102333445B1
Authority
KR
South Korea
Prior art keywords
drive
data
graphics processing
processing
processor
Prior art date
Application number
KR1020180010554A
Other languages
English (en)
Other versions
KR20180128825A (ko
Inventor
람다스 피. 카차르
솜퐁 폴 올라이그
데이비드 슈와드러
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180128825A publication Critical patent/KR20180128825A/ko
Application granted granted Critical
Publication of KR102333445B1 publication Critical patent/KR102333445B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7896Modular architectures, e.g. assembled from a number of identical packages
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)

Abstract

본 발명의 하나의 실시 예에 따르면, 데이터 스토리지 및 처리 시스템이 제공된다. 데이터 스토리지 및 처리 시스템은 호스트 서버 및 스토리지부를 포함한다. 상기 스토리지부는 메모리 및 드라이브 프로세서를 포함하는 드라이브, 상기 호스트 서버와 상기 드라이브의 상기 메모리 사이에 데이터를 전송하고 수신하기 위해 상기 호스트 서버를 상기 드라이브로 연결시키도록 구성되는 외부 스위치 및 그래픽 처리 장치를 포함한다. 상기 드라이브 프로세서는 처리 명령 및 데이터를 상기 드라이브 메모리로부터 상기 그래픽 처리 장치로 전송하도록 구성되고, 상기 그래픽 처리 장치는 상기 처리 명령에 따라 상기 데이터를 처리하여 결과 데이터를 생성하도록 구성된다.

Description

SSD 폼 팩터에서 내장된 GPU를 포함하는 NVME-OF 이더넷 SSD 섀시를 포함하는 머신 러닝을 위한 시스템 및 방법{SYSTEM AND METHOD FOR MACHINE LEARNING WITH NVME-OF ETHERNET SSD CHASSIS WITH EMBEDDED GPU IN SSD FORM FACTOR}
본 발명은 머신 러닝을 위한 시스템에 관한 것으로, 좀 더 상세하게는, 스토리지 시스템에서 복수의 그래픽 처리 장치들을 활용하여 머신 러닝 알고리즘을 실행하기 위한 시스템 및 방법에 관한 것이다.
수집 및 저장되는 데이터의 양이 증가하고 있다. 사물 인터넷부터 소셜 네트워크, 디지털 헬스 영역에 이르기까지 수많은 애플리케이션들은 엄청난 양의 데이터를 생성한다. 이러한 데이터는 데이터 센터와 같은 데이터 시스템에 호스트될 수 있다. 데이터는 흔히 저장, 처리, 및 분석이 요구된다. 머신 러닝 알고리즘과 같은 알고리즘은 데이터로부터 특징 또는 유용한 정보를 추출하기 위해 큰 데이터 세트에 적용될 수 있다. 이 데이터를 신속하고, 효율적이고, 경제적이고, 복원력 있게 저장, 처리, 및 분석하기 위한 기법 및 아키텍처가 필요하다.
이 배경기술에서 개시된 위의 정보는 오직 본 발명의 배경에 대한 이해를 증진시키기 위한 것이며, 따라서 통상의 기술자에게 이미 알려진 선행 기술이 아닌 정보를 포함할 수 있다.
본 발명은 상술된 기술적 과제를 해결하기 위한 것으로써, 본 발명은 스토리지 시스템에서 머신 러닝 알고리즘을 실행하기 위한 시스템 및 방법을 제공할 수 있다.
본 발명의 하나의 실시 예에 따르면, 데이터 스토리지 및 처리 시스템이 제공된다. 데이터 스토리지 및 처리 시스템은 호스트 서버 및 스토리지부를 포함한다. 상기 스토리지부는 메모리 및 드라이브 프로세서를 포함하는 드라이브, 상기 호스트 서버와 상기 드라이브의 상기 메모리 사이에 데이터를 전송하고 수신하기 위해 상기 호스트 서버를 상기 드라이브로 연결시키도록 구성되는 외부 스위치 및 그래픽 처리 장치를 포함한다. 상기 드라이브 프로세서는 처리 명령 및 데이터를 상기 드라이브 메모리로부터 상기 그래픽 처리 장치로 전송하도록 구성되고, 상기 그래픽 처리 장치는 상기 처리 명령에 따라 상기 데이터를 처리하여 결과 데이터를 생성하도록 구성된다.
하나의 실시 예에 있어서, 상기 그래픽 처리 장치는 U.2 커넥터를 포함하고, 상기 그래픽 처리 장치는 상기 U.2 커넥터를 통해 상기 드라이브와 연결되고, 상기 그래픽 처리 장치는 상기 U.2 커넥터를 통해 상기 처리 명령 및 데이터를 수신할 수 있다.
하나의 실시 예에 있어서, 상기 그래픽 처리 장치는 상기 결과 데이터를 상기 드라이브 프로세서로 전송하도록 구성되고 상기 드라이브 프로세서는 상기 드라이브 메모리에 상기 결과 데이터를 저장하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 그래픽 처리 장치는 상기 외부 스위치와 연결되고, 상기 그래픽 처리 장치는 상기 외부 스위치를 활용하여 상기 결과 데이터를 상기 호스트 서버로 전송하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 그래픽 처리 장치는 상기 처리 명령에 따라 상기 데이터의 상기 처리를 완료한 후 상태 메시지를 상기 드라이브 프로세서로 전송하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 호스트 서버는 트리거(trigger) 명령을 상기 드라이브 프로세서로 전송하도록 구성되고, 상기 드라이브 프로세서는 상기 트리거 명령에 응답하여 데이터 처리 알고리즘을 실행하도록 구성되고, 상기 데이터 처리 알고리즘은 실행 시 상기 드라이브 프로세서가 상기 데이터 및 상기 처리 명령을 상기 그래픽 처리 장치로 전송하도록 하는 단계들을 포함할 수 있다.
하나의 실시 예에 있어서, 상기 드라이브는 능력 표를 포함하고, 상기 드라이브 프로세서는 상기 드라이브 메모리에 저장된 데이터 청크(chunk) 및 상기 데이터 청크에 적용될 변환을 식별하도록 구성되고, 상기 능력 표로부터 상기 그래픽 처리 장치의 주소를 검색하도록 구성되고, 상기 능력 표는 상기 그래픽 처리 장치가 상기 변환을 수행할 수 있음을 나타내고, 상기 데이터 청크를 상기 그래픽 처리 장치의 상기 주소로 전송하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 스토리지부는 상기 그래픽 처리 장치의 능력을 판별하고 상기 그래픽 처리 장치의 상기 능력에 기초하여 상기 능력 표를 업데이트하도록 구성되는 베이스보드 관리 제어기(baseboard management controller)를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 스토리지부는 복수의 드라이브들을 포함하고, 각 드라이브는 별도의 능력 표를 가지며, 상기 스토리지부는 복수의 그래픽 처리 장치들을 포함하고, 상기 베이스보드 관리 제어기는 상기 복수의 드라이브들의 각 드라이브의 각 능력 표를 업데이트하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 베이스보드 관리 제어기 및 상기 그래픽 처리 장치는 NVMe-MI(Non Volatile Memory Express-Management Interface) 프로토콜을 이용하여 통신하도록 구성되고, 베이스보드 관리 제어기는 상기 NVMe-MI 식별(Identify) 커맨드를 활용함으로써 상기 그래픽 처리 장치의 상기 능력을 판별할 수 있다.
하나의 실시 예에 있어서, 상기 스토리지부는 복수의 그래픽 처리 장치들을 포함하고, 상기 베이스보드 관리 제어기는 상기 복수의 그래픽 처리 장치들의 각 그래픽 처리 장치에 대한 부하를 판별하고 상기 복수의 그래픽 처리 장치들의 각 그래픽 처리 장치에 대한 상기 부하에 기초하여 상기 능력 표를 업데이트하도록 구성될 수 있다.
하나의 실시 예에 있어서, 상기 외부 스위치는 이더넷(Ethernet) 스위치이고 상기 드라이브는 이더넷 솔리드 스테이트 드라이브(Ethernet solid state drive)일 수 있다.
하나의 실시 예에 있어서, 상기 호스트 서버는 원격 직접 액세스 스토리지(remote direct access storage) 프로토콜을 사용하여 상기 스토리지부와 통신할 수 있다.
하나의 실시 예에 있어서, 상기 스토리지부는 섀시(chassis) 및 베이스보드 관리 제어기를 더 포함하고, 상기 그래픽 처리 장치는 현장 교체 가능한 장치이고, 상기 베이스보드 관리 제어기는 상기 그래픽 처리 장치가 상기 섀시로 삽입되는 것과 대응하는 플러그 인(plug-in) 이벤트를 감지하도록 구성될 수 있다.
본 발명의 하나의 실시 예에 있어서, 데이터 스토리지 및 처리 시스템을 동작하는 방법이 제공된다. 데이터 스토리지 및 처리 시스템은 드라이브 및 그래픽 처리 장치를 포함한다. 상기 드라이브는 드라이브 프로세서 및 드라이브 메모리를 포함한다. 방법은 상기 드라이브 프로세서가 호스트 서버로부터 데이터를 수신하는 단계, 상기 드라이브 프로세서가 상기 데이터를 상기 드라이브 메모리에 저장하는 단계, 상기 드라이브 프로세서가 트리거를 감지하는 단계, 상기 드라이브 프로세서가 상기 트리거에 응답하여 알고리즘을 실행하고, 상기 알고리즘은 상기 드라이브 메모리에 저장된 상기 데이터의 데이터 청크 및 상기 데이터 청크에 적용할 변환을 식별하는 단계, 상기 드라이브 프로세서가 상기 변환을 수행하기 위한 장치에 대응하는 주소에 대한 능력 표를 검색하는 단계, 및 상기 드라이브 프로세서가 상기 데이터 청크 및 상기 데이터 청크를 처리하기 위한 처리 명령을 상기 주소로 전송하고, 상기 주소는 상기 그래픽 처리 장치의 상기 주소인 단계를 포함한다.
하나의 실시 예에 있어서, 상기 방법은 상기 그래픽 처리 장치가 상기 데이터 청크 및 상기 처리 명령을 수신하는 단계 및 상기 그래픽 처리 장치가 상기 처리 명령에 따라 상기 데이터 청크를 처리하여 결과 데이터를 생성하는 단계를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 방법은 상기 그래픽 처리 장치가 상기 결과 데이터를 상기 드라이브 프로세서로 전송하는 단계 및 상기 드라이브 프로세서가 상기 결과 데이터를 상기 드라이브 메모리에 저장하는 단계를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 방법은 베이스보드 관리 제어기가 상기 그래픽 처리 장치의 능력을 감지하는 단계 및 상기 베이스보드 관리 제어기가 상기 그래픽 처리 장치의 상기 능력에 기초하여 상기 능력 표를 업데이트하는 단계를 더 포함할 수 있다.
하나의 실시 예에 있어서, 상기 데이터 스토리지 및 처리 시스템은 복수의 드라이브들을 포함하고, 상기 복수의 드라이브들의 각 드라이브는 능력 표를 포함하고, 상기 베이스보드 관리 제어기가 상기 그래픽 처리 장치의 상기 능력에 기초하여 상기 복수의 드라이브들의 각 드라이브의 각 능력 표를 업데이트하는 단계를 포함할 수 있다.
본 발명의 하나의 실시 예에 있어서, 데이터 스토리지 및 처리 시스템이 제공된다. 상기 시스템은 드라이브 및 그래픽 처리 장치를 포함한다. 상기 드라이브는 드라이브 프로세서 및 드라이브 메모리를 포함한다. 상기 시스템은 호스트 서버로부터 데이터를 수신하기 위한 수단, 상기 데이터를 상기 드라이브 메모리에 저장하기 위한 수단, 트리거를 감지하기 위한 수단, 상기 트리거에 응답하여 알고리즘을 실행하기 위한 수단, 상기 알고리즘은 상기 드라이브 메모리에 저장된 상기 데이터의 데이터 청크 및 상기 데이터 청크에 적용할 변환을 식별하고, 상기 변환을 수행하기 위한 장치에 대응하는 주소에 대한 능력 표를 검색하기 위한 수단, 상기 데이터 청크 및 상기 데이터 청크를 처리하기 위해 처리 명령을 상기 주소로 전송하기 위한 수단, 상기 주소는 상기 그래픽 처리 장치의 상기 주소이고, 상기 처리 명령에 따라 상기 데이터 청크를 처리하여 결과 데이터를 생성하고 상기 결과 데이터를 상기 호스트 서버로 전송하기 위한 수단 및 현장 교체 가능한 그래픽 처리 장치의 플러그 인 이벤트를 감지하고, 상기 현장 교체 가능한 그래픽 처리 장치의 능력을 판별하고, 상기 현장 교체 가능한 그래픽 처리 장치의 상기 능력에 기초하여 상기 플러그 인 이벤트의 감지에 응답하여 상기 능력 표를 업데이트하기 위한 수단을 포함한다.
본 발명에 따르면, 스토리지 시스템은 복수의 그래픽 처리 장치들을 활용하여 머신 러닝 알고리즘을 효율적으로 실행할 수 있고, 복수의 그래픽 처리 장치들의 부하의 균형을 맞출 수 있다.
도 1은 관련된 기술에 따른 스토리지 시스템의 블록도이다.
도 2는 본 발명의 실시 예들에 따른 스토리지 시스템의 블록도이다.
도 3은 본 발명의 실시 예들에 따른 그래픽 처리 장치의 블록도이다.
도 4는 본 발명의 실시 예들에 따른 그래픽 처리 장치와 통신하는 드라이브에 대한 절차를 보여주는 블록도이다.
도 5는 본 발명의 실시 예들에 따른 능력 표를 보여준다.
도 6은 본 발명의 실시 예들에 따른 그래픽 처리 장치를 관리하는 베이스보드 관리 제어기에 대한 절차를 보여주는 블록도이다.
다음의 상세한 설명에서는, 오직 본 발명의 특정한 실시 예들이 도면을 통해 도시되고 설명된다. 통상의 기술자가 인식하는 것과 같이, 본 발명은 다양한 형식으로 구현될 수 있고 본 명세서에 기재된 실시 예들에 제한되는 것으로 해석되어서는 안 된다. 각 실시 예에 있는 특징 또는 양상의 설명은 전형적으로 다른 실시 예들에 있어서 다른 유사한 특징 또는 양상에 이용될 수 있는 것으로서 고려되어야 한다. 동일한 참조 번호는 본 명세서에서 동일한 요소를 가리킨다.
도 1은 관련된 기술에 따른 스토리지 시스템의 블록도이다. 호스트 서버(110)는 네트워크(120)를 통해 하나 이상의 스토리지부들(130)에 연결된다. 호스트 서버(110)는 하나 이상의 애플리케이션(112)과 운영 시스템 및 파일 시스템(114)을 실행한다. 호스트 서버(110)는 하나 이상의 스토리지부(130)와 상호 작용하는데 활용되는 원격 직접 액세스 스토리지(rDAS; remote direct access storage) 드라이버(116)를 포함한다.
이 스토리지부(130)는 섀시(chassis)(131), 이더넷(Ethernet) 스위치(132), 베이스보드 관리 제어기(BMC; baseboard management controller)(134), PCIe 스위치(136), 및 복수의 이더넷 솔리드 스테이트 드라이브(eSSD; Ethernet solid state drives)(142A-C)를 포함한다. PCIe 스위치(136)는 섀시 미드플레인(midplane)(140)을 통해 BMC(134)를 eSSD들(142A-C)과 연결한다. BMC(134)는 eSSD들(142A-C)을 관리하기 위해 PCIe 스위치(136)를 활용한다. 이더넷 스위치(132)는 eSSD들(142A-C)을 네트워크(120)로 연결한다. 호스트 서버(110)는 이더넷 스위치(132)를 통해 데이터를 eSSD들(142A-C)로 보내고, eSSD들(142A-C)로부터 데이터를 수신하기 위해 rDAS 드라이버(116)를 활용한다.
머신 러닝과 같은 프로세스들은 대량의 데이터가 처리되도록 요구할 수 있다. 계산 리소스들(예를 들어, 프로세서들)은 데이터에 대해 알고리즘(예를 들어, 머신 러닝 알고리즘)을 실행한다. 스토리지부(130)에 저장된 데이터에 이러한 처리를 수행할 때, 호스트 서버(110)는 스토리지부(130)로부터 처리될 데이터를 요청해야 한다. 스토리지부(130)는 네트워크(120)를 통해 데이터를 호스트 서버(110)로 전송해야 한다. 호스트 서버(110)는, 예를 들어 머신 러닝 알고리즘을 실행함으로써, 호스트 서버(110)에 위치하는 CPU 또는 GPU를 활용하여 데이터를 처리하고, 저장을 위해 스토리지부(130)로 처리 결과들을 다시 전송해야 할 수도 있다.
처리를 위해 스토리지부(130)로부터 호스트 서버(110)로 데이터를 이동하는 것은 상당한 전기적 에너지를 소비할 수 있고 네트워크(120)를 통해 데이터 및 결과를 앞뒤로 전파하는 것과 관련된 처리 지연을 포함할 수 있다. 아키텍처는 네트워크(120)를 통해 데이터 및 결과를 전송하기 위한 적절한 대역폭과 데이터를 처리하기 위한 호스트 서버(110)에서의 처리 리소스 및 시스템 메모리를 요구하므로, 아키텍처는 비쌀 수 있다. 또한, 호스트 서버(110)에서 데이터의 처리에 있어서 처리 리소스의 속도는 데이터 세트의 처리에 병목 현상을 일으킬 수 있으며, 처리에 이용되는 처리 리소스는 추가, 제거, 또는 교체하기 쉽지 않을 수 있다.
도 2는 본 발명의 실시 예들에 따른 스토리지 시스템의 블록도이다. 도 2를 참조하면, 호스트 서버(210)는 네트워크(220)를 통해 하나 이상의 스토리지부(230)와 연결된다. 호스트 서버(210)는 애플리케이션(212)과 운영 시스템 및 파일 시스템(214)을 실행할 수 있다. 호스트 서버(210)는 또한 하나 이상의 스토리지부(230)와 상호 작용하는데 활용되는 스토리지 드라이버(216)를 포함할 수 있다.
스토리지부(230)는 섀시(231), 외부 스위치(232)(예를 들어, 이더넷 스위치), 베이스보드 관리 제어기(BMC)(234), 내부 스위치(236)(예를 들어, PICe 스위치), 하나 이상의 드라이브들(242A-B), 및 하나 이상의 U.2 그래픽 처리 장치들(U.2 GPU)(250A-B)을 포함한다. U.2 GPI 용어가 본 명세서에 걸쳐 사용될 것이지만, GPU는 U.2 연결 이외의 연결로 작동할 수 있고, 이러한 연결들은 본 발명의 범위에 포함된다. 이 용어는 명확성을 위해 단순히 사용된다. 내부 스위치(236)는 BMC(234), 드라이브들(242A-B), 및 U.2 GPU들(250A-B)을 섀시 미드플레인(240)을 통해 연결한다. 외부 스위치(232)는 드라이브들(242A-B), U.2 GPU들(250A-B), BMC(234), 및 네트워크(220)를 연결한다. 섀시(231)는 본 발명의 실시 예들에 따른 드라이브들 및/또는 U.2 GPU들을 수신하기 위한 복수의 슬롯들을 포함한다.
예를 들어, 몇몇 실시 예들에 있어서, 스토리지 드라이버(216)는 NVMe-오버-패브릭(NVMe-oF; NVMe-over-fabrics) 드라이버와 같은 원격 직접 액세스 스토리지(rDAS) 드라이버이고, 네트워크(220)는 이더넷 네트워크이고, 외부 스위치(232)는 이더넷 스위치이고, 드라이브들은 이더넷 솔리드 스테이트 드라이브(eSSD)이다. 호스트 서버(210)는 이더넷 네트워크를 통해 하나 이상의 스토리지부(230)에 있는 eSSD들과 데이터를 통신하기 위해 rDAS 드라이버를 활용한다. 몇몇 실시 예들에 있어서, 내부 스위치(236)는 PCIe 스위치이다.
도 3은 본 발명의 실시 예들에 따른 U.2 GPU(350)의 블록도이다. 몇몇 실시 예들에 있어서, 도 2의 U.2 GPU들(250A-B)은 도 3의 U.2 GPU(350)로서 구현된다. 도 3을 참조하면, U.2 GPU(350)는 프로세서(360), DRAM(362), 불휘발성 메모리(364), 전원 공급기/전원 조절기(366), 및 커넥터(352)를 포함한다. 몇몇 실시 예들에 있어서, U.2 GPU(350)는 전원 공급기/전원 조절기(366)를 포함할 수 있다. 커넥터(352)는 프로세서(360)를 연결하기 위한 인터페이스를 제공한다. 커넥터(352)는 PCIe 스위치와 같은 내부 스위치 및 이더넷 스위치와 같은 외부 스위치와 인터페이스를 위한 인터페이스를 제공할 수 있다. 예를 들어, 커넥터는 이더넷 인터페이스(354), PCIe 인터페이스(356), 및 시스템 관리 버스(SMBus) 인터페이스(358)를 제공할 수 있다. 하나의 실시 예에 있어서, 커넥터(352)는 U.2 커넥터/SFF-8639 커넥터이다.
U.2 GPU(350)는 드라이브들(예를 들어, eSSD들)과 나란히 스토리지부의 섀시에 연결되고 스토리지부의 BMC와 통신하도록 구성될 수 있다. 몇몇 실시 예에 있어서, 커넥터(352)는 eSSD들과 같은 드라이브들처럼 섀시에서 동일한 슬롯에 연결되도록 구성된다. 몇몇 실시 예에 있어서, U.2 GPU(350)는 섀시에 연결된 경우 이더넷 스위치와 같은 외부 스위치와 통신할 수 있다. 몇몇 실시 예들에 있어서, U.2 GPU(350)는 섀시에 삽입 및/또는 섀시로부터 제거될 수 있고 스토리지부의 작동에 자동으로 수용 또는 스토리지부의 작동으로부터 자동으로 제거될 있는 현장 교체 장치로서 구현될 수 있다. 예시는 아래의 도 6에서 설명된다. 이 방법에 있어서, U.2 GPU들(350)의 형태의 처리 리소스는 효율적으로 스토리지부에 추가되거나 스토리지부로부터 제거되거나, 또는 스토리지부에서 교체될 수 있다. U.2 GPU들은 또한 주어진 슬롯으로 이용 가능한 최대 전력(커넥터가 지원하는 최대 전력)을 제공받고 처리 동작을 위한 전력량을 활용할 수 있다. 반면에 슬롯에 있는 드라이브는 저장 동작을 위해 동일한 전력량을 활용할 수 있다. 예를 들어, 실시 예에 있어서, 커넥터는 U.2 커넥터이고 U.2 GPU들에게는 25W의 전력이 제공된다.
도 2를 다시 참조하면, 드라이브들(242A-B)은 프로세서(244) 및 플래시 메모리 또는 다른 불휘발성 메모리와 같은 메모리(246)를 포함할 수 있다. 몇몇 실시 예들에 있어서, 드라이브들(242A-B)은 프로세서(244)에 의해 활용되는 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 하나 이상의 드라이브들(242A-B)에 있어서, 프로세서(244)는 대응하는 드라이브의 메모리(246)에 저장된 데이터에 대해 머신 러닝 알고리즘과 같은 데이터 처리 알고리즘을 실행하는 명령을 실행할 수 있다. 이러한 명령들을 실행하는 과정으로서, 프로세서(244)는 데이터를 처리하기 위한 명령들뿐만 아니라, 메모리(246)로부터의 데이터를 U.2 GPU(250)로 전송할 수 있다. 몇몇 실시 예들에 있어서, 데이터 및 명령들은 내부 스위치(236)를 경유하여 미드플레인(240)을 통해 드라이브(242) 및 U.2 GPU(250) 사이에 전송된다. 몇몇 실시 예들에 있어서, 데이터 및 명령들은 외부 스위치(232)를 통해 드라이브(242) 및 U.2 GPU(250) 사이에 전송된다. 드라이브들(242A-B) 및 U.2 GPU들(250A-B)은 모두 U.2 커넥터와 같은 커넥터를 활용할 수 있다.
도 4는 본 발명의 실시 예들에 따른 U.2 GPU(250)와 통신하는 드라이브(242)(즉, 도 2의 드라이브(242))에 대한 절차를 보여주는 블록도이다. 도 4의 절차는 드라이브(242)에 내장된 프로세서(244)에 의해 실행될 수 있다. 610 단계에서, 프로세서(244)는 트리거(trigger)를 감지할 수 있다. 트리거는 프로세서(244)가 머신 러닝 알고리즘과 같은 알고리즘에 따라 드라이브(242)의 메모리(246)에 포함된 데이터를 처리해야 하는 것을 나타낼 수 있다. 예를 들어, 몇몇 실시 예들에 있어서, 트리거는 특정 시간의 통로일 수 있다. 즉, 알고리즘은 백그라운드에서 자동으로 주기적으로 실행되도록 트리거 된다. 몇몇 실시 예들에 있어서, 트리거는 호스트 서버(210) 또는 다른 외부의 소스로부터 수신된 명령 또는 쿼리(query)일 수 있다. 몇몇 실시 예들에 있어서, 트리거는 드라이브(242)에 의해 수신되는 데이터의 새로운 블록, 또는 호스트(210)로부터 수신된 다른 데이터 작업(예를 들어, 읽기, 쓰기, 삭제, 또는 업데이트)일 수 있다. 몇몇 실시 예들에 있어서, 트리거는 추가 분석, 처리, 또는 다른 유형의 처리를 필요로 하는 머신 러닝 알고리즘의 결과일 수 있다. 몇몇 실시 예들에 있어서, 트리거는 임계값을 초과하여 저장된 데이터의 양과 같은 드라이브의 몇몇 내부 상태 또는 작동에 따라 생성될 수 있다. 몇몇 실시 예들에 있어서, 트리거는 다른 드라이브(242)로부터 수신될 수 있고, 몇몇 실시 예들에 있어서, 드라이브(242)는 다른 드라이브(242)로 트리거를 전달할 수 있다.
몇몇 실시 예들에 있어서, 알고리즘은 드라이브(242)의 메모리(246) 또는 그 밖의 위치(예를 들어, 별도의 DRAM)에 저장되고, 트리거는 단순히 저장된 알고리즘이 실행되어야 하는 것을 나타낸다. 몇몇 실시 예들에 있어서, 트리거는 실행되어야 하는 알고리즘을 포함할 수 있다. 몇몇 실시 예들에 있어서, 드라이브(242)는 저장된 복수의 알고리즘들을 가질 수 있고, 트리거는 실행할 알고리즘을 식별하는 태그(tag)를 포함할 수 있다. 620 단계에서, 프로세서(244)는 알고리즘을 실행하기 시작한다. 몇몇 실시 예들에 있어서, 알고리즘(620)은 머신 러닝 알고리즘이다. 622 단계에서, 프로세서(242)는, 예를 들어 알고리즘에서의 명령 또는 현재 프로세서(244) 활용에 기초하여, 메모리(246)에 있는 데이터의 하나 이상의 데이터 청크(chunk)에서 하나 이상의 변환, 함수, 또는 다른 형태의 처리가 수행되어야 하는 것을 식별한다.
624 단계에서, 프로세서(242)는 필요한 변환, 함수, 또는 기타 처리 작업을 수행할 수 있는 U.2 GPU(250)의 주소를 식별하기 위한 능력 표(CAP table; capability table)을 조사한다. 몇몇 실시 예들에 있어서, 능력 표는 드라이브(242)에 저장된다. 도 5는 본 발명의 실시 예들에 따른 능력 표(500)의 예시를 보여준다. 능력 표(500)는 프로세서(242)가 U.2 GPU(250)를 활용하여 수행될 수 있는 변환, 함수, 또는 기타 처리 작업에 대응하는 일련의 변환 1부터 n에 대한 항목을 포함한다. 각 항목은 프로세서(242)가 주어진 변환을 수행하도록 활용할 수 있는 U.2 GPU의 주소로 채워진다. 예를 들어, 능력 표(500)를 저장하는 드라이브에 대한 프로세서는 변환 1을 수행하기 위해 슬롯-3에서의 U.2 GPU 또는 슬롯-4에서의 U.2 GPU를 활용할 수 있다. 프로세서(242)는 알고리즘에 의해 식별된 변환을 수행하기 위해 능력 표에서 식별된 U.2 GPU들을 선택한다.
630 단계에서, 프로세서(244)는 U.2 GPU(250)에 의해 처리될 데이터 청크를 검색한다. 데이터 청크는 메모리(246)로부터 인출될 수 있고/또는 드라이브(242)의 읽기/쓰기 캐시 버퍼로부터 인출될 수 있다. 632 단계에서, 프로세서(244)는, 예를 들어 메시지의 헤(header)더에 명령을 두고 본문(body)에 데이터 청크를 둠으로써, 데이터 청크와 데이터 청크를 처리하기 위한 명령을 포함하는 메시지를 생성할 수 있다. 634 단계에서, 프로세서(244)는, 예를 들어 PCIe 프로토콜을 활용하는 내부 스위치(236)를 통해 통신함으로써, U.2 GPU(250)로 메시지를 전달한다.
628 단계에서, 프로세서(244)는 U.2 GPU(250)에 의해 처리될 모든 데이터 청크가 U.2 GPU로 전송되었는지 여부를 판별한다. 그렇지 않은 경우, 프로세서(244)는 남아있는 데이터 청크에 대하여 630, 632, 및 634 단계들을 반복한다. 프로세서(244)가 처리될 모든 데이터 청크가 U.2 GPU들(250)로 전송되었다고 판별하면, 절차는 636 단계로 진행한다.
드라이브(242)의 프로세서(244)로부터 메시지를 수신하는 즉시, U.2 GPU(250)는 결과 데이터를 생성하기 위해 메시지에서 수신된 데이터 청크에 대해 메시지에서 식별되는 변환을 수행할 수 있다. U.2 GPU(250)가 결과 데이터를 생성하면, U.2 GPU(250)는 프로세서(244)로 변환이 완료되었음을 나타내는 처리 응답 메시지를 전송할 수 있다. 몇몇 실시 예들에 있어서, 처리 응답 메시지는 결과 데이터를 포함할 수 있고 프로세서(244)는 드라이브(242)의 메모리(246)에 결과 데이터를 저장할 수 있다. 몇몇 실시 예들에 있어서, U.2 GPU(250)는 추가적으로 또는 대체적으로 결과 데이터를 U.2 GPU(250)를 포함하는 스토리지부(130) 내의 다른 위치 또는 스토리지부(130) 외부로 전송할 수 있다. 예를 들어, U.2 GPU(250)는 추가적으로 또는 대체적으로 결과 데이터를 호스트 서버(210)로 전송할 수 있고, 또는 프로세서(244)는 U.2 GPU(250)에 대한 메시지에 주소를 포함시킬 수 있고 U.2 GPU(250)는 결과 데이터를 지정된 주소로 전달할 수 있다.
636 단계에서, 프로세서(244)는 634 단계에서 전송된 메시지를 수신한 각 U.2 GPU(250)로부터 처리 응답 메시지를 수신하였는지 여부를 판별한다. 그렇지 않은 경우, 프로세서(244)는 남아있는 처리 응답 메시지를 수신하기 위해 기다린다. 모든 처리 응답 메시지가 수신된 경우, 절차는 620 단계로 돌아갈 수 있고 프로세서(244)는 알고리즘 실행을 계속할 수 있다. 또는, 예를 들어 알고리즘이 완료된 경우, 절차는 610 단계로 돌아갈 수 있고 프로세서(244)는 계속 진행하기 위해 다른 트리거가 감지되는 것을 기다릴 수 있다.
도 6은 본 발명의 실시 예들에 따른 U.2 GPU들(250A-B)을 관리하는 베이스보드 관리 제어기(BMC)(234)에 대한 절차를 보여주는 블록도이다. 510 단계에서, BMC(234)는 파워 온(power-on), 플러그 인(plug-in), 또는 플러그 아웃(plug-out) 이벤트가 있었음을 감지한다. 예를 들어, BMC(234)는 섀시(231)의 포트(미드플레인 슬롯)에서 "현재의" 핀들을 모니터할 수 있고, 새로운 U.2 GPU(250)가 현재의 핀에 연결된 경우(미드플레인 슬롯에 삽입) 플러그 인 이벤트가 발생했음을 감지할 수 있거나 U.2 GPU(250)가 현재의 핀(미드플레인 슬롯)으로부터 제거된 경우 플러그 아웃 이벤트가 발생했음을 감지할 수 있다. 하나의 실시 예에 있어서, BMC(234)는 NVMe 관리 인터페이스(NVMe-MI; NVMe Management Interface) 프로토콜을 사용하여 U.2 GPU(250)와 통신 하기 위해 PCIe 또는 SMBus 인터페이스를 활용한다.
520 단계에서, BMC(234)가 이벤트가 파워 온 이벤트였다고 판별한 경우, BMC(234)는 BMC(234)와 연결된 U.2 GPU(250)의 능력을 판별한다. 예를 들어, 도 6에 도시된 바와 같이, 524 단계에서, BMC(234)는 BMC(234)에 연결된 U.2 GPU(250)에 대한 필수 제품 데이터(VPD; vital product data)(GPU.VPD)를 읽을 수 있다. 526 단계에서, BMC(234)는 U.2 GPU(250)의 능력과 연관된 정보를 모으기 위해 추가적으로 또는 대체적으로 NVMe "식별(Identify)" 커맨드를 활용할 수 있다. 522 단계에서, BMC(234)가 능력을 판별하기 위해 스캔되지 않은 BMC(234)와 연결된 하나 이상의 U.2 GPU들(250)이 있다고 판별하는 경우, BMC(234)는 남아있는 U.2 GPU 또는 U.2 GPU들에 대해 524 그리고/또는 526 단계들을 반복한다. BMC(234)가 BMC(234)와 연결된 각 U.2 GPU(250)가 그의 능력을 판별하기 위해 스캔된 것으로 판별하는 경우, 절차는 530 단계로 진행한다.
530 단계에서, BMC(234)가 U.2 GPU들의 판별된 능력에 기초하여 드라이브(242)에서 능력 표를 업데이트한다. 몇몇 실시 예들에 있어서, 판별된 능력은 U.2 GPU의 현재 사용 효율, U.2 GPU 특징, U.2 GPU 세대, U.2 GPU 처리 능력, 스레드 프로세서의 개수, U.2 GPU DRAM의 사이즈, 대역폭, 지연시간, 정밀도, 입력 출력 사이즈, 및 동작 MHZ 속도 중 하나 이상을 포함할 수 있다. 예를 들어, BMC(234)가 슬롯 3에서의 U.2 GPU(250)가 드라이브(242)에 대한 변환 1 또는 변환 2를 수행할 수 있다고 판별한 경우, 드라이브(242)에 대한 능력 표는 변환 1 및 변환 2와 대응하는 것으로서 슬롯 3 주소를 포함하도록 업데이트 된다. 528 단계에서, BMC(234)는 BMC(234)와 연결된 하나 이상의 드라이브(242)가 능력 표를 업데이트하지 않았다고 판별한 경우, BMC(234)는 530 단계로 돌아가서 다음 드라이브(242)를 업데이트한다. BMC(234)가 BMC(234)와 연결된 각 드라이브(242)가 능력 표를 업데이트하였다고 판별한 경우, 절차는 510 단계로 돌아가고 BMC(234)는 다른 파워 온, 플러그 인, 플러그 아웃 이벤트를 감지하기를 기다리는 것을 재개한다.
BMC(234)가 510 단계에서 감지된 이벤트가 파워 온 이벤트가 아닌 것으로 판별한 경우, 절차는 532 단계로 진행한다. 532 단계에서, BMC(234)가 이벤트가 플러그 인 이벤트인 것으로 판별한 경우, BMC(234)는 플러그 인 이벤트를 유발한 BMC(234)와 연결된 U.2 GPU(250)의 능력을 판별한다. 이 플러그 인 이벤트는 U.2 GPU가 현장 교체 가능한 장치로서 구현되고, 현장 교체 가능한 U.2 GPU가 이미 하나 이상의 드라이브(242)를 포함하는 섀시(231)로 연결되는 경우와 대응할 수 있다. U.2 GPU(250)의 능력을 판별하는 예시로서, 도 6에 도시된 바와 같이, 534 단계에서, BMC(234)는 U.2 GPU(250)에 대한 필수 제품 데이터(GPU.VPD)를 읽을 수 있다. 526 단계에서, BMC(234)는 추가적으로 또는 대체적으로 U.2 GPU(250)의 능력과 연관된 정보를 모으기 위해 NVMe "식별" 커맨드를 활용할 수 있다. 플러그 인 이벤트를 유발한 U.2 GPU(250)의 능력이 판별되면, 절차는 540 및 538 단계들로 진행한다. 538 및 540 단계들에서, 530 및 528 단계들에 대하여 위에서 설명된 바와 같이 BMC(234)는 새로운 U.2 GPU(250)의 능력에 기초하여 BMC(234)와 연결된 드라이브(242)의 능력 표를 업데이트한다.
BMC가 이벤트가 플러그 인 이벤트가 아닌 것으로 판별한 경우, 예를 들어, BMC(234)가 이벤트가 플러그 아웃 이벤트인 것으로 판별한 경우, 절차는 540 단계로 진행한다. 이 플러그 아웃 이벤트는 U.2 GPU가 현장 교체 가능한 장치로서 구현되고 U.2 GPU가 섀시(231)로부터 제거되는 경우와 대응할 수 있다. 540 및 538 단계들에서, BMC(234)는 U.2 GPU(250)에 대응하는 플러그 아웃 이벤트에 기초하여 드라이브(242)의 능력 표를 업데이트한다. 예를 들어, BMC(234)는 능력 표로부터 U.2 GPU(250)의 이전 주소를 제거할 수 있다.
몇몇 실시 예들에 있어서, 파워 온, 플러그 인, 및 플러그 아웃 이벤트 이외에, BMC(234)는 이벤트가 스토리지 관리 이벤트인 것으로 판별할 수 있다. 이는 스토리지 관리자(예를 들어, 호스트(210)의 애플리케이션(212))가 어느 드라이브(242)가 어느 U.2 GPU(250)를 이용할 수 있는지를 변경한 것을 나타낼 수 있다. 이벤트가 스토리지 관리 이벤트인 경우, BMC(234)는 이에 따라 능력 표를 업데이트할 수 있다. 예를 들어, 스토리지 관리 이벤트는 특정 U.2 GPU(250)가 특정 드라이브(242)를 지원할 수 없음을 나타낼 수 있고, BMC(234)는 특정 드라이브(242)의 능력 표로부터 특정 U.2 GPU(250)를 제거할 수 있다.
몇몇 실시 예들에 있어서, BMC(234)가 드라이브(242)의 능력 표를 업데이트한 경우, BMC(234)는 어느 드라이브에 대해 그리고 어느 변환을 위해 이용 가능한 것으로서 리스트하기 위한 U.2 GPU를 판별하는데 있어서 각 U.2 GPU의 능력 이외의 고려 사항들을 고려한다. 예를 들어, 하나의 실시 예에 있어서, BMC(234)는 특정 드라이브(242)를 특정 U.2 GPU들(250)로 할당함으로써 U.2 GPU들(250)에 대한 부하의 균형을 맞춘다. 이러한 실시 예에 있어서, BMC(234)는 오직 할당된 U.2 GPU(250)의 주소를 포함하도록 주어진 드라이브(242)의 능력 주소를 업데이트할 수 있다. 다른 실시 예에 있어서, BMC(234)는 특정한 U.2 GPU들(250)의 능력에 기초하여 특정한 변환을 처리하기 위해 특정한 U.2 GPU들(250)을 할당할 수 있다. 이러한 실시 예에 있어서, BMC(234)는 할당된 U.2 GPU 또는 특정한 변환을 위한 U.2 GPU들의 주소를 포함하도록 능력 표를 업데이트할 수 있지만, U.2 GPU 능력이 다른 변환을 처리하기에 충분할지라도 다른 변환을 위한 주소는 포함하지 않을 수 있다. 예를 들어, BMC(234)는 변환 3에 대해 슬롯 2에 위치하는 가장 강력한 U.2 GPU를 예약할 수 있다. 슬롯 2에서의 U.2 GPU는 변환 1-9를 처리하기에 적절한 능력을 가질 수 있다. BMC(234)는 변환 3에 대응하는 것으로써 슬롯 2를 포함하도록 능력 표를 업데이트할 수 있지만, 다른 변환에 대해서는 슬롯 2를 포함하지 않을 수 있고, 따라서 변환 3 이외의 다른 변환에 대해 드라이브(242)가 슬롯 2에서의 U.2 GPU를 활용하는 것을 못하게 한다. 몇몇 실시 예들에 있어서, BMC(234)는 이용 가능한 U.2 GPU 특징, 현재 이용 가능한 U.2 GPU 특징(예를 들어, 전용되지 않거나 완전히 할당되지 않은), 및/또는 동시에 실행할 수 있는 동시에 발생하는 알고리즘의 개수와 비교하여 변환에 관련된 알고리즘의 유형에 기초하여 로드 밸런싱(load balancing)을 수행할 수 있다.
본 명세서에서 사용된 용어는 특정한 실시 예들을 설명하기 위한 목적이고 본 발명의 사상을 제한하려는 것은 아니다. 본 명세서에서 사용된 바와 같이, 문맥이 명확하게 다른 것을 나타내지 않으면, 단수형은 복수형을 포함하는 것으로 의도된다. "포함하는", "포함" 용어는, 본 명세서에서 사용된 경우, 명시된 특징, 정수, 단계, 동작, 요소, 그리고/또는 부품의 존재를 명시하지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 부품, 그리고/또는 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에서 사용된 바와 같이, "및/또는" 용어는 하나 이상의 연관된 나열 항목의 모든 조합 및 어떤 조합을 포함한다. "적어도 하나"와 같은 표현은, 요소들의 리스트 앞에 있는 경우, 전체 요소들의 리스트를 수정하고 리스트의 개별 요소를 수정하지 않는다.
본 명세서에서 사용된 바와 같이, "할 수 있다"의 사용은 본 발명의 실시 예들을 설명하는 경우, "본 발명의 하나 이상의 실시 예들"을 지칭한다. 본 명세서에서 사용된 바와 같이, "사용", "사용하는", "사용된" 용어는 "활용", "활용하는", "활용된" 용어와 각각 동의어로 간주될 수 있다. 또한, "예시적인" 용어는 예시 또는 도면을 지칭하는 것으로 의도된다.
본 명세서에서 설명된 본 발명의 실시 예들에 따른 전자 또는 전기 장치 및/또는 다른 관련된 장치 또는 부품은 임의의 적절한 하드웨어, 펌웨어(예를 들어, 응용 주문형 집적 회로(application-specific integrated circuit), 소프트웨어, 또는 소프트웨어, 펌웨어, 및 하드웨어의 조합을 활용하여 구현될 수 있다. 예를 들어, 이러한 장치의 다양한 부품들은 하나의 집적된 회로(IC) 칩 또는 별도의 IC 칩에 형성될 수 있다. 또한, 이러한 장치의 다양한 부품들은 연성 인쇄 회로 필름, 테이프 이동 패키지(TCP, tape carrier package), 인쇄 회로 기판(PCB, printed circuit board) 위에 구현될 수 있거나 하나의 기판에 형성될 수 있다. 또한, 이러한 장치의 다양한 부품들은 하나 이상의 컴퓨팅 장치에서, 본 명세서에서 설명된 다양한 기능들을 수행하기 위해 컴퓨터 프로그램 명령을 실행하고 다른 시스템 부품과 상호 작용하는 하나 이상의 프로세서들에서 실행하는 프로세스 또는 스레드일 수 있다. 컴퓨터 프로그램 명령은, 예를 들어, 랜덤 액세스 메모리(RAM)와 같은 표준 메모리 장치를 이용하는 컴퓨팅 장치에 구현될 수 있는 메모리에 저장된다. 컴퓨터 프로그램 명령은 또한, 예를 들어, CD-ROM, 플래시 드라이브 등과 같은 다른 비일시적 컴퓨터 판독 가능한 미디어에 저장될 수 있다. 또한, 통상의 기술자는 다양한 컴퓨팅 장치의 기능성이 하나의 컴퓨팅 장치로 결합되거나 통합될 수 있는 것을 인식해야 한다. 또한 본 발명의 예시적인 실시 예들의 사상 및 범위를 벗어나지 않고 특정한 컴퓨팅 장치의 기능성이 하나 이상의 다른 컴퓨팅 장치에 분산될 수 있는 것을 인식해야 한다.
별도로 정의되지 않으면, 본 명세서에서 사용된 모든 용어(기술적 및 과학적 용어를 포함)는 본 발명이 속한 기술에서 통상의 기술자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 용어는, 일반적으로 이용되는 사전에서 정의된 것과 같이, 관련된 기술 및/또는 본 명세서의 문맥에서의 의미와 일치하는 의미를 갖는 것으로서 해석되어야 하고, 본 명세서에서 명확히 정의되지 않으면, 이상적이거나 매우 형식적인 감각으로 해석되어서는 안 된다.
본 발명은 본 발명의 실시 예들을 구체적으로 나타내는 특정한 참조들을 이용하여 상세하게 설명되었지만, 본 명세서에서 설명된 실시 예들은 하나도 빠뜨림 없이 완전하거나 개시된 정확한 형식으로 본 발명의 범위가 제한되지 않는다. 본 발명이 존재하는 기술 분야의 통상의 기술자는, 본 발명의 다음의 청구항들에 기재된 것과 같이, 본 발명의 원칙, 사상, 및 범위를 유효하게 벗어나지 않고 설명된 구조, 조립 방법 및 동작에서의 변환 및 변경이 실행될 수 있음을 인정할 수 있다.

Claims (20)

  1. 호스트 서버; 및
    스토리지부를 포함하고,
    상기 스토리지부는,
    드라이브 메모리 및 드라이브 프로세서를 포함하는 드라이브;
    상기 호스트 서버와 상기 드라이브의 상기 드라이브 메모리 사이에 데이터를 전송하고 수신하기 위해 상기 호스트 서버를 상기 드라이브로 연결시키도록 구성되는 외부 스위치; 및
    그래픽 처리 장치를 포함하고,
    상기 드라이브 프로세서는 처리 명령 및 데이터를 상기 드라이브 메모리로부터 상기 그래픽 처리 장치로 전송하도록 구성되고, 상기 그래픽 처리 장치는 상기 처리 명령에 따라 상기 데이터를 처리하여 결과 데이터를 생성하도록 구성되고,
    상기 드라이브는 표(table)를 포함하고, 그리고 상기 드라이브 프로세서는:
    상기 드라이브 메모리에 저장된 데이터 청크 및 상기 데이터 청크에 적용될 변환을 식별하되, 상기 표는 상기 그래픽 처리 장치가 상기 변환을 수행할 수 있음을 나타내고, 그리고
    상기 데이터 청크를 상기 그래픽 처리 장치로 전송하는 데이터 스토리지 및 처리 시스템.
  2. 제 1 항에 있어서,
    상기 그래픽 처리 장치는 U.2 커넥터를 포함하고, 상기 그래픽 처리 장치는 상기 U.2 커넥터를 통해 상기 드라이브와 연결되고, 상기 그래픽 처리 장치는 상기 U.2 커넥터를 통해 상기 처리 명령 및 데이터를 수신하는 데이터 스토리지 및 처리 시스템.
  3. 제 1 항에 있어서,
    상기 그래픽 처리 장치는 상기 결과 데이터를 상기 드라이브 프로세서로 전송하도록 구성되고 상기 드라이브 프로세서는 상기 드라이브 메모리에 상기 결과 데이터를 저장하도록 구성되는 데이터 스토리지 및 처리 시스템.
  4. 제 1 항에 있어서,
    상기 그래픽 처리 장치는 상기 외부 스위치와 연결되고, 상기 그래픽 처리 장치는 상기 외부 스위치를 활용하여 상기 결과 데이터를 상기 호스트 서버로 전송하도록 구성되는 데이터 스토리지 및 처리 시스템.
  5. 제 4 항에 있어서,
    상기 그래픽 처리 장치는 상기 처리 명령에 따라 상기 데이터의 상기 처리를 완료한 후 상태 메시지를 상기 드라이브 프로세서로 전송하도록 구성되는 데이터 스토리지 및 처리 시스템.
  6. 제 1 항에 있어서,
    상기 드라이브 프로세서는:
    상기 표로부터 상기 그래픽 처리 장치의 주소를 검색하고, 그리고
    상기 데이터 청크를 상기 그래픽 처리 장치의 상기 주소로 전송하도록 구성되는 데이터 스토리지 및 처리 시스템.
  7. 제 1 항에 있어서,
    상기 스토리지부는 상기 그래픽 처리 장치의 능력을 판별하고 상기 그래픽 처리 장치의 상기 능력에 기초하여 상기 표를 업데이트하도록 구성되는 베이스보드 관리 제어기(baseboard management controller)를 더 포함하는 데이터 스토리지 및 처리 시스템.
  8. 제 7 항에 있어서,
    상기 스토리지부는 복수의 드라이브들을 포함하고, 각 드라이브는 별도의 표를 가지며,
    상기 스토리지부는 복수의 그래픽 처리 장치들을 포함하고,
    상기 베이스보드 관리 제어기는 상기 복수의 드라이브들의 각 드라이브의 각 표를 업데이트하도록 구성되는 데이터 스토리지 및 처리 시스템.
  9. 제 7 항에 있어서,
    상기 베이스보드 관리 제어기 및 상기 그래픽 처리 장치는 NVMe-MI(Non Volatile Memory Express-Management Interface) 프로토콜을 이용하여 통신하도록 구성되고, 베이스보드 관리 제어기는 NVMe-MI 식별(Identify) 커맨드를 활용함으로써 상기 그래픽 처리 장치의 상기 능력을 판별하는 데이터 스토리지 및 처리 시스템.
  10. 제 7 항에 있어서,
    상기 스토리지부는 복수의 그래픽 처리 장치들을 포함하고, 상기 베이스보드 관리 제어기는 상기 복수의 그래픽 처리 장치들의 각 그래픽 처리 장치에 대한 부하를 판별하고 상기 복수의 그래픽 처리 장치들의 각 그래픽 처리 장치에 대한 상기 부하에 기초하여 상기 표를 업데이트하도록 구성되는 데이터 스토리지 및 처리 시스템.
  11. 제 1 항에 있어서,
    상기 외부 스위치는 이더넷(Ethernet) 스위치이고 상기 드라이브는 이더넷 솔리드 스테이트 드라이브(Ethernet solid state drive)인 데이터 스토리지 및 처리 시스템.
  12. 제 1 항에 있어서,
    상기 호스트 서버는 원격 직접 액세스 스토리지(remote direct access storage) 프로토콜을 사용하여 상기 스토리지부와 통신하는 데이터 스토리지 및 처리 시스템.
  13. 제 1 항에 있어서,
    상기 스토리지부는 섀시(chassis) 및 베이스보드 관리 제어기를 더 포함하고, 상기 그래픽 처리 장치는 현장 교체 가능한 장치이고, 상기 베이스보드 관리 제어기는 상기 그래픽 처리 장치가 상기 섀시로 삽입되는 것과 대응하는 플러그 인(plug-in) 이벤트를 감지하도록 구성되는 데이터 스토리지 및 처리 시스템.
  14. 데이터 스토리지 및 처리 시스템에 있어서:
    호스트 서버; 및
    스토리지부를 포함하되, 상기 스토리지부는:
    드라이브 메모리 및 드라이브 프로세서를 포함하는 드라이브;
    상기 호스트 서버와 상기 드라이브의 상기 드라이브 메모리 사이에 데이터를 전송하고 수신하기 위해 상기 호스트 서버를 상기 드라이브로 연결시키도록 구성되는 외부 스위치; 및
    그래픽 처리 장치를 포함하고,
    상기 드라이브 프로세서는 처리 명령 및 데이터를 상기 드라이브 메모리로부터 상기 그래픽 처리 장치로 전송하도록 구성되고, 상기 그래픽 처리 장치는 상기 처리 명령에 따라 상기 데이터를 처리하여 결과 데이터를 생성하도록 구성되고,
    상기 호스트 서버는 트리거(trigger) 명령을 상기 드라이브 프로세서로 전송하도록 구성되고, 상기 드라이브 프로세서는 상기 트리거 명령에 응답하여 데이터 처리 알고리즘을 실행하도록 구성되는 데이터 스토리지 및 처리 시스템.
  15. 제 14 항에 있어서,
    상기 데이터 처리 알고리즘은 실행 시 상기 드라이브 프로세서가 상기 데이터 및 상기 처리 명령을 상기 그래픽 처리 장치로 전송하도록 야기하는 단계들을 포함하는 데이터 스토리지 및 처리 시스템.
  16. 드라이브 및 그래픽 처리 장치를 포함하고, 상기 드라이브는 드라이브 프로세서 및 드라이브 메모리를 포함하는 데이터 스토리지 및 처리 시스템의 동작 방법에 있어서,
    상기 드라이브 프로세서가 호스트 서버로부터 데이터를 수신하는 단계;
    상기 드라이브 프로세서가 상기 데이터를 상기 드라이브 메모리에 저장하는 단계;
    상기 드라이브 프로세서가 트리거를 감지하는 단계;
    상기 드라이브 프로세서가 상기 트리거에 응답하여 알고리즘을 실행하고, 상기 알고리즘은 상기 드라이브 메모리에 저장된 상기 데이터의 데이터 청크 및 상기 데이터 청크에 적용할 변환을 식별하는 단계;
    상기 드라이브 프로세서가 상기 변환을 수행하기 위한 장치에 대응하는 주소에 대한 능력 표를 검색하는 단계; 및
    상기 드라이브 프로세서가 상기 데이터 청크 및 상기 데이터 청크를 처리하기 위한 처리 명령을 상기 주소로 전송하고, 상기 주소는 상기 그래픽 처리 장치의 상기 주소인 단계를 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 그래픽 처리 장치가 상기 데이터 청크 및 상기 처리 명령을 수신하는 단계; 및
    상기 그래픽 처리 장치가 상기 처리 명령에 따라 상기 데이터 청크를 처리하여 결과 데이터를 생성하는 단계를 더 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 그래픽 처리 장치가 상기 결과 데이터를 상기 드라이브 프로세서로 전송하는 단계; 및
    상기 드라이브 프로세서가 상기 결과 데이터를 상기 드라이브 메모리에 저장하는 단계를 더 포함하는 방법.
  19. 제 16 항에 있어서,
    베이스보드 관리 제어기가 상기 그래픽 처리 장치의 능력을 감지하는 단계; 및
    상기 베이스보드 관리 제어기가 상기 그래픽 처리 장치의 상기 능력에 기초하여 상기 능력 표를 업데이트하는 단계를 더 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 데이터 스토리지 및 처리 시스템은 복수의 드라이브들을 포함하고, 상기 복수의 드라이브들의 각 드라이브는 능력 표를 포함하고,
    상기 베이스보드 관리 제어기가 상기 그래픽 처리 장치의 상기 능력에 기초하여 상기 복수의 드라이브들의 각 드라이브의 각 능력 표를 업데이트하는 단계를 포함하는 방법.
KR1020180010554A 2017-05-24 2018-01-29 Ssd 폼 팩터에서 내장된 gpu를 포함하는 nvme-of 이더넷 ssd 섀시를 포함하는 머신 러닝을 위한 시스템 및 방법 KR102333445B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762510728P 2017-05-24 2017-05-24
US62/510,728 2017-05-24
US15/672,223 2017-08-08
US15/672,223 US10417733B2 (en) 2017-05-24 2017-08-08 System and method for machine learning with NVMe-of ethernet SSD chassis with embedded GPU in SSD form factor

Publications (2)

Publication Number Publication Date
KR20180128825A KR20180128825A (ko) 2018-12-04
KR102333445B1 true KR102333445B1 (ko) 2021-12-02

Family

ID=64401700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180010554A KR102333445B1 (ko) 2017-05-24 2018-01-29 Ssd 폼 팩터에서 내장된 gpu를 포함하는 nvme-of 이더넷 ssd 섀시를 포함하는 머신 러닝을 위한 시스템 및 방법

Country Status (5)

Country Link
US (1) US10417733B2 (ko)
JP (1) JP6975095B2 (ko)
KR (1) KR102333445B1 (ko)
CN (1) CN108959135B (ko)
TW (1) TWI737904B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10180924B2 (en) 2017-05-08 2019-01-15 Liqid Inc. Peer-to-peer communication for graphics processing units
US11573900B2 (en) 2019-09-11 2023-02-07 Intel Corporation Proactive data prefetch with applied quality of service
US10996942B1 (en) * 2020-01-21 2021-05-04 Dell Products L.P. System and method for graphics processing unit firmware updates
CN111221762B (zh) * 2020-02-25 2021-05-25 深圳市春盛海科技有限公司 图像控制器及图像系统
US11977915B2 (en) 2020-12-15 2024-05-07 Western Digital Technologies, Inc. Non-volatile memory with intelligent compute task distribution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080320214A1 (en) 2003-12-02 2008-12-25 Super Talent Electronics Inc. Multi-Level Controller with Smart Storage Transfer Manager for Interleaving Multiple Single-Chip Flash Memory Devices
US20130067133A1 (en) 2002-11-18 2013-03-14 Arm Limited Handling interrupts in data processing
US20140130188A1 (en) 2011-07-27 2014-05-08 Lsi Corporation Techniques For Secure Storage Hijacking Protection
US20150378932A1 (en) 2014-06-26 2015-12-31 NXGN Data, Inc. System and method for executing native client code in a storage device

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050237329A1 (en) * 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US7868897B2 (en) * 2006-06-30 2011-01-11 Intel Corporation Apparatus and method for memory address re-mapping of graphics data
CN103238305A (zh) * 2010-05-28 2013-08-07 安全第一公司 用于安全数据储存的加速器系统
US9058675B2 (en) * 2010-05-29 2015-06-16 Intel Corporation Non-volatile storage for graphics hardware
US9423983B2 (en) * 2012-01-19 2016-08-23 Syncsort Incorporated Intelligent storage controller
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US8996781B2 (en) * 2012-11-06 2015-03-31 OCZ Storage Solutions Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
US9142004B2 (en) * 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
US9483431B2 (en) 2013-04-17 2016-11-01 Apeiron Data Systems Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA)
US9430412B2 (en) 2013-06-26 2016-08-30 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over Ethernet-type networks
US8819335B1 (en) 2013-08-30 2014-08-26 NXGN Data, Inc. System and method for executing map-reduce tasks in a storage device
KR20150047785A (ko) * 2013-10-25 2015-05-06 삼성전자주식회사 서버 시스템 및 스토리지 시스템
US9317204B2 (en) 2013-11-14 2016-04-19 Sandisk Technologies Inc. System and method for I/O optimization in a multi-queued environment
US8935463B1 (en) * 2014-01-03 2015-01-13 Fastor Systems, Inc. Compute engine in a smart SSD exploiting locality of data
US9003109B1 (en) * 2014-05-29 2015-04-07 SanDisk Technologies, Inc. System and method for distributed computing in non-volatile memory
WO2015200313A1 (en) * 2014-06-23 2015-12-30 Liqid Inc. Modular switched fabric for data storage systems
WO2016118559A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object based memory fabric
JP6316503B2 (ja) * 2015-05-18 2018-04-25 株式会社日立製作所 計算機システム、アクセラレータ及びデータベースの処理方法
US9811379B2 (en) * 2015-06-01 2017-11-07 Samsung Electronics Co., Ltd. Highly efficient inexact computing storage device
WO2016205975A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Apparatus and method to improve scalability of graphics processor unit (gpu) virtualization
US9916273B2 (en) 2015-07-10 2018-03-13 Microsoft Technology Licensing, Llc Sideband serial channel for PCI express peripheral devices
US20170019312A1 (en) 2015-07-17 2017-01-19 Brocade Communications Systems, Inc. Network analysis and management system
US10296232B2 (en) 2015-09-01 2019-05-21 Western Digital Technologies, Inc. Service level based control of storage systems
US10055142B1 (en) * 2015-10-13 2018-08-21 Maxlinear Asia Singapore Pte Ltd. Apparatus and method for command processing for a fast block input/output device
US10866912B2 (en) * 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130067133A1 (en) 2002-11-18 2013-03-14 Arm Limited Handling interrupts in data processing
US20080320214A1 (en) 2003-12-02 2008-12-25 Super Talent Electronics Inc. Multi-Level Controller with Smart Storage Transfer Manager for Interleaving Multiple Single-Chip Flash Memory Devices
US20140130188A1 (en) 2011-07-27 2014-05-08 Lsi Corporation Techniques For Secure Storage Hijacking Protection
US20150378932A1 (en) 2014-06-26 2015-12-31 NXGN Data, Inc. System and method for executing native client code in a storage device

Also Published As

Publication number Publication date
TWI737904B (zh) 2021-09-01
TW201907310A (zh) 2019-02-16
JP6975095B2 (ja) 2021-12-01
US20180342039A1 (en) 2018-11-29
JP2018198054A (ja) 2018-12-13
US10417733B2 (en) 2019-09-17
CN108959135B (zh) 2023-08-08
CN108959135A (zh) 2018-12-07
KR20180128825A (ko) 2018-12-04

Similar Documents

Publication Publication Date Title
KR102333445B1 (ko) Ssd 폼 팩터에서 내장된 gpu를 포함하는 nvme-of 이더넷 ssd 섀시를 포함하는 머신 러닝을 위한 시스템 및 방법
US20200104275A1 (en) Shared memory space among devices
US10394723B2 (en) Data accessing method and PCIe storage device
CN106688208B (zh) 利用机架规模架构中的池化存储器进行的网络通信
US10372639B2 (en) System and method to avoid SMBus address conflicts via a baseboard management controller
US9507619B2 (en) Virtualizing a host USB adapter
US10223126B2 (en) Out-of-order processor and method for back to back instruction issue
US10169247B2 (en) Direct memory access between an accelerator and a processor using a coherency adapter
US10289424B2 (en) System and method for loading and populating system inventory data in an event driven model
CN103873489A (zh) 具有PCIe接口的装置共享系统及方法
US20220300448A1 (en) Peripheral component interconnect express device and method of operating the same
CN104881105A (zh) 电子装置
US9319313B2 (en) System and method of forwarding IPMI message packets based on logical unit number (LUN)
WO2016138657A1 (en) Techniques for storing or accessing key-value item
CN104219061B (zh) 请求功耗状态变化的方法及装置
CN113010470A (zh) 边缘节点远程控制系统、方法、设备及存储介质
US10075398B2 (en) Systems and methods for enabling a host system to use a network interface of a management controller
US11061838B1 (en) System and method for graphics processing unit management infrastructure for real time data collection
CN113711195A (zh) 传输装置、信息处理装置以及数据传输方法
WO2023097703A1 (en) A storage server forsecure and performant execution of user code in a data center storage
US20190196714A1 (en) System and method for direct disk accessing
CN114443209A (zh) 存储虚拟化装置及其操作方法和具有其的系统的操作方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right