特許第6790515号(P6790515)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許6790515-ソリッドステートドライブ 図000002
  • 特許6790515-ソリッドステートドライブ 図000003
  • 特許6790515-ソリッドステートドライブ 図000004
  • 特許6790515-ソリッドステートドライブ 図000005
  • 特許6790515-ソリッドステートドライブ 図000006
  • 特許6790515-ソリッドステートドライブ 図000007
  • 特許6790515-ソリッドステートドライブ 図000008
  • 特許6790515-ソリッドステートドライブ 図000009
  • 特許6790515-ソリッドステートドライブ 図000010
  • 特許6790515-ソリッドステートドライブ 図000011
  • 特許6790515-ソリッドステートドライブ 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6790515
(24)【登録日】2020年11月9日
(45)【発行日】2020年11月25日
(54)【発明の名称】ソリッドステートドライブ
(51)【国際特許分類】
   G06F 12/00 20060101AFI20201116BHJP
   G06F 3/08 20060101ALI20201116BHJP
   G06F 3/06 20060101ALI20201116BHJP
【FI】
   G06F12/00 560F
   G06F12/00 597U
   G06F3/08 H
   G06F3/06 301N
【請求項の数】5
【全頁数】15
(21)【出願番号】特願2016-133603(P2016-133603)
(22)【出願日】2016年7月5日
(65)【公開番号】特開2018-5686(P2018-5686A)
(43)【公開日】2018年1月11日
【審査請求日】2019年4月9日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】桑村 慎哉
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 国際公開第2015/166540(WO,A1)
【文献】 特開2003−203486(JP,A)
【文献】 特表2005−537551(JP,A)
【文献】 米国特許出願公開第2002/0138676(US,A1)
【文献】 特表2006−526227(JP,A)
【文献】 国際公開第2005/026925(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 3/06 − 3/08
(57)【特許請求の範囲】
【請求項1】
データを記憶するメモリと、
前記メモリから前記データを読み出すメモリインタフェースと、
前記データに対する所定の演算を行う演算部と、
ホスト装置から演算命令を受信したとき、前記演算部へ演算要求を出力するとともに前記メモリインタフェースを介して前記メモリへ読み出し命令を出力し、前記メモリインタフェースにより前記メモリから読み出されて前記演算部へ直接転送される前記データに対する前記所定の演算の演算結果を、前記演算部から受信し、前記演算結果を前記ホスト装置へ出力するホストインタフェースと、
を備えることを特徴とするソリッドステートドライブ。
【請求項2】
前記読み出し命令は、前記演算部を、前記メモリから読み出される前記データの転送先に指定する命令であることを特徴とする請求項1記載のソリッドステートドライブ。
【請求項3】
前記演算部は、複数の異なる演算をそれぞれ行う複数の演算回路を含み、前記ホストインタフェースは、前記複数の演算回路のうち前記演算命令に対応する前記所定の演算を行う特定の演算回路に対して、前記演算要求を出力し、前記特定の演算回路から前記演算結果を受信することを特徴とする請求項1又は2記載のソリッドステートドライブ。
【請求項4】
前記演算命令は、検索対象を含む検索命令であり、前記所定の演算は、前記メモリから読み出される前記データと前記検索対象とを比較する演算であり、前記演算結果は、前記メモリから読み出される前記データに前記検索対象が含まれるか否かを示すことを特徴とする請求項1乃至3のいずれか1項に記載のソリッドステートドライブ。
【請求項5】
前記演算命令は、統計値を要求する演算命令であり、前記所定の演算は、前記メモリから読み出される前記データの前記統計値を求める演算であり、前記演算結果は、前記演算部が求めた前記統計値を含むことを特徴とする請求項1乃至3のいずれか1項に記載のソリッドステートドライブ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソリッドステートドライブ(SSD)に関する。
【背景技術】
【0002】
近年、情報処理装置において、ストレージからCentral Processing Unit(CPU)へデータを移動して演算を行う代わりに、データの近くに演算回路を設けて演算を行う、データ近傍演算(Near Data Processing)が提案されている。
【0003】
図1は、CPUにおける演算とデータ近傍演算の例を示している。CPU101が演算を行う場合、図1(a)に示すように、CPU101は、ストレージ102からデータを読み出し、読み出したデータを用いて演算を行う。ストレージ102としては、ハードディスクドライブ(HDD)、SSD等の記憶装置が用いられる。SSDは、半導体メモリを用いた記憶装置である。
【0004】
一方、データ近傍演算では、図1(b)に示すように、演算機能がCPU101からストレージ102へ移動する。この場合、CPU101は、ストレージ102に対して演算命令を出力し、ストレージ102内に設けられた演算回路が、データに対する演算を行う。
【0005】
このようなデータ近傍演算では、データ移動コストが削減されるため、高性能かつ省電力の演算処理を期待することができる。このため、データ近傍演算専門のワークショップが開催される等、研究が活発化している。
【0006】
図2は、データ近傍演算を行う従来のSSDの構成例を示している(例えば、非特許文献1を参照)。図2のSSD201は、フラッシュメモリコントローラ211及びフラッシュメモリ212−1〜フラッシュメモリ212−4を含む。フラッシュメモリ212−1〜フラッシュメモリ212−4としては、例えば、不揮発性メモリであるNANDフラッシュメモリが用いられる。
【0007】
フラッシュメモリコントローラ211は、ホストインタフェース(ホストIF)221、Dynamic Random Access Memory(DRAM)222、及びプロセッサ223を含む。さらに、フラッシュメモリコントローラ211は、フラッシュメモリインタフェース(フラッシュメモリIF)224−1及びフラッシュメモリIF224−2を含む。フラッシュメモリIF224−1は、フラッシュメモリ212−1及びフラッシュメモリ212−2に接続され、フラッシュメモリIF224−2は、フラッシュメモリ212−3及びフラッシュメモリ212−4に接続されている。
【0008】
以下では、フラッシュメモリ212−1〜フラッシュメモリ212−4のいずれかを指して、フラッシュメモリ212と記載することがある。また、フラッシュメモリIF224−1又はフラッシュメモリIF224−2のいずれかを指して、フラッシュメモリIF224と記載することがある。各フラッシュメモリ212は、チップと呼ばれ、フラッシュメモリIF224とフラッシュメモリ212との間の伝送路は、チャネルと呼ばれる。したがって、SSD201のチップ数は、フラッシュメモリ212の個数を表し、チャネル数は、フラッシュメモリIF224の個数を表す。
【0009】
各フラッシュメモリ212におけるデータの消去単位はブロックと呼ばれ、データの読み書き単位はページと呼ばれる。1ブロックのサイズは、例えば、数Mバイトであり、1ページのサイズは、例えば、数Kバイトから十数Kバイトである。
【0010】
フラッシュメモリIF224−1は、フラッシュメモリ212−1及びフラッシュメモリ212−2から読み出されるデータの誤り訂正を行う。一方、フラッシュメモリIF224−2は、フラッシュメモリ212−3及びフラッシュメモリ212−4から読み出されるデータの誤り訂正を行う。
【0011】
プロセッサ223は、書き換え回数が多いブロックと少ないブロックとを交換するウェアレベリングを行うことで、書き換え回数を平準化する。また、プロセッサ223は、DRAM222を用いて、ブロック中の不要ページを解放するガーベージコレクションを行う。
【0012】
一般に、SSD201のチップ数、チャネル数、ブロックサイズ、ページサイズ等の物理情報は、CPU等のホスト装置から隠蔽されている。
【0013】
ホストIF221は、ホスト装置(不図示)から演算命令を受信すると、受信した演算命令をプロセッサ223へ出力する。プロセッサ223は、フラッシュメモリ212からデータを読み出してDRAM222に格納し、そのデータを用いて演算を行う。そして、プロセッサ223は、ホストIF221を介して演算結果を主記憶装置(不図示)に格納する。
【0014】
フラッシュメモリ装置内でデータの検索を実行する構成も知られている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2003−203486号公報
【非特許文献】
【0016】
【非特許文献1】Jaeyoung Do et al.,“Query Processing on Smart SSDs: Opportunities and Challenges,”SIGMOD’13, pages 1221-1230, 2013.
【発明の概要】
【発明が解決しようとする課題】
【0017】
図2のSSD201を用いた場合、ホスト装置は、フラッシュメモリ212を直接制御する代わりに、プロセッサ223を介して間接的にフラッシュメモリ212を制御する。このため、SSD201の物理情報がホスト装置から隠蔽され、ホスト装置は、フラッシュメモリ212−1〜フラッシュメモリ212−4のデータ配置を最適化することが困難である。さらに、フラッシュメモリコントローラ211は、データ近傍演算を行う際に、フラッシュメモリ212から読み出したデータを一旦DRAM222に格納してから、演算を行う。したがって、データ近傍演算が低速になる。
【0018】
なお、かかる問題は、フラッシュメモリを用いたSSDに限らず、他の半導体メモリを用いたSSDにおいても生ずるものである。
【0019】
1つの側面において、本発明は、SSDにおいて、データの読み出しと同程度の速度でデータに対する演算を行うことを目的とする。
【課題を解決するための手段】
【0020】
1つの案では、ソリッドステートドライブは、データを記憶するメモリと、メモリからデータを読み出すメモリインタフェースと、データに対する所定の演算を行う演算部と、ホストインタフェースとを含む。
【0021】
ホストインタフェースは、ホスト装置から演算命令を受信したとき、演算部へ演算要求を出力するとともに、メモリインタフェースを介してメモリへ読み出し命令を出力する。そして、ホストインタフェースは、メモリインタフェースを介してメモリから読み出されるデータに対する所定の演算の演算結果を、演算部から受信し、演算結果をホスト装置へ出力する。
【発明の効果】
【0022】
実施形態によれば、SSDにおいて、データの読み出しと同程度の速度でデータに対する演算を行うことができる。
【図面の簡単な説明】
【0023】
図1】CPUにおける演算とデータ近傍演算を示す図である。
図2】従来のSSDの構成図である。
図3】ソフトウェア定義型SSDの構成図である。
図4】実施形態のSSDの構成図である。
図5】情報処理装置の構成図である。
図6】ホストIFの動作のフローチャートである。
図7】演算命令を受信した場合の動作シーケンスを示す図である。
図8】データの検索を行う演算部の構成図である。
図9】データに対する統計演算を行う演算部の構成図である。
図10】複数の異なる演算を行う演算部の構成図である。
図11】複数のフラッシュメモリIFを含む情報処理装置の構成図である。
【発明を実施するための形態】
【0024】
以下、図面を参照しながら、実施形態を詳細に説明する。
図3は、ソフトウェアによってフラッシュメモリを直接制御することができるソフトウェア定義型SSDの構成例を示している。図3のホスト装置301は、アプリケーション311又はライブラリ312を実行し、SSD302は、フラッシュメモリコントローラ321及びフラッシュメモリ322−1〜フラッシュメモリ322−4を含む。フラッシュメモリコントローラ321は、ホストIF331、フラッシュメモリIF332−1、及びフラッシュメモリIF332−2を含む。
【0025】
この場合、ホスト装置301のアプリケーション311又はライブラリ312がSSD302の物理情報を管理し、ウェアレベリング及びガーベージコレクションを制御する。これにより、ホスト装置301がデータをフラッシュメモリ322−1〜フラッシュメモリ322−4に分散して配置することが可能になり、高スループットかつ低レイテンシの高速な読み出し処理等が実現される。また、フラッシュメモリコントローラ321内にDRAMを設ける必要がないため、フラッシュメモリコントローラ321の回路規模を削減することができる。
【0026】
しかし、図3のSSD302では、ウェアレベリング及びガーベージコレクションのためのプロセッサ及びDRAMが存在しないため、別の技術によってデータ近傍演算を行うことが望まれる。
【0027】
図4は、実施形態のSSDの構成例を示している。図4のSSD401は、ホストIF411、演算部412、メモリIF413、及びメモリ414を含む。メモリ414は、データを記憶し、メモリIF413は、メモリ414からデータを読み出し、演算部412は、データに対する所定の演算を行う。
【0028】
ホストIF411は、ホスト装置から演算命令を受信したとき、演算部412へ演算要求を出力するとともに、メモリIF413を介してメモリ414へ読み出し命令を出力する。そして、ホストIF411は、メモリIF413を介してメモリ414から読み出されるデータに対する所定の演算の演算結果を、演算部412から受信し、演算結果をホスト装置へ出力する。
【0029】
図4のSSD401によれば、データの読み出しと同程度の速度でデータに対する演算を行うことができる。
【0030】
図5は、図4のSSD401を用いた情報処理装置の構成例を示している。図5の情報処理装置501は、ホスト装置511及びSSD512を含み、ビッグデータ処理、データベースアプライアンス、ストレージシステム等の様々な技術に適用することができる。ホスト装置511は、アプリケーション、ライブラリ等のプログラムを実行する制御部521を含む。SSD512は、ソフトウェア定義型SSDであり、フラッシュメモリコントローラ531、フラッシュメモリ532−1、及びフラッシュメモリ532−2を含む。フラッシュメモリコントローラ531は、ホストIF541、演算部542、及びフラッシュメモリIF543を含む。
【0031】
ホストIF541は、制御部521、演算部542、及びフラッシュメモリIF543に接続されており、フラッシュメモリIF543は、ホストIF541、演算部542、フラッシュメモリ532−1、及びフラッシュメモリ532−2に接続されている。
【0032】
以下では、フラッシュメモリ532−1又はフラッシュメモリ532−2のいずれかを指して、フラッシュメモリ532と記載することがある。ホストIF541、演算部542、フラッシュメモリIF543、及びフラッシュメモリ532は、図4のホストIF411、演算部412、メモリIF413、及びメモリ414にそれぞれ対応する。
【0033】
ホスト装置511の制御部521は、SSD512にデータを登録する場合、フラッシュメモリ532−1及びフラッシュメモリ532−2に分散してデータを書き込み、書き込みアドレスを記録する。一方、SSD512に登録されたデータを使用する場合、制御部521は、読み出し命令又は演算命令をSSD512に発行する。
【0034】
フラッシュメモリコントローラ531のホストIF541は、ホスト装置511から読み出し命令を受信した場合、ホストIF541をデータの転送先に指定した読み出し命令をフラッシュメモリIF543へ出力する。次に、フラッシュメモリIF543は、読み出し命令をフラッシュメモリ532へ出力し、フラッシュメモリ532は、データをフラッシュメモリIF543へ出力する。そして、フラッシュメモリIF543は、フラッシュメモリ532から受信したデータをホストIF541へ出力し、ホストIF541は、フラッシュメモリIF543から受信したデータをホスト装置511へ転送する。
【0035】
また、ホストIF541は、ホスト装置511から演算命令を受信した場合、演算部542へ演算要求を出力し、演算部542をデータの転送先に指定した読み出し命令をフラッシュメモリIF543へ出力する。次に、フラッシュメモリIF543は、読み出し命令をフラッシュメモリ532へ出力し、フラッシュメモリ532は、データをフラッシュメモリIF543へ出力する。
【0036】
次に、フラッシュメモリIF543は、フラッシュメモリ532から受信したデータを演算部542へ出力し、演算部542は、フラッシュメモリIF543から受信したデータを用いて演算を行って、演算結果をホストIF541へ出力する。そして、ホストIF541は、演算部542から受信した演算結果をホスト装置511へ転送する。演算部542が行う演算としては、例えば、フラッシュメモリ532が記憶するデータの検索、データに対する統計演算等が挙げられる。
【0037】
図6は、図5のホストIF541が読み出し命令又は演算命令を受信した場合に行う動作の例を示すフローチャートである。ホストIF541は、ホスト装置511から命令を受信すると(ステップ601)、受信した命令が読み出し命令又は演算命令のいずれであるかをチェックする(ステップ602)。
【0038】
受信した命令が演算命令である場合(ステップ602,YES)、ホストIF541は、演算部542へ演算要求を出力する(ステップ603)。そして、ホストIF541は、演算部542をデータの転送先に指定した読み出し命令を生成し(ステップ604)、生成した読み出し命令をフラッシュメモリIF543へ出力する(ステップ605)。
【0039】
一方、受信した命令が読み出し命令である場合(ステップ602,NO)、ホストIF541は、ホストIF541をデータの転送先に指定した読み出し命令を生成する(ステップ610)。そして、ホストIF541は、生成した読み出し命令をフラッシュメモリIF543へ出力する(ステップ605)。
【0040】
次に、ホストIF541は、フラッシュメモリIF543からデータを受信したか否かをチェックする(ステップ606)。フラッシュメモリIF543からデータを受信しない場合(ステップ606,NO)、ホストIF541は、フラッシュメモリIF543から完了通知を受信する(ステップ607)。一方、フラッシュメモリIF543からデータを受信した場合(ステップ606,YES)、ホストIF541は、受信したデータをホスト装置511へ転送し(ステップ611)、フラッシュメモリIF543から完了通知を受信する(ステップ607)。
【0041】
次に、ホストIF541は、演算部542から演算結果を受信したか否かをチェックする(ステップ608)。演算部542から演算結果を受信した場合(ステップ608,YES)、ホストIF541は、受信した演算結果を、演算命令に対する応答としてホスト装置511へ出力する(ステップ609)。ホストIF541は、ステップ607の完了通知よりも前に、演算結果を演算部542から受信することもある。
【0042】
一方、演算部542から演算結果を受信しない場合(ステップ608,NO)、ホストIF541は、読み出し命令に対する応答をホスト装置511へ出力する(ステップ612)。読み出し命令に対する応答には、例えば、正常終了、エラー発生数等が含まれる。
【0043】
図7は、図5のホストIF541が演算命令を受信した場合の動作シーケンスの例を示している。まず、ホストIF541は、演算部542へ演算要求を出力し(手順701)、演算部542をデータの転送先に指定した読み出し命令を、フラッシュメモリIF543へ出力する(手順702)。そして、フラッシュメモリIF543は、読み出し命令をフラッシュメモリ532へ出力する(手順703)。
【0044】
次に、フラッシュメモリ532は、受信した読み出し命令に従って、所定単位毎にデータをフラッシュメモリIF543へ転送するデータ転送を開始する(手順704)。そして、フラッシュメモリIF543は、フラッシュメモリ532から受信したデータを所定単位毎に演算部542へ転送するデータ転送を開始する(手順705)。所定単位は、例えば、数十バイトであってもよい。
【0045】
演算部542は、フラッシュメモリIF543からデータを受信しながら、受信したデータを用いて演算を行い、フラッシュメモリIF543からのデータ転送が終了すると、演算結果をホストIF541へ出力する(手順706)。
【0046】
フラッシュメモリ532は、フラッシュメモリIF543に対するデータ転送が終了すると、完了通知をフラッシュメモリIF543へ出力する。フラッシュメモリIF543は、フラッシュメモリ532から完了通知を受信すると、完了通知をホストIF541へ出力する。フラッシュメモリIF543からホストIF541への完了通知は、手順706よりも前に出力されることもあり、手順706よりも後に出力されることもある。
【0047】
図5の情報処理装置501によれば、演算部542をデータの転送先に指定した読み出し命令をフラッシュメモリIF543へ出力することで、演算部542がフラッシュメモリIF543からデータを直接受信しながら演算を行うことが可能になる。このため、演算命令に対するスループットは、読み出し速度と同程度になる。
【0048】
また、演算命令に対するレイテンシは演算処理の追加により増加するが、読み出しレイテンシが十分大きいため、実際には読み出しレイテンシとほぼ同程度になる。例えば、演算処理が検索処理である場合、読み出しレイテンシが数百μs程度であるのに対して、演算処理による増加分は数百ns程度である。
【0049】
したがって、フラッシュメモリコントローラ531は、演算命令に対する演算処理を、データの読み出しと同程度の速度で行うことができる。
【0050】
また、図5のSSD512はソフトウェア定義型SSDであるため、ソフトウェアによってフラッシュメモリを直接制御することができ、フラッシュメモリコントローラ531内にDRAMを設ける必要はない。
【0051】
図8は、データの検索を行う演算部542の構成例を示している。図8の演算部542は、キーワードレジスタ801、比較回路802、及びバッファ803を含む。ホスト装置511の制御部521は、検索対象を含む検索命令をSSD512に発行する。検索対象としては、例えば、キーワード811が用いられる。
【0052】
フラッシュメモリコントローラ531のホストIF541は、キーワード811を含む検索命令を受信した場合、キーワード811を含む検索要求を演算部542へ出力する。演算部542は、受信した検索要求に含まれるキーワード811をキーワードレジスタ801に格納し、フラッシュメモリIF543から受信した所定単位のデータ812をバッファ803に格納する。
【0053】
比較回路802は、キーワードレジスタ801に格納されたキーワード811と、バッファ803に格納されたデータ812とを比較して、キーワード811と一致するデータがデータ812に含まれているか否かをチェックする。したがって、フラッシュメモリIF543から所定単位のデータ812を受信する度に、検索処理が行われる。データ812にキーワード811が含まれている場合、比較回路802は、キーワード811と一致するデータが格納されているフラッシュメモリ532内の位置を記録する。
【0054】
そして、フラッシュメモリIF543からのデータ転送が終了すると、比較回路802は、HIT又はMISSを含む検索結果813をホストIF541へ出力する。HITは、フラッシュメモリ532内のデータにキーワード811が含まれていることを示し、MISSは、フラッシュメモリ532内のデータにキーワード811が含まれていないことを示す。データにキーワード811が含まれている場合、検索結果813は、HITとともに、フラッシュメモリ532内のデータの位置を示す情報を含む。
【0055】
図8の演算部542によれば、検索命令に対する検索処理を、データの読み出しと同程度の速度で行うことができる。
【0056】
図9は、データに対する統計演算を行う演算部542の構成例を示している。図9の演算部542は、統計演算回路901、バッファ902、及び結果レジスタ903を含む。ホスト装置511の制御部521は、統計値を要求する統計演算命令をSSD512に発行する。統計値としては、データの合計値、平均値、中央値、最大値、最小値等が用いられる。統計値は、所定条件を満たすデータの個数(カウント値)であってもよい。
【0057】
例えば、統計演算命令がデータの合計値を要求する集計命令である場合、フラッシュメモリコントローラ531のホストIF541は、集計要求を演算部542へ出力する。演算部542は、フラッシュメモリIF543から受信した所定単位のデータ911をバッファ902に格納する。結果レジスタ903は、データの合計値を記憶し、その合計値の初期値は0に設定される。
【0058】
統計演算回路901は、バッファ902に格納されたデータ911の合計値を計算し、計算した合計値を結果レジスタ903内の合計値に加算する。したがって、フラッシュメモリIF543から所定単位のデータ812を受信する度に集計処理が行われ、結果レジスタ903内の合計値が更新される。そして、フラッシュメモリIF543からのデータ転送が終了すると、結果レジスタ903は、合計値を含む統計演算結果912をホストIF541へ出力する。
【0059】
統計演算命令がデータの平均値等の他の統計値を要求する命令である場合も、集計命令の場合と同様に、結果レジスタ903は、データの統計値を記憶する。そして、フラッシュメモリIF543から所定単位のデータ812を受信する度に統計処理が行われ、結果レジスタ903内の統計値が更新される。
【0060】
図9の演算部542によれば、統計演算命令に対する統計処理を、データの読み出しと同程度の速度で行うことができる。
【0061】
図10は、複数の異なる演算を行う演算部542の構成例を示している。図10の演算部542は、演算回路1001−1及び演算回路1001−2を含む。演算回路1001−1及び演算回路1001−2は、それぞれ異なる種類の演算を行う。例えば、演算回路1001−1は、データの検索を行ってもよく、演算回路1001−2は、データに対する統計演算を行ってもよい。
【0062】
ホストIF541は、ホスト装置511から演算命令を受信した場合、受信した演算命令に対応する演算を行う演算回路1001−i(i=1,2)へ演算要求を出力する。そして、ホストIF541は、演算回路1001−iをデータの転送先に指定した読み出し命令をフラッシュメモリIF543へ出力する。
【0063】
フラッシュメモリIF543は、フラッシュメモリ532から受信したデータを演算回路1001−iへ出力し、演算回路1001−iは、フラッシュメモリIF543から受信したデータを用いて演算を行って、演算結果をホストIF541へ出力する。そして、ホストIF541は、演算回路1001−iから受信した演算結果をホスト装置511へ転送する。
【0064】
この場合、図6のステップ603において、ホストIF541は、演算回路1001−1及び演算回路1001−2のうち、演算命令に対応する演算を行う演算回路1001−iへ演算要求を出力する。そして、ステップ604において、ホストIF541は、演算要求の出力先の演算回路1001−iをデータの転送先に指定した読み出し命令を生成する。また、ステップ608において、ホストIF541は、演算要求の出力先の演算回路1001−iから演算結果を受信したか否かをチェックする。
【0065】
図10の演算部542によれば、演算命令に応じて演算回路1001−iを選択することができ、選択した演算回路1001−iに対応する演算を、データの読み出しと同程度の速度で行うことができる。
【0066】
図11は、複数のフラッシュメモリIFを含む情報処理装置の構成例を示している。図11の情報処理装置1101は、ホスト装置511及びSSD1111を含み、ホスト装置511は、制御部521を含む。SSD1111は、ソフトウェア定義型SSDであり、フラッシュメモリコントローラ1121及びフラッシュメモリ1122−1〜フラッシュメモリ1122−4を含む。フラッシュメモリコントローラ1121は、ホストIF1131、演算部1132−1、演算部1132−2、フラッシュメモリIF1133−1、及びフラッシュメモリIF1133−2を含む。
【0067】
ホストIF1131は、制御部521、演算部1132−1、演算部1132−2、フラッシュメモリIF1133−1、及びフラッシュメモリIF1133−2に接続されている。フラッシュメモリIF1133−1は、ホストIF1131、演算部1132−1、演算部1132−2、フラッシュメモリ1122−1、及びフラッシュメモリ1122−2に接続されている。フラッシュメモリIF1133−2は、ホストIF1131、演算部1132−1、演算部1132−2、フラッシュメモリ1122−3、及びフラッシュメモリ1122−4に接続されている。
【0068】
以下では、フラッシュメモリ1122−1〜フラッシュメモリ1122−4のいずれかを指して、フラッシュメモリ1122と記載することがある。また、フラッシュメモリIF1133−1又はフラッシュメモリIF1133−2のいずれかを指して、フラッシュメモリIF1133と記載することがある。さらに、演算部1132−1又は演算部1132−2のいずれかを指して、演算部1132と記載することがある。
【0069】
ホストIF1131、演算部1132、フラッシュメモリIF1133、及びフラッシュメモリ1122は、図4のホストIF411、演算部412、メモリIF413、及びメモリ414にそれぞれ対応する。
【0070】
ホスト装置511の制御部521の動作は、図5の場合と同様である。フラッシュメモリコントローラ1121のホストIF1131は、ホスト装置511から読み出し命令を受信した場合、ホストIF1131をデータの転送先に指定した読み出し命令をフラッシュメモリIF1133へ出力する。
【0071】
次に、フラッシュメモリIF1133は、読み出し命令をフラッシュメモリ1122へ出力し、フラッシュメモリ1122は、データをフラッシュメモリIF1133へ出力する。そして、フラッシュメモリIF1133は、フラッシュメモリ1122から受信したデータをホストIF1131へ出力し、ホストIF1131は、フラッシュメモリIF1133から受信したデータをホスト装置511へ転送する。
【0072】
また、ホストIF1131は、ホスト装置511から演算命令を受信した場合、演算部1132−i(i=1,2)へ演算要求を出力し、演算部1132−iをデータの転送先に指定した読み出し命令をフラッシュメモリIF1133−iへ出力する。次に、フラッシュメモリIF1133−iは、読み出し命令をフラッシュメモリ1122へ出力し、フラッシュメモリ1122は、データをフラッシュメモリIF1133−iへ出力する。
【0073】
次に、フラッシュメモリIF1133−iは、フラッシュメモリ1122から受信したデータを演算部1132−iへ出力し、演算部1132−iは、フラッシュメモリIF1133−iから受信したデータを用いて演算を行って、演算結果をホストIF1131へ出力する。そして、ホストIF1131は、演算部1132−iから受信した演算結果をホスト装置511へ転送する。
【0074】
図11の情報処理装置1101によれば、フラッシュメモリIF1133毎に演算部1132を設けることで、各フラッシュメモリIF1133に接続されたフラッシュメモリ1122のグループを対象として、演算処理を行うことができる。
【0075】
図3のSSD302、図4のSSD401、図5の情報処理装置501、及び図11の情報処理装置1101の構成は一例に過ぎず、SSD又は情報処理装置の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。例えば、SSD302、情報処理装置501、又は情報処理装置1101において、フラッシュメモリの代わりにRandom Access Memory(RAM)等の別の半導体メモリを用いて、データを記憶してもよい。
【0076】
SSD302、情報処理装置501、又は情報処理装置1101において、各フラッシュメモリIFに接続されるフラッシュメモリの個数は、2個に限定されるものではない。情報処理装置501は、単一のフラッシュメモリ532を含んでいてもよく、3個以上のフラッシュメモリ532を含んでいてもよい。情報処理装置1101は、3個以上の演算部1132と3個以上のフラッシュメモリIF1133とを含んでいてもよい。また、情報処理装置1101は、5個以上のフラッシュメモリ1122を含んでいてもよい。
【0077】
図8及び図9の演算部542の構成は一例に過ぎず、演算部542の構成は、演算の種類に応じて変化する。演算部542が行う演算は、所定のパターンで指定されたデータを抽出する処理であってもよい。
【0078】
図10の演算部542の構成は一例に過ぎず、演算回路の個数は、SSD又は情報処理装置の用途又は条件に応じて変化する。演算部542は、3個以上の異なる演算をそれぞれ行う3個以上の演算回路を含んでいてもよい。
【0079】
図6のフローチャートは一例に過ぎず、SSD又は情報処理装置の構成又は条件に応じて一部の処理を省略又は変更してもよい。図7の動作シーケンスは一例に過ぎず、SSD又は情報処理装置の構成又は条件に応じて別の動作が行われることもある。
【0080】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【0081】
101 CPU
102 ストレージ
201、401、512、1111 SSD
211、321、531、1121 フラッシュメモリコントローラ
212−1〜212−4、322−1〜322−4、532−1、532−2、1122−1〜1122−4 フラッシュメモリ
221、331、411、541、1131 ホストIF
222 DRAM
223 プロセッサ
224−1、224−2、332−1、332−2、543、1133−1、1133−2 フラッシュメモリIF
301、511 ホスト装置
311 アプリケーション
312 ライブラリ
412、542、1132−1、1132−2 演算部
413 メモリIF
414 メモリ
501、1101 情報処理装置
512 制御部
801 キーワードレジスタ
802 比較回路
803、902 バッファ
811 キーワード
812、911 データ
813 検索結果
901 統計演算回路
903 結果レジスタ
912 統計演算結果
1001−1、1001−2 演算回路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11