(57)【要約】      （修正有）【課題】データの処理時間を短縮するデータ処理回路及びデータ処理方法を提供する。【解決手段】制御用ビットを含むデータを受信する受信回路２１１と、受信回路２１１から出力されたデータを保持する保持回路２１５と、受信回路２１１から出力されたデータのエラーを検出するエラー検出回路２１２と、エラー検出回路２１２により検出された制御用ビットのエラーである第１エラーを訂正する第１訂正回路と、エラー検出回路２１２で第１エラーが検出されないときは、保持回路２１５を経由したデータを出力し、エラー検出回路２１２で第１エラーが検出されたときは第１エラーが訂正されたデータを出力する出力選択回路と、を有する。【選択図】図２
2012010108.tif 000002
【特許請求の範囲】
【請求項１】
制御用ビットを含むデータを受信する受信回路と、
前記受信回路から出力されたデータを保持する保持回路と、
前記受信回路から出力されたデータのエラーを検出するエラー検出回路と、
前記エラー検出回路により検出された制御用ビットのエラーである第１エラーを訂正する第１訂正回路と、
前記エラー検出回路で前記第１エラーが検出されないときは、前記保持回路を経由したデータを出力し、前記エラー検出回路で前記第１エラーが検出されたときは前記第１エラーが訂正されたデータを出力する出力選択回路と、
を有することを特徴とするデータ処理回路。
【請求項２】
前記制御用ビット以外のビットに生じたエラーである第２エラーが検出されたとき、前記第２エラーを訂正して訂正したデータの出力を行い、前記エラー検出回路で前記第１エラーが検出されたとき、第２エラーが検出されたデータの出力をしない第２訂正回路と、
を有することを特徴とする請求項１記載のデータ処理回路。
【請求項３】
前記受信回路から受信した前記データが無効データであるか判定する判定回路を有し、
前記第１エラーが訂正されたデータが前記選択出力回路から出力されているときに前記判定回路で無効データがあると判定されたとき、前記判定回路は前記選択出力回路に前記保持回路からのデータを選択して出力させることを特徴とする請求項１記載のデータ処理回路。
【請求項４】
前記第１エラー及び前記第２エラーが訂正されたデータを送信する送信回路を更に有することを特徴とする請求項２記載のデータ処理回路。
【請求項５】
制御用ビットを含むデータを受信し、
受信したデータを保持し、
受信したデータのエラーを並行して検出し、
検出された制御用ビットのエラーである第１エラーを検出し、
前記保持されたデータ、又は前記第１エラーが訂正されたデータの何れかを選択して出力し、前記第１エラーが検出されないときは、前記保持されたデータを出力し、前記第１エラーが検出されたときは前記第１エラーが訂正されたデータを出力することを特徴とするデータ処理方法。
【請求項６】
前記制御用ビット以外のビットに生じたエラーである第２エラーが検出されたとき、前記第２エラーを訂正して訂正したデータの出力を行い、前記第１エラーが検出されたとき、第２エラーが検出された前記データの出力をしないことを特徴とする請求項５記載のデータ処理方法。
【請求項７】
受信した前記データが無効データであるか判定し、
前記第１エラーが訂正されたデータが出力されているときに前記無効データであると判定されたとき、前記保持されたデータが選択して出力されることを特徴とする請求項５記載のデータ処理方法。
【請求項８】
前記第１エラー及び前記第２エラーが訂正されたデータを送信することを特徴とする請求項６記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、データ転送及びデータ記録におけるＥｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ（ＥＣＣ）コードを用いてデータのエラー検出及び訂正を行うデータ処理回路及びデータ処理方法に関する。
【背景技術】
【０００２】
情報処置装置において、ＥＣＣコードを用いて、情報転送路であるバスを転送するデータのエラー検出を行うことが知られている。データのエラー検出は、例えば、データ処理回路を用いて行われる。データのエラー検出は、エラー検出の対象となるデータのビット数が少ない場合、データ処理回路におけるデータの伝達時間は少ない。データ処理回路におけるデータの伝達時間が少ないため、ビット数が少ない場合のデータの処理時間は問題にならなかった。
【０００３】
しかし、近年における中央処理装置のデータ処理能力の向上に伴い、エラー検出の対象となるデータのビット数は増加している。データのビット数が増加すると、データ処理回路は複雑化する。例えば、データ処理回路にゲート回路を用いる場合、同時に処理するデータのビット数が増加するため、ゲート回路は多段化する。ゲート回路が多段化すると、データ処理回路におけるデータの伝達時間は増加する。
【０００４】
上述した中央処理装置のデータ処理能力の向上に伴い、中央処理装置の動作周波数も同様に高速化している。動作周波数の高速化により、１クロック周期の時間が短くなる。１クロック周期の時間が短くなると、データがデータ処理回路を伝達するタイミングの遅延が発生してしまう。中央処理装置の動作周波数の高速化に対応するために、データを保持する保持回路が、データ処理回路内に設けられている。保持回路は、例えばフリップフロップから構成されていることが望ましい。保持回路は、データ処理回路内のエラー検出及びデータ伝達のタイミングを調整し、データを伝達するタイミングの遅延を防ぐように構成されている。
【０００５】
しかし、データ処理回路によりチェックされるデータは、エラーが発生しない場合がほとんどである。エラーが発生しない場合がほとんどであるにも係らず、データ処理回路でエラーの検出結果を待つまでの時間が余計にかかってしまう問題があった。
【０００６】
従来技術として、下記の文献がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭５６−１２９９５２号公報
【特許文献２】特開昭４８−６３６４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
開示の技術は、データの処理時間を短縮するデータ処理回路及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
制御用ビットを含むデータを受信する受信回路と、
前記受信回路から出力されたデータを保持する保持回路と、
前記受信回路から出力されたデータのエラーを検出するエラー検出回路と、
前記エラー検出回路により検出された制御用ビットのエラーである第１エラーを訂正する第１訂正回路と、
前記エラー検出回路で前記第１エラーが検出されないときは、前記保持回路を経由したデータを出力し、前記エラー検出回路で前記第１エラーが検出されたときは前記第１エラーが訂正されたデータを出力する出力選択回路と、
を有することを特徴とするデータ処理回路が提供される。
【００１０】
開示の技術の第２の側面によれば、
制御用ビットを含むデータを受信し、
受信したデータを保持し、
受信したデータのエラーを並行して検出し、
検出された制御用ビットのエラーである第１エラーを検出し、
前記保持されたデータ、又は前記第１エラーが訂正されたデータの何れかを選択して出力し、前記第１エラーが検出されないときは、前記保持されたデータを出力し、前記第１エラーが検出されたときは前記第１エラーが訂正されたデータを出力することを特徴とすることを特徴とするデータ処理方法が提供される。
【発明の効果】
【００１１】
開示の技術によれば、選択出力回路はエラー検出回路で第１エラーが検出されないときは、保持回路を経由したデータを出力する。一方、選択出力回路は、エラー検出回路で第１エラーが検出されたときは第１エラーが訂正されたデータを出力する。第１エラーが検出されないデータは、エラー検出回路を経由せずに保持回路を経由して選択出力回路に出力されるため、データのエラー検出・処理時間を必要としない。そのため、データの処理時間を短縮することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、本実施例に係る情報処理装置の概略図を示す図である。
【図２】図２は、本実施例に係るデータ処理回路の構成図を示す図である。
【図３】図３は、本実施例に係るエラー検出・訂正回路の動作の一例を示すフローチャートである。
【図４】図４は、本実施例に係るデータ処理回路のタイムチャートを示す図である。
【図５】図５は、本実施例に係る処理切替判定回路の動作の一例を示すフローチャートである。
【図６】図６は、本実施例に係るデータ処理回路のタイムチャートを示す図である。
【図７】図７は、本実施例に係るデータの構成図を示す図である。
【図８】図８は、本実施例において、マルチプレクサ２１４から送信されたデータがデータ処理回路２１Ａを用いて処理されるようすを示す図である。
【発明を実施するための形態】
【００１３】
以下、開示の技術に係るデータ処理回路２１Ａ及びデータ処理回路２１Ａによるデータ処理方法が説明される。ただし、発明は本実施例に限定されるものではない。
【００１４】
図１から図８では、一実施例に係るデータ処理回路２１Ａ及びデータ処理回路２１Ａによるデータ処理方法が説明される。
【００１５】
図１は、一実施例に係る情報処理装置１の概略説明図を示す。情報処理装置１は、クラスタ１０及びシステム記憶装置２０を備える。クラスタ１０及びシステム記憶装置２０は、接続線３０を介して接続されている。接続線３０は、例えば電気ケーブル又は光ケーブルを用いることができる。
【００１６】
クラスタ１０は、中央処理装置１１、Ｉ／Ｏコントローラ１２及び主記憶装置１３を備える。中央処理装置１１、Ｉ／Ｏコントローラ１２及び主記憶装置１３は、バス１４を介して互いに接続されている。
【００１７】
中央処理装置１１は、クラスタ１０に係る演算処理を実行する。中央処理装置１１は、Ｉ／Ｏコントローラ１２及び主記憶装置１３を制御する。
【００１８】
Ｉ／Ｏコントローラ１２は、クラスタ１０をシステム記憶装置２０と接続するために設けられる。Ｉ／Ｏコントローラ１２は、システム記憶装置２０から送信された受信パケットの解析を行い、システム記憶装置２０に対し命令の応答やデータの転送を行う。Ｉ／Ｏコントローラ１２は、システム記憶装置２０に対するコマンド及びデータのアクセスの優先順位を設定する。Ｉ／Ｏコントローラ１２は、システム記憶装置２０から受信したコマンド及びデータをパケット化し、中央処理装置１１に対してパケット化されたコマンド及びデータを送信する。
【００１９】
主記憶装置１３は、中央処理装置１１からの要求により、主記憶装置１３に格納されているデータの読出し及び書込みを実行する。
【００２０】
システム記憶装置２０は、Ｉ／Ｏコントローラ２１、メモリコントローラ２２及びメモリ２３を備える。Ｉ／Ｏコントローラ２１、メモリコントローラ２２及びメモリ２３は、バス２４を介して互いに接続されている。
【００２１】
Ｉ／Ｏコントローラ２１は、システム記憶装置２０をクラスタ１０と接続するために設けられる。Ｉ／Ｏコントローラ２１は、クラスタ１０から送信された受信パケットの解析を行い、クラスタ１０に対し命令の応答やデータの転送を行う。Ｉ／Ｏコントローラ２１は、クラスタ１０に対するコマンド及びデータのアクセスの優先順位を設定する。Ｉ／Ｏコントローラ２１は、クラスタ１０から受信したコマンド及びデータをパケット化し、メモリコントローラ２２に対してパケット化されたコマンド及びデータを送信する。
【００２２】
データ処理回路２１Ａは、クラスタ１０から受信したデータを構成するビットにエラーが発生した場合に、データのエラー処理を実施してメモリコントローラ２２にエラー処理を施したデータを送信する。又、データ処理回路２１Ａは、メモリコントローラ２２から受信したデータを構成するビットにエラーが発生した場合に、データのエラー処理を実施して、エラー処理を施したデータをクラスタ１０に送信する。
【００２３】
メモリコントローラ２２は、Ｉ／Ｏコントローラ２１からのメモリ２３に対するアクセス制御を行う。
【００２４】
メモリ２３は、例えば、クラスタ１０で使用されるデータ、クラスタ１０に実行させるＯｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ（ＯＳ）などのプログラム２３Ａを一時的に格納する。プログラム２３Ａは、情報処理装置１のデータ処理を実施するためのプログラムである。プログラム２３Ａは、クラスタ１０によって実行される。
【００２５】
なお、プログラム２３Ａは、例えば、システム記憶装置２０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク及びＩＣカードなどの「可搬用の物理的記憶媒体」に記憶される。プログラム２３Ａはあるいは、システム記憶装置２０の内外に備えられるディスク装置に記憶される。プログラムはまた、公衆回線、インターネット、ＬＡＮあるいはＷＡＮなどを介してシステム記憶装置２０に接続される「他のコンピュータ（またはサーバ）」に記憶される。システム記憶装置２０は、上記記憶媒体からプログラム２３Ａを読み出して実行することができる。
【００２６】
図２は、本実施例に係るデータ処理回路２１Ａの構成図を示す。データ処理回路２１Ａは、データ受信回路２１１、エラー検出・訂正回路２１２、マルチプレクサ２１４、フリップフロップ２１５、処理切替判定回路２１６、パリティ生成回路２１７、フリップフロップ２１８、パケット生成回路２１９、フリップフロップ２２０、エラー訂正回路２２１、バッファメモリ２２２、フリップフロップ２２３及びデータ送信回路２２４を備える。フリップフロップ２１５は、フリップフロップ２１８、２２０及び２２３と同様の構成を有する。
【００２７】
データ処理回路２１Ａは、例えば、クラスタ１０から受信したエラー処理の対象となるデータのエラー処理を行い、メモリコントローラ２２側に送信する。データ処理回路２１Ａは、例えば、Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ−ｃｉｒｃｕｉｔ（ＬＳＩ）を用いて構成することができる。
【００２８】
図７は、本実施例に係るデータの構成図を示す図である。図７に示すように、データは、Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ（ＥＣＣ）コード、制御用ビット及びデータ本体部から構成される。ＥＣＣコードは、データのエラー検出を行うために用いられるコードである。制御用ビットは、例えばＯｐｅｒａｔｉｏｎ  Ｃｏｄｅ（ＯＰＣＯＤＥ）又はアドレス情報を含むビットであり、１２８ビット分のデータ本体を有する１３１ビットのデータは、例えば３ビット分の制御用ビットを備える。ＥＣＣコードは、データ本体部を基に算出されたエラー訂正符号である。エラー訂正符号は、例えば２ビットのエラー検出と１ビットの誤り訂正とを可能にするものである。なお、本実施例では、制御用ビットは次処理の態様を判断するためにも用いられる。
【００２９】
データ受信回路２１１は、クラスタ１０から送信されたデータのメモリコントローラ２２への転送命令を含むデータを受信する。データ受信回路２１１は、受信したデータをエラー検出・訂正回路２１２及びフリップフロップ２１５に送信する。
【００３０】
エラー検出・訂正回路２１２は、複数のフリップフロップ及びゲート回路を備える。図２では、エラー検出・訂正回路２１２はフリップフロップ２１２Ａ、ゲート回路２１２Ｂ、フリップフロップ２１２Ｃ、ゲート回路２１２Ｄ及びフリップフロップ２１２Ｅを順に組み合わせた構成としている。フリップフロップ２１２Ａは、フリップフロップ２１２Ｃ及びフリップフロップ２１２Ｅと同様の構成を用いることができる。
【００３１】
フリップフロップ２１２Ａは、データ受信回路２１１から出力された第１ＥＣＣコードを含むデータをクラスタ１０から受信する。フリップフロップ２１２Ａは、エラー検出・訂正回路２１２から受信したデータを保持する。フリップフロップ２１２Ａは、保持しているデータをゲート回路２１２Ｂに送信する。
【００３２】
なお、フリップフロップ２１２Ａは、例えば、データ受信回路２１１から送信された第１ＥＣＣコードを含むデータを受信し、１τ保持した後に出力する。１τは、データ処理回路２１Ａの１クロック周期の時間を示す。データ処理回路２１Ａの周波数が例えば５００ＭＨｚである場合、１クロック周期の時間は２ナノ秒（ｎｓ）となる。フリップフロップ２１２Ａは、データ処理回路２１Ａの１クロック周期に合わせてエラー検出回路内のエラー検出及びデータ伝達のタイミングを調整し、データ処理回路２１Ａ内のデータ伝達のタイミングの遅延を防ぐために備えられている。
【００３３】
ゲート回路２１２Ｂは、データのエラーチェックを行うための第２ＥＣＣコードを生成するために備えられる。ゲート回路２１２Ｂは、データ処理回路２１Ａのデータが例えば１２８ビットである場合、２入力のＥｘｃｌｕｓｉｖｅ  ＯＲ（ＥＯＲ）回路６段、及びＮＯＴ回路１段を組み合わせて構成することができる。ゲート回路２１２Ｂは、例えば９ビットの第２ＥＣＣコードを生成し、第１ＥＣＣコードを含むデータと共にフリップフロップ２１２Ｃに送信する。
【００３４】
フリップフロップ２１２Ｃは、ゲート回路２１２Ｂから、第１ＥＣＣコードを含むデータ及びゲート回路２１２Ｂにより生成された第２ＥＣＣコードを受信する。フリップフロップ２１２Ｃは、受信した第１ＥＣＣコードを含むデータ及びゲート回路２１２Ｂにより生成された第２ＥＣＣコードを一時的に保持する。フリップフロップ２１２Ｃは、エラー検出・訂正回路２１２内のデータ伝達タイミングを調整するために設けられている。フリップフロップ２１２Ｃは、保持している第１ＥＣＣコードを含むデータ及び第２ＥＣＣコードをゲート回路２１２Ｄに送信する。
【００３５】
ゲート回路２１２Ｄは、フリップフロップ２１２Ｃから第１ＥＣＣコードを含むデータ及び第２ＥＣＣコードを受信する。ゲート回路２１２Ｄは、ゲート回路２１２Ｂで生成された第２ＥＣＣコード及びデータ受信回路２１１で受信した第１ＥＣＣコードからデータの訂正用ビットをデコードし、エラー訂正用のデータを生成する。ゲート回路２１２Ｄは、生成したエラー訂正用のデータと、データ受信回路２１１から送信されたエラー訂正前のデータとの排他的論理和（Ｅｘｃｌｕｓｉｖｅ  ＯＲ：ＥＯＲ）を求めた結果により訂正されたデータを、フリップフロップ２１２Ｅに送信する。
【００３６】
データからエラーを検出する際にチェック対象となるエラービット、即ちエラーを生じているビットは、エラー検出・訂正回路２１２のゲート回路２１２Ｄで第１ＥＣＣコード及び第２ＥＣＣコードを比較することにより検出される。また、ゲート回路２１２Ｄでは、エラービットが制御用ビットに発生したか、あるいはデータ本体部に発生したかを判断する。エラービットが制御用ビットに存在するか、又はデータ本体部に存在するかを判断する方法は、データ内の制御用ビットの存在位置をゲート回路２１２Ｄに認識させて行われる。エラービットの位置の識別は、例えば、ＥＣＣコードの論理チェックにより行われる。
【００３７】
ゲート回路２１２Ｄで第１ＥＣＣコード及び第２ＥＣＣコードを比較した結果、データ受信回路２１１から出力されたデータに２ビット以上のエラーが検出された場合、エラー検出・訂正回路２１２は、例えば、データ受信回路２１１に対してクラスタ１０からデータを再転送させる指示を行う。
【００３８】
ゲート回路２１２Ｄで第１ＥＣＣコード及び第２ＥＣＣコードを比較した結果、データ受信回路２１１から出力されたデータに１ビットエラーが検出された場合、エラー検出・訂正回路２１２の部分を構成する回路は検出されたデータの１ビットエラーを訂正する。
【００３９】
ゲート回路２１２Ｄで検出された１ビットエラーが制御用ビットに存在する場合、エラー検出・訂正回路２１２は制御用ビットを訂正する。ゲート回路２１２Ｄは、制御用ビットが訂正されたデータをマルチプレクサ２１４に送信する。
【００４０】
フリップフロップ２１２Ｅは、ゲート回路２１２Ｄでエラーが訂正されたデータを受信する。フリップフロップ２１２Ｅは、ゲート回路２１２Ｄで訂正されたデータを保持し、エラー検出・訂正回路２１２内のデータ伝達タイミングを調整する。フリップフロップ２１２Ｅは、保持しているデータをマルチプレクサ２１４に送信する。
【００４１】
フリップフロップ２１５は、データ受信回路２１１から出力されたデータを受信する。フリップフロップ２１５は、エラー検出・訂正回路２１２から受信したデータを保持する。フリップフロップ２１５は、マルチプレクサ２１４に対するデータの伝達タイミングを調整する。フリップフロップ２１５は、データ受信回路２１１から出力された、保持しているデータをマルチプレクサ２１４に送信する。
【００４２】
なお、フリップフロップ２１５を介してデータ処理を行う処理ルートのことを、以下第１処理ルートという。第１処理ルートとは、エラー検出・訂正回路２１２によるエラー検出・訂正処理を行わずに、フリップフロップ２１５を介してマルチプレクサ２１４にデータを入力する処理ルートである。
【００４３】
一方、エラー検出・訂正回路２１２を経由してマルチプレクサ２１４にデータ出力が行われる処理ルートのことを、以下第２処理ルートという。第２処理ルートとは、エラー検出・訂正回路２１２でエラー検出・訂正処理が行われたデータをマルチプレクサ２１４に入力する処理ルートである。
【００４４】
フリップフロップ２１５における処理時間を例えば１τとすると、第１処理ルートにおいて、データ受信回路２１１から出力されたデータがフリップフロップ２１５を介してマルチプレクサ２１４まで到達する時間は１τとなる。一方、第２処理ルートにおいて、データ受信回路２１１から出力されたデータがエラー検出・訂正回路２１２を介してマルチプレクサ２１４まで到達する時間は、フリップフロップ２１２Ａ、２１２Ｃ及び２１２Ｅが順に組み合わされているため、計３τとなる。第１処理ルートでは、第２処理ルートと比較して、２τだけ先行してデータ処理が行われる。
【００４５】
ゲート回路２１２Ｄで検出された１ビットエラーが制御用ビットに存在する場合、エラー検出・訂正回路２１２は、マルチプレクサ２１４に対して第２処理ルートからのデータを選択して出力する指示を行なう。また、エラー検出・訂正回路２１２で訂正された１ビットエラーが制御用ビットに存在する場合、エラー検出・訂正回路２１２はエラー訂正回路２２１に対し、第１処理ルートにより２τ先行して行われているデータ処理を停止させる指示を行う。
【００４６】
エラー検出・訂正回路２１２で検出された１ビットエラーがデータ本体部に存在する場合、エラー検出・訂正回路２１２はマルチプレクサ２１４に対して第１処理ルートからのデータを出力させる指示を行う。エラー検出・訂正回路２１２はまた、エラー訂正回路２２１に対して第１処理ルートからのデータの訂正を行うように指示する。
【００４７】
処理切替判定回路２１６は、データ受信回路２１１から送信されたデータのＮｏｎ  ＯＰｅｒａｔｉｏｎ（ＮＯＰ）判定処理を行う。処理切替判定回路２１６は、データの制御用ビットを判定し、且つ検出した制御用ビットを解釈することにより、ＮＯＰ検出処理を行う。処理切替判定回路２１６はまた、ＮＯＰが連続して存在することを、不図示のカウンタを用いて判定する。
【００４８】
データ受信回路２１１から送信されたデータにＮＯＰが連続で２τ以上存在すると判定された場合、処理切替判定回路２１６は、マルチプレクサ２１４に対して第１処理ルートへの復帰の指示を行う。マルチプレクサ２１４は、処理切替判定回路２１６からの指示に従い、第１処理ルートからのデータを選択して出力する切替動作を行う。
【００４９】
マルチプレクサ２１４は、エラー検出・訂正回路２１２から１ビットエラーが訂正されたデータを受信する。マルチプレクサ２１４はまた、フリップフロップ２１５から送信されたデータを受信する。マルチプレクサ２１４は、エラー検出・訂正回路２１２及び処理切替判定回路２１６からの指示に従い、エラー検出・訂正回路２１２から送信された１ビットエラーが訂正されたデータ、又はフリップフロップ２１５から送信されたデータのいずれかを選択してパリティ生成回路２１７に出力する。
【００５０】
図８は、マルチプレクサ２１４から送信されたデータがデータ処理回路２１Ａを用いて処理されるようすを示す図である。
【００５１】
パリティ生成回路２１７は、マルチプレクサ２１４から送信されたデータからパリティを生成する。パリティ生成回路２１７は、図８に示すように、例えば１２８ビットのデータを４つに分割して３２ビットにする。パリティ生成回路２１７は、３２ビットに分割されたデータから各々パリティを生成する。パリティ生成回路２１７は、生成したパリティを付加したデータをフリップフロップ２１８に送信する。
【００５２】
フリップフロップ２１８は、図８に示すように、パリティ生成回路２１７から出力されたデータを受信する。フリップフロップ２１８は、パリティ生成回路２１７によりパリティ化されたデータを保持する。フリップフロップ２１８は、パケット生成回路２１９に対するデータの伝達タイミングを調整する。フリップフロップ２１８は、保持しているデータをパケット生成回路２１９に送信する。
【００５３】
パケット生成回路２１９は、図８に示すように、フリップフロップ２１８から送信されたパリティを付加したデータからパケットを生成する。パケット生成回路２１９は、パケット化されたデータをフリップフロップ２２０に送信する。
【００５４】
フリップフロップ２２０は、図８に示すように、パケット生成回路２１９から送信されたパケット化されたデータを受信する。フリップフロップ２２０は、パケット生成回路２１９から送信されたデータを保持する。フリップフロップ２２０は、エラー訂正回路２２１に対するデータの伝達タイミングを調整する。フリップフロップ２２０は、保持しているデータをエラー訂正回路２２１に送信する。
【００５５】
エラー訂正回路２２１は、フリップフロップ２２０から送信されたデータを受信する。エラー訂正回路２２１は、エラー検出・訂正回路２１２からの指示により、第１処理ルートから出力されたデータ全体のうち、データ本体部に存在する１ビットエラーを訂正する。エラー訂正回路２２１は、制御用ビットが訂正されたデータを含むデータをバッファメモリ２２２に出力する。一方、エラー訂正回路２２１は、エラー検出・訂正回路２１２から第１処理ルートで送信されたデータの転送停止指示を受けると、第１処理ルートで送信されたデータの出力をしない。また、エラー訂正回路２２１は、エラー検出・訂正回路２１２からの指示に従い、第１処理ルートから出力されたデータの訂正を行う。なお、第２処理ルートを介したデータは、エラー訂正回路２２１でデータの訂正を行わずにバッファメモリ２２２に出力する。
【００５６】
バッファメモリ２２２は、図８に示すように、エラー訂正回路２２１から送信されたデータを受信する。バッファメモリ２２２は、受信したデータを一時的に書込する。バッファメモリ２２２は、書き込まれたデータをフリップフロップ２２３に送信する。
【００５７】
フリップフロップ２２３は、図８に示すように、バッファメモリ２２２から送信されたデータを受信する。フリップフロップ２２３は、バッファメモリ２２２から送信されたデータを保持する。フリップフロップ２２３は、データ送信回路２２４に対するデータの伝達タイミングを調整する。フリップフロップ２２３は、受信したデータをデータ送信回路２２４に送信する。
【００５８】
データ送信回路２２４は、フリップフロップ２２３から送信されたデータを受信する。データ送信回路２２４は、受信したデータをメモリコントローラ２２に送信する。
【００５９】
なお、パリティ生成回路２１７におけるパリティ生成処理、パケット生成回路２１９におけるパケット生成処理及びバッファメモリ２２２におけるメモリ書込処理を合わせて「次処理」という。
【００６０】
図３は、本実施例に係るエラー検出・訂正回路２１２の動作の一例を示すフローチャートである。図３に示す処理は、エラー検出・訂正回路２１２で行なわれる、データ受信回路２１１で受信したデータのエラー処理を示す図である。
【００６１】
Ｓ１において、エラー検出・訂正回路２１２は、受信したデータにエラーが存在しないか否か、エラーが存在する場合にはデータに１ビットエラーが存在するか、又は２ビット以上のエラーが存在するかを判断する。データに１ビットエラーが存在する場合（Ｓ１  ＳＢＥ）、エラー検出・訂正回路２１２は、次にＳ２の処理をおこなう。なお、１ビットエラーをＳＢＥ（Ｓｉｎｇｌｅ  Ｂｉｔ  Ｅｒｒｏｒ）という。なお、２ビットのエラーをＤＢＥ（Ｄｏｕｂｌｅ  Ｂｉｔ  Ｅｒｒｏｒ）という。
【００６２】
Ｓ２において、エラー検出・訂正回路２１２は、検出した１ビットエラーの訂正を行う。
【００６３】
Ｓ３において、エラー検出・訂正回路２１２は、訂正した１ビットエラーが制御用ビットに発生したエラーであるかを判断する。訂正した１ビットエラーが制御用ビットに発生したエラーであるとき（Ｓ３  Ｙ）、エラー検出・訂正回路２１２は次にＳ４の処理を行う。
【００６４】
Ｓ４において、エラー検出・訂正回路２１２は、マルチプレクサ２１４に対して第２処理ルートを介して転送されたデータを出力させる指示を行う。
【００６５】
Ｓ５において、エラー検出・訂正回路２１２は、エラー訂正回路２２１に対して、第１処理ルートを介して転送されたデータの転送停止指示を行う。なお、Ｓ５において、エラー検出・訂正回路２１２は、エラー訂正回路２２１による訂正も不要とする指示を行う。なお、Ｓ５において、エラー検出・訂正回路２１２によるデータの訂正の反映及びデータの転送停止指示は、データがフリップフロップ２１８及び２２０を2段通過した後に行われる。
【００６６】
なお、Ｓ１において２ビット以上のエラーが存在する場合（Ｓ１  ＤＢＥ）、Ｓ６において、エラー検出・訂正回路２１２はデータ受信回路２１１に対してエラー報告を行う。エラー検出・訂正回路２１２は、例えば、データ受信回路２１１に対し、データの再送指示を行う。
【００６７】
Ｓ７において、エラー検出・訂正回路２１２は、エラー訂正回路２２１に対して第１処理ルートから送信されたデータの訂正処理を停止する指示を行う。
【００６８】
なお、Ｓ１においてデータにエラーが存在しない場合（Ｓ１  Ｎ）、Ｓ８において、エラー検出・訂正回路２１２はマルチプレクサ２１４に対して第１処理ルートから送信されたデータ出力を選択させる指示を行う。
【００６９】
Ｓ９において、エラー検出・訂正回路２１２は、エラー訂正回路２２１に対して第１処理ルートからのデータを訂正するよう指示する。
【００７０】
なお、Ｓ３において、訂正した１ビットエラーが制御用ビットに発生したエラーでは無いときも、エラー検出・訂正回路２１２は次にＳ８の処理を行う。
【００７１】
図４は、本実施例に係るデータ処理回路２１Ａの第１処理Ｔ１及び第２処理Ｔ２に係るタイミングチャートを示す。図４に示す横軸は時刻τを示す。横軸における１目盛りは１クロック（＝１τ）を示す。
【００７２】
第１処理Ｔ１は、エラー検出・訂正回路２１２によるエラー検出・訂正処理を行わずに、フリップフロップ２１５を介してマルチプレクサ２１４から出力されたデータに対する次処理を行う処理である。第１処理Ｔ１では、データ受信回路２１１から出力されたデータは、フリップフロップ２１５、フリップフロップ２１８、フリップフロップ２２０及びフリップフロップ２２３を介して出力される。フリップフロップ２１５、２１８、２２０及び２２３におけるデータ処理時間は、それぞれ１τ発生する。第１処理ルートではデータは計４個のＦＦを経由するため、第１処理Ｔ１の処理時間は、計４τとなる。
【００７３】
第２処理Ｔ２は、エラー検出・訂正回路２１２でエラー検出・訂正処理が行われた後にマルチプレクサ２１４から出力されたデータに対する次処理を行う処理である。第２処理Ｔ２では、データ受信回路２１１から出力されたデータは、エラー検出・訂正回路２１２内のフリップフロップ２１２Ａ、ゲート回路２１２Ｂ、フリップフロップ２１２Ｃ、ゲート回路２１２Ｄ及びフリップフロップ２１２Ｅを経由してマルチプレクサ２１４に送信される。第２処理Ｔ２では、マルチプレクサ２１４から出力されたデータは、フリップフロップ２１８、フリップフロップ２２０及びフリップフロップ２２３を介して出力される。フリップフロップ２１２Ａ、２１２Ｃ及び２１２Ｅにおけるデータ処理時間は、フリップフロップ２１８、２２０及び２２３におけるデータ処理時間と同様に各１τである。第２処理ルートではデータは計６個のＦＦを経由するため、第２処理Ｔ２の処理時間は、計６τとなる。第１処理Ｔ１及び第２処理Ｔ２に必要な処理時間を比較すると、２τの処理時間差があることがわかる。第１処理Ｔ１は、第２処理Ｔ２と比較して、２τだけ先行してデータ処理が行われる。
【００７４】
エラー検出・訂正回路２１２は、第１処理Ｔ１の停止指示、及び第１処理Ｔ１から第２処理Ｔ２への切替指示を時刻Ｚのタイミングで行なうものとする。時刻Ｚは、第２処理Ｔ２におけるエラー検出・訂正回路２１２によるエラー検出・訂正処理の結果が、同時刻に開始された第１処理Ｔ１のデータのバッファメモリへの書込前に追い付く時刻である（Ｚ＝第１処理Ｔ１の次処理開始から２τ後）。第２処理Ｔ２で制御用ビットに１ビットエラーが検出された場合、マルチプレクサ２１４は、エラー検出・訂正回路２１２の指示により、第２処理Ｔ２で処理されたデータを選択して出力する。次いで、エラー訂正回路２２１は、エラー検出・訂正回路２１２の指示により、時刻Ｚ（＝第１処理Ｔ１の次処理開始から２τ後）のタイミングで、第１処理Ｔ１におけるデータ処理を停止する。そのため、バッファメモリ２２２には、第２処理Ｔ２によって制御用ビット及びデータ本体の１ビットエラーが訂正されたデータを書き込むことができる。
【００７５】
図５及び図６は、第１処理Ｔ１から第２処理Ｔ２に切り替わった後に、処理切替判定回路２１６でＮＯＰが連続して検出されるまで、第２処理Ｔ２によるデータ処理が行われるようすを示す図である。なお、処理切替判定回路２１６は、１ビットエラーが制御用ビットで検出された場合は、先行処理である第１処理Ｔ１の中止を実施して第２処理Ｔ２におけるデータ処理に切替える。処理切替判定回路２１６は、第２処理Ｔ２以降の処理において、データが連続有効データである限り、第２処理Ｔ２のデータ処理を継続させる。但し、処理切替判定回路２１６は、ＮＯＰ等の無効データを検出し、無効データが連続して検出された場合には、データ処理を第１処理Ｔ１に復帰させる機能を備える。
【００７６】
図５は、本実施例に係る処理切替判定回路２１６の動作の一例を示すフローチャートである。図５に示す処理は、データ受信回路２１１で受信したデータのＮＯＰ検出処理を処理切替判定回路２１６で開始するようすを示す図である。
【００７７】
Ｓ１１において、処理切替判定回路２１６は、マルチプレクサ２１４が第１処理ルートによるデータを出力しているか判断する。マルチプレクサ２１４が第１処理ルートによるデータを出力していないと判断すると、処理切替判定回路２１６は、次にＳ１２の処理を行う。
【００７８】
Ｓ１２において、処理切替判定回路２１６は、データ受信回路２１１で受信したデータにおけるＮＯＰが２τ連続で検出されるか判断を行う。ＮＯＰが２τ連続で検出された場合（Ｓ１２  Ｙ）、処理切替判定回路２１６は、次にＳ１３の処理を行う。
【００７９】
Ｓ１３において、処理切替判定回路２１６は、マルチプレクサ２１４に対し、第１処理ルートを選択してデータを出力させる指示を行う。
【００８０】
なお、Ｓ１１において、マルチプレクサ２１４が第１処理ルートからデータを出力している場合（Ｓ１１  Ｙ）、処理切替判定回路２１６は処理を終了する。
【００８１】
また、Ｓ１２において、ＮＯＰが２τ連続で検出されない場合（Ｓ１２  Ｎ）、処理切替判定回路２１６は処理を終了する。
【００８２】
図６は、本実施例に係るデータ処理回路２１Ａの第２処理Ｔ１１〜Ｔ１３、及び第１処理Ｔ１４に係るタイミングチャートを示す。図６に示す横軸は時刻τを示す。横軸における１目盛りは１クロックを示す。図６は、第２処理Ｔ１１〜Ｔ１３、及び第１処理Ｔ１４に係るデータがエラー検出・訂正回路２１２に対して順次転送されて処理されるようすを示す。
【００８３】
第２処理Ｔ１１に係るデータは、時刻Ｚ１のタイミングで、データ受信回路２１１からエラー検出・訂正回路２１２のフリップフロップ２１２Ａ及びフリップフロップ２１５に入力する。フリップフロップ２１２Ａから出力されたデータは、時刻Ｚ２のタイミングで、エラー検出・訂正回路２１２のゲート回路２１２Ｂを介してフリップフロップ２１２Ｃに入力する。フリップフロップ２１２Ｃから出力されたデータは、時刻Ｚ３のタイミングで、エラー検出・訂正回路２１２のゲート回路２１２Ｄを介してフリップフロップ２１２Ｅに入力する。そして、時刻Ｚ１から時刻Ｚ４までの間に、エラー検出・訂正回路２１２においてデータのエラー検出・訂正処理が行われる。
【００８４】
一方、時刻Ｚ１のタイミングでデータ受信回路２１１からフリッププロップ２１５に入力したデータは、時刻Ｚ２のタイミングでマルチプレクサ２１４に入力する。しかし、第２処理Ｔ１１においては、マルチプレクサ２１４は、フリップフロップ２１５を介して入力したデータは出力せず、エラー検出・訂正回路２１２を経由する、第２処理ルートからのデータを選択して出力する。
【００８５】
次いで、第２処理Ｔ１１において、エラー検出・訂正回路２１２のフリップフロップ２１２Ｅから出力されたデータは、時刻Ｚ４のタイミングで、マルチプレクサ２１４及びパリティ生成回路２１７を介してフリップフロップ２１８に入力する。フリップフロップ２１８から出力されたデータは、時刻Ｚ５のタイミングで、パケット生成回路２１９を介してフリップフロップ２２０に入力する。フリップフロップ２２０から出力されたデータは、時刻Ｚ６のタイミングで、エラー訂正回路２２１及びバッファメモリ２２２を介してフリップフロップ２２３に入力する。そして、時刻Ｚ４から時刻Ｚ７までの間に、パリティ生成回路２１７、パケット生成回路２１９及びバッファメモリ２２２による次処理が行われる。
【００８６】
第２処理Ｔ１１に係るデータに後続する第２処理Ｔ１２に係るデータは、時刻Ｚ２のタイミングで、エラー検出・訂正回路２１２のフリップフロップ２１２Ａに入力する。即ち、第２処理Ｔ１２では、第２処理Ｔ１１と比較して、τ１のタイミングだけ遅れてエラー検出・訂正回路２１２にデータが入力する。そして、時刻Ｚ２から時刻Ｚ５までの間は、エラー検出・訂正回路２１２においてデータのエラー検出・訂正処理が行われる。次いで、第２処理Ｔ１２において、時刻Ｚ５から時刻Ｚ８までの間は、パリティ生成回路２１７、パケット生成回路２１９及びバッファメモリ２２２による次処理が行われる。
【００８７】
第２処理Ｔ１２に係るデータに後続する第２処理Ｔ１３に係るデータは、時刻Ｚ３のタイミングで、エラー検出・訂正回路２１２のフリップフロップ２１２Ａに入力する。即ち、第２処理Ｔ１３では、第２処理Ｔ１２と比較して、τ１のタイミングだけ遅れてエラー検出・訂正回路２１２にデータが入力する。そして、時刻Ｚ３から時刻Ｚ６までの間は、エラー検出・訂正回路２１２においてデータのエラー検出・訂正処理が行われる。次いで、第２処理Ｔ１３において、時刻Ｚ６から時刻Ｚ９までの間は、パリティ生成回路２１７、パケット生成回路２１９及びバッファメモリ２２２による次処理が行われる。なお、第２処理Ｔ１１からＴ１３の各々において、マルチプレクサ２１４は、エラー検出・訂正回路２１２を経由する第２処理ルートからのデータを選択して出力する。
【００８８】
第２処理Ｔ１３の処理開始時刻であるＺ３から処理切替判定回路２１６によりＮＯＰが２τ連続で検出されたものとする。データ受信回路２１１から送信されたデータにＮＯＰが連続で２τ以上存在すると判定された場合、処理切替判定回路２１６は、マルチプレクサ２１４に対して、エラー検出・訂正回路２１２を経由するデータを出力する処理を停止し、フリップフロップ２１５を経由するデータを選択して出力する指示を行う。マルチプレクサ２１４は、データ受信回路２１１からの指示に従い、第２処理ルートからのデータの代わりに、第１処理ルートからのデータを選択して出力する切替動作を行う。
【００８９】
第１処理Ｔ１４に係るデータは、時刻Ｚ６のタイミング、即ち、２回目のＮＯＰを検出した次のタイミングにおいて、エラー検出・訂正回路２１２のフリップフロップ２１２Ａ及びフリップフロップ２１５に入力する。マルチプレクサ２１４は、エラー検出・訂正回路２１２からの指示により、フリップフロップ２１５からのデータ、即ち第１処理ルートからのデータを選択して出力する。
【００９０】
第１処理Ｔ１４において、フリップフロップ２１５に入力したデータは、エラー検出・訂正回路２１２によるデータ検出・訂正処理が行われずに、時刻Ｚ７のタイミングでマルチプレクサ２１４及びパリティ生成回路２１７を介してフリップフロップ２１８に入力する。フリップフロップ２１８から出力されたデータは、時刻Ｚ８のタイミングで、パケット生成回路２１９を介してフリップフロップ２２０に入力する。フリップフロップ２２０から出力されたデータは、時刻Ｚ９のタイミングで、エラー訂正回路２２１及びバッファメモリ２２２を介してフリップフロップ２２３に入力する。そして、時刻Ｚ７から時刻Ｚ１０までの間、パリティ生成回路２１７、パケット生成回路２１９及びバッファメモリ２２２による次処理が行われる。
【００９１】
処理切替判定回路２１６は、ＮＯＰが例えば２τ以上で検出された場合には、１回目のＮＯＰ検出から２τ後のタイミングで第２処理Ｔ１３から第１処理Ｔ１４に切替える。即ち、処理切替判定回路２１６は、第２処理Ｔ１３の処理開始時刻であるＺ３から第１処理Ｔ１４の処理開始時刻であるＺ６までの間に第２処理Ｔ１３から第１処理Ｔ１４に切替える。即ち、第１処理Ｔ１４以降のデータ処理は、エラー検出・訂正回路２１２によって制御用ビットに１ビットエラーが検出されるまで、第１処理Ｔ１４が継続適用される。
【００９２】
本実施例に係るデータ処理回路２１Ａによるデータ処理時間の短縮化を検証するために、データ処理回路２１Ａの単発データ処理におけるエラー検出率を測定した。１ビットエラーのエラー検出率は０．１％であった。検出した１ビットエラーのうち、制御用ビットの１ビットエラーのエラー検出率は、０．０１％であった。また、２ビットエラーのエラー検出率は、０．１％であった。エラーが検出されない正常なデータは９９．８％であった。即ち、エラーの無いデータ、及びデータの本体部に１ビットエラーを含むデータが９９．９％の割合で存在することがわかる。
【００９３】
本実施例に係るデータ処理回路２１Ａは、９９．９％のデータに対しては第１処理に要する処理時間でデータ処理を行うことができる。そのため、データ処理が例えば１００回行われたと仮定すると、１回のデータ処理毎に、第２処理と第１処理の差分である２τの処理時間が、第２処理のみを実行する場合と比べて短縮される。そのため、合計で９９．８（回）×２τ＝１９９．６τ分の処理時間が短縮できる。
【００９４】
開示の技術によれば、エラー検出・訂正回路２１２で制御用ビットの１ビットエラーが検出されないときは、フリップフロップ２１５を経由したデータをマルチプレクサ２１４から出力する。一方、エラー検出・訂正回路２１２で制御用ビットの１ビットエラーが検出されたときは、マルチプレクサ２１４は制御用ビットの１ビットエラーが訂正されたデータを出力する。制御用ビットの１ビットエラーが検出されないデータは、エラー検出・訂正回路２１２を経由せずにフリップフロップ２１５を経由してマルチプレクサ２１４に出力されるため、エラー検出・訂正回路２１２によるデータのエラー検出・処理時間を必要としない。そのため、データの処理時間を短縮することができる。
【００９５】
なお、クラスタ１０は、システム記憶装置２０が備えるＩ／Ｏコントローラ２１と同様の構成を有するＩ／Ｏコントローラを備えても良い。即ち、本実施例に係るデータ処理回路２１Ａは、クラスタ１０に係るＩ／Ｏコントローラに適用することができる。クラスタ１０に係るＩ／Ｏコントローラにデータ処理回路２１Ａを適用することによって、クラスタ１０からシステム記憶装置２０にデータ送信する際に、データ処理時間を短縮化することができる。
【符号の説明】
【００９６】
１  情報処理装置
１０  クラスタ
１１  中央処理装置
１２  Ｉ／Ｏコントローラ
１３  主記憶装置
１４  バス
２０  システム記憶装置
２１  Ｉ／Ｏコントローラ
２１Ａ  データ処理回路
２２  メモリコントローラ
２３  メモリ
２３Ａ  プログラム
２４  バス
３０  接続線
２１１  データ受信回路
２１２  エラー検出・訂正回路
２１２Ａ  フリップフロップ
２１２Ｂ  ゲート回路
２１２Ｃ  フリップフロップ
２１２Ｄ  ゲート回路
２１２Ｅ  フリップフロップ
２１４  マルチプレクサ
２１５  フリップフロップ
２１６  処理切替判定回路
２１７  パリティ生成回路
２１８  フリップフロップ
２１９  パケット生成回路
２２０  フリップフロップ
２２１  エラー訂正回路
２２２  バッファメモリ
２２３  フリップフロップ
２２４  データ送信回路
【図１】
2012010108.tif 000003
【図２】
2012010108.tif 000004
【図３】
2012010108.tif 000005
【図４】
2012010108.tif 000006
【図５】
2012010108.tif 000007
【図６】
2012010108.tif 000008
【図７】
2012010108.tif 000009
【図８】
2012010108.tif 000010