(57)【要約】【課題】質の良い伝送評価を行う。【解決手段】Ｉ／Ｏコントローラ２０は、Ｉ／Ｏコントローラ２０ａに送信するデータを保持するエントリを備えるバッファ２２と、バッファ２２のエントリに保持されたデータのうち、Ｉ／Ｏコントローラ２０ａに送信する最後のデータを示す「ＥＮＤ」タグを検出するタグチェッカ２９とを有する。また、Ｉ／Ｏコントローラ２０は、タグチェッカ２９が「ＥＮＤ」タグをリードレジスタ２８に記憶されたデータから検出した場合、ダミーデータを生成するＰＲＢＳ生成器３６を有する。また、Ｉ／Ｏコントローラ２０は、「ＥＮＤ」データを検出したデータを送信後、ＰＲＢＳ生成器３６が生成したダミーデータをＩ／Ｏコントローラ２０ａに送信するＳｅｒＤｅｓマクロ３９を有する。【選択図】図２
2013034133.tif 000002
【特許請求の範囲】
【請求項１】
受信装置に伝送路を介して接続する送信装置において、
前記受信装置に送信するデータを保持するエントリを備える保持部と、
前記保持部のエントリに保持されたデータのうち、前記受信装置に送信する最後のデータである最終データを検出する最終データ検出部と、
前記最終データ検出部が最終データを検出した場合、前記伝送路と前記受信装置を試験する試験データを生成する試験データ生成部と、
最終データ検出部が最終データとして検出したデータを送信後、前記生成された試験データを前記受信装置に送信する送信部を有することを特徴とする送信装置。
【請求項２】
前記最終データ検出部は、
データを書込む前記保持部のエントリを示すライトポインタと、
データを読み出す前記保持部のエントリを示すリードポインタと、
前記リードポインタが示すエントリから読み出した分割データを保持するリードレジスタと、
前記ライトポインタと前記リードポインタを比較する比較部と、
前記リードレジスタに保持したデータが最終データであるか否かを検出する検出部を有し、
前記送信部は、
前記比較部が、前記ライトポインタが示す値と前記リードポインタが示す値の一致を検出し、かつ、前記検出部が、前記リードレジスタに保持したデータが前記最終データであることを検出した場合、最終データ検出部が最終データとして検出したデータを送信後、前記生成された試験データを前記受信装置に送信することを特徴とする請求項１記載の送信装置。
【請求項３】
前記送信装置はさらに、
前記比較部が、前記ライトポインタが示す値と前記リードポインタが示す値の一致を検出し、かつ、前記検出部が、前記リードレジスタに保持したデータが前記最終データであることを検出した場合、前記検出された最終データに試験データを送信する旨を示す試験データ送信情報を挿入する試験制御部を有することを特徴とする請求項２記載の送信装置。
【請求項４】
前記試験制御部は、前記比較部が、前記ライトポインタが示す値と前記リードポインタが示す値の不一致を検出した場合、試験停止を指示する試験停止情報が挿入されたデータを生成し、
前記送信部は、前記生成された試験データを前記受信装置に送信後、前記試験制御部が生成した試験停止情報が挿入されたデータを前記受信装置に送信することを特徴とする請求項３記載の送信装置。
【請求項５】
前記送信装置は、
前記受信装置に複数の伝送路を介して接続され、
前記伝送路毎に、
前記保持部と、
前記最終分割データ検出部と、
前記試験制御部と、
前記試験データ生成部と、
前記送信部を有することを特徴とする請求項１記載の送信装置。
【請求項６】
送信装置と、前記送信装置に伝送路を介して接続する受信装置を有する送受信システムにおいて、
前記送信装置は、
前記受信装置に送信するデータを保持するエントリを備える保持部と、
前記保持部のエントリに保持されたデータのうち、前記受信装置に送信する最後のデータである最終データを検出する最終データ検出部と、
前記最終データ検出部が最終データを検出した場合、前記伝送路と前記受信装置を試験する試験データを生成する試験データ生成部と、最終データ検出部が最終データとして検出したデータを送信後、前記生成された試験データを前記受信装置に送信する送信部を有し、
前記受信装置は、
前記送信装置からのデータを受信する受信部と、
前記受信部が受信した前記送信装置からのデータのエラーを検出するエラー検出部を有することを特徴とする送受信システム。
【請求項７】
前記送受信システムにおいて、
前記最終データ検出部は、
データを書込む前記保持部のエントリを示すライトポインタと、
データを読み出す前記保持部のエントリを示すリードポインタと、
前記リードポインタが示すエントリから読み出した分割データを保持するリードレジスタと、
前記ライトポインタと前記リードポインタを比較する比較部と、
前記リードレジスタに保持したデータが最終データであるか否かを検出する検出部を有し、
前記送信部は、
前記比較部が、前記ライトポインタが示す値と前記リードポインタが示す値の一致を検出し、かつ、前記検出部が、前記リードレジスタに保持したデータが前記最終データであることを検出した場合、最終データ検出部が最終データとして検出したデータを送信後、前記生成された試験データを前記受信装置に送信することを特徴とする請求項６記載の送受信システム。
【請求項８】
前記送受信システムにおいて、
前記送信装置はさらに、
前記比較部が、前記ライトポインタが示す値と前記リードポインタが示す値の一致を検出し、かつ、前記検出部が、前記リードレジスタに保持したデータが前記最終データであることを検出した場合、前記検出された最終データに試験データを送信する旨を示す試験データ送信情報を挿入する試験制御部を有することを特徴とする請求項７記載の送受信システム。
【請求項９】
前記送受信システムにおいて、
前記試験制御部は、
前記比較部が、前記ライトポインタが示す値と前記リードポインタが示す値の不一致を検出した場合、試験停止を指示する試験停止情報が挿入されたデータを生成し、
前記送信部は、前記生成された試験データを前記受信装置に送信後、前記試験制御部が生成した試験停止情報が挿入されたデータを前記受信装置に送信することを特徴とする請求項８記載の送受信システム。
【請求項１０】
前記送受信システムにおいて、
前記受信装置はさらに、
前記エラー検出部が検出した前記送信装置からのデータのエラーを計数するエラー計数部を有することを特徴とする請求項６記載の送受信システム。
【請求項１１】
前記送受信システムにおいて、
前記受信装置はさらに、
前記受信部が、前記送信装置からの試験データ送信情報を受信した場合、前記前記送信装置からの試験データを破棄する破棄部を有することを特徴とする請求項８記載の送受信システム。
【請求項１２】
前記送受信システムにおいて、
前記送信装置は、
前記受信装置に複数の伝送路を介して接続されるとともに、
前記伝送路毎に、
前記保持部と、
前記最終分割データ検出部と、
前記試験制御部と、
前記試験データ生成部と、
前記送信部を有することを特徴とする請求項６記載の送受信システム。
【請求項１３】
受信装置に伝送路を介して接続され、前記受信装置に送信するデータを分割した分割データを保持するエントリを複数備える保持部を有する送信装置の制御方法において、
前記保持部のエントリに保持されたデータのうち、前記受信装置に送信する最後のデータである最終データを検出し、
前記検出された最終分割データに、試験開始を指示する試験開始情報を挿入し、
前記最終分割データに挿入された試験開始情報に基づき、前記伝送路と前記受信装置を試験する試験データを生成し、
前記試験開始情報が挿入された最終分割データを送信後、前記生成された試験データを前記伝送路に送信することを特徴とする送信装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置、送受信システムおよび制御方法に関する。
【背景技術】
【０００２】
従来、伝送経路を介して１ビット幅のデータを送信するシリアル伝送技術において、送信したデータのビットエラーの発生率を検証する伝送評価が行われる。このような伝送評価の一例として、各伝送経路に通常時よりも高い負荷をかけることで、実環境における外乱の発生を再現し、伝送経路の伝送評価を行う技術が知られている。
【０００３】
このような技術の一例として、ＴＰ（Ｔｅｓｔ  Ｐｒｏｇｒａｍ）等のソフトウェアを用いて、伝送経路の負荷を上昇させ、伝送経路の伝送評価を行う伝送装置が知られている。例えば、伝送装置は、ＴＰを用いて伝送評価を行う場合には、シリアル変換用マクロ（ＳｅｒＤｅｓ：ＳＥＲｉａｌｉｚｅｒ／ＤＥＳｅｒｉａｌｉｚｅｒ）の動作周波数を通常動作時の動作周波数よりも高い値に設定する。そして、伝送装置は、各伝送経路の負荷を上昇させることで、伝送評価を実行する。また、例えば、伝送装置は、送信するデータに意図的なビットエラーを発生させることで、伝送経路の負荷を上昇させ、伝送評価を実行する。
【０００４】
また、ＰＲＢＳ（Ｐｓｅｕｄｏ−Ｒａｎｄｏｍ  Ｂｉｔ  Ｓｅｑｕｅｎｃｅ：擬似乱数ビット）発生器等のハードウェアを用いて、伝送経路の負荷を上昇させ、伝送経路の伝送評価を行う技術が知られている。例えば、伝送装置は、ＰＲＢＳ発生器を用いて伝送評価を行う場合には、通常のデータ伝送動作を停止させ、ＰＲＢＳ発生器が発生する擬似乱数を伝送経路に出力し続けることによって、伝送経路の負荷を上昇させ、伝送評価を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−０２４９５４号公報
【特許文献２】特開２００６−０６５５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した伝送評価を実行する技術では、通常動作時とは異なる状態を意図的に作り出すため、質の良い伝送評価を行うことができない場合があるという問題がある。
【０００７】
例えば、伝送装置は、シリアル変換用マクロの動作周波数を上昇させた場合には、伝送装置からのデータを受信する対向装置がデータを適切に取得することができるタイミングの幅を狭くしてしまう。すなわち、動作周波数を上昇させた場合には、基準タイミングとなるクロック信号に先だってデータ信号を確定しておかなければならない最小限の時間であるセットアップタイムと、タイミング信号を与えた後もデータ信号を保持しておかなければならない時間であるホールドタイムとの合計期間が短くなる。この結果、動作周波数を上昇させた場合、伝送装置は、伝送装置からのデータを受信する対向装置のシリアル変換用マクロが通常の動作周波数でデータを送信する場合よりも多くのエラーを検出してしまい、質の良い伝送評価を行う事ができない。
【０００８】
また、伝送装置は、意図的にビットエラーを発生させた場合には、伝送経路において偶発的に発生するビットエラーをマスクしてしまう。つまり、伝送装置は、送信したデータから検出されるビットエラーが伝送経路において偶発的に発生したビットエラーであるのか、意図的に発生させたビットエラーであるのかを区別することができないので、質の良い伝送評価を行う事ができない。
【０００９】
また、例えば、伝送装置は、ＰＲＢＳ出力器を用いて伝送評価を行った場合には、通常のデータ伝送を停止して、ＰＲＢＳ出力器が生成したパターンを伝送経路に出力する。この結果、伝送装置は、伝送経路を流すデータのパターンを安定させてしまうので、伝送経路を流れるデータのパターンが通常動作時とは異なる結果、質の良い伝送評価を行う事ができない。
【００１０】
なお、伝送装置が複数の伝送経路を介してデータを送信する際に、所定のデータパターンの影響や、シリアル変換用マクロの設定値の影響を正確に判別するためには、各伝送経路の使用率が均一であることが望ましい。しかし、伝送装置は、複数の伝送経路を有するシステムの一部を用いて伝送経路の試験を行う場合には、内部資源がボトルネックとなり、各伝送経路の使用率を均一にできない。
【００１１】
また、伝送装置は、各伝送経路の使用率を均一にできない場合は、検出されたエラーがデータパターンに依存するエラーであるのか、送信したデータ量に依存するエラーであるのか、伝送経路の位置に依存するエラーであるか否かの切り分けを困難にする。
【００１２】
本願に開示の技術は、上述した問題に鑑みてなされたものであり、質の良い伝送評価を行う。
【課題を解決するための手段】
【００１３】
１つの側面では、受信装置に伝送路を介して接続する送信装置である。送信装置は、受信装置に送信するデータを保持するエントリを備える保持部と、保持部のエントリに保持されたデータのうち、受信装置に送信する最後のデータである最終データを検出する最終データ検出部とを有する。また、送信装置は、最終データ検出部が最終データを検出した場合、伝送路と受信装置を試験する試験データを生成する試験データ生成部を有する。また、送信装置は、最終データ検出部が最終データとして検出したデータを送信後、生成された試験データを受信装置に送信する送信部を有する。
【発明の効果】
【００１４】
１つの側面では、質の良い伝送評価を行う。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例１に係る情報処理システムを説明するための図である。
【図２】図２は、実施例１に係るＩ／Ｏコントローラの一例を説明するための図である。
【図３】図３は、実施例１に係るＩ／Ｏコントローラが送信するデータの一例を説明するための図である。
【図４】図４は、実施例１に係るＩ／Ｏコントローラがダミーパケットを送信する直前に送信するデータの一例を説明するための図である。
【図５】図５は、実施例１に係るＩ／Ｏコントローラがダミーデータの送信終了時に送信するデータを説明するための図である。
【図６】図６は、実施例１に係る受信側のＩ／Ｏコントローラが実行する処理について説明するための図である。
【図７】図７は、実施例１に係るＩ／Ｏコントローラがダミーモードに遷移する処理を説明するための図である。
【図８】図８は、実施例１に係るＣＰＵが複数の伝送経路について、通常時に評価試験を行う処理を説明するための図である。
【図９】図９は、実施例１に係るＩ／Ｏコントローラが実行する処理の流れを説明するための図である。
【発明を実施するための形態】
【００１６】
以下に添付図面を参照して本願に係る送信装置、送受信システムおよび制御方法について説明する。
【実施例１】
【００１７】
以下の実施例１では、図１を用いて、伝送システムを有する情報処理システムの一例を説明する。図１は、実施例１に係る情報処理システムを説明するための図である。なお、情報処理システム１は、少なくとも、複数のＣＰＵを有し、複数のシリアル伝送路を介して、各ＣＰＵが相互にデータの送受信を行うシステムである。
【００１８】
図１に示すように、情報処理システム１は、ＣＰＵ１０、ＣＰＵ１０ａ、メモリ１４、メモリ１４ａを有する。ＣＰＵ１０とＣＰＵ１０ａとは、複数のシリアル伝送路によって接続されている。また、メモリ１４は、ＣＰＵ１０に接続されるメモリであり、メモリ１４ａは、ＣＰＵ１０ａに接続されるメモリである。
【００１９】
ＣＰＵ１０は、コア１１、メモリコントローラ１２、キャッシュ１３、Ｉ／Ｏ（Input/Output）コントローラ２０を有する。また、ＣＰＵ１０ａは、コア１１ａ、メモリコントローラ１２ａ、キャッシュ１３ａ、Ｉ／Ｏコントローラ２０ａを有する。なお、ＣＰＵ１０ａが有するコア１１ａ、メモリコントローラ１２ａ、キャッシュ１３ａ、Ｉ／Ｏコントローラ２０ａは、ＣＰＵ１０が有するコア１１、メモリコントローラ１２、キャッシュ１３、Ｉ／Ｏ（Input/Output）コントローラ２０と同様の処理を実行するものとして、以下の説明を省略する。
【００２０】
コア１１は、ＣＰＵ１０の主要部であり、キャッシュ１３やメモリ１４が記憶するデータを用いて、各種演算処理を実行し、各種演算処理の結果となるデータをキャッシュ１３やメモリ１４に格納する。また、コア１１は、データをＣＰＵ１０ａに送信する場合には、送信するデータをキャッシュ１３に格納し、キャッシュ１３に格納したデータをＣＰＵ１０ａに送信するようＩ／Ｏコントローラ２０に依頼する。また、メモリコントローラ１２は、メモリ１４に格納されたデータの読み出しや、メモリ１４にデータの書き込みを行う制御装置である。
【００２１】
Ｉ／Ｏコントローラ２０は、ＣＰＵ１０ａが有するＩ／Ｏコントローラ２０ａとの間でデータの送受信を行う入出力装置である。また、Ｉ／Ｏコントローラ２０は、伝送経路の評価を行う場合には、各シリアル伝送経路の使用率を上げ、高速で各シリアル伝送経路の評価を行う。
【００２２】
具体的には、Ｉ／Ｏコントローラ２０は、キャッシュ１３からＩ／Ｏコントローラ２０ａに送信するデータが途切れた場合には、ダミーデータをＩ／Ｏコントローラ２０ａに送信することで、伝送経路の利用率を１００パーセントに近づける。また、Ｉ／Ｏコントローラ２０は、キャッシュ１３からＩ／Ｏコントローラ２０ａに送信するデータが発生した場合には、ダミーデータの送信を停止し、通常の送信処理を実行する。
【００２３】
以下、図面を用いて、Ｉ／Ｏコントローラ２０が実行する処理について、詳しく説明する。図２は、実施例１に係るＩ／Ｏコントローラの一例を説明するための図である。なお、図２には、Ｉ／Ｏコントローラ２０のうち、データをＣＰＵ１０ａが有するＩ／Ｏコントローラ２０ａへ送信する部分について記載した。また、図２には、Ｉ／Ｏコントローラ２０のうち、１つのシリアル伝送経路を用いて、データを送信する部分について記載した。
【００２４】
図２に示す例では、Ｉ／Ｏコントローラ２０は、上位層２１、バッファ２２、バッファ制御部２３、ライトレジスタ２７、リードレジスタ２８、タグチェッカ２９、制御部３０、タグ編集部３１、ＤＬＬＰ（Data  Link  Layer  Packet）ジェネレータ３２を有する。また、Ｉ／Ｏコントローラ２０は、マルチプレクサ３３、リードレジスタ３４、フラグ記憶部３５、ＰＲＢＳ（Pseudo-Random  Bit  Sequence）生成器３６、マルチプレクサ３７を有する。また、Ｉ／Ｏコントローラ２０は、ＣＲＣ（Cyclic  Redundancy  Check）生成部３８、ＳｅｒＤｅｓ（Serializer/Deserializer）マクロ３９を有する。
【００２５】
また、バッファ制御部２３は、ライトポインタ２４、リードポインタ２５、比較器２６を有する。なお、図２に示す例では、バッファ２２、バッファ制御部２３、ライトレジスタ２７、リードレジスタ２８、タグチェッカ２９、制御部３０、タグ編集部３１、ＤＬＬＰジェネレータ３２、マルチプレクサ３３、リードレジスタ３４、フラグ記憶部３５及びＰＲＢＳ生成器３６は、Ｉ／Ｏコントローラ２０の動作クロックに合わせてそれぞれ動作するものとする。
【００２６】
上位層２１は、キャッシュ１３から送信するデータを取得した場合には、取得したデータ、すなわち、ＴＬＰ（Transaction  Layer  Packet）をタグ付の８バイトのデータに分割し、分割した各データをライトレジスタ２７に格納する。
【００２７】
バッファ２２は、対向装置であるＩ／Ｏコントローラ２０ａに送信するデータを記憶するバッファである。つまり、バッファ２２は、Ｉ／Ｏコントローラ２０ａに送信するデータを保持するエントリを備える。具体的には、バッファ２２は、記憶領域ごとに、タグ付の８バイトのデータに分割されたパケットのデータを記憶する。
【００２８】
バッファ制御部２３は、バッファ２２に対するデータの格納や、バッファ２２からのデータの読み出しを制御する。具体的には、バッファ制御部２３は、ライトポインタ２４とリードポインタ２５とを有する。
【００２９】
ライトポインタ２４は、バッファ２２が有する記憶領域のうち、新たなデータを格納する記憶領域のアドレスを示す。つまり、ライトポインタ２４は、新たなデータを書き込むバッファ２２のエントリを示す。バッファ制御部２３は、ライトレジスタ２７から分割されたデータがバッファ２２に送信された場合には、送信されたデータをライトポインタ２４が示すアドレスに対応する記憶領域に格納させる。また、バッファ制御部２３は、バッファ２２にデータを格納する度に、ライトポインタが示すアドレスを１インクリメントする。つまり、バッファ制御部２３は、バッファ２２が有する各格納領域に対して分割されたデータを順次格納する。
【００３０】
リードポインタ２５は、バッファ２２が有する記憶領域のうち、次に読み出されるデータが格納された領域のアドレスを示す。つまり、リードポインタ２５は、データを読み出すバッファ２２のエントリを示す。バッファ制御部２３は、リードレジスタ２８が新たなバッファ２２に格納されたデータを読み出す場合には、リードポインタ２５が示すアドレスに対応する記憶領域に格納されたデータを読み出させる。また、バッファ制御部２３は、リードレジスタ２８がデータを読み出した場合には、リードポインタ２５が示すアドレスを１インクリメントする。つまり、バッファ制御部２３は、リードレジスタ２８がバッファ２２に格納されたデータを読み出す場合には、バッファ２２に格納された各データを、格納された順に読み出させる。
【００３１】
比較器２６は、バッファ２２が空か否かを判別する。具体的には、比較器２６は、ライトポインタ２４が示すアドレスと、リードポインタ２５が示すアドレスとを比較する。そして、比較器２６は、ライトポインタ２４が記憶するアドレスとリードポインタ２５が記憶するアドレスとが一致した場合には、バッファ２２が空になった旨を制御部３０に通知する。つまり、比較器２６は、分割したデータを送信中のＴＬＰと、次回送信するＴＬＰとの間に隙間が存在する場合には、制御部３０に、バッファ２２が空になった旨を通知する。
【００３２】
また、比較器２６は、ライトポインタ２４が示すアドレスとリードポインタ２５が示すアドレスとが一致した状態から、ライトポインタ２４が示すアドレスとリードポインタ２５が示すアドレスとが一致しない状態へと遷移した場合には、新たなデータがバッファ２２に格納された旨を制御部３０に通知する。ここで、ライトポインタ２４が示すアドレスとリードポインタ２５が示すアドレスとが一致しない場合とは、例えば、バッファ２２に書き込まれたデータに読み出されていないデータが存在する場合や、バッファ２２に書き込まれたデータが全て読み出された後に、新たなデータがバッファ２２に書き込まれた場合である。
【００３３】
ライトレジスタ２７は、上位層２１から８バイトに分割されたデータを取得した場合には、取得したデータを記憶する。そして、ライトレジスタ２７は、バッファ２２が有する各格納領域のうち、リードポインタ２５が記憶するアドレスが示す領域に、自身が記憶するデータを格納する。
【００３４】
リードレジスタ２８は、バッファ２２が有する各格納領域のうち、リードポインタ２５が記憶するアドレスが示す領域に格納されたデータを読み込む。そして、リードレジスタ２８は、読み込んだデータをタグ編集部３１へ送信する。
【００３５】
タグチェッカ２９は、リードレジスタ２８がタグ編集部３１に対して出力するデータに付与されたタグの種別を判別する。そして、タグチェッカ２９は、判別したタグの種別を制御部３０に通知する。例えば、タグチェッカ２９は、リードレジスタ２８がタグ編集部３１に対して出力するデータに付与されたタグが、ＴＬＰの開始サイクルを表すタグである「ＳＴＰ（Start  TLP）」である場合には、タグが開始サイクルを表す旨を制御部３０に通知する。また、タグチェッカ２９は、リードレジスタ２８がタグ編集部３１に対して出力するデータに付与されたタグがＴＬＰの最終サイクルを表すタグである「ＥＮＤ」タグである場合には、タグが最終サイクルを表す旨を制御部３０に通知する。つまり、タググチェッカ２９は、Ｉ／Ｏコントローラ２０ａに送信する最後のデータを検出した場合には、検出した旨を制御部３０に通知する。
【００３６】
制御部３０は、バッファ２２が空になったと比較器２６が判別し、比較器２６からバッファ２２が空になった旨の通知を受付け、かつ、タグチェッカ２９からタグが「ＥＮＤ」である旨の通知を受付けた場合は、以下の処理を実行する。すなわち、制御部３０は、タグ編集部３１に、当該「ＥＮＤ」タグを、ダミーデータを送信する旨を示す「ＤＰＳ（Dummy  Packet  mode  Start）」タグに変換する旨の通知を行うと共に、フラグ記憶部３５にダミーデータの生成を示すフラグを格納する。換言すると、制御部３０は、フラグ記憶部３５に、ダミーデータをＩ／Ｏコントローラ２０ａに送信するダミーモードである旨を示すフラグを格納する。
【００３７】
また、制御部３０は、タグ編集部３１によってタグが変換されたデータがリードレジスタ３４からＣＲＣ生成部３８に出力されたタイミングで、マルチプレクサ３７にＰＲＢＳ生成器３６からの出力をＣＲＣ生成部３８に伝達する旨の信号を送信する。
【００３８】
また、制御部３０は、比較器２６から、新たなデータがバッファ２２に格納された旨の通知を受付けた場合には、以下の処理を実行する。すなわち、制御部３０は、フラグ記憶部３５に格納されたダミーデータの生成を示すフラグを消去するとともに、マルチプレクサ３７にリードレジスタ３４からの出力をＣＲＣ生成部３８伝達する旨の信号を送信する。また、制御部３０は、ＤＬＬＰジェネレータ３２に、ＤＬＬＰパケットを生成する旨を通知するとともに、マルチプレクサ３３に、ＤＬＬＰジェネレータ３２からの出力をリードレジスタ３４へ伝達する旨の信号を送信する。
【００３９】
タグ編集部３１は、バッファ２２が空になったと比較器２６が判別した場合には、ダミーデータを送信する旨を示す情報を、バッファ２２から最後に送信されるデータに付加する。具体的には、タグ編集部３１は、制御部３０から「ＥＮＤ」タグを「ＤＰＳ」タグに変換する旨の通知を受付けた場合には、以下の処理を実行する。すなわち、タグ編集部３１は、リードレジスタ２８から受信した８バイトのデータのうち、ＴＬＰの最終サイクルを示すタグ「ＥＮＤ」タグを、「ＤＰＳ」タグに変換する。そして、タグ編集部３１は、タグを変換したパケットをマルチプレクサ３３に送信する。つまり、タグ編集部３１は、ライトポインタ２４とリードポインタ２５が示す値が一致し、かつ、リードレジスタ２８に記憶されたパケットに「ＥＮＤ」タグが格納されている場合には、「ＥＮＤ」タグを「ＤＰＳ」タグに変換する。
【００４０】
ＤＬＬＰジェネレータ３２は、空のバッファ２２に新たなデータが記憶されたと比較器２６が判別した場合は、生成したダミーデータの送信を終了する旨を示すデータをマルチプレクサ３３に送信する。例えば、ＤＬＬＰジェネレータ３２は、ダミーデータの送信を終了する旨を示す１バイトの「ＤＰＥ（Dummy  Packet  mode  End）」タグを４つ生成し、生成した「ＤＰＥ」タグをマルチプレクサ３３に出力する。つまり、ＤＬＬＰジェネレータ３２は、ライトポインタ２４とリードポインタ２５の値とがずれた場合には、試験の終了を示す「ＤＰＥ」タグを出力する。
【００４１】
マルチプレクサ３３は、タグ編集部３１が送信したデータ、または、ＤＬＬＰジェネレータ３２が生成したＤＬＬＰをリードレジスタ３４に伝達する。具体的には、マルチプレクサ３３は、制御部３０からタグ編集部３１の出力をリードレジスタ３４に伝達する旨の信号を受信した場合には、タグ編集部３１からの出力をリードレジスタ３４に伝える。また、マルチプレクサ３３は、制御部３０からＤＬＬＰジェネレータ３２の出力をリードレジスタ３４に出力する旨の信号を受信した場合には、ＤＬＬＰジェネレータ３２からの出力であるＤＬＬＰをリードレジスタ３４に伝える。
【００４２】
リードレジスタ３４は、マルチプレクサ３３から、データまたはＤＬＬＰを受信する。そして、リードレジスタ３４は、受信したデータまたはＤＬＬＰをマルチプレクサ３７に出力する。なお、リードレジスタ３４は、タグ編集部３１の出力が出力するデータ、ＤＬＬＰジェネレータ３２が出力するＤＬＬＰと、ＰＲＢＳ生成器３６が生成するＰＲＢＳとをＣＲＣ生成部３８に伝達するタイミングを制御するためのレジスタである。
【００４３】
フラグ記憶部３５は、ダミーデータの生成を示すフラグを記憶する記憶部である。例えば、フラグ記憶部３５は１ビットのレジスタであり、制御部３０がダミーデータの生成をＰＲＢＳ生成器３６に実行させる場合には、フラグ「１」が格納される。このような場合には、フラグ記憶部３５は、ＰＲＢＳ生成器に「１」を出力し続ける。
【００４４】
ＰＲＢＳ生成器３６は、バッファ２２が空になったと比較器２６が判別した場合には、ダミーデータを生成する。また、ＰＲＢＳ生成器３６は、空のバッファ２２に新たなデータが記憶されたと比較器２６が判別した場合には、ダミーデータの生成を停止する。
【００４５】
具体的には、ＰＲＢＳ生成器３６は、バッファ２２が空になったと比較器２６が判別した結果、制御部３０がフラグ記憶部３５にダミーデータの生成を示すフラグを格納した場合には、ダミーデータとしてＰＲＢＳをマルチプレクサ３７に出力する。例えば、ＰＲＢＳ生成器３６は、フラグ記憶部３５からダミーデータの生成を示す「１」の出力を受付けている間、ＰＲＢＳをマルチプレクサ３７に出力する。
【００４６】
また、ＰＲＢＳ生成器３６は、空のバッファ２２に新たなデータが記憶されたと比較器２６が判別した結果、制御部３０がフラグ記憶部３５のフラグを消去した場合には、ＰＲＢＳの出力を停止する。例えば、ＰＲＢＳ生成器３６は、フラグ記憶部３５からダミーデータの生成を示す「１」の出力が停止した場合には、ＰＲＢＳの出力を停止する。つまり、ＰＲＢＳ生成器３６は、Ｉ／Ｏコントローラ２０ａに送信する最終データが検出された場合には、伝送路とＩ／Ｏコントローラ２０ａとを試験する試験データを生成する。
【００４７】
マルチプレクサ３７は、マルチプレクサ３３と同様、制御部３０からリードレジスタ３４の出力をＣＲＣ生成部３８に伝達する旨の信号を受信した場合には、リードレジスタ３４からの出力をＣＲＣ生成部３８に出力する。また、マルチプレクサ３７は、制御部３０からＰＲＢＳ生成器３６からの出力をＣＲＣ生成部３８に伝達する旨の信号を受信した場合には、ＰＲＢＳ生成器３６が生成したＰＲＢＳをＣＲＣ生成部３８に出力する。
【００４８】
ＣＲＣ生成部３８は、ＳｅｒＤｅｓマクロ３９が送信するデータの冗長巡回検査に用いるＣＲＣを算出し、算出したＣＲＣをＳｅｒＤｅｓマクロ３９に送信する。具体的には、ＣＲＣ生成部３８は、マルチプレクサ３７から各データを受信し、受信したデータを解析した後に、ＳｅｒＤｅｓマクロ３９に送信する。また、ＣＲＣ生成部３８は、受信したデータに「ＥＮＤ」タグ、または、「ＤＰＳ」タグ、又は、「ＤＰＥ」タグが含まれる場合には、それまで解析したデータのＣＲＣを生成し、生成したＣＲＣをデータの後でＳｅｒＤｅｓマクロ３９に送信する。
【００４９】
ＳｅｒＤｅｓマクロ３９は、バッファ２２が空でない場合は、バッファ２２に記憶されたデータをＩ／Ｏコントローラ２０ａへ送信する。また、ＳｅｒＤｅｓマクロ３９は、バッファ２２が空となった場合は、ＰＲＢＳ生成器３６が生成したＰＲＢＳをＩ／Ｏコントローラ２０ａに送信する。また、ＳｅｒＤｅｓマクロ３９は、空のバッファ２２に新たなデータが格納された場合には、ダミーデータの送信を終了する旨のデータをＩ／Ｏコントローラ２０ａに送信する。
【００５０】
具体的には、ＳｅｒＤｅｓマクロ３９は、マルチプレクサ３７から受信したデータをシリアルデータに変換し、変換後のシリアルデータを、シリアル伝送路を介してＩ／Ｏコントローラ２０ａに送信する。例えば、ＳｅｒＤｅｓマクロ３９は、バッファ２２に分割されたデータが格納されている場合には、この分割されたデータを取得し、取得したデータをＩ／Ｏコントローラ２０ａに送信する。
【００５１】
また、ＳｅｒＤｅｓマクロ３９は、バッファ２２が空である場合には、「ＥＮＤ」タグを「ＤＰＳ」タグに変換したデータをＩ／Ｏコントローラ２０ａに送信する。また、ＳｅｒＤｅｓマクロ３９は、空のバッファ２２に新たなデータが格納された場合には、「ＤＰＥ」タグを有するＤＬＬＰをＩ／Ｏコントローラ２０ａに送信する。
【００５２】
次に、図を用いて、送信側のＩ／Ｏコントローラ２０が送信するデータの一例について説明する。まず、図３を用いてＩ／Ｏコントローラ２０が送信する通常のデータについて説明する。図３は、実施例１に係るＩ／Ｏコントローラが送信するデータの一例を説明するための図である。
【００５３】
図３に示す例では、パケットを８つの１バイトのデータに分割し、ｌａｎｅ０からｌａｎｅ７までの８ｌａｎｅ（１バイト×８ｌａｎｅ）に分割した１バイトのデータをそれぞれ並べた例を示す。つまり、図３に示すデータのうち、行方向に並ぶ８バイトのデータ、１つのバスを介して１サイクル中にＩ／Ｏコントローラ２０ａへ送信されるデータを示す。換言するならば、行方向に並ぶ８バイトのデータ、つまり１サイクルのデータは、１サイクルでバッファ２２に格納され、バッファ２２から出力されるデータである。なお、図３には、１つのＴＬＰをｎサイクル分のデータに分割した例を示した。
【００５４】
ここで、図３に示す各１バイトのデータのうち、「ＳＴＰ」は、ＴＬＰの開始サイクルを表すタグであり、「ＨＤ（Header）」は、ＴＬＰを制御するためのヘッダであり、パケットのサイズ情報やパケットの宛先情報等が格納される。また、図３中の「ＤＴ＃０〜＃７」は、Ｉ／Ｏコントローラ２０ａに送信されるデータである。なお、図３に示す例では、ＣＲＣの一例として、３２ビット幅のＣＲＣが付加された例を示す。
【００５５】
上位層２１は、キャッシュ１３から取得したデータを図３に示すように８バイトずつのデータに分割し、１サイクル毎に分割した８バイトのデータをライトレジスタ２７に送信する。ＣＲＣ生成部３８は、０サイクル目のｌａｎｅ０に示す「ＳＴＰ」タグから、ｎサイクル目のｌａｎｅ３に示す「ＥＮＤ」タグまでを解析し、解析したデータの３２ビット幅のＣＲＣを生成する。
【００５６】
次に、図４を用いて、Ｉ／Ｏコントローラ２０が、ダミーデータを送信する直前に送信するデータ、すなわち、タグ編集部３１によって「ＥＮＤ」タグが「ＤＰＳ」タグに変更された際に送信するデータの一例について説明する。図４は、実施例１に係るＩ／Ｏコントローラがダミーパケットを送信する直前に送信するデータの一例を説明するための図である。
【００５７】
なお、図４には、図３と同様に１つのＴＬＰを８バイト（１バイト×８ｌａｎｅ）ごとのｎサイクルに分割した例を示す。例えば、タグ編集部３１は、図３に示すｎサイクル目の８バイトのデータを受信した際に、制御部３０から「ＥＮＤ」タグを「ＤＰＳ」タグに変換する旨の通知を受付ける。このような場合には、タグ編集部３１は、図４中（Ａ）に示すように、ｎサイクル目のｌａｎｅ０〜ｌａｎｅ３の「ＥＮＤ」タグを「ＤＰＳ」タグに変換する。その後、Ｉ／Ｏコントローラ２０は、０サイクル目のｌａｎｅ０に示す「ＳＴＰ」タグから、ｎサイクル目のｌａｎｅ３に示す「ＤＰＳ」タグまでのＣＲＣを変換後のデータに付加し、ＣＲＣを付加したデータをＩ／Ｏコントローラ２０ａへ送信する。
【００５８】
次に、図５を用いて、Ｉ／Ｏコントローラ２０が、ダミーデータの送信を終了する際に送信するデータについて説明する。図５は、実施例１に係るＩ／Ｏコントローラがダミーデータの送信終了時に送信するデータを説明するための図である。例えば、図５中（Ｂ）に示すように、ＤＬＬＰジェネレータ３２は、０サイクル目のｌａｎｅ０〜ｌａｎｅ３に示すように、ダミーデータの送信を終了する旨を示す「ＤＰＥ」を生成する。その後、Ｉ／Ｏコントローラ２０は、「ＤＰＥ」に、「ＤＰＳ」から「ＤＰＥ」までの各サイクルを計算して算出した「ＣＲＣ」を付したＤＬＬＰをＩ／Ｏコントローラ２０ａに送信する。
【００５９】
次に、図６を用いて、受信側のＩ／Ｏコントローラ２０ａが実行する処理について説明する。図６は、実施例１に係る受信側のＩ／Ｏコントローラが実行する処理について説明するための図である。なお、図６には、Ｉ／Ｏコントローラ２０ａのうちＩ／Ｏコントローラ２０から各データを受信する処理を実行する部分を示した。また、図６には、Ｉ／Ｏコントローラ２０ａが１つのシリアル伝送経路を介してデータを受信する部分について示した。すなわち、Ｉ／Ｏコントローラ２０ａは、図６に示すＳｅｒＤｅｓマクロ４０、受信レジスタ４１、タグチェッカ４２、ＴＬＰチェッカ４３、ＤＬＬＰチェッカ４４、フラグ記憶部４５、マルチプレクサ４６、ＣＲＣチェッカ４７、性能評価用カウンタ４８、上位層４９の各部を、伝送経路ごとに有する。
【００６０】
すなわち、Ｉ／Ｏコントローラ２０ａは、図６に示す各部４０〜４９以外にも、図２に示す各部２１〜３８と同様の機能を発揮する各部を有する。同様に、Ｉ／Ｏコントローラ２０は、図６に示す各部４０〜４９と同様の機能を発揮する各部を有するものとする。
【００６１】
図６に示す例では、Ｉ／Ｏコントローラ２０ａは、ＳｅｒＤｅｓマクロ４０、受信レジスタ４１、タグチェッカ４２、ＴＬＰチェッカ４３、ＤＬＬＰチェッカ４４、フラグ記憶部４５、マルチプレクサ４６、ＣＲＣチェッカ４７、性能評価用カウンタ４８、上位層４９を有する。ＳｅｒＤｅｓマクロ４０は、シリアル伝送路を介して、Ｉ／Ｏコントローラ２０が有するＳｅｒＤｅｓマクロ３９からシリアルデータを受信する。
【００６２】
そして、ＳｅｒＤｅｓマクロ４０は、受信したシリアルデータを８バイトのデータに変換し、変換したデータを受信レジスタ４１に格納する。また、受信レジスタ４１は、ＳｅｒＤｅｓマクロ４０から受信した８バイトのデータをタグチェッカ４２、ＴＬＰチェッカ４３、ＤＬＬＰチェッカ４４に出力する。
【００６３】
タグチェッカ４２は、受信レジスタ４１から受信したデータを解析し、「ＤＰＳ」タグを検出する。そして、タグチェッカ４２は、「ＤＰＳ」タグを検出した場合には、フラグ記憶部４５にダミーデータが送信される旨を示すフラグを格納する。つまり、タグチェッカ４２は、ダミーデータが送信されるダミーモードである旨のフラグを格納する。
【００６４】
ＴＬＰチェッカ４３は、受信レジスタ４１からデータを受信した場合には、受信したデータに含まれるタグを解析し、受信したデータがＴＬＰのデータであるか否かを判別する。そして、ＴＬＰチェッカ４３は、受信したデータがＴＬＰのデータである場合には、受信したデータをマルチプレクサ４６に送信する。また、ＴＬＰチェッカ４３は、「ＥＮＤ」および「ＤＰＳ」を有するデータを受信した場合には、「ＥＮＤ」または、「ＤＰＳ」に付された「ＣＲＣ」をＣＲＣチェッカ４７に通知する。
【００６５】
ＤＬＬＰチェッカ４４は、受信レジスタ４１からデータを受信した場合には、受信したデータに含まれるタグを解析し、受信したデータが「ＤＰＥ」を有するＤＬＬＰであるか否かを判別する。そして、ＤＬＬＰチェッカ４４は、受信したデータが「ＤＰＥ」を有するＤＬＬＰであると判別した場合には、フラグ記憶部４５に記憶されたフラグを消去する。また、ＤＬＬＰチェッカ４４は、ＣＲＣチェッカ４７に対して受信したデータを送信する。また、ＤＬＬＰチェッカ４４は、「ＤＰＥ」を有するデータを受信した場合には、「「ＤＰＥ」に付された「ＣＲＣ」をＣＲＣチェッカ４７に通知する。
【００６６】
フラグ記憶部４５は、ダミーモードである旨を示すフラグが格納された場合には、マルチプレクサ４６にデータの出力を停止する旨の信号を出力し、フラグが格納されていない場合には、ＴＬＰチェッカ４３の出力を上位層４９に出力する旨の信号を出力する。例えば、フラグ記憶部４５は、１ビットのレジスタであり、ダミーモードである旨を示すフラグとして「１」が格納された場合には、ダミーモードである旨を示す「１」をマルチプレクサ４６に出力し続ける。
【００６７】
マルチプレクサ４６は、ＴＬＰチェッカ４３の出力を上位層４９に出力する旨の信号を取得している際に、Ｉ／Ｏコントローラ２０から受信したデータをＴＬＰチェッカ４３から受信した場合には、受信したデータを上位層４９に伝達する。また、マルチプレクサ４６は、データの出力を停止する旨の信号を取得している際に、Ｉ／Ｏコントローラ２０から受信したデータをＴＬＰチェッカ４３から受信した場合には、受信したデータを上位層４９に伝達せずに、破棄する。
【００６８】
ＣＲＣチェッカ４７は、ＴＬＰチェッカ４３、または、ＤＬＬＰチェッカ４４からデータを受信した場合には、受信したデータを解析し、ＣＲＣのチェックを行うことで、Ｉ／Ｏコントローラ２０から受信したデータのエラーを検出する。そして、ＣＲＣチェッカ４７は、エラーを検出した場合には、エラーを検出した旨を性能評価用カウンタ４８に通知する。
【００６９】
具体的には、ＣＲＣチェッカ４７は、ＴＬＰチェッカ４３からデータを受信し、受信したデータのＣＲＣを算出する。そして、ＣＲＣチェッカ４７は、受信したデータに含まれるＣＲＣと自身が算出したＣＲＣとを比較し、各ＣＲＣが一致した場合には、エラーが検出されなかった旨を性能評価用カウンタ４８に通知する。また、ＣＲＣチェッカ４７は、各ＣＲＣが一致しなかった場合には、エラーが検出された旨を性能評価用カウンタ４８に通知する。
【００７０】
また、ＣＲＣチェッカ４７は、ＤＬＬＰチェッカ４４から「ＤＰＳ」を受信した旨の通知を受信した場合には、ＤＬＬＰチェッカ４４から「ＤＰＥ」を受信するまでの間に受信したデータからエラーを検出する。そして、ＣＲＣチェッカ４７は、検出したエラーの個数をエラーモード中に発生したエラーの数として性能評価用カウンタ４８に通知する。
【００７１】
性能評価用カウンタ４８は、伝送中に発生したエラーの個数をカウントする。具体的には、性能評価用カウンタ４８は、ＣＲＣチェッカ４７から受信したエラーを検出した旨の通知をカウントし、上位層４９に通知する。また、性能評価用カウンタ４８は、ＣＲＣチェッカ４７からエラーモード中に発生したエラーの数の通知を受信した場合には、受信したエラーの数を上位層４９に通知する。
【００７２】
上位層４９は、Ｉ／Ｏコントローラ２０が送信したデータのうち、通常のデータのみを取得し、ダミーデータ、すなわち、ＰＲＢＳは受信しない。また、上位層４９は、性能評価用カウンタ４８から、通常時に発生したエラーおよびエラーモード中に発生したエラーの数を取得する。
【００７３】
例えば、バッファ制御部２３、タグチェッカ２９、制御部３０、タグ編集部３１、ＤＬＬＰジェネレータ３２、マルチプレクサ３３、ＰＲＢＳ生成器３６、マルチプレクサ３７、ＣＲＣ生成部３８、ＳｅｒＤｅｓマクロ３９とは、電子回路である。また、ＳｅｒＤｅｓマクロ４０、タグチェッカ４２、ＴＬＰチェッカ４３、ＤＬＬＰチェッカ４４、マルチプレクサ４６、ＣＲＣチェッカ４７、性能評価用カウンタ４８とは、電子回路である。
【００７４】
ここで、電子回路の例として、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路、またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などを適用する。
【００７５】
また、バッファ２２、ライトレジスタ２７、リードレジスタ２８、リードレジスタ３４、フラグ記憶部３５、受信レジスタ４１、フラグ記憶部４５とは、記憶装置である。ここで、記憶装置の例として、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子を適用する。
【００７６】
次に、図７を用いて、Ｉ／Ｏコントローラ２０とＩ／Ｏコントローラ２０ａとがデータ送信中にダミーモードに遷移する処理について説明する。図７は、実施例１に係るＩ／Ｏコントローラがダミーモードに遷移する処理を説明するための図である。
【００７７】
まず、図７中（Ｃ）に示すように、通常時においては、Ｉ／Ｏコントローラ２０は、バッファ２２に格納された各データを、Ｉ／Ｏコントローラ２０ａに送信する。また、図７中（Ｄ）に示すように、Ｉ／Ｏコントローラ２０は、バッファ２２が空になった場合には、ダミーモードをＯＮにするとともに、ダミーモードのスタートを示す「ＤＰＳ」タグが付されたデータをＩ／Ｏコントローラ２０ａに送信する。つまり、Ｉ／Ｏコントローラ２０は、バッファ２２が空になった場合には、最後に送信するデータに「ＤＰＳ」タグを付してＩ／Ｏコントローラ２０ａに伝送経路の評価を開始する旨を通知する。
【００７８】
次に、図７中（Ｅ）に示すように、Ｉ／Ｏコントローラ２０は、ＰＲＢＳをダミーデータとしてＩ／Ｏコントローラ２０ａに送信する。Ｉ／Ｏコントローラ２０ａは、図７中（Ｄ）にて伝送経路の評価を開始する旨の通知、つまり、ダミーモード開始の通知を受信しているため、ＰＲＢＳのエラーチェックおよびエラーのカウントを行い、受信したＰＲＢＳは、上位層４９に渡さずに破棄する。
【００７９】
次に、図７中（Ｆ）に示すように、Ｉ／Ｏコントローラ２０は、バッファ２２に新たなデータが格納された場合には、ダミーモードの終了を示すＤＬＬＰを送信する。Ｉ／Ｏコントローラ２０ａは、ダミーモードの終了を示すＤＬＬＰを受信した場合には、エラーカウントの結果のみを上位層４９に伝達し、その後、通常の受信動作に戻る。
【００８０】
次に、図８を用いて、Ｉ／Ｏコントローラ２０を有するＣＰＵ１０とＩ／Ｏコントローラ２０ａを有するＣＰＵ１０ａとが、複数のシリアル伝送経路を介してデータの送受信を行うと共に、各シリアル伝送経路の評価試験を通常時に実行する処理について説明する。図８は、実施例１に係るＣＰＵが複数の伝送経路について、通常時に評価試験を行う処理を説明するための図である。
【００８１】
図８に示す例では、ＣＰＵ１０とＣＰＵ１０ａとは、４つのシリアル伝送路で接続されているものとする。また、ＣＰＵ１０は、シリアル伝送路ごとにＳｅｒＤｅｓマクロ３９〜３９ｃを有し、ＣＰＵ１０ａは、シリアル伝送路ごとにＳｅｒＤｅｓマクロ４０〜４０ｃを有するものとする。なお、ＣＰＵ１０は、各ＳｅｒＤｅｓマクロ３９〜３９ｃごとに、図２に例示したバッファ２２、バッファ制御部２３、ライトレジスタ２７、リードレジスタ２８、タグチェッカ２９、制御部３０、タグ編集部３１、ＤＬＬＰジェネレータ３２、マルチプレクサ３３、リードレジスタ３４、フラグ記憶部３５、ＰＲＢＳ生成器３６、マルチプレクサ３７、ＣＲＣ生成部３８と同様の機能を発揮する要素が設置されているものとする。また、ＣＰＵ１０ａは、各ＳｅｒＤｅｓマクロ４０〜４０ｃごとに、図６に例示した受信レジスタ４１、タグチェッカ４２、ＴＬＰチェッカ４３、ＤＬＬＰチェッカ４４、フラグ記憶部４５、マルチプレクサ４６、ＣＲＣチェッカ４７、性能評価用カウンタ４８と同様の機能を発揮する要素が設置されているものとする。
【００８２】
このようなＣＰＵ１０は、バッファが空であるか否かを判別することで、各シリアル伝送路がデータを送信中であるか否かをシリアル伝送路ごとに独立して判別する。図８に示す例では、ＣＰＵ１０は、ＳｅｒＤｅｓマクロ３９が１つのＴＬＰを送信中であり、他のＳｅｒＤｅｓマクロ３９ａ〜３９ｃがデータを送信していないと判別する。換言すると、ＣＰＵ１０は、各ＳｅｒＤｅｓマクロ３９ａ〜３９ｃが送信するデータを記憶するバッファが空であると判別する。
【００８３】
このような場合には、ＣＰＵ１０は、ＳｅｒＤｅｓマクロ３９には通常のデータを送信させるとともに、ＳｅｒＤｅｓマクロ３９ａ〜３９ｃには、ＰＲＢＳを送信させることで、各伝送経路の使用率を１００％に近づける。また、ＣＰＵ１０ａは、ＳｅｒＤｅｓマクロ４０には、データを受信させ、受信したデータを、上位層を介してコア１１ａへ送信させる。また、ＣＰＵ１０ａは、他のＳｅｒＤｅｓ４０ａ〜４０ｃが受信するＰＲＢＳについては、エラーの検出およびカウントのみを行い、ＰＲＢＳ自体については破棄してしまう。
【００８４】
このように、ＣＰＵ１０およびＣＰＵ１０ａは、シリアル伝送路ごとに、送信するデータが存在するか否かを判別し、送信するデータが無いシリアル伝送路に関しては、ＰＲＢＳを送信することで、伝送経路の評価を行う。このため、ＣＰＵ１０およびＣＰＵ１０ａは、通常のデータ伝送処理を実行しながら、各伝送経路の評価を短時間で行うことができる。
【００８５】
次に、図９を用いて、Ｉ／Ｏコントローラ２０およびＩ／Ｏコントローラ２０ａが実行する処理の流れについて説明する。図９は、実施例１に係るＩ／Ｏコントローラが実行する処理の流れを説明するための図である。なお、図９には、Ｉ／Ｏコントローラ２０が実行する処理の流れおよびＩ／Ｏコントローラ２０ａが実行する処理の流れについて、時間の経過とともに、上から下へと示した。
【００８６】
まず、Ｉ／Ｏコントローラ２０が実行する処理の流れについて説明する。まず、Ｉ／Ｏコントローラ２０は、バッファ２２に送信すべきデータが無くなった場合、つまり、バッファ２２が空になったと判別した場合には、以下の処理を実行する。すなわち、Ｉ／Ｏコントローラ２０は、図９中（Ｇ）に示すように、「ＤＰＳ」を付したデータをＩ／Ｏコントローラ２０ａに送信する（ステップＳ１０１）。
【００８７】
次に、Ｉ／Ｏコントローラ２０は、ＰＲＢＳを生成し、図９中（Ｈ）に示すように、ＰＲＢＳをＩ／Ｏコントローラ２０ａに送信する（ステップＳ１０２）。次に、Ｉ／Ｏコントローラ２０は、新たなＴＬＰのデータがバッファ２２に格納されたと判別した場合には、図９中（Ｉ）に示すように、ダミーモード終了を示すＤＬＬＰをＩ／Ｏコントローラ２０ａに送信する（ステップＳ１０３）。その後、Ｉ／Ｏコントローラ２０は、図９中（Ｊ）に示すように、ＴＬＰのデータをＩ／Ｏコントローラ２０ａに送信する（ステップＳ１０４）。
【００８８】
次に、Ｉ／Ｏコントローラ２０ａが実行する処理の流れについて説明する。まず、Ｉ／Ｏコントローラ２０ａは、図９中の点線に示すように、ステップＳ１０１よりも前にＩ／Ｏコントローラ２０が送信したＴＬＰを受信する（ステップＳ２０１）。また、Ｉ／Ｏコントローラ２０ａは、図９中（Ｇ）に示すように、「ＤＰＳ」を付したデータを受信した場合には、ダミーモードに遷移する（ステップＳ２０２）。
【００８９】
次に、Ｉ／Ｏコントローラ２０ａは、図９中（Ｈ）に示すように、Ｉ／Ｏコントローラ２０からＰＲＢＳを受信した場合には、エラーの検出を行うのみで、受信したＰＲＢＳを破棄する（ステップＳ２０３）。次に、Ｉ／Ｏコントローラ２０ａは、図９中（Ｉ）に示すように、ＤＬＬＰを受信した場合には、通常の動作モードに遷移するとともに、受信したＰＲＢＳについてＣＲＣの計算を行い、エラーの検出およびカウントを行う（ステップＳ２０４）。その後、Ｉ／Ｏコントローラ２０ａは、図９中（Ｊ）に示すように、Ｉ／Ｏコントローラ２０が送信したＴＬＰを受信する（ステップＳ２０５）。
【００９０】
［実施例１の効果］
上述したように、Ｉ／Ｏコントローラ２０は、Ｉ／Ｏコントローラ２０ａへ送信するデータを記憶するバッファ２２を有し、バッファ２２に記憶されたデータをＩ／Ｏコントローラ２０ａに送信する。また、Ｉ／Ｏコントローラ２０は、バッファ２２が空か否かを判別し、バッファ２２が空であると判別した場合には、すなわち、バッファ２２の各エントリに格納されたデータのうち、最終データが送信された場合には、ダミーデータとしてＰＲＢＳを送信する。このため、Ｉ／Ｏコントローラ２０は、Ｉ／Ｏコントローラ２０ａと伝送経路との伝送評価を適切に行う事ができる。すなわち、Ｉ／Ｏコントローラ２０は、Ｉ／Ｏコントローラ２０ａにＴＬＰを送信してから、新たなＴＬＰを送信するまでの間に隙間が存在する場合には、ダミーデータとしてＰＲＢＳを送信する。このため、情報処理システム１は、通常のデータ通信処理を実行しながら、伝送経路の使用率を約１００％に保つことができる。この結果、情報処理システム１は、伝送経路の評価を短時間で行う事ができる。
【００９１】
また、Ｉ／Ｏコントローラ２０は、データを書き込むバッファ２２のエントリを示すライトレジスタ２７と、データを読み出すバッファ２２のエントリを示すリードポインタ２５と、バッファ２２から読み出したデータを保持するリードレジスタ２８を有する。また、Ｉ／Ｏコントローラ２０は、ライトポインタ２４が示すエントリとリードポインタ２５が示すエントリとを比較する比較器２６と、リードレジスタ２８に保持されたデータがＩ／Ｏコントローラ２０ａに送信する最後のデータであるか否かを検出するタグチェッカ２９を有する。
【００９２】
そして、Ｉ／Ｏコントローラ２０ａは、ライトポインタ２４が示す値とリードポインタ２５が示す値とが一致し、かつ、リードレジスタ２８に記憶されたデータがＩ／Ｏコントローラ２０ａに送信する最後のデータであると検出した場合には、ＰＲＢＳ生成器３６が生成したダミーデータをＩ／Ｏコントローラ２０ａに送信させる制御部３０を有する。このため、Ｉ／Ｏコントローラ２０ａは、適切なタイミングで、ダミーデータを送信し、伝送経路の評価を適切に行う事ができる。
【００９３】
また、Ｉ／Ｏコントローラ２０ａは、ライトポインタ２４が示す値とリードポインタ２５が示す値とが一致し、かつ、リードレジスタ２８に記憶されたデータがＩ／Ｏコントローラ２０ａに送信する最後のデータであると検出した場合には、最後のデータに格納された「ＥＮＤ」タグのかわりに「ＤＰＳ」タグを挿入する。
【００９４】
つまり、Ｉ／Ｏコントローラ２０は、ダミーデータを送信する旨を示す情報を、バッファ２２から最後に送信するデータに付加する。そして、Ｉ／Ｏコントローラ２０ａは、データにダミーデータを送信する旨を示す情報が付加されている場合には、ダミーモードに移行し、以後受信するデータ、すなわちダミーデータを破棄する。このため、Ｉ／Ｏコントローラ２０は、ＴＬＰの送信終了から隙間を空けることなくＰＲＢＳを送信することができる。この結果、Ｉ／Ｏコントローラ２０は、伝送経路の使用率をより１００％に近い値に保ち、適切に伝送経路の評価を行う事ができる。
【００９５】
また、Ｉ／Ｏコントローラ２０は、最後に送信するデータが有する「ＥＮＤ」タグを「ＤＰＳ」タグに置き換える。このため、Ｉ／Ｏコントローラ２０は、データの送信に要する時間を増やすことなく、Ｉ／Ｏコントローラ２０ａにダミーデータを送信する旨を通知することができる。この結果、Ｉ／Ｏコントローラ２０は、伝送経路の使用率をより１００％に近い値に保ち、適切に伝送経路の評価を行うことができる。
【００９６】
また、Ｉ／Ｏコントローラ２０は、ライトポインタ２４が示す値とリードポインタ２５が示す値とが不一致となった場合には、試験停止を示す「ＤＰＥ」タグをを挿入したダミーデータをＩ／Ｏコントローラ２０ａに送信する。つまり、Ｉ／Ｏコントローラ２０は、空のバッファ２２に新たなＴＬＰのデータが格納された場合には、「ＤＰＥ」を有するＤＬＬＰを生成し、生成したＤＬＬＰをＩ／Ｏコントローラ２０ａに送信する。また、Ｉ／Ｏコントローラ２０ａは、「ＤＰＥ」を有するＤＬＬＰを受信した場合には、ダミーモードを終了し、通常の動作に移行する。このため、Ｉ／Ｏコントローラ２０は、各伝送経路の状態を可能な限り通常の状態に保ったまま、伝送経路の評価を行うことができる。
【００９７】
また、Ｉ／Ｏコントローラ２０は、Ｉ／Ｏコントローラ２０ａと複数の伝送経路を介して接続され、バッファ２２、ライトポインタ２４、リードポインタ２５、タグチェッカ２９、制御部３０、タグ編集部３１、ＤＬＬＰジェネレータ３２、ＰＲＢＳ生成器３６、ＳｅｒＤｅｓマクロ３９と同様の機能を発揮する要素を伝送経路ごとに有する。つまり、Ｉ／Ｏコントローラ２０およびＩ／Ｏコントローラ２０ａは、複数の伝送経路で接続され、伝送経路ごとに上述した処理を独立で実行する。このため、Ｉ／Ｏコントローラ２０は、マルチリンクで接続されたＣＰＵ１０、１０ａ間の伝送経路の評価を適切に行う事ができる。すなわち、Ｉ／Ｏコントローラ２０は、ＴＬＰを送信する伝送経路に偏りが発生し、ボトルネックが発生した場合にも、他の伝送経路の利用率を約１００％に保つことができるので、適切に伝送経路の評価を行う事ができる。
【００９８】
一方、Ｉ／Ｏコントローラ２０ａは、受信したデータおよびダミーデータであるＰＲＢＳからエラーの検出を行う。また、Ｉ／Ｏコントローラ２０ａは、データのみを上位層４９に伝送し、ダミーデータであるＰＲＢＳを破棄する。このため、Ｉ／Ｏコントローラ２０およびＩ／Ｏコントローラ２０ａを有する情報処理システム１は、適切に伝送評価を行う事ができる。
【００９９】
また、情報処理システム１は、ＰＲＢＳを送信し続けることで、伝送経路に負荷をかける。すなわち、情報処理システム１は、伝送経路における物理層への負荷に特化することで、回路規模を増大させることなく、伝送経路に負荷をかけることができる。
【０１００】
また、情報処理システム１は、ＳｅｒＤｅｓマクロ３９の動作周波数を通常の動作時のまま、伝送経路の使用率を約１００％に保つので、Ｉ／Ｏコントローラ２０ａが適切にエラーの検出を行う事ができる。この結果、情報処理システム１は、質の良い伝送評価を行う事ができる。また、情報処理システム１は、通常のデータ通信処理の合間にＰＲＢＳの送信を行うので、各伝送経路を流れるデータのパターンを一定にしない結果、適切に伝送経路の評価を行うことができる。
【０１０１】
また、Ｉ／Ｏコントローラ２０ａは、ダミーデータであるＰＲＢＳを上位層４９に伝達せずに破棄する。このため、情報処理システム１は、伝送評価時に上位層４９の負担を軽くすることができる。また、情報処理システム１は、シリアル伝送経路において送信したデータにエラーが発生した場合の再送処理を防ぐ結果、伝送経路の使用率を約１００％に保つので、適切に伝送経路の評価を行うことができる。
【０１０２】
また、Ｉ／Ｏコントローラ２０ａは、ダミーデータであるＰＲＢＳにおいて発生したエラーを検出し、エラーを検出した回数を上位層４９に伝達する。このため、情報処理システム１は、ＰＲＢＳを送信した経路におけるエラーの発生頻度を適切に判別することができる。
【実施例２】
【０１０３】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１０４】
（１）送信するパケットについて
上述した情報処理システム１では、ＣＰＵ１０およびＣＰＵ１０ａ間でＴＬＰの送受信を行っていた。しかし、実施例はこれに限定されるものではなく、パケット形式以外のデータを送信することとしてもよい。すなわち、ＣＰＵ１０は、ＣＰＵ１０ａに送信するデータを記憶するバッファを有し、バッファが空になった場合、すなわち、データを送信してから、新たなデータを送信するまでの間に間隔が存在する場合には、ダミーデータを送信すればよい。また、Ｉ／Ｏコントローラ２０は、３２ビットのＣＲＣを付与したが、送信したデータからエラーを検出することができるのであれば、ハミング符号等の他のアルゴリズムや任意のビット数のＣＲＣを適用することができる。
【０１０５】
（２）データの分割について
上述したＩ／Ｏコントローラ２０は、ＴＬＰを８バイトごとに分割した。しかし、実施例はこれに限定されるものではなく、データをＩ／Ｏコントローラ２０ａに送信する伝送経路、すなわちシリアル伝送経路、の数、状態、適用される送信アルゴリズム等の条件に応じて、適切な大きさのデータに分割することとしてよい。
【０１０６】
（３）「ＤＰＳ」および「ＤＰＥ」について
上述したＩ／Ｏコントローラ２０は、ダミーデータであるＰＲＢＳを送信する場合には、「ＥＮＤ」タグを「ＤＰＳ」タグに変更して送信した。しかし、実施例は、これに限定されるものではなく、Ｉ／Ｏコントローラ２０は、ダミーデータを送信する旨を示す情報を任意の方法でＩ／Ｏコントローラ２０ａに送信することとしてもよい。また、Ｉ／Ｏコントローラ２０は、ダミーデータの送信を終了する場合には、「ＤＰＥ」タグを付与したＤＬＬＰを送信したが、実施例はこれに限定されるものではなく、ダミーデータの送信の終了を示す任意の情報を送信することとしてもよい。
【０１０７】
（４）ダミーデータについて
上述したＩ／Ｏコントローラ２０は、ダミーデータとして、ＰＲＢＳ生成器３６が生成したＰＲＢＳをＩ／Ｏコントローラ２０ａへ送信した。しかし、実施例は、これに限定されるものではない。例えば、Ｉ／Ｏコントローラ２０は、ダミーデータを記憶する記憶部をさらに有し、バッファ２２が空になった場合には、記憶部に記憶されたダミーデータを繰り返し送信することとしてもよい。
【符号の説明】
【０１０８】
１  情報処理システム
１０、１０ａ  ＣＰＵ
１１、１１ａ  コア
１２、１２ａ  メモリコントローラ
１３、１３ａ  キャッシュ
１４、１４ａ  メモリ
２０、２０ａ  Ｉ／Ｏコントローラ
２１、４９  上位層
２２  バッファ
２３  バッファ制御部
２４  ライトポインタ
２５  リードポインタ
２６  比較器
２７  ライトレジスタ
２８  リードレジスタ
２９  タグチェッカ
３０  制御部
３１  タグ編集部
３２  ＤＬＬＰジェネレータ
３３、３７、４６  マルチプレクサ
３４  リードレジスタ
３５  フラグ記憶部
３６  ＰＲＢＳ生成器
３８  ＣＲＣ生成部
３９、４０  ＳｅｒＤｅｓマクロ
４１  受信レジスタ
４２  タグチェッカ
４３  ＴＬＰチェッカ
４４  ＤＬＬＰチェッカ
４５  フラグ記憶部
４７  ＣＲＣチェッカ
４８  性能評価用カウンタ
【図１】
2013034133.tif 000003
【図２】
2013034133.tif 000004
【図３】
2013034133.tif 000005
【図４】
2013034133.tif 000006
【図５】
2013034133.tif 000007
【図６】
2013034133.tif 000008
【図７】
2013034133.tif 000009
【図８】
2013034133.tif 000010
【図９】
2013034133.tif 000011