(57)【要約】【課題】冗長な信号線を設けることなく、信号線に欠陥が生じた場合にも確実にデータ転送を行うことのできる転送制御装置１０を提供する。【解決手段】バス５０とバスインタフェース３０の間に設けられた転送制御装置１０であって、バスの複数の信号線と接続するバス接続手段１０２と、バスインタフェース３０の複数の信号線と接続するインタフェース接続手段１００と、バス５０に欠陥信号線が存在する場合に、インタフェース接続手段１００の信号線のうち、欠陥信号線に対応する信号線と、バス５０の複数の信号線のうち欠陥信号線以外の信号線とを接続する接続制御手段１５０，１７０，１８２とを備えた。【選択図】        図４
2008159006.tif 000002
【特許請求の範囲】
【請求項１】
バスとバスインタフェースの間に設けられた転送制御装置であって、
前記バスの複数の信号線と接続するバス接続手段と、
前記バスインタフェースの複数の信号線と接続するインタフェース接続手段と、
前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち、前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の信号線とを接続する接続制御手段と
を備えたことを特徴とする転送制御装置。
【請求項２】
前記バスは、データを転送するデータ信号線と、前記データを転送するための制御コマンドを転送するコマンド信号線とを有し、
前記接続制御手段は、前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の前記データ信号線とを接続することを特徴とする請求項１に記載の転送制御装置。
【請求項３】
前記欠陥信号線の数に応じて定まる、前記バスとの間のバースト転送における転送幅を保持する第１保持手段と、
前記転送幅で前記バスとの間でバースト転送を行う転送手段と
を備えたことを特徴とする請求項１または２に記載の転送制御装置。
【請求項４】
前記バスの欠陥信号線を検出する検出手段と、
前記欠陥信号線の数に基づいて、前記バスとの間のバースト転送における転送幅を決定する第１決定手段と
をさらに備え、
前記第１保持手段は、第１決定手段により決定された前記転送幅を保持することを特徴とする請求項３に記載の転送制御装置。
【請求項５】
前記バースト転送に利用する、前記バスの信号線を指定する信号線情報を保持する第２保持手段をさらに備え、
前記転送手段は、前記信号線情報に示される前記信号線を利用して前記バースト転送を行うことを特徴とする請求項３に記載の転送制御装置。
【請求項６】
前記バスの欠陥信号線を検出する検出手段と、
前記欠陥信号線以外の信号線を前記バスとの間のバースト転送に利用する信号線として決定する第２決定手段と
をさらに備え、
前記第２保持手段は、第２決定手段により決定された前記信号線を示す前記信号線情報を保持することを特徴とする請求項５に記載の転送制御装置。
【請求項７】
前記第２決定手段は、前記欠陥信号線以外の前記データ信号線を前記バスとの間のバースト転送に利用する信号線として決定することを特徴とする請求項６に記載の転送制御装置。
【請求項８】
バスに接続されるバスインタフェースと、前記バスと前記バスインタフェースの間に設けられた転送制御装置とを備えたＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）であって、
前記転送制御装置は、
前記バスの複数の信号線と接続するバス接続手段と、
前記バスインタフェースの複数の信号線と接続するインタフェース接続手段と、
前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち、前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の信号線とを接続する接続制御手段と
を有することを特徴とするＬＳＩ。
【請求項９】
前記バスインタフェースおよび前記転送制御装置の前記インタフェース接続手段に第１のクロック周波数を供給する第１クロック手段と、
第１のクロック周波数を供給する第１クロック手段と、欠陥信号線の数に応じて定まる第のクロック周波数を供給する第２クロック手段と
を備えたことを特徴とする請求項８に記載のＬＳＩ。
【請求項１０】
複数のＬＳＩが当該ＬＳＩの垂直方向に積層され、当該複数のＬＳＩがバスを介して接続されたパッケージであって、
前記パッケージの複数のＬＳＩは、それぞれバスに接続されるバスインタフェースと、前記バスと前記バスインタフェースの間に設けられた転送制御装置とを備え、
前記転送制御装置は、
前記バスの複数の信号線と接続するバス接続手段と、
前記バスインタフェースの複数の信号線と接続するインタフェース接続手段と、
前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち、前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の信号線とを接続する接続制御手段と
を有することを特徴とするＬＳＩパッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスとバスインタフェースの間に設けられた転送制御装置、転送制御装置を含むＬＳＩおよびＬＳＩパッケージに関するものである。
【背景技術】
【０００２】
プロセスの微細化により１つのＬＳＩ内に搭載可能な機能モジュールの数が増加している。これに伴い、これらの機能モジュール間を接続するためのバスの情報伝達能力の向上が必要となってきている。さらに、バスの情報伝達能力の向上を目的として、バスが利用する信号線の本数は増加する傾向にある。
【０００３】
また微細化により各機能モジュールの面積が縮小する一方で、機能モジュールの数は増加の傾向にある。そのため、これらを接続するためのバスの距離は機能モジュールの実装面積に比して長くなってきている。
【０００４】
これらの理由からＬＳＩにおけるバス信号線の面積の占める割合も増加傾向にあり、それとともにバス信号線に由来するＬＳＩの欠陥も増加している。
【０００５】
またプロセス技術の向上に伴い、面積当たりのＬＳＩの処理能力は向上している。しかし、その一方で、ＬＳＩが外部との入出力に利用できる面積当たりのピンの数は機械的な技術の限界により増やすことが難しい。そのため複数のＬＳＩ間を接続してシステムを構成したい場合には、極力その限られた数の外部入出力ピンを有効に利用することが求められている。
【０００６】
バスの信号線に欠陥が存在した場合でもバスの機能を維持するため方式が知られている。例えば、特許文献１には、冗長な信号線を予め配しておくものが開示されている。特許文献１の方法においては、あわせてパリティチェックを行う。具体的には、データをパリティ付きで送受信することにより、パリティチェッカーによりエラー検出を可能とする。そして、エラーが検出された際には、データバスの各ビットとスペアラインを順次交換する。この際、パリティチェックを行いデータバス中の欠陥のある信号線を特定し、欠陥のある信号線とスペアラインとを交換する。
【０００７】
また、特許文献２には、２系統の独立なバスにおいてその片方に障害が生じた場合に他方のバスを時分割多重化して使用することによりデータの伝送を継続させる方式が開示されている。これ以外にも、データにＥＣＣを付加して送信し、受信側ではそのＥＣＣを用いて誤り訂正を行う方式なども提案されている。
【０００８】
【特許文献１】特開平５−７３３４３号公報
【特許文献２】特開平６−２５０９６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１のように冗長な信号線を用意しておくと、バスの実装面積に対してオーバヘッドが生じてしまうという問題がある。さらに、ＬＳＩ間接続においては外部入出力ピンをこの冗長配線ために消費してしまうことになる。すなわち、その分他の機能に利用できるはずのピンの数を減らさなければならない。また、回避できる欠陥の数は、冗長に用意された信号線の本数に限定されてしまう。
【００１０】
また、時分割多重化を用いた方式では、一方のバスの障害を回避することはできるが、例えば共通信号線など時分割多重不可能な信号に欠陥があった場合にはこれを回避することはできない。また、時分割多重化を用いた方式は、等価な２つの独立したバスが設けられたシステムのみに適用可能な手法であり、それ以外の構成においては適用できない。
【００１１】
また、バスを介してＥＣＣ情報を送受信する方式では、信号線の欠陥の有無に関わらず、ＥＣＣ情報を送受信する。このため、データ伝送のためにバスが占有される時間が長くなってしまう。すなわち、バスデータ伝送能力にオーバヘッドが生じ得る。さらに、ＥＣＣのビット数に応じて訂正可能なエラーのビット数に限界があり、それを超えた欠陥に対しては訂正能力を持たない。
【００１２】
本発明は、上記に鑑みてなされたものであって、冗長な信号線を設けることなく、信号線に欠陥が生じた場合にも確実にデータ転送を行うことのできる転送制御装置、ＬＳＩおよびＬＳＩパッケージを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明は、バスとバスインタフェースの間に設けられた転送制御装置であって、前記バスの複数の信号線と接続するバス接続手段と、前記バスインタフェースの複数の信号線と接続するインタフェース接続手段と、前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち、前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の信号線とを接続する接続制御手段とを備えたことを特徴とする。
【００１４】
また、本発明の他の形態は、バスに接続されるバスインタフェースと、前記バスと前記バスインタフェースの間に設けられた転送制御装置とを備えたＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）であって、前記転送制御装置は、前記バスの複数の信号線と接続するバス接続手段と、前記バスインタフェースの複数の信号線と接続するインタフェース接続手段と、前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち、前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の信号線とを接続する接続制御手段とを有することを特徴とする。
【００１５】
また、本発明の他の形態は、複数のＬＳＩが当該ＬＳＩの垂直方向に積層され、当該複数のＬＳＩがバスを介して接続されたパッケージであって、前記パッケージの複数のＬＳＩは、それぞれバスに接続されるバスインタフェースと、前記バスと前記バスインタフェースの間に設けられた転送制御装置とを備え、前記転送制御装置は、前記バスの複数の信号線と接続するバス接続手段と、前記バスインタフェースの複数の信号線と接続するインタフェース接続手段と、前記バスに欠陥信号線が存在する場合に、前記インタフェース接続手段の信号線のうち、前記欠陥信号線に対応する信号線と、前記バスの複数の信号線のうち前記欠陥信号線以外の信号線とを接続する接続制御手段とを有することを特徴とする。
【発明の効果】
【００１６】
本発明にかかる転送制御装置によれば、バスの信号線に欠陥が生じた場合には、欠陥信号線に替えて欠陥のない信号線を利用することにより、確実にデータ転送を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に、本発明にかかる転送制御装置、ＬＳＩおよびＬＳＩパッケージの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１８】
（実施の形態１）
図１に示すように、ＬＳＩ１は、送信制御装置１０と、受信制御装置２０と、送信モジュール３０と、受信モジュール４０と、バス５０とを備えている。
【００１９】
バスインタフェースとしての送信モジュール３０および受信モジュール４０は、それぞれ送信制御装置１０および受信制御装置２０を介してバス５０に接続されている。バス５０は、Ｃ０〜Ｃ３１までの３２本のコマンド信号線と、Ｄ０〜Ｄ６３までの６４本のデータ信号線の合計９６本の信号線を有している。
【００２０】
コマンド信号線はデータを送信するために必要となる情報を送信モジュール３０と受信モジュール４０の間で交換するための信号線である。また、データ信号線は送信したいデータそのものを転送するために用いられる信号線である。すなわち、バス５０は、１サイクル当たりデータ信号線の本数分の情報量のデータを転送する能力を有している。本実施の形態にかかるバス５０は、６４ビットのデータを転送する能力を有している。
【００２１】
図２は、バス５０のすべての信号線が正常に動作している場合に、各信号線を流れる信号を示している。図２には、信号線と、論理信号と、ビット幅とが対応付けて示されている。ここで、論理信号とは、信号線を流れる信号である。例えば、Ｃ１を流れる信号とＣ２に流れる信号によりｃｍｄ＿ｔｙｐｅ（コマンドタイプ）が表現される。論理信号としては、この他、ｃｍｄ＿ｖｌｄ、ａｄｄｒｅｓｓ、ｓｉｚｅ、ｃｍｄ＿ｔａｇ、ａｃｋ＿ｖｌｄ、ａｃｋ＿ｔａｇ、ｄａｔａ＿ｖｌｄ、ｄａｔａ＿ｔａｇがある。
【００２２】
Ｃ０からＣ２５は、転送対象となる転送データのタイプ、アドレス、サイズなど、転送データに関する情報を示すコマンドのための信号線である。これらのコマンドは、送信モジュール３０から送出される。Ｃ２６〜Ｃ２８は、コマンドに対する返答のための信号線である。これらの返答は、受信モジュール４０から送出される。Ｃ２９〜Ｃ３１は、データ送信の際に送信されるコマンドのための信号線である。これらのコマンドは、送信モジュール３０から送信される。Ｄ０〜Ｄ６３は、転送データのための信号線である。転送データは、送信モジュール３０から送信される。
【００２３】
さらに、バス５においてはバースト転送が行われる。バースト転送とは、１サイクルで転送可能なサイズ以上のデータを複数サイクルに分けて連続的に転送する方式である。例えば、本実施の形態のように６４ビットのバス５０において、１２８ビットのデータを送信するとする。この場合には、１２８ビットのデータを２分割する。そして、１サイクルで６４ビットのデータを転送する。これを１サイクル繰り返す。これにより、６４ビット×２サイクル＝１２８ビットのデータを転送できる。
【００２４】
図３に示すように、バス５０を介したデータ転送には、ｃｏｍｍａｎｄフェーズ、ａｃｋフェーズおよびｄａｔａフェーズの３つのフェーズがある。ｃｏｍｍａｎｄフェーズにおいては、送信モジュール３０は、ｃｍｄ＿ｖｌｄ信号に１をセットする。これにより、受信モジュール４０に対してコマンド送信のタイミングであることを通知する。このとき同時にｃｍｄ＿ｔｙｐｅ信号としてコマンドのタイプを送出する。さらに、ａｄｄｒｅｓｓ信号として書き込みを行いたいアドレスを送出し、ｓｉｚｅ信号として書き込みたいデータのサイズ（データ長）を送出し、ｃｍｄ＿ｔａｇ信号としてデータを識別するためのタグＩＤを送出する。
【００２５】
次にａｃｋフェーズにおいては、受信モジュール４０が送信モジュール３０から通知されたコマンドを受付可能であることを、受信モジュール４０から送信モジュール３０に通知する。具体的には、ｃｏｍｍａｎｄフェーズで通知されたタグＩＤと同じ値をａｃｋ＿ｔａｇ信号として送信し、これと同時にａｃｋ＿ｖｌｄ信号を１にする。送信モジュール３０は、これらの信号を受信することにより、タグＩＤで識別されるデータを転送可能であることを知ることができる。
【００２６】
最後に、ｄａｔａフェーズにおいては、送信モジュール３０は、タグＩＤで識別されるデータを受信モジュール４０に送信する。具体的には、送信したいデータのデータ長に応じたサイクルの間ｄａｔａ＿ｖｌｄ信号に１をセットし続ける。そして、ｄａｔａ＿ｖｌｄ信号に１がセットされている期間中、ｄａｔａ＿ｔａｇ信号にｃｏｍｍａｎｄフェーズで通知したタグＩＤと同じ値をセットし、データ信号をビット数単位（６４ビットずつ）に分割したデータを先頭から順番に毎サイクル送信する。これにより、データ転送が完了する。
【００２７】
例えば図４に示すように１２８ビットのデータ信号を送信する場合には２サイクルの間ｄａｔａ＿ｖｌｄ信号に１をセットし、６４ビットずつのデータを２サイクル送信する。
【００２８】
これら３つのフェーズはこの順番で実行されることが求められる。しかし、３つのフェーズの間のサイクル数には特に制限がないものとする。なお、本実施の形態においては、上記バスプロトコルによりデータ転送が行われるが、バスプロトコルはこれに限定されるものではない。
【００２９】
送信制御装置１０は、バス５０の所定の信号線に欠陥が発見された場合、すなわち所定の信号線が使用できない場合に、送信モジュール３０が送出するコマンドおよびデータを使用可能な信号線に送出するための処理を行う。受信制御装置２０は、バス５０の所定の信号線が使用できない場合に、他の信号線から受信したコマンドおよびデータを受信モジュール４０のしかるべき信号線に送信するための処理を行う。
【００３０】
図４に示すように、送信制御装置１０は、送信モジュール側接続部１００と、バス側接続部１０２と、８対１クロスバ装置１０４と、９対１クロスバ装置１１０〜１４１と、コマンド管理部１５０と、バッファ１６０〜１６７と、８対８クロスバ装置１６８と、転送管理部１７０と、欠陥検出部１８０と、設定部１８２とを備えている。
【００３１】
送信モジュール側接続部１００は、送信モジュール３０に接続している。バス側接続部１０２はバス５０に接続している。なお、図４に示すＤ−Ａ〜Ｄ−Ｈは、Ｄ０〜Ｄ６３のうち８ビットのＤグループである。Ｄグループとは８本のデータ信号線ずつの組であり、図５に示すようにＤ−Ａ〜Ｄ−Ｈは、それぞれＤ０〜Ｄ７、Ｄ８〜Ｄ１５、Ｄ１６〜Ｄ２３、Ｄ２４〜Ｄ３１、Ｄ３２〜Ｄ３９、Ｄ４０〜Ｄ４７、Ｄ４８〜Ｄ５５、Ｄ５６〜Ｄ６３を含むＤグループである。
【００３２】
８対１クロスバ装置１０４は、バス側接続部１０２の８つのＤグループの中から１つのＤグループを選択する。そして、選択したＤグループのうち任意のビットと９対１クロスバ装置１１０〜１４１とを接続する。
【００３３】
９対１クロスバ装置１１０には、８対１クロスバ装置１０４により選択されたＤグループの８本のデータ信号線と、バス側接続部１０２のＣ０のコマンド信号線１本が接続されている。９対１クロスバ装置１１０は、これら合計９本から１本を選択する。そして、選択した１本の信号線と送信モジュール側接続部１００のＣ０のコマンド信号線とを接続する。
【００３４】
９対１クロスバ装置１１０〜１４１は同様にバス側接続部１０２の１本のコマンド線と８本のデータ信号線のうち１本の信号線と、送信モジュール側接続部１００の１本のコマンド信号線とを接続する。９対１クロスバ装置１１０〜１４１は１ビット幅のクロスバ装置である。
【００３５】
以上のように接続されているので、９対１クロスバ装置１１０〜１４１および８対１クロスバ装置１０４の接続を制御することにより、送信モジュール側接続部１００のコマンド信号線をバス側接続部１０２のデータ信号線Ｄ−Ａ〜Ｄ−Ｈのいずれか１のＤグループと接続することができる。したがって、バス５０上のコマンド信号線に欠陥が生じた場合には、所定のＤグループを選択し、選択したＤグループの任意のビットを欠陥が生じたコマンド信号線と接続することにより、すべてのコマンドを受信モジュール４０に転送することができる。
【００３６】
さらに、Ｃ２９〜Ｃ３１と９対１クロスバ装置１３９〜１４１の間にはコマンド管理部１５０が設けられている。コマンド管理部１５０は、Ｃ２９〜Ｃ３１の信号、すなわちｄａｔａ＿ｖｌｄ信号およびｄａｔａ＿ｔａｇ信号を監視する。そして、これらの信号を適宜修正する。さらに、ｄａｔａ＿ｖｌｄ信号およびｄａｔａ＿ｔａｇ信号に基づいて、バス側接続部１０２がデータを転送するタイミングを制御する。
【００３７】
送信モジュール側接続部１００の８つのＤグループはそれぞれバッファ１６０〜１６７を介して８対８クロスバ装置１６８に接続されている。さらに、８対８クロスバ装置１６８の反対側にはバス側接続部１０２の８つのＤグループが接続されている。
【００３８】
バス５０のデータ信号線に欠陥が生じた場合には、欠陥のあるデータ信号線は利用できない。そこで、８対８クロスバ装置１６８により送信モジュール側接続部１００のＤグループを欠陥のない正常なＤグループに接続する。
【００３９】
また上述のようにコマンド信号線の欠陥を補填するためにデータ信号線が利用された場合には、デーテ転送用のデータ信号線が不足する。この場合においても、８対８クロスバ装置１６８により送信モジュール側接続部１００の不足するデータ信号線を正常なデータ信号線に接続する。これにより、すべてのデータを受信モジュール４０に送信することができる。
【００４０】
なお、データ信号線が少なくなった分、データ転送回数を増やすことによりすべてのデータを転送する。具体的には、データ長に応じて送信モジュール３０から送信された６４ビット幅のデータを８×ｎ（ｎ＝１〜７）ビット幅のデータに変換してバス５０に送出する。ここでｎはデータ送信に利用可能な８ビット単位のデータ信号線（Ｄ−Ａ〜Ｄ−Ｈ）の数である。
【００４１】
転送管理部１７０は、８対８クロスバ装置１６８を管理する。すなわち、各バッファ１６０〜１６７の接続先となるバス側接続部１０２の信号線を決定する。さらに、コマンド管理部１５０の指示にしたがい、バッファ１６０〜１６７からバス側接続部１０２にデータを送信するタイミングを制御する。
【００４２】
例えば、使用可能なバス５０側のデータ信号線が６４ビット幅未満（ｎ≦７）である場合には、送信モジュール３０から送信された６４ビットのデータを１サイクルでバス５０に送信することはできない。そこで、１サイクルで送信できないデータはバッファ１６０〜１６７に一時的に保持させ、複数サイクルかけてバス５０側に送信する。
【００４３】
欠陥検出部１８０は、バス５０の信号線に欠陥が存在するか否かを検出する。設定部１８２は、欠陥検出部１８０による検出結果に基づいて、コマンド管理部１５０および転送管理部１７０に所定の値を設定する。さらに、９対１クロスバ装置１１０〜１４１および８対１クロスバ装置１０４の設定を行う。詳細については後述する。
【００４４】
なお、本実施の形態にかかる送信制御装置１０においては、６４本のデータ線は、８ビット単位で交換可能な構成となっているが、これは構成の簡素化のためであり、１ビット単位で交換可能な構成としてもよい。すなわち、１ビットごとにバッファを設け、８対１クロスバ装置１０４に替えて、６４対１クロスバ装置を設ければよい。
【００４５】
図６に示すように、コマンド管理部１５０は、コマンド取得部１５１と、バイトカウンタテーブル１５２と、バス幅レジスタ１５３と、コマンド転送部１５４とを有している。コマンド転送部１５４は、内部レジスタ１５５を有している。
【００４６】
コマンド取得部１５１は、送信モジュール３０により出力され、Ｃ２９〜Ｃ３１を流れるｄａｔａ＿ｖｌｄ信号およびｄａｔａ＿ｔａｇ信号を監視する。そして、新しいコマンドを受信した際にバイトカウンタテーブル１５２にデータ送信の新しいエントリを登録する。さらに、コマンド取得部１５１は、新しいエントリを登録している間、転送管理部１７０にｉｎ＿ｖｌｄ信号を送信する。
【００４７】
バイトカウンタテーブル１５２は、ｖｌｄフィールドと、ｄａｔａ＿ｔａｇフィールドと、ｂｙｔｅ  ｃｏｕｎｔｅｒフィールドとを有している。ｖｌｄフィールドの値は、対象となるエントリが処理中である場合に０から１に切り替わる。ｄａｔａ＿ｔａｇフィールドには、データのタグＩＤが格納される。ｂｙｔｅ  ｃｏｕｎｔｅｒフィールドには、データサイズが格納される。
【００４８】
バス幅レジスタ１５３には、バースト転送のバス幅（転送幅）が保持されている。なお、バス幅は、バス５０の欠陥信号線の数に従い予め設定されている。バス幅の設定方法については後述する。
【００４９】
コマンド転送部１５４は、送信モジュール３０からバス５０に転送されるデータを監視し、１サイクルごとに内部レジスタ１５５の値をバス幅レジスタ１５３に格納されているバス幅ずつインクリメントする。そして、バイトカウンタテーブル１５２および内部レジスタ１５５を参照して、転送管理部１７０にデータ転送を指示する。
【００５０】
図７に示すように、転送管理部１７０は、配列管理部１７１と、シフトレジスタアレイ１７２と、バッファ入力管理部１７３と、バッファ出力管理部１７４とを有している。配列管理部１７１は、コマンド管理部１５０からｏｕｔ＿ｖｌｄ信号を受信すると、シフトレジスタアレイ１７２を参照し、所定のバッファとバス側接続部１０２の所定のＤグループの接続を８対８クロスバ装置１６８に指示する。シフトレジスタアレイ１７２は、Ｄ−ＡからＤ−Ｈに対応する８つのシフトレジスタを有している。各シフトレジスタには、バッファ番号が予め格納されている。シフトレジスタアレイ１７２に格納されているバッファ番号の設定方法については後述する。
【００５１】
図７に示す例においては、シフトレジスタのＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｇそれぞれの先頭エントリには、バッファ番号１〜４が格納されている。これは、バス５０側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｇのデータ信号線をそれぞれバッファ番号１〜４のバッファ１６０〜１６３と接続することを示している。なお、バッファ１６０〜１６７のバッファ番号は順に１〜８である。８対８クロスバ装置１６８は、この指示にしたがいバッファとデータ線との接続を行う。なお、シフトレジスタ中「−」は、いずれのバッファとも接続しないことを示している。
【００５２】
シフトレジスタアレイ１７２は、先頭のエントリ（図中最も左側のエントリ）から順に配列管理部１７１によって読み出される。シフトレジスタアレイ１７２は巡回シフトレジスタである。すなわち、先頭エントリが読み出されると、このエントリは最後尾（図中最も右側のエントリ）に移動し、残りのエントリはすべて左に１だけシフトする。本実施の形態においては８つのエントリが設けられているので、８サイクルで元の状態に戻る。
【００５３】
例えば、図７に示す状態では、まず先頭エントリが読み出され、配列管理部１７１は、Ｄ−Ｂとバッファ１、Ｄ−Ｃとバッファ２、Ｄ−Ｅとバッファ３、Ｄ−Ｇとバッファ４を接続することを示す配置情報を８対８クロスバ装置１６８に送信する。次のサイクルにおいては、左に１だけシフトし、図７の左から２番目のエントリが先頭エントリになる。したがって、配列管理部１７１は、Ｄ−Ｂとバッファ５、Ｄ−Ｃとバッファ６、Ｄ−Ｅとバッファ７、Ｄ−Ｇとバッファ８を接続することを示す配置情報を８対８クロスバ装置１６８に送信する。
【００５４】
バッファ入力管理部１７３は、コマンド管理部１５０から出力されたｉｎ＿ｖｌｄ信号の指示に従いバッファ１６０〜１６７にデータを格納する。バッファ出力管理部１７４は、配列管理部１７１の指示に従いバッファ１６０〜１６７のデータを８対８クロスバ装置１６８に出力する。
【００５５】
送信制御装置１０がバス５０の配線欠陥を回避してデータ転送を行うための処理としては、大きく分けて「システム出荷前のテストおよびコンフィグレーションフェーズ」と「装置動作時の動的信号線切り替えフェーズ」の２つのフェーズがある。
【００５６】
「システム出荷前のテストおよびコンフィグレーションフェース」においては、欠陥信号線の検出処理が行われる。この処理により、コマンド転送部１５４のバス幅およびシフトレジスタアレイ１７２の値が設定される。具体的には、図８に示すように、欠陥信号線検出処理においては、欠陥検出部１８０は、まずバス５０のコマンド信号線の欠陥を検出する。例えば、ＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）などにより検出を行う。
【００５７】
コマンド信号線に欠陥が検出されなかった場合には（ステップＳ１００，Ｎｏ）、設定部１８２は、９対１クロスバ装置１１０〜１４１に接続されているバス側接続部１０２の１本のコマンド信号線と８本のデータ信号線のうち１本のコマンド信号線と送信モジュール側接続部１００の対応するコマンド線とを接続するよう９対１クロスバ装置１１０〜１４１を設定する（ステップＳ１０２）。これにより、送信モジュール側接続部１００のＣ０〜Ｃ３１はそれぞれバス側接続部１０２のＣ０〜Ｃ３１と接続される。
【００５８】
一方、コマンド信号線に欠陥が検出された場合には（ステップＳ１００，Ｙｅｓ）、設定部１８２は、欠陥のあるコマンド信号線と接続している９対１クロスバ装置１１０〜１４１の９本の信号線のうち所定の１本のデータ信号線と送信モジュール側接続部１００の対応するコマンド信号線とを接続するよう９対１クロスバ装置１１０〜１４１を設定する（ステップＳ１０４）。これにより、欠陥信号線に対応する送信モジュール側接続部１００のコマンド信号線と９対１クロスバ装置１１０〜１４１に接続されているデータ信号線とが接続される。
【００５９】
さらに、データ信号線に欠陥がなく、かつ不足がない場合には（ステップＳ１１０，Ｎｏ）、送信モジュール側接続部１００のＤ−Ａ〜Ｄ−Ｈをそれぞれバス側接続部１０２のＤ−Ａ〜Ｄ−Ｈに接続する（ステップＳ１１２）。またバス幅レジスタ１５３には８を格納する。なお、データ信号線に不足がない場合とは、バス５０のコマンド信号線に欠陥が発見されず、対応する受信モジュール４０のコマンド信号線がバス５０の任意のデータ信号線に接続されなかった場合のことである。
【００６０】
一方、データ信号線に欠陥がある場合、またはデータ信号線に不足がある場合には（ステップＳ１１０，Ｙｅｓ）、設定部１８２は、利用可能なデータ信号線を使用するよう、コマンド管理部１５０のバス幅レジスタ１５３および転送管理部１７０のシフトレジスタアレイ１７２の値を設定する（ステップＳ１１４）。具体的には、バス幅レジスタ１５３には、利用可能なＤグループの数を格納する。シフトレジスタアレイ１７２には、利用可能なデータ信号線に接続するバッファ番号をサイクルごとに格納する。
【００６１】
Ｃ１、Ｃ２６、Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が発生した場合の欠陥信号線検出処理について具体的に説明する。この場合（ステップＳ１００，Ｙｅｓ）、ステップＳ１０４においては、コマンド信号線の欠陥の本数をカバーできる分の、欠陥のない信号線を有するＤグループが選択されるように、８対１クロスバ装置１０４を設定する。さらに、Ｄグループに含まれる信号線のうち欠陥のないものを順次、欠陥のある信号線と交換すべく、９対１クロスバ装置１１０〜１４１を設定する。
【００６２】
具体的には、８対１クロスバ装置１０４において８つのＤグループのうち任意のＤグループを選択する。本実施の形態においては、Ｄ−Ｅ（Ｄ３２〜Ｄ３９）がコマンド信号線を補填するためのＤグループとして選択される。
【００６３】
なお、欠陥信号線を補填するためにＤグループを利用すると、この分データ転送のサイクル数を増加させる必要がある。そこで、好ましくは、欠陥信号線を補填するために利用するＤグループの数ができるだけ少なくなるようにＤグループを選択するのが好ましい。具体的には、欠陥信号線を含むＤグループを選択する。
【００６４】
さらに受信モジュール４０側のＣ１と接続されている９対１クロスバ装置１１１をバス５０側のＣ１ではなくバス５０側のＤ３２と接続されるように設定する。モジュール側Ｃ２６と接続されている９対１クロスバ装置１３６をバス５０側のＤ３３と接続されるように設定する。バス５０のその他のコマンド信号線Ｃ０，Ｃ２〜Ｃ２５，Ｃ２７〜Ｃ３１は従来通り送信モジュール３０の対応するコマンド信号線に接続する。これらのコマンド信号線に対応する９対１クロスバ装置１１０，１１２〜１３５，１３７〜１４１においては、それぞれコマンド信号線同士を接続する。
【００６５】
さらに、データ信号線にも欠陥が存在するので、バス５０側のＤグループのうち欠陥のないＤグループのみを用いてデータ送受信を行うべく、バス５０側のＤグループと送信モジュール３０側のＤグループとを接続するように、コマンド管理部１５０のバス幅レジスタ１５３および転送管理部１７０のシフトレジスタアレイ１７２の値を設定する（ステップＳ１１４）。
【００６６】
Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が存在するので、これらの信号線を含むＤグループであるＤ−Ａ（Ｄ０〜Ｄ７）、Ｄ−Ｄ（Ｄ２４〜Ｄ３１）、Ｄ−Ｅ（Ｄ３２〜Ｄ３９）およびＤ−Ｇ（Ｄ４０〜Ｄ４７）はデータ転送のために利用することができない。そこで、これ以外のＤグループであるＤ−Ｂ（Ｄ８〜Ｄ１５）、Ｄ−Ｃ（Ｄ１６〜Ｄ２３）、Ｄ−Ｆ（Ｄ４０〜Ｄ４７）およびＤ−Ｈ（Ｄ５６〜Ｄ６３）の３２ビットのデータ信号線を利用してデータ転送を行う。
【００６７】
図９には、Ｃ１、Ｃ２６、Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が発生した場合の、各論理信号と物理信号線の対応関係を示している。図９において、通常の物理信号線とは、すべての信号線に欠陥が発生していない場合に、各論理信号に対応する物理信号線のことである。変更後の物理信号線とは、Ｃ１、Ｃ２６、Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が発生している場合の、各論理信号に対応する物理信号線のことである。
【００６８】
すべての信号線に欠陥が発生していない場合にデータ転送に利用可能なビット幅は６４であるのに対し、Ｃ１、Ｃ２６、Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が発生した場合には、データ転送に利用可能なビット幅は３２ビットとなる。そこで、本来１サイクルで転送可能な６４ビットのデータを３２ビットずつ２サイクルで転送することとする。
【００６９】
すなわち、ステップＳ１１４において、設定部１８２は、コマンド管理部１５０のバス幅レジスタ１５３に利用可能なＤグループの数である４をセットする。さらに、設定部１８２は、転送管理部１７０のシフトレジスタアレイ１７２においては、データ転送に利用できないＤグループのシフトレジスタには「−」をセットする。そして、データ転送に利用可能なＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｇの先頭にそれぞれ、バッファ番号１〜４をセットし、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｇの次のエントリにそれぞれバッファ番号５〜８をセットする。同様に、各シフトレジスタの８つのエントリにバッファ番号を登録する。
【００７０】
以上のようにコマンド管理部１５０のバス幅レジスタ１５３および転送管理部１７０のシフトレジスタアレイ１７２をセットすることにより、欠陥信号線以外の信号線を利用したデータ転送が可能となる。
【００７１】
なお、従来通りＤ０〜Ｄ６３の６４ビットのすべてのデータ信号線をデータ転送に利用可能な場合には（ステップＳ１００，Ｎｏ）、ステップＳ１０２において、設定部１８２は、従来通りバス５０コマンド信号線Ｃ０〜Ｃ３１と送信モジュール３０のコマンド信号線Ｃ０〜Ｃ３１のそれぞれが接続されるように、各９対１クロスバ装置１１０〜１４１を設定する。
【００７２】
また、ステップＳ１１２においては、バス５０のＤ０〜Ｄ６３のデータ信号線をそれぞれ受信モジュール４０側のＤ０〜Ｄ６４のデータ信号線に接続するようレジスタ値を設定する。具体的には、設定部１８２は、コマンド管理部１５０のバス幅レジスタ１５３に８をセットする。さらに、設定部１８２は、転送管理部１７０のシフトレジスタアレイ１７２のＤ−Ａのすべてのエントリに１をセットし、Ｄ−Ｂのすべてのエントリに２をセットする。同様に、Ｄ−Ｃ〜Ｄ−Ｈのエントリにそれぞれ３〜８をセットする。
【００７３】
以上説明した欠陥信号線検出処理は、製品の出荷前に行う。これにより、出荷時にはコマンド管理部１５０のバス幅レジスタ１５３および転送管理部１７０のシフトレジスタアレイ１７２に欠陥信号に応じた値が予め設定されている。
【００７４】
また、他の例としては、欠陥信号検出処理を定期的に行うこととしてもよい。この場合には、欠陥信号処理を行う毎にバス幅レジスタ１５３およびシフトレジスタアレイ１７２の値を更新する。
【００７５】
「装置動作時の動的信号線切り替えフェーズ」においては、送信モジュール３０から送信された信号の受信処理が行われる。受信処理においては、図１０に示すようにコマンド取得部１５１は、送信モジュール３０側のＣ２９、Ｃ３０、Ｃ３１のコマンド信号線のｄａｔａ＿ｖｌｄ信号とｄａｔａ＿ｔａｇ信号を監視する。具体的には、コマンド取得部１５１は、送信モジュール３０から送信されたｄａｔａ＿ｖｌｄ信号が０から１に切り替わった場合に新しいバースト転送が開始されたと判断する。
【００７６】
また、ｄａｔａ＿ｖｌｄ信号が１のままでもＣ３０とＣ３１で示される２ビット値であるｄａｔａ＿ｔａｇ信号が切り替わった場合も、新しいバースト転送が開始されたと判断する。複数のデータのバースト転送が並行して行われており、所定のデータのバースト転送中の他のデータのバースト転送が開始された場合、所定のデータのバースト転送開始時にｄａｔａ＿ｖｌｄ信号が既に０から１に切り替わっている。このため、他のデータのバースト転送の開始はとｄａｔａ＿ｔａｇ信号の切り替わりにより判断する。
【００７７】
バースト転送が開始されると（ステップＳ２００，Ｙｅｓ）、バイトカウンタテーブル１５２に新たなデータを登録する（ステップＳ２０２）。具体的には、バイトカウンタテーブル１５２の先頭のエントリ（図６に示す最上段のエントリ）から最終エントリ（図６に示す最下段のエントリ）の順にｖｌｄフィールドが０であるエントリに順にデータを登録する。なお、直前のエントリが最終エントリである場合には、先頭エントリに新たなデータを登録する。さらに、ｔａｇフィールドには、ｄａｔａ＿ｔａｇ信号の値を登録する（ステップＳ２０４）。次に、対応するエントリのｂｙｔｅ  ｃｏｕｎｔｅｒ値を０に初期化する（ステップＳ２０６）。
【００７８】
ｄａｔａ＿ｖｌｄ信号が１であり、かつｄａｔａ＿ｔａｇ信号が同じ値を示している期間中は、同じデータのバースト転送中である。そこで、コマンド取得部１５１は、この間は、対応するエントリのｂｙｔｅ  ｃｏｕｎｔｅｒ値を毎サイクル８ずつインクリメントする（ステップＳ２０６）。さらに、この間のサイクルにおいては、転送管理部１７０にｉｎ＿ｖｌｄ信号を送出する。すなわち１をアサートする（ステップＳ２０８）。なお、転送管理部１７０のバッファ入力管理部１７３は、ｉｎ＿ｖｌｄ信号を受信すると、対応するデータをバッファ１６０〜１６７に格納する。
【００７９】
次に、ｄａｔａ＿ｖｌｄ信号が１から０に切り替わった場合には、対応するデータのバースト転送が終了したと判断し（ステップＳ２１０，Ｙｅｓ）、このエントリのｂｙｔｅ  ｃｏｕｎｔｅｒへのインクリメントを終了し、次のバースト転送の開始まで待機する（ステップＳ２００）。
【００８０】
なお、ｄａｔａ＿ｖｌｄ信号が１のままであっても、ｄａｔａ＿ｔａｇ信号の値が変更された場合は、エントリのｂｙｔｅ  ｃｏｕｎｔｅｒへのインクリメントを終了する。複数のデータのバースト転送が連続して行われており、所定のデータのバースト転送が終了したものの、他のデータに対するバースト転送がまだ終了していない場合には、ｄａｔａ＿ｖｌｄ信号は１から０に切り替わらない。ただしこの場合には、ｄａｔａ＿ｔａｇ信号の値は所定のデータに対するものから他のデータに対するものに切り替わる。そこで、ｄａｔａ＿ｔａｇ信号の変更により所定のデータのバースト転送の終了と判断する。
【００８１】
一方、バースト転送が終了しない場合には（ステップＳ２１０，Ｎｏ）、次のサイクルに進み（ステップ２１２）、ステップＳ２０６に戻る。
【００８２】
バースト転送のバースト幅は６４ビットである。したがって、例えば１２８ビットのデータを転送する場合には、２サイクル要する。そこで、１２８ビットのデータを転送する場合には、ｂｙｔｅ  ｃｏｕｎｔｅｒには、２×８＝１６がセットされる。さらに、バースト転送が行われている間は、ステップＳ２０６からステップＳ２１０を繰り返し、転送管理部１７０にｉｎ＿ｖｌｄ信号を送信し続ける。
【００８３】
さらに「装置動作時の動的信号線切り替えフェーズ」においては、送信モジュール３０から受信したデータをバス５０に送信する処理が行われる。この処理においては、図１１に示すようにコマンド転送部１５４は、バイトカウンタテーブル１５２の先頭エントリのｖｌｄフィールドが０から１に切り替わった場合に（ステップＳ２２０，Ｙｅｓ）、対応するｄａｔａ＿ｔａｇ信号に示されるタグＩＤで示されるデータのバス５０への送出の開始する。
【００８４】
具体的には、内部レジスタ１５５の値を０にリセットする（ステップＳ２２２）。これ以降、毎サイクルバス幅レジスタ１５３に格納されている値だけ内部レジスタ１５５の値をインクリメントする（ステップＳ２２４）。この間ｏｕｔ＿ｖｌｄ信号を転送管理部１７０に出力する。すなわち、１をアサートする（ステップＳ２２６）。さらに、Ｃ２９に１を出力し、Ｃ３０、Ｃ３１にはタグＩＤを出力する（ステップＳ２２８）。なお、Ｃ２９に１を出力し、Ｃ３０、Ｃ３１にタグＩＤを出力するタイミングは、８対８クロスバ装置１６８からバス側接続部１０２にデータが出力されるタイミングと同時になるように制御する。
【００８５】
以上の処理を内部レジスタ１５５の値がバイトカウンタテーブル１５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値以上になるまで継続する。すなわち、内部レジスタ１５５の値がバイトカウンタテーブル１５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値未満である場合には（ステップＳ２３０，Ｎｏ）、タグＩＤで識別されるデータのバス５０へのデータ転送が完了していないので、次のサイクルに進み（ステップＳ２３２）、再び内部レジスタ１５５の値をバス幅レジスタ１５３の値だけインクリメントし（ステップＳ２２４）、ステップＳ２２６へ進む。
【００８６】
内部レジスタ１５５の値がバイトカウンタテーブル１５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値以上になると（ステップＳ２３０，Ｙｅｓ）、タグＩＤで識別されるデータのバス５０へのデータ転送が完了しているので、転送管理部１７０に対してｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号を出力する。すなわち、１をアサートする。
【００８７】
同時に内部レジスタ１５５の値からバイトカウンタテーブル１５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値を引いた値をｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号として転送管理部１７０に出力する（ステップＳ２３４）。ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号は、バス幅レジスタ１５３の値、すなわちデータ転送に利用可能なデータ幅（バイト値）のうち最後の何バイトが無効であるか示すものである。例えば、４８ビットのデータ幅に対し３２ビットのデータを転送する場合には、最後の８ビットは無効となり、８ビットを示すｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号値として１が出力される。
【００８８】
この処理と同時に、バイトカウンタテーブル１５２のうち現在処理対象となっているエントリのｖｌｄフィールドを０としてインクリメント作業を停止する（ステップＳ２３６）。さらに、バイトカウンタテーブル１５２の先頭エントリを次のエントリに移動する（ステップＳ２３８）。
【００８９】
ここで次のエントリとは、直前に転送したデータの次に送信モジュール３０から受信したデータに対応するエントリである。直前に転送したデータのエントリがテーブルの最後のエントリであった場合は、次のエントリは先頭のエントリとなる。以降コマンド転送部１５４は、次のエントリのｖｌｄフィールドが１であった場合、そのタグＩＤで示されるデータをバス５０へ転送する作業を上記と同手順で行う。
【００９０】
「装置動作時の動的信号線切り替えフェーズ」においては、さらに転送管理部１７０による送信処理が行われる。送信処理においては、コマンド管理部１５０からの指示にしたがい毎サイクルバッファ１６０〜１６７のうち所定のバッファからデータを出力する。
【００９１】
具体的には、図１２に示すように配列管理部１７１がコマンド管理部１５０からｏｕｔ＿ｖｌｄ信号を受信すると（ステップＳ３００，Ｙｅｓ）、送信処理が開始する。次に、ｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号が０であるか１であるかを確認する。なお、データ転送が終了すると、ｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号は、０から１に切り替る。
【００９２】
ｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号が０である場合、すなわちデータ転送中である場合には（ステップＳ３０２，Ｎｏ）、シフトレジスタアレイ１７２の８つの先頭エントリを読み出す（ステップＳ３０４）。次に、読み出した先頭エントリの値を示す配置情報を８対８クロスバ装置１６８に送信する（ステップＳ３０６）。さらに、配置情報に示されるバッファ１６０〜１６７に対し読み出し制御を行うべく、バッファ出力管理部１７４に制御信号を送信する（ステップＳ３０８）。
【００９３】
なお、８対８クロスバ装置１６８は、配置情報を受信すると、この配置情報にしたがい各バッファ１６０〜１６７とバス５０側のＤグループとを接続する。次に、先頭エントリを最後尾に移動し、残りのエントリを左に（先頭側に）１だけシフトする（ステップＳ３１０）。そして、再びステップＳ３０２へ戻る。
【００９４】
このように、バス５０のデータ信号線やコマンド信号線に欠陥が生じた場合であっても、バス５０のデータ信号線のうちデータ転送に利用可能な信号線のみを利用してデータ転送を行うことができる。
【００９５】
一方、ｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号が１である場合、すなわちデータ転送が終了した場合には（ステップＳ３０２，Ｙｅｓ）、シフトレジスタアレイ１７２の８つの先頭エントリを読み出す（ステップＳ３２０）。次に、ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号の値を確認する。
【００９６】
ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号が０以外である場合には（ステップＳ３２２，Ｎｏ）、ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号の値に基づいて先頭エントリの値をマスクする。すなわち、バッファ番号を「−」に変更し、無効とする。具体的には、Ｄ−ＨからＤ−Ａの順に先頭エントリの値が「−」か否かを確認していく。そして、「−」以外の値であった場合には、これを「−」に変更する。「−」以外の値を「−」に変更する処理を、ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ値が示す回数分だけ実施する。そして、マスク後の先頭エントリの値を示す配置情報を８対８クロスバ装置１６８に送信する（ステップＳ３２４）。
【００９７】
一方、ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号が０である場合には（ステップＳ３２２，Ｙｅｓ）、先頭エントリを示す配置情報を８対８クロスバ装置１６８に送信する（ステップＳ３２６）。
【００９８】
次に、配置情報に示されるバッファ１６０〜１６７に対し読み出し制御を行うべく、バッファ出力管理部１７４に制御信号を送信する（ステップＳ３２８）。次に、配列管理部１７１は、先頭エントリを最後尾に移動し、残りのエントリを左に１だけシフトする（ステップＳ３３０）。
【００９９】
次に、配列管理部１７１は、シフトレジスタアレイ１７２をリセットする（ステップＳ３３２）。具体的には、配列管理部１７１は、図示せぬ３ビット飽和カウンタを有しており、０を初期値として３ビット飽和カウンタにてｏｕｔ＿ｖｌｄ信号の回数をカウントしていく。そして、ｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号を受信した場合に、カウンタ値が再び０となるまでシフトレジスタアレイ１７２を左に１ずつシフトする。なお、先頭のエントリは、最後尾に移動する。シフトレジスタアレイ１７２のリセット後は、ステップＳ３００において再びｏｕｔ＿ｖｌｄ信号を受信するまで待機する。
【０１００】
以上のように、データ転送のタイミングを監視しつつ、利用可能なデータ信号線のみを利用してバースト転送を行うことにより、バス５０に欠陥が発生している場合であっても、確実にコマンドおよびデータを送信することができる。
【０１０１】
Ｃ１、Ｃ２６、Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が発生し、図７に示すバッファ番号がシフトレジスタアレイ１７２にセットされている場合に、１２８ビットのデータを転送する場合について具体的に説明する。この場合には、配列管理部１７１は、ｏｕｔ＿ｖｌｄ信号を受信すると（ステップＳ３００，Ｙｅｓ）、シフトレジスタアレイ１７２の先頭のエントリを読み出す（ステップＳ３０４）。そして、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈとバッファ番号１〜４とを対応付けた配置情報を８対８クロスバ装置１６８に送信する（ステップＳ３０６）。
【０１０２】
８対８クロスバ装置１６８は、配置情報に基づいて、バス側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈそれぞれをバッファ番号１〜４で識別されるバッファ１６０〜１６３と接続する。なお、このときバッファ１６０〜１６７には、バッファ入力管理部１７３の指示により１２８ビットのデータが格納されている。バッファ出力管理部１７４は、このうち計３２ビット分のデータを１サイクルでバス５０に送信する。
【０１０３】
なお、シフトレジスタアレイ１７２においては、エントリが左に１だけシフトする（ステップＳ３１０）。これにより、先頭のエントリは最後尾に移動し、図７の左から２番目のエントリが先頭エントリとなる。
【０１０４】
次に、再びステップＳ３０２に戻り、シフトレジスタアレイ１７２の先頭エントリを読み出す（ステップＳ３０４）。そして、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈとバッファ番号５〜８とを対応付けた配置情報を８対８クロスバ装置１６８に送信する（ステップＳ３０６）。
【０１０５】
８対８クロスバ装置１６８は、配置情報に基づいて、バス側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈそれぞれをバッファ番号５〜８で識別されるバッファ１６０〜１６３と接続する。そして、シフトレジスタアレイ１７２においては、エントリが左に１だけシフトする（ステップＳ３０８）。これにより、この時点で先頭のエントリ（図７における左から２番目のエントリ）は最後尾に移動し、図７の左から３番目のエントリが先頭エントリとなる。
【０１０６】
再びステップＳ３０２に戻り、フトレジスタアレイ１７２の先頭エントリを読み出す（ステップＳ３０４）。そして、そして、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈとバッファ番号１〜４とを対応付けた配置情報を８対８クロスバ装置１６８に送信し（ステップＳ３０６）、バス側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈそれぞれをバッファ番号１〜４で識別されるバッファ１６０〜１６３と接続し、バッファ番号１〜４に格納されたデータをバス５０に送信する。さらに、先頭のエントリを最後尾に移動し、残りのエントリを左に１ずつシフトする。これにより、この時点で先頭のエントリ（図７における左から３番目のエントリ）は最後尾に移動し、図７の左から４番目のエントリが先頭エントリとなる。
【０１０７】
次のサイクルは、最終サイクルであるので、配列管理部１７１は、ｏｕｔ＿ｖｌｄ信号とともにｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号とｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号を受信する。この場合ｏｕｔ＿ｌａｓｔ＿ｍａｓｋ信号は０である。
【０１０８】
次に、シフトレジスタアレイ１７２の先頭エントリを読み出す（ステップＳ３１０）。そして、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈとバッファ番号５〜８とを対応付けた配置情報を８対８クロスバ装置１６８に送信する（ステップＳ３１２，Ｙｅｓ、ステップＳ３１６）。
【０１０９】
８対８クロスバ装置１６８は、配置情報に基づいて、バス側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈそれぞれをバッファ番号５〜８で識別されるバッファ１６４〜１６７と接続する。そして、バッファ出力管理部１７４は、計３２ビット分のデータを１サイクルでバス５０に送信する。このように、通常１サイクルで転送するデータを２分割し、２サイクルで転送することにより、すべてのデータを転送する。
【０１１０】
なお、シフトレジスタアレイ１７２においては、エントリが左に１だけシフトする（ステップＳ３１８）。これにより、先頭のエントリは最後尾に移動し、図７の左から５番目のエントリが先頭エントリとなる。以上の処理により１２８ビットのデータの転送が完了する。
【０１１１】
次に、配列管理部１７１は、シフトレジスタアレイ１７２をリセットする（ステップＳ３２０）。この場合４つ左にシフトしているので、４つ左にシフトしてシフトレジスタアレイ１７２を元の状態に戻す。
【０１１２】
以上のように、バス５０の欠陥にしたがいバス幅レジスタ１５３およびシフトレジスタアレイ１７２に設定された値に基づいて、コマンド管理部１５０および転送管理部１７０が動作することにより、図１３に示すように、信号線に欠陥のない通常のバス５０を想定して送信モジュール３０から送信された６４ビット×２サイクルのデータは、送信制御装置１０において３２ビット×４サイクルのデータとしてバス５０に送出される。このようにバースト長を長くすることにより、欠陥の生じた信号線以外の信号線を利用して確実にデータを受信モジュール４０に送信することができる。
【０１１３】
また、図１４に示すように、ｃｏｍｍａｎｄフェーズからｄａｔａフェーズまでのバスの動作においてもバースト長が４サイクルと通常の場合の２倍になっている。
【０１１４】
さらに、本実施の形態においては、欠陥が生じた信号線の接続先として、コマンド信号線を選択せずに、バースト転送可能なデータ信号線のみを選択することとした。これにより、コマンド信号は、遅れることなく所定のタイミングで転送することができる。
【０１１５】
図１５に示すように、受信制御装置２０は、受信モジュール側接続部２００と、バス側接続部２０２と、８対１クロスバ装置２０４と、９対１クロスバ装置２１０〜２４１と、コマンド管理部２５０と、バッファ２６０〜２６７と、８対８クロスバ装置２６８と、転送管理部２７０と、欠陥検出部２８０と、レジスタ設定部２８２とを備えている。受信制御装置２０の構成および動作は送信制御装置１０の構成および動作とほぼ同様である。以下、異なる点について説明する。
【０１１６】
受信モジュール側接続部２００は、受信モジュール４０に接続している。バス側接続部２０２はバス５０に接続している。コマンド管理部２５０は、バス５０側のＣ２９、Ｃ３０、Ｃ３１と接続されている９対１クロスバ装置２３９〜２４１から出力される信号を監視する。そして、これらの信号を適宜修正する。さらに、ｄａｔａ＿ｖｌｄ信号およびｄａｔａ＿ｔａｇ信号に基づいて、バス側接続部２０２がデータを受信するタイミングを制御する。
【０１１７】
転送管理部２７０は、８対８クロスバ装置２６８を管理する。すなわち、各バッファ２６０〜２６７の接続先となるバス側接続部２０２の信号線を決定する。さらに、コマンド管理部２５０の指示にしたがい、バッファ２６０〜２６７から受信モジュール側接続部２００にデータを送信するタイミングを制御する。
【０１１８】
図１６に示すようにコマンド管理部２５０は、コマンド取得部２５１と、バイトカウンタテーブル２５２と、バス幅レジスタ２５３と、コマンド転送部２５４とを有している。コマンド転送部２５４は、内部レジスタ２５５を有している。
【０１１９】
コマンド取得部２５１は、バス５０を介して受信したＣ２９〜Ｃ３１を流れるｄａｔａ＿ｖｌｄ信号およびｄａｔａ＿ｔａｇを監視する。そして、新しいコマンドを受信した際にバイトカウンタテーブル２５２にデータ送信の新しいエントリを登録する。さらに、コマンド取得部２５１は、新しいエントリを登録している間、転送管理部２７０にｉｎ＿ｖｌｄ信号を送信する。
【０１２０】
バイトカウンタテーブル２５２は、ｖｌｄフィールドと、ｆｉｎｉｓｈフィールドと、ｄａｔａ＿ｔａｇフィールドと、ｂｙｔｅ  ｃｏｕｎｔｅｒフィールドとを有している。ｖｌｄフィールドの値は、対象となるエントリが処理中である場合に０から１に切り替わる。ｆｉｎｉｓｈフィールドの値は、対象となるエントリの処理が終了した場合に０から１に切り替わる。ｄａｔａ＿ｔａｇフィールドには、データのタグＩＤが格納される。ｂｙｔｅ  ｃｏｕｎｔｅｒフィールドには、データサイズが格納される。
【０１２１】
バス幅レジスタ２５３には、バースト転送のバス幅が保持されている。なお、バス幅は、バス５０の欠陥信号線の数に従い予め設定されている。バス幅の設定方法については後述する。
【０１２２】
コマンド転送部２５４は、バイトカウンタテーブル２５２を監視し、１サイクルごとに内部レジスタ２５５の値をバス幅レジスタ２５３に格納されているバス幅ずつインクリメントする。そして、バイトカウンタテーブル２５２および内部レジスタ２５５を参照して、転送管理部２７０にデータ転送を指示する。
【０１２３】
図１７に示すように、転送管理部２７０は、配列管理部２７１と、シフトレジスタアレイ２７２と、バッファ入力管理部２７３と、バッファ出力管理部２７４とを有している。配列管理部２７１は、コマンド管理部２５０からｉｎ＿ｖｌｄ信号を受信すると、シフトレジスタアレイ２７２を参照し、所定のバッファとバス側接続部２０２の所定のＤグループの接続を８対８クロスバ装置２６８に指示する。シフトレジスタアレイ２７２は、Ｄ−ＡからＤ−Ｈに対応する８つのシフトレジスタを有している。各シフトレジスタには、バッファ番号が予め格納されている。
【０１２４】
「装置動作時の動的信号線切り替えフェーズ」においては、バス５０を介して送信モジュール３０から送信された信号の受信処理が行われる。受信処理においては、図１８に示すように、バースト転送が開始されると（ステップＳ４００，Ｙｅｓ）、バイトカウンタテーブル２５２に新たなデータを登録する（ステップＳ４０２）。ｔａｇフィールドには、ｄａｔａ＿ｔａｇ信号の値を登録する（ステップＳ４０４）。次に、対応するエントリのｂｙｔｅ  ｃｏｕｎｔｅｒ値を０に初期化する（ステップＳ４０６）。
【０１２５】
ｄａｔａ＿ｖｌｄ信号が１であり、かつｄａｔａ＿ｔａｇ信号が同じ値を示している期間中は、同じデータのバースト転送中である。そこで、この間は、コマンド取得部２５１は、対応するエントリのｂｙｔｅ  ｃｏｕｎｔｅｒ値を毎サイクル８ずつインクリメントする（ステップＳ４０６）。さらに、この間のサイクルにおいては、転送管理部２７０にｉｎ＿ｖｌｄ信号を送出する。すなわち１をアサートする（ステップＳ４０８）。
【０１２６】
なお、転送管理部２７０のバッファ入力管理部２７３は、ｉｎ＿ｖｌｄ信号を受信すると、対応するデータをバッファ２６０〜２６７に格納する。
【０１２７】
次に、ｄａｔａ＿ｖｌｄ信号が１から０に切り替わった場合には、対応するデータのバースト転送が終了したと判断し（ステップＳ４１０，Ｙｅｓ）、このエントリのｂｙｔｅ  ｃｏｕｎｔｅｒへのインクリメントを終了する。なお、実施の形態１において説明したように、ｄａｔａ＿ｔａｇ信号が所定のデータに対するものから他のデータに対するものに変化した場合にも、バースト転送が終了したと判断する。次に、バイトカウンタテーブル２５２のｆｉｎｉｓｈフィールドに１をセットする（ステップＳ４２０）。次に、転送管理部２７０にｉｎ＿ｌａｓｔ＿ｆｌｇ信号を送信する。すなわち１をアサートする。（ステップＳ４２２）。そして、ステップＳ４００に戻り、次のバースト転送の開始まで待機する（ステップＳ４００）。
【０１２８】
一方、バースト転送が終了しない場合には（ステップＳ４１０，Ｎｏ）、次のサイクルに進み（ステップＳ４１２）、ステップＳ４０６に戻る。
【０１２９】
さらに「装置動作時の動的信号線切り替えフェーズ」においては、バス５０から受信したデータを受信モジュール４０に送信する処理を行う。この処理においては、図１９に示すようにコマンド転送部２５４は、バイトカウンタテーブル２５２の先頭エントリのｖｌｄフィールドが０から１に切り替わり、かつ先頭エントリのｆｉｎｉｓｈフィールドが１である場合には（ステップＳ４２０，Ｙｅｓ）、対応するｄａｔａ＿ｔａｇ信号に示されるタグＩＤで示されるデータの受信モジュール４０への送出を開始する。
【０１３０】
具体的には、内部レジスタ２５５の値を０にリセットする（ステップＳ４２２）。これ以降、毎サイクルバス幅レジスタ２５３に格納されている値だけ内部レジスタ２５５の値をインクリメントする（ステップＳ４２４）。この間ｏｕｔ＿ｖｌｄ信号を転送管理部２７０に出力する。すなわち、１をアサートする（ステップＳ４２６）。さらに、Ｃ２９に１を出力し、Ｃ３０、Ｃ３１にはタグＩＤを出力する（ステップＳ４２８）。なお、Ｃ２９に１を出力し、Ｃ３０、Ｃ３１にタグＩＤを出力するタイミングは、バッファ２６０〜２６７から受信モジュール側接続部２００にデータが出力されるタイミングと同時になるように制御する。
【０１３１】
以上の処理を内部レジスタ２５５の値がバイトカウンタテーブル２５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値と同じまたはそれ以上になるまで継続する。すなわち、内部レジスタ２５５の値がバイトカウンタテーブル２５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値未満である場合には（ステップＳ４３０，Ｎｏ）、タグＩＤで識別されるデータの転送が完了していないので、次のサイクルに進み（ステップＳ４３２）、再び内部レジスタ２５５の値をバス幅レジスタ２５３の値だけインクリメントし（ステップＳ４２４）、ステップＳ４２６へ進む。
【０１３２】
内部レジスタ２５５の値がバイトカウンタテーブル２５２のｂｙｔｅ  ｃｏｕｎｔｅｒ値以上になると（ステップＳ４３０，Ｙｅｓ）、タグＩＤで識別されるデータの転送が完了しているので、次のサイクルで転送管理部２７０に対するｏｕｔ＿ｌａｓｔ＿ｆｌａｇ信号出力を終了する。
【０１３３】
この処理と同時に、バイトカウンタテーブル２５２のうち現在処理対象となっているエントリのｖｌｄフィールドおよびｆｉｎｉｓｈフィールドを０としてインクリメント作業を停止する（ステップＳ４３６）。さらに、バイトカウンタテーブル２５２の先頭エントリを次のエントリに移動する（ステップＳ４３８）。
【０１３４】
ここで次のエントリとは、直前に転送したデータの次にバス５０から受信したデータに対応するエントリである。直前に転送したデータのエントリがテーブルの最後のエントリであった場合は、次のエントリは先頭のエントリとなる。以降コマンド転送部２５４は、次のエントリのｖｌｄフィールドが１であった場合、そのタグＩＤで示されるデータを受信モジュール４０へ転送する作業を上記と同手順で行う。
【０１３５】
「装置動作時の動的信号線切り替えフェーズ」においては、さらに転送管理部２７０による受信処理が行われる。受信処理においては、コマンド管理部２５０からの指示にしたがい毎サイクル８対８クロスバ装置２６８から受信したデータをバッファ２６０〜２６７のうち所定のバッファに格納する。
【０１３６】
具体的には、図２０に示すように配列管理部２７１がコマンド管理部２５０からｉｎ＿ｖｌｄ信号を受信すると（ステップＳ５００，Ｙｅｓ）、受信処理が開始する。次に、ｉｎ＿ｌａｓｔ＿ｆｌａｇ信号が０であるか１であるかを確認する。なお、データ転送が終了すると、ｉｎ＿ｌａｓｔ＿ｆｌａｇ信号は、０から１に切り替る。
【０１３７】
ｉｎ＿ｌａｓｔ＿ｆｌａｇ信号が０である場合、すなわちデータ転送中である場合には（ステップＳ５０２，Ｎｏ）、シフトレジスタアレイ２７２の８つの先頭エントリを読み出す（ステップＳ５０４）。次に、読み出した先頭エントリの値を示す配置情報を８対８クロスバ装２６８に送信する（ステップＳ５０６）。さらに、配置情報に示されるバッファ２６０〜２６７に対しデータの書き込み制御を行うべく、バッファ入力管理装置２７３に制御信号を送信する（ステップＳ５０８）。
【０１３８】
なお、８対８クロスバ装置１６８は、配置情報を受信すると、この配置情報にしたがい各バッファ２６０〜２６７とバス５０側のＤグループとを接続する。次に、先頭エントリを最後尾に移動し、残りのエントリを左に（先頭側に）１だけシフトする（ステップＳ５１０）。そして、再びステップＳ５０２へ戻る。
【０１３９】
このように、バス５０のデータ信号線やコマンド信号線に欠陥が生じた場合であっても、バス５０のデータ信号線のうちデータ転送に利用可能な信号線のみを利用してデータ転送を行うことができる。
【０１４０】
一方、ｉｎ＿ｌａｓｔ＿ｆｌａｇ信号が１である場合、すなわちデータ転送が終了した場合には（ステップＳ５０２，Ｙｅｓ）、シフトレジスタアレイ２７２の８つの先頭エントリを読み出す（ステップＳ５２０）。
【０１４１】
次に先頭エントリの値をマスクする。すなわち、バッファ番号を「−」に変更し、無効とする。具体的には、Ｄ−ＡからＤ−Ｈの順に先頭エントリの値が「８」か否かを確認していく。そして「８」を見つけたらそれ以降の先頭エントリの値を全て「−」に変更する。そして、マスク後の先頭エントリの値を示す配置情報を８対８クロスバ装置２６８に送信する（ステップＳ５２６）。
【０１４２】
次に、配置情報に示されるバッファ２６０〜２６７に対し書き込み制御を行うべく、バッファ入力管理部２７３に制御信号を送信する（ステップＳ５２８）。次に、配列管理部２７１は、先頭エントリを最後尾に移動し、残りのエントリを左に１だけシフトする（ステップＳ５３０）。
【０１４３】
次に、配列管理部２７１は、シフトレジスタアレイ２７２をリセットする（ステップＳ５３２）。具体的には、配列管理部２７１は、図示せぬ３ビット飽和カウンタを有しており、０を初期値として３ビット飽和カウンタにてｉｎ＿ｖｌｄ信号の回数をカウントしていく。そして、ｉｎ＿ｌａｓｔ＿ｆｌａｇ信号を受信した場合に、カウンタ値が再び０となるまでシフトレジスタアレイ２７２を左に１ずつシフトする。なお、先頭のエントリは、最後尾に移動する。シフトレジスタアレイ２７２のリセット後は、ステップＳ５００において再びｉｎ＿ｖｌｄ信号を受信するまで待機する。
【０１４４】
以上のように、データ転送のタイミングを監視しつつ、利用可能なデータ信号線のみを利用してバースト転送を行うことにより、バス５０に欠陥が発生している場合であっても、確実にコマンドおよびデータを送信することができる。
【０１４５】
Ｃ１、Ｃ２６、Ｄ０、Ｄ２８、Ｄ３９およびＤ５１に欠陥が発生し、図１７に示すバッファ番号がシフトレジスタアレイ２７２にセットされている場合に、１２８ビットのデータを転送する場合について具体的に説明する。この場合には、配列管理部２７１は、ｉｎ＿ｖｌｄ信号を受信すると（ステップＳ５００，Ｙｅｓ）、シフトレジスタアレイ２７２の先頭のエントリを読み出す（ステップ５３０４）。そして、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈとバッファ番号１〜４とを対応付けた配置情報を８対８クロスバ装置２６８に送信する（ステップＳ５０６）。
【０１４６】
８対８クロスバ装置２６８は、配置情報に基づいて、バス５０側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈそれぞれをバッファ番号１〜４で識別されるバッファ２６０〜２６３と接続する。これにより、バッファ２６０〜２６３にはバス５０から受信したデータが格納される。
【０１４７】
なお、シフトレジスタアレイ１７２においては、エントリが左に１だけシフトする（ステップＳ５０８）。これにより、先頭のエントリは最後尾に移動し、図１７の左から２番目のエントリが先頭エントリとなる。ステップＳ５０２からステップＳ５１０を繰り返すことにより、３サイクルのデータ転送を行うと、
次のサイクルは最終サイクルとなる。このため、配列管理部２７１は、ｉｎ＿ｖｌｄ信号とともにｉｎ＿ｌａｓｔ＿ｆｌａｇ信号を受信する。
【０１４８】
次に、シフトレジスタアレイ２７２の先頭エントリを読み出す（ステップＳ５２０）。そして、Ｄ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈとバッファ番号５〜８とを対応付けた配置情報を８対８クロスバ装置２６８に送信する（ステップＳ５２２，Ｙｅｓ、ステップＳ５２６）。
【０１４９】
８対８クロスバ装置２６８は、配置情報に基づいて、バス５０側のＤ−Ｂ、Ｄ−Ｃ、Ｄ−Ｅ、Ｄ−Ｈそれぞれをバッファ番号５〜８で識別されるバッファ２６４〜２６７と接続する。これにより、バッファ２６４〜２６７にはバス５０から受信したデータが格納される。このように、通常１サイクルで転送するデータを２分割し、２サイクルで転送することにより、すべてのデータを転送する。
【０１５０】
シフトレジスタアレイ２７２においては、エントリが左に１だけシフトする（ステップＳ５２８）。これにより、先頭のエントリは最後尾に移動し、図１７の左から５番目のエントリが先頭エントリとなる。以上の処理により１２８ビットのデータの転送が完了する。
【０１５１】
次に、配列管理部２７１は、シフトレジスタアレイ２７２をリセットする（ステップＳ５３０）。この場合４つ左にシフトしているので、４つ左にシフトしてシフトレジスタアレイ１７２を元の状態に戻す。
【０１５２】
なお、以上の処理によりバッファ２６０〜２６７には、４サイクル分のデータが格納される。バッファ出力管理部２７４は、これを２サイクルで受信モジュール側接続部２００に送信する。これにより、受信モジュール４０は、１サイクル当たり６４ビットのデータを受信することができる。
【０１５３】
以上のように、バス５０の欠陥にしたがいバス幅レジスタ２５３およびシフトレジスタアレイ２７２に設定された値に基づいて、コマンド管理部２５０および転送管理部２７０が動作することにより、図２１に示すように、信号線に欠陥のない通常のバス５０を想定して送信モジュール３０から送信された６４ビット×２サイクルのデータは、送信制御装置１０において３２ビット×４サイクルのデータとしてバス５０に送出される。さらに、受信制御装置２０は、３２ビット×４サイクルのデータを６４ビット×２サイクルのデータに戻して受信モジュール４０に送信することができる。
【０１５４】
なお、受信制御装置２０のこれ以外の構成および動作は、送信制御装置１０の構成および動作と同様である。
【０１５５】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【０１５６】
そうした変更例としては、例えば、バスにデータ転送に利用されていない冗長信号線が設けられていてもよい。この場合には、欠陥信号線の数が冗長信号線の本数以下である場合には、冗長信号線を利用する。また、欠陥信号線の数が冗長信号線の本数よりも多い場合には、実施の形態１において説明したように、所定のＤグループを利用してデータ転送を行う。
【０１５７】
（実施の形態２）
図２２に示すように、第２の実施の形態にかかるバスシステム２においては、第１のＬＳＩ３が送信制御装置１１と、送信モジュール３１とを備えている。また、第２のＬＳＩ４が受信制御装置１２と、受信モジュール４１とを備えている。そして、第１のＬＳＩ３の送信制御装置１１と第２のＬＳＩ４の受信制御装置１２の間はバス５１で接続されている。
【０１５８】
このように、送信制御装置１１と受信制御装置１２とを別のＬＳＩに設けることにより、ＬＳＩ間のバスの信号線に欠陥が生じた場合であっても、確実にデータ等を転送することができる。
【０１５９】
なお、第２の実施の形態にかかるバスシステム２のこれ以外の構成および動作は第１の実施の形態にかかるＬＳＩ１と同様である。
【０１６０】
（実施の形態３）
実施の形態３としては、第１の実施の形態にかかるＬＳＩを３次元積層方式により同一パッケージ内に搭載してもよい。図２３は、パッケージ５をＬＳＩの水平方向から見た断面図である。図２３に示すように、第３の実施の形態にかかるパッケージ５は、３つのＬＳＩ６〜８を備えている。各ＬＳＩ６〜８は、ＳｉＰ技術により３次元に積層されている。ＬＳＩ６〜８に対し垂直方向にバス５２を接続するよう配線を接続している。なお、各ＬＳＩ６〜８の構成および動作は、実施の形態１にかかるＬＳＩ１の構成および動作と同様である。
【０１６１】
このように、垂直方向に配線することにより、ＬＳＩ６〜８を水平に並べ、各ＬＳＩ６〜８の間を水平方向に配線する場合に比べて、配線長を短くすることができる。これにより、ＬＳＩ通信を高速化することができる。
【０１６２】
さらに、このように３次元積層方式により同一パッケージ内に複数のＬＳＩを搭載した場合には、ＬＳＩ間の接続を行う際に故障が発生しやすいという問題があった。さらに、一度積層してしまうと欠陥が見つかっても修復するのが困難であるという問題があった。これに対し、本実施の形態にかかるＬＳＩ６〜８は、バス５２に欠陥が生じた場合には、欠陥のない信号線のみを利用してデータ等を転送することができる。
【０１６３】
（実施の形態４）
実施の形態４にかかるＬＳＩ９は、第１クロック供給装置６１と第２クロック供給装置６２とを備えている。実施の形態４にかかるＬＳＩ９においては、バス５３の信号線の一部の不具合を回避した結果バス性能が下がった場合に、バス５３の動作クロックを上昇させることによってバス性能を補償する。
【０１６４】
具体的には、第１クロック供給装置６１および第２クロック供給装置６２を異なる周波数で動作させる。そして、送信制御装置１５、受信制御装置２５、送信モジュール３５、受信モジュール４５およびバス５３を２つのクロックドメインに分ける。具体的には、バス５３は第２クロック供給装置６２で動作する。また、送信制御装置１５および受信制御装置２５のうちバス５３との間のデータ転送に関する処理は、第２クロック供給装置６２のクロック信号にしたがい動作する。すなわち、これらは、同一のクロックドメインに含まれる。
【０１６５】
他方、送信モジュール３５および受信モジュール４５は第１クロック供給装置６１のクロック信号にしたがい動作する。さらに、送信制御装置１５および受信制御装置２５のうち送信モジュール３５および受信モジュール４５とのデータ転送に関する処理は、第１クロック供給装置６１のクロックにしたがい動作する。
【０１６６】
さらに、第２クロック供給装置６２は、内部レジスタを有し、この値を変更することによりクロック周波数を変更することができる。
【０１６７】
例えばバス５３の信号線に不具合が存在しない場合は、２つのクロック供給装置６１，６２が同一の周波数を発生するように、第２クロック供給装置６２の内部レジスタの値を設定する。
【０１６８】
さらに、８つのＤグループのうち１つのＤグループをデータ転送に利用できない場合には、第２クロック供給装置６２の内部レジスタには、第１クロック供給装置６１のクロック周波数の８／７倍のクロック周波数を設定する。また、２つのＤグループをデータ転送に利用できない場合には、第２クロック供給装置６１の内部レジスタには、第１クロック供給装置６１のクロック周波数の８／６倍のクロック周波数を設定する。すなわち、ｎ個のＤグループを利用できない場合には、第２クロック供給装置６２の内部レジスタには、第１クロック供給装置６１のクロック周波数の８／ｎ（ｎ＝１〜８）倍のクロック周波数を設定する。
【０１６９】
このように、データ転送に利用できる信号線の数が小さくなってしまった分だけ、バス５３側のクロック周波数を増加させることにより、性能低下を回避し、バス５３の信号線の不具合を回避することができる。
【０１７０】
なお、実施の形態４にかかるＬＳＩ９のこれ以外の構成および処理は、他の実施の形態にかかるＬＳＩの構成および処理と同様である。
【０１７１】
（実施の形態５）
図２５に示すように実施の形態６にかかるＬＳＩ５４は、リセット装置６０を備えている。さらに、送信制御装置１６および受信制御装置２６がそれぞれ定期的に欠陥信号検出処理を行う。そして、リセット装置６０が、欠陥信号処理を行う毎にバス幅レジスタ１５３およびシフトレジスタアレイ１７２の値を更新する。
【０１７２】
なお、実施の形態５にかかるＬＳＩ５４のこれ以外の構成および処理は、他の実施の形態にかかるＬＳＩの構成および処理と同様である。
【図面の簡単な説明】
【０１７３】
【図１】ＬＳＩ１の構成を示す図である。
【図２】各信号線を転送される信号を示す図である。
【図３】バス５０の信号線に欠陥がない場合の、各信号の送信タイミングを示す図である。
【図４】送信制御装置１０の全体構成を示すブロック図である。
【図５】各データ信号線とＤグループとの関係を示す図である。
【図６】コマンド管理部１５０の詳細な機能構成を示すブロック図である。
【図７】転送管理部１７０の詳細な機能構成を示すブロック図である。
【図８】欠陥信号線検出処理を示すフローチャートである。
【図９】物理信号線と論理信号線の関係を示す図である。
【図１０】送信制御装置１０による送信モジュール３０から送信された信号の受信処理を示すフローチャートである。
【図１１】バス５０へのデータの送信処理を示すフローチャートである。
【図１２】バス５０へのデータの送信処理を示すフローチャートである。
【図１３】バースト長が３２ビットの場合のデータ送信のタイミングチャートを示す図である。
【図１４】バス５０の信号線に欠陥が発見された場合の各信号の送信タイミングを示す図である。
【図１５】受信制御装置２０の全体構成を示す図である。
【図１６】コマンド管理部２５０の詳細な機能構成を示すブロック図である。
【図１７】転送管理部２７０の詳細な機能構成を示すブロック図である。
【図１８】バス５０からのデータの受信処理を示すフローチャートである。
【図１９】受信モジュール４０へのデータの送信処理を示すフローチャートである。
【図２０】受信モジュール４０へのデータの送信処理を示すフローチャートである。
【図２１】バースト長が３２ビットの場合のデータ送受信のタイミングチャートを示す図である。
【図２２】第２の実施の形態にかかるバスシステム２の構成を示すブロック図である。
【図２３】第３の実施の形態にかかるパッケージ５の構成を示すブロック図である。
【図２４】第４の実施の形態にかかるＬＳＩ９の構成を示すブロック図である。
【図２５】第５の実施の形態にかかるＬＳＩ５４の構成を示すブロック図である。
【符号の説明】
【０１７４】
１  ＬＳＩ
１０  送信制御装置
２０  受信制御装置
３０  受信モジュール
４０  受信モジュール
４０  受信モジュール
５０  バス
６０  リセット装置
１００  送信モジュール側接続部
１０２  バス側接続部
１０４  ８対１クロスバ装置
１１０〜１４１  ９対１クロスバ装置
１５０  コマンド管理部
１５１  コマンド取得部
１５２  バイトカウンタテーブル
１５３  バス幅レジスタ
１５４  コマンド転送部
１５５  内部レジスタ
１６０〜１６７  バッファ
１６８  ８対８クロスバ装置
１７０  転送管理部
１７１  配列管理部
１７２  シフトレジスタアレイ
１７３  バッファ入力管理部
１７４  バッファ出力管理部
１８０  欠陥検出部
１８２  設定部
２００  受信モジュール側接続部
２０２  バス側接続部
２０４  ８対１クロスバ装置
２１０〜２４１  ９対１クロスバ装置
２５０  コマンド管理部
２５１  コマンド取得部
２５２  バイトカウンタテーブル
２５３  バス幅レジスタ
２５４  コマンド転送部
２５５  内部レジスタ
２６０〜２６７  バッファ
２６８  ８対８クロスバ装置
２７０  転送管理部
２７１  配列管理部
２７２  シフトレジスタアレイ
２７３  バッファ入力管理部
２７４  バッファ出力管理部
２８０  欠陥検出部
２８２  設定部
【図１】
2008159006.tif 000003
【図２】
2008159006.tif 000004
【図３】
2008159006.tif 000005
【図４】
2008159006.tif 000006
【図５】
2008159006.tif 000007
【図６】
2008159006.tif 000008
【図７】
2008159006.tif 000009
【図８】
2008159006.tif 000010
【図９】
2008159006.tif 000011
【図１０】
2008159006.tif 000012
【図１１】
2008159006.tif 000013
【図１２】
2008159006.tif 000014
【図１３】
2008159006.tif 000015
【図１４】
2008159006.tif 000016
【図１５】
2008159006.tif 000017
【図１６】
2008159006.tif 000018
【図１７】
2008159006.tif 000019
【図１８】
2008159006.tif 000020
【図１９】
2008159006.tif 000021
【図２０】
2008159006.tif 000022
【図２１】
2008159006.tif 000023
【図２２】
2008159006.tif 000024
【図２３】
2008159006.tif 000025
【図２４】
2008159006.tif 000026
【図２５】
2008159006.tif 000027