(57)【要約】      （修正有）【課題】半導体メモリへの読み書きを行うためのコマンドを送信する送信元装置からのコマンド発行回数を削減し、負荷を軽減する記憶装置を提供する。【解決手段】情報処理システム１において記憶装置１０は、半導体メモリ１０４−１〜１０４−４と、メモリコントローラ１００を備える。メモリコントローラは、論理アドレスを複数の物理アドレスに変換する情報１１１を備え、送信元装置２から演算コマンドを受信すると、演算コマンド処理部１１２が情報１１１に基づいて、論理アドレスを物理アドレスに変換し、演算コマンドを複数のコマンドに分割する。【選択図】図１
2019191863.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリと、
前記半導体メモリを制御するメモリコントローラとを備え、
前記メモリコントローラが、
論理アドレスを複数の物理アドレスに変換する情報を備え、
演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する
ことを特徴とする、記憶装置
【請求項２】
前記メモリコントローラが、
論理アドレスを用いて前記半導体メモリにおけるアクセス先を指定する１つの第１演算コマンドに基づき、データアクセスサイズ単位で前記半導体メモリにおけるアクセス先を指定する複数の第２演算コマンドを作成し、
前記第２演算コマンドに従って、前記半導体メモリが記憶するデータをデータアクセスサイズ単位で処理する
ことを特徴とする、請求項１記載の記憶装置。
【請求項３】
前記メモリコントローラが、前記情報を前記演算コマンドの送信元装置から受信する
ことを特徴とする、請求項１または２記載の記憶装置。
【請求項４】
前記メモリコントローラが、前記演算コマンドの実行に先だって、当該演算コマンドの処理に用いられる部分の前記情報を前記演算コマンドの送信元装置から受信する
ことを特徴とする、請求項３記載の記憶装置。
【請求項５】
半導体メモリと、
前記半導体メモリを制御するメモリコントローラとを備える記憶装置において、
前記メモリコントローラのプロセッサに、
論理アドレスを複数の物理アドレスに変換する情報を記憶し、
演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する
処理を実行させる、情報処理プログラム。
【請求項６】
情報処理装置と、
前記情報処理装置と通信可能に接続され、半導体メモリと、前記半導体メモリを制御するメモリコントローラとを備える記憶装置と
を備える情報処理システムであって、
前記情報処理装置が、前記記憶装置に対して演算コマンドを発行し、
前記記憶装置において、前記メモリコントローラが、
論理アドレスを複数の物理アドレスに変換する情報を備え、
前記情報処理装置から前記演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する
ことを特徴とする、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置，情報処理プログラムおよび情報処理システムに関する。
【背景技術】
【０００２】
近年、ＳＳＤ（Solid State Drive）において、ハードウェアで実装されていたフラッシュメモリ制御部としての機能をソフトウェアで実装し、ＳＳＤのフラッシュメモリをソフトウェアから直接制御できるようにしたソフトウェア制御型ＳＳＤが提案されている。なお、ソフトウェア制御型ＳＳＤをソフトウェア定義型ＳＳＤという場合がある。
【０００３】
図８はソフトウェア制御型ＳＳＤの構成を示す図である。
【０００４】
ＳＳＤ３００は、フラッシュメモリコントローラ３０２及びフラッシュメモリ３２２−１〜３２２−４を備える。フラッシュメモリ３２２−１〜３２２−４としては、例えば、不揮発性メモリであるＮＡＮＤフラッシュメモリが用いられる。
【０００５】
フラッシュメモリコントローラ３０２は、ホストインタフェース（ホストＩ／Ｆ）３３１およびフラッシュメモリインタフェース（フラッシュメモリＩ／Ｆ）３３２−１，３３２−２を備える。フラッシュメモリＩ／Ｆ３３２−１は、ホストＩ／Ｆ３３１およびフラッシュメモリ３２２−１，３２２−２に接続され、フラッシュメモリＩ／Ｆ３３２−２は、ホストＩ／Ｆ３３１およびフラッシュメモリ３２２−３，３２２−４に接続されている。
【０００６】
以下では、フラッシュメモリ３２２−１〜３２２−４のいずれかを指して、フラッシュメモリ３２２と記載することがある。また、フラッシュメモリＩ／Ｆ３３２−１，３３２−２のいずれかを指して、フラッシュメモリＩ／Ｆ３３２と記載することがある。
【０００７】
各フラッシュメモリ３２２におけるデータの消去単位はブロックと呼ばれ、データの読み書き単位はページと呼ばれる。１ブロックのサイズは、例えば、数Ｍバイトであり、１ページのサイズは、例えば、数Ｋバイトから十数Ｋバイトである。
【０００８】
フラッシュメモリＩ／Ｆ３３２−１は、フラッシュメモリ３２２−１，３２２−２から読み出されるデータの誤り訂正を行なう。一方、フラッシュメモリＩ／Ｆ３３２−２は、フラッシュメモリ３２２−３、３２２−４から読み出されるデータの誤り訂正を行なう。
【０００９】
フラッシュメモリ３２２から読み出されたデータは、フラッシュメモリＩ／Ｆ３３２を介してホストＩ／Ｆ３３１に入力される。
【００１０】
ホスト装置３０１において実行されるアプリケーション３１１やライブラリ３１２は、フラッシュメモリ３２２の物理アドレスを、ソフトウェア側から直接指定することで、フラッシュメモリ３２２に対するデータアクセスを行なう。
【００１１】
これにより、アプリケーション３１１やライブラリ３１２は、フラッシュメモリ３２２に対するデータのリードやライトを細かく制御することができ、アプリケーション３１１やライブラリ３１２に応じた最適化されたデータアクセスをフラッシュメモリ３２２に対して行なうことができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１８−５６８６号公報
【特許文献２】特開２００３−２０３４８６号公報
【特許文献３】特開２０１０−１６０６０５号公報
【特許文献４】米国特許出願公開第２０１０／０１７４９５１号明細書
【特許文献５】特開２０１５−７８４３号公報
【非特許文献】
【００１３】
【非特許文献１】Jaeyoung Do, Yang-Suk Kee, Jignesh M. Patel, Chanik Park, Kwanghyun Park, David J. DeWitt: “Query Processing on Smart SSDs: Opportunities and Challenges,” SIGMOD ’13, 2013 ACM SIGMOD International Conference on Management of Data, pages 1221-1230, June 22 - 27, 2013
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、このような従来のソフトウェア制御型ＳＳＤにおいて、アプリケーション３１１やライブラリ３１２からのフラッシュメモリ３２２への読み書きはページ単位で行なわれる。そして、フラッシュメモリ３２２における検索対象データの格納場所はアプリケーション３１１が管理しているので、アプリケーション３１１等がフラッシュメモリ３２２のページ毎に検索コマンドを発行する必要がある。すなわち、ホスト装置３０１からＳＳＤ３００へのコマンド発行回数が多くなり、ホスト装置３０１のＣＰＵ（Central Processing Unit）負荷が高くなるという課題がある。
【００１５】
また、フラッシュメモリのページサイズは一般に数ＫＢ〜十数ＫＢであるため、アクセス対象のデータサイズが大きい場合には、さらにコマンド発行数が増大する。
【００１６】
例えば、ページサイズが8KBである場合に、データサイズが8MBであると1024ページとなり、データサイズが8GBでは約105万（＝1024×1024）となる。
【００１７】
１つの側面では、本発明は、コマンド発行回数を削減し、負荷を軽減することができるようにすることを目的とする。
【課題を解決するための手段】
【００１８】
このため、この記憶装置は、半導体メモリと、前記半導体メモリを制御するメモリコントローラとを備える。前記メモリコントローラが、論理アドレスを複数の物理アドレスに変換する情報を備え、演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する。
【発明の効果】
【００１９】
一実施形態によれば、コマンド発行回数を削減し、負荷を軽減することができる。
【図面の簡単な説明】
【００２０】
【図１】実施形態の一例としての情報処理システムの構成を例示する図である。
【図２】実施形態の一例としての情報処理システムにおける変換情報を例示する図である。
【図３】実施形態の一例としての情報処理システムのＳＳＤにおける演算処理時の各部の処理の概要を説明するためのシーケンス図である。
【図４】実施形態の一例としての情報処理システムにおけるホストＩ／Ｆによる処理を説明するためのフローチャートである。
【図５】実施形態の一例としての情報処理システムのＳＳＤにおける演算処理時の各部の処理の変形例の概要を説明するためのシーケンス図である。
【図６】実施形態の一例としての情報処理システムにおける変換情報の変形例を示す図である。
【図７】実施形態の一例としての情報処理システムにおける変換情報の変形例を示す図である。
【図８】ソフトウェア制御型ＳＳＤの構成を示す図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照して本記憶装置，情報処理プログラムおよび情報処理システムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態および各変形例を組み合わせる等）して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２２】
（Ａ）構成
図１は実施形態の一例としてのソフトウェア定義型ＳＳＤ１０を備える情報処理システム１の構成を例示する図である。
図１に示す情報処理システム１は、ホスト装置２およびソフトウェア定義型ＳＳＤ１０を備え、ビッグデータ処理、データベースアプライアンス、ストレージシステム等の様々な技術に適用することができる。
【００２３】
［ホスト装置］
ホスト装置２は、例えばサーバ機能を備えた情報処理装置であり、ＣＰＵ２０および記憶装置２３を備え、ソフトウェア定義型ＳＳＤ１０に通信可能に接続される。
【００２４】
記憶装置２３は、例えば、メモリやＨＤＤ（Hard Disk Drive）であり、種々のデータやＯＳ（Operating System），プログラムを格納する。そして、この記憶装置２３に変換情報１１１が格納される。
【００２５】
変換情報１１１は、ＳＳＤ１０における物理アドレスと論理アドレスとを対応付ける情報である。
【００２６】
図２は実施形態の一例としての情報処理システム１における変換情報１１１を例示する図である。
【００２７】
図２に例示する変換情報１１１において、論理アドレスは１６進数で表され、論理ブロックアドレス（ＬＢＡ：Logical Block Addressing）で表される。物理アドレスはＳＳＤ１０における物理位置情報であり、チャネル番号，チップ番号，ブロック番号およびページ番号の組み合わせで表される。
【００２８】
この図２に示す例においては、例えば、論理アドレス“000000 - 3fffff”は物理アドレス“0,0,0,0 - 0,0,0,255”に対応する。
【００２９】
変換情報１１１は、この変換情報１１１をＳＳＤ１０のレジスタ等の図示しない記憶装置に保存させる設定コマンドとともに、ホスト装置２からＳＳＤ１０に対して送信される。
【００３０】
変換情報１１１は、例えば、ＳＳＤ１０においてフラッシュメモリ１０４に書き込みが行なわれる度に更新される。
【００３１】
ホスト装置２は、変換情報１１１が更新されると、更新後の変換情報１１１をＳＳＤ１０に設定コマンドとともに速やかに送信することが望ましい。
【００３２】
ＳＳＤ１０において、後述する演算コマンド処理部１１２は、ホスト装置２から送信された変換情報１１１を図示しないレジスタ等の記憶装置に格納する。
【００３３】
ＣＰＵ２０は種々の制御や演算を行なう処理装置であり、例えば、アプリケーション２１またはライブラリ２２を実行することで、ソフトウェア定義型ＳＳＤ１０が提供する記憶領域に対して読み出しや書き込み等のデータアクセスを行なう。以下、アプリケーション２１またはライブラリ２２のことを単にアプリケーション２１等という場合がある。
【００３４】
アプリケーション２１等は、ＳＳＤ１０の物理情報を管理し、ウェアレベリング及びガーベージコレクションを制御する。これにより、データをＳＳＤ１０のフラッシュメモリ１０４−１〜１０４−４に分散して配置することが可能になり、高スループットかつ低レイテンシの高速な読み出し処理等が実現される。
【００３５】
ホスト装置２は、ＳＳＤ１０にデータを登録する場合、複数のフラッシュメモリ１０４に分散してデータを書き込み、書き込みアドレスを記録する。すなわち、ホスト装置２においてアプリケーション２１等は、ＳＳＤ１０に対して、書き込みを目的とするデータアクセス命令を発行する。
【００３６】
例えば、ホスト装置２は、ＳＳＤ１０に登録されたデータを使用する場合、読み出し命令または演算命令をＳＳＤ１０に発行する。
【００３７】
また、ホスト装置２において、アプリケーション２１等はＳＳＤ１０に対して演算の実行を指示する演算命令（演算コマンド）を発行する。
【００３８】
演算命令が実行を指示する演算としては、例えば、ＳＳＤ１０のフラッシュメモリ１０４−１〜１０４−４が記憶するデータの検索や、データに対する統計演算等が挙げられる。本情報処理システム１において、アプリケーション２１等がＳＳＤ１０に発行する演算コマンドは、論理アドレス（ＬＢＡ：Logical Block Addressing）を用いてアクセス先の範囲領域を指定する演算命令であってもよい。
【００３９】
以下、演算が検索である例について示す。すなわち、ホスト装置２のアプリケーション２１等は、ＳＳＤ１０に対して、演算コマンドとして検索コマンドを発行する。
【００４０】
このような検索コマンドにおいては、ＳＳＤ１０のフラッシュメモリ１０４−１〜１０４−４の記憶領域における検索対象の範囲領域（アクセス先）を論理アドレスを用いて指定してキーワードの検索を指示してもよい。
【００４１】
従来のソフトウェア制御型ＳＳＤの使用に際しては、ホスト装置２のアプリケーション２１等は、ＳＳＤ１０に対してＳＳＤ１０におけるページ単位で演算コマンドを発行する。すなわち、検索対象の範囲領域が複数ページにわたる場合には、検索対象のページ数と同数の検索コマンドが発行される。なお、ページは、フラッシュメモリ１０４に対してデータの書き込みや読み出しが行なわれる単位サイズ（データアクセスサイズ，読み書きサイズ）の領域であり、一般に数ＫＢから十数ＫＢのデータサイズを有する。
【００４２】
これに対して、本情報処理システム１においては、ホスト装置２のアプリケーション２１等は、ソフトウェア制御型ＳＳＤ１０に対してページ単位の多数の演算コマンドを発行する代わりに、論理アドレスを用いてアクセス先を指定する１つの演算コマンドを発行してもよい。以下、アプリケーション２１やライブラリ２２から発行される論理アドレスを用いてアクセス先を指定する演算コマンドを範囲指定演算コマンド（第１演算コマンド）という場合がある。
【００４３】
本情報処理システム１において、ホスト装置２のアプリケーション２１やライブラリ２２は、複数ページをアクセス先とする１つの範囲指定演算コマンドを発行してもよい。
【００４４】
例えば、ホスト装置２のアプリケーション２１やライブラリ２２は、ＳＳＤ１０に対して、論理アドレス“000000”を始点とするサイズ“0x100000”の範囲領域（アクセス先）を検索対象とする１つの検索コマンドをＳＳＤ１０に対して発行する。
【００４５】
ホスト装置２は、ＳＳＤ１０にデータを登録する場合、複数のフラッシュメモリ１０４に分散してデータを書き込み、書き込みアドレスを記録する。一方、ＳＳＤ１０に登録されたデータを使用する場合、ホスト装置２は、読み出し命令または演算命令をＳＳＤ１０に発行する。
【００４６】
また、ホスト装置２は、記憶装置２３に格納した変換情報１１１をフラッシュメモリコントローラ１００に送信して、フラッシュメモリコントローラ１００のレジスタ等に格納させる設定コマンドを発行する機能を有する。
【００４７】
［ＳＳＤ］
ソフトウェア定義型ＳＳＤ１０は、フラッシュメモリコントローラ１００および１つ以上（図１に示す例では４つ）のフラッシュメモリ１０４−１〜１０４−４を備える。以下、ソフトウェア定義型ＳＳＤ１０を単にＳＳＤ１０という場合がある。
【００４８】
フラッシュメモリ１０４−１〜１０４−４は半導体メモリである。フラッシュメモリ１０４−１〜１０４−４としては、例えば、不揮発性メモリであるＮＡＮＤフラッシュメモリが用いられる。
【００４９】
以下、フラッシュメモリを示す符号としては、複数のフラッシュメモリのうち１つを特定する必要があるときには符号１０４−１〜１０４−４を用いるが、任意のフラッシュメモリを指すときには符号１０４を用いる。
【００５０】
フラッシュメモリ１０４においては、ページ単位（例えば、数ＫＢ〜十数ＫＢ）でデータの書き込みや読み出しが行なわれ、ブロック単位（例えば、数ＭＢ）でデータの消去が行なわれる。
【００５１】
フラッシュメモリコントローラ１００は、フラッシュメモリ１０４−１〜１０４−４に対するデータアクセスを制御する。フラッシュメモリコントローラ１００は、ホストＩ／Ｆ１０１，フラッシュメモリＩ／Ｆ１０３−１，１０３−２，演算コマンド処理部１１２，変換情報１１１及び１つ以上（図１に示す例では２つ）の演算部１０２−１，１０２−２を備える。
【００５２】
ホストＩ／Ｆ１０１は、ホスト装置２，フラッシュメモリＩ／Ｆ１０３−１，１０３−２および演算コマンド処理部１１２に接続されている。フラッシュメモリＩ／Ｆ１０３−１は、ホストＩ／Ｆ１０１、演算部１０２−１およびフラッシュメモリ１０４−１，１０４−２に接続されている。また、フラッシュメモリＩ／Ｆ１０３−２は、ホストＩ／Ｆ１０１、演算部１０２−２およびフラッシュメモリ１０４−３，１０４−４に接続されている。
【００５３】
以下、フラッシュメモリＩ／Ｆを示す符号としては、複数のフラッシュメモリＩ／Ｆのうち１つを特定する必要があるときには符号１０３−１，１０３−２を用いるが、任意のフラッシュメモリＩ／Ｆを指すときには符号１０３を用いる。さらに、以下、演算部を示す符号としては、複数の演算部のうち１つを特定する必要があるときには符号１０２−１，１０２−２を用いるが、任意の演算部を指すときには符号１０２を用いる。
【００５４】
フラッシュメモリ１０４−１〜１０４−４としては、例えば、不揮発性メモリであるＮＡＮＤフラッシュメモリが用いられる。
【００５５】
ホストＩ／Ｆ１０１は、ホスト装置２との間で行なわれる通信を制御する。
例えば、ホスト装置２から読み出し命令を受信した場合、ホストＩ／Ｆ１０１は、データの転送先に指定した読み出し命令を、アクセス先のフラッシュメモリ１０４に対応するフラッシュメモリＩ／Ｆ１０３へ出力する。ホストＩ／Ｆ１０１は、フラッシュメモリＩ／Ｆ１０３から受信したデータをホスト装置２へ転送する。
【００５６】
演算部１０２は、データに対する所定の演算を行なう。演算部１０２としての機能は、例えば回路装置により実現してもよい。
【００５７】
演算部１０２が行なう演算としては、例えば、フラッシュメモリ１０４が記憶するデータの検索や、データに対する統計演算等が挙げられる。
【００５８】
演算部１０２は、これらの機能を実現するための既知の回路装置の組み合わせにより実現してもよい。
【００５９】
前述の如く、本実施形態においては、演算部１０２がフラッシュメモリ１０４が記憶するデータの検索を行なう例について示す。
【００６０】
演算部１０２は、後述する演算コマンド処理部１１２から受信するページ単位演算コマンドに従って、フラッシュメモリ１０４が記憶するデータをページ単位で処理（演算）する。
【００６１】
演算部１０２は、フラッシュメモリＩ／Ｆ１０３から受信したデータを用いて演算を行なって、演算結果を演算コマンド処理部１１２へ出力する。
【００６２】
本ＳＳＤ１０においては、演算部１０２を備え、従来においてはホスト装置において実行される演算をこの演算部１０２によって実行することで、データ（フラッシュメモリ１０４）の近くで演算を行なうデータ近傍演算（Near Data Processing）を実現する。
【００６３】
このようなデータ近傍演算においては、ＳＳＤ１０からホスト装置２へのデータの移動コストが削減されることで、高性能化および省電力化を実現することができる。また、ホスト装置２における演算による負荷を軽減することできる。
【００６４】
フラッシュメモリＩ／Ｆ１０３は、フラッシュメモリ１０４とメモリコントローラ１００との間で行なわれる通信を制御する。具体的には、フラッシュメモリＩ／Ｆ１０３−１は、フラッシュメモリコントローラ１００とフラッシュメモリ１０４−１，１０４−２との間で行なわれる通信を制御する。また、フラッシュメモリＩ／Ｆ１０３−２は、フラッシュメモリコントローラ１００とフラッシュメモリ１０４−３，１０４−４との間で行なわれる通信を制御する。
【００６５】
例えば、ホスト装置２からの読み出し命令をホストＩ／Ｆ１０１を介して受信した場合、フラッシュメモリＩ／Ｆ１０３は、読み出し命令をフラッシュメモリ１０４へ出力し、フラッシュメモリ１０４は、データをフラッシュメモリＩ／Ｆ１０３へ出力する。そして、フラッシュメモリＩ／Ｆ１０３は、フラッシュメモリ１０４から受信したデータをホストＩ／Ｆ１０１へ出力する。
【００６６】
また、 フラッシュメモリＩ／Ｆ１０３−１は、フラッシュメモリ１０４−１及びフラッシュメモリ１０４−２から読み出されるデータの誤り訂正を行なう。一方、フラッシュメモリＩ／Ｆ１０３−２は、フラッシュメモリ１０４−３及びフラッシュメモリ１０４−４から読み出されるデータの誤り訂正を行なう。
【００６７】
さらに、フラッシュメモリＩ／Ｆ１０３は、フラッシュメモリ１０４から受信したデータを演算部１０２へ出力する。
【００６８】
演算コマンド処理部１１２は、ホスト装置２から受信した範囲指定演算コマンド（第１演算コマンド）に基づき、演算部１０２に実行させる複数のコマンド（第２演算コマンド）を作成する。演算コマンド処理部１１２は、ホスト装置２が発行した論理アドレスを用いてフラッシュメモリ１０４におけるアクセス先を指定する１つの範囲指定演算コマンドに基づき、ページ単位でフラッシュメモリ１０４におけるアクセス先を指定する複数の演算コマンドを作成する。
【００６９】
具体的には、演算コマンド処理部１１２は、範囲指定演算コマンドに含まれる論理アドレスに基づいて変換情報１１１を参照して物理アドレスに変換し、物理アドレスであるページをアクセス先とする（ページ単位の）複数の演算コマンドを作成する。以下、範囲指定演算コマンドに基づいて作成されたページ単位の演算コマンドをページ単位演算コマンドという場合がある。
【００７０】
演算コマンド処理部１１２は、１つの範囲指定演算コマンドを、そのアクセス先をページ単位に分割することで複数のページ単位演算コマンドに分割すると言える。
【００７１】
例えば、図２に例示する変換情報１１１において、論理アドレス=000000を始点とするサイズ=0x1000000 （16MiB）の記憶領域を処理対象として指定する演算コマンド（範囲指定演算コマンド）に基づいて、ページ単位演算コマンドを作成する例について示す。
【００７２】
なお、１ブロックは256ページで構成され、１ページのサイズが16KiB（キビバイト）であるものとする。
【００７３】
演算コマンド処理部１１２は、変換情報１１１を参照して範囲指定演算コマンドの論理アドレスを物理アドレスに変換する。
【００７４】
これにより、論理アドレス“000000 - 3fffff”は物理アドレス“(0,0,0,0) - (0,0,0,255)”に変換される。
【００７５】
同様にして、論理アドレス“400000 - 7fffff”は物理アドレス“(1,0,0,0) - (1,0,0,255)”に、論理アドレス“800000 - bfffff”は物理アドレス“(2,0,0,0) - (2,0,0,255)”に、論理アドレス“c00000 - ffffff”は物理アドレス“(3,0,0,0) - (3,0,0,255)”に、それぞれ変換される。
【００７６】
演算コマンド処理部１１２は、変換された物理アドレスを参照し、この物理アドレスにおける各ページをそれぞれアクセス先とする演算コマンドを作成することで、ページ毎の演算コマンド（ページ単位演算コマンド）を作成する。
【００７７】
演算コマンド処理部１１２は、論理アドレスの範囲に対応する物理アドレスの範囲に含まれるページのそれぞれ毎にページ単位読み出しコマンドを作成する。
【００７８】
本例においては、演算コマンド処理部１１２は、以下の各ページに対応する1024個のページ単位演算コマンドを作成する。
(0,0,0,0), (0,0,0,1), ..., (0,0,0,255)
(1,0,0,0), (1,0,0,1), ..., (1,0,0,255)
(2,0,0,0), (2,0,0,1), ..., (2,0,0,255)
(3,0,0,0), (3,0,0,1), ..., (3,0,0,255)
【００７９】
本実施形態においては、演算コマンドが指定範囲に対してキーワード検索を行なう検索コマンドであるので、演算コマンド処理部１１２は、上記の各ページをそれぞれの処理対象領域とする1024個のページ単位読み出しコマンドおよび1024個のページ単位検索コマンドを作成する。
【００８０】
ページ単位検索コマンドは、フラッシュメモリ１０４からページ単位でデータを読み出すためのコマンドである。このページ単位読み出しコマンドをフラッシュメモリＩ／Ｆ１０３に発行することで、フラッシュメモリＩ／Ｆ１０３に処理対象領域として指定するページのデータをフラッシュメモリ１０４から読み出させる。
【００８１】
ページ単位検索コマンドは、ページ単位読み出しコマンドによって読み出されたページ単位のデータに対して検索を行なうためのコマンドである。このページ単位検索コマンドを演算部１０２に発行することで、フラッシュメモリ１０４から読み出されたページ単位のデータを演算部１０２に予め設定されたキーワードを用いて検索を行なわせる。
【００８２】
演算コマンド処理部１１２は、範囲指定演算コマンドを分割して複数のページ単位演算コマンド（ページ単位読み出しコマンド，ページ単位検索コマンド）を作成するということができる。
【００８３】
演算コマンド処理部１１２は、作成したページ単位読み出しコマンドをフラッシュメモリＩ／Ｆ１０３に発行する。
【００８４】
また、演算コマンド処理部１１２は、演算部１０２から受信した演算結果をホスト装置２へ転送する機能を有する。
【００８５】
（Ｂ）動作
上述の如く構成された実施形態の一例としての情報処理システム１のＳＳＤ１０における演算処理時の各部の処理の概要を、図３に示すシーケンス図に従って説明する。
【００８６】
なお、本処理に先だって、ホスト装置２がＳＳＤ１０に対して変換情報１１１を保存させる設定コマンドを発行し、ホストＩ／Ｆ１０１が、ホスト装置２から受信した変換情報１１１を演算コマンド処理部１１２に転送する。演算コマンド処理部１１２は、転送された変換情報１１１を図示しないレジスタ等の記憶装置に格納する。
【００８７】
ホスト装置２が演算コマンドとして検索コマンドを検索キーであるキーワードとともにＳＳＤ１０に発行する。この検索コマンドは、論理アドレスを用いてアクセス先の範囲領域を指定して検索を指示する範囲指定演算コマンドである。演算部１０２は、ホストＩ／Ｆ１０１から受け取ったキーワードをレジスタ等の記憶装置に格納する。
【００８８】
ホストＩ／Ｆ１０１は、演算部１０２にキーワードを設定する。キーワードは例えば、図示しないレジスタ等の記憶装置に格納される（矢印Ａ１参照）。
【００８９】
演算コマンド処理部１１２は、ホストＩ／Ｆ１０１が受信した範囲指定演算コマンド（検索コマンド）に基づき（分割して）、複数のページ単位演算コマンド（ページ単位読み出しコマンド）を作成する（矢印Ａ２参照）。
【００９０】
具体的には、演算コマンド処理部１１２は、範囲指定演算コマンドに含まれる論理アドレスに基づいて変換情報１１１を参照することで、処理対象領域を物理アドレスに変換して複数のページに分割する。
【００９１】
演算コマンド処理部１１２は、例えば、ホスト装置２から受信した演算コマンドの処理対象を、分割して得た複数のページに逐次書き換えることで、複数のページ単位読み出しコマンドを作成する。
【００９２】
演算コマンド処理部１１２は、作成した複数のページ単位読み出しコマンドをフラッシュメモリＩ／Ｆ１０３に発行する（矢印Ａ３参照）。この際、フラッシュメモリ１０４から読み出したデータの転送先を演算部１０２に設定する。
【００９３】
フラッシュメモリＩ／Ｆ１０３は、フラッシュメモリ１０４にページ単位読み出しコマンドを発行する（矢印Ａ４参照）。これにより、フラッシュメモリ１０４からページ転移でデータの読み出しが開始される。フラッシュメモリ１０４から読み出されたデータはフラッシュメモリＩ／Ｆ１０３に転送される（矢印Ａ５参照）。
【００９４】
フラッシュメモリＩ／Ｆ１０３は、フラッシュメモリ１０４に発行したページ単位読み出しコマンドに対する応答として、フラッシュメモリ１０４から転送されたデータを演算部１０２に転送する（矢印Ａ６参照）。
【００９５】
フラッシュメモリ１０４から演算部１０２へのデータ転送は、例えば、数十バイト単位で行なわれる。
【００９６】
また、フラッシュメモリＩ／Ｆ１０３は、フラッシュメモリ１０４から完了通知（読み出し完了）を受け取ると、ホストＩ／Ｆ１０１に完了通知（読み出し完了）を送信する。
【００９７】
演算部１０２は、フラッシュメモリ１０４から転送されたデータに対して、設定されたキーワードを用いて検索を行なう（矢印Ａ７参照）。すなわち、演算部１０２は、フラッシュメモリＩ／Ｆ１０３から受け取ったデータにおいて、キーワードに一致するデータが存在するかを調べる。キーワードに一致するデータが見つかった場合には、そのデータの位置をレジスタ等の記憶装置に記録する。
【００９８】
演算部１０２は、データ転送の終了時に、検索結果を演算コマンド処理部１１２に転送する（矢印Ａ８参照）。演算部１０２は、複数のページ単位読み出しコマンドに対する応答をまとめて演算コマンド処理部１１２に転送してもよい。また、演算部１０２は、複数のページ単位読み出しコマンドに対する応答をフラッシュメモリＩ／Ｆ１０３から転送される都度、順次、演算コマンド処理部１１２に転送してもよい。
【００９９】
演算コマンド処理部１１２は、演算部１０２から転送された検索結果をホストＩ／Ｆ１０１を経由してホスト装置２に応答する（矢印Ａ９参照）。
【０１００】
次に、実施形態の一例としての情報処理システム１におけるホストＩ／Ｆ１０１による処理を、図４に示すフローチャート（ステップＳ１〜Ｓ１１）に従って説明する。
【０１０１】
ホストＩ／Ｆ１０１がホスト装置２からコマンドを受信すると、ホストＩ／Ｆ１０１は、受信したコマンドの種類を確認する（ステップＳ１）。
【０１０２】
ステップＳ１における確認の結果、受信したコマンドが検索コマンド（範囲指定検索コマンド）である場合には（ステップＳ１の“検索”ルート参照）、ステップＳ２に移行する。
【０１０３】
ステップＳ２において、ホストＩ／Ｆ１０１は、データ（応答データ）の転送先を演算部１０２に設定する。
【０１０４】
一方、ステップＳ１における確認の結果、受信したコマンドが読み出しコマンドである場合には（ステップＳ１の“読み出し”ルート参照）、ステップＳ３に移行する。ステップＳ３においては、ホストＩ／Ｆ１０１は、ホストＩ／Ｆ１０１をデータ（応答データ）の転送先として設定する。すなわち、ホストＩ／Ｆ１０１は、ホストＩ／Ｆ１０１をデータの転送先として指定した読み出し命令を、アクセス先のフラッシュメモリ１０４に対応するフラッシュメモリＩ／Ｆ１０３へ出力する。
【０１０５】
ステップＳ４において、ホストＩ／Ｆ１０１は、ホスト装置２から受信したコマンドを演算コマンド処理部１１２に対して発行する。
【０１０６】
ステップＳ５において、ホストＩ／Ｆ１０１は、ホスト装置２から受信したコマンドが読み出しコマンドであるかを確認する。確認の結果、コマンドが読み出しコマンドでない場合には（ステップＳ５のＮＯルート参照）、ステップＳ８に移行する。
【０１０７】
一方、ステップＳ５における確認の結果、コマンドが読み出しである場合には（ステップＳ５のＹＥＳルート参照）、ステップＳ６に移行する。ホストＩ／Ｆ１０１は、フラッシュメモリＩ／Ｆ１０３からデータを受け取り（ステップＳ６）、受け取ったデータをホスト装置２に転送する（ステップＳ７）。
【０１０８】
ステップＳ８において、フラッシュメモリＩ／Ｆ１０３が全てのデータの転送を完了すると、ホストＩ／Ｆ１０１は、このフラッシュメモリＩ／Ｆ１０３から完了通知を受け取る。
【０１０９】
ステップＳ９において、ホストＩ／Ｆ１０１は、ホスト装置２から受信したコマンドが検索コマンドであるかを確認する。確認の結果、コマンドが検索コマンドである場合には（ステップＳ９のＹＥＳルート参照）、ステップＳ１０に移行する。
【０１１０】
ステップＳ１０において、ホストＩ／Ｆ１０１は、演算コマンド処理部１１２から検索結果を受け取り、ステップＳ１１において、ホスト装置２に検索結果を応答する。
【０１１１】
また、ステップＳ９における確認の結果、コマンドが検索コマンドでない場合には（ステップＳ９のＮＯルート参照）、ステップＳ１１において、ホストＩ／Ｆ１０１は、例えば、読み出しコマンドや書き込みコマンドに対する結果（成功／失敗）を示すコマンドステータスをホスト装置２に応答する。
【０１１２】
（Ｃ）効果
このように、実施形態の一例としての情報処理システム１によれば、ＳＳＤ１０のフラッシュメモリコントローラ１００が演算コマンド処理部１１２を備え、ホスト装置２から発行される範囲指定演算コマンドに基づき、複数のページ単位読み出しコマンドを作成する。
【０１１３】
これにより、ホスト装置２において、１つの範囲指定演算コマンドを送信するだけで、ソフトウェア定義型ＳＳＤ１０の複数ページを対象とする演算処理を実行させることができる。従って、ホスト装置２におけるソフトウェア定義型ＳＳＤ１０に対するコマンド発行回数を削減することができ、ホスト装置２のＣＰＵ２０の負荷を軽減することができる。
【０１１４】
例えば、演算対象データのサイズが16MiBであり、ページ単位読み出しコマンドサイズが16KiBである場合に、従来手法では、ホスト装置２が16MiB×16KiB=1024回の演算コマンドを発行するところを、本情報処理システム１においては、１つの範囲指定演算コマンドを発行すればよい。
【０１１５】
また、ホスト装置２においてＣＰＵ２０によるコマンド発行の負荷が軽減することで、ＣＰＵ２０が他のタスクを処理することができ、ホスト装置２の全体の処理を高速化することができる。
【０１１６】
さらに、ホスト装置２の負荷が軽減することで、消費電力も削減することができる。
【０１１７】
（Ｄ）その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１１８】
例えば、変換情報１１１は、ＳＳＤ１０に対して１つに限定されるものではなく、複数備えてもよい。すなわち、アプリケーション２１毎やＶＭ（Virtual Machine：仮想マシン）毎に変換情報１１１を備えてもよい。
【０１１９】
変換情報１１１を複数備える場合には、ホスト装置２のアプリケーション２１やライブラリ２２は、演算コマンド処理部１１２が使用する変換情報１１１を指定して範囲指定演算コマンドの転送を行なうことが望ましい。
【０１２０】
また、上述した実施形態においては、ホスト装置２が変換情報１１１を管理し、ホスト装置２は、予め変換情報１１１の全体をＳＳＤ１０に転送して、フラッシュメモリコントローラ１０１００のレジスタ等に格納しているが、これに限定されるものではない。
【０１２１】
ホスト装置２は、変換情報１１１のうち、演算コマンドの対象となる範囲領域に対応する一部分だけを抽出してＳＳＤ１０に転送してもよい。以下、変換情報１１１のうち演算コマンドの対象となる範囲領域に対応する一部分を部分変換情報１１１という場合がある。
【０１２２】
図５は実施形態の一例としての情報処理システム１のＳＳＤ１０における演算処理時の各部の処理の変形例の概要を説明するためのシーケンス図である。
【０１２３】
なお、図中、既述の符号と同一の符号を付した処理は同様の部分を示しているので、その説明は省略する。
【０１２４】
本変形例においては、ホストＩ／Ｆ１０１が、演算部１０２にキーワードを設定した後に（矢印Ａ１参照）、演算コマンド処理部１１２は、ホスト装置２から送信された部分変換情報１１１をホストＩ／Ｆ１０１から読み込み（矢印Ａ２１参照）、レジスタ等に格納する。
【０１２５】
その後、演算コマンド処理部１１２は、ホストＩ／Ｆ１０１が受信した範囲指定演算コマンド（検索コマンド）に基づき（分割して）、複数のページ単位演算コマンド（ページ単位読み出しコマンド）を作成する（矢印Ａ２２参照）。
【０１２６】
具体的には、演算コマンド処理部１１２は、範囲指定演算コマンドに含まれる論理アドレスに基づいて部分変換情報１１１を参照することで、処理対象領域を物理アドレスに変換して複数のページに分割する。
【０１２７】
演算コマンド処理部１１２は、例えば、ホスト装置２から受信した演算コマンドの処理対象を、分割して得た複数のページに逐次書き換えることで、複数のページ単位読み出しコマンドを作成する。
【０１２８】
本変形例においては、ホスト装置２からＳＳＤ１０に対して、変換情報１１１の全体を転送する代わりに、その一部のみを転送することで、転送に要する時間や通信帯域等の負荷を軽減することができる。また、変換情報１１１の全体を転送する代わりに、その一部のみを転送することは、フラッシュメモリ１０４への書き込みが頻繁に行なわれ、変換情報１１１の更新頻度が高い場合に特に有効である。
【０１２９】
ホスト装置２は、範囲領域に対応する一部分の変換情報１１１の転送を、範囲指定演算コマンドの発行に先立って行なってもよく、また、範囲指定演算コマンドとともにＳＳＤ１０に転送してもよい。
【０１３０】
また、図２に例示した変換情報１１１においては、一の論理アドレスに対して一の物理アドレスが対応付けられているが、これに限定されるものではなく、種々変形して実施することができる。
【０１３１】
図６および図７はそれぞれ実施形態の一例としての情報処理システム１における変換情報１１１の変形例を示す図である。
【０１３２】
変換情報１１１においては、論理アドレスには任意のアドレッシングが可能である。図６に例示する変換情報１１１は、一の論理アドレスに対して複数（図６に示す例では２つ）の範囲領域の物理アドレスが対応付けられている。
【０１３３】
これにより、ホスト装置２のアプリケーション２１やライブラリ２２が範囲指定演算コマンドにおいて１つの論理アドレスを用いた範囲指定演算コマンドを発行することで、ＳＳＤ１０において演算コマンド処理部１１２が、２つの範囲領域のそれぞれに対応するページ単位読み出しコマンドを発行する。
【０１３４】
図６に示す例において、例えば、ホスト装置２のアプリケーション２１やライブラリ２２が範囲指定演算コマンドにおいて１つの論理アドレス“0”を用いた範囲指定演算コマンドを発行すると、ＳＳＤ１０において演算コマンド処理部１１２が、物理アドレス“0,0,0,0 - 0,0,0,255”および“1,0,0,0 - 1,0,0,255”の各範囲に含まれるページのそれぞれ毎にページ単位読み出しコマンドを作成する。
【０１３５】
また、図７に例示する変換情報１１１は、一の論理アドレスに対して２つのページの物理アドレスが対応付けられている。
【０１３６】
図７に示す例において、例えば、ホスト装置２のアプリケーション２１やライブラリ２２が範囲指定演算コマンドにおいて１つの論理アドレス“0”を用いた範囲指定演算コマンドを発行すると、ＳＳＤ１０において演算コマンド処理部１１２が、物理アドレス“0,0,0,0”および“1,0,0,0”の各ページのそれぞれ毎にページ単位読み出しコマンドを作成する。
【０１３７】
上述した実施形態および変形例において、演算コマンド処理部１１２や演算部１０２の少なくとも一部は、上述した機能を実現するための既知の回路装置の組み合わせにより実現してもよい。
【０１３８】
また、演算コマンド処理部１１２や演算部１０２としての機能をＣＰＵやＭＰＵ（Micro-processor Unit）等のプロセッサ（図示省略）がプログラム（情報処理プログラム，演算コプログラム）を実行することで実現してもよく、種々変形して実施することができる。
【０１３９】
なお、これらの演算コマンド処理部１１２および演算部１０２としての機能を実現するためのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【０１４０】
演算コマンド処理部１１２および演算部１０２としての機能を実現する際には、内部記憶装置（本実施形態ではＳＳＤ１０の図示しないメモリ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＳＳＤ１０のプロセッサ）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【０１４１】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１４２】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１４３】
（付記１）
半導体メモリと、
前記半導体メモリを制御するメモリコントローラとを備え、
前記メモリコントローラが、
論理アドレスを複数の物理アドレスに変換する情報を備え、
演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する
ことを特徴とする、記憶装置。
【０１４４】
（付記２）
前記メモリコントローラが、
論理アドレスを用いて前記半導体メモリにおけるアクセス先を指定する１つの第１演算コマンドに基づき、データアクセスサイズ単位で前記半導体メモリにおけるアクセス先を指定する複数の第２演算コマンドを作成し、
前記第２演算コマンドに従って、前記半導体メモリが記憶するデータをデータアクセスサイズ単位で処理する
ことを特徴とする、付記１記載の記憶装置。
【０１４５】
（付記３）
前記メモリコントローラが、前記情報を前記演算コマンドの送信元装置から受信する
ことを特徴とする、付記１または２記載の記憶装置。
【０１４６】
（付記４）
前記メモリコントローラが、前記演算コマンドの実行に先だって、当該演算コマンドの処理に用いられる部分の前記情報を前記演算コマンドの送信元装置から受信する
ことを特徴とする、付記３記載の記憶装置。
【０１４７】
（付記５）
半導体メモリと、
前記半導体メモリを制御するメモリコントローラとを備える記憶装置において、
前記メモリコントローラのプロセッサに、
論理アドレスを複数の物理アドレスに変換する情報を記憶し、
演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する
処理を実行させる、情報処理プログラム。
【０１４８】
（付記６）
前記プロセッサに、
論理アドレスを用いて前記半導体メモリにおけるアクセス先を指定する１つの第１演算コマンドに基づき、データアクセスサイズ単位で前記半導体メモリにおけるアクセス先を指定する複数の第２演算コマンドを作成し、
前記第２演算コマンドに従って、前記半導体メモリが記憶するデータをデータアクセスサイズ単位で処理する
処理を実行させる、付記５記載の情報処理プログラム。
【０１４９】
（付記７）
前記プロセッサに、前記情報を前記演算コマンドの送信元装置から受信する
処理を実行させる、付記５または６記載の情報処理プログラム。
【０１５０】
（付記８）
前記プロセッサに、前記演算コマンドの実行に先だって、当該演算コマンドの処理に用いられる部分の前記情報を前記演算コマンドの送信元装置から受信する
処理を実行させる、付記７記載の情報処理プログラム。
【０１５１】
（付記９）
情報処理装置と、
前記情報処理装置と通信可能に接続され、半導体メモリと、前記半導体メモリを制御するメモリコントローラとを備える記憶装置と
を備える情報処理システムであって、
前記情報処理装置が、前記記憶装置に対して演算コマンドを発行し、
前記記憶装置において、前記メモリコントローラが、
論理アドレスを複数の物理アドレスに変換する情報を備え、
前記情報処理装置から前記演算コマンドを受信すると、前記情報に基づいて、前記演算コマンドを複数のコマンドに分割する
ことを特徴とする、情報処理システム。
【０１５２】
（付記１０）
前記情報処理装置が、前記記憶装置に対して、論理アドレスを用いて前記半導体メモリにおけるアクセス先を指定する１つの第１演算コマンドを発行し、
前記記憶装置において、前記メモリコントローラが、
前記第１演算コマンドに基づき、データアクセスサイズ単位で前記半導体メモリにおけるアクセス先を指定する複数の第２演算コマンドを作成し、
前記第２演算コマンドに従って、前記半導体メモリが記憶するデータをデータアクセスサイズ単位で処理する
ことを特徴とする、付記９記載の情報処理システム。
【０１５３】
（付記１１）
前記情報処理装置が、前記情報を格納し、前記情報を前記記憶装置に送信する
ことを特徴とする、付記９または１０記載の情報処理システム。
【０１５４】
（付記１２）
前記情報処理装置が、前記演算コマンドの発行に先だって、格納した前記情報のうち、当該演算コマンドの処理に用いられる部分を前記記憶装置に送信する
ことを特徴とする、付記１１記載の情報処理システム。
【符号の説明】
【０１５５】
１    情報処理システム
２    ホスト装置
２１    アプリケーション
２２    ライブラリ
１０    ＳＳＤ
１１    プロセッサ
１００    フラッシュメモリコントローラ
１０１    ホストインタフェース（Ｉ／Ｆ）
１０２−１，１０２−２，１０２    演算部
１０３−１，１０３−２，１０３    フラッシュメモリインタフェース（Ｉ／Ｆ）
１０４−１〜１０４−４，１０４    フラッシュメモリ
１１１    変換情報
１１２    演算コマンド処理部
【図１】
2019191863.tif 000003
【図２】
2019191863.tif 000004
【図３】
2019191863.tif 000005
【図４】
2019191863.tif 000006
【図５】
2019191863.tif 000007
【図６】
2019191863.tif 000008
【図７】
2019191863.tif 000009
【図８】
2019191863.tif 000010