KR102513924B1 - 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법 - Google Patents

데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102513924B1
KR102513924B1 KR1020180067003A KR20180067003A KR102513924B1 KR 102513924 B1 KR102513924 B1 KR 102513924B1 KR 1020180067003 A KR1020180067003 A KR 1020180067003A KR 20180067003 A KR20180067003 A KR 20180067003A KR 102513924 B1 KR102513924 B1 KR 102513924B1
Authority
KR
South Korea
Prior art keywords
aabb
data storage
data
rtl
interface
Prior art date
Application number
KR1020180067003A
Other languages
English (en)
Other versions
KR20190040884A (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 KR20190040884A publication Critical patent/KR20190040884A/ko
Application granted granted Critical
Publication of KR102513924B1 publication Critical patent/KR102513924B1/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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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
    • 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/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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/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/0661Format or protocol conversion 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/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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/356Switches specially adapted for specific applications for storage area networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • 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/0008High speed serial bus, e.g. Fiber channel
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Internal Circuitry In Semiconductor Integrated Circuit Devices (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)

Abstract

일 실시예에 따른 데이터 저장 장치는 데이터 저장 매체;, 복수의 프로세서 코어들을 포함하는 프로세서; 재구성형 로직 블록들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(application acceleration black-box, AABB) 슬롯들을 포함한다. 호스트 인터페이스는 원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신한다. 상기 호스트 커맨드는 레지스터-전송 레벨(register-transfer level, RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함한다. 구성 컨트롤러는 상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드한다. 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 AABB 슬롯내에 다운로드된 상기 RTL 비트스트림을 이용하여 상기 데이터 저장 매체 내에 저장된 데이터에 접근하고 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동한다.

Description

데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법 {SYSTEM AND Method for PROVIDING IN-Storage Acceleration(ISA) in DATA STORAGE Devices}
본 명세서는 주로 데이터 저장 시스템들내의 데이터 프로세싱 가속(data processing acceleration)에 관한 것이며, 보다 구체적으로, 데이터 저장 장치들(구체적으로, NVMe 및 NVMe-oF 장치들) 내의 인-스토리지 가속을 제공하는 시스템 및 방법에 관한 것이다.
솔리드-스테이트 드라이브들(solid-state drives, SSDs)은 하드 디스크 드라이브(hard disk drive, HDD)들과 같은 기존의 저장 장치들을 빠르게 대체하여 급속히 현대의 데이터센터 인프라스트럭처(infrastructure)의 주요한 스토리지 구성요소들이 되어가고 있다. SSD들은 낮은 레이턴시(latency), 높은 데이터 리드/라이트 처리량(throughput), 및 사용자 데이터의 신뢰성 및 지속성을 갖는 스토리지(storage)를 제공한다. 비휘발성 메모리 익스프레스 오버 패브릭스(Non-volatile memory express(NVMe) over fabrics, NVMe-oF)는 이더넷(Ethernet), 파이버 채널(Fibre Channel), 및 인피니밴드(Infiniband)와 같은 패브릭 네트워크를 통해 수백개 및 수천개의 SSD들을 연결시켜 주는 새롭게 떠오르는 기술이다.
NVMe-oF 프로토콜은 많은 수의 NVMe SSD들을 형성된 패브릭 네트워크를 통해 원격 호스트에 연결시켜 주는 원격 직접-연결 저장 장치(remote direct-attached storage, rDAS)을 가능하게 해준다. NVMe-oF 프로토콜은 또한 네트워크를 통해 NVMe 커맨드들, 데이터, 및 응답들을 운반(carry)하기 위한 신뢰성 있는 트랜스포트(transport) 서비스를 제공하기 위해 원격 직접 메모리 접근(remote direct memory access, RDMA)을 지원한다. iWARP, RoCE v1, 및 RoCE v2는 RDMA 서비스를 제공하는 트랜스포트 프로토콜들의 일부 예시들이다.
분할된(disaggregated) 데이터 저장 장치들(예를 들어, NVMe-oF 호환(compatible) SSD들, 본 명세서에서는 간략히 NVMe-oF SSD들 또는 eSSD들로도 지칭될 수 있다)을 이용하는 데이터 저장 시스템은 호스트 컴퓨터에서 구동되는 어플리케이션에 많은 양의 스토리지를 제공할 수 있다. 어플리케이션은 분할된 데이터 저장 장치들로부터 많은 양의 데이터(빅 데이터)를 수집하고 이들을 분석할 수 있다.
빅 데이터 프로세싱의 스케일은 매우 크므로, 의미 있는 빅 데이터 마이닝(data mining)을 수행하기 위한 인프라스트럭처는 과도한 비용이 들 수 있으며(cost prohibitive), 많은 컴퓨팅 리소스들, 대형 시스템 메모리들, 고대역폭 네트워크뿐만 아니라, 빅 데이터를 저장하기 위한 대형의 고성능 데이터 저장 장치들을 요구할 수 있다. 데이터 프로세싱 마이닝 태스크들의 일부를 호스트 컴퓨터로부터 데이터 저장 장치들에 전가(offload)시키고 데이터 저장 장치들로부터 호스트 컴퓨터로의 데이터 이동들을 최소화 하는 것이 바람직할 것이다.
본 발명의 목적은 데이터 저장 장치들(구체적으로, NVMe 및 NVMe-oF 장치들)내의 인-스토리지 가속을 제공하는 시스템 및 방법을 제공하는 것이다.
일 실시예에 따르면, 데이터 저장 장치는: 데이터 저장 매체; 복수의 프로세서 코어들을 포함하는 프로세서; 재구성형 로직 블록들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(AABB) 슬롯들; 원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신하는 호스트 인터페이스, 상기 호스트 커맨드는 레지스터-전송 레벨(RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함하고; 및 상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드하는 구성 컨트롤러를 포함한다. 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 AABB 슬롯내에 다운로드된 상기 RTL 비트스트림을 이용하여 상기 데이터 저장 매체 내에 저장된 데이터에 접근하고 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동한다.
다른 실시예에 따르면, 브릿지 장치는: 데이터 저장 장치의 데이터 저장 매체내에 저장된 데이터에 접근하는 데이터 저장 인터페이스; 복수의 프로세서 코어들을 포함하는 프로세서; 재구성형 로직 블럭들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(AABB) 슬롯들; 원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신하는 호스트 인터페이스, 상기 호스트 커맨드는 레지스터-전송 레벨(RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함하고; 및 상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드하는 구성 컨트롤러를 포함한다. 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 AABB 슬롯내에 다운로드된 RTL 비트스트림을 이용하여 상기 데이터 저장 인터페이스를 통해 상기 데이터 저장 데이터 장치의 상기 데이터 저장 매체 내에 저장된 데이터에 접근하고 상기 데이터를 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동한다
다양한 신규한 구현의 세부사항 및 이벤트의 조합을 포함하는 상기 및 다른 바람직한 피처들은 첨부된 도면들을 참고로 하여 이제부터 더욱 구체적으로 기술될 것이며 청구항들에 언급될 것이다. 본 명세서에서 기술된 특정 시스템 및 방법은 예시의 수단으로서만 제시되며 이로 제한되는 것이 아님이 이해될 것이다. 당업자에게 이해될 것과 같이, 본 명세서에서 기술된 원리들 및 피처들은 본 명세서의 범위를 벗어나지 않고 다양한 수많은 실시예에 이용될 수 있다.
본 발명의 시스템 및 방법은 인접(near) 또는 인-스토리지 가속을 수행하기 위해 헤비-듀티(heavy-duty) 데이터 프로세싱 및 조작을 수행하는 호스트 어플리케이션의 기능들을 데이터 저장 장치 또는 브릿지(bridge) 장치로 전가시킴으로써, 효율적인 에너지 및 대역폭을 갖는 데이터 솔루션을 제공함과 동시에 전체적인 연산 및 저장 인프라스트럭처의 비용을 경감시킬 수 있다.
본 명세서의 일부로서 포함되는 첨부된 도면들은 현재 바람직한 실시예를 도시하며 상술한 일반적인 기술과 하기의 바람직한 실시예의 구체적인 기술은 함께 본 명세서에서 기술되는 원리들을 설명하고 교시하는 역할을 한다.
도 1은 일 실시예에 따른, 예시적인 데이터 저장 시스템의 블록 다이어그램을 도시한다.
도 2는 일 실시예에 따른, 예시적인 NVMe-oF 브릿지 장치의 블록 다이어그램을 도시한다.
도 3은 일 실시예에 따른, 예시적인 어플리케이션 가속 블랙-박스(AABB) 이미지의 데이터 구조를 도시한다.
도 4는 일 실시예에 따른, 백엔드(backend) SSD와 함께 브릿지 장치 내에 구현된 예시적인 인-스토리지 가속(in-storage acceleration, ISA) 플랫폼의 다이어그램을 도시한다.
도 5는 일 실시예에 따른, 데이터 저장 장치내에 구현된 예시적인 ISA 플랫폼의 다이어그램을 도시한다.
도 6은 일 실시예에 따른, AABB 다운로드 커맨드 포맷을 도시한다.
도 7은 일 실시예에 따른, AABB 슬롯 매니지먼트 커맨드들의 예를 도시한다.
도 8은 일 실시예에 따른, AABB Comm 커맨드의 예시적인 포맷을 도시한다.
도 9는 일 실시예에 따른, AABB 가능한 NVMe-oF SSD 내의 예시적인 커맨드 및 데이터 흐름들을 도시하는 다이어그램이다.
도 10은 다른 실시예에 따른, AABB 가능한 NVMe SSD 내의 예시적인 커맨드 및 데이터 흐름들을 도시하는 다이어그램이다.
도면들은 반드시 비율에 맞추어 도시된 것은 아니며 예시를 보여주기 위한 목적을 위해 도면들 전체에 걸쳐 유사한 구조들의 구성요소 또는 기능들은 일반적으로 유사한 참조 번호에 의해 나타내어진다. 도면들은 단지 본 명세서에서 기술되는 다양한 실시예들이 용이하게 기술되도록 의도되었다. 도면들은 본 명세서에서 개시하는 교시 사항들의 모든 양상을 기술하지 않으며 청구항들의 권리범위를 한정하지 않는다.
본 명세서에서 개시되는 각 피처들(features) 및 교시 사항들은 데이터 저장 장치들(구체적으로, NVMe 및 NVMe-oF 장치들)내의 인-스토리지 가속을 제공하기 위한 다른 피처들 및 교시 사항들과 분리되어 또는 이들과 함께 이용될 수 있다. 많은 수의 이러한 추가적인 피처들 및 교시 사항들을 이용하는 대표적인 예들은, 분리되어서뿐만 아니라 함께 조합되어서, 첨부된 도면들을 참조하여 보다 상세하게 기술 된다. 이러한 상세한 기술은 단지 당업자에게 본 교시 사항들의 양상들을 실시하기 위한 보다 구체적인 사항을 교시하도록 의도되었으며, 청구항들의 권리범위를 제한하기 위한 것으로 의도 되지 않는다. 그러므로, 상세한 설명 내 상기에 개시된 피처들의 조합들은 가장 넓은 의미에서의 교시 사항들을 실시하기 위해 필수적인 것은 아니며, 대신에 단지 본 교시 사항들의 대표적인 예시들을 구체적으로 기술하기 위해 교시된다.
아래의 기술에서, 설명의 목적만을 위해, 구체적인 명명법이 본 발명의 완전한 이해를 제공하기 위해 제시된다. 그러나, 이러한 구체적인 세부사항들이 본 명세서의 교시 사항들을 실시하기 위해 필요하지 않다는 것은 당업자에게 자명할 것이다.
본 명세서의 상세한 설명들의 일부분들은 컴퓨터 메모리 내에서의 데이터 비트들에 대한 연산들의 기호적 표현들 및 알고리즘 측면에서 제시되었다. 이러한 알고리즘에 대한 기술들 및 표현들은 데이터 프로세스 분야내의 당업자들이 그들의 작업의 요지를 다른 당업자에게 효과적으로 전달하기 위해 사용된다. 본 명세서에서, 그리고 일반적으로, 알고리즘은 목적하는 결과를 가져오는 일관성 있는(self-consistent) 단계들의 순서로 생각된다. 단계들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 보통, 그러나 필수적이지는 않게, 이러한 물리적 양들은 저장, 전송 (transfer), 결합, 비교, 및 그 밖에 조작이 가능한 전기적 또는 자계적 신호들의 형태를 갖는다. 때로는, 주로 범용(common usage)을 위한 이유로, 이러한 신호들을 비트들, 값들, 구성요소들, 기호들, 문자들, 용어들, 숫자들, 또는 이와 유사한 것들로 지칭하는 것이 편리하다고 알려져 있다.
그러나, 이러한 모든 용어들 및 이와 유사한 용어들은 적절한 물리적 양과 연계되어야 하며, 이들은 단지 이러한 물리적 양들에 적용되는 편리한 레이블(label)에 불과하다는 점을 유의해야 한다. 아래의 개시된 설명으로부터 명백히 별도로 상이하게 기술되지 않는 한, 명세서 전반에 걸쳐, “프로세싱(processing),” “컴퓨팅(computing),” “계산하는(calculating),” “결정하는,” “표시하는,” 또는 이와 유사한 것과 같은 용어를 이용하는 설명들은, 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양으로써 표현되는 데이터를 조작하거나 이를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 저장, 전송 또는 표시 장치들 내의 물리적 양으로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 지칭하는 것으로 이해되어져야 한다.
나아가, 본 교시 사항들의 추가적인 유용한 실시예들을 제공하기 위해서, 대표적인 예시들의 다양한 피처들 및 종속 청구항들은 구체적이고 명백하게 열거되지 않은 방식으로 조합될 수 있다. 모든 수치 범위들 또는 개체들의 그룹에 대한 표시들은, 원래의 개시 목적뿐만 아니라 청구된 발명의 요지를 제한하는 목적을 위해, 모든 가능한 중간 값들 또는 중간 개체들을 개시하는 것임이 또한 명시된다. 도면들 내에 도시된 구성들의 크기들 및 모양들은 본 교시 사항들이 어떻게 실시될 수 있을지 이해를 돕기 위해 설계된 것이며, 예시들 내에 나타난 크기들 및 모양들을 제한하도록 의도된 것이 아님이 또한 명시된다.
도 1은 일 실시예에 따른, 예시적인 데이터 저장 시스템의 블럭 다이어그램을 도시한다. 데이터 저장 시스템(100)은 하나 또는 그 이상의 NVMe-oF-호환 이더넷 SSD(eSSD)들을 포함하는 샤시(160)(본 명세서에서 eSSD 샤시로도 지칭될 수 있다) 및 호스트(110)를 포함한다. 예를 들어, 샤시(160)는 24 또는 48개의 eSSD들을 포함할 수 있다. 샤시(160) 내의 eSSD들은 eSSD (170a) 내지 eSSD (170n)으로 각각 표시된다(본 명세서에서 이들은 총괄하여 eSSD (170)으로 지칭된다). 호스트(110)는 어플리케이션(111), 운영 체제(OS) 및 파일 시스템(FS)(112), 및 NVMe-oF 드라이버(113)를 포함한다. 호스트(110)의 이니시에이터(예를 들어, 어플리케이션(111))는 NVMe-oF 드라이버(113)를 이용하여 이더넷(150)을 통해 eSSD들(170)과 NVMe-oF 연결을 설정할 수 있다. 샤시(160)는 이더넷 스위치(161), 베이스보드 매니지먼트 컨트롤러(baseboard management controller, BMC)(162), 및 퍼리퍼럴 콤퍼넌트 상호연결 익스프레스(peripheral component interconnect express, PCIe) 스위치(163)를 포함힐 수 있다. 이더넷 스위치(161)는 미드 플레인(165)을 통해 eSSD들(170)로의 이더넷 연결을 제공하고, PCIe 스위치(163)는 미드 플레인(165)을 통해 eSSD들(170)로의 매니지먼트 인터페이스(164)를 제공한다. BMC(162)는 시스템 관리자(system administrator)에 의해 제공되는 명령어에 따라 eSSD들(170)을 프로그램할 수 있다.
이더넷 스위치(161)는 eSSD들(170) 및 호스트(110) 간의 네트워크 연결성을 제공한다. 이더넷 스위치(161)는 하나 또는 그 이상의 호스트들에 연결하기 위한 대용량(large-capacity)(예를 들어, 100Gbps) 업링크(uplink)들을 가질 수 있다. 이더넷 스위치(161)는 또한 eSSD들(170)에 연결하기 위한 다중의 저용량(lower-capacity)(예를 들어, 25Gbps) 다운링크(downlink)들을 가질 수 있다. 예를 들어, 이더넷 스위치(161)는 12개의 100Gbps의 업링크들 및 24 개 또는 48개의 25Gbps의 다운링크들을 포함한다. 이더넷 스위치(161)는 BMC(162)로의 특수 설정/매니지먼트 포트를 가질 수 있다.
BMC(162)는 이더넷 스위치(161), PCIe스위치(163), 및 eSSD들(170)을 포함하는 샤시(160)의 내부 콤포넌트들을 관리한다. BMC(162)는 시스템 매니지먼트를 위한 시스템 매니지먼트 버스(system management bus, SMBus) 인터페이스들 및/또는 PCIe를 지원할 수 있다. BMC(162)는 eSSD들(170)을 설정하고 이더넷 스위치(161)를 프로그램할 수 있다.
서버 기반의 올-플래시 어레이들(all-flash arrays, AFAs)과 유사하게, eSSD들(170)은 eSSD들의 묶음, 이들을 외부의 호스트들과 연결시키는 네트워크 스위치(즉, 이더넷 스위치(161)) 및 이들을 관리하기 위한 BMC(162)를 포함하는 서버-리스 인클로저(server-less enclosure)(즉, 샤시(160))에 함께 수납된다. BMC(162)는 부트(boot)를 처리하고 eSSD 장치들로의 경로들을 제어한다. 완전한(full-fledged) x86 CPU와 달리 BMC(162)는 CPU가 처리할 수 있는 모든 태스크들을 할 수 없으며, 그러므로 최소한의 인클로저 매니지먼트 기능(enclosure management function)들을 수행한다. BMC(162)는 SMBus 또는 PCIe 버스를 통해 연결성, 상태, 온도, 로그들, 및 에러들에 대한 연결된 eSSD들(170) 및 관련된 하드웨어의 자체 검사(health check)를 유지할 수 있다.
eSSD들(170)은 고성능(high-performance) 및 대용량 데이터 저장 솔루션을 제공한다. NVMe-oF프로토콜은 원격 직접 연결(remote direct-attached storage, rDAS) 방식으로 호스트 컴퓨터(110)에서 구동되는 어플리케이션(111)에 수백 개 및 수천 개의 분할된 eSSD들(170)이 연결되도록 해준다. 본 발명의 시스템 및 방법은 분할된 eSSD들(170)에 수집되고 저장되는 많은 양의 데이터의 이동 및 프로세싱을 용이하게 한다. 기존의 호스트 컴퓨터들을 이용하는 이러한 데이터 프로세싱의 비용은 매우 높을 수 있다.
호스트 컴퓨터(110)에서 구동되는 어플리케이션(111)은 네트워크(예를 들어, 이더넷(150))에 걸쳐 있는 eSSD들(170)과 같은 분할된 데이터 저장 장치들 내에 저장된 데이터들을 페치(fetch)함으로써 머신 러닝과 같은 프로세스들을 수행하고, 데이터를 프로세싱하고, 데이터 저장 장치들에 데이터 프로세싱의 결과들을 다시 저장할 수 있다. 데이터 페칭, 프로세싱, 및 저장을 포함하는 이러한 프로세스는, 호스트 컴퓨터상의 과도한 에너지, 컴퓨팅, 네트워크 및 데이터 저장 리소스들을 소비하여 매우 비효율적일 수 있다. 추가적으로, 이러한 프로세스는 호스트 컴퓨터에 값비싼 컴퓨팅 및 메모리 리소스들 상의 요구사항들을 부과할 수 있다.
도 2는 일 실시예에 따른, 예시적인 NVMe-oF 브릿지 장치의 블록 다이어그램을 도시한다. 브릿지 장치는 데이터 저장 장치에 집적되거나, 브릿지 장치는 데이터 저장 장치에 연결된 분리된(그리고 별개의) 장치를 나타낼 수 있다. 이어지는 예시들에서, eSSD는 브릿지 장치 및 백엔드 SSD 모두를 포함하는 것으로 기술되어 있으나; 하지만, eSSD를 형성하기 위해 데이터 저장 장치(백엔드 SSD)는 별개의 브릿지 장치에 연결될 수 있거나, 다른 실시예에서 eSSD는 브릿지 장치 그 자체 또는 브릿지 장치의 인접-컴퓨팅(near-computing) 기능들을 수행할 수 있는 장치를 지칭할 수 있음을 이해할 수 있을 것이다.
[0013] NVMe-oF 브릿지 장치(200)는 인접-스토리지 컴퓨트(near-storage compute, NSC) 프로세서(211), 시스템 메모리(212), 커맨드 파서(command parser)(213), 커맨드 분류기(command classifier)(214), 커맨드 프로세서(215), PCIe-사이드 커맨드 서브미션 큐(PCIe-side command submission queue, PSQ) 모듈(216), PCIe 어플리케이션(PCIe application, PAPP)/루트(root) 컴플렉스(complex) 모듈(217), NVMe-oF 응답기(NVMe-oF responder)(218), PCIe CE 파서(PCIe CE parser)(219), PCIe-사이드 커맨드 컴플리션 큐(PCIe-side command completion queue, PCQ) 모듈(220)을 포함한다. NVMe-oF 브릿지 장치(200)는 PCIe 버스를 통해 백엔드 SSD(예를 들어, NVMe SSD)(250)에 결합된다. 호스트 컴퓨터상에서 구동되는 원격 이니시에이터(remote initiator)는 패브릭 네트워크(본 발명의 실시예에서는 이더넷)를 통해 백엔드 SSD(250)에 NVMe-oF 커맨드들을 전송한다.
NVMe-oF 브릿지 장치(200)의 커맨드 파서(213)는 백엔드 SSD(250)로 전송이 예정되었던 NVMe-oF 커맨드들을 인터셉트(intercept)하고, 이들을 분석(parse)하고, 커맨드 분류기(214)로 분석된 NVMe-oF 커맨드들을 전송한다. 예를 들어, 커맨드 파서(213)는 커맨드 옵코드(command opcode, OPC), 커맨드 식별자(command identifier, CID), 네임스페이스 식별자(namespace identifier, NSID), 여러 개의 로지컬 블록들(number of logical blocks, NLB), 및 스타트 로지컬 블록 주소(start logical block address, SLBA)를 포함하는, 그러나 이에 한정되지 않는, 다양한 커맨드들을 추출하고 분석한다. 커맨드 분류기(214)는 분석된 NVMe-oF 커맨드들을 상이한 그룹들로 분류하고 분류된 NVMe-oF 커맨드들을 커맨드 프로세서(215)로 전송한다. 예를 들어, 커맨드 분류기(214)는 애드민 커맨드들(admin commands), 패브릭 커맨드들(fabric commands), 리드 커맨드들(read commands), 라이트 커맨드들(write commands), 및 특수 커맨드들(special commands)을 분류한다. NVMe-oF 커맨드들의 상이한 커맨드들 또는 그룹들은 커맨드 프로세서(215)의 특수한 커맨드 프로세싱 유닛들을 이용하여 프로세싱될 수 있다. 예를 들어, 커맨드 프로세서(215)는 특수 커맨드 유닛(special command unit, SCU)(231), 패브릭스 커맨드 유닛(fabrics command unit, FCU)(232), 애드민 커맨드 유닛(admin command unit, ACU)(233), 리드 커맨드 유닛(read command unit, RCU)(234), 및 라이트 커맨드 유닛(write command unit, WCU)(235)을 포함한다.
이러한 커맨드 프로세싱 유닛들(231 내지 235)은 NVMe-oF커맨드들을 NVMe 커맨드들로 번역하고 이들을 PSQ 모듈(216)내에 배치시킨다. 일 실시예에 따르면, PSQ 모듈(216)은 커맨드 서브미션 큐들(command submission queues)을 구현하고 액티브 서브미션 큐들(active submission queues)을 위한 헤드(head) 및 테일(tail) 포인터들을 유지한다. PSQ 모듈(216)은 액티브 서브미션 큐들을 검출할 수 있고 서브미션 큐가 가득 차 있거나(full) 비어 있음(empty)을 나타내는 조건부 플래그들(conditional flags)을 생성할 수 있다. NVMe 커맨드들이 서브미션 큐들내에 배치되어 있을 때, PSQ 모듈(216)은 도어벨 이벤트들(doorbell events)(서브미션 큐-도어벨(submission queue-doorbell))을 생성하고 이를 PAPP 모듈(217)을 통해 백엔드 SSD(250)로 전송할 수 있다. PPAP 모듈(217)은 PCIe 버스를 통해 도어벨 이벤트들을 전송하기 위해 PCIe 전송(PCIe transport)을 백엔드 SSD(250)에 구현한다. PAPP 모듈(217)은 NVMe-oF 브릿지 장치(200)에 의해 생성된 컨피그 리드(config read), 컨피그 라이트(config write), 메모리 라이트, 및 메모리 리드를 포함하는 표준 PCIe 트랜잭션 커맨드들(standard PCIe transaction commands)을 지원한다. 추가적으로, PAPP 모듈(217)은 NVMe-oF 브릿지 장치(200)가 아닌 PCIe 엔드-포인트(PCIe end-point)에 의해 생성된 PCIe 메모리 리드 및 메모리 라이트 트랜잭션들을 지원한다. 다시 말해, PAPP 모듈(217)은 NVMe-oF 브릿지 장치(200)의 PCIe 루트 컴플렉스 기능을 구현 및 지원하여 NVMe-oF 브릿지 장치(200)를 PCIe 루트 컴플렉스 장치로 만든다.
PCQ 모듈(220)은 백엔드 SSD(250)를 위한 커맨드 컴플리션 큐들(command completion queues)을 구현한다. 백엔드 SSD(250)는 백엔드 SSD(250)가 프로세싱하는 각 NVMe 커맨드를 위한 커맨드 컴플리션 엔트리(command completion entry, CE)를 라이트할 수 있다. 보편적으로, 커맨드 서브미션 큐 및 커맨드 컴플리션 큐 사이에는 일대일 매핑(one-to-one mapping)이 있다. PCIe CE 파서(219)는 PCQ 모듈(220)로부터 수신한 컴플리션 엔트리들(CE)을 분석하고 이들을 해석한다. PCIe CE 파서(219)는 분석된 CE들을 대응되는 NVMe 커맨드들을 생성한 적절한 커맨드 프로세싱 유닛들(231 내지 235)로 전달한다. 적절한 커맨드 프로세싱 유닛들(231 내지 235)은 PCIe CE 파서(219)로부터 수신된 PCIe CE들(또는 NVMe CE들)에 대응되는 NVMe-oF CE들을 생성하고, NVMe-oF 인터페이스(예를 들어, 이더넷)를 통해 NVMe-oF CE들을 원격 이니시에이터로 되돌려 발행하기 위해 생성된NVMe-oF CE들을 NVMe-oF 응답기(218)로 전달한다. NVMe-oF CE들은 원격 이니시에이터로/로부터 전송되는 리드 데이터 또는 라이트 데이터 전송에 선행(precede)할 수 있다. NVMe-oF 커맨드 브릿징(bridging)의 일부로써, 커맨드 프로세싱 유닛들(231 내지 235)은 백엔드 SSD(250) 및 원격 이니시에이터 사이의 데이터 전송을 용이하게 한다.
도어벨 이벤트들에 응답하여, 백엔드 SSD(250)는 PSQ 모듈(216)로부터 수신된 NVMe 커맨드들을 페치하고 이들을 실행한다. 커맨드 실행의 일부로써, 백엔드 SSD(250)는 데이터 전송들을 수행할 수 있다. 이러한 데이터 전송들은 NVMe-oF 브릿지 장치(200)내에서 이용 가능한 온-칩(on-chip) 또는 오프-칩(off-chip) 메모리 또는 시스템 메모리(212)로/로부터 행해질 수 있다.
NVMe 및 NVMe-oF SSD들과 같은 데이터 저장 장치들은 많은 양의 데이터를 저장할 수 있다. 데이터 저장 장치에 인접한 또는 그 내부에서의 데이터 프로세싱은 데이터를 데이터 저장 장치로부터 원격 호스트 컴퓨터로 이동시키고 원격 호스트 컴퓨터내에서 프로세싱 하는 것보다 효율적이고 비용 측면에서 효과적일 것이다.
본 명세서는 프로세싱되어야 할 실제 타겟 데이터를 저장하는 NVMe 및NVMe-oF SSD들과 같은 데이터 저장 장치들 내의 원격 어플리케이션의 데이터 프로세싱을 가속하기 위한 인-스토리지 가속(in-storage acceleration, ISA) 플랫폼을 기술한다. 예를 들어, 본 발명에서의 ISA 플랫폼은 NVMe 및 NVMe-oF SSD들(예를 들어, 도 1의 eSSD(170))의 컨트롤러내에 구현될 수 있다. 다른 실시예에서, 본 발명의 ISA 플랫폼은 브릿지 장치(예를 들어, 도 2의 NVMe-oF 브릿지 장치(200))의 컨트롤러내에 구현될 수 있다. 이러한 점에서, 본 명세서에서 사용되는 용어 “인-스토리지 가속”은 타겟 데이터를 저장하는 실제 데이터 저장 장치뿐만 아니라 데이터 저장 장치에 인터페이스(또는 프로토콜 번역(protocol translation))를 제공하기 위해 데이터 저장 장치에 인접하여 배치된 브릿지 장치 내에서의 데이터 프로세싱을 지시하기 위해 사용된다.
많은 양의 데이터 프로세싱을 수반하는 데이터-중심(data-centric) 호스트 어플리케이션은 본 발명의 ISA 플랫폼을 이용함으로써 많은 이점을 얻을 수 있다. 헤비-듀티 데이터 프로세싱 및 조작을 수행하는 호스트 어플리케이션의 기능들은 인접 또는 인-스토리지 가속을 수행하기 위해 데이터 저장 장치 또는 브릿지 장치로 전가될 수 있다. 본 발명의 ISA 플랫폼은 에너지 및 대역폭 측면에서 효율적인 데이터 프로세싱 솔루션을 제공함과 동시에 전체적인 연산 및 저장 인프라스트럭처의 비용을 경감시킬 수 있다.
일 실시예에 따르면, 원격 호스트 컴퓨터상에서 구동되는 데이터-집중적(data-intensive) 어플리케이션(예를 들어, 머신 러닝(ML) 어플리케이션, 빅 데이터 어플리케이션)은 일부 데이터 프로세싱 기능들을 데이터 저장 장치 및/또는 브릿지 장치에 전가시킬 수 있다. 데이터 저장 장치 또는 브릿지 장치는 실제 타겟 데이터를 저장하는 데이터 저장 장치 및 데이터 저장 장치 내에 저장된 타겟 데이터에 대한 접근을 요구하는 데이터-집중적 어플리케이션을 구동하는 원격 호스트 컴퓨터 사이에서의 데이터 전송을 최소화 시킴으로써 데이터 프로세싱을 가속시킬 수 있다. 본 발명의 ISA 플랫폼은 데이터 저장 장치 및 데이터-집중적 어플리케이션을 구동하는 원격 호스트 컴퓨터 사이에서의 데이터 이동들을 최소화 시킴으로써 사용자 데이터가 데이터 저장 장치에 가깝게 또는 그 내부에서 더 효율적으로 프로세스될 수 있도록 한다. 그에 따라, 본 발명의 ISA 플랫폼은 보다 향상된 어플리케이션 성능을 달성함과 동시에 호스트 컴퓨터의 컴퓨팅, 네트워킹, 및 저장 인프라스트럭처와 연관된 비용을 감소시킬 수 있다.
본 발명의 ISA 플랫폼은 다양한 종류의 데이터 저장 장치들에 적용될 수 있다. 그러나, 이후부터는 설명의 편의를 위해 데이터 저장 장치들의 예들로써 NVMe SSD 들 또는 NVMe-oF SSD들이 보여진다.
일 실시예에 따르면, 데이터 프로세싱 가속을 수행하는 데이터 저장 장치 또는 브릿지 장치는 필드 프로그램어블 게이트 어레이(field programmable gate array, FPGA)-기반 재구성형 로직 블럭들(reconfigurable logic blocks)을 포함한다. FPGA-기반 재구성형 로직 블럭들은 어플리케이션의 전가 및 가속 부분들을 가능하게 하기 위해 NVMe/NVMe-oF SSD의 컨트롤러(본 명세서에서 NVMe/NVMe-oF SSD 컨트롤러라고도 지칭된다) 또는 브릿지 장치의 컨트롤러(본 명세서에서 브릿지 장치 컨트롤러라고도 지칭된다)와 함께 동시에 작동한다. 이러한 FPGA-기반 재구성형 로직 블럭들은 외부적으로 NVMe/NVMe-oF 컨트롤러에 연결되거나 NVMe/NVMe-oF에 내장될 수 있다. 어플리케이션 사용자는 가속을 위한 어플리케이션의 기능들이 구현되도록 NVMe/NVMe-oF SSD 내에 내장되거나 이에 결합된 이러한 재구성형 로직 블럭들을 이용할 수 있다.
본 발명의 ISA 플랫폼은 가속되는 원격 호스트 컴퓨터 상에서 구동되는 어플리케이션에 애그노스틱(agnostic)하다. 본 발명의 ISA 플랫폼이 다양한 종류의 어플리케이션들 및 데이터 저장 장치들에 적용될 수 있도록 본 발명의 ISA 플랫폼은 어플리케이션들을 일반적인(generic) 방식으로 가속할 수 있다. 추가적으로, 사용자는 본 발명의 ISA 플랫폼을 셀프-서비스(self-service) 방식으로 이용할 수 있다. 예를 들어, 사용자는 실행 시간(runtime) 동안 어플리케이션의 임의의 부분을 선택하고 다운로드할 수 있으며 어플리케이션을 실행 시간에 변경할 수 있다.
주어진 어플리케이션에 대해서, 사용자는 대량의 데이터를 프로세스 하거나 조작(manipulate)하는 어플리케이션의 기능들이나 컴포넌트들을 식별(identify) 할 수 있다. 식별된 기능들은 어플리케이션의 성능을 가속시키기 위해서 ISA 플랫폼에 전가될 수 있는 기능들이다. 일 실시예에 따르면, 사용자는 재구성형 로직 블록들(이하, 블랙-박스들(black-boxes)이라고도 지칭된다)을 포함하는 데이터 저장 장치(또는 브릿지 장치)의 기설정된 저장 영역(storage area)으로 어플리케이션의 기능들을 다운로드 할 수 있다. 본 명세서에서 사용되는 용어 “블랙 박스”는 특정한 데이터-접근 및 프로세싱 기능들을 가속하기 위해 어플리케이션 코드로부터의 기능을 데이터 저장 장치(또는 브릿지 장치) 근처의 장치의 데이터 저장 장치(또는 브릿지 장치)로 전가시킬 수 있는 재구성형 로직 블록들의 집단(collection)을 지칭한다는 것에 유의하여야 한다. 본 명세서에서 각 재구성형 로직 블록들의 집단은 어플리케이션 가속 블랙-박스(AABB)로 편리하게 지칭된다. AABB들의 각각은 재구성형 로직 블록들이 어떻게 구성되는지에 따라 상이한 크기 및 성능을 가질 수 있다.
AABB는 다음과 같은 두개의 주요한 컴포넌트들을 갖는다: 레지스터-전송 레벨(register-transfer level, RTL) 블랙-박스라고 지칭되는 하드웨어 부분 및 RTL 블랙-박스 드라이버라고 지칭되는 펌웨어 부분. RTL 블랙-박스는 하드웨어 프로세싱 엔진을 포함하고, RTL 블랙-박스 드라이버는 RTL 엔진을 위한 펌웨어 드라이버이거나 가속하기 위한 기능에 대응되는 일반적인 펌웨어 드라이버이다. 일 실시예에서, AABB는 하드웨어 부분 없이 펌웨어 부분만을 가질 수 있다.
본 발명의 ISA 플랫폼은 기설정(pre-defined)되고 기공급 (pre-provisioned) 된 FPGA 로직 영역(즉, ISA 플랫폼의 재구성형 로직 블럭들)을 재구성(reconfigure) 하기 위해 RTL 블랙-박스 컴포넌트를 이용한다. RTL 블랙-박스 드라이버는 내장된 컨트롤러(예를 들어, NVMe/NVMe-oF 컨트롤러 또는 브릿지 컨트롤러)의 프로세서 코어 상에서 구동되도록 의도된 재구성된 RTL 블랙-박스와 연계되는 펌웨어 드라이버이다. 사용자의 필요 및 현재의 가속된 기능을 위한 요구가 충족된 경우, 사용자는 AABB를 비활성화 시키거나 폐기하고 새로운 AABB를 폐기한 AABB 슬롯에 다운로드 할 수 있다. 다운로드 되고 대응되는 AABB 슬롯에 할당된 AABB는 활성화된 AABB 슬롯(active AABB slot)이라 지칭된다. 활성화된 AABB 슬롯은 가속 기능을 수행할 준비가 되어 있다. 호스트 커맨드는 활성화된 AABB 슬롯과 통신하기 위한 AABB 슬롯 통신 커맨드를 포함할 수 있다. AABB 슬롯 통신 커맨드는 활성화된 AABB 슬롯의 식별자를 포함할 수 있다. 복수의 AABB들은 ISA 플랫폼내에서 정해진 시간에 활성화될 수 있다.
본 발명의 ISA 플랫폼은 기공급되고 기설정된 AABB 슬롯들의 세트를 제공한다. 각 AABB 슬롯은 확보되고(reserved) 따로 분리된(set aside) 몇 개의 로직 리소스들을 가질 수 있다. 상이한 AABB 슬롯들은 동일한 또는 상이한 정의된 리소스들 또는 인터페이스들을 가질 수 있다. 사용자는 지원되는 AABB 슬롯들의 피처들, 특징들, 및 속성들을 알아낼 수 있고, 사용할 특정한 AABB를 선택하고, 선택한 AABB 슬롯에 회로 컴퍼넌트 및 펌웨어 컴퍼넌트를 다운로드할 수 있다. 어플리케이션이 펌웨어 컴퍼넌트만을 가지는 것도 가능하다. 예를 들어, 회로 컴퍼넌트 및 펌웨어 컴퍼넌트를 다운로드 하는 것은 “AABB 다운로드” 커맨드를 이용하여 수행될 수 있다.
“AABB 다운로드” 커맨드에 추가적으로, “AABB 매니지먼트” 커맨드는 다운로드된 AABB 이미지들의 활성화, 비활성화, 및 폐기와 같은 AABB 슬롯들의 매니지먼트를 위해 이용될 수 있다. “Comm”커맨드는 활성화된 AABB 슬롯과 호스트 어플리케이션이 통신하기 위해 사용된다. 본 발명의 ISA 플랫폼은 다운로드된 AABB 이미지가 AABB Comm 커맨드들을 수신하도록 하고, CE들을 원격 호스트 컴퓨터에 되돌려 전송하기 위한 어플리케이션 프로그램 인터페이스(application program interface, API)들의 세트를 제공한다. 추가적으로, 본 발명의 ISA 플랫폼은 AABB 펌웨어가 호스트 메모리로/로부터 뿐만 아니라 SSD의 NAND 플래시 매체로/로부터의 사용자 데이터 전송들을 수행할 수 있도록 빌트-인(built-in) API들을 제공한다. 이러한 커맨드 및 데이터 이동 API들을 이용함으로써, AABB 이미지는 사용자 저장 데이터(user data at rest) 뿐만 아니라 사용자 이동 데이터(user data in flight)를 위한 사용자 데이터 프로세싱, 조작(manipulation), 및 다른 변환들을 지휘할 수 있다.
본 발명의 ISA 플랫폼은 NVMe/NVMe-oF SSD들 및/또는 브릿지 장치를 이용하여 제3자 어플리케이션을 가속할 수 있다. 사용자는 사용자 어플리케이션의 목적하는 기능들(또는 목적하는 기능의 부분들)을 가속하기 위해 NVMe/NVMe-oF SSD들에 어플리케이션 AABB들을 다운로드 할 수 있다. 본 발명의 ISA 플랫폼은 주어진 AABB를 위한 하드웨어 컴포넌트 및 연관된 펌웨어 컴포넌트를 활성화 시킨다. 하드웨어 컴포넌트는 NVMe/NVMe-oF SSD내의 하나 또는 그 이상의 재구성형 로직 블록들로 로드(load)될 수 있는 RTL 비트스트림(bitstream) 형태로 되어 있다. 펌웨어 컴포넌트는 NVMe/NVMe-oF SSD의 내장된 프로세서(또는 프로세서 코어) 상에서 로드되고 실행된다.
비록 사용자가 AABB 슬롯에 구현할 기능들을 식별할 수 있을지라도, 본 발명의 ISA 플랫폼에 관한한 AABB슬롯은 여전히 블랙-박스이다. 즉, 본 발명의ISA 플랫폼 및 플랫폼 제공자들은 어떻게 또는 어떤 목적을 위해 AABB들이 이용되는지 알 수 없거나 신경 쓰지 않는다. 사용자는 셀프-서비스 방식으로 본 발명의 ISA 플랫폼에 의해 제공되는 AABB 슬롯들을 정의하고, 생성하고, 다운로드 하고 이용할 수 있다. 비록 후술하는 예시들이 사용자가 셀프-서비스 방식으로 제3자 가속 기능들을 구동할 수 있도록 하는 본 발명의 ISA 플랫폼의 실시예들에 중점을 둘지라도, 특정한 표준 빌트-인 블랙-박스 기능들이 NVMe/NVMe-oF SSD 또는 브릿지 장치 내에 내재적(natively)으로 구현될 수 있도록 본 발명의 ISA 플랫폼은 일반적인 방식으로 이용될 수 있다는 것이 이해될 수 있다.
사용자가 AABB 슬롯에 AABB 이미지를 다운로드 할 때에, AABB 이미지를 수신한 장치(예를 들어, NVMe/NVMe-oF SSD 또는 브릿지 장치)는 RTL 및 펌웨어 컴포넌트들을 추출한다. RTL 컴포넌트는 비트스트림(bitstream) 형태로 전달될 수 있다. 펌웨어 컴포넌트는 실행가능한 바이너리 이미지(executable binary image)로 전달 될 수 있다. RTL 비트스트림은 대응되는 블랙-박스(들)을 위해 미리 확보된 FPGA 영역(즉, AABB 슬롯(들))을 재구성하기 위해 이용되고, 드라이버 바이너리(driver binary)는 내장된 프로세서(또는 내장된 프로세서의 프로세서 코어) 상에서 실행된다. 원격 호스트 컴퓨터 상에서 구동되는 어플리케이션은 ISA 플랫폼 상에서의 AABB 이미지와 통신하기 위해 NVMe 커맨드 “AABB Comm”을 이용할 수 있다. 장치는 목적지 AABB 슬롯 식별자 (destination AABB slot identifier)를 이용하여 “AABB Comm”커맨드를 인터셉트하고 이들을 적절한 AABB 슬롯에 전달한다.
도 3은 일 실시예에 따른, 예시적인 어플리케이션 가속 블랙-박스(AABB) 이미지의 데이터 구조를 도시한다. AABB 이미지(301)는 헤더(310), RTL 비트스트림(320), 및 드라이버 바이너리 이미지 파일(321)을 포함한다. 헤더(310)는 기타 정보(311), 파라미터들(312), RTL 비트스트림 길이(313), RTL 비트스트림 오프셋(314), 드라이버 바이너리 파일 길이(315), 및 드라이버 바이너리 파일 오프셋(316)을 포함한다. RTL 비트스트림 오프셋(314)은 RTL 비트스트림 길이(313)의 크기를 갖는 RTL 비트스트림(320)으로의 포인터를 포함하고, 드라이버 바이너리 파일 오프셋(316)은 드라이버 바이너리 파일 길이(315)를 갖는 드라이버 바이너리 이미지 파일(321)로의 포인터를 포함한다. 비록 일 실시예가 하나의 헤더, 및 대응되는 RTL 비트스트림 및 드라이버 바이너리 이미지 파일만을 개시하고 있을지라도, 본 발명의 개시 내용으로부터 벗어나지 않는 범위내에서 단일 AABB 이미지는 복수의 헤더들, RTL 비트스트림들 및 드라이버 바이너리 이미지 파일들을 가질 수 있다는 것이 이해될 수 있다.
본 발명의 ISA 플랫폼은 NVMe/NVMe-oF SSD(예를 들어, 도 1의 eSSD(170))의 컨트롤러 또는 브릿지 장치(예를 들어, 도 2의 NVMe-oF 브릿지 장치(200))의 컨트롤러에 구현될 수 있다. 일 실시예에서, 컨트롤러는 NVMe/NVMe-oF SSD 또는 브릿지 장치에 포함된 FPGA-기반 재구성형 로직 블록들과 상호작용할 수 있다. 데이터 저장 성능에 더하여, 본 발명의 ISA 플랫폼은 제3자 기능 블록들(third-party functional blocks)(즉, AABB 슬롯들)을 구현하고 실행하는 메커니즘을 제공한다. AABB 슬롯들은 미리 정의된 인터페이스들의 세트를 통해 접근될 수 있는 기설정된 양의 로직, 연산, 및 메모리 리소스들로 공급된다. NVMe/NVMe-oF SSD 또는 브릿지 장치 내에 구현된 FPGA-기반 재구성형 로직 블럭들은 NVMe/NVMe-oF SSD 또는 브릿지 장치의 컨트롤러내의 제3자 기능 블록들의 헤비 듀티 데이터 프로세싱 기능들을 구현하기 위해 이용될 수 있다. 컨트롤러 프로세서의 연산 리소스(compute resource)들은 제어 알고리즘뿐만 아니라 하드웨어 가속 엔진을 위한 드라이버 펌웨어를 구현하기 위해 사용자에 의해 이용될 수 있다. 일 실시예에서, 사용자는 몇몇의 유스 케이스(use case)들을 위해 펌웨어 리소스들만을 이용할 수 있다.
도 4는 일 실시예에 따른, 백엔드 SSD와 함께 브릿지 장치 내에 구현된 예시적인 ISA 플랫폼의 다이어그램을 도시한다. 예를 들어, 백엔드 SSD(450)는 브릿지 장치에 PCIe 링크를 통해 접근 가능한 표준 NVMe SSD이다. 브릿지 장치 및 백엔드 SSD는 호스트에게 “eSSD”로 보여질 수 있는 단일 저장 장치로써 패키지 될 수 있다. 브릿지 장치(400)는 프로세서(411), PCIe 엔드 포인트(EP)(421), 백엔드 SSD(450)와 접속하기 위한 PCIe 인터페이스(417), NVMe-oF 브릿지 장치일 경우의 선택적 이더넷 인터페이스(418), 블랙-박스 재구성 컨트롤러(422), 데이터 버퍼(423), NVMe/NVMe-oF 호스트 인터페이스(424), 및 재구성형 로직 블록들(425)을 포함한다. 재구성형 로직 블록들(425)은 로직 블록들을 프로그래밍 가능하게 연결할 수 있는 재구성가능한 상호연결들(reconfigurable interconnects) 및 프로그래밍 가능한(programmable) 로직 블록들의 어레이를 포함하는 필드-프로그램어블 게이트 어레이(field-programmable gate array, FPGA)일 수 있다. 로직 블록들은 복잡한 조합 기능들(combinational functions), 또는 AND XOR 같은 단지 간단한 로직 게이트들을 수행하도록 구성될 수 있다. 추가적으로, 로직 블록들은 또한 플립-플랍들(flip-flops) 또는 더 완전한 메모리의 블록들과 같은 메모리 구성요소들을 포함할 수 있다. 그러나, 재구성형 로직 블럭들(425)은 FPGA 블록들에 한정되지 않으며, 상이한 형태들이나 종류들의 프로그래밍 가능한/재구성형 로직 블록들이 본 개시내용의 범위를 벗어나지 않는 범위내에서 이용될 수 있다.
재구성형 로직 블록들(425)은 RTL 블랙-박스들의 파티션들(partitions)(432a-432n)을 포함한다. RTL 블랙-박스들(432)의 각 파티션은 특정한 양의 하드웨어 리소스들 및 시스템 버스(430)를 통한NVMe/NVMe-oF 호스트 인터페이스(424), 데이터 버퍼(423), 블랙-박스 구성 컨트롤러(422)와 같은 다른 기능성 모듈들에 대한 특정한 개수 및 타입의 인터페이스들을 포함한다. 사용자는 RTL 블랙-박스(432)를 선택하고, 선택된 RTL 블랙-박스(432)의 리소스 및 인터페이스 제약들(constraints) 내에 제3 자 RTL 기능성(functionality)을 구현시킬 수 있다. 경우에 따라, 사용자는 펌웨어 블랙-박스만을 이용하여 RTL 기능성을 구현시킬 수 있다. 이 경우, 펌웨어 블랙-박스는 RTL 블랙-박스(432)의 미리 구비된(prepopulated) RTL 컴포넌트들을 이용할 수 있다.
브릿지 장치(400)는 백엔드 SSD(450)로 전송이 예정되었던 이더넷 또는 PCIe 버스로부터 수신한 호스트 커맨드들을 인터셉트하고 백엔드 SSD(450)에 저장된 데이터로의 접근뿐만 아니라 집적 프로세서(411)를 이용하여 인접(near) 저장 데이터 프로세싱을 제공할 수 있다. BB 구성 컨트롤러(422)는 RTL 비트스트림들을 하나 또는 그 이상의 RTL 블랙-박스들(432)에 다운로드 할 수 있으며, 프로세서(411)의 프로세서 코어를 이용하여 대응되는 블랙-박스 드라이버(431)를 구동하기 위해 대응되는 드라이버 바이너리 이미지 파일을 프로세서(411)에 로드할 수 있다.
도 5는 일 실시예에 따른, 데이터 저장 장치내에 구현된 예시적인 ISA 플랫폼의 다이어그램을 도시한다. 데이터 저장 장치(500)는 NVMe SSD 또는NVMe-oF SSD일 수 있다. 일부 실시예에서, 데이터 저장 장치(500)는 NVMe SSD 또는 NVMe-oF SSD의 저장 컨트롤러를 지칭할 수 있다. 데이터 저장 장치(500)는 컨트롤러(501) 및 플래시 매체(560)를 포함한다. 컨트롤러(501)는 프로세서(511), PCIe EP(521), NVMe-oF SSD인 경우 선택적 이더넷 인터페이스(518), 블랙-박스 재구성 컨트롤러(522), 데이터 버퍼(523), NVMe/NVMe-oF 호스트 인터페이스(524), 및 재구성형 로직 블럭들(525)을 포함한다. 재구성형 로직 블록들(525)은 RTL 블랙-박스들(532a-532n)의 파티션들(partitions)을 포함한다. RTL 블랙-박스들(532)의 각 파티션은 특정한 양의 하드웨어 리소스들 및 시스템 버스(530)를 통한NVMe/NVMe-oF 호스트 인터페이스(524), 데이터 버퍼(523), 블랙-박스 구성 컨트롤러(522)와 같은 다른 기능성 모듈들에 대한 특정한 수 및 타입의 인터페이스들을 포함한다. 데이터 저장 장치(500)를 구성하는 많은 구성요소들은 도 4에 도시된 브릿지 장치의 예에서 기술된 것들과 유사하거나 동일하다. 백엔드 SSD(450)에 대한 PCIe 인터페이스(417) 대신, 컨트롤러(501)는 플래시 매체(560)로부터 사용자 데이터를 리드하거나 플래시 매체(560)에 라이트 하기 위해 플래시 매체(560)와 인터페이스 하기 위한 플래시 변환 레이어(flash translation layer, FTL) 모듈(526)을 갖는다. 이러한 내재적 구현(native implementation)에서는, 이와 다른 경우에 브릿지 장치에서 수행되는 기능들을 SSD 컨트롤러 자체가 수행할 수 있으므로, 브릿지 장치는 백엔드 SSD에 연결될 필요가 없다.
FPGA-기반 재구성형 로직 블럭들(예를 들어, 도 4의 재구성형 로직 블럭들(425) 및 도 5의 재구성형 로직 블럭들(525))은 다양한 사용자-프로그래밍 가능한(user-programmable) 로직 기능들을 수행하기 위해서 재프로그래밍(reprogramming)될 수 있다. 각 재구성형 로직 블럭은 a) 룩-업 테이블들(LUT), b) 임의-접근 메모리(RAM), 및 c) 재구성형 상호연결들을 포함할 수 있다. 이러한 세개의 컴포넌트들을 사용함으로써, 다양한 데이터 프로세싱 회로들이 하드웨어에 구현될 수 있다. 재구성형 로직 블록들은 통상적인 어플리케이션-특정 집적 회로(application-specific integrated circuit, ASIC)의 고성능 및 소프트웨어 구현들의 유연성을 동시에 제공 할 수 있다.
어플리케이션의 데이터 프로세싱 기능성은 베릴로그(Verilog) 및 VHDL과 같은 프로그래밍 가능한 언어들을 이용하여 RTL 모델의 형태로 구현될 수 있다. RTL 모델들은 이후 게이트 레벨 회로들로 합성(synthesize)될 수 있다. 합성된 회로들은 이후 게이트 레벨 네트리스트들(netlists)의 물리적 구현을 실현하기 위해 LUT들, RAM, 및 상호연결들과 같은 FPGA 리소스들로 맵핑 된다. 최종적인 구현은 비트스트림 또는 비트 파일의 형태로 나타내어진다. 비트스림은 본질적으로 FPGA내의 상호연결 스위치들을 위한 비트맵이다. 적절한 상호 연결 스위치들을 온(on) 및 오프(off) 시킴으로써, 목적하는 회로가 FPGA내에 실현된다. 비트 파일의 비트스트림은 전원이 켜진 이후나 목적하는 시점에 설정(configured) 되거나 FPGA에 다운로드 된다. 일단 비트스트림이 설정되면, 리셋 또는 파워 사이클때까지 상호연결 스위치들은 그러한 프로그램된 상태로 유지된다. 일단 비트스트림 설정 또는 프로그래밍이 완료되면, 데이터 프로세싱 기능은 데이터 프로세싱 기능의 동작을 시작할 수 있다. 새로운 데이터 프로세싱 기능을 시작하기 위해 현재 데이터 프로세싱 회로를 중지 시키고 상이한 비트스트림을 이용하여 FPGA를 재구성하는 것이 가능하다.
일 실시예에 따르면, 본 발명의 ISA 플랫폼은 다수의 FPGA 코어들을 가질 수 있으며, 각 RTL 블랙-박스 당 하나의 코어를 자유로이 이용한다. 각 RTL 블랙-박스는 로직 영역, 상호연결들, LUT들, RAM 블럭들, 특수 하드 매크로들(specialized hard macros)(예를 들어, PCIe 컨트롤러, 디지털 신호 프로세서(DSP) 연산 로직 유닛들(arithmetic logic units, ALUs)), 및 클럭 및 리셋 신호들을 포함하는, 그러나 이에 한정되지 않는, 리소스들로 기공급되고 미리 정의될 수 있다.
RTL 블랙-박스들은 다양한 미리 정의되고 기공급된 인터페이스들을 가질 수 있다. 인터페이스들의 예시들은 프로그램 가능한 클럭/리셋, 내장된 프로세서에 대한 어드밴스드 익스탠시블 인터페이스(advanced extensible interface, AXI), 더블 데이터 레이트(double data rate, DDR) 메모리 인터페이스, PCIe(EP/RP) 인터페이스들, 이더넷 인터페이스, 특수한 ISA 서비스들 또는 기능들을 위한 커스텀 인터페이스들, 및 그 밖의 다른 인터페이스들을 포함하나, 이에 한정되지 않는다.
추가적으로, RTL 블랙-박스들(532)의 각각은 대응되는 구성 컨트롤러(522)에 대한 설정 인터페이스(configuration interface)를 가질 수 있다. 이 인터페이스는 사용자에게 보여지지 않으며 RTL 블랙-박스들(532)에 사용자 회로들을 다운로드하는데 사용된다.
일 실시예에 따르면, SSD 컨트롤러 또는 브릿지 컨트롤러는 FPGA에 구현될 수 있다. 이러한 경우, FPGA의 일 영역은 따로 분리(set aside)되고, RTL 블랙-박스들로 미리 확보(reserved)될 수 있다. 따로 분리되고 미리 확보된 그러한 FPGA 파티션들은 실행시간 동안 사용자 비트스트림들을 다운로드하는데 사용될 수 있다.
본 발명의 ISA 플랫폼은 사용자 어플리케이션을 가속하기 위한 다수의 AABB 슬롯들을 제공한다. 사용자는 셀프-서비스 모델로써 데이터 저장 장치의 브릿지 장치의 컨트롤러 자체에 의해 구동될 수 있는 기능들을 구현하기 위해 AABB 슬롯들(또는 블랙-박스들)을 이용할 수 있다. 그러므로, 본 발명의 ISA 플랫폼은 AABB 슬롯내에 구동되고 있는 실제 기능들을 알지 못한다. 이와 같은 고객 셀프-서비스 아키텍처를 용이하기 위해, 본 발명의 ISA 플랫폼은 어플리케이션 가속을 지원하는 데이터 저장 장치 또는 브릿지 장치를 발견 하기 위해 최종 사용자를 위한 발견 메커니즘(discovery mechanism)을 채용한다. 일 실시예에 따르면, 본 발명의 ISA 플랫폼은 집적된 프로그램 가능한/재구성 가능한(programmable/reconfigurable) AABB 슬롯들을 이용하여 장치가 어플리케이션 가속을 지원할 수 있다는 것을 나타내기 위한 광고/공개 매커니즘(advertise/publish mechanism)을 장치가 제공하는 것을 가능하게 한다. 예를 들어, 장치는 AABB 지원을 광고/공개 하기 위한 NVMe 식별 커맨드(NVMe Identify command)를 발행할 수 있다.
인접 또는 인-스토리지 어플리케이션 가속을 지원하는 장치는 지원되는 AABB 피처들의 다양한 속성들 및 특징들을 제공하기 위해 식별 데이터 구조(identify data structure)를 이용할 수 있다. AABB 지원 장치(AABB supporting device)의 속성들, 파라미터들, 및 특징들 의 일부 예시들이 식별 데이터 구조를 통해 이용 가능해진다. 예를 들어, 식별 데이터 구조는 RTL 블랙-박스 및 펌웨어 블랙-박스를 갖는 AABB 슬롯들의 개수, 펌웨어만을 갖는(firmware-only) AABB 슬롯들의 개수, RTL 블랙-박스 및 펌웨어 블랙-박스 파라미터들을 갖는 각 AABB 슬롯에 대한 데이터 구조에 관한 정보를 포함할 수 있다. RTL 블랙-박스 컴퍼넌트를 위한 파라미터들의 예시들은 영역, 상호연결 리소스들, 로직 리소스들의 개수, LUT들의 속성들, RAM 블록들의 개수, 사이즈 등, 최대 클럭 주파수(maximum clock frequency), 및 인터페이스들의 개수 및 타입을 포함하며, 이에 한정되지 않는다. 펌웨어 블랙-박스 컴퍼넌트를 위한 파라미터들의 예시들은 연관된 펌웨어 블랙-박스를 위한 펌웨어 코드 사이즈(firmware code size) 및 프로세서 정보를 포함하나, 이에 한정되지 않는다.
일 실시예에 따르면, AABB 지원 장치는 RTL 블랙-박스들에 이미지를 다운로드 하기 위해 NVMe 커맨드(본 명세서에서 “AABB 다운로드” 커맨드로써 지칭된다)를 발행할 수 있다. 도 6은 일 실시예에 따른, “AABB 다운로드” 커맨드 포맷을 도시한다. OPC는 애드민 커맨드 세트 또는 판매자-정의(vendor-defined) 커맨드 세트를 위해 미리 확보된 8-비트 특수 옵코드(special opcode)이다. CID는 16-비트 커맨드 식별자 이다. DPTR은 SGL(scatter gather list) 또는 PRP(physical region page) 방법을 이용하는 데이터 포인터이다. DPTR은 호스트 메모리 내의 AABB 이미지를 지시한다. NUMD는 이미지의 전송을 위한 Dwords(32-비트 무부호 정수(unsigned integer))의 개수 이다. OFST는 현재 전송(current transfer)을 위한 오프셋이다. AABB 슬롯 ID는 AABB 이미지를 위해 이용될 AABB 슬롯 식별자를 구비한다.
본 발명의 ISA 플랫폼은 AABB 메커니즘의 원할한 동작을 위한 다수의 AABB 슬롯 매니지먼트 기능들을 제공한다. 일단 AABB 슬롯에 AABB 이미지가 다운로드 되면, ISA 플랫폼에 AABB 이미지를 론치(launch)하기 위해 명시적인 활성화 트리거 커맨드(explicit activate trigger command)를 어플리케이션이 발행할 때까지 다운로드된 AABB 이미지는 기본값으로써 리셋 상태로 고정된다. 어플리케이션은 또한 현재 구동되고 있는 특정한 AABB 이미지를 중지하거나 리셋할 수 있다. 어플리케이션은 ISA 플랫폼으로부터의 하나 또는 그 이상의 AABB 이미지들을 폐기할 수 있다. 이와 같은 AABB 매니지먼트 기능들을 용이하기 위해, 본 발명의 ISA 플랫폼은 새로운 세트의 NVMe AABB 슬롯 매니지먼트 커맨드들을 채용한다.
도 7은 일 실시예에 따른, AABB 슬롯 매니지먼트 커맨드들의 예를 도시한다. OPC는 애드민 커맨드 세트 또는 판매자-정의(vendor-defined) 커맨드 세트를 위해 미리 확보되는 특수 옵코드이며, CID는 커맨드 식별자이다. AABB 슬롯 ID는 AABB 슬롯 매니지먼트 커맨드를 위해 이용될 AABB 슬롯 식별자이다. AABB 액션 ID는 수행될 매니지먼트 액션을 나타낸다. 예를 들어, 0x1은 특정된 AABB 이미지를 활성화 시킨다; 0x2는 특정된 AABB 이미지를 비활성화 시킨다; 0x3은 특정된 AABB 이미지를 리셋 시킨다; 0x4는 특정된 AABB 이미지를 폐기한다. 다른 AABB 액션 ID들은 이러한 액션 ID들이 사용되는 곳에서 사용되거나 이들과 연관되어 사용될 수 있다.
일단 AABB 이미지가 ISA 플랫폼에 다운로드되고 론치(launch)되면, 어플리케이션은 NVMe 커맨드들(본 명세서에서 “AABB Comm”커맨드라 지칭될 수 있다)의 새로운 세트를 이용하여AABB 이미지와 통신할 수 있다. 어플리케이션은 AABB에 “AABB Comm”커맨드를 보낼 수 있고, AABB는 다시 어플리케이션에 응답할 수 있다. 예를 들어, 어플리케이션은 AABB에 특정한 쿼리(query)들을 보낼 수 있고, AABB는 결과들을 어플리케이션에 다시 보낼 수 있다. 이러한 호스트 및 AABB 통신은 NVMe 또는 NVMe-oF 프로토콜의 일부로써 구현될 수 있다. 이러한 경우, AABB Comm 커맨드들은 본 발명의 ISA 플랫폼이 인터셉트하고 ISA 플랫폼 상에서 구동되는 적절한 AABB 이미지에 전달할 수 있도록 특수한 NVMe 커맨드의 표준 포맷을 가질 수 있다. 도 8은 일 실시예에 따른, AABB Comm 커맨드의 예시적인 포맷을 도시한다. OPC는 애드민 커맨드 세트 또는 판매자-정의 커맨드 세트를 위해 미리 확보된 특수 옵코드이며, CID는 커맨드 식별자 이다. AABB 슬롯 ID는 AABB 슬롯 매니지먼트 커맨드를 위해 이용될 AABB 슬롯 식별자 이다.
일 실시예에 따르면, 복수의 AABB 이미지들은 어떠한 주어진 시간에서도 활성화 될 수 있다. 따라서 도 8에 도시된 바와 같이, AABB Comm 커맨드는 16-비트 AABB 슬롯 ID를 또한 운반한다. 이러한 AABB 슬롯 ID는 올바른(correct) AABB 슬롯으로 인터셉트한 AABB Comm 커맨드를 전달하기 위해 ISA 플랫폼에 의해 이용된다.
AABB Comm 커맨드를 인터셉트하는 것에 추가하여, 본 발명의 ISA 플랫폼은 원격 호스트 컴퓨터 상에서 구동되는 어플리케이션과 통신하고 데이터 저장 장치로 및 이로부터 사용자 데이터를 전송하기 위해 AABB 드라이버가 사용할 수 있는 표준 API들의 세트를 제공한다. 본 발명의 ISA 플랫폼이 제공하는 API들은, 예를 들어, 1) AABB Comm 커맨드를 인터셉트하고 적절한 AABB 슬롯에 전달하는 커맨드, 2) 다시 어플리케이션에 AABB Comm 커맨드 컴플리션 엔트리를 보내는 커맨드, 3) 데이터 저장 장치로부터 사용자 데이터를 리드(read)하는 커맨드, 4) 데이터 저장 장치로 AABB 데이터를 라이트(write) 하는 커맨드, 5) 호스트 메모리로부터 사용자 데이터를 리드하는 커맨드, 및 6) 호스트 메모리에 AABB 데이터를 라이트하는 커맨드와 같은 다양한 커맨드들을 포함한다.
AABB Comm 커맨드들을 인터셉트하고 적절한 AABB 슬롯에 전달하기 위한 첫번째 커맨드는 커맨드가 수신되는 서브미션 큐 식별자(submission queue identifier, SQID)를 포함하는 64B 커맨드일 수 있다. AABB Comm 커맨드 컴플리션 엔트리를 호스트 컴퓨터 상에서 구동하는 어플리케이션에 보내기 위한 두번째 커맨드는 16B 컴플리션 엔트리(CE) 및 SQID를 포함할 수 있다. 데이터 저장 장치로부터 사용자 데이터를 리드하기 위한 세번째 커맨드는, 네임스페이스 ID(namespace ID, NSID), 스타트 논리 블록 주소(start logical block address, SLBA), 다수의 블록들(a number of blocks, NLB), ISA 플랫폼 내의 목적지 주소(destination address), 및 그 외에 다른 필요한 관련된 정보만을 포함할 수 이다. 데이터 저장 장치로 AABB 데이터를 라이트하기 위한 네번째 커맨드는 NSID, SLBA, NLB, ISA 플랫폼 내의 소스 주소(source address), 및 그 외에 다른 필요한 관련된 정보를 포함할 수 있다. 호스트 메모리로부터 사용자 데이터를 리드하기 위한 다섯번째 커맨드는 호스트 메모리 내의 소스 주소(SGL 또는 PRP), ISA 플랫폼 내의 목적지 주소, 전송의 길이(length of transfer), 그 외에 다른 필요한 관련된 정보를 포함할 수 있다. AABB 데이터를 호스트 메모리에 라이트 하기 위한 여섯번째 커맨드는 ISA 플랫폼 내의 소스 주소, 호스트 메모리 내의 목적지 주소(SGL 또는 PRP), 전송의 길이, 그 외에 다른 필요한 관련된 정보를 포함할 수 있다.
이러한 API들을 이용하여, AABB 펌웨어는 호스트 어플리케이션 커맨드를 수신하고 수신된 AABB Comm 커맨드를 위한 적절한 컴플리션 엔트리를 호스트 어플리케이션에 되돌려 전송할 수 있다. 데이터 저장 장치로부터 사용자 데이터를 리드하고 데이터 저장 장치로 사용자 데이터를 라이트 하기 위한 API 커맨드들은 데이터 저장 장치에 저장된 사용자 데이터를 AABB가 프로세스 또는 조작 하도록 허용 하는데 이용될 수 있다. AABB는 로컬 버퍼에 데이터를 페치하고, 데이터를 프로세스하거나, 데이터를 변환시키고, 변경된 데이터 또는 프로세싱 결과들을 다시 데이터 저장 장치에 라이트할 수 있다. 호스트 메모리로부터 사용자 데이터를 리드하고 호스트 메모리로 사용자 데이터를 라이트하기 위한 API 커맨드들은 AABB 펌웨어가 원격 호스트뿐만 아니라 백엔드 데이터 저장 장치와 함께 또는 데이터 저장 장치의 NAND 플래시 매체와 직접적으로 함께 데이터 전송들을 지휘(orchestrate)하는 것을 허용하는데 이용될 수 있다. 이와 같은 어플리케이션 커맨드 수신(reception), 커맨드 컴플리션들, 및 호스트 및 데이터 저장 장치 양쪽으로부터의 데이터 전송들을 이용함으로써, ISA 플랫폼은 데이터 저장 장치내 또는 데이터 저장 장치 근처에서 사용자 데이터 프로세싱 및 조작들의 목적하는 기능들을 수행할 수 있다.
일 실시예에 따르면, AABB 펌웨어는 AABB 커맨드들을 이용하여 호스트 메모리로/로부터 데이터 전송들을 개시할 수 있다. 호스트 및 AABB는 일 실시예에서 데이터 저장 장치를 통해 데이터를 교환할 수 있다. 호스트 컴퓨터는 데이터 저장 장치에 사용자 데이터를 직접 리드하거나 라이트 할 수 있고, AABB는 데이터 저장 장치 내의 사용자 저장 데이터(user data at rest)를 리드하거나 변경할 수 있다. 호스트 데이터 이동들을 위한 AABB 커맨드들은 데이터 조작들을 즉석해서(on-the-fly) 지휘하기 위해 AABB 펌웨어에 의해 이용될 수 있다. 일부의 유즈(사용) 케이스들에서, 호스트 컴퓨터에 의해 데이터가 리드되거나 라이트됨에 따라 AABB는 데이터 조작 및 데이터 변환을 수행할 수 있다.
도 9는 일 실시예에 따른, AABB 가능한 NVMe-oF SSD 내의 예시적인 커맨드 및 데이터 흐름들을 도시하는 다이어그램이다. NVMe-oF SSD(900)는 컨트롤러(901) 및 플래시 매체(960)을 포함한다. 컨트롤러(901)는 프로세서(911), PCIe EP(921), 이더넷 인터페이스(918), 블랙-박스 재구성 컨트롤러(922), 데이터 버퍼(923), NVMe-oF 호스트 인터페이스(924), 및 재구성형 로직 블록들(925)을 포함한다. 재구성형 로직 블록들(925)는 RTL 블랙-박스들(932a-932n)의 파티션들을 포함한다. RTL 블랙-박스들(932)의 각 파티션은 특정한 양의 하드웨어 리소스들 및 시스템 버스(930)를 통한NVMe/NVMe-oF 호스트 인터페이스(924), 데이터 버퍼(923), 블랙-박스 구성 컨트롤러(922)와 같은 다른 기능성 모듈들에 대한 특정한 개수 및 타입의 인터페이스들을 포함한다.
NVMe-oF SSD(900)는 이더넷 인터페이스(918)을 통해 호스트 커맨드들을 수신할 수 있다. 호스트 커맨드들은 AABB 다운로드 커맨드들, AABB 슬롯 매니지먼트 커맨드들, 및 AABB Comm 커맨드들과 같은 AABB 커맨드들을 포함할 수 있다. 이더넷 인터페이스(918)는 원격 호스트 컴퓨터로부터 AABB 커맨드들을 인터셉트하고 이들을 커맨드 경로(951)를 통해 NVMe-oF 호스트 인터페이스(924) 및 프로세서(911)로 전달할 수 있다. NVMe-oF SSD(900)의 프로세서(911)는 컴프리션 엔트리를 생성할 수 있으며 이를 NVMe-oF 호스트 인터페이스(924) 및 이더넷 인터페이스(918)를 거치는 커맨드 경로(951)를 통하여 호스트 어플리케이션으로 되돌려 보낸다. 다운로드된 AABB들을 구동하는 동안, 프로세서(911)는 NVMe-oF 호스트 인터페이스(924) 및 FTL(926)를 거치는 커맨드 경로(952)를 통하여 플래시 매체(960)로 사용자 데이터를 리드 및 라이트하기 위한 AABB-개시 내부 커맨드들(AABB-initiated internal commands)(호스트-개시 커맨드들과 대비되어)을 발행할 수 있다. 추가적으로, 프로세서(911)는 데이터 버퍼(923) 및 이더넷 인터페이스(918)를 거치는 커맨드 경로(953)를 통하여 호스트 메모리로부터 사용자 데이터를 리드하고 호스트 메모리로 사용자 데이터를 라이트하기 위해 호스트 어플리케이션과 통신할 수 있다. 호스트 어플리케이션은 이더넷 인터페이스(918), NVMe-oF 호스트 인터페이스(924), 및 FTL(926)을 거치는 경로(954)를 통해 메모리로/로부터 플래시 매체(960)로 사용자 데이터를 리드 및 라이트 하기 위한 데이터 리드 및 라이트 동작들을 개시할 수 있다.
도 10은 본 발명의 다른 실시예에 따른, AABB 가능한 NVMe SSD 내의 예시적인 커맨드 및 데이터 흐름들을 도시하는 다이어그램이다. NVMe SSD(1000)는 컨트롤러(1001) 및 플래시 매체(1060)을 포함한다. 컨트롤러(1001)는 프로세서(1011) 이더넷 인터페이스(1018)(선택적), PCIe EP 인터페이스(1021), 블랙-박스 재구성 컨트롤러(1022), 데이터 버퍼(1023), NVMe 호스트 인터페이스(1024), 및 재구성형 로직 블록들(1025)을 포함한다. 재구성형 로직 블록들(1025)는 RTL 블랙-박스들(1032a-1032n)의 파티션들을 포함한다. RTL 블랙-박스들(1032)의 각 파티션은 특정한 양의 하드웨어 리소스들 및 시스템 버스(1030)를 통한NVMe 호스트 인터페이스(1024), 데이터 버퍼(1023), 블랙-박스 구성 컨트롤러(1022)와 같은 다른 기능성 모듈들에 대한 특정한 개수 및 타입의 인터페이스들을 포함한다.
NVMe SSD(1000)는 PCIe EP 인터페이스(1021)를 통해 호스트 커맨드들을 수신 받을 수 있다. 호스트 커맨드들은 AABB 다운로드 커맨드들, AABB 슬롯 매니지먼트 커맨드들, 및 AABB Comm 커맨드들과 같은 AABB 커맨드들을 포함할 수 있다. PCIe EP 인터페이스(1021)는 원격 호스트 컴퓨터로부터 AABB 커맨드들을 인터셉트하고 이들을 커맨드 경로(1051)를 통해 NVMe 호스트 인터페이스(1024) 및 프로세서(1011)로 전달 할 수 있다. NVMe SSD(1000)의 프로세서(1011)는 컴프리션 엔트리를 생성할 수 있으며 이를 NVMe 호스트 인터페이스(1024) 및 PCIe EP 인터페이스(1021)를 거치는 커맨드 경로(1051)를 통하여 호스트 어플리케이션으로 되돌려 보낸다. 다운로드된 AABB들을 구동하는 동안, 프로세서(1011)는 NVMe 호스트 인터페이스(1024) 및 FTL(1026)을 거치는 커맨드 경로(1052)를 통하여 플래시 매체(1060)로 사용자 데이터를 리드 및 라이트하기 위한 AABB-개시 내부 커맨드들 (호스트-개시 커맨드들과 대비되어)을 발행할 수 있다. 추가적으로, 프로세서(1011)는 데이터 버퍼(1023) 및 PCIe EP 인터페이스(1021)를 거치는 커맨드 경로(1053)를 통하여 호스트 메모리로부터 사용자 데이터를 리드하고 호스트 메모리로 사용자 데이터를 라이트하기 위해 호스트 어플리케이션과 통신할 수 있다. 호스트 어플리케이션은 PCIe EP 인터페이스(1021), NVMe 호스트 인터페이스(1024), 및 FTL(1026)을 거치는 경로(1054)를 통해 호스트 메모리로/로부터 플래시 매체(1060)로 사용자 데이터를 리드 및 라이트 하기 위한 데이터 리드 및 라이트 동작들을 개시할 수 있다.
일 실시예에 따르면 데이터 저장 디바이스는 데이터 저장 매체; 복수의 프로세서 코어들을 포함하는 프로세서; 재구성형 로직 블록들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(application acceleration black-box, AABB) 슬롯들; 원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신하는 호스트 인터페이스, 상기 호스트 커맨드는 레지스터-전송 레벨(register-transfer level, RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함하고; 및 상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드하는 구성 컨트롤러를 포함하고, 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 AABB 슬롯내에 다운로드된 상기 RTL 비트스트림을 이용하여 상기 데이터 저장 매체 내에 저장된 데이터에 접근하고 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동한다.
상기 데이터 저장 장치는 비휘발성 메모리 익스프레스(nonvolatile memory express, NVMe) 솔리드-스테이트 드라이브(solid state drive, SSD)이다.
상기 데이터 저장 장치는 NVMe 오버 패브릭스(NVMe over fabrics, NVMe-oF) SSD이고, 상기 호스트 인터페이스는 이더넷 인터페이스이다.
상기 원격 호스트 컴퓨터는 제2 RTL 비트스트림 및 제2 펌웨어 드라이버 이미지를 상기 데이터 저장 장치에 전송하고, 상기 구성 컨트롤러는 상기 AABB 슬롯에 다운로드된 상기 RTL 비트스트림을 폐기하고 상기 제2 RTL 비트스트림을 다운로드하고 상기 제2 RTL 비트스트림 및 상기 제2 펌웨어 드라이버 이미지를 이용하여 제2 데이터 가속 프로세스를 구동하기 위해 상기 제2 펌웨어를 상기 프로세서 코어에 로드한다.
상기 데이터 저장 장치는 상기 원격 어플리케이션에 디스커버리 정보를 더 전송하고, 상기 디스커버리 정보는 상기 AABB 슬롯들의 피처들, 특징들, 및 속성들을 포함한다.
상기 호스트 커맨드는 상기 RTL 비트스트림 및 상기 펌웨어 드라이버를 활성화, 비활성화 및 폐기하기 위한 매니지먼트 커맨드를 포함한다.
상기 호스트 커맨드는 활성화된 AABB 슬롯과 통신하기 위한 AABB 슬롯 통신 커맨드를 포함하고, 상기 AABB 슬롯 통신 커맨드는 활성화된 AABB 슬롯의 식별자를 포함한다.
상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 원격 어플리케이션에 애그노스틱(agnostic)한 어플리케이션 프로그램 인터페이스(application program interface, API) 호출(call)들의 세트를 이용하여 상기 원격 어플리케이션의 상기 데이터 가속 프로세스를 구동하는 동안 상기 데이터 저장 매체에 저장된 상기 데이터에 접근한다.
하나 또는 그 이상의 AABB 슬롯들은 로직 영역, 상호연결들, 룩-업 테이블(look-up table, LUT)들, 임의-접근 메모리(random-access memory, RAM) 블록들, 하드 매크로들, 및 클럭 및 리셋 신호들을 포함한다.
하나 또는 그 이상의 AABB 슬롯들은 프로그래밍 가능한 클럭/리셋, 상기 프로세서 코어에 대한 어드밴스드 익스텐시블 인터페이스(advanced extensible interface, AXI), 더블 데이터 레이트(double data rate, DDR) 메모리 인터페이스, 퍼리퍼럴 콤퍼넌트 상호연결 익스프레스(peripheral component interconnect express, PCIe) 인터페이스, 및 이더넷 인터페이스를 포함한다.
다른 실시예에에 따르면, 브릿지 디바이스는 데이터 저장 장치의 데이터 저장 매체내에 저장된 데이터에 접근하는 데이터 저장 인터페이스; 복수의 프로세서 코어들을 포함하는 프로세서; 재구성형 로직 블럭들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(application acceleration black-box, AABB) 슬롯들; 원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신하는 호스트 인터페이스, 상기 호스트 커맨드는 레지스터-전송 레벨(register-transfer level, RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함하고; 및 상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드하는 구성 컨트롤러를 포함하고, 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 데이터 저장 인터페이스를 통해 상기 데이터 저장 장치의 상기 데이터 저장 매체 내에 저장된 데이터에 접근하고 상기 AABB 슬롯내에 다운로드된 RTL 비트스트림을 이용하여 상기 데이터를 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동한다.
상기 데이터 저장 인터페이스는 NVMe 인터페이스이다.
상기 호스트 인터페이스는 이더넷 인터페이스이며, 상기 데이터 저장 장치는 NVMe-oF SSD이다.
상기 원격 호스트 컴퓨터는 제2 RTL 비트스트림 및 제2 펌웨어 드라이버 이미지를 상기 브릿지 장치에 전송하고, 상기 구성 컨트롤러는 상기 AABB 슬롯에 다운로드된 상기 RTL 비트스트림을 폐기하고 상기 제2 RTL 비트스트림을 다운로드하고 상기 제2 RTL 비트스트림 및 상기 제2 펌웨어 드라이버 이미지를 이용하여 제2 데이터 가속 프로세스를 구동하기 위해 상기 제2 펌웨어를 상기 프로세서 코어에 로드한다.
상기 브릿지 장치는 상기 원격 어플리케이션에 디스커버리 정보를 더 전송하고, 상기 디스커버리 정보는 상기 AABB 슬롯들의 피처들, 특징들, 및 속성들을 포함한다.
상기 호스트 커맨드는 상기 RTL 비트스트림 및 상기 펌웨어 드라이버를 활성화, 비활성화 및 폐기하기 위한 매니지먼트 커맨드를 포함한다.
상기 호스트 커맨드는 활성화된 AABB 슬롯과 통신하기 위한 AABB 슬롯 통신 커맨드를 포함하고, 상기 AABB 슬롯 통신 커맨드는 활성화된 AABB 슬롯의 식별자를 포함한다.
상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 원격 어플리케이션에 애그노스틱한 어플리케이션 프로그램 인터페이스(API) 호출들의 세트를 이용하여 상기 원격 어플리케이션의 상기 데이터 가속 프로세스를 구동하는 동안 상기 데이터 저장 매체에 저장된 상기 데이터에 상기 데이터 저장 인터페이스를 통하여 접근한다.
하나 또는 그 이상의 AABB 슬롯들은 로직 영역, 상호연결들, 룩-업 테이블(LUT)들, 임의-접근 메모리(random-access memory, RAM) 블록들, 하드 매크로들(hard macros), 및 클럭 및 리셋 신호들을 포함한다.
하나 또는 그 이상의 AABB 슬롯들은 프로그래밍 가능한 클럭/리셋, 상기 프로세서 코어에 대한 어드밴스드 익스텐시블 인터페이스(AXI), 더블 데이터 레이트(DDR) 메모리 인터페이스, 퍼리퍼럴 콤퍼넌트 상호연결 익스프레스(PCIe) 인터페이스, 및 이더넷 인터페이스를 포함한다
상기 예시적인 실시예들은, 구체적으로 NVMe 및 NVMe-oF 장치들과 같은 데이터 저장 장치들 내에서의 인-스토리지 가속을 제공하기 위한 시스템 및 방법을 구현하는 다양한 실시예들을 설명하기 위해 상술 되었다. 개시된 예시적인 실시예들은 당업자에 의해 다양하게 변경될수 있을 것이다. 본 발명의 범위 내에 속하는 것으로 의도된 본 발명의 요지는 후속하는 청구항들에 제시된다.
100: 데이터 저장 시스템 1000: NVMe SSD
1001: 컨트롤러 1011: 프로세서
1018: 이더넷 인터페이스 1021: PCle EP 인터페이스
1022: 블랙-박스 구성 컨트롤러 1022: 블랙-박스 재구성 컨트롤러
1023: 데이터 버퍼 1024: NVMe 호스트 인터페이스
1025: 재구성형 로직 블록 1026: FTL
1030: 시스템 버스 1032: RTL 블랙-박스
1051, 1052, 1053, 1054: 커맨드 경로
1060: 플래시 매체

Claims (20)

  1. 데이터 저장 매체;
    복수의 프로세서 코어들을 포함하는 프로세서;
    재구성형 로직 블록들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(application acceleration black-box, AABB) 슬롯들;
    원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신하는 호스트 인터페이스, 상기 호스트 커맨드는 레지스터-전송 레벨(register-transfer level, RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함하고; 및
    상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드하는 구성 컨트롤러를 포함하고,
    상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 AABB 슬롯내에 다운로드된 상기 RTL 비트스트림을 이용하여 상기 데이터 저장 매체 내에 저장된 데이터에 접근하고 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동하는 데이터 저장 장치.
  2. 제1 항에 있어서, 상기 데이터 저장 장치는 비휘발성 메모리 익스프레스(nonvolatile memory express, NVMe) 솔리드-스테이트 드라이브(solid state drive, SSD)인 데이터 저장 장치.
  3. 제1 항에 있어서, 상기 데이터 저장 장치는 NVMe 오버 패브릭스(NVMe over fabrics, NVMe-oF) SSD이고, 상기 호스트 인터페이스는 이더넷 인터페이스인 데이터 저장 장치.
  4. 제1 항에 있어서, 상기 원격 호스트 컴퓨터는 제2 RTL 비트스트림 및 제2 펌웨어 드라이버 이미지를 상기 데이터 저장 장치에 전송하고, 상기 구성 컨트롤러는 상기 AABB 슬롯에 다운로드된 상기 RTL 비트스트림을 폐기하고 상기 제2 RTL 비트스트림을 다운로드하고 상기 제2 RTL 비트스트림 및 상기 제2 펌웨어 드라이버 이미지를 이용하여 제2 데이터 가속 프로세스를 구동하기 위해 상기 제2 펌웨어를 상기 프로세서 코어에 로드하는 데이터 저장 장치.
  5. 제1 항에 있어서, 상기 데이터 저장 장치는 상기 원격 어플리케이션에 디스커버리 정보를 더 전송하고, 상기 디스커버리 정보는 상기 AABB 슬롯들의 피처들, 특징들, 및 속성들을 포함하는 데이터 저장 장치.
  6. 제1 항에 있어서, 상기 호스트 커맨드는 상기 RTL 비트스트림 및 상기 펌웨어 드라이버를 활성화, 비활성화 및 폐기하기 위한 매니지먼트 커맨드를 포함하는 데이터 저장 장치.
  7. 제1 항에 있어서, 상기 호스트 커맨드는 활성화된 AABB 슬롯과 통신하기 위한 AABB 슬롯 통신 커맨드를 포함하고, 상기 AABB 슬롯 통신 커맨드는 활성화된 AABB 슬롯의 식별자를 포함하는 데이터 저장 장치.
  8. 제1 항에 있어서, 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 원격 어플리케이션에 애그노스틱(agnostic)한 어플리케이션 프로그램 인터페이스(application program interface, API) 호출(call)들의 세트를 이용하여 상기 원격 어플리케이션의 상기 데이터 가속 프로세스를 구동하는 동안 상기 데이터 저장 매체에 저장된 상기 데이터에 접근하는 데이터 저장 장치.
  9. 제1 항에 있어서, 하나 또는 그 이상의 AABB 슬롯들은 로직 영역, 상호연결들, 룩-업 테이블(look-up table, LUT)들, 임의-접근 메모리(random-access memory, RAM) 블록들, 하드 매크로들, 및 클럭 및 리셋 신호들을 포함하는 데이터 저장 장치.
  10. 제1 항에 있어서, 하나 또는 그 이상의 AABB 슬롯들은 프로그래밍 가능한 클럭/리셋, 상기 프로세서 코어에 대한 어드밴스드 익스텐시블 인터페이스(advanced extensible interface, AXI), 더블 데이터 레이트(double data rate, DDR) 메모리 인터페이스, 퍼리퍼럴 콤퍼넌트 상호연결 익스프레스(peripheral component interconnect express, PCIe) 인터페이스, 및 이더넷 인터페이스를 포함하는 데이터 저장 장치.
  11. 데이터 저장 장치의 데이터 저장 매체내에 저장된 데이터에 접근하는 데이터 저장 인터페이스;
    복수의 프로세서 코어들을 포함하는 프로세서;
    재구성형 로직 블럭들, 상호연결들, 및 메모리들을 포함하는 복수의 어플리케이션 가속 블랙-박스(application acceleration black-box, AABB) 슬롯들;
    원격 호스트 컴퓨터에서 구동되는 원격 어플리케이션으로부터 호스트 커맨드를 수신하는 호스트 인터페이스, 상기 호스트 커맨드는 레지스터-전송 레벨(register-transfer level, RTL) 비트스트림 및 펌웨어 드라이버를 포함하는 이미지 파일을 포함하고; 및
    상기 RTL 비트스트림을 상기 복수의 AABB 슬롯들의 AABB 슬롯에 다운로드 하고, 상기 AABB 슬롯을 재구성하고, 상기 프로세서의 프로세서 코어에 상기 펌웨어 드라이버를 로드하는 구성 컨트롤러를 포함하고,
    상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 데이터 저장 인터페이스를 통해 상기 데이터 저장 장치의 상기 데이터 저장 매체 내에 저장된 상기 데이터에 접근하고 상기 AABB 슬롯내에 다운로드된 상기 RTL 비트스트림을 이용하여 상기 데이터를 프로세스하기 위해 상기 원격 어플리케이션의 데이터 가속 프로세스를 구동하는 브릿지 장치.
  12. 제11 항에 있어서, 상기 데이터 저장 인터페이스는 NVMe 인터페이스인 브릿지 장치.
  13. 제11 항에 있어서, 상기 호스트 인터페이스는 이더넷 인터페이스이며, 상기 데이터 저장 장치는 NVMe-oF SSD인 브릿지 장치.
  14. 제11 항에 있어서, 상기 원격 호스트 컴퓨터는 제2 RTL 비트스트림 및 제2 펌웨어 드라이버 이미지를 상기 브릿지 장치에 전송하고, 상기 구성 컨트롤러는 상기 AABB 슬롯에 다운로드된 상기 RTL 비트스트림을 폐기하고 상기 제2 RTL 비트스트림을 다운로드하고 상기 제2 RTL 비트스트림 및 상기 제2 펌웨어 드라이버 이미지를 이용하여 제2 데이터 가속 프로세스를 구동하기 위해 상기 제2 펌웨어를 상기 프로세서 코어에 로드하는 브릿지 장치.
  15. 제11 항에 있어서, 상기 브릿지 장치는 상기 원격 어플리케이션에 디스커버리 정보를 더 전송하고, 상기 디스커버리 정보는 상기 AABB 슬롯들의 피처들, 특징들, 및 속성들을 포함하는 브릿지 장치.
  16. 제11 항에 있어서, 상기 호스트 커맨드는 상기 RTL 비트스트림 및 상기 펌웨어 드라이버를 활성화, 비활성화 및 폐기하기 위한 매니지먼트 커맨드를 포함하는 브릿지 장치.
  17. 제11 항에 있어서, 상기 호스트 커맨드는 활성화된 AABB 슬롯과 통신하기 위한 AABB 슬롯 통신 커맨드를 포함하고, 상기 AABB 슬롯 통신 커맨드는 활성화된 AABB 슬롯의 식별자를 포함하는 브릿지 장치.
  18. 제11 항에 있어서, 상기 펌웨어 드라이버가 로드된 상기 프로세서 코어는 상기 원격 어플리케이션에 애그노스틱한 어플리케이션 프로그램 인터페이스(API) 호출들의 세트를 이용하여 상기 원격 어플리케이션의 상기 데이터 가속 프로세스를 구동하는 동안 상기 데이터 저장 매체에 저장된 상기 데이터에 상기 데이터 저장 인터페이스를 통하여 접근하는 브릿지 장치.
  19. 제11 항에 있어서, 하나 또는 그 이상의 AABB 슬롯들은 로직 영역, 상호연결들, 룩-업 테이블(LUT)들, 임의-접근 메모리(random-access memory, RAM) 블록들, 하드 매크로들(hard macros), 및 클럭 및 리셋 신호들을 포함하는 브릿지 장치.
  20. 제11 항에 있어서,
    하나 또는 그 이상의 AABB 슬롯들은 프로그래밍 가능한 클럭/리셋, 상기 프로세서 코어에 대한 어드밴스드 익스텐시블 인터페이스(AXI), 더블 데이터 레이트(DDR) 메모리 인터페이스, 퍼리퍼럴 콤퍼넌트 상호연결 익스프레스(PCIe) 인터페이스, 및 이더넷 인터페이스를 포함하는 브릿지 장치.
KR1020180067003A 2017-10-11 2018-06-11 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법 KR102513924B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762571064P 2017-10-11 2017-10-11
US201762571061P 2017-10-11 2017-10-11
US62/571,061 2017-10-11
US62/571,064 2017-10-11
US15/921,400 US10719474B2 (en) 2017-10-11 2018-03-14 System and method for providing in-storage acceleration (ISA) in data storage devices
US15/921,400 2018-03-14

Publications (2)

Publication Number Publication Date
KR20190040884A KR20190040884A (ko) 2019-04-19
KR102513924B1 true KR102513924B1 (ko) 2023-03-27

Family

ID=65993255

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020180067003A KR102513924B1 (ko) 2017-10-11 2018-06-11 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
KR1020180080936A KR102388893B1 (ko) 2017-10-11 2018-07-12 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020180080936A KR102388893B1 (ko) 2017-10-11 2018-07-12 브리지 장치를 이용한 스토리지 인접 연산 제공 시스템 및 방법

Country Status (5)

Country Link
US (3) US10719474B2 (ko)
JP (2) JP7141902B2 (ko)
KR (2) KR102513924B1 (ko)
CN (2) CN109656843A (ko)
TW (2) TWI780168B (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10466916B2 (en) * 2015-04-28 2019-11-05 American Megatrends International, Llc System and method of dynamic write protect of storage devices exposed by baseboard management controller (BMC)
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
US10719474B2 (en) * 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
US10585819B2 (en) * 2018-03-05 2020-03-10 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
KR102559581B1 (ko) * 2018-05-23 2023-07-25 삼성전자주식회사 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US11436023B2 (en) * 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11188496B2 (en) * 2018-09-13 2021-11-30 Toshiba Memory Corporation System and method for storing data using ethernet drives and ethernet open-channel drives
US11366610B2 (en) 2018-12-20 2022-06-21 Marvell Asia Pte Ltd Solid-state drive with initiator mode
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10938730B2 (en) * 2019-01-29 2021-03-02 EMC IP Holding Company LLC Data transmission techniques between systems having different communication speeds
CN113767361A (zh) * 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 启用以太网的固态驱动器(ssd)
CN113924766A (zh) 2019-03-14 2022-01-11 马维尔亚洲私人有限公司 经由固态驱动器(ssd)之间的连接在ssd之间传输数据
EP3938881A2 (en) * 2019-03-14 2022-01-19 Marvell Asia Pte, Ltd. Termination of non-volatile memory networking messages at the drive level
US11079958B2 (en) * 2019-04-12 2021-08-03 Intel Corporation Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator
CN110008154B (zh) * 2019-04-16 2020-08-21 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
WO2020219807A1 (en) 2019-04-25 2020-10-29 Liqid Inc. Composed computing systems with converged and disaggregated component pool
JP7446167B2 (ja) * 2019-06-24 2024-03-08 三星電子株式会社 軽量ブリッジ、これを含む物品及びこれを用いた方法
US11809799B2 (en) 2019-06-24 2023-11-07 Samsung Electronics Co., Ltd. Systems and methods for multi PF emulation using VFs in SSD controller
JP2021086583A (ja) 2019-11-29 2021-06-03 キヤノン株式会社 情報処理装置、制御装置および制御装置の制御方法
US20210166188A1 (en) * 2019-12-03 2021-06-03 International Business Machines Corporation Computation of supply-chain metrics
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
US11687279B2 (en) 2020-01-27 2023-06-27 Samsung Electronics Co., Ltd. Latency and throughput centric reconfigurable storage device
US11210034B2 (en) * 2020-03-02 2021-12-28 Silicon Motion, Inc. Method and apparatus for performing high availability management of all flash array server
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
CN112882966A (zh) * 2020-03-24 2021-06-01 威盛电子股份有限公司 运算装置
TWI811620B (zh) * 2020-03-24 2023-08-11 威盛電子股份有限公司 運算裝置與資料處理方法
CN111459864B (zh) * 2020-04-02 2021-11-30 深圳朗田亩半导体科技有限公司 一种存储器件及其制造方法
CN113051206A (zh) * 2020-05-04 2021-06-29 威盛电子股份有限公司 桥接电路与计算机系统
US11778055B2 (en) * 2020-07-13 2023-10-03 Samsung Electronics Co., Ltd. Systems and methods for storage-efficient sensors
KR102656104B1 (ko) * 2020-07-23 2024-04-11 주식회사 멤레이 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치
JP2022057870A (ja) 2020-09-30 2022-04-11 キヤノン株式会社 制御装置および情報処理システムに関する。
KR20220067795A (ko) 2020-11-18 2022-05-25 삼성전자주식회사 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11442776B2 (en) 2020-12-11 2022-09-13 Liqid Inc. Execution job compute unit composition in computing clusters
JP2022143959A (ja) 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム、方法及びデータ処理システム
US20220300165A1 (en) * 2021-03-22 2022-09-22 Google Llc Cooperative Storage Architecture
EP4105771A1 (en) * 2021-06-17 2022-12-21 Samsung Electronics Co., Ltd. Storage controller, computational storage device, and operational method of computational storage device
KR102365312B1 (ko) * 2021-06-17 2022-02-23 삼성전자주식회사 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법
US11966343B2 (en) * 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US11880568B2 (en) 2021-11-17 2024-01-23 Seagate Technology Llc On demand configuration of FPGA interfaces
US11809323B1 (en) 2022-06-22 2023-11-07 Seagate Technology Llc Maintaining real-time cache coherency during distributed computational functions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041448A (ja) 2016-09-06 2018-03-15 三星電子株式会社Samsung Electronics Co.,Ltd. ソリッドステートドライブ、これに対する重要動作を認証する方法、及び認証システム
JP2019075104A (ja) 2017-10-11 2019-05-16 三星電子株式会社Samsung Electronics Co.,Ltd. ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法
WO2019244656A1 (ja) 2018-06-22 2019-12-26 日本電気株式会社 ストレージ装置

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089808A (zh) * 2005-03-29 2007-12-19 李春柏 电脑主机的延伸装置的工作方法
US7526619B1 (en) * 2006-09-05 2009-04-28 Nvidia Corporation Method for providing emulated flexible magnetic storage medium using network storage services
US7617340B2 (en) * 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
JP2008282308A (ja) 2007-05-14 2008-11-20 Nec Electronics Corp 協調検証装置、協調検証方法、協調検証プログラム
US7702662B2 (en) * 2007-05-16 2010-04-20 International Business Machines Corporation Method and system for handling reallocated blocks in a file system
US20090251867A1 (en) 2007-10-09 2009-10-08 Sharma Viswa N Reconfigurable, modularized fpga-based amc module
US8825940B1 (en) * 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US9262303B2 (en) 2008-12-05 2016-02-16 Altera Corporation Automated semiconductor design flaw detection system
KR101587549B1 (ko) * 2009-02-12 2016-01-21 삼성전자주식회사 폴리머 및 이를 포함하는 폴리머 액츄에터
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
CN101882122A (zh) * 2009-05-07 2010-11-10 瀚邦科技股份有限公司 数据通信系统及桥接器
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
US8880573B2 (en) 2010-10-12 2014-11-04 Dolby Laboratories Licensing Corporation System and method of dynamic precision operations
US8995981B1 (en) * 2010-12-13 2015-03-31 Csr Technology Inc. Systems and methods for remote control adaptive configuration
US8819328B2 (en) * 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US20140059278A1 (en) * 2011-11-14 2014-02-27 Lsi Corporation Storage device firmware and manufacturing software
US9009703B2 (en) 2012-05-10 2015-04-14 International Business Machines Corporation Sharing reconfigurable computing devices between workloads
EP2888818A1 (en) 2012-08-21 2015-07-01 Missing Link Electronics Inc. Configurable mixed-signal systems
US20140071855A1 (en) 2012-09-10 2014-03-13 Accedian Networks Inc. Transparent auto-negotiation of ethernet
US9298654B2 (en) * 2013-03-15 2016-03-29 International Business Machines Corporation Local bypass in memory computing
US9311230B2 (en) 2013-04-23 2016-04-12 Globalfoundries Inc. Local direct storage class memory access
US9785356B2 (en) 2013-06-26 2017-10-10 Cnex Labs, Inc. NVM express controller for remote access of memory and I/O over ethernet-type networks
WO2015127327A1 (en) * 2014-02-23 2015-08-27 Rambus Inc. Distributed procedure execution and file systems on a memory interface
WO2015138245A1 (en) 2014-03-08 2015-09-17 Datawise Systems, Inc. Methods and systems for converged networking and storage
US9304690B2 (en) * 2014-05-07 2016-04-05 HGST Netherlands B.V. System and method for peer-to-peer PCIe storage transfers
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
CN106462498B (zh) * 2014-06-23 2019-08-02 利奇德股份有限公司 用于数据存储系统的模块化交换架构
US9846660B2 (en) * 2014-11-12 2017-12-19 Xilinx, Inc. Heterogeneous multiprocessor platform targeting programmable integrated circuits
US9977734B2 (en) * 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
CN107241913B (zh) * 2015-02-25 2020-06-19 株式会社日立制作所 信息处理装置
US20160259754A1 (en) 2015-03-02 2016-09-08 Samsung Electronics Co., Ltd. Hard disk drive form factor solid state drive multi-card adapter
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10416915B2 (en) * 2015-05-15 2019-09-17 ScaleFlux Assisting data deduplication through in-memory computation
US9891935B2 (en) * 2015-08-13 2018-02-13 Altera Corporation Application-based dynamic heterogeneous many-core systems and methods
CN108702374A (zh) * 2015-09-02 2018-10-23 科内克斯实验室公司 用于以太网类型网络上的存储器和I/O的远程访问的NVM Express控制器
US10613756B2 (en) 2015-09-03 2020-04-07 Qualcomm Incorporated Hardware-accelerated storage compression
US9824173B1 (en) * 2015-09-11 2017-11-21 Xilinx, Inc. Software development-based compilation flow for hardware implementation
US9864828B1 (en) * 2015-09-17 2018-01-09 Xilinx, Inc. Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators
US10180850B1 (en) * 2015-11-03 2019-01-15 Xilinx, Inc. Emulating applications that use hardware acceleration
US10447728B1 (en) * 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
KR102491651B1 (ko) * 2015-12-14 2023-01-26 삼성전자주식회사 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
EP3440553A1 (en) * 2016-04-04 2019-02-13 Marvell World Trade, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US20170323305A1 (en) * 2016-05-03 2017-11-09 Anantha Pradeep Mechanism for securing legal interactions
US10210123B2 (en) * 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
US9703494B1 (en) 2016-09-26 2017-07-11 Intel Corporation Method and apparatus for protecting lower page data during programming in NAND flash
US11586565B2 (en) * 2016-10-03 2023-02-21 Samsung Electronics Co., Ltd. Non-volatile storage system and data storage access protocol for non-volatile storage devices
US10545861B2 (en) * 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US10656877B2 (en) * 2016-12-06 2020-05-19 Nutanix, Inc. Virtual storage controller
JP2018141448A (ja) 2017-02-28 2018-09-13 ダイキン工業株式会社 圧縮機
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device
US11249779B2 (en) * 2017-09-01 2022-02-15 Intel Corporation Accelerator interconnect assignments for virtual environments
US10558777B1 (en) * 2017-11-22 2020-02-11 Xilinx, Inc. Method of enabling a partial reconfiguration in an integrated circuit device
US11296921B2 (en) * 2017-12-03 2022-04-05 Intel Corporation Out-of-band management of FPGA bitstreams
US10761951B2 (en) * 2017-12-28 2020-09-01 Intel Corporation FPGA based functional safety control logic (FFSCL)

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041448A (ja) 2016-09-06 2018-03-15 三星電子株式会社Samsung Electronics Co.,Ltd. ソリッドステートドライブ、これに対する重要動作を認証する方法、及び認証システム
JP2019075104A (ja) 2017-10-11 2019-05-16 三星電子株式会社Samsung Electronics Co.,Ltd. ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法
WO2019244656A1 (ja) 2018-06-22 2019-12-26 日本電気株式会社 ストレージ装置

Also Published As

Publication number Publication date
US10394746B2 (en) 2019-08-27
JP7137430B2 (ja) 2022-09-14
TW201933081A (zh) 2019-08-16
KR20190040886A (ko) 2019-04-19
US11487696B2 (en) 2022-11-01
US20190108158A1 (en) 2019-04-11
JP2019075109A (ja) 2019-05-16
KR102388893B1 (ko) 2022-04-21
KR20190040884A (ko) 2019-04-19
JP7141902B2 (ja) 2022-09-26
CN109656843A (zh) 2019-04-19
TWI780168B (zh) 2022-10-11
TW201933080A (zh) 2019-08-16
US20230016328A1 (en) 2023-01-19
CN109656473B (zh) 2021-07-02
JP2019075104A (ja) 2019-05-16
TWI751374B (zh) 2022-01-01
US20200341933A1 (en) 2020-10-29
US10719474B2 (en) 2020-07-21
CN109656473A (zh) 2019-04-19
US20190107956A1 (en) 2019-04-11

Similar Documents

Publication Publication Date Title
KR102513924B1 (ko) 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
US10997106B1 (en) Inter-smartNIC virtual-link for control and datapath connectivity
US10778521B2 (en) Reconfiguring a server including a reconfigurable adapter device
US20220197685A1 (en) Technologies for application-specific network acceleration with unified coherency domain
CN109076029B (zh) 用于非统一网络输入/输出访问加速的方法和装置
US11048569B1 (en) Adaptive timeout mechanism
US9996484B1 (en) Hardware acceleration for software emulation of PCI express compliant devices
US11431681B2 (en) Application aware TCP performance tuning on hardware accelerated TCP proxy services
CA3167334C (en) Zero packet loss upgrade of an io device
US11593136B2 (en) Resource fairness enforcement in shared IO interfaces
US10452570B1 (en) Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints
US11226928B2 (en) Packet transmission method and apparatus
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
CN115437977A (zh) 跨总线存储器映射
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry
US11003618B1 (en) Out-of-band interconnect control and isolation
US10877911B1 (en) Pattern generation using a direct memory access engine
US12001374B2 (en) System and method for providing in-storage acceleration (ISA) in data storage devices
WO2023184513A1 (en) Reconfigurable packet direct memory access to support multiple descriptor ring specifications
US20240028381A1 (en) Virtual i/o device management

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant