JP2019075109A - データ記憶装置及びブリッジ装置 - Google Patents
データ記憶装置及びブリッジ装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/356—Switches specially adapted for specific applications for storage area networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9078—Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0008—High speed serial bus, e.g. Fiber channel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
Description
SSDは、低いレイテンシ(latency)、高いデータリード/ライト処理量(throughput)、及びユーザデータの信頼性及び持続性を有するストレージを提供する。
非揮発性メモリエクスプレスオーバーファブリックス(Non−volatile memory express(NVMe) over fabrics:以下、(NVMe−oF)と記す)は、イーサネット(登録商標、以下、省略)、ファイバチャンネル(Fibre Channel)、及びインフィニバンド(Infiniband)のようなファブリックネットワークを介して数百及び数千のSSDを接続させる、新しく浮上している技術である。
(NVMe−oF)プロトコルは、またネットワークを介してNVMeコマンド、データ及び応答を搬送(carry)するための信頼性のあるトランスポートサービスを提供するため、遠隔直接メモリアクセス(remote direct memory access:以下、RDMAと記す)を支援する。
iWARP、「RoCE v1」、及び「RoCE v2」は、RDMAサービスを提供するトランスポートプロトコルの一部の例である。
アプリケーションは、分割されたデータ記憶装置から大量のデータ(ビッグデータ)を収集し、これらを分析できる。
従って、データプロセシングマイニングタスクの一部をホストコンピュータからデータ記憶装置に転嫁(offload)させ、データ記憶装置からホストコンピュータへのデータ移動を最小化することが課題となっている。
図面は、ただ本明細書で記述される様々な実施形態が容易に記述されるように意図され、また、図面は、本明細書で開示する教示事項の全ての態様を記述せず、請求項の権利範囲を限定しない。
多数のこのような追加的な機能(特性)及び教示事項を利用する代表的な例は、分離されてからだけではなく、共に組み合わせて、添付された図面を参照してより詳細に記述される。
このような詳細な記述は、ただ当業者に本教示事項の態様を実施するための、より具体的な事項を教示するように意図され、請求項の権利範囲を制限するためのものと意図されない。
そのため、詳細な説明内に上記に開示した機能(特性)の組み合わせは、最も広い範囲の意味における教示事項を実施するために必須的なものではなく、代わりにただ本教示事項の代表的な例示を具体的に記述するために教示する。
以下の記述において、説明の目的のために、具体的な命名法が本発明の完全な理解のために提示する。
しかしながら、このような具体的な細部事項が、本明細書の教示事項を実施するために必要でないというのは、当業者に自明であろう。
このようなアルゴリズムに対する記述及び表現は、データプロセス分野内の当業者が自分の作業の要旨を他の当業者に効果的に伝達するために使用される。
本明細書において、そして一般的に、アルゴリズムは、目的とする結果をもたらす一貫性のある(self−consistent)ステップの順序と考えられる。
ステップは、物理的量の物理的操作を要求することである。通常、しかしながら、必須ではないように、このような物理的量は、記憶、伝送(transfer)、結合、比較、及びその他に操作が可能な電気的又は磁界的信号の形態を有する。
時には、主に汎用(common usage)のための理由で、このような信号は、ビット、値、構成要素、記号、用語、数字、又はこれと類似するものと示すのが便利であると知られている。
以下に開示した説明から明白に別に異なるように記述されない限り、明細書の全般にわたって「プロセシング(processing)」、「コンピューティング(computing)」、「計算する(calculating)、」、「決定する、」「表示する、」又はこれと類似のもののような用語を用いる説明は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)量として表現されるデータを操作するとか、又はこれをコンピュータシステムメモリ又はレジスタ又は他の情報記憶、伝送又は表示装置内の物理的量で類似に表現される、他のデータに変換するコンピュータシステム又はこれと類似の電子コンピューティング装置の作動及びプロセスを示すものと理解されるべきである。
全ての数値範囲又は個体のグループに対する表示は、元の開示目的だけでなく、請求された発明の要旨を制限する目的のために、全ての可能な中間値又は中間個体を開示することを明示する。
図面内に示した構成のサイズ及び形状は、本教示事項がどのように実施され得るか理解を助けるために設計されたものであり、例示内に示したサイズ及び形状を制限するように意図されたものではないことを明示する。
データ記憶システム100は、一つ又はそれ以上の(NVMe−oF)互換イーサネットSSD(eSSD)を含むシャーシ160(本明細書において、eSSDシャーシとも示す)及びホスト110を含む。
例えば、シャーシ160は、24又は48個のeSSDを含み得る。
シャーシ160内のeSSDは、eSSD(170a)〜eSSD(170n)でそれぞれ表わす(本明細書において、これらを含めてeSSD170として示す)。
ホスト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は、一つ又はそれ以上のホストに接続するための大容量(large‐capacity)(例えば、100Gbps)アップリンク(uplink)を有し得る。
イーサネットスイッチ161は、また、eSSD170に接続するための多重の低容量(lower‐capacity)(例えば、25Gbps)ダウンリンク(dawnlink)を有し得る。
例えば、イーサネットスイッチ161は、12個の100Gbpsのアップリンク及び24個又は48個の25Gbpsのダウンリンクを含み得る。
イーサネットスイッチ161は、BMC162への特殊設定/マネジメントポートを有し得る。
BMC162は、システムマネジメントのためのシステムマネジメントバス(system management bus:SMBus)インターフェース及び/又はPCIeを支援する。
BMC162は、eSSD170を設定し、イーサネットスイッチ161をプログラムできる。
BMC162は、ブート(boot)を処理し、eSSD装置への経路を制御する。
完全な(full‐fledged)x86CPUとは異なり、BMC162は、CPUが処理できる全てのタスクが処理できず、そのため、最小限のエンクロージャマネジメント機能を遂行する。
BMC162は、SMBus又はPCIeバスを介して、接続性、状態、温度、ログ、及びエラーに対する、接続されたeSSD170及び関連するハードウェアの自体検査(health check)を維持する。
(NVMe−oF)プロトコルは、遠隔直接接続(remote direct‐attached storage:rDAS)方式でホストコンピュータ110で駆動されるアプリケーション111に数百個及び数千個の分割されたeSSD170が接続されるようにする。
本発明のシステム及び方法は、分割されたeSSD170に収集されて記憶される大量のデータの移動及びプロセシングを容易にする。
既存のホストコンピュータを利用する、このようなデータプロセシングの費用は非常に高い可能性がある。
データフェチング、データ処理、及び格納を含む、このようなプロセスは、ホストコンピュータ上の過度なエネルギー、コンピューティング、ネットワーク、及びデータ記憶リソースを消費して非常に非効率的である可能性がある。
さらに、このようなプロセスは、ホストコンピュータに高価のコンピューティング及びメモリリソース上の要求事項を負担させる可能性がある。
ブリッジ装置は、データ記憶装置に集積されるか、又は、データ記憶装置に接続されて分離された(そして、別個の)装置を示す。
続く例示において、eSSDは、ブリッジ装置及びバックエンドSSDの全てを含むものと記述するが、しかし、eSSDを形成するために、データ記憶装置(バックエンドSSD)は、別個のブリッジ装置に接続され得るか、又は他の実施形態においてeSSDは、ブリッジ装置それ自体又はブリッジ装置の隣接コンピューティング(near−computing)機能を遂行できる装置を示し得ることを理解できるであろう。
(NVMe−oF)ブリッジ装置200は、PCIeバスを介してバックエンドSSD(例えば、NVMeSSD)250に結合される。
ホストコンピュータ上で駆動される遠隔イニシエータ(remote initiator)は、ファブリックネットワーク(本発明の実施形態においては、イーサネット)を介してバックエンドSSD250に(NVMe−oF)コマンドを伝送する。
例えば、コマンドパーサー213は、コマンドオペコード(command opcode:OPC)、コマンド識別子(command identifier:CID)、ネームスペース識別子(namespace identifier:NSID)、複数のロジカルブロック(number of logical blocks:NLB)、及びスタートロジカルブロックアドレス(start logical block address:SLBA)を含むが、しかし、これに限定されない、多様なコマンドを抽出して分析する。
例えば、コマンド分類器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を含む。
一実施形態によれば、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に伝送する。
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ルートコンプレックス装置にする。
バックエンドSSD250は、バックエンドSSD250がプロセシングする、各NVMeコマンドのためのコマンドコンプリーションエントリ(command completion entry:CE)を書き込むことができる。
通常は、コマンドサブミッションキューとコマンドコンプリーションキューとの間には、一対一マッピング(one−to−one mapping)がある。
PCIeCEパーサー219は、PCQモジュール220から受信したコンプリーションエントリ(CE)を分析し、これらを解釈する。
適切なコマンドプロセシングユニット(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は、データ伝送を遂行できる。
このようなデータ伝送は、(NVMe−oF)ブリッジ装置200内で利用可能なオンチップ(on−chip)又はオフチップ(off−chip)メモリ又はシステムメモリ212に/から行われ得る。
データ記憶装置に隣接した、又はその内部におけるデータプロセシングは、データをデータ記憶装置から遠隔ホストコンピュータに移動させ、遠隔ホストコンピュータ内でプロセシングするよりも効率的であり、費用面において効果的であり得る。
例えば、本発明におけるISAプラットフォームは、NVMe及び(NVMe−oF)SSD(例えば、図1のeSSD170)のコントローラ内に実装され得る。
他の実施形態において、本発明のISAプラットフォームは、ブリッジ装置(例えば、図2の(NVMe−oF)ブリッジ装置200)のコントローラ内に実装され得る。
このような点で、本明細書において使用される用語「インストレージ加速」は、ターゲットデータを格納する実際のデータ記憶装置だけでなく、データ記憶装置にインターフェース(又はプロトコル翻訳(protocol translation))を提供するために、データ記憶装置に隣接して配置されたブリッジ装置内におけるデータプロセシングを指示するために使用される。
ヘビーデューティデータプロセシング及び操作を遂行するホストアプリケーションの機能は、隣接又はインストレージ加速を遂行するためにデータ記憶装置又はブリッジ装置に転嫁(offload)され得る。
本発明のISAプラットフォームは、エネルギー及び帯域幅の側面において、効率的なデータプロセシングソシューションを提供すると同時に、全体的な演算及び記憶インフラストラクチャーの費用を軽減させ得る。
データ記憶装置又はブリッジ装置は、実際のターゲットデータを格納するデータ記憶装置及びデータ記憶装置内に格納されたターゲットデータに対するアクセスを要求する、データ集中的アプリケーションを駆動する遠隔ホストコンピュータの間でのデータ伝送を最小化させることによって、データプロセシングを加速させ得る。
本発明のISAプラットフォームは、データ記憶装置及びデータ集中的アプリケーションを駆動する遠隔ホスト装置の間でのデータの移動を最小化させることによって、ユーザデータがデータ記憶装置に近く又はその内部でもっと効率的にプロセスされ得るようにする。
それにより、本発明のISAプラットフォームは、より向上したアプリケーション性能を達成すると同時に、ホストコンピュータのコンピューティング、ネットワーキング、及び記憶インフラストラクチャーと関連された費用を減少させ得る。
本発明のISAプラットフォームは、多様な種類のデータ記憶装置に適用され得る。
しかし、以下では、説明の便意のためにデータ記憶装置の例として、NVMeSSD又は(NVMe−oF)SSDを示す。
FPGAベース再構成型ロジックブロックは、アプリケーションの転嫁及び加速部分を可能にするために、NVMe/(NVMe−oF)SSDのコントローラ(本明細書において、NVMe/(NVMe−oF)SSDコントローラとも称される)又はブリッジ装置のコントローラ(本明細書において、ブリッジ装置コントローラとも称される)と一共に、同時に作動する。
このようなFPGAベース再構成型ロジックブロックは、外部的にNVMe/(NVMe−oF)コントローラに接続されるか、又はNVMe/(NVMe−oF)に内装され得る。
アプリケーションユーザは、加速のためのアプリケーションの機能が実装されるように、NVMe/(NVMe−oF)SSD内に内装されるか、又はこれに結合されたこのような再構成型ロジックブロックを利用できる。
本発明のISAプラットフォームが多様な種類のアプリケーション及びデータ記憶装置に適用できるように、本発明のISAプラットフォームは、アプリケーションを一般的な方式で加速できる。
追加的に、ユーザは、本発明のISAプラットフォームをセルフサービス方式で利用できる。
例えば、ユーザは、実時間(runtime)のうち、アプリケーションの任意の部分を選択してダウンロードでき、アプリケーションを実時間に変更できる。
識別された機能は、アプリケーションの性能を加速させるために、ISAプラットフォームに転嫁され得る機能である。
一実施形態によれば、ユーザは、再構成型ロジックブロック(以下、ブラックボックス(black−boxes)とも称される)を含むデータ記憶装置(又はブリッジ装置)の予め設定された記憶領域(storage area)にアプリケーションの機能をダウンロードできる。
本明細書において、各再構成型ロジックブロックの集団は、アプリケーション加速ブラックボックス(AABB)であると便利に称される。AABBのそれぞれは、再構成型ロジックブロックがどのように構成されるかによって相異なるサイズ及び性能を有し得る。
即ち、レジスタ伝送レベル(register−transfer level:RTL)ブラックボックスであると称されるハードウェア部分及びRTLブラックボックスドライバであると称されるファームウェア部分である。
RTLブラックボックスは、ハードウェアプロセシングエンジンを含み、RTLブラックボックスドライバは、RTLエンジンのためのファームウェアドライバであるか、又は加速するための機能に対応される一般的なファームウェアドライバである。
一実施形態において、AABBは、ハードウェア部分無しでファームウェア部分のみを有し得る。
RTLブラックボックスドライバは、内装されたコントローラ(例えば、NVMe/(NVMe−oF)コントローラ又はブリッジコントローラ)のプロセッサコア上で駆動されるように意図された再構成されたRTLブラックボックスと連携されるファームウェアドライバである。
ダウンロードされ、対応されるAABBスロットに割り当てられたAABBは、活性化されたAABBスロット(active AABB slot)であると称される。
活性化されたAABBスロットは、加速機能を遂行する準備ができている。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含む。
AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含む。
複数のAABBは、ISAプラットフォーム内で定められた時間に活性化される。
各AABBスロットは確保され(reserved)、別に分離された(set aside)幾つかのロジックリソースを有し得る。
相異なるAABBスロットは、同一の又は相異なる定義されたリソース又はインターフェースを有し得る。
ユーザは、支援されるAABBスロットの特性、特徴、及び属性を見つけ出し、使用する特定のAABBを選択し、選択したAABBスロットに回路コンポーネント及びファームウェアコンポーネントをダウンロードできる。
アプリケーションがファームウェアコンポーネントのみを有することも可能である。
例えば、回路コンポーネント及びファームウェアコンポーネントをダウンロードするのは、「AABBダウンロード」コマンドを用いて遂行され得る。
「AABB Comm」コマンドは、活性化されたAABBスロットとホストアプリケーションが通信するために使用される。
本発明のISAプラットフォームは、ダウンロードされたAABBイメージが「AABB Comm」コマンドを受信するようにし、CEを遠隔ホストコンピュータに返して伝送するためのアプリケーションプログラムインターフェース(application program interface:API)のセットを提供する。
このようなコマンド及びデータ移動APIを用いることによって、AABBイメージは、ユーザ記憶データ(user data at rest)だけでなく、ユーザ移動データ(user data in flight)のためのユーザデータプロセシング、操作(manipulation)、及び他の変換を調整(orchestrate)することができる。
ユーザは、ユーザアプリケーションの目的とする機能(又は、目的とする機能の部分)を加速するために、NVMe/(NVMe−oF)SSDにアプリケーションAABBをダウンロードできる。
本発明のISAプラットフォームは、与えられたAABBのためのハードウェアコンポーネント及び関連したファームウェアコンポーネントを活性化させる。
ハードウェアコンポーネントは、NVMe/(NVMe−oF)SSD内の一つ又はそれ以上の再構成型ロジックブロックでロード(load)され得る、RTLビットストリーム(bit stream)形態となっている。
ファームウェアコンポーネントは、NVMe/(NVMe−oF)SSDの内臓されたプロセッサ(又はプロセッサコア)にロードされ、実行される。
即ち、本発明のISAプラットフォーム及びプラットフォーム提供者は、どのように、又はどのような目的のためにAABBが用いられるかは知れないか、又は気にしない。
ユーザは、セルフサービス方式で本発明のISAプラットフォームにより提供されるAABBスロットを定義し、生成し、ダウンロードして利用できる。
たとえ、後述する例示が、ユーザがセルフサービス方式で第三者加速機能を駆動できるようにする、本発明のISAプラットフォームの実施形態に中点を置くとしても、特定の標準ビルトインブラックボックス機能が、NVMe/(NVMe−oF)SSD又はブリッジ装置内に内在的(natively)に実装され得るように、本発明のISAプラットフォームは一般的な方式で利用され得るのが理解されるであろう。
RTLコンポーネントは、ビットストリームの形態で伝達され得る。
ファームウェアコンポーネントは、実行可能なバイナリイメージで伝達され得る。
RTLビットストリームは、対応する(複数の)ブラックボックスのために、予め確保されたFPGA領域(即ち、(複数の)AABBスロット)を再構成するために用いられ、ドライババイナリ(driver binary)は内装されたプロセッサ(又は、内装されたプロセッサのプロセッサコア)上で実行される。
遠隔ホストコンピュータ上で駆動されるアプリケーションは、ISAプラットフォーム上におけるAABBイメージと通信するためにNVMeコマンド「AABB Comm」を利用できる。
装置は、目的地AABBスロット識別子(destination AABB slot identifier)を用いて、「AABB Comm」コマンドをインターセプトし、これらを適切なAABBスロットに伝達する。
AABBイメージ301は、ヘッダ310、RTLビットストリーム320、及びドライババイナリイメージファイル321を含む。
ヘッダ310は、その他の情報311、パラメータ312、RTLビットストリームの長さ313、RTLビットストリームオフセット314、ドライババイナリファイルの長さ315、及びドライババイナリファイルオフセット316を含む。
たとえ、一実施形態が一つのヘッダ、並びに、対応するRTLビットストリーム及びドライババイナリイメージファイルだけを開示しているとしても、本発明の開示内容から逸脱しない範囲内で単一のAABBイメージは、複数のヘッダ、RTLビットストリーム、及びドライババイナリイメージファイルを有し得ることが理解されるであろう。
一実施形態において、コントローラは、NVMe/(NVMe−oF)SSD又はブリッジ装置に含まれるFPGAベース再構成型ロジックブロックと相互作用できる。
データ記憶性能に加えて、本発明のISAプラットフォームは、第三者機能ブロック(third−party functional blocks)(即ち、AABBスロット)を実装し、実行するメカニズムを提供する。
NVMe/(NVMe−oF)SSD又はブリッジ装置内に実装されたFPGAベース再構成型ロジックブロックは、NVMe/(NVMe−oF)SSD又はブリッジ装置の第三者機能ブロックのヘビーデューティーデータプロセシング機能を実装するために利用され得る。
コントローラプロセッサの演算リソースは、制御アルゴリズムだけでなく、ハードウェア加速エンジンのためのドライバファームウェアを実装するため、ユーザにより利用され得る。
一実施形態において、ユーザは、いくつかのユースケース(use case)のためにファームウェアリソースのみを利用できる。
例えば、バックエンドSSD450は、ブリッジ装置にPCIeリンクを通じてアクセス可能な標準NVMeSSDである。
ブリッジ装置及びバックエンドSSDは、ホストに「eSSD」と見なされる単一の記憶装置としてパッケージされ得る。
ブリッジ装置400は、プロセッサ411、PCIeエンドポイント(EP)421、バックエンドSSD450と接続するためのPCIeインターフェース417、(NVMe−oF)ブリッジ装置である場合の選択的イーサネットインターフェース418、ブラックボックス再構成コントローラ422、データバッファ423、NVMe/(NVMe−oF)ホストインターフェース424、及び再構成型ロジックブロック425を含む。
ロジックブロックは、複雑な組み合わせ機能、又はAND/XORのような簡単なロジックゲートを遂行するように構成され得る。
追加的に、ロジックブロックは、また、フリップフロップ(flip−flops)又はもっと完全なメモリのブロックのようなメモリ構成要素を含む。
しかし、再構成型ロジックブロック425は、FPGAブロックに限定されず、相異なる形態や種類のプログラミング可能な/再構成型ロジックブロックが、本開示内容の範囲を逸脱しない範囲内で利用され得る。
RTLブラックボックス432の各パーティションは、特定の量のハードウェアリソース及びシステムバス430を介するNVMe/(NVMe−oF)ホストインターフェース424、データバッファ423、ブラックボックス構成コントローラ422のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
ユーザは、RTLブラックボックス432を選択し、選択されたRTLブラックボックス432のリソース及びインターフェース制約(constraints)内に第三者RTL機能性を実装させ得る。
場合によって、ユーザは、ファームウェアブラックボックスのみを用いてRTL機能性を実装させ得る。
この場合、ファームウェアブラックボックスは、RTLブラックボックス432の、予め備えられた(prepopulated)RTLコンポーネントを利用できる。
BB構成コントローラ422は、RTLビットストリームを一つ又はそれ以上のRTLブラックボックス432にダウンロードでき、プロセッサ411のプロセッサコアを用いて対応されるブラックボックスドライバ431を駆動するために、対応するドライババイナリイメージファイルをプロセッサ411にロードできる。
データ記憶装置500は、NVMeSSD又は(NVMe−oF)SSDであり得る。
一部の実施形態において、データ記憶装置500は、NVMeSSD又は(NVMe−oF)SSDの格納(storage)コントローラを指し得る。
データ記憶装置500は、コントローラ501及びフラッシュ媒体(flash media)560を含む。
再構成型ロジックブロック525は、RTLブラックボックス(532a〜532n)のパーティション(partitions)を含む。
RTLブラックボックス532の各パーティションは、特定の量のハードウェアリソース及びシステムバス530を介するNVMe/(NVMe−oF)ホストインターフェース524、データバッファ523、ブラックボックス構成コントローラ522のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
バックエンドSSD450に対するPCIeインターフェース417の代わりに、コントローラ501は、フラッシュ媒体560からユーザデータを読み出したり、フラッシュ媒体560に書き込んだりするためにフラッシュ媒体560とインターフェースするためのフラッシュ変換レイヤー(flash translation layer:FTL)モジュール526を有する。
このような内在的実装(native implementation)においては、これと異なる場合、ブリッジ装置で遂行される機能をSSDコントローラそのものが遂行できるので、ブリッジ装置は、バックエンドSSDに接続される必要がない。
各再構成型ロジックブロックは、
a)ルックアップテーブル(LUT)、
b)ランダムアクセスメモリ(RAM)、及び
c)再構成型相互接続を含む。
このような3つのコンポーネントを用いることによって、多様なデータプロセシング回路がハードウェアに実装され得る。
再構成型ロジックブロックは、通常的なアプリケーション特定用途向け集積回路(application−specific integrated circuit:ASIC)の高性能及びソフトウェア具現の柔軟性を同時に提供できる。
RTLモデルは、その後、ゲートレベル回路で合成(synthesize)される。
合成された回路は、その後、ゲートレベルネットリスト(netlists)の物理的実装を実現するために、LUT、RAM,及び相互接続のようなFPGAリソースでマッピングされる。
最終的な実装は、ビットストリーム又はビットファイルの形態で示される。
ビットストリームは、本質的にFPGA内の相互接続スイッチのためのビットマップである。
ビットファイルのビットストリームは、電源オン以後や所望する時点で、FPGAにダウンロードされる。
いったん、ビットストリームが設定されると、リセット又はパワーサイクルの時まで、相互接続スイッチは、そのようなプログラムされた状態で維持される。
そして、ビットストリーム設定又はプログラミングが完了すると、データプロセシング機能は、データプロセシング機能の動作を開始する。
新しいデータプロセシング機能を開始するために、現在のデータプロセシング回路を中止させ、相異なるビットストリームを用いてFPGAを再構成することが可能である。
各RTLブラックボックスは、ロジック領域、相互接続、LUT、RAMブロック、特殊ハードマクロ(specialized hard macros)(例えば、PCIeコントローラ、デジタル信号プロセッサ(DSP)演算ロジックユニット(arithmetic logic units, ALUs))、及びクロック及びリセット信号を含むが、しかし、これに限定されない、リソースで予め供給され、予め定義できる。
インターフェースの例示は、プログラム可能なクロック/リセット、内装されたプロセッサに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:AXI)、ダブルデータレート(double data rate:DDR)メモリインターフェース、PCIe(EP/RP)インターフェース、イーサネットインターフェース、特殊のISAサービス又は機能のためのカスタムインターフェース、及びその他の別途のインターフェースを含むが、これに限定されない。
このインターフェースは、ユーザに見られず、RTLブラックボックス532にユーザ回路をダウンロードするのに用いられる。
このような場合、FPGAの一領域は、別に分離(set aside)され、RTLブラックボックスに予め確保(reserved)され得る。
別に分離されて、予め確保されたそのようなFPGAパーティションは、実行時間(runtime)の間にユーザビットストリームをダウンロードするのに使用され得る。
ユーザは、セルフサービスモデルとして、データ記憶装置のブリッジ装置のコントローラそのものにより駆動され得る機能を実装するために、AABBスロット(又は、ブラックボックス)を用いる。
そのため、本発明のISAプラットフォームは、AABBスロット内で駆動している実際の機能を知らない。
このような顧客セルフサービスアーキテクチャを容易にするため、本発明のISAプラットフォームは、アプリケーション加速を支援するデータ記憶装置又はブリッジ装置を発見するために、最終ユーザのための発見メカニズム(discovery mechanism)を採用する。
例えば、装置は、AABB支援を広告/公開するためのNVMe識別コマンド(NVMe Identify command)を発行できる。
AABB支援装置(AABB supporting device)の属性、パラメータ及び特徴のいくつかの例が識別データ構造を介して利用可能になる。
例えば、識別データ構造は、RTLブラックボックス及びファームウェアブラックボックスを有するAABBスロットの個数、ファームウェアだけを有するAABBスロットの個数、RTLブラックボックス及びファームウェアブラックボックスパラメータを有する各AABBスロットに対するデータ構造に関する情報を含み得る。
ファームウェアブラックボックスコンポーネントのためのパラメータの例は、関連するファームウェアブラックボックスのためのファームウェアコードサイズ(firmware code size)及びプロセッサ情報を含むが、これに限定されない。
図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スロット識別子を備える。
AABBスロットにAABBイメージがダウンロードされると、ダウンロードされたAABBイメージは、アプリケーションが明示的に活性化トリガーコマンド(explicit activate trigger command)を発行してISAプラットフォーム上でAABBイメージを起動(launch)するまで、基本値でリセット状態を保持する。
アプリケーションは、また、現在駆動されている特定のAABBイメージを中止するか、又はリセットできる。
アプリケーションは、ISAプラットフォームからの一つ又はそれ以上のAABBイメージを廃棄できる。
このようなAABBマネジメント機能を容易にするため、本発明のISAプラットフォームは、新しいセットのNVMe AABBスロットマネジメントコマンドを採用する。
「OPC」は、アドミンコマンドセット又は販売者定義(vendor−defined)コマンドセットのために予め確保される特殊オペコードであり、「CID」はコマンド識別子である。
「AABBスロットID」は、AABBスロットマネジメントコマンドのために用いられるAABBスロット識別子である。
「AABBアクションID」は、実行されるマネジメントアクションを示す。
例えば、「0x1」は、特定されたAABBイメージを活性化させる。
「0x2」は、特定されたAABBイメージを非活性化させる。
「0x3」は、特定されたAABBイメージをリセットさせる。
「0x4」は、特定されたAABBイメージを廃棄する。
他の「AABBアクションID」は、このようなアクションIDが使用されるところで使用されるか、又はこれらと関連して使用され得る。
アプリケーションは、AABBに「AABB Comm」コマンドを送信でき、AABBは、再びアプリケーションに応答できる。
例えば、アプリケーションは、AABBに特定のクエリ(query)を送信でき、AABBは、結果をアプリケーションに再び送信できる。
このようなホスト及びAABB通信は、NVMe又は(NVMe−oF)プロトコルの一部として実装され得る。
図8は、本発明の一実施形態による「AABB Comm」コマンドの例示的なフォーマットを示す図である。
「OPC」は、アドミンコマンドセット又は販売者定義コマンドセットのために予め確保した特殊オペコードであり、「CID」は、コマンド識別子である。
「AABBスロットID」は、AABBスロットマネジメントコマンドのために用いられるAABBスロット識別子である。
従って、図8に示すように、「AABB Comm」コマンドは、また、16ビットの「AABBスロットID」を運搬する。
このようなAABBスロットIDは、インターセプトした「AABB Comm」コマンドを正しいAABBスロットに伝達するためにISAプラットフォームによって用いられる。
本発明のISAプラットフォームが提供するAPIは、例えば、
1)AABB Commコマンドをインターセプトし、適切なAABBスロットに伝達するコマンド、
2)再びアプリケーションにAABB Commコマンドコンプリーションエントリを送信するコマンド、
3)データ記憶装置からユーザデータを読み出すコマンド、
4)データ記憶装置にAABBデータを書き込むコマンド、
5)ホストメモリからユーザデータを読み出すコマンド、及び
6)ホストメモリにAABBデータを書き込むコマンドのような、多様なコマンドを含む。
「AABB Comm」コマンドコンプリーションエントリをホストコンピュータ上で駆動するアプリケーションに送信するための第二番目のコマンドは、16Bコンプリーションエントリ(CB)及びSQIDを含む。
データ記憶装置からユーザデータを読み出すための第三番目のコマンドは、ネームスペースID(namespace ID:NSID)、スタート論理ブロックアドレス(start logical block address:SLBA)、複数のブロック(a number of blocks:NLB)、ISAプラットフォーム内の目的地アドレス(destination address)、及びその他に別の必要な関連した情報だけを含む。
ホストメモリからユーザデータを読み出すための第五番目のコマンドは、ホストメモリ内のソースアドレス(SGL又はPRP)、ISAプラットフォーム内の目的地アドレス、伝送の長さ(length of transfer)、その他に別の必要な関連した情報を含み得る。
AABBデータをホストメモリに書き込むための第六番目のコマンドは、ISAプラットフォーム内のソースアドレス、ホストメモリ内の目的地アドレス(SGL又はPRP)、伝送の長さ、その他に別の必要な関連した情報を含み得る。
データ記憶装置からユーザデータを読み出し、データ記憶装置にユーザデータを書き込むためのAPIコマンドは、データ記憶装置に記憶されたユーザデータをAABBがプロセス又は操作するように許容するのに用いられる。
AABBは、ローカルバッファにデータをフェッチし、データをプロセスするか、又はデータを変換させ、変更されたデータ又はプロセシング結果を再びデータ記憶装置に書き込むことができる。
このようなアプリケーションコマンド受信、コマンドコンプリーション、並びに、ホスト及びデータ記憶装置の両方からのデータの伝送を利用することによって、ISAプラットフォームは、データ記憶装置内又はデータ記憶装置に隣接してユーザデータプロセシング及び操作の目的とする機能を実行できる。
ホスト及びAABBは、一実施形態において、データ記憶装置を介してデータを交換できる。
ホストコンピュータは、データ記憶装置にユーザデータを直接読み出すか、又は書き込むことができ、AABBは、データ記憶装置内のユーザ記憶データ(user data at rest)を読み出すか、又は変更できる。
ホストデータ移動のためのAABBコマンドは、データ操作を即座に(on−the−fly)調整するために、AABBファームウェアにより用いられ得る。
一部のユース(ユーザ)ケースにおいて、ホストコンピュータによってデータが読み出すか、又は書き込むことにより、AABBは、データ操作及びデータの変換を実行できる。
(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のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
ホストコマンドは、AABBダウンロードコマンド、AABBスロットマネジメントコマンド、及び「AABB Comm」のようなAABBコマンドを含む。
イーサネットインターフェース918は、遠隔ホストコンピュータからAABBコマンドをインターセプトし、これらをコマンド経路951を介して(NVMe−oF)ホストインターフェース924及びプロセッサ911に伝達する。
(NVMe−oF)SSD900のプロセッサ911は、コンプリーションエントリを生成でき、これを(NVMe−oF)ホストインターフェース924及びイーサネットインターフェース918を経るコマンド経路951を介してホストアプリケーションを送り返す。
追加的に、プロセッサ911は、データバッファ923及びイーサネットインターフェース918を経るコマンド経路953を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、イーサネットインターフェース918、(NVMe−oF)ホストインターフェース924、及びFTL926を経る経路954を介してメモリに/からフラッシュ媒体960にユーザデータを読み出し及び書き込みためのデータリード及びライト動作を開始する。
NVMeSSD1000は、コントローラ1001及びフラッシュ媒体1060を含む。
コントローラ1001は、プロセッサ1011、イーサネットインターフェース1018(選択的)、PCIeEPインターフェース1021、ブラックボックス再構成コントローラ1022、データバッファ1023、NVMeホストインターフェース1024、及び再構成型ロジックブロック1025を含む。
再構成型ロジックブロック1025は、RTLブラックボックス(1032a〜1032n)のパーティションを含む。
RTLブラックボックス1032の各パーティションは、特定の量のハードウェアリソース及びシステムバス1030を介するNVMeホストインターフェース1024、データバッファ1023、ブラックボックス構成コントローラ1022のような、他の機能性モジュールに対する特定の個数及びタイプのインターフェースを含む。
ホストコマンドは、AABBダウンロードコマンド、AABBスロットマネジメントコマンド、及び「AABB Comm」コマンドのようなAABBコマンドを含む。
PCIeEPインターフェース1021は、遠隔ホストコンピュータからAABBコマンドをインターセプトし、これらをコマンド経路1051を介してNVMeホストインターフェース1024及びプロセッサ1011に伝達する。
NVMeSSD1000のプロセッサ1011は、コンプリーションエントリを生成でき、これをNVMeホストインターフェース1024及びPCIeEPインターフェース1021を経るコマンド経路1051を介してホストアプリケーションに送り返す。
さらに、プロセッサ1011は、データバッファ1023及びPCIeEPインターフェース1021を経るコマンド経路1053を介してホストメモリからユーザデータを読み出し、ホストメモリにユーザデータを書き込むためにホストアプリケーションと通信する。
ホストアプリケーションは、PCIeEPインターフェース1021、NVMeホストインターフェース1024、及びFTL1026を経る経路1054を介してホストメモリに/からフラッシュ媒体1060にユーザデータを読み出し及び書き込みのためのデータリード及びライト動作を開始する。
RTLビットストリームを複数のAABBスロットの内の一つのAABBスロットにダウンロードし、AABBスロットを再構成し、プロセッサのプロセッサコアにファームウェアドライバをロードする構成コントローラと、を有し、
ファームウェアドライバがロードされたプロセッサコアは、AABBスロット内にダウンロードされたRTLビットストリームを用いて、データ記憶媒体内に格納されたデータにアクセスして処理するために、遠隔アプリケーションのデータ加速プロセスを駆動する。
データ記憶装置は、NVMeオーバーファブリックス(NVMe over fabrics:NVMe−oF)SSDであってもよく、ホストインターフェースは、イーサネットインターフェースであってもよい。
データ記憶装置は、遠隔アプリケーションにディスカバリー情報をさらに伝送し、ディスカバリー情報は、AABBスロットの機能(features)、特徴、及び属性を含んでもよい。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含んでもよい。
ファームウェアドライバがロードされたプロセッサコアは、遠隔アプリケーションに依存しない(agnostic)アプリケーションプログラムインターフェース(application program interface:API)呼び出し(call)のセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにアクセスする。
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:AXI)、ダブルデータレート(double data rate:DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:PCIe)インターフェース、及びイーサネットインターフェースを含んでもよい。
ホストインターフェースはイーサネットインターフェースであってもよく、データ記憶装置は(NVMe−oF)SSDであってもよい。
遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージをブリッジ装置に伝送し、構成コントローラは、AABBスロットにダウンロードされたRTLビットストリームを廃棄して第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを実行するために第2ファームウェアドライバイメージをプロセッサコアにロードする。
ホストコマンドは、RTLビットストリーム及びファームウェアドライバを活性化、非活性化及び廃棄するためのマネジメントコマンドを含んでもよい。
ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含んでもよい。
ファームウェアドライバがロードされた前記プロセッサコアは、遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース(API)呼び出しのセットを用いて、遠隔アプリケーションのデータ加速プロセスを実行している間に、データ記憶媒体に格納されたデータにデータ記憶インターフェースを介してアクセスしてもよい。
一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、プロセッサコアに対するアドバンスドエクステンシブルインターフェース(AXI)、ダブルデータレート(DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(PCIe)インターフェース、及びイーサネットインターフェースを含んでもよい。
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)
- データ記憶装置であって、
データ記憶媒体と、
複数のプロセッサコアを含むプロセッサと、
再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black−box:以下、AABBと記す)スロットと、
遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register−transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロード(load)する構成コントローラと、を有し、
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データ記憶媒体内に格納されたデータにアクセスして処理(process)するために、前記遠隔アプリケーションのデータ加速プロセスを実行(run)することを特徴とするデータ記憶装置。 - 前記データ記憶装置は、非揮発性メモリエクスプレス(nonvolatile memory express:以下、NVMeと記す)ソリッドステートドライブ(以下、SSDと記す)であることを特徴とする請求項1に記載のデータ記憶装置。
- 前記データ記憶装置は、NVMeオーバーファブリックス(NVMe over fabrics:以下、(NVMe−oF)と記す)SSDであり、前記ホストインターフェースはイーサネットインターフェースであることを特徴とする請求項1に記載のデータ記憶装置。
- 前記遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージを前記データ記憶装置に伝送し、
前記構成コントローラは、前記AABBスロットにダウンロードされた前記RTLビットストリームを廃棄して前記第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び前記第2ファームウェアドライバイメージを用いて第2データ加速プロセスを実行するために、前記第2ファームウェアを前記プロセッサコアにロードすることを特徴とする請求項1に記載のデータ記憶装置。 - 前記データ記憶装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
前記ディスカバリー情報は、前記AABBスロットの機能(features)、特徴、及び属性を含むことを特徴とする請求項1に記載のデータ記憶装置。 - 前記ホストコマンドは、前記RTLビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項1に記載のデータ記憶装置。
- 前記ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、
前記AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含むことを特徴とする請求項1に記載のデータ記憶装置。 - 前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しない(agnostic)アプリケーションプログラムインターフェース(以下、APIと記す)呼び出し(call)のセットを用いて、前記遠隔アプリケーションの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データにアクセスすることを特徴とする請求項1に記載のデータ記憶装置。
- 一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(look−up table:以下、LUTと記す)、ランダムアクセスメモリ(以下、RAMと記す)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項1に記載のデータ記憶装置。
- 一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース(advanced extensible interface:以下、AXIと記す)、ダブルデータレート(double data rate:以下、DDRと記す)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(peripheral component interconnect express:以下、PCIeと記す)インターフェース、及びイーサネット(登録商標)インターフェースを含むことを特徴とする請求項1に記載のデータ記憶装置。
- データ記憶装置のデータ記憶媒体内に格納されたデータにアクセスするデータ記憶インターフェースと、
複数のプロセッサコアを含むプロセッサと、
再構成型ロジックブロック、相互接続、及びメモリを含む複数のアプリケーション加速ブラックボックス(application acceleration black−box:以下、AABBと記す)スロットと、
遠隔ホストコンピュータで実行される遠隔アプリケーションから、レジスタ伝送レベル(register−transfer level:以下、RTLと記す)ビットストリーム及びファームウェアドライバを含むイメージファイルを含むホストコマンドを受信するホストインターフェースと、
前記RTLビットストリームを、前記複数のAABBスロットの内の一つのAABBスロットにダウンロードし、前記AABBスロットを再構成し、前記プロセッサのプロセッサコアに前記ファームウェアドライバをロードする構成コントローラと、を有し、
前記ファームウェアドライバがロードされた前記プロセッサコアは、前記データ記憶インターフェースを介して前記データ記憶装置の前記データ記憶媒体内に格納された前記データにアクセスし、前記AABBスロット内にダウンロードされた前記RTLビットストリームを用いて、前記データを処理(process)するために前記遠隔アプリケーションのデータ加速プロセスを実行することを特徴とするブリッジ装置。 - 前記データ記憶インターフェースは、NVMeインターフェースであることを特徴とする請求項11に記載のブリッジ装置。
- 前記ホストインターフェースは、イーサネットインターフェースであり、
前記データ記憶装置は、(NVMe−oF)SSDであることを特徴とする請求項11に記載のブリッジ装置。 - 前記遠隔ホストコンピュータは、第2RTLビットストリーム及び第2ファームウェアドライバイメージを前記ブリッジ装置に伝送し、
前記構成コントローラは、前記AABBスロットにダウンロードされた前記RTLビットストリームを廃棄して前記第2RTLビットストリームをダウンロードし、前記第2RTLビットストリーム及び前記第2ファームウェアドライバイメージを用いて、第2データ加速プロセスを実行するために前記第2ファームウェアドライバイメージを前記プロセッサコアにロードすることを特徴とする請求項11に記載のブリッジ装置。 - 前記ブリッジ装置は、前記遠隔アプリケーションにディスカバリー情報をさらに伝送し、
前記ディスカバリー情報は、前記AABBスロットの機能(features)、特徴、及び属性を含むことを特徴とする請求項11に記載のブリッジ装置。 - 、
前記ホストコマンドは、前記RTLビットストリーム及び前記ファームウェアドライバを活性化、非活性化、及び廃棄するためのマネジメントコマンドを含むことを特徴とする請求項11に記載のブリッジ装置。 - 前記ホストコマンドは、活性化されたAABBスロットと通信するためのAABBスロット通信コマンドを含み、
前記AABBスロット通信コマンドは、活性化されたAABBスロットの識別子を含むことを特徴とする請求項11に記載のブリッジ装置。 - 前記ファームウェアドライバがロードされた前記プロセッサコアは、前記遠隔アプリケーションに依存しないアプリケーションプログラムインターフェース(API)呼び出しのセットを用いて、前記遠隔アプリケーソンの前記データ加速プロセスを実行している間に、前記データ記憶媒体に記憶された前記データに前記データ記憶インターフェースを介してアクセスすることを特徴とする請求項11に記載のブリッジ装置。
- 一つ又はそれ以上のAABBスロットは、ロジック領域、相互接続、ルックアップテーブル(LUT)、ランダムアクセスメモリ(RAM)ブロック、ハードマクロ、並びに、クロック及びリセット信号を含むことを特徴とする請求項11に記載のブリッジ装置。
- 一つ又はそれ以上のAABBスロットは、プログラミング可能なクロック/リセット、前記プロセッサコアに対するアドバンスドエクステンシブルインターフェース(AXT)、ダブルデータレート(DDR)メモリインターフェース、ペリフェラルコンポーネント相互接続エクスプレス(PCIe)インターフェース、及びイーサネットインターフェースを含むことを特徴とする請求項11に記載のブリッジ装置。
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)
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)
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)
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)
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 | 华为技术有限公司 | 一种片上系统、访问命令的路由方法及终端 |
-
2018
- 2018-03-14 US US15/921,400 patent/US10719474B2/en active Active
- 2018-04-03 US US15/944,682 patent/US10394746B2/en active Active
- 2018-06-11 KR KR1020180067003A patent/KR102513924B1/ko active IP Right Grant
- 2018-06-26 TW TW107121944A patent/TWI780168B/zh active
- 2018-07-12 KR KR1020180080936A patent/KR102388893B1/ko active IP Right Grant
- 2018-08-10 CN CN201810911803.0A patent/CN109656843A/zh active Pending
- 2018-08-23 TW TW107129423A patent/TWI751374B/zh active
- 2018-08-27 CN CN201810980128.7A patent/CN109656473B/zh active Active
- 2018-09-26 JP JP2018179913A patent/JP7141902B2/ja active Active
- 2018-10-04 JP JP2018189015A patent/JP7137430B2/ja active Active
-
2020
- 2020-07-14 US US16/928,711 patent/US11487696B2/en active Active
-
2022
- 2022-09-26 US US17/953,011 patent/US20230016328A1/en active Pending
Patent Citations (4)
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)
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 |