(57)【要約】【課題】  複数のセグメント間を連結するポインタに生じたビットエラーを正しい値に復元し、チェーンメモリーのリンク切れを修復することができる伝送装置及びリンク切れ修復方法を提供する。【解決手段】  伝送装置１００は、エラーポインタのビットパターン及び反転パターンの排他的論理和を演算し、真のポインタを含むポインタ候補を算出するポインタ予測部５０を備えている。また、ポインタ候補が示すポインタ格納領域１１ａに格納された前ポインタとエラーポインタが格納されたポインタ格納領域１１ａのアドレスとの一致の有無を判定するポインタ検証部７０を備えている。また、ポインタ検証部７０による判定結果に基づき、エラーポインタを、一致した前ポインタが格納されるポインタ格納領域１１ａのアドレスであるポインタ候補に変換するポインタ復元部８０を備えているものである。【選択図】        図１
2010182086.tif 000002
【特許請求の範囲】
【請求項１】
メモリー空間が複数のセグメントに領域分けされ、任意のセグメントから連結される他のセグメントを特定する情報である次ポインタ及び前記任意のセグメントを連結する他のセグメントを特定する情報である前ポインタを格納するポインタ格納領域、並びにデータを格納するデータ格納領域を各セグメントに有するチェーンメモリーと、
前記次ポインタに生じたビットエラーを検出する誤り検出部と、
前記ビットエラーが生じた次ポインタのビットパターンと前記ビットエラーの候補となる一又は複数箇所のビットを反転させるビットパターンとの排他的論理和を演算し、真の次ポインタを含む次ポインタ候補を算出するポインタ予測部と、
前記次ポインタ候補のうち一の次ポインタ候補を選択し、当該一の次ポインタ候補が示す前記ポインタ格納領域のアドレスを特定すると共に、当該アドレスの前記ポインタ格納領域に格納された前ポインタが示す前記ポインタ格納領域のアドレスと前記ビットエラーが生じた次ポインタが格納された前記ポインタ格納領域のアドレスとの一致の有無を判定するポインタ検証部と、
前記ポインタ検証部により一致ありと判定した場合に、前記ビットエラーが生じた次ポインタを、前記一致した前ポインタが格納されるポインタ格納領域のアドレスである前記次ポインタ候補に変換するポインタ復元部と、
を備えている伝送装置。
【請求項２】
前記請求項１に記載の伝送装置において、
前記次ポインタのうちビットエラーの候補となる一及び／又は複数箇所のビットを反転させるビットパターンを格納する反転パターン格納部を備えていることを特徴とする伝送装置。
【請求項３】
前記請求項１に記載の伝送装置において、
前記次ポインタのうちビットエラーの候補となる一及び／又は複数箇所のビットを反転させるビットパターンを生成する反転パターン生成部を備えていることを特徴とする伝送装置。
【請求項４】
前記請求項２に記載の伝送装置において、
前記反転パターン格納部が、前記次ポインタのビットパターンのうち一箇所のビットを反転させるビットパターンと、当該ビットパターンに対して前記ビットを反転させるビット位置の上位及び／又は下位にあるビットを反転させるビットパターンとを格納していることを特徴とする伝送装置。
【請求項５】
前記請求項１乃至４のいずれかに記載の伝送装置において、
前記各セグメントが２のｎ乗のワードで構成されている場合に、前記ポインタ予測部が、前記次ポインタ候補のうち、ビット位置の第０ビットから第ｎ−１ビットまでの値が１であるポインタ候補を削除することを特徴とする伝送装置。
【請求項６】
メモリー空間が複数のセグメントに領域分けされ、任意のセグメントから連結される他のセグメントを特定する次ポインタ及び前記任意のセグメントを連結する他のセグメントを特定する前ポインタを格納するポインタ格納領域、並びにデータを格納するデータ格納領域を各セグメントに有するチェーンメモリーのリンク切れ修復方法であって、
前記次ポインタに生じたビットエラーを検出する誤り検出ステップと、
前記ビットエラーが生じた次ポインタのビットパターンと前記ビットエラーの候補となる一又は複数箇所のビットを反転させるビットパターンとの排他的論理和を演算し、真の次ポインタを含む次ポインタ候補を算出するポインタ予測ステップと、
前記次ポインタ候補のうち一の次ポインタ候補を選択し、当該一の次ポインタ候補が示す前記ポインタ格納領域のアドレスを特定すると共に、当該アドレスの前記ポインタ格納領域に格納された前ポインタが示す前記ポインタ格納領域のアドレスと前記ビットエラーが生じた次ポインタが格納された前記ポインタ格納領域のアドレスとの一致の有無を判定するポインタ検証ステップと、
前記ポインタ検証ステップにより一致ありと判定した場合に、前記ビットエラーが生じた次ポインタを、前記一致した前ポインタが格納されるポインタ格納領域のアドレスである前記次ポインタ候補に変換するポインタ復元ステップと、
を有することを特徴とするリンク切れ修復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリー空間を小さな領域（以下、セグメントと称す）に区切り、複数のセグメントが連鎖するデータ構造のメモリー（以下、チェーンメモリーと称す）における、複数のセグメント間の繋がりが失われるリンク切れを修復するリンク切れ修復方法に関する。特に、この発明は、チェーンメモリーを備えた伝送装置に関する。
【背景技術】
【０００２】
従来のバッファメモリ装置は、空き領域チェーンメモリーにアドレスが空き領域の先頭として格納されている空き領域チェーンに対して、新たにアドレスの空き領域が生じた場合、該空き領域チェーンの先頭の前部に、新たに生じた空き領域のアドレスを追加する（例えば、特許文献１参照）。
【０００３】
また、従来のチェーンメモリーの監視方法は、チェック対象アドレスを任意に変化させ、また監視対象アドレスを空きアドレスのあるポイントに絞り、一定時間内にチェック対象アドレスが出現することを監視する、ように構成する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２８０３３３号公報
【特許文献２】特開２００４−７２６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のバッファメモリ装置を含め、電子機器内のメモリチップ等は、地上に到達する宇宙線のうち、電荷を持つα線等がメモリセルに衝突した際にメモリセルに蓄えられた電荷量の値を乱してしまうためにメモリエラー（ソフトエラー）が生じることがある。このため、従来のバッファメモリ装置は、格納領域のアドレスポインタの値が、ソフトエラーに起因するビットエラーを起こした場合に、格納領域間の繋がりが失われるリンク切れが生じるという課題があった。
【０００６】
また、従来のチェーンメモリーの監視方法は、チェーン異常（アドレス損失）を検出するのであるが、チェーン異常のあるアドレスの次アドレス値を正しい次アドレス値に復元することまでを考慮していない。このため、チェーン異常を検出したチェーンメモリー及び対応する共通メモリーに対しては、メモリー全体を初期化する必要があるなどの課題があった。
【０００７】
この発明は、上述のような課題を解決するためになされたもので、複数のセグメント間を連結するポインタに生じたビットエラーを正しい値に復元し、チェーンメモリーのリンク切れを修復することができる伝送装置及びリンク切れ修復方法を提供するものである。
【課題を解決するための手段】
【０００８】
この発明に係る伝送装置は、エラーポインタのビットパターン及び反転パターンの排他的論理和を演算し、真のポインタを含むポインタ候補を算出するポインタ予測部を備えている。また、ポインタ候補が示すポインタ格納領域に格納された前ポインタとエラーポインタが格納されたポインタ格納領域のアドレスとの一致の有無を判定するポインタ検証部を備えている。また、ポインタ検証部による判定結果に基づき、エラーポインタを、一致した前ポインタが格納されるポインタ格納領域のアドレスであるポインタ候補に変換するポインタ復元部を備えている。
【発明の効果】
【０００９】
開示の伝送装置は、従来技術のような、チェーン異常の対処方法としてのメモリーの初期化に伴う、当該チェーンに対応するセグメントの格納領域に格納されるデータが消去されることなく、チェーンメモリーのリンク切れを修復することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る伝送装置の特徴部分を示す概略図である。
【図２】図１に示すメモリー空間を説明するための説明図である。
【図３】図１に示す反転パターン格納部に格納される反転パターンの一例を示す説明図である。
【図４】図１に示す反転パターン格納部に格納される反転パターンの他の例を示す説明図である。
【図５】反転させるビット位置の個数と反転パターンの組み合わせ数との関係を示す対応表である。
【図６】図１に示すポインタ候補格納部に格納されるポインタ候補の一例を示す説明図である。
【図７】図１に示すポインタ候補格納部に格納されるポインタ候補の他の例を示す説明図である。
【図８】図１に示す伝送装置における処理手順を示すフローチャートである。
【図９】チェーンメモリーのリンク切れを説明するための説明図である。
【図１０】本発明以外のリンク切れの修復方法を説明するための説明図である。
【図１１】図１に示す反転パターン格納部に格納される反転パターンのさらに他の例を示す説明図である。
【図１２】第１の実施形態に係る伝送装置の他の例を示す概略図である。
【発明を実施するための形態】
【００１１】
ここで、本発明は多くの異なる形態で実施可能である。したがって、下記の各実施形態の記載内容のみで解釈すべきではない。また、各実施形態の全体を通して同じ要素には同じ符号を付けている。
【００１２】
各実施形態では、主に装置について説明するが、いわゆる当業者であれば明らかな通り、本発明はコンピュータで使用可能なプログラム、方法としても実施できる。また、本発明は、ハードウェア、ソフトウェア、又は、ソフトウェア及びハードウェアの実施形態で実施可能である。プログラムは、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光記憶装置又は磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
【００１３】
（本発明の第１の実施形態）
図１は第１の実施形態に係る伝送装置の特徴部分を示す概略図であり、図２は図１に示すメモリー空間を説明するための説明図である。図３は図１に示す反転パターン格納部に格納される反転パターンの一例を示す説明図であり、図４は図１に示す反転パターン格納部に格納される反転パターンの他の例を示す説明図である。図５は反転させるビット位置の個数と反転パターンの組み合わせ数との関係を示す対応表である。図６は図１に示すポインタ候補格納部に格納されるポインタ候補の一例を示す説明図であり、図７は図１に示すポインタ候補格納部に格納されるポインタ候補の他の例を示す説明図である。図８は図１に示す伝送装置における処理手順を示すフローチャートである。図９はチェーンメモリーのリンク切れを説明するための説明図であり、図１０は本発明以外のリンク切れの修復方法を説明するための説明図である。図１１は図１に示す反転パターン格納部に格納される反転パターンのさらに他の例を示す説明図である。図１２は第１の実施形態に係る伝送装置の他の例を示す概略図である。
【００１４】
本実施形態においては、ネットワーク上で、ある特定の通信のための帯域を予約し、一定の通信速度を保証する技術（Quality Of Service：ＱｏＳ）を実装する伝送装置１００を例に挙げて説明する。しかしながら、本発明は、メモリー１０をチェーンメモリー方式で管理する装置であれば、伝送装置１００に限られるものではない。なお、本発明の特徴部分である装置構成以外については、既存の伝送装置１００と同様の装置構成及び動作であるために、図示及び説明を省略する。
【００１５】
伝送装置１００は、図１及び図２に示すように、メモリー１０における、物理的なインターフェース（interface：Ｉ／Ｆ）２０が一つであるメモリー空間１１を複数のキュー１２に割り当てる。この場合に、伝送装置１００は、キュー１２毎に固定長の格納領域をメモリー空間１１に予め確保するとメモリー効率が悪いため、図２に示すように、必要な時（格納する順）に格納領域を確保する動的なメモリー構造としてのチェーンメモリーが使用される。
【００１６】
図２では、１ワード（Word：語）を１６ビットとし、６５５３６ワードのメモリー空間１１に対して、１ワードのポインタ格納領域１１ａと３ワードのデータ格納領域１１ｂとからなる４ワード毎に区切られる１６３８４個のセグメントに領域分けした例を示している。
【００１７】
ポインタ格納領域１１ａは、任意のセグメントから連結される他のセグメントを特定する情報（アドレス）である次ポインタ及び任意のセグメントを連結する他のセグメントを特定する情報（アドレス）である前ポインタを格納する領域である。また、データ格納領域１１ｂは、キュー１２からのデータ（パケット）を格納する領域である。
【００１８】
なお、図２においては、紙面の都合上、各セグメントのデータ格納領域１１ｂが３ワードで図示しており、メモリー効率が７５％（ポインタ格納領域：データ格納領域＝１：３）であるが、実際のデータ格納領域１１ｂは３ワードよりも遥かに多いワード数である。このため、メモリー空間１１に対してポインタ格納領域１１ａの占める割合は少なく、ポインタによるオーバーヘッドはほとんど生じない。
【００１９】
また、図２においては、以下の説明を容易にするために、キュー１２の数を２つとし、低優先キュー１２ａ及び高優先キュー１２ｂからのパケットがセグメントにそれぞれ格納される様子を示しているが、実際のキュー１２の数は２つよりも遥かに多いキュー数である。
【００２０】
ここで、チェーンメモリーの仕組みについて、図２を用いて説明する。
キュー１２にパケットが入力されると、キュー１２は、メモリー空間１１のセグメントのうち、全てのデータ格納領域１１ｂが空き領域である一のセグメントに対して、データ格納領域１１ｂの容量に合わせて、パケットを分割してそれぞれ格納する。なお、パケットが一のセグメントに納まりきれない場合には、全てのデータ格納領域１１ｂが空き領域である他のセグメントに対して、データ格納領域１１ｂの容量に合わせて、残りのパケットの一部を分配して格納する。この場合に、一のセグメントのポインタ格納領域１１ａに格納された次ポインタは、他のセグメントのポインタ格納領域１１ａのアドレスを示す。また、他のセグメントのポインタ格納領域１１ａに格納された前ポインタは、一のセグメントのポインタ格納領域１１ａのアドレスを示す。
【００２１】
例えば、低優先キュー１２ａにパケットＡが入力されると、低優先キュー１２ａは、データ格納領域１１ｂの容量に合わせて、パケットＡを５分割して、第１のセグメント及び第２のセグメントのデータ格納領域１１ｂに、パケットＡの一部をそれぞれ格納する。
【００２２】
この場合に、第１のセグメントのポインタ格納領域１１ａに格納された次ポインタは、第２のセグメントのポインタ格納領域１１ａのアドレス「０ｘ０００４番地（１６進数）」を示す。また、第２のセグメントのポインタ格納領域１１ａに格納された前ポインタは、第１のセグメントのポインタ格納領域１１ａのアドレス「０ｘ００００番地（１６進数）」を示す。なお、パケットＡは５分割されているために、第２のセグメントのデータ格納領域１１ｂの１つ（アドレス「０ｘ０００７番地（１６進数）」）は空き領域となる。
【００２３】
その後、高優先キュー１２ｂにパケットＢが入力されると、高優先キュー１２ｂは、データ格納領域１１ｂの容量に合わせて、パケットＢを３分割して、第３のセグメントのデータ格納領域１１ｂに、パケットＢの一部をそれぞれ格納する。
【００２４】
また、その後、低優先キュー１２ａにパケットＣが入力されると、低優先キュー１２ａは、データ格納領域１１ｂの容量に合わせて、パケットＣを４分割して、第４のセグメント及び第５のセグメントのデータ格納領域１１ｂに、パケットＣの一部をそれぞれ格納する。
【００２５】
この場合に、第４のセグメントのポインタ格納領域１１ａに格納された次ポインタは、第５のセグメントのポインタ格納領域１１ａのアドレス「０ｘ００１０番地（１６進数）」を示す。また、第５のセグメントのポインタ格納領域１１ａに格納された前ポインタは、第４のセグメントのポインタ格納領域１１ａのアドレス「０ｘ０００Ｃ番地（１６進数）」を示す。なお、パケットＣは４分割されているために、第５のセグメントのデータ格納領域１１ｂの２つ（アドレス「０ｘ００１２番地（１６進数）」、「０ｘ００１３番地（１６進数）」）は空き領域となる。
【００２６】
また、第２のセグメントと第４のセグメントとは、第３のセグメントを跨いで、同じ低優先キュー１２ａからのパケットを格納しており、ポインタによって連結される。すなわち、第２のセグメントのポインタ格納領域１１ａに格納された次ポインタは、第４のセグメントのポインタ格納領域１１ａのアドレス「０ｘ０００Ｃ番地（１６進数）」を示す。また、第４のセグメントのポインタ格納領域１１ａに格納された前ポインタは、第２のセグメントのポインタ格納領域１１ａのアドレス「０ｘ０００４番地（１６進数）」を示す。
【００２７】
その後、高優先キュー１２ｂにパケットＤが入力されると、高優先キュー１２ｂは、データ格納領域１１ｂの容量に合わせて、パケットＤを２分割して、第６のセグメントのデータ格納領域１１ｂに、パケットＤの一部をそれぞれ格納する。なお、パケットＤは２分割されているために、第６のセグメントのデータ格納領域１１ｂの１つ（アドレス「０ｘ００１７番地（１６進数）」）は空き領域となる。
【００２８】
また、その後、低優先キュー１２ａにパケットＥが入力されると、低優先キュー１２ａは、データ格納領域１１ｂの容量に合わせて、パケットＥを３分割して、第７のセグメントのデータ格納領域１１ｂに、パケットＥの一部をそれぞれ格納する。
【００２９】
この場合に、第５のセグメントと第７のセグメントとは、第６のセグメントを跨いで、同じ低優先キュー１２ａからのパケットを格納しており、ポインタによって連結される。すなわち、第５のセグメントのポインタ格納領域１１ａに格納された次ポインタは、第７のセグメントのポインタ格納領域１１ａのアドレス「０ｘ００１８番地（１６進数）」を示す。また、第７のセグメントのポインタ格納領域１１ａに格納された前ポインタは、第５のセグメントのポインタ格納領域１１ａのアドレス「０ｘ００１０番地（１６進数）」を示す。
【００３０】
このように、同じキュー１２に入力されたパケットが格納されるセグメントを対象にして、第１のセグメント、第２のセグメント、第４のセグメント、・・・というように、次ポインタが次のセグメントを指し示すことによって、チェーンメモリーが形成される。
【００３１】
誤り検出部３０は、ポインタのビットパターンに生じたビットエラーを検出するインターフェース２０の機能である。なお、以下の説明においては、ビットパターンにビットエラーが生じたポインタ（ビットエラーを含むポインタ）のことを、エラーポインタと称す。
【００３２】
また、伝送装置１００は、内部の回路間のデータ転送にあたり、メモリー空間１１のワード毎にパリティチェックを行なっているのであるが、本実施形態に係る誤り検出部３０は、このパリティチェックにより、ポインタにおけるビットエラーを検出する。なお、誤り検出部３０は、パリティチェックの他に、各セグメントの最後尾に、巡回冗長検査（Cyclic Redundancy Check：ＣＲＣ）というコードを付加して、各セグメント全体をチェックする方式を採用することも考えられる。
【００３３】
反転パターン格納部４０は、後述するポインタ予測部５０により、ポインタのビットパターンのうち一及び／又は複数箇所のビットを反転させるビットパターン（以下、反転パターンと称す）を格納するＲＯＭ（read-only memory）等である。
【００３４】
ここで、反転パターンの組み合わせ数は、ポインタのビット幅をｎビットとし、ポインタのビットパターンのうち反転させようとするビット位置の個数をｍ個（ビット）とすると、次式（１）で表わせる。 
〔式１〕
（反転パターンの組み合わせ数）＝ｎＣｍ
＝（ｎＰｍ）／（ｍ！）
＝ｎ！／（（ｎ−ｍ）！・ｍ！）  ・・・（１）
すなわち、反転パターンは、例えば、ポインタのビット幅を１６ビットとし、ポインタのビットパターンのうち一箇所のビットを反転させるビットパターンとしては、図３に示すように、１６通りのビットパターンがある。
【００３５】
また、反転パターンは、例えば、ポインタのビット幅を１６ビットとし、ポインタのビットパターンのうちニ箇所のビットを反転させるビットパターンとしては、図４に示すように、１２０通りのビットパターンがある。
【００３６】
このように、反転パターンは、図５に示すように、ポインタのビット幅や、ポインタのビットパターンのうち反転させようとするビット位置の個数に対応して、反転パターンの組み合わせ数が異なる。特に、反転パターンの組み合わせ数は、反転させようとするビット位置の個数がポインタのビット幅（ビット数）の半分以下において個数が増加するにつれて増加する傾向にあり、半分を超えてからは個数が増加するにつれて減少する傾向にある。
【００３７】
これに対し、反転パターン格納部４０は、反転パターンの組み合わせの全ての反転パターンを格納することにより、エラーポインタの全てのビット位置におけるビットエラーに対応することができるのであるが、その分、ＲＯＭ等のメモリー容量が必要となる。
【００３８】
このため、伝送装置１００は、設計思想に応じて、エラーポインタの修復を可能とするビット数を設定し、反転パターン格納部４０に必要最低限の反転パターンを格納することが好ましい。例えば、ポインタのビット幅を１６ビットとし、ポインタのビットパターンのうち反転させようとするビット位置を一箇所及びニ箇所とした場合に、反転パターン格納部４０は、図３及び図４に示すように、１６通り及び１２０通りの全１３６通りの反転パターンを格納することになる。
【００３９】
ポインタ予測部５０は、エラーポインタのビットパターン及び反転パターンの排他的論理和（ＸＯＲ）を演算し、当該エラーポインタに対して、真のポインタを含むポインタの候補（以下、ポインタ候補と称す）を算出する回路である。
【００４０】
また、ポインタ候補格納部６０は、ポインタ予測部５０により算出されたポインタ候補を格納するＲＡＭ（random-access memory）等である。
ここで、ポインタ候補は、エラーポインタのビットパターンと反転パターンとに基づき、次式（２）で表わせる。
〔式２〕
（ポインタ候補）＝（エラーポインタのビットパターン）ＸＯＲ（反転パターン）・・・（２）
すなわち、ポインタ予測部５０は、例えば、エラーポインタの値が「０ｘ００１０番地（１６進数）」であり、反転パターンが図３に示すビットパターンである場合には、図６に示すように、１６通りのポインタ候補を算出し、ポインタ候補格納部６０に格納する。
【００４１】
また、ポインタ予測部５０は、例えば、エラーポインタの値が「０ｘ００１０番地（１６進数）」であり、反転パターンが図４に示すビットパターンである場合には、図７に示すように、１２０通りのポインタ候補を算出し、ポインタ候補格納部６０に格納する。
【００４２】
ポインタ検証部７０は、複数のポインタ候補のうち一のポインタ候補を選択し、当該一のポインタ候補が示すポインタ格納領域１１ａのアドレスを特定する。また、ポインタ検証部７０は、特定したアドレス（以下、予測アドレスと称す）のポインタ格納領域１１ａに格納された前ポインタ（以下、関連ポインタと称す）とエラーポインタが格納されたポインタ格納領域１１ａのアドレスとの一致の有無を判定する回路である。
【００４３】
ポインタ復元部８０は、ポインタ検証部７０により一致ありと判定した場合に、エラーポインタを、一致した関連ポインタが格納されるポインタ格納領域１１ａのアドレス（予測アドレス）であるポインタ候補に変換する。
【００４４】
次に、本実施形態に係る伝送装置１００による処理手順について、図８を用いて説明する。なお、以下の説明においては、図２に示す第５のセグメントにおける次ポインタのビットパターンにビットエラーが生じ、連結すべき第７のセグメントにおけるポインタ格納領域１１ａのアドレスが不明な場合を想定して説明する。また、エラーポインタの値は、「０ｘ００１０番地（１６進数）」であるものとして説明する。
【００４５】
まず、誤り検出部３０は、パリティチェックを行ない、ポインタのビットパターンに生じたビットエラーを検出した場合に（ステップＳ１）、ポインタにビットエラーが生じたことをポインタ予測部５０に通知する（ステップＳ２）。この場合に、ポインタ予測部５０は、エラーポインタの値（ここでは、「０ｘ００１０番地（１６進数）」の２進数）と、当該エラーポインタが格納されたポインタ格納領域１１ａのアドレス（ここでは、「０ｘ００１０番地（１６進数）」の２進数）が入力される。
【００４６】
ポインタ予測部５０は、ポインタに生じたビットエラーのビット位置を一箇所（ビットエラー数を１）と仮定して（ステップＳ３）、反転パターン格納部４０から対応する反転パターン（ここでは、図３に示す反転パターン）を読み出す（ステップＳ４）。
【００４７】
そして、ポインタ予測部５０は、エラーポインタのビットパターン（ここでは、図６に示すエラーポインタ）及び反転パターン（ここでは、図３に示す反転パターン）の排他的論理和を演算し、ポインタ候補（ここでは、図６に示すポインタ候補）を算出する。
【００４８】
そして、ポインタ予測部５０は、算出したポインタ候補のリストを作成し（ステップＳ５）、ポインタ候補リストをポインタ候補格納部６０に書き込む（ステップＳ６）。また、ポインタ予測部５０は、エラーポインタに対する真のポインタがポインタ候補リストに含まれているかの検証の指令を、ポインタ検証部７０に出力する（ステップＳ７）。この場合に、ポインタ検証部７０は、エラーポインタが格納されたポインタ格納領域１１ａのアドレス（ここでは、「０ｘ００１０番地（１６進数）」の２進数）が入力される。
【００４９】
ポインタ検証部７０は、ポインタ候補格納部６０に格納されたポインタ候補（ここでは、図６に示す１６通りのポインタ候補）のうち、一のポインタ候補（ここでは、第１行目（第０ビット反転）のポインタ候補）を選択する（ステップＳ８）。また、ポインタ検証部７０は、当該一のポインタ候補（ここでは、第１行目のポインタ候補）が示すポインタ格納領域１１ａのアドレス（ここでは、「０ｘ００１１番地（１６進数）」）を特定する。
【００５０】
そして、ポインタ検証部７０は、インターフェース２０を介して、特定した予測アドレスのポインタ格納領域１１ａに格納された前ポインタ（関連ポインタ）を参照する。また、ポインタ検証部７０は、関連ポインタとエラーポインタが格納されたポインタ格納領域１１ａのアドレスとの一致の有無を判定する（ステップＳ９）。なお、ここでは、予測アドレス「０ｘ００１１番地（１６進数）」に対応するメモリー空間１１がデータ格納領域１１ｂであるために、ポインタ検証部７０は、関連ポインタを参照することができず、一致なしと判定する。
【００５１】
ステップＳ９において、一致なしと判断した場合には、ポインタ検証部７０は、ポインタ候補格納部６０に格納された全てのポインタ候補に対して、検証を完了したか否か（他のポインタ候補の有無）を判断する（ステップＳ１０）。
【００５２】
ステップＳ１０において、他のポインタ候補が存在しないと判断した場合には、ポインタ検証部７０は、新規のポインタ候補リストの作成の指令を、ポインタ予測部５０に出力する（ステップＳ１１）。
【００５３】
ポインタ予測部５０は、ポインタ検証に使用した現ポインタ候補リストを作成するうえで対象にしたビットエラー数に対して、１を加算して（ステップＳ１２）、前述したステップＳ４に戻る。なお、現ポインタ候補リストを作成するうえで対象にしたビットエラー数が１である場合には、ビットエラー数を２とし、ステップＳ４において、ポインタ予測部５０は、図４に示す反転パターンを反転パターン格納部４０から読み出すことになる。また、ステップＳ５において、ポインタ予測部５０は、図７に示すエラーポインタ及び図４に示す反転パターンの排他的論理和を演算し、図７に示すポインタ候補を算出して、新規のポインタ候補リストを作成することになる。
また、ステップＳ１０において、他のポインタ候補が存在すると判断した場合には、前述したステップＳ８に戻る。
【００５４】
なお、ここでは、図６に示す１６通りのポインタ候補のうち、第１行目のポインタ候補を検証したものであり、他のポインタ候補（ここでは、第２行目から第１６行目までのポインタ候補）が存在するために、ステップＳ８に戻ることになる。この場合に、ステップＳ８では、ポインタ検証部７０が、検証した現ポインタ候補をインクリメントして、ポインタ候補格納部６０に格納された次のポインタ候補（ここでは、第２行目のポインタ候補）を選択する。
【００５５】
以下、ポインタ検証は、関連ポインタとエラーポインタが格納されたポインタ格納領域１１ａのアドレスとが一致するまで、又は他のポインタ候補が無くなるまで、ステップＳ８、ステップＳ９及びステップＳ１０を繰り返すことになる。
【００５６】
具体的には、図２において、図６に示す第２行目（第１ビット反転）のポインタ候補が示す予測アドレスが「０ｘ００１２番地（１６進数）」の場合には、関連ポインタを参照することができず、ポインタ検証部７０が一致なしと判定する。
【００５７】
また、図２において、図６に示す第３行目（第２ビット反転）のポインタ候補が示す予測アドレスが「０ｘ００１４番地（１６進数）」の場合には、ポインタ検証部７０は、関連ポインタとして「０ｘ０００Ｂ番地（１６進数）」を参照する。しかし、関連ポインタ「０ｘ０００Ｂ番地（１６進数）」とエラーポインタが格納されたポインタ格納領域１１ａのアドレス「０ｘ００１０番地（１６進数）」とが不一致のため、ポインタ検証部７０は、一致なしと判定することになる。
【００５８】
また、図２において、図６に示す第４行目（第３ビット反転）のポインタ候補が示す予測アドレスが「０ｘ００１８番地（１６進数）」の場合には、ポインタ検証部７０は、関連ポインタとして「０ｘ００１０番地（１６進数）」を参照する。この場合には、関連ポインタ「０ｘ００１０番地（１６進数）」とエラーポインタが格納されたポインタ格納領域１１ａのアドレス「０ｘ００１０番地（１６進数）」とが一致するため、ポインタ検証部７０は、一致ありと判定することになる。
【００５９】
そして、前述したステップＳ９において、一致ありと判断した場合には、ポインタ検証部７０は、関連ポインタとエラーポインタが格納されたポインタ格納領域１１ａのアドレスとが一致したことを、ポインタ復元部８０に通知する（ステップＳ１３）。この場合に、ポインタ復元部８０は、一致した関連ポインタが格納されるポインタ格納領域１１ａのアドレスであるポインタ候補（ここでは、「０ｘ００１８番地（１６進数）」の２進数）が入力される。また、ポインタ復元部８０は、エラーポインタが格納されたポインタ格納領域１１ａのアドレス（ここでは、「０ｘ００１０番地（１６進数）」の２進数）が入力される。
【００６０】
ポインタ復元部８０は、ポインタ検証部７０から入力された、ポインタ格納領域１１ａのアドレス（ここでは、「０ｘ００１０番地（１６進数）」）に基づき、メモリー空間１１における該当場所を特定する。また、ポインタ復元部８０は、該当場所に格納されるエラーポインタ（ここでは、「０ｘ００１０番地（１６進数）」）を、一致した関連ポインタのポインタ格納領域１１ａのアドレスであるポインタ候補（ここでは、「０ｘ００１８番地（１６進数）」）に変換する（ステップＳ１４）。そして、エラーポインタから真のポインタへの復元を完了する。
【００６１】
以上のように、本実施形態に係る伝送装置１００は、複数のセグメント間を連結するポインタに生じたビットエラーを正しい値に復元し、チェーンメモリーのリンク切れを修復することができるという作用効果を奏する。特に、伝送装置１００は、図９に示すように、リンク切れを検出したチェーンにおける、データ格納領域１１ｂに格納されたパケットを破棄する（装置によっては、他のキューのチェーンを含めてメモリー全体を初期化する）ことなく、リンク切れを修復できる。
【００６２】
また、本実施形態に係る伝送装置１００は、従来の装置と比較して、チェーンメモリーのリンク切れを修復するために必要な処理時間が短時間であり、処理が高速であるという作用効果を奏する。
【００６３】
具体的には、従来の装置において、メモリー全体を初期化するために要する処理時間は、全ワード数と１ワードあたりの書き込み時間との乗算時間（初期化時間＝（全ワード数）×（１ワードあたりのライト時間））が必要である。例えば、メモリーに対して１ワードのリード又はライトに１００ナノ秒を要する場合には、６４ｋワード（ポインタのアドレスのビット幅が１６ビットとなる）のメモリー空間１１に対して、約６５５４マイクロ秒の処理時間が必要である。
【００６４】
これに対し、本実施形態に係る伝送装置１００は、１６ビットのポインタアドレスにおけるニ箇所のビットエラーを救済する場合のポインタ候補数が、１３６通り（１６通りと１２０通りの和）であり、メモリー１０に対して最大１３６回のリードでよいことなる。
【００６５】
すなわち、伝送装置１００は、ポインタ検証部７０による一のポインタ候補の検証時間を、従来装置によるメモリーリードに要する時間（１００ナノ秒）のニ倍の２００ナノ秒としても、最大（全てのポインタ候補を検証した場合）で２７．２マイクロ秒しか掛からない。このため、本実施形態に係る伝送装置１００は、従来の装置による初期化のみの処理時間（約６５５４マイクロ秒）と比較しても、処理が高速であることがわかる。
【００６６】
また、本実施形態に係る伝送装置１００は、チェーンメモリーのリンク切れを修復するために必要な処理時間が、チェーンメモリーの長さに依存しないものである。これに対し、図１０に示すように、双方向ポインタの構成を有するメモリー１０は、チェーンメモリーのテール（Tail）から前ポインタを順に参照して遡ることにより、リンク切れを起こしているポインタを格納するポインタ格納領域１０ａに辿りつくことができる。しかしながら、この方法では、チェーンメモリーの長さが極端に長い場合に、リンク切れを起こしているポインタを格納するポインタ格納領域１０ａに辿りつくまでに、長時間を要することになる。
【００６７】
例えば、１６Ｍワードのメモリー空間１１を、１６ワード単位に１Ｍ（１００万）個のセグメントに分割し、ビットエラーを検出した時点で、チェーンメモリーの長さが２万個のセグメントを占有していた場合を想定する。この場合に、図１０に示すように、チェーンメモリーのテールから遡る方法では、１９９９９回のメモリーリードと判定処理とが必要となる。
【００６８】
これに対し、本実施形態に係る伝送装置１００は、図５（ｃ）に示すように、ニ箇所のビットエラーを救済する場合のポインタ候補数が、３００通り（２４通りと２７６通りの和）であり、メモリー１０に対して最大３００回のリードと判定処理とでよいことなる。
【００６９】
また、本実施形態に係る伝送装置１００は、例えば、ＥＣＣ（error check and correct：エラー訂正機能）付きのメモリーのようなメモリーリソースを必要とせず、複雑な符号理論を用いていないために、簡単なロジックにて実現が可能である。
【００７０】
特に、ＥＣＣ付きメモリーは、一箇所のビットエラーに対して検出及び訂正することができ、二箇所のビットエラーに対してビットエラーを検出することができる（訂正はできない）が、三箇所以上のビットエラーに対して検出及び訂正することができない。これに対し、本実施形態に係る伝送装置１００は、複数箇所のビットエラーに対して、対応する反転パターンを反転パターン格納部４０に格納しておけば、訂正可能な個数に制限はないという作用効果を奏する。
【００７１】
なお、本実施形態に係る伝送装置１００は、図３及び図４に示す全１３６通りの反転パターンを反転パターン格納部４０に格納する例を示したが、図３に示す１６通りの反転パターンと共に、図１１に示す各１６通りの反転パターンを適宜組み合わせて格納してもよい。
【００７２】
なお、図１１（ａ）に示す反転パターンは、図３に示す反転パターンに対してビットを反転させるビット位置の上位にあるビットに対しても反転させるビットパターンを示している。また、図１１（ｂ）に示す反転パターンは、図３に示す反転パターンに対してビットを反転させるビット位置の下位にあるビットに対しても反転させるビットパターンを示している。また、図１１（ｃ）に示す反転パターンは、図３に示す反転パターンに対してビットを反転させるビット位置の上位及び下位にあるビットに対しても反転させるビットパターンを示している。
【００７３】
これにより、宇宙線によるメモリエラーが隣り合うビットで生じる可能性が高い場合を想定し、反転パターン格納部４０に格納する反転パターン数を抑制しつつ、真のポインタとなるポインタ候補を算出するための反転パターンが格納される確率を高めることができる。
【００７４】
また、本実施形態に係る伝送装置１００は、ポインタ検証部７０が、ポインタ候補リストに基づき、真のポインタを導出していたが、このポインタ候補リストには、真のポインタに明らかに該当しない、検証不要なデータ格納領域１１ｂのアドレスも含まれている。そこで、データ格納領域１１ｂのアドレスをポインタ候補リストに含まないようにすることが好ましい。
【００７５】
すなわち、各セグメントが２のｎ乗のワードで構成されている場合に、ビット位置の第０ビットから第ｎ−１ビットの値が１であるポインタ候補は、ポインタ格納領域１１ａのアドレスに該当しないため、ポインタ予測部５０が、このポインタ候補を削除することが好ましい。
【００７６】
例えば、各セグメントが４ワードで構成されている場合に、ビット位置の第０ビット及び／又は第１ビットの値が１であるポインタ候補は、ポインタ格納領域１１ａのアドレスに該当しないため、ポインタ予測部５０が、このポインタ候補を削除することが好ましい。具体的には、図６において、第１行目（第０ビット反転）及び第２行目（第１ビット反転）のポインタ候補を削除し、図７において、第１行目（第１ビット反転、第０ビット反転）から第２９行目（第１５ビット反転、第１ビット反転）までのポインタ候補を削除する。
【００７７】
また、本実施形態に係る伝送装置１００は、予め、反転パターン格納部４０に反転パターンを格納しているが、図１２に示すように、反転パターン格納部４０の替わりに、反転パターン生成部９０を備える構成としてもよい。
【００７８】
反転パターン生成部９０は、ポインタ予測部５０からの指令（ビットエラー数）に基づき、既存の組み合わせ生成アルゴリズム等（「M.Beeler, R.W Gosper and R.Schroeppel」等による）を用いて、対応する反転パターンを生成し、ポインタ予測部５０に出力する。これにより、反転パターン生成部９０は、反転パターン格納部４０に予め格納する反転パターンに対する伝送装置１００の設計思想に応じた制限が無く、エラーポイントのビットエラー数に対して、柔軟に対応することができるという作用効果を奏する。
【００７９】
［付記］  以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  メモリー空間が複数のセグメントに領域分けされ、任意のセグメントから連結される他のセグメントを特定する情報である次ポインタ及び前記任意のセグメントを連結する他のセグメントを特定する情報である前ポインタを格納するポインタ格納領域、並びにデータを格納するデータ格納領域を各セグメントに有するチェーンメモリーと、前記次ポインタに生じたビットエラーを検出する誤り検出部と、前記ビットエラーが生じた次ポインタのビットパターンと前記ビットエラーの候補となる一又は複数箇所のビットを反転させるビットパターンとの排他的論理和を演算し、真の次ポインタを含む次ポインタ候補を算出するポインタ予測部と、前記次ポインタ候補のうち一の次ポインタ候補を選択し、当該一の次ポインタ候補が示す前記ポインタ格納領域のアドレスを特定すると共に、当該アドレスの前記ポインタ格納領域に格納された前ポインタが示す前記ポインタ格納領域のアドレスと前記ビットエラーが生じた次ポインタが格納された前記ポインタ格納領域のアドレスとの一致の有無を判定するポインタ検証部と、前記ポインタ検証部により一致ありと判定した場合に、前記ビットエラーが生じた次ポインタを、前記一致した前ポインタが格納されるポインタ格納領域のアドレスである前記次ポインタ候補に変換するポインタ復元部と、を備えている伝送装置。
【００８０】
（付記２）  前記次ポインタのうちビットエラーの候補となる一及び／又は複数箇所のビットを反転させるビットパターンを格納する反転パターン格納部を備えていることを特徴とする伝送装置。
【００８１】
（付記３）  前記次ポインタのうちビットエラーの候補となる一及び／又は複数箇所のビットを反転させるビットパターンを生成する反転パターン生成部を備えていることを特徴とする伝送装置。
【００８２】
（付記４）  前記反転パターン格納部が、前記次ポインタのビットパターンのうち一箇所のビットを反転させるビットパターンと、当該ビットパターンに対して前記ビットを反転させるビット位置の上位及び／又は下位にあるビットを反転させるビットパターンとを格納していることを特徴とする伝送装置。
【００８３】
（付記５）  前記反転パターン格納部が、前記次ポインタの一箇所のビットを反転させるビットパターンと、前記次ポインタの二箇所のビットを反転させるビットパターンとからなる反転パターンを格納していることを特徴とする伝送装置。
【００８４】
（付記６）  前記各セグメントが２のｎ乗のワードで構成されている場合に、前記ポインタ予測部が、前記次ポインタ候補のうち、ビット位置の第０ビットから第ｎ−１ビットまでの値が１であるポインタ候補を削除することを特徴とする伝送装置。
【００８５】
（付記７）  メモリー空間が複数のセグメントに領域分けされ、任意のセグメントから連結される他のセグメントを特定する次ポインタ及び前記任意のセグメントを連結する他のセグメントを特定する前ポインタを格納するポインタ格納領域、並びにデータを格納するデータ格納領域を各セグメントに有するチェーンメモリーのリンク切れ修復方法であって、前記次ポインタに生じたビットエラーを検出する誤り検出ステップと、前記ビットエラーが生じた次ポインタのビットパターンと前記ビットエラーの候補となる一又は複数箇所のビットを反転させるビットパターンとの排他的論理和を演算し、真の次ポインタを含む次ポインタ候補を算出するポインタ予測ステップと、前記次ポインタ候補のうち一の次ポインタ候補を選択し、当該一の次ポインタ候補が示す前記ポインタ格納領域のアドレスを特定すると共に、当該アドレスの前記ポインタ格納領域に格納された前ポインタが示す前記ポインタ格納領域のアドレスと前記ビットエラーが生じた次ポインタが格納された前記ポインタ格納領域のアドレスとの一致の有無を判定するポインタ検証ステップと、前記ポインタ検証ステップにより一致ありと判定した場合に、前記ビットエラーが生じた次ポインタを、前記一致した前ポインタが格納されるポインタ格納領域のアドレスである前記次ポインタ候補に変換するポインタ復元ステップと、を有することを特徴とするリンク切れ修復方法。
【００８６】
（付記８）  前記次ポインタの一及び／又は複数箇所のビットを反転させるビットパターンを生成する反転パターン生成ステップを有することを特徴とするリンク切れ修復方法。
【００８７】
（付記９）  前記ポインタ検証ステップにより一致なしと判定した場合に、前記ポインタ検証ステップが、前記次ポインタ候補のうち他の次ポインタ候補を選択し、当該他の次ポインタ候補が示す前記ポインタ格納領域のアドレスを特定すると共に、当該アドレスの前記ポインタ格納領域に格納された前ポインタが示す前記ポインタ格納領域のアドレスと前記ビットエラーが生じた次ポインタが格納された前記ポインタ格納領域のアドレスとの一致の有無を判定するステップを有することを特徴とするリンク切れ修復方法。
【００８８】
（付記１０）  前記反転パターン生成ステップが、前記次ポインタの一箇所のビットを反転させるビットパターンを生成するステップを有することを特徴とするリンク切れ修復方法。
【００８９】
（付記１１）  前記ポインタ検証ステップにより、前記次ポインタ候補の全ての次ポインタ候補において一致なしと判定した場合に、前記反転パターン生成ステップが、前記次ポインタの二箇所のビットを反転させるビットパターンを生成するステップを有することを特徴とするリンク切れ修復方法。
【符号の説明】
【００９０】
１０    メモリー
１０ａ  ポインタ格納領域
１１    メモリー空間
１１ａ  ポインタ格納領域
１１ｂ  データ格納領域
１２    キュー
１２ａ  低優先キュー
１２ｂ  高優先キュー
２０    インターフェース
３０    誤り検出部
４０    反転パターン格納部
５０    ポインタ予測部
６０    ポインタ候補格納部
７０    ポインタ検証部
８０    ポインタ復元部
９０    反転パターン生成部
１００  伝送装置
【図１】
2010182086.tif 000003
【図３】
2010182086.tif 000004
【図４】
2010182086.tif 000005
【図５】
2010182086.tif 000006
【図６】
2010182086.tif 000007
【図７】
2010182086.tif 000008
【図８】
2010182086.tif 000009
【図１１】
2010182086.tif 000010
【図１２】
2010182086.tif 000011
【図２】
2010182086.tif 000012
【図９】
2010182086.tif 000013
【図１０】
2010182086.tif 000014