JP2019075109A - データ記憶装置及びブリッジ装置 - Google Patents

データ記憶装置及びブリッジ装置 Download PDF

Info

Publication number
JP2019075109A
JP2019075109A JP2018189015A JP2018189015A JP2019075109A JP 2019075109 A JP2019075109 A JP 2019075109A JP 2018189015 A JP2018189015 A JP 2018189015A JP 2018189015 A JP2018189015 A JP 2018189015A JP 2019075109 A JP2019075109 A JP 2019075109A
Authority
JP
Japan
Prior art keywords
aabb
data storage
data
rtl
interface
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2018189015A
Other languages
English (en)
Other versions
JP7137430B2 (ja
Inventor
ラムダス カチェア
Ramdas Kachare
ラムダス カチェア
フレッド ワーレイ
Worley Fred
フレッド ワーレイ
学 斌 姚
Xuebin Yao
学 斌 姚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2019075109A publication Critical patent/JP2019075109A/ja
Application granted granted Critical
Publication of JP7137430B2 publication Critical patent/JP7137430B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/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/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
    • 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)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Internal Circuitry In Semiconductor Integrated Circuit Devices (AREA)

Abstract

【課題】装置内のインストレージ加速を提供するデータ記憶装置を提供する。【解決手段】データ記憶媒体、複数プロセッサコアを含むプロセッサ、再構成型ロジックブロック、相互接続、メモリを含む複数アプリケーション(APP)加速ブラックボックス(AABB)スロット(ST)、遠隔ホストで実行される遠隔APPからレジスタ伝送レベル(RTL)ビットストリーム(BS)及びファームウェアドライバ(FD)を含むイメージファイルを含むホストコマンドを受信するホストインターフェース、RTLBSを複数AABBSTの一つのAABBSTにダウンロードしAABBSTを再構成しプロセッサのプロセッサコアにFDをロードする構成コントローラを有し、FDがロードされたプロセッサコアはAABBST内にダウンロードされたRTLBSを用いデータ記憶媒体内に格納されたデータにアクセスして処理するために遠隔APPのデータ加速プロセスを実行する。【選択図】 図4

Description

本発明は、主にデータ記憶システム内におけるデータプロセシング加速に関し、特に、データ記憶装置(具体的には、非揮発性メモリエクスプレス(nonvolatile memory express:以下、NVMe)及び(NVMe over fabrics:(NVMe−oF)装置)内におけるインストレージ(in−storage)加速を提供するデータ記憶装置及びブリッジ装置に関する。
ソリッドステートドライブ(SSD)は、ハードディスクドライブ(HDD)のような、既存の記憶装置を速く代替して急速に現代のデータセンタインフラストラクチャー(infrastructure)の主要なストレージ構成要素になりつつある。
SSDは、低いレイテンシ(latency)、高いデータリード/ライト処理量(throughput)、及びユーザデータの信頼性及び持続性を有するストレージを提供する。
非揮発性メモリエクスプレスオーバーファブリックス(Non−volatile memory express(NVMe) over fabrics:以下、(NVMe−oF)と記す)は、イーサネット(登録商標、以下、省略)、ファイバチャンネル(Fibre Channel)、及びインフィニバンド(Infiniband)のようなファブリックネットワークを介して数百及び数千のSSDを接続させる、新しく浮上している技術である。
(NVMe−oF)プロトコルは、多くのNVMeSSDを、形成されたファブリックネットワークを介して遠隔ホストに接続させる遠隔直接接続記憶装置(remote direct−attached storage:rDAS)を可能にする。
(NVMe−oF)プロトコルは、またネットワークを介してNVMeコマンド、データ及び応答を搬送(carry)するための信頼性のあるトランスポートサービスを提供するため、遠隔直接メモリアクセス(remote direct memory access:以下、RDMAと記す)を支援する。
iWARP、「RoCE v1」、及び「RoCE v2」は、RDMAサービスを提供するトランスポートプロトコルの一部の例である。
分割された(disaggregated)データ記憶装置(例えば、(NVMe−oF)互換SSD、本明細書においては、簡略に(NVMe−oF)SSD又はeSSDとも記する)を用いるデータ記憶システムは、ホストコンピュータで実行されるアプリケーションに大量のストレージを提供できる。
アプリケーションは、分割されたデータ記憶装置から大量のデータ(ビッグデータ)を収集し、これらを分析できる。
ビッグデータプロセシングスケールは非常に大きいので、意味のあるビッグデータマイニング(data mining)を遂行するためのインフラストラクチャーは、過度な費用がかかる可能性が多く、多くのコンピューティングリソース、大型システムメモリ、高帯域幅ネットワークだけでなく、ビッグデータを記憶するための大型の高性能データ記憶装置が要求される。
従って、データプロセシングマイニングタスクの一部をホストコンピュータからデータ記憶装置に転嫁(offload)させ、データ記憶装置からホストコンピュータへのデータ移動を最小化することが課題となっている。
米国特許第9703494号明細書 米国特許出願公開第20090251867号明細書 米国特許出願公開第20120089655号明細書 米国特許出願公開第20170068460号明細書 米国特許出願公開第20080288231号明細書 米国特許出願公開第20100146338号明細書 米国特許出願公開第20130305241号明細書 米国特許出願公開第20160259597号明細書 米国特許出願公開第20130060981号明細書 米国特許出願公開第20150254088号明細書 米国特許出願公開第20140071855号明細書 米国特許出願公開第20150180503号明細書
本発明は上記従来のNVMeSSDにおける問題点に鑑みてなされたものであって、本発明の目的は、データ記憶装置(具体的には、NVMe及び(NVMe−oF)装置)内のインストレージ加速を提供するデータ記憶装置及びブリッジ装置を提供することにある。
上記目的を達成するためになされた本発明によるデータ記憶装置は、データ記憶媒体と、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black−box:以下、AABBと記す)スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register−transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード(load)する構成コントローラと、を有し、前記ファームウェアドライバがロードされた前記プロセッサコアは、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理(process)するために、前記遠隔アプリケーションのデータ加速プロセスを実行(run)することを特徴とする。
上記目的を達成するためになされた本発明による、ブリッジ装置は、データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、複数のプロセッサコアを含むプロセッサと、再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black−box:以下、AABBと記す)スロットと、遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register−transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データを処理(process)するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とする。
本発明に係るデータ記憶装置及びブリッジ装置によれば、隣接(near)又はインストレージ加速を遂行するために、ヘビーデューティー(heavy−duty)データプロセシング及び操作を遂行するホストアプリケーションの機能を、データ記憶装置又はブリッジ(bridge)装置に転嫁させることによって、効率的なエネルギー及び帯域幅を有するデータソリューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーのコストを軽減させ得る、という効果がある。
本発明の一実施形態による例示的なデータ記憶システムを示すブロック図である。 本発明の一実施形態による例示的な(NVMe−oF)ブリッジ装置の構成を示すブロック図である。 本発明の一実施形態による例示的なアプリケーション加速ブラックボックス(AABB)イメージのデータ構造を示す図である。 本発明の一実施形態によるバックエンドSSDと共にブリッジ装置内に実装された例示的なインストレージ加速プラットフォームの構成を示すブロック図である。 本発明の一実施形態によるデータ記憶装置内に実装された例示的なISAプラットフォームの構成を示すブロック図である。 本発明の一実施形態によるAABBダウンロードコマンドフォーマットを示す図である。 本発明の一実施形態によるAABBスロットマネジメントコマンドの例を示す図である。 本発明の一実施形態による「AABB Comm」コマンドの例示的なフォーマットを示す図である。 本発明の一実施形態によるAABB可能な(NVMe−oF)SSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。 本発明の他の実施形態によるAABB可能なNVMeSSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
次に、本発明に係るデータ記憶装置及びブリッジ装置を実施するための形態の具体例を図面を参照しながら説明する。
添付した図面は、必ずしも比率に合わせて示したものではなく、例示を示すための目的のために、図面の全体にわたって類似した構造の構成要素又は機能は、一般的に同様の符号番号によって示す。
図面は、ただ本明細書で記述される様々な実施形態が容易に記述されるように意図され、また、図面は、本明細書で開示する教示事項の全ての態様を記述せず、請求項の権利範囲を限定しない。
本明細書で開示する各機能(特性)(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)でそれぞれ表わす(本明細書において、これらを含めてeSSD170として示す)。
ホスト110は、アプリケーション111、オペレーションシステム(OS)/ファイルシステム(FS)112、及び(NVMe−oF)ドライバ113を含む。
ホスト110のイニシエータ(例えば、アプリケーション111は、(NVMe−oF)ドライバ113を用いて、イーサネット150を介してeSSD170と(NVMe−oF)接続を設定できる。
シャーシ160は、イーサネットスイッチ161、ベースボードマネジメントコントローラ(baseboard management controller:BMC)162、及びペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:PCIe)スイッチ163を含む。
イーサネットスイッチ161は、ミッドプレーン(midplane)165を介してeSSD170へのイーサネット接続を提供し、PCIeスイッチ163は、ミッドプレーン165を介してeSSD170へのマネジメントインターフェース164を提供する。
BMC162は、システム管理者(system administrator)によって提供される命令語に基づいてeSSD170をプログラムできる。
イーサネットスイッチ161は、eSSD170及びホスト110の間のネットワーク接続性を提供する。
イーサネットスイッチ161は、一つ又はそれ以上のホストに接続するための大容量(large‐capacity)(例えば、100Gbps)アップリンク(uplink)を有し得る。
イーサネットスイッチ161は、また、eSSD170に接続するための多重の低容量(lower‐capacity)(例えば、25Gbps)ダウンリンク(dawnlink)を有し得る。
例えば、イーサネットスイッチ161は、12個の100Gbpsのアップリンク及び24個又は48個の25Gbpsのダウンリンクを含み得る。
イーサネットスイッチ161は、BMC162への特殊設定/マネジメントポートを有し得る。
BMC162は、イーサネットスイッチ161、PCIeスイッチ163、及びeSSD170を含むシャーシ160の内部コンポーネントを管理する。
BMC162は、システムマネジメントのためのシステムマネジメントバス(system management bus:SMBus)インターフェース及び/又はPCIeを支援する。
BMC162は、eSSD170を設定し、イーサネットスイッチ161をプログラムできる。
サーバベースのオールフラッシュアレイ(all‐flash arrays:AFAs)と同様に、eSSD170は、eSSDの束、これらの外部のホストと接続させるネットワークスイッチ(即ち、イーサネットスイッチ161及びこれを管理するためのBMC162を含むサーバレスエンクロージャ(server‐less enclosure)(即ち、シャーシ160)に共に収納される。
BMC162は、ブート(boot)を処理し、eSSD装置への経路を制御する。
完全な(full‐fledged)x86CPUとは異なり、BMC162は、CPUが処理できる全てのタスクが処理できず、そのため、最小限のエンクロージャマネジメント機能を遂行する。
BMC162は、SMBus又はPCIeバスを介して、接続性、状態、温度、ログ、及びエラーに対する、接続されたeSSD170及び関連するハードウェアの自体検査(health check)を維持する。
eSSD170は、高性能及び大容量データ記憶ソリューションを提供する。
(NVMe−oF)プロトコルは、遠隔直接接続(remote direct‐attached storage:rDAS)方式でホストコンピュータ110で駆動されるアプリケーション111に数百個及び数千個の分割されたeSSD170が接続されるようにする。
本発明のシステム及び方法は、分割されたeSSD170に収集されて記憶される大量のデータの移動及びプロセシングを容易にする。
既存のホストコンピュータを利用する、このようなデータプロセシングの費用は非常に高い可能性がある。
ホストコンピュータ110で駆動されるアプリケーション111は、ネットワーク(例えば、イーサネット150)にかけているeSSD170のような分割されたデータ記憶装置内に格納されたデータをフェッチ(fetch)することにより、マシンラーニングのようなプロセスを遂行し、データを処理して、データ記憶装置にデータ処理の結果を再び格納できる。
データフェチング、データ処理、及び格納を含む、このようなプロセスは、ホストコンピュータ上の過度なエネルギー、コンピューティング、ネットワーク、及びデータ記憶リソースを消費して非常に非効率的である可能性がある。
さらに、このようなプロセスは、ホストコンピュータに高価のコンピューティング及びメモリリソース上の要求事項を負担させる可能性がある。
図2は、本発明の一実施形態による例示的な(NVMe−oF)ブリッジ装置の構成を示すブロック図である。
ブリッジ装置は、データ記憶装置に集積されるか、又は、データ記憶装置に接続されて分離された(そして、別個の)装置を示す。
続く例示において、eSSDは、ブリッジ装置及びバックエンドSSDの全てを含むものと記述するが、しかし、eSSDを形成するために、データ記憶装置(バックエンドSSD)は、別個のブリッジ装置に接続され得るか、又は他の実施形態においてeSSDは、ブリッジ装置それ自体又はブリッジ装置の隣接コンピューティング(near−computing)機能を遂行できる装置を示し得ることを理解できるであろう。
(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、PCIeCEパーサー(PCIe CE parser)219、PCIe−サイドコマンドコンプリーションキュー(PCIe−side command completion queue:PCQ)モジュール220を含む。
(NVMe−oF)ブリッジ装置200は、PCIeバスを介してバックエンドSSD(例えば、NVMeSSD)250に結合される。
ホストコンピュータ上で駆動される遠隔イニシエータ(remote initiator)は、ファブリックネットワーク(本発明の実施形態においては、イーサネット)を介してバックエンドSSD250に(NVMe−oF)コマンドを伝送する。
(NVMe−oF)ブリッジ装置200のコマンドパーサー213は、バックエンドSSD250に伝送が予定された(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は、コマンドサブミッションキュー(active submission queues)を具現し、アクティブサブミッションキュー(active submission queues)のためのヘッド(head)及びテール(tail)ポインターを維持する。
PSQモジュール216は、アクティブサブミッションキューを検出でき、サブミッションキューがフル(full)又はエンプティ(empty)であることを示す条件部フラッグ(conditional flags)を生成する。
NVMeコマンドが、サブミッションキュー内に配置されている時、PSQモジュール216は、ドアベルイベント(doorbell events)(サブミッションキュードアベル(submission queue−doorbell))を生成し、これをPAPPモジュール217を介してバックエンドSSD250に伝送する。
PPAPモジュール271は、PCIeバスを介してドアベルイベントを伝送するために、PCIe伝送(PCIe transport)をバックエンドSSD250に具現する。
PAPPモジュール271は、(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は、バックエンドSSD250のためのコマンドコンプリーションキュー(command completion queues)を実装する。
バックエンドSSD250は、バックエンドSSD250がプロセシングする、各NVMeコマンドのためのコマンドコンプリーションエントリ(command completion entry:CE)を書き込むことができる。
通常は、コマンドサブミッションキューとコマンドコンプリーションキューとの間には、一対一マッピング(one−to−one mapping)がある。
PCIeCEパーサー219は、PCQモジュール220から受信したコンプリーションエントリ(CE)を分析し、これらを解釈する。
PCIeCEパーサー219は、分析されたCEを、対応するNVMeコマンドを生成した適切なコマンドプロセシングユニット(231〜235)に伝達する。
適切なコマンドプロセシングユニット(231〜235)は、PCIeCEパーサー219から受信したPCIeCE(又は、NVMeCE)に対応する(NVMe−oF)CEを生成し、(NVMe−oF)インターフェース(例えば、イーサネット)を介して(NVMe−oF)CEを遠隔イニシエータに戻して発行するために、生成された(NVMe−oF)CEを(NVMe−oF)応答機218に伝達する。
(NVMe−oF)CEは、遠隔イニシエータに/から伝送されるリードデータ又はライトデータの伝送に先行(precede)できる。
(NVMe−oF)コマンドブリッジング(bridging)の一部として、コマンドプロセシングユニット(231〜235)は、バックエンドSSD250と遠隔イニシエータとの間のデータ伝送を容易にする。
ドアベルイベントに応答して、バックエンドSSD250は、PSQモジュール216から受信したNVMeコマンドをフェッチ(fetch)し、これらを実行する。
コマンド実行の一部として、バックエンドSSD250は、データ伝送を遂行できる。
このようなデータ伝送は、(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のeSSD170)のコントローラ内に実装され得る。
他の実施形態において、本発明のISAプラットフォームは、ブリッジ装置(例えば、図2の(NVMe−oF)ブリッジ装置200)のコントローラ内に実装され得る。
このような点で、本明細書において使用される用語「インストレージ加速」は、ターゲットデータを格納する実際のデータ記憶装置だけでなく、データ記憶装置にインターフェース(又はプロトコル翻訳(protocol translation))を提供するために、データ記憶装置に隣接して配置されたブリッジ装置内におけるデータプロセシングを指示するために使用される。
大量のデータプロセシングを伴うデータ中心(data−centric)ホストアプリケーションは、本発明のISAプラットフォームを用いることにより多くの利点が得られる。
ヘビーデューティデータプロセシング及び操作を遂行するホストアプリケーションの機能は、隣接又はインストレージ加速を遂行するためにデータ記憶装置又はブリッジ装置に転嫁(offload)され得る。
本発明のISAプラットフォームは、エネルギー及び帯域幅の側面において、効率的なデータプロセシングソシューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーの費用を軽減させ得る。
一実施形態によれば、遠隔ホストコンピュータ上で駆動されるデータ集中的(data−intensive)アプリケーション(例えば、マシンラーニング(ML)アプリケーション、ビッグデータアプリケーション)は、一部のデータプロセシング機能をデータ記憶装置及び/又はブリッジ装置に転嫁させ得る。
データ記憶装置又はブリッジ装置は、実際のターゲットデータを格納するデータ記憶装置及びデータ記憶装置内に格納されたターゲットデータに対するアクセスを要求する、データ集中的アプリケーションを駆動する遠隔ホストコンピュータの間でのデータ伝送を最小化させることによって、データプロセシングを加速させ得る。
本発明のISAプラットフォームは、データ記憶装置及びデータ集中的アプリケーションを駆動する遠隔ホスト装置の間でのデータの移動を最小化させることによって、ユーザデータがデータ記憶装置に近く又はその内部でもっと効率的にプロセスされ得るようにする。
それにより、本発明のISAプラットフォームは、より向上したアプリケーション性能を達成すると同時に、ホストコンピュータのコンピューティング、ネットワーキング、及び記憶インフラストラクチャーと関連された費用を減少させ得る。
本発明のISAプラットフォームは、多様な種類のデータ記憶装置に適用され得る。
しかし、以下では、説明の便意のためにデータ記憶装置の例として、NVMeSSD又は(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プラットフォームは、アプリケーションを一般的な方式で加速できる。
追加的に、ユーザは、本発明のISAプラットフォームをセルフサービス方式で利用できる。
例えば、ユーザは、実時間(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プラットフォームの再構成型ロジックブロック)を再構成するために、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スロットのマネジメントのために利用され得る。
「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)、及び他の変換を調整(orchestrate)することができる。
本発明のISAプラットフォームは、NVMe/(NVMe−oF)SSD及び/又はブリッジ装置を用いて、第三者アプリケーションを加速できる。
ユーザは、ユーザアプリケーションの目的とする機能(又は、目的とする機能の部分)を加速するために、NVMe/(NVMe−oF)SSDにアプリケーションAABBをダウンロードできる。
本発明のISAプラットフォームは、与えられたAABBのためのハードウェアコンポーネント及び関連したファームウェアコンポーネントを活性化させる。
ハードウェアコンポーネントは、NVMe/(NVMe−oF)SSD内の一つ又はそれ以上の再構成型ロジックブロックでロード(load)され得る、RTLビットストリーム(bit stream)形態となっている。
ファームウェアコンポーネントは、NVMe/(NVMe−oF)SSDの内臓されたプロセッサ(又はプロセッサコア)にロードされ、実行される。
たとえ、ユーザがAABBスロットに実装する機能を識別できるとしても、本発明のISAプラットフォームに関する限り、AABBスロットは、依然としてブラックボックスである。
即ち、本発明のISAプラットフォーム及びプラットフォーム提供者は、どのように、又はどのような目的のためにAABBが用いられるかは知れないか、又は気にしない。
ユーザは、セルフサービス方式で本発明のISAプラットフォームにより提供されるAABBスロットを定義し、生成し、ダウンロードして利用できる。
たとえ、後述する例示が、ユーザがセルフサービス方式で第三者加速機能を駆動できるようにする、本発明のISAプラットフォームの実施形態に中点を置くとしても、特定の標準ビルトインブラックボックス機能が、NVMe/(NVMe−oF)SSD又はブリッジ装置内に内在的(natively)に実装され得るように、本発明のISAプラットフォームは一般的な方式で利用され得るのが理解されるであろう。
ユーザがAABBスロットにAABBイメージをダウンロードする時に、AABBイメージを受信した装置(例えば、NVMe/(NVMe−oF)SSD又はブリッジ装置)は、RTL及びファームウェアコンポーネントを抽出する。
RTLコンポーネントは、ビットストリームの形態で伝達され得る。
ファームウェアコンポーネントは、実行可能なバイナリイメージで伝達され得る。
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を有するドライババイナリイメージファイル312へのポインターを含む。
たとえ、一実施形態が一つのヘッダ、並びに、対応するRTLビットストリーム及びドライババイナリイメージファイルだけを開示しているとしても、本発明の開示内容から逸脱しない範囲内で単一のAABBイメージは、複数のヘッダ、RTLビットストリーム、及びドライババイナリイメージファイルを有し得ることが理解されるであろう。
本発明のISAプラットフォームは、NVMe/(NVMe−oF)SSD(例えば、図1のeSSD170のコントローラ又はブリッジ装置(例えば、図2の(NVMe−oF)ブリッジ装置200)のコントローラに実装され得る。
一実施形態において、コントローラは、NVMe/(NVMe−oF)SSD又はブリッジ装置に含まれるFPGAベース再構成型ロジックブロックと相互作用できる。
データ記憶性能に加えて、本発明のISAプラットフォームは、第三者機能ブロック(third−party functional blocks)(即ち、AABBスロット)を実装し、実行するメカニズムを提供する。
AABBスロットは、予め定義されたインターフェースのセットを介してアクセスされ得る、予め設定された量のロジック、演算、及びメモリリソースで供給される。
NVMe/(NVMe−oF)SSD又はブリッジ装置内に実装されたFPGAベース再構成型ロジックブロックは、NVMe/(NVMe−oF)SSD又はブリッジ装置の第三者機能ブロックのヘビーデューティーデータプロセシング機能を実装するために利用され得る。
コントローラプロセッサの演算リソースは、制御アルゴリズムだけでなく、ハードウェア加速エンジンのためのドライバファームウェアを実装するため、ユーザにより利用され得る。
一実施形態において、ユーザは、いくつかのユースケース(use case)のためにファームウェアリソースのみを利用できる。
図4は、本発明の一実施形態によるバックエンドSSDと共にブリッジ装置内に実装された例示的なISAプラットフォームの構成を示すブロック図である。
例えば、バックエンドSSD450は、ブリッジ装置にPCIeリンクを通じてアクセス可能な標準NVMeSSDである。
ブリッジ装置及びバックエンドSSDは、ホストに「eSSD」と見なされる単一の記憶装置としてパッケージされ得る。
ブリッジ装置400は、プロセッサ411、PCIeエンドポイント(EP)421、バックエンドSSD450と接続するためのPCIeインターフェース417、(NVMe−oF)ブリッジ装置である場合の選択的イーサネットインターフェース418、ブラックボックス再構成コントローラ422、データバッファ423、NVMe/(NVMe−oF)ホストインターフェース424、及び再構成型ロジックブロック425を含む。
再構成型ロジックブロック425は、ロジックブロックをプログラミング可能に接続できる再構成可能な相互接続(reconfigurable interconnects)及びプログラム可能な(programmable)ロジックブロックのアレイを含む、フィールドプログラマブルゲートアレイ(field−programmable gate array:FPGA)であり得る。
ロジックブロックは、複雑な組み合わせ機能、又は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)内に第三者RTL機能性を実装させ得る。
場合によって、ユーザは、ファームウェアブラックボックスのみを用いてRTL機能性を実装させ得る。
この場合、ファームウェアブラックボックスは、RTLブラックボックス432の、予め備えられた(prepopulated)RTLコンポーネントを利用できる。
ブリッジ装置400は、バックエンドSSD450に伝送が予定されたイーサネット又はPCIeバスから受信したホストコマンドをインターセプトし、バックエンドSSD450に格納されたデータへのアクセスだけでなく、プロセッサ411を用いて隣接(near)記憶データプロセシングを提供できる。
BB構成コントローラ422は、RTLビットストリームを一つ又はそれ以上のRTLブラックボックス432にダウンロードでき、プロセッサ411のプロセッサコアを用いて対応されるブラックボックスドライバ431を駆動するために、対応するドライババイナリイメージファイルをプロセッサ411にロードできる。
図5は、本発明の一実施形態によるデータ記憶装置内に実装された例示的なISAプラットフォームの構成を示すブロック図である。
データ記憶装置500は、NVMeSSD又は(NVMe−oF)SSDであり得る。
一部の実施形態において、データ記憶装置500は、NVMeSSD又は(NVMe−oF)SSDの格納(storage)コントローラを指し得る。
データ記憶装置500は、コントローラ501及びフラッシュ媒体(flash media)560を含む。
コントローラ501は、プロセッサ511、PCIeEP521、(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に示したブリッジ装置の例において記述したものと類似するか、又は同一である。
バックエンドSSD450に対するPCIeインターフェース417の代わりに、コントローラ501は、フラッシュ媒体560からユーザデータを読み出したり、フラッシュ媒体560に書き込んだりするためにフラッシュ媒体560とインターフェースするためのフラッシュ変換レイヤー(flash translation layer:FTL)モジュール526を有する。
このような内在的実装(native implementation)においては、これと異なる場合、ブリッジ装置で遂行される機能をSSDコントローラそのものが遂行できるので、ブリッジ装置は、バックエンドSSDに接続される必要がない。
FPGAベース再構成型ロジックブロック(例えば、図4の再構成型ロジックブロック425及び図5の再構成型ロジックブロック525)は、多様なユーザプログラミング可能なロジック機能を遂行するために再プログラミングされ得る。
各再構成型ロジックブロックは、
a)ルックアップテーブル(LUT)、
b)ランダムアクセスメモリ(RAM)、及び
c)再構成型相互接続を含む。
このような3つのコンポーネントを用いることによって、多様なデータプロセシング回路がハードウェアに実装され得る。
再構成型ロジックブロックは、通常的なアプリケーション特定用途向け集積回路(application−specific integrated circuit:ASIC)の高性能及びソフトウェア具現の柔軟性を同時に提供できる。
アプリケーションのデータプロセシング機能性は、ヴェリログ(Verilog)及び VHDLのようなプログラミング可能な言語を用いて、RTLモデルの形態で実装され得る。
RTLモデルは、その後、ゲートレベル回路で合成(synthesize)される。
合成された回路は、その後、ゲートレベルネットリスト(netlists)の物理的実装を実現するために、LUT、RAM,及び相互接続のようなFPGAリソースでマッピングされる。
最終的な実装は、ビットストリーム又はビットファイルの形態で示される。
ビットストリームは、本質的にFPGA内の相互接続スイッチのためのビットマップである。
適切な相互接続スイッチは、オン(on)及びオフ(off)させることによって、目的とする回路がFPGA内に実現される。
ビットファイルのビットストリームは、電源オン以後や所望する時点で、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サービス又は機能のためのカスタムインターフェース、及びその他の別途のインターフェースを含むが、これに限定されない。
追加的に、TRLブラックボックス532のそれぞれは、対応する構成コントローラ522に対する設定インターフェース(configuration interface)を有し得る。
このインターフェースは、ユーザに見られず、RTLブラックボックス532にユーザ回路をダウンロードするのに用いられる。
一実施形態によれば、SSDコントローラ又はブリッジコントローラは、FPGAに実装され得る。
このような場合、FPGAの一領域は、別に分離(set aside)され、RTLブラックボックスに予め確保(reserved)され得る。
別に分離されて、予め確保されたそのようなFPGAパーティションは、実行時間(runtime)の間にユーザビットストリームをダウンロードするのに使用され得る。
本発明の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スロットの個数、ファームウェアだけを有するAABBスロットの個数、RTLブラックボックス及びファームウェアブラックボックスパラメータを有する各AABBスロットに対するデータ構造に関する情報を含み得る。
RTLブラックボックスコンポーネントのためのパラメータの例は、領域、相互接続リソース、ロジックリソースの個数、LUTの属性、RAMブロックの個数、サイズなど、最大クロック周波数、及びインターフェースの個数及びタイプを含み、これに限定されない。
ファームウェアブラックボックスコンポーネントのためのパラメータの例は、関連するファームウェアブラックボックスのためのファームウェアコードサイズ(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イメージがダウンロードされると、ダウンロードされたAABBイメージは、アプリケーションが明示的に活性化トリガーコマンド(explicit activate trigger command)を発行してISAプラットフォーム上でAABBイメージを起動(launch)するまで、基本値でリセット状態を保持する。
アプリケーションは、また、現在駆動されている特定の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は、インターセプトした「AABB Comm」コマンドを正しいAABBスロットに伝達するためにISAプラットフォームによって用いられる。
「AABB Comm」コマンドをインターセプトすることに加えて、本発明のISAプラットフォームは、遠隔ホストコンピュータ上で駆動されるアプリケーションと通信し、データ記憶装置に、及びこれからユーザデータを伝送するためにAABBドライバが使用できる標準APIのセットを提供する。
本発明のISAプラットフォームが提供するAPIは、例えば、
1)AABB Commコマンドをインターセプトし、適切なAABBスロットに伝達するコマンド、
2)再びアプリケーションにAABB Commコマンドコンプリーションエントリを送信するコマンド、
3)データ記憶装置からユーザデータを読み出すコマンド、
4)データ記憶装置にAABBデータを書き込むコマンド、
5)ホストメモリからユーザデータを読み出すコマンド、及び
6)ホストメモリにAABBデータを書き込むコマンドのような、多様なコマンドを含む。
「AABB Comm」コマンドをインターセプトし、適切なAABBスロットに伝達するための第一番目のコマンドは、コマンドを受信したサブミッションキュー識別子(submission queue identifier:SQID)を含む64Bコマンドであり得る。
「AABB Comm」コマンドコンプリーションエントリをホストコンピュータ上で駆動するアプリケーションに送信するための第二番目のコマンドは、16Bコンプリーションエントリ(CB)及びSQIDを含む。
データ記憶装置からユーザデータを読み出すための第三番目のコマンドは、ネームスペースID(namespace ID:NSID)、スタート論理ブロックアドレス(start logical block address:SLBA)、複数のブロック(a number of blocks:NLB)、ISAプラットフォーム内の目的地アドレス(destination address)、及びその他に別の必要な関連した情報だけを含む。
データ記憶装置にAABBデータを書き込むための第四番目のコマンドは、NSID、SLBA、NLB、ISAプラットフォーム内のソースアドレス、及びその他に別の必要な関連した情報だけを含み得る。
ホストメモリからユーザデータを読み出すための第五番目のコマンドは、ホストメモリ内のソースアドレス(SGL又はPRP)、ISAプラットフォーム内の目的地アドレス、伝送の長さ(length of transfer)、その他に別の必要な関連した情報を含み得る。
AABBデータをホストメモリに書き込むための第六番目のコマンドは、ISAプラットフォーム内のソースアドレス、ホストメモリ内の目的地アドレス(SGL又はPRP)、伝送の長さ、その他に別の必要な関連した情報を含み得る。
このようなAPIを用いて、AABBファームウェアは、ホストアプリケーションコマンドを受信し、受信した「AABB Comm」コマンドのための適切なコンプリーションエントリをホストアプリケーションに送り返すことができる。
データ記憶装置からユーザデータを読み出し、データ記憶装置にユーザデータを書き込むためのAPIコマンドは、データ記憶装置に記憶されたユーザデータをAABBがプロセス又は操作するように許容するのに用いられる。
AABBは、ローカルバッファにデータをフェッチし、データをプロセスするか、又はデータを変換させ、変更されたデータ又はプロセシング結果を再びデータ記憶装置に書き込むことができる。
ホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためのAPIコマンドは、AABBファームウェアが遠隔ホストだけでなく、バックエンドデータ記憶装置と共に、又はデータ記憶装置のNANDフラッシュ媒体と直接に共にデータの伝送を調整(orchestrate)することを許容するのに用いられる。
このようなアプリケーションコマンド受信、コマンドコンプリーション、並びに、ホスト及びデータ記憶装置の両方からのデータの伝送を利用することによって、ISAプラットフォームは、データ記憶装置内又はデータ記憶装置に隣接してユーザデータプロセシング及び操作の目的とする機能を実行できる。
一実施形態によれば、AABBファームウェアは、AABBコマンドを用いてホストメモリに/からデータ伝送を開始する。
ホスト及びAABBは、一実施形態において、データ記憶装置を介してデータを交換できる。
ホストコンピュータは、データ記憶装置にユーザデータを直接読み出すか、又は書き込むことができ、AABBは、データ記憶装置内のユーザ記憶データ(user data at rest)を読み出すか、又は変更できる。
ホストデータ移動のためのAABBコマンドは、データ操作を即座に(on−the−fly)調整するために、AABBファームウェアにより用いられ得る。
一部のユース(ユーザ)ケースにおいて、ホストコンピュータによってデータが読み出すか、又は書き込むことにより、AABBは、データ操作及びデータの変換を実行できる。
図9は、本発明の一実施形態によるAABB可能な(NVMe−oF)SSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
(NVMe−oF)SSD900は、コントローラ901及びフラッシュ媒体960を含む。
コントローラ901は、プロセッサ911、PCIeEP921、イーサネットインターフェース918、ブラックボックス再構成コントローラ922、データバッファ923、(NVMe−oF)ホストインターフェース924、及び再構成型ロジックブロック925を含む。
再構成型ロジックブロック925は、RTLブラックボックス(932a〜932n)のパーティションを含む。
RTLブラックボックス932の各パーティションは、特定の量のハードウェアリソース及びシステムバス930を介するNVMe/(NVMe−oF)ホストインターフェース924、データバッファ923、ブラックボックス構成コントローラ922のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
(NVMe−oF)SSD900は、イーサネットインターフェース918を介してホストコマンドを受信できる。
ホストコマンドは、AABBダウンロードコマンド、AABBスロットマネジメントコマンド、及び「AABB Comm」のようなAABBコマンドを含む。
イーサネットインターフェース918は、遠隔ホストコンピュータからAABBコマンドをインターセプトし、これらをコマンド経路951を介して(NVMe−oF)ホストインターフェース924及びプロセッサ911に伝達する。
(NVMe−oF)SSD900のプロセッサ911は、コンプリーションエントリを生成でき、これを(NVMe−oF)ホストインターフェース924及びイーサネットインターフェース918を経るコマンド経路951を介してホストアプリケーションを送り返す。
ダウンロードされたAABBが駆動している間、プロセッサ911は、(NVMe−oF)ホストインターフェース924及びFTL926を経るコマンド経路952を介してフラッシュ媒体960にユーザデータを読み出し及び書き込みのためのAABB開始内部コマンド(AABB−initiated internal commands)(ホスト開始コマンドと対比されて)を発行する。
追加的に、プロセッサ911は、データバッファ923及びイーサネットインターフェース918を経るコマンド経路953を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、イーサネットインターフェース918、(NVMe−oF)ホストインターフェース924、及びFTL926を経る経路954を介してメモリに/からフラッシュ媒体960にユーザデータを読み出し及び書き込みためのデータリード及びライト動作を開始する。
図10は、本発明の他の実施形態によるAABB可能なNVMeSSD内の例示的なコマンド及びデータの流れを説明するためのブロック図である。
NVMeSSD1000は、コントローラ1001及びフラッシュ媒体1060を含む。
コントローラ1001は、プロセッサ1011、イーサネットインターフェース1018(選択的)、PCIeEPインターフェース1021、ブラックボックス再構成コントローラ1022、データバッファ1023、NVMeホストインターフェース1024、及び再構成型ロジックブロック1025を含む。
再構成型ロジックブロック1025は、RTLブラックボックス(1032a〜1032n)のパーティションを含む。
RTLブラックボックス1032の各パーティションは、特定の量のハードウェアリソース及びシステムバス1030を介するNVMeホストインターフェース1024、データバッファ1023、ブラックボックス構成コントローラ1022のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
NVMeSSD1000は、PCIeEPインターフェース1021を介してホストコマンドを受信できる。
ホストコマンドは、AABBダウンロードコマンド、AABBスロットマネジメントコマンド、及び「AABB Comm」コマンドのようなAABBコマンドを含む。
PCIeEPインターフェース1021は、遠隔ホストコンピュータからAABBコマンドをインターセプトし、これらをコマンド経路1051を介してNVMeホストインターフェース1024及びプロセッサ1011に伝達する。
NVMeSSD1000のプロセッサ1011は、コンプリーションエントリを生成でき、これをNVMeホストインターフェース1024及びPCIeEPインターフェース1021を経るコマンド経路1051を介してホストアプリケーションに送り返す。
ダウンロードされたAABBが駆動している間に、プロセッサ1011は、NVMeホストインターフェース1024及びFTL1026を経るコマンド経路1052を介してフラッシュ媒体1060にユーザデータを読み出し及び書き込みするためのAABB開始内部コマンド(ホスト開始コマンドと対比されて)を発行する。
さらに、プロセッサ1011は、データバッファ1023及びPCIeEPインターフェース1021を経るコマンド経路1053を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、PCIeEPインターフェース1021、NVMeホストインターフェース1024、及びFTL1026を経る経路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であってもよく、ホストインターフェースは、イーサネットインターフェースであってもよい。
遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージをデータ記憶装置に伝送し、構成コントローラは、AABBスロットにダウンロードされたRTLビットストリームを廃棄して第2RTLビットストリームをダウンロードし、第2RTLビットストリーム及び第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを駆動するために第2ファームウェアをプロセッサコアにロードしてもよい。
データ記憶装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、AABBスロットの機能(features)、特徴、及び属性を含んでもよい。
ホストコマンドは、RTLビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含んでもよい。
ファームウェアドライバがロードされたプロセッサコアは、遠隔アプリケーションに依存しない(agnostic)アプリケーションプログラムインターフェース(application program interface:API)呼び出し(call)のセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにアクセスする。
一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(look−up table:LUT)、ランダムアクセスメモリ(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であってもよい。
遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージをブリッジ装置に伝送し、構成コントローラは、AABBスロットにダウンロードされたRTLビットストリームを廃棄して第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを実行するために第2ファームウェアドライバイメージをプロセッサコアにロードする。
ブリッジ装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、前記AABBスロットの機能、特徴、及び属性を含んでもよい。
ホストコマンドは、RTLビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含んでもよい。
ファームウェアドライバがロードされた前記プロセッサコアは、遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース(API)呼び出しのセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにデータ記憶インターフェースを介してアクセスしてもよい。
一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(LUT)、ランダムアクセスメモリ(RAM)ブロック、ハードマクロ、及びクロック及びリセット信号を含んでもよい。
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース(AXI)、ダブルデータレート(DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(PCIe)インターフェース、及びイーサネットインターフェースを含んでもよい。
尚、本発明は、上述の実施形態に限られるものではない。NVMe及び(NVMe−oF)装置のようなデータ記憶装置内におけるインストレージ加速を提供するためのシステム及び方法である本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
本発明は、データ記憶装置におけるインストレージ加速を提供してデータ処理を高速化するため、非揮発性メモリなどを用いるソリッドステートドライブ(SSD)などのようなデータ記憶システムに好適に使用される。
100 データ記憶システム
110 ホスト(コンピュータ)
111 アプリケーション
112 OS/ファイルシステム
113 (NVMe−oF)ドライバ
150 イーサネット
160 シャーシ
161 イーサネットスイッチ
162 ベースボードマネジメントコントローラ(BMC)
163 PCIeスイッチ
164 マネジメントインターフェース
165 ミッドプレーン
170(170a〜170n) eSSD
200 (NVMe−oF)ブリッジ装置
211 隣接ストレージコンピュート(NSC)プロセッサ
212 システムメモリ
213 コマンドパーサー
214 コマンド分類器
215 コマンドプロセッサ
216 PSQモジュール
217 PAPPモジュール
218 (NVMe−oF)応答機
219 PCIeCEパーサー
220 PCIe−サイドコマンドコンプリーションキュー(PCQ)モジュール
231 特殊コマンドユニット(SCU)
232 ファブリックコマンドユニット(FCU)
233 アドミンコマンドユニット(ACU)
234 リードコマンドユニット(RCU)
235 ライトコマンドユニット(WCU)
400 ブリッジ装置
411 プロセッサ
417 PCIeインターフェース
418 (選択的)イーサネットインターフェース
421 PCIeエンドポイント(EP)
422 ブラックボックス(BB)再構成コントローラ
423 データバッファ
424 NVMe/(NVMe−oF)ホストインターフェース
425 再構成型ロジックブロック
430 システムバス
431(431a〜431n) ブラックボックス(BB)ドライバ
432 RTLブラックボックス
432a〜432n RTLブラックボックスのパーティション
450 バックエンドSSD

Claims (20)

  1. データ記憶装置であって、
    データ記憶媒体と、
    複数のプロセッサコアを含むプロセッサと、
    再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black−box:以下、AABBと記す)スロットと、
    遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register−transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
    前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード(load)する構成コントローラと、を有し、
    前記ファームウェアドライバがロードされた前記プロセッサコアは、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理(process)するために、前記遠隔アプリケーションのデータ加速プロセスを実行(run)することを特徴とするデータ記憶装置。
  2. 前記データ記憶装置は、非揮発性メモリエクスプレス(nonvolatile memory express:以下、NVMeと記す)ソリッドステートドライブ(以下、SSDと記す)であることを特徴とする請求項1に記載のデータ記憶装置。
  3. 前記データ記憶装置は、NVMeオーバーファブリックス(NVMe over fabrics:以下、(NVMe−oF)と記す)SSDであり、前記ホストインターフェースはイーサネットインターフェースであることを特徴とする請求項1に記載のデータ記憶装置。
  4. 前記遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージを前記データ記憶装置に伝送し、
    前記構成コントローラは、前記AABBスロットにダウンロードされた前記RTLビットストリームを廃棄して前記第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び前記第2ファームウェアドライバイメージを用いて第2データ加速プロセスを実行するために、前記第2ファームウェアを前記プロセッサコアにロードすることを特徴とする請求項1に記載のデータ記憶装置。
  5. 前記データ記憶装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
    前記ディスカバリー情報は、前記AABBスロットの機能(features)、特徴、及び属性を含むことを特徴とする請求項1に記載のデータ記憶装置。
  6. 前記ホストコマンドは、前記RTLビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項1に記載のデータ記憶装置。
  7. 前記ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、
    前記AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含むことを特徴とする請求項1に記載のデータ記憶装置。
  8. 前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しない(agnostic)アプリケーションプログラムインターフェース(以下、APIと記す)呼び出し(call)のセットを用いて、前記遠隔アプリケーションの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データにアクセスすることを特徴とする請求項1に記載のデータ記憶装置。
  9. 一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(look−up table:以下、LUTと記す)、ランダムアクセスメモリ(以下、RAMと記す)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項1に記載のデータ記憶装置。
  10. 一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:以下、AXIと記す)、ダブルデータレート(double data rate:以下、DDRと記す)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:以下、PCIeと記す)インターフェース、及びイーサネット(登録商標)インターフェースを含むことを特徴とする請求項1に記載のデータ記憶装置。
  11. データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、
    複数のプロセッサコアを含むプロセッサと、
    再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black−box:以下、AABBと記す)スロットと、
    遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register−transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
    前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、
    前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データを処理(process)するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とするブリッジ装置。
  12. 前記データ記憶インターフェースは、NVMeインターフェースであることを特徴とする請求項11に記載のブリッジ装置。
  13. 前記ホストインターフェースは、イーサネットインターフェースであり、
    前記データ記憶装置は、(NVMe−oF)SSDであることを特徴とする請求項11に記載のブリッジ装置。
  14. 前記遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージを前記ブリッジ装置に伝送し、
    前記構成コントローラは、前記AABBスロットにダウンロードされた前記RTLビットストリームを廃棄して前記第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び前記第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを実行するために前記第2ファームウェアドライバイメージを前記プロセッサコアにロードすることを特徴とする請求項11に記載のブリッジ装置。
  15. 前記ブリッジ装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
    前記ディスカバリー情報は、前記AABBスロットの機能(features)、特徴、及び属性を含むことを特徴とする請求項11に記載のブリッジ装置。

  16. 前記ホストコマンドは、前記RTLビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項11に記載のブリッジ装置。
  17. 前記ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、
    前記AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含むことを特徴とする請求項11に記載のブリッジ装置。
  18. 前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース(API)呼び出しのセットを用いて、前記遠隔アプリケーソンの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データに前記データ記憶インターフェースを介してアクセスすることを特徴とする請求項11に記載のブリッジ装置。
  19. 一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(LUT)、ランダムアクセスメモリ(RAM)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項11に記載のブリッジ装置。
  20. 一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース(AXT)、ダブルデータレート(DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(PCIe)インターフェース、及びイーサネットインターフェースを含むことを特徴とする請求項11に記載のブリッジ装置。
JP2018189015A 2017-10-11 2018-10-04 データ記憶装置及びブリッジ装置 Active JP7137430B2 (ja)

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 2018-03-14
US15/921,400 US10719474B2 (en) 2017-10-11 2018-03-14 System and method for providing in-storage acceleration (ISA) in data storage devices

Publications (2)

Publication Number Publication Date
JP2019075109A true JP2019075109A (ja) 2019-05-16
JP7137430B2 JP7137430B2 (ja) 2022-09-14

Family

ID=65993255

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2018179913A Active JP7141902B2 (ja) 2017-10-11 2018-09-26 ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法
JP2018189015A Active JP7137430B2 (ja) 2017-10-11 2018-10-04 データ記憶装置及びブリッジ装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2018179913A Active JP7141902B2 (ja) 2017-10-11 2018-09-26 ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法

Country Status (5)

Country Link
US (4) US10719474B2 (ja)
JP (2) JP7141902B2 (ja)
KR (2) KR102513924B1 (ja)
CN (2) CN109656843A (ja)
TW (2) TWI780168B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115495389A (zh) * 2021-06-17 2022-12-20 三星电子株式会社 存储控制器、计算存储装置以及计算存储装置的操作方法
JP2023001076A (ja) * 2021-06-17 2023-01-04 三星電子株式会社 ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法

Families Citing this family (39)

* 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
CN113767360A (zh) * 2019-03-14 2021-12-07 马维尔亚洲私人有限公司 在驱动器级别处对非易失性存储器联网消息的终止
WO2020186270A1 (en) * 2019-03-14 2020-09-17 Marvell Asia Pte, Ltd. Ethernet enabled solid state drive (ssd)
EP3939237B1 (en) 2019-03-14 2024-05-15 Marvell Asia Pte, Ltd. Transferring data between solid state drives (ssds) via a connection between the ssds
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 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
EP3959860A4 (en) * 2019-04-25 2023-01-25 Liqid Inc. MULTI-PROTOCOL COMMUNICATION CONTROL FOR TISSUE
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
CN112882966A (zh) * 2020-03-24 2021-06-01 威盛电子股份有限公司 运算装置
TWI811620B (zh) * 2020-03-24 2023-08-11 威盛電子股份有限公司 運算裝置與資料處理方法
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
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
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286363A1 (en) * 2016-04-04 2017-10-05 Marvell World Trade Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
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 (66)

* 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
US8429394B1 (en) * 2008-03-12 2013-04-23 Stone Ridge Technology Reconfigurable computing system that shares processing between a host processor and one or more reconfigurable hardware modules
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
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
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
US9154137B2 (en) * 2013-07-04 2015-10-06 Altera Corporation Non-intrusive monitoring and control of integrated circuits
CN110275840B (zh) * 2014-02-23 2024-03-15 拉姆伯斯公司 在存储器接口上的分布式过程执行和文件系统
EP3117583A4 (en) 2014-03-08 2017-11-01 Diamanti, 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
EP3158455B1 (en) * 2014-06-23 2020-03-18 Liqid Inc. Modular switched fabric for data storage systems
US9959203B2 (en) * 2014-06-23 2018-05-01 Google Llc Managing storage devices
US9846660B2 (en) * 2014-11-12 2017-12-19 Xilinx, Inc. Heterogeneous multiprocessor platform targeting programmable integrated circuits
US9218443B1 (en) * 2014-11-12 2015-12-22 Xilinx, Inc. Heterogeneous multiprocessor program compilation targeting programmable integrated circuits
CN107111663B (zh) * 2014-11-12 2021-01-08 赛灵思公司 目标为可编程集成电路的异构型多处理器程序编译
US9977734B2 (en) * 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
US10467176B2 (en) 2015-02-25 2019-11-05 Hitachi, Ltd. Information processing apparatus
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
US10402122B2 (en) * 2015-05-29 2019-09-03 Pure Storage, Inc. Transferring encoded data slices in a dispersed storage network
US9891935B2 (en) * 2015-08-13 2018-02-13 Altera Corporation Application-based dynamic heterogeneous many-core systems and methods
WO2017040706A1 (en) * 2015-09-02 2017-03-09 Cnex Labs, Inc. Nvm express controller for remote access of memory and i/o over ethernet-type networks
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
US9690894B1 (en) * 2015-11-02 2017-06-27 Altera Corporation Safety features for high level design
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
KR101923661B1 (ko) * 2016-04-04 2018-11-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US20170323305A1 (en) * 2016-05-03 2017-11-09 Anantha Pradeep Mechanism for securing legal interactions
US10387167B2 (en) * 2016-05-26 2019-08-20 CloudBolt Software Inc. Action-based computing resource configuration
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
US10956241B1 (en) * 2017-12-20 2021-03-23 Xilinx, Inc. Unified container for hardware and software binaries
US10761951B2 (en) * 2017-12-28 2020-09-01 Intel Corporation FPGA based functional safety control logic (FFSCL)
WO2020168522A1 (zh) * 2019-02-21 2020-08-27 华为技术有限公司 一种片上系统、访问命令的路由方法及终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170286363A1 (en) * 2016-04-04 2017-10-05 Marvell World Trade Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
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 日本電気株式会社 ストレージ装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115495389A (zh) * 2021-06-17 2022-12-20 三星电子株式会社 存储控制器、计算存储装置以及计算存储装置的操作方法
JP2023001076A (ja) * 2021-06-17 2023-01-04 三星電子株式会社 ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法
JP7247405B2 (ja) 2021-06-17 2023-03-28 三星電子株式会社 ストレージコントローラ、計算ストレージ装置及び計算ストレージ装置の動作方法
US11645011B2 (en) 2021-06-17 2023-05-09 Samsung Electronics Co., Ltd. Storage controller, computational storage device, and operational method of computational storage device
CN115495389B (zh) * 2021-06-17 2024-03-22 三星电子株式会社 存储控制器、计算存储装置以及计算存储装置的操作方法

Also Published As

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

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
CN115480869A (zh) 微服务架构
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
US20140337559A1 (en) Pass-through converged network adaptor (cna) using existing ethernet switching device
CA3167334C (en) Zero packet loss upgrade of an io device
US20230185732A1 (en) Transparent encryption
US11394700B2 (en) Proxy service through hardware acceleration using an IO device
US11593136B2 (en) Resource fairness enforcement in shared IO interfaces
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
US20220166718A1 (en) Systems and methods to prevent packet reordering when establishing a flow entry
WO2019190859A1 (en) Efficient and reliable message channel between a host system and an integrated circuit acceleration system
US20220147502A1 (en) Method to perform hash table lookup for keys wider than data path size
US11003618B1 (en) Out-of-band interconnect control and isolation
WO2023184513A1 (en) Reconfigurable packet direct memory access to support multiple descriptor ring specifications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220726

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220902

R150 Certificate of patent or registration of utility model

Ref document number: 7137430

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150