JP2016062406A - メモリシステム、メモリシステムの制御方法及びプログラム - Google Patents
メモリシステム、メモリシステムの制御方法及びプログラム Download PDFInfo
- Publication number
- JP2016062406A JP2016062406A JP2014191021A JP2014191021A JP2016062406A JP 2016062406 A JP2016062406 A JP 2016062406A JP 2014191021 A JP2014191021 A JP 2014191021A JP 2014191021 A JP2014191021 A JP 2014191021A JP 2016062406 A JP2016062406 A JP 2016062406A
- Authority
- JP
- Japan
- Prior art keywords
- storage unit
- data
- unit
- data input
- logical 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.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】ブロックデバイスへのバイト単位のアクセスを効率的にする。
【解決手段】メモリシステム100は、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部4と、第1記憶部4とともにストレージデバイス3を構成するものであって、バイト単位でデータの読み書きが可能でありかつ第1記憶部4で読み書きされるデータを一時的に記憶可能な第2記憶部5と、所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部1と、第1記憶部4にアクセスすることなく第2記憶部5に対して論理アドレスでアクセス可能な場合には第2記憶部5に対して同期アクセスし、第1記憶部4にアクセスすることなく第2記憶部5に対して論理アドレスでアクセス可能でない場合には第1記憶部4又は第2記憶部5に対して非同期アクセスするデータ入出力制御部2とを備える。
【選択図】図1
【解決手段】メモリシステム100は、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部4と、第1記憶部4とともにストレージデバイス3を構成するものであって、バイト単位でデータの読み書きが可能でありかつ第1記憶部4で読み書きされるデータを一時的に記憶可能な第2記憶部5と、所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部1と、第1記憶部4にアクセスすることなく第2記憶部5に対して論理アドレスでアクセス可能な場合には第2記憶部5に対して同期アクセスし、第1記憶部4にアクセスすることなく第2記憶部5に対して論理アドレスでアクセス可能でない場合には第1記憶部4又は第2記憶部5に対して非同期アクセスするデータ入出力制御部2とを備える。
【選択図】図1
Description
本発明は、メモリシステム、メモリシステムの制御方法及びプログラムに関する。
ブロックデバイスであるフラッシュメモリに対してバイト単位でアクセスする場合、読み書きされるデータを一旦ランダムアクセス可能なキャッシュメモリに記憶する構成が用いられている(特許文献1及び特許文献2)。ここでブロックデバイスとは、CPU(中央処理装置)がメインメモリ(主記憶装置)に対して直接アクセスする際のデータの大きさの単位であるバイト単位あるいはワード単位を超える、セクタ単位、ページ単位等の一定の大きさを単位としてデータの入出力が行われる装置である。なお、本願において、バイト単位とは、1バイト単位と複数バイト単位とを含むものとする。また、バイト単位はワード単位を含むものとする。また、本願において、データとは、記憶装置が記憶する情報を意味するものとし、プログラム及びプログラムが処理するもの、の双方を含むものとする。
特許文献1及び特許文献2に記載されている構成では、アクセス時にキャッシュミスが発生した場合、フラッシュメモリに対してアクセスが実行される。フラッシュメモリより高速なデバイスを使用してキャッシュメモリを構成した場合、キャッシュヒットのときと、キャッシュミスのときとで、アクセス時間が異なることになる。アクセス時間にバラツキがある場合、例えば、大きなアクセス時間を前提としてアクセス後の処理を行うこととすれば、キャッシュヒットの場合の高速性を生かし切れない場合が生じる。一方、小さなアクセス時間を前提としてアクセス後の処理を行うこととすれば、CPUを長時間、待機状態としてしまうことになってしまうこと等が考えられる。すなわち、バイト単位でアクセスする場合にフラッシュメモリへのCPUからのアクセスあるいはアクセス後の処理を効率的に行うことができない場合があるという課題があった。
本発明は、上記の事情を考慮してなされたものであり、ブロックデバイスに対してバイト単位でアクセスする場合にアクセスを効率的にすることができるメモリシステム、メモリシステムの制御方法及びプログラムを提供することを目的とする。
上記課題を解決するため、本発明のメモリシステムは、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と、所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部と、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスするデータ入出力制御部とを備えることを特徴とする。
また、本発明の他のメモリシステムは、前記第2記憶部が、不揮発性メモリであることを特徴とする。
また、本発明の他のメモリシステムは、前記第2記憶部に対してメモリインタフェースが接続されていることを特徴とする。
また、本発明のメモリシステムの制御方法は、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部とを用い、データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示し、データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスすることを特徴とするメモリシステムの制御方法。
また、本発明のプログラムは、ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部とを用い、データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示する過程と、データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスする過程とをコンピュータに実行させることを特徴とする。
本発明によれば、データ入出力指示部が、所定の論理アドレスに対してバイト単位でデータの読み書きを指示した場合、データ入出力制御部が、第1記憶部にアクセスすることなく第2記憶部に対して指示された論理アドレスでアクセス可能なときには第2記憶部に対して同期アクセスし、アクセス可能でないときには第1記憶部又は第2記憶部に対して非同期アクセスする。この構成では、例えばデータの読み出し時に、第1記憶部にアクセスすることなく第2記憶部に対して指示された論理アドレスでアクセス可能な場合には、データ入出力指示部が第2記憶部からデータが読み出されるのを待機するので、データを読み出したときに例えば読み出したデータをすぐに利用することができる。他方、アクセス可能でない場合にはデータ入出力指示部は、第1記憶部又は第2記憶部からデータが読み出されるのを待機しないので、例えば他の処理を実行することができる。これらの特徴により、アクセス時間の差異に柔軟に対応させ、リソースの効率的な利用を容易に図ることができる。
以下、図面を参照して本発明の実施形態について説明する。図1は、本発明の一実施形態のメモリシステムの基本的な構成例を示したブロック図である。図1に示したメモリシステム100は、データ入出力指示部1と、データ入出力制御部2と、ストレージデバイス3とを備える。そして、ストレージデバイス3は、第1記憶部4と、第2記憶部5とを備える。
メモリシステム100は、例えば、パーソナルコンピュータ、モバイル情報端末、モバイル通信端末、サーバ、センサ端末、電気機器の制御装置等で用いられる情報処理装置の要素として構成することができる。本実施形態においてメモリシステム100は、所定のCPUによってOS(オペレーティングシステム)を含む所定のプログラムを実行することで、ストレージデバイス3に対してバイト単位でアクセスすることができる構成である。また、ストレージデバイス3に対してバイト単位でアクセスする場合には、ストレージデバイス3の各記憶領域に対して、OSカーネル等によって管理される仮想アドレス空間における論理アドレスが割り当てられる。CPUは論理アドレスを指定してストレージデバイス3の各記憶領域にアクセスすることができる。
第1記憶部4は、ブロック単位でデータが読み書きされる不揮発性メモリである。第1記憶部4は、例えば、NAND型フラッシュメモリを用いて構成することができる。第1記憶部4は、ブロック単位でデータが読み書き可能に構成されていればよく、例えばNOR型フラッシュメモリ等のバイト単位でランダムアクセスが可能なメモリを用いて構成してもよい。すなわち、不揮発性メモリの構造に限定はない。また、第1記憶部4は、ハードディスク等の磁気記憶装置であってもよい。
第2記憶部5は、バイト単位でデータの読み書きが可能でありかつ第1記憶部4で読み書きされるデータを一時的に記憶可能なメモリである。第2記憶部5は、例えば、データ読み出し時に第1記憶部4からブロック単位で読み出したデータを一時記憶したり、データ書き込み時に第1記憶部4へ書き込むデータを書き込み前に一時記憶したりすることが可能である。すなわち、第2記憶部5は、第1記憶部4用のキャッシュメモリとして使用することができる。第2記憶部5は、DRAM(Dynamic Random Access Memory)、SRAM(Static RAM)等の揮発性メモリを用いて構成してもよいし、NOR型フラッシュメモリ、ReRAM(抵抗変化型メモリ)、MRAM(磁気抵抗メモリ)、FeRAM(強誘電体メモリ)、PCM(相変化メモリ)、STT(スピン注入メモリ)等の不揮発性メモリを用いて構成してもよい。第2記憶部5を不揮発性メモリで構成した場合、例えば電源遮断時等にデータを待避しなくてもよくなる。
データ入出力指示部1は、ストレージデバイス3に割り当てられた所定の論理アドレスに対してバイト単位でデータの読み書きを指示する構成である。データ入出力指示部1は、CPUとそのCPUが実行するプログラムとを用いて構成することができ、そのプログラムは例えばOSカーネルの一部として構成することができる。あるいは、データ入出力指示部1を構成するプログラムは、アプリケーションの一部として、又はストレージデバイス3用のデバイスドライバの一部として構成されていてもよい。データ入出力指示部1は、OSが含む他のプログラム、アプリケーションプログラム等からストレージデバイス3に対するバイト単位でのアクセス(すなわちデータの読み出し又は書き込み)が発生あるいは要求された場合にデータの読み書きを指示する処理を実行する。
データ入出力指示部1がストレージデバイス3に割り当てられた所定の論理アドレスに対してデータの読み出し又は書き込みを指示した場合、データ入出力制御部2は次の処理を行う。すなわち、データ入出力制御部2は、第1記憶部4へのアクセスを行わなくても第2記憶部5に対して当該論理アドレスでアクセス可能な場合には第2記憶部5に対して同期アクセスし、第1記憶部4へアクセスしなければ第2記憶部5に対して当該論理アドレスでアクセス可能でない場合には第1記憶部4又は第2記憶部5に対して非同期アクセスする。ここで、第1記憶部4へのアクセスを行わなくても第2記憶部5に対して当該論理アドレスでアクセス可能な場合とは、データ読み出し時にはアクセス先の論理アドレスに対応するデータが第1記憶部4から読み出されるなどして既に第2記憶部5に格納されている場合である。また、データ書き込み時には第1記憶部4へのデータの書き戻しを行わなくても第2記憶部5に新たな領域を確保できる場合、又はアクセス先の論理アドレスに対応するデータが第2記憶部5に既に格納されている場合である。
また、第2記憶部5に対する同期アクセスとは、データ入出力指示部1を構成するCPU(あるいはプロセス)がアクセスを指示した後、アクセスが発生するまで待機するという第2記憶部5に対するアクセスである。ここで、アクセスの発生とは、第2記憶部5からのデータの読み出し又は第2記憶部5へのデータの書き込みの実行が開始あるいは終了したことを意味する。
また、第1記憶部4又は第2記憶部5に対する非同期アクセスとは、データ入出力指示部1を構成するCPU(あるいはプロセス)がアクセスを指示した後、アクセスが発生するまで待機せずに、例えば他の処理を実行するという第1記憶部4又は第2記憶部5に対するアクセスである。すなわち、非同期アクセスによるデータ読み出し時には、データ入出力指示部1が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部2は、並行して、例えば、以下の(A1)〜(A3)の処理、又は(B1)〜(B3)の処理を制御する。すなわち、(A1)第1記憶部4から当該論理アドレスに対応するデータをブロック単位で読み出して第2記憶部5に格納する(すなわちコピーする)とともに第2記憶部5に対して当該論理アドレスを割り当てる。(A2)次に、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1へデータが用意できたことを通知する。(A3)そして、第2記憶部5から当該論理アドレスに対応するデータをバイト単位で指示されたバイト数分読み出してCPUに対して出力する。あるいは、(B1)第1記憶部4から当該論理アドレスに対応するデータをブロック単位で読み出して例えば図示していないメインメモリ又はバッファメモリに格納するとともに、格納したメインメモリ又はバッファメモリの記憶領域と論理アドレスとの対応付けを行う。(B2)次に、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1へデータが用意できたことを通知する。(B3)そして、メインメモリ又はバッファメモリから当該論理アドレスに対応するデータをバイト単位で指示されたバイト数分読み出してCPUに対して出力する。上記の(A1)から(A3)の処理では、非同期アクセスによるデータの読み出し時に、一旦、第1記憶部4から第2記憶部5へとデータがコピーされ、その後、第2記憶部5からCPUへとデータが転送される。他方、(B1)から(B3)の処理では、非同期アクセスによるデータの読み出し時に、第1記憶部4からメインメモリ又はバッファメモリへとデータがコピーされ、メインメモリ又はバッファメモリからCPUへデータが転送される。(A1)〜(A3)の処理と、(B1)〜(B3)の処理とのどちらを使うのかは、例えば、ハードウェアの仕様等に応じて予め静的に決めておいてもよいし、メインメモリ等の使用状況等に応じて動的に切り替えるようにしてもよい。あるいは、例えば、(A1)から(A3)の処理を実行した後に(あるいは並行的に)、(B1)から(B3)の処理を実行して、同一ブロックのアクセスに対して次からは同期アクセスできるよう備えておくこともできる。
また、第1記憶部4に対する非同期アクセスによるデータ書き込み時には、データ入出力指示部1が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部2は、並行して、例えば、第2記憶部5で回収(あるいは開放)する領域を選択し、選択した領域のデータを第1記憶部4へ書き戻す処理を行う。その後、データ入出力制御部2は、確保した第2記憶部5内の所定の大きさの領域に対して当該論理アドレスに対応した所定の論理アドレスを割り当てる。そして、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1に対してデータの書き込み準備ができたことを通知する。そして、バイト単位で指示されたバイト数分のデータをCPUから第2記憶部5へと入力し、データ入出力制御部2は、第2記憶部5の当該論理アドレスに対応した領域にデータの書き込みを行う。
あるいは、第1記憶部4に対する非同期アクセスによるデータ書き込み時には、データ入出力指示部1が、アクセスを指示した後、例えば他の処理を実行する。その一方、データ入出力制御部2は、並行して、例えば、第2記憶部5に当該論理アドレスに対応するブロック単位分の領域を確保し、第1記憶部4から第2記憶部5へ当該論理アドレスに対応するデータをブロック単位で読み出す(すなわちコピーする)とともに第2記憶部5に対して当該論理アドレスに対応した論理アドレスを割り当てる。そして、例えば、データ入出力指示部1からの問い合わせに応じて又はデータ入出力制御部2から自発的に、データ入出力制御部2からデータ入出力指示部1に対してデータの書き込み準備ができたことを通知する。そして、バイト単位で指示されたバイト数分のデータをCPUから第2記憶部5へ入力し、データ入出力制御部2は、第2記憶部5の当該論理アドレスに対してデータの書き込みを行う。
なお、データ入出力制御部2は、例えば、CPUとそのCPUが実行するプログラムとを用いて構成したり、図示していないストレージデバイス3内に設けたストレージデバイス用のコントローラ等のハードウェアを用いて構成したり、あるいはそれらを組み合わせて用いて構成したりすることができる。そのプログラムは例えばOSカーネルの一部として構成したり、ストレージデバイス3用のデバイスドライバの一部として構成したりすることができる。
また、論理アドレスと、第2記憶部5の物理アドレス又は第1記憶部4のブロックアドレス(例えばセクタアドレス、ページアドレス等)との対応付けや変換、あるいは、非同期アクセス時の図示していないメインメモリやバッファメモリの物理アドレスとの対応付けや変換は、例えば、OSカーネルで行ってもよいし、ハードウェアを用いて行ってもよい。また、論理アドレスと物理アドレス及びブロックアドレスとを対応付けるための変換テーブルは、例えば、第2記憶部5に記憶してもよいし、図示していないメインメモリ等の他のメモリに記憶してもよい。
また、第2記憶部5への論理アドレスの割り当てや、第1記憶部4から第2記憶部5へのデータの読み込み、第2記憶部5から第1記憶部4へのデータの書き出し、あるいは、第1記憶部4から図示していないメインメモリ又はバッファメモリへのデータの読み出し等の処理は、例えばデバイスドライバで実行したり、ストレージデバイス3用のコントローラ等のハードウェアを用いて制御したりすることができる。
次に、図2を参照して、メモリシステム100の動作例について説明する。ストレージデバイス3に対してバイト単位でアクセスする場合に、ストレージデバイス3に対するデータのアクセスが発生したとき、データ入出力指示部1は、アクセス先の論理アドレスを指定してデータの読み出し又は指定したデータの書き込みの実行をデータ入出力制御部2に対して指示する(ステップS1)。
データ入出力制御部2は、指示された論理アドレスに対するアクセスを第1記憶部4に対するアクセス無しで第2記憶部5に対して実行可能であるか否かを判定する(ステップS2)。読み出し時には、ステップS2で、データ入出力制御部2は、第2記憶部5内にアクセス先の論理アドレスに対応する第1記憶部4内のブロックがすでに格納されていた場合に、第1記憶部4にアクセスせずに指示された論理アドレスで第2記憶部5にアクセス可能であると判定する。また、書き込み時には、ステップS2で、データ入出力制御部2は、第2記憶部5内に第1記憶部4へのアクセス無しで空き領域を確保することができる場合、又は、第2記憶部5内にアクセス先の論理アドレスに対応する第1記憶部4内のブロックがすでに格納されていた場合、第1記憶部4にアクセスせずに指示された論理アドレスで第2記憶部5にアクセス可能であると判定する。
指示された論理アドレスに対するアクセスを第1記憶部4に対するアクセス無しで第2記憶部5に対して実行可能である場合(ステップS2で「YES」の場合)、データ入出力制御部2は、上述したようにして第2記憶部5に対して同期アクセスする(ステップS3)。一方、指示された論理アドレスに対するアクセスを第1記憶部4に対するアクセス無しでは第2記憶部5に対して実行できない場合(ステップS2で「NO」の場合)、データ入出力制御部2は、上述したようにして第1記憶部4又は第2記憶部5に対して非同期アクセスする(ステップS4)。
次に図3から図6を参照して図1に示したメモリシステム100における処理及び情報の流れについて説明する。図3は、図1に示したストレージデバイス3からデータを読み出す場合の同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAからのバイト単位のデータの読み出しを指示すると(S101)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能であるか否かを判定する(S102)。この例では、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能であると判定するので(S102で「YES」)、第2記憶部5に対して論理アドレスAに対応する物理アドレスからバイト単位でデータを読み出す指示を入力する(S103)。次に、第2記憶部5は、指示されたデータをバイト単位で出力する(S105及びS106)。この例では、データ入出力指示部1は、S101で指示を出力してから、S105でデータが出力されるまで待機状態となる。
図4は、図1に示したストレージデバイス3からデータを読み出す場合の非同期アクセスにおける処理の流れの一例を示したシーケンス図である。ただし、図4は上述した(B1)から(B3)の処理の一例を示している。(A1)から(A3)の処理の場合、以下の説明および図4において、ステップS202を除き、第2記憶部5を、図示していないメインメモリ又はバッファメモリと読み替える必要がある。いま、データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAからのバイト単位のデータの読み出しを指示すると(S201)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能であるか否かを判定する(S202)。この例では、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5からデータを読み出し可能ではないと判定するので(S202で「NO」)、データ入出力指示部1に対して同期アクセスによる読み出しが不可である旨の通知を行うととともに(S203)、第1記憶部4に対して、論理アドレスAに対応するブロックアドレスからブロック単位でデータを読み出すよう所定の指示を行う(S204)。データ入出力制御部2は、第1記憶部4が出力したデータを、第2記憶部5の所定の領域に格納する制御を行う(S205及びS206)。なお、S204からS206の処理は、複数回繰り返して行ってもよいし、あるいは、第1記憶部4から読み出されたデータを第2記憶部5に直接転送するような制御を行ってもよい。
次に、データ入出力制御部2は、データ入出力指示部1に対してデータの読み出しが可能になった旨の通知を行う(S207)。通知を受けたデータ入出力指示部1が、データの出力指示を行うと(S208)。データ入出力制御部2は、第2記憶部5に対して論理アドレスAに対応する物理アドレスからバイト単位でデータを読み出す指示を入力する(S209)。次に、第2記憶部5は、指示されたデータをバイト単位で出力する(S110及びS211)。この例では、データ入出力指示部1は、S201で指示を出力してから、S203でデータが同期アクセスによる読み出し不可であるとの通知を受けるまで待機状態となる。
図5は、図1に示したストレージデバイス3へデータを書き込む場合の同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAへのバイト単位のデータの書き込みを指示すると(S301)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能であるか否かを判定する(S302)。この例では、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能であると判定するので(S302で「YES」)、第2記憶部5に対して論理アドレスAに対応する物理アドレスへバイト単位でデータを書き込む指示を入力する(S303)。次に、第2記憶部5は、指示されたデータをバイト単位で入力し、書き込みが完了すると書き込み成功通知を出力する(S304及びS305)。次に、データ入出力制御部2は、データを書き込んだ第2記憶部5の領域について当該領域を開放する際に第1記憶部4への書き戻しが必要である旨の設定を行う(S306)。この例では、データ入出力指示部1は、S301で指示を出力してから、S305でデータ書き込みの成功通知がなされるまで待機状態となる。
図6は、図1に示したストレージデバイス3へデータを書き込む場合の非同期アクセスにおける処理の流れの一例を示したシーケンス図である。データ入出力指示部1が、データ入出力制御部2に対して、論理アドレスAへのバイト単位のデータの書き込みを指示すると(S401)、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能であるか否かを判定する(S402)。この例では、第2記憶部5に空き領域が無いこととすると、データ入出力制御部2は、第1記憶部4へのアクセス無しで第2記憶部5へデータを書き込み可能ではないと判定するので(S402で「NO」)、第2記憶部5に対して開放する領域を指定し、データの読み出しを指示する(S404)。データ入出力制御部2は、第2記憶部5からデータが出力されると(S405)、出力されたデータを第1記憶部4へ書き戻すための制御を行う(S406)。S406でデータ入出力制御部2は、書き戻しが完了したら開放した領域に対して論理アドレスAに対応した論理アドレスを割り当てる。次に、データ入出力制御部2は、第2記憶部5に対して論理アドレスAに対応する物理アドレスへバイト単位でデータを書き込む指示を入力する(S407)。次に、第2記憶部5は、指示されたデータをバイト単位で入力し、書き込みが完了すると書き込み成功通知を出力する(S408及びS409)。次に、データ入出力制御部2は、データを書き込んだ第2記憶部5の領域について当該領域を開放する際に第1記憶部4への書き戻しが必要である旨の設定を行う(S410)。なお、S404からS406の処理は、複数回繰り返して行ってもよいし、あるいは、第2記憶部5から読み出されたデータを第1記憶部4に直接転送するような制御を行ってもよい。この例では、データ入出力指示部1が、S401で指示を出力してから、S403で同期アクセスによる書き込みが不可である旨を示す通知をうけるまで待機状態となる。
本実施形態では、データ入出力指示部1が、ストレージデバイス3に割り当てられた所定の論理アドレスに対してバイト単位でデータの読み書きを指示した場合、データ入出力制御部2が、次の処理を行う。すなわち、データ入出力制御部2は、第1記憶部4にアクセスすることなく第2記憶部5に対して指示された論理アドレスでアクセス可能なときには第2記憶部5に対して同期アクセスし、アクセス可能ではないときには第1記憶部4又は第2記憶部5に対して非同期アクセスする。この構成では、例えばデータの読み出し時に、第1記憶部4にアクセスすることなく第2記憶部5に対して指示された論理アドレスでアクセス可能な場合には、データ入出力指示部1が第2記憶部5からデータが読み出されるのを待機するので、データを読み出したときに例えば読み出したデータをすぐに利用することができる。他方、アクセス可能でない場合にはデータ入出力指示部1は、データが読み出されるのを待機しないので、例えば他の処理を実行することができる。これらの特徴により、リソースの効率的な利用を容易に図ることができる。
次に、図7から図10を参照して、図1に示したメモリシステム100のハードウェアの構成例について説明する。図7に示したメモリシステム100aは、CPU10と、チップセット20と、ストレージデバイス30と、メモリインタフェース40と、I/O(入出力)インタフェース50とを備える。そして、ストレージデバイス30は、コントローラ31と、キャッシュメモリ32と、フラッシュメモリ・ディスクドライブ33とを備える。
図7に示したストレージデバイス30が、図1に示したストレージデバイス3に対応する構成である。図7に示したキャッシュメモリ32が、図1に示した第2記憶部5に対応する構成である。図7に示したフラッシュメモリ・ディスクドライブ33が、図1に示した第1記憶部4に対応する構成である。そして、図7に示したCPU10及びCPU10が実行するプログラムやコントローラ31が、図1に示したデータ入出力指示部1又はデータ入出力制御部2に対応する構成である。
メモリインタフェース40は、例えばDRAM等の揮発性メモリで使用されている所定の規格のインタフェースである。I/Oインタフェース50は、例えばSATA(Serial ATA)、SAS(Serial Attached SCSI)、PCI Expres(登録商標)等のI/Oインタフェースである。
また、チップセット20は、CPU20にI/Oインタフェース50等を接続するための制御回路である。なお、図7に示した例では、メモリインタフェース40をCPU10に直接接続しているが、メモリインタフェース40はチップセット20を介してCPU10に接続されていてもよい。
コントローラ31は、I/Oインタフェース50を介してCPU10との間で所定の制御信号やデータ信号を入出力することで、CPU10とキャッシュメモリ32又はフラッシュメモリ・ディスクドライブ33との間で例えば所定のセクタ単位でデータを入出力する。また、キャッシュメモリ32は、メモリインタフェース40を介してCPU10に接続されていて、CPU10はキャッシュメモリ32に対してメモリインタフェース40を介してアクセスすることができる。また、コントローラ31は、キャッシュメモリ32とフラッシュメモリ・ディスクドライブ33との間のデータ転送を制御する。
メモリシステム100aでは、図2等を参照して説明した同期アクセスをメモリインタフェース40を介して実行し、また、非同期アクセスをI/Oインタフェース50又はメモリインタフェース40を介して実行することができる。したがって、メモリシステム100aでは、メモリインタフェース40を介してキャッシュメモリ32にアクセスすることで、I/Oインタフェース50を介してキャッシュメモリ32にアクセスする場合と比較して、データ入出力の際に使用されるソフトウェアの階層を容易に少なくすることができ、アクセスの高速化を図ったり、CPU負荷を小さくしたりすることができる。
次に、図8を参照して図1に示したメモリシステム100の他のハードウェアの構成例について説明する。図8に示したメモリシステム100bは、CPU10と、チップセット20と、ストレージデバイス30aと、メモリインタフェース40と、I/Oインタフェース50とを備える。そして、ストレージデバイス30aは、キャッシュメモリ32と、フラッシュメモリ・ディスクドライブ33とを備える。図8に示したメモリシステム100bは、図7に示したメモリシステム100aと比較して、ストレージデバイス30aにおいてコントローラ31が省略されるとともに、フラッシュメモリ・ディスクドライブ33がI/Oインタフェース50に直接接続されている点が異なっている。なお、図8において、図7に示したものに対応する構成には同一の符号をつけて説明を省略する。
図8に示したメモリシステム100bでは、例えば、キャッシュメモリ32とフラッシュメモリ・ディスクドライブ33との間のデータ転送を、CPU10が実行するプログラムであるストレージデバイス30a用のデバイスドライバによって制御することができる。
次に、図9を参照して図1に示したメモリシステム100の他のハードウェアの構成例について説明する。図9に示したメモリシステム100cは、CPU10と、チップセット20と、ストレージデバイス30bと、メモリインタフェース40とを備える。そして、ストレージデバイス30bは、コントローラ31bと、キャッシュメモリ32と、フラッシュメモリ・ディスクドライブ33とを備える。図9に示したメモリシステム100cは、図7に示したメモリシステム100aと比較して、I/Oインタフェース50が省略されるとともに、コントローラ31bにおいてI/Oインタフェース50に対する接続機能が省略されている。なお、図9において、図7に示したものに対応する構成には同一の符号をつけて説明を省略する。
コントローラ31bは、キャッシュメモリ32とフラッシュメモリ・ディスクドライブ33との間のデータ転送を制御する。また、メモリシステム100cでは、CPU10とフラッシュメモリ・ディスクドライブ33との間の所定のセクタ単位でのデータ入出力は、例えば、キャッシュメモリ32を介して実行することができる。
次に、図10を参照して図1に示したメモリシステム100の他のハードウェアの構成例について説明する。図10に示したメモリシステム100dは、CPU10と、チップセット20と、ストレージデバイス30cと、I/Oインタフェース50と、I/Oインタフェース60とを備える。そして、ストレージデバイス30cは、コントローラ31と、キャッシュメモリ32cと、フラッシュメモリ・ディスクドライブ33とを備える。図10に示したメモリシステム100dは、図7に示したメモリシステム100aと比較して、メモリインタフェース40に代えてI/Oインタフェース60が設けられている点と、CPU10とキャッシュメモリ32cとの間のデータの入出力が、I/Oインタフェース60及びチップセット20を介して実行される点とが異なっている。なお、図10において、図7に示したものに対応する構成には同一の符号をつけて説明を省略する。
メモリシステム100dでは、図2等を参照して説明した同期アクセスをI/Oインタフェース60を介して実行し、また、非同期アクセスをI/Oインタフェース50を介して実行することができる。したがって、メモリシステム100dでは、例えばI/Oインタフェース60を、I/Oインタフェース50より高速なI/Oインタフェースとすることで、I/Oインタフェースの能力を適切に生かすことができる。
次に、図11を参照して、図7に示したメモリシステム100aにおけるキャッシュメモリ32と、仮想メモリ空間との対応関係について説明する。図11において、CPU10がアクセスする仮想メモリ空間80は、フラッシュメモリ・ディスクドライブ33の記憶領域の一部又は全部に対応するように設定される。また、キャッシュメモリ32は、一定の大きさの記憶領域であるページフレーム32−1、32−2、32−3、…を単位として管理される。ページフレーム32−1、32−2、32−3、…の大きさは、例えばフラッシュメモリ・ディスクドライブ33のデータアクセス単位であるブロック単位と同一の大きさとしてもよいし、異なる大きさとしてもよい。ただし、以下ではブロック単位とページフレームとのサイズが同一である場合について説明を行う。なお、図8〜図10に示したメモリシステム100b〜100dにおいてもキャッシュメモリ32又は32cと仮想メモリ空間との対応関係については同様である。
CPU10がストレージデバイス30に対してバイト単位で、メインメモリへのアクセスと同様にしてアクセスする場合(このアクセス方式はXIP(eXecute-In-Place)と呼ばれる)、フラッシュメモリ・ディスクドライブ33及びキャッシュメモリ32に対する論理アドレスの割り当ては、例えば、OSカーネルのファイルシステムによって行うことができる。ただし、ブロック単位でアクセスが行われるブロックデバイスであるフラッシュメモリ・ディスクドライブ33に対しては、CPU10からはバイト単位で直接アクセスすることはできないため、次のようにしてフラッシュメモリ・ディスクドライブ33のデータを例えばキャッシュメモリ32へコピーした後にCPU10からキャッシュメモリ32に対してアクセスすることで、等価的にフラッシュメモリ・ディスクドライブ33への直接アクセスを実現する。すなわち、例えば仮想アドレス空間80における所定の論理アドレスに対するデータ読み出しアクセスに対しては、データのキャッシュメモリ32へのコピーが次のように行われる。つまり、当該論理アドレスを含むブロックのデータをフラッシュメモリ・ディスクドライブ33からキャッシュメモリ32の所定のページフレーム32−1、32−2、32−3、…のいずれかに対してコピーする処理が行われる。その際、コピーしたページフレームに対してコピー元のブロックアドレス又は当該ブロックに割り当てられている先頭の論理アドレス等の情報が所定のテーブルに登録される。なお、図11に示したように、ページフレーム32−1、32−2、32−3、…の配列と、仮想アドレス空間80における配置の順番は任意に設定することができ、図11に示した例では、ページフレーム32−1、32−2及び32−3が仮想アドレス空間80におけるページフレーム81、83及び82に対応付けられている。
なお、キャッシュメモリ32におけるページフレームの管理は、コントローラ31やデバイスドライバによって実現できるが、コントローラ31で管理する場合、ページフレーム32−1、32−2、32−3、…を回収したときには、その旨をOSカーネルに通知し、仮想アドレス空間80の設定情報であるマップテーブルの内容を更新する。
なお、本発明の実施の形態は上記のものに限定されず、例えば、図1に示す構成においてデータ入出力指示部1とデータ入出力制御部2を一体的に構成したり、データ入出力指示部1やデータ入出力制御部2を複数の機能ブロックに分割したり、あるいは、図7から図11に示した構成例においてチップセット20を省略したりといった変更を適宜行うことができる。また、本発明の実施形態においてCPUが実行するプログラムは、その全部又は一部を、コンピュータ読取可能な記録媒体や通信回線を介して頒布することが可能である。
1 データ入出力指示部
2 データ入出力制御部
3、30、30a、30b、30c ストレージデバイス
4 第1記憶部
5 第2記憶部
10 CPU
20 チップセット
31、31b コントローラ
32、32c キャッシュメモリ
33 フラッシュメモリ・ディスクドライブ
40 メモリインタフェース
50、60 I/Oインタフェース
100、100a、100b、100c、100d メモリシステム
2 データ入出力制御部
3、30、30a、30b、30c ストレージデバイス
4 第1記憶部
5 第2記憶部
10 CPU
20 チップセット
31、31b コントローラ
32、32c キャッシュメモリ
33 フラッシュメモリ・ディスクドライブ
40 メモリインタフェース
50、60 I/Oインタフェース
100、100a、100b、100c、100d メモリシステム
Claims (5)
- ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、
前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と、
所定の論理アドレスに対してバイト単位でデータの読み書きを指示するデータ入出力指示部と、
前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスするデータ入出力制御部と
を備えることを特徴とするメモリシステム。 - 前記第2記憶部が、不揮発性メモリである
ことを特徴とする請求項1に記載のメモリシステム。 - 前記第2記憶部に対してメモリインタフェースが接続されている
ことを特徴とする請求項1又は2に記載のメモリシステム。 - ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、
前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と
を用い、
データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示し、
データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスする
ことを特徴とするメモリシステムの制御方法。 - ブロック単位でデータが読み書きされる不揮発性メモリである第1記憶部と、
前記第1記憶部とともにストレージデバイスを構成するものであって、バイト単位でデータの読み書きが可能でありかつ前記第1記憶部で読み書きされるデータを一時的に記憶可能な第2記憶部と
を用い、
データ入出力指示部によって所定の論理アドレスに対してバイト単位でデータの読み書きを指示する過程と、
データ入出力制御部によって前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能な場合には前記第2記憶部に対して同期アクセスし、前記第1記憶部にアクセスすることなく前記第2記憶部に対して前記論理アドレスでアクセス可能でない場合には前記第1記憶部又は前記第2記憶部に対して非同期アクセスする過程と
をコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014191021A JP2016062406A (ja) | 2014-09-19 | 2014-09-19 | メモリシステム、メモリシステムの制御方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014191021A JP2016062406A (ja) | 2014-09-19 | 2014-09-19 | メモリシステム、メモリシステムの制御方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016062406A true JP2016062406A (ja) | 2016-04-25 |
Family
ID=55796065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014191021A Pending JP2016062406A (ja) | 2014-09-19 | 2014-09-19 | メモリシステム、メモリシステムの制御方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016062406A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303617B2 (en) | 2016-11-30 | 2019-05-28 | Samsung Electronics Co., Ltd. | Storage device supporting byte accessible interface and block accessible interface and electronic system including the same |
CN110114762A (zh) * | 2016-12-23 | 2019-08-09 | Ati科技无限责任公司 | 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 |
CN112703481A (zh) * | 2018-09-12 | 2021-04-23 | 美光科技公司 | 混合式存储器***接口 |
-
2014
- 2014-09-19 JP JP2014191021A patent/JP2016062406A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303617B2 (en) | 2016-11-30 | 2019-05-28 | Samsung Electronics Co., Ltd. | Storage device supporting byte accessible interface and block accessible interface and electronic system including the same |
CN110114762A (zh) * | 2016-12-23 | 2019-08-09 | Ati科技无限责任公司 | 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 |
JP2020502694A (ja) * | 2016-12-23 | 2020-01-23 | エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc | バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 |
JP7227907B2 (ja) | 2016-12-23 | 2023-02-22 | エーティーアイ・テクノロジーズ・ユーエルシー | バイトアドレス可能メモリとして不揮発性メモリにアクセスする方法及び装置 |
CN110114762B (zh) * | 2016-12-23 | 2023-09-15 | Ati科技无限责任公司 | 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 |
CN112703481A (zh) * | 2018-09-12 | 2021-04-23 | 美光科技公司 | 混合式存储器***接口 |
JP2021536643A (ja) * | 2018-09-12 | 2021-12-27 | マイクロン テクノロジー,インク. | ハイブリッドメモリシステムインタフェース |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471861B (zh) | 一种闪存设备中的数据存储方法及闪存设备 | |
US9928169B2 (en) | Method and system for improving swap performance | |
TWI678618B (zh) | 快閃記憶裝置的命名空間操作方法及裝置 | |
KR102275563B1 (ko) | 호스트-관리 비휘발성 메모리 | |
KR101301840B1 (ko) | 비휘발성 메모리 장치의 데이터 처리 방법 | |
US20190129876A1 (en) | Devices and methods for data storage management | |
US11194711B2 (en) | Storage device | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
KR20200121372A (ko) | 하이브리드 메모리 시스템 | |
CN111796759B (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
CN110597742A (zh) | 用于具有持久***存储器的计算机***的改进存储模型 | |
JP2021149374A (ja) | データ処理装置 | |
JP2016062406A (ja) | メモリシステム、メモリシステムの制御方法及びプログラム | |
US9934100B2 (en) | Method of controlling memory swap operation and data processing system using same | |
KR20200117032A (ko) | 하이브리드 메모리 시스템 | |
US20210097001A1 (en) | Hierarchical memory systems | |
JP6767653B2 (ja) | 記憶装置、情報処理システム、記憶装置の起動方法及びプログラム | |
KR20220050177A (ko) | 3단의 계층적 메모리 시스템 | |
EP3136245B1 (en) | Computer | |
US11835992B2 (en) | Hybrid memory system interface | |
US20210208808A1 (en) | Host Supported Partitions in Storage Device | |
US9836220B2 (en) | Data processing system and method of operating the same | |
KR101834082B1 (ko) | 다중 ssd 시스템 관리 장치 및 방법 | |
US9317440B2 (en) | Computing device and virtual device control method for controlling virtual device by computing system | |
US20230359578A1 (en) | Computing system including cxl switch, memory device and storage device and operating method thereof |