JP2019075104A - ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 - Google Patents

ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 Download PDF

Info

Publication number
JP2019075104A
JP2019075104A JP2018179913A JP2018179913A JP2019075104A JP 2019075104 A JP2019075104 A JP 2019075104A JP 2018179913 A JP2018179913 A JP 2018179913A JP 2018179913 A JP2018179913 A JP 2018179913A JP 2019075104 A JP2019075104 A JP 2019075104A
Authority
JP
Japan
Prior art keywords
instruction
nvme
instructions
data
bridge device
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
JP2018179913A
Other languages
English (en)
Other versions
JP2019075104A5 (ja
JP7141902B2 (ja
Inventor
フレッド ウォーリー
Fred WORLEY
フレッド ウォーリー
ラムダス カチャレ
Ramdas Kachare
ラムダス カチャレ
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 JP2019075104A publication Critical patent/JP2019075104A/ja
Publication of JP2019075104A5 publication Critical patent/JP2019075104A5/ja
Application granted granted Critical
Publication of JP7141902B2 publication Critical patent/JP7141902B2/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
    • 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
    • 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

Abstract

【課題】ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法を提供する。【解決手段】ブリッジ装置200は、ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、データストレージ装置に第2命令セットを提供する第2インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。【選択図】図2

Description

本発明は、データストレージシステムに係り、より詳細には、ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法に関する。
ソリッドステートドライブ(Solid State Drive:SSD)は、急速にハードディスクドライブ(Hard Disk Drive:HDD)等の従来のストレージ装置に取って代わってきており、最近のデータセンターインフラの主なストレージ要素として急浮上している。SSDは、低遅延性、高いデータ読み取り/書き込み処理量、及び高信頼性を有するユーザーデータの永久ストレージを提供する。不揮発性メモリエクスプレスオーバーファブリック(Non−volatile Memory express over fabrics:NVMe−oF)は、イーサネット(登録商標)(Ethernet(登録商標))、光チャンネル(Fibre Channel)、インフィニバンド(Infiniband)等のファブリックネットワーク(Fabric Network)を介して、数百から数千個のSSDを連結させる新技術である。
NVMe−oFプロトコルは、構築されたファブリックネットワークを介して、数多くのNVMe SSDを遠隔ホストに連結させる遠隔直結ストレージ(remote Direct−Attached Storage:rDAS)を可能にする。また、NVMe−oFプロトコルは、遠隔ダイレクトメモリアクセス(Remote Direct Memory Access:RDMA)を支援し、ネットワークを介して、NVMe命令、データ、及び応答を伝達する高信頼性の伝送サービスを提供する。RDMAサービスを提供する伝送プロトコルの一例として、iWARP、RoCE v1、及びRoCE v2が挙げられる。
分離されたデータストレージ装置(Disaggregated Data Storage System)(例:NVMe−oF−互換SSD、本明細書において、NVMe−oF SSD又はeSSDとも簡単に指称する)を用いるデータストレージシステムは、ホストコンピュータで実行されるアプリケーションに大きなストレージ容量を提供できる。アプリケーションは、分離されたデータストレージ装置から大量のデータ(ビッグデータ)を収集して分析できる。
ビッグデータの処理規模は非常に大きいため、有意義なビッグデータマイニング(Mining)を行うためのインフラには、膨大な費用を投入しなければならず、大量のコンピューティング資源、大容量のシステムメモリ、及び高帯域幅ネットワークのみならず、ビッグデータを保存するための大容量の高性能データストレージ装置が必要となる。従って、ホストコンピュータからデータストレージ装置にデータ処理マイニングタスクの一部をオフロード(Offload)し、データストレージ装置からホストコンピュータへのデータの移動を最小化することが好ましい。
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法を提供することにある。
本発明の一実施形態によるブリッジ装置は、ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、データストレージ装置に第2命令セットを提供する第2インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。
本発明の他の実施形態による方法は、第1インタフェースを介してホストコンピュータで実行されるアプリケーションから第1命令セットを受信する段階と、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する段階と、第2インタフェースを介してデータストレージ装置に第2命令セットを提供する段階と、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、を有する。
具現及びイベントの組み合わせの多様な新規細部事項を含む前述の好ましい特徴やその他の好ましい特徴は、添付図面を参照してより詳細に説明し、請求範囲で提示する。本明細書で説明する特定のシステム及び方法は、例示として示し、これに限定されない。本明細書で説明する原理及び特徴は、本発明の範囲から逸脱することなく、数多くの多様な実施形態から採択できるということが本発明の技術分野に属する通常の技術者にとって当然である。
本発明の実施形態によるブリッジ装置を用いたストレージ隣接演算方法によれば、ホストコンピュータからストレージ装置にデータ処理及びマイニングタスクをオフロードすることにより、分離されたデータストレージシステムにおいて、ストレージ装置からホストコンピュータへのデータの移動を最小化できる。
本発明の一実施形態によるデータストレージシステムの例示的なブロック図である。 本発明の一実施形態によるNVMe−oFブリッジ装置の例示的なブロック図である。 本発明の一実施形態による特殊命令部の例示的なブロック図である。 本発明の一実施形態による例示的な命令識別子の変換方法を示す。 本発明の一実施形態による管理者提出キューと完了キューとの共有を示すブロック図である。 本発明の一実施形態による遠隔ホスト及びストレージ隣接演算プロセッサ間の入/出力提出キューの共有を示すブロック図である。 本発明の一実施形態によるブリッジ装置内のローカルデータの移動を示すブロック図である。
本明細書の一部として含まれた添付図面は、現時点における好ましい実施形態を示し、前述の全般的な説明や以下の好ましい実施形態に関する詳細な説明と共に、本明細書に記載される原理を説明し教示する。
図面は、必ずしも一定の割合で示しているわけではなく、図面全般に亘って同様の構造又は機能部の構成要素は、説明のために同一の参照番号で示している。また、図面は、単に本明細書に説明している多様な実施形態の説明を容易にするためのものであって、本明細書に開示する教示の全ての様相を示すものではなく、請求項の範囲を制限するものでもない。
本明細書に開示するそれぞれの特徴や教示は、ストレージ隣接演算を提供するブリッジ装置(Bridge Device)を提供するために、個別にまたは他の特徴や教示と共に利用できる。その他の多くの特徴や教示を個別にまたは結合して利用する代表的な例示を添付図面を参照してより詳細に説明する。このような詳細な説明は、本教示の様相を実施するための細部事項を本発明の技術分野に属する通常の技術者に教示するためのものであり、請求項の範囲を制限するものではない。従って、詳細な説明に開示する特徴の組み合わせは、最も広い意味の教示を実施するにあたって必須ではなく、代わりに、本教示の特に代表的な例示を説明するために教示するものである。
以下の説明では、単に説明する目的で特定の用語を記載しており、本発明の完全な理解を助ける。しかし、本発明の技術分野に属する通常の技術者が本発明の教示を実施するために、このような特定の細部事項を必要としないことは明らかである。
本明細書の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号の形式で提供する。このようなアルゴリズム形式の説明や表現は、データ処理の技術分野における通常の技術者がその研究内容を他の通常の技術者に効果的に伝達するために用いる。アルゴリズムは、一般に、目標とする結果を導く一貫した一連の段階として見なされる。段階は、物理量を物理的に操作することを必要とする。通常、必須ではないが、このような物理量は、保存、伝送、結合、比較、及びその他の操作可能な電気又は磁気信号の形態を有する。主に共通して用いるという理由から、このような信号がビット、値、要素、記号、文字、用語、数字等と指称することが時には便利であるということは既に知られている。
一方、このような用語やこれと類似する用語は何れも、適切な物理量と関連しており、単に便宜のために、このような物理量に名付けたものであることに留意すべきである。以下の説明で明らかに別途具体的に言及しない限り、明細書全般において、「処理」、「演算」、「計算」、「判定」、「表示」等の用語を利用する説明は、コンピュータシステムのレジスター及びメモリ内の(電子的)物理量として示したデータを、コンピュータシステムのメモリ/レジスター又は他の情報保存/伝送/表示装置内の物理量として同様に示した他のデータに操作及び変換する、コンピュータシステム又はこれと類似する電子コンピューティング装置の動作及びプロセスを言及するものである。
また、代表的な例示における多様な特徴、及び従属項は、本教示のさらなる有用な実施形態を提供するために、具体的且つ明示的に挙げていない方法によっても結合する。また、請求する技術的思想を限定するための目的はもちろん、本来の開示の目的のために、全ての値の範囲又はエンティティー群の表示は、あり得る全ての中間値又は中間エンティティーを開示するという点にも特に留意すべきである。なお、図面に示す構成要素の大きさ及び形態は、本教示がどのように実施されるかに関して理解を助けるために構成したものであり、例示として示す大きさ及び形態に限定されるものではない。
本発明は、分離されたデータストレージシステムにおいて、ストレージ装置からホストコンピュータへのデータの移動を最小化するために、ホストコンピュータからストレージ装置にデータ処理及びマイニングタスクをオフロードするシステム及び方法について説明する。本発明の一実施形態によると、本発明のシステム及び方法は、ストレージ装置に隣接して又はストレージ装置内でデータを処理できるようにし、これは、それぞれストレージ隣接演算(Near−Storage Compute:NSC)及びストレージ内部促進(In−Storage Acceleration:ISA)と指称する。本システム及び方法は、NVMe−oF標準を用いる分離されたストレージ装置に好適である。また、本発明のシステム及び方法は、直結NVMe対NVMe(Direct Attached NVMe−toNVMe)ブリッジ装置において用いることができる。ホストコンピュータは、NVMe−oF SSDに一部のデータマイニングタスクをオフロードし、NVMe−oFネットワークを介したホストコンピュータとNVMe−oF SSD間のデータの移動を減らし、これにより、エネルギー及びネットワークのインフラコストを削減できる。
図1は、本発明の一実施形態によるデータストレージシステムの例示的なブロック図である。データストレージシステム100は、ホスト110と、1つ以上のNVMe−oF−互換イーサネットSSD(eSSD)を含むシャーシ(Chassis)160(「eSSDシャーシ」とも指称する)と、を有する。例えば、シャーシ160は、24個又は48個のeSSDを有する。シャーシ160内のeSSDは、それぞれeSSD170a乃至170n(まとめてeSSD170と指称する)として表示する。ホスト110は、アプリケーション111と、オペレーティングシステム(OS)とファイルシステム(FS)112と、NVMe−oFドライバー113と、を有する。ホスト110のイニシエータ(Initiator)(例:アプリケーション111)は、NVMe−oFドライバー113を用いてイーサネット150を介してeSSD170とNVMe−oFとの連結を達成可能である。シャーシ160は、イーサネットスイッチ161と、ベースボード管理コントローラ(Baseboard Management Controller:BMC)162と、PCIe(Peripheral Component Interconnect express)スイッチ163と、を有する。イーサネットスイッチ161は、ミッドプレーン(Midplane)165を介してeSSD170にイーサネット連結を提供し、PCIeスイッチ163は、ミッドプレーン165を介してeSSD170に管理者インタフェース164を提供する。BMC162は、システム管理者による所定の命令(語)に従って、eSSD170をプログラミングする。
イーサネットスイッチ161は、ホスト110とeSSD170間のネットワーク連結性を提供する。イーサネットスイッチ161は、1つ以上のホストに接続するための大容量(例:100Gbps)のアップリンクを有する。イーサネットスイッチ161は、eSSD170に接続するための低容量(例:25Gbps)の多重ダウンリンクも有する。例えば、イーサネットスイッチ161は、12個の100Gbpsのアップリンクと、24個又は48個の25Gbpsのダウンリンクと、を有する。イーサネットスイッチ161は、BMC162に対する専用の構成/管理ポートを有する。
BMC162は、イーサネットスイッチ161と、PCIeスイッチ163と、eSSD170とを含むシャーシ160の内部の構成要素を管理する。BMC162は、PCIe及び/又はシステム管理のためのシステム管理バス(System Management Bus:SMBus)インタフェースを支援する。BMC162は、eSSD170を設定し、イーサネットスイッチ161をプログラミングする。
サーバベースのオールフラッシュアレイ(All−Flash Array:AFA)と同様に、eSSD170は、複数のeSSD170と、外部のホストとeSSDとを連結させるネットワークスイッチ(即ち、イーサネットスイッチ161)と、これらを管理するBMC162と、を含むサーバのない構造物(即ち、シャーシ160)に共に収容される。BMC162は、eSSD装置に対するブート(boot)及び制御経路を処理する。完全なx86CPUと異なり、BMC162は、CPUが処理する作業を全て行うのではなく、最小限の構造管理機能を行う。BMC162は、システム管理バス又はPCIeバスを介して、連結性、状態、温度、ログ、及びエラーに関して、連結されたeSSD170及び関連ハードウェアの状態を持続的に点検する。
eSSD170は、大容量の高性能なデータストレージソリューションを提供する。NVMe−oFプロトコルは、数百から数千個の分離されたeSSD170がホストコンピュータ110で実行されるアプリケーション111に遠隔直結(rDAS)方式で接続することを可能とする。本発明のシステム及び方法は、分離されたeSSDに収集されて保存された大量のデータの処理や移動を容易にする。従来のホストコンピュータを用いる場合、このようなデータの処理は非常にコストがかかる。
ホスト110で実行されるアプリケーション111は、eSSD170のように分離されたデータストレージ装置に保存されたデータをネットワーク(例:イーサネット150)を介して引き出して(fetch)処理し、データ処理の結果を再度データストレージ装置に保存することにより、機械学習(Machine Learning:ML)等のプロセスを行う。データの引き出し、処理、及び保存の過程を含むこのようなプロセスは、ホストコンピュータのエネルギー、演算能力、ネットワーク、及びデータストレージ資源を過度に消費する極めて非効率的な過程である。また、このようなプロセスは、ホストコンピュータの演算及びメモリ資源において高コストをもたらす。
本発明のシステム及び方法は、ストレージ隣接演算又はストレージ内部促進を用いて、バックグラウンドデータの処理を可能にする。ストレージ隣接演算及びストレージ内部促進は、大量のデータがバックグラウンドで効率的な方法により処理できるようにする。一実施形態によると、処理すべきデータが保存されたデータストレージ装置に連結したブリッジ装置は、連結したデータストレージ装置に隣接するバックグラウンドデータ処理を容易にする。一実施形態において、ブリッジ装置は、データストレージ装置に統合される。他の実施形態において、ブリッジ装置は、データストレージ装置に連結した別途の装置である。「隣接」という用語は、本発明の範囲を逸脱することなく、データ処理が、別途の装置だけでなく、データストレージ装置自体でも行われることを意味すると理解すべきである。一部の実施形態において、「ストレージ隣接」及び「ストレージ内部」という用語は、本明細書において相互交換して用いることができる。
ブリッジ装置は、データストレージ装置に保存されたデータのストレージ隣接演算をアプリケーションに感知されない方式で具現する1つ以上のハードウェア構成要素を含む。ブリッジ装置は、NVMe−oF対NVMeブリッジ装置及びNVMe対NVMeブリッジ装置のうちの何れか1つである。NVMe−oF標準と互換可能なNVMe−oF対NVMeブリッジ装置は、ファブリックネットワークを介してNVMe−oF命令を受信し、バックエンド(Backend)データストレージ装置にPCIeインタフェースを提供する。NVMe標準と互換可能なNVMe対NVMeブリッジ装置は、PCIeバスを介してNVMe命令を受信し、データストレージ装置に隣接してデータ処理を行う。以下では、説明の便宜のために、データストレージ装置の例としてeSSDについて説明する。一方、本発明の範囲を逸脱することなく、他の種類のデータストレージ装置及び分離されたデータストレージシステムも使用可能であることは当然である。以下の例示において、eSSDは、ブリッジ装置とバックエンドSSDの両方を含む装置として説明するが、他の実施形態では、データストレージ装置(バックエンドSSD)が別途のブリッジ装置と連結してeSSDを構成するか、又はeSSDがブリッジ装置自体やブリッジ装置の隣接−演算機能を行う装置を指称する。
本発明のブリッジ装置は、SSDに対するホストコンピュータの一般的なデータアクセス動作に影響を与えることなく、バックエンドSSDに保存されたデータを引き出し、処理及び修正し、処理済みのデータを再度バックエンドSSDに保存する。一実施形態において、ブリッジ装置は、一対の入/出力(I/O)提出キュー(Submission Queue)及び完了キュー(Completion Queue) をメンテナンスし、一対の入/出力キュー(I/O Queue)を用いて、バックグラウンドモードでバックエンドSSDへのデータアクセスを行うシステムメモリを有する。ブリッジ装置は、ホストコンピュータから出力した命令と、ブリッジ装置のストレージ隣接プロセッサから発生した内部命令との両方を処理するために、入/出力提出キュー及び完了キューを共有する。また、ブリッジ装置のシステムメモリは、ホストコンピュータとストレージ隣接演算プロセッサ(NSC Processor)間で共有可能な管理者提出キューと完了キューとを含む一対の管理者キュー(Admin Queue)をメンテナンスする。
一実施形態によると、ブリッジ装置は、ストレージ隣接演算プロセッサがバックエンドSSDに保存されたデータへアクセスすることを許容するNVMe−oF対NVMe又はNVMe対NVMeプロトコル連結(Bridging)を用いる。機械学習アルゴリズム等の多様なプロセスは、ホストコンピュータにかかわらず、バックグラウンドモードでデータ処理を行うために、ホストコンピュータ又はブリッジ装置で実行する。機械学習アルゴリズムを実行するホストコンピュータは、ブリッジ装置の外部に配置可能であるが、ブリッジ装置を介して間接的にeSSDに保存されたデータにアクセスできる。一部の実施形態において、ブリッジ装置及び/又はホストコンピュータは、eSSDと同一のシャーシの異なるスロット(例:U.2スロット)に配置されるか、物理的にシャーシの外部に配置される。図面を参照して説明する以下の例示は、主にNVMe−oFブリッジ装置(「NVMe−oF対NVMeブリッジ装置」とも指称する)に関するものであるが、NVMe対NVMeブリッジ装置にも同様に適用可能である。
ブリッジ装置は、バックエンドSSDに伝送されるホスト命令(例:NVMe−oF命令)を受信するためのインタフェースを提供する。ブリッジ装置は、受信したホスト命令識別子(Command Identifier:CID)をローカルタグ(Local Tag)にマッピングし、処理すべきデータを保存するバックエンドSSDに対する新たな命令識別子を含むNVMe命令を生成する。バックエンドSSDは、NVMe命令に対応する完了エントリー(Completion Entry:CE)を生成してブリッジ装置に送信する。その後、ブリッジ装置は、完了エントリーをパーシングし、完了エントリーをブリッジ装置のストレージ隣接演算プロセッサに知能的に伝達する。
ホストの開始命令を中継(Bridging)するのとは別に、ブリッジ装置のストレージ隣接演算プロセッサは、ホストコンピュータにかかわらず、バックエンドSSDに対するNVMe命令を発生させる。ブリッジ装置は、共有の入/出力キュー及び管理者キューを用いて、ホストコンピュータとストレージ隣接演算プロセッサの両方の入/出力動作を互いに干渉することなく同時に且つ能動的に処理する。ホスト命令を中継する機能を維持しつつ、バックエンドSSDに保存されたデータにアクセスするストレージ隣接演算プロセッサの機能は、機械学習アプリケーションをストレージ隣接演算装置(即ち、ブリッジ装置)で実行するのに好適である。機械学習アプリケーションにおいて、ストレージ隣接演算プロセッサは、エネルギー、資源、及びコストの側面から効率的なデータ処理を提供する。
NVMe−oFブリッジ装置は、一方では、遠隔イニシエータ(例:ホストコンピュータで実行される機械学習アプリケーション)にNVMe−oFインタフェースを提供し、他方では、バックエンドSSDに標準PCIeベースのNVMeインタフェースを提供する。遠隔イニシエータは、NVMe−oFインタフェースを介して、イーサネットを経由してNVMe−oFブリッジ装置に連結する。NVMe−oFブリッジ装置は、バックエンドSSDとの連結のために、NVMe−oFプロトコルをNVMeプロトコルに変換する。
反面、NVMeブリッジ装置は、遠隔イニシエータ及びバックエンドSSDに標準PCIeインタフェースを提供する。遠隔イニシエータは、PCIeバスを介してNVMeブリッジ装置に連結する。NVMeブリッジ装置は、バックエンドSSDに、NVMe命令がホストコンピュータではなく、NVMeブリッジ装置から出力されたかのように見えるように、NVMeホスト命令を異なる命令識別子が含まれた他のNVMe命令に変換できる。
一実施形態によると、ブリッジ装置のNVMe−oF対NVMe又はNVMe対NVMeの連結機能は、フィールド−プログラマブルゲートアレイ(Field−Programmable Gate Array:FPGA)又は注文型集積回路(Application−Specific Integrated Chip:ASIC)で具現する。代案として、連結機能は、ファームウェア又はソフトウェアプログラムにより具現する。
図2は、本発明の一実施形態によるNVMe−oFブリッジ装置の例示的なブロック図である。NVMe−oFブリッジ装置200は、ストレージ隣接演算プロセッサ211と、システムメモリ212と、命令パーサー213と、命令分類器214と、命令プロセッサ215と、PCIe側命令提出キュー(以下、「PSQ」)モジュール216と、PCIeアプリケーション(以下、「PAPP」)/ルートコンプレックス(Root Complex)モジュール217と、NVMe−oF応答器218と、PCIe完了エントリーパーサー219と、PCIe側命令完了キュー(以下、「PCQ」)モジュール220と、を有する。NVMe−oFブリッジ装置200は、PCIeバスを介してバックエンドSSD250に連結される。ホストコンピュータで実行される遠隔イニシエータは、ファブリックネットワーク(本例示ではイーサネット)を介して、NVMe−oF命令をバックエンドSSD250に送信する。
NVMe−oFブリッジ装置200の命令パーサー213は、バックエンドSSD250に伝送されるNVMe−oF命令をインターセプトしてパーシングし、パーシングしたNVMe−oF命令を命令分類器214に送信する。例えば、命令パーサー213は、命令演算符号(Opcode:OPC)、命令識別子(CID)、名称空間識別子(Namespace Identifier:NSID)、論理ブロックの個数(Number of Logical Blocks:NLB)、及び開始論理ブロックアドレス(Start Logical Block Address:SLBA)を含むが、これに限定されない多様な命令を抽出してパーシングする。命令分類器214は、パーシングしたNVMe−oF命令を異なるグループに分類し、分類したNVMe−oF命令を命令プロセッサ215に送信する。例えば、命令分類器214は、管理者命令、ファブリック命令、読み取り命令、書き込み命令、及び特殊命令を分類する。NVMe−oF命令のうちの異なる命令又はグループは、命令プロセッサ215の専用命令処理部を用いて処理する。例えば、命令プロセッサ215は、特殊命令部(Special Command Unit:SCU)231と、ファブリック命令部(Fabrics Command Unit: FCU)232と、管理者命令部(Admin Command Unit:ACU)233と、書き込み命令部(Write Command Unit:WCU)234と、読み取り命令部(Read Command Unit:RCU)235と、を有する。
このような各命令処理部231乃至235は、NVMe−oF命令をNVMe命令に変換してPSQモジュール216に送る。一実施形態によると、PSQモジュール216は、命令提出キューを具現し、活性(Active)提出キューに関するヘッド及びテイルポインタをメンテナンスする。PSQモジュール216は、活性提出キューを感知して、提出キューが満たされているか、又は空いている状態であることを示す条件フラグを生成する。NVMe命令が提出キューに挿入される場合、PSQモジュール216は、ドアベル(Doorbell)イベント(提出キュー−ドアベル)を生成して、PAPPモジュール217を介してバックエンドSSD250に送信する。PAPPモジュール217は、PCIeバスを介してドアベルイベントを送信するよう、バックエンドSSD250に対するPCIe伝送を具現する。PAPPモジュール217は、NVMe−oFブリッジ装置200によって求められる設定の読み取り(Config Read)、設定の書き込み(Config Write)、メモリの書き込み(Memory Write)、及びメモリの読み取り(Memory Read)を含む標準PCIeトランザクション命令を支援する。また、PAPPモジュール217は、NVMe−oFブリッジ装置200のPCIeエンドポイントによって求められるPCIeメモリ読み取り及びメモリ書き込みトランザクションを支援する。言い換えれば、PAPPモジュール217は、NVMe−oFブリッジ装置200のPCIeルートコンプレックス機能を具現及び支援して、NVMe−oFブリッジ装置200をPCIeルートコンプレックス装置とする。
PCQモジュール220は、バックエンドSSD250に関する命令完了キューを具現する。バックエンドSSD250は、処理する各々のNVMe命令に対する命令完了エントリーを書き込む。一般に、命令提出キューと命令完了キューは、互いに一対一でマッピングされる。PCIe完了エントリーパーサー219は、PCQモジュール220から受信した完了エントリーをパーシングし解釈する。PCIe完了エントリーパーサー219は、パーシングした完了エントリーを、対応するNVMe命令を生成した適切な各命令処理部231乃至235に伝達する。適切な各命令処理部231乃至235は、PCIe完了エントリーパーサー219から受信したPCIe完了エントリー(又はNVMe完了エントリー)に対応するNVMe−oF完了エントリーを生成し、NVMe−oFインタフェース(例:イーサネット)を介して、遠隔イニシエータに再度NVMe−oF完了エントリーを出力するNVMe−oF応答器218にNVMe−oF完了エントリーを伝達する。NVMe−oF完了エントリーは、読み取りデータ又は書き込みデータが遠隔イニシエータに伝送された後に伝達される。NVMe−oF命令中継の一部として、各命令処理部231乃至235は、バックエンドSSD250と遠隔イニシエータとの間のデータ伝送を容易にする。
バックエンドSSD250は、ドアベルイベントに応答して、PSQモジュール216から受信したNVMe命令を引き出して実行する。命令実行の一部として、バックエンドSSD250はデータ伝送を行う。このようなデータは、NVMe−oFブリッジ装置200で利用可能なシステムメモリ212又はオンチップ(On−chip)若しくはオフチップ(Off−chip)メモリに伝送されるか、又はこれから伝送される。
図3は、本発明の一実施形態による特殊命令部231の例示的なブロック図である。特殊命令部231は、バックエンドSSD250に特殊命令を出力するように、ストレージ隣接演算プロセッサ211とのインタフェースを具現する。ストレージ隣接プロセッサ211は、このようなインタフェースを用いてバックグラウンドでバックエンドSSD250からデータを引き出すか、バックエンドSSD250にデータ又は処理結果を書き込む。
ファブリック命令部232は、NVMe−oFプロトコルに対する命令のファブリックタイプを処理する。例えば、ファブリック命令には、Connect、Property Get、Property Set等が含まれるが、これに限定されない。管理者命令部233は、管理者命令を処理する。例えば、管理者命令には、Identify、Get Log Page等を含むが、これに限定されない。書き込み命令部234は、書き込み命令を処理する。
図3を参照すると、特殊命令部231は、インバウンド先入れ先出し(Inbound First Input First Output、以下「IBFIFO」)332と、アウトバウンド(Outbound:OB)先入れ先出し(以下「OBFIFO」)333と、NVMe命令バッファ334と、を有する。IBFIFO332及びOBFIFO333は、バックエンドSSD250に特殊命令を出力するために、ストレージ隣接演算プロセッサ211によって用いられる構造である。ストレージ隣接演算プロセッサ211は、NVMe命令を生成してメッセージにこれを挿入し、OBFIFO333に該当メッセージを書き込む。特殊命令部231は、メッセージを読み取り、NVMe命令をバックエンドSSD250に送信する。バックエンドSSD250が完了エントリーとして応答すると、特殊命令部231は、完了エントリーをメッセージに挿入し、該当メッセージをIBFIFO332に書き込む。ストレージ隣接演算プロセッサ211は、更なる演算のためにIBFIFO332から完了エントリーを読み取る。
図4は、本発明の一実施形態による例示的な命令識別子の変換方法を示す。ブリッジ装置は、16ビットの命令識別子(CID)401を含む入力命令(NVMe−oF又はNVMe命令の何れか1つ)を受信する。16ビットの命令識別子及び提出キューの番号は、活性命令(Active Command)を固有に識別する。所定の命令に対する完了エントリは、逆照会(Reverse Look−up)を通じて完了エントリーが対応するNVMe命令と正確に関連付けられるよう、同一の16ビットの命令識別子を含む。これに関しては以下で詳細に説明する。
NVMe−oFブリッジ装置の場合、NVMe−oFブリッジ装置は、NVMe−oF命令を受信し、NVMe−oF命令に対するコンテクストを生成し、ローカル命令タグ(「ローカルタグ」とも指称する)を記録する。一実施形態において、NVMe−oFブリッジ装置は、ルックアップテーブル(Lookup Table:LUT)402を照会し、受信した16ビットの命令識別子を12ビットのローカルタグ(Local_Tag)403にマッピングする。ルックアップテーブル402が全ていっぱいの場合、活性命令の個数をルックアップテーブル402の容量(2^12)に制限して、入力命令の実行を一時停止する。また、12ビットのローカルタグは、バックエンドSSDに出力されるNVMe命令の16ビットのNVMe命令識別子(NVMe CID)410の一部として用いられる。変換されたNVMe命令は、新たに構成された16ビットのNVMe命令識別子410を含む。一実施形態によると、NVMe命令識別子410は、2つのフィールド、即ち、4ビットの命令処理部識別子(CU_ID)404と、12ビットのローカルタグ(Local_Tag)405と、を有する。12ビットのローカルタグ405及び4ビットの命令処理部識別子404に分割されたフィールドは例示であるのみで、他の具現例では、本発明の範囲から逸脱することなく、異なるサイズに分割できることは当然である。本例示において、NVMe命令識別子410は、次のマッピング方式を用いて構成する。

NVMe CID[15:0]={CU_ID[3:0]、Local_Tag[11:0]}
命令処理部識別子(CU_ID)は、入力されるNVMe−oF命令を処理するブリッジ装置の命令処理部によって決定される。表1は、命令処理部識別子(CU_ID)に対する例示的な符号化方式を示す。
Figure 2019075104
NVMe命令識別子の12ビットのローカルタグは、本来のNVMe−oF命令に含まれたNVMe−oF命令識別子にマッピングすることに用いられる。特殊命令部231以外の命令処理部に関する12ビットのローカルタグは、次のように得られる。

Local_Tag[11:0]=LUT (NVMe−oF CID[15:0])

ルックアップテーブル(LUT)402は、16ビットのNVMe−oF命令識別子を12ビットのローカルタグにマッピングする。ルックアップテーブル(LUT)402は、命令分類器214によってメンテナンスされる動的エンティティーである。ホスト命令を受信すると、ルックアップテーブル(LUT)402のエントリーが割り当てられる。エントリーの12ビットのインデックスは、12ビットのローカルタグ(Local Tag)である。本来の16ビットの命令識別子は、対応するインデックスに保存される。命令が完了すると、ルックアップテーブル(LUT)402のエントリーは割り当て解除される。
特殊命令部231に関する12ビットのローカルタグは、次のように得られる。

Local_Tag[11:0]=LUT (NSC CID[15:0])

ここで、NSC CIDは、ストレージ隣接演算プロセッサが内部的に割り当てる命令識別子である。NSC CIDは、ストレージ隣接演算プロセッサによって出力された命令に含まれる16ビットの命令識別子の値を示す。ローカルタグ(Local Tag)を判定するための前述の数式は、ホスト又はストレージ隣接演算プロセッサから受信した命令の命令識別子を12ビットのローカルタグ(Local Tag)にマッピングすることに用いられる。
12ビットのローカルタグが照会されると、NVMe命令識別子の残りの4ビットの命令処理部識別子は、バックエンドSSD250から受信したNVMe完了エントリーが逆照会することを支援する。NVMe完了エントリーは、ブリッジ装置の処理部のうち、対応するNVMe命令を生成した処理部とNVMe命令識別子を関連付けることに用いられる。図2を参照すると、PCIe完了エントリーパーサー219は、PAPPモジュール217を介してバックエンドSSD250から受信したNVMe命令識別子から4ビットの命令処理部識別子を抽出し、該当完了エントリーの属する処理部がどれか判定する。受信したNVMe完了エントリーが適切な命令処理部に伝達されると、PCIe完了エントリーパーサー219は再度逆照会を行って、12ビットのローカルタグを本来のNVMe−oF命令識別子にマッピングする。特殊命令部231の場合、このような逆照会は、前述のNVMe−oF命令識別子の代わりに、ストレージ隣接演算命令識別子(NSC−CID)を用いる。
このようなNVMe−oF対NVMeマッピング(又はNVMe対NVMeマッピング)を利用して、NVMe−oFブリッジ装置200は、バックエンドSSD250にNVMe命令を出力する複数の命令処理部を支援する。例えば、NVMe−oFブリッジ装置200は、所定の提出キュー(SQ)(ローカルタグの12ビットの深さ)に対して、最大で4096(212)個の活性NVMe命令(即ち、キュー深さ)を支援する。特殊命令部231は、このような方法を用いて、ストレージ隣接演算プロセッサによる多様なNVMe命令をホスト命令と干渉することなく、バックエンドSSD250に出力する。例えば、ストレージ隣接演算プロセッサは、NVMe読み取り命令を出力することによってバックエンドSSDからデータチャンクを引き出し、引き出したデータを処理し、NVMe書き込み命令を出力することによってバックエンドSSDに再度処理結果を保存する。異なる大きさの命令処理部識別子とNVMe命令識別子のローカルタグの構成を使用し、このようなNVMe命令識別子の配列は、異なる最大のキュー深さを提供する。
図5は、本発明の一実施形態による管理者提出キューと完了キューとの共有を示すブロック図である。バックエンドSSDは、管理者提出キュー531と管理者完了キュー532とを含む管理者キューの対を本発明のブリッジ装置と共有する。管理者提出キュー531は、バックエンドSSDに管理者命令を出力することに用いられる。遠隔ホスト501で実行されるアプリケーションは、バックエンドSSDのデータストレージへのアクセスを必要とするデータ中心のアプリケーション(例:機械学習アプリケーション)である。NVMe−oFブリッジ装置のNVMe−oF対NVMe命令変換器521(例:図2におけるファブリック命令部232及び管理者命令部233)は、遠隔イニシエータから受信したNVMe−oF管理者命令をNVMe管理者命令に変換し、NVMe管理者命令を管理者提出キュー531(例:図2におけるPSQモジュール216)に挿入する。また、NVMe−oFブリッジ装置のストレージ隣接演算プロセッサ511は、管理者提出キュー531を介して、バックエンドSSDに管理者命令を出力する。
ファブリック命令部、管理者命令部、書き込み命令部、及び読み取り命令部等のそれぞれのNVMe−oF命令処理部は、固有の4ビットの命令処理部識別子(CU_ID)を有する。従って、同一の管理者提出キュー531を介して、ストレージ隣接演算プロセッサ511の管理者命令のみならず、NVMe−oFホストの管理者命令を出力することも可能である。ストレージ隣接演算プロセッサ511は、ホスト側から見える(Host−visible)ユーザーデータのデータ完全性に影響を与えないか、又はバックエンドSSDのデータ構造を制御しない管理者命令のみを出力すると仮定する。ストレージ隣接演算プロセッサ511は、ホストデータを読み取るか又は監視して、該プロセッサが有するデータを修正するのみである。一部の実施形態において、遠隔ホスト501及びストレージ隣接演算プロセッサ511は、データの同期化を通じて、バックエンドSSDに保存されたデータを共有する。
図6は、本発明の一実施形態による遠隔ホスト及びストレージ隣接演算プロセッサ間の入/出力提出キューの共有を示すブロック図である。図5の管理者提出キュー531と異なり、多くの入/出力提出キューが存在する。入/出力提出キューは、読み取り及び書き込み等のデータ命令を出力することに用いられる。入/出力命令は、遠隔イニシエータ及びバックエンドSSDにデータを移動させるか、又は遠隔イニシエータ及びバックエンドSSDからデータを移動させる。特殊命令部231は、異なる命令処理部識別子(CU_ID)の値を用いて、ホスト入/出力命令に対して用いているものと同一の入/出力提出キューにストレージ隣接演算プロセッサのための入/出力命令を挿入する。他の実施形態において、ストレージ隣接演算プロセッサ611から出力された入/出力命令を処理するために、ストレージ隣接演算プロセッサ専用の入/出力提出キューのセットを用いる。図6は、ストレージ隣接演算プロセッサ611と、遠隔イニシエータから出力された入/出力命令のために、2つの別の入/出力命令提出キュー及び完了キューを用いる例を示している。
何れの場合でも、PCIe完了エントリーパーサーは、命令処理部識別子(CU_ID)を用いて、バックエンドSSDから受信した完了エントリーをブリッジ装置の適切な命令処理部に伝送する。ストレージ隣接演算プロセッサ611は、ホストデータに修正を加えない入/出力命令を出力すると仮定する。主に、ストレージ隣接演算プロセッサ611は、ホスト601によって書き込まれたデータを読み取り、ローカル処理のために読み取りデータの処理と分析を行う。ストレージ隣接演算プロセッサ611によって生成された修正データ又は分析の結果は、ホスト601へのアクセスが可能又は不可能な別途のストレージ領域に書き込まれる。一実施形態において、ストレージ隣接演算プロセッサ611、及びホスト601で実行される遠隔イニシエータは、同一のデータとストレージ名称空間とを共有するために、高いレベルで同期化される。
図7は、本発明の一実施形態によるブリッジ装置内のローカルデータの移動を示すブロック図である。ブリッジ装置700は、書き込みデータバッファ751と読み取りデータバッファ752と、を有する。一実施形態によると、ブリッジ装置700のシステムメモリ(例:図3におけるシステムメモリ212)は、書き込みデータバッファ751と読み取りデータバッファ752と、を有する。
ストレージ隣接演算プロセッサ711は、バックグラウンドでSSDデータをスキャンし分析する。ストレージ隣接演算プロセッサ711は、周期的にバックエンドSSD750からユーザーデータを引き出して分析する。ストレージ隣接演算プロセッサ711は、修正されたデータ及び/又はデータ処理の結果を再度バックエンドSSD750に保存する。このような動作は、バックエンドSSD750へのデータの移動やバックエンドSSD750からのデータの移動を必要とする。ストレージ隣接演算NVMe命令は、このようなデータ伝送の細部事項を指定する。
一実施形態において、ストレージ隣接演算プロセッサ711は、NVMe命令が書き込み命令なのかそれとも読み取り命令なのかを示すために、ストレージ隣接演算NVMe命令演算符号を用いる。ストレージ隣接演算NVMe命令は、書き込みデータバッファ751又は読み取りデータバッファ752の関連論理ブロックアドレス(LBA)も示す。ストレージ隣接演算の書き込み命令において、データは、ブリッジ装置700のシステムメモリからバックエンドSSD750に移動する。ストレージ隣接演算の読み取り命令において、データは、バックエンドSSD750からブリッジ装置700のシステムメモリに移動する。ホスト命令のデータ伝送において、このような両方向のデータの移動が混ざることがないよう、書き込みデータバッファ751又は読み取りデータバッファ752内における別途のバッファアドレスのセットが用いられる。
ストレージ隣接演算プロセッサ711がバックエンドSSD750に保存されたデータを処理するために、ストレージ隣接演算NVMe命令を出力する場合、ストレージ隣接演算プロセッサ711は、まず、所望の大きさの読み取りデータバッファ752に空間を割り当てる。その後、ストレージ隣接演算プロセッサ711は、割り当てられた読み取りバッファ空間のポインターを用いて、NVMe読み取り命令を生成する。ストレージ隣接演算プロセッサ711は、バックエンドSSD750に保存されたデータを読み取るために、バックエンドSSD750内の適切なNamespace.LBAアドレスを生成する(populate)。その後、ストレージ隣接演算プロセッサ711は、構成されたストレージ隣接演算−NVMe−読み取り命令をブリッジ装置700の適切な入/出力提出キューに挿入する。バックエンドSSD750は、ストレージ隣接演算−NVMe−読み取り命令をPCIeバスを介して引き出し、読み取りデータバッファ752内の割り当てられた読み取りバッファ空間のポインターを用いて、システムメモリに対して要請データのダイレクトメモリアクセス(DMA)書き込み動作を行う。その後、バックエンドSSD750は、ストレージ隣接演算−NVMe−読み取り命令の完了エントリーをブリッジ装置700に送信する。ブリッジ装置700は、知能的にストレージ隣接演算−NVMe−読み取り完了エントリーをストレージ隣接演算プロセッサ711に伝達する。その際、ストレージ隣接演算プロセッサ711は、引き出されたデータを続けて処理又は分析する。
ストレージ隣接演算プロセッサ711は、引き出されたデータを修正する。ストレージ隣接演算プロセッサ711は、データ処理の結果として、新規データを生成する。ある時点において、ストレージ隣接演算プロセッサ711は、バックエンドSSD750に対して書き込み動作を行うことにより、このようなデータを維持する。ストレージ隣接演算プロセッサ711は、バックエンドSSD750への書き込みが必要なデータのアドレスを用いて、ストレージ隣接演算−NVMe−書き込み命令を構成する。その後、ストレージ隣接演算プロセッサ711は、バックエンドSSD750内のデータが書き込まれるのに好適なNamespace.LBAストレージの位置を挿入する。その後、ストレージ隣接演算プロセッサ711は、新たに構成されたストレージ隣接演算−NVMe−書き込み命令をブリッジ装置700の入/出力提出キューに挿入する。バックエンドSSD750は、PCIeバスを介して、ストレージ隣接演算−NVMe−書き込み命令を引き出して実行する。バックエンドSSD750は、システムメモリからストレージ隣接演算−NVMe−書き込み命令に指定されたバックエンドSSDアドレスにデータを書き込むDMA動作を行う。データのDMA動作が完了すると、バックエンドSSD750は、ストレージ隣接演算−NVMe−書き込み命令に対する完了エントリーを伝送する。ブリッジ装置700は、知能的にストレージ隣接演算−NVMe−書き込み命令の完了エントリーをストレージ隣接演算プロセッサ711に伝達する。その際、ストレージ隣接演算プロセッサは、書き込みデータバッファ751の書き込みデータを破棄する。
一実施形態によると、ブリッジ装置は、ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、データストレージ装置に第2命令セットを提供する第2インタフェースと、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、を有する。
データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブである。
データストレージ装置は、NVMeオーバーファブリック(NVMe−oF)標準と互換可能なソリッドステートドライブである。
第1インタフェースは、ファブリックネットワークを介したNVMe−oFインタフェースであり、データストレージ装置に対する第2インタフェースは、PCIeインタフェースである。第1命令セットはNVMe−oF命令を含み、第2命令セットはNVMe命令を含む。
ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択される。
ブリッジ装置は、命令パーサーと、命令分類器と、をさらに含む。命令パーサーは、第1命令セットをパーシングし、パーシングした命令を生成し、命令分類器は、パーシングした命令を分類し、分類した命令を1つ以上の命令プロセッサに提供する。
1つ以上の命令プロセッサは、コンピューティングプロセッサによって出力された第2命令セットのサブ命令セットを処理する特殊命令部を有する。
アプリケーションは、機械学習アプリケーションである。
第2命令セットの各命令は、1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有する。
ブリッジ装置は、データストレージ装置に第2命令セットをキューイングするための提出キューと、データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有する。
他の実施形態による方法は、第1インタフェースを介してホストコンピュータで実行されるアプリケーションから第1命令セットを受信する段階と、第1命令セットを変換し、第1命令セットに基づいて第2命令セットを生成する段階と、第2インタフェースを介してデータストレージ装置に第2命令セットを提供する段階と、アプリケーションが実行される間、ホストコンピュータにかかわらず、バックグラウンドモードで、データストレージ装置からデータを引き出し、データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、を有する。
データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブである。
データストレージ装置は、NVMeオーバーファブリック(NVMe−oF)標準と互換可能なソリッドステートドライブである。
第1インタフェースは、ファブリックネットワークを介したNVMe−oFインタフェースであり、データストレージ装置に対する第2インタフェースは、PCIeインタフェースである。第1命令セットはNVMe−oF命令を含み、第2命令セットはNVMe命令を含む。
ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択される。
本実施例の方法は、第1命令セットをパーシングし、パーシングした命令を生成する段階と、パーシングした命令を分類し、分類した命令を1つ以上の命令プロセッサに提供する段階と、をさらに有する。
1つ以上の命令プロセッサは、コンピューティングプロセッサによって出力された第2命令セットのサブ命令セットを処理する特殊命令部を有する。
アプリケーションは、機械学習アプリケーションである。
第2命令セットの各命令は、1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有する。
本実施形態の方法は、データストレージ装置に第2命令セットをキューイングするための提出キューと、データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有する。
上記実施形態を、ストレージ隣接演算を提供するためのブリッジ装置を具現する多様な実施形態を例示するために本明細書で説明した。本明細書に開示する実施形態からの多様な変形及び変更が本発明の技術分野に属する通常の技術者によって行われ得る。本発明の範囲に属する技術的思想は、請求範囲に記載する。
110、601 ホスト
111 アプリケーション
112 OS/ファイルシステム
113 NVMe−oFドライバー
150 イーサネット
160 シャーシ
161 イーサネットスイッチ
162 BMC
163 PCIeスイッチ
164 管理者インターフェース
165 ミッドプレーン
170 eSSD
200 NVMe−oFブリッジ装置
211、511、611、711 ストレージ隣接演算プロセッサ
212 システムメモリ
213 命令パーサー
214 命令分類器
215 命令プロセッサ
216 PSQモジュール
217、717 PAPPモジュール
218 NVMe−oF応答器
219 PCIe完了エントリーパーサー
220 PCQモジュール
231 特殊命令部
232 ファブリック命令部
233 管理者命令部
234 書き込み命令部
235 読み取り命令部
250、550、650、750 バックエンドSSD
332 IB FIFO
333 OB FIFO
334 NVMe命令バッファ
401 NVMe−oF命令識別子又はNSC命令識別子
402 ルックアップテーブル
403、405 ローカルタグ
404 命令処理部識別子
410 NVMe命令識別子
501、701 遠隔ホスト
521、621 NVMe−oF対NVMe命令変換器
522、622 NVMe対NVMe−oF完了エントリー変換器
531 管理者提出キュー
532 管理者完了キュー
631 入/出力提出キュー
632 ストレージ隣接演算入/出力提出キュー
633 ストレージ隣接演算入/出力完了キュー
634 入/出力完了キュー
700 ブリッジ装置
751 書き込みデータバッファ
752 読み取りデータバッファ
761 書き込みデータバッファ
762 読み取りデータバッファ

Claims (20)

  1. ホストコンピュータで実行されるアプリケーションから第1命令セットを受信する第1インタフェースと、
    前記第1命令セットを変換し、前記第1命令セットに基づいて第2命令セットを生成する1つ以上の命令プロセッサと、
    データストレージ装置に前記第2命令セットを提供する第2インタフェースと、
    前記アプリケーションが実行される間、前記ホストコンピュータにかかわらず、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、内部命令を発生させるコンピューティングプロセッサと、
    を有することを特徴とするブリッジ装置。
  2. 前記データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブであることを特徴とする請求項1に記載のブリッジ装置。
  3. 前記データストレージ装置は、NVMeオーバーファブリック標準と互換可能なソリッドステートドライブであることを特徴とする請求項1に記載のブリッジ装置。
  4. 前記第1インタフェースは、ファブリックネットワークを介したNVMe−oFインタフェースであり、前記第2インタフェースは、PCIeインタフェースであり、
    前記第1命令セットはNVMe−oF命令を含み、前記第2命令セットはNVMe命令を含むことを特徴とする請求項1に記載のブリッジ装置。
  5. 前記ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択されることを特徴とする請求項4に記載のブリッジ装置。
  6. 命令パーサーと命令分類器とをさらに含み、
    前記命令パーサーは、前記第1命令セットをパーシングし、パーシングした命令を生成し、
    前記命令分類器は、前記パーシングした命令を分類し、分類した命令を前記1つ以上の命令プロセッサに提供することを特徴とする請求項1に記載のブリッジ装置。
  7. 前記1つ以上の命令プロセッサは、前記コンピューティングプロセッサによって発生された前記第2命令セットのサブ命令セットを処理する特殊命令部を有することを特徴とする請求項1に記載のブリッジ装置。
  8. 前記アプリケーションは、機械学習アプリケーションであることを特徴とする請求項1に記載のブリッジ装置。
  9. 前記第2命令セットの各命令は、前記1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって前記第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有することを特徴とする請求項1に記載のブリッジ装置。
  10. 前記データストレージ装置に前記第2命令セットをキューイングするための提出キューと、前記データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、をさらに有することを特徴とする請求項1に記載のブリッジ装置。
  11. 第1インタフェースを介してホストコンピュータで実行されるアプリケーションから第1命令セットを受信する段階と、
    前記第1命令セットを変換し、前記第1命令セットに基づいて第2命令セットを生成する段階と、
    第2インタフェースを介してデータストレージ装置に前記第2命令セットを提供する段階と、
    前記アプリケーションが実行される間、前記ホストコンピュータにかかわらず、バックグラウンドモードで、前記データストレージ装置からデータを引き出し、前記データストレージ装置にデータを書き込むよう、内部命令を発生させる段階と、
    を有することを特徴とするブリッジ装置を用いたストレージ隣接演算方法。
  12. 前記データストレージ装置は、不揮発性メモリエクスプレス(NVMe)標準と互換可能なソリッドステートドライブであることを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
  13. 前記データストレージ装置は、NVMeオーバーファブリック標準と互換可能なソリッドステートドライブであることを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
  14. 前記第1インタフェースは、ファブリックネットワークを介したNVMe−oFインタフェースであり、前記第2インタフェースは、PCIeインタフェースであり、
    前記第1命令セットはNVMe−oF命令を含み、前記第2命令セットはNVMe命令を含むことを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
  15. 前記ファブリックネットワークは、イーサネット、光チャンネル、及びインフィニバンドから選択されることを特徴とする請求項14に記載のブリッジ装置を用いたストレージ隣接演算方法。
  16. 前記第1命令セットをパーシングし、パーシングした命令を生成する段階と、
    前記パーシングした命令を分類し、分類した命令を1つ以上の命令プロセッサに提供する段階と、をさらに有することを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
  17. 前記1つ以上の命令プロセッサは、コンピューティングプロセッサによって発生された前記第2命令セットのサブ命令セットを処理する特殊命令部を有することを特徴とする請求項16に記載のブリッジ装置を用いたストレージ隣接演算方法。
  18. 前記アプリケーションは、機械学習アプリケーションであることを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
  19. 前記第2命令セットの各命令は、前記1つ以上の命令プロセッサに対応する命令処理部識別子と、ルックアップテーブルによって前記第1命令セットにマッピングされるローカルタグと、を含む、命令識別子を有することを特徴とする請求項16に記載のブリッジ装置を用いたストレージ隣接演算方法。
  20. 前記データストレージ装置に前記第2命令セットをキューイングするための提出キューと、前記データストレージ装置から受信した完了エントリーをキューイングするための完了キューと、を提供する段階をさらに有することを特徴とする請求項11に記載のブリッジ装置を用いたストレージ隣接演算方法。
JP2018179913A 2017-10-11 2018-09-26 ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法 Active JP7141902B2 (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/571061 2017-10-11
US62/571064 2017-10-11
US15/944,682 US10394746B2 (en) 2017-10-11 2018-04-03 System and method for providing near storage compute using a bridge device
US15/944682 2018-04-03

Publications (3)

Publication Number Publication Date
JP2019075104A true JP2019075104A (ja) 2019-05-16
JP2019075104A5 JP2019075104A5 (ja) 2021-11-04
JP7141902B2 JP7141902B2 (ja) 2022-09-26

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 After (1)

Application Number Title Priority Date Filing Date
JP2018189015A Active JP7137430B2 (ja) 2017-10-11 2018-10-04 データ記憶装置及びブリッジ装置

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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190040884A (ko) * 2017-10-11 2019-04-19 삼성전자주식회사 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
US11687287B2 (en) 2020-09-30 2023-06-27 Canon Kabushiki Kaisha Control apparatus and information processing system
US11842064B2 (en) 2019-11-29 2023-12-12 Canon Kabushiki Kaisha Information processing apparatus, control device, and control method of control device
US11853604B2 (en) 2021-03-18 2023-12-26 Kioxia Corporation Computational storage device, method, and data processing system executing operation in accordance with information in command

Families Citing this family (37)

* 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
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
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 주식회사 멤레이 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치
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
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
WO2012091798A1 (en) * 2010-12-30 2012-07-05 Sandisk Technologies Inc. Controller and method for performing background operations
WO2016135875A1 (ja) * 2015-02-25 2016-09-01 株式会社日立製作所 情報処理装置
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

Family Cites Families (67)

* 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
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
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
US10620855B2 (en) * 2016-09-06 2020-04-14 Samsung Electronics Co., Ltd. System and method for authenticating critical operations on solid-state drives
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
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
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)
WO2019244656A1 (ja) * 2018-06-22 2019-12-26 日本電気株式会社 ストレージ装置
WO2020168522A1 (zh) * 2019-02-21 2020-08-27 华为技术有限公司 一种片上系统、访问命令的路由方法及终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012091798A1 (en) * 2010-12-30 2012-07-05 Sandisk Technologies Inc. Controller and method for performing background operations
WO2016135875A1 (ja) * 2015-02-25 2016-09-01 株式会社日立製作所 情報処理装置
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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190040884A (ko) * 2017-10-11 2019-04-19 삼성전자주식회사 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
JP2019075109A (ja) * 2017-10-11 2019-05-16 三星電子株式会社Samsung Electronics Co.,Ltd. データ記憶装置及びブリッジ装置
JP7137430B2 (ja) 2017-10-11 2022-09-14 三星電子株式会社 データ記憶装置及びブリッジ装置
US11487696B2 (en) 2017-10-11 2022-11-01 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
KR102513924B1 (ko) 2017-10-11 2023-03-27 삼성전자주식회사 데이터 저장 장치들 내의 인-스토리지 가속을 제공하기 위한 시스템 및 방법
US11842064B2 (en) 2019-11-29 2023-12-12 Canon Kabushiki Kaisha Information processing apparatus, control device, and control method of control device
US11687287B2 (en) 2020-09-30 2023-06-27 Canon Kabushiki Kaisha Control apparatus and information processing system
US11853604B2 (en) 2021-03-18 2023-12-26 Kioxia Corporation Computational storage device, method, and data processing system executing operation in accordance with information in command

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
JP2019075109A (ja) 2019-05-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
US20200341933A1 (en) 2020-10-29
CN109656473A (zh) 2019-04-19
US10394746B2 (en) 2019-08-27

Similar Documents

Publication Publication Date Title
JP2019075104A (ja) ブリッジ装置、ブリッジ装置を用いたストレージ隣接演算方法
US7197588B2 (en) Interrupt scheme for an Input/Output device
US10241830B2 (en) Data processing method and a computer using distribution service module
CN107209681B (zh) 一种存储设备访问方法、装置和系统
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
US20130138758A1 (en) Efficient data transfer between servers and remote peripherals
US8660130B2 (en) Transmitting a packet
JP6004608B2 (ja) ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化)
US8694723B2 (en) Method and system for coupling serial attached SCSI (SAS) devices and internet small computer system internet (iSCSI) devices through single host bus adapter
US11431624B2 (en) Communication method and network interface card
CN110297797B (zh) 异构协议转换装置和方法
US20170177270A1 (en) Storage system
US11940933B2 (en) Cross address-space bridging
US20220116454A1 (en) Direct response to io request in storage system having an intermediary target apparatus
CN110837488A (zh) 报文传输方法和装置
CN112799840A (zh) 用于传输数据的方法、装置、设备以及存储介质
US11281602B1 (en) System and method to pipeline, compound, and chain multiple data transfer and offload operations in a smart data accelerator interface device
WO2019232932A1 (zh) 节点处理方法及装置、计算机可读存储介质和电子设备
US20070121668A1 (en) Firmware architecture of active-active fibre channel capability in SATA and SAS devices
WO2020024392A1 (zh) 节点处理方法及装置、存储介质和电子设备
WO2023184513A1 (en) Reconfigurable packet direct memory access to support multiple descriptor ring specifications
US9166914B2 (en) FIFO affinity for multiple ports
US20220129161A1 (en) System and method to use dictionaries in lz4 block format compression
CN116569154A (zh) 数据传输方法和相关装置
CN117591298A (zh) 一种具有大容量高算力的算存系统及方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210924

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210924

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20210924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220531

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: 20220823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220912

R150 Certificate of patent or registration of utility model

Ref document number: 7141902

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150