JP2008538437A - インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ - Google Patents

インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ Download PDF

Info

Publication number
JP2008538437A
JP2008538437A JP2008506684A JP2008506684A JP2008538437A JP 2008538437 A JP2008538437 A JP 2008538437A JP 2008506684 A JP2008506684 A JP 2008506684A JP 2008506684 A JP2008506684 A JP 2008506684A JP 2008538437 A JP2008538437 A JP 2008538437A
Authority
JP
Japan
Prior art keywords
memory
inline
persistent storage
storage device
data
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
JP2008506684A
Other languages
English (en)
Other versions
JP2008538437A5 (ja
Inventor
ニコルソン,クラーク・ディー
フォーティン,マイケル・アール
ウィレイ,シャウン・ビー
エルガン,センク
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008538437A publication Critical patent/JP2008538437A/ja
Publication of JP2008538437A5 publication Critical patent/JP2008538437A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2508Magnetic discs
    • G11B2220/2516Hard disks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】 ハード・ドライブの読み取り/書き込み性能を向上させる方法および装置を提供する。
【解決手段】
ソリッド・ステート不揮発性(NV)メモリを有するデバイスを、従来のハード・ドライブに直列に追加し、リード/ライト・キャッシュとして作用する。オペレーティング・システムが指定するデータを、NVメモリに格納する。オペレーティング・システムは、NVメモリに入力するデータのリストを供給する。このデータは、NVメモリ内に張り付けられるデータと、動的なデータとを含む。張り付けられるデータは、オペレーティング・システムが流出させることをNVメモリに命令するまで、NVメモリ内に存続する。動的データは、ハード・ドライブ・コントローラによって流出させることができる。格納のためにアプリケーションが送るデータは、オペレーティング・システムがそれをディスクに引き渡すまで、一時的にNVメモリにデータ・ブロック単位で格納される。
【選択図】 図3

Description

本発明は、一般的には、コンピュータ・システムに関し、更に特定すれば、ハード・ディスク・ドライブの性能向上に関する。
コンピュータ・システム上では、ある種の永続的記憶装置を用いて、コンピュータ・システムの機能発揮のために永続的なメモリを設けている。例えば、磁気ハード・ディスク・ドライブ・アセンブリが当技術分野では周知である。しかしながら、このような永続的メモリにはいくつかの欠点がある。データを読み取るまたは書き込むために磁気ハード・ドライブを用意するのには、時間がかかる。そうするためには、殆どの場合、物理的にディスクのスピニングを開始し、読み取り/書き込みヘッドをディスク上の適正な場所に位置付ける必要がある。
しかしながら、コンピュータ・システムのマイクロプロセッサは、DRAMまたはその他の何らかの種類の揮発性電子メモリというような、高速ランダム・アドレス可能メモリからの命令だけを実行する。このアドレス可能メモリを初期化しオペレーティング・システムをブートするために、EPROM(電子的プログラム可能リード・オンリ・メモリ)または同様のデバイス内に、少量の不揮発性ブート・アップ・メモリが設けられているのが通例である。コンピュータをブートするとき、不揮発性メモリに格納されているブート・プログラムを用いる。ブート・プログラムは、ハード・ディスク上にあるオペレーティング・システムの最初の部分を読み取るコードを収容しており、この最初の部分には、オペレーティング・システムの残り部分をロードし初期化する役割がある。
オペレーティング・システム、エクゼキュータブル(executable)、およびデータのハード・ディスクからの転送は、特に、オペレーティング・システムが大型オペレーティング・システムであるとき、ファイルが大きいとき等には、時間がかかる。これは、コンピュータ・システムをブートするときだけでなく、コンピュータ・システムを休止モード(hibernate mode)から復元する際にも生ずることが多い。転送時間における重要な要因の1つは、ディスク・ドライブのスピン・アップ(spin up)速度に起因する。比較的低いRPMでスピンする比較的小さなディスクでは、スピン・アップし使用可能になるためには5から6秒を要する。マルチ・プラッタ・デバイス(multi-platter device)のような大型ディスクや、高いRPMでスピンするディスクでは、スピン・アップするのに10から12秒を要する。数百または数千ものディスク・ドライブを有し、これらが概ね順次スピン・アップしていくサーバ・システムでは、ディスク・スピン・アップ時間は、サーバ・システムをブートするための総時間の内90パーセント以上を占める可能性がある。ハード・ドライブは、コンピュータ・システムが使用する電力の大部分を消費し、熱負荷の大きな要因となり、システムを冷却するためにファンが必要となり、そのノイズのためにPCから騒音が発生する原因にもなる。
コンピュータ・システムをブートし、休止からコンピュータ・システムを復元する際に速度を高める方法が開発されている。Feigenbaum et alの米国特許第5,307,497号に一例が開示されている。’497特許は、オペレーティング・システムの一部をリード・オンリ・メモリ(ROM)に格納し、電力投入またはリセットの間その一部にアクセスできるようにしたことを教示する。言い換えると、’497特許に開示されている方法は、オペレーティング・システムの設定や使用するアプリケーションに関するユーザの好みを変更することや、コンピュータ・システムを休止から復元することや、オペレーティング・システムの更新または新バージョンには適応していない。
業界で開発した別の例では、ディスク・ドライブとは別個でコンピュータ・メモリ全体を格納するバックアップ・メモリにコンピュータ・メモリの状態を格納する。このバックアップ・メモリは、コンピュータ・メモリ全体を格納するので大きくなる。
本発明は、ハード・ドライブの読み取り/書き込み性能を向上させ、ハード・ディスクにアクセスする回数を減少させる。
オペレーティング・システムは、ハード・ドライブおよびマザーボードと直列でありハード・ディスクに添付されているデバイスの中に、ソリッド・ステート不揮発性(「NV」)メモリに入れるデータのリストを設けることによって、標準的な機械的ドライブを標準的なマザー・ボートと共に用いることを可能にする。データには、NVメモリ内に張り付ける(pin)データや、動的なデータが含まれる。張り付けデータは、オペレーティング・システムがそれを流出させることを命令するまでNVメモリ内に存続する。動的データとは、オペレーティング・システムが優先順位を付けることができるが、それ以外でもハード・ドライブ・コントローラによって制御可能なデータである。
ディスク・ドライブ上のIDコネクタまたは同等物に設置するユニットに、NVメモリを設ける。このユニットは、比較的ディスク・ドライブから取り外し難くなるように、ディスク・ドライブ上に締結することができる。締結することによって、停電後にドライブをコンピュータ・システムから取り外し、改竄する可能性が低下する。一実施形態では、デバイスは、ディスクに書き込むデータ・バーストをバッファするための高速揮発性メモリと、小型バッテリのようなエネルギ蓄積デバイスとを含む。エネルギ蓄積デバイスは、突然の停電の場合に、十分に長い期間デバイスへの給電を維持して揮発性メモリからNVメモリにデータを移動させることができるように、十分な電力を供給する。動作の間、ユニットのコントローラは、オペレーティング・システムからのコマンドをキャッシュし、機械式ディスクをスピン・ダウンできるように、ディスクの代わりにNVMメモリに書き込みをバッファすることによって、レイテンシ、電力消費、ならびにドライブ上における磨耗および磨滅を低減する。
NVメモリは、ドライブに書き込まれたデータを一時的にバッファするために、システム動作中に用いられる。NVメモリ上で利用可能なリソースが閾値未満となったとき、NVメモリに格納されているデータをディスク・ドライブに転送する。これによって、システムが動作しているときに、ディスク・ドライブをスピン・アップする回数が減少する。
オペレーティング・システムがユニットにおけるNVメモリ・キャッシュを制御することを可能にするインターフェースも提供する。このインターフェースは、オペレーティング・システム、ユニット、およびハード・ドライブが通信するためのコマンドを備えている。インターフェースは、ハード・ドライブの能力を判定するコマンド、ブロックのリストをNVメモリに張り付けるコマンド、ブロックのリストをNVメモリに予めキャッシュしておくコマンド、コマンドをNVメモリからハード・ドライブ・ディスクに流出させるコマンド、書き込みトランザクションを備えたブロック集合をNVメモリに書き込むコマンド、および書き込みトランザクションをハード・ドライブ・ディスクに委ねるコマンドを含む。
本発明の追加の特徴および利点は、添付図面を参照しながら進める、以下の例示の実施形態の詳細な説明から明白となろう。
添付した特許請求の範囲は、本発明の特徴を特定的に明記するが、本発明は、その目的および利点と共に、添付図面と関連付けた以下の詳細な説明から最も深く理解することができる。
本発明は、従来のハード・ディスク・ドライブの電力消費を低減し、ハード・ディスク・ドライブの読み取り/書き込み性能を向上し、コンピュータ・システムのブート時間および休止起動時間を短縮する。フラッシュ・メモリのようなソリッド・ステート不揮発性メモリ技術でデータを格納する。スタティック・コンフィギュレーション・データとは、オペレーティング・システムおよびアプリケーション・プログラム命令、ならびにオペレーティング・システムに対するアップグレードがインストールされた後、またはアプリケーションがインストールされた後を除いて、オペレーティング・システムがブートしたり、アプリケーションが起動する毎に変化しないデータのことである。ダイナミック・コンフィギュレーション・データとは、プログラム命令や、オペレーティング・システムのブート毎またはアプリケーションの起動毎に変化するデータであり、実行中いずれの時点でも変化する可能性がある。以下に続く説明では、ソリッド・ステート不揮発性メモリを示すために「NVメモリ」という用語を用いる。NVメモリは、電力を除去したときにそのデータを保持し、消去して新しいデータでプログラムすることができる種類のメモリであれば、そのいずれをも想定している。NVメモリは、バッテリ・バックアップ・メモリを含むこともできる。NVメモリは、マザーボードとハード・ディスク・ドライブとの間に、ディスク・ドライブ・インターフェースと直列に配置される。
将来の移動体システム用ディスクは、実際にはディスクをスピンさせておくための電力を引き込むことなく、そのメモリを生かし続けるためにバッテリから電力を引き込むこともあり得る。NVメモリは、ファイル・データ、ファイル・メタデータだけでなく、ブート・セクタやパーティション・テーブルのような既知のディスク・セクタも格納することができる。電力遮断または休止モードへの移行の間、コンピュータ・システムは、以前の使用履歴に基づいて、NVメモリに格納するスタティックおよびダイナミック・コンフィギュレーション・データを決定する。また、ディスク・ドライブをスピン・アップする回数を減少するために、システム動作中にもデータをNVメモリに格納する。移動体PC等では、ディスク・ドライブをスピン・アップする回数を減少することによって、ユーザの使用感(experience)が向上する。何故なら、電力が減少することによって、所与のバッテリ容量では、移動体デバイスが小さく軽い程、使用できる時間が長くなるからである。また、ノイズが多くて五月蝿くユーザにとって煩わしい高速ファンを走らせる必要性も低減する。コンピュータ・システムに電力を投入するときまたは休止から起動するとき、NVメモリ内にあるコンフィギュレーション・データを用いて、ダイナミック・システム・メモリを初期化するので、ディスク・ドライブをスピン・アップする必要がない。ディスクからの追加ファイルが必要な場合、NVメモリからの初期化と同時にディスク・ドライブをスピン・アップすることができるので、ディスクのスピン・アップによって初期化プロセスが遅れることはない。
図面に移ると、同様の参照番号は同様の要素を示しており、相応しい計算機環境において実施した場合の本発明が図示されている。必須ではないが、本発明の説明は、総じて、パーソナル・コンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令との関連において行うこととする。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実装する。更に、本発明は、他のコンピュータ・システム構成とでも実用可能であることを、当業者は認めよう。他のコンピュータ・システム構成には、ハンド・ヘルド・デバイス、マルチ・プロセッサ・システム、マイクロプロセッサに基づくまたはプログラム可能な消費者用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ等を含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算機環境では、プログラム・モジュールは、ローカルおよびリモート・メモリ記憶装置双方に配することができる。
図1は、本発明を実施することができる、適した計算システム環境100の一例を示す。計算システム環境100は、適した計算機環境の一例に過ぎず、本発明の使用範囲や機能性について限定を示唆する意図は全くない。また、計算機環境100は、動作環境例100に示す構成要素のいずれの1つまたは組み合わせに関しても、何らかの依存性や必須要件を有するという解釈は行わないこととする。
本発明は、多数のその他の汎用または特殊目的用計算システム環境や構成とでも動作する。本発明と共に用いるのに適していると思われる周知の計算システム、環境、および/または構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンド・ヘルドまたはラップトップ・コンピュータ、マルチ・プロセッサ・システム、マイクロプロセッサに基づくシステム、セット・トップ・ボックス、プログラマブル消費者用電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、前述のシステムまたはデバイスのいずれをも含む分散型計算機環境等が含まれる。
本発明の説明は、総じて、コンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令との関連において行うこととする。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実現する。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算機環境では、プログラム・モジュールは、メモリ記憶装置を含むローカルおよびリモート・コンピュータ記憶媒体双方に配することができる。
図1を参照すると、本発明を実施するシステム例は、コンピュータ110の形態とした汎用計算機を含む。コンピュータ110の構成要素は、限定ではなく、演算装置120、システム・メモリ130、およびシステム・バス121を含むことができる。システム・バス121は、システム・メモリを含む種々のシステム構成要素を演算装置120に結合する。システム・バス121は、数種類のバス構造のいずれでもよく、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス構造のいずれかを用いるローカル・バスを含む。限定ではなく一例として、このような構造には、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、改良ISA(EISA)バス、ビデオ電子規格連合(VESA)ローカル・バス、およびMezzanine バスとしても知られている周辺素子相互接続(PCI)バスが含まれる。
コンピュータ110は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ110がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。限定ではない一例をあげると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体から成ると考えられる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリまたはその他のメモリ技術、CD−ROM、ディジタル多様ディスク(DVD)またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピュータ110がアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波またはその他の移送機構のような変調データ信号において具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、当該信号内に情報をエンコードするように、その特性の1つ以上が設定または変更した信号を意味する。限定ではない一例を上げると、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、RF、赤外線、およびその他のワイヤレス・媒体というようなワイヤレス媒体を含む。前述のいずれの組み合わせも、コンピュータ読み取り可能媒体の範囲に当然含まれるものとする。
システム・メモリ130は、リード・オンリ・メモリ(ROM)131およびランダム・アクセス・メモリ(RAM)132のような揮発性および/または不揮発性メモリの形態で、コンピュータ記憶媒体を含む。基本入出力システム133(BIOS)は、起動中のように、コンピュータ20内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、典型的にROM131内に格納されている。RAM132は、典型的に、演算装置120が直ちにアクセス可能であるデータおよび/またはプログラム・モジュール、または現在これによって処理されているデータおよび/またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図1は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137を示す。
また、コンピュータ110は、その他のリムーバブル/非リムーバブル揮発性/不揮発性コンピュータ記憶媒体も含むことができる。一例としてのみ、図1は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ141、リムーバブル不揮発性磁気ディスク152からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ151、ならびにCD ROMまたはその他の光媒体のようなリムーバブル不揮発性光ディスク156からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ155を示す。動作環境の一例において使用可能なその他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれる。ハード・ディスク・ドライブ141は、典型的に、インターフェース140のような非リムーバブル・メモリ・インターフェースを介してシステム・バス121に接続され、磁気ディスク・ドライバ151および光ディスク・ドライブ155は、典型的に、インターフェース150のようなリムーバブル・メモリ・インターフェースによって、システム・バス121に接続する。
先に論じ図1に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ110のその他のデータを格納する。図1では、例えば、ハード・ディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136、およびプログラム・データ137と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム144、アプリケーション・プログラム145、その他のプログラム・モジュール146、およびプログラム・データ147は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード162、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス161によって、コマンドおよび情報をコンピュータ110に入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース160を介して、演算装置120に接続されている。ユーザ入力インターフェース160は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス(USB)のようなその他のインターフェースおよびバス構造によって接続することも可能である。モニタ191またはその他の形式の表示装置も、ビデオ・インターフェース190のようなインターフェースを介して、システム・バス121に接続されている。モニタに加えて、コンピュータは、スピーカ197およびプリンタ196のようなその他の周辺出力デバイスを含むこともでき、これらは出力周辺インターフェース190を介して接続することができる。
コンピュータ110は、リモート・コンピュータ180のような1つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ180は、パーソナル・コンピュータ、ハンド・ヘルド・デバイス、サーバ、ルータ、ネットワークPC、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、典型的に、コンピュータ110に関して先に説明したエレメントの多くまたは全てを含むが、図1にはメモリ記憶装置181のみを示す。図1に示す論理接続は、ローカル・エリア・ネットワーク(LAN)171およびワイド・エリア・ネットワーク(WAN)173を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、一般的である。
LANネットワーク環境で用いる場合、コンピュータ110は、ネットワーク・インターフェースまたはアダプタ170を介してLAN171に接続する。WANネットワーク環境で用いる場合、コンピュータ110は、典型的に、モデム172、またはインターネットのようなWAN173を通じて通信を確立するその他の手段を含む。モデム172は、内蔵でも外付けでもよく、ユーザ入力インターフェース160またはその他の適切な機構を介してシステム・バス121に接続することができる。ネットワーク環境では、コンピュータ110に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ記憶装置に格納することもできる。一例として、そして限定ではなく、図1は、リモート・アプリケーション・プログラム185がメモリ素子181上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。
以下に続く説明では、特に指示がない限り、1台以上のコンピュータが実行する動作のアクト(act)および象徴的表現を参照しながら本発明について説明する。したがって、このようなアクトおよび動作は、コンピュータによって実行されると言う場合もあり、コンピュータの演算装置による構造化形態のデータを表す電気信号の操作を含むことは言うまでもない。この操作は、データを変換するか、またはコンピュータのメモリ・システムにおける位置に保持し、当業者には周知のやり方で、コンピュータの動作を再構成するかまたはその他の変更を行う。データが保持されているデータ構造は、当該データのフォーマットによって定義される特定のプロパティを有するメモリの物理的位置である。しかしながら、前述の文脈で本発明について説明していくが、これは限定を意味するのではない。何故なら、以下に記載する種々のアクトおよび動作はハードウェアでも実施可能であることは、当業者に認められるからである。
これより図2に移ると、NVメモリ200は、コンピュータの別個の構成要素220として、コンピュータ110内に配置することができ、マザーボードおよびハード・ディスク・ドライブ間にディスク・ドライブ・インターフェースと直列に配置されている。NVメモリ200は、別個の構成要素220とすれば、NVメモリ200を有さない旧式のシステム上において性能を向上させることができ、NVメモリを有するハード・ドライブを設置する必要はない。
これより図3および図4a〜図4bに移ると、永続的記憶装置300(即ち、ハード・ディスク・ドライブ141)は、ディスク・アセンブリ302を有し、ディスク・アセンブリ302は、1つ以上のディスク304のような不揮発性メモリ記憶媒体、ディスク304に対して読み取りおよび書き込みを行うリード/ライト・ヘッド306、ならびにリード/ライト・ヘッド306をディスク304上の位置に移動させるスピンドル/電機子アセンブリ308を含む。コントローラ310は、ディスク・アセンブリに、記憶媒体からデータを読み出すこと、またはデータを記憶媒体に書き込むことを命令する。NVメモリ200は、デバイス220内に設けられている。デバイス220は、ディスク・ドライブ上のIDコネクタ320または同等物(および電力接続部322)上に設置されている。ATA(先進技術添付:Advanced Technology Attachment)ケーブル324が、デバイス220およびマザーボード111に接続する。電力は、コネクタ326を通じてデバイス220に供給される。図4aおよび図4bは、標準的なデスク・トップ・ハード・ドライブのIDコネクタ320上に設置したデバイス220を示すが、デバイス220はこのようなコネクタに限定されるのではなく、デバイス220は他のコネクタ、または、例えば、限定ではなく、ラップ・トップ・ハード・ディスク・ドライブのような移動体デバイスのハード・ドライブ・コネクタのようなコネクタ上にも設置可能であることは、当業者には認められよう。デバイス220は、ディスク・ドライブからデバイス220を取り外し難くなるまたは殆ど取り外せなくなるように、ディスク・ドライブ上に締結即ち永続的に装着することができる。締結/永続的装着により、停電後にドライブ300をコンピュータ・システムから取り外し、改竄する可能性が低下する。
一実施形態では、小型バッテリのようなエネルギ蓄積デバイス222を設け、電力を維持するのに十分な電力を揮発性メモリ226および不揮発性メモリに供給し、突然の停電の場合に、揮発性メモリからNVメモリにデータを移動させることができるように十分に長い期間給電する。
動作の間、デバイスのコントローラ224は、オペレーティング・システムからのコマンドをキャッシュし、即ち、先取(intercept)し、機械式ディスク304をスピン・ダウンできるように、ディスク304の代わりにNVMメモリ200に書き込みをバッファすることによって、レイテンシ、電力消費、ならびにドライブ上における磨耗および磨滅を低減する。また、コントローラは、オペレーティング・システムからのコマンドを先取し、そのコマンドをコントローラ310に受け渡す。
コンピュータ110は、ディスク304の大領域に対するアクセス時間が、典型的な時間である約10ミリ秒ではなく、500マイクロ秒以下であることを観察することによって、NVメモリの存在を検出することができる。代替実施形態では、NVメモリ200をオペレーティング・システムに明示して、オペレーティング・システムおよびその他の構成要素がNVメモリ200のサイズを問い合わせ、NVメモリ200の状態を制御し、トランザクション手順を用いてデータをNVメモリ200に書き込み、そして前述のように、NVメモリ200を書き込みバッファとして用いることができるようにする。用いることができるAPIの一実施形態が、本願と同じ譲受人に譲渡された、"Non-Volatile Memory Cache Performance Improvement"(不揮発性メモリ・キャッシュの性能向上)と題し、2004年5月3日に出願された米国特許出願第10/837,986号にあり、ここで引用したことにより、その内容全体が本願にも含まれるものとする。
これより、図5から図7を参照して、本発明の動作について説明する。尚、以下に記載するステップは、順次、並列、または順次および並列の組み合わせでも実行可能であることを注記しておく。ディスク304のスピン・アップ時間を判定する(ステップ500)。比較的遅い速度でスピンする比較的小型のディスクでは、スピン・アップ時間は通例3から6秒である。それよりも大きいディスク、マルチ・プラッタ・ディスク、および更に速い速度でスピンするディスクでは、スピン・アップ時間は10から12秒近くとなる。一実施形態では、スピン・アップ時間を推論するには、スピンしていない(即ち、アクセスされていない)ディスク・ドライブから1ページをシステム・メモリにロードするのに要する時間を判定する。スピン・アップ時間は、ロード時間にほぼ等しい。何故なら、ロード時間はスピン・アップ時間によって決まるからである。
コンピュータ・システムの電源を切るとき(ステップ502)、NVメモリに格納するスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを決定する(ステップ504)。スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データの選択は、スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを初期化する時間がディスク・ドライブのスピン・アップ時間にほぼ等しくなるように行う。スタティックおよびダイナミック・コンフィギュレーション・データは、ディスク・ドライブからのデータを初期化する必要がないコンフィギュレーション・データである。これは、キーボード・デバイス、ポインティング・デバイス、USBサブシステム、ビデオ・サブシステム等のコンフィギュレーション・データを含むことができる。必要なNVメモリのサイズは、スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データのサイズに等しい。多くのオペレーティング・システムでは、必要なNVメモリのサイズは、16MBから64MBの範囲である。オペレーティング・システムによっては、CPU圧縮のコストを削減するために、NVメモリを128MB必要とする場合もある。
スタティック・コンフィギュレーション・データは、全てのユーザのために用いられるシステム・コンフィギュレーション・データである。例えば、Windows(登録商標)オペレーティング・システムでは、スタティック・コンフィギュレーション・データは、NVメモリ上に格納されているスタティックおよびダイナミック・コンフィギュレーション・データならびにディスク・ドライブ上に格納されているコンフィギュレーション・データをロードするためのブート・ストラップ・コードを含む。Windows(登録商標)オペレーティング・システムにおける他のスタティック・コンフィギュレーション・データは、レジストリ初期化(smss.exe)、ビデオ初期化(csrss.exe)、シェル、ダイナミック・リンク・ライブラリから走るサービス(svchost.exe)、IPSecおよびネットワーク・ログインのようなセキュリティ・サービス(lsass.exe)のようなカーネルを初期化するために必要なファイルを含む。電力を切っているコンピュータ・システムでは、NVメモリに格納されているスタティック・コンフィギュレーション・データは、ブート・ストラップ・コード、カーネル初期化ファイル、ビデオ初期化ファイル、シェル、およびディスク・ドライブをスピン・アップしている間必要となるサービス(例えば、ダイナミック・リンク・ライブラリ)を含む。
ダイナミック・コンフィギュレーション・データは、ユーザ毎のシステム・コンフィギュレーション・データである。例えば、ダイナミック・コンフィギュレーション・データは、デスクトップ設定(例えば、背景画像、アイコンの場所等)、セキュリティ証明書(security credential)、インターネットお気に入りファイル、フォント、起動プログラム、キーボード設定、計画決定タスク、資金情報等のような個人的データ・ファイルを含む。電力を切っているコンピュータ・システムでは、NVメモリに格納されているダイナミック・コンフィギュレーション・データは、デスクトップ設定、キーボード設定、およびセキュリティ・クリデンシャルを含む。
選択したスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データをNVメモリ200に格納する(ステップ506)。残りのコンフィギュレーション・データをディスク・ドライブに格納する(ステップ508)。一実施形態では、NVメモリの量は、必要となる最小サイズよりも大きい。システムの電力遮断は、アプリケーションがディスクに書き込んでいるデータのような、格納するためにディスクに送られつつあり、オペレーティング・システムが制御することができないデータをNVメモリ200に送って格納することにより減少する(ステップ510)。これによって、ディスクへの書き込み回数が減少し、電力遮断時間が短縮する。次いで、コンピュータ・システムの電力を切る。
システムが休止に移りつつある場合(ステップ514)、同様のステップを行う。NVメモリに格納するスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを決定し(ステップ516)、メモリに格納する(ステップ518)。このデータは、グラフィカル・ユーザ・インターフェースを素早く「再描画」(即ち、復元)するために必要なデータである。スタティック・コンフィギュレーション・データは、カーネル初期化ファイル、ビデオ初期化ファイル、シェル、および休止の前に使用されていたダイナミック・リンク・ライブラリから走るサービスを含む。ダイナミック・コンフィギュレーション・データは、デスクトップ設定、キーボード設定、フォント、および休止の前に使用されていた個人データ・ファイルを含む。
残りのコンフィギュレーション・データをディスク・ドライブに格納する(ステップ520)。アプリケーションから受け取った書き込みを、利用可能なNVメモリに最初に書き込み、NVメモリが利用できない場合、ディスク・ドライブに格納する(ステップ522)。次いで、コンピュータ・システムは休止モードに入る(ステップ524)。
一実施形態では、NVメモリはシステム動作中に用いられる。アプリケーションまたはオペレーティング・システムがデータをディスクに送り格納している場合(ステップ526)、データをNVメモリ200に格納する(ステップ528)。システムの電力を切っているとき、または休止に移行しつつあるとき、NVメモリ200に格納されているデータをディスク・ドライブに転送する。インライン・デバイスは、NVメモリ・キャッシュを含む混成ディスクを制御するために用いられる新しいコマンドを受ける場合がある。これらの新しいコマンドは、インライン・デバイス・コントローラ224によって、ハード・ディスク・ドライブ・コントローラ310が解釈することができる旧来のコマンドに変換される(ステップ530)。NVメモリの利用可能空間が減少して閾値未満になった場合(ステップ532)、NVメモリ内のデータをディスク・ドライブに転送する(ステップ534)。データをディスク・ドライブに転送する理由の1つは、休止から動作を再開するため、またはシステムをブートするために必要なコンフィギュレーション・データのために余裕を作ることである。NVメモリにデータを格納することにより、動作の間にディスク・ドライブをスピン・アップする回数が減少する。これによって、ユーザの計算機、特にポケット・サイズ・デバイスに対する使用感が向上する。何故なら、電力消費が削減され、ノイズの多い高速ファンの必要性が大幅に低下するからである。加えて、スピンしデータをディスクに書き込んでいるディスク・ドライブのノイズは殆ど聞こえない。
図7は、コンピュータ・システムをブートする際、またはコンピュータ・システムを休止モードから復元する際に行われるステップを示す。コンピュータ・システムがディスク・ドライブからブートするときまたは休止モードから起動するとき、コンピュータ・システムは、NVメモリ200に格納されているスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データをシステムDRAMにロードすることによって、システムDRAMを初期化する(ステップ700)。必要な全ての初期化データがNVメモリに格納されておらず、追加の情報をディスクからロードしなければならない場合、最初にコンフィギュレーション・データをNVメモリからロードするが、その時間中、ディスク・ドライブはスピン・アップしている(ステップ702)。これによって、事実上、ディスク・ドライブのスピン・アップ時間がブート時間および起動時間から消滅する。一旦ディスク・ドライブがスピン・アップしたなら、ディスク・ドライブに格納されている残りのコンフィギュレーション・データをロードして、システムDRAMを初期化する(ステップ704)。このとき、ユーザが電源ボタンを押すと、ディスク・ドライブがスピン・アップするのを待たなければならないのではなく、モニタ191またはその他の種類の表示装置がオンになる時点までに、またはオンになった直後に、応答対話ログオン画面が現れるという体験をユーザは実感する。ユーザがユーザ・アイコン上でクリックしパスワードを打ち込む間に、デスクトップを表示するために必要なサービスが初期化される。ディスクがスピン・アップし、NV内のデータがディスク・ドライブ上のデータと一致することが検証された後、応答および使用可能なデスクトップがユーザに示される。一実施形態では、キャッシュされているデータの全てを比較することはない。しかしながら、パーティションまたはファイル・システム・メタデータ内で不一致があった場合、コンピュータ・システムはバグ・チェックを行い、サービス/ヘルプ・モードに移行して、次のブートのときに遅いブートを試行できるようにしなければならない。再現(recovery) または下位互換性の目的でNVメモリを迂回し、コンピュータ・システムを安全モードでオンにするためには、ヘルプ・ボタンまたはスイッチを用いることができる。
代替実施形態では、NVメモリ200をオペレーティング・システムに明示して、オペレーティング・システムおよびその他の構成要素がNVメモリ200のサイズを問い合わせ、NVメモリ200の状態を制御し、トランザクション手順を用いてデータをNVメモリ200に書き込み、NVメモリ200をライト・バッファとして用いることができるようにする。この実施形態は、種々の方法で実施することができる。NVメモリは、図3に示すように、デバイス220内に位置付けることもできる。データをNVメモリ内にキャッシュし、ディスクに締結されているデバイス上にもデータがある場合、プロセッサのオペレーティング・システムは、ディスクからのデータの代わりに、NVメモリ200内にキャッシュされているデータを用いる。
図8は、前述の実施態様の一実施形態においてハードウェアと相互作用するオペレーティング・システムのストレージ・ソフトウェア・スタックを示し、インライン・デバイス220とハード・ディスク・ドライブとによって混成ドライブのような構成となっている。この混成ドライブは、スピンする磁気媒体およびソリッド・ステート不揮発性メモリを内蔵し、混成ディスクのために定義した新しいコマンド集合に応答する。予測揮発性リード・キャッシュ制御モジュール802が、次の時間間隔において要求されるデータを予測し、そのデータをハード・ディスク・ドライブ141から揮発性システム・メモリ130に読み込むことにより、ディスクからの読み出しを最少に抑える。これによって、インラインNVキャッシュ・デバイス220のライト・バッファ機能と組み合わせるときに、ディスク・プラッタを長期間にわたってスピン・ダウンすることが可能になる。
これより図9に移り、オペレーティング・システムおよびドライバが不揮発性メモリを制御する、本発明の代替実施形態にを示す。オペレーティング・システムのストレージ・ドライバ・スタック800が示されている。以下に続く説明では、図3におけるように、ハード・ドライブ300およびインラインNVメモリ・デバイス220を示す。オペレーティング・システム134、アプリケーション・プログラム135、その他のプログラム・モジュール136が、データ(例えば、文書、スプレッドシート、ファイル、グラフィックス等)をストレージ・ドライバ・スタック800に送る。予測キャッシュ制御モジュール802は、揮発性メモリ132およびハード・ドライブ300ならびにNVメモリ200内にあるものを制御する。ファイル・システム・フィルタ・ドライバ804は、予測キャッシュ制御モジュール200からデータを受け取る。ファイル・システム・フィルタ・ドライブ804の主要な機能は、NVキャッシュ200が満杯のときというような、エラーにしかるべく対処することである。ファイル・システム・フィルタ・ドライバ804は、ファイル・システム(即ち、NTFS)806を通じてデータを受け渡し、オペレーティング・システム134がこのデータを用いて、ハード・ドライブ300内にあるハード・ディスクにファイルを格納し、ハード・ディスクからファイルを検索する。
ライト・キャッシュ・フィルタ・ドライバ808は、ファイル・システム806および予測キャッシュ制御モジュール802からデータを受け取る。ライト・キャッシュ・フィルタ・ドライバ808は、NVメモリ200にバッファするデータを、NVMドライバ224(例えば、コントローラ224)に送る。NVMドライバ224は、NVメモリ200にもはや容量がない(即ち、満杯)ときを検出し、ファイル・システム・フィルタ・ドライバ804にメッセージを送り、NVメモリ200が満杯であることを示す。これに応答して、ファイル・システム・フィルタ・ドライバ804は、予測キャッシュ制御モジュール802に、NVメモリ200に格納容量ができるまでNVメモリ200にデータを送るのを停止するように通知する。加えて、予測キャッシュ制御モジュール802は、メモリ200からハード・ドライブ300に流出させるデータ・ブロックのリストをNVMドライバ224に供給する。
ライト・キャッシュ・フィルタ・ドライバ808は、NVメモリ200およびハード・ドライブ300を同期させる。データがNVメモリ200およびハード・ドライブ300に格納されている場合、ライト・キャッシュ・フィルタ・ドライブ808は、NVメモリ200におけるライト・キャッシュをハード・ドライブ300と同期させる必要があるときに、NVメモリ200から読み出す。データは、NVメモリ200に、そしてNVメモリ200からハード・ドライブ300に交流的に(transactionally)書き込まれる。これによって、システム100は継ぎ目無く作業し続けることができる。書き込みが完了すると、トランザクション完了メッセージがライト・キャッシュ・ドライバ808に送られる。トランザクションの書き込みによって、書き込みに失敗した場合や割り込まれた場合(即ち、完了メッセージが受け取られない)に、書き込みを再試行することができる。停電またはその他の何らかの理由のために、NVメモリ200からハード・ドライブ300間のトランザクションの間にシステムが再ブートした場合、ライト・キャッシュ・フィルタ・ドライバ808は、システムが再度ランし始めた後に、ハード・ドライブ300を、NVメモリ200に格納されているデータと同期させる。ハード・ドライブがNVメモリを有するシステムでは、ハード・ドライブ内にあるコントローラがデータを同期させる。
ストレージ・ドライバ810は、ハード・ドライブ300に送るデータを受け取る。ストレージ・ドライバ810はブロック単位でデータを送る。これはiSCSIまたは同等物とするとよい。iSCSIはブロック・ストレージ転送を可能にする。これは、SCSIコマンドをTCP/IP内に封入し、標準的なネットワーク技術上において高性能ストレージ・エリア・ネットワーク(SAN)を可能にするプロトコルである。ストレージ・ドライバ810は、データをデータ・ブロックに変換し(iSCSIが用いられる場合にはSCSI−3)、このデータ・ブロックをハード・ドライブ300に送る。
先に示したように、予測キャッシュ制御モジュール802は、NVメモリ200に格納されるものを決定する。一般に、予測キャッシュ制御モジュール802は、長時間にわたってユーザの挙動を見つめて、ユーザが頻繁にアクセスするプログラムおよびデータを判定し、そのデータを格納する。このデータは、NVメモリ200内にあるスタティックおよびダイナミック・コンフィギュレーション・データを含む。ここで用いられるデータは、計画決定タスク、資金情報、データ・ファイル等のような、個人データ・ファイルを含む。モジュール802は、ユーザの挙動を予測できるようになるまで、デフォルトで開始する。スタティックおよびダイナミック・コンフィギュレーション・データは、以前の使用履歴に基づき、ユーザが頻繁に要求するデータから成る。スタティック・コンフィギュレーション・データは、周期的に変化しないデータである。ダイナミック・コンフィギュレーション・データは、周期的に変化し、ユーザ毎にあるデータである。コンフィギュレーション・データは、キーボード・デバイス、ポインティング・デバイス、USBサブシステム、ビデオ・サブシステム、出力周辺ドライバ(例えば、プリンタ・ドライバ)、オペレーティング・システム、アプリケーション・プログラム、データ・ファイル等を含むことができる。
NVメモリ200がハード・ドライブ226に取り付けられ、デバイス220およびハード・ドライブ300から成る場合、NVMドライバ812およびストレージ・ドライバ810を組み合わせて単一のモジュール1000(図10参照)とする。ハード・ドライブ・ドライバ1000は、コントローラ224およびハード・ドライブ・コントローラ310と通信して、ディスクの能力およびディスクの状態を判定し、NVメモリ内に置くブロックおよびこれらのブロックの優先度を指定し、NVメモリ内に無期限で保存するブロックを指定し、NVメモリ200からディスク304に流出させるときを指定し、ブロックのディスク304への書き込み動作を委ねる(commit)ときを指定する。この場合、NVメモリ200内にブロックを有し、システム・メモリに素早くロードすることができるので、ユーザにとって性能が向上する。例えば、オペレーティング・システム134は、ハード・ドライブ226に、オペレーティング・システム134がコンピュータ110をブートするために必要とするファイルを、NVメモリ200内に置くように要請することができる。次回コンピュータ・システムに電源を入れるとき、BIOS POST(パワー・オン・セーフ・テスト)が終了した後に、オペレーティング・システム134は、ディスク304がスピン・アップするのを待つことなく、NVメモリ200からブートすることができる。NVメモリ・キャッシュ200は、Microsoft Outlook(登録商標)におけるユーザ連絡先リストのような、ユーザがインターフェースを通じて識別したデータを収容し、瞬時に利用できる状態に保持しておくことができる。ユーザは、彼または彼女のコンピュータに電源を投入し、連絡先情報を検索し、記憶媒体として用いられるNVメモリを有していないコンピュータをブートする場合に要する時間の後、再度電源を切る。
NVメモリ・キャッシュ200は、キャッシュ・メモリ・ブロックのアレイ(例えば、キャッシュしたディスク・ブロック、ページ、セクタ、ファイル等のアレイ)から成り、各ブロックを張り付けることができる。一実施形態では、各ブロックは、タグと、これに付随するピン・ビットとを有し、ブロックが張り付けられているか否かを示す。張り付けられていないブロックは、オペレーティング・システム134によって優先度を決めることができるデータを収容するが、ディスク・コントローラ310の制御を受ける。張り付けブロックとは、オペレーティング・システム134によって制御され、オペレーティング・システム134が張り付けブロックをNVメモリから移動させる許可を与えなければ、コントローラ310がNVメモリから移動させることができない、アレイ内のブロックである。張り付けブロック内にあるデータは、オペレーティング・システムがそれを外す(unpin)まで、NVメモリ内に存続する。メモリは、コンピュータ・システムのブートからブートの間存続するように張り付けることができる。張り付けブロック内にあるデータは、通例、スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを含む。
記憶装置226(ハード・ディスク300およびデバイス220の組み合わせ)は、そのNVM能力、およびスピンしている媒体の現在の状態を、オペレーティング・システム134に報告する。NVM能力およびスピンしている媒体の現在の状態は、NVメモリ・キャッシュ200のサイズ、NVメモリがサポートする機構(例えば、ブロックを「張り付ける」ことができるか否か)、およびディスク304の状態(例えば、停止中、スピン中、スピン・アップ中、スピン・ダウン中)というような情報を含む。
オペレーティング・システム134は、ハード・ディスク・コントローラおよびデバイス・コントローラ224と通信し、コントローラ310に情報およびコマンドを供給する。この情報は、ブートからブートの間キャッシュ内に存続するようにNVメモリ200内に張り付けるブロックのリスト、ユーザが作業している間にNVメモリ200に「予めキャッシュしておく」ブロックのリスト、および予めキャッシュしておくブロックの優先度を収容したリストを含む。オペレーティング・システムは、使用場面に基づいて、書き込みアクセスされる次のブロック集合を予測し、次のブロック集合のリストをNVメモリ200に供給して、予めキャッシュしておく。ブロックを予めキャッシュしておく際の優先度は、必要であればディスク304をスピン・アップすることも含めて予備キャッシュを直ちに行うべきか、または次回ディスク304がするときに行うことができるか否かを含む。
また、この情報は、NVメモリ200からディスク304に流出させるブロックのリスト、NVメモリ200の全てをディスク304に流出させる命令、NVメモリ200内に張り付けられているブロックをディスク304に流出させる命令、NVメモリ200内にある動的(即ち、張り付けられていない)ブロックをディスク304に流出させる命令、書き込みトランザクションを表すブロックまたはセグメント集合の指定(これらのブロックは、NVメモリ内の一時的位置に書き込まれ、オペレーティング・システム134からコミット・コマンドを受けるまで永続的に格納されない)、および最後の書き込みトランザクションをNVメモリ200内における永続的格納とする命令も含む。
これより図11に移ると、動作の間、オペレーティング・システム134はコマンドを用いて、NVメモリ・キャッシュ200のサイズ、NVメモリがサポートする機構、およびディスクの状態を判定する(ステップ1100)。オペレーティング・システム134は、NVメモリのサイズに基づいて、動作モードを変更する。ディスク304を用いる必要なくNVメモリからブートするのに十分なサイズである場合、オペレーティング・システムは、システムを遮断する前または休止に移る前に、ブートするのに必要なファイルをNVメモリに移動させるように、ハード・ドライブに命令する(ステップ1102)。ブート・ファイルに加えて、オペレーティング・システム134は、予測キャッシュ制御モジュールを通じて、ユーザが起動時に通例用いるデータを判定し、NVメモリ内に利用可能な空間が十分なるのであれば、停止または休止への移行の前に、これらのファイルをNVメモリに移動するようにハード・ドライブに命令する。デバイス220がブロックをNVメモリに張り付ける能力を有する場合、オペレーティング・システム134は、何をNVメモリ内に張り付ければよいか決定し、張り付けるべきブロックのリストをハード・ドライブに送る(ステップ1104)。オペレーティング・システム134は、条件が変化するに連れて、このリストをコントローラ310に周期的に送るとよい。例えば、ユーザが、以前は頻繁に用いていた特定のプログラムを、最近は用いていない場合、このプログラムをリストから外し、このプログラムを今後メモリ内に張り付けない。
予測キャッシュ・モジュール802は、使用場面に基づいて、ユーザがどのデータを必要とするか予測する(ステップ1106)。データのリストをハード・ドライブ300に送る(ステップ1108)。ユーザが何をしているかに基づいて、オペレーティング・システム134が設定した優先度にしたがって、これらのデータをNVメモリにキャッシュする。例えば、ユーザが、Microsoft Word(登録商標)のような特定のアプリケーションを開始した場合、コントローラ310に供給されるリストは、直ちに必要となるファイルのリストを収容する。
NVメモリ200の利用可能空間を監視する。利用可能な空間が閾値未満となった場合、NVメモリから流出させる(ステップ1110)。オペレーティング・システム134は、コントローラ224に、NVメモリ200内にある全てのデータをディスク304に流出させること、張り付けられているブロックをディスク304に流出させること、動的ブロックをディスク304に流出させること、または以上の組み合わせを命令することができる。また、オペレーティング・システム134は、使用法が変化したときにも、流出コマンドを送る。流出は、ディスク304が既にスピンしており、NVメモリ200にはない読み取りを扱っているとき、またはそれを行うためにディスク304をスピン・アップさせることができるときに、背景において一度に行うことができる。
アプリケーションが、ハード・ディスク300に格納するデータを送ると、オペレーティング・システムは、コントローラ224に、NVメモリ300内にある一時的位置にデータ・ブロックのデータを格納するように命令する(ステップ1112)。これらのデータ・ブロックは、書き込みトランザクションを表す。NVメモリ200内へのデータの格納は、ハード・ドライブをスピン・アップする回数を減少させるために行われるのであり、これによって消費電力が低減する。加えて、予測キャッシュ・モジュール800は、このデータが直ちに使用可能であることを、使用場面に基づいて示すことができる。データ・ブロックをNVメモリに格納しておくのは、書き込みトランザクションをディスク304における永続的格納とする命令をオペレーティング・システム134が送るまでである。データを一時的に格納することによって、オペレーティング・システムはブロック格納モードで動作し、オペレーティング・システムの必要性に応じてデータ・ブロックの格納を管理することが可能になる。NVメモリにキャッシュされていない場合、オペレーティング・システムに送るべきデータは、ディスク・ドライブから直接オペレーティング・システムに送られる。
ハード・ドライブ内のディスクがスピンする回数を減少させることによって、ハード・ドライブにおける電力消費を削減する方法および装置を提供したことが分かる。加えて、データをNVメモリに予めキャッシュしておくことによって、ユーザの使用感が向上する。NVメモリに格納されているデータは、回転ディスクからデータをロードする場合と比較すると、ユーザには殆ど瞬時に出現するように感じる。
本発明の原理を適用することができる多くの実施形態があり得ることに鑑みれば、図面に関してここで説明した実施形態は例示に過ぎないことを意図しており、発明の範囲を限定するように解釈してはならないことは、認められて当然である。例えば、ソフトウェアで示した図示の実施液体の要素は、ハードウェアでも実施可能であり、その逆も可能であること、あるいは図示した実施形態は、本発明の主旨から逸脱することなくその構成および詳細において変更可能であることを、当業者であれば認めよう。加えて、前述のステップは、順次、並列、異なる順序、または順次および並列の組み合わせで実行することができる。したがって、ここに記載した発明は、このような実施形態全てが、以下の特許請求の範囲およびその均等の範囲に該当するものと、見なすこととする。
図1は、本発明が常駐するコンピュータ・システムの一例を全体的に示すブロック図である。 図2は、本発明を実施することができる場所を概略的に示す、図1のコンピュータ・システム例のブロック図である。 図3は、標準的なディスク・ドライブに接続された本発明の実施形態を具体化するインラインNVメモリ・ユニットを示すブロック図である。 図4aは、標準的なディスク・ドライブに接続された図3のインラインNVメモリ・ユニットを示す等幅図である。 図4bは、標準的なディスク・ドライブに接続された図3のインラインNVメモリ・ユニットを示す等幅図である。 図5は、コンピュータ・システムのブート時間および起動時間を短縮するために、電力遮断または休止モード移行の間にスタティックおよびダイナミック・コンフィギュレーション・データを格納するプロセスの第1部分を示すフロー・チャートである。 図6は、コンピュータ・システムのブート時間および起動時間を短縮するために、電力遮断または休止モード移行の間にスタティックおよびダイナミック・コンフィギュレーション・データを格納するプロセスの残り部分を示すフロー・チャートである。 図7は、コンピュータ・システムのブート時間およびコンピュータ・システムの休止からの起動時間を短縮するプロセスを示すフロー・チャートである。 図8は、本発明と相互作用するオペレーティング・システムのストレージ・ネットワーク・スタックを示すブロック図である。 図9は、本発明にしたがってNVMメモリを制御するストレージ・ネットワーク・スタックを示すブロック図である。 図10は、本発明にしたがってNVMメモリを制御する、代替ストレージ・ネットワーク・スタックを示すブロック図である。 図11は、本発明の教示にしたがってNVメモリにデータを格納するプロセスを示すフロー・チャートである。

Claims (21)

  1. インライン永続的記憶装置であって、
    ディスク・ドライブのディスク・ドライブ・コネクタに接続するように構成されている筐体と、
    前記筐体に実装され、前記ディスク・ドライブおよびコントローラと通信するソリッド・ステート不揮発性(「NV」)メモリ・ブロックのアレイと、
    を備えており、前記コントローラは前記ディスク・ドライブと通信し、前記コントローラは、前記NVメモリを制御し、計算機から受け取った少なくとも1つのデータ・ブロックを、前記NVメモリ内にある少なくとも1つのメモリ・ブロックに格納し、流出コマンドを受け取ったことに応答して、前記少なくとも1つのデータ・ブロックを前記ソリッド・ステートNVメモリ・ブロックのアレイから流出させるように構成されている、インライン永続的記憶装置。
  2. 請求項1記載のインライン永続的記憶装置において、前記コントローラは筐体内部にある、インライン永続的記憶装置。
  3. 請求項1記載のインライン永続的記憶装置であって、更に、前記NVメモリよりも高速な揮発性メモリ・バッファと、エネルギ蓄積デバイスとを備えている、インライン永続的記憶装置。
  4. 請求項3記載のインライン永続的記憶装置において、前記エネルギ蓄積デバイスは、突然の停電の場合に、前記揮発性メモリおよび前記NVメモリのアレイの少なくとも1つからのデータをディスク・ドライブに移動させることができるだけの十分な期間、前記揮発性バッファおよび前記NVメモリ・バッファに給電し続けるための十分な電力が得られるようにされている、インライン永続的記憶装置。
  5. 請求項3記載のインライン永続的記憶装置において、前記エネルギ蓄積デバイスは、バッテリまたはキャパシタである、インライン永続的記憶装置。
  6. 請求項1記載のインライン永続的記憶装置であって、更に、1対のコネクタを備えており、該1対のコネクタの一方は前記ディスク・ドライブ・コネクタに接続し、前記1対のコネクタの他方は、マザーボードに接続されているケーブルに接続する、インライン永続的記憶装置。
  7. 請求項1記載のインライン永続的記憶装置において、前記筐体は前記ディスク・ドライブに一体的に取り付けられている、インライン永続的記憶装置。
  8. 請求項1記載のインライン永続的記憶装置であって、更に、1対の電力コネクタを備えており、該1対の電力コネクタの一方は、ディスク・ドライブ電力コネクタに接続し、前記1対のコネクタの他方は、電力ケーブルに接続する、インライン永続的記憶装置。
  9. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、オペレーティング・システムからのコマンドを先取し、前記NVMメモリへの書き込みをバッファする、インライン永続的記憶装置。
  10. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、更に、予めキャッシュするデータのリストを受け取ったことに応答して、前記ディスク・ドライブから、少なくとも1つのデータ・ブロックをNVメモリにロードするように構成されている、インライン永続的記憶装置。
  11. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、更に、データ・ブロックを前記NVメモリ内に張り付けるように構成されている、インライン永続的記憶装置。
  12. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、更に、前記少なくとも1つのデータ・ブロックをNVメモリにロードするために、直ちにディスク・ドライブをスピン・アップすることを命令するように構成されている、インライン永続的記憶装置。
  13. 請求項1記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、張り付けデータ・ブロックを流出させるコマンドを受け取ったことに応答して、張り付けデータ・ブロックを流出させるように構成されている、インライン永続的記憶装置。
  14. 請求項1記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、動的キャッシュを流出させるコマンドを受け取ったことに応答して、張り付けていないデータ・ブロックを流出させるように構成されている、インライン永続的記憶装置。
  15. 請求項1記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、全てのデータ・ブロックを流出させるコマンドを受け取ったことに応答して、張り付けデータ・ブロックおよび張り付けていないデータ・ブロックを流出させるように構成されている、インライン永続的記憶装置。
  16. 請求項1記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、能力を与える要請を受け取ったことに応答して、コンピュータ・システムに能力を供給するように構成されている、インライン永続的記憶装置。
    において、
  17. 請求項16記載のインライン永続的記憶装置において、前記コントローラが前記コンピュータ・システムに能力を供給するとき、前記コントローラは、前記NVメモリのサイズ、該NVメモリがサポートする機構、および前記ディスク・ドライブの状態を規定する、インライン永続的記憶装置。
  18. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、更に、
    前記利用可能なNVメモリ空間が閾値未満となったときを判定し、
    前記NVメモリの利用可能空間が閾値未満となった場合に、前記NVメモリの一部を前記ディスク・ドライブに流出させる、
    ように構成されている、インライン永続的記憶装置。
  19. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、更に、前記ディスク・ドライブに宛てられたコマンドを先取し、該コマンドを解釈し、該コマンドを前記ディスク・ドライブに受け渡すように構成されている、インライン永続的記憶装置。
  20. 請求項1記載のインライン永続的記憶装置において、前記コントローラは、更に、前記オペレーティング・システムからコマンドを受け取り、コマンドを変換し、これらをHDDに受け渡すように構成されている、インライン永続的記憶装置。
  21. 請求項1記載のインライン記憶装置において、前記インライン記憶装置には、前記ディスク・ドライブに固定可能とするストラップまたは接着剤が付随する、インライン記憶装置。
JP2008506684A 2005-04-15 2006-04-13 インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ Pending JP2008538437A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/107,551 US7620773B2 (en) 2005-04-15 2005-04-15 In-line non volatile memory disk read cache and write buffer
PCT/US2006/013835 WO2006113334A2 (en) 2005-04-15 2006-04-13 In-line non volatile memory disk read cache and write buffer

Publications (2)

Publication Number Publication Date
JP2008538437A true JP2008538437A (ja) 2008-10-23
JP2008538437A5 JP2008538437A5 (ja) 2009-05-28

Family

ID=37115691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008506684A Pending JP2008538437A (ja) 2005-04-15 2006-04-13 インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ

Country Status (9)

Country Link
US (1) US7620773B2 (ja)
EP (1) EP1872221A2 (ja)
JP (1) JP2008538437A (ja)
KR (1) KR20070116831A (ja)
CN (1) CN101506776A (ja)
BR (1) BRPI0610676A2 (ja)
MX (1) MX2007012649A (ja)
RU (1) RU2007138012A (ja)
WO (1) WO2006113334A2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512568A (ja) * 2006-12-06 2010-04-22 フリン,デイビッド 高容量不揮発性ストレージ用のキャッシュとしてのソリッドステートストレージのための装置、システム、及び方法
JP2012252514A (ja) * 2011-06-02 2012-12-20 Toshiba Corp 情報処理装置およびキャッシュ制御方法
JP2014534520A (ja) * 2011-10-26 2014-12-18 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. セグメント化されたキャッシュ
KR101527292B1 (ko) * 2012-12-07 2015-06-09 에이취지에스티 네덜란드 비.브이. 비휘발성 메모리에 중요 데이터를 저장하는 비상 전력 차단 섬

Families Citing this family (181)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US20080140921A1 (en) * 2004-06-10 2008-06-12 Sehat Sutardja Externally removable non-volatile semiconductor memory module for hard disk drives
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7681004B2 (en) * 2005-06-13 2010-03-16 Addmm, Llc Advanced dynamic disk memory module
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US7392338B2 (en) 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8041881B2 (en) 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US20070011200A1 (en) * 2005-07-06 2007-01-11 Lg Electronics Inc. Operating auxiliary apparatus
JP5242397B2 (ja) 2005-09-02 2013-07-24 メタラム インコーポレイテッド Dramをスタックする方法及び装置
FR2890766B1 (fr) * 2005-09-12 2007-11-30 Arteris Sa Systeme et procede de communication asynchrone sur circuit, entre des sous-circuits synchrones
US7634585B2 (en) * 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US20070106842A1 (en) * 2005-11-04 2007-05-10 Conley Kevin M Enhanced first level storage caching methods using nonvolatile memory
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7558913B2 (en) * 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7425810B2 (en) * 2006-06-30 2008-09-16 Lenovo (Singapore) Pte., Ltd. Disk drive management
US7724589B2 (en) 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
JP2008090435A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 情報処理装置、およびその制御方法。
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7596643B2 (en) * 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
KR20090034087A (ko) * 2007-10-02 2009-04-07 삼성전자주식회사 비휘발성 저장매체를 이용한 미디어 컨텐츠 재생 방법 및그 장치
US8495276B2 (en) * 2007-10-12 2013-07-23 HGST Netherlands B.V. Power saving optimization for disk drives with external cache
JP2009104488A (ja) * 2007-10-24 2009-05-14 Hitachi Ltd ストレージ装置及びその制御方法並びにストレージシステム
US8037240B2 (en) * 2007-10-24 2011-10-11 International Business Machines Corporation System and method for using reversed backup operation for minimizing the disk spinning time and the number of spin-up operations
US8862689B2 (en) * 2007-10-24 2014-10-14 International Business Machines Corporation Local flash memory and remote server hybrid continuous data protection
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8433847B2 (en) * 2008-04-11 2013-04-30 Lg Electronics Inc. Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
US20090327577A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Hybrid storage
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
CN102160038A (zh) * 2008-09-15 2011-08-17 惠普开发有限公司 管理非易失性磁盘高速缓存的方法和设备
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8495400B2 (en) * 2008-09-30 2013-07-23 Seagate Technology Llc Energy-efficient transitioning among device operating modes
US10133883B2 (en) * 2009-02-09 2018-11-20 International Business Machines Corporation Rapid safeguarding of NVS data during power loss event
US20100306453A1 (en) * 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
US8289801B2 (en) 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US9367356B2 (en) 2010-06-17 2016-06-14 Microsoft Technology Licensing, Llc Resource access control
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
EP2598996B1 (en) 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US9069475B1 (en) * 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US9323670B2 (en) 2010-12-13 2016-04-26 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
WO2012082792A2 (en) 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9280477B2 (en) 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9213594B2 (en) 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
JP2012221333A (ja) * 2011-04-12 2012-11-12 Sony Corp メモリ管理装置、メモリ管理方法、および、制御プログラム
US9342254B2 (en) * 2011-06-04 2016-05-17 Microsoft Technology Licensing, Llc Sector-based write filtering with selective file and registry exclusions
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8977804B1 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
GB2510760B (en) * 2011-12-20 2020-05-20 Intel Corp Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US10209768B1 (en) 2012-01-06 2019-02-19 Seagate Technology Llc File-aware priority driver
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US8782344B2 (en) 2012-01-12 2014-07-15 Fusion-Io, Inc. Systems and methods for managing cache admission
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US20130212317A1 (en) * 2012-02-13 2013-08-15 Shai Traister Storage and Host Devices for Overlapping Storage Areas for a Hibernation File and Cached Data
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US8930619B2 (en) 2012-05-29 2015-01-06 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential I/O streams
US9053038B2 (en) 2013-03-05 2015-06-09 Dot Hill Systems Corporation Method and apparatus for efficient read cache operation
US9684455B2 (en) 2013-03-04 2017-06-20 Seagate Technology Llc Method and apparatus for sequential stream I/O processing
US8886880B2 (en) 2012-05-29 2014-11-11 Dot Hill Systems Corporation Write cache management method and apparatus
US9552297B2 (en) 2013-03-04 2017-01-24 Dot Hill Systems Corporation Method and apparatus for efficient cache read ahead
US9058281B2 (en) 2012-06-01 2015-06-16 Seagate Technology Llc Allocating memory usage based on quality metrics
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9594685B2 (en) 2012-07-06 2017-03-14 Seagate Technology Llc Criteria for selection of data for a secondary cache
US9104578B2 (en) 2012-07-06 2015-08-11 Seagate Technology Llc Defining address ranges used to cache speculative read data
US9772948B2 (en) 2012-07-06 2017-09-26 Seagate Technology Llc Determining a criterion for movement of data from a primary cache to a secondary cache
US9529724B2 (en) 2012-07-06 2016-12-27 Seagate Technology Llc Layered architecture for hybrid controller
US9899066B2 (en) * 2012-09-10 2018-02-20 Texas Instruments Incorporated Priority based backup in nonvolatile logic arrays
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9076530B2 (en) 2013-02-07 2015-07-07 Seagate Technology Llc Non-volatile write buffer data retention pending scheduled verification
US9424946B2 (en) 2013-02-08 2016-08-23 Seagate Technology Llc Non-volatile buffering to enable sloppy writes and fast write verification
US9465555B2 (en) 2013-08-12 2016-10-11 Seagate Technology Llc Method and apparatus for efficient processing of disparate data storage commands
US9152563B2 (en) 2013-03-04 2015-10-06 Dot Hill Systems Corporation Method and apparatus for processing slow infrequent streams
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9641378B1 (en) 2013-03-12 2017-05-02 Western Digital Technologies, Inc. Adjustment of compression ratios for data storage
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
CN104111905B (zh) * 2013-04-18 2017-05-10 威盛电子股份有限公司 外接式电子装置与外接式电子装置控制方法
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9507719B2 (en) 2013-08-20 2016-11-29 Seagate Technology Llc Garbage collection in hybrid memory system
US9367247B2 (en) 2013-08-20 2016-06-14 Seagate Technology Llc Memory access requests in hybrid memory system
US9785564B2 (en) 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
US9069474B2 (en) 2013-08-20 2015-06-30 Seagate Technology Llc Retention based defecting in a hybrid memory system
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US9619330B2 (en) 2013-10-08 2017-04-11 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US9323467B2 (en) * 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
US9928168B2 (en) * 2016-01-11 2018-03-27 Qualcomm Incorporated Non-volatile random access system memory with DRAM program caching
US10459855B2 (en) 2016-07-01 2019-10-29 Intel Corporation Load reduced nonvolatile memory interface
KR20210016191A (ko) 2019-08-01 2021-02-15 삼성전자주식회사 스토리지 장치
KR20210016188A (ko) 2019-08-01 2021-02-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20210016208A (ko) 2019-08-02 2021-02-15 삼성전자주식회사 스토리지 장치, 및 스토리지 장치 및 스토리지 장치를 제어하는 호스트 장치를 포함하는 스토리지 시스템의 동작 방법
KR102650809B1 (ko) 2019-08-02 2024-03-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
KR102470888B1 (ko) * 2020-02-13 2022-11-25 주식회사 멤레이 지속성 지원 장치 및 방법, 그리고 컴퓨팅 장치
US11656967B2 (en) 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06180671A (ja) * 1992-12-14 1994-06-28 Hitachi Ltd ディスクキャッシュ制御装置
JPH08292841A (ja) * 1995-04-20 1996-11-05 Nec Corp シーク時間削減方法
JP2000284954A (ja) * 1999-03-30 2000-10-13 Toshiba Tec Corp 情報処理装置
US6378015B1 (en) * 1999-01-25 2002-04-23 George Yen Flash memory module comprising an IDE interface engageable in a vertical position perpendicular to a motherboard and having an IDE expansion slot
US20040064647A1 (en) * 2002-06-27 2004-04-01 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5748874A (en) * 1995-06-05 1998-05-05 Mti Technology Corporation Reserved cylinder for SCSI device write back cache
US5860088A (en) * 1996-12-06 1999-01-12 International Business Machines Corporation Method for extraction of a variable length record from fixed length sectors on a disk drive
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6865642B2 (en) * 1998-06-24 2005-03-08 International Business Machines Corporation Method and apparatus for disk caching for an intermediary controller
US6442647B1 (en) * 1998-08-21 2002-08-27 International Business Machines Corporation Method and apparatus for utilization of plural commands to improve read response times of data from a disk track
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6449697B1 (en) * 1999-04-23 2002-09-10 International Business Machines Corporation Prestaging data into cache in preparation for data transfer operations
US6785767B2 (en) * 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium
EP1361516A3 (en) * 2002-04-30 2011-05-18 Hitachi, Ltd. Method and system for backing up power supply of disk array device
US7017037B2 (en) 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
JP2004110503A (ja) * 2002-09-19 2004-04-08 Hitachi Ltd 記憶制御装置、記憶システム、記憶制御装置の制御方法、チャネル制御部、及びプログラム
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US7333328B2 (en) * 2003-01-08 2008-02-19 Sony Corporation Hard disk system having a hard disk unit and a conversion unit for connection to a host device
JP2005182245A (ja) * 2003-12-17 2005-07-07 Hitachi Ltd ディスクアレイ装置の接続支援方法
US7209319B1 (en) * 2004-06-25 2007-04-24 Western Digital Technologies, Inc. Disk drive having a disk drive component adhered to the disk drive housing via an adhesive assembly having a leveling layer
US7472222B2 (en) * 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06180671A (ja) * 1992-12-14 1994-06-28 Hitachi Ltd ディスクキャッシュ制御装置
JPH08292841A (ja) * 1995-04-20 1996-11-05 Nec Corp シーク時間削減方法
US6378015B1 (en) * 1999-01-25 2002-04-23 George Yen Flash memory module comprising an IDE interface engageable in a vertical position perpendicular to a motherboard and having an IDE expansion slot
JP2000284954A (ja) * 1999-03-30 2000-10-13 Toshiba Tec Corp 情報処理装置
US20040064647A1 (en) * 2002-06-27 2004-04-01 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512568A (ja) * 2006-12-06 2010-04-22 フリン,デイビッド 高容量不揮発性ストレージ用のキャッシュとしてのソリッドステートストレージのための装置、システム、及び方法
JP2012252514A (ja) * 2011-06-02 2012-12-20 Toshiba Corp 情報処理装置およびキャッシュ制御方法
US8677061B2 (en) 2011-06-02 2014-03-18 Kabushiki Kaisha Toshiba Information processing apparatus and cache control method
USRE49418E1 (en) 2011-06-02 2023-02-14 Kioxia Corporation Information processing apparatus and cache control method
USRE49417E1 (en) 2011-06-02 2023-02-14 Kioxia Corporation Information processing apparatus and cache control method
JP2014534520A (ja) * 2011-10-26 2014-12-18 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. セグメント化されたキャッシュ
US9697115B2 (en) 2011-10-26 2017-07-04 Hewlett-Packard Development Company, L.P. Segmented caches
KR101527292B1 (ko) * 2012-12-07 2015-06-09 에이취지에스티 네덜란드 비.브이. 비휘발성 메모리에 중요 데이터를 저장하는 비상 전력 차단 섬

Also Published As

Publication number Publication date
BRPI0610676A2 (pt) 2010-07-20
RU2007138012A (ru) 2009-04-20
US20060248387A1 (en) 2006-11-02
EP1872221A2 (en) 2008-01-02
KR20070116831A (ko) 2007-12-11
WO2006113334A2 (en) 2006-10-26
WO2006113334A3 (en) 2009-04-16
MX2007012649A (es) 2007-12-13
US7620773B2 (en) 2009-11-17
CN101506776A (zh) 2009-08-12

Similar Documents

Publication Publication Date Title
US7620773B2 (en) In-line non volatile memory disk read cache and write buffer
US7082495B2 (en) Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
US7454653B2 (en) Reliability of diskless network-bootable computers using non-volatile memory cache
US7100040B2 (en) Apparatus and method to decrease boot time and hibernate awaken time of a computer system
KR101638658B1 (ko) 이중 운영 시스템을 위한 파일 시스템
JP4459290B2 (ja) オペレーティングシステムの停止状態からの高速起動
EP2380081B1 (en) Method and system for hibernation or suspend using a non-volatile-memory device
US20080172519A1 (en) Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
US20110167049A1 (en) File system management techniques for computing environments and systems
JP2006004407A (ja) 不揮発性メモリ・キャッシュの性能改善
JP2012503806A (ja) ターボブートシステム及び方法
TWI242149B (en) Machine-readable medium, personal computers adapted to function as a decompressed audio player and adapted to play audio files, and method of operating a personal computer
JP2011502302A (ja) 逆データ・バックアップのための方法、コンピュータ・プログラム及びシステム
US7047356B2 (en) Storage controller with the disk drive and the RAM in a hybrid architecture
US20050223209A1 (en) Apparatus for fast booting computer and method for the same
TWI559227B (zh) 具有內建雙可隨機關閉開啟電源作業裝置的電腦系統
JP2006215648A (ja) コンピュータの高速起動システム及び方法
WO2008084473A1 (en) Systems for supporting readydrive and ready boost accelerators in a single flash-memory storage device
GB2411982A (en) Fast booting computer

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090409

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110905

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120112