JP2016181106A - 情報処理装置、およびプログラム - Google Patents
情報処理装置、およびプログラム Download PDFInfo
- Publication number
- JP2016181106A JP2016181106A JP2015060754A JP2015060754A JP2016181106A JP 2016181106 A JP2016181106 A JP 2016181106A JP 2015060754 A JP2015060754 A JP 2015060754A JP 2015060754 A JP2015060754 A JP 2015060754A JP 2016181106 A JP2016181106 A JP 2016181106A
- Authority
- JP
- Japan
- Prior art keywords
- area
- core
- diagnosis
- arithmetic processing
- initialization
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2284—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
【課題】コンピュータの装置起動時間を削減し、コンピュータの利用効率を向上させる。【解決手段】複数の演算処理部のうちの少なくともいずれかの演算処理部がオペレーティングシステムの入出力部からのローディングに使用される主記憶部の第1の領域に対して初期化および診断処理の少なくとも一方を含む初期処理を実行する。さらに、第1の領域に対する初期処理が完了すると、複数の演算処理部のうちの一方の演算処理部が入出力部からオペレーティングシステムを第1の領域にローディングする。そして、複数の演算処理部のうちの他方の演算処理部は、一方の演算処理部の処理中に主記憶部のうち初期処理がなされていない残り領域の初期処理を開始する。さらにまた、ローディングが完了すると、一方の演算処理部は、オペレーティングシステムの起動を開始する。【選択図】図3
Description
本発明は、情報処理装置、およびプログラムに関する。
コンピュータの装置起動時の処理は、例えば、ハードウェア初期化・診断処理(一般にPower On Self Test(POST)と呼ばれる処理)を行った後、入出力部(以下、I/O)を介した外部記憶媒体等からのOperating System(OS)のイメージロード処理、及び、その後のOS起動処理を含む。ここで、外部記憶媒体等としては、たとえば、ディスクやネットワーク上の記憶装置が例示される。
初期化・診断処理においては、Central Processing Unit(CPU)、メモリ、I/O
等を対象に処理が行われる。ところで、近年、コンピュータは、メモリ容量の増加に伴い、初期化・診断時間を要するようになってきている。又、OSイメージのロード処理及びOS起動処理においても、I/O性能あるいはOS起動時処理量に依存して起動待ち時間に多くの時間を要することがある。
等を対象に処理が行われる。ところで、近年、コンピュータは、メモリ容量の増加に伴い、初期化・診断時間を要するようになってきている。又、OSイメージのロード処理及びOS起動処理においても、I/O性能あるいはOS起動時処理量に依存して起動待ち時間に多くの時間を要することがある。
上記従来の技術では、コンピュータ起動時には、ハードウェアの初期化・診断を行った後、OSブート処理が開始される。ここで、OSブート処理には、OSイメージのロード処理およびOS起動処理が含まれる。また、上記ハードウェアの初期化・診断には、すべてのメモリ領域の診断等が含まれる。ただし、OSブート処理は、必ずしもすべてのメモリ領域を用いる訳ではなく、一部のメモリ領域を用いる場合が多い。以上のようにハードウェアの初期化・診断と、OSブート処理とが分離して行われる第1の理由は、分離した実装の方が容易だからである。逆に、ハードウェアの初期化・診断と、OSブート処理とが分離されない実装では、OSブート処理のためのメモリ容量の把握が困難となることも予想される。第2の理由は、従来、メモリ診断時間の待ち時間は多少時間がかかってもやむを得ない待ち時間とし、その観点での起動時間短縮の積極的改善はなされていないからである。
ところで、OSイメージは、上述のようにI/Oを介して外部記憶媒体等からメモリにロードされる。通常、OSイメージをロードするためのI/O性能は、メモリへのアクセス性能と比較して低い場合が一般的である。また、OS起動処理も、起動待ち時間のうちの一定割合を占めている。しかし、OS起動処理がメモリへのアクセス性能、すなわち、メモリバンド幅を十分に活用している訳ではない。したがって、従来の技術では、I/O性能と比較して高いメモリへのアクセス性能が十分に活用されていない。開示の実施形態の課題は、コンピュータの装置起動時間を従来よりも削減し、コンピュータの利用効率を向上させることにある。
開示の技術の一側面は、複数の演算処理部と、複数の演算処理部のそれぞれからアクセス可能な主記憶部と、複数の演算処理部のそれぞれからアクセス可能な入出力部と、を備える情報処理装置によって例示される。本情報処理装置においては、複数の演算処理部のうちの少なくともいずれかの演算処理部がオペレーティングシステムの入出力部からのローディングに使用される主記憶部の第1の領域に対して初期化および診断処理の少なくとも一方を含む初期処理を実行する。さらに、第1の領域に対する初期処理が完了すると、複数の演算処理部のうちの一方の演算処理部が入出力部からオペレーティングシステムを第1の領域にローディングする。そして、複数の演算処理部のうちの他方の演算処理部は、一方の演算処理部の処理中に、主記憶部のうち初期処理がなされていない残り領域の初期処理を開始する。さらにまた、ローディングが完了すると、一方の演算処理部は、オペレーティングシステムの起動を開始する。
本情報処理装置によれば、コンピュータの装置起動時間を従来よりも削減し、コンピュータの利用効率を向上させることができる。
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。
図1に、本情報処理装置の構成を例示する。図1の情報処理装置は、CPU1と、CPU1に内部バス7を通じて接続されるメモリコントローラ2およびI/Oコントローラ4と、メモリコントローラ2がアクセスするメモリ3と、I/Oコントローラ4がアクセスする入出力装置(以下、I/O6)と、Read Only Memory(以下、ROM8)とを有する。
CPU1は、コアAとコアBを有する。ただし、CPU1のコア数が2に限定される訳ではない。コアAとコアBとは、内部バス7への調停処理を実行しつつ、メモリコントローラ2およびI/Oコントローラ4に要求を発行するととともに、要求結果を取得する。また、コアA、コアB等のコア間には、非同期割り込み部が設けられる。コアA、コアB
等は、非同期割り込み部を介して相互に非同期に通信可能である。非同期割り込み部がインターフェース部の一例である。コアA、コアBが複数の演算処理部の一例である。メモリ3が主記憶部の一例である。I/Oコントローラ4とI/O6とが入出力部の一例である。
等は、非同期割り込み部を介して相互に非同期に通信可能である。非同期割り込み部がインターフェース部の一例である。コアA、コアBが複数の演算処理部の一例である。メモリ3が主記憶部の一例である。I/Oコントローラ4とI/O6とが入出力部の一例である。
メモリコントローラ2は、コアA、コアBからの要求あるいはI/Oコントローラ4からの要求にしたがって、メモリ3にアクセスする。図1の例では、メモリ3の記憶領域は、X、Y、およびZに分かれている。なお、メモリ3は、主記憶装置とも呼ばれる。
I/Oコントローラ4は、コアA、コアB等の要求にしたがって、I/O6にアクセスし、データの入出力処理を実行する。I/O6は、例えば、周辺装置へのインターフェースである。図1では、省略されているが、I/O6には、例えば、ハードディスク装置、Solid State Drive(SSD)、Network Interface Card(NIC)等が接続される。
図1では、I/Oコントローラ4内に、Static Random Access Memory(以下、SRA
M5)が例示されている。本実施形態では、主記憶装置2、SRAM5およびI/O6は、内部バス7の物理アドレス空間上のアドレスに割り当てられる。したがって、コアA、コアBは、内部バス7の物理アドレス空間上のアドレスにアクセスすることで、メモリコントローラ2を介して、メモリ3にアクセスすることができる。また、コアA、コアBは、内部バス7の物理アドレス空間上のアドレスにアクセスすることで、I/Oコントローラ4を介して、I/O6に接続される周辺装置等、あるいはSRAM5にアクセスできる。なお、SRAM5は、I/Oコントローラ4の外部で、内部バス7に接続されていてもよい。SRAM5は、ファームウェア、OSのシステムパラメータ等を格納する。
M5)が例示されている。本実施形態では、主記憶装置2、SRAM5およびI/O6は、内部バス7の物理アドレス空間上のアドレスに割り当てられる。したがって、コアA、コアBは、内部バス7の物理アドレス空間上のアドレスにアクセスすることで、メモリコントローラ2を介して、メモリ3にアクセスすることができる。また、コアA、コアBは、内部バス7の物理アドレス空間上のアドレスにアクセスすることで、I/Oコントローラ4を介して、I/O6に接続される周辺装置等、あるいはSRAM5にアクセスできる。なお、SRAM5は、I/Oコントローラ4の外部で、内部バス7に接続されていてもよい。SRAM5は、ファームウェア、OSのシステムパラメータ等を格納する。
I/Oコントローラ4は、コアA、コアB等の要求にしたがって、I/O6からデータを取得し、メモリコントローラ2に引き渡す。また、I/Oコントローラ4は、コアA、コアB等の要求にしたがって、メモリコントローラ2に引き渡されるデータをI/O6に転送する。
ROM8には、例えば、BIOS等のファームウェアが格納されている。ファームウェアは、情報処理装置への電源投入あるいはリセットスイッチによるリセット時にコアAあるいはコアBにより起動され、ハードウェアの初期化・診断、OSイメージのロード、起動等を制御する。例えば、電源投入あるいはリセットスイッチによるリセットによって、コアA、コアB等の複数のコアが起動される場合に、Boot Strap Processor(BSP)と、Application Processor(AP)が選定される。BSPは、初期化・診断を含めたファームウェア処
理全体の管理を行い、他のコアであるAPと処理を分担して、 ファームウェアの処理を
実行する。
理全体の管理を行い、他のコアであるAPと処理を分担して、 ファームウェアの処理を
実行する。
ただし、例えば、一方のコア(例えば、コアB)が初期化・診断を実行し、初期化・診断の完了後に、コア間非同期割り込みでコアAを起動してもよい。また、例えば、ファームウェアによって両方のコアA、Bが起動し、一方のコア(例えば、コアB)が初期化・診断を行ってもよい。そして、他方のコア(例えば、コアA)は、共有資源を監視し、領域Xの初期化・診断が完了するまで待ち状態となってもよい。
図2に、本情報処理装置の起動時の処理を例示する。本情報処理装置は、起動前、例えば、BIOS等を介して、メモリ3の領域X、Yの容量が初期設定されている(G1)。その結果として、領域X、Y以外の残り領域Zも初期設定される。メモリ3の領域X、Y等の容量は、例えば、OSのパラメータとしてSRAM5等に保持される。
ここで、領域Xは、OSイメージのロードのための領域である。ここで、領域Xが第1
の領域の一例である。OSイメージは、実行形式とも呼ばれ、コアA、コアB等で実行されるバイナリ形式のデータである。ただし、OSイメージは、例えば、自己解凍型で圧縮されたデータであってもよい。
の領域の一例である。OSイメージは、実行形式とも呼ばれ、コアA、コアB等で実行されるバイナリ形式のデータである。ただし、OSイメージは、例えば、自己解凍型で圧縮されたデータであってもよい。
また、領域Yは、OSの起動処理のための領域である。領域Yは、OSのシステムパラメータ、情報処理装置の管理情報等を格納する。また、OSのイメージが自己解凍型で圧縮されたデータの場合には、領域Yは、OSの実行形式を展開するための領域を含む。領域Yが第2の領域の一例である。なお、ファームウェア、ブートプログラム等は、例えば、領域Yの診断と初期化が完了すると、OSの起動を開始する。ただし、領域Yの一部の診断と初期化が完了し、OSの一部が起動可能となったときに、OSの起動が開始されてもよい。本実施の形態では、ファームウェアとOSのプロセスとは、共有資源領域、例えば、SRAM5内に相互に通知できるインターフェースを有する。ただし、ファームウェアとOSのプロセスとの間で通知できるインターフェースとしては、SRAM5の代わりに、コアAとコアBとの間での非同期割り込み部等が用いられてもよい。
さらに、領域Zは、領域X、領域Y以外の領域である。ファームウェアあるいはOSは、領域X、領域Yの容量を示すパラメータ、割り付けのアドレス情報等から、残り部分である領域Zの容量および割り付けのアドレス情報を認識できる。
情報処理装置が起動されると、CPU1の少なくともいずれかのコアがBIOS等のファームウェアを起動する。CPU1のいずれかのコアあるいは、連携動作する複数のコアは、ファームウェアにより、ハードウェアの初期化・診断を行い、さらに、メモリ3の領域Xを初期化する(矢印G2)。例えば、コアAがファームウェアを実行し、OSイメージのロードのための領域Xを初期化し、診断する。コアAは、メモリ3にアクセスするメモリバンド幅をほぼ最大限に使用して、領域Xを初期化し、診断すればよい。ただし、コアAの管理下で、コアAとコアBが連携して、領域Xを初期化し、診断してもよい。
次に、CPU1の一方のコア(例えば、コアA)がOSイメージのロードを実行し、他方のコア(例えば、コアB)が領域Xに続くメモリ3の領域Yを初期化および診断する。OSイメージのロードと、領域Yの初期化および診断とは、コアA、コアBによって並列実行される。OSイメージのロードは、IO6の転送性能をほぼ最大限に使用して実行される。一方、IO6からのOSイメージのメモリ3への転送に伴い、領域Yの初期化および診断でのメモリアクセス性能は、メモリバンド幅の最大限の値から低下する。
例えば、コアAは、領域Xの初期化・診断終了後、OSイメージのローディングを開始する(矢印G3)。一方、コアBは、コアAによる領域Xの初期化・診断終了後、メモリ3の領域YおよびZの初期化・診断を開始する(矢印G4)。そして、コアAはOSイメージのローディングを完了する。したがって、コアAによるOSイメージのローディングとコアBによる領域YおよびZの初期化・診断とは並列で実行される。
次に、コアAは、OSイメージのロードを完了し、共有資源であるSRAM5に設けられたコアBとのインターフェースから領域Yの初期化・診断の完了を認識すると、OSの起動処理を開始する(G5)。共有資源であるSRAM5がインターフェース部の一例である。一方、コアBは領域Yの初期化・診断の完了後、さらに、領域Zの初期化・診断を継続する(矢印G6)。したがって、コアAによるOSの起動処理とコアBによる領域Zの初期化・診断とは並列で実行される。そして、コアBは、領域Zの初期化・診断を完了する。
その後、OSが起動されたコア(例えば、コアA)は、メモリ3の領域Zに関するOSの設定を行う。例えば、コアAは、領域Zの初期化・診断完了に伴い増加した領域を管理
するためのページテーブル等のOS制御データを設定する。ページテーブル等の設定により、OSの記憶管理、例えば、仮想アドレス空間と物理アドレス空間の対応付け等がなされる。
するためのページテーブル等のOS制御データを設定する。ページテーブル等の設定により、OSの記憶管理、例えば、仮想アドレス空間と物理アドレス空間の対応付け等がなされる。
図3に、比較例の情報処理装置の起動時間と本情報処理装置の起動時間を対比して例示する。図3の上段は、比較例の情報処理装置の起動時の処理を例示する。また、図3の下段は、本情報処理装置の起動時の処理を例示する。上段、下段ともに、横軸は時間軸であり、縦軸は、各処理でのメモリ3アクセス時の使用帯域を示す。
比較例の情報処理装置は、メモリ3の全領域(X、Y、Z)の初期化・診断を実行し、次にOSイメージのロードを実行し、さらに、OSを起動する。比較例の処理では、メモリ3の初期化・診断は、メモリ3への使用帯域の最大限に近い帯域を使用して実行できる。しかし、OSイメージのロードおよびOS起動では、I/O6でのアクセス速度がボトルネックとなり、メモリ3へのアクセス速度は、使用可能帯域(メモリバンド幅,メモリ帯域とも呼ぶ)の最大値から大きく低下することになる。
一方、本情報処理装置は、まず、OSイメージのローディングのための領域Xの初期化・診断を実行する。次に、本情報処理装置は、OSイメージのローディングと、OSの起動のための領域Yの初期化・診断とを並列に実行する。OSイメージのローディングと、OSの起動のための領域Yの初期化・診断とを並列に実行すると、OSイメージのローディングに伴い、領域Yの初期化・診断でのメモリ3へのアクセス速度は低下する。しかしながら、OSイメージのローディングだけを実行する比較例の場合のように、I/O6の性能がボトルネックになることによるメモリ3へのアクセス速度の低下は抑制できる。さらに、本情報処理装置は、OSの起動と、メモリ3の残り領域Zの初期化・診断とを並列に実行する。OSの起動と、メモリ3の残り領域Zの初期化・診断とを並列に実行すると、残り領域Zの初期化・診断でのメモリ3へのアクセス速度は低下する。しかしながら、起動処理全体としてのアクセス効率の低下が抑制できる。以上のような並列処理の結果、図3に矢印で示す期間に相当する時間が短縮され、本情報処理装置の起動が速くなる。
図4は、比較例の情報処理装置と、本情報処理装置とにおいて、起動時間を見積もった計算例である。図4では、領域Xが全体の1%であり、領域Yが19%であり、領域Zが80%であると仮定する。また、I/O6の性能(帯域幅)がメモリアクセス時の使用可能帯域(メモリバンド幅)の10%であると仮定する。さらに、OS起動時のメモリ使用帯域をメモリバンド幅の40%であると仮定する。また、メモリへのアクセス速度(メモリバンド幅)は1(無次元)であると仮定する。さらに、OS起動時間を150であると仮定する。なお、図4では、メモリの初期化・診断を単に、「メモリ診断」と表している。
比較例の場合、メモリ3の初期化・診断時間は、100%の容量をメモリ帯域の100%を利用して実行するので、100/1=100(無次元)となる。また、OSイメージのロード時間は、1%の容量をメモリ帯域の10%のIO性能でロードすることになるので、1/0.1=10となる。なお、OS起動時間は、仮定により150である。したがって、比較例では、メモリ3の初期化・診断、OSイメージのロード、およびOS起動に要する時間は100+10+150=260となる。
一方、本情報処理装置では、領域Xの初期化・診断時間は、1%の領域をメモリ帯域の100%を使用して実行するので、1/1=1である。ここで、領域Xの初期化・診断は、コアA、コアBのいずれが行ってもよい。
また、OSイメージのロード時間10に対して、領域Yの初期化・診断時間は、19%
の容量をメモリ帯域の90%を利用して実行するので、19/0.9=21となる。したがって、並列実行されるOSイメージのロードと領域Yの初期化・診断とでは、領域Yの初期化・診断時間が長くなる。図4では、OSイメージのロードは、コアAによって行われ、領域Yの初期化・診断時間は、コアBにより行われる。ただし、コアAが初期化・診断を行い、コアBがOSイメージのロードを行ってもよい。
の容量をメモリ帯域の90%を利用して実行するので、19/0.9=21となる。したがって、並列実行されるOSイメージのロードと領域Yの初期化・診断とでは、領域Yの初期化・診断時間が長くなる。図4では、OSイメージのロードは、コアAによって行われ、領域Yの初期化・診断時間は、コアBにより行われる。ただし、コアAが初期化・診断を行い、コアBがOSイメージのロードを行ってもよい。
さらに、残り領域Zの初期化・診断時間は、80%の容量をメモリ帯域の60%を利用して行うので、80/0.6=133(<150)となる。したがって、本情報処理装置によるメモリの初期化・診断開始からOS起動完了までの時間は、1+21+150=172となり、比較例に対して、時間88だけ削減される。
図5に、本情報処理装置起動時の処理を例示する。本情報処理装置は、電源投入あるいはリセット等により、図5の処理を開始する。まず、本情報処理装置のCPU1(コアAまたはコアB)は、メモリ3の領域Xの初期化・診断を実行する(S1)。ただし、図5では、初期化・診断を単に「診断」と表している。なお、本実施形態の図6以下の図面でも同様に、初期化・診断を単に「診断」と表す。ここで、初期化・診断が初期処理の一例である。S1の処理が、オペレーティングシステムの前記入出力部からのローディングに使用される前記主記憶部の第1の領域に対して初期化および診断処理の少なくとも一方を含む初期処理を実行することの一例である。
そして、CPU1(コアAまたはコアB)がメモリ3の領域Xの初期化を完了すると、例えば、コアBは、例えば、メモリ3の領域Yの初期化・診断を実行する(S3)。S3の処理が、一方の演算処理部の処理中に、前記主記憶部のうち初期処理がなされていない残り領域の前記初期処理を開始することの一例である。また、S3の処理を実行するコアBが他方の演算処理部の一例である。このとき、例えば、コアAは、OSイメージをロードする(S8)。OSイメージをロードするS8の処理がローディングの一例である。S8の処理を実行するコアAが一方の演算処理部の一例である。
そして、コアBがメモリ3の領域Yの初期化・診断を完了すると(S4でYes)、例えば、コアBは、さらにメモリ領域Zの初期化・診断を実行する(S5)。S4でYesの場合が、オペレーティングシステムの少なくとも一部の起動が可能な第2の領域に対する初期処理が完了することの一例である。このとき、例えば、コアAは、OS起動処理を開始する(S9)。S9の処理が、ローディングが完了すると、前記一方の演算処理部は、前記オペレーティングシステムの起動を開始することの一例である。
そして、コアBは、さらにメモリ領域Zの初期化・診断を完了すると、CPU1(コアAまたはコアB)がメモリZに関係するOS起動処理を実行する(S7)。
そして、コアBは、さらにメモリ領域Zの初期化・診断を完了すると、CPU1(コアAまたはコアB)がメモリZに関係するOS起動処理を実行する(S7)。
<実施形態1>
以下、図6および図7により、実施形態1に係る情報処理装置の処理を説明する。実施形態1は、上記図1から図5に示した情報処理装置の処理をさらに具体化する。したがって、情報処理装置の構成は、図1、図2に例示したものと同一である。図6は、情報処理装置のファームウェアの処理を例示するフローチャートである。情報処理装置への電源投入、あるいは、リセットによって、CPU1(例えば、コアA)は、図6の処理を開始する。なお、電源投入、あるいは、リセット後にファームウェアの実行するコアは、コアA、コアBのいずれか、または両方であってもよい。
以下、図6および図7により、実施形態1に係る情報処理装置の処理を説明する。実施形態1は、上記図1から図5に示した情報処理装置の処理をさらに具体化する。したがって、情報処理装置の構成は、図1、図2に例示したものと同一である。図6は、情報処理装置のファームウェアの処理を例示するフローチャートである。情報処理装置への電源投入、あるいは、リセットによって、CPU1(例えば、コアA)は、図6の処理を開始する。なお、電源投入、あるいは、リセット後にファームウェアの実行するコアは、コアA、コアBのいずれか、または両方であってもよい。
CPU1は、まず、情報処理装置のハードウェアの診断を開始する(F1)。ハードウェアの診断には、メモリ3以外の周辺装置、例えば、I/Oコントローラ4等の設定、メモリ3の初期化・診断が含まれる。F1の処理が、オペレーティングシステムの前記入出力部からのローディングに使用される前記主記憶部の第1の領域に対して初期化および診
断処理の少なくとも一方を含む初期処理を実行することの一例である。CPU1がメモリ3の領域Xの初期化・診断を完了すると(F2)、例えば、コアAは、メモリ3の領域XにOSイメージのロードを開始する(F3)。F3の処理が、第1の領域に対する初期処理が完了すると、前記複数の演算処理部のうちの一方の演算処理部が前記入出力部から前記オペレーティングシステムを前記第1の領域にローディングすることの一例である。
断処理の少なくとも一方を含む初期処理を実行することの一例である。CPU1がメモリ3の領域Xの初期化・診断を完了すると(F2)、例えば、コアAは、メモリ3の領域XにOSイメージのロードを開始する(F3)。F3の処理が、第1の領域に対する初期処理が完了すると、前記複数の演算処理部のうちの一方の演算処理部が前記入出力部から前記オペレーティングシステムを前記第1の領域にローディングすることの一例である。
コアAは、OSイメージのローディングを完了すると(F4)、コアBによるメモリ3の領域Yの診断完了を確認する(F5)。コアBによるメモリ3の領域Yの診断完了は、例えば、図1に例示したSRAM5等のコア間の共有資源上のインターフェース、あるいはコア間非同期割り込み等を通じて、コアBからコアAに通知される。メモリ3の領域Yの診断が未完了のとき、コアAは、制御をF5に戻す。一方、メモリ3の領域Yの診断が完了すると、コアAは、OS起動処理を開始する。すなわち、領域XにロードされたOSに制御を移行する(F7)。F7の処理が、ローディングが完了すると、前記一方の演算処理部(コアA)が、前記オペレーティングシステムの起動を開始することの一例である。
一方、CPU1がメモリ3の領域Xの初期化・診断を完了すると(F2)、例えば、コアBは、メモリ3の領域Yの診断を開始する(F8)。そして、コアBは、メモリ3の領域Yの診断が完了すると、コア間の共有資源上のインターフェースに完了を記録する(F9)。
次に、コアBは、メモリ3の残り領域Zの初期化・診断を開始する(FA)。そして、コアBがメモリ3の領域Zの初期化・診断を完了すると、コア間の共有資源上のインターフェースに完了を記録する(FB)。なお、コアBは、コア間非同期割り込み等を通じて、コアAに完了を通知してもよい。
図7は、OS起動処理(図6のF7)の詳細を例示するフローチャートである。この処理では、コアAは、例えば、メモリ3の領域X+Yの範囲でのOS起動処理を実行する(K1)。ここで、領域X+Yの範囲でのOS起動処理は、例えば、ページテーブルをメモリ3の領域X+Yの範囲で設定する処理、領域X+Yの範囲にOSのプロセスの管理情報を設定する処理等である。
次に、コアAは、メモリ3の領域Zの診断が完了したか否かを判定する(K3)。K3の判定方法は、図6のF5と同様である。領域Zの診断が完了していない場合、コアAは、制御をK2に戻す。一方、領域Zの診断が完了した場合には、コアAは、メモリ3の領域Zに関するOS起動処理を実行する(K4)。領域Zに関するOS起動処理は、例えば、領域Zについてのページテーブルの設定等である。
以上述べたように、実施形態1では、CPU1(例えば、コアA)がOSイメージのローディングのための領域Xの診断が完了すると、OSイメージを領域Xにローディングする。また、コアAがOSイメージを領域Xにローディングする間、コアBが領域Yと領域Zの初期化・診断を実行する。したがって、実施形態1の情報処理装置では、OSイメージのローディングのための領域Xだけの初期化・診断だけ実行すれば、従来よりも早期にOSイメージを領域Xにローディングする処理と領域Yと領域Zの初期化・診断との並列処理を実行できる。コアAとコアBとは、非同期割り込み部あるいはSRAM5等の共有資源を用いて、主記憶部の初期化処理の完了範囲を授受できる。
さらに実施形態1によれば、コアBによる領域Yの初期化・診断が完了すると、コアAはコアBの処理と並列して、OSの起動処理を開始できる。したがって、実施形態1の情報処理装置は、さらに、コアAとコアBとの並列処理で、OSを起動できる。以上のよう
に、実施形態1によれば、情報処理装置は、従来よりも早期にコアAとコアBの並列処理を開始できる。
に、実施形態1によれば、情報処理装置は、従来よりも早期にコアAとコアBの並列処理を開始できる。
また、情報処理装置は、OSイメージを領域Xにローディングする処理と領域Yと領域Zの初期化・診断との並列処理により、メモリ3へのアクセス効率を改善できる。つまり、OSイメージを領域Xにロードする処理において、I/O6へのアクセス速度に起因してメモリ3へのメモリ帯域を効率的に使用できないことにより起動時間が全体として長くなる場合がある。しかし、実施形態1の処理では、領域Yと領域Zの初期化・診断により、OSイメージロード時に、メモリ3へのアクセスの帯域を従来よりも効率よく使用できることにより起動時間が全体として短縮できる。
また、情報処理装置は、OS起動処理と領域Zの初期化・診断との並列処理により、メモリ3へのアクセス効率を改善できる。つまり、OS起動処理において、I/O6へのアクセス速度に起因して、メモリ3へのアクセスにおいて、メモリ3へのアクセスの帯域が十分に使用できない場合がある。しかし、実施形態1の処理では、領域Zの初期化・診断により、OS起動時に、メモリ3へのアクセスの帯域が従来よりも効率よく使用でき、起動時間が全体として短縮することが可能となる。
<実施形態2>
図8、図9により、本情報処理装置による実施形態2の処理を説明する。実施形態2の場合においても、情報処理装置の構成は、図1、図2に例示したものと同一である。実施形態1では、コアBが領域Yの初期化・診断を完了すると、残り領域Zの初期化・診断を継続した。一方、実施形態2では、コアBが共有資源を通じて時々刻々、例えば、所定間隔で初期化・診断完了済みの領域の情報をコアAに通知し、コアAは、OSの一部起動が可能となると、OSを起動する。さらに、OSの起動開始後、メモリ3に初期化・診断が未完了の領域があると、コアA、コアBは、初期化・診断が未完了の領域の初期化・診断を実行する。実施形態2の他の手順は、図6および図7の処理と同様である。そこで、実施形態2の処理のうち、実施形態1と同一の処理については、図6および図7と同一の符合を付して説明を省略する。
図8、図9により、本情報処理装置による実施形態2の処理を説明する。実施形態2の場合においても、情報処理装置の構成は、図1、図2に例示したものと同一である。実施形態1では、コアBが領域Yの初期化・診断を完了すると、残り領域Zの初期化・診断を継続した。一方、実施形態2では、コアBが共有資源を通じて時々刻々、例えば、所定間隔で初期化・診断完了済みの領域の情報をコアAに通知し、コアAは、OSの一部起動が可能となると、OSを起動する。さらに、OSの起動開始後、メモリ3に初期化・診断が未完了の領域があると、コアA、コアBは、初期化・診断が未完了の領域の初期化・診断を実行する。実施形態2の他の手順は、図6および図7の処理と同様である。そこで、実施形態2の処理のうち、実施形態1と同一の処理については、図6および図7と同一の符合を付して説明を省略する。
図8は、実施形態2におけるファームウェアの処理を例示するフローチャートである。図8において、上述のようにF1からF4は、図6と同様であるので説明が省略される。例えば、コアAは、OSイメージのロードを完了すると、OSの一部起動が可能であるか否かを判定する(F15)。OSの一部起動が可能であるか否かは、共有資源を通じて、コアBから通知される初期化・診断完了済みの領域の情報から判定する。例えば、図2から図4および実施形態1で説明したメモリ3の領域のうち、OSの起動のための領域Yにおいて初期化・診断が完了すれば、コアAは、OSの一部起動が可能と判断できる。ただし、コアAは、OSの起動のための領域Yよりも狭い領域の初期化・診断が完了しても、OSの一部が起動可能と判断してもよい。例えば、OSの起動時の少なくとも1つのプロセスが実行可能な領域の初期化・診断が完了すれば、コアAは、OSの一部起動が可能と判断できる。したがって、図8では省略しているが、コアBによるメモリ3の領域の初期化・診断が時々刻々進行するに伴い、コアAは、OSの一部起動が可能と判断できる範囲を時々刻々拡げていってもよい。そして、コアAは、OSの一部起動が可能と判断すると、OS起動処理を開始する(F16)。F15−F16の処理が、オペレーティングシステムの少なくとも一部の起動が可能な第2の領域に対する初期処理が完了すると、前記オペレーティングシステムを起動することの一例である。F15−F16の処理を実行するコアAが一方の演算処理部の一例である。
一方、コアAによるメモリ3の領域XにOSのイメージをロードする処理(F3)と並列に、コアBは、メモリ3の領域YとZの初期化・診断を開始する(F18)。そして、
コアBは、メモリ3の初期化・診断時、診断完了済み領域の途中情報を所定の時間間隔で、あるいは所定のメモリ領域粒度の完了ごとに共有資源に記録する(F19)。以下、所定の時間間隔、所定のメモリ領域粒度の完了ごとのタイミング等を含めて、所定間隔という。
コアBは、メモリ3の初期化・診断時、診断完了済み領域の途中情報を所定の時間間隔で、あるいは所定のメモリ領域粒度の完了ごとに共有資源に記録する(F19)。以下、所定の時間間隔、所定のメモリ領域粒度の完了ごとのタイミング等を含めて、所定間隔という。
図9は、OS起動処理(図8のF16)の詳細を例示するフローチャートである。この処理では、CPU1の例えば、コアAは、共有資源から診断完了済みのメモリ3の領域情報を取得する(K11)。そして、例えば、コアAは、メモリ3の領域Yの初期化・診断が完了したか否かを判定する(K12)。そして、領域Yの初期化・診断が完了していない場合、コアAは、領域Yの診断未完了領域の初期化・診断を開始する(K13)。そして、コアAは、領域Aの診断未完領域の初期化・診断を完了する(K14)。
次にコアAは、OSの起動処理を実行する(K15)。そして、OSの起動処理が完了すると、コアAは、メモリ3の領域Zの診断完了を共有資源のフラグで確認する(K16)。そして、メモリ3の領域Zの診断が完了していない場合、コアAは制御をK16に戻す。一方、メモリ3の領域Zの診断が完了した場合、コアAはメモリZに関するOS起動処理を実行する(K18)。K12からK15の処理が、オペレーティングシステムの一部を起動し、前記第2の領域のうち初期処理がなされていない領域の初期処理を行い、さらに、前記オペレーティングシステムを起動することの一例である。
一方、コアAによるメモリ3の領域Yの診断の完了判定(K12)からOS起動処理(K15)までの処理と並列に、コアBは、メモリ3の残り領域Zの初期化・診断が完了したか否かを判定する(K19)。そして、領域Zの初期化・診断が完了していない場合には、コアBは、領域Zの診断未完了領域の初期化・診断を開始する(K20)。そして、コアBは、領域Zの診断未完領域の初期化・診断を完了する(K21)。次にコアBは、メモリ3の領域Zの診断完了を共有資源のフラグに記録する(K22)。K12からK14の処理、K19からK21の処理は、前記残り領域の前記初期処理が終了していない場合に、並行して前記残り領域の初期処理を実行することの一例である。また、K19からK21の処理は、一方の演算処理部による前記オペレーティングシステムの起動時に、前記主記憶部の残りの領域の初期処理が終了していない場合に、前記残りの領域の初期処理を実行することの一例である。このような図8、図9の処理によれば、例えば、コアA、コアBは、F1、F18等の処理によって、残り領域(Y、あるいZ)の初期化・診断が完了していない場合に、相手コアの処理と並行して残り領域の初期化・診断を行う(K13、K14、K20、K21)。したがって、複数コアがメモリ帯域を効率的に利用しつつ、起動処理を並列に実行することにより、早期にOSを起動できる。
以上述べたように、実施形態2によれば、コアBは、ファームウェアの実行により、領域Yと領域Zの初期化・診断を実行しつつ、所定間隔ごとに診断完了済み領域の途中情報を共有資源に記録する。そして、OSの起動が可能となったときに、コアBはファームウェアの処理を終了し、OSによる制御へ移行する。したがって、OSを起動するコアAは、領域Yの初期化・診断が完了する前、つまり実施形態1よりも早期に、少なくともOSの一部を起動できる。このような状態でOSを起動するコアA、コアBは、OS起動中に、OSの処理にしたがって、メモリ3の残り領域の初期化・診断が完了しているか否かを判定する。
例えば、図9では、コアAは、OSに制御が移行後、領域Yの初期化・診断が完了していないと判断した場合には、領域Yの初期化・診断を行って、OS起動処理を実行する。また、コアBは、制御をOSに移行した後、領域Zの診断が完了していない場合には、領域Zの初期化・診断を行う。したがって、実施形態2の処理では、CPU1(コアA、コアB)は、実施形態1よりも少なくともOSの一部を早期に起動できるとともに、OSの
起動中に、あるいはOSの起動後に、初期化・診断未完了の領域を初期化・診断できる。
起動中に、あるいはOSの起動後に、初期化・診断未完了の領域を初期化・診断できる。
また、実施形態2によれば、コアAとコアBとは、残り領域(Y、Z)の初期化・診断が完了していない場合に、それぞれ互いに相手の処理と並行して残り領域の初期化・診断を実行できる。例えば、コアAによるK13、K14、K15の処理は、コアBによるK20、K21の処理と並行して実行される。
<実施形態3>
図10および図11を参照して、実施形態3に係る情報処理装置の処理を説明する。実施形態3では、パーソナルコンピュータ、サーバ等に搭載されるOS起動時の処理を説明する。図10は、実施形態3の情報処理装置起動時のブート手順を例示する図である。実施形態3では、電源投入、あるいはリセット等の操作により、例えば、CPU1(例えば、コアB)は、Read Only Memory(ROM)に格納されたファームウェア(例えば、BIOS)を起動する。コアBは、ファームウェアを実行することにより、CPU1自身および内部バス7を通じて接続されるメモリコントローラ2、I/Oコントローラ4等にアクセスして、様々な確認処理、情報の取得等を実行する。さらに、コアAは、ファームウェアによりPOST処理を実行し、メモリおよび周辺機器の検出、初期化、および設定等を行う。
図10および図11を参照して、実施形態3に係る情報処理装置の処理を説明する。実施形態3では、パーソナルコンピュータ、サーバ等に搭載されるOS起動時の処理を説明する。図10は、実施形態3の情報処理装置起動時のブート手順を例示する図である。実施形態3では、電源投入、あるいはリセット等の操作により、例えば、CPU1(例えば、コアB)は、Read Only Memory(ROM)に格納されたファームウェア(例えば、BIOS)を起動する。コアBは、ファームウェアを実行することにより、CPU1自身および内部バス7を通じて接続されるメモリコントローラ2、I/Oコントローラ4等にアクセスして、様々な確認処理、情報の取得等を実行する。さらに、コアAは、ファームウェアによりPOST処理を実行し、メモリおよび周辺機器の検出、初期化、および設定等を行う。
実施形態3では、メモリ3の初期化・診断処理において、まず、メモリ3の一部、すなわち、ブートストラップローダの起動のための領域X1の初期化・診断が完了する。すると、ファームウェアを実行するコアBは共有資源上のフラグ、あるいは、コア間非同期割り込み等の手段により、コアAからブートストラップローダをロードし、起動する。なお、コアBは、そのまま全メモリの初期化・診断を続行するとともに、共有資源に所定間隔ごとに初期化・診断が完了した完了済領域の途中情報を記録して行く。
そして、コアAは、領域X2の初期化・診断が完了したと判断すると、ハードディスクのブートセクタのIPLを領域X2にロードし、領域X2上のIPLのエントリポイントにジャンプする。さらに、コアAは、IPLを起動すると、共有資源への記録から、カーネルローダ起動のための領域X3の初期化・診断が完了したか否かを判定する。そして、コアAは、共有資源への記録からカーネルロード起動のための領域X3の初期化・診断が完了したか否かを判定する。
そして、コアAは、領域X3の初期化・診断が完了したと判断すると、ハードディスクのハードディスク上の所定領域(例えば、ルートディレクトリ中)のカーネルローダを領域X3にロードし、領域X3上のカーネルローダのエントリポイントにジャンプする。さらに、コアAは、カーネルローダを起動すると、共有資源への記録から、カーネルイメージロードのための領域X4の初期化・診断が完了したか否かを判定する。
そして、コアAは、領域X4の初期化・診断が完了したと判断すると、ハードディスク上の所定領域(例えば、ルートディレクトリ中)のカーネルイメージを領域X4にロードし、領域X4上のカーネルのエントリポイントにジャンプする。さらに、コアAは、カーネルをロードし、エントリポイントにジャンプすると、共有資源への記録から、カーネル起動のための領域X5の初期化・診断が完了したか否かを判定する。
そして、コアAは、領域X5の初期化・診断が完了したと判断すると、カーネルの起動を開始する。すなわち、コアAは、例えば、領域X5についてのページテーブルを設定する。また、コアAは、様々なOSのプロセス、例えば、記憶管理、デバイスの管理等を起動する。
図11は実施形態3に係る情報処理装置の処理を例示するフローチャートである。この処理では、例えば、電源投入、あるいはリセット等の操作により起動される。例えば、CPU1のコアBは、ハードウェアの診断を開始する(F1)。そして、コアBは、メモリ3の領域X1の診断を完了する(F32)。領域X1は、例えば、ブートストラップローダを起動可能な容量のメモリ3の領域である。
すると、コアBは、例えば、コア間非同期割り込み等の手段により、コアAがブートストラップローダを起動するように指示する。すると、コアAは、ブートストラップローダを領域X1にロードし、領域X1上のブートストラップローダのエントリポイントにジャンプする。この処理で、コアAはブートストラップローダを起動する(F33)。
次に、コアAは、IPLを起動するためのメモリ3の領域X2の初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F34)。そして、IPLの起動が可能である場合、コアAは、IPLを領域X2にロードし、そのエントリポイントにジャンプすることで、IPLを起動する(F35)。
次に、コアAは、カーネルローダを起動するためのメモリ3の領域X3の初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F36)。そして、カーネルローダの起動が可能である場合、コアAは、カーネルローダを領域X3にロードし、そのエントリポイントにジャンプすることで、カーネルローダを起動する(F37)。
次に、コアAは、カーネルイメージをロードするためのメモリ3の領域X4の初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F38)。そして、カーネルイメージのロードが可能である場合、コアAは、カーネルイメージを領域X4にロードする(F39)。
次に、コアAは、カーネルを起動するためのメモリ3の領域Yの初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F40)。そして、カーネルの起動が可能である場合、コアAは、カーネルのエントリポイントにジャンプすることで、カーネルを起動する(F41)。
一方、コアAによるブートストラップローダの起動(F33)からカーネル起動処理(F41)までの処理と並列に、コアBは、メモリ3の残り領域の診断を開始する(F42)。次にコアBは、メモリ3の残り領域の診断完了の途中情報を所定間隔で共有資源に記録する(F43)。そして、コアBは、残り領域の初期化・診断が終了したか否かを判定する。残り領域の初期化・診断が終了していない場合、コアBは制御をF42に戻す。また、残り領域の初期化・診断が終了した場合、コアBは処理を終了する。
以上述べたように、実施形態3の情報処理装置のCPU1、例えば、コアBは、メモリ3の領域の初期化・診断に伴い、診断完了の途中情報を所定間隔で共有資源に記録する。一方、コアAは、共有資源に記録された診断完了の途中情報から、ブートストラップローダ、IPL、カーネルローダ等の起動の可否を判断し、メモリ3の初期化・診断と並列に、ブートストラップローダ、IPL、カーネルローダ等を起動する。さらに、コアAは、カーネルイメージロードの可否、カーネルの起動の可否を判定し、カーネルイメージのロード、カーネルの起動を実行する。したがって、実施形態3の情報処理装置は、実施形態1、2よりもさらに細かく、ファームウェア、複数段階のブートプログラムの起動の可否を判定し、メモリ3の初期化・診断と並列するファームウェア、複数段階のブートプログラムを起動する処理を早期に開始できる。
なお、実施形態3では、ハードウェアの初期化・診断、メモリ3の領域X1の初期化・診断と、初期化・診断完了による相手コアへの通知をコアBが行った。しかし、これらの処理をコアAが行ってもよいし、コアAとコアBが連携して行ってもよい。
<実施形態4>
図12、および図13を参照して、実施形態4に係る情報処理装置の処理を説明する。実施形態4では、パーソナルコンピュータ、サーバ等に搭載される他のOS起動時の処理を説明する。図12は、実施形態4の情報処理装置起動時のブート手順を例示する図である。実施形態4の情報処理装置でも、電源投入、あるいはリセット等の操作により、例えば、CPU1(例えば、コアB)は、ROM8に格納されたファームウェア(例えば、BIOS)を起動する。これらの処理は、実施形態3と同様である。
図12、および図13を参照して、実施形態4に係る情報処理装置の処理を説明する。実施形態4では、パーソナルコンピュータ、サーバ等に搭載される他のOS起動時の処理を説明する。図12は、実施形態4の情報処理装置起動時のブート手順を例示する図である。実施形態4の情報処理装置でも、電源投入、あるいはリセット等の操作により、例えば、CPU1(例えば、コアB)は、ROM8に格納されたファームウェア(例えば、BIOS)を起動する。これらの処理は、実施形態3と同様である。
実施形態4では、ブートプログラムは、例えば、STAGE 1、STAGE 2の2段階に分かれ
ている。ただし、実施形態4において、ブートプログラムの段階が2段階に限定される訳ではない。また、実施形態4でも実施形態3と同様、情報処理装置のCPU1、例えば、コアBは、メモリ3の領域の初期化・診断に伴い、診断完了の途中情報を所定間隔で共有資源に記録する。一方、コアAは、共有資源に記録された診断完了の途中情報から、STAGE 1、STAGE 2の起動可否を判断し、順次STAGE 1、STAGE 2を起動する。さらに、コアAは、カーネルイメージロードの可否、カーネルの起動の可否を判定し、カーネルイメージのロード、カーネルの起動を実行する。
ている。ただし、実施形態4において、ブートプログラムの段階が2段階に限定される訳ではない。また、実施形態4でも実施形態3と同様、情報処理装置のCPU1、例えば、コアBは、メモリ3の領域の初期化・診断に伴い、診断完了の途中情報を所定間隔で共有資源に記録する。一方、コアAは、共有資源に記録された診断完了の途中情報から、STAGE 1、STAGE 2の起動可否を判断し、順次STAGE 1、STAGE 2を起動する。さらに、コアAは、カーネルイメージロードの可否、カーネルの起動の可否を判定し、カーネルイメージのロード、カーネルの起動を実行する。
図13は実施形態4に係る情報処理装置の処理を例示するフローチャートである。例えば、電源投入、あるいはリセット等の操作により、CPU1のコアBは、ハードウェアの診断を開始する(F1)。そして、コアBは、メモリ3の領域X11の診断を完了する(F52)。領域X11は、例えば、STAGE 1を起動可能な容量のメモリ3の領域である。
すると、コアBは、例えば、コア間非同期割り込み等の手段により、コアAがSTAGE 1
を起動するように指示する。すると、コアAは、STAGE 1を領域X11にロードし、領域
X11上のSTAGE 1のエントリポイントにジャンプする。この処理によって、コアAはSTAGE 1を起動する(F53)。
を起動するように指示する。すると、コアAは、STAGE 1を領域X11にロードし、領域
X11上のSTAGE 1のエントリポイントにジャンプする。この処理によって、コアAはSTAGE 1を起動する(F53)。
次に、コアAは、STAGE 2の先頭セグメントを起動するためのメモリ3の領域X12の
初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F54)。そして、STAGE 2の先頭セグメントの起動が可能である場合、コアAは、STAGE 2の先頭セグメントを領域X12にロードし、そのエントリポイントにジャンプすることで、STAGE 2の先頭セグメントを起動する(F55)。
初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F54)。そして、STAGE 2の先頭セグメントの起動が可能である場合、コアAは、STAGE 2の先頭セグメントを領域X12にロードし、そのエントリポイントにジャンプすることで、STAGE 2の先頭セグメントを起動する(F55)。
次に、コアAは、STAGE 2の後続セグメントを起動するためのメモリ3の領域X13の
初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F56)。そして、STAGE 2の後続セグメントの起動が可能である場合、コアAは、STAGE 2の後続セグメントを領域X13にロードし、そのエントリポイントにジャンプすることで、STAGE 2の後続セグメントを起動する(F57)。なお、図13では、STAGE 2の後続セグメントをF56、F57の判定と処理で起動している。しかし、後続セグメントは、複数に分離され、複数回に分けてロード、および起動されてもよい。後続セグメントが複数に分離される場合には、F56、F57に相当する処理が複数回繰り返されることになる。
初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F56)。そして、STAGE 2の後続セグメントの起動が可能である場合、コアAは、STAGE 2の後続セグメントを領域X13にロードし、そのエントリポイントにジャンプすることで、STAGE 2の後続セグメントを起動する(F57)。なお、図13では、STAGE 2の後続セグメントをF56、F57の判定と処理で起動している。しかし、後続セグメントは、複数に分離され、複数回に分けてロード、および起動されてもよい。後続セグメントが複数に分離される場合には、F56、F57に相当する処理が複数回繰り返されることになる。
次に、コアAは、STAGE 2により以下の処理を実行する。すなわち、コアAは、カーネ
ルイメージをロードするためのメモリ3の領域X14の初期化・診断が完了したか否かを
共有資源に記録されたコアBからの通知により判定する(F58)。そして、カーネルイメージのロードが可能である場合、コアAは、カーネルを領域X4にロードする(F59)。なお、実施形態4では、カーネルイメージは、例えば、自己解凍形式で圧縮されてイメージロードされる。そして、次の起動処理では、カーネル自身が自己解凍しつつ、自身のイメージをメモリ3に展開する。
ルイメージをロードするためのメモリ3の領域X14の初期化・診断が完了したか否かを
共有資源に記録されたコアBからの通知により判定する(F58)。そして、カーネルイメージのロードが可能である場合、コアAは、カーネルを領域X4にロードする(F59)。なお、実施形態4では、カーネルイメージは、例えば、自己解凍形式で圧縮されてイメージロードされる。そして、次の起動処理では、カーネル自身が自己解凍しつつ、自身のイメージをメモリ3に展開する。
すなわち、コアAは、カーネルを起動するためのメモリ3の領域Yの初期化・診断が完了したか否かを共有資源に記録されたコアBからの通知により判定する(F60)。そして、カーネルの起動が可能である場合、コアAは、カーネルのエントリポイントにジャンプすることで、カーネルを起動する(F61)。そして、コアAは、カーネル自身によって自己解凍しつつ、カーネルイメージをメモリ3に展開する。
一方、コアAによるSTAGE 1のロードおよび起動(K53)からカーネル起動処理(F
61)までの処理と並列に、コアBは、メモリ3の残り領域の診断を開始する(F42〜F44)。F42からF44の処理は図11と同様であるので、その説明を省略する。
61)までの処理と並列に、コアBは、メモリ3の残り領域の診断を開始する(F42〜F44)。F42からF44の処理は図11と同様であるので、その説明を省略する。
以上述べたように、実施形態4の情報処理装置のCPU1、例えば、コアBは、メモリ3の領域の初期化・診断に伴い、診断完了の途中情報を所定間隔で共有資源に記録する。一方、コアAは、共有資源に記録された診断完了の途中情報から、STAGE 1、STAGE 2の起動の可否を判断し、メモリ3の初期化・診断と並列に、STAGE 1、STAGE 2をロードし、起動する。さらに、コアAは、カーネルイメージロードの可否、カーネルの起動の可否を判定し、カーネルイメージのロード、カーネルの起動を実行する。
なお、実施形態4でも実施形態3と同様、ハードウェアの初期化・診断、メモリ3の初期化・診断と、初期化・診断完了による相手コアへの通知をコアBが行った。しかし、これらの処理をコアAが行ってもよいし、コアAとコアBが連携して行ってもよい。
以上述べたように、実施形態4の情報処理装置は、実施形態3と同様、実施形態1、2よりもさらに細かく、ファームウェア処理指示、複数段階のブートプログラムの起動可否判定を行う。これにより、メモリ3の初期化・診断処理と複数段階のブートプログラムを起動する処理をさらに細かく並列に行うことができ、ブートプログラムを早期に開始し、システム全体として起動時間を短縮することができる。
<コンピュータが読み取り可能な記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラム、ファームウェア等をコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラム、ファームウェア等をコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、Compact Disk(CD)−ROM、CD−R/W、(DVD)、ブルーレイディスク、Digital Audio Tape(DAT)、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、Solid State Drive (SSD)は、コンピュータ等から取り
外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
1 CPU
2 メモリコントローラ
3 メモリ
4 I/Oコントローラ
5 SRAM
6 I/O
7 内部バス
8 ROM
2 メモリコントローラ
3 メモリ
4 I/Oコントローラ
5 SRAM
6 I/O
7 内部バス
8 ROM
Claims (10)
- 複数の演算処理部と、
前記複数の演算処理部のそれぞれからアクセス可能な主記憶部と、
前記複数の演算処理部のそれぞれからアクセス可能な入出力部と、を備え、
前記複数の演算処理部のうちの少なくともいずれかの演算処理部がオペレーティングシステムの前記入出力部からのローディングに使用される前記主記憶部の第1の領域に対して初期化および診断処理の少なくとも一方を含む初期処理を実行し、
前記第1の領域に対する初期処理が完了すると、前記複数の演算処理部のうちの一方の演算処理部が前記入出力部から前記オペレーティングシステムを前記第1の領域にローディングし、
前記複数の演算処理部のうちの他方の演算処理部は、前記一方の演算処理部の処理中に、前記主記憶部のうち初期処理がなされていない残り領域の前記初期処理を開始し、
前記ローディングが完了すると、前記一方の演算処理部は、前記オペレーティングシステムの起動を開始する情報処理装置。 - 前記複数の演算処理部は、前記残り領域の前記初期処理が終了していない場合に、並行して前記残り領域の初期処理を実行する請求項1に記載の情報処理装置。
- 前記複数の演算処理部の間で前記主記憶部の初期化処理の完了範囲をさらに通知するためのインターフェース部をさらに備える請求項1または2に記載の情報処理装置。
- 前記一方の演算処理部は、前記オペレーティングシステムの少なくとも一部の起動が可能な第2の領域に対する初期処理が完了すると、前記オペレーティングシステムを起動し、
前記他方の演算処理部は、前記オペレーティングシステムの少なくとも一部の起動が可能な領域に対する初期処理が完了すると、前記初期処理を終了し、前記一方の演算処理部による前記オペレーティングシステムの起動時に、前記主記憶部の残りの領域の初期処理が終了していない場合に、前記残りの領域の初期処理を実行する請求項1から3のいずれか1項に記載の情報処理装置。 - 前記一方の演算処理部は、前記オペレーティングシステムの一部を起動し、前記第2の領域のうち初期処理がなされていない領域の初期処理を行い、さらに、前記オペレーティングシステムを起動する請求項4に記載の情報処理装置。
- 複数の演算処理部を有するコンピュータで実行可能なプログラムであって、
前記複数の演算処理部のうちの少なくともいずれかの演算処理部に、オペレーティングシステムの前記入出力部からのローディングに使用される前記主記憶部の第1の領域に対して初期化および診断処理の少なくとも一方を含む初期処理を実行させ、
前記第1の領域に対する初期処理が完了すると、前記複数の演算処理部のうちの一方の演算処理部に、前記入出力部から前記オペレーティングシステムを前記第1の領域にローディングさせ、
前記複数の演算処理部のうちの他方の演算処理部に、前記一方の演算処理部の処理中に、前記主記憶部のうち初期処理がなされていない残り領域の前記初期処理を開始させ、
前記ローディングが完了すると、前記一方の演算処理部に前記オペレーティングシステムの起動を開始させるプログラム。 - 前記残り領域の前記初期処理が終了していない場合に、前記複数の演算処理部に、並行して前記残り領域の初期処理を実行させる請求項6に記載のプログラム
- 前記複数の演算処理部に、前記複数の演算処理部の間のインターフェース部を介して、前記主記憶部の初期化処理の完了範囲を通知させる請求項6または7に記載のプログラム。
- 前記一方の演算処理部に、前記オペレーティングシステムの少なくとも一部の起動が可能な第2の領域に対する初期処理が完了すると、オペレーティングシステムを起動させ、
前記他方の演算処理部に、前記オペレーティングシステムの少なくとも一部の起動が可能な領域に対する初期処理が完了すると前記初期処理を終了させ、前記一方の演算処理部による前記オペレーティングシステムの起動時に、前記主記憶部の残りの領域の初期処理が終了していない場合に、前記残りの領域の初期処理を実行させる請求項6から8のいずれか1項に記載のプログラム。 - 前記一方の演算処理部に、前記オペレーティングシステムの一部を起動させ、前記第2の領域のうち初期処理がなされていない領域の初期処理を行わせ、さらに、前記オペレーティングシステムを起動させる請求項9に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015060754A JP2016181106A (ja) | 2015-03-24 | 2015-03-24 | 情報処理装置、およびプログラム |
US15/054,242 US20160283250A1 (en) | 2015-03-24 | 2016-02-26 | Boot controlling processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015060754A JP2016181106A (ja) | 2015-03-24 | 2015-03-24 | 情報処理装置、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016181106A true JP2016181106A (ja) | 2016-10-13 |
Family
ID=56975351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015060754A Pending JP2016181106A (ja) | 2015-03-24 | 2015-03-24 | 情報処理装置、およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160283250A1 (ja) |
JP (1) | JP2016181106A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019204403A (ja) * | 2018-05-25 | 2019-11-28 | 富士通株式会社 | 情報処理装置,ロードプログラムおよびロード方法 |
WO2020208915A1 (ja) * | 2019-04-12 | 2020-10-15 | 株式会社日立製作所 | 制御方法および制御装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017122997A (ja) * | 2016-01-06 | 2017-07-13 | 富士通株式会社 | 情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム |
TWI646551B (zh) * | 2017-05-10 | 2019-01-01 | 慧榮科技股份有限公司 | 儲存裝置、記錄方法以及預載方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070214347A1 (en) * | 2006-03-13 | 2007-09-13 | Rothman Michael A | Method and apparatus for performing staged memory initialization |
US9658858B2 (en) * | 2013-10-16 | 2017-05-23 | Xilinx, Inc. | Multi-threaded low-level startup for system boot efficiency |
-
2015
- 2015-03-24 JP JP2015060754A patent/JP2016181106A/ja active Pending
-
2016
- 2016-02-26 US US15/054,242 patent/US20160283250A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019204403A (ja) * | 2018-05-25 | 2019-11-28 | 富士通株式会社 | 情報処理装置,ロードプログラムおよびロード方法 |
JP7067270B2 (ja) | 2018-05-25 | 2022-05-16 | 富士通株式会社 | 情報処理装置,ロードプログラムおよびロード方法 |
WO2020208915A1 (ja) * | 2019-04-12 | 2020-10-15 | 株式会社日立製作所 | 制御方法および制御装置 |
JP2020173692A (ja) * | 2019-04-12 | 2020-10-22 | 株式会社日立製作所 | 制御方法および制御装置 |
JP7185587B2 (ja) | 2019-04-12 | 2022-12-07 | 株式会社日立製作所 | 制御方法および制御装置 |
Also Published As
Publication number | Publication date |
---|---|
US20160283250A1 (en) | 2016-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6089349B2 (ja) | マルチコアアーキテクチャでのリソース分離を支援するための方法およびシステム | |
JP6399916B2 (ja) | 情報処理装置およびその制御方法 | |
JP5911892B2 (ja) | ハイバネイトからの多段レジューム | |
US10481916B2 (en) | Computer device and memory startup method of computer device | |
JP2016181106A (ja) | 情報処理装置、およびプログラム | |
JP2016508647A5 (ja) | ||
US9477409B2 (en) | Accelerating boot time zeroing of memory based on non-volatile memory (NVM) technology | |
US8825992B2 (en) | Processor-implemented method for booting a computing system by simultaneously performing hardware initialization and boot image transmission | |
TWI514263B (zh) | 用於多核心處理單元的啟動載入處理器指派的技術 | |
JP2008269288A (ja) | 起動システム、起動プログラムおよびその方法。 | |
JP2007148582A (ja) | タスク実行制御装置、タスク実行制御方法、及びプログラム | |
TWI517047B (zh) | 用於更快速開機之釘選開機資料 | |
US20150149751A1 (en) | Cpu-based measured boot | |
CN114253749A (zh) | 一种交互方法、装置及电子设备和存储介质 | |
WO2022042127A1 (zh) | 一种协程切换的方法、装置及设备 | |
EP2869189A1 (en) | Boot up of a multiprocessor computer | |
US20100017588A1 (en) | System, method, and computer program product for providing an extended capability to a system | |
WO2017080383A1 (zh) | 加载软件模块的方法和装置 | |
JP5609333B2 (ja) | 起動処理方法、情報処理装置、起動処理プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体 | |
CN109213449B (zh) | 一种基于国产固件的raid驱动实现系统及设备 | |
JP6645348B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
CN113885949A (zh) | 一种快速开机方法及系统 | |
WO2023287407A1 (en) | Hardware component initialization | |
JP2015118493A (ja) | トレース装置及びトレースプログラム | |
JP5332716B2 (ja) | 起動制御方法、情報処理装置及びプログラム |