(57)【要約】  複数のＣＰＵまたは複数のＣＰＵコアを備えたコンピュータにおいて、そのコンピュータブートシーケンスにおけるメモリ初期化処理を、ファームウェアとカーネルで並列実行する。このとき、ファームウェアとカーネルは、それぞれ、別々のＣＰＵまたはＣＰＵコアで実行させる。これにより、コンピュータのブートシーケンスにおけるメモリ初期化の所要時間が短縮される。
2010058440.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置を備える情報処理装置のブートシーケンスにおけるメモリ初期化方法であって、
前記メモリ初期化の処理は、
第１の演算処理装置による第１の記憶手段に格納されているファームウェアの実行により、主記憶装置上の該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化するステップと、
前記第１の演算処理装置による前記ファームウェアの実行により、前記第２の領域に格納された該カーネルを第２の演算処理装置に起動・実行させるステップと、
該第２の演算処理装置により実行されるカーネルと前記第１の演算処理装置により実行されるファームウェアが、並行して、前記主記憶装置上の残りの領域の初期化を実行するステップと、
を含むことを特徴とするメモリ初期化方法。
【請求項２】
前記メモリ初期化方法であって、
前記カーネルは、前記主記憶装置を仮想記憶方式により管理するオペレーティングシステムであり、
前記主記憶装置のメモリ初期化は、主記憶装置上のオペレーティングシステムが管理する領域をページ単位に分割する処理と、論理ページを主記憶装置上の物理ページに変換するページテーブルを作成する処理を含むことを特徴とする請求項１記載のメモリ初期化方法。
【請求項３】
前記メモリ初期化方法であって、
前記カーネルが初期化する主記憶装置上の領域のページは、所定のサイズであることを特徴とする請求項１記載のメモリ初期化方法。
【請求項４】
前記メモリ初期化方法であって、
前記カーネルが初期化する主記憶装置上の領域のページサイズは、前記ファームウェアが初期化する主記憶装置上の領域のページサイズと同じであることを特徴とする請求項３記載のメモリ初期化方法。
【請求項５】
前記メモリ初期化方法であって、
前記カーネルが初期化する主記憶装置上の領域のページは、任意のサイズに指定可能であることを特徴とする請求項１記載のメモリ初期化方法。
【請求項６】
前記メモリ初期化方法であって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、その分割位置を示す初期化境界のアドレスは固定であることを特徴とする請求項１記載のメモリ初期化方法。
【請求項７】
前記メモリ初期化方法であって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、前記分割の位置を示す初期化境界のアドレスは指定可能であることを特徴とする請求項１記載のメモリ初期化方法。
【請求項８】
前記メモリ初期化方法であって、
前記カーネルによる主記憶装置の領域の初期化は、複数の演算処理装置がカーネルを並行実行されることを特徴とする請求項１記載のメモリ初期化方法。
【請求項９】
複数の演算処理装置を備える情報処理装置のブートシーケンスにおけるメモリ初期化を実行する初期化プログラムであって、
前記プログラムは、第１の記憶手段に格納されているファームウェアと第２の記憶手段に格納されているカーネルを備え、
前記ファームウェアは、
第１の演算処理装置による第１の記憶手段に格納されているファームウェアの実行により、主記憶装置上の該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化するステップと、
前記第１の演算処理装置による前記ファームウェアの実行により、第２の記憶手段に格納されているカーネルを前記第２の領域にロードし、該カーネルを第２の演算処理装置に起動・実行させるステップと、
前記第１の演算処理装置に、主記憶装置上のオペレーティングシステムが使用する第３の領域を初期化させるステップと、
を含む処理を情報処理装置に実行させ、
前記カーネルは、
第２の演算処理装置に、主記憶装置上の前記第１、第２及び第３の領域以外のオペレーティングシステムが使用する第４の領域を初期化するステップを含む処理を、情報処理装置に実行させ、
前記第１の演算処理装置に主記憶装置上のオペレーティングシステムが使用する第３の領域を初期化させるステップと前記第２の演算処理装置に前記主記憶装置上の前記第１、第２及び第３の領域以外のオペレーティングシステムが使用する第４の領域を初期化させるステップは、並行して実行されることを特徴とする初期化プログラム。
【請求項１０】
前記初期化プログラムであって、
前記カーネルは、前記主記憶装置を仮想記憶方式により管理するオペレーティングシステムであり、
前記主記憶装置のメモリ初期化は、主記憶装置上のオペレーティングシステムが管理する領域をページ単位に分割する処理と、論理ページを主記憶装置上の物理ページに変換するページテーブルを作成する処理を含むことを特徴とする請求項９記載の初期化プログラム。
【請求項１１】
前記初期化プログラムであって、
前記カーネルが初期化する主記憶装置上の領域のページは、任意のサイズに指定可能であることを特徴とする請求項１０記載の初期化プログラム。
【請求項１２】
前記初期化プログラムであって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、その分割位置を示す初期化境界のアドレスは固定であることを特徴とする請求項９記載の初期化プログラム。
【請求項１３】
前記初期化プログラムであって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、その分割位置を示す初期化境界のアドレスは指定可能であることを特徴とする請求項９記載の初期化プログラム。
【請求項１４】
前記初期化プログラムであって、
前記カーネルによる主記憶装置の領域の初期化は、複数の演算処理装置がカーネルを並行実行されることを特徴とする請求項９記載の初期化プログラム。
【請求項１５】
複数の演算処理装置を備える情報処理装置のブートシーケンスにおけるメモリ初期化を実行する情報処理装置であって、
第１の演算処理装置に第１の記憶手段に格納されているファームウェアを実行させることにより、該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化させる手段と、
前記第１の演算処理装置によるファームウェアの実行により、第２の記憶手段に格納されているカーネルを前記第２の領域にロードし、該カーネルを第２の演算処理装置に起動・実行させる手段と、
前記第１の演算処理装置と該第２の演算処理装置に、それぞれ、前記ファームウェアと前記カーネルを、並行して実行させ、前記主記憶装置上の残りの領域の初期化させる手段と、
を含むことを特徴とする情報処理装置。
【請求項１６】
前記情報処理装置であって、
前記カーネルは、前記主記憶装置を仮想記憶方式により管理するオペレーティングシステムであり、
前記主記憶装置のメモリ初期化は、主記憶装置上のオペレーティングシステムが管理する領域をページ単位に分割する処理と、論理ページを主記憶装置上の物理ページに変換するページテーブルを作成する処理を含むことを特徴とする請求項１５記載の情報処理装置。
【請求項１７】
前記情報処理装置であって、
前記カーネルが初期化する主記憶装置上の領域のページは、任意のサイズに指定可能であることを特徴とする請求項１６記載の情報処理装置。
【請求項１８】
前記情報処理装置であって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、その分割位置を示す初期化境界のアドレスは固定であることを特徴とする請求項１５記載の情報処理装置。
【請求項１９】
前記情報処理装置であって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で二分割されており、その分割位置を示す初期化境界のアドレスは指定可能であることを特徴とする請求項１５記載の情報処理装置。
【請求項２０】
前記情報処理装置であって、
前記カーネルによる主記憶装置の領域の初期化は、複数の演算処理装置がカーネルを並行実行されることを特徴とする請求項１５記載のメモリ初期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置の電源投入時におけるブートシーケンスに係り、特に、ブートシーケンスにおいて情報処理装置の主記憶装置を初期化するメモリ初期化方法、メモリ初期化プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置は、電源が投入されることにより、オペレーティングシステム（ＯＳ）のカーネルが起動され、アプリケーションプログラムの利用が可能となる。この電源が投入されてからオペレーティングシステムが起動されるまでの一連の動作は、一般に、ブートシーケンスと呼ばれる。ここで、カーネルとは、オペレーティングシステムの中核に位置し、特権モードで動作するプログラムを指す。但し、オペレーティングシステムの種類によってカーネルの定義はまちまちであるので、オペレーティングシステムのどの部分までがカーネルに含まれるかどうかの定義は、各オペレーティングシステムの設計方針に従うものとする。【０００３】
図１は、ブートシーケンスを示す図である。
図１（ａ）はブートシーケンスの手順を示すフローチャートである。
ブートシーケンスにおいて、まず、ＰＯＳＴ(Power On Self Test)診断が実行される（ステップＳ１）。このＰＯＳＴは、例えば、ＢＩＯＳ(Basic Input/Output System)により実行される。ＢＩＯＳは、例えば、ＲＯＭ(Read Only Memory)、ＰＲＯＭ(Programmable ROM)又はフラッシュメモリ等に格納されている。ＰＯＳＴにおいては、演算処理装置としてのＣＰＵ、メインメモリ（主記憶装置）、ディスクコントローラ、シリアル／パラレルポート、キーボードコントローラなどの、情報処理装置としてのコンピュータを構成するハードウェアデバイスが正常に機能しているかどうかの確認が行われる。【０００４】
次に、ＣＰＵがＲＯＭ等に格納されているファームウェアを起動する（ステップＳ２）。ＣＰＵにより起動・実行されたファームウェアは、カーネル初期設定（ブート処理）を行い、メインメモリの初期化を実行する（ステップＳ３）。
このカーネル初期設定（ブート処理）の詳細を図１（ｂ）に示す。【０００５】
ブート処理において、まず、ファームウェアにより、メインメモリの初期化が行われる（ステップＳ３１）。このメモリ初期化においては、図１（ｃ）に模式的に示すように、メインメモリ２０の先頭から、順次、メインメモリが初期化されていく。メモリ初期化においては、「仮想アドレス（論理アドレス）から物理アドレス（実アドレス）へのマッピング」、「ページテーブルの作成」などが行われる。尚、ここで、仮想アドレスとは、仮想記憶方式のコンピュータおける仮想空間上でのアドレスのことである。このメモリ初期化の詳細については後述する。カーネル初期設定において、次に、ブートプログラムにより、外部記憶装置からカーネルがメインメモリにロードされ、カーネルが起動される。カーネルは、自分自身の初期化、カーネルモジュールとデバイスドライバのメインメモリのロードを行い、最後に、initプロセスを生成・起動する（ステップＳ３２）。【０００６】
initプロセスは、init処理を実行する（ステップＳ４）。init処理において、initプロセスは、ハードディスクの正常確認や、デーモン（バックグラウンドで実行するプロセス）の起動などを行い、最後にログインマネージャの起動を行う。【０００７】
図２は、コンピュータが備えるハードウェアによる従来のメモリ初期化処理を示す図である。
図２に示すコンピュータ１は、３つのＣＰＵ１０（１０−１、１０−２、１０−３）、メモリ２０、ファームウェア３１が格納されたＲＯＭ３０、ＯＳ４１が格納された外部記憶装置４０を備えている。このように、コンピュータ１は、３つのＣＰＵ１０を備えたマルチプロセッサ構成の計算機である。図２に示すように、従来は、マルチプロセッサ構成のコンピュータ１であっても、１つのＣＰＵ１０がファームウェアを実行してメモリ初期化処理を行っていた。【０００８】
図３は、メモリ初期化処理の詳細を示す図である。
以下、図３を参照しながら、メモリ初期化処理の手順を説明する。
図３に示すＣＰＵ１０は、ＡＬＵ（Arithmetic Logical Unit：算術論理演算ユニット）等の演算ユニット１１とＭＭＵ(Memory Management Unit：メモリ管理ユニット)１２を備えている。ＭＭＵ１２は、仮想アドレスを物理アドレスに変換するアドレス変換機能やメモリ保護機能を備えている。ＭＭＵ１２は、該アドレス変換機能を行う回路であるＴＬＢ(Translation Look-aside Buffer)１２１を備えている。この例のＭＭＵ１２は、２つのＴＬＢ１２１（１２１−１、１２１−２）を備えている。【０００９】
以下、図３を参照しながらメモリ初期化の手順を説明する。
（１）ファームウェア(Bootプログラム)３１は、メインメモリ２０の物理アドレスと仮想アドレスのマッピング情報を格納する変換テーブル５０を作成する。
（２）ＭＭＵ１２は、該変換テーブル５０を参照し、仮想アドレスを物理アドレスに変換する処理を実施する。
（３）ＭＭＵ１２は、上記変換結果（仮想アドレスと物理アドレスの対応付け）をＴＬＢ１２１に格納する。
（４）ファームウェア３１は、メインメモリ（物理メモリ）２０上に、メインメモリ２０の物理アドレスと、メインメモリ２０上に作成されるページＰＡ１、ＰＡ２、ＰＡ３、・・・のサイズ（ページテーブルサイズ）を管理するページテーブル２１を作成する。ここで、ページＰＡ１、ＰＡ２、ＰＡ３、・・・は、仮想記憶方式で管理されるメインメモリ２０に格納されるデータのアクセス単位である。【００１０】
コンピュータ１において、演算ユニット１１は、目的とするデータを取得するためにメインメモリ２０にアクセスする際、ＴＬＢ１２１を参照して、該目的とするデータの仮想アドレスを物理アドレスに変換する。そして、その変換により得られた物理アドレスを用いて、メインメモリ２０をアクセスし、メインメモリ２０から目的とするデータを読み出す。【００１１】
従来は、コンピュータに搭載されるメインメモリの容量は小さかったため、メインメモリの初期化は、上記ファームウェアのみによる初期化だけで実用上問題はなかった。しかしながら、近年は、半導体メモリの集積化技術の進歩に伴い、コンピュータに搭載されるメインメモリの容量も増大している。これに伴い、メモリ初期化に要する時間も増大し、ＯＳの起動、すなわち、コンピュータのシステムが起動するまでの時間が遅くなってきている。【００１２】
これは、従来のファームウェアによるメモリ初期化手法が、下記（１）〜（３）の問題点を有しているためであると考えられる。
（１）メモリ初期化に要する時間は、メインメモリの容量（メインメモリサイズ）に依存する。
（２）カーネルの起動初期にメインメモリの全域が初期化されている必要がないにもかかわらず、メインメモリの全域を初期化している。
（３）ファームウェアの実行を一つのＣＰＵで行っているため、ファームウェアによるメモリ初期化の並列処理が実行できず、メモリ初期化処理は逐次実行により行われる。【００１３】
上記システム起動の遅延問題に対して、現在は、主に、メモリ初期化時に初期化単位（ページサイズ）を大きくする手法を採用することで対処している。
例えば、メインメモリを、ページサイズを８ＫＢ（キロバイト）単位と４ＭＢ（メガバイト）単位で初期化する場合を比較すると、下記の表１に示すように、初期化回数に圧倒的な差が生じる。【００１４】
【表１】
2010058440.tif 000003
表１に示すように、メインメモリの容量が１ＧＢ（ギガバイト）であった場合、８ＫＢ単位で初期化した場合の初期化回数は１３万１，０７２回になるが、４ＭＢ単位で初期化した場合には２５６回で済む。【００１５】
仮想記憶方式の場合、データの書き込みはページ単位で行われる。したがって、単純にページサイズを増大させると、メインメモリの領域の使用効率の低下を招くという問題が発生する。【００１６】
図４は、ページサイズを４ＭＢとした場合の問題点を示す図である。
図４に示すように、４ＭＢのページ２３に１ＭＢのデータを書き込んだ場合、ページ２３に３ＭＢの未使用域が生じてしまう。このようなページの使用効率の低下は、ページサイズを大きくすればするほど顕著になってくる。
【特許文献１】特開平１０−２６０８１９号公開公報
【特許文献２】特開２００７−２６４９７８号公開公報
【発明の開示】
【００１７】
本発明の目的は、コンピュータのブートシーケンスにおけるメモリ初期化処理に要する時間を高速化することである。
本発明のメモリ初期化方法は、複数のＣＰＵを備えるコンピュータのブートシーケンスにおけるメモリ初期化方法を前提とする。ここで、ＣＰＵには、１チップのＣＰＵに搭載れるＣＰＵコアも含まれるものとする。すなわち、本発明において複数のＣＰＵと表現する場合、これは複数のＣＰＵコアと同じ意味を持つものとする。
【００１８】
本発明のメモリ初期化方法は、メモリ初期化を、第１のＣＰＵによる第１の記憶手段に格納されているファームウェアの実行により、主記憶装置上の該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化するステップと、前記第１のＣＰＵによる前記ファームウェアの実行により、第２の記憶手段に格納されているカーネルを前記第２の領域にロードし、該カーネルを第２のＣＰＵに起動・実行させるステップと、該第２のＣＰＵにより実行されるカーネルと前記第１のＣＰＵにより実行されるファームウェアが、並行して、前記主記憶装置上の残りの領域の初期化を実行するステップと、を含む処理により実行する。
【００１９】
前記第１の記憶手段は、例えば、ＲＯＭ(Read Only Memory)やフラッシュメモリなどの不揮発性メモリである。また、前記第２の記憶手段は、例えば、ＨＤＤ(Hard Disk Drive) などの外部記憶装置やＣＤ(Compact Disc)などの可搬型記憶媒体である。
【００２０】
本発明の初期化方法によれば、ファームウェアとカーネルが、主記憶装置の初期化を分担して並行して実行するので、主記憶装置の初期化に要する時間を従来よりも短縮できる。この時間短縮の効果は、主記憶装置の容量が大きくなるほど顕著となる。
【図面の簡単な説明】
【００２１】
【図１】ブートシーケンスを示す図である。
【図２】コンピュータが備えるハードウェアによる従来のメモリ初期化処理を示す図である。
【図３】メモリ初期化処理の詳細を示す図である。
【図４】ページサイズを４ＭＢとした場合の問題点を示す図である。
【図５】（ａ）〜（ｃ）は、ブートシーケンス方法の一実施形態を示す図である。
【図６】図５（ａ）のフローチャートを、より詳細したフローチャートである。
【図７】図６のフローチャートのステップＳ１３内の各ステップおけるメインメモリの初期化部分を示す図である。
【図８】本実施形態のメモリ初期化方法を実施するコンピュータのハードウェア構成を示す図である。
【図９】本実施形態の第１の実施例によるメモリ初期化方法を示す図である。
【図１０】本実施形態の第２の実施例によるメモリ初期化方法チを示す図である。
【図１１】第２の実施例によりメインメモリ上に作成されるページテーブルとページを示す図である。
【図１２】第３の実施例によるメモリ初期化の方法を示す図である。
【図１３】第３の実施例によるメモリ初期化方法を実行するコンピュータのハードウェア構成を示す図である。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照しながら、本実施形態を説明する。
［本実施形態のブートシーケンス方法］
図５は、ブートシーケンス方法の一実施形態を示す図である。図５において、上述した図１と同じステップ及び構成要素には同じ符号を付与しており、これらについての説明は省略する。【００２３】
図５（ａ）は、本実施形態のブートシーケンスの手順を示すフローチャートである。このフローチャートにおいて、図１（ａ）と同じ処理を行うステップには、図１（ａ）と同様のステップ番号を付与している。【００２４】
図５（ａ）に示すブートシーケンスは、複数のＣＰＵまたはＣＰＵコアを備えるコンピュータのブートシーケンスを前提としている。以後の説明では、ＣＰＵと記述した場合、それはＣＰＵコアも含むものとする。
本実施形態は、ステップＳ３のカーネル初期設定におけるメモリ初期化処理を、ファームウェア１３１とカーネルで分担し、それぞれを、別々のＣＰＵで実行することで、メモリ初期化を並列処理により行う。このことにより、本実施形態のブートシーケンス方法は、カーネル初期設定（ブート処理）に要する時間を短縮することを可能にしている。【００２５】
図５（ｂ）、（ｃ）を参照しながら、上記並列処理の手順を、より詳細に説明する。
（１）まず、ファームウェア１３１が、メインメモリ（主記憶装置）２０上のファームウェア動作とカーネル起動に必要な最小限の領域を初期化する（ステップＳ１３１ａ）。この領域は、図６（ｃ）に示すメインメモリ２０の前半部分の領域２０ａの一部である。
（２）ファームウェア３１と、ファームウェア３１により起動されたカーネルは、並行して、メモリ２０の残りの初期化領域の初期化を実行する。この場合、ファームウェア３１は領域２０ａの未初期化部分を、カーネルは、メインメモリ２０の領域２０ａ以外の領域２０ｂ（メインメモリ２０の後半部分）を初期化する。【００２６】
｛メモリ初期化の詳細｝
次に、図６と図７を参照しながら、図５のフローチャートのステップＳ１３におけるメモリ初期化処理を、より詳細に説明する。
図６は、図５（ａ）のフローチャートを、より詳細にしたフローチャートである。図６において、図５（ａ）のステップと同一のステップには同じステップ番号を付与している。【００２７】
図７は、図６のフローチャートのステップＳ１３内の各ステップおけるメインメモリ２０の初期化部分を示す図である。
ステップＳ１３のカーネル初期設定（ブート処理）において、まず、ファームウェア１３１によるメモリ初期化が実行される（ステップＳ１３１ａ）。このメモリ初期化により、メインメモリ２０上の、ファームウェア１３１が動作するために必要な領域（図７の領域２０ａ−１）とカーネル起動に必要な最低限の領域（図７の領域２０ａ−２）が初期化される。そして、領域２０ａ−２に、カーネルがロードされる。【００２８】
次に、カーネルの起動（ステップＳ１３１Ｃ）とファームウェア１３１によるメモリ初期化（ステップＳ１３１ｂ）が並行して開始される。起動されたカーネルは、メインメモリ２０の領域２０ａ以降の領域（図７の領域２０ｂ）を初期化する（ステップＳ１３２）。また、ファームウェア１３１は、領域２０ａの残りの部分（図７の領域２０ａ−３）を初期化する（ステップＳ１３１ｂ）。ここで、ステップＳ１３１ｃとステップＳ１３２の実行と、ステップＳ１３１ｂの実行は、コンピュータに実装されている別々のＣＰＵにより、並行して行われる。したがって、領域２０ａ−３の一部と領域２０ｂは、並行処理により、同時に初期化される。【００２９】
ここで、メインメモリ２０の初期化領域を整理すると、メインメモリ２０の初期化領域は、ファームウェア１３１が初期化する領域（図７の領域２０ａ）と、カーネルが初期化する領域（図７の領域２０ｂ）に分割される。また、メインメモリ２０の使用的側面を考慮すると、メインメモリ２０は、ファームウェア１３１が使用する領域（図７の領域２０ａ−１）と、ＯＳが使用する領域（図７の領域２０ａ−２、２０ａ−３、２０ｂ）に分割される。【００３０】
｛初期化境界の指定方法｝
本実施形態は、ファームウェアとカーネルにより、メモリ初期化を同時並列に実行する際、メインメモリ２０の領域２０ａと領域２０ｂの境界に着目する。すなわち、ファームウェアが初期化する領域とカーネルが初期化する領域の境界に着目する。ここで、この境界を、便宜上、「初期化境界」と定義する。この初期化境界は、図７においては初期化境界２０３として示されている。【００３１】
本実施形態では、初期化境界の指定として、下記に示す２種類の方法を用いる。
第１の方法（方法１）：ユーザが指定する。この場合、ユーザは、初期化境界の物理アドレス、または、初期化境界で分割される、メインメモリ２０の２つの領域の割合（前記領域２０ａと前記領域２０ｂの割合）を指定する。この指定は、例えば、ファームウェアのコマンドにより行う。【００３２】
第２の方法（方法２）：初期化境界は、予め、固定的に定める。すなわち、例えば、前記初期化境界の物理アドレス、または、上記２つの領域の割合を既定値とする。【００３３】
［本実施形態のメモリ初期化方法を実施するコンピュータのハードウェア構成］
図８は、上述した本実施形態のメモリ初期化方法を実施するコンピュータのハードウェア構成を示す図である。図８において、上述した図２の構成要素と同じ構成要素には同一の符号を付与しており、これらについては、詳しい説明は省略する。【００３４】
図８に示すコンピュータ１００のハードウェア構成は、図２に示すコンピュータ１と同様である。両者の構成上の相違点は、ＲＯＭに格納されるファームウェアの内容と、外部記憶装置に格納されているＯＳのカーネルの内容である。コンピュータ１００が備えるＲＯＭ１３０に格納されているファームウェア１３１と、外部記憶装置１４０に格納されているＯＳのカーネルは、上述した図６の処理手順により、メインメモリ２０の初期化を実施する。【００３５】
該処理手順において、ファームウェア１３１はＣＰＵ１０−１により実行され、カーネルはＣＰＵ１０−２により実行される。このとき、ファームウェア１３１とカーネルは、それぞれ、ＣＰＵ１０−１、１０−２によって、並行して実行される。このとき、ファームウェア１３１とカーネルは、それぞれ、図７に示すメインメモリ２０の領域２０ａ−３と領域２０ｂを、並行して同時に初期化する。この結果、領域２０ａ−３と領域２０ｂの初期化は、並列処理により実行される。【００３６】
このように、本実施形態では、コンピュータのブートシーケンスにおけるメモリ初期化において、メインメモリの一部の初期化を、ファームウェアとカーネルが分担して並列処理するので、メモリ初期化を高速化できる。【００３７】
［実施例］
次に、上記実施形態の具体的な実施例を説明する。
｛初期化境界の設定に関する実施例｝
＜デフォルト値による初期化が行われる実施例（第１の実施例）＞
まず、本実施形態の第１の実施例について説明する。第１の実施例は、メモリ初期化に関する設定を何もしない。【００３８】
図９に、第１の実施例によるメモリ初期化の方法を示す。
本実施例の場合、図９（ａ）に模式的に示すように、コンピュータ１００を起動する際、コンピュータ１００に対して、メモリ初期化に関する設定を何も行わない。この場合、図９（ｂ）に示す初期化境界のアドレス２０３はデフォルト値となる。また、ファームウェア１３１により初期化されるメインメモリ２０の領域（領域２０ａ−１、２０ａ−２）とカーネルにより初期化されるメインメモリ２０の領域（領域２０ｂ）のページサイズは同じサイズとなる。したがって、この実施例では、上述した図６に示すフローチャートのステップＳ１３にしたがって、ファームウェア１３１とカーネルによるメインメモリ２０の初期化が並行して実行されるのみであるこのため、初期化境界２０３の設定のための調整作業やページサイズの見積もりなどは不要となる。【００３９】
＜チューニングにより初期化が行われる実施例（第２の実施例）＞
次に、本実施形態の第２の実施例を説明する。第２の実施例は、チューニングを行い、コンピュータの運用に最適なページサイズで、メインメモリの初期化を行う。【００４０】
図１０に、第２の実施例によるメモリ初期化の方法を示す。
本実施例では、上記チューニングに加え、初期化境界を設定することも可能である。ページサイズの指定と初期化境界の指定は、例えば、図１０（ａ）に模式的に示すように、コンピュータ１００へのコマンド入力により行う。この場合、図１０（ｂ）に示すように、ファームウェア１３１が初期化する領域（領域２０ａ−３）のページサイズは固定となるが、カーネルが初期化する領域（領域２０ｂ）のページサイズは任意のサイズに指定可能である。この場合、初期化境界２０３を指定可能なので、カーネルが初期化する領域２０ｂのページサイズに合わせて、初期化境界２０３を任意に設定することが可能となる。【００４１】
図１１は、本実施例によるファームウェアとカーネルの並列実行によるメモリ初期化の一例を示す摸式図である。
図１１に示す例は、ファームウェア１３１が初期化するメインメモリ２０の領域２０ａ−３のページサイズが８ＫＢ（キロバイト）、カーネルが初期化する領域２０ｂのページサイズが４ＭＢ（メガバイト）に指定された場合の例である。【００４２】
この場合、図１１模式的に示すように、メインメモリ２０の領域２０ａ−３は、サイズが８ＫＢのページ（物理ページ）２０１ａによって複数に分割される。また、メインメモリ２０の領域２０ｂは、サイズが４ＭＢのページ（物理ページ）２０１ｂによって複数に分割される。【００４３】
また、このとき、ファームウェア１３１とカーネルは、それぞれ、メインメモリ２０上にページテーブル３００ａ、３００ｂを作成する。ページテーブル３００ａは、仮想記憶空間上の仮想ページを、メインメモリ２０の領域２０ａ−３上の物理ページ２０１ａにマッピングするためのアドレス変換情報等を格納しているテーブルである。また、ページテーブル３００ｂは、仮想記憶空間上の仮想ページを、メインメモリ２０の領域２０ｂ上の物理ページ２０１ｂにマッピングするためのアドレス変換情報等を格納しているテーブルである。これらのページテーブル３００ａ、３００ｂの構成は、例えば、公知の仮想記憶技術で用いられるページテーブルと同様である。【００４４】
｛カーネルによるメモリ初期化を並列処理する実施例（第３の実施例）｝
続いて、本実施形態の第３の実施例を説明する。第３の実施例は、カーネルによるメモリ初期化を並列処理により実行する。【００４５】
図１２は、第３の実施例によるメモリ初期化の方法を示す図である。図１２において、（ａ）は、図１１（ａ）と同様である。したがって、第３の実施例においても、第２の実施例と同様に、「初期化境界の指定」と「ページサイズの指定」が、コンピュータ１００でのコマンド入力等により行われる。但し、第３の実施例では、ファームウェア１３１が初期化するメインメモリ２０の領域２０ａ−３についてのみ、ページサイズを指定する。カーネルにより初期化されるメインメモリ２０の領域２０ｂのページサイズはデフォルト値である。【００４６】
第３の実施例においては、領域２０ｂは２つの領域２０ｂ−１、２０ｂ−２に分割され、領域２０ｂ−１の初期化と領域２０ｂ−２の初期化は並行して実行される。このため、第３の実施例においては、カーネルによるメモリ初期化の処理時間が第２の実施例よりも短縮される。【００４７】
図１３は、第３の実施例によるメモリ初期化方法を実行するコンピュータのハードウェア構成を示す図である。図１３において、図８に示す構成要素と同じ構成要素には同一の符号を付与している。【００４８】
図１３に示す例の場合、カーネルをＣＰＵ２０−２、２０−３で並列して同時実行する。このとき、例えば、ＣＰＵ２０−２で実行されるカーネルが図１２（ｂ）に示す領域２０ｂ−１を初期化し、ＣＰＵ２０−３で実行されるカーネルが図１２（ｂ）に示す領域２０ｂ−２を初期化する。【００４９】
本実施形態によれば、以下のような効果が得られる。
（１）ファームウェア単独ではなく、カーネルも、ファームウェアと並行してメモリ初期化を実行するので、メモリ初期化に要する時間が従来よりも短縮される。この時間短縮は、メインメモリのサイズが大きいほど顕著となる。
（２）ファームウェアにより初期化されるメインメモリの領域のページサイズは固定であるが、カーネルにより初期化されるメインメモリの領域のページサイズは、運用するコンピュータシステムの構成や利用形態などに合わせて調整することが可能である。【００５０】
尚、本実施形態は、上述した実施形態及び実施例に限定されることなく、本実施形態の趣旨を逸脱しない範囲内で種々に変形して実施することが可能である。例えば、上述した第３の実施例では、２つのＣＰＵによりカーネルを並列して実行させて、メインメモリの初期化を並列処理するようにしているが、３個以上のＣＰＵがカーネルを並行して実行することで、メインメモリの初期化を並列処理するようにしてもよい。また、ファームウェアが格納される記憶装置は、ＲＯＭに限定されるものではなく、フラッシュメモリなどのようなデータ書き換え可能な半導体メモリであってもよい。また、開示のメモリ初期化方法、メモリ初期化プログラム及び情報処理装置は、コンピュータのリセット操作が行なわれた場合のブートシーケンスにおけるメモリ初期化にも適用可能である。
【産業上の利用可能性】
【００５１】
開示のメモリ初期化方法、メモリ初期化プログラム及び情報処理装置は、複数のＣＰＵまたはマルチＣＰＵコアのＣＰＵを備える計算機、例えば、ＰＣサーバ、ＵＮＩＸ（登録商標）サーバ、並列計算機などに適用可能である。
【図１】
2010058440.tif 000004
【図２】
2010058440.tif 000005
【図３】
2010058440.tif 000006
【図４】
2010058440.tif 000007
【図５】
2010058440.tif 000008
【図６】
2010058440.tif 000009
【図７】
2010058440.tif 000010
【図８】
2010058440.tif 000011
【図９】
2010058440.tif 000012
【図１０】
2010058440.tif 000013
【図１１】
2010058440.tif 000014
【図１２】
2010058440.tif 000015
【図１３】
2010058440.tif 000016
【手続補正書】
【提出日】平成23年1月26日(2011.1.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の演算処理装置を備える情報処理装置のブートシーケンスにおけるメモリ初期化方法であって、
前記メモリ初期化の処理は、
第１の演算処理装置による第１の記憶手段に格納されているファームウェアの実行により、主記憶装置上の該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化するステップと、
前記第１の演算処理装置による前記ファームウェアの実行により、前記第２の領域に格納された該カーネルを第２の演算処理装置に起動・実行させるステップと、
該第２の演算処理装置により実行されるカーネルと前記第１の演算処理装置により実行されるファームウェアが、並行して、前記主記憶装置上の残りの領域の初期化を実行するステップと、
を含むことを特徴とするメモリ初期化方法。
【請求項２】
前記メモリ初期化方法であって、
前記カーネルは、前記主記憶装置を仮想記憶方式により管理するオペレーティングシステムであり、
前記主記憶装置のメモリ初期化は、主記憶装置上のオペレーティングシステムが管理する領域をページ単位に分割する処理と、論理ページを主記憶装置上の物理ページに変換するページテーブルを作成する処理を含むことを特徴とする請求項１記載のメモリ初期化方法。
【請求項３】
前記メモリ初期化方法であって、
前記カーネルが初期化する主記憶装置上の領域のページは、所定のサイズであることを特徴とする請求項１記載のメモリ初期化方法。
【請求項４】
前記メモリ初期化方法であって、
前記カーネルが初期化する主記憶装置上の領域のページサイズは、前記ファームウェアが初期化する主記憶装置上の領域のページサイズと同じであることを特徴とする請求項３記載のメモリ初期化方法。
【請求項５】
前記メモリ初期化方法であって、
前記カーネルが初期化する主記憶装置上の領域のページは、任意のサイズに指定可能であることを特徴とする請求項１記載のメモリ初期化方法。
【請求項６】
前記メモリ初期化方法であって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、その分割位置を示す初期化境界のアドレスは固定であることを特徴とする請求項１記載のメモリ初期化方法。
【請求項７】
前記メモリ初期化方法であって、
ファームウェアが初期化する領域とカーネルが初期化する領域は、主記憶装置上で分割されており、前記分割の位置を示す初期化境界のアドレスは指定可能であることを特徴とする請求項１記載のメモリ初期化方法。
【請求項８】
前記メモリ初期化方法であって、
前記カーネルによる主記憶装置の領域の初期化は、複数の演算処理装置がカーネルを並行実行されることを特徴とする請求項１記載のメモリ初期化方法。
【請求項９】
複数の演算処理装置を備える情報処理装置のブートシーケンスにおけるメモリ初期化を実行する初期化プログラムであって、
前記プログラムは、第１の記憶手段に格納されているファームウェアと第２の記憶手段に格納されているカーネルを備え、
前記ファームウェアは、
第１の演算処理装置による第１の記憶手段に格納されているファームウェアの実行により、主記憶装置上の該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化するステップと、
前記第１の演算処理装置による前記ファームウェアの実行により、第２の記憶手段に格納されているカーネルを前記第２の領域にロードし、該カーネルを第２の演算処理装置に起動・実行させるステップと、
前記第１の演算処理装置に、主記憶装置上のオペレーティングシステムが使用する第３の領域を初期化させるステップと、
を含む処理を情報処理装置に実行させ、
前記カーネルは、
第２の演算処理装置に、主記憶装置上の前記第１、第２及び第３の領域以外のオペレーティングシステムが使用する第４の領域を初期化するステップを含む処理を、情報処理装置に実行させ、
前記第１の演算処理装置に主記憶装置上のオペレーティングシステムが使用する第３の領域を初期化させるステップと前記第２の演算処理装置に前記主記憶装置上の前記第１、第２及び第３の領域以外のオペレーティングシステムが使用する第４の領域を初期化させるステップは、並行して実行されることを特徴とする初期化プログラム。
【請求項１０】
複数の演算処理装置を備える情報処理装置のブートシーケンスにおけるメモリ初期化を実行する情報処理装置であって、
第１の演算処理装置に第１の記憶手段に格納されているファームウェアを実行させることにより、該ファームウェアの動作に必要な第１の領域とカーネル起動に必要な第２の領域を初期化させる手段と、
前記第１の演算処理装置によるファームウェアの実行により、第２の記憶手段に格納されているカーネルを前記第２の領域にロードし、該カーネルを第２の演算処理装置に起動・実行させる手段と、
前記第１の演算処理装置と該第２の演算処理装置に、それぞれ、前記ファームウェアと前記カーネルを、並行して実行させ、前記主記憶装置上の残りの領域の初期化させる手段と、
を含むことを特徴とする情報処理装置。
【国際調査報告】
2010058440.tif 000017
2010058440.tif 000018
2010058440.tif 000019
2010058440.tif 000020