説明

記憶装置および計算機

【課題】不揮発性メモリからキャッシュメモリへの書込回数を削減する。
【解決手段】記憶装置10は、不揮発性メモリ30とキャッシュメモリ20とメモリコントローラ12とを有する。不揮発性メモリ30は、分割データと格納場所を管理する論理/物理アドレス変換テーブル32を記録している。キャッシュメモリ20は、データキャッシュ21と、論理/物理アドレス変換テーブル32の一部を保持する論理/物理アドレス変換テーブルキャッシュ22を記録している。メモリコントローラ12は、外部からデータの読み出し要求を受けたとき、データキャッシュ21上に空きエントリが無かったならば、データキャッシュ21上の分割データのうち、論理/物理アドレス変換テーブル32のエントリが、論理/物理アドレス変換テーブルキャッシュ22に有るものを優先的に不揮発性メモリ30に退避して空きエントリを作成し、データを読み出す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリを搭載可能な記憶装置および計算機に関する。
【背景技術】
【0002】
従来では、計算機に代表される情報機器の補助記憶装置として、磁気ディスク記憶装置が多く用いられている。磁気ディスク記憶装置は、セクタと呼ばれる記憶単位ごとに、データの読み出しおよび書き込みを行っている。
【0003】
近年、前記の磁気ディスク記憶装置に代わり、半導体メモリを記憶媒体とする記憶装置が増えてきている。その中でも、電気的に消去可能かつ再書き込み可能な不揮発性メモリ(EEPROM:Electrically Erasable Programmable Read Only Memory)の一種であるフラッシュメモリを用いた記憶装置が主流となってきている。
【0004】
このフラッシュメモリは、磁気ディスクと比較して読み出し速度および書き込み速度に優れる代わりに、4個の使用上の制限が存在する。第1の制限は、データの読み出しおよび書き込み単位(一般にページと呼ばれる)と消去単位(一般にブロックと呼ばれ、複数のページから構成される)が決まっており、データの消去単位は、データの読み出しおよび書き込み単位よりもサイズが大きいことである。第2の制限は、データを上書きする際、1度データを消去した後に書き込みを行わなければならないことである。第3の制限は、ブロック内のあるページにデータを書き込む場合、連続したページ番号順に書き込まなければならないことである。第4の制限は、ブロックごとに消去回数の上限が決まっていることである。
【0005】
特許文献1には、このフラッシュメモリを用いた記憶装置の発明が記載されている。特許文献1では、ユーザの要求に柔軟なメモリシステムを搭載した記憶装置を実現するために、「本発明の半導体記憶装置は、NANDフラッシュと、ユーザデータが保持され、外部からアクセス可能なユーザ領域と、NANDフラッシュのシステム情報が保持され、ユーザ領域と互いに排他的な領域であるシステム領域と、ユーザ領域およびシステム領域を備えたDRAMと、NANDフラッシュにアクセスするためのNAND−CTLと、DRAMにアクセスするためのDRAM−CTLと、NAND−CTLがシステム領域にアクセスするためにNAND−CTLとDRAM−CTLとの間に設けられた内部バスと、NAND−CTL、DRAM−CTL、および内部バスを備えたメモリコントローラを有する。」と記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2011−070470号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1に記載の発明では、ホストCPUから与えられた論理アドレスとフラッシュメモリの物理アドレスを対応させる論理/物理アドレス変換テーブルをフラッシュメモリの冗長領域に格納し、その一部をDRAM上のシステム領域に保持している。しかし、特許文献1に記載の発明は、データを読み書きする際、データに対応する論理/物理アドレス変換テーブルがDRAM上のシステム領域に保持されていないならば、フラッシュメモリとDRAMの間で論理/物理アドレス変換テーブルの読み出しおよび書き込みを行う必要がある。そのため、特許文献1に記載の発明は、データのみを読み書きする場合に比べて処理速度が低下し、フラッシュメモリの消去回数が損なわれる虞がある。
そこで、本発明は、キャッシュメモリのデータ退避処理に伴う、論理/物理アドレス変換テーブルの書込回数を削減することを課題とする。
【課題を解決するための手段】
【0008】
前記課題を解決するために、以下のように構成した。
すなわち、本発明の請求項1に記載の発明では、所定の書き込み単位であるページおよび前記所定の書き込み単位よりも大きいデータ消去単位であるブロックによりデータの読み書きが行えるとともに、前記ページのサイズを単位とした分割データおよび当該分割データの格納場所を管理する複数のエントリを有する論理/物理アドレス変換テーブルを備える不揮発性メモリと、データの読み出しおよびデータの書き込みが行えるとともに、前記論理/物理アドレス変換テーブルの一部を一時的に記録する論理/物理アドレス変換テーブルキャッシュ、および、前記分割データを一時的に記録するデータキャッシュを有するキャッシュメモリと、前記不揮発性メモリおよび前記キャッシュメモリそれぞれに対する読出処理および書込処理を行うメモリコントローラとを有する記憶装置であって、前記メモリコントローラは、外部からデータの読み出し要求を受け付け、前記データキャッシュ上に前記読み出し要求データに対応するエントリが無く、かつ、前記データキャッシュ上に空きエントリが無かったならば、前記データキャッシュ上の分割データのうち、対応する前記論理/物理アドレス変換テーブルのエントリが前記論理/物理アドレス変換テーブルキャッシュ上に有るものを優先的に前記不揮発性メモリに退避して前記データキャッシュに空きエントリを作成し、当該空きエントリに当該読み出し要求データを読み出す処理部を備える、ことを特徴とする記憶装置とした。
その他の手段については、発明を実施するための形態のなかで説明する。
【発明の効果】
【0009】
本発明によれば、キャッシュメモリのデータ退避処理に伴う、論理/物理アドレス変換テーブルの書込回数を削減することができる。
【図面の簡単な説明】
【0010】
【図1】第1の実施形態に於ける計算機を示す概略の構成図である。
【図2】第1の実施形態に於ける不揮発性メモリを示す概略の構成図である。
【図3】第1の実施形態に於けるデータキャッシュ管理情報を示す概略の構成図である。
【図4】第1の実施形態に於ける論理/物理アドレス変換テーブルを示す概略の構成図である。
【図5】第1の実施形態に於けるテーブルキャッシュ管理情報を示す概略の構成図である。
【図6】第1の実施形態に於ける分割変換テーブル管理情報を示す概略の構成図である。
【図7】第1の実施形態に於けるデータ読出処理を示すフローチャートである。
【図8】第1の実施形態に於ける不揮発性メモリへのデータ退避処理を示すフローチャートである。
【図9】第1の実施形態に於ける退避対象データの選択処理を示すフローチャートである。
【図10】第1の実施形態に於ける不揮発性メモリからのデータ読出処理を示すフローチャートである。
【図11】第1の実施形態に於ける分割変換テーブルの選択/退避処理を示すフローチャートである。
【図12】第1の実施形態に於ける論理/物理アドレス変換テーブルのエントリ更新処理を示すフローチャートである。
【図13】第1の実施形態に於けるデータ書込処理を示すフローチャートである。
【図14】第1の実施形態に於ける電源OFF時の処理を示すフローチャートである。
【図15】第1の実施形態に於けるデータキャッシュ管理情報とテーブルキャッシュ管理情報の例を示す図である。
【図16】第1の実施形態に於ける分割変換テーブルの例を示す図である。
【図17】第2の実施形態に於ける計算機を示す概略の構成図である。
【図18】第2の実施形態に於ける退避対象データの選択処理を示すフローチャートである。
【図19】第3の実施形態に於けるデータキャッシュ管理情報を示す概略の構成図である。
【図20】第3の実施形態に於けるテーブルキャッシュ管理情報を示す概略の構成図である。
【図21】第3の実施形態に於ける不揮発性メモリへのデータ退避処理を示すフローチャートである。
【図22】第3の実施形態に於ける分割変換テーブルの選択/退避処理を示すフローチャートである。
【図23】第3の実施形態に於ける電源OFF時の処理を示すフローチャートである。
【発明を実施するための形態】
【0011】
以降、本発明を実施するための形態を、図を参照して詳細に説明する。
【0012】
(第1の実施形態の構成)
図1は、第1の実施形態に於ける計算機を示す概略の構成図である。
計算機100は、記憶装置10と、命令処理装置40と、主記憶メモリ50と、入出力制御装置60と、ネットワーク制御装置70と、表示装置80と、データバス90とを備えている。記憶装置10と、命令処理装置40と、主記憶メモリ50と、入出力制御装置60と、ネットワーク制御装置70と、表示装置80とは、相互にデータバス90を介して接続されている。
【0013】
命令処理装置40は、記憶装置10または/および主記憶メモリ50に格納されている命令に基いてデータを処理し、入出力制御装置60と、ネットワーク制御装置70と、表示装置80とを制御するものである。
記憶装置10と主記憶メモリ50は、命令処理装置40からの処理に従い、データの書き込みと、書き込んだデータの読み出しとを行うものである。
【0014】
入出力制御装置60は、命令処理装置40がデータバス90を介して外部機器(不図示)とのデータの入出力を制御する装置である。入出力制御装置60を介してデータを入出力する外部機器は、例えば、キーボード、マウス、外付けの記憶装置10などである。
ネットワーク制御装置70は、命令処理装置40がデータバス90を介してネットワーク(不図示)とのデータの入出力を制御する装置である。
表示装置80は、命令処理装置40の制御によってデータの表示を行う装置である。
【0015】
記憶装置10は、I/F(インターフェース)制御部11と、メモリコントローラ12と、キャッシュメモリ20と、1つ以上の不揮発性メモリ30とを有している。
I/F制御部11は、命令処理装置40とメモリコントローラ12との間に於けるデータの入出力制御を行う。
【0016】
メモリコントローラ12は、キャッシュメモリ20と、不揮発性メモリ30とを制御するものである。メモリコントローラ12は、データキャッシュ制御部13と不揮発性メモリ制御部15とを有している。
【0017】
データキャッシュ制御部13は、命令処理装置40からの命令に従い、データキャッシュ管理情報14を用いて、データキャッシュ21のデータ入出力を制御する。データキャッシュ制御部13は更に、不揮発性メモリ制御部15を制御して、データキャッシュ21と不揮発性メモリ30の間でデータの読み書きを行い、データキャッシュ21から不揮発性メモリ30へ退避するデータを選択する。
【0018】
データキャッシュ管理情報14は、データキャッシュ制御部13がデータキャッシュ21のデータ入出力制御を行う際に、データキャッシュ21内の空き領域(空きエントリ)や格納されているデータの論理アドレスなどの情報を提供する。第1の実施形態のデータキャッシュ管理情報14は、データキャッシュ制御部13の内部に保存されている。しかし、これに限られず、データキャッシュ管理情報14は、キャッシュメモリ20内部に保存されていてもよい。
データキャッシュ管理情報14は、後記する図3にて詳細に説明する。
【0019】
不揮発性メモリ制御部15は、データキャッシュ制御部13からの指示によって、不揮発性メモリ30内のデータの読み出しおよび書き込みを行う。また、不揮発性メモリ制御部15は、前記読出処理と前記書込処理に付随して、キャッシュメモリ20内の論理/物理アドレス変換テーブルキャッシュ22の更新処理、または/および、不揮発性メモリ30とキャッシュメモリ20の間で、論理/物理アドレス変換テーブル32の一部を読み書きする処理を行う。
【0020】
不揮発性メモリ30は、データ31、および、論理/物理アドレス変換テーブル32を格納している。第1の実施形態の不揮発性メモリ30は、所定の書き込み単位と、書き込み単位より大きい消去単位とを有し、データを書き換える場合には、書き込みの前に消去動作を必要とする。不揮発性メモリ30は、後記する図2にて詳細に説明する。
データ31は、この不揮発性メモリ30が記憶するデータ本体である。
論理/物理アドレス変換テーブル32は、データおよび各データの格納場所を管理する複数のエントリを有しており、後記する図4にて詳細に説明する。
【0021】
キャッシュメモリ20には、データキャッシュ21と論理/物理アドレス変換テーブルキャッシュ22、テーブルキャッシュ管理情報23、分割変換テーブル管理情報24を格納する。データキャッシュ21は、命令処理装置40から読み出し/書き込みを指示されたデータを一時的に保持(記録)するものである。論理/物理アドレス変換テーブルキャッシュ22は、不揮発性メモリ30に保存している論理/物理アドレス変換テーブル32の一部を一時的に保持(記録)するものである。
テーブルキャッシュ管理情報23は、後記する図5にて詳細に説明する。
分割変換テーブル管理情報24は、後記する図6にて詳細に説明する。
【0022】
このキャッシュメモリ20は、MRAM(Magnetic RAM)のような不揮発性のメモリであっても、SRAM(Static RAM)やDRAM(Dynamic RAM)のような揮発性メモリであってもよい。ただし、不揮発性のメモリを用いる場合には、データ書き換えの際に消去動作を必要としない不揮発性のメモリである必要がある。また、このキャッシュメモリ20はメモリコントローラ12の内部にあってもよい。
【0023】
図2は、第1の実施形態に於ける不揮発性メモリを示す概略の構成図である。
不揮発性メモリ30(図1)は1つ以上の消去単位から構成され、この消去単位をブロック30Bと呼ぶ。このブロック30Bは1つ以上の書き込み単位から構成され、これをページ30Pと呼ぶ。このページ30Pをさらに細かくしたものをセクタ30Sと呼ぶ。記憶装置10に対するデータの読み出しおよび書き込みの最小単位は、このセクタ30Sの単位である。第1の実施形態の不揮発性メモリ30は、ブロック数がLブロック、1ブロック当たりのページ数がMページ、1ページあたりのセクタ数がNセクタである。
【0024】
不揮発性メモリ30(図1)内の論理/物理アドレス変換テーブル32(図4)およびデータ31(図1)は、ページ30Pのサイズを単位に分割して格納されることになる。以降、このページ30Pのサイズを単位に分割された論理/物理アドレス変換テーブル32(図1)を、分割変換テーブル32p(図4)と呼ぶ。この分割変換テーブル32pは、後記する図4で詳細に説明する。以降、ページ30Pのサイズを単位に分割されたデータ31を、分割データと呼ぶ。本実施形態の分割変換テーブル32p(図4)と分割データとは、それぞれページ30Pのサイズを単位に、当該サイズの整数倍に分割して格納されている。
分割データと分割変換テーブル32p(図4)とは、物理ブロック番号と物理ページ番号の組み合わせである物理アドレスに基いて、不揮発性メモリ30(図1)の読出処理と書込処理とが行われる。
【0025】
図3は、第1の実施形態に於けるデータキャッシュ管理情報を示す概略の構成図である。
データキャッシュ制御部13(図1)は、データキャッシュ21(図1)を分割データごとに分けて管理し、各分割データにデータキャッシュエントリ番号14aを割り当てている。データキャッシュ制御部13(図1)は、各データキャッシュエントリ番号14aに対し、論理ページアドレス14bと、有効セクタフラグ14cとを保持している。データキャッシュ管理情報14は、データキャッシュエントリ番号14aと、論理ページアドレス14bと、有効セクタフラグ14cとを有している。
【0026】
データキャッシュエントリ番号14aは、データキャッシュ21(図1)を分割データに分けて管理するための番号であり、本実施形態ではCd個のエントリを有している。
【0027】
論理ページアドレス14bは、命令処理装置40(図1)が指定した分割データの論理アドレスを、セクタ30S(図2)単位からページ30P(図2)単位に変換したものである。当該変換は、1ページあたりのセクタ数N(図2)から、セクタ数Nを示す下位のビット数Nを計算し、命令処理装置40(図1)が指定した論理アドレスの下位Nビットを切り捨てることで行われる。例えば、セクタ数N=16とすると、下位4ビットがセクタ数Nを示す。このとき、命令処理装置40(図1)が指定した論理アドレスの下位4ビットを切り捨てた値が、論理ページアドレス14bとなる。
【0028】
有効セクタフラグ14cは、該当するデータキャッシュエントリ番号14aに格納されている分割データをセクタ30S(図2)単位で見た場合に、どのセクタ部分が有効であるかを示す情報である。有効であるセクタは1で示される。無効であるセクタは0で示される。
データキャッシュ管理情報14は更に、分割データにアクセスされた時刻を示すアクセス時刻欄(不図示)を有している。このアクセス時刻欄により、いずれの分割データが、もっとも古くにアクセスされたかを判断可能である。
【0029】
図4は、第1の実施形態に於ける論理/物理アドレス変換テーブルを示す概略の構成図である。
論理/物理アドレス変換テーブル32は、論理ページアドレス32bに対応する分割データの格納先の物理アドレス32cdを管理するテーブルである。論理/物理アドレス変換テーブル32は、テーブル管理番号32aと、論理ページアドレス32bと、物理アドレス32cdとを有している。物理アドレス32cdは、物理ブロック番号32cと物理ページ番号32dの組み合わせによって表わされる。
【0030】
テーブル管理番号32aは、論理/物理アドレス変換テーブル32をページ30Pのサイズに分けて管理するための番号であり、本実施形態ではT個の分割変換テーブル32p−0〜32p−(T−1)を管理する番号が格納されている。
【0031】
論理ページアドレス32bは、命令処理装置40(図1)が指定した論理アドレスをデータキャッシュ管理情報14(図3)に於ける論理ページアドレス14b(図3)と同様の方法で変換したものである。論理ページアドレス32bには、当該エントリに係る分割データの論理ページのアドレスを示す情報が格納されている。
物理アドレス32cdには、当該エントリに係る分割データの物理アドレスを示す情報が格納されている。
【0032】
テーブル管理番号32aが同一のエントリ、かつ、図の右側に括弧で示した部分は、分割変換テーブル32p−0〜32p−(T−1)である。以下、それぞれの分割変換テーブル32p−0〜32p−(T−1)を区別しない場合には、単に、分割変換テーブル32pという。分割変換テーブル32pのサイズは、ページ30P(図2)のサイズと同一である。論理/物理アドレス変換テーブル32は、分割変換テーブル32pの単位で退避処理と読出処理とが行われる。
テーブル管理番号32aは、論理/物理アドレス変換テーブル32を分割変換テーブル32pごとに区切って管理するための番号である。例えば、論理/物理アドレス変換テーブル32の1行分の情報量は4バイトであり、ページ30P(図2)に格納できる情報量が4キロバイトとする。このとき、ページ30P(図2)には、論理/物理アドレス変換テーブル32の1024エントリ分の情報が格納できる。この場合には、論理ページアドレス32bが0〜1023の部分を1つの分割変換テーブル32p−0とし、この分割変換テーブル32pにテーブル管理番号32aとして0を割り振る。同様に、論理ページアドレス32bが1024〜2047の部分を1つの分割変換テーブル32p−1とし、この分割変換テーブル32pにテーブル管理番号32aとして1を割り振る。このように、不揮発性メモリ30(図1)および論理/物理アドレス変換テーブルキャッシュ22(図1)に於ける論理/物理アドレス変換テーブル32の管理は、ページ30P(図2)単位に分割した分割変換テーブル32pと、各分割変換テーブル32pに割り振ったテーブル管理番号32aによって行う。
【0033】
図4に示す論理/物理アドレス変換テーブル32では、論理ページアドレス32bが昇順で並んでいる。しかし実際に論理/物理アドレス変換テーブル32は、分割変換テーブル32pごとに保存されるため、このようなきれいな並びとは限らない。同様に、論理/物理アドレス変換テーブルキャッシュ22(図1)は、論理/物理アドレス変換テーブル32と論理/物理アドレス変換テーブルキャッシュ22(図1)との間でテーブル情報の入れ替えが発生する。そのため、論理/物理アドレス変換テーブルキャッシュ22(図1)の論理ページアドレス32bは、このようなきれいな並びとは限らない。
【0034】
図5は、第1の実施形態に於けるテーブルキャッシュ管理情報を示す概略の構成図である。
テーブルキャッシュ管理情報23は、テーブルキャッシュエントリ番号23aと、有効フラグ23bと、テーブル管理番号23cとを備えている。
テーブルキャッシュエントリ番号23aには、テーブルキャッシュ管理情報23の各エントリを識別するエントリ番号が格納されている。テーブルキャッシュ管理情報23のエントリ数はCt個である。テーブルキャッシュエントリ番号23aは、後記するテーブルキャッシュエントリ番号24dと同一の意味を有する情報が格納されている。
有効フラグ23bには、当該エントリに対応する分割変換テーブル32p(図4)が有効であるか否かを示す情報が格納されている。この値が1のとき、当該エントリに対応する分割変換テーブル32p(図4)は有効である。この値が0のとき、当該エントリに対応する分割変換テーブル32p(図4)は無効(空き)である。
テーブル管理番号23cは、当該エントリに対応する分割変換テーブル32p(図4)に割り振られたテーブル管理番号32aと同一の情報が格納されている。
テーブルキャッシュ管理情報23は更に、分割変換テーブル32p(図4)にアクセスされた時刻を示すアクセス時刻欄(不図示)を有している。このアクセス時刻欄を参照することにより、もっとも古くにアクセスされた分割変換テーブル32p(図4)を判断可能である。
【0035】
図6は、第1の実施形態に於ける分割変換テーブル管理情報を示す概略の構成図である。
分割変換テーブル管理情報24は、各分割変換テーブル32p(図4)をテーブル管理番号24aによって管理している。分割変換テーブル管理情報24は、各テーブル管理番号24aに対し、保存フラグ24b、キャッシュ有無フラグ24c、テーブルキャッシュエントリ番号24d、物理アドレス24efの情報を保持している。更に物理アドレス24efは、物理ブロック番号24eの情報と物理ページ番号24fの情報とを有している。本実施形態のテーブル管理番号24aは、0から(T−1)までの値を取り得ることが示されている。
【0036】
保存フラグ24bは、対象の分割変換テーブル32p(図4)が不揮発性メモリ30(図1)内に保存されているか否かを示す情報である。対象の分割変換テーブル32p(図4)が既に不揮発性メモリ30(図1)内に保存されている場合には1が格納され、保存されていない場合には0が格納される。
【0037】
キャッシュ有無フラグ24cは、対象の分割変換テーブル32p(図4)が、論理/物理アドレス変換テーブルキャッシュ22(図1)に保持されているか否かを示す情報である。キャッシュ有無フラグ24cは、当該テーブル管理番号24aが示す分割変換テーブル32p(図1)が論理/物理アドレス変換テーブルキャッシュ22(図1)に保持されている場合は1が格納され、論理/物理アドレス変換テーブルキャッシュ22(図1)に保持されていない場合には0が格納される。このキャッシュ有無フラグ24cにより、論理/物理アドレス変換テーブルキャッシュ22(図1)内部の情報を検索しなくても、対象の分割変換テーブル32p(図4)が論理/物理アドレス変換テーブルキャッシュ22(図1)に存在するか否かを、高速に判断することができる。
テーブルキャッシュエントリ番号24dは、対象の分割変換テーブル32p(図4)の論理/物理アドレス変換テーブルキャッシュ22(図1)上での保存先を示す情報である。テーブルキャッシュエントリ番号24dに基いて、テーブルキャッシュ管理情報23のテーブルキャッシュエントリ番号23a(図5)を検索することにより、有効フラグ23b(図5)とテーブル管理番号23c(図5)とを参照することができる。
【0038】
物理アドレス24efである物理ブロック番号24eと物理ページ番号24fとは、分割変換テーブル32p(図4)の不揮発性メモリ30(図1)上での保存先を示す情報である。
【0039】
(第1の実施形態の動作)
(データ読出処理)
図7は、第1の実施形態に於けるデータ読出処理を示すフローチャートである。
命令処理装置40(図1)から記憶装置10(図1)にデータ読み出し要求が入力されると、記憶装置10(図1)は、データ読出処理を開始する。
データ読出処理を開始すると、ステップS10に於いて、記憶装置10のメモリコントローラ12(図1)は、I/F制御部11(図1)を介して、読出セクタの論理アドレスとセクタサイズを受け付ける。
【0040】
ステップS11に於いて、記憶装置10のメモリコントローラ12(図1)は、受け付けた論理アドレスを論理ページアドレスに変換して、データキャッシュ管理情報14の論理ページアドレス14b(図3)を検索する。
【0041】
ステップS12に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14(図3)内に、変換した論理ページアドレスに該当する論理ページアドレス14b(図3)を有するエントリが有るか否かを判断する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS13の処理を行い、当該判断条件が成立すると判断したならば(Yes)、ステップS16の処理を行う。
【0042】
ステップS13に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14(図3)に基き、データキャッシュ21(図1)の中に空きエントリがあるか否かを判断する。すなわち、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14の有効セクタフラグ14c(図3)がすべて0であったならば、データキャッシュ21(図1)内の当該有効セクタフラグ14c(図3)に係るエントリが空いていると判断する。
記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立すると判断したならば(Yes)、ステップS17の処理を行い、当該判断条件が成立しないと判断したならば(No)、ステップS14の処理を行う。
【0043】
ステップS14に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)から不揮発性メモリ30(図1)へのデータ退避処理を行う。ステップS14のデータ退避処理は、後記する図8で詳細に説明する。
【0044】
ステップS15に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)のデータ退避部分を空きエントリに設定し、ステップS17の処理を行う。
【0045】
ステップS16に於いて、記憶装置10のメモリコントローラ12(図1)は、ステップS12で抽出した該当エントリの読出セクタ部分の有効セクタフラグ14c(図3)が1であるか否かを判断する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS17の処理を行い、当該判断条件が成立すると判断したならば(Yes)、該当エントリに係るデータを読出セクタとしてステップS18の処理を行う。
【0046】
ステップS17に於いて、記憶装置10のメモリコントローラ12(図1)は、不揮発性メモリ30(図1)からデータキャッシュ21(図1)への、該当エントリまたは空きエントリへのデータ読出処理を行う。ステップS17のデータ読出処理は、後記する図10で詳細に説明する。
ステップS18に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)から命令処理装置40(図1)に読出セクタを転送し、図7の処理を終了する。
以上がデータ読み出し時の処理である。
【0047】
図8は、第1の実施形態に於ける不揮発性メモリへのデータ退避処理を示すフローチャートである。
ステップS20に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データの選択処理を行う。ステップS20の退避対象データの選択処理は、後記する図9で詳細に説明する。
【0048】
ステップS21に於いて、記憶装置10のメモリコントローラ12(図1)は、選択した退避対象データに対応するデータキャッシュ管理情報14の有効セクタフラグ14c(図3)が全て1であるか否かを確認する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立すると判断したならば(Yes)、ステップS24の処理を行い、当該判断条件が成立しないと判断したならば(No)、ステップS22の処理を行う。
【0049】
ステップS22に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データに係る不揮発性メモリ30(図1)からデータキャッシュ21(図1)へのデータ読出処理を行う。この読出処理は、データキャッシュ21(図1)と不揮発性メモリ30(図1)とが整合していないデータキャッシュ管理情報14の有効セクタフラグ14c(図3)が0のセクタに、不揮発性メモリ30のデータ31(図1)に格納されている該当部分のセクタデータを読み出し、全ての有効セクタフラグ14c(図3)を1にするために行う。ステップS22の不揮発性メモリ30(図1)からデータキャッシュ21(図1)へのデータ読出処理は、後記する図10で詳細に説明する。
【0050】
ステップS23に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)上の退避対象データのデータキャッシュ管理情報14の有効セクタフラグ14c(図3)が0の部分に、データ読出処理で取得したデータを書き込む。この処理により、データキャッシュ管理情報14の有効セクタフラグ14c(図3)は全て1となる。
ステップS24に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データを、不揮発性メモリ30(図1)の空きページ30P(図2)に書き込む。
【0051】
ステップS25に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データに対応するデータキャッシュ管理情報14の有効セクタフラグ14c(図3)を全て0に設定し、退避対象データが格納されていた部分を空きエントリに設定する。
【0052】
ステップS26に於いて、記憶装置10のメモリコントローラ12(図1)は、当該退避対象データに対応する論理/物理アドレス変換テーブル32(図4)のエントリ更新処理を行う。ステップS26の論理/物理アドレス変換テーブル32(図4)のエントリ更新処理は、後記する図12で詳細に説明する。記憶装置10のメモリコントローラ12(図1)は、ステップS26の処理が終了すると、図8の処理を終了する。
【0053】
図9は、第1の実施形態に於ける退避対象データの選択処理を示すフローチャートである。
処理を開始すると、ステップS31に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)上の分割データであって、対応する論理/物理アドレス変換テーブル32(図4)のエントリが論理/物理アドレス変換テーブルキャッシュ22(図1)に在るものを全て抽出する。
すなわち、記憶装置10のメモリコントローラ12(図1)は、分割データの論理ページアドレスで論理/物理アドレス変換テーブルキャッシュ22(図1)の論理ページアドレス32b(図4)を検索して、対応するテーブル管理番号32a(図4)を取得し、取得したテーブル管理番号32aで分割変換テーブル管理情報24のテーブル管理番号24a(図6)を検索して、対応するキャッシュ有無フラグ24c(図6)が1であるか否かを判断して抽出する。
【0054】
ステップS32に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象の分割データの抽出個数を判断する。記憶装置10のメモリコントローラ12(図1)は、抽出個数が0のとき、ステップS33の処理を行い、抽出個数が1のとき、ステップS34の処理を行い、抽出個数が2以上のとき、ステップS35の処理を行う。
【0055】
ステップS33に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)上の分割データのデータキャッシュ管理情報14のアクセス時刻欄(不図示)によって、アクセスされた時間が最も古い分割データを退避対象として選択する。
ステップS34に於いて、記憶装置10のメモリコントローラ12(図1)は、抽出した分割データを退避対象に決定する。
【0056】
ステップS35に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象の分割データの候補が複数見つかった場合には、抽出した分割データのデータキャッシュ管理情報14のアクセス時刻欄(不図示)によって、アクセスされた時間が最も古い分割データを退避対象として選択する。
【0057】
すなわち、記憶装置10のメモリコントローラ12(図1)は、外部からデータの読み出し要求を受けたとき、データキャッシュ21を管理するデータキャッシュ管理情報14に読み出し要求データに該当するエントリが無く、かつ、データキャッシュ管理情報14に空きエントリが無かったならば、データキャッシュ21上のデータのうち、対応する論理/物理アドレス変換テーブル32のエントリが、論理/物理アドレス変換テーブルキャッシュ22に有るものを優先的に不揮発性メモリ30に退避して空きエントリを作成している。
【0058】
第1の実施形態の記憶装置10のメモリコントローラ12(図1)は、ステップS35に於いて、既存のLRU(Least Recently Used)アルゴリズムに基き、抽出した分割データのうち、アクセスされた時間が最も古い分割データに係るエントリを退避対象に決定している。しかし、これに限られず、記憶装置10のメモリコントローラ12(図1)は、既存の他のエントリ選択アルゴリズム、例えばFIFO(First In First Out)などによって退避対象の分割データを決定してもよい。
【0059】
図10は、第1の実施形態に於ける不揮発性メモリからのデータ読出処理を示すフローチャートである。
ステップS40に於いて、記憶装置10のメモリコントローラ12(図1)は、読出対象データの論理ページアドレスから、テーブル管理番号を算出する。
すなわち、記憶装置10のメモリコントローラ12(図1)は、読出対象データ(分割データ)の論理ページアドレスで論理/物理アドレス変換テーブルキャッシュ22(図1)の論理ページアドレス32b(図4)を検索して、対応するテーブル管理番号32a(図4)を取得する。
【0060】
ステップS41に於いて、記憶装置10のメモリコントローラ12(図1)は、テーブル管理番号32a(図4)で分割変換テーブル管理情報24のテーブル管理番号24a(図6)を検索し、対応するキャッシュ有無フラグ24c(図6)が1であるか否かを判断する。キャッシュ有無フラグ24c(図6)が1ならば、対応する分割変換テーブル32p(図4)が論理/物理アドレス変換テーブルキャッシュ22(図1)内にあることを示している。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立すると判断したならば(Yes)、ステップS46の処理を行い、当該判断条件が成立しないと判断したならば(No)、ステップS42の処理を行う。
【0061】
ステップS42に於いて、記憶装置10のメモリコントローラ12(図1)は、テーブルキャッシュ管理情報23の有効フラグ23b(図5)が「0」のエントリが有るか否かを判断することにより、論理/物理アドレス変換テーブルキャッシュ22(図1)に空きエントリが有るか否かを判断する。
すなわち、記憶装置10のメモリコントローラ12(図1)は、読出対象データに対応するテーブルキャッシュ管理情報23の有効フラグ23b(図5)に基き、無効となっているテーブルキャッシュエントリ番号23a(図5)があるか否かを判断する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立すると判断したならば(Yes)、ステップS45の処理を行い、当該判断条件が成立しないと判断したならば(No)、ステップS43の処理を行う。
ステップS43に於いて、記憶装置10のメモリコントローラ12(図1)は、分割変換テーブル32p(図4)の選択/退避処理を行う。ステップS43の分割変換テーブル32p(図4)の選択/退避処理は、後記する図11で詳細に説明する。
【0062】
ステップS44に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブルキャッシュ22(図1)上に於ける退避した分割変換テーブル32p(図4)の部分を、論理/物理アドレス変換テーブル32(図4)の空きエントリに設定する。
すなわち、記憶装置10のメモリコントローラ12(図1)は、退避部分に対応する分割変換テーブル管理情報24の保存フラグ24b(図6)を1に書き換え、キャッシュ有無フラグ24c(図6)を0に書き換え、退避部分に対応する分割変換テーブル管理情報24のテーブルキャッシュエントリ番号24d(図6)で、テーブルキャッシュ管理情報23のテーブルキャッシュエントリ番号23a(図5)を検索し、対応する有効フラグ23b(図5)を0に書き換える。ステップS44の処理により、分割変換テーブル32p(図4)を格納していたテーブルキャッシュ管理情報23のテーブルキャッシュエントリ番号23a(図5)の領域は、空きエントリに設定される。
【0063】
ステップS45に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブル32(図4)の空きエントリに、読出対象データのエントリを含む分割変換テーブル32p(図4)を、不揮発性メモリ30(図1)から読出して格納する。この空きエントリは、ステップS42で検索した空きエントリ、または、ステップS44で設定した空きエントリである。
【0064】
読出対象データのエントリを含む分割変換テーブル32p(図4)を空きエントリに格納した後、記憶装置10のメモリコントローラ12(図1)は、読出対象データを格納したエントリに対応するテーブルキャッシュ管理情報23の有効フラグ23b(図5)を1に書き換え、テーブル管理番号23c(図5)を分割変換テーブル32pのテーブル管理番号32a(図4)で更新する。また、記憶装置10のメモリコントローラ12(図1)は、読み出した分割変換テーブル32pのテーブル管理番号32a(図4)で分割変換テーブル管理情報24のテーブル管理番号24a(図6)を検索し、対応するキャッシュ有無フラグ24c(図6)を1に変更する。同様に、記憶装置10のメモリコントローラ12(図1)は、分割変換テーブル管理情報24のテーブルキャッシュエントリ番号24d(図6)を、テーブルキャッシュ管理情報23のテーブルキャッシュエントリ番号23a(図5)で更新する。
【0065】
ステップS46に於いて、記憶装置10のメモリコントローラ12(図1)は、読出対象データの論理ページアドレスで、論理/物理アドレス変換テーブルキャッシュ22(図1)内の分割変換テーブル32pの論理ページアドレス32bを検索し、対応する物理アドレス32cdを取得する。更に、記憶装置10のデータキャッシュ制御部13は、取得した物理アドレス32cdによって、不揮発性メモリ30から分割データを読み出し、データキャッシュ21に格納する。その後、図10の処理を終了する。
【0066】
ステップS46で分割データをデータキャッシュ21に格納する際、ステップS12の判断がYesであり、読出対象データの論理ページアドレスに対応するデータキャッシュ管理情報14のデータキャッシュエントリ番号14a(図3)があると判断した場合には、そのエントリ部分に分割データを格納する。ただし、格納先エントリの有効セクタフラグ14cが1の部分には新しい分割データが入っている。そのため、この部分には読出対象データを格納せず、有効セクタフラグ14cが0の領域にのみ読出対象データを格納する。
【0067】
ステップS12の判断がNoであり、読出対象データの論理ページアドレスに対応するデータキャッシュ管理情報14のデータキャッシュエントリ番号14a(図3)が存在しなかった場合には、ステップS13もしくはステップS15で設定した空きエントリに読出対象データを格納する。
【0068】
図11は、第1の実施形態に於ける分割変換テーブルの選択/退避処理を示すフローチャートである。
処理を開始すると、ステップS52に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブルキャッシュ22(図1)上の分割変換テーブル32p(図4)のうち、アクセスされた時間が最も古いものを、退避対象の分割変換テーブル32p(図4)に選択する。更に、記憶装置10のメモリコントローラ12(図1)は、退避対象である分割変換テーブル32pに係るテーブル管理番号32a(図4)で、分割変換テーブル管理情報24のテーブル管理番号24a(図6)を検索し、対応するテーブルキャッシュエントリ番号24dを取得する。しかし、これに限られず、記憶装置10のメモリコントローラ12(図1)は、他のエントリ選択アルゴリズム、例えばFIFOなどを用いて、退避対象エントリを決定してもよい。
【0069】
ステップS53に於いて、記憶装置10のメモリコントローラ12(図1)は、選択した分割変換テーブル32p(図4)を、不揮発性メモリ30(図1)に書き込み(退避し)、当該書込先アドレスを分割変換テーブル管理情報24の物理アドレス24ef(図6)に設定し、図11の処理を終了する。
【0070】
図12は、第1の実施形態に於ける論理/物理アドレス変換テーブルのエントリ更新処理を示すフローチャートである。
ステップS60に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データの論理ページアドレス32b(図4)から対応するテーブル管理番号32a(図4)を取得し、取得したテーブル管理番号32aに対応する分割変換テーブル管理情報24のテーブル管理番号24a(図6)を検索する。
【0071】
ステップS61に於いて、記憶装置10のメモリコントローラ12(図1)は、検索したテーブル管理番号24a(図6)に対応するキャッシュ有無フラグ24c(図6)が1であるか否かを判定する。すなわち、記憶装置10のメモリコントローラ12(図1)は、退避対象データのエントリを含む分割変換テーブル32p(図4)が、論理/物理アドレス変換テーブルキャッシュ22(図1)に有るか否かを判定する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS62の処理を行い、当該判断条件が成立すると判断したならば(Yes)、ステップS68の処理を行う。
【0072】
ステップS62に於いて、記憶装置10のメモリコントローラ12(図1)は、テーブルキャッシュ管理情報23の有効フラグ23b(図5)が0のエントリが有るか否かを判断する。すなわち、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブルキャッシュ22(図1)に空きエントリが有るか否かを判断する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS63の処理を行い、当該判断条件が成立すると判断したならば(Yes)、ステップS65の処理を行う。
ステップS63に於いて、記憶装置10のメモリコントローラ12(図1)は、分割変換テーブル32p(図4)の選択/退避処理(図11)を行う。
【0073】
ステップS64に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブルキャッシュ22(図1)上に於ける退避した分割変換テーブル32p(図4)の部分を、論理/物理アドレス変換テーブル32(図4)の空きエントリに設定する。
【0074】
ステップS65に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データに対応する分割変換テーブル32p(図4)に係る保存フラグ24b(図6)が1であるか否かを判断する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS66の処理を行い、当該判断条件が成立すると判断したならば(Yes)、ステップS67の処理を行う。
【0075】
ステップS66に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブルキャッシュ22(図1)の空きエントリに、新しい分割変換テーブル32p(図4)を作成する。
すなわち、記憶装置10のメモリコントローラ12(図1)は、退避した分割データの論理ページアドレスで、分割変換テーブル32p(図4)の論理ページアドレス32bを検索し、対応する物理アドレス32cdに、退避した分割データの書込先アドレスを設定する。新しい分割変換テーブル32p(図4)の作成後、記憶装置10のメモリコントローラ12(図1)は、ステップS62またはステップS64で設定した空きエントリのテーブルキャッシュエントリ番号23a(図5)を検索し、対応する有効フラグ23b(図5)を1に書き換えると共にテーブル管理番号23c(図5)を更新する。記憶装置10のメモリコントローラ12(図1)は、作成した分割変換テーブル32pに対応するテーブル管理番号32aで、分割変換テーブル管理情報24のテーブル管理番号24a(図6)を検索し、対応するキャッシュ有無フラグ24c(図6)を1に変更し、テーブルキャッシュエントリ番号24d(図6)を、テーブルキャッシュエントリ番号23a(図5)の値に設定する。ステップS66の処理を終了すると、記憶装置10のメモリコントローラ12(図1)は、図12の処理を終了する。
【0076】
ステップS67に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブル32(図4)の空きエントリに、不揮発性メモリ30(図1)から退避対象データのエントリを含む分割変換テーブル32p(図4)を読み出す。
ステップS68に於いて、記憶装置10のメモリコントローラ12(図1)は、退避対象データのエントリを更新し、図12の処理を終了する。
【0077】
(データ書込処理)
図13は、第1の実施形態に於けるデータ書込処理を示すフローチャートである。
命令処理装置40(図1)より記憶装置10(図1)にデータ書き込み要求が入力されると、記憶装置10(図1)は、データ書込処理を開始する。
データ書込処理を開始すると、ステップS70に於いて、記憶装置10のメモリコントローラ12(図1)は、命令処理装置40(図1)よりI/F制御部11(図1)を介して、書込セクタの論理アドレスとセクタサイズと、書込要求データとを受け付ける。
【0078】
ステップS71に於いて、記憶装置10のメモリコントローラ12(図1)は、書込セクタの論理アドレスを論理ページアドレスに変換して、データキャッシュ管理情報14の論理ページアドレス14b(図3)を検索する。
【0079】
ステップS72に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14(図3)内に、書込セクタの論理ページアドレスに該当する論理ページアドレス14b(図3)を有するエントリが有るか否かを判断する。記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS73の処理を行い、当該判断条件が成立すると判断したならば(Yes)、ステップS76の処理を行う。
【0080】
ステップS73に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14(図3)に基き、データキャッシュ21(図1)に空きエントリが有るか否かを判断する。すなわち、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14の有効セクタフラグ14c(図3)が全て0であったならば、データキャッシュ21(図1)内の当該有効セクタフラグ14c(図3)に係るエントリが空いていると判断する。
記憶装置10のメモリコントローラ12(図1)は、当該判断条件が成立しないと判断したならば(No)、ステップS74の処理を行い、当該判断条件が成立すると判断したならば(Yes)、ステップS76の処理を行う。
【0081】
ステップS74に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)から不揮発性メモリ30(図1)へのデータ退避処理を行う。ステップS74のデータ退避処理(図8)は、ステップS14のデータ退避処理と同様である。
ステップS75に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)のデータ退避部分を空きエントリに設定し、ステップS76の処理を行う。
【0082】
ステップS76に於いて、記憶装置10のメモリコントローラ12(図1)は、命令処理装置40(図1)から受け付けた書込要求データを、データキャッシュ21(図1)の該当エントリまたは空きエントリに格納する。書込要求データの格納後、記憶装置10のメモリコントローラ12(図1)は、書込要求データに対応する有効セクタフラグ14c(図3)のうち、書き込んだ領域に対応する部分を1に変更する。例えば、記憶装置10のメモリコントローラ12(図1)は、1ページ分のデータを格納したならば、有効セクタフラグ14c(図3)をすべて1に変更し、1セクタのみデータを格納したならば、有効セクタフラグ14c(図3)の格納したセクタ部分の1ビットのみを1に変更する。
【0083】
ステップS77に於いて、記憶装置10のメモリコントローラ12(図1)は、I/F制御部11(図1)を介して、命令処理装置40(図1)に、データ書き込み完了の応答を報告し、図13の処理を終了する。
【0084】
(電源OFF時の処理)
図14は、第1の実施形態に於ける電源OFF時の処理を示すフローチャートである。
例えば記憶装置10(図1)の電源スイッチをOFFすることによって、電源OFF時の処理が開始する。当該処理は、電源OFFによってキャッシュメモリ20(図1)上のデータが失われるため、不揮発性メモリ30(図1)内にデータを退避して保護することを目的としている。
【0085】
電源OFF時の処理を開始すると、ステップS80に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21上の有効な分割データのうち、対応するデータ更新フラグ14dが1であるものを、すべて不揮発性メモリ30に書き込む(退避する)。
すなわち、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14の有効セクタフラグ14c(図3)がすべて0ではないエントリに対応する分割データを、不揮発性メモリ30(図1)に書き込む(退避する)。
【0086】
ステップS81に於いて、記憶装置10のメモリコントローラ12(図1)は、論理/物理アドレス変換テーブルキャッシュ22(図1)に格納されているすべての分割変換テーブル32p(図4)を、不揮発性メモリ30(図1)に書き込む(退避する)。ステップS81の処理が終了すると、記憶装置10のデータキャッシュ制御部13は、図14の処理を終了する。
【0087】
(具体例)
次に、具体例を用いて、第1の実施形態の動作を説明する。この具体例では、データキャッシュ21(図1)のエントリ数を3、論理/物理アドレス変換テーブルキャッシュ22(図1)のエントリ数を2としている。更に、不揮発性メモリ30(図1)の1ページあたりのセクタ数を8としている。
【0088】
図15は、第1の実施形態に於けるデータキャッシュ管理情報とテーブルキャッシュ管理情報の例を示す図である。
図15(a−1)は、具体例の初期状態に於けるデータキャッシュ管理情報14を示している。図15(a−2)は、具体例の初期状態に於けるテーブルキャッシュ管理情報23を示している。
データキャッシュ21(図1)には、論理ページアドレス14bが「D0」,「A1」,「C0」である分割データ(エントリ)が、それぞれ格納されている。
【0089】
論理/物理アドレス変換テーブルキャッシュ22(図1)には、テーブル管理番号23cが「A」の分割変換テーブル32pと、テーブル管理番号23cが「B」の分割変換テーブル32pとが格納されている。
【0090】
初期状態であるステップS70(図13)に於いて、書き込み要求と共に、命令処理装置40(図1)から論理ページアドレスが「B1」であるデータが8セクタ分入力された場合を例とする。データキャッシュ管理情報14には、論理ページアドレス14bが「B1」であるエントリが無く、かつ、空きエントリも無い。
【0091】
ステップS72(図13)に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14には、論理ページアドレス14bが「B1」であるエントリが無いことによりNoと判断し、ステップS73(図13)の処理を行う。
【0092】
ステップS73(図13)に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ管理情報14には、空きエントリが無いことによりNoと判断し、ステップS74(図13)の処理を行う。
【0093】
ステップS74(図13)に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)から不揮発性メモリ30(図1)へのデータ退避処理(図8)を呼び出し、データキャッシュエントリ番号14a=1のエントリに対応するデータキャッシュ21(図1)の分割データの部分を、不揮発性メモリ30(図1)の空きページに書き込む(退避する)。
ステップS75(図13)に於いて、記憶装置10のメモリコントローラ12(図1)は、データキャッシュ21(図1)の退避部分を空きエントリに設定する。
【0094】
図15(b−1)は、ステップS75(図13)に於けるデータキャッシュ管理情報14を示している。図15(b−2)は、ステップS75(図13)に於けるテーブルキャッシュ管理情報23を示している。
【0095】
不揮発性メモリ30へのデータ退避処理(図8)によって、データキャッシ管理情報14には、データキャッシュエントリ番号14a=1のエントリが空いている。ここに、命令処理装置40(図1)から送られた書込データを格納する。
【0096】
図15(c−1)は、ステップS77(図13)の処理後のデータキャッシュ管理情報14を示している。図15(c−2)は、ステップS77(図13)の処理後のテーブルキャッシュ管理情報23を示している。
【0097】
図16は、第1の実施形態に於ける分割変換テーブルの例を示す図である。
図16(a)は、具体例の初期状態に於けるテーブル管理番号32aが「A」の分割変換テーブル32pの内容を示したものである。
ここで、テーブル管理番号Aの分割変換テーブル32pは、論理ページアドレス「A0」から論理ページアドレス「A1023」までの論理/物理アドレス変換テーブル32の情報を有している。
【0098】
図16(b)は、具体例の更新後に於けるテーブル管理番号32aが「A」の分割変換テーブル32pの内容を示したものである。論理ページアドレス32bが「A1」であるデータの物理アドレス32cdが更新されている。
【0099】
既存のエントリ選択アルゴリズムを用い、論理ページアドレスD0のエントリを退避対象エントリにした場合を考える。書込対象データの論理ページアドレスに対応する分割変換テーブル32pは、論理/物理アドレス変換テーブルキャッシュ22(図1)には存在せず、論理/物理アドレス変換テーブルキャッシュ22(図1)に空きエントリは存在しない。そのため、不揮発性メモリ30(図1)への分割変換テーブル32p(図16)の書き込み(退避)が発生する。その結果、不揮発性メモリ30(図1)の消去回数を消耗することになる。
第1の実施形態の記憶装置10(図1)によれば、このような不揮発性メモリ30(図1)の消去回数の消耗を防止することができる。
【0100】
(第1の実施形態の効果)
以上説明した第1の実施形態では、次の(A)のような効果がある。
【0101】
(A) 記憶装置10は、データキャッシュ21上の分割データを退避する際、退避する当該分割データに係る論理/物理アドレス変換テーブル32のエントリが、論理/物理アドレス変換テーブルキャッシュ22に格納されているものを優先的に退避している。これにより、論理/物理アドレス変換テーブルキャッシュ22の退避処理(書込)と読出処理の回数を減らし、外部装置によるデータの読み込みとデータの書き込みを高速化し、不揮発性メモリ30の消去回数の消耗を防止して寿命を延ばすことができる。
【0102】
(第2の実施形態の構成)
図17は、第2の実施形態に於ける計算機を示す概略の構成図である。第1の実施形態の計算機100(図1)と同一の要素には同一の符号を付与している。
【0103】
第2の実施形態の記憶装置10Aは、第1の実施形態の記憶装置10のメモリコントローラ12(図1)とは異なるメモリコントローラ12Aを有している他は、第1の実施形態の記憶装置10(図1)と同様に構成されている。
【0104】
第2の実施形態のメモリコントローラ12Aは、第1の実施形態のメモリコントローラ12(図1)と同様の構成に加えて更に、選択方式設定レジスタ16を有している。
選択方式設定レジスタ16は、不揮発性メモリ30への退避対象データを選択する際に、その選択アルゴリズムを切り替えるものである。
【0105】
選択方式設定レジスタ16の値は、製造時にのみ設定が可能なようにしてもよく、任意に外部から変更できるようにしてもよい。外部からの変更方法としては、例えば命令処理装置40から変更指示を与えてもよく、記憶装置10に搭載しているスイッチによって切り替えるようにしてもよい。
【0106】
第2の実施形態に於いて選択方式設定レジスタ16は、メモリコントローラ12の内部に設けられたレジスタである。しかし、これに限られず、選択方式設定レジスタ16は、メモリコントローラ12の外部であってもよく、更に、スイッチやピンなどであってもよい。
【0107】
(第2の実施形態の動作)
第2の実施形態のデータ読出処理は、第1の実施形態のデータ読出処理(図7)と同様である。
第2の実施形態の不揮発性メモリ30(図17)へのデータ退避処理は、第1の実施形態の不揮発性メモリ30(図1)へのデータ退避処理(図8)と同様である。
【0108】
図18は、第2の実施形態に於ける退避対象データの選択処理を示すフローチャートである。第1の実施形態の退避対象データの選択処理(図9)と同一の要素には同一の符号を付与している。
【0109】
退避対象データの選択処理を開始すると、記憶装置10Aのメモリコントローラ12A(図17)は、選択方式設定レジスタ16(図17)が1であるか否かを判断する。記憶装置10Aのメモリコントローラ12A(図17)は、当該判断条件が成立すると判断したならば(Yes)、ステップS33の処理を行い、当該判断条件が成立しないと判断したならば(No)、ステップS31の処理を行う。
ステップS31〜S35の処理は、第1の実施形態の退避対象データの選択処理(図9)と同一である。
この第2の実施形態に於ける退避対象データの選択処理により、記憶装置10Aのメモリコントローラ12A(図17)は、選択方式設定レジスタ16(図17)の設定により、データキャッシュ21(図17)上の分割データを、第1の実施形態のアルゴリズムを用いるか否かを選択し、従来のLRUアルゴリズムなどを用いて退避させることが可能となる。

【0110】
第2の実施形態の不揮発性メモリ30(図17)からのデータ読出処理は、第1の実施形態の不揮発性メモリ30(図1)からのデータ読出処理(図10)と同様である。
第2の実施形態の分割変換テーブル32p(図4)の選択/退避処理は、第1の実施形態の分割変換テーブル32p(図4)の選択/退避処理(図11)と同様である。
第2の実施形態の論理/物理アドレス変換テーブル32(図4)のエントリ更新処理は、第1の実施形態の論理/物理アドレス変換テーブル32(図4)のエントリ更新処理(図12)と同様である。
第2の実施形態のデータ書込処理は、第1の実施形態のデータ書込処理(図13)と同様である。
第2の実施形態の電源OFF時の処理は、第1の実施形態の電源OFF時の処理(図14)と同様である。
【0111】
(第2の実施形態の効果)
以上説明した第2の実施形態では、次の(B)のような効果がある。
【0112】
(B) 記憶装置10Aのメモリコントローラ12A(図17)は、選択方式設定レジスタ16(図17)の設定値に基いて、第1の実施形態のアルゴリズムを用いるか否かを選択することができる。
【0113】
(第3の実施形態の構成)
第3の実施形態の記憶装置10B(不図示)は、第1の実施形態の記憶装置10のデータキャッシュ管理情報14(図1)とは異なるデータキャッシュ管理情報14B(図19)を有し、第1の実施形態の記憶装置10のテーブルキャッシュ管理情報23(図1)とは異なるテーブルキャッシュ管理情報23B(図20)を有している他は、第1の実施形態の記憶装置10(図1)と同様に構成されている。
【0114】
図19は、第3の実施形態に於けるデータキャッシュ管理情報を示す概略の構成図である。
第3の実施形態のデータキャッシュ管理情報14Bは、第1の実施形態のデータキャッシュ管理情報14(図3)と同様の構成に加えて更に、データ更新フラグ14dを有している。
【0115】
データ更新フラグ14dは、データキャッシュ21(図1)の対応する分割データが更新され、不揮発性メモリ30の格納内容と相違したか否かを示す情報である。データ更新フラグ14dは、対応する分割データが更新されているならば1が格納され、対応する分割データが更新されていないならば0が格納されている。
図20は、第3の実施形態に於けるテーブルキャッシュ管理情報を示す概略の構成図である。
【0116】
第3の実施形態のテーブルキャッシュ管理情報23Bは、第1の実施形態のテーブルキャッシュ管理情報23(図5)と同様の構成に加えて更に、テーブル更新フラグ23dを有している。
【0117】
テーブル更新フラグ23dは、当該テーブル更新フラグ23dに対応する分割変換テーブル32p(図4)が更新され、不揮発性メモリ30の格納内容と相違したか否かを示す情報である。テーブル更新フラグ23dは、対応する分割変換テーブル32p(図4)が更新されているならば1が格納され、対応する分割変換テーブル32p(図4)が更新されていないならば0が格納されている。
【0118】
(第3の実施形態の動作)
第3の実施形態のデータ読出処理は、第1の実施形態のデータ読出処理(図7)と同様である。
【0119】
図21は、第3の実施形態に於ける不揮発性メモリへのデータ退避処理を示すフローチャートである。第1の実施形態の不揮発性メモリ30へのデータ退避処理(図8)と同一の要素には同一の符号を付与している。
【0120】
不揮発性メモリ30へのデータ退避処理を開始すると、ステップS90に於いて、記憶装置10Bのメモリコントローラ12は、データキャッシュ21上の分割データのうち、データ更新フラグ14d(図19)が0であるものを退避対象として、全て抽出する。
【0121】
ステップS91に於いて、記憶装置10Bのメモリコントローラ12は、退避対象の分割データの抽出個数を判断する。記憶装置10Bのメモリコントローラ12は、抽出個数が0のとき、ステップS20の処理を行い、抽出個数が1のとき、ステップS92の処理を行い、抽出個数が2以上のとき、ステップS93の処理を行う。
【0122】
ステップS20〜S26の処理は、図8に示すステップS20〜S26の処理と同様である。ステップS26の処理が終了すると、記憶装置10Bのメモリコントローラ12は、図21の処理を終了する。
ステップS92に於いて、記憶装置10Bのメモリコントローラ12は、抽出された分割データを選択し、ステップS94の処理を行う。
ステップS93に於いて、記憶装置10Bのメモリコントローラ12は、抽出された分割データのうち、アクセスされた時間が最も古いものを選択する。
【0123】
ステップS94に於いて、記憶装置10Bのメモリコントローラ12は、選択された分割データの有効セクタフラグ14c(図19)を全て0に設定し、図21の処理を終了する。
【0124】
図22は、第3の実施形態に於ける分割変換テーブルの選択/退避処理を示すフローチャートである。第1の実施形態の分割変換テーブル32pの選択/退避処理(図9)と同一の要素には同一の符号を付与している。
【0125】
分割変換テーブル32pの選択/退避処理を開始すると、ステップS50に於いて、記憶装置10のデータキャッシュ制御部13は、論理/物理アドレス変換テーブルキャッシュ22上の分割変換テーブル32pのうち、対応するテーブル更新フラグ23d(図20)が0であるものを全て抽出する。
【0126】
ステップS51に於いて、記憶装置10のデータキャッシュ制御部13は、分割変換テーブル32pの抽出個数を判断する。記憶装置10のデータキャッシュ制御部13は、抽出個数が0のとき、ステップS52の処理を行い、抽出個数が1のとき、ステップS53の処理を行い、抽出個数が2以上のとき、ステップS53の処理を行う。
【0127】
ステップS52〜S53の処理は、図9に示すステップS52〜S53の処理と同様である。ステップS53の処理が終了すると、記憶装置10のデータキャッシュ制御部13は、図22の処理を終了する。
【0128】
ステップS54に於いて、記憶装置10のデータキャッシュ制御部13は、抽出された分割変換テーブル32pを、退避対象の分割変換テーブル32pとして選択し、図22の処理を終了する。
【0129】
ステップS55に於いて、記憶装置10のデータキャッシュ制御部13は、抽出された分割変換テーブル32pのうち、アクセスされた時間が最も古いものを、退避対象の分割変換テーブル32pとして選択し、図22の処理を終了する。記憶装置10のメモリコントローラ12(図1)は、テーブルキャッシュ管理情報23のアクセス時刻欄(不図示)によって、分割変換テーブル32pのアクセス時間を判断する。
【0130】
第2の実施形態の不揮発性メモリ30からのデータ読出処理は、第1の実施形態の不揮発性メモリ30(図1)からのデータ読出処理(図10)と同様である。
第2の実施形態の分割変換テーブル32pの選択/退避処理は、第1の実施形態の分割変換テーブル32p(図4)の選択/退避処理(図11)と同様である。
第2の実施形態の論理/物理アドレス変換テーブル32のエントリ更新処理は、第1の実施形態の論理/物理アドレス変換テーブル32(図4)のエントリ更新処理(図12)と同様である。
第2の実施形態のデータ書込処理は、第1の実施形態のデータ書込処理(図13)と同様である。
【0131】
図23は、第3の実施形態に於ける電源OFF時の処理を示すフローチャートである。第1の実施形態の電源OFF時の処理(図14)と同一の要素には同一の符号を付与している。
【0132】
電源OFF時の処理を開始すると、ステップS80Aに於いて、記憶装置10Bのメモリコントローラ12は、データキャッシュ21上の有効な分割データのうち、対応するデータ更新フラグ14d(図19)が1であるものを、すべて不揮発性メモリ30に書き込む(退避する)。
すなわち、記憶装置10Bのメモリコントローラ12は、データキャッシュ管理情報14の有効セクタフラグ14c(図20)がすべて0ではないエントリに対応する分割データのうち、対応するデータ更新フラグ14d(図20)が1であるものを、不揮発性メモリ30に書き込む(退避する)。
【0133】
ステップS81Aに於いて、記憶装置10Bのメモリコントローラ12は、論理/物理アドレス変換テーブルキャッシュ22に格納されている分割変換テーブル32pのうち、テーブルキャッシュ管理情報23のテーブル更新フラグ23d(図20)が1となっている分割変換テーブル32pのみを書き込んでいる(退避している)。ステップS81Aの処理が終了すると、記憶装置10Bのメモリコントローラ12は、図23の処理を終了する。
【0134】
(第3の実施形態の効果)
以上説明した第3の実施形態では、次の(C)〜(F)のような効果がある。
【0135】
(C) 記憶装置10Bのメモリコントローラ12は、データキャッシュ21に空きエントリを作成する際、データ更新フラグ14dに基き、更新されていない分割データを優先的に選択して、選択したエントリに係る分割データを破棄し、これを空きエントリとしている。これにより、不揮発性メモリ30への退避処理(書込処理)をすることなく、データキャッシュ21の空きエントリを高速に作成することができると共に、不揮発性メモリ30の書込回数を減らして寿命を長くすることができる。
【0136】
(D) 記憶装置10Bのメモリコントローラ12は、論理/物理アドレス変換テーブルキャッシュ22に空きエントリを作成する際、テーブル更新フラグ23dに基き、更新されていない分割変換テーブル32pを優先的に選択して、選択したエントリに係る分割変換テーブル32pを破棄し、これを空きエントリとしている。これにより、不揮発性メモリ30への退避処理(書込処理)をすることなく、論理/物理アドレス変換テーブルキャッシュ22の空きエントリを高速に作成することができると共に、不揮発性メモリ30の書込回数を減らして寿命を長くすることができる。
【0137】
(E) 記憶装置10Bのメモリコントローラ12は、電源OFFの際、データ更新フラグ14dに基き、更新された分割データのみを退避している。これにより、データキャッシュ21を高速に退避することができると共に、不揮発性メモリ30の書込回数を減らして寿命を長くすることができる。
【0138】
(F) 記憶装置10Bのメモリコントローラ12は、電源OFFの際、テーブル更新フラグ23dに基き、更新された分割変換テーブル32pのみを退避している。これにより、論理/物理アドレス変換テーブルキャッシュ22を高速に退避することができると共に、不揮発性メモリ30の書込回数を減らして寿命を長くすることができる。
【0139】
(変形例)
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能である。この利用形態や変形例としては、例えば、次の(a)〜(d)のようなものがある。
【0140】
(a) 第1〜第3の実施形態に於けるキャッシュメモリ20は、例えばバッテリーバックアップした不揮発性RAMとして構成してもよい。これにより、電源OFF時の処理が不要となる。
【0141】
(b) 第1〜第3の実施形態に於ける各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路などのハードウェアで実現してもよい。
【0142】
(c) 第1〜第3の実施形態に於ける各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによるソフトウェアで実現してもよい。
【0143】
(d) 第1〜第3の実施形態に於けるデータキャッシュ管理情報14、テーブルキャッシュ管理情報23、分割変換テーブル管理情報24などは、別の項目を有する管理情報で実現してもよい。
【符号の説明】
【0144】
10,10A,10B 記憶装置
11 I/F制御部
12,12A メモリコントローラ(処理部)
13 データキャッシュ制御部
14,14B データキャッシュ管理情報
15 不揮発性メモリ制御部
16 選択方式設定レジスタ
20 キャッシュメモリ
20C 不揮発性RAM
21 データキャッシュ
22 論理/物理アドレス変換テーブルキャッシュ
22A 論理/物理アドレス変換テーブルキャッシュ
23 テーブルキャッシュ管理情報
24 分割変換テーブル管理情報
23B テーブルキャッシュ管理情報
30 不揮発性メモリ
31 データ
32 論理/物理アドレス変換テーブル
40 命令処理装置
100 計算機

【特許請求の範囲】
【請求項1】
所定の書き込み単位であるページおよび前記所定の書き込み単位よりも大きいデータ消去単位であるブロックによりデータの読み書きが行えるとともに、前記ページのサイズを単位とした分割データおよび当該分割データの格納場所を管理する複数のエントリを有する論理/物理アドレス変換テーブルを備える不揮発性メモリと、
データの読み出しおよびデータの書き込みが行えるとともに、前記論理/物理アドレス変換テーブルの一部を一時的に記録する論理/物理アドレス変換テーブルキャッシュ、および、前記分割データを一時的に記録するデータキャッシュを有するキャッシュメモリと、
前記不揮発性メモリおよび前記キャッシュメモリそれぞれに対する読出処理および書込処理を行うメモリコントローラとを有する記憶装置であって、
前記メモリコントローラは、
外部からデータの読み出し要求を受け付け、
前記データキャッシュ上に前記読み出し要求データに対応するエントリが無く、かつ、前記データキャッシュ上に空きエントリが無かったならば、前記データキャッシュ上の分割データのうち、対応する前記論理/物理アドレス変換テーブルのエントリが前記論理/物理アドレス変換テーブルキャッシュ上に有るものを優先的に前記不揮発性メモリに退避して前記データキャッシュに空きエントリを作成し、当該空きエントリに当該読み出し要求データを読み出す処理部を備える、
ことを特徴とする記憶装置。
【請求項2】
前記メモリコントローラは、外部からのデータの書き込み要求を受けたとき、前記データキャッシュ上に当該書き込み要求データに対応するエントリが無く、かつ、前記データキャッシュ上に空きエントリが無かったならば、前記データキャッシュ上の分割データのうち、対応する前記論理/物理アドレス変換テーブルのエントリが前記論理/物理アドレス変換テーブルキャッシュ上に有るものを優先的に前記不揮発性メモリに退避して前記データキャッシュに空きエントリを作成し、当該空きエントリに当該書き込み要求データを書き込む、
ことを特徴とする請求項1に記載の記憶装置。
【請求項3】
前記論理/物理アドレス変換テーブルキャッシュは、前記不揮発性メモリの前記所定の書き込み単位である複数の分割変換テーブルに分割されており、
前記キャッシュメモリは、前記分割変換テーブルが前記論理/物理アドレス変換テーブルキャッシュに存在するか否かを管理する分割変換テーブル管理情報を有し、
前記メモリコントローラは、前記データキャッシュ上の分割データに対応する前記論理/物理アドレス変換テーブルのエントリが前記論理/物理アドレス変換テーブルキャッシュに有るか否かを、前記分割変換テーブル管理情報に基いて判断する、
ことを特徴とする請求項1または請求項2に記載の記憶装置。
【請求項4】
前記メモリコントローラは、選択方式設定レジスタを有し、当該データキャッシュから退避する分割データを選択するとき、前記選択方式設定レジスタの値に基いて、前記データキャッシュ上の分割データのうち、対応する前記論理/物理アドレス変換テーブルのエントリが前記論理/物理アドレス変換テーブルキャッシュ上に有るものを優先的に前記不揮発性メモリに退避するか否かを切り替える、
ことを特徴とする請求項1ないし請求項3のいずれか1項に記載の記憶装置。
【請求項5】
前記キャッシュメモリは更に、テーブルキャッシュ管理情報を有し、
前記テーブルキャッシュ管理情報は、前記分割変換テーブルが前記論理/物理アドレス変換テーブルに記憶されている情報と同一か否かを示す第1の更新フラグを含み、
前記メモリコントローラは、前記第1の更新フラグに基き、前記論理/物理アドレス変換テーブルに記憶されている情報と同一である分割変換テーブルが有ったならば、当該分割変換テーブルを破棄することにより、前記論理/物理アドレス変換テーブルキャッシュに空きエントリを作成する、
ことを特徴とする請求項3または請求項4に記載の記憶装置。
【請求項6】
前記キャッシュメモリは更に、データキャッシュ管理情報を有し、
前記データキャッシュ管理情報は、前記データキャッシュ上の分割データが前記不揮発性メモリに記憶されている分割データと同一か否かを示す第2の更新フラグを含み、
前記メモリコントローラは、前記第2の更新フラグに基き、前記不揮発性メモリに記憶されている分割データと同一である前記データキャッシュ内の分割データが有ったならば、当該分割データを破棄することにより、前記データキャッシュに空きエントリを作成する、
ことを特徴とする請求項1ないし請求項5のいずれか1項に記載の記憶装置。
【請求項7】
前記キャッシュメモリは、不揮発性RAM(Random Access Memory)である、
ことを特徴とする請求項1ないし請求項6のいずれか1項に記載の記憶装置。
【請求項8】
所定の書き込み単位であるページおよび前記所定の書き込み単位よりも大きいデータ消去単位であるブロックによりデータの読み書きが行えるとともに、前記ページのサイズを単位とした分割データおよび当該分割データの格納場所を管理する複数のエントリを有する論理/物理アドレス変換テーブルを備える不揮発性メモリと、
データの読み出しおよびデータの書き込みが行えるとともに、前記論理/物理アドレス変換テーブルの一部を一時的に記録する論理/物理アドレス変換テーブルキャッシュ、および、前記分割データを一時的に記録するデータキャッシュを有するキャッシュメモリと、
前記不揮発性メモリおよび前記キャッシュメモリそれぞれに対する読出処理および書込処理を行うメモリコントローラとを有する記憶装置を搭載した計算機であって、
前記メモリコントローラは、
外部からデータの読み出し要求を受け付け、
前記データキャッシュ上に前記読み出し要求データに対応するエントリが無く、かつ、前記データキャッシュ上に空きエントリが無かったならば、前記データキャッシュ上の分割データのうち、対応する前記論理/物理アドレス変換テーブルのエントリが前記論理/物理アドレス変換テーブルキャッシュ上に有るものを優先的に前記不揮発性メモリに退避して前記データキャッシュに空きエントリを作成し、当該空きエントリに当該読み出し要求データを読み出す処理部を備える、
ことを特徴とする計算機。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate