JP7000712B2 - データ転送装置およびデータ転送方法 - Google Patents

データ転送装置およびデータ転送方法 Download PDF

Info

Publication number
JP7000712B2
JP7000712B2 JP2017121593A JP2017121593A JP7000712B2 JP 7000712 B2 JP7000712 B2 JP 7000712B2 JP 2017121593 A JP2017121593 A JP 2017121593A JP 2017121593 A JP2017121593 A JP 2017121593A JP 7000712 B2 JP7000712 B2 JP 7000712B2
Authority
JP
Japan
Prior art keywords
storage medium
address
access
data transfer
access request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017121593A
Other languages
English (en)
Other versions
JP2019008418A (ja
Inventor
周吾 小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2017121593A priority Critical patent/JP7000712B2/ja
Publication of JP2019008418A publication Critical patent/JP2019008418A/ja
Application granted granted Critical
Publication of JP7000712B2 publication Critical patent/JP7000712B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、記憶媒体へのアクセス制御技術に関するものであり、特に、仮想的な記憶媒体を介して記憶媒体にアクセスする技術に関するものである。
多くの計算機システムにおいて、記憶媒体に対するアクセスおよび格納されたデータの管理における利便性向上を目的として、物理的な記憶媒体から仮想的な記憶媒体である仮想記憶媒体を構築する技術が用いられている。
計算機システムにおいて、ファイルシステムは、一連のデータをファイルとして記憶媒体上の記憶領域にマッピングする。ファイルシステムは、ファイルを単位とした仮想記憶媒体に対するアクセス手段を提供することで、記憶媒体の領域管理およびホストからのアクセスに関する利便性を向上させる。
また、RAID(Redundant Array of Inexpensive Disks)は、複数の記憶媒体が提供する記憶領域をストライピングまたは冗長化するように仮想記憶媒体にマッピングする。RAIDは、ホストに対して複数記憶媒体の記憶領域を、物理的な記憶媒体と同様にブロック単位のアクセスを行うことができる大容量および記憶媒体の障害に対する耐性を持った単一の仮想記憶媒体として提供する。記憶媒体の仮想化することで、複数の記憶媒体をデータの特性に応じて使い分けることが可能である。例えば、低速大容量の記憶媒体に対して高速小容量の記憶媒体をキャッシュとして使用する、単一の仮想記憶媒体を構築することも可能である。
このように、仮想記憶媒体は、多くの計算機システムにおいて、ホストから記憶媒体に対するアクセスの利便性向上に加えて、RAIDやキャッシュといった記憶媒体や記憶領域の構成をホストから隠蔽することが可能である。そのため、計算機システム上で動作するアプリケーションは、構成を意識せずに利便性の向上を図れる。
また、近年の計算機システムは、HDD(Hard Disk Drive)に代えて、NAND型フラッシュメモリを記憶素子とするSSD(Solid State Drive)を用いることで記憶媒体へのアクセス性能を向上している。高速な接続規格の普及に伴うSSDの高性能化やNAND型フラッシュメモリよりも高速な不揮発性メモリデバイスの登場により、記憶媒体のさらなる高性能化が見込まれる。これらの記憶媒体を用いるシステムではアクセス性能の向上効果の妨げとならないように、仮想記憶媒体を実現するための処理についても高い性能が求められる。そのため、SSDのような記憶媒体にアクセスする際のアクセス性能を向上する技術の開発が行われている。そのような、記憶媒体にアクセスする際のアクセス性能を向上する技術としては、例えば、非特許文献1および非特許文献2のような技術が開示されている。
非特許文献1には、SSDを用いた記憶媒体のアクセス規格であるNVM Express(登録商標)(Non-Volatile Memory Express)が示されている。非特許文献1の技術に基づいた記憶媒体は、データ転送を行うメモリのアドレスと記憶媒体上のLBA(Logical Block Address)の範囲をReadとWriteの各コマンドで指定することで、メモリと記憶媒体との間でDMA(Direct Memory Access)に相当する動作を行う。また、非特許文献2には、SSDを用いた記憶媒体の規格であるNVM Express over Fabricsが示されている。非特許文献2の技術に基づくと、アクセス元とは異なる計算機に接続された記憶媒体に対してNVM Expressに基づいたアクセスコマンドを発行することで、RDMA(Remote Direct Memory Access)に相当する動作を行う。非特許文献1および非特許文献2は、上記の動作を行うことでSSDのような記憶媒体への高速なアクセスが可能になるとしている。
"NVM Express 1.2.1 Specification"、[Online]、2016年6月5日、NVM Express、[2017年5月30日検索]、インターネット<URL:http://www.nvmexpress.org/wp-content/uploads/NVM_Express_1_2_1_Gold_20160603.pdf> "NVM Express over Fabrics 1.0 Specification"、[Online]、2016年6月5日、NVM Express、[2017年5月30日検索]、インターネット<URL:http://www.nvmexpress.org/wp-content/uploads/NVMe_over_Fabrics_1_0_Gold_20160605-1.pdf>
しかしながら、非特許文献1および非特許文献2の技術は次のような点で十分ではない。非特許文献1および非特許文献2では、SSDを用いている記憶媒体へのアクセス時にホストのメモリとの間で直接データ転送を行う場合には、物理記憶媒体に対するLBAの指定が必要である。しかし、仮想記憶媒体に対するアクセスでは、仮想記憶媒体が記憶媒体の構成や記憶媒体に対するデータの配置を管理し、これらの情報をアクセス元であるホストやプログラムから隠蔽する。よって、ホスト側からデータ転送を行う相手となる記憶媒体およびアクセス先となるLBAの特定が困難である。
一方で、データの格納先である記憶媒体、LBAを管理する仮想記憶媒体の制御は、アクセス元とは異なるホストや装置、プログラムで実現される。よって、多くの場合に記憶媒体から読み出されるデータ、若しくは記憶媒体に書きこまれるデータの格納先のメモリ領域に直接アクセスすることは困難である。つまり、仮想記憶媒体に対するアクセスでは記憶媒体とアクセス元のメモリとの間の直接的なデータ転送を行うことが困難であるため、仮想記憶媒体の制御機能がアクセス可能なメモリ領域を経由して処理する必要がある。そのため、メモリコピーによるバッファリング等の動作がボトルネックとなってアクセス性能が低下する恐れがある。以上の理由から、非特許文献1および非特許文献2の技術は、仮想記憶媒体を介した記憶媒体へのアクセス時に、性能低下を抑制する技術としては十分ではない。
本発明は、上記の課題を解決するため、仮想的な記憶領域を介して記憶媒体にアクセスする際に、性能低下を抑制することができるデータ転送装置を提供することを目的としている。
上記の課題を解決するため、本発明のデータ転送装置は、アクセス要求制御手段と、第1のアドレス特定手段と、第2のアドレス特定手段と、コマンド発行手段を備えている。アクセス要求制御手段は、第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、アクセス要求とを受け取る。アクセス要求は、第2の記憶媒体に第1の記憶媒体との間のデータ転送を要求するものである。第1のアドレス特定手段は、第2の記憶媒体がデータ転送を行う際に第1の記憶媒体に直接、アクセスする際のアクセス先を、第1のアドレスに基づいて第3のアドレスとして特定する。第2のアドレス特定手段は、仮想的な記憶媒体上の第2のアドレスの位置に対応する第2の記憶媒体上の位置を第4のアドレスとして特定する。コマンド発行手段は、第3のアドレスと、第4のアドレスと、第1の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第2の記憶媒体に通知する。また、アクセス要求制御手段は、第2の記憶媒体がアクセスコマンドに応じて第1の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
本発明のデータ転送方法は、第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、アクセス要求とを受け取る。アクセス要求は、第2の記憶媒体に第1の記憶媒体との間のデータ転送を要求するものである。本発明のデータ転送方法は、第2の記憶媒体がデータ転送を行う際に第1の記憶媒体に直接、アクセスする際のアクセス先を、第1のアドレスに基づいて第3のアドレスとして特定する。本発明のデータ転送方法は、仮想的な記憶媒体上の第2のアドレスの位置に対応する第2の記憶媒体上の位置を第4のアドレスとして特定する。本発明のデータ転送方法は、第3のアドレスと、第4のアドレスと、第1の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第2の記憶媒体に通知する。本発明のデータ転送方法は、第2の記憶媒体がアクセスコマンドに応じて第1の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
本発明によると、仮想的な記憶媒体を介して記憶媒体にアクセスする際に、性能低下を抑制することができる。
本発明の第1の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の仮想記憶媒体部の構成を示すブロック図である。 本発明の第2の実施形態のアクセス要求の構成の例を示す図である。 本発明の第2の実施形態のメモリ管理テーブルの構成の例を示す図である。 本発明の第2の実施形態のアクセス要求管理テーブルの構成の例を示す図である。 本発明の第2の実施形態において仮想記憶領域上の領域に対応する記憶媒体上の位置を模式的に示した図である。 本発明の第2の実施形態のコマンド管理テーブルの構成の例を示す図である。 本発明の第2の実施形態において、データ転送をする際のメモリと記憶媒体間の対応する位置を模式的に示した図である。 本発明の第2の実施形態においてアクセスコマンドを生成する際の動作フローを示した図である。 本発明の第2の実施形態においてアクセスコマンドを実行する際の動作フローを示した図である。 本発明の第2の実施形態においてアクセスコマンドを実行する際の動作フローを示した図である。 本発明の第2の実施形態において仮想記憶媒体上の領域に対応する記憶媒体上の領域を特定する際の動作フローを示した図である。 本発明の第2の実施形態において仮想記憶媒体上の領域に対応する記憶媒体上の領域を特定する際の動作フローを示した図である。 本発明の第2の実施形態において記憶媒体上の領域とデータ転送を行うメモリ上の領域を特定する際の動作フローを示した図である。 本発明の第2の実施形態において記憶媒体上の領域とデータ転送を行うメモリ上の領域を特定する際の動作フローを示した図である。
(第1の実施形態)
本発明の第1の実施形態について図を参照して詳細に説明する。図1は、本実施形態のデータ転送装置の構成の概要を示したものである。
本実施形態のデータ転送装置は、アクセス要求制御手段1と、第1のアドレス特定手段2と、第2のアドレス特定手段3と、コマンド発行手段4を備えている。アクセス要求制御手段1は、第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、アクセス要求とを受け取る。アクセス要求は、第2の記憶媒体に第1の記憶媒体との間のデータ転送を要求するものである。第1のアドレス特定手段2は、第2の記憶媒体がデータ転送を行う際に第1の記憶媒体に直接、アクセスする際のアクセス先を、第1のアドレスに基づいて第3のアドレスとして特定する。第2のアドレス特定手段3は、仮想的な記憶媒体上の第2のアドレスの位置に対応する第2の記憶媒体上の位置を第4のアドレスとして特定する。コマンド発行手段4は、第3のアドレスと、第4のアドレスと、第1の記憶媒体との間のデータ転送を要求する情報とをアクセスコマンドとして第2の記憶媒体に通知する。また、アクセス要求制御手段1は、第2の記憶媒体がアクセスコマンドに応じて第1の記憶媒体との間で直接、行うデータ転送の完了を検出したとき、データ転送が完了したことを示す情報をアクセス要求への応答としてホスト装置に送る。
本実施形態のデータ転送装置は、第1のアドレス特定手段2で、ホスト装置から受け取る第1のアドレスを基に、第3のアドレスを特定している。また、第2のアドレス特定手段3で、仮想的な記憶媒体上の第2のアドレスの位置に相当する第2の記憶媒体上の位置を示す第4のアドレスを特定している。本実施形態のデータ転送装置が第3のアドレスと第4のアドレスを通知することで、第2の記憶媒体は、第1の記憶媒体との間で直接、データ転送を行うことができる。そのため、ホスト装置が第2の記憶媒体に仮想的な記憶媒体を介してアクセスを行う場合にも、第1の記憶媒体と、第2の記憶媒体の間で直接、データ転送を行うことができるようになるので、データ転送に要する時間を抑制することができる。その結果、本実施形態のデータ転送装置を用いることで、仮想的な記憶媒体を介して記憶媒体にアクセスする際に、性能低下を抑制することができる。
(第2の実施形態)
本発明の第2の実施形態について図を参照して詳細に説明する。図2は、本実施形態の情報処理システムの構成の概要を示したものである。本実施形態の情報処理システムは、ホスト装置10と、記憶媒体20を備えている。また、ホスト装置10は、アプリケーション部11と、データ転送制御部12と、メモリ13と、仮想記憶媒体部14を備えている。
本実施形態の情報処理システムは、記憶媒体20の物理的な記憶領域上に仮想的な記憶領域を仮想記憶媒体として形成している。本実施形態の情報処理システムのホスト装置10は、仮想記憶媒体を介して記憶媒体20へのデータの書き込みおよび記憶媒体20からのデータの読み出しを行う。また、本実施形態の情報処理システムは、ホスト装置10のメモリ13と、記憶媒体20の間でデータ転送を行う際に、バッファリング等を行わずにメモリ13と、記憶媒体20の間で直接、データ転送を行うことを特徴とする。
ホスト装置10の各部位の構成について説明する。
アプリケーション部11は、アプリケーションプログラムを実行し、各処理を行う機能を有する。アプリケーション部11は、各処理を行う際に記憶媒体20へのデータの格納および記憶媒体20に保持されているデータの参照が必要なとき、データ転送制御部12に対して、データの格納および参照を行うためのアクセスを要求する。アプリケーション部11は、記憶媒体20にアクセスする際に、記憶媒体20の記憶領域に対応する仮想的な記憶領域として形成されている仮想記憶媒体部14をアクセス先としてデータ転送制御部12にアクセスを要求する。すなわち、アプリケーション部11は、仮想記憶媒体部14として形成されている仮想記憶媒体上の記憶領域をアクセス先として指定することで、仮想記憶媒体を介して記憶媒体20にアクセスする。
本実施形態のアプリケーション部11は、CPU(Central Processing Unit)によって形成されている。アプリケーション部11には、CPUに代えて、例えば、FPGA(Field Programmable Gate Array)など、情報処理システムの用途に応じた処理機能を有する半導体装置が用いられてもよい。
データ転送制御部12の構成について説明する。図3は、データ転送制御部12の構成を示したブロック図である。データ転送制御部12は、アプリケーション部11が仮想記憶媒体上をアクセス先として指定して記憶媒体20へのアクセスを行う際に、実際にアクセスを行う記憶媒体20上の領域を判断し、アクセスの制御を行うデータ転送装置としての機能を有する。
データ転送制御部12は、アクセス要求実行制御部201と、メモリアドレス変換部202と、メモリ領域管理テーブル203と、アクセス要求管理テーブル204と、記憶媒体アドレス変換部205を備えている。また、データ転送制御部12は、アクセス先選択部206と、コマンド登録部207と、コマンド管理テーブル208と、コマンド発行部209と、メモリ転送範囲計算部210をさらに備えている。
アクセス要求実行制御部201は、物理媒体である記憶媒体20上に構築された仮想記憶媒体に対するアクセス要求の情報をアプリケーション部11から受け取る。アクセス要求実行制御部201は、メモリ領域管理テーブル203およびアクセス要求管理テーブル204に受け取ったアクセス要求の情報を登録する。また、アクセス要求実行制御部201は、各アクセス要求に対応する、記憶媒体20のアクセスコマンドの実行が完了すると、アクセス要求の完了を示す情報をアクセス要求元であるアプリケーション部11に通知する。また、本実施形態のアクセス要求実行制御部201が、アプリケーション部11からアクセス要求を受け取る機能は、第1の実施形態のアクセス要求制御手段1に相当する。
図4は、アプリケーション部11からアクセス要求実行制御部201が受け取るアクセス要求の例を示す図である。図4に示すアクセス要求は、アクセス種別31と、先頭LBA(Logical Block Address)32と、アクセスサイズ33と、メモリアドレス34によって構成されている。
アクセス種別31は、アクセス要求がReadであるか、Witeであるかを示している。先頭LBA32およびアクセスサイズ33は、仮想記憶媒体部14の仮想記憶領域上のアクセス先の領域を示している。メモリアドレス34は、メモリ13において、アプリケーション部11がアクセス可能なデータの格納先の先頭論理アドレスを示している。メモリアドレス34は、アクセス種別31がReadであればアクセス結果の格納先を示し、Writeであれば仮想記憶領域上のアクセス先の領域に書き込むデータの格納先を示している。
アプリケーション部11からのアクセス要求の形式は、図4に示した形式に限定されず、例えば、アクセスサイズ33の代わりにアクセス先領域の末尾のLBAが指定されていてもよい。また、仮想記憶領域上のアクセス先の領域の情報の形式は、仮想記憶媒体部14がアプリケーション部11に対して提供するアクセス単位によって変化する。例えば、アクセス先の領域の情報は、仮想記憶媒体部14がファイル単位のアクセスを受け付ける場合、アクセス先の領域を表す識別子として、ファイルパスとファイル内のオフセットのブロックアドレスが指定された情報として設定される。
メモリアドレス変換部202は、アプリケーション部11のアクセス要求において指定されたメモリアドレス34を、論理アドレスから物理アドレスに変換する。論理アドレスから物理アドレスへの変換は、例えば、ホスト装置10においてアプリケーションの実行時にCPUが使用する論理アドレスと、物理アドレスの対応関係を管理するページテーブルを用いて行われる。
メモリアドレス変換部202は、メモリアドレス34とアクセスサイズ33で指定されるメモリ13の領域が断片化している場合に、各断片の先頭物理アドレスとサイズを求める。このとき、メモリアドレス34とアクセスサイズ33で指定される論理アドレス空間上の領域と各断片の対応関係を管理する必要がある。対応関係の管理は、例えば、NVM Express(登録商標) 1.2.1 Specification(非特許文献1)に示されているSGL(Scatter Gather List)を用いて行われる。SGLは、論理アドレス空間に対する各断片の整列順序と、断片毎の物理アドレスおよびサイズの情報によって構成されている。
メモリアドレス変換部202の処理は、アクセス要求実行制御部201がアクセス要求を受け取ったときではなく、アプリケーション部11が記憶媒体20にアクセス要求を行う前に実行されてもよい。このとき、図4に示されるアクセス要求のメモリアドレス34は、メモリ13におけるデータの格納先の先頭物理アドレスを表す。また、メモリアドレス34の代わりに、SGLのようなメモリ13の領域の断片化に対応可能な任意のデータ形式の情報がアクセス要求に含まれていてもよい。また、本実施形態のメモリアドレス変換部202の機能は、第1の実施形態の第1のアドレス特定手段2に相当する。第1の実施形態における第1のアドレスは、本実施形態のメモリアドレス変換部202がアクセス要求としてアプリケーション部11から受け取るメモリアドレス34に相当する。また、第1の実施形態における第3のアドレスは、本実施形態のメモリアドレス変換部202が論理アドレスから変換したメモリ13の物理アドレスに相当する。
メモリ領域管理テーブル203は、アクセス要求実行制御部201が受け取った各アクセス要求に含まれるメモリアドレス34とアクセスサイズ33で指定されるメモリ13上の領域を、メモリアドレス変換部202が物理アドレスに変換した結果を格納して管理する。
図5は、メモリ領域管理テーブル203に含まれる情報の例を示した図である。メモリ領域管理テーブル203は、アクセス要求実行制御部201が受け取ったアクセス要求ごとにエントリを有している。メモリ領域管理テーブル203は、対応するアクセス要求を表すアクセス要求ID2031と、メモリアドレス変換部202による論理アドレスから物理アドレスへの変換結果を表すSGリスト2032によって構成されている。SGリスト2032は、メモリアドレス34とアクセスサイズ33で指定される領域に対応する順番で、メモリ13における各断片の先頭を表す断片物理アドレス2033と断片サイズ2034の情報を格納している。メモリ領域管理テーブル203に含まれるデータの形式は、図5に示した形式に限定されず、例えば、SGリスト2032は、SGLに基づいたデータ形式であってもよい。
アクセス要求管理テーブル204は、アプリケーション部11から受け取った仮想記憶媒体に対するアクセス要求と、アクセス要求に対応する記憶媒体20のアクセスコマンドおよびアクセスコマンドの完了状況の情報を管理する。
図6は、アクセス要求管理テーブル204に含まれる情報の例を示す図である。アクセス要求管理テーブル204の各エントリは、アクセス要求ID2041と、アクセス種別2042と、先頭LBA2043と、アクセスサイズ2044と、未完了コマンドID2045によって構成されている。
アクセス要求ID2041は、各アクセス要求の識別子を示している。アクセス種別2042、先頭LBA2043およびアクセスサイズ2044は、図4に示すアクセス要求に含まれるアクセス種別31、先頭LBA32およびアクセスサイズ33をそれぞれコピーした情報である。未完了コマンドID2045は、アクセス要求に対応する記憶媒体20の未完了のアクセスコマンドを示す識別子である。
アクセス要求管理テーブル204の各エントリに含まれるデータには、図6に示した形式に限定されず、例えば、アクセス要求先の領域を表すために、アクセスサイズ2044の代わりに、アクセス先領域の末尾のLBAが用いられていてもよい。また、未完了コマンドID2045の代わりに、アクセス要求に対応する記憶媒体20のアクセスコマンドの識別子と、各アクセスコマンドが完了か未完了かを表すフラグの情報が用いられていてもよい。また、メモリ領域管理テーブル203をアクセス要求管理テーブル204に内包し、アクセス要求管理テーブル204が各エントリに対応するメモリ領域管理テーブル203のSGリスト2032を直接、持つ形であってもよい。そのような構成とする場合、SGリスト2032が単一のメモリ領域の断片で構成されていれば、断片サイズ2034をアクセスサイズ2044で代用することで、断片サイズ2034を省略することができる。
記憶媒体アドレス変換部205は、アクセス要求で指定された仮想記憶媒体のアクセス先領域に対応する記憶媒体20上のLBAを計算する。記憶媒体アドレス変換部205は、仮想記憶媒体の記憶領域の空間に対する記憶媒体20のマッピングの管理情報を用いてLBAを計算する。仮想記憶媒体がファイルシステムである場合には、記憶媒体アドレス変換部205は、ファイルシステムの管理情報に含まれるアクセス対象ファイルの各部分のマッピング先を表す記憶媒体20のLBAの情報を使用する。
図7は、仮想記憶媒体上のアクセス先領域と、記憶媒体20上におけるアクセス先領域のマッピング先の領域との対応関係の例を示す図である。図7の例では、アプリケーション部11が要求する仮想記憶媒体上のアクセス範囲である仮想アクセス領域61に対して、記憶媒体20上のマッピング領域62a、62b、62cが先頭から順にそれぞれ対応している。
記憶媒体アドレス変換部205は、記憶媒体20のマッピングの管理情報を参照して、各マッピング領域62の格納先となる記憶媒体20の記憶媒体ID63と、先頭LBA64と、領域サイズ65を判断する。また、記憶媒体アドレス変換部205は、各マッピング領域において、仮想記憶媒体のアクセス先領域が対応する先頭からの位置を、オフセット66として計算する。図7の例ではマッピング領域62a、62b、62cの領域サイズ65をそれぞれSa、Sb、Scとした場合、各マッピング領域の先頭からのオフセット66はそれぞれ0、Sa、Sa+Sbと計算できる。
仮想記憶媒体のアクセス先領域とマッピング領域62の対応関係は、図7に示した形式に限定されない。例えば、各マッピング領域62の領域サイズ65およびオフセット66は、ブロック単位の値ではなく、バイト等を単位とした値で設定されていてもよい。また、本実施形態の記憶媒体アドレス変換部205の機能は、第1の実施形態の第2のアドレス特定手段3に相当する。第1の実施形態における第2のアドレスは、本実施形態においてLBAとして指定される仮想記憶媒体上のアクセス先に相当する。また、第1の実施形態における第4のアドレスは、LBAとして指定される仮想記憶媒体上のアクセス先に対応する記憶媒体20上の位置に相当する。
アクセス先選択部206は、アクセス要求で指定された仮想記憶媒体のアクセス先領域に対応する記憶媒体20のマッピング領域62から、実際にアクセスコマンドを発行してReadまたはWriteを行う記憶媒体20およびLBAを選択する。アクセス先選択部206は、例えば、仮想記憶媒体が2台の記憶媒体20を用いてミラーリングによる冗長化を行う場合、アクセスを行うマッピング領域62を持つ記憶媒体20を2台のいずれかから選択する。選択対象となるマッピング領域62が複数存在する場合の選択アルゴリズムには、例えば、ミラーリングの場合には、ラウンドロビン等のアルゴリズムを適用可することができる。
コマンド登録部207は、アクセス先選択部206が選択した各マッピング領域62に対するアクセスコマンドの情報を、コマンド管理テーブル208に登録する。また、コマンド登録部207は、各マッピング領域62に対するアクセスコマンドの識別子を、アクセスコマンドに対応するアクセス要求の未完了コマンドID2045としてアクセス要求管理テーブル204に追加する。
コマンド管理テーブル208は、アクセス先選択部206で選択した、マッピング領域62に対するアクセスコマンドに関する情報を管理する。
図8は、コマンド管理テーブル208に含まれる情報の例を示す図である。コマンド管理テーブル208の各エントリは、コマンドID2081と、アクセス要求ID2082と、アクセス種別2083と、記憶媒体ID2084と、先頭LBA2085と、アクセスサイズ2086と、オフセット2087によって構成されている。
コマンドID2081は、コマンドの識別子を示している。アクセス要求ID2082は、コマンドに対応するアクセス要求の識別子を示している。アクセス種別2083は、アクセス要求がReadかWriteのいずれかであるかを示している。記憶媒体ID2084は、複数の記憶媒体のいずれであるかを示す識別子である。先頭LBA2085およびアクセスサイズ2086は、LBAで指定されるアクセス先領域の先頭位置およびアクセス先領域の大きさをそれぞれ示している。オフセット2087は、仮想記憶媒体のアクセス先領域におけるコマンドの対応位置を示す。
コマンド管理テーブル208の各エントリに含まれるデータの形式は、図8に示した形式に限定されない。例えば、アクセス種別2083は、アクセス要求ID2082に対応するアクセス要求管理テーブル204のエントリに格納された、アクセス種別2042を参照する構成することで省略してもよい。また、メモリ転送範囲計算部210において計算が行われている各コマンドに対するメモリ13における転送対象のアドレス範囲の情報が各エントリに格納されていてもよい。
コマンド発行部209は、コマンド管理テーブル208を参照して未発行のアクセスコマンドを選択し、メモリ転送範囲計算部210によってアクセスコマンドで指定する、メモリ13の領域の物理アドレスを算出する。そして、前記選択したアクセスコマンドを、記憶媒体ID2084で示される記憶媒体20に対して発行する。また、コマンド発行部209は、記憶媒体20から発行したアクセスコマンドの完了通知を受け取り、アクセス要求実行制御部201に完了したコマンドに対応するコマンドID2081を通知する。加えて、コマンド発行部209は、コマンド管理テーブル208の完了したコマンドに対応するエントリを削除する。また、本実施形態のコマンド発行部209の機能は、第1の実施形態のコマンド発行手段4に相当する。
メモリ転送範囲計算部210は、マッピング領域62に対する各アクセスコマンドについて、アクセスコマンドに対応するメモリ13の領域の物理アドレスを算出する。メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ13の領域の物理アドレスをアクセス要求ID2082に対応するSGリスト2032を参照して算出する。
図9は、仮想記憶媒体のアクセス先領域と、メモリ13の領域の対応関係の例を示す図である。図9では、アプリケーション部11が要求する仮想記憶媒体上のアクセス範囲である仮想アクセス領域81に対して、先頭から順番にメモリ13上の断片であるメモリ断片82x、82yが対応している。また、図9では、メモリ断片82x、82yに関する先頭の物理アドレスをそれぞれPx、Py、サイズをSx、Syとして示している。
また、図7と同様に仮想記憶媒体の仮想アクセス領域81に、記憶媒体20のマッピング領域83a、83b、83cが対応し、各マッピング領域のサイズがSa、Sb、Scであるとする。また、Sa<Sx、Sc<Sy、Sx+Sy=Sa+Sb+Scであるとする。
このとき、マッピング領域83aに対するアクセスコマンドにおいて指定するメモリ13の領域は、メモリ断片82xの先頭からサイズSaの領域、つまり物理アドレスPx、サイズSaの領域と表される。また、マッピング領域83bに対するアクセスコマンドで指定するメモリ13の領域は、マッピング領域83aに対するアクセスコマンドで指定したメモリ13の領域に続く、物理アドレスPx+Saで表される領域となる。しかし、図9よりマッピング領域83bに対するアクセスコマンドが必要とするメモリ13の領域は、メモリ断片82xの残りの領域に加えて、メモリ断片82yに跨る。よって、マッピング領域83bに対するアクセスコマンドのメモリ13の領域は、物理アドレスPx+Sa、サイズSx-Saの断片と、この断片に続く物理アドレスPy、サイズSb-Sx+Saの断片で表される。また、マッピング領域83cに対するアクセスコマンドで指定するメモリ13の領域は、メモリ断片82yの残りの領域、つまり物理アドレスPy+Sb-Sx+Sa、サイズScで表される。
本実施形態のデータ転送制御部12の各部位は、例えば、FPGAなどの各処理を実行する回路を有する半導体装置によって形成することができる。また、本実施形態のデータ転送制御部12の各部位における処理は、CPU上においてコンピュータプログラムを実行することによって行われてもよい。データ転送制御部12の各部位における処理を行うコンピュータプログラムは、各記録媒体に記録した状態で頒布することもできる。
メモリ13は、アプリケーション部11においてアプリケーションプログラムが各処理を行う際に必要なデータの保持と、保持しているデータの出力を行う記憶媒体である。メモリ13は、アプリケーション部11が記憶媒体20を介して記憶媒体20にアクセスする際に、記憶媒体20との間で、直接、データ転送を行う。
メモリ13は、例えば、DRAM(Dynamic Random Access Memory)によって形成されている。メモリ13は、DRAM以外の記憶素子を用いて形成されていてもよい。また、メモリ13は、複数の種類の記憶媒体の組み合わせによって形成されていてもよい。
仮想記憶媒体部14は、記憶媒体20にマッピングされた仮想的な記憶媒体としての機能を有する。仮想記憶媒体部14は、ファイルシステム等を記憶媒体20にマッピングされた仮想記憶媒体上で提供する。
記憶媒体20は、ファイルシステムにおけるファイルデータなどアプリケーション部11における処理結果のデータや、処理に用いるデータなどを保存する記憶媒体である。本実施形態の記憶媒体20は、NAND型フラッシュメモリを記憶素子としたSSD(Solid State Drive)を用いて形成されている。記憶媒体20は、記憶領域上へのアクセスを、LBAを用いたアドレス指定によって受け付ける。記憶媒体20は、NAND型フラッシュメモリ以外の不揮発性の半導体記憶素子を用いて形成されたものであってもよい。
記憶媒体20は、ホスト装置10に直接、接続されていなくてもよい。例えば、他の情報処理装置に接続されている記憶媒体20にネットワークを介して、ホスト装置10がアクセスする構成であってもよい。また、仮想記憶媒体部14、または、記憶媒体20および仮想記憶媒体部14の両方がホスト装置10とネットワークを介して接続されていてもよい。例えば、NAS(Network Attached Storage)のように、ファイルシステムと記憶媒体を持ち、ネットワークを介してホスト装置に対してファイルアクセスを提供する構成としてもよい。また、他の情報処理装置で実行されているアプリケーションプログラムが、ホスト装置10を介して記憶媒体20へのアクセスを要求する構成であってもよい。
記憶媒体20は、複数、備えられていてもよい。複数の記憶媒体20を備える場合に、RAID(Redundant Arrays of Inexpensive Disks)システムとして構成されていてもよい。複数の記憶媒体20を備える構成とするときは、複数の記憶媒体20の記憶領域をストライピングまたは冗長化するように仮想記憶媒体へのマッピングが行われる。そのような構成とすることで、ホスト装置10は、複数の記憶媒体20の記憶領域を、物理的な記憶媒体と同様にブロック単位のアクセスを行うことができる大容量の単一の仮想記憶媒体または障害への耐性を持った単一の仮想記憶媒体として用いることができる。また、記憶媒体の仮想化により、複数の記憶媒体20をデータの特性に応じて使い分けることが可能になる。例えば、低速大容量の記憶媒体に対して高速小容量の記憶媒体をキャッシュとして使用するような単一の仮想記憶媒体を構築することもできる。
本実施形態の情報処理システムの動作について説明する。始めに、ホスト装置10においてデータ転送制御部12が、アプリケーション部11からアクセス要求を受け取った際に、記憶媒体20のアクセスコマンドを生成する際の動作について説明する。図10は、本実施形態の情報処理システムにおいて、アクセス要求に基づいて記憶媒体20のアクセスコマンドを生成する際の動作を示すフローチャートである。
アクセス要求実行制御部201は、アプリケーション部11から仮想記憶媒体に対するアクセス要求の情報を受け取ると、メモリ領域管理テーブル203およびアクセス要求管理テーブル204に登録するアクセス要求IDをアクセス要求に付加する。また、アクセス要求実行制御部201は、メモリアドレス変換部202にアクセス要求のメモリアドレス34とアクセスサイズ33を通知する(ステップS101)。
メモリアドレス34等を受け取ると、メモリアドレス変換部202は、アプリケーション部11がメモリアドレス34とアクセスサイズ33として指定する論理アドレス空間のメモリ13の物理アドレス空間における配置を確認する。物理アドレス空間における配置を確認する際に、メモリアドレス変換部202は、領域の断片ごとにメモリ領域管理テーブル203のSGリスト2032に登録するための断片物理アドレス2033と断片サイズ2034を取得する。断片物理アドレス2033等を取得すると、メモリアドレス変換部202は、アクセス要求実行制御部201に対して作成したSGリスト2032を通知する(ステップS102)。
SGリスト2032の通知を受け取ると、アクセス要求実行制御部201は、通知されたSGリスト2032を、アクセス要求ID2031と共にメモリ領域管理テーブル203に登録する(ステップS103)。
また、ステップS101においてアクセス要求IDを付加すると、アクセス要求実行制御部201は、アプリケーション部11からのアクセス要求に関する情報をアクセス要求管理テーブル204に登録する(ステップS104)。アクセス要求実行制御部201は、アクセス要求に関する情報として、アクセス種別31、先頭LBA32、アクセスサイズ33およびアクセス要求IDをアクセス要求管理テーブル204に登録する。
アクセス要求に関する情報がアクセス要求管理テーブルに登録されると、記憶媒体アドレス変換部205は、登録されたアクセス要求について、仮想記憶媒体のアクセス先領域に対応するマッピング領域62の記憶媒体ID63と、先頭LBA64と、領域サイズ65、オフセット66を特定する(ステップS105)。
マッピング領域62等を特定すると、アクセス先選択部206は、特定したマッピング領域62から、アクセス要求の処理を行う際に実際にアクセスを行うマッピング領域62を選択する(ステップS106)。
マッピング領域62が選択されると、コマンド登録部207は、選択されたマッピング領域62について、アクセス要求管理テーブル204の対応するアクセス要求のエントリに未完了コマンドID2045を新たに付与して追加する(ステップS107)。
未完了コマンドID2045が追加されると、コマンド登録部207は、未完了コマンドID2045の値と、アクセス要求管理テーブル204から取得したアクセス種別2042をアクセスコマンドとしてコマンド管理テーブル208に登録する。また、さらに、コマンド登録部207は、選択されたマッピング領域62の記憶媒体ID63、先頭LBA64、領域サイズ65およびオフセット66をアクセスコマンドとしてコマンド管理テーブル208に登録する(ステップS108)。
以上のステップS101からS108までの処理によって、データ転送制御部12がアプリケーション部11からのアクセス要求に対応する記憶媒体20のアクセスコマンドを生成する動作が完了する。ステップS101からS108の処理順序は、図10に示した順序である必要はない。例えば、ステップS103とステップS104の処理は、同時期に実行されてもよく、順序を入れ替えて実行されてもよい。
次に、アプリケーション部11からのアクセス要求に基づいて記憶媒体20のアクセスコマンドを実行し、アクセス要求の処理完了の確認を行う際の動作について説明する。図11および図12は、本実施形態のデータ転送制御部12においてアクセス要求に基づいて記憶媒体20のアクセスコマンドを実行し、アクセス要求の処理完了の確認を行う際の動作フローを示すフローチャートである。
コマンド発行部209は、コマンド管理テーブル208を参照して未発行のアクセスコマンドを選択して、選択したアクセスコマンドの情報をメモリ転送範囲計算部210に通知する(ステップS201)。
アクセスコマンドの情報を受け取ると、メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ13の領域についてメモリ断片82を特定し、それぞれのメモリ断片82の物理アドレスおよびサイズを計算する(ステップS202)。メモリ転送範囲計算部210は、マッピング領域83に対するアクセスコマンドの情報と、メモリ領域管理テーブル203に登録されたアクセス要求ID2082に対応したSGリスト2032を基に、メモリ断片82の物理アドレスおよびサイズを計算する。
メモリ断片82の物理アドレス等が計算されると、コマンド発行部209は、記憶媒体ID2084で指定される記憶媒体20に対してアクセスコマンドを発行する(ステップS203)。コマンド発行部209は、コマンド管理テーブル208と、メモリ断片82の物理アドレスおよびサイズの情報に基づいて、記憶媒体20に対してアクセスコマンドを発行する。
アクセスコマンドの発行後に、アクセスコマンドの完了の通知を受け取ると、コマンド発行部209は、完了したアクセスコマンドに対応するコマンドID2081およびアクセス要求ID2082をコマンド管理テーブル208から取得する(ステップS204)。
完了したアクセスコマンドに対応する情報を取得すると、コマンド発行部209は、完了したアクセスコマンドに対応するコマンド管理テーブル208のエントリを削除する(ステップS205)。
また、アクセスコマンドの完了通知を受け取ると、コマンド発行部209は、アクセス要求実行制御部201に対して、完了したアクセスコマンドのコマンドID2081およびアクセス要求ID2082を通知する(ステップS206)。
アクセスコマンドの完了の通知を受け取ると、アクセス要求実行制御部201は、アクセス要求管理テーブル204において、対応するアクセス要求の未完了コマンドID2045から、通知されたコマンドIDを削除する(ステップS207)。
完了を通知されたアクセスコマンドに対応するアクセス要求について、未完了コマンドID2045にコマンドIDが1個以上残っている場合(ステップS208でYes)、アクセス要求の完了の通知等を行わずに処理を終了する。
未完了コマンドID2045にコマンドIDが残っていない場合(ステップS208でNo)、アクセス要求実行制御部201は、アクセス要求を行ったアプリケーション部11に対して、仮想記憶媒体に対するアクセス要求の完了を通知する(ステップS209)。
アクセス要求実行制御部201は、完了したアクセス要求に対応するアクセス要求管理テーブル204のエントリを削除して処理を終了する(ステップS210)。
以上のステップS201からS210までの処理によって、アプリケーション部11からのアクセス要求に応じて、記憶媒体20のアクセスコマンドが実行され、アクセス要求の処理完了の確認の動作が行われる。また、ステップS201からS210の処理順序は、図11および図12に示した順序でなくてもよい。例えば、ステップS209とステップS210の処理は、同時期に実行されてもよく、また、順序を入れ替えて実行されてもよい。
次に、記憶媒体アドレス変換部205が仮想記憶媒体へのアクセス要求に基づいて、仮想アクセス領域61に対応するマッピング領域62を特定する際の動作について説明する。図13および図14は、本実施形態のデータ転送制御部12において、アクセス要求に基づいて、仮想アクセス領域に対応するマッピング領域を特定する際の動作フローを示すフローチャートである。
アクセス要求を受けると、記憶媒体アドレス変換部205は、マッピング領域62の特定を行う基準点を仮想アクセス領域61の先頭に設定する(ステップS301)。
基準点を設定すると、記憶媒体アドレス変換部205は、仮想アクセス領域61上の基準点に対応させる記憶媒体20の記憶媒体ID63と先頭LBA64をマッピングの管理情報から取得する(ステップS302)。
記憶媒体アドレス変換部205は、マッピングの管理情報を参照して、記憶媒体20において仮想アクセス領域61上の基準点に対応する位置から連続的にマッピングされている領域のサイズを取得する(ステップS303)。
領域のサイズを取得すると、記憶媒体アドレス変換部205は、連続的にマッピングされている記憶媒体20の領域のサイズと、仮想記憶媒体において基準点から仮想アクセス領域61の末尾までの領域のサイズを比較する(ステップS304)。
記憶媒体20上の連続的なマッピング領域が、基準点から仮想アクセス領域61の末尾までより大きい場合(ステップS305でYes)、記憶媒体アドレス変換部205は、仮想アクセス領域61の末尾までに相当する部分をマッピング領域62に追加する。このとき追加されるマッピング領域62は、ステップS302で取得された記憶媒体ID63、先頭LBA64、領域サイズ65が基準点のLBAから仮想アクセス領域61の末尾までのサイズの領域として設定される。また、このとき追加されるマッピング領域62は、オフセット66が仮想アクセス領域61上の先頭から基準点までのサイズに等しい領域として設定される(ステップS306)。
また、記憶媒体20の連続的にマッピング領域が、基準点から仮想アクセス領域61の末尾までより小さい場合(ステップS305でNo)、記憶媒体アドレス変換部205は、連続的にマッピング出来る範囲をマッピング領域62に追加する。このとき追加されるマッピング領域62は、ステップS302で取得された記憶媒体ID63、先頭LBA64、領域サイズ65が連続的にマッピングされている領域のサイズの領域として設定される。また、このとき追加されるマッピング領域62は、オフセット66が仮想アクセス領域61上の先頭から基準点までのサイズに等しい領域として設定される(ステップS307)。
仮想アクセス領域61に対応するマッピング領域62を設定すると、記憶媒体アドレス変換部205は、仮想アクセス領域61上の基準点を再設定する。記憶媒体アドレス変換部205は、現在の基準点からステップS307で追加したマッピング領域の領域サイズ65に相当する分、仮想アクセス領域61の末尾の方向に基準点を移動させる。基準点を移動させると、記憶媒体アドレス変換部205は、ステップS302からの処理を実行する(ステップS308)。
次に、ステップS202において、メモリ転送範囲計算部210がマッピング領域83に対するアクセスコマンドに対応する際に、マッピング領域83との間でデータ転送を行うメモリ断片82を特定する動作について説明する。図15および図16は、本実施形態のデータ転送制御部12においてマッピング領域との間でデータ転送を行うメモリ断片を特定する際の動作フローを示すフローチャートである。
メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ断片82を特定する処理を行う基準点Pを、通知されたアクセスコマンドのオフセットに設定する(ステップS401)。
また、メモリ転送範囲計算部210は、アクセスコマンドの実行に必要なメモリ断片82の残りサイズSを、アクセスコマンドのアクセスサイズに設定する(ステップS402)。
メモリ転送範囲計算部210は、メモリ領域管理テーブル203に登録された、アクセスコマンドに対応するアクセス要求のSGリスト2032から、基準点Pが含まれるメモリ13の断片および物理アドレスを特定する(ステップS403)。
メモリ13の断片を特定すると、メモリ転送範囲計算部210は、メモリ13の断片について、基準点Pの物理アドレスから断片の末尾までのサイズRを計算する(ステップS404)。
サイズRを計算すると、メモリ転送範囲計算部210は、計算したサイズRと、必要なメモリ断片の残りサイズSを比較する(ステップS405)。
SがR以下である場合(ステップS406でYes)、メモリ転送範囲計算部210は、先頭の物理アドレスが基準点Pの物理アドレスであり、サイズがSのメモリ断片82を特定結果に追加して処理を終了する(ステップS407)。
S>Rである場合(ステップS406でNo)、メモリ転送範囲計算部210は、先頭の物理アドレスが基準点Pの物理アドレスであり、サイズがRのメモリ断片82を特定結果に追加する(ステップS408)。
サイズRのメモリ断片82を特定結果に追加すると、メモリ転送範囲計算部210は、アクセスコマンドに対応するメモリ断片82を特定する処理を行う基準点Pを、サイズRを加えたアドレスに設定する(ステップS409)。
基準点PにサイズRを加えたアドレスに設定すると、メモリ転送範囲計算部210は、アクセスコマンドの実行に必要なメモリ断片の残りサイズSからサイズRを減算して、ステップS403からの処理を実行する(ステップS410)。
以上のステップS401からS410までの処理を行うことで、ステップS202においてメモリ転送範囲計算部210がマッピング領域83に対するアクセスコマンドについて、マッピング領域83とデータ転送を行うメモリ断片82を特定する動作が完了する。また、ステップS401からS410の処理順序は、図15および図16に示した順序でなくてもよい。例えば、ステップS409とステップS410の処理は、同時期に実行されてもよく、順序を入れ替えて実行されてもよい。
本実施形態の情報処理システムは、物理的な記憶媒体20と対応するようにマッピングされた仮想記憶媒体を介して記憶媒体20にアクセスを行う。本実施形態の情報処理システムは、アクセス処理途中のオーバーヘッドの発生を抑制し、アクセス性能を向上するために、仮想記憶媒体とアクセス要求元の管理するメモリ13の間で直接、データ転送を行う。すなわち、本実施形態の情報処理システムは、仮想記憶媒体においてデータを実際に格納する物理記憶媒体と、アクセス要求元のホスト装置10のメモリ13との間で、直接ReadまたはWriteされたデータを転送している。そのような構成とすることで、本実施形態の情報処理システムは、バッファリングに伴うメモリコピーの発生を回避している。
通常の仮想記憶媒体では、ホスト装置からのアクセス要求に対してアクセス要求先として指定されたファイル名やLBA等の識別子を基に、アクセス範囲に対応する物理記憶媒体および物理記憶媒体におけるLBAが計算される。そして、アクセス範囲に含まれる記憶媒体にアクセスコマンドを発行され、記憶媒体とアクセス要求元のホスト装置のメモリ領域との間のデータ転送は、メモリ上のバッファ領域を経由して行われる。すなわち、仮想記憶媒体がアクセス要求元に代わり、物理記憶媒体に対するアクセスコマンド発行と、データ転送を行う。
一方で本実施形態では、通常の仮想記憶媒体とは異なり、データ転送制御部12がアクセス要求元に代わって行う処理は、物理記憶媒体である記憶媒体20に対するアクセスコマンド発行のみである。データ転送は、物理記憶媒体である記憶媒体20とアクセス要求元のホスト装置10のメモリ13の記憶領域との間で直接、行われる。そのために、データ転送制御部12は、記憶媒体20に対して発行するアクセスコマンドごとに、アクセス要求元であるホスト装置10のメモリ13の対応するアドレス範囲を計算して、データ転送を行う領域を指定する。また、記憶媒体20に対するアクセスコマンドは、転送するデータの本体をコマンドや応答に直接含めずに、記憶媒体20とメモリ13の間でデータ転送を行うメモリ領域のアドレス範囲を指定する形式のコマンドとして設定される。
通常、情報処理装置は、アクセス要求を行うアプリケーションプログラム毎に個別の論理アドレス空間を用いてメモリアクセスを行う。よって、データ転送制御部12は、物理記憶媒体とアクセス要求元のメモリ領域との間で直接、データ転送を行えるように、物理記憶媒体に対するアクセスコマンドの発行前に論理アドレスを物理アドレスに変換する。
また、アクセス要求元のアプリケーションプログラムで連続したメモリ領域であっても、物理的なメモリでは必ずしも連続しておらず、断片化された状態となりうる。そのため、データ転送制御部12は、物理記憶媒体に発行するホスト側のメモリ領域の対応するアドレス範囲の計算についても、アドレス範囲内に含まれるメモリの断片の物理アドレスおよびコマンドによるアクセス範囲内での各断片のオフセットを計算している。
上記のような構成とすることで、本実施形態の情報処理システムは、仮想記憶媒体を介してホスト装置10から記憶媒体20上の領域にアクセスを行う際に、仮想記憶媒体を介して、直接的なメモリ13とのデータ転送を実現している。そのため、本実施形態の情報処理システムは、オーバーヘッドを削減し、ホスト装置10からのアクセス性能を向上することができる。
本実施形態の情報処理装置は、アプリケーション部11からのアクセス要求で指定された仮想記憶媒体上の領域に対応する記憶媒体20上の領域を、データ転送制御部12が算出している。データ転送制御部12は、仮想記憶媒体上のアクセス先である仮想アクセス領域に対応する記憶媒体20上の位置を特定し、データ転送の相手先のメモリ13の物理アドレスとともにアプリケーション部11のアクセス要求を記憶媒体20に送っている。よって、仮想アクセス領域に対応する記憶媒体20上の位置を特定し、データ転送の相手先のメモリ13の物理アドレスを受け取った記憶媒体20は、メモリ13との間で直接、データ転送を行うことができる。
ホスト装置10のアプリケーション部11は、記憶媒体20にアクセスする際に仮想記憶媒体上のアクセス先をLBAによって指定するが、データ転送制御部12が実際の記憶媒体20上の位置に変換している。そのため、本実施形態では、ホスト側のアプリケーション部11が記憶媒体20上の実際のアドレスを直接、認識できない場合にも記憶媒体20にアクセスを要求することができる。また、そのような構成とすることで、記憶媒体20は、メモリ13との間で直接、データ転送を行うことができるようになるため、アプリケーション部11等がデータ転送処理を行う際にメモリ13上でのバッファリング処理を必要としない。そのため、メモリ13と記憶媒体20間におけるデータ転送に要する時間を抑制することができる。以上より、本実施形態の情報処理システムは、NAND型フラッシュメモリによって形成された記憶媒体に、仮想記憶媒体を介してアクセスする際に、性能低下を抑制することができる。
1 アクセス要求制御手段
2 第1のアドレス特定手段
3 第2のアドレス特定手段
4 コマンド発行手段
10 ホスト装置
11 アプリケーション部
12 データ転送制御部
13 メモリ
14 仮想記憶媒体部
20 記憶媒体
31 アクセス種別
32 先頭LBA
33 アクセスサイズ
34 メモリアドレス
61 仮想アクセス領域
62 マッピング領域
63 記憶媒体ID
64 先頭LBA
65 領域サイズ
66 オフセット
81 仮想アクセス領域
82 メモリ断片
83 マッピング領域
201 アクセス要求実行制御部
202 メモリアドレス変換部
203 メモリ領域管理テーブル
204 アクセス要求管理テーブル
205 記憶媒体アドレス変換部
206 アクセス先選択部
207 コマンド登録部
208 コマンド管理テーブル
209 コマンド発行部
210 メモリ転送範囲計算部
2031 アクセス要求ID
2032 SGリスト
2033 断片物理アドレス
2034 断片サイズ
2041 アクセス要求ID
2042 アクセス種別
2043 先頭LBA
2044 アクセスサイズ
2045 未完了コマンドID
2081 コマンドID
2082 アクセス要求ID
2083 アクセス種別
2084 記憶媒体ID
2085 先頭LBA
2086 アクセスサイズ
2087 オフセット

Claims (10)

  1. 第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、前記第2の記憶媒体に前記第1の記憶媒体との間のデータ転送を要求するアクセス要求とをホスト装置から受け取るアクセス要求制御手段と、
    前記第2の記憶媒体が前記データ転送をDMA(Direct Memory Access)によって行う際に前記第1の記憶媒体にアクセスする際のアクセス先を、前記第1のアドレスに基づいて第3のアドレスとして特定する第1のアドレス特定手段と、
    前記仮想的な記憶媒体上の前記第2のアドレスの位置に対応する前記第2の記憶媒体上の位置を第4のアドレスとして特定する第2のアドレス特定手段と、
    前記第3のアドレスと、前記第4のアドレスと、前記第1の記憶媒体との間の前記データ転送を要求する情報とをアクセスコマンドとして前記第2の記憶媒体に通知するコマンド発行手段と
    を備え、
    前記アクセス要求制御手段は、前記第2の記憶媒体が前記アクセスコマンドに応じて前記第1の記憶媒体との間でDMAによって行う前記データ転送の完了を検出したとき、前記データ転送が完了したことを示す情報を前記アクセス要求への応答として前記ホスト装置に送ることを特徴とするデータ転送装置。
  2. 前記第2のアドレス特定手段は、前記仮想的な記憶媒体上の基準点に対応する前記第2の記憶媒体上の位置を算出し、前記第2のアドレスに対応する前記第2の記憶媒体上の位置の前記基準点に対応する位置からの差を算出することで前記第4のアドレスを特定することを特徴とする請求項1に記載のデータ転送装置。
  3. 前記第2のアドレス特定手段は、前記第1の記憶媒体における断片状の複数の記憶領域を前記仮想的な記憶媒体上で組み合わせてマッピングを行い、対応する前記第2の記憶媒体上の位置を算出することを特徴とする請求項1または2に記載のデータ転送装置。
  4. 前記第2のアドレス特定手段は、複数の前記第2の記憶媒体の中からアクセス先として用いる記憶媒体を選択し、選択した前記第2の記憶媒体上における前記第2のアドレスの位置に対応する位置を前記第4のアドレスとして算出することを特徴とする請求項1から3いずれかに記載のデータ転送装置。
  5. アプリケーションプログラムを実行するプロセッサと、前記アプリケーションプログラムがデータの書き込みおよび読み出しを行うメモリからなる第1の記憶媒体とを有するホスト装置と、
    請求項1から4いずれかに記載のデータ転送装置と、
    不揮発性の半導体記憶素子によってデータを記憶する記憶手段と、要求に基づいて前記第1の記憶媒体との間でデータの転送を行う転送手段とを有する第2の記憶媒体とを備え、
    前記データ転送装置の前記アクセス要求制御手段は、前記アプリケーションプログラムから前記第1のアドレス、前記第2のアドレスおよび前記アクセス要求を受信し、前記第2の記憶媒体に前記アクセスコマンドを通知し、
    前記第2の記憶媒体は、前記アクセスコマンドの情報に基づいて前記第1の記憶媒体との間でデータ転送をDMAによって行うことを特徴とする情報処理システム。
  6. 第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、前記第2の記憶媒体に前記第1の記憶媒体との間のデータ転送を要求するアクセス要求とをホスト装置から受け取り、
    前記第2の記憶媒体が前記データ転送をDMAによって行う際に前記第1の記憶媒体にアクセスする際のアクセス先を、前記第1のアドレスに基づいて第3のアドレスとして特定し、
    前記仮想的な記憶媒体上の前記第2のアドレスの位置に対応する前記第2の記憶媒体上の位置を第4のアドレスとして特定し、
    前記第3のアドレスと、第4のアドレスと、前記第1の記憶媒体との間の前記データ転送を要求する情報とをアクセスコマンドとして前記第2の記憶媒体に通知し、前記第2の記憶媒体が前記アクセスコマンドに応じて前記第1の記憶媒体との間でDMAによって行う前記データ転送の完了を検出したとき、前記データ転送が完了したことを示す情報を前記アクセス要求への応答として前記ホスト装置に送ることを特徴とするデータ転送方法。
  7. 前記仮想的な記憶媒体上の基準点に対応する前記第2の記憶媒体上の位置を算出し、
    前記第2のアドレスに対応する前記第2の記憶媒体上の位置の前記基準点に対応する位置からの差を算出することで前記第4のアドレスを特定することを特徴とする請求項6に記載のデータ転送方法。
  8. 前記第1の記憶媒体における断片状の複数の記憶領域を前記仮想的な記憶媒体上で組み合わせてマッピングを行い、対応する前記第2の記憶媒体上の位置を算出することを特徴とする請求項6または7に記載のデータ転送方法。
  9. 複数の前記第2の記憶媒体の中からアクセス先として用いる記憶媒体を選択し、選択した前記第2の記憶媒体上における前記第2のアドレスの位置に対応する位置を前記第4のアドレスとして特定することを特徴とする請求項6から8いずれかに記載のデータ転送方法。
  10. 第1の記憶媒体の第1のアドレスと、第2の記憶媒体に対応するように形成された仮想的な記憶媒体の第2のアドレスと、前記第2の記憶媒体に前記第1の記憶媒体との間のデータ転送を要求するアクセス要求とをホスト装置から受け取る処理と、
    前記第2の記憶媒体が前記データ転送をDMAによって行う際に前記第1の記憶媒体にアクセスする際のアクセス先を、前記第1のアドレスに基づいて第3のアドレスとして特定する処理と、
    前記仮想的な記憶媒体上の前記第2のアドレスの位置に対応する前記第2の記憶媒体上の位置を第4のアドレスとして特定する処理と、
    前記第3のアドレスと、第4のアドレスと、前記第1の記憶媒体との間の前記データ転送を要求する情報とをアクセスコマンドとして前記第2の記憶媒体に通知し、前記第2の記憶媒体が前記アクセスコマンドに応じて前記第1の記憶媒体との間でDMAによって行う前記データ転送の完了を検出したとき、前記データ転送が完了したことを示す情報を前記アクセス要求への応答として前記ホスト装置に送る処理と
    をコンピュータに実行させることを特徴とするテータ転送プログラム。
JP2017121593A 2017-06-21 2017-06-21 データ転送装置およびデータ転送方法 Active JP7000712B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017121593A JP7000712B2 (ja) 2017-06-21 2017-06-21 データ転送装置およびデータ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017121593A JP7000712B2 (ja) 2017-06-21 2017-06-21 データ転送装置およびデータ転送方法

Publications (2)

Publication Number Publication Date
JP2019008418A JP2019008418A (ja) 2019-01-17
JP7000712B2 true JP7000712B2 (ja) 2022-01-19

Family

ID=65028870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017121593A Active JP7000712B2 (ja) 2017-06-21 2017-06-21 データ転送装置およびデータ転送方法

Country Status (1)

Country Link
JP (1) JP7000712B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033362A1 (en) 2005-02-04 2007-02-08 Sinclair Alan W Mass data storage system
JP2011186559A (ja) 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置
WO2015121912A1 (ja) 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0566980A (ja) * 1991-09-09 1993-03-19 Hitachi Ltd フアイル制御方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033362A1 (en) 2005-02-04 2007-02-08 Sinclair Alan W Mass data storage system
JP2009503731A (ja) 2005-08-03 2009-01-29 サンディスク コーポレイション 大容量データ記憶システム
JP2011186559A (ja) 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置
WO2015121912A1 (ja) 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置

Also Published As

Publication number Publication date
JP2019008418A (ja) 2019-01-17

Similar Documents

Publication Publication Date Title
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
JP5090941B2 (ja) ストレージサブシステム及びストレージシステム
US9792073B2 (en) Method of LUN management in a solid state disk array
JP6190898B2 (ja) サーバに接続されるシステム及び仮想マシンが動作しているサーバに接続されたシステムによる方法
JP4992835B2 (ja) ディスク記憶装置およびプログラム
US20120079229A1 (en) Data storage optimization for a virtual platform
US8850116B2 (en) Data prefetch for SCSI referrals
JP6459644B2 (ja) ストレージ制御装置、制御システム及び制御プログラム
US8954658B1 (en) Method of LUN management in a solid state disk array
US20130036265A1 (en) Method to allow storage cache acceleration when the slow tier is on independent controller
US20170199680A1 (en) System and method of write amplification factor mitigation and flash lifespan extension
US20180307426A1 (en) Storage apparatus and storage control method
JP2018160189A (ja) メモリシステム
WO2019244656A1 (ja) ストレージ装置
WO2015162755A1 (ja) データを圧縮して格納するストレージ装置
JPWO2015141219A1 (ja) ストレージシステム、制御装置、データアクセス方法およびプログラム
JP5910596B2 (ja) ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム
JP7000712B2 (ja) データ転送装置およびデータ転送方法
JP5829753B2 (ja) ストレージシステムおよび記憶制御方法
JP7067256B2 (ja) データ転送装置およびデータ転送方法
WO2014192051A1 (ja) ストレージシステム及びストレージシステムの制御方法
WO2022021280A1 (zh) 存储控制器、存储控制方法、固态硬盘及存储系统
JP6427913B2 (ja) ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム
JP7251056B2 (ja) コントローラ、計算機システム、データ転送方法および転送制御プログラム
WO2017168690A1 (ja) ストレージ装置、及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210420

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210615

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211207

R150 Certificate of patent or registration of utility model

Ref document number: 7000712

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150