(57)【要約】【課題】正確な読み出し処理を高速で行えるようにすること。【解決手段】ネットワークを介して入力された通常データを通常ＣＬＫの立ち上がりに合わせて、同一アドレスが割り振られた２つの記憶領域の一方に格納し、通常データ反転した反転データを反転ＣＬＫの立ち上がりに合わせて、他方の記憶領域に格納する。そして、通常ＣＬＫの立ち上がりに合わせて通常ＣＬＫを読み出し、反転ＣＬＫの立ち上がりに合わせて反転データを読み出す。そして、読み出した通常データおよび反転データそれぞれのパリティエラーのチェックを、それぞれ読み出しを実行したＣＬＫの次のＣＬＫの立ち上がりに合わせて実行する。そして、それぞれのパリティエラーのチェック結果に基づいて、エラーが検出されなかったデータを出力データとして出力する。【選択図】図１−２
2011015096.tif 000002
【特許請求の範囲】
【請求項１】
第一の領域および第二の領域それぞれにデータを記憶する記憶部と、
第一のクロック信号の立ち上がり周期に同調して前記第一の領域に記憶されているデータを読み出すとともに、当該第一のクロック信号と立ち上がり間隔が同一である第二のクロック信号の立ち上がり周期に同調して前記第二の領域に記憶されているデータを読み出すデータ読み出し処理部と、
前記データ読み出し処理部によって読み出されたデータそれぞれのパリティエラーの有無を検出する検出部と、
前記検出部による検出結果に基づいて、パリティエラーが検出されなかったデータを所定の出力部に出力するデータ出力部と
を有したことを特徴とする記憶装置。
【請求項２】
前記データを、前記第一のクロック信号の立ち上がり周期に同調して前記第一の領域に書き込むとともに、当該データを反転させたデータを前記第二のクロック信号の立ち上がり周期に同調して前記第二の領域に書き込むデータ書き込み処理部と、
前記パリティエラーの有無を検出する前に、前記データ読み出し処理部によって前記第二の領域から読み出されたデータを反転させる反転部とをさらに有し、
前記検出部は、前記データ読み出し処理部によって前記第一の領域から読み出されたデータと、前記データ読み出し処理部によって前記第二の領域から読み出されたのちに前記反転部によって反転されたデータとを前記パリティエラーの有無の検出対象とし、
前記データ出力部は、前記検出部によりパリティエラーが検出されなかった検出対象データを所定の出力部に出力することを特徴とする請求項１に記載の記憶装置。
【請求項３】
第一の領域および第二の領域それぞれにパケットデータを記憶する記憶部と、
第一のクロック信号の立ち上がり周期に同調して前記第一の領域に記憶されているパケットデータを読み出すとともに、当該第一のクロック信号と立ち上がり間隔が同一である第二のクロック信号の立ち上がり周期に同調して前記第二の領域に記憶されているパケットデータを読み出すデータ読み出し処理部と、
前記データ読み出し処理部によって読み出されたパケットデータそれぞれのパリティエラーの有無を検出する検出部と、
前記検出部による検出結果に基づいて、パリティエラーが検出されなかったパケットデータを所定の出力部に出力するデータ出力部と
を有したことを特徴とするパケット中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、記憶装置およびパケット中継装置に関する。
【背景技術】
【０００２】
従来より、コンピュータで扱われるデータ量の増大により、メモリに対する書き込み処理や読み出し処理などの動作の高速化が進められている。特に、ネットワーク上でデータの中継を行うパケット中継装置では、近年のデータ転送量の急激な増大に伴い、メモリに対して正確な動作を高速で実行することが求められている。
【０００３】
パケット中継装置は、データ転送時に、パケットに含まれる送信先情報に基づいて、データを送信先へ転送する装置であり、送信先にデータを転送するまでの間、受信したデータを一時的にメモリに保存する。そして、パケット中継装置は、メモリからデータを順次読み出し、読み出したデータを送信先情報に対応する送信先に転送する。
【０００４】
ここで、メモリからのデータ読み出しに際して、部品故障やソフトエラーなどに起因する読み出しエラーが発生する場合がある。そこで、近年、発生した読み出しエラーに対応するために、様々な技術が知られている。
【０００５】
例えば、データの読み出しエラーを修正する技術としては、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）回路を用いた技術がある。ＥＣＣ回路を有するパケット中継装置は、図７に示すように、入力されたデータに対してＥＣＣを付加し、ＥＣＣを付加したデータをメモリに書き込む。そして、パケット中継装置は、メモリから読み出したデータのエラーをチェックし、エラーが検出された場合、検出されたエラーを修正し、修正したデータを出力する。なお、図７は、ＥＣＣ回路を用いたエラー修正を説明するための図である。
【０００６】
しかしながら、上記したＥＣＣ回路を用いてエラーを修正する技術では、１ｂｉｔのエラーは修正することができるが、２ｂｉｔ以上のエラーは修正することができない。したがって、パケットをセグメント化して管理するパケット中継装置では、２ｂｉｔ以上のエラーが発生し、修正できない状況に陥った場合、エラー発生以降のパケットの組み立て順序が分からなくなり、継続動作が不可能になる。
【０００７】
そこで、２ｂｉｔ以上のエラーが発生した場合であっても対応可能である記憶装置として、メモリを二重化することにより、データを二重に記憶する記憶装置が知られている（例えば、特許文献１参照）。具体的には、データを二重に記憶する記憶装置は、図８に示すように、メモリに０面および１面の２つの記憶領域を設け、０面および１面のそれぞれに同一のデータを書き込む。そして、記憶装置は、読み出し制御部によって２つの記憶領域からデータを読み出す際に、まず、セレクタによってどちらか一方の領域を選択し、選択した領域からデータを読み出し、ＦＦ（ｆｌｉｐ  ｆｌｏｐ）を介してエラーチェックを行う。そして、エラーが検出されなかった場合、読み出し制御部は、ＦＦに保持していたデータを出力する。
【０００８】
一方、エラーが検出された場合、読み出し制御部は、再度、他方の領域からデータを読み出し、上述した処理を実行した後、データを出力する。なお、図８は、メモリの二重化を説明するための図である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平２−０４８７５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、上記したデータを二重に記憶する技術では、エラーが検出された場合、再度データを読み出す処理が必要になるので、高速動作が困難となる。具体的には、読み出し制御部は、処理を同期させるための信号であるＣＬＫ（Ｃｌｏｃｋ）信号の立ち上がり周期に合わせて、メモリに対して読み出しアドレスを順次入力する。例えば、読み出し制御部は、図９に示すように、ＣＬＫ１の立ち上がりに合わせて、０面からデータを読み出すための読み出しアドレスである０面アドレス１を入力する。また、読み出し制御部は、図９に示すように、ＣＬＫ２や３などの立ち上がりに合わせて、０面アドレス２〜１面アドレス２をメモリに対して順次入力する。
【００１１】
そして、入力された読み出しアドレスに対応するデータが、読み出しアドレスの入力が行われたＣＬＫの次のＣＬＫの立ち上がりに合わせて、メモリから出力される。例えば、図９に示すように、０面アドレス１に対応する０面ｄａｔａ１が、ＣＬＫ２の立ち上がりに合わせて、メモリの０面から出力される。また、図９に示すように、０面アドレス２〜１面アドレス２に対応する０面ｄａｔａ２〜１面ｄａｔａ２が、ＣＬＫ３や４などの立ち上がりに合わせて、メモリから順次出力される。
【００１２】
そののち、読み出し制御部は、データの出力が行われたＣＬＫの次のＣＬＫの立ち上がりに合わせて、データのパリティエラーをチェックする。例えば、読み出し制御部は、図９に示すように、ＣＬＫ３の立ち上がりに合わせて、０面ｄａｔａ１のパリティエラーをチェックする。また、読み出し制御部は、図９に示すように、ＣＬＫ４や５の立ち上がりに合わせて、各データのパリティエラーを順次チェックする。
【００１３】
すなわち、読み出し制御部がメモリからデータを読み出し、読み出したデータのパリティエラーのチェックが終了するまでには、ＣＬＫ２周期分の時間が必要である。なお、図９は、二重化したメモリからのデータ読み出しを説明するためのタイムチャートであり、図中に示したＰＴＹは、パリティを示している。
【００１４】
ここで、パリティエラーのチェックにおいて、エラーが検出された場合、読み出し制御部は、パリティエラーのチェックを行ったＣＬＫの次のＣＬＫの立ち上がりに合わせて、もう一方の記憶領域に対して読み出しアドレスを入力する。例えば、０面アドレス２に対応する０面ｄａｔａ２にエラーが検出された場合、読み出し制御部は、図９に示すように、ＣＬＫ５の立ち上がりに合わせて、１面に記憶されているデータを読み出すための読み出しアドレスである１面アドレス２を入力する。そして、上述したように、データの出力およびパリティエラーのチェックが、ＣＬＫの立ち上がり周期に合わせて実行される。
【００１５】
したがって、一方の記憶領域から読み出したデータにパリティエラーが検出された後、他方の記憶領域からデータを読み出し、読み出したデータのパリティエラーのチェックが終了するまでにＣＬＫ３周期分の時間が必要となる。
【００１６】
すなわち、上記した従来の技術では、正確な読み出し処理を高速で行うことができないという課題があった。なお、パケット中継装置のみならず、正確な動作を高速で行うことが求められる装置が有する記憶装置であるならば、上述したように、正確な読み出し処理を高速で行うことができないという同様の課題があった。
【００１７】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、正確な読み出し処理を高速で行うことが可能となる記憶装置およびパケット中継装置を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上述した課題を解決し、目的を達成するため、この装置は、記憶部が、第一の領域および第二の領域それぞれにデータを記憶する。そして、データ読み出し処理部が、第一のクロック信号の立ち上がり周期に同調して前記第一の領域に記憶されているデータを読み出すとともに、当該第一のクロック信号と立ち上がり間隔が同一である第二のクロック信号の立ち上がり周期に同調して前記第二の領域に記憶されているデータを読み出す。そして、検出部が、前記データ読み出し処理部によって読み出されたデータそれぞれのパリティエラーの有無を検出し、データ出力部が、前記検出部による検出結果に基づいて、パリティエラーが検出されなかったデータを所定の出力部に出力することを要件とする。
【発明の効果】
【００１９】
開示の装置は、正確な読み出し処理を高速で行うことが可能となる。
【図面の簡単な説明】
【００２０】
【図１−１】図１−１は、実施例１におけるパケット中継装置の概要を説明するための図である。
【図１−２】図１−２は、実施例１におけるパケット中継装置の特徴を説明するための図である。
【図２】図２は、実施例１におけるパケット中継装置の構成を説明するためのブロック図である。
【図３】図３は、セレクタ制御部を説明するための図である。
【図４】図４は、実施例１におけるパケット中継装置による書き込み処理の手順を説明するための図である。
【図５】図５は、実施例１におけるパケット中継装置による読み出し処理の手順を説明するための図である。
【図６】図６は、ポインタアドレスを説明するための図である。
【図７】図７は、ＥＣＣ回路を用いたエラー修正を説明するための図である。
【図８】図８は、メモリの二重化を説明するための図である。
【図９】図９は、二重化したメモリからのデータ読み出しを説明するためのタイムチャートである。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照して、本願の開示する記憶装置およびパケット中継装置の実施例を詳細に説明する。なお、以下では、本願の開示する記憶装置が組み込まれたパケット中継装置を実施例として説明する。
【実施例１】
【００２２】
［実施例１におけるパケット中継装置の概要および特徴］
まず最初に、図１−１および図１−２を用いて、実施例１におけるパケット中継装置の概要および特徴を説明する。図１−１は、実施例１におけるパケット中継装置の概要を説明するための図であり、図１−２は実施例1におけるパケット中継装置の特徴を説明するための図である。
【００２３】
実施例１におけるパケット中継装置は、パケットデータ（以下、データと記す）に含まれる送信先情報に基づいて、データを送信先へ転送する装置であり、ＣＬＫ（Ｃｌｏｃｋ）信号に同期して、データ転送における各種処理を実行することを概要とする。
【００２４】
具体的には、実施例１におけるパケット中継装置は、図１−１の（Ａ）に示すように、データ転送における各種処理をＣＬＫの立ち上がりに合わせて実行するパケット処理部を有する。パケット処理部は、図１−１の（Ａ）に示すように、ＣＬＫの立ち上がりに合わせて、入力されたデータをメモリに書き込む「書き込み処理部」と、ＣＬＫの立ち上がりに合わせて、メモリに書き込まれたデータを読み出して出力する「読み出し処理部」とを有する。
【００２５】
ここで、実施例１におけるパケット中継装置には、図１−１の（Ａ）に示すように、０面と１面との２つの記憶領域を有するメモリが組み込まれている。例えば、実施例１におけるパケット中継装置には、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリが組み込まれている。
【００２６】
書き込み処理部は、ＣＬＫの立ち上がりに合わせて、入力されたデータを０面と１面とにそれぞれ書き込む。
【００２７】
また、読み出し処理部は、ＣＬＫの立ち上がりに合わせて、０面と１面とからデータをそれぞれ読み出す。
【００２８】
そして、読み出し処理部は、ＣＬＫの立ち上がりに合わせて、０面および１面それぞれから読み出したデータのパリティエラーをチェックし、パリティエラーが検出されなかったデータを出力する。
【００２９】
なお、パケット処理部は、図１−１の（Ｂ）に示すように、同一の時間間隔で立ち上がるＣＬＫ（ＣＬＫ１、ＣＬＫ２、ＣＬＫ３、ＣＬＫ４およびＣＬＫ５）に合わせて書き込み処理、読み出し処理、パリティエラー検出処理、出力処理を実行する。
【００３０】
ここで、実施例１におけるパケット中継装置は、正確な読み出し処理を高速で行うことが可能となることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１におけるパケット中継装置は、図１−２の（Ａ）に示すように、通常のＣＬＫ（通常ＣＬＫ）とともに、通常ＣＬＫを反転させた反転ＣＬＫを用いて、データ転送における各種処理を実行する。すなわち、実施例１におけるパケット中継装置は、反転ＣＬＫの立ち上がりに合わせることにより、通常ＣＬＫの立ち下がりに同期して処理を実行することとなる。
【００３１】
まず、書き込み処理部は、入力されたデータのｂｉｔ列（以下、通常データと記す）を反転した反転データを生成する。例えば、書き込み処理部は、図１−２の（Ａ）に示すように、通常データ「ｂｉｔ列：１１０１０」が入力された場合、反転データ「ｂｉｔ列：００１０１」を生成する。
【００３２】
そして、書き込み処理部は、通常ＣＬＫの立ち上がりに合わせて０面に通常データを書き込み、反転ＣＬＫの立ち上がりに合わせて１面に反転データを書き込む。なお、０面と１面とには、同一のアドレスが割り当てられている。例えば、書き込み処理部は、図１−２の（Ａ）に示す通常ＣＬＫ１の立ち上がりに合わせて通常データ「ｂｉｔ列：１１０１０」の最初の「１」をメモリの０面に書き込む。そして、書き込み処理部は、反転ＣＬＫ１の立ち上がりに合わせて反転データ「ｂｉｔ列：００１０１」の最初の「０」をメモリの１面に書き込む。すなわち、書き込み処理部は、ＣＬＫ１周期分の時間で２つのデータを０面および１面それぞれに書き込む。
【００３３】
同様に、書き込み処理部は、通常ＣＬＫ２〜５の立ち上がりに合わせて残りの通常データ「１０１０」を順次０面に書き込み、反転ＣＬＫ２〜５の立ち上がりに合わせて残りの反転データ「０１０１」を順次１面に書き込む。これにより、書き込み処理部は、図１−２の（Ａ）に示すように、通常データと反転データとを合成した合成データのｂｉｔ列「１０１００１１００１」を同一アドレスが割り当てられた２つの記憶領域に分離して書き込む。
【００３４】
読み出し処理部は、同一アドレスが割り当てられた２つの記憶領域に分離して格納されている合成データを読み出す。具体的には、読み出し処理部は、通常ＣＬＫの立ち上がりに合わせてメモリの０面から通常データを読み出し、反転ＣＬＫの立ち上がりに合わせて、メモリの１面から反転データを読み出す。
【００３５】
例えば、読み出し処理部は、同一アドレスが割り当てられたメモリの０面および１面に分離して格納している合成データ「ｂｉｔ列：１０１００１１００１」を読み出す場合、図１−２の（Ｂ）に示すように、通常ＣＬＫ１〜５の立ち上がりに合わせて、合成データの通常データを０面から順次読み出す。また、読み出し処理部は、図１−２の（Ｂ）に示すように、反転ＣＬＫ１〜５の立ち上がりに合わせて、合成データの反転データを１面から順次読み出す。
【００３６】
そして、読み出し処理部は、読み出したデータに予め付与されているパリティビットを用いてパリティエラーのチェックを実行する。例えば、読み出し処理部は、図１−２の（Ｂ）に示すように、メモリの０面から読み出した０面読み出しデータのパリティエラーを通常ＣＬＫ２〜６の立ち上がりに合わせて順次チェックする。
【００３７】
また、読み出し処理部は、メモリの１面から読み出したデータについては、ｂｉｔ列を反転させたのち、パリティエラーをチェックする。例えば、パケット処理部は、図１−２の（Ｂ）に示すように、メモリの１面から読み出した１面読み出しデータ「ｂｉｔ列：００１０１」を反転させた「ｂｉｔ列：１１０１０」のパリティエラーを反転ＣＬＫ２〜６の立ち上がりに合わせて、チェックする。
【００３８】
そして、パケット処理部は、０面読み出しデータと１面読み出しデータとを比較して、エラーが発生したｂｉｔを正常なｂｉｔに切り替えたデータを所定の出力部に出力する。例えば、仮に、図１−２の（Ｂ）に示すように、通常ＣＬＫ５のパリティエラーのチェックにおいて、０面読み出しデータの４番目のｂｉｔが「１」から「０」になったことによりパリティエラーが検出されたとする。また、図１−２の（Ｂ）に示すように、反転ＣＬＫ５のパリティエラーのチェックにおいて、パリティエラーが検出されなかったとする。
【００３９】
上記した場合、パケット処理部は、図１−２の（Ｂ）に示すように、通常ＣＬＫ６の立ち上がりに合わせて、０面読み出しデータ「ｂｉｔ列：１１０００」の４番目の「０」を１面読み出しデータ「ｂｉｔ列：１１０１０」の４番目の「１」に切り替える。そして、パケット処理部は、エラーが発生したｂｉｔを正常なｂｉｔに切り替えた出力データ「ｂｉｔ列：１１０１０」を所定の出力部に出力する。
【００４０】
なお、パケット処理部は、「０面読み出しデータ：正常、１面読み出しデータ：正常」、「０面読み出しデータ：正常、１面読み出しデータ：エラー」および「０面読み出しデータ：エラー、１面読み出しデータ：エラー」の場合、０面読み出しデータを所定の出力部に出力する。また、上記したように、パケット処理部は、「０面読み出しデータ：エラー、１面読み出しデータ：正常」の場合、１面読み出しデータを所定の出力部に出力する。
【００４１】
また、パケット処理部は、パリティエラーチェック後のデータの切り替えを通常ＣＬＫの立ち上がりに合わせて実行する。
【００４２】
このようなことから、実施例１におけるパケット中継装置は、ＣＬＫ１周期分の時間で、エラーが検出されたｂｉｔを正常なｂｉｔに切り替えることができ、上記した主たる特徴の通り、正確な読み出し処理を高速で行うことが可能となる。
【００４３】
［実施例１におけるパケット中継装置の構成］
次に、図２を用いて、実施例１におけるパケット中継装置の構成を説明する。図２は、実施例１におけるパケット中継装置の構成を説明するためのブロック図である。
【００４４】
図２に示すように、実施例１におけるパケット中継装置１０は、メモリ２０と、パケット処理部３０と、入力用Ｉ／Ｆ４０と、出力用Ｉ／Ｆ４１とを有する。
【００４５】
入力用Ｉ／Ｆ４０は、図示しないネットワークを介して入力されたパケットデータ（以下、データと記す）をパケット処理部３０に出力する。
【００４６】
出力用Ｉ／Ｆ４１は、パケット処理部３０が出力したデータを、図示しないネットワークを介して接続されている送信先に出力する。
【００４７】
メモリ２０は、入力用Ｉ／Ｆ４０を介して入力されたデータを記憶し、特に本実施例に密接に関連するものとしては、図２に示すように、０面２１と、１面２２との２つの記憶領域を有する。ここで、０面と１面には、同一アドレスが割り振られている。
【００４８】
０面２１は、入力用Ｉ／Ｆ４０を介して入力されたデータのｂｉｔ列（以下、通常データと記す）を記憶する。
【００４９】
１面２２は、後述するパケット処理部３０によって通常データが反転された反転データを記憶する。
【００５０】
パケット処理部３０は、データ転送における各種処理を実行し、特に本実施例に密接に関係するものとしては、書き込み処理部５０と、読み出し処理部６０とを有する。
【００５１】
書き込み処理部５０は、入力用Ｉ／Ｆ４０を介して入力されたデータをメモリ２０に対して書き込む処理を実行し、特に本実施例に密接に関係するものとしては、ＣＬＫ発生部５１と、ＣＬＫ反転部５２と、入力データ反転部５３と、セレクタ５４とを有する。
【００５２】
ＣＬＫ発生部５１は、パケット処理部３０における各種処理を同期させるための信号であるＣＬＫ（以下、通常ＣＬＫと記す）を発生する。例えば、ＣＬＫ発生部５１は、図１−２の（Ａ）に示す通常ＣＬＫを発生する。
【００５３】
ＣＬＫ反転部５２は、ＣＬＫ発生部５１が発生した通常ＣＬＫを反転し、通常ＣＬＫを反転ＣＬＫに変換する。例えば、ＣＬＫ反転部５２は、図１−２の（Ａ）に示すように、通常ＣＬＫを反転して、反転ＣＬＫに変換する。
【００５４】
入力データ反転部５３は、入力用Ｉ／Ｆ４０を介して入力された通常データのｂｉｔ列を反転させた反転データを生成し、生成した反転データを後述するセレクタ５４に送信する。例えば、通常データ「ｂｉｔ列：１１０１０」が入力された場合、入力データ反転部５３は、反転データ「ｂｉｔ列：００１０１」を生成し（図１−２の（Ａ）参照）、生成した反転データ「ｂｉｔ列：００１０１」を後述するセレクタ５４に送信する。
【００５５】
セレクタ５４は、入力用Ｉ／Ｆ４０を介して入力された通常データと、入力データ反転部５３から受信した反転データとを合成した合成データを、同一アドレスが割り当てられたメモリ２０の０面２１および１面２２に分離して格納する。具体的には、セレクタ５４は、合成データの通常データを通常ＣＬＫの立ち上がりに合わせて０面２１に格納し、合成データの反転データを反転ＣＬＫの立ち上がりに合わせて１面２２に格納する。
【００５６】
例えば、通常データ「ｂｉｔ列：１１０１０」および反転データ「ｂｉｔ列：００１０１」を受信した場合、セレクタ５４は、通常データと反転データとを合成データ「ｂｉｔ列：１０１００１１００１」に合成する（図１−２の（Ａ）参照）。そして、セレクタ５４は、ＣＬＫ発生部５１が発生させた通常ＣＬＫの立ち上がりに合わせて、合成データの通常データをメモリ２０の０面２１に格納する。例えば、セレクタ５４は、通常ＣＬＫ１〜５の立ち上がりに合わせて、合成データ「ｂｉｔ列：１０１００１１００１」の通常データ「ｂｉｔ列：１１０１０」を順次０面２１に格納する（図１−２の（Ａ）参照）。
【００５７】
また、セレクタ５４は、ＣＬＫ反転部５２によって通常ＣＬＫが反転された反転ＣＬＫの立ち上がりに合わせて、合成データの反転データをメモリ２０の１面２２に格納する。例えば、セレクタ５４は、反転ＣＬＫ１〜５の立ち上がりに合わせて、合成データ「ｂｉｔ列：１０１００１１００１」の反転データ「ｂｉｔ列：００１０１」を順次１面２２に格納する（図１−２の（Ａ）参照）。
【００５８】
読み出し処理部６０は、０面２１および１面２２によって分離して記憶された合成データを読み出す読み出し処理を実行し、特に本実施例に密接に関係するものとしては、ＦＦ（ｆｌｉｐ  ｆｌｏｐ）６１と、ＦＦ６２と、１面データ反転部６３と、０面検出部６４と、１面検出部６５と、ＦＦ６６と、ＦＦ６７と、セレクタ制御部６８と、セレクタ６９とを有する。
【００５９】
なお、ＦＦ６１、ＦＦ６２、ＦＦ６６およびＦＦ６７は、１ｂｉｔの情報を一時的に保持することができる論理回路であり、読み出し処理部が読み出し処理を実行する際の各種処理をＣＬＫの立ち上がりに同期して行うことを制御する。
【００６０】
ＦＦ６１は、通常ＣＬＫの立ち上がりに合わせて、０面２１から合成データの通常データを読み出す。例えば、ＦＦ６１は、通常ＣＬＫ１〜５の立ち上がりに合わせて、通常データ「ｂｉｔ列：１１０１０」を０面２１から順次読み出す（図１−２の（Ｂ）参照）。
【００６１】
そして、ＦＦ６１は、読み出し処理を行った次の通常ＣＬＫの立ち上がりに合わせて、０面２１から読み出した０面読み出しデータを、後述する０面検出部６４およびＦＦ６６に順次送信する。例えば、ＦＦ６１は、通常ＣＬＫの２〜６の立ち上がりに合わせて、０面読み出しデータ「ｂｉｔ列：１１０１０」を後述する０面検出部６４およびＦＦ６６に順次送信する（図１−２の（Ｂ）参照）。
【００６２】
１面データ反転部６３は、ＦＦ６２が読み出した反転データのｂｉｔ列を、ＦＦ６２に取り込まれる前に反転させる。例えば、ＦＦ６２が１面２２から「ｂｉｔ列：００１０１」を読み出した場合、１面データ反転部６３は、「ｂｉｔ列：００１０１」を反転して「ｂｉｔ列：１１０１０」とする。
【００６３】
ＦＦ６２は、反転ＣＬＫの立ち上がりに合わせて、１面２２から合成データの反転データを読み出す。例えば、ＦＦ６２は、反転ＣＬＫ１〜５の立ち上がりに合わせて、合成データの反転データ「ｂｉｔ列：００１０１」を１面２２から順次読み出す（図１−２の（Ｂ）参照）。
【００６４】
そして、ＦＦ６２は、読み出し処理を行った次のＣＬＫの立ち上がりに合わせて、１面２２から読み出し、１面データ反転部６３によって反転された１面読み出しデータを、後述する１面検出部６５およびＦＦ６７に送信する。例えば、ＦＦ６２は、反転ＣＬＫの２〜６の立ち上がりに合わせて、一面読み出しデータ「ｂｉｔ列：１１０１０」を後述する１面検出部６５およびＦＦ６７に順次送信する（図１−２の（Ｂ）参照）。
【００６５】
０面検出部６４は、ＦＦ６１から受信した０面読み出しデータに予め付与されたパリティビットを用いてパリティエラーをチェックし、チェック結果を後述するセレクタ制御部６８に送信する。例えば、０面検出部６４は、０面読み出しデータ「ｂｉｔ列：１１０１０」のパリティエラーをチェックし、チェック結果をセレクタ制御部６８に送信する。
【００６６】
１面検出部６５は、ＦＦ６２から受信した１面読み出しデータに予め付与されたパリティビットを用いてパリティエラーをチェックし、チェック結果を後述するセレクタ制御部６８に送信する。例えば、１面検出部６５は、１面読み出しデータ「ｂｉｔ列：１１０１０」のパリティエラーをチェックし、チェック結果を後述するセレクタ制御部６８に送信する。
【００６７】
ＦＦ６６は、パリティエラーのチェックが実行された通常ＣＬＫの次の通常ＣＬＫの立ち上がりに合わせて、ＦＦ６１から受信した０面読み出しデータを、後述するセレクタ６９に順次送信する。例えば、ＦＦ６６は、通常ＣＬＫの３〜７の立ち上がりに合わせて、０面読み出しデータ「ｂｉｔ列：１１０１０」を後述するセレクタ６９に順次送信する（図１−２の（Ｂ）参照）。
【００６８】
ＦＦ６７は、パリティエラーのチェックが実行された反転ＣＬＫの次の反転ＣＬＫの立ち上がりに合わせて、ＦＦ６２から受信した１面読み出しデータを、後述するセレクタ６９に順次送信する。例えば、ＦＦ６７は、通常ＣＬＫの３〜７の立ち上がりに合わせて、１面読み出しデータ「ｂｉｔ列：１１０１０」を後述するセレクタ６９に順次送信する（図１−２の（Ｂ）参照）。
【００６９】
セレクタ制御部６８は、０面検出部６４および１面検出部６５から受信したチェック結果に基づいて、パリティエラーが検出されなかったデータを、後述するセレクタ６９が取り込むように制御する。具体的には、セレクタ制御部６８は、図３に示すように、０面読み出しデータのチェック結果が「正常」であり、１面読み出しデータのチェック結果が「正常」であった場合、０面読み出しデータを出力データとして取り込むようにセレクタ６９を制御する。
【００７０】
また、セレクタ制御部６８は、図３に示すように、「０面：エラー、１面：正常」であった場合、または、「０面：正常、１面：エラー」であった場合、それぞれ正常であった「１面」または「０面」のデータを出力データとして取り込むようにセレクタ６９を制御する。
【００７１】
また、セレクタ制御部６８は、図３に示すように、「０面」および「１面」が共に「エラー」であった場合、「０面」のデータを出力データとして取り込むようにセレクタ６９を制御するとともに、エラー信号を出力用Ｉ／Ｆ４１に出力する。
【００７２】
例えば、図１−２の（Ｂ）に示す通常ＣＬＫ５のパリティエラーのチェックにおいて、０面２１から読み出した読み出しデータの４番目のｂｉｔが「１」から「０」になったことによりエラーが検出されたとする。また、図１−２の（Ｂ）に示すように、反転ＣＬＫ５のパリティエラーのチェックにおいて、パリティエラーが検出されなかったとする。上記した場合、セレクタ制御部６８は、図１−２の（Ｂ）に示すように、通常ＣＬＫ６の立ち上がりに合わせて、ＦＦ６６から送信された０面読み出しデータ「ｂｉｔ列：１１０００」の４番目の「０」を取り込まないようにセレクタ６９を制御する。そして、セレクタ制御部６８は、ＦＦ６７から送信された１面読み出しデータ「ｂｉｔ列：１１０１０」の４番目の「１」を出力データとして取り込むようにセレクタ６９を制御する。
【００７３】
セレクタ６９は、ＦＦ６６またはＦＦ６７から取り込んだ出力データを、出力用Ｉ／Ｆ４１に出力する。例えば、セレクタ６９は、出力データ「ｂｉｔ列：１１０１０」を、出力用Ｉ／Ｆ４１に出力する。
【００７４】
［実施例１におけるパケット中継装置による処理の手順］
次に、図４および図５を用いて、実施例１におけるパケット中継装置による処理を説明する。図４は、実施例１におけるパケット中継装置による書き込み処理の手順を説明するための図であり、図５は、実施例１におけるパケット中継装置による読み出し処理の手順を説明するための図である。
【００７５】
［実施例１におけるパケット中継装置による書き込み処理の手順］
図４に示すように、実施例１におけるパケット中継装置１０は、入力用Ｉ／Ｆ４０を介してパケットデータ（データ）が入力されると（ステップＳ１０１肯定）、入力データ反転部５３は、入力されたデータを反転した反転データを生成する（ステップＳ１０２）。
【００７６】
そして、セレクタ５４は、入力用Ｉ／Ｆ４０を介して入力された通常データと入力データ反転部５３によって生成された反転データとを合成する（ステップＳ１０３）。
【００７７】
そののち、セレクタ５４は、ＣＬＫ発生部５１によって発生された通常ＣＬＫの立ち上がりに合わせて、通常データと反転データとを合成した合成データの通常データをメモリ２０の０面２１に格納する（ステップＳ１０４）。
【００７８】
さらに、セレクタ５４は、ＣＬＫ反転部５２によって変換された反転ＣＬＫの立ち上がりに合わせて、合成データの反転データをメモリ２０の１面２２に格納し（ステップＳ１０５）、未格納ｂｉｔが残っているか否かの判定を行う（ステップＳ１０６）。
【００７９】
ここで、未格納ｂｉｔが残っていた場合（ステップＳ１０６肯定）、セレクタ５４は、ステップＳ１０４に戻って、通常ＣＬＫの立ち上がりに合わせて、合成データの通常データを０面２１に格納する。
【００８０】
一方、未格納ｂｉｔがない場合（ステップＳ１０６否定）、セレクタ５４は、処理を終了する。
【００８１】
［実施例１におけるパケット中継装置による読み出し処理の手順］
図５に示すように、実施例１におけるパケット中継装置１０は、所定の読み出し時期になった場合（ステップＳ２０１肯定）、ＦＦ６１は、通常ＣＬＫの立ち上がりに合わせて、合成データの通常データを０面２１から読み出す（ステップＳ２０２）。例えば、実施例１におけるパケット中継装置は、書き込み処理によりデータがメモリ２０に格納された場合、ＦＦ６１は、データが格納された次の通常ＣＬＫの立ち上がりに合わせて、合成データの通常データを０面２１から読み出す。
【００８２】
そして、ＦＦ６２は、反転ＣＬＫの立ち上がりに合わせて、合成データの反転データを１面２２から読み出す（ステップＳ２０３）。ここで、１面データ反転部６３は、ＦＦ６２によって読み出された反転データを、ＦＦ６２に取り込まれる前に反転する（ステップＳ２０４）。
【００８３】
そして、０面検出部６４は、ＦＦ６１が読み出し処理を行った通常ＣＬＫの次の通常ＣＬＫの立ち上がりに合わせて、０面読み出しデータのパリティエラーのチェックをする（ステップＳ２０５）。
【００８４】
また、１面検出部６５は、ＦＦ６２が読み出し処理を行った反転ＣＬＫの次の反転ＣＬＫの立ち上がりに合わせて、１面読み出しデータのパリティエラーのチェックをする（ステップＳ２０６）。
【００８５】
そののち、セレクタ制御部６８は、０面検出部６４および１面検出部６５によって実行されたパリティエラーのチェック結果に基づいて、パリティチェックを行ったＣＬＫの次のＣＬＫの立ち上がりに合わせて、出力データを決定する（ステップＳ２０７）。具体的には、セレクタ制御部６８は、図３に示すように、０面読み出しデータのチェック結果が「正常」であり、１面読み出しデータのチェック結果が「正常」であった場合、０面読み出しデータを出力データとして決定する。
【００８６】
また、セレクタ制御部６８は、図３に示すように、「０面：エラー、１面：正常」であった場合、または、「０面：正常、１面：エラー」であった場合、それぞれ正常であった「１面」または「０面」のデータを出力データとして決定する。
【００８７】
また、セレクタ制御部６８は、図３に示すように、「０面」および「１面」が共に「エラー」であった場合、「０面」のデータを出力データとして決定する。なお、セレクタ制御部６８は、「０面」および「１面」が共に「エラー」であった場合、エラー信号を出力用Ｉ／Ｆ４１に出力する。
【００８８】
そして、セレクタ制御部６８は、上記した方法に基づいて決定した出力データをセレクタ６９に取り込ませる。
【００８９】
そののち、セレクタ６９は、取り込んだ出力データを出力用Ｉ／Ｆ４１に出力する（ステップＳ２０８）。
【００９０】
なお、上記した手順は、読み出しデータのすべてのｂｉｔに対して順次実行される。
【００９１】
［実施例１の効果］
上記したように、実施例１によれば、メモリ２０の０面２１および１面２２は、それぞれにデータを記憶する。そして、読み出し処理部６０は、通常ＣＬＫの立ち上がりに同期して０面２１に記憶されているデータを読み出すとともに、通常ＣＬＫと立ち上がり周期が同一であるＣＬＫの立ち上がりに同期して１面２２に記憶されているデータを読み出す。そして、０面検出部６４は、０面２１から読み出された０面読み出しデータのパリティエラーをチェックし、１面検出部６５は、１面２２から読み出された１面読み出しデータのパリティエラーをチェックする。そして、セレクタ制御部６８は、０面検出部６４および１面検出部６５のパリティエラーのチェック結果に基づいて、パリティエラーが検出されなかったデータをセレクタ６９に取り込ませる。従って、エラー検出後の再読み出しが不要となり、エラーが検出されたすべてのｂｉｔを、エラー検出後ＣＬＫ１周期分の時間で正常なｂｉｔに切り替えることができ、正確な読み出し処理を高速で行うことが可能となる。
【００９２】
また、実施例１によれば、読み出し処理部６０は、通常ＣＬＫの立ち上がりに同期して０面２１に記憶されているデータを読み出すとともに、通常ＣＬＫを反転した反転ＣＬＫの立ち上がりに同期して１面２２に記憶されているデータを読み出す。従って、ＣＬＫ１周期分の時間で２回の処理を実行することができ、正確な読み出し処理をより高速で行うことが可能となる。
【００９３】
また、実施例１によれば、メモリ２０の０面２１および１面２２は、同一のアドレスが割り当てられている。従って、同一ＣＬＫの立ち上がりおよび立ち下がりに合わせて、２つの記憶領域にアクセスすることができ、短時間で２つのデータを読み出すことが可能となる。
【００９４】
また、実施例１によれば、書き込み処理部５０は、通常ＣＬＫの立ち上がりに同期して通常データを０面２１に書き込むとともに、反転ＣＬＫの立ち上がりに同期して反転データを１面２２に書き込む。そして、１面データ反転部６３は、１面検出部６５によるパリティエラーのチェックの前に、１面読み出しデータを反転させ、１面検出部６５は、１面データ反転部６３によって反転された１面読み出しデータのパリティエラーをチェックする。そして、セレクタ制御部６８は、０面検出部６４および１面検出部６５のパリティエラーのチェック結果に基づいて、パリティエラーが検出されなかったデータをセレクタ６９に取り込ませる。従って、メモリの内部故障などによって発生するようなｂｉｔの固定状態をエラーとして判断することができ、管理者に対して即座に装置の異常を通知することが可能となる。
【実施例２】
【００９５】
さて、これまで実施例１について説明したが、上述した実施例１以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、種々の異なる実施例を（１）〜（３）に区分けして説明する。
【００９６】
（１）対象データ
上記した例では、書き込み処理および読み出し処理が行われるデータとして、パケットデータを用いる場合について説明したが、本実施例はこれに限定するものではなく、例えば、パケットデータをチェーン管理するためのポインタアドレスを用いる場合であってもよい。以下に、変形例としてポインタアドレスの一例を記す。なお。ポインタアドレスとしては、メモリにおけるデータの位置情報や格納したデータと連続するデータの位置情報などがある。
【００９７】
例えば、本願が開示する記憶装置の対象データとして、図６に示すように、通常データ「ｂｉｔ列：１１０１０」および反転データ「ｂｉｔ列：００１０１」を格納したポインタアドレス「００００００００００００１０１００」を用いる場合であってもよい。
【００９８】
すなわち、ポインタアドレス「００００００００００００１０１００」と、ポインタアドレスを反転させた反転ポインタアドレス「１１１１１１１１１１１１０１０１１」とをメモリに二重で格納する場合であってもよい。
【００９９】
これによっても、例えば、データを読み出すごとに必要となるポインタアドレスの読み出しにおいてエラーが検出された場合でも、エラーが検出されたすべてのｂｉｔを、エラー検出後ＣＬＫ１周期分の時間で正常なｂｉｔに切り替えることができ、データを廃棄することなく、パケット中継装置を運用することができる。
【０１００】
また、ポインタアドレスの上位側アドレスのように、ｂｉｔがほとんど変化しないｂｉｔ列におけるパリティエラーを検出することができ、正常なｂｉｔ列か、あるいは、部品故障やデータの滞留によるｂｉｔの固定状態であるのかを判断することができる。
【０１０１】
（２）実施形態
上記した例では、本願の開示する記憶装置をパケット中継装置に組み込んだ場合について説明したが、本実施例はこれに限定されるものではなく、例えば、科学演算を実行する科学演算装置などに本願の開示する記憶装置を組み込んだ場合であってもよい。
【０１０２】
（３）システム構成等
また、上記の実施例において説明した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に更新することができる。例えば、実施例１におけるセレクタ制御部６８による出力データの決定において、０面読み出しデータおよび１面読み出しデータがともにエラーであった場合、１面読み出しデータを出力データとしてもよい。
【０１０３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図２の形態）は図示のものとは限られない。例えば、入力データ反転部５３がセレクタ５４に内蔵される場合であってもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０４】
以上の本実施例を含む実施形態に関し、更に以下の付記を開示する。
【０１０５】
（付記１）第一の領域および第二の領域それぞれにデータを記憶する記憶部と、
第一のクロック信号の立ち上がり周期に同調して前記第一の領域に記憶されているデータを読み出すとともに、当該第一のクロック信号と立ち上がり間隔が同一である第二のクロック信号の立ち上がり周期に同調して前記第二の領域に記憶されているデータを読み出すデータ読み出し処理部と、
前記データ読み出し処理部によって読み出されたデータそれぞれのパリティエラーの有無を検出する検出部と、
前記検出部による検出結果に基づいて、パリティエラーが検出されなかったデータを所定の出力部に出力するデータ出力部と
を有したことを特徴とする記憶装置。
【０１０６】
（付記２）前記第二のクロック信号は、前記第一のクロック信号が反転されたクロック信号であることを特徴とする付記１に記載の記憶装置。
【０１０７】
（付記３）前記第一の領域および前記第二の領域は、同一のアドレスが割り当てられていることを特徴とする付記１または２に記載の記憶装置。
【０１０８】
（付記４）前記データを、前記第一のクロック信号の立ち上がり周期に同調して前記第一の領域に書き込むとともに、当該データを反転させたデータを前記第二のクロック信号の立ち上がり周期に同調して前記第二の領域に書き込むデータ書き込み処理部と、
前記パリティエラーの有無を検出する前に、前記データ読み出し処理部によって前記第二の領域から読み出されたデータを反転させる反転部とをさらに有し、
前記検出部は、前記データ読み出し処理部によって前記第一の領域から読み出されたデータと、前記データ読み出し処理部によって前記第二の領域から読み出されたのちに前記反転部によって反転されたデータとを前記パリティエラーの有無の検出対象とし、
前記データ出力部は、前記検出部によりパリティエラーが検出されなかった検出対象データを所定の出力部に出力することを特徴とする付記１〜３のいずれか一つに記載の記憶装置。
【０１０９】
（付記５）第一の領域および第二の領域それぞれにパケットデータを記憶する記憶部と、
第一のクロック信号の立ち上がり周期に同調して前記第一の領域に記憶されているパケットデータを読み出すとともに、当該第一のクロック信号と立ち上がり間隔が同一である第二のクロック信号の立ち上がり周期に同調して前記第二の領域に記憶されているパケットデータを読み出すデータ読み出し処理部と、
前記データ読み出し処理部によって読み出されたパケットデータそれぞれのパリティエラーの有無を検出する検出部と、
前記検出部による検出結果に基づいて、パリティエラーが検出されなかったパケットデータを所定の出力部に出力するデータ出力部と
を有したことを特徴とするパケット中継装置。
【符号の説明】
【０１１０】
１０  パケット中継装置
２０  メモリ
２１  ０面
２２  １面
３０  パケット処理部
４０  入力用Ｉ／Ｆ
４１  出力用Ｉ／Ｆ
５０  書き込み処理部
５１  ＣＬＫ発生部
５２  ＣＬＫ反転部
５３  入力データ反転部
５４  セレクタ  
６０  読み出し処理部
６１  ＦＦ
６２  ＦＦ
６３  １面データ反転部
６４  ０面検出部
６５  １面検出部
６６  ＦＦ
６７  ＦＦ
６８  セレクタ制御部
６９  セレクタ
【図１−１】
2011015096.tif 000003
【図１−２】
2011015096.tif 000004
【図２】
2011015096.tif 000005
【図３】
2011015096.tif 000006
【図４】
2011015096.tif 000007
【図５】
2011015096.tif 000008
【図６】
2011015096.tif 000009
【図７】
2011015096.tif 000010
【図８】
2011015096.tif 000011
【図９】
2011015096.tif 000012