(57)【要約】  実装面積や処理オーバヘッドを削減して簡単に誤り耐性機能を強化する、ネットワークオンチップに適用可能な技術を提供する。  送信ノードおよび受信ノードを有し、パケット交換型バスを備えた半導体回路のバスシステムに用いられる通信装置が提供される。通信装置は、受信端子と、バスシステムの動作環境に関する条件と誤り耐性方式とが対応付けられた規則、および経路長に関する情報を記憶する記憶部と、バスシステムの動作環境に関する条件および規則を利用して誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信したデータに対応する誤り耐性情報を生成する誤り処理部と、誤り耐性情報およびデータを含む少なくとも１つのパケットをバスに送信する送信端子とを備えている。動作環境に関する条件は、データの送信先である他の通信装置に至るまでのバス経路長が所定値よりも長い伝送経路に対して、誤り耐性を付与する条件である。
2014083780.tif 000002
【特許請求の範囲】
【請求項１】
送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送するバスを備えた半導体回路のバスシステムに用いられる通信装置であって、
バスを介してパケットを受信する受信端子と、
バスシステムの動作環境に関する条件と誤り耐性方式とが対応付けられた規則、および経路長に関する情報を記憶する記憶部と、
前記バスシステムの動作環境に関する条件、および前記規則を利用して前記誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する誤り処理部と、
前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記バスに送信する送信端子と
を備え、
前記バスシステムの動作環境に関する条件は、前記データの送信先である他の通信装置に至るまでの前記バスの経路長が予め定められた値よりも長い伝送経路に対して、誤り耐性を付与する条件である、通信装置。
【請求項２】
前記バスシステムの動作環境に関する条件は、
前記バスの周波数、
前記バスの動作電圧、
前記他の通信装置に至るまでの前記バスの経路長、
前記他の通信装置から受信したエラー率、
の少なくとも１つに関して誤り耐性を付与する条件である、請求項１に記載の通信装置。
【請求項３】
前記誤り処理部は、前記バスシステムに設けられた他の機器から前記バスシステムの動作環境に関する条件を受け取る、請求項１に記載の通信装置。
【請求項４】
前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報のパケットを生成し、
前記送信端子は、前記データのパケットおよび前記誤り耐性情報のパケットを独立して送信する、請求項１に記載の通信装置。
【請求項５】
前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報を含む拡張パケットを生成し、
前記送信端子は、前記拡張パケットを送信する、請求項１に記載の通信装置。
【請求項６】
前記誤り耐性情報を第１の誤り耐性情報としたとき、
前記誤り処理部は、前記バスシステムの動作環境に関する条件に基づいて前記規則を参照して前記誤り耐性方式を決定し、前記第１の誤り耐性情報の伝送中に生じる誤りを訂正するための第２の誤り耐性情報をさらに生成し、
前記送信端子は、前記第１の誤り耐性情報、前記第２の誤り耐性情報、および前記データを含む少なくとも１つのパケットを前記バスに送信する、請求項１に記載の通信装置。
【請求項７】
前記バスは、前記データのパケットを伝送するためのデータバス、および前記パケットの送信先を示すアドレス情報を伝送するためのアドレスバスから構成されており、
前記送信端子は、前記データを含む少なくとも１つのパケットを前記データバスに送信し、前記誤り耐性情報を前記アドレスバスに送信する、請求項１に記載の通信装置。
【請求項８】
前記バスシステムの動作環境に関する条件が、前記他の通信装置から受信したエラー率に関して誤り耐性を付与する条件であるとき、前記誤り処理部は、決定した前記誤り耐性方式とは異なる誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する、請求項２に記載の通信装置。
【請求項９】
前記バスには、許容される遅延量が相対的に大きい第１のデータのパケット、および許容される遅延量が相対的に小さい第２のデータのパケットが伝送され、
前記バスには、前記他の通信装置に至る第１の伝送経路、および前記第１の伝送経路よりも経路長が短い第２の伝送経路が存在しており、
前記バスシステムの動作環境に関する条件が、前記他の通信装置に至るまでの前記バスの経路長に関して誤り耐性を付与する条件であるとき、
前記誤り処理部は、前記第１のデータのパケットに対応する誤り耐性情報を生成し、
前記送信端子は、前記誤り耐性情報および前記データを含む少なくとも１つのパケット
を前記第１の伝送経路に送信する、請求項２に記載の通信装置。
【請求項１０】
送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送する半導体回路のバスシステムに用いられる通信装置であって、
データおよび誤り耐性情報を含む少なくとも１つのパケットを受信する受信端子と、
前記誤り耐性情報を利用して前記データのパケットに誤り訂正処理を行う誤り処理部と、
前記誤り訂正処理が行われたデータのパケットを受信ノードに送信する送信端子と
を備えた、通信装置。
【請求項１１】
前記バスシステムに用いられて前記パケットを中継するルータであって、請求項１に記載の通信装置を有するルータ。
【請求項１２】
データを含むパケットを送信する送信ノードと、
前記パケットを受信する請求項１に記載の第１の通信装置であって、前記データおよび前記誤り耐性情報を含む少なくとも１つのパケットを前記バスに送信する第１の通信装置と、
前記第１の通信装置が送信した前記少なくとも１つのパケットを受信する、請求項１０に記載の第２の通信装置であって、前記誤り訂正処理が行われた前記データのパケットを
送信する第２の通信装置と、
前記第２の通信装置が送信した前記データのパケットを受信する受信ノードと
を備えた、半導体回路のバスシステム。
【請求項１３】
前記パケットを中継するルータをさらに備えた、請求項１２に記載のバスシステム。
【請求項１４】
前記送信ノード、および前記第１の通信装置は第１の半導体チップ回路上に設けられており、
前記第２の通信装置、および前記受信ノードは、前記第１の半導体チップとは異なる第２の半導体チップ回路上に設けられており、
前記第１の半導体チップ回路と前記第２の半導体チップ回路とが、バスによって接続されている、請求項１２に記載のバスシステム。
【請求項１５】
請求項１２に記載のバスシステムを有する半導体回路の回路基板。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、バスを備えた半導体システムにおける通信装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
図１（ａ）は、集中型のバス制御の例を示す。集中型のバス制御を行う従来の集積回路では、主に複数のバスマスタとメモリとの間は１つのバスによって接続され、アービターによって各バスマスタからメモリへのアクセスが調停される。しかし、集積回路の高機能化、マルチコア化により、回路の規模が増大し、トラヒックも複雑に変動しながらバスを流れており、集中型のバス制御による集積回路の設計が困難になってきている。【０００３】
その一方で、近年、並列計算機での接続技術や、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）網などのネットワーク制御の技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図１（ｂ）は、分散型のバス制御の例を示す。分散型のバスを有する半導体集積回路は、複数のルータが複数のバスで接続されて構成されている。近年、図１（ｂ）に示すような分散型のバスを用いることにより、大規模化した集積回路内のトラヒックを、複数のバスに分散して伝送するネットワークオンチップ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ；ＮｏＣ）の取り組みがある。【０００４】
半導体のバスのトラヒックは、年々増加している。そのため、バス伝送性能を維持するためには、上述のＮｏＣを用いたとしても、トラヒックの増加にあわせてバス動作周波数を高めていくか、バス幅を大きくする必要がある。【０００５】
さらに、これと関連して、半導体の低電圧化による影響、およびシステムの大規模化に起因する長配線化の影響も生じている。【０００６】
図２（ａ）〜（ｃ）は、映像チップの大規模化の一例を示している。図２の（ａ）は高解像度（ＨＤ）映像用のチップ、（ｂ）はいわゆる４Ｋ２Ｋ映像用のチップ、（ｃ）はいわゆる８Ｋ４Ｋ映像用のチップの大きさを示している。取り扱うデータ量が大きくなるほどチップが大きくなる傾向にある。【０００７】
非特許文献１は、半導体の低電圧化、およびシステムの長配線化の影響、そしてそれにより生じるバスでの伝送誤りの発生を指摘している（非特許文献１）。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】エラー検出・再送機能を備えた低消費電力オンチップルータの設計、情報処理学会研究報告、2011.1
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＮｏＣのバスの伝送性能を維持するためは、必要な箇所、必要なタイミングで誤り訂正を行い、伝送誤りが生じたまま伝送されることを防ぐことが求められている。また、面積や処理オーバヘッドを削減し、既存ＮｏＣに対して、誤り耐性機能を簡単に強化することが求められている。【００１０】
本願の、限定的ではない例示的なある実施形態は、実装面積や処理オーバヘッドを削減して簡単に誤り耐性機能を強化する技術を提供する。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の一態様は、送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送するバスを備えた半導体回路のバスシステムに用いられる通信装置であって、バスを介してパケットを受信する受信端子と、バスシステムの動作環境に関する条件と誤り耐性方式とが対応付けられた規則、および経路長に関する情報を記憶する記憶部と、前記バスシステムの動作環境に関する条件、および前記規則を利用して前記誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する誤り処理部と、前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記バスに送信する送信端子とを備え、前記バスシステムの動作環境に関する条件は、前記データの送信先である他の通信装置に至るまでの前記バスの経路長が予め定められた値よりも長い伝送経路に対して、誤り耐性を付与する条件である、通信装置を含む。【００１２】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１３】
本開示の例示的なある実施形態によれば、ネットワークオンチップにおけるネットワーク接続や、システムオンチップ（Ｓｙｓｔｅｍ  Ｏｎ   Ｃｈｉｐ；ＳｏＣ）間のネットワーク接続などに対して、実装面積や処理オーバヘッドを削減して簡単に誤り耐性機能を強化することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】（ａ）は集中型のバス制御の例を示す図であり、（ｂ）は分散型のバス制御の例を示す図である。
【図２】（ａ）〜（ｃ）は、映像チップの大規模化の一例を示す図である。
【図３】（ａ）〜（ｃ）は、ネットワーク化されたＨＤ、４Ｋ２Ｋ、８Ｋ４Ｋの各チップの模式図である。
【図４】誤り耐性付与技術を用いた例を示す図である。
【図５】本開示の実施形態にかかるバスシステム７００の構成の模式図である。
【図６】図５に示すバスシステム７００を、複数のＳｏＣを有するバスシステム（回路基板）７００ａに適用した例を示す図である。
【図７】本実施形態によるローカルバス５００ａおよび５００ｂを構成するバスシステムの例を示す図である。
【図８】パケット６００の伝送フォーマットの一例と、パケット６００を複数のフリットに分割した例とを示す図である。
【図９】ルータ５５０の構成を示す図である。
【図１０】ルータ５５０の動作手順を示すフローチャートである。
【図１１】高信頼通信装置７０１の構成を示す図である。
【図１２】記憶装置８０３が保持する規則の例を示す図である。
【図１３】高信頼通信装置の概略的な動作手順を示すフローチャートである。
【図１４】伝送誤りが発生しなかった場合のシーケンス例を示す図である。
【図１５】伝送誤りが発生した場合のシーケンス例を示す図である。
【図１６】高信頼通信装置の詳細な内部動作を示すフローチャートである。
【図１７】誤り情報をデータと分離して伝送する方法に関する複数の例を説明する図である。
【図１８】リングバスを用いた場合に誤り耐性を適用する例を示す図である。
【図１９】高信頼通信装置の機能を組み込んだルータ６５０の構成を示す図である。
【図２０】回路基板上のＳｏＣ間の通信に誤り耐性を適用する例を示す図である。
【発明を実施するための形態】
【００１５】
上述したように、非特許文献１は一般のバスでの伝送誤りの発生を指摘している。本願発明者らは、実装の観点からさらに問題点を検討した。
【００１６】
たとえば、４Ｋ２Ｋ映像用チップを作製するために、４つのＨＤ映像用チップを利用する方法が考えられる。同様に、８Ｋ４Ｋ映像用のチップを作製するために、４つの４Ｋ２Ｋ映像用チップ、または１６個のＨＤ映像用チップを利用する方法が考えられる。さらには、ＨＤ、４Ｋ２Ｋ、８Ｋ４Ｋの各チップを既存の画像処理回路を複数組み合わせて作製する方法が考えられる。いずれの目的も、既存のチップを有効活用し、開発コストを抑えることにある。これらのチップはネットワーク化されたバスで相互に接続される。
【００１７】
バスには、大別して、データを送信する送信ノード、データの伝送を中継するルータ、およびデータを受信する受信ノードが存在する。図３（ａ）〜（ｃ）は、ネットワーク化されたＨＤ、４Ｋ２Ｋ、８Ｋ４Ｋの各チップを模式的に示している。図３（ａ）〜（ｃ）は、ネットワーク化されたバスによって接続された送信／受信ノード、およびルータ等が模式的に示されている。
【００１８】
上述した各構成では、複数のチップがバスで相互に接続されることになる。すると、チップ間の通信時にも伝送誤りが発生する可能性がある。
【００１９】
図４は、誤り耐性付与技術を用いた例を示す。図には、たとえば送信ノードに相当するマスタ、受信ノードに相当するスレーブ、およびそれらをルータで相互接続するモデルが示されている。
【００２０】
誤り耐性を付与する伝送路として、２つのルータを接続する伝送路４０１、および３以上のルータが多段接続された伝送路４０２の２通りが考えられる。
【００２１】
非特許文献１は、ヘッダとペイロードを区別して異なる誤り耐性を付与する方法を提案している。しかしながら、この方法によれば、各ルータが誤り耐性処理を行わなければならない。各ルータは、パケット構造を解析し、データに付与された誤り耐性情報を読み出して誤り訂正を行うことが必要である。
【００２２】
図の例では、１つのパケットにヘッダ４０３、ペイロード４０４、および誤り訂正符号４０５が含まれている。このように、ＮｏＣシステムの各ネットワーク要素が誤り耐性機能のための処理を行うことを前提とすると、誤り耐性の処理に起因して生じる実装面積の増加や処理オーバヘッド、およびＮｏＣの再利用性や汎用性の面で課題が生じる。
【００２３】
そこで本開示は、実装面積や処理オーバヘッドを削減して簡単に誤り耐性機能を強化する技術を提供する。
【００２４】
本開示の一態様の概要は以下のとおりである。
【００２５】
本開示の第１の態様である通信装置は、送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送するバスを備えた半導体回路のバスシステムに用いられる。前記通信装置は、バスを介してパケットを受信する受信端子と、バスシステムの動作環境に関する条件と誤り耐性方式とが対応付けられた規則、および経路長に関する情報を記憶する記憶部と、前記バスシステムの動作環境に関する条件、および前記規則を利用して前記誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する誤り処理部と、前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記バスに送信する送信端子とを備えている。前記バスシステムの動作環境に関する条件は、前記データの送信先である他の通信装置に至るまでの前記バスの経路長が予め定められた値よりも長い伝送経路に対して、誤り耐性を付与する条件である。
【００２６】
ある実施形態において、前記バスシステムの動作環境に関する条件は、前記バスの周波数、前記バスの動作電圧、前記他の通信装置に至るまでの前記バスの経路長、前記他の通信装置から受信したエラー率、の少なくとも１つに関して誤り耐性を付与する条件である。
【００２７】
ある実施形態において、前記誤り処理部は、前記バスシステムに設けられた他の機器から前記バスシステムの動作環境に関する条件を受け取る。
【００２８】
ある実施形態において、前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報のパケットを生成し、前記送信端子は、前記データのパケットおよび前記誤り耐性情報のパケットを独立して送信する。
【００２９】
ある実施形態において、前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報を含む拡張パケットを生成し、前記送信端子は、前記拡張パケットを送信する。
【００３０】
ある実施形態において、前記誤り耐性情報を第１の誤り耐性情報としたとき、前記誤り処理部は、前記バスシステムの動作環境に関する条件に基づいて前記規則を参照して前記誤り耐性方式を決定し、前記第１の誤り耐性情報の伝送中に生じる誤りを訂正するための第２の誤り耐性情報をさらに生成し、前記送信端子は、前記第１の誤り耐性情報、前記第２の誤り耐性情報、および前記データを含む少なくとも１つのパケットを前記バスに送信する。
【００３１】
前記バスは、前記データのパケットを伝送するためのデータバス、および前記パケットの送信先を示すアドレス情報を伝送するためのアドレスバスから構成されており、前記送信端子は、前記データを含む少なくとも１つのパケットを前記データバスに送信し、前記誤り耐性情報を前記アドレスバスに送信する。
【００３２】
ある実施形態において、前記バスシステムの動作環境に関する条件が、前記他の通信装置から受信したエラー率に関して誤り耐性を付与する条件であるとき、前記誤り処理部は、決定した前記誤り耐性方式とは異なる誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する。
【００３３】
ある実施形態において、前記バスには、許容される遅延量が相対的に大きい第１のデータのパケット、および許容される遅延量が相対的に小さい第２のデータのパケットが伝送され、前記バスには、前記他の通信装置に至る第１の伝送経路、および前記第１の伝送経路よりも経路長が短い第２の伝送経路が存在しており、前記バスシステムの動作環境に関する条件が、前記他の通信装置に至るまでの前記バスの経路長に関して誤り耐性を付与する条件であるとき、前記誤り処理部は、前記第１のデータのパケットに対応する誤り耐性情報を生成し、前記送信端子は、前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記第１の伝送経路に送信する。
【００３４】
本開示の第２の態様である通信装置は、送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送する半導体回路のバスシステムに用いられる。前記通信装置は、データおよび誤り耐性情報を含む少なくとも１つのパケットを受信する受信端子と、前記誤り耐性情報を利用して前記データのパケットに誤り訂正処理を行う誤り処理部と、前記誤り訂正処理が行われたデータのパケットを受信ノードに送信する送信端子とを備えている。
【００３５】
本開示の一態様であるルータは、前記バスシステムに用いられて前記パケットを中継するルータであって、上述の第１の通信装置を有するル―タである。
【００３６】
本開示の一態様である半導体回路のバスシステムは、データを含むパケットを送信する送信ノードと、前記パケットを受信する上述の第１の通信装置であって、前記データおよび前記誤り耐性情報を含む少なくとも１つのパケットを前記バスに送信する第１の通信装置と、前記第１の通信装置が送信した前記少なくとも１つのパケットを受信する、上述の第２の通信装置であって、前記誤り訂正処理が行われた前記データのパケットを送信する第２の通信装置と、前記第２の通信装置が送信した前記データのパケットを受信する受信ノードを備えている。
【００３７】
ある実施形態において、前記バスシステムは、前記パケットを中継するルータをさらに備えている。
【００３８】
ある実施形態において、前記送信ノード、および前記第１の通信装置は第１の半導体チップ回路上に設けられており、前記第２の通信装置、および前記受信ノードは、前記第１の半導体チップとは異なる第２の半導体チップ回路上に設けられており、前記第１の半導体チップ回路と前記第２の半導体チップ回路とが、バスによって接続されている。
【００３９】
本開示の一態様である回路基板は、上述のバスシステムを有する半導体回路の回路基板である。
【００４０】
本開示の第１の態様である通信装置は、送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送するバスを備えた半導体回路のバスシステムに用いられる。前記通信装置は、バスを介してパケットを受信する受信端子と、バスシステムの動作環境に関する条件と誤り耐性方式とが対応付けられた規則を記憶する記憶部と、前記バスシステムの動作環境に関する条件、および前記規則を利用して前記誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する誤り処理部と、前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記バスに送信する送信端子とを備えている。
【００４１】
ある実施形態において、前記バスシステムの動作環境に関する条件は、前記バスの周波数、前記バスの動作電圧、前記誤り耐性情報を受信する他の通信装置に至るまでの前記バスの経路長、前記誤り耐性情報を受信する他の通信装置から受信したエラー率の少なくとも１つである。
【００４２】
ある実施形態において、前記誤り処理部は、前記バスシステムに設けられた他の機器から前記バスシステムの動作環境に関する条件を受け取る。
【００４３】
ある実施形態において、前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報のパケットを生成し、前記送信端子は、前記データのパケットおよび前記誤り耐性情報のパケットを独立して送信する。
【００４４】
ある実施形態において、前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報を含む拡張パケットを生成し、前記送信端子は、前記拡張パケットを送信する。
【００４５】
ある実施形態において、前記誤り耐性情報を第１の誤り耐性情報としたとき、前記誤り処理部は、前記バスシステムの動作環境に関する条件に基づいて前記規則を参照して前記誤り耐性方式を決定し、前記第１の誤り耐性情報の伝送中に生じる誤りを訂正するための第２の誤り耐性情報をさらに生成し、前記送信端子は、前記第１の誤り耐性情報、前記第２の誤り耐性情報、および前記データを含む少なくとも１つのパケットを前記バスに送信する。
【００４６】
ある実施形態において、前記バスは、前記データのパケットを伝送するためのデータバス、および前記パケットの送信先を示すアドレス情報を伝送するためのアドレスバスから構成されており、前記送信端子は、前記データを含む少なくとも１つのパケットを前記データバスに送信し、前記誤り耐性情報を前記アドレスバスに送信する。
【００４７】
ある実施形態において、前記バスシステムの動作環境に関する条件が、前記誤り耐性情報を受信する他の通信装置から受信したエラー率であるとき、前記誤り処理部は、決定した前記誤り耐性方式とは異なる誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する。
【００４８】
ある実施形態において、前記バスには、許容される遅延量が相対的に大きい第１のデータのパケット、および許容される遅延量が相対的に小さい第２のデータのパケットが伝送され、前記バスには、前記他の通信装置に至る第１の伝送経路、および前記第１の伝送経路よりも経路長が短い第２の伝送経路が存在しており、前記バスシステムの動作環境に関する条件が、前記他の通信装置に至るまでの前記バスの経路長であるとき、前記誤り処理部は、前記第１のデータのパケットに対応する誤り耐性情報を生成し、前記送信端子は、前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記第１の伝送経路に送信する。
【００４９】
本開示の第２の態様である通信装置は、送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送する半導体回路のバスシステムに用いられる。前記通信装置は、データおよび誤り耐性情報を含む少なくとも１つのパケットを受信する受信端子と、前記誤り耐性情報を利用して前記データのパケットに誤り訂正処理を行う誤り処理部と、前記誤り訂正処理が行われたデータのパケットを受信ノードに送信する送信部とを備えている。
【００５０】
本開示の一態様であるルータは、前記バスシステムに用いられて前記パケットを中継するルータであって、上述の第１の通信装置を有するル―タである。
【００５１】
本開示の一態様である半導体回路のバスシステムは、データを含むパケットを送信する送信ノードと、前記パケットを受信する上述の第１の通信装置であって、前記データおよび前記誤り耐性情報を含む少なくとも１つのパケットを前記バスに送信する第１の通信装置と、前記第１の通信装置が送信した前記少なくとも１つのパケットを受信する、上述の第２の通信装置であって、前記誤り訂正処理が行われた前記データのパケットを送信する第２の通信装置と、前記第２の通信装置が送信した前記データのパケットを受信する受信ノードとを備えている。
【００５２】
ある実施形態において、前記バスシステムは、前記パケットを中継するルータをさらに備えている。
【００５３】
ある実施形態において、前記送信ノード、および前記第１の通信装置は第１の半導体チップ回路上に設けられており、前記第２の通信装置、および前記受信ノードは、前記第１の半導体チップとは異なる第２の半導体チップ回路上に設けられており、前記第１の半導体チップ回路と前記第２の半導体チップ回路とが、バスによって接続されている。
【００５４】
本開示の一態様である回路基板は、上述のバスシステムを有する半導体回路の回路基板である。
【００５５】
以下、添付の図面を参照しながら、本開示による高信頼通信装置および高信頼通信方法の実施形態を説明する。ここで「高信頼」とは、本開示に基づく処理により、伝送されるデータに欠損がなく、バス伝送を安心して利用できることを意味する。しかしながら、以下の説明では、高信頼通信装置および高信頼通信方法を、単に通信装置および通信方法と呼ぶ。なお、本実施形態においては、「ネットワークオンチップ」または「ＮｏＣ」という用語は、システムオンチップ（ＳｏＣ）内のバスだけではなく、ＳｏＣ間を接続するバスをも含むとする。
【００５６】
＜１．バスシステムの構成＞
図５は、本実施形態にかかるバスシステム７００の構成を模式的に示す。バスシステム７００は、システムバス１０と、システムバス１０の両端に対で設けられた２つの通信装置７０１ａおよび７０１ｂとを備えている。「システムバス」とは、たとえば、複数のローカルバスを相互に接続し、各ローカルバスから共用メモリにアクセスできるようにするための基幹となるバスである。
【００５７】
例示的な本実施形態では、通信装置７０１ａは、通信装置７０１ｂに宛てて、データのパケット６００と誤り耐性情報のパケット６１０とをシステムバス１０に送信する。
【００５８】
通信装置７０１ａは、データのパケット６００および誤り耐性情報のパケット６１０を、それぞれ独立したパケットとして伝送する。受信側の通信装置７０１ｂはパケット６１０内の誤り耐性情報が、どのデータのパケット６００に適用されるかを特定する必要がある。そのため、送信側の通信装置７０１ａの誤り耐性パケット処理部８０５は、両方のパケットに同じパケットＩＤを付与する。これにより、受信側の通信装置７０１ｂは、それぞれのパケットが対応関係にあることを特定することが可能になる。なお、各パケットにどのような種類のデータが格納されているかは、ヘッダのデータ種別フィールドに記述される。詳細は後述する。
【００５９】
なお、送信元および送信先が一致するため、データパケット６００、および誤り耐性情報のパケット６１０を１つのパケットに含めてもよい。そのようなパケットは、たとえば拡張パケット６２０として図５に記載されている。データパケット６００、および誤り耐性情報のパケット６１０は、互いに識別可能に拡張パケット６２０に格納される。
【００６０】
ルータ７０３ａは、システムバス１０とローカルバス１１との間に設けられ、システムバス１０とローカルバス１１とを相互に接続する。ローカルバス１１は、たとえば映像やペリフェラルといった機能毎に構成される周辺バスである。
【００６１】
通信装置７０１ａは、隣接するルータ７０３ａから、バス動作周波数やバスの電圧の情報を取得して伝送誤り耐性を付与する。ルータ７０３ａは、ユースケースやバスの伝送負荷に応じて、ＤＶＦＳ（Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ）ユニット７０４ａおよび７０４ｂを利用して動的にバス動作周波数やバスの電圧を変化させ、それによって、バスの省電力化を図る。ＤＶＦＳユニット７０４ａおよび７０４ｂは、バスの動作電圧および／またはバスの動作周波数の情報を、それぞれ通信装置７０１ａおよび７０１ｂに送る。通信装置７０１ａおよび７０１ｂは、バスの動作電圧および／またはバスの動作周波数に応じて誤り耐性を付与するかどうかを判断することができる。
【００６２】
なお、後述するように、誤り耐性を適用するかどうかを、電圧やバス動作周波数で動的に決める必要は無い。ルータの中継段数や、ＳｏＣ内部の通信であるか、ＳｏＣ間の通信であるか等の他の条件に応じて誤り耐性の適用を設計時に固定的に決定してもよい。本開示においては、誤り耐性を付与するかどうかを決定するために利用される条件を「バスシステムの動作環境に関する条件」と呼ぶ。
【００６３】
高信頼通信装置７０１ａおよび７０１ｂは、データと誤り耐性の情報を、それぞれ独立したパケットにして伝送するため、受信側の通信装置（図５の高信頼通信装置７０１ｂ）で誤り耐性のパケット６１０のみを簡単に廃棄できる。
【００６４】
本実施形態にかかる通信装置７０１ａおよび７０１ｂを利用することにより、既存のルータを用いることができる。つまり、既存のリソースを利用することができ、低コスト化を図ることが可能である。また、通信装置を、ルータ等から独立した装置として設けることで、その機能の再利用性や汎用性が高まる。ただし、通信装置の構成をルータに組み込むことも可能である。この例は後に説明する。
【００６５】
図６は、図５に示すバスシステム７００を、複数のＳｏＣを有するバスシステム（回路基板）７００ａに適用した例を示す。回路基板７００ａは、ＳｏＣ１、ＳｏＣ２、およびバス１０ａによって構築されるバスシステムを有している。２つのＳｏＣ１およびＳｏＣ２は、バス１０ａで接続されている。
【００６６】
以下、ＳｏＣを具体的に説明する。なお、図５に示す通り、本開示はＳｏＣに限られることなく適用することが可能である。しかしながら、複数のＳｏＣをバスのネットワークによって接続する態様との関係で、ＳｏＣの構成を説明する。
【００６７】
＜２．ＳｏＣの構成＞
図６に示されるＳｏＣ１およびＳｏＣ２は、同等の構成を有している。たとえばＳｏＣ１を説明する。ＳｏＣ１は、通信装置７０１ａと、ＤＶＦＳユニット７０４ａと、ルータ７０３ａと、ローカルバス５００ａとを有している。図５に示す構成要素と同じ機能を有する構成要素には同じ参照符号を付している。通信装置７０１ａ、ＤＶＦＳユニット７０４ａ、およびルータ７０３ａは、図５に関連して説明したように動作する。データパケット６００、および誤り耐性情報のパケット６１０が転送される点も同じである。
【００６８】
一般に、バス１０ａを利用して行われるＳｏＣ間の通信（回路基板上の通信）はＳｏＣ内のバスの通信に比べて、外的な影響を受けやすいため伝送誤りが発生しやすい。そこで、本開示を、バス１０ａを利用するＳｏＣ間の通信に限定して適用してもよい。これにより、従来技術と比較して各ＳｏＣ内部のルータを全て修正する必要はなくなり、ＳｏＣの開発効率の改善を期待できる。
【００６９】
ここで、ＳｏＣの構成をより詳しく説明するために、ＳｏＣ１およびＳｏＣ２にそれぞれ含まれるローカルバス５００ａおよび５００ｂの具体的な構成例を説明する。その説明に続き、通信装置７０１ａおよび７０１ｂの構成および動作を詳細に説明する。
【００７０】
本実施形態では、送信ノードとして複数のバスマスタ（ＢＭ）と、受信ノードとして複数のメモリとを、複数の２入力２出力のルータをバスで多段に接続したメッシュ網で構成した例を説明する。
【００７１】
図７は、本実施形態によるローカルバス５００ａおよび５００ｂを構成するバスシステムの例を示す。なお、ローカルバス５００ａおよび５００ｂは完全に同一である必要はなく、その構成が異なっていてもよい。以下では、ローカルバス５００ａが図７の構成を有するとして説明する。
【００７２】
ローカルバス５００ａは、送信ノードとして８個のバスマスタ（ＢＭ）１０１を有し、受信ノードとして８個のメモリ１０５を有している。これら複数のバスマスタ１０１および複数のメモリ１０５は、１２個のルータ１１０を介してバスで多段に接続されている。図７に示されるネットワーク構成は、いわゆるメッシュ網と呼ばれる。
【００７３】
このように、図７に示す伝送システムは、多段接続網（Ｍｕｌｔｉｓｔａｇｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  Ｎｅｔｗｏｒｋ：ＭＩＮ）を構成している。なお、たとえば図示されるルータＲ７が、図６のルータ７０３ａと接続されることにより、他のＳｏＣ（図６の例ではＳｏＣ２）との間でデータを伝送することが可能になる。
【００７４】
本実施形態におけるバスマスタ１０１は、例えばプロセッサやＤＳＰなどの、バスを用いてデータの転送制御を行うことができるデバイスである。メモリ１０５は、例えばＤＲＡＭやＳＲＡＭ等の半導体メモリである。なお、本開示の実施形態としては、メモリ１０５を、プロセッサ、ＤＳＰ、Ｉ/Ｏなど、メモリ以外のノードを接続する形態で構成してもよい。ルータ５００は、例えば半導体回路であり、複数のバスマスタ１０１および複数のメモリ１０５の間で伝送されるデータを中継する機能を備えている。
【００７５】
バスマスタ１０１からメモリ１０５へのデータ伝送は、パケット交換方式により行われる。各バスマスタは、図７（ａ）に示すように、送信すべきパケットをフリットと呼ばれる最小単位に分割してから隣接のルータに送信する。１つのパケットを分割した複数のフリットのうち、最初に送信されるフリットは、ヘッダフリットと呼ばれる。ヘッダフリットには、パケットの先頭であることを示すフラグ情報や、パケットの送信先のアドレス情報などが記述されている。本実施形態におけるパケットおよびフリットのデータ構造の詳細は後述する。なお、ここでいう「パケット」は、図５や図６で言及したデータパケット６００に対応する。
【００７６】
図７に示す多段接続網を構成する各ルータは、２入力２出力のクロスバースイッチを備えている。各ルータは、図７（ｂ）に示すように、クロスバースイッチを切り替えることによって入力と出力の組合せを変更することができる。このため、トラヒックの流れを２つの伝送経路（伝送経路１、２）の間で切り替えることができる。出力先の伝送経路が異なっていれば、ルータは２つのトラヒックを各伝送経路に同時に出力することが可能である。このような多段接続網によれば、各ルータでのスイッチの切り替えによって、全バスマスタと全メモリ間で、必ず１つ以上の伝送経路を構築することができる。
【００７７】
メッシュ網では、複数の送信ノードで伝送路を共有しつつ、必要に応じて、１つの送信ノードが複数の伝送路を使用して、広帯域化を図る通信方式を適用することが可能である。なお、本実施形態においてはメッシュ網を例に挙げて説明するが、これは一例である。集積回路の構成がその他のトポロジー（例えば、バタフライ網）であっても本開示を適用することが可能である。
【００７８】
次に、本実施形態におけるパケットおよびフリットの構造を説明する。なお、本実施形態では、パケットまたはフリットを例として説明しているが、伝送に際してパケット化することは設計事項に過ぎない。パケットまたはフリットを一般化して、単に「データ」と呼んでもよい。
【００７９】
図８は、パケット６００の伝送フォーマットの一例と、パケット６００を複数のフリットに分割した例とを示している。パケット６００は、ヘッダフィールド６０１、データフィールド６０２、および制御コードフィールド６０３を有している。
【００８０】
ヘッダフィールド６０１には、たとえば、送信先のアドレス、送信元のアドレス、パケットの送信されてからの経過時間を示す情報（経時情報）、パケットの種別を示す情報が記述される。経時情報の記述方法は任意であり、送信されてから経過した時間を判別できる値であればどのような記述方法であっても良い。例えば、送信された時刻が直接記載されてもよいし、送信されてからの経過時刻、また、現在までに通過したルータの数（ホップ数）などが記載されても良い。各ルータはパケット６００を中継する度に、ホップ数をインクリメントしてもよいし、予め定められた最大ホップ数を順にデクリメントさせてもよい。
【００８１】
データの種別を示す情報は、そのパケットが、通常のパケット６００であるのか、または誤り耐性情報を格納したパケット６１０であるのかを示す。
【００８２】
例えば、バスマスタが出力するデータが格納されたパケットであれば、バスマスタはパケットに「１」を付与する。誤り耐性の情報であれば、「２」を付与する。このように、パケット単位で、データの種類を区別することで、誤り耐性の処理時に、誤り耐性の情報の追加や廃棄を簡単に行うことが可能となる。詳細については、図１４のシーケンス図で説明する。
【００８３】
なお、上述したパケットの種別を示すための値は一例に過ぎない。それぞれの種別を特定できる情報であれば、その具体的な値は任意である。また、バスマスタがパケットを生成するのではなく、バスマスタとルータ１１０との間にネットワークインタフェースコントローラ（ＮＩＣ）を設け、ＮＩＣにパケットを生成させてもよい。
【００８４】
ヘッダフィールド６０１にはさらに、パケットＩＤが設けられる。パケットＩＤは通常、パケットごとに異なる値が付与される。しかしながら、本実施形態においては、あるデータのパケット６００と、そのデータに生じた誤りを訂正するための誤り耐性情報を格納したパケット６１０には、同じパケットＩＤが付与される。これにより、受信側の通信装置が、データと誤り耐性情報との対応関係を特定することができる。
【００８５】
また、ヘッダフィールド６０１には、上記以外の情報が記述されていてもよい。ヘッダフィールド６０１のデータのうち、送信先のアドレスおよび送信元のアドレスに基づいて、パケット６００の中継処理と、受信側での受信処理とが行われる。
【００８６】
データフィールド６０２には、たとえば映像データ、音声データが記述される。制御コードフィールド６０３には、たとえば、予め定められたパケット６００の終了コードが記述される。ルータは、終了コードを検出することによってパケット６００の末尾を判別できる。制御コードフィールド６０３には、終了コード以外の情報が格納されていてもよい。
【００８７】
送信側のバスマスタ１０１は、パケット６００を、フリットと呼ばれる小さなパケット単位に分解して伝送する。１フリットは、バスを使って１サイクルで伝送可能なデータであり、そのサイズはバス幅の大きさによって決定される。
【００８８】
パケット６００は、ヘッダフリット６０４、複数のデータフリット６０５、およびテイルフリット６０６に分割される。
【００８９】
パケット６００を分割したフリットのうち、最初に送信されるフリットは、ヘッダフリット６０４と呼ばれる。ヘッダフリット６０４には、パケットの先頭であることを示すフラグ情報、上述したパケット６００のヘッダフィールド６０１に格納されたフラグ情報や送信先アドレス情報などが含まれる。
【００９０】
ヘッダフリット６０４に続く各フリット（データフリット６０５、テイルフリット６０６）には、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダフリット６０４に続く各フリットは、ヘッダフリット６０４と同じ宛先に送られるためである。ヘッダフリット６０４によって宛先が決まり、そのトラヒックのフリットを出力するルータの出力バッファが決まると、後に続くフリットは、ヘッダフリット６０４と同じ出力バッファを利用してヘッダフリット６０４が示す宛先に伝送される。
【００９１】
テイルフリット６０６には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報（制御コードフィールド６０３に格納されている終了コード）が付与されている。また、ヘッダフリット６０４とテイルフリット６０６以外の複数のフリット６０５は、主にデータを伝送するフリット（データフリット）であり、パケット６００のデータフィールド６０２に対応する。
【００９２】
受信側のメモリ１０５は、テイルフリット６０６に記述されたフラグ情報（終了コード）を検出すると、その終了コードに基づき、伝送された複数のフリットをパケットへ再構築する。
【００９３】
たとえば、１パケットのサイズは１２８バイト、１フリットのサイズは３２ビットまたは６４ビットである。ただし、１パケットのサイズおよび１フリットのサイズはアプリケーションによって異なり得るため、上述のサイズは一例に過ぎないことに留意されたい。フリットの長さは、送信先のアドレスと、送信元のアドレスなど、制御データを記述できる長さを基準としてもよい。
【００９４】
後述するように、各ルータは、送られてきたフリットを蓄えるためのバッファを備えている。フリットは、一旦そのバッファに蓄えられた後、スイッチの切り替えによって宛先のメモリへと続くルータ、または宛先のメモリへ送信される。
【００９５】
＜２．１．ルータの構成および動作＞
図９は、ルータ５５０の構成を示す。図１０は、ルータ５５０の動作手順を示すフローチャートである。
【００９６】
ルータ５５０は、複数の入力ポート６１３および出力ポート６１５を備えている。前段のルータ（群）５５１から入力ポート６１３を経由してフリットを受け取り、出力ポート６１５を介して、後段のルータ（群）５５２にフリットを送出する。
【００９７】
ルータ５５０は、入力バッファ２０３と、スイッチ２０４と、ルーティング処理部２０５と、バッファアロケータ部２０６と、スイッチアロケータ部２０７とを有している。以下、図１０の各ステップを説明しながら、ルータ５５０の各構成要素の機能または動作を説明する。
【００９８】
まずルータ５５０は、入力ポート６１３において隣接ルータ（群）５５１からのフリットを受信し、受信したフリットを入力バッファ２０３に格納する（Ｓ３０１）。ルーティング処理部２０５はフリットの転送先のノードを決定する（Ｓ３０２）。次に、バッファアロケータ部２０６は、隣接する後段のルータ（群）５５２のどの入力バッファにフリットを格納するかを決定する（Ｓ３０３）。スイッチアロケータ部２０７は、入力バッファ２０３と転送先のルータの入力バッファ２０３とを対応付けてスイッチを設定する（Ｓ３０４）。スイッチアロケータ部２０７がスイッチを接続することにより、出力ポート６１５を介してフリットが転送先のルータ５５２のバッファへ送信される（Ｓ３０５）。
【００９９】
なお、図９の隣接ルータ（群）５５１および５５２に代えて、それぞれバスマスタおよび／またはメモリが設けられていてもよい。
【０１００】
＜２．２．高信頼性伝送装置の構成および動作＞
図１１は、通信装置７０１の構成を示す。
【０１０１】
通信装置７０１は、演算回路８００と、受信端子８０１と、記憶装置８０３と、送信端子８０６とを備えている。
【０１０２】
まず受信端子８０１は、たとえば隣接するルータなどの外部のネットワーク要素からデータを受け取る。
【０１０３】
記憶装置８０３は、バスシステムの動作環境に関する条件と誤り耐性方式とが対応付けられた規則を記憶する。記憶装置８０３は、たとえばＲＯＭ、ＲＡＭ、ソリッドステートドライブ（ＳＳＤ）である。また記憶装置８０３は、着脱可能な記録媒体からデータを読み取ることが可能な構成を有していてもよい。これらを包括して、記憶装置を「記憶部」と呼ぶこともある。
【０１０４】
図１２は、記憶装置８０３が保持する規則の例を示す。
【０１０５】
この規則は、バス電圧、バス動作周波数、中継段数、接続形態に応じた誤り耐性方式を定義している。本実施形態では、誤り耐性方式として、本実施形態ではＣＲＣ、パリティ、および何もしない、の３種類を想定している。なお、ＣＲＣはパリティよりも誤り耐性強度が高い。
【０１０６】
本願発明者らが図１２に示す規則を設定した基準は以下のとおりである。まず、配線の微細化や低電圧化、長配線により伝送誤りは発生しやすくなると考えられるため、誤り耐性を適用する。バス動作周波数については、バス動作周波数が高くなるほど伝送誤りが発生しやすくなるため、誤り耐性を適用する。また、一般に、中継段数が多くなるとバスの配線長が長くなるため伝送誤りが発生しやすい。従って、中継段数の長いバスで伝送されるパケットには誤り耐性を適用する。また、ＳｏＣ内のバスであるか、ＳｏＣ間のバスであるかも考慮する。例えば、ＳｏＣ内のバスは、外乱を受けにくいため伝送誤りが発生しにくい。このため、伝送誤りは発生しないと考えて誤り耐性を適用しない。一方、図６のようなＳｏＣ間のバス１０ａで伝送されるパケットについては、外的な要因を受けやすいため、伝送誤りを適用する。複数の基準によって誤り耐性が加重適用される場合には相対的に高い誤り耐性を付与すればよい。
【０１０７】
たとえば図１２の例では、バス電圧が低い（３Ｖ）場合は、「ＣＲＣに加え、パケットを再送する」、という相対的に高い強度の誤り耐性方式を付与している。これは伝送誤りが高くなると考えられるからである。ＳｏＣ間で伝送される場合にはさらに、外的な要因を受けやすいため、伝送誤りが高くなると考えられる。そのため、本実施形態ではＣＲＣのみならず、パケット不達の場合にはパケットの再送をも行うこととした。
【０１０８】
また、バスの電圧が高い（５Ｖ）場合で、かつバス動作周波数が低い（１５０Ｍｈｚ）場合は、誤り耐性を付与しない。安定動作が見込めるためである。バスの電圧が５Ｖであっても、バス動作周波数が２００Ｍｈｚであり、かつ中継段数が多い場合には、誤り耐性を付与するが、相対的に弱い強度の誤り耐性の処理を行う。
【０１０９】
以上に示したように、様々な観点から、伝送誤りの強度を決定することができる。なお、より具体的な伝送誤りの強度について、シミュレーションや実機による評価によって決定してもよい。
【０１１０】
再び図１１を参照する。
【０１１１】
演算回路８００は、バスシステムの動作環境に関する条件に基づいて、記憶装置８０３に保持された規則を参照して誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信端子８０１が受信したデータに対応する誤り耐性情報を生成する。
【０１１２】
送信端子８０６は、誤り耐性情報のパケットおよびデータパケットをバスに送信する。
【０１１３】
以下、演算回路８００の構成および動作をより詳細に説明する。
【０１１４】
演算回路８００は、誤り耐性決定部８０２と、誤り耐性情報生成部８０４と、誤り耐性パケット処理部８０５とを備えている。なお、以下の説明においては、誤り耐性決定部を「決定部」と呼び、誤り耐性情報生成部を「情報生成部」と呼び、誤り耐性パケット処理部を「パケット処理部」と呼ぶ。
【０１１５】
決定部８０２は、バスシステムの動作環境に関する条件に基づいて誤り耐性方式を決定する。この条件は、上述したように、バスの動作電圧、バスの動作周波数、ルータの中継段数、ＳｏＣ内部の通信であるかＳｏＣ間の通信であるか、などの条件を含んでいる。この条件は、伝送誤りの発生に影響を与える条件であると言うこともできる。
【０１１６】
情報生成部８０４は、決定された誤り耐性方式に基づき、転送するデータに対する誤り耐性情報を生成する。
【０１１７】
本願発明者らは、上述の演算回路８００は、上述した決定部８０２、情報生成部８０４、およびパケット処理部８０５の各構成要素が実装されたハードウェア（たとえば専用プロセッサ）であることを想定している。しかしながら上述の演算回路８００は、汎用的なコンピュータ（プロセッサ）と、上述の各構成要素に対応する処理を実現するコンピュータプログラムコードとの組み合わせによって実現されてもよい。これらを包括する用語として、演算回路を「誤り処理部」と呼んでもよい。
【０１１８】
なお、図１１は、主として送信側の通信装置７０１ａ（図６）に対応した構成を示している。しかしながら、この構成は、受信側の通信装置７０１ｂ（図６）の構成としても利用することが可能である。その場合、パケット処理部８０５は、受信端子８０１によって受信したデータパケット６００、および誤り耐性情報のパケット６１０を、データパケット６００と誤り耐性情報のパケット６１０とに分離し、得られたパケット６１０内の誤り耐性情報を利用して、データパケット６００に誤り耐性処理を行えばよい。そしてパケット処理部８０５は、誤り耐性処理を行ったデータパケット６００を送信端子８０６およびバスを介して送信すればよい。
【０１１９】
図１３は、通信装置の概略的な動作手順を示すフローチャートである。
【０１２０】
送信側通信装置７０１ａ（図６）の情報生成部８０４は、誤り耐性情報を生成する（Ｓ９０１）。パケット処理部８０５は、データパケット６００、および誤り耐性情報のパケット６１０をそれぞれ独立したパケットとして送信端子８０６から送信する（Ｓ９０２）。受信側通信装置７０１ｂ（図６）は、誤り耐性情報に基づきデータを訂正して、誤り訂正情報を廃棄する（Ｓ９０３）。
【０１２１】
図１４は、伝送誤りが発生しなかった場合のシーケンス例を示す。ここでは、図６のバスシステムを想定して説明する。
【０１２２】
図の例では、ＳｏＣ１のルータ７０３ａからＳｏＣ２のルータ７０３ｂへデータを伝送するために、ＳｏＣ１のルータ７０３ａからＳｏＣ２のルータ７０３ｂのバッファの予約要求を発行する。予約要求のパケットに対して、ＳｏＣ１の通信装置７０１ａにおいて誤り耐性情報のパケットを生成する。データパケット６００に相当する予約要求パケットと、そのパケットに対応する誤り耐性情報のパケット６１０とをそれぞれ独立して伝送する。ＳｏＣ２の通信装置７０１ｂは、パケット６１０の誤り耐性情報に基づいて、予約要求パケットの伝送誤りを検出する。問題がなければ通信装置７０１ｂは誤り耐性情報のパケット６１０を廃棄し、予約要求パケットをＳｏＣ２のルータ７０３ｂに伝送する。ＳｏＣ２のルータ７０３ｂは予約要求に基づき自己のバッファを予約し、予約に対する応答を、ＳｏＣ２の通信装置７０１ｂへ伝送する。
【０１２３】
ＳｏＣ２の通信装置７０１ｂは、データパケット６００に相当する応答のパケットと、そのパケットに対応する誤り耐性情報のパケット６１０とを生成する。応答パケットと対応する誤り耐性情報のパケットをそれぞれ独立して伝送する。ＳｏＣ１の通信装置７０１ａは、パケット６１０の誤り耐性情報に基づき、応答パケットの伝送誤りを検出する。問題がなければ、誤り耐性情報のパケット６１０を廃棄し、応答パケットをＳｏＣ１のルータ７０３ａに伝送する。ＳｏＣ１のルータ７０３ａが、ＳｏＣ２のルータ７０３ｂのバッファを予約後、予約したバッファに対してデータを同様の手順で伝送を行う。
【０１２４】
図１５は、伝送誤りが発生した場合のシーケンス例を示す。ここでも、バスシステムを想定して説明する。
【０１２５】
図の例では、ＳｏＣ１のルータ７０３ａからＳｏＣ２のルータ７０３ｂへデータ伝送を行うために、ＳｏＣ１のルータ７０３ａからＳｏＣ２のルータ７０３ｂのバッファの予約要求を発行する。予約要求のパケットに対して、ＳｏＣ１の通信装置７０１ａにおいて誤り耐性情報のパケットを生成する。データパケット６００に相当する予約要求パケットと、そのパケットに対応する誤り耐性情報のパケット６１０とをそれぞれ独立して伝送する。ＳｏＣ２の通信装置７０１ｂは、パケット６１０の誤り耐性情報に基づいて、予約要求パケットの伝送誤りを検出する。
【０１２６】
誤りが検出された場合で、かつ誤り訂正が可能であれば、ＳｏＣ２の通信装置７０１ｂは誤り訂正を行う。訂正ができない場合であれば、送信元であるＳｏＣ１の通信装置７０１ａへ予約要求のパケットの再送を要求する。この手順を通して、問題が解消されれば、誤り耐性情報のパケット６１０は廃棄し、予約要求パケットをＳｏＣ２のルータ７０３ｂに伝送する。ＳｏＣ２のルータ７０３ｂは予約要求に基づきルータのバッファを予約し、予約に対する応答を、ＳｏＣ２の通信装置７０１ｂへ伝送する。
【０１２７】
ＳｏＣ２の通信装置７０１ｂは、データパケット６００に相当する応答のパケットと、そのパケットに対応する誤り耐性情報のパケット６１０とを生成する。応答パケットと対応する誤り耐性情報のパケットをそれぞれ独立して伝送する。ＳｏＣ１の通信装置７０１ａは、パケット６１０の誤り耐性情報に基づき、応答パケットの伝送誤りを検出する。問題がなければ、誤り耐性情報のパケット６１０を廃棄し、応答パケットをＳｏＣ１のルータ７０３ａに伝送する。ＳｏＣ１のルータ７０３ａが、ＳｏＣ２のルータ７０３ｂのバッファを予約後、予約したバッファに対してデータを前記と同様の手順で伝送を行う。
【０１２８】
図１６は、通信装置の詳細な内部動作を示すフローチャートである。
【０１２９】
受信端子８０１は隣接ルータからデータを受信する（Ｓ１００１）。決定部８０２は、隣接ルータまたはＤＶＦＳユニット７０４ａから、動作環境に関する条件の情報を取得して、それらの情報を誤り耐性付与規則に対応付けて、誤り耐性方式を決定する（Ｓ１００２）。情報生成部８０４は、決定された誤り耐性方式に基づき、受信したデータに対応する誤り耐性情報を生成する（Ｓ１００３）。パケット処理部８０５は生成された誤り耐性情報をパケット化して、送信端子８０６から処理結果（パケット６１０）として出力する（Ｓ１００４）。
【０１３０】
図１７は、誤り情報をデータと分離して伝送する方法に関する複数の例を説明する図である。
【０１３１】
図の例では、システムバス１２ａは、データバスとアドレスバスに分離されている。そして、誤り耐性に関する情報のパケット６１０はアドレスバスで伝送され、データパケット６００はデータバスで伝送される。これにより、誤り耐性情報とデータの分離が容易になる。また、データに対する誤り耐性情報に対して、さらに誤り耐性情報を生成して、２種類の誤り耐性情報を格納したデータ１２０２を伝送してもよい。これにより、より強固な伝送誤り耐性が可能となる。さらに、受信側の通信装置７０１ｂでエラー率を計測して、送信側の通信装置７０１ａで誤り耐性方式を変更する処理１２０３を行ってもよい。これにより、伝送誤り状態の変化に応じた誤り耐性の強化が可能になる。
【０１３２】
＜３．応用例＞
図１８は、リングバスを用いた場合に誤り耐性を適用する例を示す。
【０１３３】
図１８は、１つのバスマスタから、リングバスを介して、共有メモリにアクセスする例を示している。バスマスタから伝送距離が短い場合は、誤り耐性を行わない伝送経路１３０１でパケットが伝送される。バスマスタから伝送距離が遠い場合は、誤り耐性をおこなう経路１３０２でパケットが伝送される。従って、図で示したように、長配線となる経路１３０２を利用する伝送経路の両端に、上述した通信装置を対で導入する。
【０１３４】
一般に、伝送距離が長い伝送経路のトラヒックは、許容遅延時間が長い、優先度の比較的、低いトラヒックが対象となる。このため、許容遅延時間が長いトラヒックに対して誤り耐性を付与することによるオーバヘッドを隠蔽しやすい。
【０１３５】
なお、リングバスの経路の経路長は、設計時に決定されている。すなわち、あるルータから他のルータにパケットを送信する際、経路長が長い経路および短い経路は設計時に決定されている。そのため、どこに上述の通信装置を設けるかも設計時に決定しておけばよい。
【０１３６】
上述の説明では、通信装置はルータとは別の構成要素であるとして説明した。しかしながら、当該通信装置の機能を組み込んだルータを設けることも可能である。
【０１３７】
図１９は、通信装置の機能を組み込んだルータ６５０の構成を示す。図９に示すルータ５５０との相違点は、通信装置７０１（図１１）の全ての構成要素を、スイッチ２０４と出力ポート６１５との間に設けた点である。このルータ６５０を誤り耐性が必要なバスの両端に対で設け、誤り耐性が特に必要とされないバスの両端には既存のルータ５５０を対で設ければよい。
【０１３８】
図２０は、回路基板上のＳｏＣ間の通信に誤り耐性を適用する例を示す。図６の例と同様、この例もまた、ＳｏＣ内のバスで伝送されるパケットには誤り耐性処理が適用されず、ＳｏＣ間のバスで伝送されるパケットには誤り耐性処理が適用される。
【０１３９】
なお、ここで示した各ＳｏＣは、プロセッサ単体であったり、プロセッサ、ＤＳＰ、Ｉ／Ｏなどの複数の構成要素からなる半導体システムであってよい。また、ＳｏＣの内部が全てルータで接続された半導体システムである必要はない。例えば、構成要素の一部がクロスバースイッチで構成される半導体システムであってよい。本開示により、従来技術と比較して、各ＳｏＣのルータを全て修正する必要はなくなり、ＳｏＣの開発効率の改善が期待できる。
【産業上の利用可能性】
【０１４０】
本開示にかかる高信頼通信装置は、システムＬＳＩ上のデータ伝送に利用できる。
【符号の説明】
【０１４１】
７０１、７０１ａ、７０１ｂ  通信装置
８００  誤り処理部（演算回路、プロセッサ）
８０１  受信端子
８０２  誤り耐性決定部
８０３  記憶部（記憶装置）
８０４  誤り耐性情報生成部
８０５  誤り耐性パケット処理部
８０６  送信端子
【図１】
2014083780.tif 000003
【図２】
2014083780.tif 000004
【図３】
2014083780.tif 000005
【図４】
2014083780.tif 000006
【図５】
2014083780.tif 000007
【図６】
2014083780.tif 000008
【図７】
2014083780.tif 000009
【図８】
2014083780.tif 000010
【図９】
2014083780.tif 000011
【図１０】
2014083780.tif 000012
【図１１】
2014083780.tif 000013
【図１２】
2014083780.tif 000014
【図１３】
2014083780.tif 000015
【図１４】
2014083780.tif 000016
【図１５】
2014083780.tif 000017
【図１６】
2014083780.tif 000018
【図１７】
2014083780.tif 000019
【図１８】
2014083780.tif 000020
【図１９】
2014083780.tif 000021
【図２０】
2014083780.tif 000022
【手続補正書】
【提出日】平成26年9月29日(2014.9.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送するバスを備えた半導体回路のバスシステムに用いられる通信装置であって、
バスを介してパケットを受信する受信端子と、
バスシステムの動作環境に関する複数種類の条件と複数種類の誤り耐性方式とがそれぞれ対応付けられた規則、および経路長に関する情報を記憶する記憶部と、
前記バスシステムの動作環境に関する所与の条件に応じて前記規則を参照し、前記複数種類の誤り耐性方式のうちから１つの誤り耐性方式を決定し、決定した誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する誤り処理部と、
前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記バスに送信する送信端子と
を備え、
前記バスシステムの動作環境に関する前記複数種類の条件は、前記データの送信先である他の通信装置に至るまでの前記バスの経路長が予め定められた値よりも長い伝送経路に対して、誤り耐性を付与する条件であって、
前記バスの周波数、
前記バスの動作電圧、
前記他の通信装置に至るまでの前記バスの経路長、
前記他の通信装置から受信したエラー率、
に関して誤り耐性を付与する条件である、通信装置。
【請求項２】
（削除）
【請求項３】
前記誤り処理部は、前記バスシステムに設けられた他の機器から前記所与の条件を受け取る、請求項１に記載の通信装置。
【請求項４】
前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報のパケットを生成し、
前記送信端子は、前記データのパケットおよび前記誤り耐性情報のパケットを独立して送信する、請求項１に記載の通信装置。
【請求項５】
前記誤り処理部は、前記データのパケットおよび前記誤り耐性情報を含む拡張パケットを生成し、
前記送信端子は、前記拡張パケットを送信する、請求項１に記載の通信装置。
【請求項６】
前記誤り耐性情報を第１の誤り耐性情報としたとき、
前記誤り処理部は、前記バスシステムの動作環境に関する所与の条件に基づいて前記規則を参照して前記誤り耐性方式を決定し、前記第１の誤り耐性情報の伝送中に生じる誤りを訂正するための第２の誤り耐性情報をさらに生成し、
前記送信端子は、前記第１の誤り耐性情報、前記第２の誤り耐性情報、および前記データを含む少なくとも１つのパケットを前記バスに送信する、請求項１に記載の通信装置。
【請求項７】
前記バスは、前記データのパケットを伝送するためのデータバス、および前記パケットの送信先を示すアドレス情報を伝送するためのアドレスバスから構成されており、
前記送信端子は、前記データを含む少なくとも１つのパケットを前記データバスに送信し、前記誤り耐性情報を前記アドレスバスに送信する、請求項１に記載の通信装置。
【請求項８】
前記バスシステムの動作環境に関する前記複数種類の条件のうち、前記他の通信装置から受信したエラー率に関して誤り耐性を付与する条件が適用されるとき、前記誤り処理部は、決定した前記誤り耐性方式とは異なる誤り耐性方式にしたがって、受信した前記データに対応する誤り耐性情報を生成する、請求項１に記載の通信装置。
【請求項９】
前記バスには、許容される遅延量が相対的に大きい第１のデータのパケット、および許容される遅延量が相対的に小さい第２のデータのパケットが伝送され、
前記バスには、前記他の通信装置に至る第１の伝送経路、および前記第１の伝送経路よりも経路長が短い第２の伝送経路が存在しており、
前記バスシステムの動作環境に関する前記複数種類の条件のうち、前記他の通信装置に至るまでの前記バスの経路長に関して誤り耐性を付与する条件が適用されるとき、
前記誤り処理部は、前記第１のデータのパケットに対応する誤り耐性情報を生成し、
前記送信端子は、前記誤り耐性情報および前記データを含む少なくとも１つのパケットを前記第１の伝送経路に送信する、請求項１に記載の通信装置。
【請求項１０】
送信ノードおよび受信ノードを有し、パケット交換方式でデータを伝送する半導体回路のバスシステムに用いられる通信装置であって、
請求項１に記載の通信装置から、前記データおよび前記誤り耐性情報を含む少なくとも１つのパケットを受信する受信端子と、
前記誤り耐性情報を利用して前記データのパケットに誤り訂正処理を行う誤り処理部と、
前記誤り訂正処理が行われたデータのパケットを受信ノードに送信する送信端子と
を備えた、通信装置。
【請求項１１】
前記バスシステムに用いられて前記パケットを中継するルータであって、請求項１に記載の通信装置を有するルータ。
【請求項１２】
データを含むパケットを送信する送信ノードと、
前記パケットを受信する請求項１に記載の第１の通信装置であって、前記データおよび前記誤り耐性情報を含む少なくとも１つのパケットを前記バスに送信する第１の通信装置と、
前記第１の通信装置が送信した前記少なくとも１つのパケットを受信する、請求項１０に記載の第２の通信装置であって、前記誤り訂正処理が行われた前記データのパケットを送信する第２の通信装置と、
前記第２の通信装置が送信した前記データのパケットを受信する受信ノードと
を備えた、半導体回路のバスシステム。
【請求項１３】
前記パケットを中継するルータをさらに備えた、請求項１２に記載のバスシステム。
【請求項１４】
前記送信ノード、および前記第１の通信装置は第１の半導体チップ回路上に設けられており、
前記第２の通信装置、および前記受信ノードは、前記第１の半導体チップとは異なる第２の半導体チップ回路上に設けられており、
前記第１の半導体チップ回路と前記第２の半導体チップ回路とが、バスによって接続されている、請求項１２に記載のバスシステム。
【請求項１５】
請求項１２に記載のバスシステムを有する半導体回路の回路基板。
【国際調査報告】
2014083780.tif 000023
2014083780.tif 000024
2014083780.tif 000025
2014083780.tif 000026