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

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

Info

Publication number
JP7067256B2
JP7067256B2 JP2018095601A JP2018095601A JP7067256B2 JP 7067256 B2 JP7067256 B2 JP 7067256B2 JP 2018095601 A JP2018095601 A JP 2018095601A JP 2018095601 A JP2018095601 A JP 2018095601A JP 7067256 B2 JP7067256 B2 JP 7067256B2
Authority
JP
Japan
Prior art keywords
address information
area
transfer
storage medium
address
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
JP2018095601A
Other languages
English (en)
Other versions
JP2019200664A (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 JP2018095601A priority Critical patent/JP7067256B2/ja
Publication of JP2019200664A publication Critical patent/JP2019200664A/ja
Application granted granted Critical
Publication of JP7067256B2 publication Critical patent/JP7067256B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、データ転送技術に関するものであり、特に、仮想記憶媒体にマッピングされた記憶媒体とホストとの間で直接、データ転送を行う技術に関するものである。
計算機システムにおいて、HDD(Hard Disk Drive)に代えてSSD(Solid State Drive)を用いることによるアクセス性能の向上が広く行われている。また、ストレージの性能や信頼性を向上させる手段として、RAID(Redundant Array of Inexpensive Disks)によるストライピングやミラーリングが用いられる。RAIDでは、複数の記憶媒体の記憶領域を単一の仮想的な記憶媒体または記憶領域のような仮想記憶媒体にマッピングすることでストライピングやミラーリングが実現される。アクセス元であるホストは、RAIDによって提供される仮想記憶媒体にアクセスを行うことで、マッピングを意識せずにストレージの性能や信頼性を向上することができる。
RAIDを実現するコントローラは、ホストに対して仮想記憶媒体として動作するため、ホストから仮想記憶媒体に対するアクセス要求に応じて、ホストと記憶媒体との間におけるデータ転送の制御を行う。そのため、コントローラを用いてホストが仮想記憶媒体にアクセスして行うホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送における性能の向上を図るための技術の開発が行われている。そのような、ホストが仮想記憶媒体にアクセスして行われるホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送の性能を向上する技術としては、例えば、特許文献1のような技術が開示されている。
特許文献1は、コントローラを介して仮想記憶媒体にマッピングされた記憶媒体とホストの間でデータ転送を行うRAIDシステムに関するものである。特許文献1のRAIDシステムでは、ホストは、コントローラに対してホストのメモリアドレス空間上の記憶領域と記憶媒体の記憶領域間のデータ転送を要求し、コントローラによってデータ転送が制御されている。コントローラは、仮想記憶媒体に記憶媒体がどのようにマッピングされているかを示すマッピングテーブルが格納されている箇所の情報を保持し、マッピングテーブルを参照することでデータ転送の制御を行う。引用文献1は、そのような構成とすることで、情報の更新作業量を抑えてアクセス性能を向上させることができるとしている。
また、非特許文献1には、記憶媒体のアクセス規格であるNVM Express(登録商標)(Non-Volatile Memory Express)が示されている。非特許文献1の技術に基づいた記憶媒体は、データ転送を行うメモリのアドレスと記憶媒体上のLBA(Logical Block Address)の範囲をReadとWriteの各コマンドで指定することで、メモリと記憶媒体との間でDMA(Direct Memory Access)に相当する動作を行う。
特開2007-279898号公報
"NVM Express 1.3 Specification"、[Online]、2017年5月1日、NVM Express、[2018年4月12日検索]、インターネット<URL:http://www.nvmexpress.org/wp-content/uploads/NVM_Express_Revision_1.3.pdf>
しかしながら、特許文献1の技術は、次のような点で十分ではない。特許文献1では、ホストと記憶媒体の間でコントローラを介してデータ転送を行う際に、コントローラと記憶媒体との間の接続帯域やコントローラの処理能力がボトルネックになり得る。また、非特許文献1の技術では、SSDを用いている記憶媒体へのアクセス時にホストのメモリとの間で直接データ転送を行う場合には、物理記憶媒体に対するLBAの指定が必要である。しかし、仮想記憶媒体に対するアクセスでは、仮想記憶媒体が記憶媒体の構成や記憶媒体に対するデータの配置を管理し、これらの情報をアクセス元であるホストやホストで実行されるコンピュータプログラムから隠蔽する。そのため、非特許文献1の技術では、仮想記憶媒体にアクセスする際にホスト側からデータ転送を行う相手となる記憶媒体およびアクセス先となるLBAの特定が困難である。よって、特許文献1および非特許文献1の技術では、仮想記憶媒体を介したホストと記憶媒体間のデータ転送の性能を向上するための技術としては十分ではない。
本発明は、上記の課題を解決するため、ホストのメモリ空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送の性能を向上することができるコントローラを提供することを目的としている。
上記の課題を解決するため、本発明のコントローラは、アクセス要求受信手段と、転送領域算出手段と、転送処理内容通知手段と、マッピング情報送信手段を備えている。アクセス要求受信手段は、接続先のホストから、第1のアドレス情報と、第2のアドレス情報とを受信する。第1のアドレス情報は、仮想的な記憶領域へのアクセス要求と、仮想的な記憶領域上のアクセス先の領域を指定する。第2のアドレス情報は、第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。転送領域算出手段は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を算出する。転送処理内容通知手段は、アクセス要求の種類と、記憶媒体上の第3のアドレス情報に対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、第2のアドレス情報および第3のアドレス情報とともに転送処理内容通知として出力する。マッピング情報送信手段は、ホストに第1のアドレスに対応する第3のアドレスの情報をマッピング情報として送信する。
本発明のデータ転送方法は、接続先のホストから、第1のアドレス情報と、第2のアドレス情報とを受信する。第1のアドレス情報は、仮想的な記憶領域へのアクセス要求と、仮想的な記憶領域上のアクセス先の領域を指定する。第2のアドレス情報は、第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する第3のアドレス情報を算出する。本発明のデータ転送方法は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定する。本発明のデータ転送方法は、アクセス要求の種類と、記憶媒体上の第3のアドレス情報に対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、第2のアドレス情報および第3のアドレス情報とともに転送処理内容通知として出力する。本発明のデータ転送方法は、ホストに第1のアドレスに対応する第3のアドレスの情報をマッピング情報として送信する。
本発明によると、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送の性能を向上することができる。
本発明の第1の実施形態の構成の概要を示す図である。 本発明の第2の実施形態の構成の概要を示す図である。 本発明の第2の実施形態のマッピングテーブルキャッシュ管理部の構成を示す図である。 本発明の第2の実施形態のコントローラの構成を示す図である。 本発明の第2の実施形態のマッピングテーブルの構成の例を示す図である。 本発明の第2の実施形態における記憶領域上のアドレスの計算方法を模式的に示した図である。 本発明の第2の実施形態におけるマッピングテーブルの一部を示す図である。 本発明の第2の実施形態のマッピングテーブルキャッシュ管理部の動作フローを示す図である。 本発明の第2の実施形態のコントローラの動作フローを示す図である。 本発明の第2の実施形態のデータ転送実行部の動作フローを示す図である。 本発明の第2の実施形態における情報の流れの例を模式的に示す図である。 本発明の第3の実施形態の構成の概要を示す図である。 本発明の第3の実施形態のマッピングテーブルキャッシュ管理部の構成を示す図である。 本発明の第3の実施形態のコントローラの構成を示す図である。 本発明の第3の実施形態における記憶領域上のアドレスの計算方法を模式的に示した図である。 本発明の第3の実施形態のマッピングテーブルキャッシュ管理部の動作フローを示す図である。 本発明の第3の実施形態のマッピングテーブルキャッシュ管理部の動作フローを示す図である。
本発明の第3の実施形態のコントローラの動作フローを示す図である。 本発明の第3の実施形態のデータ転送実行部の動作フローを示す図である。 本発明の各実施形態におけるコントローラおよびデータ転送実行部の処理を行うコンピュータの構成の例を示す図である。
(第1の実施形態)
本発明の第1の実施形態について図を参照して詳細に説明する。図1は、本実施形態のコントローラの構成の概要を示したものである。本実施形態のコントローラは、アクセス要求受信手段1と、転送領域算出手段2と、転送処理内容通知手段3と、マッピング情報送信手段4を備えている。アクセス要求受信手段1は、接続先のホストから、第1のアドレス情報と、第2のアドレス情報とを受信する。第1のアドレス情報は、仮想的な記憶領域へのアクセス要求と、仮想的な記憶領域上のアクセス先の領域を指定する第3のアドレス情報を算出する。第2のアドレス情報は、第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行うホストのメモリアドレス空間上の領域を指定する。転送領域算出手段2は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する。転送処理内容通知手段3は、アクセス要求の種類と、記憶媒体上の第3のアドレス情報に対応する領域と、ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、第2のアドレス情報および第3のアドレス情報とともに転送処理内容通知として出力する。マッピング情報送信手段4は、ホストに第1のアドレスに対応する第3のアドレスの情報をマッピング情報として送信する。
本実施形態のコントローラのアクセス要求受信手段1は、接続先のホストから、仮想的な記憶領域である仮想記憶媒体へのアクセス要求と、第1のアドレス情報と、第2のアドレス情報を受信する。本実施形態の転送領域算出手段2は、第1のアドレス情報に基づいて、第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報を特定している。また、本実施形態の転送処理内容通知手段3は、アクセス要求の種類と、第2のアドレス情報および第3のアドレス情報を転送処理内容通知として出力している。そのため、転送処理内容通知を基にホストと記憶媒体間でコントローラを介さずにデータ転送を行うことが可能になるので、コントローラの負荷が低減し、コントローラに起因するデータ転送の性能を向上することができる。また、本実施形態のマッピング情報送信手段4は、ホストに第1のアドレスに対応する第3のアドレスの情報をマッピング情報として送信する。そのため、ホストは、第1のアドレスへのアクセスを行う際にコントローラを介することなく、転送処理内容通知を出力することができるのでデータ転送処理におけるコントローラの処理を抑制することができる。その結果、本実施形態のコントローラを用いることで、コントローラの処理量を抑制し、ホストのメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体の記憶領域間のデータ転送における性能を向上することができる。
(第2の実施形態)
本発明の第2の実施形態について図を参照して詳細に説明する。図2は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト10と、コントローラ20と、データ転送実行部30と、記憶媒体40を備えている。
本実施形態の計算機システムは、複数の記憶媒体の記憶領域を単一の仮想的な記憶媒体である仮想記憶媒体にマッピングし、ホストから仮想記憶媒体を介して記憶媒体にアクセスするRAID(Redundant Array of Inexpensive Disks)システムによって構成されている。本実施形態の計算機システムは、データ転送の実行をデータ転送実行部30が行い、ホスト10のメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体との間でコントローラ20を介さずにデータ転送を行う。
ホスト10の構成について説明する。ホスト10は、メモリ11と、アプリケーション実行部12と、マッピングテーブルキャッシュ管理部13を備えている。
メモリ11は、ホスト10の主記憶領域としての機能を有する。メモリ11は、例えば、DRAM(Dynamic Random Access Memory)を用いて構成される。メモリ11は、DRAM以外の記憶デバイスを用いて構成されていてもよい。アプリケーション実行部12は、メモリ11にアクセスし、データの書き込みおよびデータの読み出しを行う。また、メモリ11は、記憶媒体40の間で互いにデータ転送を行う。メモリ11は、ホスト10に直接またはネットワークを介して接続され、ホスト10のメモリアドレス空間を経由して入出力を行うGPU(Graphics Processing Units)やFPGA(Field Programmable Gate Array)等の半導体装置であってもよい。
アプリケーション実行部12は、アプリケーションプログラムを実行し各処理を行う。アプリケーション実行部12は、マッピングテーブルキャッシュ管理部13を介して仮想記憶媒体100にアクセスし、各処理を行う際に必要なデータの読み出しや処理結果の書き込みを行う。アプリケーション実行部12は、ホスト10上の1個または複数のCPU(Central Processing Unit)と、アプリケーションプログラムを記憶する記憶装置等によって構成されている。アプリケーション実行部12は、アプリケーションプログラムをCPU等の汎用にプロセッサによって実行する構成に代えて、FPGA等のあらかじめ設定された回路を用いて各処理を実行する構成であってもよい。
アプリケーション実行部12は、マッピングテーブルキャッシュ管理部13にアクセス要求を行うことでストレージである仮想記憶媒体に対してアクセスする。アプリケーション実行部12は、仮想記憶媒体にアクセスする際に、アクセス要求の種類と、仮想記憶媒体上のアクセス対象の領域を指し示すアドレスと、ホスト10のメモリアドレス空間上のアドレスをアクセス要求としてマッピングテーブルキャッシュ管理部13に送る。
アクセス要求の種類は、ReadとWriteのいずれの動作を行うのかを示す情報である。仮想記憶媒体上のアクセス対象の領域を指し示すアドレスは、LBA(Logical Block Address)等の形式で表されている。ホスト10のメモリアドレス空間上のアドレスは、書き込みまたは読み出しを行うデータを格納するホスト10のメモリアドレス空間上の領域を指し示すアドレスである。
マッピングテーブルキャッシュ管理部13の構成について説明する。図3は、本実施形態のマッピングテーブルキャッシュ管理部13の構成を示したものである。マッピングテーブルキャッシュ管理部13は、キャッシュ制御部201と、マッピングテーブル記憶部202と、転送処理内容通知部203を備えている。
キャッシュ制御部201は、アプリケーション実行部12からアクセス要求を受けた際、キャッシュとして保持しているマッピング情報に、アクセス対象の仮想記憶媒体100のアドレス空間が含まれているかを確認する。キャッシュにアクセス対象の仮想記憶媒体100のアドレス空間が含まれているとき、キャッシュ制御部201は、マッピング情報を基に対応する転送ストレージ領域およびメモリ11上の転送メモリ領域を算出する。キャッシュにアクセス対象の仮想記憶媒体100のアドレス空間が含まれていないとき、キャッシュ制御部201は、アクセス要求をコントローラ20に転送する。また、キャッシュ制御部201は、コントローラ20のマッピングテーブル送信部24から送られてくるマッピング情報をマッピングテーブル記憶部202に保存する。
マッピングテーブル記憶部202は、コントローラ20に保存されている仮想記憶媒体100のアドレス空間に対する各記憶媒体40のマッピングテーブルの情報の一部または全部をキャッシュとして保持する。マッピングテーブル記憶部202は、専用の記憶装置として備えられていてもよく、また、メモリ11やアプリケーション実行部12のアプリケーションプログラム等が記憶されている記憶装置上に形成されていてもよい。
転送処理内容通知部203は、キャッシュ制御部201が算出した転送ストレージ領域および転送メモリ領域の情報と、アクセス要求の種類の情報を、コントローラ20を介さず、直接、データ転送実行部30に通知する。
マッピングテーブルキャッシュ管理部13において行われる処理は、アプリケーション実行部12でアプリケーションプログラムを実行することで行われてもよい。また、コントローラ20よりも通信のレイテンシが低いデバイスにマッピングテーブルキャッシュ管理部13と同等の機能が付加されていてもよい。
コントローラ20の構成について説明する。図4は、本実施形態のコントローラ20の構成を示したものである。本実施形態のコントローラ20は、アクセス要求受信部21と、転送ストレージ領域算出部22と、転送処理内容通知部23と、マッピングテーブル送信部24と、マッピングテーブル記憶部25を備えている。
アクセス要求受信部21は、ホスト10から仮想記憶媒体100へのアクセス要求を受け取る。アクセス要求は、アクセス要求の種類、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスおよびメモリ11上のアクセス対象の領域に対応するホスト10のメモリアドレス空間上の領域を指し示すアドレスの情報によって構成されている。アクセス要求の種類は、ReadまたはWriteのいずれであるかを表す情報である。アクセス要求受信部21は、アクセス要求に含まれる情報のうちアドレスに関する情報を転送ストレージ領域算出部22に送る。また、アクセス要求受信部21は、アクセス要求に含まれる情報のうちアクセス要求の種類の情報を転送処理内容通知部24に送る。また、本実施形態のアクセス要求受信部21の機能は、第1の実施形態のアクセス要求受信手段1に相当する。
転送ストレージ領域算出部22は、アクセス要求で指定された仮想記憶媒体のメモリアドレス空間上のアドレスから、対応する記憶媒体40上の記憶領域のアドレスを転送ストレージ領域として算出する機能を有する。転送ストレージ領域算出部22は、マッピングテーブル記憶部25を参照し、仮想記憶媒体100のアドレス空間に対応する記憶媒体40のアドレスを示した情報であるマッピング情報を基に転送ストレージ領域を算出する。転送ストレージ領域が複数の記憶媒体40や記憶領域に跨る場合には、転送ストレージ領域算出部22は、転送ストレージ領域をそれぞれ特定するとともに、アクセス対象の領域全体において対応する位置を示すオフセットを算出する。
転送ストレージ領域算出部22は、アクセス要求で指定されたホスト10のメモリアドレス空間上の領域を指し示すアドレスから、転送ストレージ領域に対応するホスト10のアドレスを転送メモリ領域としてオフセットを用いて算出する。転送ストレージ領域に対応する転送メモリ領域が断片化している場合には、転送ストレージ領域算出部22は、各断片に対応するホスト10のメモリアドレス空間上のアドレスを、オフセットを用いて算出する。また、本実施形態の転送ストレージ領域算出部22の機能は、第1の実施形態の転送領域算出手段2に相当する。
転送処理内容通知部23は、転送ストレージ領域算出部22が算出した転送ストレージ領域および転送メモリ領域の情報をアクセス要求の種類の情報とともに転送処理内容通知としてデータ転送実行部30に送る。転送処理内容通知部23は、転送ストレージ領域を含む記憶媒体40の識別子、転送ストレージ領域の記憶媒体40上のアドレス、転送メモリ領域のアドレスおよびアクセス要求の種類の情報を転送処理内容通知としてデータ転送実行部30に送る。また、本実施形態の転送処理内容通知部23の機能は、第1の実施形態の転送処理内容通知手段3に相当する。
マッピングテーブル送信部24は、仮想記憶媒体100のアドレス空間に対する記憶媒体40のマッピングを示すマッピング情報によって構成されるデータテーブルであるマッピングテーブルをマッピングテーブルキャッシュ管理部13に送信する。マッピングテーブル送信部24は、マッピングテーブルキャッシュ管理部13に保存されているマッピング情報の有効化や無効化の情報をマッピングテーブルキャッシュ管理部13に送信してもよい。本実施形態のマッピングテーブル送信部24の機能は、第1の実施形態のマッピング情報送信手段4に相当する。
マッピング情報記憶部25は、マッピングテーブルを保存している。マッピングテーブルは、仮想記憶媒体100上の各領域に対してマッピングされる記憶媒体40の識別子および記憶媒体40におけるアドレスの対応関係の情報を含むデータテーブルである。
図5は、マッピングテーブルの構成の例を示した図である。図5に示すマッピングテーブルは、仮想記憶媒体100上の領域毎にマッピング先の記憶媒体40の識別子および記憶媒体40におけるアドレスの対応関係を記録したマッピングエントリ300を含む情報によって構成されている。マッピングエントリ300は、論理アドレス301と、記憶媒体識別子302と、物理アドレス303と、マッピングサイズ304の情報が互いに関連づけられている。論理アドレス301は、仮想記憶媒体100の各領域の先頭アドレスの情報である。記憶媒体識別子302は、論理アドレス301の指す領域のマッピング先である記憶媒体40の識別子の情報である。物理アドレス303は、記憶媒体識別子302の表す記憶媒体40におけるマッピング先の記憶領域のアドレスである。マッピングサイズ304は、マッピングされる記憶領域のサイズを示す情報である。マッピングテーブルの形式は、図5に示した形式以外であってもよい。例えば、各マッピングエントリ300が、仮想記憶媒体100の領域を先頭から一定サイズ毎に区切った領域に対応する場合は、論理アドレス301およびマッピングサイズ304は、不要である。また、仮想記憶媒体100と記憶媒体40のマッピングにRAIDを用いる場合は、RAIDの構成情報を除いたマッピングテーブルの各エントリの情報は不要である。RAIDの場合には、例えば、RAID0であればストライプを構成する記憶媒体40の数量および各記憶媒体40に対して連続的にマッピングされた領域であるチャンクのサイズから仮想記憶媒体100に対応するマッピング先を算出することができるためである。
図6は、転送ストレージ領域算出部22およびキャッシュ制御部201において算出される仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、算出される転送ストレージ領域の対応関係の例を示す図である。また、図7は、図6の例に対応するマッピングテーブルの構成を示している。図6の例では、仮想記憶媒体100上のアクセス対象の領域は、記憶媒体40の記憶領域42に対してマッピングされている。転送ストレージ領域算出部22およびキャッシュ制御部201は、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、マッピングテーブルの情報を基に、転送ストレージ領域43が含まれる記憶媒体40の識別子を特定し、先頭アドレスを算出する。ここで、図5の例において、仮想記憶媒体100上のアクセス対象の領域を指し示す論理アドレスをLa、記憶領域41の論理アドレスと物理アドレスをそれぞれLb、Pbとする。そのように設定すると、転送ストレージ領域43の先頭アドレスPaは、Pa=Pb+(La-Lb)のように算出することができる。
データ転送実行部30は、転送ストレージ領域と転送メモリ領域の間で、アクセス要求の種類に基づいたデータ転送を行う。データ転送実行部30は、ホスト10のマッピングテーブルキャッシュ管理部13またはコントローラ20から転送ストレージ領域と転送メモリ領域の間で行うデータ転送処理の要求を転送処理内容通知として受け取る。転送処理内容通知には、アクセス要求の種類と、転送元と転送先のアドレスの情報が含まれている。
アクセス要求の種類がReadである場合には、転送ストレージ領域から転送メモリ領域にデータの転送が行われる。すなわち、アクセス要求の種類がReadである場合には、仮想記憶媒体100にマッピングされている記憶媒体40からデータが読み出され、メモリ11に書き込まれる。また、アクセス要求の種類がWriteである場合には、転送メモリ領域から転送ストレージ領域にデータの転送が行われる。すなわち、アクセス要求の種類がWriteである場合には、メモリ11のデータが仮想記憶媒体100にマッピングされている記憶媒体40に書き込まれる。
データ転送実行部30は、コントローラ20を介さずに転送ストレージ領域と転送メモリ領域の間のデータ転送を実行する。データ転送実行部30は、転送ストレージ領域と転送メモリ領域に対するアクセスを個別に行わずに、ホスト10のDMA(Direct Memory Access)コントローラに転送ストレージ領域と転送メモリ領域のアドレスを通知してデータ転送を行ってもよい。また、記憶媒体40がNVM Expessに対応したSSD(Solid State Drive)の場合には、データ転送実行部30は、記憶媒体40に転送ストレージ領域と転送メモリ領域のアドレスを通知してデータ転送を行ってもよい。NVM Expessに対応したSSDは、指定したホスト10のメモリアドレスと、SSDのLBA(Logical Block Address)が指し示す領域との間でDMA転送によるデータ転送を行う。
データ転送の実行時は、ボトルネックとなり得るコントローラ20を介さずに実行される。コントローラ20は、ホスト10から透過である。また、データ転送実行部30からコントローラ20またはマッピングテーブルキャッシュ管理部13にデータ転送処理の完了を通知するようにしてもよい。そのような構成の場合には、コントローラ20またはマッピングテーブルキャッシュ管理部13は、アクセス要求に対応する全てのデータ転送が完了した際に、アプリケーション実行部12に仮想記憶媒体100へのアクセス要求に対する処理が完了したことを通知することもできる。
コントローラ20およびデータ転送実行部30における各処理は、それぞれ、FPGA等の半導体装置を用いて行われもよく、また、CPUとメモリ等によって構成されるコンピュータ上でプログラムを実行することで行われてもよい。
データ転送実行部30は、コントローラ20と独立した状態で、バスやネットワークを介してホスト10に接続された構成のモジュールでなくてもよい。例えば、データ転送実行部30は、コントローラ20と同一のデバイスに形成されていてもよい。また、データ転送実行部30は、コンピュータプログラムをホスト10またはホスト10とネットワークまたはバスを介して接続された他のノード上で実行することで各処理を行う構成であってもよい。
記憶媒体40は、コントローラ20を介さずにホスト10と接続された記憶装置である。記憶媒体40は、ホストとネットワークを介して接続されたノードにバスやネットワークを介して直接アクセスが可能な状態で接続されていてもよい。記憶媒体40は、例えば、NAND Flashのような不揮発性メモリによって構成されるSSDや、DRAMまたはその他のメモリによって構成されるDIMM(Dual Inline Memory Module)のような記憶装置である。記憶媒体40にはHDD等の記憶装置またはそれらの記憶装置との組み合わせによって構成されていてもよい。また、記憶媒体40は、複数の記憶装置によって構成されていてもよい。
仮想記憶媒体100は、コントローラ20によって記憶媒体40の記憶領域をマッピングすることで構築されている。アプリケーション実行部12から仮想記憶媒体100へのアクセス要求は、コントローラ20が受け取り、データ転送実行部30によってアクセス処理が実行される。
本実施形態の計算機システムの動作について説明する。図8は、本実施形態のホスト10のマッピングテーブルキャッシュ管理部13の動作フローを示したものである。図9は、本実施形態のコントローラ20の動作フローを示したものである。図10は、本実施形態のデータ転送実行部30の動作フローを示したものである。また、図11は、データ転送処理が実行される際の各ユニット間での情報の流れを模式的に示した図である。
ホスト10のアプリケーション実行部12は、仮想記憶媒体100とホスト10のメモリアドレス空間の間でのデータ転送の必要が生じた際に、マッピングテーブルキャッシュ管理部13のキャッシュ制御部201にアクセス要求を送る。キャッシュ制御部201は、仮想記憶媒体100に対するアクセス要求として、アクセス要求の種類と、ホスト10のメモリアドレス空間上の領域を指し示すアドレスと、仮想記憶媒体100上のアクセス対象の領域のアドレスの情報を受け取る(ステップS11)。
アクセス要求が入力されると、キャッシュ制御部201は、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと対応するマッピングエントリ300がマッピングテーブル記憶部202のマッピングテーブルにあるかどうかを検索する。
マッピングテーブルに、アクセス先に対応するマッピングエントリ300がキャッシュとして存在する場合(ステップS12でYes)、キャッシュ制御部201は、対応するマッピングエントリ300を参照して、転送ストレージ領域を含む記憶媒体40を特定する。また、キャッシュ制御部201は、記憶媒体40における転送ストレージ領域のアドレスを算出する(ステップS14)。
転送ストレージ領域のアドレスを算出すると、キャッシュ制御部201は、アプリケーション実行部12から受け取ったホスト10のメモリアドレス空間上の領域のアドレスを、アクセス要求に対応する転送メモリ領域の先頭アドレスとして設定する(ステップS15)。
転送メモリ領域が設定されると、転送処理内容通知部203は、アクセス要求の種類と、転送メモリ領域の先頭アドレス並びに転送ストレージ領域に対応する記憶媒体40の識別子およびアドレスをデータ転送実行部30に転送処理内容通知として送信する(ステップS16)。
マッピングテーブルに対応するマッピングエントリ300が存在しない場合(ステップS12でNo)、キャッシュ制御部201は、アクセス要求をコントローラ20に送信する(ステップS13)。
コントローラ20のアクセス要求受信部21は、アクセス要求としてアクセス要求の種類と、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、ホスト10のメモリアドレス空間上の領域を指し示すアドレスを受け取る(ステップS21)。
アクセス要求を受け取ると、アクセス要求受信部21は、アクセス要求に含まれる情報のうち各アドレスの情報を転送ストレージ領域算出部22に送る。アクセス要求受信部21は、アクセス要求に含まれる情報のうちアクセス要求の種類の情報を転送処理内容通知部23に送る。
アクセス要求に含まれる各アドレスの情報を受け取ると、転送ストレージ領域算出部22は、マッピングテーブルを参照して、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスを基に転送ストレージ領域を含む記憶媒体40を特定する。転送ストレージ領域を含む記憶媒体40を特定すると、転送ストレージ領域算出部22は、記憶媒体40上における転送ストレージ領域のアドレスを算出する(ステップS22)。
転送ストレージ領域が算出されると、アクセス要求受信部21は、ホスト10から受け取った、メモリアドレス空間上の領域のアドレスを、アクセス要求に対応する転送メモリ領域の先頭アドレスとして設定する(ステップS23)。
転送メモリ領域が設定されると、転送処理内容通知部23は、アクセス要求の種類と、転送メモリ領域の先頭アドレス並びに転送ストレージ領域に対応する記憶媒体40の識別子およびアドレスをデータ転送実行部30にデータ転送処理内容通知として通知する(ステップS24)。
データ転送処理内容通知がデータ転送実行部30に送られると、マッピングテーブル送信部24は、対応するマッピングエントリ300の情報をマッピングテーブルキャッシュ管理部13に送信する(ステップS25)。マッピングエントリ300の情報を送信すると、コントローラ20は、データ転送に関する処理を終了する。
データ転送実行部30は、コントローラ20またはホスト10のマッピングテーブルキャッシュ管理部13からデータ転送処理内容通知を受信する(ステップS31)。データ転送処理内容通知を受け取ると、データ転送実行部30は、アクセス要求の種類を確認する。アクセス要求の種類がReadである場合(ステップS32でYes)、データ転送実行部30は、データ転送処理の内容に基づいて、記憶媒体40の転送ストレージ領域からメモリ11の転送メモリ領域へのデータ転送を実行する(ステップS33)。
アクセス要求の種類がWriteである場合(ステップS32でNo)、データ転送実行部30は、データ転送処理の内容に基づいて、メモリ11の転送メモリ領域から記憶媒体40の転送ストレージ領域へのデータ転送を実行する(ステップS34)。
上記に示した各ステップにおける処理は、他の順番で行われてもよい。例えば、ステップS14とステップS15や、ステップS22とステップS23の処理は同時期に実行または順序を入れ替えて実行されてもよい。また、データ転送実行部30がデータ転送処理の完了を、データ転送処理内容通知の送信元のコントローラ20またはホスト10のマッピングテーブルキャッシュ管理部13を介してアプリケーション実行部12に通知する構成としてもよい。
本実施形態の計算機システムは、ホスト10上のマッピングテーブルにアクセス先のアドレスに対応する情報を有している際に、ホスト10がデータ転送実行部30に転送処理内容通知を出力している。また、コントローラ20は、データ転送の処理を行った際にマッピングエントリのデータを含むマッピングテーブルをホスト10に送信し、ホスト10は、受け取ったマッピングテーブルをキャッシュとして保持している。そのため、ホスト10は、次に、同じアクセス先にサクセスする際に自装置内にキャッシュとして保持しているマッピングテーブルを算出して、コントローラ20を介さずにデータ転送実行部30にデータ転送処理の実行の要求を送ることができる。
また、データ転送実行部30は、ホスト10またはコントローラ20から転送処理内容通知を受け取った際に、受け取った転送処理内容通知に基づいてコントローラ20を介さずに記憶媒体40とホスト10のメモリ空間上でのデータ転送を実行する。そのため、本実施形態の計算機システムは、アクセス要求が発生した際のコントローラ20へのアクセス回数を抑制することでコントローラ20の負荷を低減し、データ転送の遅延を抑制することができる。その結果、本実施形態の計算機システムは、ホスト10のメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体40の記憶領域間のデータ転送の性能を向上することができる。
(第3の実施形態)
本発明の第3の実施形態について図を参照して詳細に説明する。図12は、本実施形態の計算機システムの構成の概要を示したものである。本実施形態の計算機システムは、ホスト50と、コントローラ60と、データ転送実行部70と、記憶媒体40を備えている。
第2の実施形態の計算機システムは、アクセス対象となる領域の先頭のアドレスを指定することでデータ転送の対象となる記憶領域の情報が通知されている。本実施形態の計算機システムは、領域のサイズの情報によってアクセス領域の範囲の情報を通知することを特徴とする。
また、本実施形態の計算機システムは、第2の実施形態と同様に複数の記憶媒体の記憶領域を単一の仮想的な記憶媒体である仮想記憶媒体にマッピングし、ホストから仮想記憶媒体を介して記憶媒体にアクセスするRAIDシステムによって構成されている。本実施形態の計算機システムは、データ転送の実行をデータ転送実行部70が行い、ホスト50のメモリアドレス空間上の記憶領域と、仮想記憶媒体にマッピングされた記憶媒体との間でコントローラ60を介さずにデータ転送を行う。
ホスト50の構成について説明する。ホスト50は、メモリ11と、アプリケーション実行部12と、マッピングテーブルキャッシュ管理部51を備えている。本実施形態のメモリ11と、アプリケーション実行部12の構成と機能は、第2の実施形態の同名称の部位と同様である。本実施形態のアプリケーション実行部12が出力するアクセス要求は、アクセス要求の種類、仮想記憶媒体100上のアクセス対象の領域を指定するアドレス、メモリ11上のアクセス対象の領域に対応するホスト10のメモリアドレス空間上の領域を指定するアドレスおよびアクセス要求範囲によって構成されている。アクセス要求範囲には、アクセス要求の範囲を大きさで示すアクセスサイズまたはアサクセス要求の末尾を指し示すアドレスの情報が用いられる。
マッピングテーブルキャッシュ管理部51の構成について説明する。図13は、本実施形態のマッピングテーブルキャッシュ管理部51の構成を示したものである。マッピングテーブルキャッシュ管理部51は、キャッシュ制御部211と、マッピングテーブル記憶部212と、転送領域算出制御部213と、転送処理内容通知部214を備えている。
本実施形態のキャッシュ制御部211、マッピングテーブル記憶部212および転送処理内容通知部214の構成と機能は、第2の実施形態の同名称の部位と同様である。
転送領域算出制御部213は、アクセス要求で指し示される仮想記憶媒体100上のアドレスを基に、対応する記憶媒体40を特定し、記憶媒体40上のアドレスを転送ストレージ領域のアドレスとして算出する。転送領域算出制御部213は、記憶媒体40の複数の記憶領域に分散した転送ストレージ領域について、転送ストレージ領域を示す記憶媒体40内のアドレスの範囲または先頭アドレスおよび領域のサイズを算出する。また、転送領域算出制御部213は、転送ストレージ領域に対応するメモリ11上のアドレスを転送メモリ領域のアドレスとして算出する。
コントローラ60の構成について説明する。図14は、本実施形態のコントローラ60の構成を示したものである。コントローラ60は、アクセス要求受信部61と、転送ストレージ領域算出部62と、転送処理内容通知部63と、マッピングテーブル送信部64と、マッピングテーブル記憶部65と、転送領域算出制御部66を備えている。
本実施形態のアクセス要求受信部61、転送ストレージ領域算出部62、転送処理内容通知部63、マッピングテーブル送信部64およびマッピングテーブル記憶部65の構成と機能は、第2の実施形態の同名称の部位と同様である。また、本実施形態のアクセス要求受信部61は、アクセス要求に含まれる情報のうちアドレスに関する情報とアクセスサイズ等のアクセス要求の範囲を示す情報を転送領域算出制御部66に送る。また、アクセス要求受信部61は、アクセス要求に含まれる情報のうちアクセスの種類の情報を転送処理内容通知部63に送る。
転送領域算出制御部66は、アクセス要求で指し示される仮想記憶媒体100上のアドレスを基に、対応する記憶媒体40を特定し、記憶媒体40上のアドレスを転送ストレージ領域のアドレスとして算出する。転送領域算出制御部66は、記憶媒体40の複数の記憶領域に分散した転送ストレージ領域について、転送ストレージ領域を示す記憶媒体40内のアドレスの範囲または先頭アドレスおよび領域のサイズを算出する。また、転送領域算出制御部66は、転送ストレージ領域に対応するメモリ11上のアドレスを転送メモリ領域のアドレスとして算出する。
図15は、転送ストレージ領域と転送メモリ領域の先頭アドレスの対応関係の例を模式的に示した図である。図15の例では、仮想記憶媒体100上のアクセス対象の領域であるアクセス対象領域81が、先頭から順番に記憶媒体40a、40b、40cの記憶領域82a、82b、82cにマッピングされる。また、ここで記憶領域82a、82bのサイズは、それぞれSa、Sbであるとする。そのとき、記憶領域82a、82b、82cに対応する転送メモリ領域83のアドレスMa、Mb、Mcは、アクセス要求で指し示される領域の先頭アドレスをMとした場合、それぞれ、Ma=M、Mb=M+Sa、Mc=M+Sa+Sbと計算できる。
本実施形態の計算機システムの動作について説明する。図16および図17は、本実施形態のホスト50のマッピングテーブルキャッシュ管理部51の動作フローを示したものである。図18は、本実施形態のコントローラ60の動作フローを示したものである。また、図19は、本実施形態のデータ転送実行部70の動作フローを示したものである。
マッピングテーブルキャッシュ管理部51のキャッシュ制御部211は、アプリケーション実行部12から仮想記憶媒体100に対するアクセス要求を受け取る(ステップS41)。アクセス要求には、アクセス要求の種類と、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、アクセス対象の領域のサイズと、アクセス対象の領域に対応するホスト50のメモリアドレス空間上の領域を指し示すアドレスの情報が含まれている。
アクセス要求を受け取ると、キャッシュ制御部211は、アクセス要求が示す仮想記憶媒体100上のアクセス対象の領域のアドレスが含まれるマッピングエントリ300が、マッピングテーブル記憶部212のマッピングテーブルにあるかどうかを確認する。
キャッシュとして保持されているマッピングテーブルに、アクセス先のアドレスに対応するマッピングエントリ300が存在した場合(ステップS42でYes)、マッピングテーブルキャッシュ管理部51は、転送処理内容通知の情報の生成する(ステップS44)。
転送処理内容通知の情報の生成を開始すると、マッピングテーブルキャッシュ管理部51の転送領域算出制御部213は、転送ストレージ領域および転送メモリ領域における着目点を表すオフセットを0に設定し初期化する(ステップS51)。また、転送領域算出制御部213は、データ転送実行部70に対して通知を行うデータ転送対象のリストを空にして初期化する。
初期化が完了すると各アドレスの算出が行われる。転送領域算出制御部213は、仮想記憶媒体100におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、仮想記憶媒体100上の着目点のアドレスを算出する(ステップS52)。初期状態では、オフセットは0である。
仮想記憶媒体100上の着目点のアドレスを算出すると、転送領域算出制御部213は、算出した仮想記憶媒体100上の着目点のアドレスをキャッシュ制御部211に通知する。着目点のアドレスを受け取ると、キャッシュ制御部211は、対応する転送ストレージ領域が含まれる記憶媒体40の識別子および転送ストレージ領域における着目点のアドレスを算出する(ステップS53)。
次に、転送領域算出制御部213は、ホスト50のメモリアドレス空間におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、ホスト50のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する(ステップS54)。初期状態では、オフセットは0である。転送領域算出制御部213は、マッピングテーブル記憶部212を参照して、仮想記憶媒体100上の着目点のアドレスから連続領域にマッピングされるサイズを算出する。転送領域算出制御部213は、着目点のアドレスと、対応するマッピングエントリ300の論理アドレス301の差分を算出する。差分を算出すると、転送領域算出制御部66は、差分を対応するマッピングエントリ300のマッピングサイズ304から差し引くことで、連続領域にマッピングされるサイズを算出する(ステップS55)。
連続領域にマッピングされるサイズを算出すると、転送領域算出制御部213は、アクセス対象の領域のサイズからオフセットを差し引いた値を算出して、連続領域にマッピングされるサイズと比較する。サイズを比較すると、転送領域算出制御部213は、2つの値のうち小さな方を記憶媒体40の識別子、転送ストレージ領域における着目点のアドレスおよび転送メモリ領域における着目点のアドレスとの組み合わせで用いるデータ転送のサイズとして設定する(ステップS56)。
データ転送のサイズを設定すると、転送領域算出制御部213は、記憶媒体40の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよびデータ転送のサイズの組み合わせの情報をデータ転送対象のリストに追加する(ステップS57)。
データ転送対象のリストにデータを追加すると、転送領域算出制御部213は、連続した領域にマッピングされるサイズの値をオフセットの値に加える(ステップS58)。オフセットの値がキャッシュ制御部211から受け取った、アクセス対象の領域のサイズ未満の場合(ステップS59でNo)、転送領域算出制御部213は、ステップS52からの処理を再度、実行する。
オフセットの値がキャッシュ制御部211から受け取った、アクセス対象の領域のサイズ以上の場合(ステップS59でYes)、転送領域算出制御部213は、転送処理内容通知の情報を転送処理内容通知部214に出力する(ステップS60)。転送処理内容通知を受け取ると、転送処理内容通知部214は、転送処理内容通知をデータ転送実行部70に送信する(ステップS45)。
キャッシュとして保持されているマッピングテーブルに、アクセス先に対応するマッピングエントリ300が存在しない場合(ステップS42でNo)、キャッシュ制御部211は、アクセス要求をコントローラ60に送信する(ステップS43)。
コントローラ60のアクセス要求受信部61は、ホスト50から仮想記憶媒体100に対するアクセス要求を受け取る(ステップS203)。アクセス要求には、アクセス要求の種類と、仮想記憶媒体100上のアクセス対象の領域を指し示すアドレスと、アクセス対象の領域のサイズと、ホスト50のメモリアドレス空間上の領域を指し示すアドレスの情報が含まれている。
コントローラ60のアクセス要求受信部61は、ホスト50からアクセス要求を受信する(ステップS71)。アクセス要求を受信すると、アクセス要求受信部61は、アクセス要求に含まれている各アドレスの情報およびアクセス領域のサイズを示す情報を転送領域算出制御部66に送る。また、アクセス要求受信部61は、アクセス要求の種類の情報を転送処理内容通知部63に送る。
アクセス要求に含まれる各アドレスの情報等を受け取ると、転送領域算出制御部66は、転送ストレージ領域および転送メモリ領域における着目点を表すオフセットを0に設定し初期化する。また、転送領域算出制御部66は、データ転送実行部70に対して通知を行うデータ転送対象のリストを空にして初期化する(ステップS72)。
初期化が完了すると各アドレスの算出が行われる。転送領域算出制御部66は、仮想記憶媒体100におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、仮想記憶媒体100上の着目点のアドレスを算出する(ステップS73)。初期状態では、オフセットは0である。
仮想記憶媒体100上の着目点のアドレスを算出すると、転送領域算出制御部66は、算出した仮想記憶媒体100上の着目点のアドレスを転送ストレージ領域算出部62に通知する。着目点のアドレスを受け取ると、転送ストレージ領域算出部62は、対応する転送ストレージ領域が含まれる記憶媒体40の識別子および転送ストレージ領域における着目点のアドレスを算出する(ステップS74)。
次に、転送領域算出制御部66は、ホスト50のメモリアドレス空間におけるアクセス対象の領域の先頭アドレスにオフセットの値を加えることで、ホスト50のメモリアドレス空間上の転送メモリ領域における着目点のアドレスを算出する(ステップS75)。初期状態では、オフセットは0である。転送領域算出制御部66は、マッピングテーブルを参照して、仮想記憶媒体100上の着目点のアドレスから連続領域にマッピングされるサイズを算出する。始めに、転送領域算出制御部66は、着目点のアドレスと、対応するマッピングエントリ300の論理アドレス301の差分を算出する。差分を算出すると、転送領域算出制御部66は、差分を対応するマッピングエントリ300のマッピングサイズ304から差し引くことで、連続領域にマッピングされるサイズを算出する(ステップS76)。
連続領域にマッピングされるサイズを算出すると、転送領域算出制御部66は、アクセス対象の領域のサイズからオフセットを差し引いた値を算出して、連続領域にマッピングされるサイズと比較する。サイズを比較すると、転送領域算出制御部66は、2つの値のうち小さな方を記憶媒体40の識別子、転送ストレージ領域における着目点のアドレスおよび転送メモリ領域における着目点のアドレスとの組み合わせで用いるデータ転送のサイズとして設定する(ステップS77)。
データ転送のサイズを設定すると、転送領域算出制御部66は、記憶媒体40の識別子、転送ストレージ領域における着目点のアドレス、転送メモリ領域における着目点のアドレスおよびデータ転送のサイズの組み合わせの情報をデータ転送対象のリストに追加する(ステップS78)。
データ転送対象のリストにデータを追加すると、転送領域算出制御部66は、連続した領域にマッピングされるサイズの値をオフセットの値に加える(ステップS79)。オフセットの値がアクセス要求受信部61から受け取った、アクセス対象の領域のサイズ未満の場合(ステップS80でNo)、転送領域算出制御部66は、ステップS73からの処理を再度、実行する。
オフセットの値がアクセス対象の領域のサイズ以上の場合(ステップS80でYes)、転送処理内容通知部63は、アクセス要求の種類とデータ転送対象のリストをデータ転送実行部70に転送処理内容通知として送信する(ステップS81)。
転送処理内容通知が送信されると、マッピングテーブル送信部64は、仮想記憶媒体100上のアクセス先アドレスと対応するマッピングエントリ300のリストをホスト50に送信する(ステップS82)。
データ転送実行部70は、ホスト50またはコントローラ60からデータ転送の処理内容を示す転送処理内容通知を受信する(ステップS91)。
転送処理内容通知を受け取ると、データ転送実行部70は、アクセス要求の種類を確認する。アクセス要求の種類がReadである場合(ステップS92でYes)、データ転送実行部70は、データ転送処理の内容の情報に基づいて、記憶媒体40の転送ストレージ領域からメモリ11の転送メモリ領域へのデータ転送を実行する(ステップS93)。
アクセス要求の種類がWriteである場合(ステップS92でNo)、データ転送実行部70は、データ転送処理の内容の情報に基づいて、メモリ11の転送メモリ領域から記憶媒体40の転送ストレージ領域へのデータ転送を実行する(ステップS94)。
上記に示した各ステップにおける処理は、他の順番で行われてもよい。例えば、ステップS52からS55の各処理や、ステップS73からS76の各処理は同時期に実行または順序を入れ替えて実行されてもよい。また、データ転送実行部70は、データ転送処理の完了をコントローラ60またはマッピングテーブルキャッシュ管理部51を介して、アプリケーション実行部12に通知してもよい。
本実施形態の計算機システムは、第2の実施形態の計算機システムと同様の効果を有する。また、本実施形態の計算機システムは、ホスト50から仮想記憶媒体100へのアクセス要求を行う際に、アクセス対象領域のサイズを示すアクセスサイズの情報を付加して行っている。そのため、コントローラ60におけるデータ転送に関する各処理をより効率的に行うことができる。
第2および第3の実施形態におけるマッピングテーブルキャッシュ管理部によるバッファ領域の管理は、例えば、LRU(Least Recently Used)やMRU(Most Recently Used)など、キャッシュメモリや仮想メモリが扱う割り当てアルゴリズムにおいてあらかじめ定められた方法によって行われてもよい。また、マッピングテーブル送信部は、参照されたマッピングテーブルのアドレスの近傍にあるアドレスも含めてキャッシュ制御部にマッピングテーブルのデータを送付してもよい。
RAIDの再構築や記憶媒体の交換または追加の際に、マッピングテーブルの内容が再構築される際に、コントローラは、マッピングテーブルキャッシュ管理部に対してマッピングテーブルキャッシュの内容のクリアを指示してもよい。そのような場合に、マッピングテーブルの再構築が完了するまで、キャッシュ制御部は、マッピングテーブルキャッシュを参照しないよう制御してもよい。そのような構成とした場合には、マッピングテーブルの再構築が完了後、コントローラは、マッピングテーブルキャッシュ管理部に対してマッピングテーブルキャッシュの有効化を指示する。マッピングテーブルのアクセス対象領域の指し示すアドレスのうち、頻繁にマッピングテーブルが更新されるアドレス空間や物理記憶媒体に関しては、コントローラは、マッピングテーブルキャッシュ管理部へマッピングテーブルエントリを送信しないように制御してもよい。
第2の実施形態および第3の実施形態におけるコントローラおよびデータ転送実行部で実行される各処理は、コンピュータプログラムをコンピュータで実行することによって行われてもよい。図20は、コントローラおよびデータ転送実行部で実行される各処理を行うコンピュータプログラムを実行するコンピュータ400の構成の例を示したものである。コンピュータ400は、CPU401と、メモリ402と、記憶装置403と、I/F(Interface)部404を備えている。
CPU401は、記憶装置93から各処理を行うコンピュータプログラムを読み出して実行する。メモリ402は、DRAM等によって構成され、CPU401が実行するコンピュータプログラムや処理中のデータが一時保存される。記憶装置403は、CPU401が実行するコンピュータプログラム、処理結果および外部から取得した情報等が保存される。記憶装置403は、例えば、不揮発性の半導体記憶装置によって構成されている。記憶装置403には、HDD等の他の記憶装置が用いられてもよい。I/F部404は、ホストや記憶媒体等の他の装置との間でデータの入出力を行うインタフェースである。I/F部404は、アクセス要求やデータ転送処理通知の入出力、および、ホストや記憶媒体間におけるデータ転送処理における制御信号の入出力を行うインタフェースとして機能する。
また、各処理に行うコンピュータプログラムは、記録媒体に格納して頒布することもできる。記録媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記録媒体としては、CD-ROM(Compact Disc Read Only Memory)やDVD(Digital Versatile Disc)などの光ディスクを用いることもできる。不揮発性の半導体メモリを記録媒体として用いてもよい。
1 アクセス要求受信手段
2 転送領域算出手段
3 転送処理内容通知手段
4 マッピング情報送信手段
10 ホスト
11 メモリ
12 アプリケーション実行部
13 マッピングテーブルキャッシュ管理部
20 コントローラ
21 アクセス要求受信部
22 転送ストレージ領域算出部
23 転送処理内容通知部
24 マッピングテーブル送信部
25 マッピングテーブル記憶部
30 データ転送実行部
40 記憶媒体
50 ホスト
51 マッピングテーブルキャッシュ管理部
60 コントローラ
61 アクセス要求受信部
62 転送ストレージ領域算出部
63 転送処理内容通知部
64 マッピングテーブル送信部
65 マッピングテーブル記憶部
66 転送領域算出制御部
70 データ転送実行部
100 仮想記憶媒体
201 キャッシュ制御部
202 マッピングテーブル記憶部
203 転送処理内容通知部
211 キャッシュ制御部
212 マッピングテーブル記憶部
213 転送領域算出制御部
214 転送処理内容通知部
300 マッピングエントリ
301 論理アドレス
302 記憶媒体識別子
303 物理アドレス
304 マッピングサイズ

Claims (10)

  1. 接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信するアクセス要求受信手段と、
    前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を算出する転送領域算出手段と、
    前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知手段と
    前記ホストに前記第1のアドレス情報に対応する前記第3のアドレス情報をマッピング情報として送信するマッピング情報送信手段と
    を備えることを特徴とするコントローラ。
  2. 前記アクセス要求受信手段は、前記第2のアドレス情報として前記ホストのメモリアドレス空間に対応する物理メモリ上の位置を示す情報を受信することを特徴とする請求項1に記載のコントローラ。
  3. 前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間のデータ転送が完了した際に、前記アクセス要求に対応する処理が完了したことを示す情報を完了通知として前記ホストに通知する完了通知手段をさらに備えることを特徴とする請求項1または2に記載のコントローラ。
  4. 前記転送領域算出手段は、前記第1のアドレス情報に対応する前記記憶媒体上の領域が複数の記憶媒体に分散して存在している際に、前記記憶媒体ごとに前記第3のアドレス情報として指し示されている領域との間でデータ転送を行う前記ホストのメモリアドレス空間上の領域を指し示す第4のアドレス情報を前記第2のアドレス情報を基に特定することを特徴とする請求項1から3いずれかに記載のコントローラ。
  5. 仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報の対応を示す情報をマッピングテーブルとして受信するマッピングテーブル受信手段と、
    受信した前記マッピングテーブルのデータを記憶するデータ記憶手段と、
    自装置のメモリアドレス空間上の第2のアドレス情報に対応する領域と、前記仮想的な記憶領域上の前記第1のアドレス情報に対応する領域との間におけるデータ転送の要求をアクセス要求として出力するアクセス要求出力手段と、
    前記アクセス要求出力手段が出力した際に、前記マッピングテーブルを参照し、前記第1のアドレス情報に対応する前記第3のアドレス情報が存在したときに、前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、メモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力し、
    前記第1のアドレス情報に対応する前記第3のアドレス情報が存在しないときに、外部のコントローラに前記アクセス要求を出力する制御手段と
    を備えることを特徴とする情報処理装置。
  6. 請求項1から4いずれかに記載のコントローラと、
    請求項5に記載の情報処理装置からなるホストと、
    前記コントローラの要求に基づいて、仮想的な記憶領域のデータを保存している記憶媒体と、前記ホストとの間で前記コントローラを介さずにデータ転送を行うデータ転送手段を有するデータ転送手段と
    を備え、
    前記データ転送手段は、前記コントローラまたは前記ホストから出力される前記転送処理内容通知に基づいて、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の前記第2のアドレス情報に対応する領域との間で、前記コントローラを介さずにデータ転送を行うことを特徴とする計算機システム。
  7. 前記データ転送手段は、前記コントローラまたは前記ホストから通知された記憶媒体に対して、前記第2のアドレス情報および前記第3のアドレス情報を通知し、前記第2のアドレス情報が示す前記ホストのメモリアドレス空間上の領域と、前記記憶媒体上の前記第3のアドレス情報が指し示す記憶領域との間における、DMA転送に基づくデータ転送を制御することを特徴とする請求項6に記載の計算機システム。
  8. 接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信し、
    前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を算出し、
    前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力し、
    前記ホストに前記第1のアドレス情報に対応する前記第3のアドレス情報をマッピング情報として送信することを特徴とするデータ転送方法。
  9. 仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域を指定する第3のアドレス情報の対応を示す情報をマッピングテーブルとして受信し、
    受信した前記マッピングテーブルのデータを記憶し、
    前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域と、前記仮想的な記憶領域上の前記第1のアドレス情報に対応する領域との間におけるデータ転送の要求を前記アクセス要求として出力し、
    前記マッピングテーブルを参照し、前記アクセス要求の前記第1のアドレス情報に対応する前記第3のアドレス情報が存在したときに、前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、メモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力し、
    前記第1のアドレス情報に対応する前記第3のアドレス情報が存在しないときに、外部のコントローラに前記アクセス要求を出力することを特徴とする請求項8に記載のデータ転送方法。
  10. 接続先のホストから、仮想的な記憶領域へのアクセス要求と、前記仮想的な記憶領域上のアクセス先の領域を指定する第1のアドレス情報と、前記第1のアドレス情報に対応する記憶媒体上の領域との間でデータの転送を行う前記ホストのメモリアドレス空間上の領域を指定する第2のアドレス情報とを受信するアクセス要求受信処理と、
    前記第1のアドレス情報に基づいて、前記第1のアドレス情報に対応する前記記憶媒体上の領域を指定する第3のアドレス情報を特定する格納先特定処理と、
    前記アクセス要求の種類と、前記記憶媒体上の前記第3のアドレス情報に対応する領域と、前記ホストのメモリアドレス空間上の第2のアドレス情報に対応する領域との間のデータ転送を実行する要求を、前記第2のアドレス情報および前記第3のアドレス情報とともに転送処理内容通知として出力する転送処理内容通知処理と
    前記ホストに前記第1のアドレス情報に対応する前記第3のアドレス情報をマッピング情報として送信するマッピング情報送信処理と
    をコンピュータに実行させることを特徴とする転送制御プログラム。
JP2018095601A 2018-05-17 2018-05-17 データ転送装置およびデータ転送方法 Active JP7067256B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018095601A JP7067256B2 (ja) 2018-05-17 2018-05-17 データ転送装置およびデータ転送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018095601A JP7067256B2 (ja) 2018-05-17 2018-05-17 データ転送装置およびデータ転送方法

Publications (2)

Publication Number Publication Date
JP2019200664A JP2019200664A (ja) 2019-11-21
JP7067256B2 true JP7067256B2 (ja) 2022-05-16

Family

ID=68612162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018095601A Active JP7067256B2 (ja) 2018-05-17 2018-05-17 データ転送装置およびデータ転送方法

Country Status (1)

Country Link
JP (1) JP7067256B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041343B (zh) * 2023-07-05 2024-02-23 中关村科学城城市大脑股份有限公司 请求处理方法、装置、电子设备和计算机可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280862A (ja) 2004-06-28 2004-10-07 Hitachi Ltd ディスクアレイ制御方法及びディスクアレイ制御装置
JP2013109419A (ja) 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
WO2015121912A1 (ja) 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
US20170262177A1 (en) 2016-03-09 2017-09-14 Kabushiki Kaisha Toshiba Storage device having dual access procedures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004280862A (ja) 2004-06-28 2004-10-07 Hitachi Ltd ディスクアレイ制御方法及びディスクアレイ制御装置
JP2013109419A (ja) 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
WO2015121912A1 (ja) 2014-02-12 2015-08-20 株式会社日立製作所 データ記憶装置
US20170262177A1 (en) 2016-03-09 2017-09-14 Kabushiki Kaisha Toshiba Storage device having dual access procedures

Also Published As

Publication number Publication date
JP2019200664A (ja) 2019-11-21

Similar Documents

Publication Publication Date Title
US10698818B2 (en) Storage controller caching using symmetric storage class memory devices
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US20230409473A1 (en) Namespace change propagation in non-volatile memory devices
US9817765B2 (en) Dynamic hierarchical memory cache awareness within a storage system
US9053038B2 (en) Method and apparatus for efficient read cache operation
US20150262632A1 (en) Grouping storage ports based on distance
JP6540363B2 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US20170315725A1 (en) Changing Storage Volume Ownership Using Cache Memory
US20180307426A1 (en) Storage apparatus and storage control method
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US20190042134A1 (en) Storage control apparatus and deduplication method
US9785552B2 (en) Computer system including virtual memory or cache
US11294812B2 (en) Obtaining cache resources for expected writes to tracks in a write set after the cache resources were released for the tracks in the write set
JP7067256B2 (ja) データ転送装置およびデータ転送方法
US11816336B2 (en) Storage system and control method thereof
US11960419B2 (en) Systems and methods for data prefetching for low latency data read from a remote server
WO2016181562A1 (ja) ストレージシステム、及び、記憶制御方法
US20180307427A1 (en) Storage control apparatus and storage control method
US8549244B2 (en) Device and method of copying data between disks having equal or different rotational rates
US20190369874A1 (en) Localized data block destaging
JP7251056B2 (ja) コントローラ、計算機システム、データ転送方法および転送制御プログラム
JP2022547684A (ja) I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え
JP7000712B2 (ja) データ転送装置およびデータ転送方法
JP2019159735A (ja) コントローラおよびデータ転送方法
JP7242928B2 (ja) ストレージシステム及び入出力制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210415

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211013

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220207

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: 20220329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220411

R151 Written notification of patent or utility model registration

Ref document number: 7067256

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151