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