(57)【要約】【課題】冗長ビットのビット長を抑制しつつ誤り訂正・検出の精度を向上させる。【解決手段】誤り検出・誤り訂正を行う誤り制御を実現するための情報処理装置は、情報ビット列を取得する情報ビット列取得部と、情報ビット列に基づき、所定の符号を用いた符号化により、情報ビット列全体の誤り制御を実行可能な冗長ビット列を生成して、情報ビット列と冗長ビット列とを含む符号語を生成する符号化部とを備える。符号化部は、冗長ビット列に含まれる少なくとも１つのビットのそれぞれが、情報ビット列を複数に分割したビット列であって情報ビット列における連続した複数のビットにより構成されるビット列である分割情報ビット列の１つに対するパリティビットとしても機能するように、冗長ビット列を生成する。【選択図】図４
2011078115.tif 000002
【特許請求の範囲】
【請求項１】
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理装置であって、
情報ビット列を取得する情報ビット列取得部と、
前記情報ビット列に基づき、所定の符号を用いた符号化により、前記情報ビット列全体の誤り制御を実行可能な冗長ビット列を生成し、前記情報ビット列と前記冗長ビット列とを含む符号語を生成する符号化部と、を備え、
前記符号化部は、前記冗長ビット列に含まれる少なくとも１つのビットのそれぞれが、前記情報ビット列を複数に分割した分割情報ビット列の１つに対するパリティビットとしても機能するように、前記冗長ビット列を生成し、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である、情報処理装置。
【請求項２】
請求項１記載の情報処理装置であって、
前記所定の符号は、ｔ（ｔは１以上の整数）重誤りを検出可能な符号であり、
前記符号化部は、前記冗長ビット列に含まれる少なくとも（ｔ＋１）個のビットが前記分割情報ビット列のパリティビットとして機能するように、前記冗長ビット列を生成する、情報処理装置。
【請求項３】
請求項１または請求項２のいずれかに記載の情報処理装置であって、さらに、
前記符号語を、複数の連続する単位転送に分けて所定の転送先に転送する転送部を備え、
前記転送部は、前記分割情報ビット列と当該分割情報ビット列に対するパリティビットとして機能するビットとを１つの単位転送として転送する、情報処理装置。
【請求項４】
請求項３記載の情報処理装置であって、
前記転送部は、前記符号語を、複数の転送先に分けて転送する、情報処理装置。
【請求項５】
請求項４記載の情報処理装置であって、
前記分割情報ビット列のパリティビットによるパリティエラーの組み合わせにより、前記複数の転送先のうち故障の発生している転送先を判断することを特徴とする、情報処理装置。
【請求項６】
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理装置であって、
情報ビット列と、所定の符号を用いた符号化により生成された前記情報ビット列全体の誤り制御を実行可能な冗長ビット列であって、前記情報ビット列を複数に分割した分割情報ビット列の少なくとも１つに対するパリティビットとしても機能するビットを有する冗長ビット列と、を含む符号語を取得する符号語取得部と、
前記符号語に基づき復号を行う復号部と、を備え、
前記復号部は、前記冗長ビット列に基づき前記情報ビット列全体における誤り制御を行うと共に、前記冗長ビット列の有するパリティビットとしても機能するビットに基づき前記分割情報ビット列における誤り検出を行い、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である、情報処理装置。
【請求項７】
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理方法であって、
（ａ）情報ビット列を取得する工程と、
（ｂ）前記情報ビット列に基づき、所定の符号を用いた符号化により、前記情報ビット列全体の誤り制御を実行可能な冗長ビット列を生成し、前記情報ビット列と前記冗長ビット列とを含む符号語を生成する工程と、を備え、
前記工程（ｂ）は、前記冗長ビット列に含まれる少なくとも１つのビットのそれぞれが、前記情報ビット列を複数に分割した分割情報ビット列の１つに対するパリティビットとしても機能するように、前記冗長ビット列を生成する工程であり、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である、情報処理方法。
【請求項８】
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理方法であって、
（ａ）情報ビット列と、所定の符号を用いた符号化により生成された前記情報ビット列全体の誤り制御を実行可能な冗長ビット列であって、前記情報ビット列を複数に分割した分割情報ビット列の少なくとも１つに対するパリティビットとしても機能するビットを有する冗長ビット列と、を含む符号語を取得する工程と、
（ｂ）前記符号語に基づき復号を行う工程と、を備え、
前記工程（ｂ）は、前記冗長ビット列に基づき前記情報ビット列全体における誤り制御を行うと共に、前記冗長ビット列の有するパリティビットとしても機能するビットに基づき前記分割情報ビット列における誤り検出を行う工程であり、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である、情報処理方法。
【請求項９】
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理プログラムであって、
情報ビット列を取得する情報ビット列取得機能と、
前記情報ビット列に基づき、所定の符号を用いた符号化により、前記情報ビット列全体の誤り制御を実行可能な冗長ビット列を生成し、前記情報ビット列と前記冗長ビット列とを含む符号語を生成する符号化機能と、を、コンピュータに実現させることを特徴とし、
前記符号化機能は、前記冗長ビット列に含まれる少なくとも１つのビットのそれぞれが、前記情報ビット列を複数に分割した分割情報ビット列の１つに対するパリティビットとしても機能するように、前記冗長ビット列を生成する機能であり、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である、情報処理プログラム。
【請求項１０】
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理プログラムであって、
情報ビット列と、所定の符号を用いた符号化により生成された前記情報ビット列全体の誤り制御を実行可能な冗長ビット列であって、前記情報ビット列を複数に分割した分割情報ビット列の少なくとも１つに対するパリティビットとしても機能するビットを有する冗長ビット列と、を含む符号語を取得する符号語取得機能と、
前記符号語に基づき復号を行う復号機能と、を、コンピュータに実現させることを特徴とし、
前記復号機能は、前記冗長ビット列に基づき前記情報ビット列全体における誤り制御を行うと共に、前記冗長ビット列の有するパリティビットとしても機能するビットに基づき前記分割情報ビット列における誤り検出を行う機能であり、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理に関し、特に、誤り検出や誤り訂正といった誤り制御を実現するための情報処理に関する。
【背景技術】
【０００２】
デジタル情報を伝送あるいは記録・再生する際には、例えばアルファ線等の宇宙線の影響や伝送路の欠陥を原因として、デジタル情報の一部に誤りが発生する場合がある。このような誤りを検出したり、検出した誤りを訂正したりするために、誤り検出符号や誤り訂正符号を用いる技術が知られている。なお、誤り検出符号と誤り訂正符号との間には本質的に差は無く、誤り検出符号と誤り訂正符号とは、まとめて誤り制御符号とも呼ばれる。また、誤り検出と誤り訂正とは、まとめて誤り制御とも呼ばれる。
【０００３】
誤り制御符号を利用したデジタル情報の伝送・記録の際には、例えばｋビットのデジタル情報（情報ビット）にｍビットの誤り制御用情報（冗長ビット）が付加されて、（ｋ＋ｍ）ビットの符号語が生成され、この符号語が転送される。符号語の転送先では、符号語に含まれる冗長ビットを利用した誤り検出や誤り訂正が行われる。なお、符号語の生成処理は「符号化」と呼ばれ、符号語に基づく誤り検出や誤り訂正処理は「復号」と呼ばれる。
【０００４】
誤り制御符号としては、種々の符号が知られている。例えば特許文献１には、１ビットの誤りを訂正可能であると共に２ビットの誤りを検出可能な誤り制御符号が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１９７５８０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デジタル情報の伝送・記録の際の信頼性のさらなる向上のためには、誤り制御符号の誤り訂正・検出能力の高い符号を利用することが好ましい。しかし、一般に、誤り訂正・検出能力の高い符号を用いると、冗長ビットのビット長が長くなり、情報の転送効率が低下してしまう傾向にあった。
【０００７】
本発明は、上述した従来の課題を解決するためになされたものであり、誤り制御において、冗長ビットのビット長を抑制しつつ、誤り訂正・検出の精度を向上させることを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題の少なくとも一部を解決するために、本発明の第１の情報処理装置は、
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理装置であって、
情報ビット列を取得する情報ビット列取得部と、
前記情報ビット列に基づき、所定の符号を用いた符号化により、前記情報ビット列全体の誤り制御を実行可能な冗長ビット列を生成し、前記情報ビット列と前記冗長ビット列とを含む符号語を生成する符号化部と、を備え、
前記符号化部は、前記冗長ビット列に含まれる少なくとも１つのビットのそれぞれが、前記情報ビット列を複数に分割した分割情報ビット列の１つに対するパリティビットとしても機能するように、前記冗長ビット列を生成し、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である。
【０００９】
この情報処理装置では、符号化部により生成される符号語が、情報ビット列全体の誤り制御を実行可能な冗長ビット列を含むため、情報ビット列全体の誤り制御を実現可能である。さらに、この情報処理装置では、冗長ビット列に含まれる少なくとも１つのビットのそれぞれが、情報ビット列を複数に分割した分割情報ビット列の１つに対するパリティビットとしても機能する。そのため、この情報処理装置では、このパリティビットの存在により、分割情報ビット列における誤り検出を実現可能である。従って、この装置では、誤り制御において、冗長ビットのビット長を抑制しつつ、誤り訂正・検出の精度を向上させることができる。
【００１０】
上記情報処理装置において、前記所定の符号は、ｔ（ｔは１以上の整数）重誤りを検出可能な符号であり、
前記符号化部は、前記冗長ビット列に含まれる少なくとも（ｔ＋１）個のビットが前記分割情報ビット列のパリティビットとして機能するように、前記冗長ビット列を生成するとしてもよい。
【００１１】
このようにすれば、情報ビット列全体の誤り制御に用いる符号の誤り検出能力よりも多くの誤りが発生した場合にも、誤りの態様によっては誤りを検出することができ、誤り訂正・検出の精度を向上させることができる。
【００１２】
また、上記情報処理装置において、さらに、
前記符号語を、複数の連続する単位転送に分けて所定の転送先に転送する転送部を備え、
前記転送部は、前記分割情報ビット列と当該分割情報ビット列に対するパリティビットとして機能するビットとを１つの単位転送として転送するとしてもよい。
【００１３】
このようにすれば、例えばスタック故障のように１つの単位転送あたり１ビット発生する誤りに対する検出能力の高い誤り制御を実現することができる。
【００１４】
また、上記情報処理装置において、前記転送部は、前記符号語を、複数の転送先に分けて転送するとしてもよい。
【００１５】
このようにすれば、複数の転送先のいずれへの転送において誤りが発生したかを特定することができる。
【００１６】
また、上記課題の少なくとも一部を解決するために、本発明の第２の情報処理装置は、
誤り検出と誤り訂正との少なくとも一方を行う誤り制御を実現するための情報処理装置であって、
情報ビット列と、所定の符号を用いた符号化により生成された前記情報ビット列全体の誤り制御を実行可能な冗長ビット列であって、前記情報ビット列を複数に分割した分割情報ビット列の少なくとも１つに対するパリティビットとしても機能するビットを有する冗長ビット列と、を含む符号語を取得する符号語取得部と、
前記符号語に基づき復号を行う復号部と、を備え、
前記復号部は、前記冗長ビット列に基づき前記情報ビット列全体における誤り制御を行うと共に、前記冗長ビット列の有するパリティビットとしても機能するビットに基づき前記分割情報ビット列における誤り検出を行い、
各前記分割情報ビット列は、前記情報ビット列における連続した複数のビットにより構成されるビット列である。
【００１７】
この情報処理装置では、復号部が、冗長ビット列に基づき情報ビット列全体における誤り制御を行うことができる。さらに、復号部が、冗長ビット列の有するパリティビットとしても機能するビットに基づき分割情報ビット列における誤り検出を行うことができる。そのため、この装置では、誤り制御において、冗長ビットのビット長を抑制しつつ、誤り訂正・検出の精度を向上させることができる。
【００１８】
なお、本発明は、種々の態様で実現することが可能であり、例えば、情報処理方法および装置、誤り制御方法および装置、データ伝送方法および装置、データ記録方法および装置、データ再生方法および装置、ネットワーク中継装置、これらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施例としてのネットワーク中継装置１００の構成を概略的に示す説明図である。
【図２】第１実施例におけるフレームバッファコントローラ２１０とフレームバッファ２２０との間のデータ転送方法の一例を示す説明図である。
【図３】第１実施例におけるフレームデータの書き込み処理の流れを示すフローチャートである。
【図４】第１実施例におけるフレームデータの符号化方法の一例を示す説明図である。
【図５】第１実施例における冗長ビット生成行列Ｐの一例を示す説明図である。
【図６】第１実施例におけるフレームデータの読み出し処理の流れを示すフローチャートである。
【図７】第１実施例における検査行列Ｈの一例を示す説明図である。
【図８】第１実施例における誤り位置対応テーブルＣＴの一例を示す説明図である。
【図９】本発明の第２実施例としてのネットワーク中継装置１００ａの構成を概略的に示す説明図である。
【図１０】第２実施例におけるフレームバッファコントローラ２１０とフレームバッファ２２０との間のデータ転送方法の一例を示す説明図である。
【図１１】第２実施例におけるフレームデータの符号化方法の一例を示す説明図である。
【図１２】第２実施例における冗長ビット生成行列Ｐの一例を示す説明図である。
【図１３】第２実施例におけるフレームデータの読み出し処理の流れを示すフローチャートである。
【図１４】第２実施例における検査行列Ｈの一例を示す説明図である。
【図１５】第２実施例における誤り位置対応テーブルＣＴの一例を示す説明図である。
【図１６】パリティビットを利用した故障経路の特定方法の一例を示す説明図である。
【発明を実施するための形態】
【００２０】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
Ａ．第１実施例：
Ｂ．第２実施例：
Ｃ．変形例：
【００２１】
Ａ．第１実施例：
図１は、本発明の第１実施例としてのネットワーク中継装置１００の構成を概略的に示す説明図である。ネットワーク中継装置１００は、ネットワーク上において、ホスト間で伝送される情報（データ）の中継を行う装置である。本実施例のネットワーク中継装置１００は、「フレーム」または「フレームデータ」と呼ばれるデータをＯＳＩ参照モデルにおける第３層（レイヤ３）で中継する、いわゆる「スイッチ」である。
【００２２】
ネットワーク中継装置１００は、主制御部１１０と、内部メモリ１２０と、ルーティング処理部１３０と、複数のネットワークインタフェース１４０と、を備えている。ネットワーク中継装置１００の各構成要素は、バス１５０を介して互いに接続されている。なお、図１には、２つのネットワークインタフェース１４０を示しているが、ネットワーク中継装置１００は３つ以上のネットワークインタフェース１４０を含んでいてもよい。
【００２３】
主制御部１１０は、例えば汎用ＣＰＵにより構成され、ネットワーク中継装置１００全体の動作を制御する。内部メモリ１２０には、主制御部１１０により利用されるデータやコンピュータプログラム等が格納される。ルーティング処理部１３０は、例えばＡＳＩＣ（特定用途ＩＣ）により構成され、フレームデータのルーティングを行う。
【００２４】
ネットワークインタフェース１４０は、ネットワーク上のデータ伝送路としてのリンク３１０を介して、フレームデータの送受信を行う。ネットワークインタフェース１４０は、フレームバッファコントローラ（以下「ＦＢＣ」とも呼ぶ）２１０と、フレームバッファ（以下「ＦＢ」とも呼ぶ）２２０と、ポート２３０と、を含む。
【００２５】
ポート２３０は、リンク３１０と接続され、フレームデータの入出力孔として機能する。フレームバッファ２２０は、フレームデータを一時的に格納するメモリ領域である。フレームバッファコントローラ２１０は、フレームバッファ２２０を制御する。具体的には、フレームバッファコントローラ２１０は、バス２１８を介して、フレームバッファ２２０にフレームデータを書き込んだり、フレームバッファ２２０からフレームデータを読み出したりする。
【００２６】
ポート２３０を介してネットワークインタフェース１４０に入力されたフレームデータは、フレームバッファコントローラ２１０により、フレームバッファ２２０上の所定の領域に一時的に書き込まれる。その後、フレームデータは、フレームバッファコントローラ２１０によりフレームバッファ２２０から読み出され、ルーティング処理部１３０の制御の下、他のネットワークインタフェース１４０に転送される。当該他のネットワークインタフェース１４０に入力されたフレームデータは、やはり、フレームバッファコントローラ２１０によるフレームバッファ２２０への一時的な書き込みおよびフレームバッファ２２０からの読み出しを経て、ポート２３０からネットワーク上に送出される。
【００２７】
フレームバッファコントローラ２１０は、誤り訂正処理部（以下「ＥＣＣ処理部」とも呼ぶ）２１２を含んでいる。また、ＥＣＣ処理部２１２は、符号化部２１４と、復号部２１６と、を有している。ＥＣＣ処理部２１２やその構成要素（符号化部２１４および復号部２１６）は、例えば、専用の回路により構成されている。ＥＣＣ処理部２１２は、フレームバッファコントローラ２１０によるフレームバッファ２２０へのデータの書き込みの際にデータの符号化を行うと共に、フレームバッファ２２０からのデータの読み出しの際にデータの復号を行う。これらの処理の詳細については、後述する。
【００２８】
図２は、第１実施例におけるフレームバッファコントローラ２１０とフレームバッファ２２０との間のデータ転送方法の一例を示す説明図である。図２には、データ書き込みのために、フレームバッファコントローラ２１０からフレームバッファ２２０にデータを転送する場合の例を示している。本実施例では、フレームバッファコントローラ２１０とフレームバッファ２２０との間のバス２１８のバス幅は、３６ビットである。従って、図２に示すように、例えば１４４ビットのデータを転送する場合には、３６ビットのデータを転送単位とするバースト転送により行われる。なお、本明細書では、バースト転送の際の個々の転送の内、ｎ番目の転送を「第ｎ単位転送」と呼ぶものとする。フレームバッファ２２０からフレームバッファコントローラ２１０に向けたデータ転送についても同様に、３６ビットのデータ転送を単位転送とするバースト転送により行われる。
【００２９】
図３は、第１実施例におけるフレームデータの書き込み処理の流れを示すフローチャートである。フレームデータの書き込み処理は、フレームバッファコントローラ２１０（図１）が、フレームデータをフレームバッファ２２０に一時的に格納する処理である。ステップＳ１１０では、フレームバッファコントローラ２１０が、ポート２３０を介してフレームデータを受信する。
【００３０】
ステップＳ１２０（図３）では、フレームバッファコントローラ２１０の符号化部２１４（図１）が、フレームデータの符号化を行う。フレームデータの符号化は、フレームデータの誤りを検出・訂正するための冗長なデータ（以下「ＥＣＣ用データ」と呼ぶ）をフレームデータに基づき生成し、フレームデータに付加する処理である。なお、一般に、符号化前のデータ（本実施例におけるフレームデータ）は、「通報（ｍｅｓｓａｇｅ）」と呼ばれる。また、符号化後のデータ（本実施例におけるＥＣＣ用データが付加されたフレームデータ）は、「符号語（ｃｏｄｅｗｏｒｄ）」と呼ばれる。
【００３１】
図４は、第１実施例におけるフレームデータの符号化方法の一例を示す説明図である。フレームデータの符号化の際には、図４（ａ）に示すように、フレームデータに基づきＥＣＣ用データが生成される。第１実施例では、フレームデータは、１３４ビットのビット列（以下「情報ビット列ｉ」と呼ぶ）である。情報ビット列ｉをｉ＝｛ｉ０，ｉ１，・・・，ｉ１３３｝と表す。また、ＥＣＣ用データは、１０ビットのビット列（以下「冗長ビット列ｐ」と呼ぶ）である。冗長ビット列ｐをｐ＝｛ｐ０，ｐ１，・・・，ｐ９｝と表す。情報ビット列ｉおよび冗長ビット列ｐは、行数が１つの行列と見ることができる。このとき、冗長ビット列ｐは、式（１）により算出される。
ｐ＝ＰｉＴ      （１）
【００３２】
式（１）において、ｉＴは、行列ｉの転置である。また、Ｐは、１０行１３４列の行列である。この行列Ｐを、「冗長ビット生成行列Ｐ」と呼ぶものとする。式（１）より、冗長ビット生成行列Ｐのｍ行ｋ列の要素をＰｍ,ｋと表すと、例えば、冗長ビット列ｐの第１要素ｐ０は、式（２）により算出されることとなる。
ｐ０＝Ｐ１,１×ｉ０＋Ｐ１,２×ｉ１＋・・・＋Ｐ１,１３４×ｉ１３３    （２）
ただし、加算記号「＋」は、排他的論理和を表す。
【００３３】
図５は、第１実施例における冗長ビット生成行列Ｐの一例を示す説明図である。図５では、図示の都合上、冗長ビット生成行列Ｐを３つに分割して示している。また、図５には、参照のために、冗長ビット生成行列Ｐの行番号および列番号を表示している。なお、１００番以降の列番号については、百の位の数字を省略している。また、冗長ビット生成行列Ｐの要素の内、値が「０」の要素については、図示を省略している。このような行列の図示の際の注記は、これ以降も共通である。
【００３４】
図５に示すように、冗長ビット生成行列Ｐの各列（第０列〜第１３３列）における値「０」の要素と値「１」の要素との組み合わせは、すべて互いに異なっている。また、各列における値「１」の要素の個数（例えば第０列は３個）は、奇数となっている。このように設定された冗長ビット生成行列Ｐを用いる符号では、１ビットの誤り訂正と２ビットの誤り検出とが可能となる。
【００３５】
さらに、第１実施例における冗長ビット生成行列Ｐ（図５）は、第７行のビット列に注目すると、第０列から第３４列までの３５個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。そのため、冗長ビット生成行列Ｐを用いて算出された冗長ビット列ｐの第７要素ｐ７は、情報ビット列ｉの第０要素ｉ０から第３４要素ｉ３４までの加算に等しいこととなる。すなわち、冗長ビット列ｐの第７要素ｐ７は、情報ビット列ｉの第０要素ｉ０から第３４要素ｉ３４までのパリティビット（偶数パリティビット）となっている。なお、本明細書における「パリティビット」は、単一パリティ検査符号における冗長ビットを意味している。
【００３６】
同様に、冗長ビット生成行列Ｐ（図５）の第８行のビット列は、第３５列から第６９列までの３５個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。また、冗長ビット生成行列Ｐの第９行のビット列は、第７０列から第１０４列までの３５個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。そのため、冗長ビット列ｐの第８要素ｐ８は、情報ビット列ｉの第３５要素ｉ３５から第６９要素ｉ６９までのパリティビットとなっている。また、冗長ビット列ｐの第９要素ｐ９は、情報ビット列ｉの第７０要素ｉ７０から第１０４要素ｉ１０４までのパリティビットとなっている。
【００３７】
このように、第１実施例においては、ＥＣＣ用データとして生成された冗長ビット列ｐは、１ビットの誤り訂正と２ビットの誤り検出とを実現するＥＣＣ用ビットとして機能すると共に、フレームデータとしての情報ビット列ｉを所定のビット長毎に分割したビット列（以下「分割情報ビット列」と呼ぶ）に対するパリティビットを含んでいる。図４（ｂ）には、分割情報ビット列とパリティビットとして機能する冗長ビット列ｐの要素との関係を示している。
【００３８】
ステップＳ１３０（図３）では、フレームバッファコントローラ２１０（図１）が、符号化されたフレームデータをフレームバッファ２２０に書き込む。具体的には、情報ビット列ｉおよび冗長ビット列ｐが、フレームバッファコントローラ２１０からフレームバッファ２２０に転送される。上述したように、本実施例では、フレームバッファコントローラ２１０からフレームバッファ２２０へのデータ転送は、３６ビットデータの単位転送を連続的に行うバースト転送により行われる。情報ビット列ｉと冗長ビット列ｐとの合計ビット数は１４４ビットであるため、転送は４回の単位転送に分けて行われる。
【００３９】
図４（ｂ）には、フレームバッファコントローラ２１０からフレームバッファ２２０へのデータ転送の態様を示している。図４（ｂ）に示すように、まず第１単位転送として、
情報ビット列ｉの第０要素ｉ０から第３４要素ｉ３４までの３５ビットのビット列により構成された分割情報ビット列と、当該分割情報ビット列に対するパリティビットとして機能する冗長ビット列ｐの第７要素ｐ７と、の合計３６ビットのデータが転送される。第２単位転送および第３単位転送についても同様に、３５ビットの分割情報ビット列と、当該分割情報ビット列に対するパリティビットとしての冗長ビット列ｐの１つの要素とが転送される。最後に、第４単位転送として、情報ビット列ｉの残りの要素（第１０５要素ｉ１０５から第１３３要素ｉ１３３までの２９ビットの分割情報ビット列）と、冗長ビット列ｐの残りの要素（第０要素ｐ０から第６要素ｐ６までの７ビットのビット列）と、の合計３６ビットのデータが転送される。
【００４０】
以上説明したように、第１実施例における書き込み処理では、符号化（図３のステップＳ１２０）によって生成された冗長ビット列ｐが、１ビットの誤り訂正と２ビットの誤り検出とを実現するＥＣＣ用データとして機能すると共に、３つの分割情報ビット列のそれぞれに対するパリティビットを含んでいる。そして、各分割情報ビット列は、それぞれに対するパリティビットと共に１つの転送単位として転送される。
【００４１】
このような書き込み処理を行う第１実施例のネットワーク中継装置１００では、フレームバッファコントローラ２１０とフレームバッファ２２０との間のデータ転送における誤り訂正・検出の能力の向上を図ることが可能となる。
【００４２】
具体的には、まず、ＥＣＣ用データとしての冗長ビット列ｐの存在により、データ転送における１ビットの誤りは訂正可能であり、２ビットの誤りは検出可能である。
【００４３】
さらに、ある単位転送（図４（ｂ）参照）における１ビットの誤りは、当該単位転送において転送されるパリティビットの存在により検出可能である。従って、例えば、第１単位転送から第３単位転送までの単位転送毎に１ビットの誤りが発生し、合計３ビットの誤りが発生した場合にも、誤り検出が可能となる。第４単位転送の際にも１ビットの誤りが発生し、合計４ビットの誤りが発生した場合も、同様に誤り検出可能である。なお、このような１単位転送あたり１ビットの誤りは、例えば、バス２１８（図１）におけるアルファ線等の影響によるソフトエラーとして発生する場合があると考えられる。このような誤りは、「スタック故障」とも呼ばれる。
【００４４】
図６は、第１実施例におけるフレームデータの読み出し処理の流れを示すフローチャートである。フレームデータの読み出し処理は、フレームバッファコントローラ２１０が、フレームデータをフレームバッファ２２０から読み出す処理である。ステップＳ２１０では、フレームバッファコントローラ２１０が、書き込み処理（図３）においてフレームバッファ２２０に格納されたデータを読み出す。データの読み出しは、３６ビットデータの単位転送を４回繰り返すバースト転送により行われる。読み出された１４４ビットデータを、読み出しビット列ｙ＝｛ｙ０，ｙ１，・・・，ｙ１４３｝と表すものとする。
【００４５】
ステップＳ２２０（図６）では、パリティを用いた誤り検出が行われる。具体的には、フレームバッファコントローラ２１０の復号部２１６（図１）が、読み出しビット列ｙの内、第１単位転送から第３単位転送までの単位転送により転送されたビット列毎に、値が「１」であるビットの数が偶数となっているかを判定する。ある単位転送について、値が「１」であるビット数が偶数となっていない場合には、その単位転送について、１ビット以上の誤りが発生したとしてパリティエラー有りと判定される。２つ以上の単位転送について、パリティエラー有りと判定された場合には、誤りが検出されたと判定され（ステップＳ２８０）、処理は終了される。この場合には、誤りは検出されるものの、誤り位置は特定されないため、フレームデータの送信元に再送信を要求する等の処理が行われることとなる。
【００４６】
ステップＳ２２０（図６）において、パリティエラー有りと判定された単位転送が１つ以下であった場合には、ステップＳ２３０以降の処理によって、ＥＣＣ用データを利用した誤り訂正・検出が行われる。具体的には、まず、復号部２１６（図１）が、読み出しビット列ｙに基づいてシンドロームｓを算出する（ステップＳ２３０）。シンドロームｓは、式（３）により算出される。
ｓ＝ＨｙＴ      （３）
【００４７】
式（３）において、ｙＴは、行列ｙの転置である。また、Ｈは、１０行１４４列の行列である。この行列Ｈを、「検査行列Ｈ」と呼ぶものとする。図７は、第１実施例における検査行列Ｈの一例を示す説明図である。図７に示すように、検査行列Ｈは、図５に示した冗長ビット生成行列Ｐの右端に１０行１０列の単位行列を付加することにより生成される行列である。式（３）からわかるように、シンドロームｓは、１０ビットのビット列として算出される。
【００４８】
ステップＳ２４０（図６）では、復号部２１６（図１）が、シンドロームｓのすべてのビットの値が「０」であるか否かを判定する。復号部２１６は、シンドロームｓのすべてのビットの値が「０」である場合には、フレームバッファコントローラ２１０とフレームバッファ２２０との間のフレームデータの転送の際に、誤りは発生していないと判定する。このときには、フレームバッファコントローラ２１０は、フレームデータをそのまま送信する（ステップＳ２５０）。
【００４９】
一方、ステップＳ２４０において、シンドロームｓに値が「１」であるビットが含まれていると判定された場合には、復号部２１６（図１）は、シンドロームｓに対応する誤り位置を検出する（ステップＳ２６０）。シンドロームｓに対応する誤り位置の検出は、誤り位置対応テーブルＣＴを参照して行われる。図８は、第１実施例における誤り位置対応テーブルＣＴの一例を示す説明図である。図８に示すように、誤り位置対応テーブルＣＴは、シンドロームｓの全ビットを１つの数として見た際の１６進数表記の値（Ｓ（１６）と表す）と、読み出しビット列ｙにおける誤りビット位置（ＥＬ（１０）と表す）とを対応付けている。例えば、シンドロームｓの値が「００１」であった場合には、誤り位置対応テーブルＣＴを参照して、読み出しビット列ｙ中の第１４３ビットが誤りであると判定される。
【００５０】
シンドロームｓの値が誤り位置対応テーブルＣＴ中に存在する場合には、読み出しビット列ｙ中に１ビットの誤りが存在すると考えられる。復号部２１６は、誤り位置対応テーブルＣＴを参照して、誤りの読み出しビット列ｙ中における位置を特定し、誤りを訂正する（ステップＳ２７０）。フレームバッファコントローラ２１０は、訂正された読み出しビット列ｙ中に含まれるフレームデータを送信する（ステップＳ２５０）。
【００５１】
一方、ステップＳ２６０において、シンドロームｓの値が誤り位置対応テーブルＣＴ中に存在しない場合には、２ビット以上の誤りが存在すると考えられる。この場合には、誤りが存在すると判定され（ステップＳ２８０）、処理は終了される。この場合には、フレームデータの送信元に再送信を要求する等の処理が行われることとなる。
【００５２】
以上説明したように、第１実施例のネットワーク中継装置１００では、冗長ビット列ｐが、１ビットの誤り訂正と２ビットの誤り検出とを実現するＥＣＣ用データとして機能すると共に、３つの分割情報ビット列のそれぞれに対するパリティビットを含むように、フレームデータの符号化が行われる。そして、各分割情報ビット列は、それぞれに対するパリティビットと共に１つの転送単位として転送される。そのため、本実施例のネットワーク中継装置１００では、スタック故障のように、１単位転送あたり１ビットの誤り、合計３ビット以上の誤りが発生した場合にも、誤りを検出することができる。また、ＥＣＣ用データの一部がパリティビットとして機能するため、冗長ビットのビット長が増大することがない。従って、本実施例のネットワーク中継装置１００では、冗長ビットのビット長を抑制しつつ、誤り訂正・検出の精度を向上させることができる。
【００５３】
Ｂ．第２実施例：
図９は、本発明の第２実施例としてのネットワーク中継装置１００ａの構成を概略的に示す説明図である。第２実施例のネットワーク中継装置１００ａは、ネットワークインタフェース１４０ａが、２つのフレームバッファ２２０（ＦＢｘおよびＦＢｙ）を有している点が、図１に示した第１実施例におけるネットワーク中継装置１００と異なっている。ネットワーク中継装置１００ａのその他の構成は、第１実施例におけるネットワーク中継装置１００と同様である。
【００５４】
図１０は、第２実施例におけるフレームバッファコントローラ２１０とフレームバッファ２２０との間のデータ転送方法の一例を示す説明図である。図１０には、データ書き込みのために、フレームバッファコントローラ２１０から２つのフレームバッファ２２０（ＦＢｘおよびＦＢｙ）にデータを転送する場合の例を示している。第２実施例では、図１０に示すように、例えば１４４ビットのデータを転送する場合には、２つのフレームバッファ２２０にそれぞれ７２ビットずつのデータが転送される。また、フレームバッファコントローラ２１０から１つのフレームバッファ２２０へのデータ転送は、３６ビットのデータを転送単位とするバースト転送により行われる。
【００５５】
第２実施例における書き込み処理の流れは、図３に示した第１実施例における書き込み処理の流れと同様である。すなわち、フレームバッファコントローラ２１０によりフレームデータが受信され（図３のステップＳ１１０）、フレームデータの符号化（図３のステップＳ１２０）が行われる。
【００５６】
図１１は、第２実施例におけるフレームデータの符号化方法の一例を示す説明図である。第２実施例では、フレームデータは、１３３ビットの情報ビット列ｉである。情報ビット列ｉをｉ＝｛ｉ０，ｉ１，・・・，ｉ１３２｝と表す。また、ＥＣＣ用データは、１１ビットの冗長ビット列ｐである。冗長ビット列ｐをｐ＝｛ｐ０，ｐ１，・・・，ｐ１０｝と表す。冗長ビット列ｐは、第１実施例と同様に、上記式（１）により算出される。
【００５７】
図１２は、第２実施例における冗長ビット生成行列Ｐの一例を示す説明図である。図１２に示すように、冗長ビット生成行列Ｐの各列（第０列〜第１３２列）における値「０」の要素と値「１」の要素との組み合わせは、すべて互いに異なっている。また、各列における値「１」の要素の個数（例えば第０列は３個）は、奇数となっている。このように設定された冗長ビット生成行列Ｐを用いる符号では、１ビットの誤り訂正と２ビットの誤り検出とが可能となる。
【００５８】
さらに、第１実施例と同様に、冗長ビット生成行列Ｐ（図１２）において、第７行のビット列は、第０列から第３４列までの３５個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。また、第８行のビット列は、第３５列から第６９列までの３５個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。また、第９行のビット列は、第７０列から第１０４列までの３５個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。そのため、冗長ビット列ｐの第７要素ｐ７は、情報ビット列ｉの第０要素ｉ０から第３４要素ｉ３４までのパリティビット（偶数パリティビット）となっている。また、冗長ビット列ｐの第８要素ｐ８は、情報ビット列ｉの第３５要素ｉ３５から第６９要素ｉ６９までのパリティビットとなっており、冗長ビット列ｐの第９要素ｐ９は、情報ビット列ｉの第７０要素ｉ７０から第１０４要素ｉ１０４までのパリティビットとなっている。
【００５９】
さらに、第２実施例の冗長ビット生成行列Ｐ（図１２）において、第１０行のビット列は、第１０５列から第１１１列までの７個の要素がすべて値「１」となっており、その他の要素がすべて値「０」となっている。そのため、冗長ビット列ｐの第１０要素ｐ１０は、情報ビット列ｉの第１０５要素ｉ１０５から第１１１要素ｉ１１１までのパリティビットとなっている。なお、本実施例では、パリティビットとしての冗長ビット列ｐの第１０要素ｐ１０のパリティ演算範囲の要素の数を、他のパリティビット同様に奇数個とするために、パリティ演算範囲を情報ビット列ｉの第１０５要素ｉ１０５から第１１１要素ｉ１１１までに設定しているが、冗長ビット列ｐの第１０要素ｐ１０のパリティ演算範囲は、任意に設定可能である。
【００６０】
フレームデータの符号化が完了すると、フレームバッファ２２０へのデータ（情報ビット列ｉおよび冗長ビット列ｐ）の書き込みが行われる（図３のステップＳ１３０）。第２実施例では、データが２つのフレームバッファ２２０（ＦＢｘおよびＦＢｙ）に分けて書き込まれる。図１１（ｂ）には、各フレームバッファ２２０に転送されるデータの構成を示している。図１１（ｂ）に示すように、一方のフレームバッファ２２０（ＦＢｘ）に対する第１単位転送として、情報ビット列ｉの第０要素ｉ０から第３４要素ｉ３４までの３５ビットのビット列により構成された分割情報ビット列と、当該分割情報ビット列に対するパリティビットとして機能する冗長ビット列ｐの第７要素ｐ７と、の合計３６ビットのデータが転送される。さらに、フレームバッファ２２０（ＦＢｘ）に対する第２単位転送として、情報ビット列ｉの第３５要素ｉ３５から第６９要素ｉ６９までの分割情報ビット列と、当該分割情報ビット列に対するパリティビット（冗長ビット列ｐの第８要素ｐ８）と、の合計３６ビットのデータが転送される。
【００６１】
また、他方のフレームバッファ２２０（ＦＢｙ）に対する第１単位転送として、情報ビット列ｉの第７０要素ｉ７０から第１０４要素ｉ１０４までの分割情報ビット列と、当該分割情報ビット列に対するパリティビット（冗長ビット列ｐの第９要素ｐ９）と、の合計３６ビットのデータが転送される。さらに、フレームバッファ２２０（ＦＢｙ）に対する第２単位転送として、情報ビット列ｉの第１０５要素ｉ１０５から第１３２要素ｉ１３２までの分割情報ビット列と、冗長ビット列ｐの残りの要素（第０要素ｐ０から第６要素ｐ６までの７ビットのビット列）と、分割情報ビット列の内の第１０５要素ｉ１０５から第１１１要素ｉ１１１までに対するパリティビット（冗長ビット列ｐの第１０要素ｐ１０）と、の合計３６ビットのデータが転送される。
【００６２】
図１３は、第２実施例におけるフレームデータの読み出し処理の流れを示すフローチャートである。第２実施例におけるフレームデータの読み出し処理におけるステップＳ２１０からＳ２８０までの処理は、図６に示した第１実施例と同様である。図１４は、第２実施例における検査行列Ｈの一例を示す説明図である。図１４に示すように、検査行列Ｈは、図１２に示した冗長ビット生成行列Ｐの右端に１１行１１列の単位行列を付加することにより生成される行列である。ステップＳ２３０（図１３）におけるシンドロームｓの算出は、この検査行列Ｈを用いて行われる。また、図１５は、第２実施例における誤り位置対応テーブルＣＴの一例を示す説明図である。ステップＳ２６０（図１３）における誤り位置の特定は、この誤り位置対応テーブルＣＴを用いて行われる。
【００６３】
第２実施例の読み出し処理では、誤り検出（ステップＳ２８０）の後に、誤りの原因となる故障が発生した経路の特定（ステップＳ２９０）が行われる点が、第１実施例とは異なっている。第２実施例では、１ビットの誤り訂正と２ビットの誤り検出とが可能な符号を用いた符号化が採用されている。すなわち、１ビットの誤りが発生した場合には、ステップＳ２７０で誤り訂正が行われる。また、２ビットの誤りが発生した場合には、ステップＳ２８０において誤り検出が行われる。ステップＳ２９０では、２ビットの誤りがどの伝送経路で発生したかを特定する処理である。故障経路の特定は、第２実施例のように転送元から複数の転送先へデータが伝送される構成を有する装置においては、修理や部品交換を行う範囲を限定することができるため、有用である。
【００６４】
ステップＳ２９０（図１３）における故障経路の特定は、各単位転送に含まれるパリティビット（図１１（ｂ）参照）を利用して行われる。図１６は、パリティビットを利用した故障経路の特定方法の一例を示す説明図である。例えば、フレームバッファ２２０（ＦＢｘ）への第１単位転送および第２単位転送（図１１（ｂ）参照）においてパリティエラーが発生した場合（図１６のケース１）には、それぞれの転送において１ビットずつの誤りが発生したものと考えられる。従ってこの場合には、フレームバッファコントローラ２１０からフレームバッファ２２０（ＦＢｘ）への伝送経路に故障が発生したと判断される。
【００６５】
同様に、フレームバッファ２２０（ＦＢｙ）への第１単位転送および第２単位転送（図１１（ｂ）参照）においてパリティエラーが発生した場合（図１６のケース２）には、それぞれの転送において１ビットずつの誤りが発生したものと考えられる。従ってこの場合には、フレームバッファコントローラ２１０からフレームバッファ２２０（ＦＢｙ）への伝送経路に故障が発生したと判断される。また、フレームバッファ２２０（ＦＢｙ）への第１単位転送においてのみパリティエラーが発生した場合（図１６のケース３）には、もう１つの誤りは、フレームバッファ２２０（ＦＢｙ）への第２単位転送におけるパリティビットの演算範囲外のビットにおいて発生したものと考えられる。従ってこの場合にも、フレームバッファコントローラ２１０からフレームバッファ２２０（ＦＢｙ）への伝送経路に故障が発生したと判断される。
【００６６】
以上説明したように、第２実施例のネットワーク中継装置１００ａでは、フレームバッファコントローラ２１０と２つのフレームバッファ２２０との間でデータ伝送を行う場合において、故障（誤り）発生経路を特定することができる。
【００６７】
Ｃ．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００６８】
Ｃ１．変形例１：
上記各実施例のネットワーク中継装置１００の構成は、あくまで一例であり、ネットワーク中継装置１００の構成を他の構成とすることも可能である。また、本発明は、ネットワーク中継装置１００におけるデータ伝送に限らず、誤り制御を伴うデータ伝送一般に適用可能である。
【００６９】
Ｃ２．変形例２：
上記各実施例における情報ビット列ｉおよび冗長ビット列ｐの構成、符号化の方法、冗長ビット生成行列Ｐおよび検査行列Ｈの構成、データ伝送の態様等は、あくまで一例であり、これらの構成および対応は、種々変形可能である。例えば、上記各実施例では、１ビット誤り訂正・２ビット誤り検出可能な符号を採用しているが、誤り訂正・検出能力のより高い符号を採用してもよい。具体的には、ｔ（ｔは１以上の整数）重誤り検出可能な符号を採用する場合には、ＥＣＣ用データが、（ｔ＋１）個以上の分割情報ビット列に対するパリティビットを含むように符号化を行えばよい。
【００７０】
また、本発明は、データのバースト転送を行う場合に限らず、任意の態様でデータを伝送する場合に適用可能である。
【００７１】
Ｃ３．変形例３：
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【符号の説明】
【００７２】
１００…ネットワーク中継装置
１１０…主制御部
１２０…内部メモリ
１３０…ルーティング処理部
１４０…ネットワークインタフェース
１５０…バス
２１０…フレームバッファコントローラ
２１２…ＥＣＣ処理部
２１４…符号化部
２１６…復号部
２１８…バス
２２０…フレームバッファ
２３０…ポート
３１０…リンク
【図１】
2011078115.tif 000003
【図２】
2011078115.tif 000004
【図３】
2011078115.tif 000005
【図４】
2011078115.tif 000006
【図５】
2011078115.tif 000007
【図６】
2011078115.tif 000008
【図７】
2011078115.tif 000009
【図８】
2011078115.tif 000010
【図９】
2011078115.tif 000011
【図１０】
2011078115.tif 000012
【図１１】
2011078115.tif 000013
【図１２】
2011078115.tif 000014
【図１３】
2011078115.tif 000015
【図１４】
2011078115.tif 000016
【図１５】
2011078115.tif 000017
【図１６】
2011078115.tif 000018