(57)【要約】【課題】接続されているコンポーネントの種別や設定状態にかかわらず、フロー制御のための初期化処理を完了可能なフロー制御の初期化方法、情報処理装置を提供する。【解決手段】本発明に係るフロー制御の初期化方法、情報処理装置は、第１コンポーネントを第１の初期化状態にし（Ｓ１）、第２コンポーネントにＦＣ（Ｉ）１１を送信し（Ｓ２）、第２コンポーネントからＦＣ（Ｉ）１２またはＦＣ（Ｉ）２２のいずれかを受信したときに、第１コンポーネントを第２の初期化状態にし、第２コンポーネントにＦＣ（Ｉ）２１を送信し（Ｓ５）、第２コンポーネントからＦＣ（Ｉ）２２、ＦＣ２或いはＴＬＰ２のいずれかを受信したときに、第１コンポーネントを初期化終了状態にし、第２コンポーネントにＦＣ１またはＴＬＰ１の少なくともいずれか一方を、１回以上送信する（Ｓ１００）ことを特徴とするものである。【選択図】  図９
2005293283.tif 000002
【特許請求の範囲】
【請求項１】
第１コンポーネントと第２コンポーネントとの間がシリアルバスで接続され、
前記第１コンポーネントの第１の初期化状態では第１の第１コンポーネント初期値を送信し、
前記第１コンポーネントの第２の初期化状態では第２の第１コンポーネント初期値を送信する第１のコンポーネントと、
前記第２コンポーネントの第１の初期化状態では第１の第２コンポーネント初期値を送信し、
前記第２コンポーネントの第２の初期化状態では第２の第２コンポーネント初期値を送信する第２のコンポーネントと、
の間のフロー制御の初期化方法において、
前記第１コンポーネントを第１の初期化状態にする第１ステップと、
前記第１コンポーネントから前記第２コンポーネントに第１の前記第１コンポーネント初期値を送信させる第２ステップと、
前記第１コンポーネントが、前記第２コンポーネントから第１の前記第２コンポーネント初期値または第２の前記第２コンポーネント初期値のいずれかを受信したときに、前記第１コンポーネントを第２の初期化状態にする第３ステップと、
前記第１コンポーネントから前記第２コンポーネントに第２の前記第１コンポーネント初期値を送信させる第４ステップと、
前記第１コンポーネントが、前記第２コンポーネントから第２の前記第２コンポーネント初期値、第２コンポーネントフロー制御値あるいは第２コンポーネントデータのいずれかを受信したときに、前記第１コンポーネントを初期化終了状態にする第５ステップと、
前記第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値或いは第１コンポーネントデータの少なくともいずれか一方を、１回以上送信させる第６ステップと、
を備えたことを特徴とするフロー制御の初期化方法。
【請求項２】
前記第６ステップは、前記第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値を１回以上送信させる第６ステップであることを特徴とする請求項１に記載のフロー制御の初期化方法。
【請求項３】
前記第６ステップは、前記第１コンポーネントが、前記第２コンポーネントから第２の前記第２コンポーネント初期値を受信したときに、前記第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値或いは第１コンポーネントデータの少なくともいずれか一方を、１回以上送信させる第６ステップであることを特徴とする請求項１に記載のフロー制御の初期化方法。
【請求項４】
前記第６ステップは、前記第１コンポーネントが、前記第２コンポーネントから第２の前記第２コンポーネント初期値を受信したときに、前記第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値を、１回以上送信させる第６ステップであることを特徴とする請求項１に記載のフロー制御の初期化方法。
【請求項５】
前記第５ステップは、前記第１コンポーネントが、前記第２コンポーネントから第２の前記第２コンポーネント初期値を受信したときに、前記第１コンポーネントから前記第２コンポーネントに第２の第１コンポーネント初期値を１回以上送信させる第５ステップであり、
前記第６ステップは、前記第１コンポーネントを初期化終了状態にする第６ステップであることを特徴とする請求項１に記載のフロー制御の初期化方法。
【請求項６】
前記シリアルバスは、ピー・シー・アイ・イクスプレス方式によるシリアルバスであることを特徴とする請求項１から５のいずれかに記載のフロー制御の初期化方法。
【請求項７】
第１コンポーネントと第２コンポーネントとの間がシリアルバスで接続され、
前記第１コンポーネントの第１の初期化状態では第１の第１コンポーネント初期値を送信し、
前記第１コンポーネントの第２の初期化状態では第２の第１コンポーネント初期値を送信する第１のコンポーネントと、
前記第２コンポーネントの第１の初期化状態では第１の第２コンポーネント初期値を送信し、
前記第２コンポーネントの第２の初期化状態では第２の第２コンポーネント初期値を送信する第２のコンポーネントと、
の間のフロー制御の初期化手段を備えた情報処理装置において、
前記第１コンポーネントを第１の初期化状態にする手段と、
前記第１コンポーネントから前記第２コンポーネントに第１の前記第１コンポーネント初期値を送信させる手段と、
前記第１コンポーネントが、前記第２コンポーネントから第１の前記第２コンポーネント初期値または第２の前記第２コンポーネント初期値のいずれかを受信したときに、前記第１コンポーネントを第２の初期化状態にする手段と、
前記第１コンポーネントから前記第２コンポーネントに第２の前記第１コンポーネント初期値を送信させる手段と、
前記第１コンポーネントが、前記第２コンポーネントから第２の前記第２コンポーネント初期値、第２コンポーネントフロー制御値あるいは第２コンポーネントデータのいずれかを受信したときに、前記第１コンポーネントを初期化終了状態にする手段と、
前記第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値或いは第１コンポーネントデータの少なくともいずれか一方を、１回以上送信させる手段と、
を具備したことを特徴とする情報処理装置。
【請求項８】
前記シリアルバスは、ピー・シー・アイ・イクスプレス方式によるシリアルバスであることを特徴とする請求項７に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フロー制御の初期化方法および情報処理装置に係り、特に、高速シリアルバスのフロー制御の初期化方法および高速シリアルバスのフロー制御の初期化手段を備えた情報処理装置に関する。
【背景技術】
【０００２】
近年、情報処理装置のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の処理速度の向上は著しい。
【０００３】
ＣＰＵの処理速度の高速化にともなって、ＣＰＵに接続される各種デバイス間を接続するデータバスのデータ転送速度の高速化も進められている。
【０００４】
情報処理装置のデータバスは処理速度に応じて大きく３つに分類することができる。
【０００５】
ＣＰＵと主記憶部を接続するデータバスは最も高速性が要求され、超高速データバスと呼ばれている（メモリバス或いはプロセサバスと呼ばれることもある）。
【０００６】
情報処理装置のディスプレイを制御するグラフィクス制御部やハードディスク等の高速性を要求される周辺機器を結ぶデータバスは高速データバスと呼ばれている。
【０００７】
また、キーボードやマウス、フロッピディスク等速度の遅い周辺機器を結ぶデータバスは低速データバスと呼ばれている。
【０００８】
データの転送方式には、データを構成するビット信号を並列に転送するパラレル転送方式（この方式によるデータバスをパラレルデータバスと呼ぶ）とビット信号を直列に転送するシリアル転送方式（この方式によるデータバスをシリアルバスと呼ぶ）があるが、超高速データバスおよび高速データバスはパラレル転送方式を、また低速データバスはシリアル転送方式を採用しているものが一般的である。
【０００９】
いずれのデータバスも高速化が進められているが、特に高速データバスは、接続される周辺機器、例えばグラフィクス制御部やハードディスク、或いはＬＡＮカード等転送するデータ量が著しく増大してきておりさらなる高速化が求められている。
【００１０】
従来から、これらの高速データバスにはパラレル転送方式によるパラレルバス（例えばＰＣＩバス）が用いられてきた。パラレルバスにおいてデータ転送速度の高速化を図る方法にはビット幅（パラレルに同時に転送する信号の数）の拡張と転送クロック周波数の高周波数化がある。
【００１１】
例えば、ＰＣＩバス等においては、ビット幅が１６ビットから３２ビットへ、さらには６４ビットのビット幅のパラレルバスというようにビット幅を拡張することによって転送速度の高速化を図ってきている。
【００１２】
また、転送クロック周波数も例えば３３ＭＨｚから６６ＭＨｚへ、さらには１３３ＭＨｚへと高周波化が図られてきている。
【００１３】
しかしながら、パラレルバスの転送速度が高速化されることによって以下の問題が発生してきている。
【００１４】
（１）パラレル転送方式では、データを転送クロックに併せて１ビットずつパラレルな信号線上を並列に同時に送信し、受信側でも同時に受信する必要がある。ところが転送クロックが高速化されるにつれて、並列データを構成する各ビット信号の遅延時間の差が無視できなくなってくる。この結果、並列に転送されてくるデータを同時に受信することが困難となってくる。  
（２）パラレル転送方式では、並列データを構成する各ビット信号は物理的に極めて近い位置に接近している。このため、各ビット信号が発生するノイズによって相互に影響を受ける。転送クロック周波数が比較的低い場合はノイズによる影響を受けにくいが、転送クロック周波数が高くなってくると影響を受けやすくなる。
【００１５】
上記の問題があるため、パラレル転送方式の転送速度の高速化には一定の限界が発生する。
【００１６】
そこで、データ転送速度のさらなる向上を図る方策として、シリアル転送方式によるデータ転送方式が提唱されている（非特許文献１）。シリアル転送方式によれば上記（１）、（２）の問題は発生しないため、転送クロックを極めて高い周波数（例えば、２．５Ｇｂｐｓ（ｂｉｔｓ  ｐｅｒ  ｓｅｃｏｎｄ））にすることが可能となり、データ転送速度の向上が図れる。
【００１７】
さらに、データ転送の送受間で、シリアル転送ラインを複数設けることによって、シリアル転送方式を採りつつもさらなる転送速度の向上が可能となる。
【非特許文献１】“ＰＣＩ  ＥｘｐｒｅｓｓＴＭ  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．０ａ”、［ｏｎｌｉｎｅ］、２００３年４月１５日、ＰＣＩ−ＳＩＧ、［平成１６年２月４日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｐｃｉｓｉｇ．ｃｏｍ／ｓｐｅｃｉｆｉｃａｔｉｏｎｓ／ｐｃｉｅｘｐｒｅｓｓ／＞
【発明の開示】
【発明が解決しようとする課題】
【００１８】
情報処理装置で用いられるデータバスの方式は、さらなる転送速度の高速化を目的として上述したように高速シリアルバスが採用されつつある（例えばＰＣＩ  ＥｘｐｒｅｓｓＴＭ：ＰＣＩ  Ｅｘｐｒｅｓｓは、ＰＣＩ−ＳＩＧ（ＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）の商標である。）。
【００１９】
この高速シリアルバスは、スイッチと呼ばれるデバイスを介して複数の周辺機器と接続することが可能であるが、基本的な接続形態は、１対１接続（ポイント・ツー・ポイント）である。
【００２０】
１対１接続の接続形態のデータ転送では、送信するデータが受信側でオーバフローしないように、送信するデータの転送速度を制御したり、オーバフローする可能性がある場合はデータの送信を停止させる等の方策がとられることがよく行われる。これをフロー制御と呼んでいる。
【００２１】
しかしながら、従来行われているＰＣＩ  ＥｘｐｒｅｓｓＴＭ方式のフロー制御では、接続されているコンポーネントの種別や設定状態によっては、フロー制御のための初期化処理が完了しない場合が発生するという問題点があった。
【００２２】
本発明は、上記問題点を改良した高速シリアルバスのフロー制御方法およびそのフロー制御手段を備えた情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００２３】
本発明に係るフロー制御の初期化方法は、上記事情に鑑みてなされたもので、請求項１に記載のように、第１コンポーネントと第２コンポーネントとの間がシリアルバスで接続され、第１コンポーネントの第１の初期化状態では第１の第１コンポーネント初期値を送信し、第１コンポーネントの第２の初期化状態では第２の第１コンポーネント初期値を送信する第１のコンポーネントと、第２コンポーネントの第１の初期化状態では第１の第２コンポーネント初期値を送信し、第２コンポーネントの第２の初期化状態では第２の第２コンポーネント初期値を送信する第２のコンポーネントとの間のフロー制御の初期化方法において、第１コンポーネントを第１の初期化状態にする第１ステップと、第１コンポーネントから前記第２コンポーネントに第１の前記第１コンポーネント初期値を送信させる第２ステップと、第１コンポーネントが、前記第２コンポーネントから第１の前記第２コンポーネント初期値または第２の前記第２コンポーネント初期値のいずれかを受信したときに、前記第１コンポーネントを第２の初期化状態にする第３ステップと、第１コンポーネントから前記第２コンポーネントに第２の前記第１コンポーネント初期値を送信させる第４ステップと、第１コンポーネントが、第２コンポーネントから第２の前記第２コンポーネント初期値、第２コンポーネントフロー制御値あるいは第２コンポーネントデータのいずれかを受信したときに、第１コンポーネントを初期化終了状態にする第５ステップと、第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値或いは第１コンポーネントデータの少なくともいずれか一方を、１回以上送信させる第６ステップと、を備えたことを特徴とするものである。
【００２４】
また、本発明に係る情報処理装置は、請求項７に記載したように、第１コンポーネントと第２コンポーネントとの間がシリアルバスで接続され、第１コンポーネントの第１の初期化状態では第１の第１コンポーネント初期値を送信し、第１コンポーネントの第２の初期化状態では第２の第１コンポーネント初期値を送信する第１のコンポーネントと、第２コンポーネントの第１の初期化状態では第１の第２コンポーネント初期値を送信し、第２コンポーネントの第２の初期化状態では第２の第２コンポーネント初期値を送信する第２のコンポーネントとの間のフロー制御の初期化手段を備えた情報処理装置において、第１コンポーネントを第１の初期化状態にする手段と、第１コンポーネントから前記第２コンポーネントに第１の前記第１コンポーネント初期値を送信させる手段と、第１コンポーネントが、前記第２コンポーネントから第１の前記第２コンポーネント初期値または第２の前記第２コンポーネント初期値のいずれかを受信したときに、前記第１コンポーネントを第２の初期化状態にする手段と、第１コンポーネントから前記第２コンポーネントに第２の前記第１コンポーネント初期値を送信させる手段と、第１コンポーネントが、前記第２コンポーネントから第２の前記第２コンポーネント初期値、第２コンポーネントフロー制御値あるいは第２コンポーネントデータのいずれかを受信したときに、前記第１コンポーネントを初期化終了状態にする手段と、第１コンポーネントから前記第２コンポーネントに、第１コンポーネントフロー制御値或いは第１コンポーネントデータの少なくともいずれか一方を、１回以上送信させる手段と、を具備したことを特徴とするものである。
【発明の効果】
【００２５】
本発明にかかるフロー制御の初期化方法、情報処理装置によれば、シリアルバスに接続されるコンポーネントの種別や設定状態にかかわらず初期化処理を完了させることが可能となる。
【発明を実施するための最良の形態】
【００２６】
本発明にかかるフロー制御の初期化方法および情報処理装置の実施形態について、添付図面を参照して説明する。
【００２７】
図１は、本発明に係るフロー制御の初期化手段を備えた情報処理装置の第１の実施形態について外観の一例を示したものである。
【００２８】
情報処理装置１は、例えば薄型の長方形状をした情報処理装置本体２と、情報処理装置本体２に開閉自在に取り付けられたパネル部３を備えて構成される。
【００２９】
情報処理装置本体２の上面には、情報処理装置１の操作各や種データの入力をするためのキーボード４や電源スイッチ５等が配設される。
【００３０】
パネル部３は、各種文字情報やグラフィック情報を表示するためのディスプレイ６を備えており、ディスプレイ６は例えばＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）で構成される。
【００３１】
本発明にかかる情報処理装置１は、図１に示した外観に限定されるものではなく、各種の形状や大きさを取りうる。また、図１に示したパネル部３やキーボード４等の一部構成を省略した形態でもよい。
【００３２】
図２は、情報処理装置１のハードウェア基本構成（アーキテクチャー）の一例を示したものである。
【００３３】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０は、情報処理装置１の各種制御やデータの加工・演算等を行うもので、情報処理装置１の中枢を成す部分である。ＣＰＵ１０は、ＣＰＵバス１１を介してルートコンプレクス１２に接続される。ＣＰＵバス１１は通常パラレルバスで構成される。
【００３４】
主記憶１３は、各種プログラムやデータを一時的に記憶するもので、メモリバス１４を介してルートコンプレクス１２に接続される。メモリバス１４も通常パラレルバスで構成される。
【００３５】
ルートコンプレクス１２は、ＣＰＵバス１１のバス信号とメモリバス１４のバス信号を相互に変換等を行う。この部分の機能は、従来例えばノースブリッジ、或いはメモリブリッジ等と呼ばれているバス信号変換用のチップセット（主としてバス信号の変換を目的としたＬＳＩ等により構成される回路群）と異なるところはない。
【００３６】
ルートコンプレクス１２の特徴は、上記機能に加えて、ＣＰＵバス１１のバス信号を高速シリアルバス１５の信号に変換し、複数の（単数でもよい）ルートポート１２ａを介して情報処理装置１の各デバイスと相互にデータの授受が可能となるように構成されていることである。
【００３７】
ここで、高速シリアルバス１５は、非特許文献１に開示されている例えばＰＣＩ  ＥｘｐｒｅｓｓＴＭ  の規定に準拠するものである。
【００３８】
ルートコンプレクス１２は、高速シリアルバス１５を介してグラフィックコントローラ１６に接続され、さらにディスプレイ６に接続される。
【００３９】
また、ルートコンプレクス１２は、高速シリアルバス１５を介してスイッチ１７に接続される。図２には２つのスイッチ１７を示しているが、１つ或いは３つ以上のスイッチが接続される形態でも良い。
【００４０】
スイッチ１７は、さらに高速シリアルバス１５を介して複数のエンドポイント１８、或いはＰＣＩブリッジ１９に接続される。
【００４１】
図２は、高速シリアルバス１５の接続形態の一例を示したものであり、図２の接続に限定するものではない。要は、ルートコンプレクス１２を頂点にして階層構造として構成することが可能であり、例えばスイッチ１７にさらにスイッチ１７を接続して階層構造を広げることが可能である。
【００４２】
エンドポイント１８は、高速シリアルバス１５を介して接続される階層構造の末端のコンポーネントを示す包括的な名称である。
【００４３】
従って、エンドポイント１８としては種々のコンポーネントが考えられる。例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、等の補助記憶装置であってもよい。或いはＣＤ−ＲＯＭ、ＤＶＤ等のドライブであってもよい。また、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｋ）インタフェースであってもよい。要するに、高速シリアルバス１５のインタフェースを備えた階層構造の末端にあるコンポーネントをエンドポイント１８と呼んでいる。
【００４４】
高速シリアルバス１５は、ＰＣＩブリッジ１９を介して従来からある各種ＰＣＩデバイスを装着できるＰＣＩバススロット２０にも接続できる。
【００４５】
図２では、ＣＰＵバス１１およびメモリバス１４以外は全て高速シリアルバス１５による階層構造となっているが、その他の各種バス、例えばＵＳＢバス、ＰＣＩバス等と混在する形態であっても良い。
【００４６】
高速シリアルバス１５の接続は、図２に示したように、特定のコンポーネントと特定のコンポーネントとを１対１で接続するものである。特定の２つのコンポーネントは例えばルートコンプレクス１２とグラフィックコントローラ１６である。またスイッチ１７とエンドポイント１８であっても良い。
【００４７】
本発明は、高速シリアルバス１５のバスの通信にかかるもので、特に通信のフロー制御の初期化方法に関するものであり、全ての高速シリアルバス１５に共通するものである。したがって、高速シリアルバス１５に接続されるコンポーネントを特定する必要はない。
【００４８】
よって、以降の説明では、高速シリアルバス１５に接続される２つのコンポーネントの一方を、第１のコンポーネント、他方のコンポーネントを第２のコンポーネントと呼ぶものとする。また、高速シリアルバス１５の通信のフロー制御の初期化方法に関しては２つのコンポーネントは同じ機能を有するものであるが、説明の便宜上、第１のコンポーネントを中心にして説明する。
【００４９】
図３は、高速シリアルバス１５の基本構成の単位を示したものである。高速シリアルバス１５は、第１のコンポーネント２１と第２のコンポーネント２２と両者を接続する高速シリアルバス１５で構成される。
【００５０】
高速シリアルバス１５は、双方向のシリアルバスで、その速度は双方とも同一であり、例えば２．５Ｇｂｐｓである。
【００５１】
高速シリアルバス１５のハードウェアの基本構成は、図３（ｂ）に示したように、第１のコンポーネント２１から第２のコンポーネント２２に送信する差動型の２本の伝送ライン１５ａと、第２のコンポーネント２２から受信する差動型の２本の伝送ライン１５ｂとから成る。この４本の伝送ラインで双方向のシリアルバスの一単位を構成し、この一単位をレーンと呼ぶ。
【００５２】
２つのコンポーネント間は複数のレーンで接続することができ、複数のレーンをまとめてリンクと呼ぶ。
【００５３】
高速シリアルバス１５には、所定長のビット列を有するシリアルデータがまとまった単位として伝送される。このまとまった単位をパケットと呼んでいる。
【００５４】
パケットの概念は高速シリアルバス１５の方式において重要であるため、図４および図５を用いて概略説明する。
【００５５】
図４は、第１のコンポーネント２１と第２のコンポーネント２２の間の情報の送受信の流れを示したものである。この情報には、例えば所定の命令やメモリのアドレス、或いは各種データが含まれる。
【００５６】
一例として、例えば第１コンポーネント２１が図２のルートコンプレクス１２であり、第２のコンポーネント２２が記憶装置であって、ＣＰＵ１０が記憶装置にデータを書き込む場合を想定する。この場合、ルートコンプレクス１２は、ＣＰＵ１０から命令（書き込み命令）、記憶装置のメモリのアドレス、書き込むべきデータ等を受け取り、これらの情報を第２のコンポーネント２２である記憶装置に伝送することになる。
【００５７】
情報を伝送する際には、パケットに分割して伝送するが、このパケットの生成は、図４に示した、トランザクション層、データリンク層および物理層の３つの層によってパケットを生成する。
【００５８】
パケットには、大きく２種類あり、１つは主としてトランザクション層で生成されるＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐａｃｋｅｔ）と呼ばれるものである。ＴＬＰは、例えば命令やメモリアドレス、或いは書き込みデータ等の情報が所定長に分割されたものである。
【００５９】
第１コンポーネントから送信するデータをパケットに分割したもの、即ち第１コンポーネントデータをＴＬＰ１と表し、第２コンポーネントから送信するデータをパケットに分割したもの、即ち第２コンポーネントデータをＴＬＰ２と表すものとする。
【００６０】
パケットの他の種類は、主としてデータリンク層で独自に生成されるＤＬＬＰ（ＤａｔａＬｉｎｋ  Ｌａｙｅｒ  Ｐａｃｋｅｔ）と呼ばれるものである。
【００６１】
ＤＬＬＰは、フロー制御、即ち２つのコンポーネント間のデータ伝送の流れを制御するため等に用いられるパケットである。
【００６２】
ＴＬＰとＤＬＬＰは２つのコンポーネントの物理層間では時分割で伝送される。
【００６３】
図５は、ＴＬＰおよびＤＬＬＰが、３つの各層で生成されていく過程を示したものである。ＴＬＰの生成に関しては、まずトランザクション層で、伝送すべきデータが所定長（最大４ｋバイト）に分割され、命令やアドレスを含むヘッダ部とともに最初のパケットが生成される。
【００６４】
次にデータリンク層で分割されたパケットの番号を示すシーケンス番号と、伝送誤りを検出するためのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）ビットが付加される。
【００６５】
最後に物理層でフレームが前後に付加されてＴＬＰのパケットが完成する。
【００６６】
一方、ＤＬＬＰは、フロー制御のためにデータリンク層で独自に生成されるパケットで、４バイトのＤＬＬＰデータと２バイトのＣＲＣで構成され、物理層でさらに前後に１バイトのフレームが付加される。ＤＬＬＰの大きさは合計８バイトで構成され、ＤＬＬＰデータの内容にかかわらず一定長である。
【００６７】
第１のコンポーネント２１から伝送されたＴＬＰ１について、第２のコンポーネント２２で伝送誤りが検出された場合は、第２のコンポーネント２２は、ＤＬＬＰによって誤りが検出された旨（Ｎａｋ）と誤りが検出されたＴＬＰ１のシーケンス番号を第１のコンポーネント２１に返送する。誤りが検出されなかった場合もＡｃｋとシーケンス番号を同様に返送する。Ｎａｋの場合は、第１のコンポーネント２１は、同一シーケンス番号のＴＬＰ１を再送する。
【００６８】
高速シリアルバス１５の伝送方式では、さらにクレジットベースのフロー制御と呼ばれる伝送のフロー制御をＤＬＬＰを用いて行っている。
【００６９】
図６は、このフロー制御の概念を説明したものである。
【００７０】
「クレジットベース」とは、送信する相手側の「信用に基づいて」送信側のフロー制御を行う、即ち送信データを制御するという程の意味である。
【００７１】
具体的には、相手側の「クレジット（信用）」は、送信する相手側の受信用のバッファの容量に基づいて判断する。クレジット（信用）が大きい状態とは、相手側の受信バッファの残容量が十分にある状態であり、クレジット（信用）が小さい状態とは、相手側の受信バッファの残容量が少なくなっている状態を言う。
【００７２】
相手側の受信バッファの残容量が少なくなった場合には、送信側は一時送信を停止して、データが相手側の受信バッファからオーバフローしないようにする。
【００７３】
このようなフロー制御を行うためには、データ伝送中に適時相手方の受信バッファの残容量を入手する必要がある。
【００７４】
そこで、この役目をＤＬＬＰに担わせ、自己の受信バッファの残容量を相手側に送信するものとしている。
【００７５】
図６（ｂ）は、データ伝送中（初期化が完了して動作中の状態）の状態を示しており、第１コンポーネント２１は、自己の受信バッファ２１ｂの残容量をＤＬＬＰデータに含ませて送信する。このＤＬＬＰデータを、第１コンポーネントフロー制御値（略してＦＣ１）と呼ぶことにする。ＦＣ１は、ＴＬＰ１と時分割で第２コンポーネント２２に送信される。第２コンポーネント２２も同様に自己の受信バッファ２２ｂの残容量をＤＬＬＰデータに含ませて送信する。このＤＬＬＰデータを、第２コンポーネントフロー制御値（略してＦＣ２）と呼ぶことにする。このＦＣ２もＴＬＰ２と時分割で第１コンポーネント２１に送信される。
【００７６】
図６（ａ）は、双方のコンポーネントがデータ伝送を開始する前の初期化状態を示したものである。データ伝送を開始する前なので、双方の受信バッファの残容量は、それぞれの受信バッファの全容量を示すことになる。
【００７７】
フロー制御の初期化処理とは、自己の受信バッファの全容量を相手方に送信し、かつ相手方の受信バッファの全容量を受信することである。第１コンポーネント２１が、自己の受信バッファ２１ｂの全容量を第２コンポーネント２２に送信し、第２コンポーネント２２から第２コンポーネント２２の受信バッファ２２ｂの全容量を受信すると第１コンポーネント２１の初期化完了となる。
【００７８】
双方の初期化開始時期は必ずしも一致しないが、そのような場合でも双方の初期化が可能となるようにするため、第１の初期化状態および第２の初期化状態の、２つの初期化状態が設けられている。
【００７９】
第１コンポーネント２１が第１の初期化状態にあるときに、第２コンポーネント２２に送信する受信バッファ２１ｂの全容量を、第１の第１コンポーネント初期値（略してＦＣ（Ｉ）１１）と呼ぶ。
【００８０】
第１コンポーネント２１が第２の初期化状態にあるときに、第２コンポーネント２２に送信する受信バッファ２１ｂの全容量を、第２の第１コンポーネント初期値（略してＦＣ（Ｉ）２１）と呼ぶ。ちなみに、ＦＣ（Ｉ）１１とＦＣ（Ｉ）２１はパケットの種別としては区別されるもののデータの中身（受信バッファ２１ｂの全容量）としては同じものを保有している。
【００８１】
同様に、第２コンポーネント２２が第１の初期化状態にあるときに、第１コンポーネント２１に送信する受信バッファ２２ｂの全容量を、第１の第２コンポーネント初期値（略してＦＣ（Ｉ）１２）と呼ぶ。
【００８２】
同様にまた、第２コンポーネント２２が第２の初期化状態にあるときに、第１コンポーネント２１に送信する受信バッファ２２ｂの全容量を、第２の第２コンポーネント初期値（略してＦＣ（Ｉ）２２）と呼ぶ。
【００８３】
ＦＣ（Ｉ）１２とＦＣ（Ｉ）２２もデータの中身は受信バッファ２２ｂの全容量であり共通のものを保有している。
【００８４】
図７は、フロー制御の初期化処理の流れ（非特許文献１に開示されている従来の処理の流れ）を示したものである。図７は、第１コンポーネント２１を例にして示しているが、第２コンポーネント２２も同様の処理の流れとなる。
【００８５】
まず、第１コンポーネント２１は、上位のソフトウェア等による初期化処理の指令が来るのを待つ（Ｓ１）。例えば、情報処理装置１の電源がオンされると第１コンポーネント２１と第２コンポーネント２２に対して（この場合他のコンポーネントのペアに対しても同様に）初期化処理指令が出される。
【００８６】
この他、例えば、情報処理装置１の通電中に第２コンポーネントが装着された（いわゆるホットプラグされた）場合にも両コンポーネントに初期化指令が出されることになる。
【００８７】
初期化処理の指令を受信すると第１コンポーネント２１は、第１の初期化状態にうつる。そして第２コンポーネントに対してＦＣ（Ｉ）１１を送信する（Ｓ２）。
【００８８】
ＦＣ（Ｉ）１１の送信は、所定期間毎に行われる。このため、所定期間が経過したか否かを判断し、所定期間経過が経過した場合は（Ｓ３のｙｅｓ）、再度ＦＣ（Ｉ）１１を送信する。
【００８９】
一方、所定期間経過する前に（Ｓ３のｎｏ）、第２コンポーネント２２からＦＣ（Ｉ）１２またはＦＣ（Ｉ）２２を受信した場合は（Ｓ４のｙｅｓ）、第２の初期化状態に移行する。
【００９０】
他方、ＦＣ（Ｉ）１２またはＦＣ（Ｉ）２２を受信しない場合は（Ｓ４のｎｏ）、引き続き所定期間毎にＦＣ（Ｉ）１１を送信しつつＦＣ（Ｉ）１２またはＦＣ（Ｉ）２２を受信するまで第１の初期化状態にとどまる。
【００９１】
第２の初期化状態では、第２コンポーネント２２に対して、ＦＣ（Ｉ）２１を送信する（Ｓ５）。ＦＣ（Ｉ）２１の送信も所定期間毎に行われる（Ｓ６）。
【００９２】
第２の初期化状態において、ＦＣ（Ｉ）２２、ＦＣ２，或いはＴＬＰ２のいずれかを受信すると（Ｓ７のｙｅｓ）、第１コンポーネント２１は、初期化処理を完了する（Ｓ８）。
【００９３】
一方、第２の初期化状態において、ＦＣ（Ｉ）２２、ＦＣ２，或いはＴＬＰ２のいずれも受信しない場合は（Ｓ７のｎｏ）、ＦＣ（Ｉ）２１を所定期間毎に送信しつつＦＣ（Ｉ）２２、ＦＣ２，或いはＴＬＰ２のいずれかが受信されるまで第２の初期化状態に留まる。
【００９４】
即ち、第１コンポーネント２１は、ＦＣ（Ｉ）２２、ＦＣ２，或いはＴＬＰ２のいずれかが受信されない限り初期化処理が完了しない。
【００９５】
図８は、第１コンポーネント２１および第２コンポーネント２２がともに図７に示した処理の流れに従うときの両コンポーネントの初期化状態について、３つのケースを例にとって示したものである。
【００９６】
図８のケース（ａ）は、第１コンポーネント２１と第２コンポーネント２２に対してほぼ同時に初期化処理指令が出された場合の例である。この場合は、両コンポーネントは、ＦＣ（Ｉ）１１、ＦＣ（Ｉ）２１、ＦＣ（Ｉ）１２およびＦＣ（Ｉ）２２を順次授受して両コンポーネントは初期化処理を完了できる。
【００９７】
図８のケース（ｂ）は、第２コンポーネント２２の初期化指令が第１コンポーネント２１の初期化指令に比べて遅れた場合の例である。このケース（ｂ）では、第１コンポーネント２１が先に初期化完了となる。初期化が完了すると、図６（ｂ）に示したように第１コンポーネント２１は、ＦＣ１またはＴＬＰ１のいずれかを送信するようになる。
【００９８】
一方、第２コンポーネント２２は、図７のＳ７に示したように（この場合図７は第２コンポーネントの処理の流れに読み替える必要がある。即ち、Ｓ７は、「ＦＣ（Ｉ）２１  ｏｒ  ＦＣ１  ｏｒ  ＴＬＰ１  受信？」と読み替える）、ＦＣ（Ｉ）２１、ＦＣ１或いはＴＬＰ１のいずれかを受信すると初期化処理が完了する。
【００９９】
第１コンポーネント２１は初期化が完了しているため、実際にはＦＣ（Ｉ）２１を送信することはなく、ＦＣ１或いはＴＬＰ１のいずれか或いは両方を送信することになる。
【０１００】
ケース（ｂ）では、第２コンポーネント２２はＦＣ１を受信して初期化処理を完了することができる。
【０１０１】
ところで、高速シリアルバス１５は前述したように、クレジットベースのフロー制御を採用している。非特許文献１による規定によれば、クレジットの設定を「無限」に設定することを認めている。クレジットの設定が「無限」の意味は、自己の受信バッファの容量が無限にあり、相手側から送信されてくるデータをオーバフローさせる心配は無いということである。
【０１０２】
また、非特許文献１による規定によれば、「クレジット無限」の設定の場合は、自己の受信バッファの残容量を相手側に知らせなくとも良い規定となっている。つまり、第１コンポーネント２１を「クレジット無限」に設定した場合、第１コンポーネント２１は、ＦＣ１を第２コンポーネント２２に送信しなくても良いという規定である。受信バッファに十分余裕があるコンポーネントについてはＦＣ１の送信を不要とし、その分他のデータ（ＴＬＰ１）の送信を重視するものである。
【０１０３】
しかしながら、「クレジット無限」に設定された場合、図８ケース（ｃ）に示したような問題が発生する。
【０１０４】
ケース（ｂ）とケース（ｃ）との相違点は、ケース（ｂ）が「クレジット無限」の設定が成されていないのに対して、ケース（ｃ）では「クレジット無限」の設定がされている点である。「クレジット無限」の設定の場合には、第１コンポーネント２１からＦＣ１が送信されない場合が発生しうる。
【０１０５】
また、ＴＬＰ１の発生はコンポーネントの性質に依存するものである。第１コンポーネント２１がルートコンプレクス１２であり、第２コンポーネント２２が記憶装置のような場合、ＣＰＵ１０から記憶装置にアクセスが無い限り長時間ＴＬＰ１は発生されない。
【０１０６】
逆に第１コンポーネント２１が記憶装置のようにスレーブな性質ものでは第２コンポーネントからＴＬＰ２によってアクセスされない限りＴＬＰ１は発生しない。
【０１０７】
したがって、「クレジット無限」設定の場合、第１コンポーネント２１は、ＦＣ１およびＴＬＰ１のいずれも発生しない場合があり得る。
【０１０８】
この結果、ケース（ｃ）に示したように、第２コンポーネント２２の初期化処理が永久に或いは長時間完了しない場合が発生しうる。この場合、第１コンポーネント２１と第２コンポーネント２２は通信することができなくなる。
【０１０９】
図９は、上記問題点を解消するための、第１の実施形態によるフロー制御の初期化方法を示したものである。図７と同一の処理の部分は同一の符号を付している。
【０１１０】
第１の実施形態は、Ｓ７とＳ８の間にＳ１００を設けたもので構成される。即ち、第１コンポーネントが初期化完了した場合に（Ｓ７のｙｅｓ）、「クレジット無限」の設定が成されているか否かにかかわらず、強制的にＦＣ１またはＴＬＰ１を第２コンポーネント２２対して１回以上送信するように構成するものである。
【０１１１】
また、第１コンポーネントが初期化完了した場合に（Ｓ７のｙｅｓ）、「クレジット無限」の設定が成されているか否かにかかわらず、強制的にＦＣ１のみを第２コンポーネント２２対して１回以上送信するように構成するものであっても良い。
【０１１２】
この結果、図８のケース（ｃ）のような場合にも第２コンポーネント２２は初期化処理を完了することができる。
【０１１３】
なお、ＴＬＰ１は第２コンポーネント２２に対して悪影響を与えないものが好ましい。例えば第２コンポーネント２２が記憶装置である場合に、特定のアドレスに特定のデータを書き込むようなものであってはならない。
【０１１４】
図１０は、第２の実施形態によるフロー制御の初期化方法を示したものである。図７と同一の処理の部分は同一の符号を付している。
【０１１５】
第２の実施形態は、第１コンポーネント２１が初期化処理を完了した後に、第２コンポーネント２２からＦＣ（Ｉ）２２を受信した場合に（Ｓ２００のｙｅｓ）、第２コンポーネント２２に対して「クレジット無限」の設定が成されているか否かにかかわらず、ＦＣ１またはＴＬＰ１を１回以上送信するように構成するものである。
【０１１６】
また、第１コンポーネント２１が初期化処理を完了した後に、第２コンポーネント２２からＦＣ（Ｉ）２２を受信した場合に（Ｓ２００のｙｅｓ）、第２コンポーネント２２に対して「クレジット無限」の設定が成されているか否かにかかわらず、ＦＣ１のみを１回以上送信するものであっても良い。
【０１１７】
ＦＣ（Ｉ）２２の受信は、第２コンポーネント２２がいまだ第２の初期化状態にあることを意味している。よって、ＦＣ１またはＴＬＰ１を１回以上送信することによって第２コンポーネント２２の第２の初期化状態を完了させようというものである。
【０１１８】
この際のＴＬＰ１も、同様に第２コンポーネント２２に対して悪影響を与えないものが好ましい。
【０１１９】
図１１は、第３の実施形態によるフロー制御の初期化方法を示したものである。図７と同一の処理の部分は同一の符号を付している。
【０１２０】
第３の実施形態は、第１コンポーネント２１が第２の初期化状態にある場合において、ＦＣ（Ｉ）２２，ＦＣ２或いはＴＬＰ２のいずれかを受信しても（Ｓ７のｙｅｓ）すぐには初期化処理を完了させずに、ＦＣ（Ｉ）２１を１回以上送信し（Ｓ３００）、その後に初期化処理を完了するように構成したものである。
【０１２１】
この結果、第２コンポーネント２２は、図８のケース（３）のような場合でも初期化処理を完了させることができる。
【０１２２】
なお、図９ないし図１１に示したフロー制御の初期化処理は、ソフトウェアによって実現されるものであっても、ハードウェアによって実現されるものであっても良い。
【図面の簡単な説明】
【０１２３】
【図１】本発明にかかる情報処理装置の一実施形態を示す外観図。
【図２】本発明にかかる情報処理装置の基本構成の一例を示す図。
【図３】本発明にかかるフロー制御の初期化方法を説明するためのシリアルバスの基本単位の構成を示す図。
【図４】本発明にかかるフロー制御の初期化方法を説明するためパケットの生成過程を説明する第１の図。
【図５】本発明にかかるフロー制御の初期化方法を説明するためパケットの生成過程を説明する第２の図。
【図６】本発明にかかるフロー制御の初期化方法を説明するためのデータリンク層のパケット（ＤＬＬＰ）を説明する図。
【図７】本発明にかかるフロー制御の初期化方法を説明するための、従来の例によるフロー制御の初期化方法を説明する図。
【図８】従来の例によるフロー制御の初期化方法の問題点を説明する図。
【図９】本発明にかかるフロー制御の初期化方法の第１の実施形態による初期化処理の流れを説明する図。
【図１０】本発明にかかるフロー制御の初期化方法の第２の実施形態による初期化処理の流れを説明する図。
【図１１】本発明にかかるフロー制御の初期化方法の第３の実施形態による初期化処理の流れを説明する図。
【符号の説明】
【０１２４】
１  情報処理装置
２  情報処理装置本体
３  パネル部
４  キーボード
５  電源スイッチ
６  ディスプレイ
１０  ＣＰＵ
１２  ルートコンプレクス
１２ａ  ルートポート
１５  高速シリアルバス
１７  スイッチ
１８  エンドポイント
２１  第１のコンポーネント
２２  第２のコンポーネント
【図１】
2005293283.tif 000003
【図２】
2005293283.tif 000004
【図３】
2005293283.tif 000005
【図４】
2005293283.tif 000006
【図５】
2005293283.tif 000007
【図６】
2005293283.tif 000008
【図７】
2005293283.tif 000009
【図８】
2005293283.tif 000010
【図９】
2005293283.tif 000011
【図１０】
2005293283.tif 000012
【図１１】
2005293283.tif 000013