(57)【特許請求の範囲】
【請求項１】
基本入力／出力システム（ＢＩＯＳ）のブートアップ中、第２ハードディスク・ドライブに含まれるオペレーティング・システム（ＯＳ）がシステムメモリにロードされている間に、キャッシュメモリにプリロードされる、第１ハードディスク・ドライブに格納された１以上のアプリケーションを提供する段階と、
前記１以上のアプリケーションのうちの１つのアプリケーションの選択をユーザーから受信する段階と、
前記オペレーティング・システムのブートアップが完了し、前記オペレーティング・システムが前記システムメモリから実行された場合に、前記オペレーティング・システムが、前記選択された１つのアプリケーションを前記キャッシュメモリから前記システムメモリへロードし、前記選択された１つのアプリケーションの実行を開始することができるように、
前記ＢＩＯＳのブートアップ中、前記オペレーティング・システムが前記第２ハードディスク・ドライブから前記システムメモリにロードされている間に、前記選択された１つのアプリケーションを前記第１ハードディスク・ドライブから前記キャッシュメモリにプリロードする段階と、
を備え、
前記第２ハードディスク・ドライブは特定のコンピュータ読み出し可能媒体に含まれ、前記システムメモリは、前記特定のコンピュータ読み出し可能媒体とは別のコンピュータ読み出し可能媒体に含まれ、
前記第１ハードディスク・ドライブ、及び前記キャッシュメモリは、前記特定のコンピュータ読み出し可能媒体及び前記別のコンピュータ読み出し可能媒体とは分離され、
前記プリロードする段階は、前記ＢＩＯＳから直接指示を受信することにより開始する
方法。
【請求項２】
前記１以上のアプリケーションは、前記基本入力／出力システム（ＢＩＯＳ）又は前記オペレーティング・システムに関連していない、
請求項１に記載の方法。
【請求項３】
プリロードする前記選択された１つのアプリケーションの論理ブロックを決定する段階を更に備え、
前記選択された１つのアプリケーションをプリロードする段階においては、前記選択された１つのアプリケーションの前記論理ブロックを前記キャッシュメモリにプリロードする、
請求項１または２に記載の方法。
【請求項４】
前記１以上のアプリケーションのうちの１つのアプリケーションの前記選択を受信して、１以上の他の選択されたアプリケーションを提供する段階と、
前記論理ブロックを決定する段階と、
を繰り返す段階を更に備え、
前記論理ブロックは、前記他の選択されたアプリケーションの論理ブロックを含む、
請求項３に記載の方法。
【請求項５】
前記選択された１つのアプリケーション及び前記１以上の他の選択されたアプリケーションに関連する前記論理ブロックをプリロードする順序の選択を可能にする段階と、
選択された順序を受信する段階と、
前記選択された順序によるプリロードを有効にする、前記選択された順序において前記論理ブロックの識別子を提供する段階と
を更に備える、
請求項４に記載の方法。
【請求項６】
前記論理ブロックのインデックスを供給する段階を更に備え、
前記インデックスは、前記論理ブロックを前記キャッシュメモリにプリロードする順序を示し、
前記順序は前記選択された１つのアプリケーション及び前記１以上の他の選択されたアプリケーションの使用履歴に基づく、
請求項４または５に記載の方法。
【請求項７】
前記１以上のアプリケーションを提供する段階は、前記１以上のアプリケーションのそれぞれに関連する、選択可能なテキスト又はアイコンを含むグラフィカルユーザーインターフェイスを表示する段階を有する、
請求項１から６までの何れか１項に記載の方法。
【請求項８】
前記１以上のアプリケーションは、ワードプロセッシング・プログラム、ブラウジング・プログラム、電子メール・プログラム又はグラフィックス・プログラムのうち１以上のプログラムを含む、
請求項１から７までの何れか１項に記載の方法。
【請求項９】
前記１以上のアプリケーションは、前記オペレーティング・システムが前記システムメモリにロードされている間に読み出される１以上の第１ハードディスク・ドライブに、少なくとも部分的には、事前にロードされている
請求項１から８までの何れか１項に記載の方法。
【請求項１０】
前記アプリケーションのうちの１つのアプリケーションの選択を受信する段階に応じて、前記選択された１つのアプリケーションが、前記オペレーティング・システムが前記システムメモリにロードされている間に読み出される１以上の第１ハードディスク・ドライブに、少なくとも部分的には、前記選択された１つのアプリケーションをロードする段階を更に備える、
請求項１から９までの何れか１項に記載の方法。
【請求項１１】
少なくとも部分的には前記選択された１つのアプリケーションを前記キャッシュメモリにプリロードする段階は、基本入力／出力システムが前記システムメモリにロードされている間又は前記システムメモリから実行されている間に、少なくとも部分的には前記選択された１つのアプリケーションを前記キャッシュメモリにプリロードする段階を含む、
請求項１から１０までの何れか１項に記載の方法。
【請求項１２】
前記ブートアップの後、他の追加のアプリケーションが実行されるであろう特定の時間の前に、前記他の追加のアプリケーションを実行するための論理ブロックを、前記キャッシュメモリにプリロードする段階をさらに備える、
請求項１から１１までの何れか１項に記載の方法。
【請求項１３】
コンピュータに、請求項１から請求項１２までの何れか一項に記載の方法を実行させるためのプログラム。
【請求項１４】
第１ハードディスク・ドライブ、及びキャッシュメモリにアクセスするコントローラであって、
基本入力／出力システム（ＢＩＯＳ）から直接指示を受信することにより、当該ＢＩＯＳのブートアップ処理の開始に応じて、前記第１ハードディスク・ドライブに格納されている、ユーザーに選択された１以上のアプリケーションにアクセスし、
前記第１ハードディスク・ドライブから前記１以上のアプリケーションを読み出し、
第２ハードディスク・ドライブに含まれるオペレーティング・システム（ＯＳ）のブートアップが完了し、前記ＯＳがシステムメモリから実行された場合に、前記ＯＳが、前記１以上のアプリケーションを前記キャッシュメモリから前記システムメモリへロードし、前記１以上のアプリケーションの実行を開始することができるように、
前記ＢＩＯＳのブートアップ処理中、前記ＯＳが前記第２ハードディスク・ドライブから前記システムメモリにロードされている間に、前記１以上のアプリケーションを前記第１ハードディスク・ドライブから前記キャッシュメモリにプリロードし、
前記第２ハードディスク・ドライブは特定のコンピュータ読み出し可能媒体に含まれ、
前記システムメモリは、前記特定のコンピュータ読み出し可能媒体とは別のコンピュータ読み出し可能媒体に含まれ、
前記コントローラは、前記特定のコンピュータ読み出し可能媒体及び前記別のコンピュータ読み出し可能媒体とは分離される、
コントローラ。
【請求項１５】
前記１以上のアプリケーションへのアクセスにおいて前記１以上のアプリケーションに関連する論理ブロックのインデックスにアクセスし、
前記論理ブロックは前記第１ハードディスク・ドライブに格納され、前記インデックスは前記論理ブロックを特定し、
前記第１ハードディスク・ドライブからの前記１以上のアプリケーションの読み出しは、前記インデックスで特定される前記論理ブロックを前記第１ハードディスク・ドライブから読み出すことを含み、
前記１以上のアプリケーションのプリロードは、前記論理ブロックを前記キャッシュメモリにプリロードすることを含む、
請求項１４に記載のコントローラ。
【請求項１６】
更に、前記ブートアップ処理が開始される前に前記インデックスを受信し、前記インデックスを前記キャッシュメモリに保存する、
請求項１５に記載のコントローラ。
【請求項１７】
前記１以上のアプリケーションに関連する前記論理ブロックの前記インデックスは、複数のアプリケーションに関連する論理ブロックを含む、
請求項１５または１６に記載のコントローラ。
【請求項１８】
前記論理ブロックの前記プリロードにおいては、前記ブートアップ処理が完了する前に、前記１以上のアプリケーションのうちの特定の１つのアプリケーションに関連する前記論理ブロックをプリロードする、
請求項１５から１７までの何れか１項に記載のコントローラ。
【請求項１９】
前記論理ブロックの前記プリロードにおいては、基本入力／出力システム（ＢＩＯＳ）のロード中に、並行して前記論理ブロックを前記キャッシュメモリにプリロードする、
請求項１５から１８までの何れか１項に記載のコントローラ。
【請求項２０】
前記インデックスは前記論理ブロックをプリロードする順序を示し、かつ、前記プリロードは当該順序で実行される、
請求項１５から１９までの何れか１項に記載のコントローラ。
【請求項２１】
前記インデックスは、前記第１ハードディスク・ドライブに格納された１以上の追加アプリケーションに関連する追加論理ブロックのインデックスでもあり、
前記インデックスは、前記ブートアップ処理の完了後にプリロードされるべき前記追加論理ブロックを示し、かつ、前記ブートアップ処理の完了後に、前記追加論理ブロックを前記キャッシュメモリにプリロードする、
請求項１５から２０までの何れか１項に記載のコントローラ。
【請求項２２】
前記１以上のアプリケーションは、基本入力／出力システム（ＢＩＯＳ）又はオペレーティング・システム（ＯＳ）に関連しない、
請求項１４から２１までの何れか１項に記載のコントローラ。
【請求項２３】
前記コントローラは、前記ブートアップ処理の完了後、他の追加のアプリケーションが実行されるであろう特定の時間に先立って、前記他の追加のアプリケーションを実行するための論理ブロックを、前記キャッシュメモリにプリロードする、
請求項１４から２２までの何れか１項に記載のコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００８年９月１８日に出願された米国仮特許出願番号６１／０９８１４１号の優先権を主張するものであり、当該出願における全ての開示が参照により組み込まれる。
【背景技術】
【０００２】
パーソナル・コンピュータの電源が投入された時に、最初に実行されるコードは基本入出力システム（ＢＩＯＳ）である。従来のＢＩＯＳは、ハードディスク及びその他のハードウェアなどのシステムデバイスを認識し、テストし、初期化する。それらを実行する間、ＢＩＯＳは、オペレーティング・システム・ソフトウェアがロードされ、実行され、制御されるようにパーソナル・コンピュータを準備する。このパーソナル・コンピュータの準備処理は、ブートアップと呼ばれる。パーソナル・コンピュータのブートアップは遅い場合が多い。コンピュータのオペレーティング・システムが大きい場合には、特にブートアップが遅く、このような場合がますます増えている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
コンピュータのブートアップがかなり遅いというだけでなく、ユーザーもアプリケーションがロードされるまで待たなければならない。ユーザーが電子メールを確認したり、ワープロ文書を用意したりしたい場合には、従来、ユーザーはパーソナル・コンピュータの電源を投入して、ブートアップを待ち、さらに、アプリケーションがロードされるのを待つ。
【課題を解決するための手段】
【０００４】
本明細書においては、少なくとも部分的にはブートアップ中にメモリにプリロードする１以上のアプリケーションを提供し、１以上のアプリケーションのうちの１つのアプリケーションの選択を受信し、少なくとも部分的にはブートアップ中にアプリケーションをメモリにプリロードする方法を記述する。いくつかの実施形態においては、当該方法は、１以上のアプリケーションのそれぞれに関連する選択可能なテキスト又はアイコンを有するグラフィカル・ユーザー・インターフェイスを表示することによりアプリケーションを提供する。いくつかの実施形態においては、当該方法は、アプリケーションをプリロードする論理ブロックを決定し、当該論理ブロックをプリロードすることによってアプリケーションをプリロードする工程をさらに備える。そのような実施形態においては、当該方法は、１以上のアプリケーションから選択する操作を繰り返して、他の選択されたアプリケーションを提供し、当該他の選択されたアプリケーションの論理ブロックを決定してもよい。そのような実施形態において、論理ブロックは、他の選択されたアプリケーションの論理ブロックを含む。
【０００５】
本明細書においては、ブートアップ処理の開始に応じて、ハードディスク・ドライブに格納されている１以上のアプリケーションにアクセスし、ハードディスクから当該アプリケーションを読出し、ブートアップ処理が実行されるコンピュータがアクセスできるメモリに、少なくとも部分的にはブートアップ中にアプリケーションをプリロードするコントローラについて記述する。いくつかの場合には、１以上のアプリケーションは、基本入出力システム（ＢＩＯＳ）又はオペレーティング・システム（ＯＳ）ブートアップに関連しない。いくつかの実施形態においては、１以上のアプリケーションのアクセスとは、当該１以上のアプリケーションに関連する論理ブロックのインデックスにアクセスすることである（論理ブロックとは、ハードディスク・ドライブに格納されている論理ブロックであり、インデックスにより当該論理ブロックを特定することができる）。ハードディスクからのアプリケーションの読出しには、ハードディスク・ドライブから、当該インデックスで特定された論理ブロックを読み出すことを含み、アプリケーションのプリロードにより、論理ブロックはメモリにプリロードされる。いくつかのこれらの実施形態においては、コントローラはさらにブートアップ処理が開始する前にインデックスを受け取り、当該インデックスをメモリに保存することができる。その他の実施形態においては、コントローラにより、１以上のアプリケーションに関連する論理ブロックのインデックスは、複数のアプリケーションに関連する論理ブロックを含む。さらに他の実施形態においては、コントローラは、ブートアップ処理が完了する前に、１以上のアプリケーションのうちの特定の１つに関連する論理ブロックをプリロードしてもよい。
【０００６】
さらに他の実施形態においては、コントローラは、インデックスが、当該ハードディスク又は他のハードディスクに格納された１以上の追加アプリケーションに関連した追加論理ブロックであり、ブートアップ処理の完了後にプリロードされる追加論理ブロックを示す順序であり、かつ、当該ブートアップ処理の完了後に、追加論理ブロックをメモリにプリロードするように設計されていてもよい。
【図面の簡単な説明】
【０００７】
詳細は、図面を参照しながら説明される。図面において、参照符号の最も左側の桁は、当該参照符号が最初に現われる図面番号を示す。説明中の異なる例及び図面内の同じ参照符号は、同様の又は同一のものを示す。
【０００８】
【図１】プリロード技術を実現するオペレーティング環境の一例を示す。
【０００９】
【図２】プリロードするアプリケーションを決定する方法を示す。
【００１０】
【図３】少なくとも部分的にはブートアップ処理中にアプリケーションをプリロードする方法を示す。
【００１１】
【図４】図３に示した方法のいくつかのオペレーションが実行される時のタイムラインの一例を示す。
【００１２】
【図５】当該技術の実施形態を実施するハードディスク・ドライブ環境の一例を示す。
【発明を実施するための形態】
【００１３】
［概要］
背景技術で上述したように、コンピュータをブートアップしてコンピュータにアプリケーションをロードする従来の技術は、かなり遅いものであった。フラッシュメモリ又は他のソリッドステートドライブ（ＳＳＤ）のような比較的新しいメモリ技術が使われるとしても、遅いのは確かである。本明細書においては、コンピュータをブートアップし、コンピュータにアプリケーションをロードする合計時間を減少させる技術及び装置について説明する。
【００１４】
以下の説明においては、オペレーティング環境の一例が記述される。例示したオペレーティング環境及びその他の環境において用いることができる方法の一例が記述される。これらの方法は、図１に示す構成要素が実装されているハードディスク・ドライブの実施形態の一例により説明される。下記の説明においては、当該環境の参照は一例として行われているのに過ぎず、したがって、以下の実施形態は、例示される環境に限定されるものではない。
【００１５】
［オペレーティング環境の例］
図１は、オペレーティング環境１００の一例を示す。オペレーティング環境１００は、デスクトップ・パーソナル・コンピュータ、ラップトップ、サーバー、ハンドヘルド・コンピュータ、又は他のコンピューティング・デバイスのようなコンピュータ１０２を含む。コンピュータ１０２は、１以上のプロセッサ１０４、コンピュータ読出し可能媒体１０６、及びストレージシステム１０８を含む。
【００１６】
プロセッサ１０４は、コンピュータ読み出し可能媒体１０６に示されるプログラムを含むさまざまなプログラムを実行することができる。コンピュータ読み出し可能媒体１０６は、ランダム・アクセス・メモリ、フラッシュ・メモリ又はハードディスク・ドライブのようなさまざまな種類の揮発性及び不揮発性媒体を含む。これらのハードディスク・ドライブは、ストレージシステム１０８のハードディスク・ドライブを含んでもよく、外部に有してもよい。このように、ストレージシステム１０８は、コンピュータ読み出し可能媒体１０６に含まれるものと同じであってもよく、分離されたものであってもよい。ストレージシステム１０８は、ケーブルで接続された外付けハードドライブとして動作する場合、又は、外付けハードドライブを含んだりする場合のように、コンピュータ１０２と分離されながらもコンピュータ１０２がアクセスできるものであってもよい。コンピュータ読み出し可能媒体１０６は、基本入出力システム（ＢＩＯＳ）１１０、ＯＳ１１２及びコンフィギュレータ１１４を含むものとして示される。
【００１７】
ＢＩＯＳ１１０は、コンピュータ１０２の電源が投入されたり、再起動されたり、休止状態から起動されたりする時のような、ブートアップ状態で実行される。ＢＩＯＳ１１０は、ＯＳ１１２がロードされ、実行され、制御が与えられるようにコンピュータ１０２を準備する。当該準備は、システムデバイス（例えば、ストレージシステム１０８）の認識、テスト及び初期化などのさまざまな動作を含む。ＯＳ１１２は、ＢＩＯＳ１１０のブートアップ処理の間又はブートアップ処理に続いてコンピュータ１０２の制御を担う。ＯＳ１１２は、プロセッサ１０４による実行に先立ち、システムメモリ（コンピュータ読み出し可能媒体１０６の一部として以外には示されない）にロードされる。
【００１８】
ストレージシステム１０８は、コントローラ１１６を用いて不揮発性メモリストレージを提供する。コントローラ１１６は、キャッシュ１１８及びハードディスク・ドライブ１２０を含む。ハードディスク・ドライブ１２０は、磁気又は光学ディスクのような回転メディア１２２を含む。ストレージシステム１０８は、単体のハードディスク・ドライブ、又は、単純なディスクドライブの集合体である、ＲＡＩＤ制御された多数のハードディスク・ドライブを含んでもよい。ＲＡＩＤ制御された集合体である場合には、コントローラ１１６は、大量のキャッシュメモリ（例えば、キャッシュ１１８はＧＢレンジである）を有するＲＡＩＤコントローラである。回転メディア１２２は、コンピュータ読み出し可能媒体１０６に含まれる任意の要素、アプリケーション１２４及び／又は１以上の論理ブロックインデックス１２６を格納してよい。図１において、オペレーティング環境１００はハードディスク・ドライブ１２０及び回転メディア１２２を含むが、他のメモリ形態が用いられてもよい。他のメモリ形態は、いくつか例をあげると、半導体又はソリッドステートメモリ、磁気テープ、若しくは、光ディスクを含んでもよい。
【００１９】
アプリケーション１２４は、オペレーティング・システムに関連するか否かを問わず、多くの異なるソフトウェア・プログラム又はルーチン及びその機能を含んでよい。オペレーティング・システムでない（非ＯＳ）アプリケーションは、ほんの一例をあげると、ワープロ、電子メール、カレンダー、ブラウザー、ゲーム、及びグラフィックプログラムである。オペレーティング・システムに関連するアプリケーションは、実行可能なアプリケーション、アプレット、又は、ブートアップ中にオペレーティング・システムが使用できるさまざまなメモリ・ベース・リソースを含んでもよい。アプリケーション１２４は、１からｎまでのいくつかのアプリケーションを含むものとして示されている。
【００２０】
キャッシュ１１８は、さまざまなアプリケーション１２４の論理ブロック１２８を格納し、プロセッサ１０４に、論理ブロック１２８に関連するアプリケーションを短時間でシステムメモリにロードさせる。キャッシュ１１８は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）又はペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）のようなさまざまな種類のメモリ又はバッファを含んでよい。わかりやすくするために、論理ブロック１２８はアプリケーション１２４（１）に対応するものに（１、１）から（１、ｉ）までのラベルが付され、アプリケーション１２４（ｎ）に対応するものに（ｎ、１）から（ｎ、ｉ）までのラベルが付されており、論理ブロックの数は、それぞれのアプリケーション１２４に対して１からｉまでの数字である。
【００２１】
コントローラ１１６は、コンピュータ１０２のブートアップ処理の間に、少なくとも部分的には論理ブロック１２８をプリロードする。このプリロードによって、ＯＳ１１２は、これらの論理ブロックを有するアプリケーションに高速にアクセスし、実行することができる。コントローラ１１６は、キャッシュ・コントローラ・カード又はハードディスク・ドライブ・マイクロコントローラ（例えば、ファームウェア及びマイクロプロセッサ）を含んでもよい。
【００２２】
コンフィギュレータ１１４は、プリロードするアプリケーションを決定し（例えば、アプリケーション１２４（１）から１２４（ｎ））、これらの決定されたアプリケーションに対応する論理ブロックを決定し（例えば、論理ブロック１２８（１、１）から（１、ｉ）及び１２８（ｎ、１）から（ｎ、ｉ））を決定し、コントローラ１１６により用いられる（関係は図１の破線で示される）、これらの論理ブロックの識別子（例えば、論理ブロックインデックス１２６）を提供する。コンフィギュレータ１１４は、インターフェイス１３０、及び、プリローディングすることになったアプリケーション１２４を含む（破線で示される）。インターフェイス１３０は、コンピュータ１０２のユーザーがアプリケーションを選択することができるようにするなどのようにして、どのアプリケーション１２４がプリロードされるかをコンフィギュレータ１１４が決定できるようにしてもよい。後述のとおり、コンフィギュレータ１１４は、使用されたアプリケーションの履歴に基づくことを含め、他の方法によって、プリロードするアプリケーション及び／又は論理ブロックを決定してもよい。
【００２３】
オペレーティング環境１００のこれらの構成要素を使う方法及び技術の詳細は、後述される。
【００２４】
［方法の例］
上記の通り、コンピュータをブートアップし、コンピュータにアプリケーションをロードする技術はかなり遅い。本明細書においては、一例として、コンピュータをブートアップし、コンピュータにアプリケーションをロードする合計時間を短縮する技術及び装置を開示する。これらの技術には、個々に又は組み合わせて用いることができる方法の例が含まれる。これらの方法の特徴は、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせにより実装されてよい。当該方法は１以上のエンティティによって実行される処理を特定し、処理を実行するための例として与えられる、処理を実行する順序又はエンティティに限定されるものではない。
【００２５】
図２は、プリロードするアプリケーションを決定する方法２００を示す。２０２において、アプリケーションは、部分的に又は完全にキャッシュメモリにプリロードされる。環境１００に関連する一例として、コンフィギュレータ１１４のインターフェイス１３０は、ワープロ、電子メール、ゲーム及びグラフィックアプリケーションのようなアプリケーション１２４（１）から１２４（ｎ）に関連付けられるテキスト及びアイコンを表示するグラフィカル・ユーザー・インターフェイスを供給する。これらのアプリケーションは、ハードディスク・ドライブ１２０の回転メディア１２２に事前にロードされるような予め定められたものであってもよく、コンピュータ１０２によってアクセスされるさまざまなローカル・リソース又はリモート・リソースから単に選択されたものであってもよい。選択されたアプリケーションの論理ブロックの全てを保持するほどにはキャッシュが十分に大きくないような場合には、プリロードは必ずしも完全に又は常にブートアップ中に行われるわけではないが、ユーザーは、プリロードするこれらのアプリケーションをいくつ選択してもよい。
【００２６】
２０４においては、アプリケーションの１つの選択を受信する。ここで、インターフェイス１３０は、アプリケーション１２４の１つをプリロードすることが望ましいというユーザーからの指示を受信する。
【００２７】
２０６においては、キャッシュメモリにプリロードするアプリケーションの論理ブロックが決定される。ここで、コンフィギュレータ１１４はさまざまな実行可能な部分のように、どの論理ブロック１２８が選択されたアプリケーション１２４に適しているかを決定する。コンフィギュレータ１１４は、他でビルドされるものを後にするという順序、又は、アプリケーションを最も早く実行できそうな順序などのような、これらの論理ブロック１２８の適切な順序を決定してもよい。
【００２８】
方法２００は、アプリケーションの選択をできる状態を継続させて、１以上のアプリケーションをプリロードさせてもよい。これは、２０６から２０２に向かう破線により示される。それぞれの選択されたアプリケーションに対して、２０６において、方法２００は論理ブロックを決定する。論理ブロックの決定に続いて、方法２００は２０８に進む。２０８においては、方法２００は、エンティティへの論理ブロック、又は、ブートアップ中に部分的に又は完全に当該論理ブロックをプリロードできるコンポーネントに識別子を供給する。
【００２９】
代わりに、又は、さらに、コンフィギュレータ１１４は、ユーザーの選択によることなく、どのアプリケーションをプリロードするかを決定してもよい。２１０においては、コンフィギュレータ１１４は、どのアプリケーションをプリロードするかを決定するとともに、コンピュータ１０２、アプリケーション１２４又はＯＳ１１２の製造者によって設定された順序、若しくは、アプリケーションが使用された履歴又は予め定められた順序を決定してよい。
【００３０】
２１２においては、方法２００は、これらの論理ブロックの順序付けられた識別子のインデックスをさらにビルドしてもよい。コンフィギュレータ１１４は、ユーザーにより選択された順序に基づいてインデックス１２６をビルドしてよく、コンピュータ１０２へのブートアップ処理が完了する前にキャッシュされそうな最も多くのアプリケーションのような他のことを考慮してインデックス１２６をビルドしてもよい。順序は、ユーザーにより設定されてもよく、ユーザーが実行することを選択した及び／又はユーザーが実行したアプリケーションの履歴に基づいて設定されてもよい。
【００３１】
アプリケーションが、プリロードを担うエンティティ（例えば、コントローラ１１６）によってブートアップ中にアクセスすることができない場合には、２０６において又は２０６の後に、アプリケーションはそのような場所にロードされる。このように、コンフィギュレータ１１４は、これらのアプリケーションの選択又は決定の後に、回転メディア１２２にアプリケーションをロードしてもよい。逆に、２０２において、コンフィギュレータ１１４は、代わりにコントローラ１１６によって既にアクセスすることができるアプリケーション１２４を供給してもよい。これらのアプリケーション１２４は、現在のブートアップに先立って回転メディア１２２にロードされるので、コントローラ１１６によりアクセスされることができる。
【００３２】
方法２００を実行する代わりに、又は方法２００の実行に加えて、コンフィギュレータ１１４は、ブートアップ後にプリロードされる他の追加アプリケーションを供給してもよい。このような場合には、コンフィギュレータ１１４はこれらの追加アプリケーションについても方法２００を踏襲する。そうすることにより、アプリケーションはブートアップ後にプリロードされ、そのアプリケーションを実行する処理を高速化することができる。例えば、ユーザーが頻繁に、株価を確認するなどのために午前９時にブラウジング・アプリケーションを開く場合には、コンフィギュレータ１１４は、そのユーザーの使用履歴を学習することができる（又は、この選択をユーザーにより直接行うようにできる）。コンフィギュレータ１１４は、論理ブロックインデックス１２６においてこれを示し、コントローラ１１６が午前８時５５分にブラウジング・アプリケーションに関連する論理ブロック１２８をプリロードするようにできる。
【００３３】
図３は、少なくとも部分的にはブートアップ処理中にアプリケーションをプリロードする方法３００を示す。３０２において、１以上のアプリケーションに関連する論理ブロックの識別子（例えば、インデックス）が受信される。上記の環境１００、及び、続いて方法２００を参照して述べたように、コントローラ１１６は、さまざまなアプリケーション１２４に関連する論理ブロック１２８を識別する論理ブロックインデックス１２６を受信する。
【００３４】
３０４においては、受信されたインデックスがブートアップ処理中にアクセスできるメモリに保存される。当該メモリはインデックスを保持するが、ＢＩＯＳ及び／又はＯＳのブートのようなブートアップ中に使用可能になる。ここで、インデックス１２６は回転メディア１２２に保存され、ＢＩＯＳ及びＯＳのブートアップ中に、コントローラ１１６によってアクセスできる。
【００３５】
３０６においては、ブートアップ処理の開始に応じてインデックスがアクセスされる。ここで、コントローラ１１６は電源が投入されることにより、又は、ＢＩＯＳから直接指示を受信することにより、ブートアップ処理が開始されたことの通知を受信する。このようにして、コントローラ１１６はコンピュータ１０２のブートアップ処理が完了しないでも、ハードディスク・ドライブ１２０上のメモリの一部にアクセスすることができる。ＢＩＯＳ、ＯＳ又はブートアップ処理の他の部分がブートアップ中に、コントローラ１１６はアクセスインデックス１２６にアクセスして方法３００の残りを進めることができる。３０２及び３０４は、事前にコンピュータが使用されていた間のように、ブートアップ処理が始まる前に実行されてもよい。
【００３６】
３０８においては、論理ブロックが保存されているハード・ドライブから論理ブロックが読み出される。上記の通り、インデックスは、読み出すべき論理ブロック及びこれらの論理ブロックの順序を特定する。さらに例を述べると、コントローラ１１６はインデックス１２６で与えられる順序により論理ブロック１２８を読み出す。
【００３７】
３１０においては、これらの論理ブロックは、少なくとも部分的にはブートアップ処理中に、ブートアップ処理が実行されるコンピュータによってアクセスできるキャッシュメモリにプリロードされる。３１０は、方法３００の処理が繰り返し実行されるようにして、読み出される単一の論理ブロックのそれぞれに対して実行されてもよい。ここで、コントローラ１１６はインデックス１２６により与えられる順序で論理ブロック１２８を読出し、当該論理ブロックをキャッシュ１１８に保存する。キャッシュ１１８は、コントローラ１１６を介して間接的に、又は、コンピュータ１０２の他の構成要素を介して直接的に、コンピュータ１０２がアクセスすることができる。
【００３８】
一例として、２つのアプリケーション（ｎ＝１及びｎ＝２）がプリロードされる。第１のアプリケーションが４つの論理ブロック（ｉ＝４）を有し、第２のアプリケーションが６つの論理ブロック（ｉ＝６）を有するとした場合に、インデックス１２６は論理ブロックを以下の順序とする：１−１、１−２、１−３、１−４、２−１、２−２、２−３、２−４、２−５及び２−６。
【００３９】
方法３００のいくつかの処理が実行されるタイムライン４００の一例を示す図４も参照する。まず、４０２において、電源投入又はブートアップ命令が受信される。これに応じて、期間４０４に示されるように、ＢＩＯＳ１１０がブートアップされ、他のタスクがＯＳ１１２の準備をコンピュータ１０２にさせるチェックを開始する。また、電源投入又はブートアップ命令に応じて、コントローラ１１６は期間４０６の間に、少なくとも１つのアプリケーション１２４に関連する論理ブロック１２８を読み出し、キャッシュ１１８にロードする。これが実行されている間、ＯＳ１１２も期間４０８の間にブートする。ブートアッププロセスが完了し、ＯＳ１１２がコンピュータ１０２の制御をできるようになると、ＯＳ１１２はすぐに１以上のアプリケーション１２４のための論理ブロックをシステムメモリにロードする。論理ブロックがシステムメモリにロードされると、ＯＳ１１２は関連するアプリケーション１２４の実行を開始する。これは期間４１０に示される。期間４０６の間にブロックを読出し、ロードすることは、図３における３０８及び３１０に続いて、コントローラ１１６によって実行される。
【００４０】
期間４１２及び期間４１４はオプション期間である。期間４１２の間、コントローラ１１６は、ブートアップ中、若しくは、特定の時間又は順序でアプリケーションを実行するための論理ブロックをロードする時間（例えば、午前８時５５分の株ティッカーブラウザー）のような他の指示に基づく時間において、キャッシュに十分な空きがない場合には、他のアプリケーションに対して、他の論理ブロックをロードしてよい。論理ブロックが、関連するアプリケーションを実行するために、コンピュータ１０２によってシステムメモリにロードされた後は、論理ブロックはコントローラ１１６によってキャッシュ１１８から削除されてよく、これによって、他の論理ブロックをロードする空きが生じる。
【００４１】
これらの方法は、ＳＳＤよりも安価であるとされることが多いハードディスク・ドライブ又はフラッシュメモリのように、より安価なメモリ資源を使用することを可能にする。さらに、これらの方法は、アプリケーションの実行を高速にすることができる。
【００４２】
［ハードドライブの例］
図５はハードディスク・ドライブＨＤＤ５００の一例を示す。ＨＤＤ５００はここで記述されるさまざまな技術により実装され得る。ＨＤＤ５００は信号処理及び／又は制御回路５０２、ストレージメディア５０４及び／又はメモリ５０６を有する。一例として、制御回路５０２はコントローラ１１６を含んでよく、ストレージメディア５０４は回転メディア１２２を含んでよく、ストレージメディア５０４は回転メディア１２２を含んでよく、メモリ５０６はランダム・アクセス・メモリ（ＲＡＭ）、フラッシュメモリのような低レイテンシー不揮発性メモリ、読み出し専用メモリ（ＲＯＭ）、及び／又は、キャッシュ１１８のような他の適当な電子データストレージを含んでよい。コントローラ１１６、回転メディア１２２、及びキャッシュ１１８は、図１にも示されている。
【００４３】
さまざまな実装形態において、制御回路５０２はデータを読み出し、プリロードし、処理し、データ計算を実行し、及び／又は、データをフォーマットするように実装される。データは、少なくともストレージメディア５０４及び／又はメモリ５０６に出力され、及び／又は、それらから受信される。さらに、ＨＤＤ５００は１以上の有線又は無線通信リンク５０８を介してホストデバイスと通信することができる。ホストデバイスはデスクトップ又はサーバーコンピュータ、モバイルコンピューティングデバイス、パーソナルデジタルアシスタント、セルラーフォン、メディア又はＭＰ３プレーヤー、及び／又は他のデバイス（例えば、図１のコンピュータ１０２）を含んでよい。
【００４４】
一実施形態においては、制御回路５０２は、電子回路、マイクロプロセッサ、メモリ、入出力ロジック制御、通信インターフェイス及び部品、その他のハードウェアファームウェア、及び／又はＨＤＤ５００を動作させるソフトウェアが集積されたシステムオンチップ（ＳｏＣ）を含んでよい。ＳｏＣは、さまざまなＳｏＣの要素間でデータ通信を行うために当該要素を接続する集積化されたデータバス（不図示）も含んでよい。
【００４５】
上記の１以上の方法は、データの入力及び出力の生成の処理によりコンピュータプログラムを実行する１以上のプログラム可能なプロセッサにより実行されてよい。一般に、本技術は、全てハードウェアで実施してよく、全てソフトウェアで実施してもよく、ハードウェア及びソフトウェアの両方を含んでもよい。一実施形態においては、本方法は、ソフトウェアにより実施されてよく、ファームウェア、常駐ソフトウェア、マイクロコードなどを含んでよいが、それに限定されるものではない。さらに、本方法はコンピュータが使用できる又はコンピュータが読み出しでき、コンピュータ又は命令実行システムに接続されて使用されるプログラムコードを供給する媒体からアクセスできるコンピュータプログラム製品の形態であってもよい。ここで述べた目的のためには、コンピュータが使用できる又はコンピュータが読み出しできる媒体は、命令実行システム、装置、又はデバイスに接続されて使用されるプログラムを含み、保存し、通信し、伝播し、転送するどのような装置であってもよい。媒体は、電子的、磁気的、光学的、電磁気的、赤外線を用いるものであってよく、半導体システム（若しくは装置又はデバイス）、又は伝播媒体であってもよい。コンピュータが読み出しできる媒体は、半導体又はソリッドステートメモリ、磁気テープ、取り出しできるコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、硬い磁気ディスク、及び光学ディスクを含む。現状の光学ディスクの例として、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ及びＤＶＤが挙げられる。
【００４６】
主題は、構造的な特徴及び／又は方法に関する処理に特有の言語で記述されたが、添付されるクレームで定義される主題は、実行される順序を含め、上述の具体的な特徴又は処理に限定されるものではない。
（項目１）
少なくとも部分的にはブートアップ中にメモリにプリロードされる１以上のアプリケーションを提供する段階と、
上記１以上のアプリケーションのうちの１つのアプリケーションの選択を受信する段階と、
少なくとも部分的にはブートアップ中に、上記１つのアプリケーションを上記メモリにプリロードする段階と、
を備える方法。
（項目２）
上記１以上のアプリケーションは基本入力／出力システム（ＢＩＯＳ）又はオペレーティング・システム（ＯＳ）に関連していない項目１に記載の方法。
（項目３）
プリロードする上記１つのアプリケーションの論理ブロックを決定する段階を更に備え、
上記１つのアプリケーションをプリロードする段階においては、上記論理ブロックをプリロードする項目１に記載の方法。
（項目４）
上記１以上のアプリケーションのうちの１以上のアプリケーションの上記選択を受信して１以上の他の選択されたアプリケーションを提供する段階と、
上記論理ブロックを決定する段階と、
を繰り返す段階を更に備え、
上記論理ブロックは、上記他の選択されたアプリケーションの論理ブロックを含む項目３に記載の方法。
（項目５）
上記１つのアプリケーション及び上記１以上の他の選択されたアプリケーションに関連する上記論理ブロックをプリロードする順序の選択を可能にする段階と、
上記選択された順序を受信する段階と、
上記選択された順序によるプリロードを有効にする、上記選択された順序において上記論理ブロックの識別子を提供する段階と、
を更に備える項目４に記載の方法。
（項目６）
上記論理ブロックのインデックスを供給する段階を更に備え、
上記インデックスは、上記論理ブロックをプリロードする順序を示し、
上記順序は上記１つのアプリケーション及び上記１以上の他の選択されたアプリケーションの使用履歴に基づく項目４に記載の方法。
（項目７）
上記１以上のアプリケーションを提供する段階は、上記１以上のアプリケーションのそれぞれに関連する、選択可能なテキスト又はアイコンを含むグラフィカルユーザーインターフェイスを表示する段階を有する項目１に記載の方法。
（項目８）
上記１以上のアプリケーションは、ワードプロセッシング・プログラム、ブラウジング・プログラム、電子メール・プログラム又はグラフィックス・プログラムのうち１以上のプログラムを含む項目１に記載の方法。
（項目９）
上記１以上のアプリケーションは、上記１以上のアプリケーションが少なくとも部分的にはブートアップ中に読み出される１以上のハードディスク・ドライブに、事前にロードされている項目１に記載の方法。
（項目１０）
上記アプリケーションのうちの１つのアプリケーションの選択を受信する段階に応じて、上記１つのアプリケーションが少なくとも部分的にはブートアップ中に読み出される１以上のハードディスク・ドライブに、上記１つのアプリケーションをロードする段階を更に備える項目１に記載の方法。
（項目１１）
上記ブートアップは、基本入力／出力システム（ＢＩＯＳ）又はオペレーティング・システムのブートアップである項目１に記載の方法。
（項目１２）
ブートアップ処理の開始に応じて、ハードディスク・ドライブに格納された１以上のアプリケーションにアクセスし、
上記ハードディスク・ドライブから上記１以上のアプリケーションを読み出し、
少なくとも部分的には上記ブートアップ処理中に、上記ブートアップ処理が実行されるコンピュータによってアクセスできるメモリに上記アプリケーションをプリロードするコントローラ。
（項目１３）
上記１以上のアプリケーションへのアクセスにおいて上記１以上のアプリケーションに関連する論理ブロックのインデックスにアクセスし、
上記論理ブロックは上記ハードディスク・ドライブに格納され、上記インデックスは上記論理ブロックを特定し、
上記ハードディスク・ドライブからの上記１以上のアプリケーションの読み出しは、上記インデックスで特定される上記論理ブロックを上記ハードディスク・ドライブから読み出すことを含み、
上記１以上のアプリケーションのプリロードは、上記論理ブロックを上記メモリにプリロードすることを含む項目１２に記載のコントローラ。
（項目１４）
更に、上記ブートアップ処理が開始される前に上記インデックスを受信し、上記インデックスを上記メモリに保存する項目１３に記載のコントローラ。
（項目１５）
上記１以上のアプリケーションに関連する上記論理ブロックの上記インデックスは、複数のアプリケーションに関連する論理ブロックを含む項目１３に記載のコントローラ。
（項目１６）
上記論理ブロックの上記プリロードにおいては、上記ブートアップ処理が完了する前に、上記１以上のアプリケーションのうちの特定の１つのアプリケーションに関連する上記論理ブロックをプリロードする項目１３に記載のコントローラ。
（項目１７）
上記論理ブロックの上記プリロードにおいては、基本入力／出力システム（ＢＩＯＳ）又はオペレーティング・システムのブートアップ中に、並行して上記論理ブロックを上記メモリにプリロードする項目１３に記載のコントローラ。
（項目１８）
上記インデックスは上記論理ブロックをプリロードする順序を示し、かつ、上記プリロードは当該順序で実行される項目１３に記載のコントローラ。
（項目１９）
上記インデックスは、上記ハードディスク・ドライブに格納された１以上の追加アプリケーションに関連する追加論理ブロックのインデックスでもあり、上記インデックスは、上記ブートアップ処理の完了後にプリロードされるべき上記追加論理ブロックを示し、かつ、上記ブートアップ処理の完了後に、上記追加論理ブロックを上記メモリにプリロードする項目１３に記載のコントローラ。
（項目２０）
上記１以上のアプリケーションは、基本入力／出力システム（ＢＩＯＳ）又はオペレーティング・システム（ＯＳ）に関連しない項目１２に記載のコントローラ。
【図１】
0005489182.tif 000002
【図２】
0005489182.tif 000003
【図３】
0005489182.tif 000004
【図４】
0005489182.tif 000005
【図５】
0005489182.tif 000006