(57)【特許請求の範囲】
【請求項１】
複数の信号ラインで行うデータ送信で生じたエラーを特定するエラー特定方法であって、
送信側装置から受信側装置への前記複数の信号ラインを用いたデータ送信に前記エラーが発生した場合に、該エラーが発生したデータを保存する保存工程と、
前記保存工程で保存したデータを、前記エラーが発生していないデータとビット単位で比較して、前記保存したデータ中で該エラーが発生したビットを特定するエラー特定工程と、を備え、
前記保存工程での前記エラーが発生したデータの保存が前記受信側装置で行われる場合に、
前記エラー特定工程では、前記エラーの発生による前記送信側装置からのデータ再送は、前記複数の信号ラインのなかで前記データの再送に用いる信号ラインを制限して行い、前記受信側装置は該信号ラインを制限して再送されるデータと前記保存したデータとをビット単位で比較して、該保存したデータ中で該エラーが発生したビットを特定する、
ことを特徴とするエラー特定方法。
【請求項２】
複数の信号ラインを用いて半導体装置間でデータ送信を行うデータ処理装置において、
送信側装置から受信側装置への前記複数の信号ラインを用いたデータ送信にエラーが発生したか否か判定するエラー判定手段と、
前記エラーが発生したと前記エラー判定手段が判定した場合に、前記受信側装置が受信した、該エラーが発生しているデータを保存する保存手段と、
前記保存手段が保存したデータを、前記エラーが発生していないデータとビット単位で比較して、該保存したデータ中で前記エラーが発生したビットを特定するエラー特定手段と、を具備し、
前記保存手段は、前記受信側装置で前記エラーが発生したデータの保存を行い、
前記エラーの発生による前記送信側装置からのデータ再送は、前記複数の信号ラインのなかで前記データの再送に用いる信号ラインを制限して行い、
前記エラー特定手段は、前記信号ラインを制限して再送されるデータと前記保存手段が保存したデータとをビット単位で比較して、該保存したデータ中で該エラーが発生したビットを特定する、
ことを特徴とするデータ処理装置。
【請求項３】
複数の信号ラインを用いて他の半導体装置との間でデータ送信を行う半導体装置において、
前記他の半導体装置から前記複数の信号ラインを用いて送信されたデータにエラーが発生したか否か判定するエラー判定手段と、
前記エラーが発生したと前記エラー判定手段が判定した場合に、前記データの再送を前記他の半導体装置に要求する再送要求手段と、
前記再送要求に応じて前記他の半導体装置から受信した再送データにエラーが発生していないと前記エラー判定手段が判定した場合に、該再送データを該エラーが発生している受信データとビット単位で比較して、該受信データ中で該エラーが発生したビットを特定するエラー特定手段と、
を具備することを特徴とする半導体装置。
【請求項４】
前記再送要求手段は、前記複数の信号ラインのなかでデータ送信に用いる信号ラインを制限させる制限要求を併せて行い、
前記エラー特定手段は、前記制限要求により前記信号ラインが制限されて送信される再送データを用いて、前記受信データとのビット単位の比較を行う、
ことを特徴とする請求項３記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体間のデータ送信を複数の信号ラインで行う場合に発生した送信エラーに対応するための技術に関する。
【背景技術】
【０００２】
コンピュータでは、ＬＳＩ等の半導体装置間でデータ送信が複数の信号ラインを用いて行われる箇所が存在する。
図９は、従来の半導体装置間のデータ送信を説明するための図である。
【０００３】
半導体装置８００は、伝送部を介して半導体装置９００にデータを送信する。伝送部は、複数のバス（信号ライン）を備えており、これら複数のバスを用いて半導体装置８００から半導体装置９００にデータが送信される。
【０００４】
半導体装置９００では、受信したデータを用いて、送信エラーが発生したか否かの確認を行う。半導体装置９００が送信エラーの発生を確認した場合、データの再送を半導体装置８００に要求し、それ以降のリクエスト（パケット）を無視（破棄）する。半導体装置９００からの再送要求に応じて、伝送部を介して半導体装置８００から半導体装置９００にデータが再送される。
【０００５】
図１０は、従来の半導体装置間でデータ送信を実現させる処理の流れを示すフローチャートである。図１０では、送信側半導体装置（図中「送信ＬＳＩ」と表記）、及び受信側半導体装置（図中「受信ＬＳＩ」と表記）のそれぞれで実行される処理を示している。
【０００６】
送信側装置では、データ送信制御を実行して（ＳＴ５１）、送信対象データにＣＲＣ方式のチェック符号を付加し（ＳＴ５２）、転送を行う（ＳＴ５３）。
他方の受信側装置では、転送されたデータを受信し（ＳＲ５１）、ＣＲＣによるエラーチェックを行い（ＳＲ５２）、そのチェック結果を受信結果として送信側装置に通知する（ＳＲ５３）。
【０００７】
送信側装置は、受信結果通知を受信すると、通知された受信結果を解読し、送信エラーが発生したか否か判定する（ＳＴ５４）。送信エラーが受信側装置で発生した場合（ＳＴ５４：ＹＥＳ）、データ送信制御では送信エラーが発生したデータを選択する（ＳＴ５１）。送信エラーが発生していない場合（ＳＴ５４：ＮＯ）、データ送信制御では次に送信すべきデータを選択する（ＳＴ５１）。
【０００８】
このようにして従来の半導体装置は、受信したデータに送信エラーが発生していた場合、単にデータの再送を要求する。
近年、コンピュータでは、ＬＳＩ等の半導体装置間のデータ送信速度が著しく高速化している。データ送信の高速化はより高いデータ処理能力の実現に大きく寄与している。しかし、データ送信速度の高速化は、バスを介したデータ送信に発生するエラーをより多くさせている。そのエラーの発生は、高速なデータ処理を阻害する。このことから今後は、バスを介したデータ送信に発生するエラーに対処するためのより多くの情報を得ることも非常に重要となると考えられる。
【特許文献１】特開２００３−１８８８５８号公報
【特許文献２】特開２０００−３４９７４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、複数のバスを用いたデータ送信時に発生するエラーに対しより適切に対応可能とするため技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様を適用したシステムでは、送信側装置から受信側装置への複数の信号ラインを用いたデータ送信にエラーが発生した場合に、そのエラーが発生したデータを保存する保存工程と、保存工程で保存したデータを、エラーが発生していないデータとビット単位で比較して、保存したデータ中でエラーが発生したビットを特定するエラー特定工程と、を経てエラーに対応する。
【００１１】
エラー発生時に受信したデータを、エラーが発生していないデータ、例えば再送されたデータ、或いはそのデータを送信した半導体装置が管理する正確なデータと信号ライン毎にビット単位での比較を行うことにより、エラーが発生した信号ラインで送信されたデータ中でそのエラーが実際に発生したビットを正確に特定することができる。
【００１２】
上記エラー特定工程では、保存工程でのエラーが発生したデータの保存が受信側装置で行われる場合に、エラーの発生による送信側装置からのデータ再送は、複数の信号ラインのなかでデータの再送に用いる信号ラインを制限して行い、受信側装置は信号ラインを制限して再送されるデータと保存したデータとをビット単位で比較して、該保存したデータ中で該エラーが発生したビットを特定する方法が採用可能である。その方法を採用した場合には、エラー原因の特定が容易となり、信号ライン間の干渉をより抑えたデータ送信が可能となる。信号ライン間の干渉が抑えられることにより、エラーの発生は抑制されることとなる。
【発明の効果】
【００１３】
本発明を適用した場合には、エラーが発生する、或いはエラーが発生しやすい信号ラインが特定可能となる。それにより、複数の信号ライン（バス）を用いたデータ送信時に発生するエラーに対応するための情報が得ることができる。従って、そのエラーに対し、より適切に対応可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図１は、本実施形態によるデータ処理装置（コンピュータ）の構成を説明する図である。図１に示すように、本実施形態によるデータ処理装置では、１つ以上のシステムボード１０、及びＩＯユニット２０は共に、２つのアドレス・クロスバ３０−０及び３０−１、及び４つのデータ・クロスバ４０−０、４０−１、４０−２及び４０−３とそれぞれ接続されている。２つのアドレス・クロスバ３０−０及び３０−１、及び４つのデータ・クロスバ４０−０、４０−１、４０−２及び４０−３とそれぞれ接続されている。システムボード１０は、データ処理用のユニットであり、ＣＰＵやメモリ等を搭載している。ＩＯユニット２０は、データの入出力を主に行うユニットであり、ハードディスク装置等の記憶装置、及び外部装置等との接続用の各種コントローラを搭載している。アドレス・クロスバでは、２つ共、或いはそのうちの任意の一つを指す場合、符号としては「３０」を用いる。同様に、データ・クロスバでは、４つ共、或いはそのうちの任意の一つ以上のものを指す場合、符号としては「４０」を用いる。
【００１５】
アドレス・クロスバ３０は２重化され、２つのクロスバ３０−０及び３０−１は同時に同じリクエスト制御を行っている。それにより、高い信頼性を実現させている。４つのデータ・クロスバ４０が用意されているのは、通常、データ処理装置において一度に大量のデータが転送されるためである。２つのアドレス・クロスバ３０−０及び３０−１は同期して動作し、データ・クロスバ４０では、２つのデータ・クロスバ４０−０及び４０−２が同期して動作し、２つのデータ・クロスバ４０−１及び４０−３が同期して動作する。
【００１６】
図２は、本実施形態によるデータ処理装置の詳細な構成例を示す図である。
図２に示された例では、システムボード１０は、４つのＣＰＵ１０１、２つのＦＷＨ（Firm Ware Hub）１０２、ノース・ブリッジ（North Bridge）１０３、４つのメモリ・スイッチ（図中「Mem Swich」と表記）１０４、及び各メモリ・スイッチ１０４に接続された複数のメモリ１０５を備えた構成となっている。
【００１７】
ノース・ブリッジ１０３は、ＣＰＵインターフェイス、メモリ・インターフェイスなどの制御回路を搭載している。各メモリ・スイッチ１０４は、ノース・ブリッジ１０３からの要求に応じて、接続されたメモリ１０５へのアクセス、或いはデータ・クロスバ４０を介したデータ転送を行う。メモリ１０５へのアクセス、或いはデータ・クロスバ４０を介したデータ転送により得られたデータは、メモリ・スイッチ１０４、及びノース・ブリッジ１０３を介してＣＰＵ１０１に供給される。各ＣＰＵ１０１は、そのようにして供給されるデータの処理を行う。２つのＦＷＨ１０２は、例えばＢＩＯＳを格納した不揮発性メモリである。
【００１８】
他方のＩＯユニット２０は、サウス・ブリッジ（South Bridge）２０１、サウス・ブリッジ２０１に接続された２つのＩＯ制御チップ（図中「ＳＥＲ」と表記）２０２、各ＩＯ制御チップ２０２に接続された他のＩＯ制御チップ（図中「ＩＣＨ６」と表記）２０３、及び各ＩＯ制御チップ２０３に接続された各種コントローラ２１１〜２１６を備えた構成となっている。コントローラとしては、ＦＷＨ２１１、ＳＩＯ（Super IO）コントローラ２１２、ＢＭＣ（Baseboard Management Controller）２１３、ＶＧＡ（Video Graphics Array）コントローラ２１４、２つのＬＡＮアダプタ２１５及び２１６がＩＯ制御チップ２０３に接続されている。図２に示すコントローラ２１１〜２１６は一例であり、その種類や数は任意に変更できる。ＩＯユニット２０に搭載するコントローラはＩＯユニット２０単位で任意に決定しても良い。
【００１９】
上記ＢＭＣ２１３は、データ処理装置全体を管理するマネージメントボード（ＭＭＢ）との間で通信を行うためのものである。ＦＷＨ２１１は、例えばＢＩＯＳを格納した不揮発性メモリである。ＳＩＯコントローラ２１２は、複数の異なる規格をサポートするコントローラである。ＩＯ制御チップ２０３は、汎用のものであり、各種インターフェイスを提供する。各種インターフェイスを提供することにより、ＦＷＨ２１１、ＳＩＯコントローラ２１２、ＶＧＡコントローラＩＯ２１４、ＬＡＮコントローラ２１５及び２１６を制御する。ＩＯ制御チップ２０２は、サウス・ブリッジ２０１とＩＯ制御チップ２０３間の信号の送受信を可能とさせるための信号変換を行う。このＩＯ制御チップ２０２はハードディスク装置等の記憶装置が接続可能であり、実際には１台以上の記憶装置が接続されている。
【００２０】
ＩＯユニット２０のサウス・ブリッジ２０１は、２つのアドレス・クロスバ３０、及び４つのデータ・クロスバ４０とそれぞれ接続されている。サウス・ブリッジ２０１は、ＩＯ制御チップ２０２及び２０３を介して、ＩＯ制御チップ２０３に接続された構成要素２１１〜２１６を制御する。ＳＩＯコントローラ２１２、２つのＬＡＮコントローラ２１５及び２１６のうちの何れかが取得したデータを転送する場合、サウス・ブリッジ２０１はデータ転送のためのアドレスリクエストを発行してアドレス・クロスバ３０に出力する。システムボード１０から、データ・クロスバ４０を介して転送されるデータを受信した場合には、例えばＩＯ制御チップ２０２、或いはＩＯ制御チップ２０２及び２０３を介して送出すべきコントローラに受診したデータを送出し、データの格納、出力、或いは送信を対応するコントローラに行わせる。
【００２１】
システムボード１０上の４つのＣＰＵ１０１は、メモリ１０５、他のシステムボード１０、或いはＩＯユニット２０へのリード／ライトコマンドを発行してノース・ブリッジ１０３に出力する。ノース・ブリッジ１０３は、各ＣＰＵ１０１から入力したコマンドを一旦、格納し、優先順位に従ってそのなかから一つを選択し、選択したコマンドをアドレスリクエストとして発行し、アドレス・クロスバ３０、及び４つのメモリ・スイッチ１０４にそれぞれ出力する。
【００２２】
データ・クロスバ４０を介してシステムボード１０に転送されるデータは、メモリ・スイッチ１０４により受信されてノース・ブリッジ１０３に出力され、ノース・ブリッジ１０３により転送データを必要とするＣＰＵ１０１に渡される。他のシステムボード１０、或いはＩＯユニット２０に転送すべきデータは、メモリ・スイッチ１０４によりデータ・クロスバ４０に送信され転送される。
【００２３】
アドレス・クロスバ３０内に実装されているメモリやバッファ、或いはキューといったデータや制御情報（以降「データ」と総称）を蓄えておく機構では、データにＥＣＣ（Error Correcting Code）、或いはパリティ等が付加される。それにより、訂正不可能なエラーの発生を認識するようになっている。一方、チップ間の伝送エラー検出において、シリアル転送バスでは、一般的にＣＲＣ（Cyclic Redundancy Check）が行われる。
【００２４】
システムボード１０では、メモリ・スイッチ１０４間、ノース・ブリッジ１０３とメモリ・スイッチ１０４間、ＣＰＵ１０１とノース・ブリッジ１０３間などで複数のバス（信号ライン（レーン））を用いたデータ送信が行われる。他方のＩＯユニット２０では、サウス・ブリッジ２０１とＩＯ制御チップ２０２間、ＩＯ制御チップ２０２と２０３間などで複数のバスを用いたデータ送信が行われる。バスと接続された要素のうちの少なくとも一つは半導体装置であり、半導体装置を搭載することで本実施形態によるデータ処理装置は実現されている。本実施形態による半導体装置は特に種類を限定する必要がないことから、種類についての具体的な言及は今後、行わないこととする。
【００２５】
図３は、本実施形態によるデータ送信を行うための構成を示す図である。図３では、半導体装置がデータ送信を行うものとする。
半導体装置５００の制御部５０１は、半導体装置６００に送信するデータをバッファ５０２に格納する。バッファ５０２に格納されたデータは、データ送信制御部５０４により選択されてデータ処理・選択部５０３に出力され、送信部５０５のデータ処理・転送部５１１に送られる。データ処理・転送部５１１は、データ処理・選択部５０３から入力したデータにエラーチェック（ＣＲＣ）用のチェック符号を付して、複数のバスを備えた伝送部を介して半導体装置６００に送信する。
【００２６】
半導体装置６００に送信されたデータは、受信部６０６のデータ処理・転送部６２１によって受信され、ＣＲＣチェック部６０７に送られる。ＣＲＣチェック部６０７は、受信データに付されたチェック符号を用いてＣＲＣによるエラーチェックを行い、送信エラーが発生したか否かの確認を行う。送信エラーが発生していないことが確認できた場合に、半導体装置６００はメモリであるキュー６０８に格納する。キュー６０８に格納されたデータが制御部６０１に読み出される。
【００２７】
半導体装置６００の受信部６０６、ＣＲＣチェック部６０７、及びキュー６０８に対応する受信部５０６、ＣＲＣチェック部５０７、およびキュー５０８を、半導体装置５００は備えている。逆に、半導体装置５００のバッファ５０２、データ処理・選択部５０３、データ送信制御部５０４、及び送信部５０５に対応するバッファ６０２、データ処理・選択部６０３、データ送信制御部６０４、及び送信部６０５を、半導体装置６００が備えて
いる。
【００２８】
半導体装置６００のＣＲＣチェック部６０７がエラーチェックにより送信エラーが発生したことを確認した場合、エラー発生をデータ処理・選択部６０３に通知する。この通知により、データ処理・選択部６０３はデータ処理・転送部６１１を介してデータの再送を半導体装置５００に要求する。データ再送要求は、半導体装置５００の受信部５０６によって受信・解読され、ＣＲＣチェック部５０７に送られる。ＣＲＣチェック部５０７は、データ再送要求を受信した旨をデータ処理・選択部５０３及びデータ送信制御部５０４にそれぞれ通知する。その結果、送信エラーが発生したデータはデータ送信制御部５０４によってバッファ５０２から再度、読み出され、データ処理・選択部５０３及び送信部５０５を介して半導体装置６００に再送される。
【００２９】
半導体装置６００の受信部６０６には、データ処理・転送部６２１の前段にデータ比較部６２２が配置されている。データ比較部６２２は、図４に示すように、バス毎に比較器７０１、及びエラーデータ記憶レジスタ７０２を備えた構成である。データ比較部６２２とともに、各比較器７０１が出力する比較結果をエラー情報として収集するためのエラー情報収集部６２３が受信部６０６に搭載されている。図４において表記した「ａ」「ｂ」「ｆ」「ｇ」はバス自体だけでなく、データを受信したバスを示すシンボルとしても用いている。
【００３０】
各比較器７０１は、それぞれ対応するバス上を送信されるデータと、エラーデータ記憶レジスタ７０２に記憶されているデータとを比較し、その比較結果をエラー情報としてエラー情報収集部６２３に出力する。このとき、比較するデータはＣＲＣによるエラーチェックを行う単位分のデータである。エラーデータ記憶レジスタ７０２へのデータの格納は、エラーチェックの結果、受信したデータにエラーが発生していることを確認したＣＲＣチェック部６０７によって行われる。その時に各エラーデータ記憶レジスタ７０２に格納するデータは、エラー発生時の受信データである。ＣＲＣチェック部６０７は、エラー発生時に半導体装置６００が受信した受信データを、それを受信したバスのエラーデータ記憶レジスタ７０２に格納する。その格納により、エラー発生時の受信データを、データ送信元の半導体装置５００から再送されるデータとバス毎に比較するようになっている。
【００３１】
図５は、エラーが発生したバスでのエラー箇所の特定方法を説明する図である。図５中の「エラーバスの保存データ」はエラーが発生したバスで実際に受信されたデータであり、そのデータがエラーデータ記憶レジスタ７０２に格納される。「１」或いは「０」が表記された各枠は１ビットのデータを表している。このことから図５では、ＣＲＣによるエラーチェック用にチェック符号が付されたデータは７ビットのデータとして示している。チェック符号を付すデータのビット数は７ビットでなくとも良い。
【００３２】
図５中の「正常データ」は「エラーバスの保存データ」として示すデータのエラーが発生する前の本来の内容を表している。「判定結果」は「エラーバスの保存データ」がエラーデータ記憶レジスタ７０２に格納され、「正常データ」が再送されたバスで比較器７０１がビット毎に出力する比較結果を表している。その比較結果は、データが一致を「○」、不一致を「×」で表している。「×」となった判定結果に表記した「ａ」及び「ｂ」は、エラーが発生したビットの位置（エラー箇所）を表し、「ａ」及び「ｂ」が付された枠からその下の枠に向けた矢印は、「正常データ」上でエラーが発生したビット、つまりエラーバスの保存データとは値が異なるビットを示している。
【００３３】
上記のようにして、エラーが発生したバスでは、そのエラーが検出されたデータをエラーデータ記憶レジスタ７０２に格納することにより、比較器７０１を用いて再送データとのビット毎の比較が行われる。比較器７０１によるビット毎の比較結果はデータ中でエラーが発生したビットを示すエラー情報としてエラー情報収集部６２３により収集される。エラー情報収集部６２３により収集されるエラー情報は、エラーが検出されない再送データを受信した場合に保存、或いは出力される。そのようなエラー情報の抽出により、隣に位置するバスで転送されるデータによって生じる干渉、その度合い等を解析することができる。
【００３４】
エラー情報の保存、或いは出力は、例えばＣＲＣチェック部６０７により行われる。エラー情報の保存は、ＣＲＣチェック部６０７にメモリを搭載し、そのメモリに格納することで行うようにしても良い。或いはキュー６０８を介して制御部６０１に渡すことで、制御部６０１に保存、或いは他の半導体装置への出力を行わせても良い。ここでは便宜的に、エラー情報の保存はＣＲＣチェック部６０７内のメモリにエラー情報を格納することで行われると想定する。
【００３５】
図３では図示していないが、半導体装置５００にも、受信部５０６に図４に示すようなデータ比較部、及びエラー情報収集部を搭載しても良い。データ比較部やエラー情報収集部を半導体装置５００に搭載する場合、データ比較部の各エラーデータ記憶レジスタに、半導体装置６００側でエラーが検出されたデータを格納し、エラーが検出されたデータを半導体装置６００から半導体装置５００に送信させ、半導体装置５００でデータの比較を行うことでも、エラーが発生したバスを特定することができる。このことから、バス単位でエラー箇所を検出するための機構は、エラーが発生したデータを受信した側、そのデータを送信した側の何れでも用いることができる。
【００３６】
図６は、本実施形態による半導体装置間でデータ送信を実現させる処理の流れを示すフローチャートである。図６では、送信側装置（図中「送信ＬＳＩ」と表記）、及び受信側装置（図中「受信ＬＳＩ」と表記）のそれぞれで実行される処理を示している。受信側装置では、図示される処理は主にＣＲＣチェック部によって実行される。ここでは便宜的に、図６において、送信側装置は半導体装置５００、受信側装置は半導体装置６００と想定して説明する。
【００３７】
送信側装置５００では、データ送信制御を実行して送信の対象となるデータを選択し（ＳＴ１）、選択したデータにＣＲＣ方式のチェック符号を付加し（ＳＴ２）、受信側装置６００へのデータの転送を行う（ＳＴ３）。
【００３８】
他方の受信側装置６００では、転送されたデータを受信部６０６により受信し（ＳＲ１）、ＣＲＣによるエラーチェックをＣＲＣチェック部６０７が行い（ＳＲ２）、チェック結果を受信結果として送信側装置に通知する（ＳＲ３）。受信結果の通知は、ＣＲＣチェック部６０７の制御によって実現される。
【００３９】
送信側装置５００は、受信側装置６００からの受信結果通知を受信すると、通知された受信結果をＣＲＣチェック部５０７が解読し、ＳＴ３で実行されたデータ転送時に送信エラーが発生したか否か判定する（ＳＴ４）。送信エラーが受信側装置６００で発生した場合、送信側装置５００が受信した受信結果通知にはその旨が示されているため、ＳＴ４の判定はＹＥＳとなり、処理はＳＴ１に戻る。データ送信制御処理では、送信エラーが発生したデータを再送のために選択する（ＳＴ１）。受信側装置６００からの受信結果通知が送信エラー発生を示していない場合には、ＳＴ４の判定はＮＯとなり、データ送信制御処理では次に送信すべきデータを選択する（ＳＴ１）。送信エラーが発生したか否かの判定、及びその判定結果に応じた送信すべきデータの選択は、例えばＣＲＣチェック部６０７が行う。実際のデータの選択は、データ送信制御部６０４を介して行われる。
【００４０】
受信側装置６００では、受信結果を通知した後は、ＣＲＣによるエラーチェックの結果、エラーが検出されたか否か判定する（ＳＲ４）。ＣＲＣによるエラーを検出した場合、ＳＲ４の判定はＮＯとなるため、受信側装置６００ではエラー解析モードを設定し（ＳＲ６）、データ比較部６２２のエラーが検出されたバス用のエラーデータ記憶レジスタ７０２に受信データを記憶させ（ＳＲ７）、送信側装置５００からの再送データの受信に備える（ＳＲ７→ＳＲ１）。
【００４１】
エラーは連続して発生することがある。エラーデータ記憶レジスタ７０２へのデータの記憶は、例えば１回目のエラー発生時でのエラー箇所の特定を優先するような場合、２回目以降のエラー発生時には行わず、前に記憶させたデータを維持させれば良い。そうでない場合には、エラーが発生する度に、エラーデータ記憶レジスタ７０２に記憶させるデータを書き換えても良い。
【００４２】
一方、ＣＲＣでエラーを検出しなかった場合には、ＳＲ４の判定はＹＥＳとなり、次にエラー解析モードが設定されているか否か判定する（ＳＲ５）。エラー解析モードは、エラーが発生したバスでのエラー箇所を特定することで解除されるため、エラーが発生したバスでの特定が終わっている場合、ＳＲ５の判定はＮＯとなり、次のデータの受信に備える（ＳＲ５→ＳＲ１）。一方、エラーが発生したバスでの特定が終わっていない場合には、ＳＲ５の判定はＹＥＳとなる。この場合、受信側装置６００が受信したデータが再送データである可能性があるので、受信側装置６００は、エラーデータ記憶レジスタ７０２に記憶されたデータと、受信したデータをデータ比較部６２２で比較する（ＳＲ８）。
【００４３】
受信側装置６００は、データ比較を行った後は、受信したデータが再送データか否か判定するためのマッチ条件の解析を行い、その結果がＯＫか否か判定する（ＳＲ９）。受信側装置６００が送信側装置５００にデータの再送を要求しても、次に送信側装置５００から受信するデータが再送データであるとは限らない。マッチ条件の解析は、今回受信したデータが再送データか否か確認するために行われる。その確認は、より具体的には、例えばＳＲ７で記憶させたデータと今回受信したデータとをビット単位で比較し、ビット単位で一致する割合が予め定めた値以上か否か判定することで行う。マッチ条件の解析結果がＯＫであった場合、つまりビット単位で一致する割合が予め定めた値以上であった場合、ＳＲ９での判定はＹＥＳとなり、受信側装置６００はエラー情報収集部６２３により収集される比較結果を解析データとして例えばＣＲＣチェック部６０７内に用意したメモリに保存して、エラー解析モードを解除し（ＳＲ１０）、次のデータの受信に備える（ＳＲ１０→ＳＲ１）。一方、マッチ条件解析の結果がＯＫでない場合には、ＳＲ９での判定はＮＯとなり、受信データは再送データではないとして、受信側装置６００は次のデータの受信に備える（ＳＲ９→ＳＲ１）。エラーが発生したバスでのエラー箇所の特定を継続して行う。
【００４４】
ＳＲ９のマッチ条件解析は、本発明を限定する処理ではなく、より簡易的にエラー解析モードで再送データを特定するための処理である。再送データに再送データであることを表すコード等の情報を付加するのであれば、そのコードを解読しても良い。他の方法を採用しても良い。
【００４５】
このようにして本実施形態では、エラーが発生したバスのエラー箇所の特定を行う。エラーが発生したバスの特定結果は、エラーが発生しやすいバス、エラーを発生させやすいデータ（パターン）を解析するための情報として用いることができ、より適切な回路設計を行うのを支援する。
【００４６】
ところで、エラーが発生したバスでの特定は、エラーが発生することなくデータを受信するまで行うことはできない。一方、送信エラーは、連続して発生する可能性がある。こ
のことから、送信エラーの発生を抑制するために、以下のような方法を採用しても良い。
【００４７】
バスを介して送信されるデータが他のバスに悪影響を及ぼす結果、エラーが、特定バスで定常的に発生する可能性がある。このことから図７に示すように、データの再送に用いるバスを制限することにより、エラーが発生する確率をより低減させることが期待できる。よって、エラーが発生した後、再送データが定常的にエラーとなる場合、そのエラーをより回避することができる。
【００４８】
図７において、データ１〜データ７はそれぞれ通常時にはバスａ〜バスｇを介して送信されるデータである。バスｇのみを実線で描いているのは、そのバスｇのみがデータ送信に用いられている例を想定しているためである。図中に表記の「エラー比較用レジスタ」はエラーデータ記憶レジスタ７０２に相当し、エラーが発生した受信データを格納するエラーデータ記憶レジスタ７０２は、バス制限に応じて選択される。
【００４９】
図７に示すように、バスのうちの一つのみをデータの再送に用いる場合、エラー発生は最も抑制させることができる。しかし、データの再送に要する再送時間は最も長くなる。このようなことから、バスの制限では、エラー発生の確率と再送時間とはトレードオフの関係にある。従い、バスの制限は、エラー発生の抑制の他に、再送時間を考慮して行う必要がある。よって、本モードは、エラー解析専用モードとして用いることが好ましい場合が多いと考える。
【００５０】
エラー発生は、隣り合うバスを転送に用いない、つまり或る程度、離れた位置に存在するバスを選択することでも抑制することができる。より離れた位置に存在するバスを選択するほど、エラー発生はより抑制されると期待できる。このことから、ユーザは、どういう構成でバスを用いるかは、用途に合わせ任意の設定を行えば良い。
【００５１】
バスを制限すべきか否かの判定は、例えば受信側装置のＣＲＣチェック部が行い、バスの制限要求はデータ処理・選択部、及び送信部を介して送信側装置に送信する。送信側装置では、バスの制限要求は例えばＣＲＣチェック部が処理し、データ処理・選択部を介して送信部にバスの制限を指示する。その制限は、例えば送信に用いるバスを指定する形で行う。そのバス指定により、送信部のデータ処理・転送部は、指定されたバスのみを用いたデータ送信を行う。
【００５２】
データ送信に用いるバスを制限する場合、受信側装置では以下のような処理を実行すれば良い。図８は、データ送信に用いるバスを制限する場合に、受信側装置が実行する処理の流れを示すフローチャートである。次に図８を参照して、受信側装置の動作について詳細に説明する。ここでは便宜的に、エラー検出時の次には再送要求によるデータ再送が行われることを想定している。また、図６と同様に、受信側装置は半導体装置６００、送信側装置は半導体装置５００と想定する。
【００５３】
受信側装置６００は、送信側装置５００から転送されたデータを受信し（ＳＲ１１）、ＣＲＣによるエラーチェックを行い（ＳＲ１２）、ＣＲＣによるエラーチェックの結果、受信データにエラーが検出されたか否か判定する（ＳＲ１３）。何れのバスからも受信データにエラーを検出しなかった場合、ＳＲ１３の判定はＹＥＳとなり、チェック結果を受信結果として送信側装置５００に通知する（ＳＲ１８）。受信側装置６００による受信結果通知は、ＣＲＣチェック部６０７の制御によって実現される。
【００５４】
一方、受信データにエラーを検出した場合には、ＳＲ１３の判定はＮＯとなるため、次にエラー解析モードが設定されているか否か判定する（ＳＲ１４）。エラー解析モードは、受信データにエラーが検出された後に設定され、受信データ中でエラーが生じた箇所が特定された際に解除される。ＳＲ１４の処理により、エラー解析モードが設定されていないと判断された場合、つまりエラー箇所を特定すべきエラーが新たに発生した場合、ＳＲ１４の判定はＮＯとなる。この場合、受信側装置６００は再送データを送受信する転送バスを制限すると共に、そのバスの制限に合わせて受信データを格納すべきエラーデータ記憶レジスタ７０２に格納し（ＳＲ１５）、再送要求と合わせ、バスを制限したデータ送信を送信側装置５００に要求する（ＳＲ１８）。この際には、受信側装置６００から送信側装置５００に対して、使用する転送バス、あるいは使用しない転送バスを特定する通知を行う。一方、エラー解析モードが設定されていない場合には、ＳＲ１４の判定はＹＥＳとなり、次にカウントオーバーか否か判定する（ＳＲ１６）。
【００５５】
バスを制限してのデータ送信では、同一のバスを用いたデータ送信で予め定めた回数、連続してエラーが発生したことを条件に、バスの制限を変更するようにしている。ＳＲ１６で、同一バスを用いたデータ送信でエラー発生が予め定めた回数連続していない場合、ＳＲ１６の判定はＮＯとなり、再度、データの再送を送信側装置５００に要求する（ＳＲ１８）。一方、同一バスを用いたエラーが所定回数連続発生した場合には、ＳＲ１６の判定はＹＥＳとなる。この場合、受信側装置６００は送信に用いるバスの制限を変更するとともに、データ送信に用いられるバスのエラーデータ記憶レジスタ７０２にエラーが検出されたデータを保存させてから（ＳＲ１７）、バス制限の変更、及びデータの再送を送信側装置５００に要求する（ＳＲ１８）。
【００５６】
データを転送するバスを制限する場合には、１つ以上のバスで複数のデータが転送されることになる。このため、ビット単位の比較にデータ比較部６２２を用いるのであれば、エラーデータ記憶レジスタ７０２に記憶させる受信データはデータの受信毎に書き換えなければならない。このことから、バスを制限している状況時には、ＳＲ１１では１データを受信する度に、データを書き換えるべきエラーデータ記憶レジスタ７０２のデータの書き換えが行われる可能性がある。エラー情報収集部６２３は、複数のデータが転送されるバスではデータ毎にエラー情報を収集することとなる。エラーデータ記憶レジスタ７０２のデータの書き換えを行うことから、ＳＲ１５及びＳＲ１７でエラーデータ記憶レジスタ７０２に記憶されるデータは、そのエラーデータ記憶レジスタ７０２が配置されたバスで最初に送信（再送）されるデータに対応する受信データである。ビット単位の比較をハードウェア（データ比較部６２２）ではなく、ソフトウェアにより行うようにした場合には、バスを制限しているか否かに係わらず、ＳＲ１１では単にデータを受信すれば良いことになる。エラーデータ記憶レジスタ７０２のデータの書き換えはＣＲＣチェック部６０７が行う。
【００５７】
送信側装置５００への受信結果通知が終了した後、ＣＲＣによるエラーチェックの結果、受信データにエラーを検出していた場合、ＳＲ１９の判定はＮＯとなるため、次にエラー解析モードが設定されているか否か判定する（ＳＲ２０）。エラー解析モードが設定されていた場合、ＳＲ２０の判定はＹＥＳとなり、次のデータの受信に備える（ＳＲ２０→ＳＲ１１）。このとき、エラーデータ記憶レジスタ７０２には、そのエラーデータ記憶レジスタ７０２が配置されたバスで最初に送信（再送）されるデータに対応する受信データが記憶される。エラー解析モードが設定されていない場合には、ＳＲ２０の判定はＮＯとなり、受信側装置６００はエラー解析モードを設定してから（ＳＲ２１）、次のデータの受信に備える（ＳＲ２１→ＳＲ１１）。ＳＲ１１への移行時は、ＳＲ１５でエラーデータ記憶レジスタ７０２へのデータの格納が行われている。このため、エラーデータ記憶レジスタ７０２へのデータの格納は行われない。
【００５８】
一方、受信データにエラーを検出していなかった場合には、ＳＲ１９の判定はＹＥＳとなるため、受信側装置６００は次に、エラー解析モードが設定されているか否か判定する（ＳＲ２２）。エラー解析モードが設定されていない場合、ＳＲ２０の判定はＮＯとなり
、受信側装置６００は次のデータの受信に備える（ＳＲ２２→ＳＲ１１）。エラー解析モードが設定されている場合には、ＳＲ２２の判定はＹＥＳとなり、次に受信側装置６００はエラーデータ記憶レジスタ７０２に保存されているデータと再送データとのビット単位の比較結果（エラー情報）をデータ毎にエラー情報収集部６２３から取得し（ＳＲ２３）、その比較結果を保存し（ＳＲ２４）、エラー解析モードを解除してから（ＳＲ２５）、次のデータの受信に備える（ＳＲ２５→ＳＲ１１）。
【００５９】
以上の変形例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の信号ラインで行うデータ送信で生じたエラーを特定するエラー特定方法であって、
送信側装置から受信側装置への前記複数の信号ラインを用いたデータ送信に前記エラーが発生した場合に、該エラーが発生したデータを保存する保存工程と、
前記保存工程で保存したデータを、前記エラーが発生していないデータとビット単位で比較して、前記保存したデータ中で該エラーが発生したビットを特定するエラー特定工程と、
を備えることを特徴とするエラー特定方法。
（付記２）
前記保存工程での前記エラーが発生したデータの保存が前記受信側装置で行われる場合に、
前記エラー特定工程では、前記エラーの発生による前記送信側装置からのデータ再送は、前記複数の信号ラインのなかで前記データの再送に用いる信号ラインを制限して行い、前記受信側装置は該信号ラインを制限して再送されるデータと前記保存したデータとをビット単位で比較して、該保存したデータ中で該エラーが発生したビットを特定する、
ことを特徴とする付記１記載のエラー特定方法。
（付記３）
複数の信号ラインを用いて半導体装置間でデータ送信を行うデータ処理装置において、
送信側装置から受信側装置への前記複数の信号ラインを用いたデータ送信にエラーが発生したか否か判定するエラー判定手段と、
前記エラーが発生したと前記エラー判定手段が判定した場合に、前記受信側装置が受信した、該エラーが発生しているデータを保存する保存手段と、
前記保存手段が保存したデータを、前記エラーが発生していないデータとビット単位で比較して、該保存したデータ中で前記エラーが発生したビットを特定するエラー特定手段と、
を具備することを特徴とするデータ処理装置。
（付記４）
複数の信号ラインを用いて他の半導体装置との間でデータ送信を行う半導体装置において、
前記他の半導体装置から前記複数の信号ラインを用いて送信されたデータにエラーが発生したか否か判定するエラー判定手段と、
前記エラーが発生したと前記エラー判定手段が判定した場合に、前記データの再送を前記他の半導体装置に要求する再送要求手段と、
前記再送要求に応じて前記他の半導体装置から受信した再送データにエラーが発生していないと前記エラー判定手段が判定した場合に、該再送データを該エラーが発生している受信データとビット単位で比較して、該受信データ中で該エラーが発生したビットを特定するエラー特定手段と、
を具備することを特徴とする半導体装置。
（付記５）
前記再送要求手段は、前記複数の信号ラインのなかでデータ送信に用いる信号ラインを制限させる制限要求を併せて行い、
前記エラー特定手段は、前記制限要求により前記信号ラインが制限されて送信される再送データを用いて、前記受信データとのビット単位の比較を行う、
ことを特徴とする付記４記載の半導体装置。
（付記６）
前記再送要求手段は、前記再送データにエラーが判定されなくなるまで前記再送要求を繰り返し行う、
ことを特徴とする付記請求項４、または５記載の半導体装置。
（付記７）
複数の信号ラインを用いて他の半導体装置との間でデータ送信を行う半導体装置において、
前記他の半導体装置から前記複数の信号ラインのなかでデータ送信に用いる信号ラインを制限させる制限要求を受信した場合に、該制限要求に応じて該複数の信号ラインのなかでデータ送信に用いる信号ラインを選択するライン選択手段と、
前記ライン選択手段により選択された信号ラインを用いて、前記データ送信を行う送信手段と、
を具備することを特徴とする半導体装置。
【図面の簡単な説明】
【００６０】
【図１】本実施形態によるデータ処理装置の構成を説明する図である。
【図２】本実施形態によるデータ処理装置の詳細な構成例を説明する図である。
【図３】本実施形態による半導体装置のデータ送信を行うための構成を示す図である。
【図４】データ比較部の構成を示す図である。
【図５】エラーが発生したバスでのエラー箇所の特定方法を説明する図である。
【図６】本実施形態による半導体装置間でデータ送信を実現させる処理の流れを示すフローチャートである。
【図７】エラー発生時のデータの再送方法を説明する図である。
【図８】データ送信に用いるバスを制限する場合に、受信側装置が実行する処理の流れを示すフローチャートである。
【図９】従来の半導体装置間のデータ送信を説明するための図である。
【図１０】従来の半導体装置間でデータ送信を実現させる処理の流れを示すフローチャートである。
【符号の説明】
【００６１】
５００、６００      半導体装置
５０５、６０５    送信部
５１１、６１１    データ処理・転送部
６０６      受信部
６０７      ＣＲＣチェック部
６２２      データ比較部
６２３      エラー情報収集部
７０１      比較器
７０２      エラーデータ記憶レジスタ
【図２】
0005233415.tif 000002
【図３】
0005233415.tif 000003
【図４】
0005233415.tif 000004
【図６】
0005233415.tif 000005
【図７】
0005233415.tif 000006
【図８】
0005233415.tif 000007
【図９】
0005233415.tif 000008
【図１０】
0005233415.tif 000009
【図１】
0005233415.tif 000010
【図５】
0005233415.tif 000011