(57)【特許請求の範囲】
【請求項１】
複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置であって、
所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、
少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、
前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも１つのパケットを、バスに送信する送受信部と
を備えた、送信間隔を制御する制御装置。
【請求項２】
前記許容遅延演算部は、
各々が所定の演算の実行に時間ｎを要する、並列的なＮ個の演算実行部と、
前記バスに送信されるパケットの最小のサイズａ、前記演算実行部の並列数Ｎおよび前記時間ｎに基づいて制御間隔ｐを計算する制御間隔決定部と
を備えており、前記所定数は前記制御間隔ｐによって定められる、請求項１に記載の制御装置。
【請求項３】
前記制御間隔決定部は、下記数１に示す式によって前記制御間隔ｐを決定する、請求項２に記載の制御装置。
【数１】
0005838367.tif 000017
【請求項４】
前記送信間隔決定部は、前記調整範囲情報に加えて、さらに前記バスの負荷Ｌの情報に基づいて各パケットの送信間隔を決定する、請求項１に記載の制御装置。
【請求項５】
前記負荷Ｌが予め定められた値より大きいときは、前記送信間隔決定部は各パケットの送信間隔を拡大し、
前記負荷Ｌが前記予め定められた値以下のときは、前記送信間隔決定部は各パケットの送信間隔を縮小する、請求項４に記載の制御装置。
【請求項６】
前記バスには、他のイニシエータまたはターゲットが接続されており、
前記許容遅延演算部は、アクセス要求を前記他のイニシエータまたは前記ターゲットに送信してから応答が帰ってくるまでの時間であるレイテンシを、前記送受信部を利用して求め、前記バスの負荷として利用する、請求項４に記載の制御装置。
【請求項７】
複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置に並列的に設けられる演算回路の数Ｎを決定するための設計方法であって、
前記制御装置は、
所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、
少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、
前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも１つのパケットを、バスに送信する送受信部と
を備えており、
前記許容遅延演算部が、
各々が所定の演算の実行に時間ｎを要する、並列的なＮ個の演算回路と、
前記バスに送信されるパケットの最小のサイズａ、前記演算回路の並列数Ｎおよび前記時間ｎに基づいて、前記所定数である制御間隔ｐを計算する制御間隔決定部と
を備えるときにおいて、
予め定められた制御間隔ｐの値を入力するステップと、
予め定められた最小のサイズａの値および前記時間ｎの値を取得するステップと、
下記数２に示す式によって、前記演算回路の並列数Ｎを決定するステップと
を包含する設計方法。
【数２】
0005838367.tif 000018
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク化された通信バスを備える半導体チップにおいて、通信バスの制御を行うための技術に関する。
【背景技術】
【０００２】
近年、システム・オン・チップ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ；以下「ＳｏＣ」）やマルチコア・プロセッサ分野における通信バスとして、ネットワーク・オン・チップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ、以下「ＮｏＣ」）が用いられるようになってきた。
【０００３】
図１は、イニシエータＩ１〜Ｉ４とターゲットＴ１〜Ｔ４との間のメインバスにＮｏＣを適用した一般的な接続構成の例を示す。イニシエータは、たとえば、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）などである。また、ターゲットは、たとえば、外部のＤＲＡＭに接続されるメモリコントローラ、ＳＲＡＭ、外部との入出力用のバッファメモリなどである。
【０００４】
イニシエータおよびターゲットは、ネットワーク・インタフェース・コントローラ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ；ＮＩＣ）であるＮＩＣ１〜ＮＩＣ８を介して、ＮｏＣルータＲ１〜Ｒ４で構成されるネットワークバスにより、相互に通信可能な状態に接続されている。ＮｏＣでは、バス上でのデータのやりとりは全てパケット単位で行われる。そのために、ＮＩＣはイニシエータやターゲットが送受信するトランザクションデータをパケット化および脱パケット化する機能を有する。またＮｏＣの構造上、ルータ間を接続するリンクＬ１〜Ｌ８は、複数のイニシエータＩ１〜Ｉ４からターゲットＴ１〜Ｔ４へパケットが送信される際に共用される。
【０００５】
図１のような構成のＮｏＣにおいて、各リンクの通信帯域は、相反する２つの制約の下で設計される。すなわち、リンク帯域を向上させることにより、各イニシエータが要求するレイテンシやスループットなどの伝送品質を確保するという第一の制約と、リンク帯域を低減させることにより、回路の高周波設計を避け、消費電力を低減するという第二の制約である。
【０００６】
各イニシエータが要求する帯域は、一般的には時間変動するため、単位時間当たりに要求される平均帯域と最大帯域とは一致しない。仮に、同一のリンクを共用し、非同期的にパケットの送信を行う複数のイニシエータがターゲットに対してほぼ同時に最大帯域のアクセスを行った場合、経路上のリンクは全てのアクセスを収容することができず、レイテンシの増加やスループットの低下が発生する。とくに、バースト型のアクセスを行うイニシエータが存在する場合、一連のアクセス（バーストアクセス）の発生中は、送信経路上のリンクが過負荷となることで、リンクを共用する他のイニシエータの通信品質も低下させ、処理のリアルタイム性を阻害する。
【０００７】
ここでいう「バースト型のアクセス」または「バーストアクセス」とは、たとえば、一定数のアクセスを連続的に行った後に内部で計算処理を行い、再び一定数のアクセスを連続的に行う形態のアクセスである。図２は、メモリへのバーストアクセスの一例を示す。横軸が時間を表し、縦軸がメモリから読み出したデータ量（メモリアクセスの量）を示している。一定期間継続する一連のアクセスが発生した後、アクセスが一旦止まり、その後再び一定期間継続する一連のアクセスが発生していることが理解される。
【０００８】
特許文献１は、非同期的に動作する複数のイニシエータ間で通信バスを共用する場合のパケット送信の競合を回避する技術を開示する。イニシエータが通信バスをモニタすることで送信の競合を検出し、イニシエータ毎にランダムな待ち時間を設定して待機し、待ち時間の経過後に再び送信動作を行う。かかる動作により、各イニシエータは、自律的に送信パケットの競合を避けながら通信バスを共用することが可能となる。
【０００９】
また非特許文献１には、待機時間の計算方法が示されている。非特許文献１によれば、他のイニシエータとの競合を検出している時間が長いほど、待機時間も長くすることで、効率的に送信要求の競合を防ぐことが可能となる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭６１−２３０４４４号公報
【特許文献２】特公昭６１−３５５７５号公報
【非特許文献】
【００１１】
【非特許文献１】ＩＥＥＥ  Ｓｔｄ  ８０２．３規格書（セクション４．２．３．２．５）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、ＤＳＰは、映像信号や音声信号などの信号の処理をリアルタイムで行うことを想定して実装されるのが通常である。そのため、予め定められた処理期限までに必要量のデータアクセスを完了させる必要性がある。従来技術では、処理のリアルタイム性を確保することができなかった。その理由は、競合が繰り返し発生すると、従来技術では、待機時間の上限を切り上げながら、ランダムに待機時間を延ばしていくためである。
【００１３】
リアルタイム性を確保できなければ、たとえば表示のコマ落ち、音飛び、サービスの待ち時間の増加という形で、ユーザがその影響を被ることになる。従って、遅延は許容されるべきではない。
【００１４】
なお、上述した非特許文献１は、一般的なネットワークにおける伝送プロトコル技術に関している。一般的なネットワークの通信はベストエフォート型通信であり、遅延が許容される。したがって、一般的なネットワークの技術は、ＮｏＣに一律に適用することは困難である。
【００１５】
図３は、従来技術を適用した場合において、処理の締切時刻までに全てのアクセスが完了されない例を示す。図３に示されるイニシエータ１およびイニシエータ２は、ともにバーストアクセスを行うイニシエータであるとする。バーストアクセスを行う複数のイニシエータが競合する状況下では、図３に示すように、競合の繰返し発生による待機時間上限の切り上げが起こる。
【００１６】
いま、イニシエータ１およびイニシエータ２がともに時刻ｔ０で同時にアクセス要求を開始すると仮定する。すなわち、最初のアクセス競合は時刻ｔ０で発生する。このとき、イニシエータ１、イニシエータ２はそれぞれ上限をＬとするランダムな待機時間を設定して競合回避を行う。イニシエータ１の待機時間のほうがイニシエータ２の待機時間よりも短かった場合、イニシエータ１がイニシエータ２より先に、バーストアクセスを再開させる。イニシエータ２の待機状態が時刻ｔ１に解除されると、再び競合が発生する。このとき、イニシエータ２は連続した２回の競合を検出しているため、待機時間の上限は２倍に切り上げられる。その結果、再びイニシエータ１の待機時間上限のほうがイニシエータ２よりも短くなる。さらに、時刻ｔ２にイニシエータ２の待機状態が解除されると、先にアクセスを再開させたイニシエータ１との間で再び競合が発生し、イニシエータ２は３回の競合を検出したため、待機時間の上限は４倍に切り上げられる。
【００１７】
従来の技術によれば、初回の競合で長時間待機したイニシエータ２が、その後の再競合でも不利となり、イニシエータ２のアクセスが再び開始される時刻は、時刻ｔ３となる。時刻ｔ３においては、イニシエータ１のアクセスは全て完了しているため、イニシエータ２のバーストアクセスが再開される。しかしながら、度重なる待機時間の延長により、図示されている処理の締切時刻までに全てのアクセスを完了するだけの時間的な余裕はもはや存在しない。このように従来技術では、処理期限内に全てのアクセスを完了することができず、信号処理の処理落ちが発生していた。そして処理のリアルタイム性を確保することもできなかった。
【００１８】
同一の処理完了時刻を有する複数パケットを非同期的に通信する半導体バスにおいて、複数パケットの送信間隔を適切に調整することにより、処理期限を守りながら、必要なアクセス量を最短時間で実行することのできる送信間隔制御方式を考える。各イニシエータは、処理完了期限Ｔｂ（サイクル）の間に、Ｎｐ回のデータアクセスを完了させることで、処理のリアルタイム性を確保する必要がある。
【００１９】
隣接する各データアクセス間の間隔をＧサイクルとし、１回の通信間隔の制御で調整される調整単位をＫ、処理完了期限迄に残されたサイクル数をＲｃ、残されたデータアクセス数をＲｐ、１パケットを転送するために要するサイクル数をＮｆとすると、各データアクセス毎の通信間隔Ｇは、数１で与えられる。
【数１】
0005838367.tif 000002
【００２０】
数１によれば、現在時刻ｔと処理完了期限Ｔｂとに基づいてリアルタイム性を確保しつつ通信間隔Ｇを適切に制御するためには、通信間隔の調整範囲の上限を計算する必要がある。よって、残サイクル数Ｒｃを残アクセス数Ｒｐで除する必要がある。
【００２１】
一般に、除算処理はハードウェアによる演算コストを増加させる。すなわち、除算処理には、加減算などと比較して多くのサイクル数が必要とされる。
【００２２】
そのため、除算実行に費やされるサイクル数により、通信間隔Ｇを制御できる最小間隔が制限されてしまい、実際のパケットサイズに合わせて最適なタイミングで通信間隔Ｇを更新できないという第一の課題があった。また除算実行に必要なサイクル数を短縮するためには、特許文献２に記載のように複雑な高速除算アルゴリズムの実行や大規模な除算結果のデータテーブルを保持することが必要となり、非常に大きなゲート数規模のハードウェア回路を要するという第二の課題があった。さらに、各データアクセスが処理されるタイミングはバスやターゲットの混み具合によって揺らぐため、通信間隔Ｇの制御を行う時点でのデータアクセス残数Ｒｐの値を予測することは難しく、予測的に除算実行を行うことで高速化することができないという第三の課題があった。
【００２３】
本発明は上記課題に鑑みてなされたものであり、その目的は、予め定められた処理完了時刻を有する複数パケットを非同期的に通信する半導体バスにおいて、複数パケットの送信間隔を適切に調整することにより、処理期限を守りながら、必要なアクセス量を最短時間で実行することのできる送信間隔制御方式を提供することにある。
【課題を解決するための手段】
【００２４】
本発明による制御装置は、複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置であって、所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも１つのパケットを、バスに送信する送受信部とを備えている。
【００２５】
前記許容遅延演算部は、各々が所定の演算の実行に時間ｎを要する、並列的なＮ個の演算実行部と、前記バスに送信されるパケットの最小のサイズａ、前記演算実行部の並列数Ｎおよび前記時間ｎに基づいて制御間隔ｐを計算する制御間隔決定部とを備えており、前記所定数は前記制御間隔ｐによって定められてもよい。
【００２６】
前記制御間隔決定部は、下記の式によって前記制御間隔ｐを決定してもよい。
0005838367.tif 000003
【００２７】
前記送信間隔決定部は、前記調整範囲情報に加えて、さらに前記バスの負荷Ｌの情報に基づいて各パケットの送信間隔を決定してもよい。
【００２８】
前記負荷Ｌが予め定められた値より大きいときは、前記送信間隔決定部は各パケットの送信間隔を拡大し、前記負荷Ｌが前記予め定められた値以下のときは、前記送信間隔決定部は各パケットの送信間隔を縮小してもよい。
【００２９】
前記バスには、他のイニシエータまたはターゲットが接続されており、前記送信間隔制御部は、アクセス要求を前記他のイニシエータまたは前記ターゲットに送信してから応答が帰ってくるまでの時間であるレイテンシを、前記送受信部を利用して求め、前記バスの負荷として利用してもよい。
【００３０】
本発明による方法は、複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置に並列的に設けられる演算回路の数Ｎを決定するための設計方法であって、前記制御装置は、所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも１つのパケットを、バスに送信する送受信部とを備えており、前記許容遅延演算部が、各々が所定の演算の実行に時間ｎを要する、並列的なＮ個の演算回路と、前記バスに送信されるパケットの最小のサイズａ、前記演算回路の並列数Ｎおよび前記時間ｎに基づいて、前記所定数である制御間隔ｐを計算する制御間隔決定部とを備えるときにおいて、前記方法は、予め定められた制御間隔ｐの値を入力するステップと、予め定められた最小のサイズａの値および前記時間ｎの値を取得するステップと、下記の式によって、前記演算回路の並列数Ｎを決定するステップとを包含する。
0005838367.tif 000004
【発明の効果】
【００３１】
本発明によれば、同一の処理完了時刻を有する複数パケットを非同期的に通信する半導体バスにおいて、複数パケットの送信間隔を適切に調整することにより、フロー間の干渉を抑制し、システム全体としてのスループットとレイテンシを向上させることができる。また同時に処理完了時刻を守りながら、必要なアクセス量を最短時間で実行可能となるため、メディア処理などのアプリケーションのリアルタイム性を確保することが可能となる。また網の状態に応じた送信間隔の自動調整が働くため、設計フェーズにおける複雑なユースケースを用いた送信タイミングの設計評価のコストが削減できる。
【図面の簡単な説明】
【００３２】
【図１】イニシエータＩ１〜Ｉ４とターゲットＴ１〜Ｔ４との間のメインバスにＮｏＣを適用した一般的な接続構成の例を示す図である。
【図２】メモリへのバーストアクセスの一例を示す図である。
【図３】従来技術を適用した場合において、処理の締切時刻までに全てのアクセスが完了されない例を示す図である。
【図４】ＮｏＣバスを有するＳｏＣ１００の構成例を示す図である。
【図５】ＤＭＡＣが生成した要求トランザクション１０のデータ構造の例を示す図である。
【図６】ＮＩＣ１によってパケットヘッダＰＨが付加されてパケット化された要求トランザクション１２を示す図である。
【図７】ＮＩＣ５がＭＥＭ１から受け取った返信トランザクション１４のデータ構造の一例を示す図である。
【図８】パケット化された返信トランザクション１６および１８のデータ構造の一例を示す図である。
【図９】典型的なバーストアクセス例を示す図である。
【図１０】ＤＭＡＣ、ＥＮＣ、ＤＥＣが同時にＭＥＭ１に対してアクセス要求を行った場合に、ＤＭＡＣのアクセス遅延例を示す図である。
【図１１】ＤＭＡＣ、ＥＮＣ、ＤＥＣが送信間隔を調整しながらＭＥＭ１に対してアクセス要求を行った場合の、ＤＭＡＣのアクセス遅延例を示す図である。
【図１２】イニシエータ側のＮＩＣ１２０の基本的な構成を示す図である。
【図１３】送信間隔制御部１２５の基本構成を示す図である。
【図１４】イニシエータ側のＮＩＣ１２０の処理の手順を示すフローチャートである。
【図１５】許容遅延演算部１３１の基本構成を示す図である。
【図１６】制御間隔決定部１４４の処理の手順を示すフローチャートである。
【図１７】送信間隔制御部１２５が管理するパラメータを記録するためのレジスタ群の例を示す図である。
【図１８】送信間隔制御部１２５の処理の手順を示すフローチャートである。
【図１９】バーストアクセスの種類を示す図である。
【図２０】イニシエータからのデータアクセスの最小パケットサイズが９フリットであるとしたときのタイミング図である。
【図２１】新たにイニシエータからパケットサイズが７フリットのデータアクセスが発生したとしたときのタイミング図である。
【図２２】演算回路を２つの回路Ａ及び回路Ｂを用いて並列化することにより、調整範囲を制限時間内に算出可能にしたときのタイミング図である。
【図２３】並列数Ｎ＝３、最小パケットサイズａ＝２、除算回路の演算に要するサイクル数ｎ＝９のときのタイミング図である。
【図２４】図２３に示す条件下で動作中に、イニシエータが送信する最小パケットサイズが２フリット（ａ＝２）から４フリット（ａ＝４）に変更されたときのタイミング図である。
【図２５】送信間隔制御を行わない場合のパケットのレイテンシの結果を示す図である。
【図２６】本発明の実施形態による送信間隔制御を行った場合のパケットのレイテンシの結果を示す図である。
【発明を実施するための形態】
【００３３】
以下、添付の図面を参照しながら、本発明による送信間隔制御装置の実施形態を説明する。以下の実施形態においては、携帯電話やＡＶ機器に組み込まれるＳｏＣのメインバスとしてＮｏＣを使用する例を挙げて、送信間隔制御装置を説明する。
【００３４】
（実施形態１）
まず、回路網の構成を説明する。図４は、ＮｏＣバスを有するＳｏＣ１００の構成例を示す。ＳｏＣ１００は、たとえば携帯電話やＡＶ機器に組み込まれる。図４においては、最上段に記載されたイニシエータから、最下段に記載されたターゲットにデータが伝送される。または、当該イニシエータからの読み出し要求に応答して、ターゲットからイニシエータにデータが伝送される。
【００３５】
図４にはバスのイニシエータおよびターゲットの一例が示されている。すなわちバスのイニシエータとして、画面への表示処理を行うＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）、映像信号のＭＰＥＧ（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ）符号化を行うＥＮＣ（Encoder）、映像信号のＭＰＥＧ復号化を行うＤＥＣ（Decoder）、ウェブブラウザやユーザインタフェース処理などを行うＣＰＵ（Central  Processing  Unit）が含まれる。またターゲットとして、外部のＤＲＡＭ１〜ＤＲＡＭ４（図示せず）に接続されたメモリコントローラＭＥＭ１（Memory  Controller  １）からＭＥＭ４（Memory  Controller  ４）が含まれる。
【００３６】
各イニシエータおよび各ターゲットは、ネットワーク・インタフェース・コントローラＮＩＣｎ（ｎ：１〜８の整数）と接続されている。そして、複数のネットワーク・インタフェース・コントローラの間は、ルータＲｋ（ｋ：１〜４の整数）によって接続されている。これにより、各イニシエータおよび各ターゲットが相互に通信可能に接続される。
【００３７】
以下では、ＳｏＣ１００におけるデータの基本的な処理およびデータの流れを概説する。
【００３８】
イニシエータは、まずターゲットへのアクセス要求である要求トランザクションを生成し、自身と接続されたＮＩＣｘ（ｘ：１〜４の整数）に出力する。
【００３９】
イニシエータから要求トランザクションを受け取ったＮＩＣｘは、受け取った要求トランザクションをパケット化し、ルータＲ１〜Ｒ４同士の接続によって構成されるネットワークバスに送出する。
【００４０】
メモリコントローラＭＥＭｙ（ｙ：１〜４の整数）に接続されたＮＩＣ（ｙ＋４）は、ルータＲ１〜Ｒ４を介してイニシエータ側から伝送されてきたパケットを受信し、そのパケットからイニシエータの要求トランザクションを構成する。そして当該ＮＩＣ（ｙ＋４）は、得られた要求トランザクションを、自身と接続されたメモリコントローラＭＥＭｙに転送する。メモリコントローラＭＥＭｙは、要求トランザクションに従ってＤＲＡＭｙへデータを書き込み（データライト）、または、ＤＲＡＭｙに格納されたデータを読み出す（データリード）。その結果は、そのメモリコントローラＭＥＭｙからＮＩＣ（ｙ＋４）に渡される。
【００４１】
メモリコントローラＭＥＭｙに接続されたＮＩＣ（ｙ＋４）は、メモリコントローラＭＥＭｙがＤＲＡＭｙにリードまたはライトすることによって得られた結果である返信トランザクションをパケット化し、ルータＲｋ（ｋ：１〜４の整数）で構成されるネットワークバス上に送出する。
【００４２】
そしてイニシエータに接続されたＮＩＣｘは、ターゲットから送られた返信パケットを受け取って脱パケット化し、返信トランザクションを構成して、アクセス結果としてイニシエータに通知する。
【００４３】
次に、上述の要求トランザクションおよび返信トランザクションの具体例を説明する。ここでは、ＤＭＡＣが要求トランザクション１０を送信して、ＭＥＭ１に格納されたデータを読み出す例を説明する。
【００４４】
図５は、ＤＭＡＣが生成した要求トランザクション１０のデータ構造の例を示す。要求トランザクション１０は、Ｒ／Ｗフィールド、ＡＤＤＲフィールドおよびＳＩＺＥフィールドを有している。図５ではそれぞれ「Ｒ／Ｗ」、「ＡＤＤＲ」、「ＳＩＺＥ」と示されている。以下の図６〜８でも同様に記載する。
【００４５】
R/Wフィールドにはメモリからの読み出し動作を行うことを示す命令が記述される。ＡＤＤＲフィールドにはデータの読み出しを行うＤＲＡＭのアドレスが記述される。またSIZEフィールドで読み出すべきデータのサイズが指定されている。
【００４６】
図６は、ＮＩＣ１によってパケットヘッダＰＨが付加されてパケット化された要求トランザクション１２を示している。パケットヘッダＰＨには、要求元（その要求を送信したイニシエータ）としてＮＩＣ１のノードのＩＤが格納される。またパケットヘッダＰＨには、要求の宛先としてＮＩＣ５のノードのＩＤが格納される。ＮＩＣ５は、パケット化された要求トランザクション１２からパケットヘッダを除去する処理（脱パケット化処理）を行って図５に示した要求トランザクション１０を再構成し、その要求トランザクション１０をＭＥＭ１に転送する。
【００４７】
ＭＥＭ１は、要求トランザクション１０に記述されたＲ／Ｗフィールドに基づいて読み出し動作であることを特定する。さらにＭＥＭ１は、ＡＤＤＲフィールドおよびＳＩＺＥフィールドを読み取り、ＡＤＤＲフィールドに指定されたＤＲＡＭ上の番地から、ＳＩＺＥフィールドに指定されたサイズのデータを読み出す。その後ＭＥＭ１は、読み出した結果得られたデータを、ＮＩＣ５に出力する。
【００４８】
図７は、ＮＩＣ５がＭＥＭ１から受け取った返信トランザクション１４のデータ構造の一例を示す。ＮＩＣ５は返信トランザクションをパケット化し、ネットワークバスに転送する。
【００４９】
図８は、パケット化された返信トランザクション１６および１８のデータ構造の一例を示す。返信トランザクション１６は、取得したデータにパケットヘッダＰＨを付して生成される。なお、返信するデータのサイズが大きい場合には、複数のパケットに分けて返信されてもよい。１つの返信パケット１６または複数の返信パケット１８を受け取った後、ＮＩＣ１は、返信パケット１６または１８を脱パケット化処理することにより、図７に示す返信トランザクション１４を再構築する。ＮＩＣ１は、そのデータをＤＭＡＣに転送することで、ＤＭＡＣのメモリアクセスが完了する。
【００５０】
次に、本実施形態によるＳｏＣ１００の動作を説明する。
【００５１】
以下では、イニシエータであるＤＭＡＣが映像を画面（図示せず）表示する処理を行うとする。ただし、ＳｏＣ１００上ではＤＭＡＣのみが動作するのではなく、ＥＮＣ、ＤＥＣ、ＣＰＵも並列的に動作しつつ、データの授受を行う状況を想定する。
【００５２】
本実施形態では、ＤＭＡＣは画面への表示処理を行うため、表示画面のコマ落ちやフリーズの発生により製品のユーザ価値を低下させないためには、メモリアクセス時のレイテンシへの要求が厳しく、リアルタイム性の確保が重要となる。
【００５３】
一方、ＭＰＥＧに代表される映像や音声の符号化と復号化のアルゴリズムを実行するＥＮＣ及びＤＥＣは、その信号処理の過程で、バースト的なアクセスを発生させる。図９は、典型的なバーストアクセスの様子を示した例である。図９中の"Ｔｂ"はバーストが発生する周期である。ＭＰＥＧのマクロブロック単位で信号処理を行うコーデックであれば、Ｔｂは１マクロブロック時間に相当するサイクル数で表される。"Ｎｐ"は１回のバーストで発生するアクセスの回数である。Ｎｐはバーストアクセスの開始に先立って、コーデックの処理アルゴリズムにより決定される。
【００５４】
またＣＰＵは、ユーザとのインタラクション処理やインターネットのブラウジング処理などに用いられる。アクセスが発生するタイミングやアクセス量を事前に見積もることは困難であるが、他のイニシエータと比較すると、ＣＰＵの処理に関してはリアルタイム性に対する要求は厳しくない。
【００５５】
ネットワークバスを構成するルータは、パケットヘッダに格納された宛先に従って出力ポートを決定し、パケットの転送を行っていく。１パケットを転送するために必要なサイクル数Ｔｐは、内部のハードウェア構成とパケットサイズとによって異なる。
【００５６】
図１０は、ＤＭＡＣ、ＥＮＣ、ＤＥＣが同時にＭＥＭ１に対してアクセス要求を行った場合に、ＤＭＡＣのアクセスが遅延する様子を示す。図面の上からＥＮＣ、ＤＥＣ、ＤＭＡＣ、Ｒ１およびＲ３がパケットを出力していること、および、パケットを出力した時刻（サイクル）が示されている。なお図中で各パケットに振られた番号は、パケットを区別するための番号であり、説明の都合上付加したものに過ぎない。
【００５７】
図１０の例では、ＥＮＣとＤＥＣが同一のタイミングでパケット１とパケット２のデータを送信し、続くサイクルでパケット３とパケット４を送信し、続くサイクルでパケット５とパケット６を送信している。そして、パケット５および６が出力されたタイミングと同一のタイミングでＤＭＡＣがパケット７を送信している。
【００５８】
以下の説明では、ルータＲ１およびＲ３は、ＥＮＣ、ＤＥＣからの送信パケットとの干渉待合が発生しなければ、１パケットの転送に１サイクルを要すると仮定する。つまり、ＤＭＡＣから出力されたパケット７は２サイクル後に、ＭＥＭ１に到着するものとする。
【００５９】
ＥＮＣとＤＭＡＣが送信したパケットは、１サイクル後にルータＲ１に受信され、後段のルータＲ３へと中継される。一方、ＥＮＣからのパケット５の送信と同時にＤＭＡＣから送信されたパケット７は、ＥＮＣからのパケット５と同時にルータＲ１を通過できない。そこで、たとえばパケット７はパケット５の後に中継される。このときパケット７には１サイクルの遅延が発生することになる。
【００６０】
一方、ＤＥＣは、ＥＮＣの送信開始のタイミングと同一のタイミングでパケット２、パケット４、パケット６を順に送信している。パケット２、４、６はルータＲ２を経由してルータＲ３に送信される。ルータＲ３は、ルータＲ１の中継パケットと共にパケット２、４、６を中継する。ルータＲ３は、ルータＲ１からのパケットと、ＤＥＣからのパケットを交互に出力する。
【００６１】
図１０のルータＲ３のパケット出力タイミングによれば、ルータＲ３によって中継され、ＭＥＭ１に到着するパケット７には、最速でＭＥＭ１に到達する２サイクルを基準として、４サイクル分の遅延が発生していることが分かる。この遅延はルータ網上でのパケット競合に起因している。したがって、ネットワークバスの段数が増えると遅延は更に大きくなり、ＤＭＡＣのメモリアクセスのレイテンシが許容時間を超える状況が発生する。
【００６２】
一方、図１１は、ＤＭＡＣ、ＥＮＣ、ＤＥＣが送信間隔を調整しながらＭＥＭ１に対してアクセス要求を行った場合の、ＤＭＡＣのアクセスが遅延する様子を示す。図１１に示すように、ＤＭＡＣ、ＥＮＣ、ＤＥＣが送信間隔を調整するとＤＭＡＣのレイテンシは大幅に短縮される。ＥＮＣおよびＤＥＣは送信パケット間隔を空けてパケット１〜６を送信している。一方、ＤＭＡＣは、ＥＮＣおよびＤＥＣからパケットが送信されていないタイミングでパケット７を送信している。ＤＭＡＣが送信したパケット７は、ＥＮＣとＤＥＣからの送信パケットの間の空きサイクルを利用して最短のレイテンシである２サイクルでＭＥＭ１に到着している。
【００６３】
本実施形態では、ＥＮＣ、ＤＥＣは、アクセス負荷の状態とアクセスの進捗度合いを用いて動的にパケットの送信間隔を決定する。決定のタイミングは送信間隔の算出演算に要するサイクル数と演算ハードウェア資源及び稼働中のアクセスフローによって規定される最小のパケット転送サイクル数によって決定される。
【００６４】
図１２は、イニシエータ側のＮＩＣ１２０の基本的な構成を示す。ＮＩＣ１２０は、たとえば図４のＮＩＣ１〜４である。なお、以下に説明する機能に鑑みて、ＮＩＣ１２０は「送信間隔制御装置」と呼ぶこともある。
【００６５】
ＮＩＣ１２０は、パケット化部１２１と、脱パケット化部１２２と、パケットバッファ１２３と、パケット送受信部１２４と、送信間隔制御部１２５とを備えている。
【００６６】
パケット化部１２１は、イニシエータから送信されたデータを受け取り、そのデータにパケットヘッダを付加し、パケット化する。たとえば、パケット化部１２１は、イニシエータから送信された要求トランザクション１０（図５）を受け取り、パケットヘッダＰＨを付加してパケット化された要求トランザクション１２（図６）を生成する。この処理はパケット化処理とも呼ばれる。
【００６７】
脱パケット化部１２２は、パケット化部１２１の処理と逆の処理を行う。すなわち、脱パケット化部１２２は、ルータから受け取ったパケットからパケットヘッダを除去する。この処理は脱パケット化処理とも呼ばれる。
【００６８】
パケットバッファ１２３は、パケットを一時的に格納するために設けられたバッファである。
【００６９】
パケット送受信部１２４は、パケットの送受信に関連する処理を行う。パケットの送信時には、パケット送受信部１２４は、パケットバッファ１２３に格納されたパケットデータを送信データバス幅ごとに読み出して、パケットの送信処理を行う。パケットの受信時には、パケット送受信部１２４は、受信データバス幅毎に受信されたデータをパケットバッファ１２３に格納していくことでパケットを再構築する。
【００７０】
送信間隔制御部１２５の詳細は図１３を参照しながら後に詳細に説明する。
【００７１】
パケット化部１２１、脱パケット化部１２２、パケットバッファ１２３およびパケット送受信部１２４は、一般的なＮＩＣに存在する機能である。これらの構成要素に基づくＮＩＣ１２０の処理を概説する。
【００７２】
パケット送信時の処理は以下のとおりである。パケット化部１２１はイニシエータからデータを受け取り、そのデータにパケットヘッダを付加してパケット化処理を行う。パケットバッファ１２３はそのパケットを一時的に格納する。パケット送受信部１２４はパケットバッファ１２３に保持されたパケットデータを送信データバス幅ごとに読み出してパケットの送信処理を行う。
【００７３】
パケットの受信時の処理は以下のとおりである。パケット送受信部１２４は受信データバス幅毎にデータを受信し、パケットバッファ１２３に格納する、これにより、パケットが再構築される。脱パケット化部１２２は、得られたパケットからパケットヘッダを除去し、残されたデータをイニシエータに出力する。
【００７４】
次に、送信間隔制御部１２５を説明する。
【００７５】
送信間隔制御部１２５は、本実施形態にかかるＮＩＣ１２０に固有の機能要素である。
【００７６】
図１３は送信間隔制御部１２５の基本構成を示す。送信間隔制御部１２５は、許容遅延演算部１３１と、調整方法選択部１３２と、送信間隔決定部１３３とを有している。
【００７７】
許容遅延演算部１３１は、バーストアクセスの進捗情報に基づいて、リアルタイム性が確保可能な通信間隔の調整範囲（許容遅延量）を演算する。進捗情報は、許容遅延演算部１３１が保持する情報である。具体的には、進捗情報は、バーストアクセスの残数（アクセス残数）である。以下では主として「アクセス残数」という語を用いて説明する。
【００７８】
調整方法選択部１３２は、負荷情報に基づいて通信間隔の調整方法を選択し、間隔制御情報を生成する。
【００７９】
送信間隔決定部１３３は、調整範囲情報と間隔制御情報に基づいて通信間隔を決定し、データの送信許可情報を生成する。
【００８０】
ここで、送信間隔制御部１２５を含む、イニシエータ側のＮＩＣ１２０の処理の概要を説明する。
【００８１】
図１４は、イニシエータ側のＮＩＣ１２０の処理の手順を示すフローチャートである。
【００８２】
ステップＳ１００において、送信間隔制御部１２５は、最小パケットサイズａを示す情報を取得する。最小パケットサイズとは、データアクセスのためにターゲットに送信されるパケットの最小のサイズをいう。最小パケットサイズａは、データアクセスの種類やターゲットに応じて変動し得る。
【００８３】
ステップＳ１０２において、許容遅延演算部１３１は、最小パケットサイズａ、許容遅延演算部１３１に設けられた除算回路の並列数Ｎおよび各除算回路が演算に要するサイクル数ｎに基づいて、制御間隔ｐを演算する。なお、並列数Ｎおよびサイクル数ｎは、後に図１５を参照しながら説明するように許容遅延演算部１３１内に保持されている。
【００８４】
ステップＳ１０４において、許容遅延演算部１３１は、制御間隔ｐに基づくタイミングで、許容遅延Ｉを求める。この「制御間隔ｐに基づくタイミング」とは、ｐ個のパケットを送信する毎に、という意味である。求められた許容遅延Ｉはパケット送信の遅延をどの程度許容できるかを示す調整範囲情報として利用される。
【００８５】
調整範囲情報が得られると、送信間隔決定部１３３はステップＳ１０６の処理を実行する。ステップＳ１０６において、送信間隔決定部１３３は、調整範囲情報およびネットワークバスの負荷（レイテンシ）の情報を受け取る。そして、調整範囲および負荷（レイテンシ）に応じてパケットの送信間隔を調整する。パケットの送信間隔に合致する場合には、送信間隔決定部１３３は、イニシエータからのデータ（アクセス要求に対応する要求トランザクション）の送信を許可するか禁止するかを決定し、その結果を示す情報を出力する。
【００８６】
ステップＳ１０８において、パケット化部１２１は、データの送信を許可されたイニシエータからデータを受け取り、パケット化する。
【００８７】
そしてステップＳ１１０において、パケット送受信部１２４は、生成されたパケットを送信する。
【００８８】
ステップＳ１０４からＳ１１０までの処理を具体的に説明すると以下のとおりである。
【００８９】
たとえば、制御間隔ｐに基づくタイミングで求められた許容遅延Ｉが負であるとする。これは、遅延は許容されないことを意味する。このとき、パケットの転送サイクルが完了する度に送信間隔決定部１３３はイニシエータからのデータの送信を許可し（ステップＳ１０８）、パケット送受信部１２４は、遅延なく次のデータ（パケット）を送信する（ステップＳ１１０）。
【００９０】
一方、許容遅延Ｉが０以上であるときは、調整方法選択部１３２はその時点でのネットワークバスの負荷（レイテンシ）に応じてパケットの通信間隔を決定する。負荷が比較的大きければ、ネットワークバスが混雑しているため、パケットの送信間隔を拡大する。一方、負荷が比較的小さければ、ネットワークバスは混雑していないため、パケットの送信間隔を縮小する。決定された通信間隔に応じて、送信間隔決定部１３３はデータの送信を許可または禁止する情報をイニシエータに出力する。
【００９１】
上述の説明から理解されるように、制御間隔ｐは、許容遅延Ｉを再計算するタイミングを示している。許容遅延Ｉが得られると、パケットの送信間隔を調整する処理が行われる。よって、制御間隔ｐは、パケットの送信間隔を調整するためのパラメータであるといえる。
【００９２】
図１５は、許容遅延演算部１３１の基本構成を示す。許容遅延演算部１３１は、演算実行部１４１と、演算結果格納部１４２と、許容遅延算出部１４３と、制御間隔決定部１４４とを有している。
【００９３】
演算実行部１４１は、サイクル数を要する除算実行を予測的に並列処理する。本実施形態では、演算実行部１４１が並列的に設けられることを想定している。並列的に設けられる演算実行部１４１の数は、後に「Ｎ」という記号で表される。
【００９４】
演算結果格納部１４２は、演算結果を送信間隔の算出時点まで記憶する。
【００９５】
許容遅延算出部１４３は、送信間隔の調整範囲情報を算出する。
【００９６】
制御間隔決定部１４４は、イニシエータからアクセスされる最小のパケットサイズ、演算実行部の演算に費やされる処理サイクル数及びハードウェアの並列処理可能数から最適な制御間隔を決定する。
【００９７】
以下、図１６を参照しながら、制御間隔決定部１４４の処理を説明する。
【００９８】
図１６は、制御間隔決定部１４４の処理の手順を示すフローチャートである。
【００９９】
ステップＳ２００において、制御間隔決定部１４４は制御間隔ｐを更新するか否かを判断する。最小パケットサイズａが変更された場合は、制御間隔決定部１４４は制御間隔ｐを更新すると判断する。更新すると判断しない場合には、制御間隔決定部１４４は次の処理に進まない。
【０１００】
なお、最小パケットサイズａを示す情報は、ＮＩＣ１２０上のレジスタ（図示せず）に保持されている。最小パケットサイズａが変更されたか否かは、制御間隔決定部１４４が当該レジスタをモニタして検出すればよい。
【０１０１】
ステップＳ２０２において、制御間隔決定部１４４は、後述する数８に示す天井関数を用いて、制御間隔ｐを求める。
【０１０２】
ステップＳ２０４において、制御間隔決定部１４４は、求めた制御間隔ｐを内部メモリまたはレジスタ（図示せず）に保持する。
【０１０３】
図１７は、送信間隔制御部１２５が管理するパラメータを記録するためのレジスタ群の例を示す。以下、各レジスタに設定されるパラメータの意味を説明する。
【０１０４】
Ｔｂはバーストアクセスが発生する周期であり、Ｔｐはトランザクションの転送に要するサイクル数である。たとえば、１２８バイトのトランザクションを６４ビットバスで送信する場合であれば、サイクル数１２８／６４＊８＝１６サイクルとなる。
【０１０５】
Ｎｐは単一のバースト周期内に生成されるアクセスの回数である。Ｓｂはバースト周期の開始時刻のサイクル数を格納するためのレジスタであり、Ｒｐはバースト周期内に生成されるべきアクセス数Ｎｐから既に生成されたアクセス数を差し引いたアクセスの残数である。ＲｃはＲｐ回のアクセスを完了するまでに残されたサイクル残数である。またＧは次回のアクセスまでの送信間隔であり、Ｌは直近のレイテンシである。
【０１０６】
パラメータＴｂ、Ｔｐ、Ｎｐは、イニシエータから要求されるメモリアクセス特性を決定する。これらは、メモリへのアクセス開始に先立ってイニシエータによって各レジスタ上で初期化される。またパラメータＳｂ、Ｒｐ、Ｒｃ、Ｇ、Ｌは、送信間隔制御部１２５が管理する内部パラメータを記録するために用いられる。チップの電源投入時またはリセット時に各レジスタ上でゼロクリアされる。また以下の説明で登場するＴｃは、サイクルカウンタの現在値であり、システム上での現在時刻を表す。サイクルカウンタは、チップの電源投入時またはリセット時にゼロにクリアされ、１クロックサイクル毎にインクリメントされるｎビットのカウンタで良い。
【０１０７】
以下、送信間隔制御部１２５の動作を説明する。
【０１０８】
図１８は、送信間隔制御部１２５の処理の手順を示すフローチャートである。この処理は、バーストアクセス区間中のアクセス要求毎に繰り返される。
【０１０９】
まず、イニシエータからターゲットへのアクセス要求が発生し、ＮＩＣ１２０がトランザクションを受け取ったことを、送信間隔制御部１３３が検出すると、処理が開始される。たとえば送信間隔制御部１３３は、パケットバッファ１２３（図１２）をモニタしている。送信間隔制御部１３３は、トランザクションのデータの存在を検出することにより、上述のアクセス要求およびトランザクションの受信を検出する。または、送信間隔制御部１３３がパケット送受信部１２４またはパケット化部１２１から通知を受けることにより、上述の検出を行ってもよい。
【０１１０】
上述のようにアクセス要求が検出されると処理が開始される。
【０１１１】
ステップＳ２において、送信間隔制御部１３３は、アクセス残数レジスタＲｐを読み出す。アクセス残数レジスタＲｐがＲｐ＝０のときは処理はステップＳ４に進み、Ｒｐ＝１のときは処理はステップＳ８に進み、Ｒｐの値がそれら以外のときは処理はステップＳ６に進む。このように処理をアクセス残数レジスタＲｐの値に応じて変えている理由は、バーストアクセスの種類に応じて適切な処理を行うためである。
【０１１２】
図１９は、バーストアクセスの種類を示している。図１９に示すように、Ｒｐ＝０の場合には、バースト周期内での先頭アクセスであることを意味する。またＲｐ＝１の場合には、バースト周期内での最後尾（最終の）アクセスであることを意味する。Ｒｐの値がそれら以外の場合には、バースト中のアクセス（中間アクセス）であることを意味する。適切な動作になるよう、本実施形態においてはそれぞれの場合で各部の行う処理内容を異ならせている。
【０１１３】
再び図１７を参照する。ステップＳ４は先頭アクセスの場合の処理である。許容遅延演算部１３１は、数２〜数５に従い、関連パラメータの初期化処理を行う。
【数２】
0005838367.tif 000005
【数３】
0005838367.tif 000006
【数４】
0005838367.tif 000007
【数５】
0005838367.tif 000008
【０１１４】
数４におけるＴｂ’はバースト周期Ｔｂから時間余裕として確保するべきマージン量を差し引いた値である。イニシエータは、バースト周期内の全てのアクセスを完了した後にデータ処理を行うための時間マージンを必要とする。確保するべき時間マージンを決定する主な要因はその処理に要する最大のサイクル数である。データ格納用のメモリ領域とデータ処理用のメモリ領域が分離されているようなプログラムでは、Ｔｂ’およびＴｂを同じ値にすることができる。
【０１１５】
ステップＳ４の処理が完了すると、処理はステップＳ３２に進む。
【０１１６】
次に、ステップＳ６の処理を説明する。ステップＳ６は中間アクセスの場合の処理である。
【０１１７】
ステップＳ６において許容遅延演算部１３１は、数６に従い、サイクル残数Ｒｃを更新する。
【数６】
0005838367.tif 000009
【０１１８】
さらにステップＳ１０において許容遅延演算部１３１は、数７に従い、許容遅延（または調整範囲）Ｉを計算する。
【数７】
0005838367.tif 000010
【０１１９】
許容遅延演算部１３１は、許容遅延Ｉの値を調整範囲情報として調整方法選択部１３２および送信間隔決定部１３３に通知する。
【０１２０】
許容遅延Ｉの値の計算は、大きく２つのフェーズに分離できる。第一のフェーズは１／Ｒｐを算出するフェーズであり、第二のフェーズは、積和演算により許容遅延Ｉを算出するフェーズである。言うまでもなく、演算コストに関しては除算演算を含む第一のフェーズの方が高い。本実施形態では、第一のフェーズに要するサイクル数を９サイクル、第二のフェーズに要するサイクル数を２サイクルとして説明する。第一のフェーズは演算実行部１４１によって実行され、第二のフェーズは許容遅延算出部１４３によって実行される。
【０１２１】
続いて、図２０〜図２４を参照する。これらの図面の説明に関連して、以下では「フリット」という概念を用いる。「１フリット」は、１バスクロック毎に転送が可能なデータの伝送単位である。１フリットのサイズは、１パケットのサイズ以下である。本実施形態では、１パケットは、複数のフリットに分割されて伝送されるとする。
【０１２２】
なお、パケットサイズは、１パケットを転送するのに要するサイクル数と比例している。当該サイクル数が決まれば、１フリットのデータサイズとサイクル数との積によってパケットサイズを求めることができる。
【０１２３】
図２０は、イニシエータからのデータアクセスの最小パケットサイズが９フリットであるとしたときのタイミング図を示す。最上段の矩形波形はバスクロックの状態を示す。最上段に添えて記載されている記号ｔは、１バスクロック（１サイクル）を単位時間としたときの経過時間を示す。
【０１２４】
二段目の各矩形はフリットを示している。各矩形には、たとえば「Ｐ０」、「Ｆ０」のような、ＰおよびＦを用いた記号が示されている。１つのフリット内のＰおよびＦを、本明細書では便宜的に「Ｐ−Ｆ」のようにハイフンでつなげて表記する。たとえば最初のフリットは「Ｐ０−Ｆ０」のように表記する。
【０１２５】
Ｐ０−Ｆ０は、０番目のパケット（パケット０）を構成する０番目のフリット（パケット０のヘッダフリット）、Ｐ０−Ｆ８は０番目のパケットの９番目のフリット（パケット０のトレイラーフリット）を示す。次のパケット１（Ｐ１）の送信が開始されるタイミングは、最短でｔ＝１０であることが分かる。したがって、ｔ＝１０の時点で許容遅延Ｉの更新が完了していることが必要になる。
【０１２６】
最下段は、演算等の処理に要する時間（サイクル）である。第一のフェーズである除算演算はｔ＝８のタイミングで完了するよう、ｔ＝−１の時点において予測的に開始される。その後、第二のフェーズで積和演算が実行され、許容遅延Ｉが算出される。第二のフェーズである積和演算の完了は、許容遅延Ｉの算出完了（更新）を意味する。許容遅延Ｉの算出はｔ＝１０で完了する。よって、続くパケット１（Ｐ１）の送信間隔を決定するための調整範囲を制限時間内に算出できている。
【０１２７】
続くパケット２（Ｐ２）の送信間隔を決定するための演算が開始される。パケット２が送信されるタイミングは、最短でｔ＝１９である。第一のフェーズである除算はｔ＝８からｔ＝１７のサイクル期間中に実行され、第二のフェーズで２サイクルを消費した後、ｔ＝１９で許容遅延Ｉを更新する。このような演算サイクルを確保できれば、続くパケット３の送信間隔を決定するための許容遅延（調整範囲）を制限時間内に算出することが可能である。
【０１２８】
図２１は、新たにイニシエータからパケットサイズが７フリットのデータアクセスが発生したとしたときのタイミング図を示す。パケット２（Ｐ２）に対する第一の演算フェーズはｔ＝８のタイミングで完了し、第二のフェーズはｔ＝１０に完了する。よって、続くパケット２（Ｐ２）の送信間隔を決定するための調整範囲Ｉを、制限時間内に算出できているといえる。
【０１２９】
しかしながら、パケットサイズが７フリットであるために、パケット３（Ｐ３）の送信タイミングは最短でｔ＝１７となる。第一の演算フェーズはｔ＝１７で完了するが、第二のフェーズが完了までにはさらに２サイクルかかり、処理遅延が生じる。よって、パケット３の送信が開始される最短タイミングまでには許容遅延Ｉの値を算出できず、リアルタイム性が確保できなくなってしまう。この例によれば、調整範囲Ｉを制限時間内に算出できるかどうかは、パケットサイズに依存することが分かる。
【０１３０】
図２２は、演算回路を２つの回路Ａ及び回路Ｂを用いて並列化することにより、調整範囲を制限時間内に算出可能にしたときのタイミング図を示す。パケットサイズは図２１の例と同じく、７フリットである。この構成例は、図１５の演算実行部１４１の並列数が２のときの構成に対応する。
【０１３１】
回路Ａがｔ＝８まで１／Ｒｐの予測演算を行い、ｔ＝１０で調整範囲Ｉを更新する間に、並列化された回路Ｂがｔ＝６からｔ＝１７の間、１／Ｒｐの予測演算を行い、調整範囲Ｉを更新する。このように第一の演算フェーズを実行する除算回路を２並列化することで、許容遅延Ｉの算出タイミングに遅延を生じず、リアルタイム性を確保できるようになる。この例によれば、調整範囲Ｉを制限時間内に算出できるかどうかは、演算回路が並列化されているか否かに依存することが分かる。
【０１３２】
ここで、新たにイニシエータから１パケットが４フリットで構成されるデータのアクセスが発生した場合を考える。この場合、図２２のような、並列化された演算回路が２つ設けられていたとしても、リアルタイム性を守ることができない。
【０１３３】
このようなデータアクセスが発生し得る場合には、第一の演算フェーズを実行する除算回路の更なる並列化を必要とする。これは結果として、回路面積を増大させてしまう。しかしながら、ＮｏＣが実装される製品の仕様によっては、演算回路の更なる並列化が許容される場合も考えられる。
【０１３４】
そこで本実施形態では、回路面積制約を受けつつも実装された、第一のフェーズを実行する除算回路の並列数Ｎに合わせて、調整範囲Ｉの更新間隔ｐを、イニシエータが送信する最小パケットサイズａに応じて制御する構成を示す。これにより、リアルタイム性を確保することが可能になる。各除算回路の演算に要するサイクル数はｎとする。
【０１３５】
図２３は、並列数Ｎ＝３、最小パケットサイズａ＝２、除算回路の演算に要するサイクル数ｎ＝９のときのタイミング図を示す。このとき、制御間隔決定部１４４は、制御間隔ｐを、天井関数を用いた以下の式により決定する。
【数８】
0005838367.tif 000011
【０１３６】
天井関数は、実数ｘに対してｘ以上の最小の整数を与える関数である。上述の条件下では、ｎ／Ｎａは１.５であるため、制御間隔ｐは２と算出される。このとき、送信間隔制御部１２５は、パケットバッファ１２３を監視し、２つのパケットが送信される度に、送信間隔を更新する。なお図２３では、予測演算の開始を２つ目のパケットを構成する２つのフリットのうち、最初のフリットが送信された時点で予測演算を開始している。このように許容遅延Ｉを一定のパケット数送信毎に更新し、その許容遅延Ｉを用いて送信間隔の拡大や縮小を制御する（図１８）。これにより、アクセス残数Ｒｐは単調減少となり、１／Ｒｐを予測的に演算することが可能となる。
【０１３７】
図２４は、たとえば図２３に示す条件下で動作中に、イニシエータが送信する最小パケットサイズが２フリット（ａ＝２）から４フリット（ａ＝４）に変更されたときのタイミング図を示す。
【０１３８】
一般にＮ、ａ、ｎの値はＮＩＣ上のレジスタ等に格納される。イニシエータは最小パケットサイズに変更が生じた際に、レジスタを更新する。これにより、送信間隔制御部１４４は、上述の条件の変更に関する通知をイニシエータまたはＮＩＣから受けることができる。
【０１３９】
送信間隔制御部１４４は、ａの値を格納するレジスタが変更を受けたことを検出すると、または、変更されたとの通知を受信すると、再度（数８）によって、制御間隔ｐを再計算して更新する。このとき、ｐ＝１となるため、１パケット毎に送信間隔が再計算されており、バスの混雑状態への追従性が向上する。このように実装上限られた並列処理数の演算回路を用いて、最も追従性の良い制御間隔を動的に計算することで、リアルタイム性を確保する上で、効率の良い制御を実現可能となる。
【０１４０】
再び図１７を参照する。ステップＳ１２において調整方法選択部１３２は、調整範囲情報のＩの値が非負か負かを判定する。非負の場合には処理はステップＳ１４に進み、負の場合には処理はステップＳ１６に進む。
【０１４１】
ステップＳ１４において、許容遅延演算部１３１は、現在のネットワークバスの負荷状況を推定するため、負荷情報を取得する。負荷の把握に利用する情報として、直近のトランザクション処理に要したレイテンシの値Ｌを用いることができる。レイテンシは、要求を出してから応答が帰ってくるまでの時間である。
【０１４２】
レイテンシの値Ｌの具体的な求め方の一例は以下のとおりである。まず、パケット送受信部１２４は要求トランザクションをネットワークバスに送出する時点におけるサイクルカウンタＴｃの値をパケットヘッダ内に記録しておく。ターゲット側のＮＩＣは返信トランザクションを送出する際に、先に受信していたパケットのパケットヘッダ内に記録されていたサイクルカウンタの値を、送出しようとする返信トランザクションのパケットのパケットヘッダ内に記録（コピー）する。そして許容遅延演算部１３１は、イニシエータ側のＮＩＣに返信トランザクションのパケットが到着した時点でのサイクルカウンタの値を、コピーされたサイクルカウンタの値（＝要求トランザクション送出時点でのサイクルカウンタの値）から差し引くことによって求めてもよい。
【０１４３】
上述の説明では、イニシエータ側のＮＩＣ１２０が要求トランザクションをネットワークバスに送出する時点を起点とし、その起点からの経過時間をレイテンシとして計測した。しかしながら、たとえばイニシエータからの要求トランザクションの受信時を起点とし、当該イニシエータが要求を出してから応答が帰ってくるまでの時間をレイテンシとして計測してもよい。
【０１４４】
また、複数のイニシエータが相互に直接通信する場合も想定され得る。その場合には、イニシエータからの要求トランザクションの受信時を起点とし、当該イニシエータが他のイニシエータに要求を出してから応答が帰ってくるまでの時間をレイテンシとして計測してもよい。
【０１４５】
次のステップＳ１８において、調整方法選択部１３２は、算出したレイテンシの値Ｌの値を予め設定された閾値Ｌ１およびＬ２（Ｌ１＜Ｌ２）とを比較し、調整方法を選択する。Ｌ＞Ｌ２に該当するときは、負荷が大きい、つまり伝送されているパケット数が多いことを意味する。よって、送信間隔を増加させ、パケットの密度を減少させる必要がある。一方、Ｌ≦Ｌ１に該当するときは、負荷が小さい、つまり伝送されているパケット数が少ないことを意味する。このときは、送信間隔を縮小させ、パケットの密度を増加させることができる。Ｌ２＞Ｌ≧Ｌ１に該当するときは、負荷が中程度であると言える。
【０１４６】
Ｌ２＞Ｌ≧Ｌ１の場合には、処理はステップＳ２０に進み、送信間隔決定部１３３は、段階的に送信間隔を拡大する調整を行う。送信間隔Ｇは、Ｇ＋Ｋ１により求められる。
【０１４７】
Ｋ１は段階調整幅であり、数９のように定義する。
【数９】
0005838367.tif 000012
【０１４８】
この定義によると、バースト周期内でデータ送信を行うサイクルの割合が小さいイニシエータほど、送信間隔の調整幅は大きくすることができる。なお、ｋは調整パラメータであり、シミュレーションなどにより決定される定数である。
【０１４９】
数８をより詳しく説明する。数８に含まれる（Np・Tp）は、単一のバースト周期内に生成されるアクセス回数Npと１パケットを転送するために必要なサイクル数Ｔｐとの積であるから、１バースト周期内において必要とされるサイクル数である。よって、バースト周期Ｔｂを（Np・Tp）で除算すると、バーストアクセス期間中における、１サイクル当たりの時間長が得られる。本願明細書では、このように得られた値を「バーストアクセスの密度」と呼ぶ。数８のＫ１は、当該バーストアクセスの密度に調整パラメータｋを乗じて得られる値であり、バーストアクセスの密度に応じた値である。
【０１５０】
Ｌ≦Ｌ１の場合には、処理はステップＳ２２に進み、送信間隔決定部１３３は、段階的に送信間隔を縮小する調整を行う。送信間隔Ｇは、Ｇ−Ｋ２により求められる。
【０１５１】
Ｋ２は段階調整幅であり、Ｋ２＝１としてもよいし、数８のＫ１をＫ２としてＫ１と同じように定義してもよい。
【０１５２】
そしてＬ＞Ｌ２の場合には、処理はステップＳ２４に進み、調整方法選択部１３２は、非段階的に送信間隔を拡大する調整を行う。
【０１５３】
ステップＳ２４においては、送信間隔決定部１３３は、数９に従い、送信間隔Ｇを更新する。
【数１０】
0005838367.tif 000013
【０１５４】
なお図１７のステップＳ２４では、ａ＝０と表している。
【０１５５】
非段階的な調整は、必須ではないが、段階的な調整でレイテンシが改善しないような過負荷な状態から、速やかに脱却できる可能性がある。ａは乱数の発生区間の下限であり、ａ＝Ｉ／２などとしてもよいし、ａ＝Ｋ１などとしてもよい。また乱数の確率分布は一様分布を用いてもよい。
【０１５６】
調整方法選択部１３２は、決定された調整方法を間隔制御情報として、送信間隔決定部１３３に通知する。その後、処理はステップＳ２６およびＳ２８に進む。
【０１５７】
ステップＳ２６において、送信間隔決定部１３３は送信間隔Ｇと許容遅延Ｉとを比較する。送信間隔Ｇが許容遅延Ｉより小さいときには、ステップＳ３０に進み、その送信間隔Ｇを記録する。送信間隔Ｇが許容遅延Ｉ以上のときには、ステップＳ２８に進み、許容遅延Ｉをその送信間隔Ｇとして設定する。そしてステップＳ３０において、その送信間隔Ｇを記録する。
【０１５８】
なお、この例においては閾値Ｌ１およびＬ２を２つ設けたが、これは一例である。閾値はＬ１のみであってもよい。このときは、Ｌ＞Ｌ１の場合には、段階的に送信間隔を拡大する調整を行い、Ｌ≦Ｌ１の場合には、段階的に送信間隔を縮小する調整を行ってもよい。
【０１５９】
このとき、送信間隔Ｇは以下の処理により求めることができる。
【０１６０】
まず段階的に送信間隔を拡大する場合（Ｌ＞Ｌ１）には、送信間隔決定部１３３は、数１０に従い、送信間隔Ｇを更新する。
【数１１】
0005838367.tif 000014
【０１６１】
Ｋ１は上述の数９に示す通りである。
【０１６２】
また、段階的に送信間隔を縮小する場合（Ｌ≦Ｌ１）には、送信間隔決定部１３３は、数１２に従い、送信間隔Ｇを更新する。
【数１２】
0005838367.tif 000015
【０１６３】
Ｋ２＝１としてもよいし、数９のように定義してもよい。
【０１６４】
なお、数１１および数１２の”min”は、図１７のステップＳ２６およびＳ２８の処理を包含していることに留意されたい。
【０１６５】
送信間隔決定部１３３は、内部にデクリメントカウンタを持ち、デクリメントカウンタの保持する値が、ゼロの場合だけ、送信許可信号をアサート（Ａｓｓｅｒｔ）して、イニシエータが要求トランザクションを発行可能な状態にする。デクリメントカウンタにゼロ以外の値が書き込まれると、送信許可信号はネゲート（Ｎｅｇａｔｅ）され、イニシエータは新たな要求トランザクションが発行可能な状態となるまで、メモリアクセスを待機させる。デクリメントカウンタの値は、サイクルカウンタがインクリメントされる度にデクリメントされることで次第にゼロに近づく。
【０１６６】
先頭アクセスの場合に実行されるステップＳ３２では、アクセス残数Ｒｐをデクリメントし（Ｒｐ＝Ｒｐ−１）、ステップＳ３４においてＴｐ＋Ｇをデクリメントカウンタに書き込む。そしてステップＳ３８において、送信間隔決定部１３３は送信許可信号を”ＤＩＳＡＢＬＥ”に設定する。これによりＴｐ＋Ｇサイクル以内のイニシエータからの要求トランザクションの発行が禁止される。
【０１６７】
中間アクセスの場合に実行されるステップＳ１６において、送信間隔決定部１３３は、調整範囲情報により許容遅延Ｉの値が負であることを検出した場合には、イニシエータが行う処理のリアルタイム性を確保するため、送信間隔ＧをＧ＝０に更新する。その後処理はステップＳ３０に進んで送信間隔Ｇの値が記録される。次のステップＳ３２ではアクセス残数Ｒｐをデクリメントし（Ｒｐ＝Ｒｐ−１）、ステップＳ３４においてデクリメントカウンタにＴｐ＋Ｇを書き込む。そしてステップＳ３８において、送信間隔決定部１３３は送信許可信号を”ＤＩＳＡＢＬＥ”に設定する。これによりＴｐ＋Ｇサイクル以内のイニシエータからの要求トランザクションの発行が禁止される。
【０１６８】
最後尾アクセスの場合に実行されるステップＳ８において、送信間隔決定部１３３は、アクセス残数Ｒｐをゼロクリアし、ステップＳ３６においてデクリメントカウンタにＳｂ＋Ｔｂを書き込む。そしてステップＳ３８において、送信間隔決定部１３３は送信許可信号を”ＤＩＳＡＢＬＥ”に設定する。これによりＴｐ＋Ｓｂサイクル以内のイニシエータからの要求トランザクションの発行が禁止される。
【０１６９】
その後、ステップＳ４０においてカウンタがリセットされたことを検出すると、ステップＳ４２において送信間隔決定部１３３は送信許可信号を”ＥＮＡＢＬＥ”に設定する。これにより、イニシエータからの要求トランザクションの発行が許可される。
【０１７０】
送信間隔の拡大だけでなく縮小を行うことにより、Ｎｐ回のアクセスを早期に完了させ、後から発生するであろう他のイニシエータのアクセスを可能な限りバスの帯域内に収容することができる。例えば図４のＣＰＵは、ユーザとのインタラクションやインターネットのブラウジングなどに利用されるため、ユーザの指定した処理を実行するために発生するメモリアクセス量は、事前に予測することが困難である。そのような場合でも、送信間隔の縮小により、各イニシエータが早期に全てのメモリアクセスを完了していれば、ユーザによって起動されたＣＰＵ処理のアクセスをバス帯域内に収容することができ、バス帯域の利用効率が向上する。
【０１７１】
以上のように送信間隔制御部１２５が働くことにより、イニシエータ間でリンクを共用するネットワークバス上でのリアルタイム性の確保が可能となるとともに、バス帯域の利用効率も向上させることができる。図２５及び図２６は、ＥＮＣ、ＤＥＣ、ＤＭＡＣのアクセスをモデル化し、ソフトウェアシミュレータにより、レイテンシの大きさを比較評価したものである。横軸は時間（サイクルクロックの値）を、縦軸はレイテンシの値（単位はサイクル）を示している。使用した３種類のイニシエータのアクセスモデルは以下のように条件設定した。
ＥＮＣ：  Ｔｂ＝４０００、Ｎｐ＝２５０、Ｔｐ＝４  （灰色）
ＤＥＣ：  Ｔｂ＝４０００、Ｎｐ＝２５０、Ｔｐ＝４  （灰色）
ＤＭＡＣ：Ｔｂ＝４００、  Ｎｐ＝４、    Ｔｐ＝４  （黒色）
【０１７２】
図２５は送信間隔制御を行わない場合のパケットのレイテンシの結果を示す。０サイクルからＥＮＣとＤＥＣのバーストアクセスが開始されると、レイテンシは一定の傾斜で大きくなっていき、８５０サイクル程度まで増加していることが分かる。バーストアクセスによりバスが過負荷となっている間に行われたＤＭＡＣのメモリアクセスも、バーストアクセスの影響でレイテンシが同様に伸びている。
【０１７３】
一方、図２６は本実施形態による送信間隔制御を行った場合のパケットのレイテンシの結果を示す。０サイクルから開始されたＥＮＣとＤＥＣのバーストアクセスは、レイテンシの増加とともに、送信間隔が制御され、５０サイクル程度のレイテンシに抑制されている。またこのため、ＤＭＡＣのアクセスも送信間隔制御されたためにできた空きサイクルにより、低レイテンシでアクセスが完了していることが分かる。また送信間隔が縮小される制御が入っているため、０から４０００サイクルの間で実行されるべきＥＮＣ及びＤＥＣの各４０００回のアクセスは、２０００サイクル迄の間で全て完了していることが分かる。このように、各イニシエータ毎のリアルタイム性の確保とバス帯域の利用効率向上がなされることがシミュレーションで確認できる。
【０１７４】
本実施形態では、送信間隔制御部はイニシエータ側のＮＩＣの一部として説明したが、ＮＩＣ機能ブロックの外部に位置していてもよい。またイニシエータとターゲット間を接続するネットワークバスのトポロジーとして、フライ網を仮定したが、メッシュ網やトーラス網などの他のトポロジーであってもよい。また本実施形態では、ターゲットが複数存在する場合を説明しているが、ターゲットは単一でも良い。
【０１７５】
（実施形態２）
本実施形態では、実施形態１において説明した第一の演算フェーズを実行するのに要する演算サイクル数ｎ、イニシエータが送信する最小パケットサイズａ、必要とされる制御粒度を示す制御間隔ｐを、回路設計時における要求仕様として定義する。これにより、（数１３）に示す関係式から、必要な演算回路の並列数を決定することができる。
【数１３】
0005838367.tif 000016
【０１７６】
Ｎによって、回路の実装規模や実装面積が決定されるため、設計時における回路規模の見積りに利用することができると共に、設計手法または設計ツールとして用いることも可能である。
【０１７７】
たとえば、設計者にとっては、１パケットの送信毎に送信間隔を制御したいという要求は強いと考えられる。その場合には、制御間隔ｐを１に固定すればよい。このように、ｐの値が変化しない条件下でも、最適な数の並列演算回路を有する送信間隔制御装置を設計することが可能になる。
【０１７８】
本願発明は、チップ（ＮｏＣ）上に実装されるＮＩＣまたは送信間隔制御装置として実施されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施される。そのようなシミュレーションプログラムは、コンピュータによって実行される。本実施形態においては、図１２、図１３、図１５に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、上述した実施形態の各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
【０１７９】
たとえば、並列演算回路の最適な並列数Ｎを求めるためには、使用者は、上述のコンピュータに、予め定めた制御間隔ｐの値を入力し、予め想定される、イニシエータが送信する最小のパケットサイズａおよび並列演算回路の演算実行の要処理時間ｎを入力すればよい。コンピュータは、上述の数１３にそれらを代入することにより、最適な並列演算回路数Ｎを求めることが可能になる。
【産業上の利用可能性】
【０１８０】
本発明は、ＴＶ、レコーダなどのＡＶ家電、携帯電話などのモバイル機器をはじめとして各種組込機器上でリアルタイム処理を行う半導体ＬＳＩ上のパケット通信型のバスに適用可能である。たとえば本発明は、バスを共用する複数のイニシエータを、パケットの送信間隔を制御することによって効率的に通信させるための送信間隔制御装置、制御方法、制御プログラムとして利用可能である。
【符号の説明】
【０１８１】
１２１  パケット化部
１２２  脱パケット化部
１２３  パケットバッファ部
１２４  パケット送受信部
１２５  送信間隔制御部
１３１  許容遅延演算部
１３２  調整方法選択部
１３３  送信間隔制御部
１４１  演算実行部
１４２  演算結果格納部
１４３  許容遅延算出部
１４４  制御間隔決定部
【図１】
0005838367.tif 000019
【図２】
0005838367.tif 000020
【図３】
0005838367.tif 000021
【図４】
0005838367.tif 000022
【図５】
0005838367.tif 000023
【図６】
0005838367.tif 000024
【図７】
0005838367.tif 000025
【図８】
0005838367.tif 000026
【図９】
0005838367.tif 000027
【図１０】
0005838367.tif 000028
【図１１】
0005838367.tif 000029
【図１２】
0005838367.tif 000030
【図１３】
0005838367.tif 000031
【図１４】
0005838367.tif 000032
【図１５】
0005838367.tif 000033
【図１６】
0005838367.tif 000034
【図１７】
0005838367.tif 000035
【図１８】
0005838367.tif 000036
【図１９】
0005838367.tif 000037
【図２０】
0005838367.tif 000038
【図２１】
0005838367.tif 000039
【図２２】
0005838367.tif 000040
【図２３】
0005838367.tif 000041
【図２４】
0005838367.tif 000042
【図２５】
0005838367.tif 000043
【図２６】
0005838367.tif 000044