IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社PFUの特許一覧

<>
  • 特許-コンピュータ装置及び再起動方法 図1
  • 特許-コンピュータ装置及び再起動方法 図2
  • 特許-コンピュータ装置及び再起動方法 図3
  • 特許-コンピュータ装置及び再起動方法 図4
  • 特許-コンピュータ装置及び再起動方法 図5
  • 特許-コンピュータ装置及び再起動方法 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-02
(45)【発行日】2023-08-10
(54)【発明の名称】コンピュータ装置及び再起動方法
(51)【国際特許分類】
   G06F 13/00 20060101AFI20230803BHJP
   G06F 11/14 20060101ALI20230803BHJP
【FI】
G06F13/00
G06F11/14 643
【請求項の数】 4
(21)【出願番号】P 2019135516
(22)【出願日】2019-07-23
(65)【公開番号】P2021018731
(43)【公開日】2021-02-15
【審査請求日】2022-03-16
(73)【特許権者】
【識別番号】000136136
【氏名又は名称】株式会社PFU
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】岸 祐介
【審査官】金田 孝之
(56)【参考文献】
【文献】特開2013-117930(JP,A)
【文献】米国特許出願公開第2016/0077841(US,A1)
【文献】中国特許出願公開第106649021(CN,A)
【文献】特開平10-215295(JP,A)
【文献】特開2009-259217(JP,A)
【文献】特表2008-547362(JP,A)
【文献】特開2013-162155(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06F 9/4401
G06F 11/14
G06F 11/07
G06F 11/28-11/36
(57)【特許請求の範囲】
【請求項1】
外部機器を接続可能なコンピュータ装置であって、
前記外部機器と通信可能なチップセットであって、前記コンピュータ装置と前記外部機器との通信状態を示す値を実測して前記通信状態の実測値を取得する前記チップセットと、
前記チップセットの通信能力を示す第一能力値、及び、前記外部機器の通信能力を示す第二能力値のうち小さい方の値を前記通信状態の期待値に設定し、前記実測値と前記期待値とを比較し、前記実測値が前記期待値と異なるときに前記外部機器を再起動させ、前記外部機器を再起動させた後に前記実測値が前記期待値と一致するか否かの判定を行う処理を複数回実行し、複数回実行する前記処理の最中に前記実測値が前記期待値と一致したとき、または、前記実測値が前記期待値と一致することなく前記処理の回数が所定回数に達したときにOSを起動させるCPUと、
を具備するコンピュータ装置。
【請求項2】
前記実測値、前記第一能力値、前記第二能力値、及び、前記期待値は、前記コンピュータ装置と前記外部機器との間のリンクスピードであり、
前記CPUは、前記実測値の前記リンクスピードが前記期待値の前記リンクスピードと異なるときに前記外部機器を再起動させる、
請求項1に記載のコンピュータ装置。
【請求項3】
前記実測値、前記第一能力値、前記第二能力値、及び、前記期待値は、前記コンピュータ装置と前記外部機器との間のリンクスピード及びリンク幅であり、
前記CPUは、前記実測値の前記リンクスピードまたは前記リンク幅が前記期待値の前記リンクスピードまたは前記リンク幅と異なるときに前記外部機器を再起動させる、
請求項1に記載のコンピュータ装置。
【請求項4】
外部機器を接続可能なコンピュータ装置が、
前記コンピュータ装置と前記外部機器との通信状態を示す値を実測して前記通信状態の実測値を取得し、
前記コンピュータ装置の通信能力を示す第一能力値、及び、前記外部機器の通信能力を示す第二能力値のうち小さい方の値を前記通信状態の期待値に設定し、
前記実測値と前記期待値とを比較し、
前記実測値が前記期待値と異なるときに前記外部機器を再起動させ
前記外部機器を再起動させた後に前記実測値が前記期待値と一致するか否かの判定を行う処理を複数回実行し、複数回実行する前記処理の最中に前記実測値が前記期待値と一致したとき、または、前記実測値が前記期待値と一致することなく前記処理の回数が所定回数に達したときにOSを起動させる、
再起動方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ装置及び再起動方法に関する。
【背景技術】
【0002】
パーソナルコンピュータやサーバ等のコンピュータ装置の機能を拡張するために、Peripheral Component Interconnect Express(以下では「PCIe」と呼ぶことがある)デバイスがコンピュータ装置に接続されることがある。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2013-117930号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
PCIeデバイスには様々なものが存在するため、様々なPCIeデバイスの中には、PCIeデバイスが接続されたコンピュータ装置との相性が悪いものも存在する。コンピュータ装置との相性が悪いPCIeデバイスがコンピュータ装置に接続されると、コンピュータ装置とPCIeデバイスとの間の通信状態が期待通りにならないことがある。
【0005】
このように、コンピュータ装置とPCIeデバイスとの間の通信状態が期待通りにならなかった際に期待通りの通信状態を獲得するためには、従来は、PCIeデバイスを一旦リセットするために、PCIeデバイスが接続されたコンピュータ装置自体の再起動を試みていた。
【0006】
開示の技術は、コンピュータ装置自体の再起動が必要となる事態の発生率を減少させることを目的とする。
【課題を解決するための手段】
【0007】
開示の態様では、外部機器を接続可能なコンピュータ装置は、チップセットと、CPUとを有する。前記チップセットは、前記外部機器と通信可能であって、前記コンピュータ装置と前記外部機器との通信状態を示す値を実測して前記通信状態の実測値を取得する。前記CPUは、前記チップセットの通信能力を示す第一能力値、及び、前記外部機器の通信能力を示す第二能力値のうち小さい方の値を前記通信状態の期待値に設定し、前記実測値と前記期待値とを比較し、前記実測値が前記期待値と異なるときに前記外部機器を再起動させる。
【発明の効果】
【0008】
開示の態様によれば、コンピュータ装置自体の再起動が必要となる事態の発生率を減少させることができる。
【図面の簡単な説明】
【0009】
図1図1は、本開示の実施例1のコンピュータ装置の構成例を示す図である。
図2図2は、本開示の実施例1のコンピュータ装置の処理手順の一例を示すフローチャートである。
図3図3は、本開示の実施例1のコンピュータ装置の動作例を示す図である。
図4図4は、本開示の実施例2のコンピュータ装置の構成例を示す図である。
図5図5は、本開示の実施例2のコンピュータ装置の処理手順の一例を示すフローチャートである。
図6図6は、本開示の実施例2のコンピュータ装置の動作例を示す図である。
【発明を実施するための形態】
【0010】
以下、本開示の実施例を図面に基づいて説明する。なお、以下の実施例により本開示のコンピュータ装置及び再起動方法が限定されるものではない。また、以下の実施例において同一の機能を有する構成には同一の符号を付す。また、以下では、コンピュータ装置の機能を拡張するために、コンピュータ装置の外部からコンピュータ装置に接続可能なデバイスを「外部機器」と総称することがある。
【0011】
[実施例1]
<コンピュータ装置の構成>
図1は、本開示の実施例1のコンピュータ装置の構成例を示す図である。図1において、コンピュータ装置2Aは、CPU(Central Processing Unit)21と、メモリ22と、チップセット23と、デバイス検出回路24と、PCIeポート25とを有する。チップセット23は、ケイパビリティレジスタ231と、リンクステータスレジスタ232とを有する。
【0012】
PCIeポート25にPCIeデバイス3が装着されることにより、CPU21、チップセット23及びデバイス検出回路24の各々と、PCIeデバイス3とが接続される。CPU21及びチップセット23の各々とPCIeデバイス3とが接続されることにより、CPU21及びチップセット23の各々と、PCIeデバイス3とが、相互に通信可能となる。PCIeデバイス3は、レジスタ31を有する。PCIeデバイス3は外部機器の一例である。
【0013】
<コンピュータ装置における処理手順>
図2は、本開示の実施例1のコンピュータ装置の処理手順の一例を示すフローチャートである。図2に示すフローチャートは、コンピュータ装置2Aの電源投入時(つまり、コンピュータ装置2Aの起動時)に開始される。
【0014】
ステップS101では、CPU21は、PCIeデバイス3がコンピュータ装置2Aに接続されているか否かを判定する。デバイス検出回路24は、PCIeデバイス3がコンピュータ装置2Aに接続されたときに、PCIeデバイス3がコンピュータ装置2Aに接続されたことを検出し、PCIeデバイス3がコンピュータ装置2Aに接続されたことを検出したことを示す通知(以下では「PCIeデバイス検出通知」と呼ぶことがある)をCPU21へ送信する。コンピュータ装置2Aの電源投入後にCPU21がPCIeデバイス検出通知を受信していないときは、CPU21は、PCIeデバイス3がコンピュータ装置2Aに接続されていないと判定するため(ステップS101:No)、処理はステップS139へ進む。一方で、コンピュータ装置2Aの電源投入後にCPU21がPCIeデバイス検出通知を受信しているときは、CPU21は、PCIeデバイス3がコンピュータ装置2Aに接続されていると判定するため(ステップS101:Yes)、処理はステップS103へ進む。
【0015】
ステップS103では、CPU21は、第一リトライカウンタn及び第二リトライカウンタmを「0」にリセットする。第一リトライカウンタn及び第二リトライカウンタmは、メモリ22に記憶されている。
【0016】
次いで、ステップS105では、CPU21は、PCIeポート25を有効にする。
【0017】
次いで、ステップS107では、CPU21は、トレーニングシーケンスの実行指示(以下では「TS実行指示」と呼ぶことがある)をチップセット23へ送信することにより、チップセット23にトレーニングシーケンスを実行させる。チップセット23は、CPU21から送信されたTS実行指示に従ってPCIeデバイス3との間でトレーニングシーケンスを実行する。チップセット23は、トレーニングシーケンスの実行中において、PCIeデバイス3との間で所定の信号を送受信することにより、コンピュータ装置2AとPCIeデバイス3との通信状態を示す値を実測する。例えば、チップセット23は、コンピュータ装置2AとPCIeデバイス3との通信状態を示す値として、チップセット23とPCIeデバイス3との間のリンクスピード及びリンク幅を実測し、リンクスピード実測値及びリンク幅実測値を通信状態の実測値(以下では「通信状態実測値」と呼ぶことがある)として取得する。チップセット23は、取得したリンクスピード実測値及びリンク幅実測値をリンクステータスレジスタ232に格納する。また、チップセット23は、トレーニングシーケンスを実行した結果、PCIeデバイス3がリンクアップした場合は、リンクステータスレジスタ232に記憶されているリンクアップ状態フラグを「0」(リンクダウン)から「1」(リンクアップ)に更新する。
【0018】
次いで、ステップS109では、CPU21は、リンクステータスレジスタ232に記憶されているリンクアップ状態フラグを確認し、PCIeデバイス3がリンクアップしているか否かを判定する。リンクアップ状態フラグが「0」のときは、CPU21は、PCIeデバイス3がリンクアップしていないと判定するため(ステップS109:No)、処理はステップS111へ進む。一方で、リンクアップ状態フラグが「1」のときは、CPU21は、PCIeデバイス3がリンクアップしていると判定するため(ステップS109:Yes)、処理はステップS121へ進む。
【0019】
ステップS111では、CPU21は、第一リトライカウンタnが所定回数N未満(但し、Nは2以上の整数)であるか否かを判定する。所定回数Nはメモリ22に予め記憶されており、例えば「4」にセットされている。第一リトライカウンタnが所定回数N未満である場合は(ステップS111:Yes)、処理はステップS113へ進み、第一リトライカウンタnが所定回数N以上である場合は(ステップS111:No)、処理はステップS139へ進む。
【0020】
ステップS113では、CPU21は、PCIeデバイス3をリセットしてPCIeデバイス3を再起動させる。
【0021】
次いで、ステップS115では、CPU21は、PCIeポート25をリセットする。
【0022】
次いで、ステップS117では、CPU21は、TS実行指示をチップセット23へ送信することにより、チップセット23にトレーニングシーケンスを実行させる。チップセット23は、CPU21から送信されたTS実行指示に従ってPCIeデバイス3との間でトレーニングシーケンスを実行する。チップセット23は、トレーニングシーケンスの実行中において、チップセット23とPCIeデバイス3との間のリンクスピード及びリンク幅(つまり、コンピュータ装置2AとPCIeデバイス3との間のリンクスピード及びリンク幅)を実測し、リンクスピード実測値及びリンク幅実測値を取得する。そして、チップセット23は、取得したリンクスピード実測値及びリンク幅実測値によって、リンクステータスレジスタ232に格納されているリンクスピード実測値及びリンク幅実測値を更新する。また、チップセット23は、トレーニングシーケンスを実行した結果、PCIeデバイス3がリンクアップした場合は、リンクステータスレジスタ232に記憶されているリンクアップ状態フラグを「0」(リンクダウン)から「1」(リンクアップ)に更新する。
【0023】
次いで、ステップS119では、CPU21は、第一リトライカウンタnをインクリメントする。ステップS119の処理後、処理はステップS109に戻る。
【0024】
一方で、ステップS121では、CPU21は、チップセット23の通信能力を示す値(以下では「チップセット能力値」と呼ぶことがある)をケイパビリティレジスタ231から取得する。チップセット能力値は予めケイパビリティレジスタ231に記憶されている。例えば、ケイパビリティレジスタ231には、チップセット能力値として、チップセット23がPCIeデバイス3と通信可能な最大リンクスピード及び最大リンク幅(つまり、コンピュータ装置2AがPCIeデバイス3と通信可能な最大リンクスピード及び最大リンク幅)が記憶されており、CPU21は、ケイパビリティレジスタ231に記憶されている最大リンクスピード及び最大リンク幅をケイパビリティレジスタ231から取得する。
【0025】
次いで、ステップS123では、CPU21は、PCIeデバイス3の通信能力を示す値(以下では「PCIeデバイス能力値」と呼ぶことがある)をPCIeデバイス3のレジスタ31から取得する。PCIeデバイス能力値は予めレジスタ31に記憶されている。例えば、レジスタ31には、PCIeデバイス能力値として、PCIeデバイス3がチップセット23と通信可能な最大リンクスピード及び最大リンク幅(つまり、PCIeデバイス3がコンピュータ装置2Aと通信可能な最大リンクスピード及び最大リンク幅)が記憶されており、CPU21は、レジスタ31に記憶されている最大リンクスピード及び最大リンク幅をレジスタ31から取得する。
【0026】
次いで、ステップS125では、CPU21は、ステップS121で取得したチップセット能力値と、ステップS123で取得したPCIeデバイス能力値とを比較し、チップセット能力値及びPCIeデバイス能力値のうち小さい方の値を通信状態の期待値(以下では「通信状態期待値」と呼ぶことがある)に設定する。例えば、CPU21は、チップセット23が通信可能な最大リンクスピード(以下では「チップセットリンクスピード」と呼ぶことがある)とPCIeデバイス3が通信可能な最大リンクスピード(以下では「PCIeリンクスピード」と呼ぶことがある)とを比較し、チップセットリンクスピード及びPCIeリンクスピードのうち小さい方のリンクスピードをリンクスピードの期待値(以下では「リンクスピード期待値」と呼ぶことがある)に設定する。また例えば、CPU21は、チップセット23が通信可能な最大リンク幅(以下では「チップセットリンク幅」と呼ぶことがある)とPCIeデバイス3が通信可能な最大リンク幅(以下では「PCIeリンク幅」と呼ぶことがある)とを比較し、チップセットリンク幅及びPCIeリンク幅のうち小さい方のリンク幅をリンク幅の期待値(以下では「リンク幅期待値」と呼ぶことがある)に設定する。そして、CPU21は、設定したリンクスピード期待値及びリンク幅期待値をメモリ22に格納する。
【0027】
次いで、ステップS127では、CPU21は、通信状態実測値と通信状態期待値とを比較し、通信状態実測値が通信状態期待値に等しいか否かを判定する。例えば、CPU21は、リンクステータスレジスタ232に格納されているリンクスピード実測値とメモリ22に格納されているリンクスピード期待値とを比較するとともに、リンクステータスレジスタ232に格納されているリンク幅実測値とメモリ22に格納されているリンク幅期待値とを比較する。そして、CPU21は、リンクスピード実測値がリンクスピード期待値に等しく、かつ、リンク幅実測値がリンク幅期待値に等しい場合に、通信状態実測値が通信状態期待値に等しいと判定する。一方で、CPU21は、リンクスピード実測値がリンクスピード期待値と異なるか、または、リンク幅実測値がリンク幅期待値と異なる場合に、通信状態実測値が通信状態期待値と異なると判定する。通信状態実測値が通信状態期待値に等しい場合は(ステップS127:Yes)、処理はステップS139へ進み、通信状態実測値が通信状態期待値と異なる場合は(ステップS127:No)、処理はステップS129へ進む。
【0028】
ステップS129では、CPU21は、第二リトライカウンタmが所定回数M未満(但し、Mは2以上の整数)であるか否かを判定する。所定回数Mはメモリ22に予め記憶されており、例えば「4」にセットされている。第二リトライカウンタmが所定回数M未満である場合は(ステップS129:Yes)、処理はステップS131へ進み、第二リトライカウンタmが所定回数M以上である場合は(ステップS129:No)、処理はステップS139へ進む。
【0029】
ステップS131では、CPU21は、PCIeデバイス3をリセットしてPCIeデバイス3を再起動させる。
【0030】
次いで、ステップS133では、CPU21は、PCIeポート25をリセットする。
【0031】
次いで、ステップS135では、CPU21は、TS実行指示をチップセット23へ送信することにより、チップセット23にトレーニングシーケンスを実行させる。チップセット23は、CPU21から送信されたTS実行指示に従ってPCIeデバイス3との間でトレーニングシーケンスを実行する。チップセット23は、トレーニングシーケンスの実行中において、チップセット23とPCIeデバイス3との間のリンクスピード及びリンク幅を実測し、リンクスピード実測値及びリンク幅実測値を取得する。チップセット23は、取得したリンクスピード実測値及びリンク幅実測値によって、リンクステータスレジスタ232に格納されているリンクスピード実測値及びリンク幅実測値を更新する。
【0032】
次いで、ステップS137では、CPU21は、第二リトライカウンタmをインクリメントする。ステップS137の処理後、処理はステップS127に戻る。
【0033】
そして、ステップS139では、CPU21は、OS(Operating System)を起動させる。OSは、コンピュータ装置2Aが有するディスクドライブ(図示せず)に予め記憶されている。
【0034】
<コンピュータ装置の動作>
図3は、本開示の実施例1のコンピュータ装置の動作例を示す図である。ここでは、一例として、リンクスピードとして2.5Gbps,5Gbps,8Gbpsの何れかを採用することが可能であり、リンク幅としてx1,x2,x4,x8,x16の何れかを採用することが可能である場合について説明する。
【0035】
図3に示すように、CPU21は、チップセットリンクスピード=5Gbps、かつ、チップセットリンク幅=x8であるチップセット能力値と、PCIeリンクスピード=8Gbps、かつ、PCIeリンク幅=x4であるPCIeデバイス能力値とを比較する。図3では、チップセットリンクスピード(5Gbps)がPCIeリンクスピード(8Gbps)より小さく、PCIeリンク幅(x4)がチップセットリンク幅(x8)より小さいため、CPU21は、通信状態期待値として、チップセットリンクスピード(5Gbps)をリンクスピード期待値に設定し、PCIeリンク幅(x4)をリンク幅期待値に設定する。
【0036】
よって、図3に示すように、CPU21は、リンクスピード実測値=5Gbps、かつ、リンク幅実測値=x4である場合は、通信状態実測値が通信状態期待値に等しいと判定する。また、CPU21は、リンクスピード実測値=2.5Gbps、かつ、リンク幅実測値=x4である場合は、通信状態実測値が通信状態期待値と異なると判定する。また、CPU21は、リンクスピード実測値=5Gbps、かつ、リンク幅実測値=x1である場合は、通信状態実測値が通信状態期待値と異なると判定する。
【0037】
以上、実施例1について説明した。
【0038】
[実施例2]
<コンピュータ装置の構成>
図4は、本開示の実施例2のコンピュータ装置の構成例を示す図である。図4において、コンピュータ装置2Bは、CPU21と、メモリ22と、チップセット23と、デバイス検出回路24と、USB(Universal Serial Bus)ポート26とを有する。
【0039】
USBポート26にUSBデバイス4が装着されることにより、CPU21、チップセット23及びデバイス検出回路24の各々と、USBデバイス4とが接続される。CPU21及びチップセット23の各々とUSBデバイス4とが接続されることにより、CPU21及びチップセット23の各々と、USBデバイス4とが、相互に通信可能となる。USBデバイス4は、メモリ41を有する。USBデバイス4は外部機器の一例である。
【0040】
<コンピュータ装置における処理手順>
図5は、本開示の実施例2のコンピュータ装置の処理手順の一例を示すフローチャートである。図5に示すフローチャートは、コンピュータ装置2Bの電源投入時(つまり、コンピュータ装置2Bの起動時)に開始される。
【0041】
ステップS301では、CPU21は、USBデバイス4がコンピュータ装置2Bに接続されているか否かを判定する。デバイス検出回路24は、USBデバイス4がコンピュータ装置2Bに接続されたときに、USBデバイス4がコンピュータ装置2Bに接続されたことを検出し、USBデバイス4がコンピュータ装置2Bに接続されたことを検出したことを示す通知(以下では「USBデバイス検出通知」と呼ぶことがある)をCPU21へ送信する。コンピュータ装置2Bの電源投入後にCPU21がUSBデバイス検出通知を受信していないときは、CPU21は、USBデバイス4がコンピュータ装置2Bに接続されていないと判定するため(ステップS301:No)、処理はステップS337へ進む。一方で、コンピュータ装置2Bの電源投入後にCPU21がUSBデバイス検出通知を受信しているときは、CPU21は、USBデバイス4がコンピュータ装置2Bに接続されていると判定するため(ステップS301:Yes)、処理はステップS303へ進む。
【0042】
ステップS303では、CPU21は、第一リトライカウンタn及び第二リトライカウンタmを「0」にリセットする。第一リトライカウンタn及び第二リトライカウンタmは、メモリ22に記憶されている。
【0043】
次いで、ステップS305では、CPU21は、TS実行指示をチップセット23へ送信することにより、チップセット23にトレーニングシーケンスを実行させる。チップセット23は、CPU21から送信されたTS実行指示に従ってUSBデバイス4との間でトレーニングシーケンスを実行する。チップセット23は、トレーニングシーケンスの実行中において、USBデバイス4との間で所定の信号を送受信することにより、コンピュータ装置2BとUSBデバイス4との通信状態を示す値を実測する。例えば、チップセット23は、コンピュータ装置2BとUSBデバイス4との通信状態を示す値として、チップセット23とUSBデバイス4との間のリンクスピードを実測し、リンクスピード実測値を通信状態実測値として取得する。チップセット23は、取得したリンクスピード実測値をリンクステータスレジスタ232に格納する。また、チップセット23は、トレーニングシーケンスを実行した結果、USBデバイス4がリンクアップした場合は、リンクステータスレジスタ232に記憶されているリンクアップ状態フラグを「0」(リンクダウン)から「1」(リンクアップ)に更新する。
【0044】
次いで、ステップS307では、CPU21は、リンクステータスレジスタ232に記憶されているリンクアップ状態フラグを確認し、USBデバイス4がリンクアップしているか否かを判定する。リンクアップ状態フラグが「0」のときは、CPU21は、USBデバイス4がリンクアップしていないと判定するため(ステップS307:No)、処理はステップS309へ進む。一方で、リンクアップ状態フラグが「1」のときは、CPU21は、USBデバイス4がリンクアップしていると判定するため(ステップS307:Yes)、処理はステップS319へ進む。
【0045】
ステップS309では、CPU21は、第一リトライカウンタnが所定回数N未満(但し、Nは2以上の整数)であるか否かを判定する。所定回数Nはメモリ22に予め記憶されており、例えば「4」にセットされている。第一リトライカウンタnが所定回数N未満である場合は(ステップS309:Yes)、処理はステップS311へ進み、第一リトライカウンタnが所定回数N以上である場合は(ステップS309:No)、処理はステップS337へ進む。
【0046】
ステップS311では、CPU21は、USBデバイス4の電源をオフにした後、再びオンにしてUSBデバイス4を再起動させる。
【0047】
次いで、ステップS313では、CPU21は、USBポート26をリセットする。
【0048】
次いで、ステップS315では、CPU21は、TS実行指示をチップセット23へ送信することにより、チップセット23にトレーニングシーケンスを実行させる。チップセット23は、CPU21から送信されたTS実行指示に従ってUSBデバイス4との間でトレーニングシーケンスを実行する。チップセット23は、トレーニングシーケンスの実行中において、チップセット23とUSBデバイス4との間のリンクスピード(つまり、コンピュータ装置2BとUSBデバイス4との間のリンクスピード)を実測し、リンクスピード実測値を取得する。そして、チップセット23は、取得したリンクスピード実測値によって、リンクステータスレジスタ232に格納されているリンクスピード実測値を更新する。また、チップセット23は、トレーニングシーケンスを実行した結果、USBデバイス4がリンクアップした場合は、リンクステータスレジスタ232に記憶されているリンクアップ状態フラグを「0」(リンクダウン)から「1」(リンクアップ)に更新する。
【0049】
次いで、ステップS317では、CPU21は、第一リトライカウンタnをインクリメントする。ステップS317の処理後、処理はステップS307に戻る。
【0050】
一方で、ステップS319では、CPU21は、チップセット能力値をケイパビリティレジスタ231から取得する。チップセット能力値は予めケイパビリティレジスタ231に記憶されている。例えば、ケイパビリティレジスタ231には、チップセット能力値として、チップセット23がUSBデバイス4と通信可能な最大リンクスピード(つまり、コンピュータ装置2BがUSBデバイス4と通信可能な最大リンクスピード)が記憶されており、CPU21は、ケイパビリティレジスタ231に記憶されている最大リンクスピードをケイパビリティレジスタ231から取得する。
【0051】
次いで、ステップS321では、CPU21は、USBデバイス4の通信能力を示す値(以下では「USBデバイス能力値」と呼ぶことがある)をUSBデバイス4のメモリ41から取得する。USBデバイス能力値は予めメモリ41に記憶されている。例えば、メモリ41には、USBデバイス能力値として、USBデバイス4がチップセット23と通信可能な最大リンクスピード(つまり、USBデバイス4がコンピュータ装置2Bと通信可能な最大リンクスピード)が記憶されており、CPU21は、メモリ41に記憶されている最大リンクスピードをメモリ41から取得する。
【0052】
次いで、ステップS323では、CPU21は、ステップS319で取得したチップセット能力値と、ステップS321で取得したUSBデバイス能力値とを比較し、チップセット能力値及びUSBデバイス能力値のうち小さい方の値を通信状態期待値に設定する。例えば、CPU21は、チップセットリンクスピードとUSBデバイス4が通信可能な最大リンクスピード(以下では「USBリンクスピード」と呼ぶことがある)とを比較し、チップセットリンクスピード及びUSBリンクスピードのうち小さい方のリンクスピードをリンクスピード期待値に設定する。そして、CPU21は、設定したリンクスピード期待値をメモリ22に格納する。
【0053】
次いで、ステップS325では、CPU21は、通信状態実測値と通信状態期待値とを比較し、通信状態実測値が通信状態期待値に等しいか否かを判定する。例えば、CPU21は、リンクステータスレジスタ232に格納されているリンクスピード実測値とメモリ22に格納されているリンクスピード期待値とを比較する。そして、CPU21は、リンクスピード実測値がリンクスピード期待値に等しい場合に、通信状態実測値が通信状態期待値に等しいと判定する。一方で、CPU21は、リンクスピード実測値がリンクスピード期待値と異なる場合に、通信状態実測値が通信状態期待値と異なると判定する。通信状態実測値が通信状態期待値に等しい場合は(ステップS325:Yes)、処理はステップS337へ進み、通信状態実測値が通信状態期待値と異なる場合は(ステップS325:No)、処理はステップS327へ進む。
【0054】
ステップS327では、CPU21は、第二リトライカウンタmが所定回数M未満(但し、Mは2以上の整数)であるか否かを判定する。所定回数Mはメモリ22に予め記憶されており、例えば「4」にセットされている。第二リトライカウンタmが所定回数M未満である場合は(ステップS327:Yes)、処理はステップS329へ進み、第二リトライカウンタmが所定回数M以上である場合は(ステップS327:No)、処理はステップS337へ進む。
【0055】
ステップS329では、CPU21は、USBデバイス4の電源をオフにした後、再びオンにしてUSBデバイス4を再起動させる。
【0056】
次いで、ステップS331では、CPU21は、USBポート26をリセットする。
【0057】
次いで、ステップS333では、CPU21は、TS実行指示をチップセット23へ送信することにより、チップセット23にトレーニングシーケンスを実行させる。チップセット23は、CPU21から送信されたTS実行指示に従ってUSBデバイス4との間でトレーニングシーケンスを実行する。チップセット23は、トレーニングシーケンスの実行中において、チップセット23とUSBデバイス4との間のリンクスピードを実測し、リンクスピード実測値を取得する。チップセット23は、取得したリンクスピード実測値によって、リンクステータスレジスタ232に格納されているリンクスピード実測値を更新する。
【0058】
次いで、ステップS335では、CPU21は、第二リトライカウンタmをインクリメントする。ステップS335の処理後、処理はステップS325に戻る。
【0059】
そして、ステップS337では、CPU21は、OSを起動させる。OSは、コンピュータ装置2Bが有するディスクドライブ(図示せず)に予め記憶されている。
【0060】
<コンピュータ装置の動作>
図6は、本開示の実施例2のコンピュータ装置の動作例を示す図である。ここでは、一例として、リンクスピードとして480Mbps,5Gbps,10Gbpsの何れかを採用することが可能である場合について説明する。
【0061】
図6に示すように、CPU21は、チップセットリンクスピード=5Gbpsであるチップセット能力値と、USBリンクスピード=10GbpsであるUSBデバイス能力値とを比較する。図6では、チップセットリンクスピード(5Gbps)がUSBリンクスピード(10Gbps)より小さいため、CPU21は、通信状態期待値として、チップセットリンクスピード(5Gbps)をリンクスピード期待値に設定する。
【0062】
よって、図6に示すように、CPU21は、リンクスピード実測値=5Gbpsである場合は、通信状態実測値が通信状態期待値に等しいと判定する。また、CPU21は、リンクスピード実測値=480Mbpsである場合は、通信状態実測値が通信状態期待値と異なると判定する。
【0063】
以上、実施例2について説明した。
【0064】
[実施例3]
コンピュータ装置2A,2Bでの上記説明における各処理の全部または一部は、各処理に対応するプログラムをCPU21に実行させることによって実現しても良い。例えば、上記説明における各処理に対応するプログラムがメモリ22に記憶され、プログラムがCPU21によってメモリ22から読み出されて実行されても良い。また、プログラムは、任意のネットワークを介してコンピュータ装置2A,2Bに接続されたプログラムサーバに記憶され、そのプログラムサーバからコンピュータ装置2A,2Bにダウンロードされて実行されたり、コンピュータ装置2A,2Bが読み取り可能な記録媒体に記憶され、その記録媒体から読み出されて実行されても良い。コンピュータ装置2A,2Bが読み取り可能な記録媒体には、例えば、メモリカード、USBメモリ、SDカード、フレキシブルディスク、光磁気ディスク、CD-ROM、DVD、及び、Blu-ray(登録商標)ディスク等の可搬の記憶媒体が含まれる。また、プログラムは、任意の言語や任意の記述方法にて記述されたデータ処理方法であり、ソースコードやバイナリコード等の形式を問わない。また、プログラムは必ずしも単一的に構成されるものに限られず、複数のモジュールや複数のライブラリとして分散構成されるものや、OSに代表される別個のプログラムと協働してその機能を達成するものも含む。
【0065】
以上、実施例3について説明した。
【0066】
以上のように、本開示のコンピュータ装置(実施例1,2のコンピュータ装置2A,2B)は、外部機器(実施例1のPCIeデバイス3、実施例2のUSBデバイス4)を接続可能であり、チップセット(実施例1,2のチップセット23)と、CPU(実施例1,2のCPU21)とを有する。チップセットは、外部機器と通信可能であり、コンピュータ装置と外部機器との通信状態を示す値を実測して通信状態の実測値(実施例1,2の通信状態実測値)を取得する。CPUは、チップセットの通信能力を示す第一能力値(実施例1,2のチップセット能力値)、及び、外部機器の通信能力を示す第二能力値(実施例1のPCIeデバイス能力値、実施例2のUSBデバイス能力値)のうち小さい方の値を通信状態の期待値(実施例1,2の通信状態期待値)に設定し、実測値と期待値とを比較し、実測値が期待値と異なるときに外部機器を再起動させる。
【0067】
例えば、実施例1のように、実測値、第一能力値、第二能力値、及び、期待値は、コンピュータ装置と外部機器との間のリンクスピード及びリンク幅であり、CPUは、実測値のリンクスピードまたはリンク幅が期待値のリンクスピードまたはリンク幅と異なるときに外部機器を再起動させる。
【0068】
また例えば、実施例2のように、実測値、第一能力値、第二能力値、及び、期待値は、コンピュータ装置と外部機器との間のリンクスピードであり、CPUは、実測値のリンクスピードが期待値のリンクスピードと異なるときに外部機器を再起動させる。
【0069】
こうすることで、外部機器が接続されたコンピュータ装置において、外部装置との通信状態が期待値とならないときにOSの起動前に外部機器を再起動させることができるため、コンピュータ装置自体の再起動が必要となる事態の発生率を減少させることができる。
【符号の説明】
【0070】
2A,2B コンピュータ装置
3 PCIeデバイス
4 USBデバイス
21 CPU
23 チップセット
図1
図2
図3
図4
図5
図6