(57)【要約】【課題】ブロックデバイスへのバイト単位のアクセスを効率的にする。【解決手段】メモリシステム１００は、ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部４と、第１記憶部４とともにストレージデバイス３を構成するものであって、バイト単位でデータの読み書きが可能でありかつ第１記憶部４で読み書きされるデータを一時的に記憶可能な第２記憶部５と、所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部１と、第１記憶部４にアクセスすることなく第２記憶部５に対して論理アドレスでアクセス可能な場合には第２記憶部５に対して同期アクセスし、第１記憶部４にアクセスすることなく第２記憶部５に対して論理アドレスでアクセス可能でない場合には第１記憶部４又は第２記憶部５に対して非同期アクセスするデータ入出力制御部２とを備える。【選択図】図１
2016062406.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部と、
前記第１記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第１記憶部で読み書きされるデータを一時的に記憶可能な第２記憶部と、
所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部と、
前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能な場合には前記第２記憶部に対して同期アクセスし、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第１記憶部又は前記第２記憶部に対して非同期アクセスするデータ入出力制御部と
を備えることを特徴とするメモリシステム。
【請求項２】
前記第２記憶部が、不揮発性メモリである
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記第２記憶部に対してメモリインタフェースが接続されている
ことを特徴とする請求項１又は２に記載のメモリシステム。
【請求項４】
ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部と、
前記第１記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第１記憶部で読み書きされるデータを一時的に記憶可能な第２記憶部と
を用い、
データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示し、
データ入出力制御部によって前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能な場合には前記第２記憶部に対して同期アクセスし、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第１記憶部又は前記第２記憶部に対して非同期アクセスする
ことを特徴とするメモリシステムの制御方法。
【請求項５】
ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部と、
前記第１記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第１記憶部で読み書きされるデータを一時的に記憶可能な第２記憶部と
を用い、
データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示する過程と、
データ入出力制御部によって前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能な場合には前記第２記憶部に対して同期アクセスし、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第１記憶部又は前記第２記憶部に対して非同期アクセスする過程と
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステム、メモリシステムの制御方法及びプログラムに関する。
【背景技術】
【０００２】
ブロックデバイスであるフラッシュメモリに対してバイト単位でアクセスする場合、読み書きされるデータを一旦ランダムアクセス可能なキャッシュメモリに記憶する構成が用いられている（特許文献１及び特許文献２）。ここでブロックデバイスとは、ＣＰＵ（中央処理装置）がメインメモリ（主記憶装置）に対して直接アクセスする際のデータの大きさの単位であるバイト単位あるいはワード単位を超える、セクタ単位、ページ単位等の一定の大きさを単位としてデータの入出力が行われる装置である。なお、本願において、バイト単位とは、１バイト単位と複数バイト単位とを含むものとする。また、バイト単位はワード単位を含むものとする。また、本願において、データとは、記憶装置が記憶する情報を意味するものとし、プログラム及びプログラムが処理するもの、の双方を含むものとする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２２０５５７号公報
【特許文献２】特開平７−１４６８２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１及び特許文献２に記載されている構成では、アクセス時にキャッシュミスが発生した場合、フラッシュメモリに対してアクセスが実行される。フラッシュメモリより高速なデバイスを使用してキャッシュメモリを構成した場合、キャッシュヒットのときと、キャッシュミスのときとで、アクセス時間が異なることになる。アクセス時間にバラツキがある場合、例えば、大きなアクセス時間を前提としてアクセス後の処理を行うこととすれば、キャッシュヒットの場合の高速性を生かし切れない場合が生じる。一方、小さなアクセス時間を前提としてアクセス後の処理を行うこととすれば、ＣＰＵを長時間、待機状態としてしまうことになってしまうこと等が考えられる。すなわち、バイト単位でアクセスする場合にフラッシュメモリへのＣＰＵからのアクセスあるいはアクセス後の処理を効率的に行うことができない場合があるという課題があった。
【０００５】
本発明は、上記の事情を考慮してなされたものであり、ブロックデバイスに対してバイト単位でアクセスする場合にアクセスを効率的にすることができるメモリシステム、メモリシステムの制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明のメモリシステムは、ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部と、前記第１記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第１記憶部で読み書きされるデータを一時的に記憶可能な第２記憶部と、所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部と、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能な場合には前記第２記憶部に対して同期アクセスし、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第１記憶部又は前記第２記憶部に対して非同期アクセスするデータ入出力制御部とを備えることを特徴とする。
【０００７】
また、本発明の他のメモリシステムは、前記第２記憶部が、不揮発性メモリであることを特徴とする。
【０００８】
また、本発明の他のメモリシステムは、前記第２記憶部に対してメモリインタフェースが接続されていることを特徴とする。
【０００９】
また、本発明のメモリシステムの制御方法は、ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部と、前記第１記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第１記憶部で読み書きされるデータを一時的に記憶可能な第２記憶部とを用い、データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示し、データ入出力制御部によって前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能な場合には前記第２記憶部に対して同期アクセスし、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第１記憶部又は前記第２記憶部に対して非同期アクセスすることを特徴とするメモリシステムの制御方法。
【００１０】
また、本発明のプログラムは、ブロック単位でデータが読み書きされる不揮発性メモリである第１記憶部と、前記第１記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第１記憶部で読み書きされるデータを一時的に記憶可能な第２記憶部とを用い、データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示する過程と、データ入出力制御部によって前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能な場合には前記第２記憶部に対して同期アクセスし、前記第１記憶部にアクセスすることなく前記第２記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第１記憶部又は前記第２記憶部に対して非同期アクセスする過程とをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、データ入出力指示部が、所定の論理アドレスに対してバイト単位でデータの読み書きを指示した場合、データ入出力制御部が、第１記憶部にアクセスすることなく第２記憶部に対して指示された論理アドレスでアクセス可能なときには第２記憶部に対して同期アクセスし、アクセス可能でないときには第１記憶部又は第２記憶部に対して非同期アクセスする。この構成では、例えばデータの読み出し時に、第１記憶部にアクセスすることなく第２記憶部に対して指示された論理アドレスでアクセス可能な場合には、データ入出力指示部が第２記憶部からデータが読み出されるのを待機するので、データを読み出したときに例えば読み出したデータをすぐに利用することができる。他方、アクセス可能でない場合にはデータ入出力指示部は、第１記憶部又は第２記憶部からデータが読み出されるのを待機しないので、例えば他の処理を実行することができる。これらの特徴により、アクセス時間の差異に柔軟に対応させ、リソースの効率的な利用を容易に図ることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態のメモリシステムの基本的な構成例を示したブロック図である。
【図２】図１に示したメモリシステム１００の動作例を説明するためのフローチャートである。
【図３】図１に示したストレージデバイス３からデータを読み出す場合の処理の流れの一例を示したシーケンス図である。
【図４】図１に示したストレージデバイス３からデータを読み出す場合の処理の流れの一例を示したシーケンス図である。
【図５】図１に示したストレージデバイス３へデータを書き込む場合の処理の流れの一例を示したシーケンス図である。
【図６】図１に示したストレージデバイス３へデータを書き込む場合の処理の流れの一例を示したシーケンス図である。
【図７】図１に示したメモリシステム１００のハードウェアの構成例を示したブロック図である。
【図８】図１に示したメモリシステム１００のハードウェアの他の構成例を示したブロック図である。
【図９】図１に示したメモリシステム１００のハードウェアの他の構成例を示したブロック図である。
【図１０】図１に示したメモリシステム１００のハードウェアの他の構成例を示したブロック図である。
【図１１】図７に示したメモリシステム１００ａの動作例を説明するための説明図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施形態について説明する。図１は、本発明の一実施形態のメモリシステムの基本的な構成例を示したブロック図である。図１に示したメモリシステム１００は、データ入出力指示部１と、データ入出力制御部２と、ストレージデバイス３とを備える。そして、ストレージデバイス３は、第１記憶部４と、第２記憶部５とを備える。
【００１４】
メモリシステム１００は、例えば、パーソナルコンピュータ、モバイル情報端末、モバイル通信端末、サーバ、センサ端末、電気機器の制御装置等で用いられる情報処理装置の要素として構成することができる。本実施形態においてメモリシステム１００は、所定のＣＰＵによってＯＳ（オペレーティングシステム）を含む所定のプログラムを実行することで、ストレージデバイス３に対してバイト単位でアクセスすることができる構成である。また、ストレージデバイス３に対してバイト単位でアクセスする場合には、ストレージデバイス３の各記憶領域に対して、ＯＳカーネル等によって管理される仮想アドレス空間における論理アドレスが割り当てられる。ＣＰＵは論理アドレスを指定してストレージデバイス３の各記憶領域にアクセスすることができる。
【００１５】
第１記憶部４は、ブロック単位でデータが読み書きされる不揮発性メモリである。第１記憶部４は、例えば、ＮＡＮＤ型フラッシュメモリを用いて構成することができる。第１記憶部４は、ブロック単位でデータが読み書き可能に構成されていればよく、例えばＮＯＲ型フラッシュメモリ等のバイト単位でランダムアクセスが可能なメモリを用いて構成してもよい。すなわち、不揮発性メモリの構造に限定はない。また、第１記憶部４は、ハードディスク等の磁気記憶装置であってもよい。
【００１６】
第２記憶部５は、バイト単位でデータの読み書きが可能でありかつ第１記憶部４で読み書きされるデータを一時的に記憶可能なメモリである。第２記憶部５は、例えば、データ読み出し時に第１記憶部４からブロック単位で読み出したデータを一時記憶したり、データ書き込み時に第１記憶部４へ書き込むデータを書き込み前に一時記憶したりすることが可能である。すなわち、第２記憶部５は、第１記憶部４用のキャッシュメモリとして使用することができる。第２記憶部５は、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static RAM）等の揮発性メモリを用いて構成してもよいし、ＮＯＲ型フラッシュメモリ、ＲｅＲＡＭ（抵抗変化型メモリ）、ＭＲＡＭ（磁気抵抗メモリ）、ＦｅＲＡＭ（強誘電体メモリ）、ＰＣＭ（相変化メモリ）、ＳＴＴ（スピン注入メモリ）等の不揮発性メモリを用いて構成してもよい。第２記憶部５を不揮発性メモリで構成した場合、例えば電源遮断時等にデータを待避しなくてもよくなる。
【００１７】
データ入出力指示部１は、ストレージデバイス３に割り当てられた所定の論理アドレスに対してバイト単位でデータの読み書きを指示する構成である。データ入出力指示部１は、ＣＰＵとそのＣＰＵが実行するプログラムとを用いて構成することができ、そのプログラムは例えばＯＳカーネルの一部として構成することができる。あるいは、データ入出力指示部１を構成するプログラムは、アプリケーションの一部として、又はストレージデバイス３用のデバイスドライバの一部として構成されていてもよい。データ入出力指示部１は、ＯＳが含む他のプログラム、アプリケーションプログラム等からストレージデバイス３に対するバイト単位でのアクセス（すなわちデータの読み出し又は書き込み）が発生あるいは要求された場合にデータの読み書きを指示する処理を実行する。
【００１８】
データ入出力指示部１がストレージデバイス３に割り当てられた所定の論理アドレスに対してデータの読み出し又は書き込みを指示した場合、データ入出力制御部２は次の処理を行う。すなわち、データ入出力制御部２は、第１記憶部４へのアクセスを行わなくても第２記憶部５に対して当該論理アドレスでアクセス可能な場合には第２記憶部５に対して同期アクセスし、第１記憶部４へアクセスしなければ第２記憶部５に対して当該論理アドレスでアクセス可能でない場合には第１記憶部４又は第２記憶部５に対して非同期アクセスする。ここで、第１記憶部４へのアクセスを行わなくても第２記憶部５に対して当該論理アドレスでアクセス可能な場合とは、データ読み出し時にはアクセス先の論理アドレスに対応するデータが第１記憶部４から読み出されるなどして既に第２記憶部５に格納されている場合である。また、データ書き込み時には第１記憶部４へのデータの書き戻しを行わなくても第２記憶部５に新たな領域を確保できる場合、又はアクセス先の論理アドレスに対応するデータが第２記憶部５に既に格納されている場合である。
【００１９】
また、第２記憶部５に対する同期アクセスとは、データ入出力指示部１を構成するＣＰＵ（あるいはプロセス）がアクセスを指示した後、アクセスが発生するまで待機するという第２記憶部５に対するアクセスである。ここで、アクセスの発生とは、第２記憶部５からのデータの読み出し又は第２記憶部５へのデータの書き込みの実行が開始あるいは終了したことを意味する。
【００２０】
また、第１記憶部４又は第２記憶部５に対する非同期アクセスとは、データ入出力指示部１を構成するＣＰＵ（あるいはプロセス）がアクセスを指示した後、アクセスが発生するまで待機せずに、例えば他の処理を実行するという第１記憶部４又は第２記憶部５に対するアクセスである。すなわち、非同期アクセスによるデータ読み出し時には、データ入出力指示部１が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部２は、並行して、例えば、以下の（Ａ１）〜（Ａ３）の処理、又は（Ｂ１）〜（Ｂ３）の処理を制御する。すなわち、（Ａ１）第１記憶部４から当該論理アドレスに対応するデータをブロック単位で読み出して第２記憶部５に格納する（すなわちコピーする）とともに第２記憶部５に対して当該論理アドレスを割り当てる。（Ａ２）次に、例えば、データ入出力指示部１からの問い合わせに応じて又はデータ入出力制御部２から自発的に、データ入出力制御部２からデータ入出力指示部１へデータが用意できたことを通知する。（Ａ３）そして、第２記憶部５から当該論理アドレスに対応するデータをバイト単位で指示されたバイト数分読み出してＣＰＵに対して出力する。あるいは、（Ｂ１）第１記憶部４から当該論理アドレスに対応するデータをブロック単位で読み出して例えば図示していないメインメモリ又はバッファメモリに格納するとともに、格納したメインメモリ又はバッファメモリの記憶領域と論理アドレスとの対応付けを行う。（Ｂ２）次に、例えば、データ入出力指示部１からの問い合わせに応じて又はデータ入出力制御部２から自発的に、データ入出力制御部２からデータ入出力指示部１へデータが用意できたことを通知する。（Ｂ３）そして、メインメモリ又はバッファメモリから当該論理アドレスに対応するデータをバイト単位で指示されたバイト数分読み出してＣＰＵに対して出力する。上記の（Ａ１）から（Ａ３）の処理では、非同期アクセスによるデータの読み出し時に、一旦、第１記憶部４から第２記憶部５へとデータがコピーされ、その後、第２記憶部５からＣＰＵへとデータが転送される。他方、（Ｂ１）から（Ｂ３）の処理では、非同期アクセスによるデータの読み出し時に、第１記憶部４からメインメモリ又はバッファメモリへとデータがコピーされ、メインメモリ又はバッファメモリからＣＰＵへデータが転送される。（Ａ１）〜（Ａ３）の処理と、（Ｂ１）〜（Ｂ３）の処理とのどちらを使うのかは、例えば、ハードウェアの仕様等に応じて予め静的に決めておいてもよいし、メインメモリ等の使用状況等に応じて動的に切り替えるようにしてもよい。あるいは、例えば、（Ａ１）から（Ａ３）の処理を実行した後に（あるいは並行的に）、（Ｂ１）から（Ｂ３）の処理を実行して、同一ブロックのアクセスに対して次からは同期アクセスできるよう備えておくこともできる。
【００２１】
また、第１記憶部４に対する非同期アクセスによるデータ書き込み時には、データ入出力指示部１が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部２は、並行して、例えば、第２記憶部５で回収（あるいは開放）する領域を選択し、選択した領域のデータを第１記憶部４へ書き戻す処理を行う。その後、データ入出力制御部２は、確保した第２記憶部５内の所定の大きさの領域に対して当該論理アドレスに対応した所定の論理アドレスを割り当てる。そして、例えば、データ入出力指示部１からの問い合わせに応じて又はデータ入出力制御部２から自発的に、データ入出力制御部２からデータ入出力指示部１に対してデータの書き込み準備ができたことを通知する。そして、バイト単位で指示されたバイト数分のデータをＣＰＵから第２記憶部５へと入力し、データ入出力制御部２は、第２記憶部５の当該論理アドレスに対応した領域にデータの書き込みを行う。
【００２２】
あるいは、第１記憶部４に対する非同期アクセスによるデータ書き込み時には、データ入出力指示部１が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部２は、並行して、例えば、第２記憶部５に当該論理アドレスに対応するブロック単位分の領域を確保し、第１記憶部４から第２記憶部５へ当該論理アドレスに対応するデータをブロック単位で読み出す（すなわちコピーする）とともに第２記憶部５に対して当該論理アドレスに対応した論理アドレスを割り当てる。そして、例えば、データ入出力指示部１からの問い合わせに応じて又はデータ入出力制御部２から自発的に、データ入出力制御部２からデータ入出力指示部１に対してデータの書き込み準備ができたことを通知する。そして、バイト単位で指示されたバイト数分のデータをＣＰＵから第２記憶部５へ入力し、データ入出力制御部２は、第２記憶部５の当該論理アドレスに対してデータの書き込みを行う。
【００２３】
なお、データ入出力制御部２は、例えば、ＣＰＵとそのＣＰＵが実行するプログラムとを用いて構成したり、図示していないストレージデバイス３内に設けたストレージデバイス用のコントローラ等のハードウェアを用いて構成したり、あるいはそれらを組み合わせて用いて構成したりすることができる。そのプログラムは例えばＯＳカーネルの一部として構成したり、ストレージデバイス３用のデバイスドライバの一部として構成したりすることができる。
【００２４】
また、論理アドレスと、第２記憶部５の物理アドレス又は第１記憶部４のブロックアドレス（例えばセクタアドレス、ページアドレス等）との対応付けや変換、あるいは、非同期アクセス時の図示していないメインメモリやバッファメモリの物理アドレスとの対応付けや変換は、例えば、ＯＳカーネルで行ってもよいし、ハードウェアを用いて行ってもよい。また、論理アドレスと物理アドレス及びブロックアドレスとを対応付けるための変換テーブルは、例えば、第２記憶部５に記憶してもよいし、図示していないメインメモリ等の他のメモリに記憶してもよい。
【００２５】
また、第２記憶部５への論理アドレスの割り当てや、第１記憶部４から第２記憶部５へのデータの読み込み、第２記憶部５から第１記憶部４へのデータの書き出し、あるいは、第１記憶部４から図示していないメインメモリ又はバッファメモリへのデータの読み出し等の処理は、例えばデバイスドライバで実行したり、ストレージデバイス３用のコントローラ等のハードウェアを用いて制御したりすることができる。
【００２６】
次に、図２を参照して、メモリシステム１００の動作例について説明する。ストレージデバイス３に対してバイト単位でアクセスする場合に、ストレージデバイス３に対するデータのアクセスが発生したとき、データ入出力指示部１は、アクセス先の論理アドレスを指定してデータの読み出し又は指定したデータの書き込みの実行をデータ入出力制御部２に対して指示する（ステップＳ１）。
【００２７】
データ入出力制御部２は、指示された論理アドレスに対するアクセスを第１記憶部４に対するアクセス無しで第２記憶部５に対して実行可能であるか否かを判定する（ステップＳ２）。読み出し時には、ステップＳ２で、データ入出力制御部２は、第２記憶部５内にアクセス先の論理アドレスに対応する第１記憶部４内のブロックがすでに格納されていた場合に、第１記憶部４にアクセスせずに指示された論理アドレスで第２記憶部５にアクセス可能であると判定する。また、書き込み時には、ステップＳ２で、データ入出力制御部２は、第２記憶部５内に第１記憶部４へのアクセス無しで空き領域を確保することができる場合、又は、第２記憶部５内にアクセス先の論理アドレスに対応する第１記憶部４内のブロックがすでに格納されていた場合、第１記憶部４にアクセスせずに指示された論理アドレスで第２記憶部５にアクセス可能であると判定する。
【００２８】
指示された論理アドレスに対するアクセスを第１記憶部４に対するアクセス無しで第２記憶部５に対して実行可能である場合（ステップＳ２で「ＹＥＳ」の場合）、データ入出力制御部２は、上述したようにして第２記憶部５に対して同期アクセスする（ステップＳ３）。一方、指示された論理アドレスに対するアクセスを第１記憶部４に対するアクセス無しでは第２記憶部５に対して実行できない場合（ステップＳ２で「ＮＯ」の場合）、データ入出力制御部２は、上述したようにして第１記憶部４又は第２記憶部５に対して非同期アクセスする（ステップＳ４）。
【００２９】
次に図３から図６を参照して図１に示したメモリシステム１００における処理及び情報の流れについて説明する。図３は、図１に示したストレージデバイス３からデータを読み出す場合の同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部１が、データ入出力制御部２に対して、論理アドレスＡからのバイト単位のデータの読み出しを指示すると（Ｓ１０１）、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５からデータを読み出し可能であるか否かを判定する（Ｓ１０２）。この例では、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５からデータを読み出し可能であると判定するので（Ｓ１０２で「ＹＥＳ」）、第２記憶部５に対して論理アドレスＡに対応する物理アドレスからバイト単位でデータを読み出す指示を入力する（Ｓ１０３）。次に、第２記憶部５は、指示されたデータをバイト単位で出力する（Ｓ１０５及びＳ１０６）。この例では、データ入出力指示部１は、Ｓ１０１で指示を出力してから、Ｓ１０５でデータが出力されるまで待機状態となる。
【００３０】
図４は、図１に示したストレージデバイス３からデータを読み出す場合の非同期アクセスにおける処理の流れの一例を示したシーケンス図である。ただし、図４は上述した（Ｂ１）から（Ｂ３）の処理の一例を示している。（Ａ１）から（Ａ３）の処理の場合、以下の説明および図４において、ステップＳ２０２を除き、第２記憶部５を、図示していないメインメモリ又はバッファメモリと読み替える必要がある。いま、データ入出力指示部１が、データ入出力制御部２に対して、論理アドレスＡからのバイト単位のデータの読み出しを指示すると（Ｓ２０１）、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５からデータを読み出し可能であるか否かを判定する（Ｓ２０２）。この例では、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５からデータを読み出し可能ではないと判定するので（Ｓ２０２で「ＮＯ」）、データ入出力指示部１に対して同期アクセスによる読み出しが不可である旨の通知を行うととともに（Ｓ２０３）、第１記憶部４に対して、論理アドレスＡに対応するブロックアドレスからブロック単位でデータを読み出すよう所定の指示を行う（Ｓ２０４）。データ入出力制御部２は、第１記憶部４が出力したデータを、第２記憶部５の所定の領域に格納する制御を行う（Ｓ２０５及びＳ２０６）。なお、Ｓ２０４からＳ２０６の処理は、複数回繰り返して行ってもよいし、あるいは、第１記憶部４から読み出されたデータを第２記憶部５に直接転送するような制御を行ってもよい。
【００３１】
次に、データ入出力制御部２は、データ入出力指示部１に対してデータの読み出しが可能になった旨の通知を行う（Ｓ２０７）。通知を受けたデータ入出力指示部１が、データの出力指示を行うと（Ｓ２０８）。データ入出力制御部２は、第２記憶部５に対して論理アドレスＡに対応する物理アドレスからバイト単位でデータを読み出す指示を入力する（Ｓ２０９）。次に、第２記憶部５は、指示されたデータをバイト単位で出力する（Ｓ１１０及びＳ２１１）。この例では、データ入出力指示部１は、Ｓ２０１で指示を出力してから、Ｓ２０３でデータが同期アクセスによる読み出し不可であるとの通知を受けるまで待機状態となる。
【００３２】
図５は、図１に示したストレージデバイス３へデータを書き込む場合の同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部１が、データ入出力制御部２に対して、論理アドレスＡへのバイト単位のデータの書き込みを指示すると（Ｓ３０１）、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５へデータを書き込み可能であるか否かを判定する（Ｓ３０２）。この例では、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５へデータを書き込み可能であると判定するので（Ｓ３０２で「ＹＥＳ」）、第２記憶部５に対して論理アドレスＡに対応する物理アドレスへバイト単位でデータを書き込む指示を入力する（Ｓ３０３）。次に、第２記憶部５は、指示されたデータをバイト単位で入力し、書き込みが完了すると書き込み成功通知を出力する（Ｓ３０４及びＳ３０５）。次に、データ入出力制御部２は、データを書き込んだ第２記憶部５の領域について当該領域を開放する際に第１記憶部４への書き戻しが必要である旨の設定を行う（Ｓ３０６）。この例では、データ入出力指示部１は、Ｓ３０１で指示を出力してから、Ｓ３０５でデータ書き込みの成功通知がなされるまで待機状態となる。
【００３３】
図６は、図１に示したストレージデバイス３へデータを書き込む場合の非同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部１が、データ入出力制御部２に対して、論理アドレスＡへのバイト単位のデータの書き込みを指示すると（Ｓ４０１）、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５へデータを書き込み可能であるか否かを判定する（Ｓ４０２）。この例では、第２記憶部５に空き領域が無いこととすると、データ入出力制御部２は、第１記憶部４へのアクセス無しで第２記憶部５へデータを書き込み可能ではないと判定するので（Ｓ４０２で「ＮＯ」）、第２記憶部５に対して開放する領域を指定し、データの読み出しを指示する（Ｓ４０４）。データ入出力制御部２は、第２記憶部５からデータが出力されると（Ｓ４０５）、出力されたデータを第１記憶部４へ書き戻すための制御を行う（Ｓ４０６）。Ｓ４０６でデータ入出力制御部２は、書き戻しが完了したら開放した領域に対して論理アドレスＡに対応した論理アドレスを割り当てる。次に、データ入出力制御部２は、第２記憶部５に対して論理アドレスＡに対応する物理アドレスへバイト単位でデータを書き込む指示を入力する（Ｓ４０７）。次に、第２記憶部５は、指示されたデータをバイト単位で入力し、書き込みが完了すると書き込み成功通知を出力する（Ｓ４０８及びＳ４０９）。次に、データ入出力制御部２は、データを書き込んだ第２記憶部５の領域について当該領域を開放する際に第１記憶部４への書き戻しが必要である旨の設定を行う（Ｓ４１０）。なお、Ｓ４０４からＳ４０６の処理は、複数回繰り返して行ってもよいし、あるいは、第２記憶部５から読み出されたデータを第１記憶部４に直接転送するような制御を行ってもよい。この例では、データ入出力指示部１が、Ｓ４０１で指示を出力してから、Ｓ４０３で同期アクセスによる書き込みが不可である旨を示す通知をうけるまで待機状態となる。
【００３４】
本実施形態では、データ入出力指示部１が、ストレージデバイス３に割り当てられた所定の論理アドレスに対してバイト単位でデータの読み書きを指示した場合、データ入出力制御部２が、次の処理を行う。すなわち、データ入出力制御部２は、第１記憶部４にアクセスすることなく第２記憶部５に対して指示された論理アドレスでアクセス可能なときには第２記憶部５に対して同期アクセスし、アクセス可能ではないときには第１記憶部４又は第２記憶部５に対して非同期アクセスする。この構成では、例えばデータの読み出し時に、第１記憶部４にアクセスすることなく第２記憶部５に対して指示された論理アドレスでアクセス可能な場合には、データ入出力指示部１が第２記憶部５からデータが読み出されるのを待機するので、データを読み出したときに例えば読み出したデータをすぐに利用することができる。他方、アクセス可能でない場合にはデータ入出力指示部１は、データが読み出されるのを待機しないので、例えば他の処理を実行することができる。これらの特徴により、リソースの効率的な利用を容易に図ることができる。
【００３５】
次に、図７から図１０を参照して、図１に示したメモリシステム１００のハードウェアの構成例について説明する。図７に示したメモリシステム１００ａは、ＣＰＵ１０と、チップセット２０と、ストレージデバイス３０と、メモリインタフェース４０と、Ｉ／Ｏ（入出力）インタフェース５０とを備える。そして、ストレージデバイス３０は、コントローラ３１と、キャッシュメモリ３２と、フラッシュメモリ・ディスクドライブ３３とを備える。
【００３６】
図７に示したストレージデバイス３０が、図１に示したストレージデバイス３に対応する構成である。図７に示したキャッシュメモリ３２が、図１に示した第２記憶部５に対応する構成である。図７に示したフラッシュメモリ・ディスクドライブ３３が、図１に示した第１記憶部４に対応する構成である。そして、図７に示したＣＰＵ１０及びＣＰＵ１０が実行するプログラムやコントローラ３１が、図１に示したデータ入出力指示部１又はデータ入出力制御部２に対応する構成である。
【００３７】
メモリインタフェース４０は、例えばＤＲＡＭ等の揮発性メモリで使用されている所定の規格のインタフェースである。Ｉ／Ｏインタフェース５０は、例えばＳＡＴＡ（Serial ATA）、ＳＡＳ（Serial Attached SCSI）、ＰＣＩ  Ｅｘｐｒｅｓ（登録商標）等のＩ／Ｏインタフェースである。
【００３８】
また、チップセット２０は、ＣＰＵ２０にＩ／Ｏインタフェース５０等を接続するための制御回路である。なお、図７に示した例では、メモリインタフェース４０をＣＰＵ１０に直接接続しているが、メモリインタフェース４０はチップセット２０を介してＣＰＵ１０に接続されていてもよい。
【００３９】
コントローラ３１は、Ｉ／Ｏインタフェース５０を介してＣＰＵ１０との間で所定の制御信号やデータ信号を入出力することで、ＣＰＵ１０とキャッシュメモリ３２又はフラッシュメモリ・ディスクドライブ３３との間で例えば所定のセクタ単位でデータを入出力する。また、キャッシュメモリ３２は、メモリインタフェース４０を介してＣＰＵ１０に接続されていて、ＣＰＵ１０はキャッシュメモリ３２に対してメモリインタフェース４０を介してアクセスすることができる。また、コントローラ３１は、キャッシュメモリ３２とフラッシュメモリ・ディスクドライブ３３との間のデータ転送を制御する。
【００４０】
メモリシステム１００ａでは、図２等を参照して説明した同期アクセスをメモリインタフェース４０を介して実行し、また、非同期アクセスをＩ／Ｏインタフェース５０又はメモリインタフェース４０を介して実行することができる。したがって、メモリシステム１００ａでは、メモリインタフェース４０を介してキャッシュメモリ３２にアクセスすることで、Ｉ／Ｏインタフェース５０を介してキャッシュメモリ３２にアクセスする場合と比較して、データ入出力の際に使用されるソフトウェアの階層を容易に少なくすることができ、アクセスの高速化を図ったり、ＣＰＵ負荷を小さくしたりすることができる。
【００４１】
次に、図８を参照して図１に示したメモリシステム１００の他のハードウェアの構成例について説明する。図８に示したメモリシステム１００ｂは、ＣＰＵ１０と、チップセット２０と、ストレージデバイス３０ａと、メモリインタフェース４０と、Ｉ／Ｏインタフェース５０とを備える。そして、ストレージデバイス３０ａは、キャッシュメモリ３２と、フラッシュメモリ・ディスクドライブ３３とを備える。図８に示したメモリシステム１００ｂは、図７に示したメモリシステム１００ａと比較して、ストレージデバイス３０ａにおいてコントローラ３１が省略されるとともに、フラッシュメモリ・ディスクドライブ３３がＩ／Ｏインタフェース５０に直接接続されている点が異なっている。なお、図８において、図７に示したものに対応する構成には同一の符号をつけて説明を省略する。
【００４２】
図８に示したメモリシステム１００ｂでは、例えば、キャッシュメモリ３２とフラッシュメモリ・ディスクドライブ３３との間のデータ転送を、ＣＰＵ１０が実行するプログラムであるストレージデバイス３０ａ用のデバイスドライバによって制御することができる。
【００４３】
次に、図９を参照して図１に示したメモリシステム１００の他のハードウェアの構成例について説明する。図９に示したメモリシステム１００ｃは、ＣＰＵ１０と、チップセット２０と、ストレージデバイス３０ｂと、メモリインタフェース４０とを備える。そして、ストレージデバイス３０ｂは、コントローラ３１ｂと、キャッシュメモリ３２と、フラッシュメモリ・ディスクドライブ３３とを備える。図９に示したメモリシステム１００ｃは、図７に示したメモリシステム１００ａと比較して、Ｉ／Ｏインタフェース５０が省略されるとともに、コントローラ３１ｂにおいてＩ／Ｏインタフェース５０に対する接続機能が省略されている。なお、図９において、図７に示したものに対応する構成には同一の符号をつけて説明を省略する。
【００４４】
コントローラ３１ｂは、キャッシュメモリ３２とフラッシュメモリ・ディスクドライブ３３との間のデータ転送を制御する。また、メモリシステム１００ｃでは、ＣＰＵ１０とフラッシュメモリ・ディスクドライブ３３との間の所定のセクタ単位でのデータ入出力は、例えば、キャッシュメモリ３２を介して実行することができる。
【００４５】
次に、図１０を参照して図１に示したメモリシステム１００の他のハードウェアの構成例について説明する。図１０に示したメモリシステム１００ｄは、ＣＰＵ１０と、チップセット２０と、ストレージデバイス３０ｃと、Ｉ／Ｏインタフェース５０と、Ｉ／Ｏインタフェース６０とを備える。そして、ストレージデバイス３０ｃは、コントローラ３１と、キャッシュメモリ３２ｃと、フラッシュメモリ・ディスクドライブ３３とを備える。図１０に示したメモリシステム１００ｄは、図７に示したメモリシステム１００ａと比較して、メモリインタフェース４０に代えてＩ／Ｏインタフェース６０が設けられている点と、ＣＰＵ１０とキャッシュメモリ３２ｃとの間のデータの入出力が、Ｉ／Ｏインタフェース６０及びチップセット２０を介して実行される点とが異なっている。なお、図１０において、図７に示したものに対応する構成には同一の符号をつけて説明を省略する。
【００４６】
メモリシステム１００ｄでは、図２等を参照して説明した同期アクセスをＩ／Ｏインタフェース６０を介して実行し、また、非同期アクセスをＩ／Ｏインタフェース５０を介して実行することができる。したがって、メモリシステム１００ｄでは、例えばＩ／Ｏインタフェース６０を、Ｉ／Ｏインタフェース５０より高速なＩ／Ｏインタフェースとすることで、Ｉ／Ｏインタフェースの能力を適切に生かすことができる。
【００４７】
次に、図１１を参照して、図７に示したメモリシステム１００ａにおけるキャッシュメモリ３２と、仮想メモリ空間との対応関係について説明する。図１１において、ＣＰＵ１０がアクセスする仮想メモリ空間８０は、フラッシュメモリ・ディスクドライブ３３の記憶領域の一部又は全部に対応するように設定される。また、キャッシュメモリ３２は、一定の大きさの記憶領域であるページフレーム３２−１、３２−２、３２−３、…を単位として管理される。ページフレーム３２−１、３２−２、３２−３、…の大きさは、例えばフラッシュメモリ・ディスクドライブ３３のデータアクセス単位であるブロック単位と同一の大きさとしてもよいし、異なる大きさとしてもよい。ただし、以下ではブロック単位とページフレームとのサイズが同一である場合について説明を行う。なお、図８〜図１０に示したメモリシステム１００ｂ〜１００ｄにおいてもキャッシュメモリ３２又は３２ｃと仮想メモリ空間との対応関係については同様である。
【００４８】
ＣＰＵ１０がストレージデバイス３０に対してバイト単位で、メインメモリへのアクセスと同様にしてアクセスする場合（このアクセス方式はＸＩＰ（eXecute-In-Place）と呼ばれる）、フラッシュメモリ・ディスクドライブ３３及びキャッシュメモリ３２に対する論理アドレスの割り当ては、例えば、ＯＳカーネルのファイルシステムによって行うことができる。ただし、ブロック単位でアクセスが行われるブロックデバイスであるフラッシュメモリ・ディスクドライブ３３に対しては、ＣＰＵ１０からはバイト単位で直接アクセスすることはできないため、次のようにしてフラッシュメモリ・ディスクドライブ３３のデータを例えばキャッシュメモリ３２へコピーした後にＣＰＵ１０からキャッシュメモリ３２に対してアクセスすることで、等価的にフラッシュメモリ・ディスクドライブ３３への直接アクセスを実現する。すなわち、例えば仮想アドレス空間８０における所定の論理アドレスに対するデータ読み出しアクセスに対しては、データのキャッシュメモリ３２へのコピーが次のように行われる。つまり、当該論理アドレスを含むブロックのデータをフラッシュメモリ・ディスクドライブ３３からキャッシュメモリ３２の所定のページフレーム３２−１、３２−２、３２−３、…のいずれかに対してコピーする処理が行われる。その際、コピーしたページフレームに対してコピー元のブロックアドレス又は当該ブロックに割り当てられている先頭の論理アドレス等の情報が所定のテーブルに登録される。なお、図１１に示したように、ページフレーム３２−１、３２−２、３２−３、…の配列と、仮想アドレス空間８０における配置の順番は任意に設定することができ、図１１に示した例では、ページフレーム３２−１、３２−２及び３２−３が仮想アドレス空間８０におけるページフレーム８１、８３及び８２に対応付けられている。
【００４９】
なお、キャッシュメモリ３２におけるページフレームの管理は、コントローラ３１やデバイスドライバによって実現できるが、コントローラ３１で管理する場合、ページフレーム３２−１、３２−２、３２−３、…を回収したときには、その旨をＯＳカーネルに通知し、仮想アドレス空間８０の設定情報であるマップテーブルの内容を更新する。
【００５０】
なお、本発明の実施の形態は上記のものに限定されず、例えば、図１に示す構成においてデータ入出力指示部１とデータ入出力制御部２を一体的に構成したり、データ入出力指示部１やデータ入出力制御部２を複数の機能ブロックに分割したり、あるいは、図７から図１１に示した構成例においてチップセット２０を省略したりといった変更を適宜行うことができる。また、本発明の実施形態においてＣＰＵが実行するプログラムは、その全部又は一部を、コンピュータ読取可能な記録媒体や通信回線を介して頒布することが可能である。
【符号の説明】
【００５１】
１  データ入出力指示部
２  データ入出力制御部
３、３０、３０ａ、３０ｂ、３０ｃ  ストレージデバイス
４  第１記憶部
５  第２記憶部
１０  ＣＰＵ
２０  チップセット
３１、３１ｂ  コントローラ
３２、３２ｃ  キャッシュメモリ
３３  フラッシュメモリ・ディスクドライブ
４０  メモリインタフェース
５０、６０  Ｉ／Ｏインタフェース
１００、１００ａ、１００ｂ、１００ｃ、１００ｄ  メモリシステム
【図１】
2016062406.tif 000003
【図２】
2016062406.tif 000004
【図３】
2016062406.tif 000005
【図４】
2016062406.tif 000006
【図５】
2016062406.tif 000007
【図６】
2016062406.tif 000008
【図７】
2016062406.tif 000009
【図８】
2016062406.tif 000010
【図９】
2016062406.tif 000011
【図１０】
2016062406.tif 000012
【図１１】
2016062406.tif 000013