(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-13
(45)【発行日】2024-02-21
(54)【発明の名称】PCIeデバイス、障害復旧方法、プログラム
(51)【国際特許分類】
G06F 13/38 20060101AFI20240214BHJP
G06F 3/00 20060101ALI20240214BHJP
G06F 11/07 20060101ALI20240214BHJP
【FI】
G06F13/38 320A
G06F13/38 350
G06F3/00 B
G06F11/07 196
(21)【出願番号】P 2020036050
(22)【出願日】2020-03-03
【審査請求日】2023-02-08
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100106909
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100134544
【氏名又は名称】森 隆一郎
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100162868
【氏名又は名称】伊藤 英輔
(72)【発明者】
【氏名】松下 潤一
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2019-159439(JP,A)
【文献】特開2013-117930(JP,A)
【文献】特開2008-046722(JP,A)
【文献】特開2010-191814(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/00
G06F11/07、11/28-11/36
G06F13/10-13/14
G06F13/20-13/42
(57)【特許請求の範囲】
【請求項1】
障害管理部と仮想PCIeスイッチを備えるPCIeデバイスであって、
前記障害管理部にて障害を検出すると、前記仮想PCIeスイッチは
Attention Button Pressedレジスタをセットして、ソフトウェアからの動的な切り離し要求を行い、
前記ソフトウェアからの動的な切り離し完了後、前記障害管理部は外部デバイスに対して再初期化指示を行って障害復旧処理を実行させ、
前記外部デバイスによる障害復旧処理後、前記障害管理部は前記仮想PCIeスイッチに対して再接続を通知し、
前記仮想PCIeスイッチは
前記Attention Button Pressedレジスタを再度セットして前記ソフトウェアとの動的な再接続の要求を行う、
PCIeデバイス。
【請求項2】
前記ソフトウェアからの動的な切り離し要求はHotRemoval要求であり、前記ソフトウェアでのHotRemoval処理完了が前記
Attention Button Pressedレジスタに反映され、その後、前記PCIe
デバイスは前記ソフトウェアから切り離されたように振る舞う、請求項1に記載のPCIeデバイス。
【請求項3】
前記ソフトウェアとの動的な再接続の要求はHotInsertion要求であり、前記ソフトウェアでのHotInsertion処理完了が前記
Attention Button Pressedレジスタに反映され、その後、前記PCIe
デバイスは前記ソフトウェアと再接続されたように振る舞う、請求項1に記載のPCIeデバイス。
【請求項4】
PCIeデバイスの障害復旧方法であって、
前記PCIeデバイスの障害を
障害管理部が検出し、
前記PCIeデバイスに搭載される仮想PCIeスイッチの
Attention Button Pressedレジスタを
前記仮想PCIeスイッチがセットして、前記PCIeデバイスの動的な切り離し要求を行い、
前記PCIeデバイスの障害復旧処理を行うために前記PCIeデバイスの再初期化処理を
前記障害管理部が実行し、
前記仮想PCIeスイッチの
前記Attention Button Pressedレジスタを
前記仮想PCIeスイッチが再度セットして、前記PCIeデバイスの動的な組み込み要求を行い、
前記PCIeデバイスを障害状態から
前記障害管理部が復帰させる、
障害復旧方法。
【請求項5】
PCIeデバイスの障害を検出する処理過程と、
前記PCIeデバイスに搭載される仮想PCIeスイッチの
Attention Button Pressedレジスタをセットして、前記PCIeデバイスの動的な切り離し要求を行う処理過程と、
前記PCIeデバイスの障害復旧処理を行うために前記PCIeデバイスの再初期化処理を実行する処理過程と、
前記仮想PCIeスイッチの
前記Attention Button Pressedレジスタを再度セットして、前記PCIeデバイスの動的な組み込み要求を行う処理過程と、
前記PCIeデバイスを障害状態から復帰させる処理過程と、
を実行するプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、PCIeデバイス、障害復旧方法、プログラムに関する。
【背景技術】
【0002】
近年、IoT(Internet of Things)機器の開発に伴い、センサやIT(Information Technology)機器と連携するためにイーサネット(登録商標)を拡張する技術が開発されており、PCIエクスプレス(Peripheral Component Interconnect Express、以下「PCIe」と称する)が活用されている。また、PCI―SIG(PCI Special Interest Group)により種々の仕様書(PCI Express Base Specification)が策定されている。
【0003】
PCIeデバイスの障害復旧方法に関する文献として、特許文献1は、計算機システムにおけるI/Oアダプタの障害処理方法を開示している。この技術は、ファームウェアで検出されないドライバ検出障害をオペレーティングシステム(OS)のログを監視することで検出し、さらに、BIOS(Basic Input/Output System)を起動して障害発生部位を閉塞処理することで、ドライバ検出障害後のPCIeデバイスをI/Oアクセスに対して無応答を実現するものである。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
近年のPCIeデバイスでは、独自のRAS(Reliability Availability Serviceability)機能を搭載しているものが増えている。例えば、PCIeデバイスにて致命的な障害を検出した場合でも、PCIeデバイス自体の再初期化を独自に行うことにより、致命的な障害から復帰させるものがある。PCIeデバイスの再初期化を行うとき、PCIeは一旦リンクダウンすることが考えられるが、ソフトウェア(OSなど)がPCIeデバイスの再初期化を認識していない状況では、サプライズリンクダウンに繋がり、OSパニックなどの問題が発生する。しかし、ソフトウェア(OSやBIOS)に依拠した特許文献1の技術ではこの問題に対応できない。
【0006】
一方、PCI-SGによりPCIeデバイスの動的な切り離し/接続について仕様書が策定されているが、例えば、専用のHotPlug機構をPCIeデバイスに接続されるサーバ本体装置に搭載する必要がある。しかし、一般的に用いられる安価なサーバ本体装置では、専用のHotPlug機構を備えているものが少なく、PCIeデバイスの障害復旧を目的としたPCIeデバイスの動的な切り離し/接続を安全に行うことができないという課題がある。
【0007】
本発明は、上述の課題を解決するPCIeデバイス、障害復旧方法、プログラムである。
【課題を解決するための手段】
【0008】
本発明の第1の態様によれば、PCIeデバイスは障害管理部と仮想PCIeスイッチを備える。障害管理部にて障害を検出すると、仮想PCIeスイッチはAttention Button Pressedレジスタをセットして、ソフトウェアからの動的な切り離し要求を行う。ソフトウェアからの動的な切り離し完了後、障害管理部は外部デバイスに対して再初期化指示を行って障害復旧処理を実行させる。外部デバイスによる障害復旧処理後、障害管理部は仮想PCIeスイッチに対して再接続を通知し、仮想PCIeスイッチはAttention Button Pressedレジスタを再度セットしてソフトウェアとの動的な再接続の要求を行う。
【0009】
本発明の第2の態様によれば、PCIeデバイスの障害復旧方法は、PCIeデバイスの障害を検出し、PCIeデバイスに搭載される仮想PCIeスイッチのAttention Button Pressedレジスタをセットして、PCIeデバイスの動的な切り離し要求を行う。また、PCIeデバイスの障害復旧処理を行うためにPCIeデバイスの再初期化処理を実行する。その後、仮想PCIeスイッチのAttention Button Pressedレジスタを再度セットして、PCIeデバイスの動的な組み込み要求を行い、PCIeデバイスを障害状態から復帰させる。
【発明の効果】
【0010】
本発明によれば、障害時におけるPCIeデバイスの動的な切り離しや、復旧時におけるPCIeデバイスの動的な接続を安全に行うことができるという効果が得られる。
【図面の簡単な説明】
【0011】
【
図1】本発明の一実施形態に係るPCIeデバイスの構成を示すブロック図である。
【
図2】本発明の一実施形態に係るPCIeデバイスの障害復旧処理を示すフローチャートである。
【
図3】本発明に係るPCIeデバイスの基本構成例を示すブロック図である。
【
図4】本発明に係るPCIeデバイスの障害復旧方法の基本手順を示すシーケンス図である。
【発明を実施するための形態】
【0012】
以下、本発明の一実施形態によるPCIeデバイスおよびPCIeデバイスの障害復旧方法について添付図面を参照して詳細に説明する。
図1は、本発明の一実施形態に係るPCIeデバイスの構成を示すブロック図である。PCIeデバイス4は、障害管理部1と、仮想PCIeスイッチ2と、PCIeインタフェース(I/F)3と、を具備して、外部デバイス(例えば、マイクロコンピュータ)5と通信接続される。また、PCIeデバイス4は、PCIeインタフェース3を介してソフトウェアと連携している。
【0013】
次に、PCIeデバイス4の動作について説明する。障害管理部1は、PCIeデバイス4の障害を監視する。障害管理部1がPCIeデバイス4において発生した障害を検出すると、仮想PCIeスイッチ2に対して障害検出通知aを送出する。仮想PCIeスイッチ2は、複数のコンフィギュレーションレジスタを備えており、その内の「Attention Button Pressedレジスタ」をセットすることで、仮想的にAttentionボタンが押された状態を実現し、PCIeインタフェース3を介してソフトウェアに対してPCIeデバイス4のHotPlug要求(又は、HotRemoval要求)bを送出する。ソフトウェアでのHotRemoval処理が終了すると、その処理結果がコンフィグレーションレジスタに反映され、仮想PCIeスイッチ2は障害管理部1に対してHotPlug完了通知(または、HotRemoval完了通知)cを送出する。これ以降、仮想PCIeスイッチ2は、PCIeデバイス4が切り離されたように振る舞う。
【0014】
HotPlug完了通知cを受けた障害管理部1は、外部デバイス5に対してPCIeデバイス4の再初期化指示dを送出する。再初期化指示dを受けた外部デバイス5は、PCIeデバイス4の障害復旧処理を行う。その後、外部デバイス5は、PCIeデバイス4の障害復旧の完了を示す障害復旧完了通知eを障害管理部1へ送出する。障害復旧完了通知eを受けた障害管理部1は、PCIeデバイス4の再接続のために、仮想PCIeスイッチ2に対して再接続通知fを送出する。再接続通知fを受けた仮想PCIeスイッチ2は、コンフィギュレーションレジスタ内の「Attention Button Pressedレジスタ」を再度セットすることで、仮想的にAttentionボタンが押された状態を実現し、PCIeインタフェース3を介してソフトウェアに対してPCIeデバイス4のHotPlug要求(または、HotInsertion要求)gを送出する。これにより、ソフトウェアにおいてHotInsertion処理が実行される。ソフトウェアにおいてHotInsertion処理が終了すると、その処理結果がコンフィギュレーションレジスタに反映さる。これ以降、仮想PCIeスイッチ2は、PCIeデバイス1が再接続されたように振る舞う。
【0015】
次に、
図2を参照して、PCIeデバイス4の障害復旧処理について詳細に説明する。
図2の障害復旧処理は、ステップS1乃至S9を含んでいる。まず、障害管理部1がPCIeデバイス4の障害を検出すると(S1、Yes)、仮想PCIeスイッチ2に対してPCIeデバイス4のソフトウェアからの切り離し要求(または、削除要求)を行う(S2)。ソフトウェアからの切り離し要求を受けた仮想PCIeスイッチ2は、コンフィギュレーションレジスタ内の「Attention Button Pressedレジスタ」をセットすることで、仮想的にAttentionボタンが押された状態とし、ソフトウェアに対し切り離し要求に係る通知(割り込み通知)を行う(S3)。
【0016】
その後、ソフトウェアによる切り離し処理が完了したことを確認(または、削除確認)すると(S4、Yes)、障害管理部1は、障害復旧を行うために、仮想PCIeスイッチ2を除いて、PCIeデバイス4の再初期化処理を指示する(S5)。障害管理部1がPCIeデバイス4の再初期化の完了を確認すると(S6、Yes)、仮想PCIeスイッチ2は、再度コンフィグレーションレジスタ内の「Attention Button Pressedレジスタ」をセットすることで仮想的にAttentionボタンが押された状態とし、ソフトウェアに対して組み込み要求(S7)や割り込み通知(S8)を行う。
【0017】
障害管理部1は、ソフトウェアによる組み込み処理が完了したことを確認すると(S9、Yes)PCIeデバイス4を障害状態から復帰させる。このようにして、専用のHotPlug機構を有しない外部デバイス5と接続されたPCIeデバイス4に障害が発生しても、仮想PCIeスイッチ2のコンフィグレーションレジスタを設定することにより、PCIeデバイス4をソフトウェアから動的に切り離した後に、障害復旧後に、PCIeデバイス4をソフトウェアに動的に再接続することができる。
【0018】
上述の実施形態では、外部デバイス5をPCIeデバイス4に接続して再初期化を行うものとしたが、これは、再初期化処理を制限するものではない。例えば、PCIeデバイス4にLED(Light-Emitting Diode)やボタンなどを実装し、管理者がLEDを目視することにより、ボタンを押して手動で再初期化処理を実行するようにしてもよい。
【0019】
次に、本発明に係るPCIeデバイスの構成について
図3を参照して説明する。
図3は、PCIeデバイス4の基本的な構成例を示すブロック図である。PCIeデバイス4は、障害管理部1と仮想PCIeスイッチ2とを備えている。仮想PCIeスイッチ2には、コンフィグレーションレジスタとして「Attention Button Pressedレジスタ」が備えられている。
【0020】
次に、本発明に係るPCIeデバイス4の障害復旧処理について
図4を参照して説明する。
図4は、PCIeデバイス4の障害管理部1と仮想PCIeスイッチ2の動作を示すシーケンス図であり、大別すると、3つの手順(I)乃至(III)より構成される。
(I)障害管理部1は、PCIeデバイス4において発生した障害を検出すると、仮想PCIeスイッチ2に対して障害検出通知aを送出する。仮想PCIeスイッチ2は、仮想的にAttentionボタンが押された状態を実現し、ソフトウェアに対してPCIeデバイス4のHotPlug要求(又は、HotRemoval要求)bを送出する。
(II)ソフトウェアでのHotRemoval処理が終了すると、その処理結果がコンフィグレーションレジスタに反映され、仮想PCIeスイッチ2は障害管理部1に対してHotPlug完了通知(または、HotRemoval完了通知)cを送出する。HotPlug完了通知cを受けた障害管理部1は、外部デバイスに対してPCIeデバイス4の再初期化指示dを送出する。
(III)外部デバイスは障害復旧処理を実行し、その後、PCIeデバイス4の障害復旧の完了を示す障害復旧完了通知eを障害管理部1へ送出する。障害復旧完了通知eを受けた障害管理部1は、PCIeデバイス4の再接続のために、仮想PCIeスイッチ2に対して再接続通知fを送出する。再接続通知fを受けた仮想PCIeスイッチ2は、再度、仮想的にAttentionボタンが押された状態を実現し、ソフトウェアに対してPCIeデバイス4のHotPlug要求(または、HotInsertion要求)gを送出する。これにより、ソフトウェアにおいてHotInsertion処理が実行される。ソフトウェアにおいてHotInsertion処理が終了すると、その処理結果がコンフィギュレーションレジスタに反映される。
【0021】
この結果、(I)障害が発生したPCIeデバイス4を動的にソフトウェアから切り離し、(II)PCIeデバイス4の再初期化処理を行い、(III)障害復旧したPCIeデバイス1を動的にソフトウェアに再接続する。このような手順により、PCIeデバイスの障害復旧処理を実現することができる。
【0022】
上述のPCIeデバイスは、プロセッサやメモリを備えており、PCIeデバイスの障害復旧処理がプログラムとしてメモリに記憶され、プロセッサは、該プログラムをメモリから読み出して実行することにより、上述の実施形態にて説明した障害管理部やPCIeスイッチ(コンフィギュレーションレジスタ)の機能を実現するとともに、PCIeデバイスの障害復旧処理を実現することができる。
【0023】
最後に、本発明は上述の実施形態や変形例に限定されるものではなく、特許請求の範囲に規定した発明の保護範囲内における種々の設計変更や改変をも包含するものである。
【産業上の利用可能性】
【0024】
本発明は、本実施形態で説明したPCIeデバイスのみならず、他のIoT機器やリモート制御装置などにも適用可能であり、障害が発生した機器を動的に切り離し、障害復旧処理後に、該機器を動的に再接続するという手順を実施することにより、安全かつ迅速な障害復旧を実現することができる。
【符号の説明】
【0025】
1 障害管理部
2 仮想PCIeスイッチ
3 PCIeインタフェース
4 PCIeデバイス
5 外部デバイス