(57)【要約】【課題】マルチコアによる複数ＯＳの起動において、ＲＯＭ容量を削減し、起動を高速化する。【解決手段】  記憶部１０４は、実行部１０２ａ（ＣＰＵコア１）、実行部１０３ａ（ＣＰＵコア２）に共通のブートプログラムを格納する。制御部１０１は、記憶部１０４に格納されたブートプログラムを記憶部１０５に展開する。仮想メモリ管理部１０２ｂは、実行部１０２ａの仮想アドレスを、記憶部１０５にアクセス可能な物理アドレスに変換し、仮想メモリ管理部１０３ｂは、実行部１０３ａの仮想アドレスを、記憶部１０５にアクセス可能な物理アドレスに変換し、実行部１０２ａ、１０３ｂがブートプログラムを実行する。【選択図】図１
2014081781.tif 000002
【特許請求の範囲】
【請求項１】
異なる制御プログラム上で動作する複数の処理手段と、前記複数の処理手段が共通に使用するブートプログラムを格納した第１の記憶手段と、前記複数の処理手段に設定された同一の仮想アドレスにより参照される第２の記憶手段を備え、前記第２の記憶手段に前記ブートプログラムを格納したことを特徴とする情報処理システム。
【請求項２】
前記第１の記憶手段に格納された前記ブートプログラムを読み出し、前記第２の記憶手段に書き込む制御手段を備えたことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記各処理手段は、前記仮想アドレスを物理アドレスに変換する変換手段と、前記変換された物理アドレスにより指定される前記第２の記憶手段の所定データを用いて前記ブートプログラムを実行する実行手段を備えたことを特徴とする請求項１記載の情報処理システム。
【請求項４】
前記各処理手段用の制御プログラムが格納されたデバイスを備え、前記実行手段は前記ブートプログラムを実行する際に、前記変換された物理アドレスにより指定される前記第２の記憶手段が指示するデバイスを用いて実行することを特徴とする請求項３記載の情報処理システム。
【請求項５】
前記複数の処理手段の内の一つの処理手段が、前記第１の記憶手段に格納された前記ブートプログラムを読み出し、前記第２の記憶手段に書き込むことを特徴とする請求項１または２記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、起動を高速化した情報処理システムに関する。
【背景技術】
【０００２】
従来、マルチコアシステムにおいて、複数のＯＳを高速に起動する種々の方法が提案されている。例えば、ＯＳのデータを分割してＲＡＭに読み込んでいき、読み込みが完了した部分より随時実行することで、高速に起動する手法がある（特許文献１）。また、共有資源のハードウェア初期化を、先行して実行することで、複数ＯＳの起動を高速化する方法もある（特許文献２）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、上記した従来の手法では、新たなプログラムが必要となるため、プログラムを格納するＲＯＭ容量のサイズが増加し、起動が遅くなるという問題がある。
【０００４】
本発明は上記した課題に鑑みてなされたもので、
本発明の目的は、マルチコアによる複数ＯＳの起動において、ＲＯＭ容量を削減し、起動を高速化した情報処理システムを提供することにある。
【課題を解決するための手段】
【０００５】
本発明は、異なる制御プログラム上で動作する複数の処理手段と、前記複数の処理手段が共通に使用するブートプログラムを格納した第１の記憶手段と、前記複数の処理手段に設定された同一の仮想アドレスにより参照される第２の記憶手段を備え、前記第２の記憶手段に前記ブートプログラムを格納したことを最も主要な特徴とする。
【発明の効果】
【０００６】
本発明によれば、ＲＯＭ容量を削減できるので、メモリコストを削減することができ、またＲＯＭからＲＡＭへロードするプログラムのサイズを削減できるので、ＯＳの起動時間を短縮することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施例の情報処理システムの構成を示す。
【図２】本発明の情報処理システムの起動シーケンスを示す。
【図３】実行するブートプログラムを説明する図である。
【図４】本発明のメモリ配置を示す。
【図５】一般的なメモリ配置を示す。
【発明を実施するための形態】
【０００８】
以下、発明の実施の形態について図面により詳細に説明する。本発明は、マルチコアのシステムにおける起動処理に際して、仮想メモリ管理の仮想アドレスを使用し、ほとんどのプログラムを共通化することによってＲＯＭ容量を削減している。ＲＯＭ容量を削減することで、ＲＯＭからＲＡＭへの展開を高速化し、ＯＳの起動を高速化する。
【実施例１】
【０００９】
図１は、本発明の実施例の情報処理システムの構成を示す。図１において、１０１は制御部（ｓｕｂＣＰＵ）、１０２は実行部１０２ａ（ＣＰＵコア１）と仮想メモリ管理部（ＭＭＵ１）１０２ｂを有する第１の処理部、１０３は実行部１０３ａ（ＣＰＵコア２）と仮想メモリ管理部（ＭＭＵ２）１０３ｂを有する第２の処理部、１０４は記憶部１（ＲＯＭ）、１０５は記憶部２（ＲＡＭ）、１０６はデバイス（ＨＤＤ1）、１０７はデバイス（ＨＤＤ２）、１０８はバスである。上記した構成例では処理部（ＣＰＵコア）が２個であるが、本発明はこれに限定されず、処理部（ＣＰＵコア）数は２個以上でもよい。また、デバイスはＨＤＤに限定されず、他のものでもよい。
【００１０】
記憶部１（ＲＯＭ）１０４は、実行部１０２ａ、実行部１０３ａに共通のブートプログラムを格納し、記憶部２（ＲＡＭ）１０５は、ブートプログラムを展開し、実行部１０２ａ、実行部１０３ａの実行データを配置する。制御部（ｓｕｂＣＰＵ）１０１は、記憶部１０４に格納されたブートプログラムを、記憶部１０５に展開（コピー）する。仮想メモリ管理部１（ＭＭＵ１）１０２ｂは、実行部１０２ａの仮想アドレスを、記憶部１０５にアクセス可能な物理アドレスに変換し、仮想メモリ管理部２（ＭＭＵ２）１０３ｂは、実行部１０３ａの仮想アドレスを、記憶部１０５にアクセス可能な物理アドレスに変換する。実行部１０２ａ、１０３ａは、それぞれプログラムを実行する演算回路である。ＨＤＤ１０６は、実行部１０２ａ（ＣＰＵコア１）用のデバイスであり、ＣＰＵコア１用のＯＳ１（制御プログラム）が格納され、ＨＤＤ１０７は、実行部１０３ａ（ＣＰＵコア２）用のデバイスであり、ＣＰＵコア２用のＯＳ２（制御プログラム）が格納されている。制御部（ｓｕｂＣＰＵ）１０１は、記憶部（ＲＯＭ）１０４に格納されているブートプログラムを記憶部（ＲＡＭ）１０５に展開し（ａ）、展開されたブートプログラムを実行部１０２ａ、実行部１０３ａで実行する（ｂ）。
【００１１】
本発明の情報処理システムでは、バス１０８上に、制御部１０１、マルチコアのＣＰＵコア１０２ａ、ＣＰＵコア１０３ａ、ブートプログラムが格納されているＲＯＭ１０４、ブートプログラムを展開するＲＡＭ１０５、デバイス１０６、１０７が配置されていて、いずれのＣＰＵコア１０２ａ、ＣＰＵコア１０３ａからも、同一の仮想アドレスでアクセスする構成を採っている。
【００１２】
本発明では、仮想メモリ管理部（Ｍemory  Ｍanagement  Ｕnit）１０２ｂ、１０３ｂを用いて、複数のＣＰＵコア１０２ａ、ＣＰＵコア１０３ａで使用する共有資源（ＲＡＭ１０５、デバイス１０６、１０７）を分離し、起動処理を行うブートプログラムは、複数のＣＰＵコア１０２ａ、ＣＰＵコア１０３ａに共通のものを使用する（ただし、仮想メモリ管理部の設定に関しては、異なる設定を行うため別々のプログラムとなる）。
【００１３】
このように、起動処理のプログラムの大部分を共通化することにより、ＲＯＭ１０４の容量を削減することができる。ＲＯＭ１０４の容量が削減できるので、ブート時のＲＯＭ１０４からＲＡＭ１０５への展開を高速化することができる。
【００１４】
図２は、本発明の情報処理システムの起動シーケンスを示す。まず、制御部１０１が実行され、制御部１０１がＲＯＭ１０４に格納されているブートプログラムを読み出し（２０１）、ＲＡＭ１０５へロードする（２０２）。ここでロードするブートプログラムは、実行部１０２ａ、実行部１０３ａが共通で使用する同一のプログラムで構成する。
【００１５】
ブートプログラムのロードが完了した後、実行部１０２ａ、実行部１０３ａを起動し（２０３、２０４）、ロードしたブートプログラムを実行させる。実行部１０２ａ、実行部１０３ａでは、実行データ（命令）を読み出し（２０５、２０９）、実行部１０２ａ、実行部１０３ａの仮想アドレスを設定し（２０６、２１０）、設定された仮想アドレスを物理アドレスに変換し（２０７、２１１）、その後、同一のブートプログラムを実行し、各実行部でブートプログラムを動作させる（２０８、２１２）。ここで、ブートプログラムの大部分を同一のプログラムとすることができるため、必要なＲＯＭ１０４のサイズを小さくできる。
【００１６】
図２に示すシーケンスが完了すると、実行部１０２ａ、実行部１０３ａはブートプログラムの実行を開始する。図３は、実行するブートプログラムを説明する図である。まず、キャッシュの有効化やＣＰＵレジスタの設定のためにＣＰＵを初期化する（ステップ３０１、４０１）。この処理は、マルチコアであれば同じ命令で実行可能である。次いで、実行部１０２ａ（ＣＰＵコア１）用、実行部１０３ａ（ＣＰＵコア２）用のデバイスを初期化し（ステップ３０２、４０２）、実行部１０２ａ（ＣＰＵコア１）用のデバイス、実行部１０２ａ（ＣＰＵコア１）用のデータを使用したブートプログラムを実行し（ステップ３０３）、実行部１０３ａ（ＣＰＵコア２）用のデバイス、実行部１０３ａ（ＣＰＵコア２）用のデータを使用したブートプログラムを実行する（ステップ４０３）。
【００１７】
ステップ３０２〜３０３とステップ４０２〜４０３は、通常、アドレスが違うものを使用するため別のプログラムとなってしまうが、後述する本発明のメモリ配置とすることで、同一のプログラムを配置できる。従って、ステップ３０２とステップ４０２、ステップ３０３とステップ４０３を同一のプログラムとすることができるため、ＲＯＭ容量を少なくすることができる。
【００１８】
図４は、仮想メモリ管理による仮想アドレスの設定後のメモリ配置を示す。５０１はＣＰＵコア１の仮想アドレス空間、５０２はＣＰＵコア２の仮想アドレス空間、５０３は物理アドレス空間である。また、物理アドレス空間におけるデータ（ＣＰＵコア１用）、データ（ＣＰＵコア２用）は、ブートプログラム実行時に参照されるデータであり、デバイス（ＣＰＵコア１用）、デバイス（ＣＰＵコア２用）は、ブートプログラム実行時に参照されるデバイス指定領域である。
【００１９】
実際のメモリアクセスを行うためのアドレスが物理アドレスであり、ＣＰＵコア１とＣＰＵコア２では、仮想アドレスを設定している。メモリの先頭（下）にブートプログラムがロードされている。仮想アドレスの設定は、ＣＰＵコア１とＣＰＵコア２で重ならないよう設定するが、仮想アドレスをみるとＣＰＵコア１、ＣＰＵコア２ともに同じメモリ配置となっている。
【００２０】
仮想アドレスの設定が完了した後に、同一のブートプログラムを実行する。データやデバイスなど、重複できないものは、物理的に分離して設定しているため、別々のアドレスでアクセスする必要がある。本発明では、仮想アドレスを用いることで、ＣＰＵコア１とＣＰＵコア２の同一の仮想アドレスを、別々のデバイスやデータを指定する物理アドレスに変換することにより、同一のブートプログラムを使っても、デバイスとデータの使用をＣＰＵコアごとの領域に割り当てることが可能となる。
【００２１】
図５は、一般的なメモリ配置を示す。図５に示すように、ＣＰＵコア１、ＣＰＵコア２がそれぞれブートプログラムをロードし、実行する構成を採っている。そのため、２つのブートプログラムが必要となり、ＲＯＭのサイズが大きくなる。これに対して、本発明では、このＲＯＭのサイズを削減し、ＲＯＭ１０４からＲＡＭ１０５への展開時間を短縮することで、起動時間の高速化を図っている。
【００２２】
なお、上記した実施例では、ＲＯＭ１０４からＲＡＭ１０５への展開を制御部１０１が実行したが、制御部１０１の代わりに実行部１０２ａまたは１０２ｂが実行するように構成を変更してもよい。
【符号の説明】
【００２３】
１０１  制御部
１０２  第１の処理部
１０３  第２の処理部
１０２ａ、１０３ａ  実行部
１０２ｂ、１０３ｂ  仮想メモリ管理部
１０４  ＲＯＭ
１０５  ＲＡＭ
１０６、１０７  ＨＤＤ
１０８  バス
【先行技術文献】
【特許文献】
【００２４】
【特許文献１】特開２００９−１０４４４３号公報
【特許文献２】特開２００８−１８６１７５号公報
【図１】
2014081781.tif 000003
【図２】
2014081781.tif 000004
【図３】
2014081781.tif 000005
【図４】
2014081781.tif 000006
【図５】
2014081781.tif 000007