JP2010152747A - ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム - Google Patents

ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム Download PDF

Info

Publication number
JP2010152747A
JP2010152747A JP2008331452A JP2008331452A JP2010152747A JP 2010152747 A JP2010152747 A JP 2010152747A JP 2008331452 A JP2008331452 A JP 2008331452A JP 2008331452 A JP2008331452 A JP 2008331452A JP 2010152747 A JP2010152747 A JP 2010152747A
Authority
JP
Japan
Prior art keywords
data
cache
semiconductor memory
tag
stored
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
Application number
JP2008331452A
Other languages
English (en)
Inventor
Yoshihiro Hasebe
賀洋 長谷部
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 JP2008331452A priority Critical patent/JP2010152747A/ja
Publication of JP2010152747A publication Critical patent/JP2010152747A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ストレージシステムにおいて、磁気ディスク等の記憶媒体の増加に対応してホストコンピュータからの見かけ上の性能を改善するためのキャッシュ制御に関して、電源断などの障害に備えて設置されるバッテリーバックアップ用のバッテリーの容量を、ホストコンピュータからの見かけの性能を落とすことなく削減することができるストレージシステムを提供すること。
【解決手段】ホストコンピュータからのライトデータをバッテリーバックアップされた不揮発メモリ102に格納し、記憶媒体104から読み出したリードデータを揮発メモリ103に格納する。ライトデータのアドレスに相当するデータを揮発メモリ103上で検索し、存在する場合はリードデータの無効化(即ち、揮発メモリ上の、該当アドレスのキャッシュの廃棄)を行った上で、不揮発メモリ102にライトデータを格納する。
【選択図】図1

Description

本発明は、ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラムに関し、特に磁気ディスクなどの、ホストコンピュータの処理速度に較べて低速かつ大容量である記憶媒体への読み書きを行う際に低速な記憶媒体の性能保証を行うための、いわゆるキャッシュメモリと呼ばれる高速な記憶媒体(DRAMやフラッシュメモリ等)の制御手段において、電源断時にホストコンピュータからキャッシュメモリに書き込まれたデータの保証を行うストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラムに関する。
従来のストレージシステムでは、ホストコンピュータからのライトデータをキャッシュメモリ(以下、「キャッシュ」と略称することがある)に一時格納し、キャッシュメモリに格納した時点でホストコンピュータに対してライトデータがストレージに書き込まれた旨を応答し、その後にキャッシュメモリに書き込まれたライトデータを、キャッシュに比して低速ではあるが大容量である媒体(磁気ディスク等)に書き込むことにより、ホストコンピュータから見たデータのライト性能を向上させる手法が用いられてきた(ライトバックキャッシュアルゴリズムと呼ばれている)。
この場合、キャッシュとしては揮発性の半導体メモリ(DRAM等、以下、単に「揮発メモリ」と呼称する)が使用されるのが一般的であり、これらの揮発メモリは、性能は良いが、ビット当たりの単価が高く、かつ停電時などの不意の電源断時においては書き込まれたデータが喪失することがあり、このため、ライトバックキャッシュアルゴリズムによりキャッシュに書き込まれたデータが電源断により喪失することがあるため、バッテリー等を用いてバックアップする方法が採用されている。
例えば、特許文献1に記載のディスクキャッシュ装置では、データの内容の同一性が保たれていない期間が長くなり、停電等の障害によって失われる可能性も高くなるという問題点に対処するために、各エントリに対して、データの書き込みが行われた時刻が記憶されており、書き込み時刻から所定時間が経過しても、ディスク装置への書き込みが行われていないエントリが存在した場合には、そのエントリのデータのディスク装置への書き込みを行うことを開示している。
また、特許文献2に記載のディスクキャッシュ装置では、バッテリーバックアップされていない揮発性メモリと、バッテリーバックアップされている不揮発性メモリとを有しているディスクキャッシュ装置が提案されており、ディスクキャッシュ装置からホスト装置へのリードデータに対しては、揮発性メモリの空エントリに格納し、ホスト装置からディスクキャッシュ装置へのライトデータに対しては、そのアドレスのデータのエントリが揮発性メモリに存在するか否かを判定し、存在すれば当該エントリを無効化した後、存在しなければそのまま、ライトデータを不揮発性メモリの空エントリに格納することを開示している。
特開平2−19941号公報 特開平8−137753号公報:(図1,3〜5、段落12〜13,22〜32)
ところで、昨今の情報処理量の増加により、ストレージ1台当たりに格納されるデータ量は増加の一途を辿り、内蔵される磁気ディスクの容量も大幅に増え、接続されるホストコンピュータの数も増加している。このため、キャッシュに必要な記憶容量も増加しており、このため、上記背景技術で述べた従来のストレージシステムにあっては、キャッシュに用いられる不揮発メモリをバックアップするためのバッテリーの容量も増加しているが、容量が大きなバッテリーを用いることはコストの増加を招き、かつストレージにおけるバッテリーの占有体積や重量なども増加するという問題点があった。
よって、本発明のストレージシステムにおいては、ストレージの容量増に対応して設けられた前述のキャッシュ(特にDRAM等の揮発性半導体メモリ等を用いたキャッシュ)の、電源断時のデータ保護手段として必要な、不揮発メモリをバックアップするためのバッテリーの容量を削減することが課題であった。
このため、従来の手法ではキャッシュ全体に渡って行っていたバッテリーバックアップ手段において、ホストコンピュータからの見かけの性能を落とすことなくバッテリー容量を削減することが具体的な課題であった。
なお、前述の特許文献1の提案は、ディスクキャッシュ装置に関する技術であり、停電等が発生しても、その発生時刻から所定時間以内に書き込まれたデータだけが、失われることになるので、停電等による影響を少なくすることはできる。しかし、キャッシュメモリとしてバッテリバックアップした不揮発メモリを使用していないので、データの喪失を完全には防げないし、また、ライトバックを行っていることによる効果を減ずることにもなる。
また、前述の特許文献2の提案は、やはり、ディスクキャッシュ装置に関する技術であり、目的は本発明のストレージシステムと類似しているが、周知のLRUアルゴリズムのみを述べており、電源断時の保護(バックアップ)に必要な復旧手段については、動作が陽に説明されておらず、また、請求項としても、効果としても全く記載されていない。
本発明は、上記従来の問題点に鑑みてなされたものであって、ストレージシステムにおいて、磁気ディスク等の記憶媒体の増加に対応してホストコンピュータからの見かけ上の性能を改善するためのキャッシュ制御に関して、電源断などの障害に備えて設置されるバッテリーバックアップ用のバッテリーの容量を、ホストコンピュータからの見かけの性能を落とすことなく削減することができるストレージシステムを提供することを目的とする。
本発明の他の目的は、電源断が発生した時にも、格納されているデータを損なうことがないストレージシステムを提供することにある。
上記課題を解決するために、本発明に係るストレージシステムは、上位装置の要求データ入出力速度よりもデータ入出力速度が遅い大記憶装置を備えると共に、前記上位装置と前記大記憶装置とのデータ入出力速度の差を緩和するキャッシュ手段のキャッシュメモリとして、停電時記憶保持用のバッテリーを有する不揮発性半導体メモリと、揮発性半導体メモリとを備えたストレージシステムにおいて、前記上位装置からデータ書き込み要求が送出された場合に、前記書き込み要求データを前記不揮発性半導体メモリに一時格納すると共に、前記不揮発性半導体メモリに前記書き込み要求データを格納した時点で、前記上位装置に、前記書き込み要求データの書き込みを完了した旨の通知を応答する手段と、前記上位装置からデータ読み出し要求が送出された場合に、前記大記憶装置から前記読み出し要求に合致するデータを読み込んで前記揮発性半導体メモリに格納すると共に、以後、前記上位装置からのデータ読み出し要求が送出された際には、前記揮発性半導体メモリに格納した前記データを読み出して前記上位装置に送出する手段と、電源断から復旧した時点で、前記揮発性半導体メモリに格納した前記データのページが存在する場合には、前記ページを無効化する手段と、を備えたことを特徴とするストレージシステムを提供するものである。
また、本発明に係るストレージのキャッシュ制御方法は、停電時記憶保持用のバッテリーを有する不揮発性半導体メモリと、揮発性半導体メモリとを備え、上位装置と大記憶装置とのデータ入出力速度の差を緩和するストレージのキャッシュ制御方法において、前記上位装置からデータ書き込み要求が送出された場合に、前記書き込み要求データを前記不揮発性半導体メモリに一時格納すると共に、前記不揮発性半導体メモリに前記書き込み要求データを格納した時点で、前記上位装置に、前記書き込み要求データの書き込みを完了した旨の通知を応答するステップと、前記上位装置からデータ読み出し要求が送出された場合に、前記大記憶装置から前記読み出し要求に合致するデータを読み込んで前記揮発性半導体メモリに格納すると共に、以後、前記上位装置からのデータ読み出し要求が送出された際には、前記揮発性半導体メモリに格納した前記データを読み出して前記上位装置に送出するステップと、電源断から復旧した時点で、前記揮発性半導体メモリに格納した前記データのページが存在する場合には、前記ページを無効化するステップと、を有することを特徴とするストレージのキャッシュ制御方法を提供するものである。
さらに、本発明に係るストレージのキャッシュ制御は、停電時記憶保持用のバッテリーを有する不揮発性半導体メモリと、揮発性半導体メモリとを備え、上位装置と大記憶装置とのデータ入出力速度の差を緩和するキャッシュの制御をコンピュータに実行させるストレージのキャッシュ制御プログラムにおいて、前記上位装置からデータ書き込み要求が送出された場合に、前記書き込み要求データを前記不揮発性半導体メモリに一時格納すると共に、前記不揮発性半導体メモリに前記書き込み要求データを格納した時点で、前記上位装置に、前記書き込み要求データの書き込みを完了した旨の通知を応答するステップと、前記上位装置からデータ読み出し要求が送出された場合に、前記大記憶装置から前記読み出し要求に合致するデータを読み込んで前記揮発性半導体メモリに格納すると共に、以後、前記上位装置からのデータ読み出し要求が送出された際には、前記揮発性半導体メモリに格納した前記データを読み出して前記上位装置に送出するステップと、電源断から復旧した時点で、前記揮発性半導体メモリに格納した前記データのページが存在する場合には、前記ページを無効化するステップと、を有することを特徴とするストレージのキャッシュ制御プログラムを提供するものである。
以上説明したように、本発明のストレージシステムによれば、記憶媒体(磁気ディスク装置等の大記憶装置)から読み出したデータを揮発メモリに格納し、ホストコンピュータから送られてくるライトデータを、バッテリーバックアップ等の手段で保護された不揮発メモリに配置することで、ストレージシステムに必要なメモリの記憶容量を確保するので、システム全体として必要な大規模なキャッシュの容量を確保すると共に、一方では、バッテリーバックアップに必要な不揮発メモリ量を削減することで、バックアップに必要なバッテリーの容量を削減し、かつ、電源断などの障害発生時においてもデータ喪失を防ぐことが可能となる効果がある。
以下、本発明に係るストレージシステムの原理について説明する。
従来のストレージシステムの問題点は、ホストからのライトデータに対するキャッシュと、ストレージシステムの記憶媒体からのリードデータに対するキャッシュとの、いずれのキャッシュについてもバッテリーバックアップを行っていたことにある。通常、記憶媒体(例えば磁気ディスク等)からのリードデータのキャッシュは、この記憶媒体上にデータが有り、よって、電源断にキャッシュのデータは使用不可となっても、記憶媒体上のデータは消えず、再びホストコンピュータからのアクセスがあれば、キャッシュメモリ上に展開できる。
一方、ホストコンピュータからのライトデータは、キャッシュに格納された時点で書き込み完了を応答する場合(即ちライトバックキャッシュ)、一般にホストコンピュータには、このデータは残っておらず、ストレージシステム側のキャッシュに存在するのみであり、よって、ストレージシステムの電源断により保護すべき対象である。
本発明のストレージシステムは、ホストコンピュータからのライトデータを一時格納するための、半導体メモリがバッテリーバックアップされた不揮発メモリと、記憶媒体から読み出したデータを一時格納するための揮発メモリとを備え、ホストからのライトデータは不揮発メモリ、ストレージの記憶媒体(磁気ディスク等)から読み出したデータは揮発メモリに配置する。これにより、バッテリーバックアップに必要なホストコンピュータからのライトデータはシステムの電源断から保護すると共に、バッテリーバックアップの不要なリードキャッシュはバッテリーバックアップの必要が無い揮発メモリに配置する。このように構成することにより、本来必要なライトバックキャッシュのみのバッテリーバックアップを行うので、バッテリー容量を大幅に削減することを可能にする。
より具体的には、ホストコンピュータからライトリクエストが送られた際に、ライトリクエストで示されるアドレスのライトデータが不揮発メモリまたは揮発メモリのいずれに存在するのかを判断するキャッシュ管理手段を有し、このキャッシュ管理手段は不揮発メモリ及び揮発メモリでキャッシュされたデータのホストから見たアドレスとデータとをリンク付けして管理し、この管理に際してはテーブル等のキャッシュ管理情報を参照する。このキャッシュ管理情報は電源断でも消えない不揮発領域上に配置するが、前述の不揮発メモリの一部を利用しても良く、若しくは別途不揮発メモリを確保して使用しても良い。
さらに、キャッシュ管理手段は、ホストコンピュータからのライトデータに対して、不揮発メモリと揮発メモリのいずれにも同一アドレスのデータが存在しなければ、不揮発メモリ上にライトデータを格納する領域を確保し、該領域にデータを格納する。また、ホストコンピュータからのライトデータのアドレスで示されるデータが不揮発メモリ上に存在すれば、該不揮発メモリ上のデータをホストコンピュータから送られたライトデータで置き換える。さらに、ホストコンピュータから送られたライトデータのアドレスで示されるデータが不揮発メモリ上に無く、揮発メモリ上に有れば、該揮発メモリ上の該データを無効化し、不揮発メモリ上に新規の領域を確保して、該領域にホストコンピュータからのライトデータを格納する。
また、ホストコンピュータからストレージシステムに対して、リードのリクエストが送られた場合には、キャッシュ管理手段は、不揮発メモリ上、或いは揮発メモリのいずれかにリードのリクエストで要求されたデータが存在するか否かを確認し、両者のいずれかに存在すれば、該領域のデータをホストコンピュータに送り、さもなくて、リードのリクエストで要求されたデータが不揮発メモリ、揮発メモリのいずれにも存在しなければ、揮発メモリ上に領域を確保し、該リードリクエストで示されるアドレスのデータを記憶媒体から読み出して該領域に確保すると共に、ホストコンピュータに対してはリードリクエストの結果として、該データを送る。
なお、停電等の電源断時には、キャッシュ管理情報上には揮発メモリのデータが有効な状態で復帰し、揮発メモリには実際のデータが無い状態となるため、キャッシュ管理手段は、揮発メモリ上のデータをキャッシュ管理情報の内容を参照して無効化(即ちキャッシュデータとしては破棄)し、電源復帰後に通常の処理に復帰する。
以下、本発明のストレージシステムの最良の実施形態について、図面を参照して詳細に説明する。
図1は、本発明の実施の形態に係るストレージシステムの全体構成を示す構成図である。
同図に示す本実施の形態に係るストレージシステムは、ホストコンピュータ(図示は省略する)からライトデータが送られデータが不揮発メモリまたは揮発メモリのいずれに存在するかを判断するキャッシュ管理手段101と、キャッシュ管理情報が電源断でも消えない不揮発メモリ102と、キャッシュ管理情報が電源断には消される揮発メモリ103と、磁気ディスク等の記憶媒体104と、を備えて構成される。
以下、本実施の形態に係るストレージシステムの動作を説明する。
キャッシュ管理手段101は、不揮発メモリ102と、揮発メモリ103のキャッシュされたデータを、ホストコンピュータからリードリクエスト若しくはライトリクエストで指定されるアドレスとデータとをリンク付けて管理するが、この管理はキャッシュ管理情報を参照して行う。キャッシュ管理情報は電源断でも消えない不揮発メモリ102に配置する。また、ホストコンピュータからのライトデータは記憶媒体104上にマッピングされたアドレスもライトデータと同時に送り、応答性向上のために不揮発メモリ102に一時蓄積された後、最終的に記憶媒体104に書き込まれる。また、ホストコンピュータは前述の記憶媒体104のアドレスを指定して、リードリクエストを発行する。キャッシュ管理手段101は、記憶媒体104または不揮発メモリ102または揮発メモリ103に有る、該アドレスで示される最新のデータをホストコンピュータに返す。
キャッシュ管理情報の構成は図2、図6〜9で示される。なお、図2は、本実施の形態に係るストレージシステムのキャッシュ管理情報の全体構成を示し、図6は、空きページ管理情報を示し、図7は、揮発メモリに割り当てられるCleanなキャッシュページのLRU構成を示し、図8は、不揮発メモリに割り当てられるDirtyなキャッシュページのLRU構成を示し、図9は、不揮発メモリに割り当てられるCleanなキャッシュページのLRU構成を示している。
以下、前述の動作を、図2、図6〜9を参照して、さらに詳細に説明する。
図2、図6〜9に構成を示すキャッシュ管理情報は不揮発メモリ102上に存在し、電源断などの障害でも記憶内容は維持される。さらに前述のキャッシュ管理手段101はキャッシュ管理情報としてキャッシュエントリ201、キャッシュタグ202の情報を有する。キャッシュエントリ201は、ホストコンピュータが指定するアドレスからハッシュなどの手法により計算し、同じアドレスであれば同一のキャッシュエントリ201が選択される。ここではハッシュにより計算を行うこととするが、他の同等の方法を利用しても構わない。
キャッシュエントリ201のそれぞれのエントリにはキャッシュタグ202へのポインタが格納されており、図2に示すような双方向リンク構造を取ることを可能にしている。
図3は、キャッシュタグ202の構成を示す構成図である。同図に示すキャッシュタグ202は、キャッシュ情報301、ページポインタ302、LRUポインタ303、及びタグポインタ304から成る。キャッシュ情報301は、キャッシュタグで管理されるページ(詳細は後述するが、データそのものが格納される領域)が揮発メモリまたは不揮発メモリのいずれかに存在するか否かを示すフラグのメモリ種別305と、Dirty情報306と、媒体格納アドレス307から成る。Dirty情報とは、当該ページのデータがDirty(即ち、ライトバックなどによりホストコンピュータから送られたライトデータがキャッシュに存在し、媒体上に未だ書き込まれていない状態)であるか否かを示す情報である。ここではDirtyであれば1を書き込み、Clean(即ち、媒体上のデータと同一のデータがキャッシュ上に存在する状態)であれば、0を書き込むものとする。
媒体格納アドレス307は、ホストコンピュータからのライトデータ、若しくは媒体から読み出したデータをキャッシュメモリ上に一時配置する際に、キャッシュメモリ上のデータが記憶媒体104上のどのアドレスに相当するかを示す情報である。
また、ページポインタ302は、実際にデータが格納される領域であるページのポインタを示し、このポインタは図4にページ構成を示す不揮発メモリ401上のページ、または図5にページ構成を示す揮発メモリ501上のページの、いずれかのページのメモリの先頭アドレスを指し示す。
LRUポインタ303はライトバックキャッシュの掃き出しやキャッシュの格納領域であるページが新規に取得できなくなった場合に、Cleanな状態のページの再利用を行う際の優先順位を決める際などに用いる。
以下、図7、図8、図9を参照して説明する。図7は、揮発メモリのCleanページを管理するアルゴリズムがLRU(先入れ後出しアルゴリズム、または後入れ先出しアルゴリズム)の場合の揮発エントリの構成を示す。このLRUに基づく構成の揮発エントリは、記憶媒体104から読み出して揮発メモリ上に一時格納したデータの管理を行うための情報である。揮発Clean LRUエントリ701を先頭に、キャッシュタグ202のリンク構造をとる。
キャッシュタグ202のLRUポインタ303aが次のキャッシュタグ702の先頭を示し、LRUポインタ303bはエントリに近い側のキャッシュタグの先頭アドレスを格納するリンク構造を取る。リンクの最後のキャッシュタグ703のLRUポインタ303aはリンクの最後を示す情報であるNULL(ゼロ)を書き込み、最終のタグであることを示す。また、エントリ直後のキャッシュタグのLRUポインタ303bは、エントリのアドレスを書き込む。この様な双方向リンク構造を取ることで、リンクの途中のキャッシュタグを取り除くことを容易にする。なお、前述の構成は、図8に示す不揮発メモリ上のDirtyデータを管理するLRU、及び図9の不揮発メモリ上のCleanデータを管理するLRUでも同様に採用している。
また、キャッシュエントリ201のリンク構造を構成するタグポインタ304も双方向リンク構造をとり、LRUポインタと同様な操作を可能にしており、タグポインタ304aはリンクの後ろ側のタグ、タグポインタ304bはエントリに近い側のタグの先頭アドレスを格納する。
同様に、図8の不揮発メモリのDirtyページを管理するリンク、と図9の不揮発メモリのCleanページを管理するリンクとが存在し、それぞれキャッシュ管理情報として、不揮発メモリ上に存在する。
さらに、現在使用中のページとは別に、キャッシュエントリで管理されていない、つまり未だ割り当てられていないページを管理するためのリンクも存在し、図6の空きページ管理リンクで管理を行い、最初の電源投入時などの初期状態のページが、全く割り当てられていない時などには全てのページがこの空きページ管理リンクに接続される。このリンクは不揮発メモリ、揮発メモリの個別に管理され、不揮発メモリ空きエントリ601、あるいは揮発メモリ空きエントリ604の何れかに接続され、キャッシュエントリと同様に、キャッシュタグのタグポインタ304のリンク構造により管理され、最後のタグはリンクの最後であるNULLを示す情報をタグポインタに書き込み、ページポインタ302は初期の電源投入時に不揮発メモリまたは揮発メモリ上に割当られた個別のページのポインタを指し示す。
図10、図11、及び図12は、本実施形態に係るストレージシステムの全体の動作を示すフローチャート図であり、図10は、リードリクエスク時の動作、図11は、ライトリクエスク時の動作、図12は、電源再立ち上げ時の動作を、それぞれ示すものである。以下、図10、図11、及び図12に示すフローチャートを使用して、本実施の形態の全体の動作について詳細に説明する。
まず、ステップS1では、ホストコンピュータからライトのリクエストを受け取ると、キャッシュ管理手段101は、受け取ったライトリクエストのアドレスがキャッシュエントリ201のリンクに存在するキャッシュタグ内の核のアドレス307と一致するタグを検索する。
ステップS2では、この検索を検証し、該当するタグが無かった場合はステップS3に進み、該当するタグが有った場合はステップS6に移る。
ステップS3では、不揮発メモリ空きエントリ601のリンクから任意のキャッシュタグを取り出す。
ステップS4では、ステップS1で検索を行ったキャッシュエントリのリンクに、タグポインタ304操作して該取り出したキャッシュタグを挿入し、同キャッシュタグのLRUポインタ303を操作して揮発Clean LRUエントリ701のリンクに挿入する。そして前述のタグのキャッシュ情報のDirty情報306を1のDirtyにセットし、メモリ種別305を1の不揮発にセットする。但し、ステップS3で、不揮発メモリ空きエントリ601のリンクにキャッシュタグが存在しない場合は、不揮発Clean LRUエントリのリンクのキャッシュタグを用いる、更に不揮発Clean LRUエントリのリンクにもキャッシュタグが無い場合には、不揮発Dirty LRUエントリのリンクからキャッシュタグを取り出し、該キャッシュタグのページポインタで示されるページのデータを媒体に書き込んだ後、該キャッシュタグを用いる。
ステップS5では、該タグのページポインタ302のアドレスにホストコンピュータからのデータを格納し、ホストコンピュータにデータを書き込んだ旨を示す情報を送信し、ホストコンピュータからのライトリクエストを終了する。
ステップS6では、ステップS2で該当するアドレスの一致する格納アドレス307のキャッシュタグが有った場合の処理として、該当するキャッシュタグのキャッシュ情報301のDirty情報306が1のDirtyであるか否かを判定し、Dirtyであれば、ステップS5に移る。
ステップS7では、キャッシュ情報301のDirty情報306がDirtyでない(即ち、Cleanである)場合の処理として、キャッシュ情報301のメモリ種別305の判定を行い、メモリ種別305が1の不揮発であれば、ステップS8に進み、さもなくて、メモリ種別305が不揮発でなければ、ステップS9に移る。
ステップS8では、Dirty情報306をCleanからDirtyに書き換えた後、該キャッシュタグのページポインタ302で示されるアドレスのページにホストコンピュータからのライトデータを書き込み、ステップS5に移る。
ステップS9では、ステップS7でキャッシュ情報301のメモリ種別305が1の不揮発でない(即ち0のCleanである)場合の処理として、該タグのページの無効化処理を行う。
この無効化処理には、該ページタグをキャッシュエントリ201のリンクとLRUのリンク(この場合は揮発Clean LRUエントリのリンク)から取り外し、揮発メモリ空きエントリ604のリンクに挿入することで揮発メモリ上のキャッシュを破棄する。その後に、新たに不揮発メモリ空きエントリ601のリンクから新たにタグを取り出し、該タグのキャッシュ情報301のDirty情報306を1のDirtyに、同じくメモリ種別を1の不揮発に変更を行い、ホストコンピュータからのライトリクエストのアドレスでサーチを行ったキャッシュエントリのリンクを接続し、その後、不揮発Dirty LRUエントリ801のリンクに接続する。その後に、ステップS5に移る。
図11は、ホストコンピュータからリードリクエストが有った場合の動作を示すフローチャート図である。
まず、ステップS21では、ホストコンピュータからのリードリクエストをキャッシュ管理手段101が受け取ると、該リクエストで示されたリードのアドレスを、ハッシュを用いてキャッシュエントリを決定し、該キャッシュエントリのリンクに接続されたキャッシュタグ201の格納アドレス307に該当するアドレスを検索する。
次に、ステップS21では、この検索結果を検証し、格納アドレス307で示されるアドレスが無い場合はステップS23に進み、さもなくて、格納アドレス307で示されるアドレスが有る場合はステップS24に移る。
ステップS23では、ステップS22で、リードリクエストで指定されたアドレスがキャッシュタグ201の格納アドレス307から見つからなかった場合の処理として、新たに揮発メモリ空きエントリ604のリンクからキャッシュタグを取り出すか、無ければ揮発Clean LRUエントリのリンクからタグを取り出してデータを格納するページを取得し、その後、該タグのアドレスを最初に検索を行ったキャッシュエントリのリンクと揮発Clean LRUエントリのリンクにそれぞれ挿入する。この時、キャッシュ情報301のDirty情報はCleanに、メモリ種別は揮発に設定する。その後、該リードリクエストのアドレスを格納アドレス307に書き込むと共に、該アドレスで指定される記憶媒体104のデータを読み出して、ページポインタ302のアドレスで示されるページに書き込み、ステップS24に進む。
ステップS24では、該タグのページアドレス302のアドレスで示されるページのデータをホストコンピュータに送り、リードリクエストが終了した旨も返し、該リードリクエストを終了する。
図12は、電源断後の再起動時の復旧処理を示すフローチャート図である。
電源断から復旧した直後は、電源断により揮発メモリ103上にあるページのデータは消去されており、電源断により保護されたキャッシュ管理情報と矛盾した状態になる。このため、キャッシュ管理情報から、揮発メモリ103で消去されたページの情報を取り除かねばならないので、図12のフローチャート図で示す処理を行う。
まず、ステップS31では、復旧処理中はキャッシュ管理情報が矛盾した状態でホストコンピュータからのライト、若しくはリードのリクエストを受け付けると誤動作を引き起こす可能性があるため、復旧処理が完了するまでリードもしくはライトのリクエストを一時停止する。そして、最初に揮発Clean LRUエントリ604のポインタを参照する。
ステップS32では、揮発Clean LRUエントリ604のポインタが最後(=NULL)か否かのチェックを行い、揮発Clean LRUエントリ604のポインタがNULLでなければ処理するキャッシュタグが有るので次のステップS33に進む。さもなくて、揮発Clean LRUエントリ604のポインタがNULLであれば処理するキャッシュタグが無いので、ステップS35に移る。
ステップS33では、該ポインタで示されるキャッシュタグのタグポインタ304で示されるキャッシュエントリのリンクから取り除くと共に、揮発Clean LRUエントリ701のリンクからも取り除く。その後、ステップS34では、該キャッシュタグを揮発メモリ空きエントリ601の最後に繋げ、ステップS31に戻って残りのキャッシュタグの処理の継続を行う。
ステップS35では、揮発性記憶媒体上のページの無効化の処理が完了したことになるので、ホストコンピュータからのリードあるいはライトリクエストの受付可能な状態に設定し、後に通常の状態に復帰する。
図13は、本実施の形態に係るストレージシステムにおけるキャッシュ制御情報の初期値の1例を示す説明図である。
次に、図10、図11、図12のフローチャートを使用し、図13に示すキャッシュ制御情報の初期値を参照しながら、本実施形態に係るストレージシステムの動作を具体的な実施例で説明する。
この実施例では、図1に示した記憶媒体104は磁気ディスク装置(HDD)やシリコンディスク、光ディスク等のリード/ライト可能な記録媒体によって構成してよい。
記憶媒体104は前記の記憶媒体を1以上を有し、ホストアドレスからのリードまたはライトリクエストで、指定するアドレスに対して唯一のデータ格納場所を決定可能とする。
また、実際に記憶媒体にデータ書き込まれる際に、媒体欠陥や媒体障害によりリードまたはライトができなくなることに備えて、同一データを複数の媒体に書くことや、ディスクアレイシステムで用いられるRAID制御等により、パリティを使ったデータの冗長化を行ってもよい。キャッシュ管理手段101から、これらの記憶媒体に対してリード動作またはライト動作を行う際には、これらの冗長化の処理は隠蔽化され、ホストコンピュータからのリードリクエストまたはライトリクエストで指定されるアドレスにより、仮想的に1つの格納場所に決定する。以下の説明では、記憶媒体104に対するリード動作またはライト動作は、これらの冗長化処理が隠蔽化されているものとする。また、これらホストコンピュータが指定するアドレスと格納アドレスは同一のアドレス空間を示すが、キャッシュ管理情報内で示されるポインタは、これらとは別のアドレス空間での管理が行われる。
図14は、本実施の形態に係るストレージシステムにおけるキャッシュ制御情報の1実施例としての状態図を示す説明図である。
以下、図1、図3、図10、図13、及び図14を参照して、本ストレージシステムに対してホストコンピュータからのライトリクエストが有った場合の1実施例について説明する。ホストコンピュータからライトリクエストを受け取ると、キャッシュ管理手段101は、受け取ったライトリクエストのアドレスを、キャッシュエントリ201のリンクに存在するキャッシュタグ内で検索する。この時、ホストコンピュータから受け取ったライトリクエストで示されるアドレスが、例えば“4700”とし、図13でキャッシュされたデータを管理するキャッシュタグのリンクがキャッシュエントリ1301のみに接続された状態であるものとする。
また、アドレス“4700”のアドレスのハッシュ値の計算がキャッシュエントリ1301のエントリを指し示すものとする。すると、キャッシュ管理手段101が指定されたアドレスからキャッシュエントリ1301のリンクに、該当するアドレスのタグが存在するか否かの検索を行う。キャッシュエントリ1301に格納されているポインタがこの時“7806”であり、キャッシュ管理手段101は、次に、アドレス“7806”で指定されるキャッシュタグ1302の格納アドレスの内容と、ホストコンピュータから指定されたアドレス“4700”との比較を行うと、キャッシュタグ1302の格納アドレスは“12A000”であるため一致しない。
そこで、キャッシュ管理手段101は、キャッシュタグ1302のタグポインタを参照し、次のキャッシュタグが存在するか否かの判断を行う。このため、キャッシュ管理手段101は、キャッシュタグの後方を参照するタグポインタF304aの値で示されるキャッシュタグを参照する。この時、キャッシュタグ1302のタグポインタF304aの値は“6450”であるので、この“6450”で指定されるキャッシュタグ1303を参照する。前回と同様にキャッシュタグ1303の格納アドレスを参照すると、“36C00”であり、ホストコンピュータから指定されたアドレス“4700”とは異なるため、更に後方のキャッシュタグの参照を行う。同様にキャッシュタグ1303のタグポインタF304aの値は“3200”である。
この“3200”で示されるキャッシュタグはキャッシュタグ1304であり、キャッシュタグ1304の格納アドレスは“47600”である。やはり、ホストコンピュータの指定するアドレス“4700”とは異なるため、次のキャッシュタグが存在するか否かを引き続き検索するが、キャッシュタグ1304のタグポインタF(304a)(図3に示すキャッシュタグの符号を参照)は“NULL”を示しているので、キャッシュタグ1304はキャッシュエントリ1301の最後のタグであることが判定できる。故にホストコンピュータから指定されたアドレスで示されるデータは存在しないこととなり、検索の結果、該当するキャッシュタグは無いと判定する(ステップS1)。
次に、該アドレスのタグが無いと判定すると(ステップS2:NO)、不揮発メモリ空きエントリ1341のリンクの先頭からタグを取り出す。これには図14に示す不揮発空きエントリ1341を参照し、該不揮発空きエントリ1341で指し示されるキャッシュタグ1342を取り出す。不揮発空きエントリ1341のタグポインタは“7200”を示しているので、“7200”のキャッシュタグを参照する。キャッシュタグ1342を不揮発空きエントリのリンクから外すには、キャッシュタグエントリ1342のタグポインタF(304a)の内容をタグポインタB(304b)のポインタで示されるキャッシュタグのタグポインタF(304a)にコピーする。
ここで不揮発空きエントリ1341のポインタは、他のキャッシュタグのタグポインタF(304a)と同等の扱いと考える。そして、キャッシュタグ1342のタグポインタB(304b)の内容をタグポインタF(304a)のポインタで示されるキャッシュタグ1343のタグポインタB(304b)に書き込むことで実現する。すると、不揮発空きエントリ1341の内容はキャッシュタグ1343のアドレス“8250”となり、キャッシュタグ1343のタグポインタB(304b)の内容は、不揮発空きエントリ1341を示す“7200”で置き換わり、これにてキャッシュタグ1342の取り出しを完了する。
他のエントリに関しても、キャッシュタグの取り出しは同様に行う。また、この時不揮発空きエントリ1341に空きページが無ければ、不揮発Clean LRUエントリからキャッシュタグを取り出して利用するか、不揮発Dirty LRUのキャッシュタグを取り出して利用する。不揮発Dirty LRUを取り出す際には、ページポインタで示されるページのデータを格納アドレスで一意に決定できる記憶媒体の領域に書き込んだ後に使用する(ステップS3)。
キャッシュタグを取り出した後は、キャッシュタグ1342をキャッシュエントリ1301の最後に接続すると共に、不揮発Dirtyエントリ1321の最後に接続する。これには、キャッシュエントリ1301のポインタのキャッシュタグを順次後方にタグポインタF(304a)を参照しながらタグポインタF(304a)がNULLになるまで順次辿る。キャッシュタグ1304が最後のキャッシュタグとなるので、キャッシュタグ1304のタグポインタF(304a)の内容を、キャッシュタグ1342の先頭アドレスの値に置き換え、キャッシュタグ1342のタグポインタF(304a)の値をNULLに、キャッシュタグ1342のタグポインタB(304b)の内容をキャッシュタグ1304の先頭アドレスを格納する。
ここではキャッシュタグ1304のタグポインタ304aの値が“8310”に、キャッシュタグ1342のタグポインタF(304a)の値が“NULL”に、そしてキャッシュタグ1342のタグポインタB(304b)の値が“3200”となり、キャッシュエントリ1301を先頭とするリンクが完成する。また、同時に不揮発Dirty LRUエントリも同様にしてリンクの最後に追加を行う。するとキャッシュタグ1312のLRUポインタF(303a)の内容はキャッシュタグ1342の先頭アドレスである“8310”に置き換わり、キャッシュタグ1342のLRUポインタF303aは“NULL”に、同じくLRUポインタ303bの内容はキャッシュタグ1322の先頭アドレスである“6300”に置き換わり、不揮発Dirty LRUエントリ1321を先頭とするリンクが完成する。
この後、キャッシュタグ1342のキャッシュ情報のDirty情報306を1のDirtyにセットし、メモリ種別305を1の不揮発にセットし、格納アドレスをホストコンピュータからリードリクエストまたはライトリクエストで指定されたアドレス“4700”を格納する(ステップS4)。その後、キャッシュタグ1342のページポインタ302で示されるページ(この場合は“不揮発メモリページ8”のアドレスにホストコンピュータからのデータ)を格納し、ホストコンピュータにデータを書き込んだ旨を示す情報を送信し、ホストコンピュータからのライトリクエストを終了する(ステップS5)。
以下、ステップS2で、該当するアドレスのタグが有った場合の1実施例について説明する。
この場合は、図13に示す状態で、ホストコンピュータからのライトリクエストで示されるアドレスが“36C00”であった場合に該当する。前述の場合と同様にアドレス“36C00”のハッシュ値の計算がキャッシュエントリ1301を示すとすると、前述の場合と同様にキャッシュエントリ1301のリンクのサーチを行う(ステップS1)。すると、キャッシュタグ1303の格納アドレスと一致するので、キャッシュにヒットしたと判定する(ステップS2)。次に、キャッシュタグ1303のキャッシュ情報301のDirty情報306が1のDirtyであるか否かを判別する(ステップS6)。
キャッシュタグ1303のDirty情報はDirtyであるので、キャッシュタグ1303ページポインタ、ここでは“不揮発メモリページ1”で示されるメモリのアドレスにホストコンピュータからのデータを書き込み、ホストコンピュータからのライトリクエストを完了するステップS5)。
キャッシュ情報301のDirty情報306がDirtyではない場合(即ちCleanである場合)を説明する。この場合、ステップS2では、ホストコンピュータからのライトリクエストが“47600”である場合と同様に、キャッシュエントリ1301のリンクのサーチを行い、その結果キャッシュタグ1304の格納情報が一致している。
ステップS6では、該キャッシュタグ1303のDirty情報がCleanであることを判定する(ステップS6:NO)。次に、同タグのキャッシュ情報301のメモリ種別305の判定を行い(ステップS7)、1の不揮発メモリであるので、キャッシュタグ1304の、Dirty情報306をCleanからDirtyに書き換えた後、該タグのページポインタ302で示されるアドレスのページにホストコンピュータからのライトデータを書き込み、ライトリクエストを完了する(ステップS5)。
以下では、ステップS7でキャッシュ情報301のメモリ種別305が1の不揮発ではなかった場合(即ち0の揮発メモリで有った場合)の1実施例について説明する。
ここでホストコンピュータから指定されるライトリクエストのアドレスが“12A000”であるとする。アドレス“12A000”のハッシュ値の計算結果はキャッシュエントリ1301を指し示すものとする。この時、キャッシュエントリ1301のリンクを辿ると、キャッシュタグ1302の格納アドレスと一致し、該アドレスで指定されるデータがキャッシュに存在することが判定できる(ステップS1,S2:YES)。そこで、ステップS6で、キャッシュタグ1302のキャッシュ情報がCleanであることを判定し、ステップS7で、キャッシュ情報が揮発メモリであることを判定できる。これは、ライトリクエストのデータが揮発メモリに存在することを示す。
ホストコンピュータからのライトリクエストのデータは電源断に備えて不揮発メモリに配置する、このため、揮発メモリのデータは無効化(即ちキャッシュのデータの破棄作業)を行い、同一アドレスの異なるデータが存在すること防止する。これは、キャッシュタグ1302をキャッシュエントリ1301から取り外すと同時に揮発Clean LRUエントリ1311のリンクから取り外し、揮発空きエントリ1351に接続することで実現する。
キャッシュタグ1302をキャッシュエントリのリンクから外すには、キャッシュタグエントリ1302のタグポインタF(304a)の内容をタグポインタB(304b)のポインタで示されるキャッシュタグのタグポインタF(304a)にコピーする。ここではキャッシュエントリ1301の内容を書き換えることになる。そして、キャッシュタグ1302のタグポインタB(304b)の内容をタグポインタF(304a)のポインタで示されるキャッシュタグ1303のタグポインタB(304b)に書き込むことで実現する。これで、キャッシュエントリ1301の内容にはキャッシュタグ1303のアドレス“6450”が入り、キャッシュタグ1303のタグポインタB(304b)の内容は、キャッシュタグエントリ1301を示す“3708”で置き換わり、キャッシュタグ1302の取り出しを完了する。
同様に、揮発Clean LRUエントリ1311のリンクからも取り外す作業を行い、キャッシュタグ1302の取り出し処理を完了する。この時、揮発Clean LRUエントリ1311の内容はキャッシュタグ1312のアドレスである“6200”で置き換わり、キャッシュタグ1312のLRUポインタB(304b)の内容はエントリのアドレスの“1010”に置き換わり、揮発Clean LRUエントリからの取り外しを完了する。その後、揮発空きエントリ1351のリンクの最後に接続する。これには、揮発空きエントリ1351の内容で示されるアドレスのキャッシュタグのLRUポインタF(303a)を順次”NULL"になるまで辿る。
図13に示す状態ではキャッシュタグ1353がリンクの最後となる。ここで、キャッシュタグ1353のLRUポインタF(303a)に1302の先頭アドレス“7806”を格納し、キャッシュタグ1302のLRUポインタF(303a)に”NULL"を、LRUポインタB(303b)にはキャッシュタグ1353の先頭アドレスである“8120”を書き込むことで実現する。
これらのキャッシュエントリとLRUエントリから取り外すことで、キャッシュの無効化が実現され、他の属性を持つキャッシュに関しても同様の手順で無効化が行われる。その後に、前述の場合と同様に新規に不揮発メモリ空きエントリ1341からページを確保する。
この手順はステップS3、ステップS4の場合と全く同じ処理となる(ステップS9)。
その後に、新規に取得されたキャッシュタグのページで示されるアドレスのページにホストコンピュータからのライトデータを書き込み、ホストコンピュータにライト書き込みを完了した旨の情報を返し、ライトリクエストを完了する(ステップS5)。
以下、図11に示すホストコンピュータからリードリクエストがあった場合の1実施例をフローチャートを使用して説明する。
ホストコンピュータからのリードリクエストをキャッシュ管理手段101が受け取ると、該リクエストで示されるリードを行うアドレスでハッシュを用いて、キャッシュエントリを決定する。この時、ホストコンピュータから送られて来るリードリクエストのアドレスが“12A000”でキャッシュ管理情報が図13に示す状態であったとすると、前述のライトリクエストの場合と同様にキャッシュエントリ1301の内容で示されるキャッシュタグを順次辿り、格納アドレスに指定されたアドレスの検索を行う。この時、キャッシュタグ1302の格納アドレスが“12A000”で一致する(ステップS21,S22)。
その後、キャッシュタグ1302のページポインタで示されるページ、即ち“揮発メモリページ0”の情報をホストコンピュータに送信し、ホストコンピュータからのリードリクエストを完了する。また、ホストコンピュータからのリードリクエストで示されるアドレスが“36C00”、“47600”の場合も同様で、それぞれ該当するアドレスが“36C00”の場合は“不揮発メモリページ1”、アドレスが“47600”の場合は、“不揮発メモリページ2”のデータをホストコンピュータに送り、リードリクエストが終了した旨も返し、該リードリクエストを終了する(ステップ24)。
また、ステップS22で、リードリクエストで指定されるアドレスのデータが見つからなかった場合、即ちリードリクエストで指定されたアドレスと、キャッシュタグ201の格納アドレス307が一致しない場合には、新たに揮発メモリ空きエントリ604の先頭からタグを取り出すか、無ければ揮発Clean LRUエントリの先頭のタグを取り出し、データを格納するページを取得する。ここでホストコンピュータからのリードリクエストで指定されたアドレスが“5F000”で、アドレス“5F000”のハッシュ値がキャッシュエントリ1301を示した場合、ステップS21の場合と同様にキャッシュエントリ1301のリンクの検索を行う。この場合、それぞれのキャッシュタグの格納アドレスに一致するものが無いため、該当するキャッシュタグが無いと判定する(ステップS22)。
その後、新規に揮発メモリからページを確保する。それには揮発空きエントリ1351の内容で示される最初のキャッシュタグを取り出す。揮発空きエントリ1351に利用可能なキャッシュタグが無ければ、揮発Clean LRUエントリから取り出して使用する。この時、取り出されたキャッシュタグがキャッシュタグ1352であったとすると、キャッシュ情報301のDirty情報はCleanに、メモリ種別は揮発に設定し、該キャッシュタグ1352に、前述と同じ方法で、揮発LRUエントリ1311の最後と、キャッシュエントリ1301の最後へのリンク付け(接続)を行う。
次に、該リードリクエストのアドレスを格納アドレス307に“5F000”を書き込むと共に、該アドレスで指定される記憶媒体104のデータをページポインタ302にアドレスで示されるページ、即ち“揮発メモリページ13”に書き込む(ステップS23)。
その後に書き込んだデータをホストコンピュータに送ると共に、リードリクエストが終了した旨を返し、該リードリクエストを完了する(ステップS24)。
以下、図12に示すフローチャートを使用して、電源断後に行われる再起動時の処理の1実施例について説明する。
電源断から復旧した直後は、電源断により揮発メモリ103上にあるページのデータは消去されており、不揮発メモリ102上のキャッシュ管理情報と矛盾した状態になる。このため、キャッシュ管理情報から、揮発メモリ103で消去されたページの情報を取り除かなければならない(以下で説明する)。
図13は電源再投入後のキャッシュ管理情報の状態を示している。まず、復旧処理中はキャッシュ管理情報が矛盾した状態でホストコンピュータからのライトリクエストまたはリードリクエストを受け付けると誤動作を引き起こす可能性があるため、復旧処理が完了するまでリードリクエストまたはライトリクエストの動作を一時停止する。そして、最初に揮発Clean LRUエントリ1311の示すポインタを参照し(ステップS31)、当該ポインタが最後を示すNULLポインタであるか否かの判定を行う(ここで、NULLであれば処理すべき揮発メモリ上に存在するキャッシュのキャッシュタグの取り除きが完了したこととなる)。
まず、揮発Clean LRUエントリの内容を参照する。ここではキャッシュタグ1302がリンクに接続されているので“7806”が参照される(ステップS31)。
次に該当するポインタが“NULL”であるか否かの判定を行う(ステップS32)。
該当のポインタは“NULL”ではないため、これを揮発LRUエントリ1311とキャッシュエントリ1301から取り除き、その後に取り出したキャッシュタグ1302を揮発空きエントリ1351に接続することで完了する。
ちなみに、上記一連の処理は、図10のステップS9におけるキャッシュの無効化処理と同じ手順である(ステップS33,S34)。この時点で揮発Clean LRUエントリのリンクは揮発Clean LRUエントリの内容がキャッシュタグ1312の先頭アドレス、キャッシュタグ1312のタグポインタBがエントリの先頭アドレス、タグポインタFが“NULL”の状態である。この状態で再びステップS31,S32に戻り、揮発Cleanエントリの内容が“NULL”であるか否かを判定する。
ここではキャッシュタグ1312の先頭アドレスである“6200”が格納されているので、次の処理に移行する。前回と同様にキャッシュタグ1312の取り出しを行う。この時点で、揮発Clean LRUエントリの内容は“NULL”の状態となる。そしてステップS31に戻り、再び揮発Clean LRUエントリを参照する。
この時揮発Clean LRUエントリの内容は“NULL”であるため、無効化すべきキャッシュは全て完了したこととなり、ステップS35に移る(ステップS32)。ステップS35では、抑止されていたホストコンピュータからのリードリクエストまたはライトリクエストの受付の開始を行い、以後、通常のリード/ライトリクエストに対する処理を行って処理を終了する。
以上に示す実施例の各々では、新規若しくは再利用されたキャッシュタグのキャッシュエントリのリンクへの接続はリンクの最後(最後尾)に付けているが、これは任意のキャッシュエントリの直後に接続してもよく、その場合も最後に接続するのと同様の処理で可能である。また、不揮発空きエントリや、揮発空きエントリについても上記と同様である。
揮発Clean LRUエントリ、不揮発Dirty LRUエントリ、不揮発Cleanエントリについても、リンクの最後(最後尾)に接続を行っていたが、これは基本的なLRU(先入れ後出しアルゴリズム)の考え方に基づいており、LRUのアルゴリズムやキャッシュ再利用の最適化アルゴリズムなどによってはリンクの最後ではなく、途中や先頭に接続することも考えられる。この場合もリンクの最後に接続する処理をリンクの途中に適用することが可能である。
これらの処理を行うことで、媒体から読み出したリードデータを揮発メモリに格納し、ホストから送られたライトデータを不揮発メモリに格納することが可能となり、かつ電源断後の復旧後においても揮発メモリ上で喪失されたキャッシュの無効化が行われ、以降矛盾の無い動作を可能としている。結果として不揮発メモリの使用量を抑えることが可能となり、ひいては不揮発メモリに必要なバッテリーバックアップを最小限にすることが可能となる。
また、この実施例では、不揮発メモリはDRAM等の揮発メモリを使用し、これをバッテリーバックアップすることを想定したが、バッテリーバックアップを必要としない他の不揮発半導体メモリ、例えばFeRAMやMRAM等にも同様に適用可能である。なお、これらの不揮発半導体メモリは価格が高いが、本発明に係るストレージシステムでは、これら高価なメモリの使用量を節減できるので、低価格化が可能になるという別の効果が達成できる。
また、不揮発メモリの代わりに、記憶媒体に比して高速ではあるが価格の高い磁気ディスクなどでも同様の効果が得られる(よって、単なるキャシュメモリだけではなく、いわゆる仮想記憶装置とも呼称される階層構造を有する記憶装置(即ち、磁気ディスク装置を主体に階層化された記憶装置)の構築にも適用可能である)。また、上記の実施例では、記憶媒体は磁気ディスクなどの大容量で比較的低速な記憶媒体としたが、記憶媒体としては、上記の記憶媒体とは別に、1つ以上のストレージを使用してもよい。
なお、本発明に係るストレージシステムの各構成要素の処理の少なくとも一部をコンピュータ制御により実行するものとし、かつ、上記処理を、図10,11,12の各フローチャートで示した手順によりコンピュータに実行せしめるプログラムは、半導体メモリを始め、CD−ROMや磁気テープなどのコンピュータ読み取り可能な記録媒体に格納して配付してもよい。そして、少なくともマイクロコンピュータ、パーソナルコンピュータ、汎用コンピュータを範疇に含むコンピュータが、上記の記録媒体から上記プログラムを読み出して、実行するものとしてもよい。
本発明は、ディスクアレイのキャッシュ制御、パーソナルコンピュータやサーバなどが内蔵する磁気ディスクのキャッシュ、特に大容量バッテリーによるバックアップを必要とするキャッシュの構築に好適に適用可能である。また、磁気ディスク装置や光ディスク装置などを主体とする階層記憶装置においても、停電時保証を必要とするキャッシュ機構が用いられる場合には適用可能である。
本発明の実施の形態に係るストレージシステムの全体構成を示す構成図である。 本実施の形態に係るストレージシステムのキャッシュ管理情報の全体構成を示す構成図である。 キャッシュタグ202の構成を示す構成図である。 不揮発メモリ401上のページ構成を示す構成図である。 揮発メモリ501上のページ構成を示す構成図である。 空きページ管理のためのリンク構成を示す構成図である。 揮発メモリに割り当てられるCleanなキャッシュページのLRU構成を示す構成図である。 不揮発メモリに割り当てられるDirtyなキャッシュページのLRU構成を示す構成図である。 不揮発メモリに割り当てられるCleanなキャッシュページのLRU構成を示す構成図である。 本発明の実施の形態に係るストレージシステムのライトリクエスク時の動作を示すフローチャート図である。 本発明の実施の形態に係るストレージシステムのリードリクエスク時の動作を示すフローチャート図である。 本発明の実施の形態に係るストレージシステムの電源断後の復旧動作を示すフローチャート図である。 本実施の形態に係るストレージシステムにおけるキャッシュ制御情報の初期値の1例を示す説明図である。 本実施の形態に係るストレージシステムにおけるキャッシュ制御情報の1実施例としての状態図を示す説明図である。
符号の説明
101 キャッシュ管理手段
102 不揮発メモリ
103 揮発メモリ
104 記憶媒体
201 キャッシュエントリ
202 キャッシュタグ
301 キャッシュ情報
302 ページポインタ
303 LRUポインタ
303a LRUポインタF
303b LRUポインタB
304 タグポインタ
304a タグポインタF
304b タグポインタB
305 メモリ種別
306 Dirty情報
307 格納アドレス
401 不揮発メモリ
501 揮発メモリ
601 不揮発メモリ空きエントリ
602,603 キャッシュタグ
604 揮発メモリ空きエントリ
605、606 キャッシュタグ
701 揮発Clean LRUエントリ
702〜704 キャッシュタグ
801 不揮発Dirty LRUエントリ
802〜804 キャッシュタグ
901 不揮発Clean LRUエントリ
902〜904 キャッシュタグ

Claims (6)

  1. 上位装置の要求データ入出力速度よりもデータ入出力速度が遅い大記憶装置を備えると共に、前記上位装置と前記大記憶装置とのデータ入出力速度の差を緩和するキャッシュ手段のキャッシュメモリとして、停電時記憶保持用のバッテリーを有する不揮発性半導体メモリと、揮発性半導体メモリとを備えたストレージシステムにおいて、
    前記上位装置からデータ書き込み要求が送出された場合に、前記書き込み要求データを前記不揮発性半導体メモリに一時格納すると共に、前記不揮発性半導体メモリに前記書き込み要求データを格納した時点で、前記上位装置に、前記書き込み要求データの書き込みを完了した旨の通知を応答する手段と、
    前記上位装置からデータ読み出し要求が送出された場合に、前記大記憶装置から前記読み出し要求に合致するデータを読み込んで前記揮発性半導体メモリに格納すると共に、以後、前記上位装置からのデータ読み出し要求が送出された際には、前記揮発性半導体メモリに格納した前記データを読み出して前記上位装置に送出する手段と、
    電源断から復旧した時点で、前記揮発性半導体メモリに格納した前記データのページが存在する場合には、前記ページを無効化する手段と、
    を備えたことを特徴とするストレージシステム。
  2. 前記不揮発性半導体メモリに前記上位装置からの書き込み要求データを書き込む際に実行する手段として、前記揮発性半導体メモリ上に前記書き込み要求データと同一アドレスのデータが存在するか否かを検証する手段と、前記揮発性半導体メモリ上に前記同一アドレスのデータが存在することが判明した場合には前記揮発性半導体メモリ上の前記データの無効化を行う手段と、を備えたことを特徴とする請求項1記載のストレージシステム。
  3. 前記上位装置にはコンピュータシステムが含まれることを特徴とする請求項1記載のストレージシステム。
  4. 前記大記憶装置には磁気ディスク装置または光ディスク装置が含まれることを特徴とする請求項1記載のストレージシステム。
  5. 停電時記憶保持用のバッテリーを有する不揮発性半導体メモリと、揮発性半導体メモリとを備え、上位装置と大記憶装置とのデータ入出力速度の差を緩和するストレージのキャッシュ制御方法において、
    前記上位装置からデータ書き込み要求が送出された場合に、前記書き込み要求データを前記不揮発性半導体メモリに一時格納すると共に、前記不揮発性半導体メモリに前記書き込み要求データを格納した時点で、前記上位装置に、前記書き込み要求データの書き込みを完了した旨の通知を応答するステップと、
    前記上位装置からデータ読み出し要求が送出された場合に、前記大記憶装置から前記読み出し要求に合致するデータを読み込んで前記揮発性半導体メモリに格納すると共に、以後、前記上位装置からのデータ読み出し要求が送出された際には、前記揮発性半導体メモリに格納した前記データを読み出して前記上位装置に送出するステップと、
    電源断から復旧した時点で、前記揮発性半導体メモリに格納した前記データのページが存在する場合には、前記ページを無効化するステップと、
    を有することを特徴とするストレージのキャッシュ制御方法。
  6. 停電時記憶保持用のバッテリーを有する不揮発性半導体メモリと、揮発性半導体メモリとを備え、上位装置と大記憶装置とのデータ入出力速度の差を緩和するキャッシュの制御をコンピュータに実行させるストレージのキャッシュ制御プログラムにおいて、
    前記上位装置からデータ書き込み要求が送出された場合に、前記書き込み要求データを前記不揮発性半導体メモリに一時格納すると共に、前記不揮発性半導体メモリに前記書き込み要求データを格納した時点で、前記上位装置に、前記書き込み要求データの書き込みを完了した旨の通知を応答するステップと、
    前記上位装置からデータ読み出し要求が送出された場合に、前記大記憶装置から前記読み出し要求に合致するデータを読み込んで前記揮発性半導体メモリに格納すると共に、以後、前記上位装置からのデータ読み出し要求が送出された際には、前記揮発性半導体メモリに格納した前記データを読み出して前記上位装置に送出するステップと、
    電源断から復旧した時点で、前記揮発性半導体メモリに格納した前記データのページが存在する場合には、前記ページを無効化するステップと、
    を有することを特徴とするストレージのキャッシュ制御プログラム。
JP2008331452A 2008-12-25 2008-12-25 ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム Pending JP2010152747A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008331452A JP2010152747A (ja) 2008-12-25 2008-12-25 ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008331452A JP2010152747A (ja) 2008-12-25 2008-12-25 ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム

Publications (1)

Publication Number Publication Date
JP2010152747A true JP2010152747A (ja) 2010-07-08

Family

ID=42571742

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008331452A Pending JP2010152747A (ja) 2008-12-25 2008-12-25 ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム

Country Status (1)

Country Link
JP (1) JP2010152747A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5404798B2 (ja) * 2009-09-21 2014-02-05 株式会社東芝 仮想記憶管理装置及び記憶管理装置
JP2014041649A (ja) * 2013-10-28 2014-03-06 Toshiba Corp 仮想記憶管理装置及び記憶管理装置
JP2015018575A (ja) * 2014-09-25 2015-01-29 株式会社東芝 記憶装置、情報処理装置、及びプログラム
JP2015141545A (ja) * 2014-01-29 2015-08-03 日本電気株式会社 ストレージ制御装置、ストレージ制御方法、及び、プログラム
WO2015186243A1 (ja) * 2014-06-06 2015-12-10 株式会社日立製作所 ストレージ装置
US9235515B2 (en) 2012-03-29 2016-01-12 Semiconductor Energy Laboratory Co., Ltd. Array controller and storage system
JP2016015012A (ja) * 2014-07-02 2016-01-28 日本電気株式会社 記憶装置、制御装置、記憶装置の制御方法、及びプログラム
WO2016117129A1 (ja) * 2015-01-23 2016-07-28 株式会社日立製作所 ストレージシステムおよびその制御方法

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471507B2 (en) 2009-09-21 2016-10-18 Kabushiki Kaisha Toshiba System and device for page replacement control between virtual and real memory spaces
US8775752B2 (en) 2009-09-21 2014-07-08 Kabushiki Kaisha Toshiba Virtual memory management apparatus and memory management apparatus
US9910602B2 (en) 2009-09-21 2018-03-06 Toshiba Memory Corporation Device and memory system for storing and recovering page table data upon power loss
US8990525B2 (en) 2009-09-21 2015-03-24 Kabushiki Kaisha Toshiba Virtual memory management apparatus
JP5404798B2 (ja) * 2009-09-21 2014-02-05 株式会社東芝 仮想記憶管理装置及び記憶管理装置
US9235515B2 (en) 2012-03-29 2016-01-12 Semiconductor Energy Laboratory Co., Ltd. Array controller and storage system
JP2014041649A (ja) * 2013-10-28 2014-03-06 Toshiba Corp 仮想記憶管理装置及び記憶管理装置
JP2015141545A (ja) * 2014-01-29 2015-08-03 日本電気株式会社 ストレージ制御装置、ストレージ制御方法、及び、プログラム
US9501414B2 (en) 2014-01-29 2016-11-22 Nec Corporation Storage control device and storage control method for cache processing according to time zones
WO2015186243A1 (ja) * 2014-06-06 2015-12-10 株式会社日立製作所 ストレージ装置
JP2016015012A (ja) * 2014-07-02 2016-01-28 日本電気株式会社 記憶装置、制御装置、記憶装置の制御方法、及びプログラム
JP2015018575A (ja) * 2014-09-25 2015-01-29 株式会社東芝 記憶装置、情報処理装置、及びプログラム
WO2016117129A1 (ja) * 2015-01-23 2016-07-28 株式会社日立製作所 ストレージシステムおよびその制御方法
CN107111459A (zh) * 2015-01-23 2017-08-29 株式会社日立制作所 存储***及其控制方法
JPWO2016117129A1 (ja) * 2015-01-23 2017-11-09 株式会社日立製作所 ストレージシステムおよびその制御方法
US10452321B2 (en) 2015-01-23 2019-10-22 Hitachi, Ltd. Storage system and control method therefor
CN107111459B (zh) * 2015-01-23 2020-06-26 株式会社日立制作所 存储***及其控制方法

Similar Documents

Publication Publication Date Title
US8862808B2 (en) Control apparatus and control method
US20200034304A1 (en) Techniques to perform power fail-safe caching without atomic metadata
US8762661B2 (en) System and method of managing metadata
EP2329361B1 (en) Aggregation of write traffic to a data store
US8549225B2 (en) Secondary cache for write accumulation and coalescing
US8819367B1 (en) Accelerated translation power recovery
JP2010152747A (ja) ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム
US9158673B2 (en) Use of differing granularity heat maps for caching and migration
KR101567134B1 (ko) 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
US20100235568A1 (en) Storage device using non-volatile memory
JP2001166993A (ja) 記憶制御装置およびキャッシュメモリの制御方法
US10423343B2 (en) Information processing device and memory controller
US9940071B2 (en) Memory system that carries out an atomic write operation
KR101023877B1 (ko) 캐시 및 디스크 관리 방법 및 상기 방법을 이용한 컨트롤러
US9471252B2 (en) Use of flash cache to improve tiered migration performance
US8938641B2 (en) Method and apparatus for synchronizing storage volumes
TW202409840A (zh) 非暫態電腦可讀取媒體、儲存裝置、及儲存方法
JP4892812B2 (ja) キャッシュ制御およびデータ処理システム並びにその処理プログラム
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
KR100866513B1 (ko) 플래시 메모리 기반 저널링 파일 시스템을 이용한 데이터처리 방법
KR101474843B1 (ko) 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
JP7470112B2 (ja) 持続性メモリクリーニング
JP4989861B2 (ja) データ書き込み方法及びディスク装置
TW201418984A (zh) 保護碟資料完整性的方法及實現其之電腦程式產品
KR101450157B1 (ko) 비휘발성 저널링 통합 버퍼 캐시와 비휘발성 스토리지를 위한 협동적 데이터 관리 장치 및 방법

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100709