(57)【要約】【課題】ＯＳに対する排他的な割り込み処理を実行する際にＯＳの処理の停止時間の短縮を図ることができる情報処理装置を提供する。【解決手段】情報処理装置を、Operating System（ＯＳ）に対する割り込み処理によって排他的に第１の処理と第１の処理の結果に関するデータを使用する第２の処理とを実行することが可能な実行部と、ＯＳおよび割り込み処理がアクセス可能な記憶部と、を備え、実行部は、記憶部にデータを記憶し、第２の処理をＯＳに実行させるための処理を実行する情報処理装置とする。【選択図】図１
2018055337.tif 000002
【特許請求の範囲】
【請求項１】
Operating System（ＯＳ）に対する割り込み処理によって排他的に第１の処理と前記第１の処理の結果に関するデータを使用する第２の処理とを実行することが可能な実行部と、
前記ＯＳおよび前記割り込み処理がアクセス可能な記憶部と、
を備え、
前記実行部は、前記記憶部に前記データを記憶し、前記第２の処理を前記ＯＳに実行させるための処理を実行する
ことを特徴とする情報処理装置。
【請求項２】
前記第２の処理を前記ＯＳにより実行可能であるか否かを判定する判定部
をさらに備え、
前記第２の処理を前記ＯＳにより実行可能であると判定された場合に、前記実行部は、前記記憶部に前記データを記憶し、前記第２の処理を前記ＯＳに実行させるための処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶部は、前記ＯＳが前記第２の処理を実行中であるか否かを示す第１の指標を格納し、
前記判定部は、前記第１の指標が前記ＯＳが前記第２の処理を実行中であることを示す場合に、前記第２の処理を前記ＯＳにより実行可能であると判定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶部は、前記ＯＳに前記第２の処理を実行させるか否かを示す第２の指標を格納し、
前記判定部は、前記第２の処理を前記ＯＳにより実行可能であると判定したときに、前記ＯＳに前記第２の処理を実行させることを示すように前記第２の指標を設定し、
前記ＯＳは、前記第２の指標が前記ＯＳに前記第２の処理を実行させることを示す場合に、前記ＯＳに前記第２の処理を実行させないことを示すように前記第２の指標を設定してから前記第２の処理を実行し、
前記判定部は、前記第２の指標が前記ＯＳに前記第２の処理を実行させることを示す間は、前記第２の処理を前記ＯＳにより実行可能であると判定する
請求項２または３に記載の情報処理装置。
【請求項５】
コンピュータに
ＯＳに対する割り込み処理によって排他的に第１の処理を実行させ、
前記ＯＳおよび前記割り込み処理がアクセス可能な記憶部に、前記第１の処理の結果に関するデータを記憶させ、
前記データを使用する第２の処理を前記ＯＳに実行させるための処理を実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件開示の技術は、ハードウェアの障害を解析する情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
複数のプロセッサを使用するサーバなどの情報処理装置において、障害が発生すると、システム管理割り込み（ＳＭＩ）などの割り込みによって各プロセッサがBasic Input Output System（ＢＩＯＳ）などのファームウェアによる障害の解析をOperating System（
ＯＳ）に対して排他的に行う。このため、ＯＳの処理を実行している各プロセッサは、ＯＳの処理を中断してファームウェアの処理に移行する。
【０００３】
ファームウェアによる障害解析の結果は、Baseboard Management Controller（ＢＭＣ
）などのシステム管理プロセッサと呼ばれるプロセッサに通知される。ファームウェアからシステム管理プロセッサへの通知処理におけるデータ通信の速度は、プロセッサの動作周波数の観点から、プロセッサによるメモリアクセスの速度に比べると遅い。また、各プロセッサは、障害解析結果の通知処理が完了してからファームウェアの処理を終了してＯＳの処理に復帰する。このため、ファームウェアによる障害解析結果の通知処理が、ＯＳの処理のパフォーマンスの低下につながる可能性がある。
【０００４】
このようなＯＳの処理のパフォーマンスの低下を抑えるための技術が提案されている。例えば、情報処理装置内のプロセッサを、ＯＳが認識できるプロセッサとＯＳが認識できないプロセッサに分ける技術がある（例えば、特許文献１）。ＯＳが認識できるプロセッサは、障害解析の処理を完了すると、システム管理プロセッサへの通知処理の完了を待つことなくＯＳの処理に移行する。また、ＯＳが認識できないプロセッサは、障害解析の処理の完了後に、システム管理プロセッサへの通知処理に移行する。
【０００５】
また、ファームウェアによる障害解析の処理の結果を通知処理用のキューに蓄積することで、障害解析の処理とシステム管理プロセッサへの通知処理を分割して行う技術がある（例えば、特許文献２）。各プロセッサは、障害解析の処理の結果をキューに蓄積した後、通知処理を行うことなくＯＳの処理に移行する。そして、キューに蓄積されたデータは、ファームウェアによる定期的な割り込み処理である通知処理によってシステム管理プロセッサに送信される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１２／１１４４６３号
【特許文献２】特開２０１１−１６４９７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の技術により、情報処理装置内のプロセッサをＯＳが認識できるプロセッサとＯＳが認識できないプロセッサに分けても、ＯＳが認識できないプロセッサの分だけＯＳの処理のパフォーマンスは低下する。また、障害解析の処理の結果をキューに蓄積しても、蓄積されたデータの通知処理はファームウェアによって実行されるため、プロセッサはＯＳの処理を中断してファームウェアの処理に移行する。したがって、ファームウェアによる障害解析および通知の処理全体としては、処理を分割する場合と分割しない場合とで同様の処理時間がかかる。
【０００８】
本件開示の技術は、上記の事情に鑑み、ＯＳに対する排他的な割り込み処理を実行する際にＯＳの処理の停止時間の短縮を図ることができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本件開示の情報処理装置は、ハードウェアの障害を解析する解析処理を含むファームウェアの処理を実行する実行部と、解析処理の結果に関するデータを記憶する記憶部と、記記憶部に記憶されたデータをハードウェアを管理する管理部に通知する通知処理をOperating System（ＯＳ）が実行可能であるか否かを判定する判定部とを備え、ＯＳが通知処理を実行可能であると判定された場合に、実行部は、通知処理をＯＳに実行させるための処理を実行し、通知処理を実行することなくファームウェアの処理を終了する。
【発明の効果】
【００１０】
本件開示の技術によれば、ＯＳに対する排他的な割り込み処理を実行する際にＯＳの処理の停止時間の短縮を図ることができる情報処理装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、一実施形態に係るサーバの構成を例示する概略構成図である。
【図２】図２は、一実施形態に係るサーバにおいて実行される処理のフローである。
【図３】図３は、一実施形態に係るＩＦ用のメモリ領域を例示する概略構成図である。
【図４】図４は、一実施形態に係るサーバにおいて実行される処理のフローである。
【図５】図５は、一実施形態に係るサーバにおいて実行される処理のフローである。
【図６】図６は、一実施形態に係るサーバにおいて実行される処理のフローである。
【図７】図７は、一実施形態に係るサーバにおいて実行される処理のフローである。
【図８】図８は、一実施形態に係るサーバにおいて実行される処理のフローである。
【図９】図９は、一実施形態に係るサーバにおいて実行される処理における各フラグの状態と処理の内容を示す表である。
【発明を実施するための形態】
【００１２】
以下、本件開示の技術に係る実施形態について図面を参照しながら説明する。なお、以下の詳細な説明は例示的なものであり、実施形態の構成を限定するものではない。
【００１３】
図１に、一実施形態における情報処理システムの一例であるサーバ１の概略構成図を示す。サーバ１の例としては、Intel Architecture（ＩＡ）サーバが挙げられる。サーバ１は、ＣＰＵ１０、メモリ２０、Input/Output（ＩＯ）デバイス３０、Hard Disk Drive（
ＨＤＤ）４０、チップセット５０、ＢＩＯＳ  Read-Only Memory（ＲＯＭ）６０、ＢＭＣ７０を有する。ＣＰＵ１０は、マルチコアプロセッサであり、２つのコア１１、１２を有する。なお、ＣＰＵ１０のコア数は２に限られない。また、ＣＰＵ１０は、メモリコントローラ１３およびＩＯコントローラ１４を有する。コア１１、１２、メモリコントローラ１３、ＩＯコントローラ１４、チップセット５０は、それぞれレジスタ１５、１６、１７、１８、５１を有する。
【００１４】
ＢＩＯＳ  ＲＯＭ６０には、サーバ１において実行されるＢＩＯＳが記憶されている。また、ＨＤＤ４０には、サーバ１において実行される各種プログラムが記憶されている。例えば、ＣＰＵ１０は、サーバ１の起動後、ＢＩＯＳ  ＲＯＭ６０からＢＩＯＳを読み出して初期化処理を行った後、ＨＤＤ４０からＯＳを読み出して実行する。
【００１５】
本実施形態では、一例として、ＯＳには、Advanced Configuration and Power Interfa
ce（ＡＣＰＩ）と呼ばれる、電源やＣＰＵの状態の制御などを行うための規格が定義されている。ＢＩＯＳは、メモリ２０上に、ＯＳとデータ通信を行うためのＡＣＰＩテーブルを作成する。ＡＣＰＩテーブルには、例えばDifferentiated System Description Table
（ＤＳＤＴ）、Secondary System Description Table（ＳＳＤＴ）、Fixed ACPI Description Table （ＦＡＤＴ）などが定義されている。ＤＳＤＴ、ＳＳＤＴには、サーバ１の
制御方法がACPI Machine Language（ＡＭＬ）と呼ばれる中間言語で記述されている。Ｏ
Ｓは、ＡＭＬを解釈してメモリ２０へのアクセスやサーバ１内の各レジスタの設定などを行う。
【００１６】
また、ＤＳＤＴやＳＳＤＴには、プロセッサの有効および無効の情報や特定のイベントが発生した場合にＯＳが実行する処理であるGeneral Purpose Event（ＧＰＥ）メソッド
（例えば、＼_GPE._TXXメソッド、以降ＧＰＥメソッドとも記載）が定義されている。こ
こで、特定のイベントとしては、例えばシステム制御割り込み（ＳＣＩ）が挙げられる。ＣＰＵ１０では、チップセット５０にあるレジスタ５１を設定することでＳＣＩ割り込みを発生させることができる。
【００１７】
図２に、本実施形態のサーバ１においてＳＣＩの割り込みが発生した場合に、ＯＳを実行するコア１１、１２によって実行される処理のフローチャートを示す。ＯＳがＧＰＥメソッドを実行させるコアをコア１１として説明する。なお、コア１１が、実行部および判定部の一例である。ＳＣＩの割り込みが発生すると、コア１１は、各要因用処理のループ処理を実行する。本実施形態では、各要因用処理の１つとして、後述するＩＦ用のメモリ領域２１の解析処理およびＢＭＣへの通知データの送信処理が挙げられる。なお、ＩＦ用のメモリ領域２１が、記憶部の一例である。ＳＣＩ割り込みが発生すると、チップセット５０内に設けられたレジスタ５１（以下、ＳＣＩ要因レジスタ５１と称する）に要因が記録される。コア１１は、ＧＰＥメソッドを呼び出し、ＳＣＩ要因レジスタ５１を確認して各要因に対応した処理を実行する。コア１１は各処理が終了した後、ＳＣＩ要因レジスタ５１をクリアする。各要因用処理が完了すると、コア１１は、ＳＣＩ要因レジスタ５１をクリアして（ＯＰ１０２）、本フローチャートの処理を完了する。
【００１８】
また、ＩＡのＣＰＵの動作モードには、システム管理モード（ＳＭＭ；System Management Mode）と呼ばれる動作モードが存在する。ＳＭＭでは、障害が発生した場合の解析処理などをＢＩＯＳ（ファームウェア）が行うため、ＯＳやアプリケーションからはアクセスできない、ファームウェアのいわゆるＳＭＭハンドラにおいて排他的に実行可能な動作モードである。また、割り込みの優先度がＳＣＩなどの他の割り込みよりも高いＳＭＩと呼ばれる割り込みによって、サーバ１内の各プロセッサがＳＭＭに遷移する。ＣＰＵ１０のいずれか１つのコアが、他のコアを管理するモナークとなり、他のプロセッサコアに処理を割り当てる。ＳＭＭでは、他の割り込み（例えばＳＣＩ割り込み）は保留され、ＳＭＭの処理が完了した後に保留された割り込みが行われる。ＳＭＭの間はすべてのＯＳやアプリケーションの処理は停止し、ＢＩＯＳのＳＭＭハンドラのみが動作し、ＳＭＭから復帰した後にＯＳやアプリケーションの処理が再開される。このため、ＳＭＭ処理時間はＯＳやアプリケーションの性能に影響を与える。
【００１９】
本実施形態では、サーバ１内のハードウェアのエラー解析処理を第１の処理の一例とし、エラー解析処理によって収集されるデータをＢＭＣ７０に送信する処理を第２の処理の一例とする。そして、ＯＳに対する割り込み処理によって排他的に第１の処理と第２の処理を実行することの一例として、ＳＭＭの割り込み処理によって第１の処理と第２の処理を実行することを挙げる。
【００２０】
サーバ１では、Correctable Error（ＣＥ）が発生すると、ハードウェアからＳＭＩ割
り込みが通知される。ＳＭＩ割り込みは各プロセッサにブロードキャストされる。ＳＭＩ
ハンドラは、ＳＭＩ割り込みによって通知されたイベントを処理するために、モナーク（monarch）と称される１つのプロセッサ（コア）を選択する。このプロセッサは、イベン
トを処理する前に、他の各プロセッサがＳＭＭ内に集結（ランデブー）するまで待つ。モナークでないプロセッサは、モナークのプロセッサがイベント処理を完了するまでＳＭＭ内に留まる。ＳＭＭの処理が完了すると、モナークのプロセッサは他のプロセッサにＳＭＭを出るよう通知する。
【００２１】
例えば、サーバ１でＣＰＵ１０やメモリ２０などのＣＥが発生した場合、ＣＰＵ１０の各コアのレジスタやメモリコントローラのレジスタにＣＥに関する情報が記録される。ＣＥ発生時にＣＰＵはCorrected Machine Check Interrupt（ＣＭＣＩ）割り込みや、ＳＭ
Ｉ割り込みを上げることができる。ＣＭＣＩ割り込みが上がった場合は、ＯＳのＣＭＣＩハンドラが動作して、ＣＥのログなどの処理を実行する。ただし、ＯＳごとにエラーをＢＭＣに通知するためのアプリケーションを作成する必要がある。
【００２２】
そこで、本実施形態では、ＳＭＭによってＣＥのログなどの処理を実行し、ＣＥの解析結果を通知データとしてＢＭＣ７０に送信する処理は、ＯＳによるＡＣＰＩのＧＰＥメソッドで実行する。なお、ここでは、ＳＭＭ内で実行される処理のうちＯＳでも実行可能な処理の一例として、ＣＥの解析結果を通知データとしてＢＭＣ７０に送信する処理を挙げる。
【００２３】
本実施形態において、サーバ１の起動時にＢＩＯＳが実行され、ＢＩＯＳはＯＳおよびＢＩＯＳがアクセス可能なインターフェイス（ＩＦ）用のメモリ領域２１をメモリ２０に確保する。図３に、ＢＩＯＳによって確保されるＩＦ用のメモリ領域２１の一例を示す。図３に示すように、ＩＦ用のメモリ領域２１は、ＯＳ通知依頼フラグ２１１およびＯＳ通知中フラグ２１２を格納する領域を有する。なお、ＯＳ通知依頼フラグ２１１が、第２の指標の一例である。また、ＯＳ通知中フラグ２１２が、第１の指標の一例である。また、以下の説明では、一例として、ＯＳ通知依頼フラグ２１１、ＯＳ通知中フラグ２１２、有効フラグ２１５は、１ビット単位のフラグとし、フラグの値が「０」である状態を「オフ」、フラグの値が「１」である状態を「オン」とする。
【００２４】
ＯＳ通知依頼フラグ２１１は、サーバ１においてＣＥが発生した場合に、ＳＭＭ内で実行されるＣＥの解析結果のデータ（通知データ）をＯＳに実行させるためのフラグである。ＯＳは、ＯＳ通知依頼フラグ２１１を参照して、ＯＳ通知依頼フラグ２１１がオンである場合に、通知データをＢＭＣ７０に通知する処理を実行する。
【００２５】
また、ＯＳ通知中フラグ２１２は、ＯＳが通知データをＢＭＣ７０に通知する処理を実行しているか否かを示す。例えば、ＯＳが通知データをＢＭＣ７０に通知する処理を実行しているときに、新たにＣＥが発生してＳＭＭによるＣＥの解析処理が実行される可能性がある。この場合、ＢＩＯＳは、ＯＳ通知中フラグ２１２を参照して、ＯＳ通知中フラグ２１２のオンオフに基づいて新たなＣＥの解析の結果の通知データをＳＭＭ内で実行するかＯＳに依頼するかを判定する。
【００２６】
また、ＩＦ用のメモリ領域２１は、ＣＥの解析の結果の通知データを格納するデータ領域２１３を有する。データ領域２１３には、データ番号２１４、有効フラグ２１５、通知データ２１６の組が格納される。ＢＩＯＳは、ＳＭＭによるＣＥの解析の結果を示す通知データをデータ領域２１３の通知データ２１６に格納し、有効フラグ２１５をオンにする。また、ＯＳは、データ領域２１３を参照し、通知データ２１４の小さい番号から大きい番号に向かって、通知データ２１４と組になっている有効フラグ２１５を確認する。そして、ＯＳは、有効フラグ２１５がオンである通知データ２１６を取得し、取得した通知データをＢＭＣ７０に送信する。
【００２７】
図４に、サーバ１内のハードウェアにおいてＣＥが発生したときにＣＰＵ１０のコア１１、１２によって実行される処理の一例を示す。サーバ１内のハードウェアにおいてＣＥが発生すると、ハードウェアの設定に従って、ＳＭＩ割り込みのメッセージがＣＰＵ１０のコア１１、１２に送信される。
【００２８】
コア１１、１２は、ＳＭＩ割り込みのメッセージを受信すると、ＳＭＭに遷移する。コア１１、１２はＳＭＭにおいてＢＩＯＳによるＳＭＭハンドラの実行を開始する。ＳＭＭにおいては、コア１１、１２のいずれかがモナークプロセッサとなる。一例として、コア１１がモナークプロセッサとなる場合について説明する。なお、ＳＭＭにおいて、サーバ１内のコアのいずれがモナークプロセッサとなるかは、ＢＩＯＳの処理論理によって決まる。例えば、ＡＰＩＣ ＩＤ（Advanced Programmable Interrupt Controller ID）がｎ番のプロセッサをモナークプロセッサとする場合、サーバ１内の各プロセッサは自身のレジスタからＡＰＩＣ ＩＤを参照することで、自身がモナークプロセッサであるか否かを判
定することができる。また、コア１１、１２は、ＳＭＭに遷移すると、自身がＳＭＭに遷移したことを示す設定を行う。
【００２９】
コア１１は、コア１２がＳＭＭに遷移したことを確認し、コア１２に図４の処理を開始するよう指示する。また、コア１１も図４の処理を開始する。コア１１、１２は、各ＳＭＭ用処理（ＯＰ２０１）のループ処理を実行する。本実施形態においては、コア１１、１２は、ＳＭＭ用処理の１つとしてＣＥのエラー解析処理を実行する。図５、６に、ＯＰ２０１において実行されるＣＥのエラー解析処理のサブルーチンを示す。なお、図５の「１」は図６の「１」に接続している。本実施形態では、サーバ１内の各ハードウェアはエラーが発生すると自身のレジスタ内のエラーレジスタにエラーの情報を格納する。サーバ１内のコア１１、１２は、それぞれのレジスタ１５、１６内の各エラーレジスタを読み出す（ＯＰ３０１のループ処理）。なお、ＯＰ３０１の処理が、第１の処理の一例である。コア１１、１２は、処理をＯＰ３０２に進める。
【００３０】
ＯＰ３０２では、コア１１、１２は、それぞれのレジスタを参照し、自身がモナークであるか否かを判定する。本実施形態では、コア１１がモナークであり、コア１２が非モナークである。したがって、コア１１は、処理をＯＰ３０２からＯＰ３０３に進め、コア１２は、処理をＯＰ３０２からＯＰ３０４に進める。コア１１は、サーバ１内のハードウェア、すなわちコア１２、メモリコントローラ１３、ＩＯコントローラ１４に対してエラーレジスタの情報をコア１１に送信するよう要求する（ＯＰ３０３）。コア１２、メモリコントローラ１３、ＩＯコントローラ１４は、コア１１からの要求に従って、エラーレジスタの情報をコア１１に送信する（ＯＰ３０４）。なお、モナークであるコア１１以外のハードウェアは、ＯＰ３０１のループ処理の結果、自身にはエラーが発生しておらず、コア１１に送信するエラー情報がない場合は、エラーが発生していないことを示す情報をコア１１に送信する。
【００３１】
次いで、コア１１は、処理をＯＰ３０５に進める。なお、コア１１は、コア１１以外のハードウェアからエラーが発生していないことを示す情報を受信することで当該ハードウェアにエラーが発生していないことを確認する。
【００３２】
ＯＰ３０５において、コア１１は、ＯＰ３０３において他のハードウェアから受信したエラーレジスタの情報に基づいて、いずれかのハードウェアにエラーが発生したか否かを判定する。いずれかのハードウェアにエラーが発生している場合は（ＯＰ３０５：Ｙｅｓ）、コア１１は、処理をＯＰ３０６に進める。一方、いずれのハードウェアにもエラーが発生していない場合は（ＯＰ３０５：Ｎｏ）、コア１１は、本フローチャートの処理を終了する。
【００３３】
ＯＰ３０６において、コア１１は、ＩＦ用のメモリ領域２１を参照し、ＯＳ通知依頼フラグ２１１がオフかつＯＳ通知中フラグ２１２がオフであるか否かを判定する。さらに、コア１１は、チップセット５０のレジスタ５１のＳＣＩ要因レジスタに要因に関する情報が格納されているか否かを判定する。ＯＳ通知依頼フラグ２１１およびＯＳ通知中フラグ２１２がオフかつＳＣＩ要因レジスタ５１に要因に関する情報が格納されている場合は（ＯＰ３０６：Ｙｅｓ）、コア１１は、処理をＯＰ３０８に進める。一方、ＯＳ通知依頼フラグ２１１およびＯＳ通知中フラグ２１２の少なくとも一方がオン、あるいはＳＣＩ要因レジスタ５１に要因に関する情報が格納されていない場合は（ＯＰ３０６：Ｎｏ）、コア１１は、処理をＯＰ３０７に進める。ＯＰ３０８では、コア１１は、ＯＰ３０３において取得したエラー情報を通知データとしてＢＭＣ７０に送信する。
【００３４】
図７に、ＯＰ３０７において実行されるＯＳ通知依頼処理のサブルーチンを示す。まず、コア１１は、以下のＯＰ４０１、ＯＰ４０２のループ処理によって、ＯＳによるＢＭＣへの通知対象となる各通知データを、メモリ２０のＩＦ用のメモリ領域２１のデータ領域２１３に格納する。このとき、コア１１は、データ領域２１３の通知データ２１６の領域のうち、有効フラグ２１５がオンでない組の通知データ２１６の領域に通知データを格納する。次いで、コア１１は、処理をＯＰ４０２に進める。ＯＰ４０２では、通知データを格納した通知データ２１６の領域と組である有効フラグ２１５をオンにする。コア１１は、各通知データに対してＯＰ４０１、ＯＰ４０２の処理を実行すると、本ループ処理を終了して処理をＯＰ４０３に進める。
【００３５】
ＯＰ４０３では、コア１１は、メモリ領域２１のＯＳ通知依頼フラグ２１１がオンであるか否かを判定する。ＯＳ通知依頼フラグ２１１がオンである場合は（ＯＰ４０３：Ｙｅｓ）、コア１１は本サブルーチンの処理を終了する。そして、コア１１は、図６に示すサブルーチンの処理に戻り、図５、６のサブルーチンの処理、すなわちＯＰ２０１の処理を終了する。一方、ＯＳ通知依頼フラグ２１１がオフである場合は（ＯＰ４０３：Ｎｏ）、コア１１は処理をＯＰ４０４に進める。ＯＰ４０４では、コア１１は、ＯＳ通知依頼フラグ２１１をオンにする。次いで、ＯＰ４０５において、コア１１は、チップセットのレジスタ５１に対してＳＣＩ割り込みの発生を設定する。これにより、ＳＭＭ用処理の終了後にＳＣＩ割り込みによって、ＯＳのＳＣＩ割り込みハンドラが動作し、以下の図８に示すサブルーチンの処理を実行することができる。ＯＰ４０５の処理の後、コア１１は本サブルーチンの処理を終了する。さらに、コア１１は、図６に示すサブルーチンの処理に戻り、図５、６のサブルーチンの処理（ＯＰ２０１）を終了する。
【００３６】
本実施形態では、図５、６のサブルーチンの処理が終了し、図４の各ＳＭＭ用処理が終了すると、コア１１、１２は、ＯＳの処理を再開する。次に、図８を参照して、コア１１、１２が実行する処理について説明する。ＯＳの処理を再開後、上記のＯＰ４０５の処理によるレジスタ５１の設定に従ってＳＣＩ割り込みを発生させた場合に、ＯＳはコア１１、１２のどちらかでＳＣＩハンドラを実行し、図２に示すフローチャートの処理を実行する。以下ＯＳはコア１１でＳＣＩハンドラを実行したとして説明する。コア１１は、ＯＰ１０１のサブルーチンの処理の一例として図８に示す処理を実行する。
【００３７】
ＯＰ５０１において、コア１１は、メモリ２０のＩＦ用のメモリ領域２１のＯＳ通知依頼フラグ２１１がオンであるか否かを判定する。ＯＰ通知依頼フラグ２１１がオンである場合は（ＯＰ５０１：Ｙｅｓ）、コア１１は、処理をＯＰ５０２に進める。一方、ＯＰ通知依頼フラグ２１１がオフである場合は（ＯＰ５０１：Ｎｏ）、コア１１は、本サブルーチンの処理を終了する。
【００３８】
ＯＰ５０２において、コア１１は、ＯＳ通知依頼フラグ２１１をオフにする。次いで、
コア１１は処理をＯＰ５０３に進める。ＯＰ５０３において、コア１１は、ＯＰ通知中フラグ２１２をオンにする。次いで、コア１１は、データ領域２１３に格納された通知データをＢＭＣ７０に通知するため、ＯＰ５０４〜ＯＰ５０６の処理を含むループ処理を実行する。なお、当該ループ処理において、コア１１は、データ番号２１４の小さい順に、すなわち図３に示す例では、データ番号２１４が「０」からＯＰ５０４〜ＯＰ５０６の処理を実行する。
【００３９】
まず、ＯＰ５０４において、コア１１は、データ番号２１４「０」と組になっている有効フラグ２１５がオンであるか否かを判定する。有効フラグ２１５がオンである場合は（ＯＰ５０４：Ｙｅｓ）、コア１１は、処理をＯＰ５０５に進める。一方、有効フラグ２１５がオフである場合は（ＯＰ５０４：Ｎｏ）、コア１１は、処理をＯＰ５０６に進める。
【００４０】
ＯＰ５０５において、コア１１は、データ番号２１４「０」と組になっている通知データ２１６の領域に格納されている通知データをＢＭＣ７０に送信する。なお、ＯＰ５０５の処理が、第２の処理の一例である。次いで、コア１１は、処理をＯＰ５０６に進める。ＯＰ５０６では、ＯＰ５０４においてオンと判定されたデータ番号２１４「０」と組になっている有効フラグ２１５をオフにする。これにより、データ番号２１４「０」と組になっている通知データ２１６の領域には、通知データを新たに格納することができる。ＯＰ５０６の処理を終了すると、コア１１は、次のデータ番号２１４「１」を対象にＯＰ５０４〜ＯＰ５０６の処理を繰り返す。
【００４１】
このように、コア１１は、データ番号２１４の小さい順に、データ番号２１４と組となっている有効フラグ２１５がオンである場合に、データ番号２１４と組となっている通知データ２１６の領域に格納されている通知データをＢＭＣに送信する。この結果、ＯＰ２０１のエラー解析処理によって収集された通知データがＢＭＣ７０に通知される。コア１１は、本ループ処理においてデータ番号２１４「Ｎ」を対象にＯＰ５０４〜ＯＰ５０６の処理を実行した後、本ループ処理を終了し、処理をＯＰ５０７に進める。ＯＰ５０７において、コア１１は、ＯＳ通知中フラグ２１２をオフにする。次いで、コア１１は、処理をＯＰ５０１に戻す。
【００４２】
以上のように、ＳＭＭ割り込みによって収集された通知データは、ＳＭＭ用処理ではなくＯＳの処理として実行される。従来は、ＯＰ３０５においてエラーが存在すると判定された場合にＯＰ３０８によって通知データをＢＭＣ７０に送信する処理が実行される。一方、本実施形態においては、ＯＰ３０５のエラー判定処理の後にＯＰ３０６、ＯＰ３０７の処理が実行される。ここで、コア１１のＯＰ３０６、ＯＰ３０７の処理は、主に各ハードウェアのレジスタへのアクセス、演算およびメモリ２０のリード／ライト処理である。これらの処理は、コア１１、１２およびメモリの動作周波数（ナノ秒単位）のオーダーで実行される。一方、通知データをＢＭＣ７０に通知する処理（数十ミリ秒単位）はＯＰ３０６、ＯＰ３０７の処理に比べると時間のかかる処理であるといえる。したがって、本実施形態によれば、時間のかかる通知データのＢＭＣ７０への通知処理をＯＳの処理とすることでＳＭＭ処理時間の短縮を図ることができる。ＳＭＭ処理時間の短縮は、ＣＰＵ１０の各コア１１、１２がＯＳ用処理に復帰するまでの時間に影響を及ぼす。すなわち、サーバに使用されるＣＰＵのコア数が多くなる程、本実施形態によるサーバの、ＳＭＭ処理によるパフォーマンス低下の抑制効果の向上がより大きく期待できる。
【００４３】
次に、本実施形態において、図４〜図７に示す処理を実行した後、図８の処理を実行しているときに、新たにＳＭＭ割り込みが発生してコア１１が図８の処理を中断して、図４〜図７に示す処理を実行する場合も想定される。そこで、以下に図８の処理中にＳＭＭ割り込みが発生した場合の処理について説明する。
【００４４】
図９に、図８の処理の異なるタイミングにおいてＳＭＭ割り込みが発生した場合（図９の「タイミング」に記載されている各タイミング）の、ＯＳ通知依頼フラグ２１１、ＯＳ通知中フラグ２１２、ＳＣＩ要因レジスタ５１の状態と、ＳＭＭ用処理において通知データをＢＭＣ７０に通知する処理が実行されるか否かを示す。
【００４５】
まず、ＳＣＩ割り込みが発生する前、すなわちコア１１、１２が図８の処理を開始する前のタイミング（図９の「タイミング」が「０：ＳＣＩ割り込み前」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１およびＯＳ通知中フラグ２１２がオフであり、ＳＣＩ要因レジスタ５１には要因に関する情報が格納されていない。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。ＳＭＭ用処理の終了後にＳＣＩ割り込みが発生するため、ＳＭＭ用処理においてエラー解析により得られる通知データは、図２、８に示すＯＳの処理によってＢＭＣ７０に送信される。
【００４６】
次に、ＳＣＩ割り込みが発生した後であって、コア１１が図８の処理を実行し、ＯＰ５０１によりＯＳ通知依頼フラグを判定する前のタイミング（図９の「タイミング」が「１：ＯＳ通知依頼フラグ判定前」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１がオンであり、ＯＳ通知中フラグ２１２がオフであり、ＳＣＩ要因レジスタ５１に要因に関する情報が格納されている。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。
【００４７】
次に、コア１１が、ＯＰ５０１でＯＳ通知依頼フラグがオンであると判定し（ＯＰ５０１：Ｙｅｓ）、ＯＰ５０２の処理を実行する前のタイミング（図９の「タイミング」が「２：ＯＳ通知依頼フラグ確認直後（ケース１）」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１がオンであり、ＯＳ通知中フラグ２１２がオフであり、ＳＣＩ要因レジスタ５１に要因に関する情報が格納されている。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。
【００４８】
次に、コア１１が、ＯＰ５０２でＯＳ通知依頼フラグをオフにし、ＯＰ５０３の処理を実行する前のタイミング（図９の「タイミング」が「３：ＯＳ通知依頼フラグをオフにした直後」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１およびＯＳ通知中フラグ２１２がオフであり、ＳＣＩ要因レジスタ５１に要因に関する情報が格納されている。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。
【００４９】
次に、コア１１が、ＯＰ５０３でＯＳ通知中フラグをオンにし、ＯＰ５０４の処理を実行する前のタイミング（図９の「タイミング」が「４：ＯＳ通知中フラグをオンにした直後」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１がオフであり、ＯＳ通知中フラグ２１２がオンであり、ＳＣＩ要因レジスタ５１に要因に関する情報が格納されている。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。
【００５０】
上記の図９の「タイミング」が「１：ＯＳ通知依頼フラグ判定前」、「２：ＯＳ通知依
頼フラグ確認直後（ケース１）」、「３：ＯＳ通知依頼フラグをオフにした直後」、「４：ＯＳ通知中フラグをオンにした直後」の場合についてさらに説明をする。これらの場合は、コア１１が図８のＯＰ５０４〜ＯＰ５０６の通知データをＢＭＣ７０に送信する処理を実行する前のタイミングである。また、新たなＳＭＭ割り込みによって収集された新たな通知データは、ＩＦ用のメモリ領域２１のデータ領域２１３に格納される。そして、ＳＭＭ用処理の終了後に、各タイミングで中断された図８の処理が再開される。この結果、コア１１は、ＯＰ５０４〜ＯＰ５０６の処理により、新たなＳＭＭ割り込みが発生する前にデータ領域２１３に格納されていた通知データと新たなＳＭＭ割り込みによって収集された通知データとをＢＭＣ７０に送信する。
【００５１】
次に、コア１１が、ＯＰ５０４〜ＯＰ５０６のループ処理を実行しているタイミング（図９の「タイミング」が「５：通知データの送信中」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１がオフであり、ＯＳ通知中フラグ２１２がオンであり、ＳＣＩ要因レジスタ５１に要因に関する情報が格納されている。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。
【００５２】
上記の図９の「タイミング」が「５：通知データの送信中」の場合についてさらに説明をする。これらの場合は、コア１１が図８のＯＰ５０４〜ＯＰ５０６の通知データをＢＭＣ７０に送信する処理を実行しているタイミングである。また、新たなＳＭＭ割り込みによって収集された新たな通知データは、ＩＦ用のメモリ領域２１のデータ領域２１３に格納される。さらに、ＯＰ４０３、ＯＰ４０４の処理によってＯＳ通知依頼フラグがオンにされる。そして、ＳＭＭ用処理の終了後に、図８の処理が再開される。
【００５３】
例えば、コア１１が、データ番号２１４が「ｋ」（ｋ＝１〜Ｎ）の組を対象にＯＰ５０４〜ＯＰ５０６の処理を実行しているときに、上記の新たなＳＭＭ割り込みが発生したと想定する。そして、新たなＳＭＭ割り込みによって収集された新たな通知データが、データ番号２１４が「ｋ」より小さい番号「ｍ」（ｋ＞ｍ≧０）の組のデータ領域２１３に格納されたと想定する。この場合、図８の処理が再開されても、コア１１は、データ番号２１４が「ｋ」以上の番号の組を対象にＯＰ５０４〜ＯＰ５０６の処理を実行する。このため、データ番号２１４が「ｍ」の組のデータ領域２１３に格納された通知データがＢＭＣ７０に送信されないまま、コア１１はＯＰ５０４〜ＯＰ５０６のループ処理を終了する。ただし、上記の通りＯＳ通知依頼フラグがオンにされているため、コア１１は、処理をＯＰ５０７からＯＰ５０１に戻したときにＹｅｓと判定して処理をＯＰ５０２に進める。この結果、コア１１は、再度ＯＰ５０４〜ＯＰ５０６の処理を実行するため、データ番号２１４が「ｍ」の組のデータ領域２１３に格納された通知データがＢＭＣ７０に送信される。このように、新たなＳＭＭ割り込みによって収集された通知データもＢＭＣ７０に送信される。
【００５４】
次に、コア１１が、ＯＰ５０７からＯＰ５０１に戻ってＯＰ５０１の判定処理を実行し（ＯＰ５０１：Ｎｏ）、図８の処理を終了する前のタイミング（図９の「タイミング」が「６：ＯＳ通知依頼フラグ確認直後（ケース２）」の場合）について説明する。このタイミングでは、上記の「ケース１」のタイミングとは異なり、ＯＳ通知依頼フラグ２１１がオフおよびＯＳ通知中フラグ２１２がオフであり、ＳＣＩ要因レジスタ５１に要因に関する情報が格納されている。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。
【００５５】
この場合においては、仮に新たなＳＭＭ割り込みによって収集された通知データをデータ領域２１３に格納しても、コア１１はＳＭＭ用処理を終了して図８の処理を再開すると
、図８の処理を終了してＯＰ１０２によってＳＣＩ要因レジスタ５１をクリアする。すなわち、新たなＳＭＭ割り込みによって収集された通知データはＢＭＣ７０に送信されない。そこで、本実施形態では、コア１１は、ＯＰ３０６における判定処理においてＹｅｓと判定してＯＰ３０８のＢＭＣ通知処理を実行する。この結果、新たなＳＭＭ割り込みによって収集された通知データは、ＳＭＭ内の処理によってＢＭＣ７０に送信される。
【００５６】
次に、コア１１が、図８の処理を終了してＯＰ１０２の処理を実行した後のタイミング（図９の「タイミング」が「７：ＳＣＩ要因レジスタをクリアした後」の場合）について説明する。このタイミングでは、ＯＳ通知依頼フラグ２１１がオフおよびＯＳ通知中フラグ２１２がオフであり、ＳＣＩ要因レジスタ５１に要因に関する情報は格納されていない。そして、このタイミングで新たにＳＭＭ割り込みが発生した場合、コア１１、１２は上記のＳＭＭ用処理を実行する。さらに、コア１１は、ＯＰ３０６における判定処理においてＮｏと判定してＯＰ３０７のＯＳ通知依頼処理を実行する。この結果、ＳＭＭ用処理においてエラー解析により得られる通知データは、ＳＭＭ内の処理ではなくＯＳの処理によってＢＭＣ７０に送信される。
【００５７】
このように、本実施形態によれば、コア１１が図８の処理を実行しているときに新たなＳＭＭ割り込みが発生しても、新たに収集された通知データがＢＭＣ７０に送信される。
【００５８】
以上が本実施形態に関する説明であるが、上記のサーバなどの構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。例えば、上記の実施形態では、コア１１が図２、８に示す処理を実行するが、ＯＳ通知依頼フラグ２１１やＯＳ通知中フラグ２１２の設定の排他制御を行い、データ２１４の内担当するデータを分ける等してサーバ１内の複数のコアが図２、８に示す処理を分担して実行してもよい。
【００５９】
また、上記の実施形態において、上記の少なくとも一部の処理は、ＣＰＵ以外のプロセッサ、例えば、Digital Signal Processor(ＤＳＰ)、Graphics Processing Unit（ＧＰＵ）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われてもよい。また、上記の少なくとも一部の処理は、集積回路（ＩＣ）、その他のディジタル回路であってもよい。また、上記各部の少なくとも一部にアナログ回路が含まれてもよい。集積回路は、ＬＳＩ、Application Specific Integrated Circuit（ＡＳＩ
Ｃ）、プログラマブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは、例えば、Field-Programmable Gate Array(ＦＰＧＡ)を含む。上記各部は、プロセッサと集積回路との組み
合わせであってもよい。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ）、System-on-a-Chip（ＳｏＣ）、システムＬＳＩ、チップセットなどと呼ばれる。
【００６０】
＜コンピュータが読み取り可能な記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記サーバの設定を行うための管理ツール、ＯＳその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００６１】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【００６２】
以上の実施形態に関し、さらに以下の付記を開示する。
【００６３】
（付記１）
Operating System（ＯＳ）に対する割り込み処理によって排他的に第１の処理と前記第１の処理の結果に関するデータを使用する第２の処理とを実行することが可能な実行部と、
前記ＯＳおよび前記割り込み処理がアクセス可能な記憶部と、
を備え、
前記実行部は、前記記憶部に前記データを記憶し、前記第２の処理を前記ＯＳに実行させるための処理を実行する
ことを特徴とする情報処理装置。
【００６４】
（付記２）
前記第２の処理を前記ＯＳにより実行可能であるか否かを判定する判定部
をさらに備え、
前記第２の処理を前記ＯＳにより実行可能であると判定された場合に、前記実行部は、前記記憶部に前記データを記憶し、前記第２の処理を前記ＯＳに実行させるための処理を実行する
ことを特徴とする付記１に記載の情報処理装置。
【００６５】
（付記３）
前記記憶部は、前記ＯＳが前記第２の処理を実行中であるか否かを示す第１の指標を格納し、
前記判定部は、前記第１の指標が前記ＯＳが前記第２の処理を実行中であることを示す場合に、前記第２の処理を前記ＯＳにより実行可能であると判定する
ことを特徴とする付記２に記載の情報処理装置。
【００６６】
（付記４）
前記記憶部は、前記ＯＳに前記第２の処理を実行させるか否かを示す第２の指標を格納し、
前記判定部は、前記第２の処理を前記ＯＳにより実行可能であると判定したときに、前記ＯＳに前記第２の処理を実行させることを示すように前記第２の指標を設定し、
前記ＯＳは、前記第２の指標が前記ＯＳに前記第２の処理を実行させることを示す場合に、前記ＯＳに前記第２の処理を実行させないことを示すように前記第２の指標を設定してから前記第２の処理を実行し、
前記判定部は、前記第２の指標が前記ＯＳに前記第２の処理を実行させることを示す間は、前記第２の処理を前記ＯＳにより実行可能であると判定する
付記２または３に記載の情報処理装置。
【００６７】
（付記５）
コンピュータに
ＯＳに対する割り込み処理によって排他的に第１の処理を実行させ、
前記ＯＳおよび前記割り込み処理がアクセス可能な記憶部に、前記第１の処理の結果に関するデータを記憶させ、
前記データを使用する第２の処理を前記ＯＳに実行させるための処理を実行させる
ことを特徴とするプログラム。
【００６８】
（付記６）
前記コンピュータに、
前記第２の処理を前記ＯＳにより実行可能であるか否かを判定させ、
前記第２の処理を前記ＯＳにより実行可能であると判定した場合に、前記記憶部に前記データを記憶させ、前記第２の処理を前記ＯＳに実行させるための処理を実行させる
ことを特徴とする付記５に記載のプログラム。
【００６９】
（付記７）
前記ＯＳが第１の指標によって前記ＯＳが前記第２の処理を実行中であるか否かを示し、
前記コンピュータに、
前記第１の指標が前記ＯＳが前記第２の処理を実行中であることを示す場合に、前記第２の処理を前記ＯＳにより実行可能であると判定させる
ことを特徴とする付記６に記載のプログラム。
【００７０】
（付記８）
前記コンピュータに、
第２の指標によって前記ＯＳに前記第２の処理を実行させるか否かを示させ、
前記第２の処理を前記ＯＳにより実行可能であると判定したときに、前記ＯＳに前記第２の処理を実行させることを示すように前記第２の指標を設定させ、
前記ＯＳは、前記第２の指標が前記ＯＳに前記第２の処理を実行させることを示す場合に、前記ＯＳに前記第２の処理を実行させないことを示すように前記第２の指標を設定してから前記第２の処理を実行し、
前記コンピュータに、前記第２の指標が前記ＯＳに前記第２の処理を実行させることを示す間は、前記第２の処理を前記ＯＳにより実行可能であると判定させる
ことを特徴とする付記６または７に記載のプログラム。
【符号の説明】
【００７１】
１    サーバ
１０    ＣＰＵ
１１、１２    コア
１５、１６、５１    レジスタ
２０    メモリ
７０    ＢＭＣ
【図１】
2018055337.tif 000003
【図２】
2018055337.tif 000004
【図３】
2018055337.tif 000005
【図４】
2018055337.tif 000006
【図５】
2018055337.tif 000007
【図６】
2018055337.tif 000008
【図７】
2018055337.tif 000009
【図８】
2018055337.tif 000010
【図９】
2018055337.tif 000011