(57)【要約】【課題】  ＯＳ処理中に割り込み処理としてＢＩＯＳ処理を実行する場合に、ＯＳ処理の処理時間が長くなることを防止しつつ、ＢＩＯＳ処理の処理時間の短縮化を図る。【解決手段】  コンピュータ装置１は、ＯＳ処理部２と、ＢＩＯＳ処理部３と、ＣＰＵ群４とを備えている。ＯＳ処理部２は、ＯＳに基づいてＣＰＵ６１，６２，・・・，６ｎを制御する機能を備えている。ＢＩＯＳ処理部３は、ＢＩＯＳに基づいてＣＰＵ６１，６２，・・・，６ｎを制御する。ＢＩＯＳ処理部３は、ＣＰＵ群４がＯＳ処理部２により制御されているＯＳ処理中に、ＣＰＵ群４における設定された個数のＣＰＵを、ＯＳに基づいた制御の対象から外れるＯＳ休止状態とする。さらに、ＢＩＯＳ処理部３は、ＯＳ休止状態のＣＰＵをＢＩＯＳに基づいて制御することによってＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する。【選択図】      図１
2015064638.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵ（Central Processing Unit）を含むＣＰＵ群と、
ＯＳ（Operating System）に基づいて前記ＣＰＵを制御するＯＳ処理部と、
ＢＩＯＳ（Basic Input / Output System）に基づいて前記ＣＰＵを制御するＢＩＯＳ処理部と
を備え、
前記ＢＩＯＳ処理部は、前記ＣＰＵ群が前記ＯＳ処理部により制御されているＯＳ処理中に、前記ＣＰＵ群における設定された個数の前記ＣＰＵを、前記ＯＳに基づいた制御の対象から外れるＯＳ休止状態とし、当該ＯＳ休止状態の前記ＣＰＵを前記ＢＩＯＳに基づいて制御することによって前記ＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する構成を備えているコンピュータ装置。
【請求項２】
前記ＯＳ処理部による処理状況を表す情報を格納する状況記憶部をさらに備え、
前記ＢＩＯＳ処理部は、前記ＯＳ処理中に割り込み処理として前記ＢＩＯＳ処理を実行する場合に、前記設定された個数の前記ＣＰＵを前記ＯＳ休止状態とする休止命令を前記ＯＳ処理部に向けて出力する処理と、前記休止命令を受けた前記ＯＳ処理部により前記ＯＳ休止状態となった前記ＣＰＵを、前記状況記憶部に格納されている情報を利用して特定する処理とを実行し、特定された前記ＯＳ休止状態の前記ＣＰＵを利用して、前記ＢＩＯＳ処理を実行する請求項１記載のコンピュータ装置。
【請求項３】
コンピュータプログラムを格納するプログラム記憶部と、実行対象のコンピュータプログラムの格納位置の情報を格納する格納位置記憶部とをさらに備え、
前記ＢＩＯＳ処理部は、ＢＩＯＳ処理中に、前記格納位置記憶部において、前記ＯＳ休止状態の前記ＣＰＵが前記ＯＳ処理部の制御対象に復帰するタイミングに関わるＯＳ処理の規定のコンピュータプログラムの格納位置の情報を前記ＯＳ休止状態の前記ＣＰＵに対する復帰処理のコンピュータプログラムの格納位置の情報に変更し、前記ＯＳ処理の前記規定のコンピュータプログラムに基づいた処理が実行される前に、前記復帰処理を実行する構成をさらに備えている請求項１又は請求項２記載のコンピュータ装置。
【請求項４】
前記ＢＩＯＳ処理部は、前記ＯＳ休止状態の前記ＣＰＵを利用した前記ＢＩＯＳ処理を中断する場合に、当該ＢＩＯＳ処理の進行状況を表す情報を記憶する処理と、前記ＢＩＯＳ処理を再開する場合に、記憶された前記ＢＩＯＳ処理の進行状況の情報を利用して前記ＢＩＯＳ処理を再開する処理とを実行する構成をさらに備えている請求項１又は請求項２又は請求項３記載のコンピュータ装置。
【請求項５】
前記ＢＩＯＳ処理部は、前記ＯＳ処理部が情報を読み書きする記憶部における前記ＯＳ処理部による情報の書き込み状況を監視することにより、前記ＯＳ休止状態の前記ＣＰＵが前記ＯＳ処理部の制御対象に復帰するタイミングであることを検知した場合には、前記ＯＳ休止状態の前記ＣＰＵを制御対象から外す構成をさらに備えている請求項１乃至請求項４の何れか一つに記載のコンピュータ装置。
【請求項６】
前記ＢＩＯＳ処理部は、前記書き込み状況を周期的に監視することとし、当該監視の１周期の時間に、前記ＯＳ休止状態の前記ＣＰＵが前記ＯＳ処理を実行可能な状態に復帰するまでに要する復帰時間を加算した合計の時間の情報を前記ＯＳ処理部に通知する構成をさらに備えている請求項５記載のコンピュータ装置。
【請求項７】
複数のＣＰＵ（Central Processing Unit）を含むＣＰＵ群を備え、ＯＳ（Operating System）に基づいて前記ＣＰＵを制御する機能およびＢＩＯＳ（Basic Input / Output System）に基づいて前記ＣＰＵを制御する機能を有しているコンピュータ装置が、
前記ＣＰＵ群が前記ＯＳに基づいて制御されているＯＳ処理中に、前記ＣＰＵ群における設定された個数の前記ＣＰＵを、前記ＯＳに基づいた制御の対象から外れるＯＳ休止状態とし、
当該ＯＳ休止状態の前記ＣＰＵを前記ＢＩＯＳに基づいて制御することによって前記ＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する
割り込み制御方法。
【請求項８】
複数のＣＰＵ（Central Processing Unit）を含むＣＰＵ群を備え、ＯＳ（Operating System）に基づいて前記ＣＰＵを制御する機能およびＢＩＯＳ（Basic Input / Output System）に基づいて前記ＣＰＵを制御する機能を有しているコンピュータ装置に、
前記ＣＰＵ群が前記ＯＳに基づいて制御されているＯＳ処理中に、前記ＣＰＵ群における設定された個数の前記ＣＰＵを、前記ＯＳに基づいた制御の対象から外れるＯＳ休止状態とする処理と、
当該ＯＳ休止状態の前記ＣＰＵを前記ＢＩＯＳに基づいて制御することによって前記ＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する処理と
を実行させる処理手順を表すコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳ（Operating System）に基づいた処理（ＯＳ処理）を実行しているコンピュータ装置が、割り込み処理としてＢＩＯＳ（Basic Input / Output System）に基づいた処理（ＢＩＯＳ処理）を実行する技術に関する。
【背景技術】
【０００２】
例えば、ハイエンドサーバ等で要求される高ＲＡＳ（Reliability (信頼性)、Availability (可用性)、Serviceability (保守性)）機能を実現するために、ＯＳ処理中のＣＰＵ（Central Processing Unit）がその高ＲＡＳ機能に関わるＢＩＯＳ処理を間欠的に行うことがある。例えば、ＣＰＵがＳＭＩ（System management interrupts (システム管理割り込み)）という通知を受け取ると、ＳＭＭ（System Management Mode）と呼ばれる動作モードに遷移する（例えば、非特許文献１参照）。このＳＭＭ中においては、ＣＰＵは、ＢＩＯＳに基づいた処理（ＢＩＯＳ処理）を実行する。そして、ＣＰＵは、数（ミリ秒(ms)）の間、当該ＢＩＯＳ処理を実行し、その後に、ＯＳ処理に戻る。
【０００３】
ところで、ＳＭＭ中のＣＰＵは、ＯＳ処理による要求（スケジューリング管理制御）に応答しない。このため、複数のＣＰＵを備えるコンピュータ装置において、それら複数のＣＰＵがＯＳ処理を実行しているときに、例えば一つのＣＰＵだけをＳＭＭに遷移させると、そのＳＭＭ中のＣＰＵはＯＳ処理による要求に応答しなくなる。これにより、当該コンピュータ装置は、ＳＭＭ中のＣＰＵがストール（停止）したと判断し、カーネルパニック（ＯＳパニック）を引き起こしてしまう虞がある。
【０００４】
そのような問題を防止するために、コンピュータ装置は、ＳＭＩを受け取った場合に、上記全てのＣＰＵがＳＭＭに遷移するように制御する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】インテル株式会社、“Intel64 and IA-32 Architectures Software Developer Manuals”、[online]、[平成２５年９月６日検索]、インターネット（ＵＲＬ：http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記のように全てのＣＰＵがＳＭＭ（ＢＩＯＳに基づいて処理を実行するモード）に遷移すると、ＯＳ処理が中断することになる。このために、ＯＳ処理の処理時間が長くなるという弊害が生じてしまう。
【０００７】
そこで、その弊害を回避するために、次のような処理が考えられる。つまり、割り込み処理として実行するＢＩＯＳ処理（例えばＳＭＭでもって実行する処理（ＳＭＭ処理））は、短時間で処理が完了する複数のステップに分割される。そして、上記全てのＣＰＵは、ＯＳ処理中に、ＢＩＯＳ処理を前記１ステップずつ間欠的に実行する。しかし、この場合には、ＢＩＯＳ処理（ＳＭＭ処理）からＯＳ処理に戻る処理回数が増加するので、その処理回数が増加した分、ＢＩＯＳ処理（ＳＭＭ処理）の処理時間が長くなるという問題が生じる。
【０００８】
本発明は上記課題を解決するためになされた。すなわち、本発明の主な目的は、ＯＳ処理中に割り込み処理としてＢＩＯＳ処理を実行する場合に、ＯＳ処理の処理時間が長くなることを防止しつつ、ＢＩＯＳ処理の処理時間の短縮化を図ることができる技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明のコンピュータ装置は、
複数のＣＰＵ（Central Processing Unit）を含むＣＰＵ群と、
ＯＳ（Operating System）に基づいて前記ＣＰＵを制御するＯＳ処理部と、
ＢＩＯＳ（Basic Input / Output System）に基づいて前記ＣＰＵを制御するＢＩＯＳ処理部と
を備え、
前記ＢＩＯＳ処理部は、前記ＣＰＵ群が前記ＯＳ処理部により制御されているＯＳ処理中に、前記ＣＰＵ群における設定された個数の前記ＣＰＵを、前記ＯＳに基づいた制御の対象から外れるＯＳ休止状態とし、当該ＯＳ休止状態の前記ＣＰＵを前記ＢＩＯＳに基づいて制御することによって前記ＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する構成を備えている。
【００１０】
本発明の割り込み制御方法は、
複数のＣＰＵ（Central Processing Unit）を含むＣＰＵ群を備え、ＯＳ（Operating System）に基づいて前記ＣＰＵを制御する機能およびＢＩＯＳ（Basic Input / Output System）に基づいて前記ＣＰＵを制御する機能を有しているコンピュータ装置が、
前記ＣＰＵ群が前記ＯＳ処理部により制御されているＯＳ処理中に、前記ＣＰＵ群における設定された個数の前記ＣＰＵを、前記ＯＳに基づいた制御の対象から外れるＯＳ休止状態とし、
当該ＯＳ休止状態の前記ＣＰＵを前記ＢＩＯＳに基づいて制御することによって前記ＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する。
【００１１】
本発明のコンピュータプログラムは、
複数のＣＰＵ（Central Processing Unit）を含むＣＰＵ群を備え、ＯＳ（Operating System）に基づいて前記ＣＰＵを制御する機能およびＢＩＯＳ（Basic Input / Output System）に基づいて前記ＣＰＵを制御する機能を有しているコンピュータ装置に、
前記ＣＰＵ群が前記ＯＳに基づいて制御されているＯＳ処理中に、前記ＣＰＵ群における設定された個数の前記ＣＰＵを、前記ＯＳに基づいた制御の対象から外れるＯＳ休止状態とする処理と、
当該ＯＳ休止状態の前記ＣＰＵを前記ＢＩＯＳに基づいて制御することによって前記ＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する処理と
を実行させる処理手順を表す。
【００１２】
なお、本発明の前記目的は、本発明のコンピュータ装置に対応する本発明の割り込み制御方法によっても達成される。また、本発明の前記目的は、本発明のコンピュータ装置および割り込み制御方法を実現するコンピュータプログラムおよびそれを記憶するコンピュータプログラム記憶媒体によっても達成される。
【発明の効果】
【００１３】
本発明によれば、ＯＳ処理中に割り込み処理としてＢＩＯＳ処理を実行する場合に、ＯＳ処理の処理時間が長くなることを防止しつつ、ＢＩＯＳ処理の処理時間の短縮化を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る第１実施形態のコンピュータ装置の構成を簡略化して表すブロック図である。
【図２】本発明に係る第２実施形態のコンピュータ装置の構成を簡略化して表すブロック図である。
【図３】第２実施形態におけるＢＩＯＳ処理部の動作例を表すフローチャートである。
【図４】第２実施形態におけるＣＰＵの状態例を説明する図である。
【図５】第２実施形態におけるテーブル変更部の動作例を説明する図である。
【図６】第２実施形態におけるメモリの格納状態の一例を説明する図である。
【発明を実施するための形態】
【００１５】
以下に、本発明に係る実施形態を図面に基づいて説明する。
【００１６】
（第１実施形態）
図１は、本発明に係る第１実施形態のコンピュータ装置の構成を簡略化して表すブロック図である。この第１実施形態のコンピュータ装置１は、ＯＳ（Operating System）処理部２と、ＢＩＯＳ（Basic Input / Output System）処理部３と、ＣＰＵ（Central Processing Unit）群４とを備えている。
【００１７】
ＣＰＵ群４は、複数のＣＰＵ６１，６２，・・・，６ｎ（ｎは２以上の整数）を有している。ＯＳ処理部２は、ＯＳに基づいてＣＰＵ６１，６２，・・・，６ｎを制御する機能を備えている。
【００１８】
ＢＩＯＳ処理部３は、ＢＩＯＳに基づいてＣＰＵ６１，６２，・・・，６ｎを制御する機能を備えている。当該ＢＩＯＳ処理部３は、ＣＰＵ群４がＯＳ処理部２により制御されているＯＳ処理中に、ＣＰＵ群４における設定された個数のＣＰＵを、ＯＳに基づいた制御の対象から外れるＯＳ休止状態とする機能を備えている。さらに、ＢＩＯＳ処理部３は、ＯＳ休止状態のＣＰＵをＢＩＯＳに基づいて制御することによってＢＩＯＳに基づいたＢＩＯＳ処理を割り込み処理として実行する機能を備えている。
【００１９】
このようなＢＩＯＳ処理部３は、例えば、ＣＰＵ群４を制御するコントローラとしてのＣＰＵ８がコンピュータ装置１に備えられている記憶装置１０のコンピュータプログラム（プログラム（ＢＩＯＳ））１１を読み出して実行することにより実現する。換言すれば、プログラム１１には、上記のようなＢＩＯＳ処理部３の機能を実現する処理手順が表されている。なお、ＯＳ処理部２に関しても同様であり、ＣＰＵ８がプログラム（ＯＳ）を実行することにより実現する。
【００２０】
この第１実施形態のコンピュータ装置１は、ＣＰＵ群４がＯＳ処理を実行している場合に、ＣＰＵ群４に含まれる一部のＣＰＵがＢＩＯＳ処理を実行する構成（機能）を備えている。このため、コンピュータ装置１は、ＯＳ処理を中断することなく、ＢＩＯＳ処理を実行できる。これにより、例えばＯＳ処理中に全てのＣＰＵ６１，６２，・・・，６ｎが間欠的にＢＩＯＳ処理を実行する場合に比べて、コンピュータ装置１は、ＯＳ処理の処理時間が長くなることを抑制しつつ、ＢＩＯＳ処理の処理時間の短縮化を図ることができる。
【００２１】
また、この第１実施形態では、ＯＳ処理中に割り込み処理としてＢＩＯＳ処理を実行するＣＰＵは、ＢＩＯＳ処理部３の機能によって、ＯＳ休止状態となる。このため、ＯＳ処理部２は、ＯＳ休止状態（換言すれば、ＢＩＯＳ処理中）のＣＰＵから応答が無くとも異常とは判断しないことから、コンピュータ装置１は、ＯＳパニック（カーネルパニック）等の不都合が発生することが防止できる。
【００２２】
（第２実施形態）
以下に、本発明に係る第２実施形態を説明する。
【００２３】
図２は、第２実施形態に係るコンピュータ装置の構成を簡略化して表すブロック図である。この第２実施形態のコンピュータ装置２０は、大別すると、管理装置（コントローラー）２１と、ＣＰＵ（Central Processing Unit）群２３と、メモリ２４と、記憶装置２５とを有している。
【００２４】
記憶装置２５は、例えばハードディスク装置により構成されている。当該記憶装置２５は、各種データや、コンピュータ装置２０の動作を制御するコンピュータプログラム（例えばＯＳ（Operating System））２９が格納されている。
【００２５】
ＣＰＵ群２３は、複数のＣＰＵ４４1〜４４n（ｎは２以上の整数）を備えている。メモリ２４は、例えばＲＡＭ（Random Access Memory）により構成されている。この第２実施形態では、当該メモリ２４には、次のような記憶領域が設定されている。つまり、メモリ２４は、ＳＭＲＡＭ（System Management Random Access Memory）５０と、ハンドラ部５１と、ＩＤＴ（Interrupt Descriptor Table （割り込みハンドラテーブル））５２と、アドレス部５３と、スタック部５４とを有している。
【００２６】
ＳＭＲＡＭ５０は、ＳＭＩ（System management interrupts (システム管理割り込み)）という通知が発行された場合に、ＯＳ処理を実行しているＣＰＵ群２３の処理状況（状態状況）を表す情報が格納される記憶領域（状況記憶部）である。
【００２７】
ハンドラ部５１は、割り込み処理の手順を表すコンピュータプログラムである割り込みハンドラが格納される記憶領域（プログラム記憶部）である。
【００２８】
ＩＤＴ５２には、割り込みハンドラのエントリポイントが格納される記憶領域（格納位置記憶部）である。
【００２９】
アドレス部５３は、ＯＳ処理によりメモリ２４に書き込まれたデータの格納位置（アドレス）が格納される記憶領域である。
【００３０】
スタック部５４は、この第２実施形態では、ＯＳ処理における次の実行対象の処理のＩＰ（Instruction Pointer）が格納される記憶領域である。
【００３１】
管理装置２１は、ＣＰＵ群２３を制御するコントローラの機能を備えている。当該管理装置２１は、ＣＰＵ（Central Processing Unit）３０と、記憶部（不揮発性メモリ）３２とを備えている。記憶部３２には、ＢＩＯＳ（Basic Input / Output System （コンピュータプログラム））４２が格納されている。
【００３２】
ＣＰＵ３０は、記憶部３２に格納されているＢＩＯＳ（プログラム）４２および記憶装置２５に格納されているＯＳを含むコンピュータプログラム（プログラム）２９を読み出し、これらプログラム２９，４２を実行することにより、ＣＰＵ群２３を制御する機能を備える。
【００３３】
すなわち、ＣＰＵ３０は、機能部として、ＯＳ処理部３４と、ＢＩＯＳ処理部３５とを備えている。ＯＳ処理部３４は、ＯＳに基づいてＣＰＵ群２３を制御する機能部である。なお、ＯＳに基づいたＯＳ処理には様々な手法があり、ここでは、そのＯＳ処理の詳細な説明は省略する。
【００３４】
ＢＩＯＳ処理部３５は、ＢＩＯＳに基づいてＣＰＵ群２３を制御する機能部である。このＢＩＯＳ処理部３５は、ＯＳ処理部３４がＣＰＵ群２３を制御している場合（ＯＳ処理中）に、ＯＳ処理に割り込んでＢＩＯＳ処理であるＳＭＭ（System Management Mode）処理を実行可能な機能を備えている。なお、ＢＩＯＳ処理には様々な処理があり、ここでは、次に述べる処理以外のＢＩＯＳ処理に関する詳細な説明は省略する。
【００３５】
この第２実施形態では、ＢＩＯＳ処理部３５は、機能部として、割り込み手続部３７と、テーブル変更部３８と、監視部３９とを含んでいる。割り込み手続部３７は、ＯＳ処理に割り込む処理を開始してから、例えば高ＲＡＳ機能に係るＳＭＭ処理を開始するまでの処理を実行する機能を備えている。テーブル変更部３８と監視部３９は、それぞれ、ＳＭＭ処理を中断する場合に、ＳＭＭ処理中のＣＰＵをＢＩＯＳによる制御の対象から外しＯＳ処理に戻す処理に関係する機能を備えている。
【００３６】
以下に、割り込み手続部３７とテーブル変更部３８と監視部３９のそれぞれの動作例を図３〜図６を利用して説明し、この動作の説明を持って割り込み手続部３７とテーブル変更部３８と監視部３９の機能（構成）の説明とする。
【００３７】
図３は、第２実施形態のコンピュータ装置２０における管理装置２１のＢＩＯＳ処理部３５が実行する割り込み処理のフローチャートである。この図３のフローチャートは、この第２実施形態のコンピュータ装置２０が実行するＢＩＯＳのコンピュータプログラムの処理手順を表している。
【００３８】
図４は、ＯＳ処理中のＣＰＵ群２３が割り込み処理としてのＳＭＭ処理を開始するために実行する手続処理中のＣＰＵの状態例を模式的に表す図である。図５は、テーブル変更部３８の動作例を説明する図である。図６は、メモリ２４の格納状態例を模式的に表す図である。
【００３９】
例えば、ＣＰＵ群２３の全てのＣＰＵ４４1〜４４nがＯＳ処理中である場合に、ＳＭＭ処理を要求する通知を受け取ると、割り込み手続部３７は、ＳＭＭ処理を開始するために次のような手続処理を開始する（図３のステップＳ１０１）。
【００４０】
まず、割り込み手続部３７は、全てのＣＰＵ４４1〜４４nが、ＯＳ処理部３４による制御の対象からＢＩＯＳ処理部３５による制御の対象となるようにＯＳ処理部３４に指令を発する（ステップＳ１０２）。そして、割り込み手続処理部３７は、要求されたＳＭＭ処理の内容を解析する処理を実行する。これにより、要求されたＳＭＭ処理が高ＲＡＳ機能に関わる処理であることを検知した場合には、割り込み手続処理部３７は、ＬＰＩ（Logical Processor Ldling (論理プロセッサアイドリング)）機能を実行する。ＬＰＩ機能とは、ＡＣＰＩ(Advanced Configuration and Power Interface)規格により定められている機能であり、本来は、ＣＰＵを休止（アイドル（Idle））状態に遷移することによって消費電力を削減する機能である。このＬＰＩ機能によって休止状態となったＣＰＵは、ＯＳ処理部３４による制御の対象から外れた状態となる。
【００４１】
この第２実施形態では、割り込み手続処理部３７は、ＬＰＩ機能により、ＣＰＵ群２３に含まれる一つのＣＰＵを休止状態とする命令（要求）をＯＳ処理部３４に向けて出力する（ステップＳ１０３）。ここでは、説明を容易にするために、ＬＰＩ機能により休止状態（ＯＳ休止状態）とするＣＰＵをＣＰＵ（Ａ）とも記し、ＣＰＵ群２３におけるそれ以外のＣＰＵをＣＰＵ（Ｂ）とも記すこととする。
【００４２】
その後、割り込み手続部３７は、手続処理を再開するタイミングを予約する（ステップＳ１０４）。そして、割り込み手続部３７は、全てのＣＰＵ４４1〜４４nを、ＢＩＯＳ処理部３５による制御の対象から外す。これにより、全てのＣＰＵ４４1〜４４nは、ＯＳ処理部３４による制御の対象に戻る。そして、割り込み手続部３７は、手続処理を中断する（ステップＳ１０５）。つまり、図４に表されているように、時間Ｔ１において、ＣＰＵ群２３の全てのＣＰＵ（図４に表すＣＰＵ（Ａ）とＣＰＵ（Ｂ））は割り込み手続部３７の前記ステップＳ１０２の処理（動作）によってＯＳ処理からＢＩＯＳ処理に遷移する。然る後に、ＣＰＵ（Ａ）を休止状態とする命令を発した後の図４の時間Ｔ２において、ＣＰＵ群２３の全てのＣＰＵ（Ａ）とＣＰＵ（Ｂ）はＢＩＯＳ処理からＯＳ処理に遷移する（戻る）。ただ、ＯＳ処理部３４は、ＣＰＵ群２３の一つのＣＰＵ（Ａ）を休止状態とする命令をＢＩＯＳ処理部３５から受けているため、図４の時間Ｔ３において、ＣＰＵ（Ａ）をＯＳ休止状態とする。
【００４３】
然る後に、割り込み手続部３７は、前記ステップＳ１０４にて行った予約動作に基づいた再開タイミングであることを検知すると（ステップＳ１０６）、手続処理を再開する。これにより、割り込み手続部３７は、休止状態のＣＰＵ（Ａ）をも含めたＣＰＵ群２３の全てのＣＰＵ４４1〜４４nが、ＯＳ処理部３４による制御の対象からＢＩＯＳ処理部３５による制御の対象となるようにＯＳ処理部３４に指令を発する（ステップＳ１０７、図４の時間Ｔ４）。この際、ＯＳ処理部３４の制御対象から外れる直前のＣＰＵ４４1〜４４nの状態を表す情報が、ＢＩＯＳ処理部３５の機能によって、ＳＭＲＡＭ５０に書き込まれる。
【００４４】
その後、割り込み手続部３７は、ＣＰＵ４４1〜４４nの中からＯＳ処理部３４によりＯＳ休止状態となったＣＰＵ（Ａ）を特定する（ステップＳ１０８）。つまり、割り込み手続部３７は、ＯＳ処理部３４の制御対象から外れる直前にＣＰＵ４４1〜４４nが実行していた命令アドレスと、そのレジスタ値との情報をＳＭＲＡＭ５０から読み出す。そして、割り込み手続部３７は、その読み出した情報に基づいて、実行していた命令が休止命令であり、かつ、その際のパラメータ（レジスタ値）がＬＰＩ機能による指示であるＣＰＵを特定することにより、ＣＰＵ（Ａ）を特定する。
【００４５】
然る後に、割り込み手続部３７は、その特定したＣＰＵ（Ａ）のみが、要求されているＳＭＭ処理を実行するように、ＩＰＩ（Inter Processor Interrupt （プロセッサ間割り込み））をＣＰＵ（Ａ）に通知する（ステップＳ１０９）。引き続いて、割り込み手続部３７は、手続処理を中断する（ステップＳ１１０）。これにより、ＣＰＵ（Ａ）を含むＣＰＵ群２３の全てのＣＰＵ４４1〜４４nが、ＢＩＯＳ処理部３５の制御対象から外れ、当該ＢＩＯＳ管理部３５の制御対象となる前の状態に復帰する。つまり、ＣＰＵ（Ａ）はＯＳ休止状態となり、ＣＰＵ群２３のそれ以外のＣＰＵ（Ｂ）はＯＳ処理部３４の制御対象となっている状態（ＯＳ処理中）となる（図４の時間Ｔ５）。
【００４６】
ＣＰＵ（Ａ）は、そのようにＯＳ休止状態となるが、ＩＰＩの通知を受けているために、ＢＩＯＳ処理部３５が制御する状態（ＢＩＯＳ処理中）に戻る（図４の時間Ｔ６）。ＢＩＯＳ処理部３５は、このようにＣＰＵ（Ａ）が制御対象に戻った（ＢＩＯＳ処理に遷移した）ことを検知すると（ステップＳ１１１）、当該ＣＰＵ（Ａ）が高ＲＡＳ機能に関係するＳＭＭ処理を開始するように指令する（ステップＳ１１２）。
【００４７】
この第２実施形態では、上記のように、ＯＳ処理中のＣＰＵ群２３が割り込み処理としてＳＭＭ処理を実行する場合には、ＣＰＵ群２３におけるＣＰＵ４４1〜４４nのうちの一つのＣＰＵ（ＣＰＵ（Ａ））がＳＭＭ処理を実行する。この場合、ＣＰＵ（Ａ）は、ＯＳ処理部３４から見ると休止状態であり、ＯＳ処理３４によって管理されない。このため、この第２実施形態のコンピュータ装置２０は、次のような問題を防止できる。つまり、その問題とは、ＣＰＵ（Ａ）は正常であるのにも拘わらず、当該ＣＰＵ（Ａ）からＯＳ処理部３４への応答が無いためにＣＰＵ（Ａ）が停止してしまったとＯＳ処理部３４が判断し、例えばＯＳパニック（カーネルパニック）を起こすという問題である。この第２実施形態のコンピュータ装置２０は、そのような問題を防止しつつ、ＣＰＵ（Ａ）によりＳＭＭ処理を実行し、かつ、それと共にＣＰＵ（Ｂ）によりＯＳ処理を実行する。これにより、コンピュータ装置２０は、ＳＭＭ処理の処理時間の短縮、および、ＯＳ処理の遅延も防止できるという効果を得ることができる。
【００４８】
ところで、前記の如く、ＳＭＭ処理中のＣＰＵ（Ａ）は、ＯＳ処理部３４から見ると休止状態（ＯＳ休止状態）である。ＣＰＵ（Ａ）は、ＯＳ処理部３４の処理状況に応じてＯＳ休止状態からＯＳ処理部３４の制御対象に復帰することがある。テーブル変更部３８と監視部３９は、そのＣＰＵ（Ａ）の復帰を円滑にする処理に関わる機能を有する。
【００４９】
すなわち、テーブル変更部３８は、ＯＳ処理部３４が割り込み処理（ＯＳ割り込みハンドラ）を実行することによる復帰処理に関わる。つまり、テーブル変更部３８は、そのような復帰処理に備えて、まず、ＢＩＯＳ処理部３５がＣＰＵ（Ａ）によるＳＭＭ処理を開始する際に（図３のステップＳ１１２）、メモリ２４のＩＤＴを書き換える。具体例を挙げると、図５の例では、ハンドラ部５１において、ＯＳ処理における割り込みハンドラ（ＯＳ割り込みハンドラ）の各エントリポイントは、0ｘ100、0ｘ300、0ｘ500である。また、ＢＩＯＳ処理における割り込みハンドラ（ＢＩＯＳ処理割り込みハンドラ）の各エントリポイントは、0ｘ200、0ｘ400、0ｘ600である。テーブル変更部３８は、図５（ａ）のようなＩＤＴ５２におけるＯＳ割り込みハンドラのエントリポイント（0ｘ100、0ｘ300、0ｘ500）を、図５（ｂ）のようにＢＩＯＳ割り込みハンドラのエントリポイント（0ｘ200、0ｘ400、0ｘ600）に書き換える（変更する）。
【００５０】
このようにＩＤＴ５２を書き換えることにより、ＯＳ処理部３４がＣＰＵ（Ａ）を制御対象とする復帰タイミングであるＯＳ割り込みハンドラの実行時に、ＣＰＵ（Ａ）が次のように動作することになる。つまり、ＯＳ処理部３４はＯＳ割り込みハンドラを実行するために、ＩＤＴ５２のエントリポイントに基づいて割り込みハンドラを実行しようとするが、そのエントリポイントは、書き換えられている。このため、ＯＳ割り込みハンドラではなく、ＢＩＯＳ割り込みハンドラが実行される。つまり、ＢＩＯＳ処理部３５は、図３のステップＳ１１３における判断動作によって、ＣＰＵ（Ａ）がＯＳ処理部３４の制御対象に復帰するタイミングであると判断した場合には、ＣＰＵ（Ａ）の復帰処理（ＢＩＯＳ割り込みハンドラ）を実行する（ステップＳ１１６）。
【００５１】
この復帰処理（ＢＩＯＳ割り込みハンドラ）を開始する際には、図６（ａ）のように、ＩＤＴ５２にはそのＢＩＯＳ割り込みハンドラのエントリポイントの0ｘ200が書き込まれている。また、ＳＭＲＡＭ５０におけるＲＩＰ（Relative Instruction-Pointer）レジスタには、ＣＰＵ（Ａ）がＯＳ処理部３４の制御対象から外れる直前にＣＰＵ（Ａ）に向けて出力されたＩＰである0ｘ1000が格納されている。
【００５２】
復帰処理では、ＢＩＯＳ処理部３５は、ＣＰＵ（Ａ）が実行しているＳＭＭ処理の進行状況を記憶する。そして、ＢＩＯＳ処理部３５は、ＩＤＴ５２に格納されている当該ＢＩＯＳ割り込みハンドラのエントリポイント（0ｘ200）を、図６（ｃ）のように元のＯＳ割り込みハンドラのエントリポイント（0ｘ100）に書き換える。また、ＢＩＯＳ処理部３５は、ＳＭＲＡＭ５０におけるＲＩＰレジスタに書き込まれている休止命令のＩＰである0ｘ1000を、図６（ｃ）のようにＯＳ割り込みハンドラのエントリポイントである0ｘ100に変更する。その後、ＢＩＯＳ処理部３５は、ＳＭＲＡＭ５０におけるＲＳＰ（Return Stack Pointer（スタックポイント））レジスタに格納されているスタック部５４の格納位置に、ＩＰ（0ｘ1003）を格納する。このＩＰ（0ｘ1003）は、ＣＰＵ（Ａ）が休止命令の次に実行する処理内容（命令）に対応するＩＰである。
【００５３】
その後、ＢＩＯＳ処理部３５は、ＣＰＵ（Ａ）を制御対象から外すことにより、図３のステップＳ１１７に表されるようにＳＭＭ処理を中断する。これにより、ＣＰＵ（Ａ）は、ＯＳ処理部３４の制御対象となる。ＯＳ処理部３４は、ＳＭＲＡＭ５０におけるＲＩＰレジスタに格納されている実行対象のエントリポイント（0ｘ100）のＯＳ割り込みハンドラを実行する。この状態において、ＲＳＰレジスタの格納情報に対応するスタック部５４の格納位置には、休止命令の次の命令のＩＰである0ｘ1003が格納されている。このため、ＣＰＵ（Ａ）は、そのＯＳ割り込みハンドラの終了後に、そのＩＰ（0ｘ1003）に基づいてＯＳ処理に復帰できる。
【００５４】
これにより、ＣＰＵ群２３の全てのＣＰＵ４４1〜４４nはＯＳ処理を実行している状態となる。このような状態である時に、ＳＭＭ処理を要求する通知を管理装置２１が受け取ると、図３の前記ステップＳ１０１以降の動作を繰り返す。
【００５５】
上記例では、ＯＳ処理部３４がＯＳ割り込みハンドラを実行することを契機として、ＣＰＵ（Ａ）がＯＳ処理部３４の制御対象に復帰する場合の処理例を述べている。さらに、ＣＰＵ（Ａ）は、アドレス部５３における指定されたアドレスにデータがＯＳ処理部３４により書き込まれた場合を契機として、ＯＳ処理部３４の制御対象に復帰してもよい。この場合には、ＢＩＯＳ処理部３５は、次のような処理を実行する。
【００５６】
例えば、前記ステップＳ１１２において、ＢＩＯＳ処理部３５は、ＣＰＵ（Ａ）によるＳＭＭ処理を開始する前に、ＳＭＲＡＭ５０を参照することにより、ＣＰＵ（Ａ）がＯＳ処理部３４の制御対象から外れる直前のレジスタ値を取得する。そして、ＢＩＯＳ処理部３５は、そのレジスタ値に基づいて、ＣＰＵ（Ａ）がＯＳ処理部の制御対象に復帰する契機となるアドレス部５３のアドレス（以下、復帰契機アドレスと記す）を取得する。
【００５７】
その後、ＢＩＯＳ処理部３５は、ＣＰＵ（Ａ）によるＳＭＭ処理を開始する。このＳＭＭ処理中に、ＢＩＯＳ処理部３５は、メモリ２４に対するポーリング機能を実行する。つまり、ＢＩＯＳ処理部３５は、ＳＭＭ処理中に、メモリ２４における書き込み状態を一定周期でもって監視（ポーリング）する。
【００５８】
そして、ＢＩＯＳ処理部３５は、メモリ２４における復帰契機アドレスがＯＳ処理部３４によって変更されたことを検知した場合には、図３のステップＳ１１３の判断動作によって、ＣＰＵ（Ａ）がＯＳ処理部３４の制御対象に復帰するタイミングであると判断する。そして、ＢＩＯＳ処理部３５は、ステップＳ１１６における復帰処理として、ＣＰＵ（Ａ）によるＳＭＭ処理の進行状況を記憶し、ＣＰＵ（Ａ）を制御対象から外す。これにより、ＣＰＵ（Ａ）は、ＯＳ処理部３４の制御対象に復帰し、ＢＩＯＳ処理部３５は、ＳＭＭ処理を中断する（図３のステップＳ１１７）。
【００５９】
ところで、ＯＳ処理部３４が復帰契機アドレスに情報を書き込むことを指令してからＣＰＵ（Ａ）がＯＳ処理部３４の制御対象に復帰するまでに要する最大レイテンシは、ＣＰＵの性能による休止状態からの復帰時間にポーリング周期を加算した時間である。当該最大レイテンシは予め定まることから、ＢＩＯＳ処理部３５は、その最大レイテンシの情報を予め（例えばＯＳの立ち上げ時に）ＯＳ処理部３４に通知しておく。ＯＳ処理部３４がＣＰＵ（Ａ）の復帰許容時間として設定する時間を最大レイテンシ以上に設定することにより、ＣＰＵ（Ａ）が正常に復帰しようとしているのにも拘わらず、ＯＳ処理部３４がＣＰＵ（Ａ）の復帰が遅いと判断してしまうことを防止できる。
【００６０】
ＢＩＯＳ処理部３５は、ＳＭＭ処理中に、図３におけるステップＳ１１３において、ＯＳ処理部３４の処理に起因したＣＰＵ（Ａ）の復帰命令を受けていないと判断した場合には、ステップＳ１１４において、ＳＭＭ処理が完了したか否かを判断する。そして、ＢＩＯＳ処理部３５は、ＳＭＭ処理は完了していないと判断した場合には、ＣＰＵ（Ａ）を利用したＳＭＭ処理を継続し（ステップＳ１１５）、ステップＳ１１３以降の動作を繰り返す。ＢＩＯＳ処理部３５は、ステップＳ１１４において、ＳＭＭ処理が完了したと判断した場合には、ＳＭＭ処理を終了し、ＣＰＵ（Ａ）を制御対象から外す。これにより、ＣＰＵ（Ａ）は、ＯＳ処理部３４の制御対象に復帰し、ＯＳ処理を開始する。
【００６１】
この第２実施形態のコンピュータ装置２０は、上記のような構成を備えているので、ＯＳ処理中にＢＩＯＳによる割り込み処理を実行する場合に、ＯＳ処理に要する時間が長くなることを防止しつつ、ＢＩＯＳ処理に要する時間の短縮化を図ることができる。
【００６２】
つまり、この第２実施形態のコンピュータ装置２０は、ＯＳ処理中のＣＰＵ群２３に含まれる一つのＣＰＵがＳＭＭ処理を実行する機能を備えているから、ＯＳ処理を継続しながらＳＭＭ処理を実行できる。このため、コンピュータ装置２０は、ＯＳ処理を中断することなくＳＭＭ処理を実行するために、ＯＳ処理の処理時間が長くなるという問題を抑制できる。また、コンピュータ装置２０は、ＯＳ処理中にＳＭＭ処理を実行する前に、ＳＭＭ処理を実行するＣＰＵをＯＳ休止状態（ＯＳ処理部３４が見た場合に休止状態に見える状態）とする処理を実行するので、そのＳＭＭ処理中のＣＰＵがＯＳ処理部３４に応答しないことに因る不具合の発生を回避できる。
【００６３】
さらに、この第２実施形態のコンピュータ装置２０は、テーブル変更部３８および監視部３９の動作によって、ＣＰＵをＯＳ処理部３４の制御対象にスムーズに復帰できる。
【００６４】
（その他の実施形態）
なお、この発明は第１や第２の実施形態に限定されず、様々な実施の形態を採り得る。例えば、第２実施形態では、コンピュータ装置２０は、ＣＰＵ群２３に含まれる一つのＣＰＵがＯＳ処理中に割り込み処理としてのＢＩＯＳ処理を実行する機能を備えている。これに対して、ＯＳ処理中に割り込み処理としてのＢＩＯＳ処理を実行するＣＰＵの個数は複数であってもよい。
【００６５】
また、第２実施形態では、ＳＭＭ処理中のＣＰＵ（Ａ）がＯＳ処理に復帰する契機として、ＯＳ処理部３４がＯＳ割り込みハンドラを実行する場合と、復帰契機アドレスにデータを書き込む場合とを例に挙げている。しかし、ＣＰＵ（Ａ）がＯＳ処理に復帰する契機条件は、それらに限定されない。例えば、その復帰の契機条件は、上記２つの場合（条件）の何れか一方であってもよい。また、復帰の契機条件は、上記２つの場合（条件）にさらに別の条件をも含まれていてもよい。
【符号の説明】
【００６６】
１，２０  コンピュータ装置
２，３４  ＯＳ処理部
３，３５  ＢＩＯＳ処理部
４，２３  ＣＰＵ群
【図１】
2015064638.tif 000003
【図２】
2015064638.tif 000004
【図３】
2015064638.tif 000005
【図４】
2015064638.tif 000006
【図５】
2015064638.tif 000007
【図６】
2015064638.tif 000008