(57)【要約】【課題】複数のＯＳを起動するシステムにおいて、ＯＳの起動準備プログラムを格納するＲＯＭ容量を削減する。【解決手段】ＲＯＭ１０１には、ＯＳの改ざん検知を行う起動準備プログラムが、中間コードの形で格納される。命令変換部１０５（１０６）は、実行時に中間コードのプログラムを、ＣＰＵ１０３（１０４）が実行可能な命令に変換する。ＣＰＵ１０３（１０４）は、変換された命令により起動準備プログラムを実行し、改ざんが検知されなければ、ＣＰＵ１０３（１０４）で実行されるＯＳ１０９（１１０）を起動する。【選択図】図１
2014110012.tif 000002
【特許請求の範囲】
【請求項１】
異なる命令を実行する複数の処理手段と、前記各処理手段により実行されるそれぞれ異なる制御プログラムを格納した第１の記憶手段と、前記複数の処理手段が共通に使用する起動準備プログラムを中間コードで格納した第２の記憶手段と、前記中間コードを前記各処理手段の命令に変換する変換手段を備え、前記各処理手段は前記変換された命令を実行し、所定の条件を満たしたとき、前記各処理手段により実行される制御プログラムを起動することを特徴とする情報処理システム。
【請求項２】
前記起動準備プログラムは、前記制御プログラムの改ざんを検知するプログラムであり、前記改ざんが検知されないことを前記所定の条件として満たしたとき、前記制御プログラムを起動することを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記改ざんの検知として、チェックサムを用いることを特徴とする請求項２記載の情報処理システム。
【請求項４】
前記改ざんの検知として、署名検証を用いることを特徴とする請求項２記載の情報処理システム。
【請求項５】
前記各処理手段は、前記中間コードを直接実行することを特徴とする請求項１記載の情報処理システム。
【請求項６】
前記各処理手段により実行される前記制御プログラムを前記中間コードで記述することを特徴とする請求項１記載の情報処理システム。
【請求項７】
前記各処理手段により実行される前記制御プログラムを前記第２の記憶手段に格納することを特徴とする請求項１記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＯＳを起動する情報処理システムに関する。
【背景技術】
【０００２】
従来、正当なプログラムのみを実行させるために、書き換え不可能な不揮発メモリ（ＲＯＭ）を使って、その中のプログラムから開始する手法や、複数のＣＰＵを持つシステムにおいて、まず１つのＣＰＵのみを動作させて、他のＣＰＵが動作できるような環境を作った後に、他のＣＰＵを起動させる手法がある（例えば、特許文献１を参照）。
【０００３】
また、異なる命令を実行するＣＰＵにおいて、中間コードをメモリに保持しておき、実行時に各ＣＰＵの命令に変換しながら実行する手法（ＪａｖａのＪＩＴコンパイルなど）もある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のＯＳを安全に起動するためには、それぞれのＯＳの起動準備（起動対象の改ざんのチェックなど）を行う必要がある。しかし、異なる命令を実行するＣＰＵ上で、複数のＯＳを起動する場合、ＣＰＵに合わせた複数のＯＳの起動準備プログラムを必要とするため、ＲＯＭ容量のサイズが大きくなる問題がある。
【０００５】
本発明は上記した課題に鑑みてなされたもので、
本発明の目的は、複数のＯＳを起動するシステムにおいて、ＯＳの起動準備プログラムを格納するＲＯＭ容量を削減した情報処理システムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、異なる命令を実行する複数の処理手段と、前記各処理手段により実行されるそれぞれ異なる制御プログラムを格納した第１の記憶手段と、前記複数の処理手段が共通に使用する起動準備プログラムを中間コードで格納した第２の記憶手段と、前記中間コードを前記各処理手段の命令に変換する変換手段を備え、前記各処理手段は前記変換された命令を実行し、所定の条件を満たしたとき、前記各処理手段により実行される制御プログラムを起動することを最も主要な特徴とする。
【発明の効果】
【０００７】
本発明によれば、複数のＣＰＵが共通に使用するＯＳの起動準備プログラムを中間コードでＲＯＭに格納しているので、少ないＲＯＭ容量でＯＳの起動準備とＯＳの起動を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施例に係る情報処理システムの構成を示す。
【図２】メモリマップを示す。
【図３】本発明の処理フローチャートを示す。
【図４】中間コードを各ＣＰＵの命令へ変換する方法を説明する図である。
【図５】第１のＣＰＵ用の中間コードの命令変換テーブルを示す。
【図６】第２のＣＰＵ用の中間コードの命令変換テーブルを示す。
【図７】中間コード、オペランドの書式を示す。
【図８】本発明の起動準備方法の処理フローチャートを示す。
【図９】データ配置と中間コードのプログラムを示す。
【発明を実施するための形態】
【０００９】
以下、発明の実施の形態について図面により詳細に説明する。本発明では、ＯＳの起動準備を行うプログラムを中間コードとしてＲＯＭに格納しておき、複数のＣＰＵを持つシステムにおいて、各ＣＰＵで実行できる命令に変換して、２次記憶のＯＳの起動準備を行い、複数のＯＳを起動する。
【実施例１】
【００１０】
図１は、本発明の実施例に係る情報処理システムの構成を示す。図１において、１０１はＲＯＭ（記憶手段）、１０２はＯＳの起動準備プログラム、１０３は第１のＣＰＵ（処理手段）、１０４は第２のＣＰＵ（処理手段）、１０５、１０６は命令変換部、１０７はＲＡＭ、１０８は２次記憶部、１０９は第１のＣＰＵ１０３で実行されるＯＳ（制御プログラム）、１１０は第２のＣＰＵ１０４で実行されるＯＳ（制御プログラム）である。
【００１１】
ＲＯＭ１０１には、ＣＰＵ１０３とＣＰＵ１０４のリセットベクタを割り当て、情報処理システムはパワーオンリセットでＲＯＭ１０１から起動する。ただし、各ＣＰＵは直接ＲＯＭ１０１へはアクセスできず、命令変換部１０５、１０６を介してアクセスする。
【００１２】
ＣＰＵ１０３、１０４が共通に使用するＯＳの起動準備（実施例では、チェックサムによる検証）プログラム１０２は、ＣＰＵ１０３、１０４に依存しない中間コードでＲＯＭ１０１上に配置される。中間コードについては後述する。ＣＰＵ１０３、ＣＰＵ１０４は実行する命令セットが異なるもので構成する。命令変換部１０５、１０６は、中間コードをＣＰＵ１０３とＣＰＵ１０４が実行可能な命令に変換する。
【００１３】
ＲＡＭ１０７は、プログラム実行時に使用するメモリである。各ＣＰＵから見えるメモリマップについては後述する。２次記憶部１０８には、改ざんのチェックを行う対象となるプログラムが配置されている。プログラムの配置場所は２次記憶の先頭から配置される。各ＣＰＵから見えるメモリマップについては後述する。
【００１４】
ＣＰＵ１０３で実行されるＯＳ１０９は、ＣＰＵ１０３の命令形式で格納されるＯＳであり、ＣＰＵ１０４で実行されるＯＳ１１０は、ＣＰＵ１０４の命令形式で格納されるＯＳである。
【００１５】
図２は、メモリマップを示す。メモリマップにある各ＣＰＵのアドレス配置をＣＰＵ１０３とＣＰＵ１０４で、ＣＰＵからのバスの接続をずらして設定する（各ＣＰＵ用のＲＡＭを配置する）ことにより、ＲＡＭ領域を各ＣＰＵで競合なく使用できる。また、改ざん検知プログラムは、ＲＯＭ上では中間コードの形で配置されるが、各ＣＰＵからアクセスすると変換されたプログラムとして読み出させる。
【００１６】
図３は、本発明の処理フローチャートを示す。ステップ１において、ＣＰＵ１０３とＣＰＵ１０４は、リセットベクタが０ｘ００００＿００００に配置して、パワーオンリセット時に改ざん検知プログラムが動作するようにしておく。
【００１７】
ステップ２において、改ざん検知プログラムを実行する際には、ＣＰＵ１０３では命令変換部１０５によって変換された命令を実行する。中間コードの変換方法は後述する。
【００１８】
ステップ３において、改ざん検知プログラムが２次記憶部１０８のプログラムの改ざん検知を行うが、メモリマップ上ではＣＰＵ１０３とＣＰＵ１０４では同じメモリアドレス上に配置するようにする。プログラムとしては同一アドレスになるため、アドレス変換なしで実行が可能である。改ざんの検知方法としては、本実施例では後述するように、チェックサムを用いる。
【００１９】
ステップ４において、ステップ３の改ざん検知プログラムが所定の条件として満たしたとき、つまり、改ざんが検知されなければ、２次記憶部１０８の対応するＯＳを起動する。
【００２０】
中間コードを各ＣＰＵの命令へ変換する方法を、図４（ａ）を用いて説明する。起動では、使用する命令が少ないことから、中間コードで使用する命令数を限定することで変換を効率化する。起動時では、浮動小数点演算などの高度な命令は必要とされず、基本的な命令である下記の命令を中間コードとして定義する。  
・加算命令（減算は２の補数を用いて実現可能なので、加算のみで十分である）
・コピー命令（ハードウエアレジスタの書き込みや、ＲＡＭの初期化に用いる）
・論理演算（ａｎｄ，ｏｒ，ｘｏｒ）（レジスタの初期化を行う際に、特定のビットを操作するために用いる）。
【００２１】
中間コード２０１を、命令変換部１０５、１０６を用いて、対象のＣＰＵ１０３、１０４で実行可能な命令２０２に変換する。図４（ｂ）は、中間コードをＣＰＵの命令へ変換する方法を示す。変換方法としては、中間コードに対応する変換命令をルックアップテーブル１０５ａで保持しておき、ＣＰＵ１０３からのＲＯＭ１０１へのアクセスによって、アクセス対象の中間コードをＲＯＭ１０１から読み出し、読み出された中間コードを、ルックアップテーブル１０５ａを参照してＣＰＵ１０３の命令へ変換し、内部ＲＡＭ１０５ｂに展開し、変換後の命令をＣＰＵ１０３に返す。
【００２２】
図５は、第１のＣＰＵ用の中間コードの命令変換テーブルを示し、図６は、第２のＣＰＵ用の中間コードの命令変換テーブルを示す。実施例では、１つの中間コードを１６ワード（１ワード＝４バイト）のＣＰＵの命令に変換する。ＣＰＵの命令は固定長サイズで変換することで、分岐などの対応が可能となる。変換後の命令が１６ワードに満たない場合には、処理実行後に次命令へのジャンプ命令を挿入する。
【００２３】
図７（ａ）、（ｂ）は、中間コードの書式を示す。図７（ｃ）は、オペランドの書式を示す。１語の長さは６４ビット、オペコードは４ビット、オペランド１は３０ビット、オペランド２は３０ビットである。先に示した中間コードでは、オペランドで２種類のデータを指定できるものがある。そのため、各オペランドを３０ビットずつとして、すべての命令を表現できるビット幅とする。
【００２４】
３２ビットアーキテクチャでは、メモリ空間が４ＧＢとなるが、３０ビットでは全領域をカバーすることができない。しかし、起動においては、必要なアドレスへのアクセスができればよいが、ＲＯＭやＲＡＭのアドレスが連続しているとは限らない。そのため、ｔｙｐｅに２ビットを割り当て、２８ビットの領域を４つ指定することで、起動に必要なメモリ空間へのアクセスを行う。ｔｙｐｅには、メモリマップ上の領域タイプを指定し、各ベースアドレスからのオフセットを定数で指定する。
【００２５】
・００：ＲＯＭ＿ＤＡＴＡ相対
・０１：ＲＡＭ＿ＤＡＴＡ相対
・１０：ＳＴＯＲＡＧＥ＿ＤＡＴＡ相対
上記のメモリ領域タイプと２８ビットのオフセットで、領域タイプごとに２５６ＭＢまでのアドレス領域を確保する。
【００２６】
図８は、本発明の起動準備方法の処理フローチャートを示す。上記した中間コードを用いて、チェックサムを用いた起動準備方法の例を示す。図３の処理フローチャートで示したステップ３の位置に該当する。
【００２７】
プログラムの開始アドレスを取得し（ステップ１０）、読み出し完了サイズ、チェックサム値を初期化し（ステップ１１、１２）、起動対象のＯＳを３２ｂｉｔ単位で桁上げなしで加算し（ステップ１３）、その結果を比較する（ステップ１６）。すなわち、ＳＴＯＲＡＧＥ＿ＤＡＴＡに予め計算したチェックサム値を格納しておき、起動準備の実行でチェックサムを計算した結果と比較する（ステップ１６）。予め計算したチェックサム値と同じであれば、対象のＯＳにジャンプして起動する（ステップ１７）。一致しなければエラーとなり、対象のＯＳを起動しない（ステップ１８）。
【００２８】
図９は、データ配置と中間コードのプログラムを示す。図９に示す中間コードプログラムを、図７（ａ）、（ｂ）に示す中間コード書式でＲＯＭ１０１上に保持し、各ＣＰＵの命令へ変換して実行する。
【００２９】
以上説明したように、本発明では、異なる命令を実行する複数のＣＰＵを持つシステムにおいて、安全に複数のＯＳを起動することができる。起動時のＲＯＭには、起動準備（改ざん検知など）プログラムが中間コードの形式で１つだけ格納される。中間コードの改ざん検知プログラムを、実行時に各ＣＰＵで実行可能な命令に変換することで、１つの起動準備プログラムにより複数のＯＳを起動させることができる。
【００３０】
なお、上記した実施例では、改ざんの検知として、チェックサムを用いたが、署名検証を用いてもよい。これにより、安全な改ざん検知を行うことができる。また、ＣＰＵが中間コードを直接実行できる構成を採るように変更することも可能である。これにより、命令変換部がＣＰＵ内にあるため、より少ないコストでシステムを構成できる。また、ＯＳも中間コードで記述し、命令変換部を経由して実行される構成を採るように変更することも可能である。これにより、同一のＯＳを異なる命令セットを実行する複数のＣＰＵ上でも動作でき、より少ない２次記憶で構成できる。さらに、ＯＳを記憶する記憶手段として、ＯＳの起動準備プログラムと同じＲＯＭに配置するように構成してもよい。これにより、２次記憶部を使用せずに、より小さな構成により複数のＣＰＵを起動することができる。
【符号の説明】
【００３１】
１０１  ＲＯＭ
１０２  起動準備プログラム
１０３、１０４  ＣＰＵ
１０５、１０６  命令変換部
１０７  ＲＡＭ
１０８  ２次記憶
１０９、１１０  ＯＳ
【先行技術文献】
【特許文献】
【００３２】
【特許文献１】特開２０１０−１４６４２号公報
【図１】
2014110012.tif 000003
【図２】
2014110012.tif 000004
【図３】
2014110012.tif 000005
【図４】
2014110012.tif 000006
【図５】
2014110012.tif 000007
【図６】
2014110012.tif 000008
【図７】
2014110012.tif 000009
【図８】
2014110012.tif 000010
【図９】
2014110012.tif 000011