(57)【特許請求の範囲】
【請求項１】
送信データを保持する送信バッファと、
前記送信データにおけるビット毎の変化の有無を検出する検出回路と、
前記検出回路により検出された変化するビットが予め設定されたビットと一致する場合、前記送信データを複数のサイクルの期間で送信し、前記検出回路により検出された変化するビットが予め設定されたビットと一致しない場合、前記送信データを１つのサイクルの期間で送信する出力制御回路とを有することを特徴とする送信装置。
【請求項２】
判定対象のビットを示す情報を設定するレジスタと、
前記レジスタに設定された情報に基づいて、前記検出回路により検出された変化するビットが予め設定されたビットであるか否かを判定する比較回路とを有することを特徴とする請求項１記載の送信装置。
【請求項３】
前記出力制御回路は、前記検出回路により検出された変化するビットが予め設定されたビットと一致する場合、前記送信データの前の送信データを複数のサイクルの期間で送信することを特徴とする請求項１又は２記載の送信装置。
【請求項４】
送信バッファに保持される送信データにおけるビット毎の変化の有無を検出する検出工程と、
前記検出工程で検出された変化するビットが予め設定されたビットと一致する場合、前記送信データを複数のサイクルの期間で送信し、前記検出工程で検出された変化するビットが予め設定されたビットと一致しない場合、前記送信データを１つのサイクルの期間で送信する出力制御工程とを有することを特徴とする送信装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信装置及び送信装置の制御方法に関する。
【背景技術】
【０００２】
製造技術の進歩により、大きなチップサイズ、微細なトランジスタゲートの大規模集積回路が実現できるようになってきている。大規模集積回路では、機能ブロック毎に独立に実装し、それらの機能ブロックをバスで接続することがよく行われる。大規模集積回路における微細化は、ゲート遅延に対してはメリットをもたらすが、配線遅延に対しては配線抵抗や近接容量の増大などデメリットがある。
【０００３】
大規模集積回路において、チップ内に実装されるゲート数は増大し、ゲート間を接続する配線も莫大な量となってきている。例えば、大規模集積回路における長距離配線では、近接配線の影響や同時スイッチングの影響などＳＴＡ（静的タイミング解析）では予測しにくいデータパターンに依存した現象による歩留り低下が起きてきている。このようなデータパターンに依存する歩留り低下は、物理実装による回避が難しい。
【０００４】
大規模集積回路において長距離バスを低レイテンシかつ高歩留りで実装することは重要な問題となっている。高歩留りを実現するには遅延に関してマージンを持たせた設計とすることが考えられるが、レイテンシが増大してしまう。また、低レイテンシを実現するには遅延に関するマージンを小さくするような設計となるが、この場合には歩留りが悪化してしまう。
【０００５】
ここで、長距離バスを有する大規模集積回路において、高歩留り化のためにはバスを介したデータ転送におけるエラーを検出して救済する方法が考えられる。この方法として、再送制御による方法（例えば、特許文献１、２参照）や、パリティ符号やＥＣＣ（Error Correction Code）等の冗長信号を用いたエラー訂正による方法（例えば、特許文献３参照）がある。
【０００６】
しかし、再送制御による方法では、単純に行うとエラーの要因が解消されない限り同一の条件でデータを再送してもエラーが救済されず、再送を繰り返すことになり性能を低下させてしまう。それに対して、特許文献１のようにデータの再送時に転送経路を変えて回避する方法も提案されているが、複数の転送経路を設けるために回路規模が増大してしまう。また、特許文献２のようにクロック周期を一時的に変えてセットアップ要因を変化させることによって救済する方法も提案されているが、クロック周期の変更は広い範囲の回路に影響を与え性能への影響が大きくなる。
【０００７】
また、ＥＣＣ等の冗長信号を用いたエラー訂正による方法は、特に多ビットの訂正を実現する場合には高密度配線に起因した問題に対して配線密度がより増大してしまう。そのため、物理的に弱くなってしまったり、複雑なエラー訂正やエラー検出を行う回路をデータが通ることになりレイテンシが増大してしまったりする。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−２１７５８１号公報
【特許文献２】特開２００４−１２８９６３号公報
【特許文献３】特開２００５−３５４３１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
１つの側面では、本発明の目的は、歩留りを低下させることなく、データ転送におけるレイテンシが小さい送信装置及びその制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
送信装置の一態様は、送信データを保持する送信バッファと、送信データにおけるビット毎の変化の有無を検出する検出回路と、検出回路での検出データに応じて送信データの出力を制御する出力制御回路とを有する。出力制御回路は、検出回路により検出された変化するビットが予め設定されたビットと一致する場合、送信データを複数のサイクルの期間で送信し、検出回路により検出された変化するビットが予め設定されたビットと一致しない場合、送信データを１つのサイクルの期間で送信する。
【発明の効果】
【００１１】
発明の一態様においては、予め設定された情報に応じてエラーが発生しやすいデータパターンを送信するときだけ複数のサイクルで送信するようにしてデータ転送を行うことができ、歩留りを低下させることなく、レイテンシを小さくすることができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施形態における送信装置の構成例を示す図である。
【図２】第１の実施形態におけるデータ転送を説明するための図である。
【図３】第２の実施形態における送信装置の構成例を示す図である。
【図４】第２の実施形態におけるデータ転送を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。
【００１４】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態における送信装置の構成例を示すブロック図である。第１の実施形態における送信装置は、送信バッファ１１０及び制御部１２０を有し、ラッチ１３０を介して入力されるデータを送信する。ラッチ１３０は、データＤＡＴ１及びそのデータが有効であるか否かを示すバリッド信号ＶＬＤ１が入力され、図示しないクロック信号に基づいてラッチしてデータＤＡＴ２及びバリッド信号ＶＬＤ２として出力する。なお、本実施形態において、データＤＡＴ１、ＤＡＴ２、及び送信バッファ１１０から出力されるデータＤＡＴＯは、パラレル転送される複数ビットの信号であり、以下では一例として６４ビットのパラレル信号とする。
【００１５】
送信バッファ１１０は、例えばＦＩＦＯ（First-In First-Out）形式のバッファであり、ラッチ１３０から出力されるバリッド信号ＶＬＤ２に応じて、有効なデータＤＡＴ２を保持する。また、送信バッファ１１０は、データＤＡＴ２に対応する制御情報ＣＴＳをデータＤＡＴ２とともに保持する。制御部１２０は、ライトポインタ（ＷＰ）１２１、リードポインタ（ＲＰ）１２２、出力制御回路１２３、トグル検出回路１２４、設定レジスタ１２５、及び比較回路１２６を有する。
【００１６】
ライトポインタ１２１は、ラッチ１３０から出力されたデータＤＡＴ２を書き込む送信バッファ１１０における領域を指定する。ライトポインタ１２１は、ラッチ１３０から出力されるデータＤＡＴ２が有効であることをバリッド信号ＶＬＤ２が示す場合、送信バッファ１１０における書き込み領域を示すライトポインタ値を更新する。このライトポインタ値により指定される送信バッファ１１０の領域にデータＤＡＴ２が書き込まれる。
【００１７】
リードポインタ１２２は、送信バッファ１１０から読み出して出力するデータが保持されている領域を指定する。リードポインタ１２２は、出力制御回路１２３からの制御に基づいてリードポインタ値を更新する。このリードポインタ値により指定される送信バッファ１１０の領域に保持されているデータが送信データＤＡＴＯとして送信装置から出力される。
【００１８】
出力制御回路１２３は、送信バッファ１１０に保持されたデータの出力を制御する。出力制御回路１２３は、ライトポインタ１２１とリードポインタ１２２とが示す値に差がある場合、送信バッファ１１０に送信すべきデータがあると判断し、リードポインタ１２２の値を更新して送信バッファ１１０からデータＤＡＴＯを出力させる。また、出力制御回路１２３は、送信バッファ１１０にデータとともに保持されている制御情報ＣＴＳを参照し、出力データＤＡＴＯが有効であることを示すバリッド信号ＶＬＤＯの出力タイミングを制御したり、リードポインタ１２２の値を更新するタイミングを制御したりする。
【００１９】
トグル検出回路１２４は、ラッチ１３０に入力されるデータＤＡＴ１とラッチ１３０から出力されるデータＤＡＴ２とビット毎に比較し、値が反転しているか否かを判定する。すなわち、トグル検出回路１２４は、送信バッファ１１０に入力されるデータ信号ＤＡＴ２が前後で反転するか否かをビット毎に検出する。
【００２０】
比較回路１２６は、トグル検出回路１２４の検出結果と設定レジスタ１２５に設定されたデータとを比較して制御信号ＣＴＳを出力する。具体的には、比較回路１２６は、設定レジスタ１２５において指定されたビットがトグル検出回路１２４により値が反転したと検出された場合、それに対応するデータを複数サイクルで転送するように指定する制御情報ＣＴＳを出力する。
【００２１】
設定レジスタ１２５には、送信装置からのデータ転送においてエラーが発生する可能性のあるビットを示すデータが予め設定される。データ転送においてエラーが発生する可能性のあるビットは、例えば送信装置を通常動作させる前に選別試験等を予め行って、エラーが発生しやすいデータパターンを抽出し、設定レジスタ１２５に設定する。なお、設定レジスタ１２５に設定可能なデータの数に制限はなく、任意の数のデータを設定することが可能である。
【００２２】
次に、動作について説明する。送信バッファ１１０は、ラッチ１３０から出力されるバリッド信号ＶＬＤ２がデータが有効であることを示すときデータＤＡＴ２を保持する。このとき、トグル検出回路１２４により反転すると検出されたビットが設定レジスタ１２５に設定された値に応じたビットに一致するとき、データＤＡＴ２とともにエラーが発生しやすいデータであることを示す制御情報ＣＴＳを送信バッファ１１０に保持する。
【００２３】
出力制御回路１２３は、送信バッファ１１０に保持されたデータを出力データＤＡＴＯとして出力するとき、出力するデータに対応する制御情報ＣＴＳを参照する。エラーが発生しやすいデータであることを制御情報ＣＴＳが示す場合、出力制御回路１２３は出力データＤＡＴＯを出力する際、データを複数のサイクル（２サイクル以上の期間）出力するように制御するとともに、データが有効であることを示すバリッド信号ＶＬＤＯを出力する期間を制御する。一方、エラーが発生しやすいデータではないことを制御情報ＣＴＳが示す場合、出力制御回路１２３は出力データＤＡＴＯを出力する際、データが有効であることを示すバリッド信号ＶＬＤＯを１サイクルの期間だけ出力しデータを出力する。
【００２４】
例えば、図２（Ａ）に示すようなデータが送信するデータとして送信バッファ１１０に入力されるとする。このとき、図２（Ｂ）に示すデータが設定レジスタ１２５に設定されている。すなわち、最下位ビットを０ビット目として下位側から２６ビット目のビット（図示する２０２）がデータ反転する際、エラーが発生しやすいビットとして抽出されている。
【００２５】
この場合、図２（Ａ）に示すデータにおいて２０１に示すデータの変化箇所がエラーが発生しやすい箇所となるが、この変化はトグル検出回路１２４により検出され比較回路１２６により設定レジスタ１２５に設定された値に一致すると判定される。この判定結果に基づき、送信バッファ１１０にデータを保持する際、データとともにエラーが発生しやすいことを示す制御情報ＣＴＳが保持される。
【００２６】
そして、送信バッファ１１０に保持されたこのデータを出力するとき、出力制御回路１２３は、制御情報ＣＴＳに基づいて図２（Ｃ）に示すように複数のサイクル（２サイクル以上の期間）にわたって出力する。また、出力制御回路１２３は、受信側でデータを適切に受信できるようバリッド信号ＶＬＤＯの出力タイミングを制御する。図２（Ｃ）に示す例では、出力データを変化させてから１サイクル後にデータが有効であることを示すようバリッド信号ＶＬＤＯを変化させる。なお、出力制御回路１２３は、エラーが発生しやすいデータではないことを制御信号ＣＴＳが示す場合、データを出力する際、データが有効であることを示すバリッド信号ＶＬＤＯを１サイクルの期間だけ出力する。
【００２７】
このようにエラーが発生しやすいデータパターンを転送する際に、複数のサイクルで転送する（マルチサイクル転送する）ことにより、エラーの発生を抑制してデータを転送することができる。また、エラーが発生しやすいデータパターンではない場合、１サイクルでの転送を行うことにより、必要以上にレイテンシが増大することを抑制することができる。これにより、エラーが発生しやすいデータパターンを送信するときだけ複数のサイクルで送信するようにしてデータ転送を行うことができ、歩留りの低下を抑えレイテンシの増大を抑制することができる。
【００２８】
なお、前述した説明ではエラーが発生しやすいデータパターンを送信する際、後に送信するデータを複数のサイクルで転送するようにしているが、図２（Ｄ）に示すように前に送信するデータを複数のサイクルで送信するようにしても良い。このようにした場合には、遅延によるエラーだけではなく、レーシングによるエラーを防止することが可能となる。また、エラーが発生しやすい前後のデータパターンについて、例えば各データを３サイクルで出力するようにし、２サイクル目にデータが有効であることを示すようにすることで、それぞれのデータについて遅延及びレーシングによるエラーの発生を抑制することができる。
【００２９】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
図３は、第２の実施形態における送信装置の構成例を示すブロック図である。第２の実施形態における送信装置は、送信バッファ３１０、制御部３２０、及び情報生成回路３３０を有し、ラッチ３５１、３５２を介して受信側にデータ等を送信する。受信側の装置は、パリティ符号やＥＣＣ等のエラー検出信号に基づいてデータのエラー検出を行うエラー検出回路３４０を有する。なお、本実施形態において、データＤＡＴＩ及びデータＤＡＴＯは、パラレル転送される複数ビットの信号である。
【００３０】
送信バッファ３１０は、例えばＦＩＦＯ形式のバッファであり、データＤＡＴＩが入力されるとともにそのデータが有効であるか否かを示すバリッド信号ＶＬＤＩが入力され、バリッド信号ＶＬＤＩに応じてデータＤＡＴＩを保持する。また、送信バッファ１１０は、情報生成回路３３０により生成されるデータＤＡＴＩに対応するエラー検出信号及びシーケンス番号を有する制御情報ＣＤＩをデータＤＡＴＩとともに保持する。
【００３１】
制御部３２０は、ライトポインタ（ＷＰ）３２１、リードポインタ（ＲＰ）３２２、及び出力制御回路３２３を有する。ライトポインタ３２１は、入力されるデータＤＡＴＩを書き込む送信バッファ３１０における領域を指定する。ライトポインタ３２１は、データＤＡＴＩが有効であることをバリッド信号ＶＬＤＩが示す場合、送信バッファ３１０における書き込み領域を示すライトポインタ値を更新する。このライトポインタ値により指定される送信バッファ３１０の領域に入力されたデータＤＡＴＩが書き込まれる。
【００３２】
リードポインタ３２２は、送信バッファ３１０から読み出して出力するデータが保持されている領域を指定する。リードポインタ３２２は、出力制御回路３２３からの制御に基づいてリードポインタ値を更新する。このリードポインタ値により指定される送信バッファ３１０の領域に保持されているデータ及び制御情報（エラー検出信号及びシーケンス番号）ＣＤＩが送信データＤＡＴＯ及び制御情報ＣＤＯとして送信装置から出力される。
【００３３】
出力制御回路３２３は、送信バッファ３１０に保持されたデータの出力を制御する。出力制御回路３２３は、ライトポインタ３２１とリードポインタ３２２とが示す値に差がある場合、送信バッファ３１０に送信すべきデータがあると判断し、リードポインタ３２２の値を更新して送信バッファ３１０からデータ等を出力させるとともにデータが有効であることを示すバリッド信号ＶＬＤＯの出力タイミングを制御する。また、出力制御回路３２３は、転送したデータにおいてエラーが検出されたことが受信側からの応答信号ＲＳＩにより通知された場合、エラーが検出されたシーケンス番号以降のデータを再送する。このとき、出力制御回路３２３は、エラーが検出されたシーケンス番号のデータについては、複数のサイクル（２サイクル以上の期間）出力するよう制御する。
【００３４】
情報生成回路３３０は、送信バッファ３２０に入力されるデータＤＡＴＩについて、エラー検出信号を生成するとともに、そのデータＤＡＴＩに係るシーケンス番号を生成して制御情報ＣＤＩとして出力する。エラー検出回路３４０は、ラッチ３５１、３５２等を介して受信した送信バッファ３１０からのデータ及び制御情報に基づいて、受信したデータにおけるエラーの有無を検出して検出結果及びシーケンス番号を送信装置に出力する。
【００３５】
本実施形態においては、図４（Ａ）に示すように、通常のデータ転送においては１サイクル単位で１つのデータを送信し、受信側でエラーが検出された場合、複数サイクル（例えば図示した例のように２サイクル）で１つのデータを送信する。例えば、図４（Ｂ）に示すように、シーケンス番号（ＳＱＮ）１のデータ（ＤＡＴ）Ｄ５においてエラーが検出された場合、出力制御回路３２３は、受信側からの応答信号ＲＳＩに基づいて、リードポインタ３２２のポインタ値をシーケンス番号１に対応するポインタ値に戻す。そして、シーケンス番号１以降のデータを再送させるとともに、エラーが検出されたシーケンス番号１に対応するデータＤ４〜Ｄ７を複数サイクルで送信する。
【００３６】
このように受信側にてエラーが検出された場合には、そのデータを複数のサイクルで転送する（マルチサイクル転送する）ように制御することにより、歩留りの低下を抑えレイテンシの増大を抑制することができる。
【００３７】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００３８】
１１０、３１０  送信バッファ
１２０、３２０  制御部
１２１、３２１  ライトポインタ
１２２、３２２  リードポインタ
１２３、３２３  出力制御回路
１２４  トグル検出回路
１２５  設定レジスタ
１２６  比較回路
１３０、３５１、３５２  ラッチ
３３０  情報生成回路
３４０  エラー検出回路
【図１】
0006674090.tif 000002
【図２】
0006674090.tif 000003
【図３】
0006674090.tif 000004
【図４】
0006674090.tif 000005