JP5234473B2 - ターボブートシステム及び方法 - Google Patents

ターボブートシステム及び方法 Download PDF

Info

Publication number
JP5234473B2
JP5234473B2 JP2011528097A JP2011528097A JP5234473B2 JP 5234473 B2 JP5234473 B2 JP 5234473B2 JP 2011528097 A JP2011528097 A JP 2011528097A JP 2011528097 A JP2011528097 A JP 2011528097A JP 5234473 B2 JP5234473 B2 JP 5234473B2
Authority
JP
Japan
Prior art keywords
data
semiconductor memory
driver
boot
access request
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.)
Active
Application number
JP2011528097A
Other languages
English (en)
Other versions
JP2012503806A (ja
JP2012503806A5 (ja
Inventor
ザオ、キュン
カング、シンホア
Original Assignee
マーベル ワールド トレード リミテッド
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 マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2012503806A publication Critical patent/JP2012503806A/ja
Publication of JP2012503806A5 publication Critical patent/JP2012503806A5/ja
Application granted granted Critical
Publication of JP5234473B2 publication Critical patent/JP5234473B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、起動システムに関する。
[優先権情報]本出願は、2008年9月24日出願の米国仮出願61/099,743号を基礎とする2009年9月21日出願の米国出願12/563,239号明細書の優先権を主張するものであり、前記出願の内容は、参照により本明細書に組み込まれる。
本発明の理解するための背景を、一般的に説明することを目的として、背景技術を説明する。以下、背景技術の章において説明される範囲及び出願時には従来技術として認められていない側面の範囲において、本願発明者の仕事は、本開示に対して明示的に又は非明示的にも、従来技術であるとは認めていない。
コンピュータスイッチがON状態とされると、コンピュータは起動プロセスを実行する。起動プロセスは、ベーシックインプット/アウトプットシステム(BIOS)モード及びオペレーティングシステム・モードを含む。BIOSモードの間は、プリブート又はパワーオン・セルフテスト(POST)プロセスが実行され、その後に、ブートローダプロセスが続く。POSTプロセスは、特定のハードウェアを初期化して、マスタブートレコードを実行して、ブートローダプロセスを実行する。ブートローダプロセスは、オペレーティングシステムカーネル、並びに、ブートディスクコントローラドライバ及びディスクドライバを含む各種デバイスドライバを読み込む。例えば、Windows NT(登録商標)のブートローダは、NTローダ(NTLDR)である。ブートローダ又はNTLDRは、Windows NT(登録商標)OSカーネル(NTOSKRNL)のようなオペレーティングシステム(OS)カーネルを読み込み、実行する。
オペレーティングシステム・モードの間に、OSが設定され、自動スタートドライバが読み込まれ、初期化される。自動スタートドライバ及びその他のソフトウェアコードがHDDから読み込まれ、実行される。その他のソフトウェアコードは、OSの設定と関連付けられている及び/又は様々なサービス及びプログラムアプリケーションと関連付けられている。サービスには、デバイスマネージャサービス、セキュリティサービス、電子メール(eメール)サービス等が含まれる。プログラムアプリケーションには、例えば、ウェブブラウザ、eメール、ワードプロセッシング等のアプリケーションが含まれる。
オペレーションシステム・モードの間に、グラフィカル・ユーザー・インターフェース(GUI)が起動され、OSが設定された後に、ログオンモードが可能となる。ログオンモードは、サービスの読み込み及び実行を含む。ログオンモードは、入力されたユーザーネーム及びパスワードに基づいて、ユーザープロファイルを読み込むのに使用される。ログオンが完了した後に、プログラムアプリケーションが実行されてもよい。
オペレーションシステムの大きさ及び複雑性は、増加しつつある。また、起動の間のソフトウェアドライバ、サービス及びアプリケーションの数、及び関連付けられているコード及び/又はデータの量も増加している。その結果、オペレーションシステムの起動に掛かる時間が長くなっている。
一実施形態において、ハードディスクドライブ及び不揮発性半導体メモリを備えるコンピュータシステムが提供される。ハードディスクドライブは、起動データを含むデータの第1セットを格納する。不揮発性半導体メモリは、ハードディスクドライブの半導体メモリ、及びコンピュータシステムのホストの半導体メモリとは、別のメモリである。ターボブートドライバモジュールは、起動データを不揮発性半導体メモリに格納し、ホストの起動モードの間に、起動データを揮発性半導体メモリからホストのファイルシステムへと転送する。
別の特徴として、ターボブートドライバモジュールは、データの第2セットを起動データを含む不揮発性半導体メモリに格納する。
別の特徴として、ターボブートドライバモジュールは、ホストの第1起動の間に、起動データを収集し、不揮発性半導体メモリに格納する学習モジュールを有する。 ターボブートドライバモジュールは、ホストの第2起動の間に、不揮発性半導体メモリに格納された起動データを、ファイルシステムへと転送する。
別の特徴として、コンピュータシステムは、ハードディスクドライブに格納されているデータにアクセスするデータアクセス要求を生成するファイルシステム及びディスクストレージドライバのうち少なくとも一つをさらに備える。ターボブートドライバモジュールは、データアクセス要求を満たすべく、不揮発性半導体メモリに格納されているデータにアクセスする。
他の特徴として、コンピュータシステムは、ハードディスクドライブに格納されているデータを更新するデータアクセス要求を生成するファイルシステム及びディスクストレージドライバのうち少なくとも一つをさらに備える。ターボブートドライバモジュールは、データアクセス要求に基づいて、不揮発性半導体メモリに格納されているデータを更新する。
別の特徴として、ターボブートドライバモジュールは、ハードディスクドライブから起動データの第1セットにアクセスし、不揮発性半導体メモリから起動データの第2セットにアクセスする。また、別の特徴として、ターボブートドライバモジュールは、ファイルシステム及びディスクストレージドライバのうちの少なくとも1つからのデータアクセス要求に基づいて、起動データの第1セット及び起動データの第2セットにアクセスする。他の特徴として、ターボブートドライバモジュールは、不揮発性半導体メモリに格納されているデータに対してハードディスクドライブに格納されているデータをマップするストレージマッピングモジュールを有する。
別の特徴として、コンピュータシステムは、ファイルシステムから、ハードディスクドライブデータアクセス要求を受信するディスクストレージドライバをさらに備える。ターボブートドライバモジュールは、ハードディスクドライブデータアクセス要求に基づいて、不揮発性半導体メモリデータアクセス要求を生成する。また、不揮発性半導体メモリデータアクセス要求に基づいて、半導体制御ドライバ及び半導体メモリインターフェースを介して、不揮発性半導体メモリにアクセスする半導体メモリドライバを備える。
別の特徴として、コンピュータシステムは、ハードディスクドライバデータアクセス要求を前記ファイルシステムから受信するストレージドライバをさらに備える。ターボブートドライバモジュールは、ハードディスクドライバデータアクセス要求に基づいて、不揮発性半導体メモリデータアクセス要求を生成する。ストレージ制御モジュールは、不揮発性半導体メモリデータアクセス要求に基づいて、半導体メモリインターフェースを介して、不揮発性半導体メモリにアクセスする。
別の特徴において、ターボブートドライバモジュールは、所定の起動期間を有する起動タイマを含む。ターボブートドライバモジュールは、起動モードの間に、ハードディスクドライブから収集された起動データの全て又は一部を、所定の起動期間が終了するまで、不揮発性半導体メモリに格納する。
別の特徴として、ターボブートドライバモジュールは、不揮発性半導体メモリに格納する前に起動データを圧縮し、不揮発性半導体メモリからアクセスされた時に、格納された起動データを解凍する、圧縮解凍モジュールを有する。
また、別の特徴として、上述のシステム及び方法は、1つ以上のプロセッサによって実行されるコンピュータプログラムによって実装されてもよい。コンピュータプログラムは、これらに限定されないが、例えば、メモリ、不揮発性データストレージ、及び/又はその他の好適な有形の記憶媒体のようなコンピュータ可読媒体に存在させることができる。
本開示が適用可能なさらなる領域については、詳細な説明、添付の特許請求の範囲及び図面から明らかとなるであろう。詳細な説明及び特定の例は、例示することのみを意図しており、本開示の範囲を限定することを意図していない。
本開示は、詳細な説明及び添付の図面から、完全に理解可能となるであろう。
本開示の一実施形態に係る、別個に設けられたディスク及び半導体メモリ制御モジュールを組み込んだコンピュータシステムの機能ブロック図である。 本開示の一実施形態に係る、ストレージ制御モジュールを組み込んだコンピュータシステムの機能ブロック図である。 本開示の一実施形態に係る、起動データ及びソフトウェアストレージを例示したコンピュータシステムの機能ブロック図である。 本開示の一実施形態に係る、別個に設けられたディスクモジュール及び半導体メモリモジュールを使用したディスクドライバのオペレーションの後の、ターボブートドライバのオペレーションを例示したストレージシステムの機能ブロック図である。 本開示の一実施形態に係る、別個に設けられたディスクモジュール及び半導体メモリモジュールを使用したディスクドライバのオペレーションの前の、ターボブートドライバのオペレーションを例示したストレージシステムの機能ブロック図である。 本開示の一実施形態に係る、別個に設けられたディスクモジュール及び半導体メモリモジュールを使用したディスクドライバのオペレーションの後の、ターボブートドライバのオペレーションを例示したストレージシステムの機能ブロック図である。 本開示の一実施形態に係る、ストレージドライバオペレーションの前の、ターボブートドライバのオペレーションを例示したストレージシステムの機能ブロック図である。 本開示の一実施形態に係る、ターボブートドライバの機能ブロック図である。 本開示の一実施形態に係る、起動タイミング図である。 本開示の一実施形態に係る、起動の間のデータ読み込みの方法を示した図である。 本開示の一実施形態に係る、収集された起動データに基づいて、ストレージデバイスにデータを書き込む方法を示した図である。
以下の説明は、単に例示することを目的としており、本開示、本開示の提供又は利用を限定することを意図していない。説明を明確にする目的から、図面において、同様な要素には、同じ参照番号が使用されている。本明細書において使用される、少なくともA、B及びCのいずれか1つという言い回しは、非排他的論理ORを使用した論理(A又はB又はC)であると解釈されるべきである。方法に含まれる段階は、本開示の原理を変更することなく、様々な順番で実行可能であることは明らかである。
本明細書で使用されている、モジュールという言葉は、以下に記載する機能を提供する1つ以上のソフトウェアプログラム、ファームウェアプログラム、組み合わせ論理回路及び/又はその他適切な要素を実行する、特定用途向け集積回路(ASIC)、電子回路、(共有、占有又はグループ)プロセッサ、及び/又は(共有、占有又はグループ)メモリの一部をなす又は含まれていることを指す場合がある。
本明細書で使用されている"ホスト"及び"コンピュータ"という言葉は、デスクトップ、ラップトップ、オールインコンピュータ、及び/又はハンドヘルドコンピュータを指す場合がある。また、"ホスト"及び"コンピュータ"という言葉は、PDA、ポータブルコンピュータデバイス、携帯電話等を指す場合もある。
本明細書で使用されている"不揮発性半導体メモリ(NVSM)"という言葉は、フラッシュメモリ(NAND及びNORフラッシュメモリを含む)、相変化メモリ、磁気RAM及びマルチステートメモリのような半導体メモリ又は固体メモリを指す場合がある。マルチステートメモリでは、メモリセルそれぞれが、3つ以上のステートを有する。"不揮発性半導体メモリ"という言葉は、ハードディスクドライブ(HDD)又はHDDの半導体メモリを意味しない。本明細書で使用されている"HDD"という言葉は、HDDの制御モジュール及び半導体メモリを含むプリント基板、若しくは、磁気記憶媒体又はディスク及びリード/ライトデバイスを含むHDDアセンブリを含む場合がある。不揮発性半導体メモリは、ソリッドステートドライブ(SSD)を指す場合がある。
図1〜3では、要素がそれぞれ、実線又は点線のボックスで示されている。実線のボックスは、データの元の格納位置を示している。一方、点線のボックスは、格納されたデータが、次の利用のために、転送及び/又はコピーされる場所を示している。
図1に示すように、コンピュータシステム10は、ホスト12、HDD14及びNVSM16を含む。ホスト12は、ホスト12が起動される間及び起動された後に、HDD14及び/又はNVSM16のデータにアクセスするコンピュータ及び/又はマザーボードであってもよい。ホスト12は、ホスト制御モジュール18及びシステムメモリ20を含む。ホスト制御モジュール18は、ディスク制御モジュール22及びHDDインターフェース24を介して、HDD14と通信を行う。ホスト制御モジュール18は、半導体メモリ制御モジュール26(例えば、フラッシュメモリ制御)及び半導体メモリインターフェース28を介して、NVSM16と通信を行う。NVSM16は、ホスト14の半導体メモリとは別のメモリである(例えば、ホスト14における半導体メモリとは区別される)。NVSMは、ホスト14に接続された半導体メモリインターフェース28に接続されていてもよい。
起動の間、ホスト制御モジュール18は、HDD14からターボブートドライバ30を、システムメモリ20のランダムアクセスメモリ(RAM)32に読み込む(ロードする)。ターボブートドライバ30は、HDD14がアクセスする起動データを収集し、第1起動の期間に起動データをNVSM16に格納し、第1起動に続く起動の間にNVSM16からの起動データにアクセスするのに、使用される。このように構成することにより、起動時間を短縮することができる。第1起動とは、コンピュータが初めて起動される場合の起動のこと、又はターボブートがインストールされ利用可能とされた後の、学習モードの間に実行される起動のことを指す場合がある。
ホスト制御モジュール18は、中央演算処理ユニット(CPU)のようなプロセッサを含んでもよい。ホスト制御モジュール18は、ターボブートドライバ30を起動又は実行してもよい。ターボブートドライバ30を実行している間は、ホスト制御モジュール18は、ターボブートドライバモジュールとして動作してもよいし、学習モード、学習後モード、バイストレージアクセス(bi‐storage access)モード及び更新モードを含む複数のモードで動作してもよい。学習モードでは、ホスト12の起動の間にHDD14でアクセスされるデータが収集され、NVSM16に格納される。学習後モードでは、ホスト12の起動の間に、HDD14及び/又はNVSM16が、データにアクセスする。バイストレージアクセスモードでは、ホスト12の起動の間に、HDD14及びNVSM16の両方からデータがアクセスする。更新モードでは、HDD14で更新され学習モードで収集されたデータが、NVSM16でも更新される。
システムメモリ20は、リードオンリーメモリ(ROM)34及びRAM32を含む。ROM34は、パワーオン・セルフテスト(POST)データ38を含むベーシックインプット/アウトプットシステム(BIOS)36を格納するのに使用される。ROM34は、消去可能プログラム可能ROM(EPROM)を含んでもよい。RAM32は、ダブルデータレート同期型ダイナミックRAM(DDR SDRAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)等を含んでもよい。
ディスク制御モジュール22は、ソフトウェア及び/又はハードウェアを含み、HDD14のオペレーションを制御してもよい。半導体メモリ制御モジュール26は、ソフトウェア及び/又はハードウェアを含み、NVSM16のオペレーションを制御してもよい。図1の実施形態において、ディスク制御モジュール22及び半導体メモリ制御モジュール26は、別のデバイスである。
図2には、コンピュータシステム50が示されている。コンピュータシステム50は、図1のコンピュータシステム10と同様なシステムである。コンピュータシステム50は、ディスク制御モジュール及び半導体メモリ制御モジュールの替わりに、ストレージ制御モジュール52を含む。例えば、ストレージ制御モジュール52は、ノースブリッジ/サウスブリッジ構成に含まれていてもよい。ストレージ制御モジュール52は、サウスブリッジ制御モジュールであってもよい、又はサウスブリッジ制御モジュールに含まれていてもよい。
コンピュータシステム50は、ホスト12'、HDD14及びNVSM16を含む。ホスト12'は、ホスト制御モジュール18'及びシステムメモリ20を含む。ホスト制御モジュール18'は、HDDインターフェース24'及び半導体メモリインターフェース28'を使用して、ストレージ制御モジュール52を介して、HDD14及びNVSM16と通信を行う。HDD14は、ストレージ制御モジュール22への及びからのデータ転送用に設定されたターボブートドライバ30'を格納する。
図3には、起動データ及びソフトウェアストレージを例示したコンピュータシステム80が示されている。コンピュータシステム80は、ホスト制御モジュール82、ストレージ制御モジュール84、ROM86、ホストに含まれていてもよいRAM88を含む。ホスト制御モジュール82は、ストレージ制御モジュール84、HDDメモリインターフェース94、半導体メモリインターフェース96を介して、HDD90及びNVSM92にアクセスする。ホスト制御モジュール82は、ホストの起動の間又は後に、ストレージ制御モジュール84のディスク制御モジュール93及び半導体メモリ制御モジュール95を介して、HDD90及び/又はNVSM92のデータにアクセスする。ROM86、RAM88、HDD90及びNVSM92は、コンピュータシステム80の起動の間及び前後に、特定のデータを格納するのに使用される。
ROM86は、コンピュータシステム80の起動の間及び前後に、POST102を含むBIOS110の第1BIOS部分100を格納する。RAM88は、ドライバの第1セット104、ドライバの第2セット106、OSデータ108、BIOS110、アプリケーションプログラム114及び/又はその他の起動データ116を格納するBIOS110は、第1BIOS部分100及びブートローダ120を含む第2BIOS部分118を含んでもよい。その他の起動データ116は、起動設定データを含んでもよい。OSデータ108は、ファイルシステム124を伴うOSカーネル122、及びその他のOSデータ126を含んでもよい。その他のOSデータ126は、OS設定データを含んでもよい。
ドライバの第1セット104は、ディスクドライバ130、半導体メモリドライバ132及びターボブートドライバ134を含んでもよい。ディスクドライバ130は、図4〜7に示すようなディスクストレージドライバ及びディスク制御ドライバを含んでもよい。ディスクストレージドライバは、HDD90のオペレーションを制御するのに使用される。ディスク制御ドライバは、ストレージ制御モジュール84のディスク制御モジュール93のオペレーションを制御するのに使用される。半導体メモリドライバ132は、図4〜7に示すような半導体ストレージドライバ及び半導体制御ドライバを含んでもよい。半導体ストレージドライバは、不揮発性半導体メモリ92のオペレーションを制御する。半導体制御ドライバは、半導体メモリ制御モジュール95のオペレーションを制御する。
ドライバの第2セット106は、システム及び自動スタートドライバ140を含んでもよい。例えば、システム及び自動スタートドライバ140は、デジタル加入者回線(DSL)ドライバ、ケーブルドライバ、ユニバーサルシリアルバス(USB)ドライバ、ローカルエリアネットワーク(LAN)ドライバ、セキュリティドライバ等を含んでもよい。
ドライバの第1セット104及び第2BIOS部分118は、起動の間に、HDD90からRAM88へと読み込まれてもよい。ドライバの第2セット106、アプリケーションプログラム114、別のブートアップデータ116及び別のOSデータ126は、起動の間に、HDD90及び/又はNVSM92からRAM88へと読み込まれてもよい。第1BIOS部分100は、起動の間に、ROM86からRAM88へと読み込まれてもよい。
起動の間に、ホスト制御モジュール82は、ストレージ制御モジュール84を使用して、HDD90からRAM88へと、ターボブートドライバ134を読み込んでもよい。ストレージ制御モジュール84は、ディスク制御モジュール93及び半導体メモリ制御モジュール95を含んでもよい。HDD90からRAM88へと読み込まれたデータは、第1起動の学習モードの間に、NVSM92に収集され格納される。第1起動に続く起動の間に、NVSM92からRAM88へとデータを読み込んで、起動時間を短縮させてもよい。コンピュータシステムは、第1起動及びそれに続く起動の期間に、学習モードで動作し、NVSM92のコンテンツを更新する。
図3の実施形態では、HDD90は、起動データに対する元の起動ソースとして示されており、HDD90は、起動データの初期ソースである。NVSM92は、HDD90に格納された特定の起動データをミラーするのに使用される。NVSM92は、起動データの種類に基づいてではなく、起動時間に基づいて、起動データをミラーしてもよい。例えば、ホスト制御モジュール82は、例えば、クロック150に基づく所定の期間に、アクセスされたデータをHDD90に収集するのに、NVSM92を使用してもよい。ホスト制御モジュール82は、所定の期間が経過した場合には、HDDに90でアクセスされたデータの種類に関わらず、データの収集を止めてもよい。
NVSM92は、HDD90に関する起動データの代替、バックアップ及び/又は補足ソースとして使用されてもよい。HDD90は、ドライバ第1セット104、及びドライバの第2セット106、OSデータ108、第2BIOS部分118、アプリケーションプログラム114及び別の起動データ116を最初に格納するとして記載されているが、NVSM92が最初にこれらのデータ項目を格納して、第1の及び/又元の起動ソースとして使用してもよい。この場合の実施形態では、HDD90が、ドライバの第2セット106、アプリケーションプログラム114、別の起動データ116及び別のOSデータ126を格納してもよい。HDD90は、ドライバの第1セット104、第2BIOS部分118及びOSカーネル122を格納しなくてもよい。この実施形態では、第1起動の間に、NVSM92から、起動データの収集を行う。収集された起動データは、HDD90に格納され、第1起動に続く起動の間に使用されてもよい。
図4には、ターボブートドライバ202を含むストレージシステム200が示されている。ターボブートドライバ202は、ファイルシステム206によって最初に生成された、HDD208に格納されているデータに対するデータアクセス要求に基づいて、NVSM204にアクセスする。ターボブートドライバ202は、HDD208が要求するデータを収集し、学習モードの間に、データをNVSM204に格納する。ターボブートドライバ202は、NVSM204に格納されたデータを、学習後モードの間に、ファイルシステム206に提供する。NVSM204からファイルシステム206へと提供されたデータは、HDD208から提供されたデータにさらに加えられるものであってもよいし、それに替わるものであってもよいし、又は、同じでも異なっていてもよい。HDD208及びNVSM204は、同時に及び/又は同じ期間の間に、ファイルシステム206にデータを提供してもよい。
また、ストレージシステム200は、ディスクストレージドライバ210、及び、ファイルシステム206に間接的に(すなわち、直近のモジュール又は通信デバイスを用いずに)、又は直接的に接続される半導体メモリドライバ212を含み、それぞれ、HDD208及びNVSM204のオペレーションを制御するのに使用してもよい。ターボ起動ドライバ202は、ディスクストレージドライバ210とディスク制御ドライバ214との間、及び半導体メモリ212と半導体制御ドライバ216との間に配置される。ディスクストレージドライバ210は、ファイルシステム206から受信したデータアクセス要求に基づいてHDDデータアクセス要求を生成してもよい。ターボブートドライバ202は、HDDデータアクセス要求及びオペレーションモードに基づいて、NVSM204及びHDD208へのアクセスを制御する。
ターボブートドライバ202は、ディスク制御ドライバ214及び/又は半導体制御ドライバ216に信号を送信して、HDD208及び/又はNVSM204それぞれからデータを読み出す又は書き込んでもよい。信号は、HDDデータアクセス要求及びオペレーションモードに基づいたものであってもよい。制御ドライバ214、216はそれぞれ、ディスク制御モジュール218及び半導体メモリ制御モジュール220のオペレーションを制御する。制御モジュール218、220はそれぞれ、HDDインターフェース222及び半導体メモリインターフェース224を介して、HDD208及びNVSM204と通信を行う。HDDデータ読み出しアクセス要求は、NVSM204及び/又はHDD208からのデータによって満足されてもよい。HDDデータ書き込みアクセス要求は、NVSM204及び/又はHDD208へのデータ書き込みを含んでもよい。
ディスクストレージドライバ210は、ソフトウェアベースであり、ユーザーとインターフェース接続するのに使用され、ハードウェアに依存しない。ディスクストレージドライバ210は、ストレージシステム200のディスクドライブ(例えば、ハードディスクドライブ208)及びディスクドライブの内容を、ディスプレイに可視的に表示するのに使用される。ディスク制御ドライバ214は、ソフトウェアベースであり、ディスクストレージドライバ210とディスク制御モジュール218との間のインターフェースとして使用され、ハードウェアに依存しない。ディスクストレージドライバ210は、ディスク制御ドライバ214に提供されるアクセス要求を生成してもよい。ディスク制御ドライバ214は、ディスクストレージドライバ210からのアクセス要求に基づいて、ディスク制御モジュール218のオペレーションを制御する。ディスク制御モジュール218は、ハードウェアベースである。ディスクストレージドライバ210は、異なるディスク制御ドライバと通信を行ってもよく、また、1つのディスクドライブに固有のものであってもよい。ディスク制御ドライバ214は、複数のディスクドライブを制御してもよい。ディスクストレージドライバ210及びディスク制御ドライバ214は、プロセッサによって実行されるOSによって実行されてもよいし、又は、例えば、図3のホスト制御モジュール82及び/又はストレージ制御モジュール84によって実行されてもよい。
半導体メモリドライバ212は、ソフトウェアベースであり、ユーザーとインターフェース接続するのに使用され、ハードウェアに依存しない。半導体メモリドライバ212は、ストレージシステム200の不揮発性半導体メモリ(例えば、不揮発性半導体メモリ204)及び不揮発性半導体メモリの内容を、ディスプレイに可視的に表示するのに使用される。半導体制御ドライバ216は、ソフトウェアベースであり、半導体メモリドライバ212と半導体メモリ制御モジュール220との間のインターフェースとして使用され、ハードウェアに依存しない。半導体メモリ制御モジュール220は、ハードウェアベースである。半導体メモリドライバ212は、半導体制御ドライバ216に提供されるアクセス要求を生成してもよい。半導体制御ドライバ216は、半導体メモリドライバ212からのアクセス要求に基づいて、半導体メモリ制御モジュール220のオペレーションを制御する。半導体メモリドライバ212は、異なるディスク制御ドライバと通信を行ってもよく、また、1つのディスクドライブに固有のものであってもよい。半導体制御ドライバ216は、複数のディスクドライブを制御してもよい。半導体メモリドライバ212及びディスク制御ドライバ216は、プロセッサによって実行されるOSによって実行されてもよいし、又は、例えば、図3のホスト制御モジュール82及び/又はストレージ制御モジュール84によって実行されてもよい。
図5には、ストレージシステム230が示されている。ストレージシステム230は、図4のストレージシステム200と同様なものである。ストレージシステム230は、ディスクスストレージドライバ210及び半導体メモリドライバ212とディスク制御ドライバ214及び半導体制御ドライバ216との間ではなく、ファイルシステム206とディスクストレージドライバ210'及び半導体メモリドライバ212'との間に、配置されたターボブートドライバ202'を含む。ファイルシステム206は、データアクセス要求を生成する。ターボブートドライバ202'は、ファイルシステム206から受信したデータアクセス要求に基づいてHDD及びNVSMデータアクセス要求を生成する。HDD及びNVSMデータアクセス要求は、それぞれ、ディスクストレージドライバ210'及び半導体メモリドライバ212'に向けられたものである。
ディスクストレージドライバ210'及び半導体メモリドライバ212'はそれぞれ、ディスク制御ドライバ214'及び半導体制御ドライバ216'と通信を行う。ディスク制御ドライバ214'及び半導体制御ドライバ216'は、ディスク制御モジュール218及び半導体メモリ制御モジュール220、並びにHDDインターフェース222及び半導体メモリインターフェース224を使用して、HDD208及びNVSM204にアクセスする。
図6には、ストレージシステム250が示されている。ストレージシステム250は、図4のストレージシステム200と同様なものである。ストレージシステム250は、ディスクストレージドライバ210及び半導体メモリドライバ212の替わりに、ストレージドライバ252を含む。ストレージシステム250は、また、ディスク制御ドライバ214及び半導体制御ドライバ216の代わりに、ストレージ制御ドライバ254を含む。
ストレージドライバ252は、ファイルシステム206から受信したデータアクセス要求に基づいてHDD及びNVSMデータアクセス要求を生成する。ターボブートドライバ202"は、HDD及びNVSMデータアクセス要求に基づいて、ストレージ制御ドライバ254のオペレーションを制御する。ストレージ制御ドライバ254は、HDDインターフェース222'及び半導体メモリインターフェース224'を通じて、HDD208及びNVSM204にアクセスする、ストレージ制御モジュール256のオペレーションを制御する。
図7には、ストレージシステム270が示されている。ストレージシステム270は、図5及び図6のストレージシステム230、250と同様なものである。ストレージシステム270は、ストレージドライバ252''及びストレージ制御ドライバ254'を含む。ファイルシステム206は、HDD及びNVSMデータアクセス要求を生成する。ターボブートドライバ202'''は、HDD及びNVSMデータアクセス要求に基づいて、ストレージドライバ252'のオペレーションを制御する。ストレージドライバ252'は、HDD208及びNVSM204のオペレーションを制御するのに使用される。ストレージ制御ドライバ254'は、HDDインターフェース222'及び半導体メモリインターフェース224'を通じて、HDD208及びNVSM204にそれぞれアクセスするストレージ制御モジュール256のオペレーションを制御する。
上述の図1〜7における、ターボブートドライバ、30、30'、134、202、202'、202''、202'''に関連付けられたドライバ、モジュール及びインターフェースは、それぞれHDD及びNVSMと通信を行うために使用される。ドライバ、モジュール及びインターフェースは、内部データバス、インターネット・スモールコンピュータシステム・インターフェース(iSCSI)、周辺機器インターコネクトエクスプレス(PCIe)インターフェース、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース、シリアル接続SCSI(SAS)インターフェース及び/又はファイバーチャンネル(FC)インターフェースを含んでもよい。例えば、ディスクストレージドライバ210、210'、ディスク制御ドライバ214、214'、半導体メモリドライバ212、212'、半導体制御ドライバ216、216'、ディスク制御モジュール218、半導体メモリ制御モジュール220、ストレージ制御モジュール256、HDDインターフェース24、24'、94、222、222'、及び半導体メモリインターフェース 28、28'、96、224、224'は、iSCSI、PCIe、SATA、シリアルSAS及び/又はFCベースのデバイスであってもよい。HDD及びNVSMと通信するのに使用されるドライバ、モジュール及びインターフェースは、同種のものであってもよいし、異なるタイプのものであってもよい。例えば、HDD及びNVSMと通信を行うのに使用されるインターフェースは、SATAタイプのものであってもよい。別の例では、HDDと通信を行うのに使用されるインターフェースは、SATAタイプのものであり、NVSMと通信を行うのに使用されるインターフェースは、PCIeタイプのものであってもよい。
図8には、ホスト制御モジュール302と通信を行う又はそれに含まれるターボブートドライバモジュール300が示されている。ターボブートドライバモジュール300は、図1〜7のホスト制御モジュールに位置していてもよい。ターボブートドライバモジュール300は、図1〜7及び図10〜11の実施形態のいずれの実施形態において使用されてもよい。ターボブートドライバモジュール300は、ターボブートドライバモジュール300のオペレーションを制御するターボブート制御モジュール304を含み、図1〜7の実施形態と同様にターボドライバを実行してもよい。また、ターボブートドライバモジュール300は、モード選択モジュール305、学習モジュール306、学習後モジュール308、バイストレージアクセスモジュール310、更新モジュール312、圧縮/解凍アクセラレータモジュール314、ストレージマッピングモジュール316及び起動タイマ318を含む。
モード選択モジュール305を使用して、オペレーションモードを選択してもよい。モード選択モジュール305は、選択されたオペレーションモードに基づいて、1以上のモジュール306〜318を起動してもよい。
学習モジュール306は、学習モードで動作する場合に使用されてもよい。学習モードでは、あらゆる種類の起動データが収集されて、NVSMに格納される。学習後モジュール308は、学習後モードで動作する場合に使用されてもよい。学習後モジュール308は、起動モードの間のデータアクセス要求に基づいて、HDD及びNVSMへのアクセスを制御する。異なる起動サイクルの間に、ターボブートドライバモジュール300は学習モード及び学習後モードで動作する。起動サイクルとは、コンピュータの電源がONとされた時に実行される起動プロセスを指す。コンピュータの電源が投入される都度、コンピュータは起動プロセスを実行する。
学習モジュール306は、いつ学習モードで動作するべきかを判断する。例えば、キャッシュヒットに対するキャッシュミスの割合、及び/又は全キャッシュアクセスに対するキャッシュミスの割合が、所定の閾値を超えた場合に、学習モードのフラグが設定されるようにしてもよい。学習モードのフラグは、次の起動又は引き続いて行われる起動について、いつコンピュータシステムが学習モードで動作すべきかを示してもよい。キャッシュミスとは、ターボブートドライバモジュール300が、起動データへのアクセス要求を受信した時に、そのデータがNVSMに格納されていないことを指す。起動データがHDDに格納又は更新されていて、NVSMには格納又は更新されていない場合に、キャッシュミスが発生すると考えられる。キャッシュヒットとは、ターボブートドライバモジュール300が、起動データへのアクセス要求を受信した時に、そのデータがNVSMに格納されていることを指す。キャッシュアクセスは、キャッシュミス又はキャッシュヒットを指す。
バイストレージアクセスモジュール310は、バイストレージアクセスモードで動作する場合に使用されてもよい。バイストレージアクセスモジュール310は、同じ期間に、HDD及びNVSM両方へのアクセスを制御してもよい。データの第1セットは、HDDからアクセスされると同時に、データの第2セットは、NVSMからアクセスされてもよい。これにより、起動時間を短縮できる。
更新モジュール312は、HDDに格納されたデータが更新される時に使用されてもよい。更新モジュール312は、HDDのデータがいつ更新されたかを検出し、NVSMに格納されている対応データを更新する。これにより、NVSMに格納されている特定の起動データがミラーされる、又は、HDDに格納されている特定の起動データと同じものとすることができる。一実施形態において、NVSMに格納されるデータは、HDDに格納されるデータと同期される。別の実施形態において、HDDは、NVSMに格納されているデータ及び更なるデータを格納してもよい。NVSMは、HDDに格納されているデータ及び更なるデータを格納してもよい。すなわち、HDDに格納されているデータは、NVSMに格納されたデータの包括でなくてもよく、またその反対の関係も同様である。
圧縮/解凍アクセラレータモジュール314は、データを格納する前に圧縮し、NVSM及び/又はメモリ320からのアクセスがあった後に、データを解凍するのに使用されてもよい。例えば、収集された起動データは、圧縮された後、NVSMに格納されてもよい。同様に、マッピングデータは、メモリ320に記憶される前に、圧縮されてもよい。圧縮及び解凍プロセスを使用して、NVSM及びメモリ320に関連するアクセス時間を短縮してもよい。
ストレージマッピングモジュール316を使用して、収集されNVSMに格納されたデータのマッピングを制御してもよい。HDDのストレージに基づいて、NVSMに収集され格納された起動データは、マッピングされて、HDD対NVSMマップ322(例えば、変換テーブル)が提供される。
ブートタイマ318は、HDDからの起動データのNVSMへの収集及び記憶をいつ止めるべきかを指示する。例えば、ターボブート制御モジュール304及び/又は学習モジュール306は、HDDからのデータ収集及びNVSMへのデータ格納を停止してもよい。起動タイマ318の予め設定された起動期間324が経過した時に、停止してもよい。起動タイマ318は、予め設定された起動期間324を初期化し、システムクロック326からのクロック信号に基づいて、いつ起動期間324が経過するかを判断してもよい。
予め設定された起動期間324はメモリ320に記憶され、異なる起動時間を構成するために調整が行われてもよい。例えば、起動の間に実行されるタスク、システム性能等に基づいて、起動を実行する時間を変更してもよい。例えば、ホスト制御モジュール302は、システムユーザーからの入力328に基づいて、起動時間調整信号を生成してもよい。起動時間調整信号は、更新された起動期間を含んでもよく、メモリ320に記憶され、学習モードを無効にするのに使用される。
上述の図1〜8の実施形態は、それぞれ別々のものとして考えてもよいし、組み合わせることも可能である。例えば、図3のファイルシステム及びドライバは、図4〜7の構成のいずれであってもよい。以下に示す図9〜11のタイミング図及び方法は、図1〜8の実施形態に適用してもよい。
図9には、起動のタイミング図が示されている。図1〜8のモジュールによって実行される起動は、BIOSモード及びOS起動オペレーションモードを含んでもよい。BIOSモード及びOS起動オペレーションモードは、モード選択モジュール305のようなモード選択モジュールによって選択される。BIOSモードの間に、POSTモードが実行され、そしてブートローダモードが実行される。POSTモードの間、ホスト制御モジュールは、HDDからマスタブートレコード(MBR)を読み込む。MBRは、ブートローダを読み込み実行するのに使用されてもよい。ブートローダモードの間、ブートローダは、OSカーネル、ディスクドライバ、半導体メモリドライバ、ストレージドライバ及びターボブートドライバを読み込んでもよい。
OSカーネルは、ブートローダモードが完了した時に実行されてもよい。OSカーネルは、ディスクドライバの実行を含む初期化期間に、半導体ドライバ、ストレージドライバ及びターボブートドライバを初期化してもよい。ターボブートドライバは、実行されると、図8の実施形態を参照して上記された起動期間のような起動期間を開始してもよい。ターボブートドライバは、起動期間の間にアクティブにされ、起動期間の後もアクティブ状態のままであってもよい。起動タイマ期間の間にアクセスされる起動データは、HDD及び/又はNVSMからアクセスされてもよい。
OS起動オペレーションモードは、OS設定モードを含む。OS設定モードに続いて、ログオンモードが実行されてもよい。Windows(登録商標)のようなコンピュータシステムのOSは、OS設定モードの間に設定が行われる。システム及び自動スタートドライバが、読み込まれ開始されてもよい。ログオンモードの実行中になると、ユーザーは、ユーザーネーム及びパスワードを入力してログオンしてもよい。ユーザーネーム及びパスワードが承認され、ユーザープロファイルが読み込まれた時点で、ログオンモードが完了してもよい。ログオンモードの後に、ユーザーアプリケーション及びサービスが読み込まれ実行されてもよい。Windows(登録商標)ベースのシステムでは、Windows(登録商標)デスクトップが開始する。図9では、起動タイマ期間が、起動が完了すると終了するように示されているが、起動タイマ期間は、起動完了の前後に満了してもよい。
図10は、起動の間にデータを読み込む方法を示している。以下の説明では、主に図3、8及び9の実施形態について、方法の段階を説明しているが、これらの段階は、本開示のその他の実施形態にも適用可能である。方法は、400で開始される。
ステップ402において、コンピュータシステムの電源がONにされ、起動プロセスが開始される。この段階は、HDDからマスタブートレコードの読み込み及び実行を含む。マスタブートレコードは、コンピュータシステムのRAMに読み込まれ、実行されてもよい。
ステップ404において、BIOSが読み込まれ実行される。この段階では、パーソナルコンピュータ(PC)ベースのシステムについて、エクステンシブル・ファームウェア・インターフェース(EFI)の読み込み及び実行を含む。EFIは、オペレーティングシステムとプラットフォームファームウェアとの間のソフトウェアインターフェースを規定する。
ステップ404Aでは、マスタブートレコードを使用して、POSTモジュールを読み込み及び実行してもよい。POSTモジュールは、最初はROMに格納されており、後にRAMに読み込まれ、RAMから実行されてもよい。
ステップ404Bでは、マスタブートレコード及び/又はPOSTモジュールを使用して、コンピュータシステムハードウェアを初期化し、ブートローダの読み込み及び実行を行ってもよい。ブートローダは、最初はHDDに格納されており、後にRAMに読み込まれ、RAMから実行されてもよい。ブートローダは、POSTモジュールの実行後に、実行されてもよい。
ステップ404B1〜404B4では、ブートローダは、OSカーネル、ディスクドライバ、半導体メモリドライバ及びターボブートドライバをそれぞれ、読み込んでもよい。ディスクドライバは、ディスクストレージドライバ及びディスク制御ドライバを含んでもよい。半導体メモリドライバ、半導体メモリドライバ及び半導体制御ドライバを含んでもよい。
ステップ406では、ブートローダは、OSカーネルを実行してもよい。OSカーネルは、RAMから実行され、コンピュータシステムのOSの設定を行ってもよい。例えば、OSカーネルは、Windows(登録商標)OSを設定する。OSカーネルの実行の間及び実行後に、サービス及びアプリケーションの読み込みを行ってもよい。ステップ406A〜406Cでは、OSカーネルは、ディスクドライバ、半導体メモリドライバ及びターボブートドライバをそれぞれ実行してもよい。
以下の複数の段階では、様々なタスクが、ターボブートドライバによって実行される。タスクは、ホスト制御モジュール、ターボブートドライバモジュール、及び又はターボブート制御モジュールによって実行されてもよい。
ステップ408において、ターボブートドライバは、起動タイマを始動させる。起動タイマは、カウンタを開始し、開始タイムスタンプを記録し、開始タイムスタンプからの時間の経過をモニタする。
ステップ409において、ホスト制御モジュール及び/又はファイルシステムは、HDDに格納された起動データにアクセスするデータアクセス要求を生成する。データアクセス要求は、ディスクストレージドライバ、ストレージドライバ及び/又はターボブートドライバに提供されてもよい。一実施形態において、ディスクストレージドライバ又はストレージドライバは、ターボブートドライバに提供されるデータアクセス信号を生成する。別の実施形態では、ターボブートドライバは、ホスト制御モジュール又はファイルシステムから直接、データアクセス要求を受信する。
ステップ410において、ターボブートドライバは、データアクセス要求と関連するデータが、NVSMに格納(キャッシュ)されているか否かを判断する。すなわち、ターボブートドライバは、データアクセス要求に対してキャッシュミスが存在するかを判断する。データがNVSMに格納されている場合には、ターボブートドライバはステップ412に進み、そうでない場合には、制御は、ステップ430に進んでもよい。ターボブートドライバは、HDD対NVSMマップで、セクタ番号、ブロックID及び/又はLBAを参照して、データがNVSMに格納されているか否かを判断してもよい。
ステップ412において、ターボブートドライバは、コンピュータシステムが、学習モードで動作しているかを判断する。ホスト制御モジュール、ターボブートドライバ、ディスクドライバ、半導体メモリドライバ及び/又はストレージドライバを含むコンピュータシステムは、学習モードで動作してもよい。コンピュータシステムが初めて起動される時、又はNVSMにおける起動データが更新される別の起動の間に、コンピュータシステムは、学習モードで動作してもよい。コンピュータシステムが学習モードで動作しない場合には、ターボブートドライバはステップ414に進み、そうでない場合には、制御は、ステップ418に進む。
ステップ414において、起動データは、HDDから読み込まれる。ステップ414の後、ターボブートドライバは、416で終了する。ステップ418では、ターボブートドライバ及び/又は学習モジュールは、HDDから起動データを読み込んで、ステップ420に進む。
ステップ420において、ターボブートドライバ及び/又は学習モジュールは、起動データを収集して、HDDからの第1アドレス又はロケーションIDを記録し、NVSMの第2の対応するアドレス又はロケーションIDに起動データを格納する。起動データは、例えば、システム及び自動スタートドライバデータ、OSデータ、OSカーネルローダデータ、サービス及びアプリケーションデータ、又は別の起動データを含んでもよい。格納されるデータの長さは、記録され、格納された起動データにアクセスする際に使用されてもよい。
ステップ422において、ターボブートドライバ及び/又は学習モジュールは、NVSMにおける対応するロケーションに対するHDDに格納されてる起動データのロケーションをマップする。このマッピングは、図8の実施形態を参照して説明した態様と同様にして実行してもよい。
ステップ424において、起動期間が経過した場合には、ターボブートドライバは426において終了してもよい。起動期間が経過していない場合には、ターボブートドライバは、ステップ428に進んでもよい。ステップ428において、更なる起動データをHDDから読み込むべき場合には、ターボブートドライバは、ステップ420に戻る、又は更なるデータアクセス要求が受信された場合には、ステップ409に戻る。
ステップ430において、ターボブートドライバは、コンピュータシステムが、バイストレージアクセスモードで動作しているかを判断する。ホスト制御モジュール、ターボブートドライバ、ディスクドライバ、ディスクドライバ及び/又は半導体メモリドライバを含むコンピュータシステムは、バイストレージアクセスモードで動作してもよい。バイストレージアクセスモードは、NVSM内のデータへのアクセスと同時に、HDD内のデータへのアクセスを含んでもよい。コンピュータシステムが、バイストレージアクセスモードで動作している場合には、ターボブートドライバはステップ432に進み、そうでない場合には、ステップ434に進む。
ステップ432において、ターボブートドライバが、HDD及びNVSMの両方から起動データを読み込んでもよい。読み込まれた起動データは、ファイルシステムへと転送される。NVSMから読み込まれるデータは、前に学習モードで収集されたデータであってもよい。ターボブートドライバは、HDD対NVSMマップを使用して、データの第1セットをHDDから読み込み、データの第2セットをNVSMから読み込んでもよい。データの第1セットは、データの第2セットとは区別される及び/又は独立したものである。
OSイメージ又はその一部が、HDD及びNVSMの両方から読み込まれてもよい。OSイメージとは、OS、実行可能なプログラム及び当該実行可能なプログラムと関連付けられたデータファイルを含むファイルのことを指す。順次読み出し要求を、ターボブートドライバ及び/又はバイストレージアクセスモジュールによって生成してもよい。順次読み出しは、HDDの順次読み出し及びNVSMの順次読み出しを含んでもよい。別の例として、順次読み出しは、OS・SATA・HDD順次読み出し、及びNVSM順次読み出しを含んでもよい。
ターボブートドライバ及び/又はバイストレージアクセスモジュールは、HDD及びNVSMからのデータアクセスのバランスをとるために、負荷バランシングアルゴリズムを使用してもよい。負荷バランシングアルゴリズムは、HDD及びNVSMのどちらからデータを読み込むかを、データトラフィック、HDD及びNVSMのそれぞれからのデータアクセス量、HDDのスピード及び/又はNVSMのスピード、HDD及びNVSMそれぞれから現在アクセスされているデータの量等に基づいて決定する。このようにすることにより、HDD及びNVSMを効率的に使用することができ、起動時間を速くすることができる。
ステップ434において、ターボブートドライバは、HDD対NVSMマップを使用し、起動データをHDDからではなく、NVSMから読み込んでもよい。読み込まれた起動データは、ファイルシステムに転送される。NVSMから読み込まれたデータは、学習モードで前に収集されたデータであってもよい。ステップ436において、起動プロセスが完了した場合には、ターボブートドライバは438において終了してもよく、そうでない場合には、ステップ430に戻り、起動データの読み込みを続ける。
図11には、本開示の実施形態に係る、収集された起動データに基づいてストレージデバイスにデータを書き込む方法が示されている。方法は、ホスト制御モジュール、ターボブートドライバモジュール、及び/又はターボブート制御モジュールによって実行されてもよい。ステップ500で、方法が開始されてもよい。コンピュータシステムが起動モードにある場合、又は起動モードが完了した後に、この方法を実行してもよい。この方法は、学習モードの間は、実行されなくてもよい。
ステップ502では、ディスクストレージドライバ、ターボブートドライバ、又はストレージドライバにより、HDDデータアクセス要求がファイルシステムから受信される。ステップ504では、HDDデータアクセス要求が書き込み要求である場合には、ターボブートドライバは、ステップ506に進んでもよく、書き込み要求でない場合には、ステップ514に進んでもよい。
ステップ506において、HDDデータアクセス要求がNVSMに格納された起動データに対応する場合には、ターボブートドライバはステップ508に進み、そうでない場合には、ステップ510に進む。ステップ508において、データはHDD及びNVSMの対応するロケーションに格納される。HDD及びNVSMには、同一のデータが格納される。ステップ510において、HDDにデータが格納され、NVSMには格納されない。ターボブートドライバは、ステップ512において終了してもよい。
ステップ514において、HDDデータアクセス要求に関連付けられたデータが、NVSMに格納されている場合には、ターボブートドライバは、ステップS516に進んでもよく、そうでない場合には、ステップ518に進む。ステップ516において、ターボブートドライバは、NVSM内のデータを読み出す。ステップ518において、ターボブートドライバは、HDD内のデータを読み出す。ターボブートドライバは、520で終了してもよい。
図10及び図11の上述したステップは、例示することを目的としたものであり、これらのステップを、順次に、同期して、同時に、連続的に、重複する期間において、又はアプリケーションに応じて異なる順番で実行してもよい。
本開示の広義の教示するところは、様々な形式で実装可能である。本開示には、特定の例が記載されているが、本開示の真の範囲は、これらに限定されず、添付の図面、明細書の記載及び添付の特許請求の範囲を熟読することにより、その他の改良例が明らかとなる。

Claims (18)

  1. 第1起動データを含むデータの第1セットを格納するハードディスクドライブと、
    前記ハードディスクドライブの半導体メモリ、及びコンピュータシステムのホストの半導体メモリとは異なる、不揮発性半導体メモリと、
    前記ホストの起動モードの間に、前記第1起動データを前記不揮発性半導体メモリに格納し、前記第1起動データを前記不揮発性半導体メモリから前記ホストのファイルシステムへと転送するターボブートドライバモジュールと
    を備え、
    前記ターボブートドライバモジュールは、所定の起動期間を有する起動タイマと、
    前記ホストからデータアクセス要求を受信するように構成されたディスクストレージドライバと
    を含み、
    前記データアクセス要求は、前記ハードディスクドライブに格納された第2起動データを要求し、
    ターボブートドライバモジュールは、前記第2起動データが前記データアクセス要求に対応した前記不揮発性半導体メモリに格納されているかを判定し、
    前記不揮発性半導体メモリに格納されていない前記第2起動データに応じて、前記起動モードの間に、前記第2起動データが前記ハードディスクドライブから前記ファイルシステムにロードされている間、前記第2起動データを前記不揮発性半導体メモリに収集すべく学習モードで動作し、
    前記起動モードの間に、前記ハードディスクドライブから収集された前記第2起動データの全て又は一部を、前記所定の起動期間が終了するまで、前記不揮発性半導体メモリに格納するよう構成されているコンピュータシステム。
  2. 前記ターボブートドライバモジュールは、データの第2セットを、前記第1起動データを含む前記不揮発性半導体メモリに格納する請求項1に記載のコンピュータシステム。
  3. 前記ターボブートドライバモジュールは、前記ホストの第1起動の間に、前記第1起動データを収集し、前記不揮発性半導体メモリに格納する学習モジュールを有し、
    前記ターボブートドライバモジュールは、前記ホストの第2起動の間に、前記不揮発性半導体メモリに格納された前記第1起動データを、前記ファイルシステムへと転送する請求項1または2に記載のコンピュータシステム。
  4. 前記ハードディスクドライブに格納されているデータにアクセスする第2データアクセス要求を生成する前記ファイルシステム及び前記ディスクストレージドライバのうちの少なくとも一つをさらに備え、
    前記ターボブートドライバモジュールは、前記第2データアクセス要求を満たすべく、前記不揮発性半導体メモリに格納されているデータにアクセスする請求項1から3の何れか1項に記載のコンピュータシステム。
  5. 前記ターボブートドライバモジュールは、前記第2データアクセス要求を満たすのに、前記ハードディスクドライブにアクセスしない請求項4に記載のコンピュータシステム。
  6. 前記ハードディスクドライブに格納されているデータを更新する第2データアクセス要求を生成する前記ファイルシステム及び前記ディスクストレージドライバのうちの少なくとも一つをさらに備え、
    前記ターボブートドライバモジュールは、前記データアクセス要求に基づいて、前記不揮発性半導体メモリに格納されているデータを更新する請求項1から3の何れか1項に記載のコンピュータシステム。
  7. 前記ターボブートドライバモジュールは、前記第2データアクセス要求に基づいて、前記ハードディスクドライブに格納されている前記データを更新する請求項6に記載のコンピュータシステム。
  8. 前記ターボブートドライバモジュールは、前記ハードディスクドライブから前記第1起動データにアクセスし、前記不揮発性半導体メモリから前記第2起動データにアクセスする請求項1から7の何れか1項に記載のコンピュータシステム。
  9. 前記ターボブートドライバモジュールは、前記第1起動データ及び前記第2起動データに同時にアクセスし、同じ期間に、前記ハードディスクドライブと前記不揮発性半導体メモリの両方へのアクセスを制御するよう構成されたバイストレージアクセスモジュールを有する請求項8に記載のコンピュータシステム。
  10. 前記ターボブートドライバ及び/又は前記バイストレージアクセスモジュールは、負荷バランシングアルゴリズムを使用して、前記ハードディスクドライブ及び前記不揮発性半導体メモリからのデータアクセスのバランスをとる請求項9に記載のコンピュータシステム。
  11. 前記ターボブートドライバモジュールは、前記ファイルシステム及び前記ディスクストレージドライバのうちの少なくとも1つからの前記データアクセス要求に基づいて、前記第1起動データ及び前記第2起動データにアクセスする請求項8に記載のコンピュータシステム。
  12. 前記ターボブートドライバモジュールは、前記ハードディスクドライブから前記第1起動データを受信すると、前記第1起動データを収集し、前記ハードディスクドライブからの第1アドレス又は第1ロケーションIDを記録し、前記不揮発性半導体メモリの第2アドレス又は第2ロケーションIDに第1起動データを格納し、
    第1アドレス又は第1ロケーションIDと、第2アドレス又は第2ロケーションIDとに基づいて、前記不揮発性半導体メモリに格納されるデータに対して前記ハードディスクドライブに格納されるデータをマップするストレージマッピングモジュールを有する請求項1から11の何れか1項に記載のコンピュータシステム。
  13. 第2データアクセス要求に基づいて、半導体制御ドライバ及び半導体メモリインターフェースを介して、前記不揮発性半導体メモリにアクセスするよう構成された半導体メモリドライバをさらに備え、
    前記第2データアクセス要求は、前記不揮発性半導体メモリ内のデータを要求し、
    前記ディスクストレージドライバは、前記ファイルシステムから、ハードディスクドライブ内のデータを要求する第3データアクセス要求を受信
    前記ターボブートドライバモジュールは、前記第3アクセス要求に基づいて、前記第2データアクセス要求を生成する請求項1から12の何れか1項に記載のコンピュータシステム。
  14. 第2データアクセス要求に基づいて、半導体メモリインターフェースを介して、前記不揮発性半導体メモリにアクセスするよう構成されたストレージ制御モジュールをさらに備え、
    前記第2データアクセス要求は、前記不揮発性半導体メモリ内のデータを要求し、
    前記ディスクストレージドライバは、ハードディスクドライバ内のデータを要求する第3データアクセス要求を前記ファイルシステムから受信
    前記ターボブートドライバモジュールは、前記第3データアクセス要求に基づいて、前記第2データアクセス要求を生成する請求項1から12の何れか1項に記載のコンピュータシステム。
  15. 前記ターボブートドライバモジュールは、前記不揮発性半導体メモリに格納する前に、前記第1起動データを圧縮し、前記不揮発性半導体メモリからアクセスされた時に、格納された前記第1起動データを解凍する、圧縮解凍モジュールを有する請求項1から14の何れか1項に記載のコンピュータシステム。
  16. 前記ターボブートドライバモジュールは、前記不揮発性半導体メモリに対するアクセスにおいて、キャッシュヒットに対するキャッシュミスの割合が閾値よりも大きい場合に、前記第2起動データを前記不揮発性半導体メモリに格納することを含む学習モードで動作する請求項1から15の何れか1項に記載のコンピュータシステム。
  17. 前記ターボブートドライバモジュールは、前記不揮発性半導体メモリに対するアクセスにおいて、全キャッシュアクセスに対するキャッシュミスの割合が閾値よりも大きい場合に、前記第2起動データを前記不揮発性半導体メモリに格納することを含む学習モードで動作する請求項1から15の何れか1項に記載のコンピュータシステム。
  18. 前記起動データは、自動スタートドライバ、オペレーションシステムデータ及びアプリケーションプログラムを含む請求項1から17の何れか1項に記載のコンピュータシステム。
JP2011528097A 2008-09-24 2009-09-24 ターボブートシステム及び方法 Active JP5234473B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US9974308P 2008-09-24 2008-09-24
US61/099,743 2008-09-24
US12/563,239 2009-09-21
US12/563,239 US8417928B2 (en) 2008-09-24 2009-09-21 Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
PCT/US2009/058152 WO2010036757A1 (en) 2008-09-24 2009-09-24 Turbo boot systems and methods

Publications (3)

Publication Number Publication Date
JP2012503806A JP2012503806A (ja) 2012-02-09
JP2012503806A5 JP2012503806A5 (ja) 2013-03-14
JP5234473B2 true JP5234473B2 (ja) 2013-07-10

Family

ID=42038809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011528097A Active JP5234473B2 (ja) 2008-09-24 2009-09-24 ターボブートシステム及び方法

Country Status (5)

Country Link
US (2) US8417928B2 (ja)
EP (1) EP2329365B1 (ja)
JP (1) JP5234473B2 (ja)
CN (1) CN102165418B (ja)
WO (1) WO2010036757A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
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
US8417928B2 (en) 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
JP5999645B2 (ja) * 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
CN102207875B (zh) * 2010-03-30 2014-11-12 鸿富锦精密工业(深圳)有限公司 媒体数据播放装置及其重新启动方法
US20120060023A1 (en) * 2010-09-06 2012-03-08 Samsung Electronics Co., Ltd. Methods for booting an operating system using non-volatile memory
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
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
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US20120303942A1 (en) * 2011-05-25 2012-11-29 Eric Peacock Caching of boot data in a storage device
US9286079B1 (en) * 2011-06-30 2016-03-15 Western Digital Technologies, Inc. Cache optimization of a data storage device based on progress of boot commands
US9858086B2 (en) 2011-10-26 2018-01-02 Hewlett-Packard Development Company, L.P. Load boot data
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
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
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
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
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
KR101997079B1 (ko) * 2012-07-26 2019-07-08 삼성전자주식회사 가변 저항 메모리를 포함하는 저장 장치 및 그것의 동작 방법
CN102917057B (zh) * 2012-10-19 2016-01-06 北京奇虎科技有限公司 个性化应用推送系统及方法
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
TW201502782A (zh) * 2013-05-07 2015-01-16 Insyde Software Corp 非依電性記憶體中之作業系統啟動加載器之快取技術
US20150089102A1 (en) * 2013-09-23 2015-03-26 Lsi Corporation Solid state drives that cache boot data
US9804785B2 (en) 2014-09-22 2017-10-31 Sandisk Technologies Llc Nonvolatile memory adaptive to host boot up routine
US9864605B2 (en) * 2015-11-03 2018-01-09 Xilinx, Inc. Multistage boot image loading by configuration of a bus interface
TWI569129B (zh) 2015-12-01 2017-02-01 財團法人工業技術研究院 系統暫停方法、系統回復方法及應用其之電腦系統
KR20210016227A (ko) 2019-08-02 2021-02-15 삼성전자주식회사 빠른 쓰기 및 빠른 읽기를 지원하기 위한 복수의 버퍼 영역들을 포함하는 메모리 장치 및 이를 포함하는 스토리지 장치

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09231084A (ja) * 1996-02-22 1997-09-05 Nec Eng Ltd ファームウェアロード方式
DE19839680B4 (de) * 1998-09-01 2005-04-14 Robert Bosch Gmbh Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
US6539456B2 (en) * 1999-10-13 2003-03-25 Intel Corporation Hardware acceleration of boot-up utilizing a non-volatile disk cache
US6920533B2 (en) * 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
KR100597733B1 (ko) * 2002-01-03 2006-07-07 삼성전자주식회사 컴퓨터 시스템 및 그 부팅방법
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US7036040B2 (en) * 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
TW200410140A (en) * 2002-12-03 2004-06-16 Via Tech Inc An initialization process in a device driver
US20040225874A1 (en) * 2003-05-09 2004-11-11 Jeremy Burr Method for reduced BIOS boot time
KR20060015329A (ko) * 2003-06-03 2006-02-16 코닌클리케 필립스 일렉트로닉스 엔.브이. 비휘발성 메모리로부터의 부팅
JP3906825B2 (ja) * 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム
JP2005018418A (ja) * 2003-06-26 2005-01-20 Konica Minolta Business Technologies Inc 画像形成装置
US7219257B1 (en) * 2003-06-27 2007-05-15 Adaptec, Inc. Method for boot recovery
US7296143B2 (en) * 2004-06-22 2007-11-13 Lenovo (Singapore) Pte. Ltd. Method and system for loading processor boot code from serial flash memory
JP2006163714A (ja) * 2004-12-06 2006-06-22 Fuji Photo Film Co Ltd 撮影装置
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
US7281127B2 (en) * 2004-12-27 2007-10-09 Intel Corporation Concurrent processing of operations in a boot sequence to initialize a storage device including an operating system loader to load
US20080005462A1 (en) * 2006-06-30 2008-01-03 Mosaid Technologies Incorporated Method of configuring non-volatile memory for a hybrid disk drive
US7669044B2 (en) * 2006-09-29 2010-02-23 Microsoft Corporation Accelerated system boot
US7711941B2 (en) * 2006-12-19 2010-05-04 Lsi Corporation Method and apparatus for booting independent operating systems in a multi-processor core integrated circuit
KR101211503B1 (ko) * 2007-10-02 2012-12-12 삼성전자주식회사 부팅 시스템, 그 시스템을 구비한 화상형성장치 및 그제어방법
US9152432B2 (en) * 2008-06-30 2015-10-06 Intel Corporation System and method to accelerate access to network data using a networking unit accessible non-volatile storage
US8713241B2 (en) * 2008-08-27 2014-04-29 Wireless Silicon Group, Llc Method and apparatus for an active low power mode of a portable computing device
US8417928B2 (en) 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory

Also Published As

Publication number Publication date
US8417928B2 (en) 2013-04-09
CN102165418B (zh) 2015-04-01
EP2329365B1 (en) 2018-03-14
JP2012503806A (ja) 2012-02-09
EP2329365A1 (en) 2011-06-08
US20100077194A1 (en) 2010-03-25
US9195472B2 (en) 2015-11-24
US20130219160A1 (en) 2013-08-22
WO2010036757A1 (en) 2010-04-01
CN102165418A (zh) 2011-08-24

Similar Documents

Publication Publication Date Title
JP5234473B2 (ja) ターボブートシステム及び方法
JP5284946B2 (ja) Nandフラッシュメモリを用いた直接ブート構成
TWI582791B (zh) 使用快閃記憶體及一限制功能的記憶體控制器而對一電子裝置開機的方法及電腦儲存媒體
JP4205560B2 (ja) ディスクレスネットワークブータブルコンピュータにおける不揮発性メモリキャッシュを用いた信頼性の改善
CN106990958B (zh) 一种扩展组件、电子设备及启动方法
US7127600B2 (en) Aggressive content pre-fetching during pre-boot runtime to support speedy OS booting
TWI317478B (en) Hard disk drive cache memory and playback device
KR101595043B1 (ko) 적어도 부분적으로 부팅 동안에 어플리케이션들을 메모리에 프리로딩하는 방법
US7406560B2 (en) Using multiple non-volatile memory devices to store data in a computer system
US9052918B2 (en) Management of multiple software images with shared memory blocks
TW200805159A (en) Method and apparatus for fast boot of an operating system
US8370617B2 (en) Booting method and computer system using the booting method
US10289421B2 (en) Booting of IHS from SSD using PCIe
JP2006079628A (ja) ユーザデータをパーティションファイルに記憶する、又はユーザデータを含むパーティションファイルを使用するシステム及び方法
US20150347151A1 (en) System and method for booting from a non-volatile memory
JP2014534521A (ja) ブートデータのロード
KR101303535B1 (ko) 메인 메모리를 이용한 메모리 디스크 구성 방법 및 장치
US7849300B2 (en) Method for changing booting sources of a computer system and a related backup/restore method thereof
CN101788913B (zh) 具有内建双可被隐藏操作装置的计算机系统
TWI559227B (zh) 具有內建雙可隨機關閉開啟電源作業裝置的電腦系統
US20140359263A1 (en) Boot from logical volume spanning plurality of pci devices
US11500747B2 (en) Computer initialization debug message display system
JP2006215648A (ja) コンピュータの高速起動システム及び方法
WO2009017575A2 (en) Electronic device data access system and method
WO2013091396A1 (zh) 计算机设备以及计算机设备的启动方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20130123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130315

R150 Certificate of patent or registration of utility model

Ref document number: 5234473

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350