WO2015166540A1 - ストレージ装置とそのデータ処理方法及びストレージシステム - Google Patents

ストレージ装置とそのデータ処理方法及びストレージシステム Download PDF

Info

Publication number
WO2015166540A1
WO2015166540A1 PCT/JP2014/061907 JP2014061907W WO2015166540A1 WO 2015166540 A1 WO2015166540 A1 WO 2015166540A1 JP 2014061907 W JP2014061907 W JP 2014061907W WO 2015166540 A1 WO2015166540 A1 WO 2015166540A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
data
request
add
request command
Prior art date
Application number
PCT/JP2014/061907
Other languages
English (en)
French (fr)
Inventor
芳孝 辻本
渡辺 聡
能毅 黒川
岡田 光弘
彬史 鈴木
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to JP2016515788A priority Critical patent/JP6181860B2/ja
Priority to US15/126,693 priority patent/US9933976B2/en
Priority to PCT/JP2014/061907 priority patent/WO2015166540A1/ja
Publication of WO2015166540A1 publication Critical patent/WO2015166540A1/ja

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0656Data buffering 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 記憶デバイスに対するデータの入出力を制御するコントローラと、コントローラと情報の送受信を行う複数のハードウェアエンジンを有し、コントローラは、ホストから要求コマンドを取得したことを条件に、要求コマンドの識別情報を判別し、要求コマンドに第1の識別情報が付加されている場合、要求コマンドに従って記憶デバイスに対するデータの入出力処理を実行し、要求コマンドに第2の識別情報が付加されている場合、要求コマンドをハードウェアエンジンに転送し、その後、ハードウェアエンジンから要求されたデータを記憶デバイスから取得して、ハードウェアエンジンに転送し、ハードウェアエンジンは、要求コマンドに従ってホストからアドオンコマンドを取得して解析し、解析結果を基にデータの転送をコントローラに要求し、その後、コントローラから転送されたデータに対して、アドオンコマンドに従った処理を実行する。

Description

ストレージ装置とそのデータ処理方法及びストレージシステム
 本発明は、記憶デバイスに対するデータの入出力処理と記憶デバイスから得られたデータを処理対象とするデータ処理を実行するストレージ装置とそのデータ処理方法及びストレージシステムに関する。
 データベース検索処理を代表とするデータ処理システムでは、データ処理の高速化を目的として、データ処理サーバで行っていた処理の一部分を大容量記憶媒体(ストレージ)の近傍に配置したハードウェアエンジンへのオフロードが検討されている(特許文献1)。
 ところで、大容量記憶媒体は、ハードディスクドライブ(HDD)が主流であったが、リード・ライト(READ/WRITE)速度の向上を目的として、ソリッドステートドライブ(SSD)への置き換えが進んでいる。
 SSDの特徴は、内部に多数のNAND(Not AND)型フラッシュメモリを搭載しており、特定の組み合わせでコマンドの並列実行が可能であり、リード・ライト性能の向上が見込めることである。
 しかしながら、従来のHDD向けプロトコルであるAHCI(Advanced Host Controller Interface)をSSDに適用すると、AHCIで取り扱えるキューの個数は最大32個である。そうすると、AHCIでは、取り扱えるキューの個数の最大数が32と少ない為に、コマンドを多数キューに積んで並列実行するというSSDの特性を活かせない、という課題があった。
 そこで、SSDの特性を考慮したプロトコルとして、NVMe(Non-Volatile Memory Express)が策定され、製品への適用が始まった。NVMeで管理できるキューの個数は、最大65535個であり、SSDの特性を十分に活かせる仕様となっている。
 一方、ホスト(ホスト計算機)からSSDへの接続は、HDDで用いていたSATA(Serial Advanced Technology Attachment)からPCIe(Peripheral Component Interconnect express)への置き換えが進んでいる。シーケンシャルリードの性能では、SATA3.0の6Gbpsに対して、PCIe Gen4x1単方向においても16Gbpsと向上する。
 SSDをアクセスする場合、プロトコルとして、NVMeを利用すると、どのメーカーのPCIe SSDコントローラにおいても、OSからは同じように見えるので、1つのNVMeドライバで全てのベンダのPCIe SSDへのアクセスが可能となる。
 また、従来例としては、データベース検索システムにおいては、データベース検索専用のキューを持ち、データベースの検索処理性能を向上させる技術が知られている(特許文献2)。
特開2012-14705号公報 特開2010-128831号公報
 ところで、特許文献2に記載されたデータベース検索システムは、データベースの検索に特化しており、ホスト計算機が発行した検索要求コマンドを検索専用の中継キューに格納し、中継キューに格納された検索要求コマンドに従って順次検索を実行する。
 しかしながら、SSDへのリード要求又はライト要求を含む要求コマンドに従ってデータの入出力処理を実行すると共に、検索コマンドに従ってデータベース検索処理を実行するシステムを構築する場合、このシステムには、要求コマンドを格納するキューとして、64Bの容量を有するキューを配置すると共に、検索コマンドを格納するキューとして、2KBの容量を有するキューを配置しなければならず、サイズの異なるコマンドを同一のキューで管理することが困難である。また、検索コマンドには、データ処理を実行する複数種類のハードウェアエンジンに対応した処理内容を付加しなければならず、しかも、検索コマンドとして、ハードウェアエンジンの機能によって異なるサイズのものを構成する必要がある。このため、検索コマンドを格納するキューとして、ハードウェアエンジン毎に容量の異なるキューを設計する余儀なくされる。即ち、要求コマンドと検索コマンドを別々に管理して、SSDに対するデータの入出力処理と、SSDから得られたデータに対するデータベース検索処理を別々に実行することが困難である。
 本発明は、要求コマンドを判別して、記憶デバイスに対するデータの入出力処理と記憶デバイスから得られたデータを処理対象とするデータ処理とを別々に実行することができるストレージ装置とそのデータ処理方法及びストレージシステムを提供することを目的とする。
 上記目的を達成するために、本発明は、データを記憶する複数のフラッシュメモリを含む複数の記憶デバイスと、前記各記憶デバイスに対するデータの入出力を制御するコントローラと、前記コントローラと情報の送受信を行う1以上のハードウェアエンジンを有し、前記コントローラは、要求コマンド及び1以上のアドオンコマンドを管理するホストから、前記要求コマンドを取得したことを条件に、前記取得した要求コマンドに付加された識別情報を判別し、前記取得した要求コマンドに第1の識別情報が付加されていると判別した場合、前記取得した要求コマンドに従って前記記憶デバイスに対するデータの入出力処理を実行し、前記取得した要求コマンドに第2の識別情報が付加されていると判別した場合、前記取得した要求コマンドを基に前記取得した要求コマンドを前記いずれかのハードウェアエンジンに転送し、その後、前記ハードウェアエンジンから要求されたデータを前記取得した要求コマンドを基に前記記憶デバイスから取得し、当該取得したデータを前記要求されたハードウェアエンジンに転送し、前記要求コマンドを受信したハードウェアエンジンは、前記受信した要求コマンドで指定されたアドオンコマンドを前記ホストから取得し、前記取得したアドオンコマンドを解析し、当該解析結果を基に前記アドオンコマンドの処理の対象となるデータの転送を前記コントローラに要求し、その後、前記コントローラから転送されたデータを受信した場合、前記取得したアドオンコマンドを基に前記受信したデータに対するデータ処理を実行することを特徴とする。
 本発明によれば、要求コマンドを判別して、記憶デバイスに対するデータの入出力処理と記憶デバイスから得られたデータを処理対象とするデータ処理とを別々に実行することができる。
本発明に係るストレージシステムの第1実施例を示す基本構成図である。 ホストとSSDコントローラの内部構成を含むストレージシステムの構成図である。 要求コマンドの構成図である。 ハードウェアエンジン用要求コマンドの構成図である。 ストレージシステムの処理を説明するためのフローチャートである。 本発明に係るストレージシステムの第2実施例を示す構成図である。 ハードウェアエンジン用要求コマンドと要求コマンドFIFOの構成を説明するための概念図である。 ハードウェアエンジンの構成図である。 本発明に係るストレージシステムの第3実施例を示す構成図である。 ハードウェアエンジン用要求コマンドの要部構成図である。 ハードウェアエンジン用要求コマンドと要求コマンドFIFOの構成を説明するための概念図である。 本発明に係るストレージシステムの第4実施例を示す構成図である。 ログのフォーマットを示す構成図である。 エラー番号とエラー内容との関係を示す構成図である。 データベースのフォーマットを示す構成図である。 データベースの行のフォーマットを示す構成図である。 アドオンコマンドの構成図である。 ハードウェアエンジンによるデータベース検索処理を説明するためのフローチャートである。
 以下、本発明に係るストレージシステムの一実施例を図面に基づいて説明する。
 図1は、本発明に係るストレージシステムの第1実施例を示す基本構成図である。図1において、ストレージシステムは、アドオン追加機構を備えるストレージシステムとして、ホスト(ホスト計算機)10と、SSD(Solid State Drive)コントローラ20と、複数(#0~#N)のハードウェアエンジン30と、複数(#0~#M)のSSD40と、DRAM(Dynamic Random Access Memory)50を有し、各部がネットワークまたはバスを介して互いに接続される。なお、SSDコントローラ20と、各ハードウェアエンジン30と、各SSD40及びDRAM50は、ストレージ装置として構成される。
 ホスト10は、CPU(Central Processing Unit)、メモリ、入出力インタフェース等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。ホスト10は、SSD40を処理するためのプロトコル(NVMe)に従って定義された要求コマンド、例えば、NVMeコマンドと、アドオン機能(既存のプログラムに、後から機能等が強化されたプログラムを追加する機能)を有するハードウェアエンジン30固有の処理を規定するために定義された1以上のアドオンコマンド、例えば、検索コマンド、グラフ処理コマンドを別々に管理し、SSDコントローラ20からの取得要求に応答して、64B(バイト)の要求コマンドをSSDコントローラ20に発行し、各ハードウェアエンジン30からの取得要求に応答して、2KBのアドオンコマンドを各ハードウェアエンジン30に発行する。
 この際、要求コマンドには、例えば、SSD40へのリード要求またはライト要求であることを示す識別情報(第1の識別情報)と、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報(第2の識別情報)のうち一方の識別情報(オペコード)と、データのリード先又はデータのライト先を示す情報であって、データをアクセスするための主アクセス情報)等の情報が付加される。
 なお、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報(第2の識別情報)が、要求コマンドに付加される場合、この要求コマンドには、各ハードウェアエンジン30で共通に利用可能な情報であって、各ハードウェアエンジン30でホスト10と情報の送受信を行う際に利用可能な第1の補助アクセス情報と、SSDコントローラ20で各ハードウェアエンジン30を判別するために利用可能な第2の補助アクセス情報と、SSDコントローラ20でSSD40に対するデータの入出力処理を実行するために利用可能な第3の補助アクセス情報が付加される。
 SSDコントローラ20は、CPU、メモリ、入出力インタフェース等の情報処理資源を備えたコンピュータ装置であって、ホスト10及び各ハードウェアエンジン30と情報の送受信を行うと共に、各SSD40及びDRAM50に対するデータの入出力を制御する制御部として構成される。
 各ハードウェアエンジン30は、例えば、アドオン機能を有するハードウェアエンジンであって、再構成可能なゲートアレイである、FPGA(Field Programmable Gate Array)を用いて構成され、アドオン追加機構として機能する。各ハードウェアエンジン30は、データを処理すると共に、アドオンコマンドを解析する処理回路等を有し、例えば、データベース検索エンジン、グラフ処理エンジンとして構成される。
 各SSD40は、データを格納する記憶デバイスであって、フラッシュメモリで構成される。この際、各SSD40の記憶エリア(データブロック)には、圧縮されたデータをページ単位で格納することもできる。DRAM50は、データを格納する記憶デバイスであって、各SSD40から読み出されたデータを一時保持するデータバッファとして構成される。
 図2は、ホストとSSDコントローラの内部構成を含むストレージシステムの構成図である。図2において、ホスト10のメモリには、ホスト10の管理対象となるキューとして、要求コマンドキュー101と、処理完了キュー102が配置され、ホスト10の管理対象及び各ハードウェアエンジン30のアクセス対象となる領域として、複数(#0~#N)のコマンド格納領域103と、複数(#0~#N)の結果領域104と、複数(#0~#N)のログ領域105が配置される。
 要求コマンドキュー101には、要求コマンドが格納され、処理完了キュー102には、要求コマンドの処理の完了を示す情報が格納される。各コマンド格納領域103には、2KB(バイト)で構成されたコマンドであって、各ハードウェアエンジン30固有の処理を規定したデータ処理要求を含むアドオンコマンドが格納される。各結果領域104には、各ハードウェアエンジン30の処理結果を示す情報が格納される。各ログ領域105には、各ハードウェアエンジン30の生成によるログ情報が格納される。各コマンド格納領域103と各結果領域104及び各ログ領域105のアドレスは、その末尾に、#0~#Nの情報が付加され、各ハードウェアエンジン30の番号(#0~#N)に対応づけて管理される。
 SSDコントローラ20は、ドアベルレジスタ201と、コマンドマネージャ202と、SSDインタフェース(I/F)203と、DRAMインタフェース(I/F)204と、複数の要求コマンドFIFO205を有し、コマンドマネージャ202には、コマンドキュー206が配置される。
 ドアベルレジスタ201は、ホスト10からの転送要求を格納するレジスタである。コマンドマネージャ202は、SSDコントローラ20全体を統括制御するCPUと、ホスト10及び各ハードウェアエンジン30と情報の送受信を行うインタフェースと、コマンドキュー206を構成するメモリ等を有する。コマンドキュー206は、64B(バイト)で構成された要求コマンドを最大65535個まで格納可能に構成されている。コマンドマネージャ202のCPUは、ホスト10から転送された要求コマンドをコマンドキュー206に格納し、コマンドキュー206に格納された要求コマンドの識別情報を判別する。
 この際、ホスト10から転送された要求コマンドに付加された識別情報が、SSD40へのリード要求またはライト要求であることを示す識別情報(第1の識別情報)であると判別した場合、CPUは、判別結果に従ってSSD40に対するデータの入出力処理を実行し、実行結果をホスト10に転送する。一方、ホスト10から転送された要求コマンドに付加された識別情報が、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報(第2の識別情報)であると判別した場合、CPUは、要求コマンドに付加された情報(第2の補助アクセス情報)で各ハードウェアエンジン30の機能に対応した要求コマンドFIFO205を特定し、コマンドキュー206に格納された要求コマンドを、特定した要求コマンドFIFO205に順次格納する。この後、CPUは、要求コマンドに付加された情報(第2の識別情報)を参照して、転送先のハードウェアエンジン30を特定し、各要求コマンドFIFO205に格納された要求コマンドを、格納された順に、即ち、先頭から順番に読み出し、特定したハードウェアエンジン30に転送し、その後、各ハードウェアエンジン30から、処理要求としてデータ転送要求を受信した場合、要求コマンドに付加された情報(第3の補助アクセス情報)に従ってSSD40やDRAM50に対するデータの入出力処理を実行し、要求されたデータを、データ転送要求の送信元(転送元)となるハードウェアエンジン30に転送する。
 SSDインタフェース203は、コマンドマネージャ202の指示に従って各SSD40とデータの授受を行うインタフェースとして構成される。DRAMインタフェース204は、コマンドマネージャ202の指示に従ってDRAM50とデータの授受を行うインタフェースとして構成される。各要求コマンドFIFO205は、コマンドキュー206から転送された要求コマンドを順番に格納し、格納した要求コマンドを格納した順に出力する要求コマンドバッファとして構成される。この際、各要求コマンドFIFO205は、各ハードウェアエンジン30が有する機能に対応して分類されている。例えば、各ハードウェアエンジン30が2種類の機能を有する場合、各要求コマンドFIFO205は、2種類に分類されて管理される。
 各ハードウェアエンジン30は、コマンドマネージャ202から要求コマンドを受信した場合、受信した要求コマンドを解析し、解析結果に従ってDMA(Direct Memory Access)転送を起動して、ホスト10から、指定のコマンド格納領域103に格納されたアドオンコマンドを取得し、取得したアドオンコマンドに従って処理を実行する。この際、DMA転送を実行するDMA転送部は、コマンドマネージャ202から受信した要求コマンドに付加された情報(第1の補助アクセス情報)を参照して、ホスト10のコマンド格納領域103から指定のアドオンコマンドを取得するコマンド取得回路として機能する。
 この際、アドオンコマンドが、データベース検索処理である場合、各ハードウェアエンジン30は、処理要求として、データ転送要求をコマンドマネージャ202に転送する。データ転送要求を受信したコマンドマネージャ202は、要求コマンドに付加された情報(第3の補助アクセス情報)を基にSSD40から、例えば、ページ単位のデータを読み出し、読み出したページ単位のデータをDRAM50に一時保持し、保持されたページ単位のデータをDRAM50から、データ要求転送元のハードウェアエンジン30に転送する。データを受信したハードウェアエンジン30は、DRAM50から転送されたデータ(ページ単位のデータ)を解析すると共に、転送されたデータ(ページ単位のデータ)の中から検索条件を満たすデータを抽出するデータ処理を実行し、データ処理の処理結果や解析結果等をホスト10の指定の結果領域104にDMA転送する。
 ハードウェアエンジン30が、データベース検索処理を実行する際に、ページ単位のデータを検索対象とすることで、データベース検索処理を高速化することができる。この場合、同一機能を有する複数のハードウェアエンジン30が、同一の処理内容を有するアドオンコマンドに従って並列にデータベース検索処理を実行することで、DRAM50がボトルネックとなるのを防止できるので、データベース検索処理をより高速化することができる。
 また、エラーなどのログ情報を生成する場合、ハードウェアエンジン30は、要求コマンドに付加された情報(第1の補助アクセス情報)を参照し、生成したログ情報を、ホスト10の指定のログ領域105にDMA転送し、データ処理の処理結果を、ホスト10の指定の結果領域104にDMA転送する。なお、各ハードウェアエンジン30は、DRAM50から転送されたデータ(ページ単位のデータ)が、圧縮されたデータである場合、圧縮されたデータをページ単位で伸張し、伸張されたデータ(ページ単位のデータ)を検索対象のデータとして処理することもできる。
 図3は、要求コマンドの構成図である。図3において、要求コマンド140は、例えば、情報を格納する領域として、上位領域150と下位領域170を有し、全体で64B(バイト)のNVMeコマンドとして構成される。上位領域150は、ベンダが自由に利用可能な情報格納領域であって、各ハードウェアエンジン30共通の情報等が格納される。下位領域170は、コマンド固有のID(Identification)や要求コマンドの識別情報を格納する情報格納領域である。下位領域170には、要求コマンドのID171と、要求コマンドに関連したデータの格納形式172と、FUSE173と、オペコード(Opcode)174が格納される。
 ID171は、要求コマンド140固有の識別子であり、このID171が、各要求コマンド140に付加される。データの格納形式172におけるPRP(Physical region list)は、物理領域のページリストであり、データが格納されている領域(データ格納先)である。物理領域のページリストに記録された情報は、SSDコントローラ20が、SSD40に対するデータの入出力処理でSSD40をアクセスする際に利用するアクセス情報となる。また、データの格納形式172におけるSGL(Scatter Gather List)は、メモリアドレス空間のデータ構造を示している。本実施例では、PRPを用いることとする。FUSE173は利用しないので、説明は割愛する。
 オペコード(Opcode)174は、要求コマンド140が、SSD40に対するデータの入出力処理(データのリード処理又はデータのライト処理)を要求するコマンド、あるいは各ハードウェアエンジン30による処理(データベース検索処理)を要求するコマンドであるか否を識別するための識別情報であって、要求コマンドの種類を特定する識別情報である。即ち、要求コマンドが、SSD40に対するデータの入出力処理を要求するコマンドである場合、オペコード174には、SSD40へのリード要求またはライト要求であることを示す識別情報(第1の識別情報)が付加される。一方、要求コマンドが、各ハードウェアエンジン30による処理を要求するコマンドである場合、オペコード174には、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報(第2の識別情報)が付加される。
 図4は、ハードウェアエンジン用要求コマンドの構成図である。図4において、要求コマンド140は、ハードウェアエンジン用要求コマンドとして構成されており、この要求コマンド140の上位領域150には、各ハードウェアエンジン30共通の情報等が記録される。
 即ち、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報が付加された要求コマンド140には、各ハードウェアエンジン30で共通に利用可能な情報であって、各ハードウェアエンジン30でホスト10と情報の送受信を行う際に利用可能な第1の補助アクセス情報と、SSDコントローラ20で各ハードウェアエンジン30を判別するために利用可能な第2の補助アクセス情報と、SSDコントローラ20で各ハードウェアエンジン30から要求されたデータを取得するために利用可能な第3の補助アクセス情報が付加される。
 具体的には、要求コマンド140の上位領域150には、アドオンコマンドのバージョン151と、アドオン機能識別子152と、アドオン機能搭載個数153と、アドオンコマンドを格納するホスト10のアドレス(アドオンコマンド格納ホストアドレス)154と、アドオンコマンドのサイズ(アドオンコマンドサイズ)155と、ログを格納するホスト10のアドレス(ログ格納ホストアドレス)156と、SSD40に格納されているデータの読み出し開始アドレス157と、SSD40に格納されているデータのサイズ158と、各ハードウェアエンジン30を識別するためのエンジン識別子159が記録される。
 アドオンコマンドのバージョン151と、アドオンコマンドを格納するホスト10のアドレス(アドオンコマンド格納ホストアドレス)154と、アドオンコマンドのサイズ(アドオンコマンドサイズ)155及びログを格納するホスト10のアドレス(ログ格納ホストアドレス)156は、第1の補助アクセス情報として構成され、アドオン機能識別子152と、アドオン機能搭載個数153及びエンジン識別子159は、第2の補助アクセス情報として構成され、SSD40に格納されているデータの読み出し開始アドレス157及びSSD40に格納されているデータのサイズ158は、第3の補助アクセス情報として構成される。
 アドオンコマンドのバージョン151には、ホスト10の各コマンド格納領域103に格納されるアドオンコマンドのバージョンが記載される。アドオンコマンドのバージョンは、各ハードウェアエンジン30で各ハードウェアエンジンのバージョンと比較される。アドオン機能識別子152には、各要求コマンドFIFO205を種別するための識別子であって、各ハードウェアエンジン30の機能に対応した情報が記載される。コマンドマネージャ201は、要求コマンドをいずれかの要求コマンドFIFO205に分配する際又は要求コマンドをいずれかのハードウェアエンジン30に転送する際に、アドオン機能識別子152に記載された識別子で分配先又は転送先を判断する。なお、アドオン機能識別子152では、要求コマンドの転送先を判断できない場合、コマンドマネージャ201は、エンジン識別子159で要求コマンドの転送先を判断する。
 アドオンの搭載個数153には、SSDコントローラ20に接続されるハードウェアエンジン30が何個搭載されているかの情報が記載される。この情報は、コマンドマネージャ202が、確保すべき要求コマンドFIFO205の個数を決定するのに利用される。アドオンコマンドを格納するホスト10のアドレス154には、ホスト10のコマンド格納領域103を特定するアドレスが記載される。アドオンコマンドサイズ155には、ホスト10の各コマンド格納領域103に格納されているアドオンコマンドのサイズが記載される。このアドオンコマンドのサイズの情報は、各コマンドマネージャ202が、DMA転送で取得すべきデータサイズの設定に利用される。
 ログを格納するホスト10のアドレス156には、ホスト10の各ログ領域105を特定するアドレスが記載される。このアドレスは、各コマンドマネージャ202が、DMA転送でログ情報をホスト10に転送する際に利用される。SSD40に格納されるデータの読み出し開始アドレス157には、データベース検索処理の処理対象となるデータを格納しているSSD40の開始アドレスが記載される。SSD40に格納されているデータサイズ158には、SSD40に格納されているデータであって、データベース検索処理の処理対象となるデータのサイズが記載される。
 この際、ハードウェアエンジン用要求コマンド140の下位領域170のうち、オペコード174には、要求コマンド140が、ハードウェアエンジン用要求コマンドであることを示す識別情報、即ち、要求コマンドが、各ハードウェアエンジン30による処理を要求するコマンドであって、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報が記録される。
 図5は、ストレージシステムの処理を説明するためのフローチャートである。この処理は、ホスト10が、SSDコントローラ20に転送要求を発行することによって開始される。この際、ハードウェアエンジン用要求コマンド140の下位領域170のうち、オペコード174には、要求コマンド140が、ハードウェアエンジン用要求コマンドであることを示す識別情報、即ち、要求コマンドが、各ハードウェアエンジン30による処理を要求するコマンドであって、各ハードウェアエンジン30へのコマンド取得要求であることを示す識別情報(第2の識別情報)が記録される。
 図5において、ホスト10が、SSDコントローラ20に転送要求を発行し(S11)、転送要求の値をSSDコントローラ20のドアベルレジスタ201に書き込み、コマンドDMAを起動する(S12)。コマンドDMAが起動すると、コマンドマネージャ202は、ホスト10から、要求コマンドキュー101に格納されている要求コマンド(NVMeコマンド)140をコマンドDMAで取得し(S13)、取得した要求コマンド140をコマンドキュー206に登録する(S14)。この後、コマンドマネージャ202は、コマンドキュー206に登録した要求コマンド140のオペコード174を判別し、要求コマンド140が、アドオン用コマンド(ハードウェアエンジン用要求コマンド140)であるか否かを判定する(S15)。
 コマンドマネージャ202は、ステップS15で否定の判定結果を得た場合、即ち、要求コマンド140が、アドオン用コマンドでない場合、要求コマンド140の下位領域170のうちデータの格納形式172に記録されたデータ格納先を基にSSD40に対するデータの入出力処理(データのリード処理又はデータのライト処理)を実行する(S16)。データの入出力処理が完了すると、データの入出力処理の実行が完了したことが、SSDインタフェース203からコマンドマネージャ202に通知される(S17)。この後、コマンドマネージャ202は、ホスト10に対して、要求コマンド140で要求された処理の実行が完了したことを通知し(S18)、このルーチンでの処理を終了する。
 一方、コマンドマネージャ202は、ステップS15で肯定の判定結果を得た場合、即ち、要求コマンド140が、アドオン用コマンド(ハードウェアエンジン用要求コマンド140)である場合、要求コマンド140の上位領域150のうちアドオン機能識別子152を判別し、この判別結果から、要求コマンド140の分配先となる要求コマンドFIFO205を、各ハードウェアエンジン30の機能に対応づけて特定し、特定した要求コマンドFIFO205に要求コマンド140を書き込む(S19)。この後、コマンドマネージャ202は、要求コマンドFIFO205に書き込まれた要求コマンド140のうち先頭に積んである要求コマンド140を、アドオン機能識別子152に対応した機能を有するハードウェアエンジン(FPGA)30に転送する(S20)。
 要求コマンド140を受信したハードウェアエンジン30は、DMAを起動し、要求コマンド140の上位領域150のうちアドオンコマンドを格納するホスト10のアドレス154を基にホスト10から、ホスト10のコマンド格納領域103に格納されているアドオンコマンドを取得し(S21)、取得したアドオンコマンドの内容を解析し、設定内容に問題があるか等、アドオンコマンドの内容にエラーを検出したか否かを判定する(S22)。
 アドオンコマンドを受信したハードウェアエンジン30は、ステップS22で否定の判定結果を得た場合、即ち、取得したアドオンコマンドの内容にエラーを検出しなかった場合、取得したアドオンコマンドの内容に従った処理、例えば、データベース検索処理で必要なデータの転送要求(データ転送要求)をコマンドマネージャ202に転送する。データ転送要求を受信したコマンドマネージャ202は、要求コマンド140の上位領域150のうちSSD40に格納されているデータの読み出し開始アドレス157と、SSD40に格納されているデータサイズ158を参照して、いずれかのSSD40からデータ(ページ単位のデータ)を読み出し、読み出したデータをDRAM50にデータを転送し、転送したデータをDRAM50に一時保持し、その後、DRAM50に保持されたデータ(ページ単位のデータ)を、データ転送要求の転送元(送信元)となる各ハードウェアエンジン30に転送する(S23)。
 DRAM50から転送されたデータを受信したハードウェアエンジン30は、データ処理を起動し、アドオンコマンドの内容に従ってデータベース検索処理を実行し(S24)、この実行結果をホスト10の結果領域104へDMAで転送し(S25)、この後、コマンドマネージャ202に対して、要求コマンド140の実行完了を通知する(S26)。
 要求コマンド140の実行完了通知を受信したコマンドマネージャ202は、ホスト10に対して、要求コマンド140の実行完了を通知する(S27)。これにより、ホスト10の処理完了キュー102には、要求コマンド140の実行完了の情報が格納される。
 一方、ステップS22で肯定の判定結果を得た場合、即ち、取得したアドオンコマンドの内容にエラーを検出した場合、取得したアドオンコマンドの内容にエラーを検出したハードウェアエンジン30は、アドオンコマンドのエラーの内容を示すログ情報を生成し、生成したログ情報をDMAでホスト10のログ領域105に転送し(S28)、コマンドマネージャ202に対して、要求コマンド140の処理の実行をエラーで完了したことを通知し、処理完了通知を処理完了キュー102に格納させる(S29)。この後、コマンドマネージャ202は、ホスト10に対して、要求コマンド140で要求された処理の実行をエラーで完了したことを通知する(S30)。この場合、ホスト10は、ログ領域105に格納されたログ情報を参照して、エラーの内容を確認し、コマンド格納領域103に格納されたアドオンコマンドのエラー箇所を修正後、要求コマンド140を再投入するために、再度、転送要求をSSDコントローラ20に送信し、その後、SSDコントローラ20からの取得要求に応答して、ハードウェアエンジン用要求コマンド140を再度発行する。
 ステップS27又はステップS30の後、コマンドマネージャ202は、各要求コマンドFIFO205に要求コマンドが存在するか否かを判定し(S31)、各要求コマンドFIFO205に要求コマンドが存在する場合、ステップS20の処理に戻り、ステップS20~S31の処理を繰り返し、各要求コマンドFIFO205に要求コマンドが存在しない場合、このルーチンでの処理を終了する。
 本実施例によれば、要求コマンド140を判別して、SSD40に対するデータの入出力処理とSSD40から得られたデータを処理対象とするデータ処理(データベース検索処理)とを別々に実行することができる。また、本実施例によれば、ホスト10で、NVMe標準プロトコルで定義された要求コマンド140と、各ハードウェアエンジン固有の処理を規定したアドオンコマンドを別々に管理しているので、アドオンコマンドの拡張性を向上させることができる。さらに、NVMe標準プロトコルで定義された要求コマンド140が64Bの容量で構成されるので、コマンドキュー206には、最大65535個の要求コマンド140を格納することができ、結果として、コマンドキュー206に格納された各要求コマンド140の処理を並行して実行することが可能になり、SSD40の性能を向上させることができる。
 また、一つのコマンドキュー206に、64Bの要求コマンド140を複数個格納できるので、SSDコントローラ20のハードウェアの設計が容易になると共に、2種類のコマンドキューを配置する構成を採用した場合に比べて、コマンドキューのサイズを削減できる。また、ホスト10と各ハードウェアエンジン30との間では、DMA転送で情報の送受信を行っているので、ホスト10のCPUの負荷を低減することができる。
 本実施例は、同一機能を有する3台のハードウェアエンジン30が存在する場合、SSDコントローラ20が、一つの要求コマンドFIFO205で要求コマンド140を管理するものである。
 図6は、本発明に係るストレージシステムの第2実施例を示す構成図である。図6において、本実施例におけるストレージシステムは、ハードウェアエンジンとして、同一の機能を有する3台(#0~#2)のハードウェアエンジン30が存在する。
 この際、3台のハートウェアエンジン30に対応して、ホスト10には、#0~#2のコマンド格納領域103と、#0~#2の結果領域104と、#0~#2のログ領域105が配置され、SSDコントローラ20には、同一の機能を有する3台のハードウェアエンジン30を管理するために、1個の要求コマンドFIFO205が配置されるが、他の構成は実施例1と同様である。各コマンド格納領域103と各結果領域104及び各ログ領域105のアドレスは、その末尾に、#0~#2の情報が付加され、各ハードウェアエンジン30の番号(#0~#2)に対応づけて管理される。また、SSDコントローラ20と各ハートウェアエンジン30とを専用経路で接続することもできる。また、ホスト10には、コマンド140の再投入を制御するためのコマンド再投入制御部106が配置される。
 コマンドマネージャ202は、ホスト10から取得した要求コマンド140が、アドオン用コマンド(ハードウェア用要求コマンド)である場合、要求コマンド140の上位領域150のうちアドオン機能識別子152を判別し、判別結果から、要求コマンド140の転送先として、1個の要求コマンドFIFO205を特定し、特定した1個の要求コマンドFIFO205に要求コマンド140を書き込み、要求コマンドFIFO205に書き込まれた要求コマンド140のうち先頭に積んである要求コマンド140から順番に、専用経路を介して、いずれかのハードウェアエンジン(FPGA)30に順番に転送する。
 要求コマンド140を受信したハードウェアエンジン30は、DMAを起動し、要求コマンド140の上位領域150のうちアドオンコマンドを格納するホスト10のアドレス154を基にホスト10から、ホスト10のコマンド格納領域103に格納されているアドオンコマンドを取得し、取得したアドオンコマンドの内容を解析し、設定内容に問題があるか等、アドオンコマンドの内容にエラーを検出したか否かを判定する。
 アドオンコマンドを受信したハードウェアエンジン30は、取得したアドオンコマンドの内容にエラーを検出しなかった場合、取得したアドオンコマンドの内容に従った処理、例えば、データベース検索処理で必要なデータの転送をコマンドマネージャ202に要求する。この場合、データ転送要求を受信したコマンドマネージャ202は、要求コマンド140の上位領域150のうちSSD40に格納されているデータの読み出し開始アドレス157と、SSD40に格納されているデータサイズ158を参照して、いずれかのSSD40からデータを読み出し、読み出したデータをDRAM50にデータを転送し、転送したデータをDRAM50に一時保持し、その後、DRAM50に保持されたデータを、データ転送要求の転送元(送信元)となるハードウェアエンジン30に転送する。
 DRAM50から転送されたデータを受信したハードウェアエンジン30は、データ処理を起動し、アドオンコマンドの内容に従ってデータベース検索処理を実行し、この実行結果をホスト10の各結果領域104へDMAで転送し、この後、コマンドマネージャ202に対して、要求コマンド140の実行完了を通知する。要求コマンド140の実行完了通知を受信したコマンドマネージャ202は、ホスト10に対して、要求コマンド140の実行完了を通知する。
 一方、取得したアドオンコマンドの内容にエラーを検出した場合、取得したアドオンコマンドの内容にエラーを検出したハードウェアエンジン30は、アドオンコマンドのエラーの内容を示すログ情報を生成し、生成したログ情報をDMAでホスト10のログ領域105に転送し、コマンドマネージャ202に対して、要求コマンド140の処理の実行をエラーで完了したことを通知する。この後、コマンドマネージャ202は、ホスト10に対して、要求コマンド140で要求された処理の実行をエラーで完了したことを通知する。この場合、ホスト10のコマンド再投入制御部106は、ログ領域105に格納されたログ情報を参照して、エラーの内容を確認し、コマンド格納領域103に格納されたアドオンコマンドのエラー箇所を修正後、ハードウェアエンジン用要求コマンド140を再投入するための処理として、再度、転送要求をSSDコントローラ20に送信し、その後、SSDコントローラ20からの取得要求に応答して、ハードウェアエンジン用要求コマンド140を再度発行する。
 図7は、ハードウェアエンジン用要求コマンドと要求コマンドFIFOの構成を説明するための概念図である。
 図7において、ホスト10が、例えば、同一機能を有する3台のハードウェアエンジン30に対する要求コマンド(ハードウェアエンジン用要求コマンド)として、#0~#2の要求コマンド140を順次発行する場合、#0~#2の要求コマンド140のアドオン機能識別子152には、各ハードウェアエンジン30が同一の機能を有することを意味する情報として、「0」が付加される。
 また、#0~#2の要求コマンド140のうち、コマンドID171には、#0~#2の要求コマンド140固有の情報であって、各要求コマンド140を特定する情報が付加されると共に、コマンドID171の末尾に「0」~「2」が付加される。同様に、アドオンコマンド格納ホストのアドレス154には、#0~#2のコマンド格納領域103のアドレスを特定する情報として、アドレスの末尾に「0」~「2」が付加され、アドオンコマンドサイズ155には、#0~#2のアドオンコマンドのサイズを特定する情報として、サイズの末尾に「0」~「2」が付加され、ログ格納ホストアドレス156には、#0~#2のログ領域105のアドレスを特定する情報として、アドレスの末尾に「0」~「2」が付加される。
 要求コマンドFIFO205には、コマンドマネージャ202が受信した要求コマンド140が、受信した順番に書き込まれる。例えば、コマンドマネージャ202が、#0~#2の要求コマンド140を、#0~#2の順に受信した場合、#0の要求コマンド140から順番に要求コマンドFIFO205に書き込まれる。要求コマンドFIFO205に書き込まれた要求コマンド140は、#0~#2の順に各ハードウェアエンジン30に転送される。例えば、まず、#0の要求コマンド140が、#0のハードウェアエンジン30に転送され、次に、#1の要求コマンド140が、#1のハードウェアエンジン30に転送され、その後、#2の要求コマンド140が、#2のハードウェアエンジン30に転送される。
 図8は、ハードウェアエンジンの構成図である。図8において、各ハードウェアエンジン30は、各ハードウェアエンジン30全体を統括制御するCPU、SSDコントローラ20やホスト10とデータやコマンドの授受を行うインタフェースの他に、各ハードウェアエンジン30固有のデータ処理、例えば、データベース検索処理やグラフ処理を実行する処理回路301と、ホスト10から取得したアドオンコマンドやSSDコントローラ20から転送された要求コマンド140を格納するレジスタブロック302と、レジスタブロック302に格納されたアドオンコマンドや要求コマンド140の内容にエラーがあるか否かを検出するエラー検出回路303から構成される。処理回路301には、処理回路301の処理結果を格納する結果格納部304と、ログ情報を生成するログ生成部305が配置される。
 処理回路301は、レジスタブロック302に格納されたアドオンコマンド又は要求コマンド140の内容を解析し、解析結果に従ってデータ処理を実行する。この際、処理回路301は、DRAM50から転送されたデータを基にデータベース検索処理またはグラフ処理を実行する。ログ生成部305は、レジスタブロック302に格納されたアドオンコマンドの内容にエラーがある場合、エラーの内容をログ情報として生成すると共に、処理回路301で処理できないデータに関するログ情報を生成する。
 本実施例によれば、実施例1と同様の効果を奏することができると共に、同一機能を有する3台のハードウェアエンジン30が存在する場合、SSDコントローラ20が、一つの要求コマンドFIFO205で要求コマンド140を管理することができる。
 本実施例は、2種類の機能を有するハードウェアエンジン30が存在する場合、SSDコントローラ20が、2種類の要求コマンドFIFO205で要求コマンド140を管理するものである。
 図9は、本発明に係るストレージシステムの第3実施例を示す構成図である。図9において、本実施例におけるストレージシステムは、ハードウェアエンジンとして、2種類の機能(#A、#B)を有する5台(#0~#4)のハードウェアエンジン30が存在する。
 この際、5台のハートウェアエンジン30に対応して、ホスト10には、#0~#4のコマンド格納領域103と、#0~#4の結果領域104と、#0~#4のログ領域105が配置され、SSDコントローラ20には、2種類の機能(#A、#B)を有する5台のハードウェアエンジン30に対する要求コマンド140を管理するために、2種類(#A、#B)の要求コマンドFIFO205が配置されるが、他の構成は実施例1と同様である。なお、各コマンド格納領域103と各結果領域104及び各ログ領域105のアドレスは、その末尾に、#0~#4の情報が付加され、各ハードウェアエンジン30の番号(#0~#4)に対応づけて管理される。また、ホスト10には、コマンド140の再投入を制御するためのコマンド再投入制御部106が配置される。
 コマンドマネージャ202は、ホスト10から取得した要求コマンド140が、アドオン用コマンド(ハードウェア用要求コマンド)である場合、要求コマンド140の上位領域150のうちアドオン機能識別子152を判別し、この判別結果から、要求コマンド140の分配先として、2種類の機能に分かれて配置された複数の要求コマンドFIFO205のうちいずれか一つの機能に属する要求コマンドFIFO205を特定し、特定した機能の要求コマンドFIFO205に要求コマンド140を書き込む。
 例えば、コマンドマネージャ202は、要求コマンド140の分配先として、一方の機能(#A)に属する要求コマンドFIFO205を特定した場合、特定した一方の機能(#A)に属する要求コマンドFIFO205に要求コマンド140を書き込む。一方、要求コマンド140の分配先として、他方の機能(#B)に属する要求コマンドFIFO205を特定した場合、特定した他方の機能(#B)に属する要求コマンドFIFO205に要求コマンド140を書き込む。
 この後、#Aの要求コマンドFIFO205に書き込まれた要求コマンド140のうち先頭に積んである要求コマンド140をハードウェアエンジン(FPGA)30に転送する場合、コマンドマネージャ202は、#Aの機能に属するハードウェアエンジン30の中から、要求コマンド140の上位領域150に記録されたエンジン識別子159で指定されたハードウェアエンジン30を選択し、選択したハードウェアエンジン30に要求コマンド140を転送する。例えば、コマンドマネージャ202は、エンジン識別子159で指定されたハードウェアエンジン30が、#0のハードウェアエンジン30である場合、#0、#2、#3のハードウェアエンジン30の中から、#0のハードウェアエンジン30を選択して、要求コマンド140を転送する。
 一方、#Bの要求コマンドFIFO205に書き込まれた要求コマンド140のうち先頭に積んである要求コマンド140をハードウェアエンジン(FPGA)30に転送する場合、コマンドマネージャ202は、#Bの機能に属するハードウェアエンジン30の中から、要求コマンド140の上位領域150に記録されたエンジン識別子159で指定されたハードウェアエンジン30を選択し、選択したハードウェアエンジン30に要求コマンド140を転送する。例えば、コマンドマネージャ202は、エンジン識別子159で指定されたハードウェアエンジン30が、#1のハードウェアエンジン30である場合、#1、#4のハードウェアエンジン30の中から、#1のハードウェアエンジン30を選択して、要求コマンド140を転送する。
 要求コマンド140を受信したハードウェアエンジン30、例えば、#0のハードウェアエンジン30は、DMAを起動し、要求コマンド140の上位領域150のうちアドオンコマンドを格納するホスト10のアドレス154を基にホスト10から、コマンド格納領域(#0のコマンド格納領域)103に格納されているアドオンコマンド(#0のアドオンコマンド)を取得し、取得したアドオンコマンド(#0のアドオンコマンド)の内容を解析し、設定内容に問題があるか等、アドオンコマンド(#0のアドオンコマンド)の内容にエラーを検出したか否かを判定する。
 #0のハードウェアエンジン30は、取得したアドオンコマンド(#0のアドオンコマンド)の内容にエラーを検出しなかった場合、取得したアドオンコマンドの内容に従った処理、例えば、データベース検索処理で必要なデータの転送をコマンドマネージャ202に要求する。この場合、データ転送要求を受信したコマンドマネージャ202は、要求コマンド140の上位領域150のうちSSD40に格納されているデータの読み出し開始アドレス157と、SSD40に格納されているデータサイズ158を参照して、いずれかのSSD40からデータを読み出し、読み出したデータをDRAM50にデータを転送し、転送したデータをDRAM50に一時保持し、その後、DRAM50に保持されたデータを、データ転送要求送信元となる#0のハードウェアエンジン30に転送する。
 DRAM50から転送されたデータを受信したハードウェアエンジン(#0のハードウェアエンジン)30は、データ処理を起動し、アドオンコマンドの内容に従ってデータベース検索処理を実行し、この実行結果をホスト10の結果領域(#0の結果領域)104へDMAで転送し、この後、コマンドマネージャ202に対して、要求コマンド140の実行完了を通知する。要求コマンド140の実行完了通知を受信したコマンドマネージャ202は、ホスト10に対して、要求コマンド140の実行完了を通知する。
 一方、取得したアドオンコマンド(#0のアドオンコマンド)の内容にエラーを検出した場合、#0のハードウェアエンジン30は、アドオンコマンド(#0のアドオンコマンド)のエラーの内容を示すログ情報を生成し、生成したログ情報をDMAでホスト10のログ領域(#0のログ領域)105に転送し、コマンドマネージャ202に対して、要求コマンド140の処理の実行をエラーで完了したことを通知する。この後、コマンドマネージャ202は、ホスト10に対して、要求コマンド140で要求された処理の実行をエラーで完了したことを通知する。この場合、ホスト10のコマンド再投入制御部106は、ログ領域(#0のログ領域)105に格納されたログ情報を参照して、エラーの内容を確認し、コマンド格納領域(#0のコマンド格納領域)103に格納されたアドオンコマンド(#0のアドオンコマンド)のエラー箇所を修正後、要求コマンド140を再投入するための処理を実行する。例えば、コマンド再投入制御部106は、再度、転送要求をSSDコントローラ20に送信し、その後、SSDコントローラ20からの取得要求に応答して、第2の識別情報が付加されたハードウェアエンジン用要求コマンド140を再度発行する。
 また、要求コマンド140を受信したハードウェアエンジン30、例えば、#1のハードウェアエンジン30は、DMAを起動し、要求コマンド140の上位領域150のうちアドオンコマンドを格納するホスト10のアドレス154を基にホスト10から、コマンド格納領域(#1のコマンド格納領域)103に格納されているアドオンコマンド(#1のアドオンコマンド)を取得し、取得したアドオンコマンド(#1のアドオンコマンド)の内容を解析し、設定内容に問題があるか等、アドオンコマンド(#1のアドオンコマンド)の内容にエラーを検出したか否かを判定する。
 #1のハードウェアエンジン30は、取得したアドオンコマンド(#1のアドオンコマンド)の内容にエラーを検出しなかった場合、取得したアドオンコマンドの内容に従った処理、例えば、グラフ処理で必要なデータの転送をコマンドマネージャ202に要求する。この場合、データ転送要求を受信したコマンドマネージャ202は、要求コマンド140の上位領域150のうちSSD40に格納されているデータの読み出し開始アドレス157と、SSD40に格納されているデータサイズ158を参照して、いずれかのSSD40からデータを読み出し、読み出したデータをDRAM50にデータを転送し、転送したデータをDRAM50に一時保持し、その後、DRAM50に保持されたデータを、#1のハードウェアエンジン30に転送する。
 DRAM50から転送されたデータを受信した、#1のハードウェアエンジン30は、データ処理を起動し、アドオンコマンドの内容に従ってグラフ処理を実行し、この実行結果をホスト10の結果領域(#1の結果領域)104へDMAで転送し、この後、コマンドマネージャ202に対して、要求コマンド140の実行完了を通知する。要求コマンド140の実行完了通知を受信したコマンドマネージャ202は、ホスト10に対して、要求コマンド140の実行完了を通知する。
 一方、取得したアドオンコマンド(#1のアドオンコマンド)の内容にエラーを検出した場合、#1のハードウェアエンジン30は、アドオンコマンド(#1のアドオンコマンド)のエラーの内容を示すログ情報を生成し、生成したログ情報をDMAでホスト10のログ領域(#1のログ領域)105に転送し、コマンドマネージャ202に対して、要求コマンド140の処理の実行をエラーで完了したことを通知する。この後、コマンドマネージャ202は、ホスト10に対して、要求コマンド140で要求された処理が、エラーで完了したことを通知する。この場合、ホスト10のコマンド再投入制御部106は、ログ領域(#1のログ領域)105に格納されたログ情報を参照して、エラーの内容を確認し、コマンド格納領域(#1のコマンド格納領域)103に格納されたアドオンコマンド(#1のアドオンコマンド)のエラー箇所を修正後、要求コマンド140を再投入するための処理を実行する。例えば、コマンド再投入制御部106は、再度、転送要求をSSDコントローラ20に送信し、その後、SSDコントローラ20からの取得要求に応答して、第2の識別情報が付加されたハードウェアエンジン用要求コマンド140を再度発行する。
 図10は、ハードウェアエンジン用要求コマンドの要部構成図である。図10において、ホスト10が、例えば、2種類の機能(#A、#B)を有する5台のハードウェアエンジン30のうち#Aの機能を有する3台のハードウェアエンジン(#0、#2、#3のハードウェアエンジン)30に対する要求コマンド(ハードウェアエンジン用要求コマンド)として、#0、#2、#3の要求コマンド140を順次発行する場合、#0、#2、#3の要求コマンド140のアドオン機能識別子152には、#0、#2、#3のハードウェアエンジン30が、#Aの機能を有することを意味する情報として、「0」が付加される。また、#0、#2、#3の要求コマンド140には、要求コマンド名160として、それぞれ「CMD0」、「CMD2」、「CMD3」の情報が付加される。
 一方、ホスト10が、例えば、5台のハードウェアエンジン30のうち#Bの機能を有する2台のハードウェアエンジン(#1、#4のハードウェアエンジン)30に対する要求コマンド(ハードウェアエンジン用要求コマンド)として、#1、#4の要求コマンド140を順次発行する場合、#1、#4の要求コマンド140のアドオン機能識別子152には、#1、#4のハードウェアエンジン30が、#Bの機能を有することを意味する情報として、「1」が付加される。また、#1、#4の要求コマンド140には、要求コマンド名160として、それぞれ「CMD1」、「CMD4」の情報が付加される。
 図11は、ハードウェアエンジン用要求コマンドと要求コマンドFIFOの構成を説明するための概念図である。
 図11において、ホスト10が、例えば、2種類の機能(#A、#B)を有する5台のハードウェアエンジン30のうち#Aの機能を有する3台のハードウェアエンジン(#0、#2、#3のハードウェアエンジン)30に対する要求コマンド(ハードウェアエンジン用要求コマンド)として、#0、#2、#3の要求コマンド140を順次発行する場合、#0、#2、#3の要求コマンド140のコマンドID171には、#0、#2、#3の要求コマンド140を識別するための情報として、コマンドIDの末尾に、「0」、「2」、「3」がそれぞれ付加される。また、#0、#2、#3の要求コマンド140のアドオン機能識別子152には、#0、#2、#3のハードウェアエンジン30が、#Aの機能を有することを意味する情報として、「0」が付加される。さらに、#0、#2、#3の要求コマンド140のエンジン識別子159には、#0、#2、#3のハードウェアエンジン30を識別するための情報として、「0」、「2」、「3」がそれぞれ付加される。
 また、#0、#2、#3の要求コマンド140のうち、アドオンコマンド格納ホストのアドレス154には、#0、#2、#3のコマンド格納領域103のアドレスを特定する情報として、アドレスの末尾に「0」、「2」、「3」がそれぞれ付加され、アドオンコマンドサイズ155には、#0、#2、#3のアドオンコマンドのサイズを特定する情報として、サイズの末尾に「0」、「2」、「3」がそれぞれ付加され、ログ格納ホストアドレス156には、#0、#2、#3のログ領域105のアドレスを特定する情報として、アドレスの末尾に「0」、「2」、「3」がそれぞれ付加される。
 一方、ホスト10が、例えば、5台のハードウェアエンジン30のうち#Bの機能を有する2台のハードウェアエンジン(#1、#4のハードウェアエンジン)30に対する要求コマンド(ハードウェアエンジン用要求コマンド)として、#1、#4の要求コマンド140を順次発行する場合、#1、#4の要求コマンド140のコマンドID171には、#1、#4の要求コマンド140を識別するための情報として、コマンドIDの末尾に、「1」、「4」がそれぞれ付加される。また、#1、#4の要求コマンド140のアドオン機能識別子152には、#1、#4のハードウェアエンジン30が、#Bの機能を有することを意味する情報として、「1」が付加される。さらに、#1、#4の要求コマンド140のエンジン識別子159には、#1、#4のハードウェアエンジン30を識別するための情報として、「1」、「4」がそれぞれ付加される。
 また、#1、#4の要求コマンド140のうち、アドオンコマンド格納ホストのアドレス154には、#1、#4のコマンド格納領域103のアドレスを特定する情報として、アドレスの末尾に「1」、「4」がそれぞれ付加され、アドオンコマンドサイズ155には、#1、#4のアドオンコマンドのサイズを特定する情報として、サイズの末尾に「1」、「4」がそれぞれ付加され、ログ格納ホストアドレス156には、#1、#4のログ領域105のアドレスを特定する情報として、アドレスの末尾に「1」、「4」がそれぞれ付加される。
 #Aの要求コマンドFIFO205には、コマンドマネージャ202が受信した要求コマンド140が、受信した順番に書き込まれる。例えば、コマンドマネージャ202が、#0、#2、#3の要求コマンド140を、#0、#2、#3の順に受信した場合、#0、#2、#3の要求コマンド140は、#0の要求コマンド140から順番に要求コマンドFIFO205に書き込まれる。要求コマンドFIFO205に書き込まれた要求コマンド140は、#0、#2、#3の順に各ハードウェアエンジン30に転送される。例えば、まず、#0の要求コマンド140が、#0のハードウェアエンジン30に転送され、次に、#2の要求コマンド140が、#2のハードウェアエンジン30に転送され、その後、#3の要求コマンド140が、#3のハードウェアエンジン30に転送される。
 また、#Bの要求コマンドFIFO205には、コマンドマネージャ202が受信した要求コマンド140が、受信した順番に書き込まれる。例えば、コマンドマネージャ202が、#1、#4の要求コマンド140を、#1、#4の順に受信した場合、#1、#4の要求コマンド140は、#1の要求コマンド140から順番に要求コマンドFIFO205に書き込まれる。要求コマンドFIFO205に書き込まれた要求コマンド140は、#1、#4の順に各ハードウェアエンジン30に転送される。例えば、まず、#1の要求コマンド140が、#1のハードウェアエンジン30に転送され、次に、#4の要求コマンド140が、#4のハードウェアエンジン30に転送される。
 なお、エンジン識別子159は、各ハードウェアエンジン30を識別するために用いられる。即ち、ハードウェアエンジン30が1台しか存在しない場合、コマンドID171の番号を、固定された番号に設定しても、エンジン識別子159を用いることなく、ハードウェアエンジン30を特定することはできる。しかし、ハードウェアエンジン30が複数台存在する場合、コマンドID171の番号を固定された番号で順番に設定しても、多数の要求コマンド140を扱う際に、各要求コマンド140に付加されたコマンドID171だけでは、各ハードウェアエンジン30を特定できない。そのため、複数の機能を有するハードウェアエンジン30が複数台存在する場合、各ハードウェアエンジン30に対応したエンジン識別子159を用いて、各ハードウェアエンジン30を識別することとしている。
 本実施例によれば、実施例1と同様の効果を奏することができると共に、2種類の機能を有するハードウェアエンジン30が存在する場合、SSDコントローラ20が、2種類の要求コマンドFIFO205で要求コマンド140を管理することができる。
 本実施例は、エラー検出回路303に、コマンドチェック部306と、溢れチェック部307及びバージョンチェック部308を配置したものである。
 図12は、本発明に係るストレージシステムの第4実施例を示す構成図である。図12において、本実施例では、説明を容易にする為に、1台のハードウェアエンジン(#0のハードウェアエンジン)30が存在する場合について説明する。なお、ハードウェアエンジン30は、2台以上であっても、また、2種類以上であっても良い。また、1台のハードウェアエンジン30に対応して、ホスト10には、#0のコマンド格納領域103と、#0の結果領域104と、#0のログ領域105が配置され、SSDコントローラ20には、1台のハードウェアエンジン30に対する要求コマンド140を管理するために、1個の要求コマンドFIFO205が配置されるが、他の構成は実施例1と同様である。また、ホスト10には、コマンド140の再投入を制御するためのコマンド再投入制御部106が配置される。
 #0のハードウェアエンジン30は、実施例2と同様に、データベース検索処理やグラフ処理を実行する処理回路301と、ホスト10から取得したアドオンコマンドやSSDコントローラ20から転送された要求コマンド140を格納するレジスタブロック302と、レジスタブロック302に格納されたアドオンコマンドや要求コマンド140の内容にエラーがあるか否かを検出するエラー検出回路303から構成される。処理回路301には、処理回路301の処理結果を格納する結果格納部304と、ログ情報を生成するログ生成部305が配置される。
 エラー検出回路303には、コマンドチェック部306と、溢れチェック部307と、バージョンチェック部308が配置される。コマンドチェック部306は、#0のコマンド格納領域に格納されたアドオンコマンド(#0のアドオンコマンド)の各設定値を確認し、各設定値が、#0のハードウェアエンジン30で対応可能な値の範囲から外れている場合には、エラーと判定し、この判定結果をログ生成部305に転送する。溢れチェック部307は、処理回路301の処理によって得られたデータのサイズが、#0の結果領域104のサイズを超過する場合、もしくは、ログ生成部305の生成によるログ情報のログサイズが、ホスト10における#0のログ領域105のサイズを超過する恐れのある場合に、溢れエラーと判定し、この判定結果をログ生成部305に転送する。バージョンチェック部308は、要求コマンド140に記録されたアドオンコマンドのバージョン151と、#0のハードウェアエンジン30のバージョンとを比較し、#0のハードウェアエンジン30が、アドオンコマンドに対応可能なバージョンでなければ、バージョンエラーと判定し、この判定結果をログ生成部305に転送する。
 この際、ログ生成部305は、コマンドチェック部306、溢れチェック部307又はバージョンチェック部308のうちいずれか一つから、エラーの判定結果を受信した場合には、エラーの判定結果を受信次第、エラーの内容を示すログ情報を生成し、生成したログ情報を、ホスト10のログ領域(#0のログ領域)105にDMAで転送する。なお、処理回路301の処理結果は、結果格納部304から、ホスト10の結果領域(#0の結果領域)104にDMAで転送される。
 また、ホスト10のログ領域(#0のログ領域)105に、アドオンコマンドのエラー結果が格納された場合、ホスト10のコマンド再投入制御部106は、ログ領域(#0のログ領域)105に格納されたログ情報を参照して、エラーの内容を確認し、コマンド格納領域(#0のコマンド格納領域)103に格納されたアドオンコマンド(#0のアドオンコマンド)のエラー箇所を修正後、要求コマンド140を再投入するための処理を実行する。例えば、コマンド再投入制御部106は、再度、転送要求をSSDコントローラ20に送信し、その後、SSDコントローラ20からの取得要求に応答して、第2の識別情報が付加されたハードウェアエンジン用要求コマンド140を再度発行する。
 図13は、ログのフォーマットを示す構成図である。図13において、ログ320は、処理回路301で処理出来なかったデータで構成される行データ321と、行データ321に付加されるログ完了フラグ322と、行データ321に付加されるエラー番号323と、行データ321に付加される最終ページ番号324とから構成される。ログ完了フラグ322には、ログが完了したか否かを示す情報が記録される。エラー番号323には、エラーを特定するための番号が記録される。最終ページ番号324には、処理回路301が処理した複数のページのうち最終ページの番号が記録される。
 図14は、エラー番号とエラー内容との関係を示す構成図である。図14において、ログ320には、エラー番号323に対応して、エラー内容325を示す情報が付加される。例えば、#0のハードウェアエンジン30が、アドオンコマンドに対応可能なバージョンでない場合、#0のエラー番号323には、エラー内容325として、「アドオン機能バージョン未対応」の情報が付加される。また、アドオンコマンドの内容に不備がある場合、#0のエラー番号323には、エラー内容325として、「コマンド不備」の情報が付加される。さらに、処理回路301の処理によって得られたデータのサイズが、#0の結果領域104のサイズを超過する場合、#0のエラー番号323には、エラー内容325として、「ホストバッファ溢れ」の情報が付加される。
 本実施例によれば、実施例1と同様の効果を奏することができると共に、コマンドチェック部306と、溢れチェック部307及びバージョンチェック部308のチュエック結果をホスト10に通知することができる。
 本実施例は、ハードウェアエンジン30が、データベース検索エンジンとして機能するものである。
 図15は、データベースのフォーマットを示す構成図である。図15において、データベース500は、ハードウェアエンジン30が、データベース検索エンジンとして機能する場合の処理対象であって、例えば、リレーショナル・データベース(RDB)として構成され、DRAM50に格納される。データベース500は、ページ単位で構成されており、各ページは、ページヘッダ501と、データ領域502と、行ポインタ503から構成される。データ領域502は、複数の行(1行目からM行目)から構成され、各行にデータが記録される。データベース検索エンジンとしての機能を有するハードウェアエンジン30は、データベース500のうち、データ領域502と、行ポインタ503を検索対象として利用する。
 図16は、データベースの行のフォーマットを示す構成図である。図16において、データベース500のデータ領域502を構成する各行は、行ヘッダ510と、#1~#Nの列データ520から構成される。行ヘッダ501は、行サイズ511と、第1の付加情報512と、第2の付加情報513から構成される。
 第1の付加情報512又は第2の付加情報513は、例えば、PostgreSQLの行フォーマットで構成され、第1の付加情報512又は第2の付加情報513には、行生成トランザクションIDや行消滅トランザクションID等の情報が格納される。
 コマンドマネージャ202は、DRAM50に格納されたデータベース500のデータをページ単位で読み出し、読み出したページ単位のデータをハードウェアエンジン30に転送する。ハードウェアエンジン30は、アドオンコマンドを基にページ単位のデータを検索対象のデータとして処理する。
 図17は、アドオンコマンドの構成図である。図17において、アドオンコマンド180には、ハードウェアエンジン30をデータベース検索エンジンとして用いる場合、ハードウェアエンジン30の実行結果を格納するホスト10のアドレス181と、検索する列の開始位置182と、検索する列のデータ形式183と、検索する列の比較式184と、検索する列の比較値185と、検索結果としてホスト10に返す列の開始位置186と、検索結果としてホスト10に返す列のサイズ187を含む情報であって、例えば、2KBの情報が記録される。この場合、比較式184と比較値185は、検索条件として用いられる。
 図18は、ハードウェアエンジンによるデータベース検索処理を説明するためのフローチャートである。この処理は、データベース検索エンジンとしてのハードウェアエンジン30が、SSDコントローラ20のコマンドマネージャ202から、ハードウェアエンジン用要求コマンド140を受信したことを条件に開始される。
 図18において、ハードウェアエンジン用要求コマンド140を受信したハードウェアエンジン30は、処理回路301がデータベース検索処理を開始する。まず、処理回路301は、要求コマンド140の上位領域150のうちアドオンコマンドを格納するホスト10のアドレス154を基にホスト10から、アドオンコマンド180をDMAで取得し、取得したアドオンコマンド180の内容をレジスタブロック302に保持する(S51)。
 次に、処理回路301は、DRAM50から転送されたデータベース500を参照し、データベース500の1ページ目のページヘッダ501から行数を取得し(S52)、続いてデータベース500の1ページ目の行ポインタ503を1行目から順次取得し(S53)、この後、トランザクションIDの比較処理として、第1の付加情報512や第2の付加情報513に記録された情報(行生成トランザクションID、行消滅トランザクションID)と1ページ目の行データの内容とを比較し(S54)、1ページ目の行データの内容が変更された場合に、行スキップを行うか否かを判定する(S55)。
 処理回路301は、ステップS55で否定の判定結果を得た場合、即ち、1ページ目の行データの内容に変更がない場合、データベース500の1ページ目の各列のデータを読み込み、読み込んだ各列のデータとアドオンコマンド180に記録された検索条件(比較式184と比較値185)とを比較し(S56)、読み込んだ各列のデータの中から検索条件を満たすデータを抽出して、応答データを生成し(S57)、ステップS59の処理に移行する。
 一方、ステップS55で肯定の判定結果を得た場合、即ち、1ページ目の行データの内容が変更されている場合、処理回路301は、スキップすべき行に属するデータを、ログ情報を生成するためのデータとして書き出し(S58)、ステップS59の処理に移行する。
 次に、処理回路301は、1ページ目の各行の処理を全て終了したか否かを判定し(S59)、ステップS59で否定の判定結果を得た場合、ステップS52の処理に戻り、ステップS52~ステップS59の処理を繰り返し、ステップS59で肯定の判定結果を得た場合、1ページの処理を全て完了し(S60)、このルーチンでの処理を終了する。
 この後、処理回路301は、全てのページについて、ステップS52~S60の処理を実行し、ステップS57で生成された応答データを実行結果(検索結果)としてホスト10の結果領域104にDMAで転送する。また、処理回路301は、ステップS58で書き出されたデータを基にログ情報を生成し、生成したログ情報をホスト10のログ領域105にDMAで転送する。
 本実施例によれば、ハードウェアエンジン30は、ホスト10から取得したアドオンコマンド180を基にSSDコントローラ20から転送されたデータに対するデータ検索処理を実行し、実行結果をホスト10に通知することができる。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、要求コマンド140に付加される情報のうち上位領域150に記録される情報(第1の補助アクセス情報~第3の補助アクセス情報)を、アドオンコマンドに記録することもできる。この場合、ホスト10は、要求コマンド140のコマンドIDに関連づけてアドオンコマンドを管理し、ハードウェアエンジン30は、ホスト10とDMA転送でアドオンコマンドを取得する代わりに、要求コマンド140に付加されたコマンドIDに対応したアドコマンドの転送をホスト10に要求し、ホスト10から転送されたアドオンコマンドに付加された情報を基にSSDコントローラ20に対して、データ処理で必要なデータの転送を要求することができる。
 上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)メモリカード、DVD(Digital Versatile Disc)等の記録媒体に記録して置くことができる。
 10 ホスト、20 SSDコントローラ、30 ハードウェアエンジン、40 SSD、50 DRAM、101 要求コマンドキュー、102 処理完了キュー、103 コマンド格納領域、104 結果領域、105 ログ領域、106 コマンド再投入制御部、140 要求コマンド、180 アドオンコマンド、201 ドアベルレジスタ、202 コマンドマネージャ、203 SSDインタフェース、204 DRAMインタフェース、205 要求コマンドFIFO、206 コマンドキュー、301 処理回路、302 レジスタブロック、303 エラー検出回路、304 結果格納部、305 ログ生成部、306 コマンドチェック部、307 溢れチェック部、308 バージョンチェック部。

Claims (15)

  1.  データを記憶する複数のフラッシュメモリを少なくとも含む複数の記憶デバイスと、
     要求コマンド及び1以上のアドオンコマンドを管理するホストと情報の送受信を行うと共に、前記各記憶デバイスに対するデータの入出力を制御するコントローラと、
     前記ホスト及び前記コントローラと情報の送受信を行う1以上のハードウェアエンジンと、を有するストレージ装置であって、
     前記コントローラは、
     前記ホストから前記要求コマンドを取得したことを条件に、前記取得した要求コマンドに付加された識別情報を判別し、前記取得した要求コマンドに第1の識別情報が付加されていると判別した場合、前記取得した要求コマンドに従って前記記憶デバイスに対するデータの入出力処理を実行し、前記取得した要求コマンドに第2の識別情報が付加されていると判別した場合、前記取得した要求コマンドを基に前記取得した要求コマンドを前記いずれかのハードウェアエンジンに転送し、その後、前記ハードウェアエンジンから要求されたデータを前記取得した要求コマンドを基に前記記憶デバイスから取得し、当該取得したデータを前記要求されたハードウェアエンジンに転送し、
     前記要求コマンドを受信したハードウェアエンジンは、
     前記受信した要求コマンドで指定されたアドオンコマンドを前記ホストから取得し、前記取得したアドオンコマンドを解析し、当該解析結果を基に前記アドオンコマンドの処理の対象となるデータの転送を前記コントローラに要求し、その後、前記コントローラから転送されたデータを受信した場合、前記取得したアドオンコマンドを基に前記受信したデータに対するデータ処理を実行することを特徴とするストレージ装置。
  2.  請求項1に記載のストレージ装置であって、
     前記第1の識別情報が付加された前記要求コマンドには、前記記憶デバイスをアクセスするための主アクセス情報が付加され、
     前記第2の識別情報が付加された前記要求コマンドには、前記ハードウェアエンジンで共通に利用可能な情報であって、前記ハードウェアエンジンで前記ホストと情報の送受信を行う際に利用可能な第1の補助アクセス情報と、前記コントローラで前記ハードウェアエンジンを判別するために利用可能な第2の補助アクセス情報と、前記コントローラで前記ハードウェアエンジンから要求されたデータを取得するために利用可能な第3の補助アクセス情報が付加されることを特徴とするストレージ装置。
  3.  請求項2に記載のストレージ装置であって、
     前記第1の補助アクセス情報は、
     前記アドオンコマンドのバージョンと、前記アドオンコマンドを格納する前記ホストのアドレスと、前記アドオンコマンドのサイズ及びログ情報を格納する前記ホストのアドレスから構成され、
     前記第2の補助アクセス情報は、
     前記ハードウェアエンジンの機能を識別するための機能識別子と、前記ハードウェアエンジンの搭載個数及び前記ハードウェアエンジンを特定するためのエンジン識別子から構成され、
     前記第3の補助アクセス情報は、
     前記記憶デバイスに格納されているデータの読み出し開始アドレス及び前記記憶デバイスに格納されているデータのサイズから構成されていることを特徴とするストレージ装置。
  4.  請求項1に記載のストレージ装置であって、
     前記コントローラは、
     前記ホストから取得した前記要求コマンドを格納するコマンドキューと、
     前記コマンドキューに格納された要求コマンドの識別情報を判別し、当該判別結果に従って前記記憶デバイスに対するデータの入出力処理又は前記コマンドキューに格納された要求コマンドを前記いずれかのハードウェアエンジンに転送する処理を実行するコマンドマネージャを有し、
     前記コマンドマネージャは、
     前記いずれかのハードウェアエンジンからデータ転送要求を受信した場合、前記取得した要求コマンドに付加された情報を基に前記記憶デバイスに対するデータの入出力処理を実行し、当該データの入出力処理で得られたデータを前記データ転送要求の送信元となるハードウェアエンジンに転送することを特徴とするストレージ装置。
  5.  請求項4に記載のストレージ装置であって、
     前記記憶デバイスは、
     前記フラッシュメモリの他に、前記フラッシュメモリから転送されたデータを一時保持するデータバッファを有し、
     前記コマンドマネージャは、
     前記いずれかのハードウェアエンジンからデータ転送要求を受信した場合、前記取得した要求コマンドに付加された情報を基に前記フラッシュメモリに対するデータの入出力処理を実行し、当該データの入出力処理で得られたページ単位のデータを前記データバッファに転送し、その後、前記データバッファに保持されたページ単位のデータを前記データ転送要求の送信元となるハードウェアエンジンに転送し、
     前記ハードウェアエンジンは、
     前記コマンドマネージャから転送されたページ単位のデータに対するデータ処理を実行することを特徴とすることを特徴とするストレージ装置。
  6.  データを記憶する複数のフラッシュメモリを少なくとも含む複数の記憶デバイスと、
     要求コマンド及び1以上のアドオンコマンドを管理するホストと情報の送受信を行うと共に、前記各記憶デバイスに対するデータの入出力を制御するコントローラと、
     前記ホスト及び前記コントローラと情報の送受信を行う1以上のハードウェアエンジンと、を有するストレージ装置のデータ処理方法であって、
     前記コントローラが、前記ホストから前記要求コマンドを取得したことを条件に、前記取得した要求コマンドの識別情報を判別する第1のステップと、
     前記コントローラが、前記第1のステップで前記要求コマンドに第1の識別情報が付加されていると判別した場合、前記取得した要求コマンドに従って前記記憶デバイスに対するデータの入出力処理を実行する第2のステップと、
     前記コントローラが、前記第1のステップで前記要求コマンドに第2の識別情報が付加されていると判別した場合、前記取得した要求コマンドを基に前記取得した要求コマンドを前記いずれかのハードウェアエンジンに転送し、その後、前記ハードウェアエンジンから要求されたデータを前記取得した要求コマンドを基に前記記憶デバイスから取得し、当該取得したデータを前記ハードウェアエンジンに転送する第3のステップと、
     前記要求コマンドを受信したハードウェアエンジンが、前記受信した要求コマンドで指定されたアドオンコマンドを前記ホストから取得する第4のステップと、
     前記要求コマンドを受信したハードウェアエンジンが、前記第4のステップで取得したアドオンコマンドを解析し、当該解析結果を基に前記アドオンコマンドの処理の対象となるデータの転送を前記コントローラに要求する第5のステップと、
     前記要求コマンドを受信したハードウェアエンジンが、前記第5のステップの後、前記コントローラから、前記アドオンコマンドの処理の対象となるデータを受信した場合、前記アドオンコマンドを基に前記受信したデータに対するデータ処理を実行する第6のステップと、を含むことを特徴とするストレージ装置のデータ処理方法。
  7.  請求項6に記載のストレージ装置のデータ処理方法であって、
     前記第1の識別情報が付加された前記要求コマンドには、前記記憶デバイスをアクセスするための主アクセス情報が付加され、
     前記第2の識別情報が付加された前記要求コマンドには、前記ハードウェアエンジンで共通に利用可能な情報であって、前記ハードウェアエンジンで前記ホストと情報の送受信を行う際に利用可能な第1の補助アクセス情報と、前記コントローラで前記ハードウェアエンジンを判別するために利用可能な第2の補助アクセス情報と、前記コントローラで前記ハードウェアエンジンから要求されたデータを取得するために利用可能な第3の補助アクセス情報が付加されることを特徴とするストレージ装置のデータ処理方法。
  8.  請求項7に記載のストレージ装置のデータ処理方法であって、
     前記第1の補助アクセス情報は、
     前記アドオンコマンドのバージョンと、前記アドオンコマンドを格納する前記ホストのアドレスと、前記アドオンコマンドのサイズ及びログ情報を格納する前記ホストのアドレスから構成され、
     前記第2の補助アクセス情報は、
     前記ハードウェアエンジンの機能を識別するための機能識別子と、前記ハードウェアエンジンの搭載個数及び前記ハードウェアエンジンを特定するためのエンジン識別子から構成され、
     前記第3の補助アクセス情報は、
     前記記憶デバイスに格納されているデータの読み出し開始アドレス及び前記記憶デバイスに格納されているデータのサイズから構成されていることを特徴とするストレージ装置のデータ処理方法。
  9.  請求項6に記載のストレージ装置のデータ処理方法であって、
     前記コントローラは、
     前記ホストから取得した前記要求コマンドを格納するコマンドキューと、
     前記コマンドキューに格納された要求コマンドの識別情報を判別し、当該判別結果に従って前記記憶デバイスに対するデータの入出力処理又は前記コマンドキューに格納された要求コマンドを前記いずれかのハードウェアエンジンに転送する処理を実行するコマンドマネージャを有し、
     前記コマンドマネージャが、前記いずれかのハードウェアエンジンからデータ転送要求を受信した場合、前記取得した要求コマンドを基に前記記憶デバイスに対するデータの入出力処理を実行し、当該データの入出力処理で得られたデータを前記データ転送要求の送信元となるハードウェアエンジンに転送する第7のステップを含むことを特徴とするストレージ装置のデータ処理方法。
  10.  請求項9に記載のストレージ装置のデータ処理方法であって、
     前記記憶デバイスは、
     前記フラッシュメモリの他に、前記フラッシュメモリから転送されたデータを一時保持するデータバッファを有し、
     前記コマンドマネージャが、前記いずれかのハードウェアエンジンからデータ転送要求を受信した場合、前記取得した要求コマンドを基に前記フラッシュメモリに対するデータの入出力処理を実行し、当該データの入出力処理で得られたページ単位のデータを前記データバッファに転送する第8のステップと、
     前記コマンドマネージャが、前記第8のステップの後、前記データバッファに保持されたページ単位のデータを前記データ転送要求の送信元となるハードウェアエンジンに転送する第9のステップと、を含み、
     前記ハードウェアエンジンは、
     前記第6のステップでは、前記コマンドマネージャから転送されたページ単位のデータに対するデータ処理を実行することを特徴とするストレージ装置のデータ処理方法。
  11.  データを記憶する複数のフラッシュメモリを少なくとも含む複数の記憶デバイスと、
     前記各記憶デバイスに対するデータの入出力を制御するコントローラと、
     前記コントローラと情報の送受信を行う1以上のハードウェアエンジンと、
     前記コントローラ及び前記ハードウェアエンジンと情報の送受信を行うと共に、要求コマンド及び1以上のアドオンコマンドを管理するホストと、を有するストレージシステムであって、
     前記コントローラは、
     前記ホストから前記要求コマンドを取得したことを条件に、前記取得した要求コマンドの識別情報を判別し、前記取得した要求コマンドに第1の識別情報が付加されていると判別した場合、前記取得した要求コマンドに従って前記記憶デバイスに対するデータの入出力処理を実行し、前記取得した要求コマンドに第2の識別情報が付加されていると判別した場合、前記取得した要求コマンドを基に前記取得した要求コマンドを前記いずれかのハードウェアエンジンに転送し、その後、前記ハードウェアエンジンから要求されたデータを前記取得した要求コマンドを基に前記記憶デバイスから取得し、当該取得したデータを前記ハードウェアエンジンに転送し、
     前記要求コマンドを受信したハードウェアエンジンは、
     前記受信した要求コマンドに従って前記ホストからアドオンコマンドを取得し、前記取得したアドオンコマンドを解析し、当該解析結果を基に前記アドオンコマンドの処理の対象となるデータの転送を前記コントローラに要求し、その後、前記コントローラから転送されたデータを受信した場合、前記取得したアドオンコマンドを基に前記受信したデータに対するデータ処理を実行し、当該実行結果を前記ホストに転送することを特徴とするストレージシステム。
  12.  請求項11に記載のストレージシステムであって、
     前記第1の識別情報が付加された前記要求コマンドには、前記記憶デバイスをアクセスするための主アクセス情報が付加され、
     前記第2の識別情報が付加された前記要求コマンドには、前記ハードウェアエンジンで共通に利用可能な情報であって、前記ハードウェアエンジンで前記ホストと情報の送受信を行う際に利用可能な第1の補助アクセス情報と、前記コントローラで前記ハードウェアエンジンを判別するために利用可能な第2の補助アクセス情報と、前記コントローラで前記ハードウェアエンジンから要求されたデータを取得するために利用可能な第3の補助アクセス情報が付加されることを特徴とするストレージシステム。
  13.  請求項12に記載のストレージシステムであって、
     前記第1の補助アクセス情報は、
     前記アドオンコマンドのバージョンと、前記アドオンコマンドを格納する前記ホストのアドレスと、前記アドオンコマンドのサイズ及びログ情報を格納する前記ホストのアドレスから構成され、
     前記第2の補助アクセス情報は、
     前記ハードウェアエンジンの機能を識別するための機能識別子と、前記ハードウェアエンジンの搭載個数及び前記ハードウェアエンジンを特定するためのエンジン識別子から構成され、
     前記第3の補助アクセス情報は、
     前記記憶デバイスに格納されているデータの読み出し開始アドレス及び前記記憶デバイスに格納されているデータのサイズから構成されていることを特徴とするストレージシステム。
  14.  請求項11に記載のストレージシステムであって、
     前記ホストは、
     前記アドオンコマンドを格納するコマンド格納領域と、前記ハードウェアエンジンの処理結果を格納する結果領域と、前記ハードウェアエンジンから転送されるログ情報を格納するログ領域を有し、
     前記ハードウェアエンジンは、
     前記コントローラから前記要求コマンドを受信した場合、前記受信した要求コマンドを基に前記ホストのコマンド格納領域から指定のアドオンコマンドを取得するコマンド取得回路と、
     前記コマンド取得回路の取得によるアドオンコマンドを格納するレジスタブロックと、
     前記レジスタブロックに格納されたアドオンコマンドを解析し、この解析結果を基に前記コントローラに対してデータ転送要求を送信し、その後、前記コントローラから転送されたデータを処理対象としてデータ処理を実行する処理回路と、
     前記レジスタブロックに格納されたアドオンコマンドの内容にエラーがあるか否かを検出するエラー検出回路と、を有し、
     前記処理回路は、
     前記データ処理の処理結果を格納し、当該格納した処理結果を前記ホストの結果格納領域に転送する結果格納部と、
     前記エラー検出回路で前記アドオンコマンドの内容にエラーがあることを検出した場合、前記アドオンコマンドのエラーの内容又は前記データ処理で処理できないデータのログのうち少なくとも一方をログ情報として生成し、当該生成したログ情報を前記ホストのログ領域に転送するログ生成部と、を含むことを特徴とするストレージシステム。
  15.  請求項14に記載のストレージシステムであって、
     前記ホストは、
     前記ログ領域に格納されたログ情報の中に前記アドオンコマンドのエラーの内容を示すログ情報が存在する場合、前記コマンド格納領域に格納されたアドオンコマンドのエラーを修正すると共に、前記第2の識別情報が付加された前記要求コマンドを前記コントローラに再度発行するための処理を実行するコマンド再投入制御部を有することを特徴とするストレージシステム。
PCT/JP2014/061907 2014-04-28 2014-04-28 ストレージ装置とそのデータ処理方法及びストレージシステム WO2015166540A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016515788A JP6181860B2 (ja) 2014-04-28 2014-04-28 ストレージ装置とそのデータ処理方法及びストレージシステム
US15/126,693 US9933976B2 (en) 2014-04-28 2014-04-28 Storage apparatus and data processing method thereof, and storage system
PCT/JP2014/061907 WO2015166540A1 (ja) 2014-04-28 2014-04-28 ストレージ装置とそのデータ処理方法及びストレージシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/061907 WO2015166540A1 (ja) 2014-04-28 2014-04-28 ストレージ装置とそのデータ処理方法及びストレージシステム

Publications (1)

Publication Number Publication Date
WO2015166540A1 true WO2015166540A1 (ja) 2015-11-05

Family

ID=54358294

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/061907 WO2015166540A1 (ja) 2014-04-28 2014-04-28 ストレージ装置とそのデータ処理方法及びストレージシステム

Country Status (3)

Country Link
US (1) US9933976B2 (ja)
JP (1) JP6181860B2 (ja)
WO (1) WO2015166540A1 (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017126256A (ja) * 2016-01-15 2017-07-20 富士通株式会社 不揮発性ストレージおよび不揮発性ストレージの処理方法
JP2017534942A (ja) * 2014-09-26 2017-11-24 インテル・コーポレーション ソリッドステートドライブを使用して計算集約的な動作を加速するための技術
JP2017211802A (ja) * 2016-05-25 2017-11-30 株式会社日立製作所 高速化装置、計算機システム及びデータ処理方法
JP2018005686A (ja) * 2016-07-05 2018-01-11 富士通株式会社 ソリッドステートドライブ
WO2018083751A1 (ja) * 2016-11-02 2018-05-11 浩平 海外 インテリジェント・ストレージ・サブシステム
JPWO2017145287A1 (ja) * 2016-02-24 2018-12-20 京セラ株式会社 管理システム及び管理方法
JP2019153305A (ja) * 2018-03-05 2019-09-12 三星電子株式会社Samsung Electronics Co.,Ltd. システム及びそのアクセラレーション方法並びにアクセラレーションモジュール
JP2021517684A (ja) * 2018-04-12 2021-07-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トラック・ロックおよびストライド・グループ・ロックを使用したキャッシュ動作の管理
CN113485643A (zh) * 2021-07-01 2021-10-08 成都忆芯科技有限公司 用于数据存取的方法及数据写入的控制器
CN113515234A (zh) * 2021-07-01 2021-10-19 成都忆芯科技有限公司 一种用于控制数据读出到主机的方法及控制器

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019402B2 (en) * 2016-05-12 2018-07-10 Quanta Computer Inc. Flexible NVME drive management solution via multiple processor and registers without multiple input/output expander chips
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
US10353604B2 (en) * 2016-12-27 2019-07-16 Intel Corporation Object transformation in a solid state drive
US11256431B1 (en) 2017-01-13 2022-02-22 Lightbits Labs Ltd. Storage system having a field programmable gate array
TWI662409B (zh) * 2018-01-23 2019-06-11 祥碩科技股份有限公司 實體區域頁面位址轉換器與實體區域頁面清單存取方法
US10884672B2 (en) 2018-04-02 2021-01-05 Samsung Electronics Co., Ltd. NDP-server: a data-centric computing architecture based on storage server in data center
US11112972B2 (en) 2018-12-05 2021-09-07 Samsung Electronics Co., Ltd. System and method for accelerated data processing in SSDs
US10795846B1 (en) * 2019-07-15 2020-10-06 Cisco Technology, Inc. Scalable NVMe storage management over system management bus
US11789634B2 (en) * 2020-07-28 2023-10-17 Samsung Electronics Co., Ltd. Systems and methods for processing copy commands
US11733918B2 (en) * 2020-07-28 2023-08-22 Samsung Electronics Co., Ltd. Systems and methods for processing commands for storage devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009507304A (ja) * 2005-09-07 2009-02-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 順次アクセス・データ・ストレージ・サブシステム内で検索操作を実行するためのシステムおよび方法
JP2012014705A (ja) * 2003-05-23 2012-01-19 Washington Univ Fpgaデバイスを使用するインテリジェントデータ記憶および処理
US20120047126A1 (en) * 2007-08-27 2012-02-23 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
JP2012178132A (ja) * 2011-02-04 2012-09-13 Toshiba Corp メモリシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480905B1 (en) * 1999-12-11 2002-11-12 International Business Machines Corporation Data storage library with efficient cartridge insert
US7701348B2 (en) * 2008-01-18 2010-04-20 International Business Machines Corporation Embedded system architecture for RFID tag emulation
JP5243209B2 (ja) 2008-11-28 2013-07-24 株式会社野村総合研究所 データ検索システム、方法及びコンピュータプログラム
US9778859B2 (en) * 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
DE112014003082B4 (de) * 2014-06-02 2017-05-18 Mitsubishi Electric Corporation Programmierbares Steuerungssystem, programmierbare Steuerung, Programmanzeigevorrichtung und Programmanzeigeverfahren
US9965191B2 (en) * 2014-10-28 2018-05-08 Samsung Electronics Co., Ltd. Electronic system with message mechanism and method of operation thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014705A (ja) * 2003-05-23 2012-01-19 Washington Univ Fpgaデバイスを使用するインテリジェントデータ記憶および処理
JP2009507304A (ja) * 2005-09-07 2009-02-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 順次アクセス・データ・ストレージ・サブシステム内で検索操作を実行するためのシステムおよび方法
US20120047126A1 (en) * 2007-08-27 2012-02-23 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
JP2012178132A (ja) * 2011-02-04 2012-09-13 Toshiba Corp メモリシステム

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017534942A (ja) * 2014-09-26 2017-11-24 インテル・コーポレーション ソリッドステートドライブを使用して計算集約的な動作を加速するための技術
JP2017126256A (ja) * 2016-01-15 2017-07-20 富士通株式会社 不揮発性ストレージおよび不揮発性ストレージの処理方法
JPWO2017145287A1 (ja) * 2016-02-24 2018-12-20 京セラ株式会社 管理システム及び管理方法
JP2017211802A (ja) * 2016-05-25 2017-11-30 株式会社日立製作所 高速化装置、計算機システム及びデータ処理方法
JP2018005686A (ja) * 2016-07-05 2018-01-11 富士通株式会社 ソリッドステートドライブ
WO2018083751A1 (ja) * 2016-11-02 2018-05-11 浩平 海外 インテリジェント・ストレージ・サブシステム
JP7252789B2 (ja) 2018-03-05 2023-04-05 三星電子株式会社 Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法
JP2019153304A (ja) * 2018-03-05 2019-09-12 三星電子株式会社Samsung Electronics Co.,Ltd. Ssdに対するfpgaベースのアクセラレーションモジュール及びシステムとその動作方法
JP7120945B2 (ja) 2018-03-05 2022-08-17 三星電子株式会社 システム及びそのアクセラレーション方法並びにアクセラレーションモジュール
JP2019153305A (ja) * 2018-03-05 2019-09-12 三星電子株式会社Samsung Electronics Co.,Ltd. システム及びそのアクセラレーション方法並びにアクセラレーションモジュール
US11892957B2 (en) 2018-03-05 2024-02-06 Samsung Electronics Co., Ltd. SSD architecture for FPGA based acceleration
JP2021517684A (ja) * 2018-04-12 2021-07-26 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation トラック・ロックおよびストライド・グループ・ロックを使用したキャッシュ動作の管理
JP7256815B2 (ja) 2018-04-12 2023-04-12 インターナショナル・ビジネス・マシーンズ・コーポレーション トラック・ロックおよびストライド・グループ・ロックを使用したキャッシュ動作の管理
CN113485643A (zh) * 2021-07-01 2021-10-08 成都忆芯科技有限公司 用于数据存取的方法及数据写入的控制器
CN113515234A (zh) * 2021-07-01 2021-10-19 成都忆芯科技有限公司 一种用于控制数据读出到主机的方法及控制器
CN113515234B (zh) * 2021-07-01 2023-10-31 成都忆芯科技有限公司 一种用于控制数据读出到主机的方法及控制器
CN113485643B (zh) * 2021-07-01 2023-10-31 成都忆芯科技有限公司 用于数据存取的方法及数据写入的控制器

Also Published As

Publication number Publication date
JPWO2015166540A1 (ja) 2017-04-20
US9933976B2 (en) 2018-04-03
US20170192718A1 (en) 2017-07-06
JP6181860B2 (ja) 2017-08-16

Similar Documents

Publication Publication Date Title
JP6181860B2 (ja) ストレージ装置とそのデータ処理方法及びストレージシステム
KR102403489B1 (ko) 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US9524107B2 (en) Host-based device drivers for enhancing operations in redundant array of independent disks systems
TWI664541B (zh) 用於自主記憶體搜尋之方法及系統
US9176673B2 (en) Memory device
US9164840B2 (en) Managing a solid state drive (‘SSD’) in a redundant array of inexpensive drives (‘RAID’)
US10705952B2 (en) User space data storage management
US9336153B2 (en) Computer system, cache management method, and computer
US20170124077A1 (en) Flash module provided with database operation unit, and storage device
US20170031631A1 (en) Storage device and method of operating the same
US20130054840A1 (en) Tag allocation for queued commands across multiple devices
US11048662B2 (en) User device including storage device and trim management method thereof
WO2017126003A1 (ja) 複数種類のメモリデバイスを含む計算機システム及び方法
US9195658B2 (en) Managing direct attached cache and remote shared cache
US20150082014A1 (en) Virtual Storage Devices Formed by Selected Partitions of a Physical Storage Device
US10346070B2 (en) Storage control apparatus and storage control method
US9213644B2 (en) Allocating enclosure cache in a computing system
US20150268858A1 (en) Computer system, cash data management method, and computer
CN106155583B (zh) 缓存固态设备读取请求结果的系统和方法
JP6200100B2 (ja) 計算機システム
US9529721B2 (en) Control device, and storage system
US9933944B2 (en) Information processing system and control method of information processing system
KR20170130180A (ko) 비휘발성 메모리를 이용한 데이터처리 장치 및 방법
KR101887663B1 (ko) 더미 페이지를 이용한 데이터 처리 방법 및 장치
WO2018083751A1 (ja) インテリジェント・ストレージ・サブシステム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14890965

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016515788

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15126693

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14890965

Country of ref document: EP

Kind code of ref document: A1