JP5838367B2 - 制御装置および演算回路の数を決定するための設計方法 - Google Patents

制御装置および演算回路の数を決定するための設計方法 Download PDF

Info

Publication number
JP5838367B2
JP5838367B2 JP2011152076A JP2011152076A JP5838367B2 JP 5838367 B2 JP5838367 B2 JP 5838367B2 JP 2011152076 A JP2011152076 A JP 2011152076A JP 2011152076 A JP2011152076 A JP 2011152076A JP 5838367 B2 JP5838367 B2 JP 5838367B2
Authority
JP
Japan
Prior art keywords
packet
transmission
interval
transmission interval
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011152076A
Other languages
English (en)
Other versions
JP2013021452A (ja
Inventor
石井 友規
友規 石井
山口 孝雄
孝雄 山口
篤 吉田
篤 吉田
栄児 渡辺
栄児 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2011152076A priority Critical patent/JP5838367B2/ja
Publication of JP2013021452A publication Critical patent/JP2013021452A/ja
Application granted granted Critical
Publication of JP5838367B2 publication Critical patent/JP5838367B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、ネットワーク化された通信バスを備える半導体チップにおいて、通信バスの制御を行うための技術に関する。
近年、システム・オン・チップ(System on Chip;以下「SoC」)やマルチコア・プロセッサ分野における通信バスとして、ネットワーク・オン・チップ(Network−on−Chip、以下「NoC」)が用いられるようになってきた。
図1は、イニシエータI1〜I4とターゲットT1〜T4との間のメインバスにNoCを適用した一般的な接続構成の例を示す。イニシエータは、たとえば、DSP(Digital Signal Processor)、CPU(Central Processing Unit)、DMAC(Direct Memory Access Controller)などである。また、ターゲットは、たとえば、外部のDRAMに接続されるメモリコントローラ、SRAM、外部との入出力用のバッファメモリなどである。
イニシエータおよびターゲットは、ネットワーク・インタフェース・コントローラ(Network Interface Controller;NIC)であるNIC1〜NIC8を介して、NoCルータR1〜R4で構成されるネットワークバスにより、相互に通信可能な状態に接続されている。NoCでは、バス上でのデータのやりとりは全てパケット単位で行われる。そのために、NICはイニシエータやターゲットが送受信するトランザクションデータをパケット化および脱パケット化する機能を有する。またNoCの構造上、ルータ間を接続するリンクL1〜L8は、複数のイニシエータI1〜I4からターゲットT1〜T4へパケットが送信される際に共用される。
図1のような構成のNoCにおいて、各リンクの通信帯域は、相反する2つの制約の下で設計される。すなわち、リンク帯域を向上させることにより、各イニシエータが要求するレイテンシやスループットなどの伝送品質を確保するという第一の制約と、リンク帯域を低減させることにより、回路の高周波設計を避け、消費電力を低減するという第二の制約である。
各イニシエータが要求する帯域は、一般的には時間変動するため、単位時間当たりに要求される平均帯域と最大帯域とは一致しない。仮に、同一のリンクを共用し、非同期的にパケットの送信を行う複数のイニシエータがターゲットに対してほぼ同時に最大帯域のアクセスを行った場合、経路上のリンクは全てのアクセスを収容することができず、レイテンシの増加やスループットの低下が発生する。とくに、バースト型のアクセスを行うイニシエータが存在する場合、一連のアクセス(バーストアクセス)の発生中は、送信経路上のリンクが過負荷となることで、リンクを共用する他のイニシエータの通信品質も低下させ、処理のリアルタイム性を阻害する。
ここでいう「バースト型のアクセス」または「バーストアクセス」とは、たとえば、一定数のアクセスを連続的に行った後に内部で計算処理を行い、再び一定数のアクセスを連続的に行う形態のアクセスである。図2は、メモリへのバーストアクセスの一例を示す。横軸が時間を表し、縦軸がメモリから読み出したデータ量(メモリアクセスの量)を示している。一定期間継続する一連のアクセスが発生した後、アクセスが一旦止まり、その後再び一定期間継続する一連のアクセスが発生していることが理解される。
特許文献1は、非同期的に動作する複数のイニシエータ間で通信バスを共用する場合のパケット送信の競合を回避する技術を開示する。イニシエータが通信バスをモニタすることで送信の競合を検出し、イニシエータ毎にランダムな待ち時間を設定して待機し、待ち時間の経過後に再び送信動作を行う。かかる動作により、各イニシエータは、自律的に送信パケットの競合を避けながら通信バスを共用することが可能となる。
また非特許文献1には、待機時間の計算方法が示されている。非特許文献1によれば、他のイニシエータとの競合を検出している時間が長いほど、待機時間も長くすることで、効率的に送信要求の競合を防ぐことが可能となる。
特開昭61−230444号公報 特公昭61−35575号公報
IEEE Std 802.3規格書(セクション4.2.3.2.5)
しかしながら、DSPは、映像信号や音声信号などの信号の処理をリアルタイムで行うことを想定して実装されるのが通常である。そのため、予め定められた処理期限までに必要量のデータアクセスを完了させる必要性がある。従来技術では、処理のリアルタイム性を確保することができなかった。その理由は、競合が繰り返し発生すると、従来技術では、待機時間の上限を切り上げながら、ランダムに待機時間を延ばしていくためである。
リアルタイム性を確保できなければ、たとえば表示のコマ落ち、音飛び、サービスの待ち時間の増加という形で、ユーザがその影響を被ることになる。従って、遅延は許容されるべきではない。
なお、上述した非特許文献1は、一般的なネットワークにおける伝送プロトコル技術に関している。一般的なネットワークの通信はベストエフォート型通信であり、遅延が許容される。したがって、一般的なネットワークの技術は、NoCに一律に適用することは困難である。
図3は、従来技術を適用した場合において、処理の締切時刻までに全てのアクセスが完了されない例を示す。図3に示されるイニシエータ1およびイニシエータ2は、ともにバーストアクセスを行うイニシエータであるとする。バーストアクセスを行う複数のイニシエータが競合する状況下では、図3に示すように、競合の繰返し発生による待機時間上限の切り上げが起こる。
いま、イニシエータ1およびイニシエータ2がともに時刻t0で同時にアクセス要求を開始すると仮定する。すなわち、最初のアクセス競合は時刻t0で発生する。このとき、イニシエータ1、イニシエータ2はそれぞれ上限をLとするランダムな待機時間を設定して競合回避を行う。イニシエータ1の待機時間のほうがイニシエータ2の待機時間よりも短かった場合、イニシエータ1がイニシエータ2より先に、バーストアクセスを再開させる。イニシエータ2の待機状態が時刻t1に解除されると、再び競合が発生する。このとき、イニシエータ2は連続した2回の競合を検出しているため、待機時間の上限は2倍に切り上げられる。その結果、再びイニシエータ1の待機時間上限のほうがイニシエータ2よりも短くなる。さらに、時刻t2にイニシエータ2の待機状態が解除されると、先にアクセスを再開させたイニシエータ1との間で再び競合が発生し、イニシエータ2は3回の競合を検出したため、待機時間の上限は4倍に切り上げられる。
従来の技術によれば、初回の競合で長時間待機したイニシエータ2が、その後の再競合でも不利となり、イニシエータ2のアクセスが再び開始される時刻は、時刻t3となる。時刻t3においては、イニシエータ1のアクセスは全て完了しているため、イニシエータ2のバーストアクセスが再開される。しかしながら、度重なる待機時間の延長により、図示されている処理の締切時刻までに全てのアクセスを完了するだけの時間的な余裕はもはや存在しない。このように従来技術では、処理期限内に全てのアクセスを完了することができず、信号処理の処理落ちが発生していた。そして処理のリアルタイム性を確保することもできなかった。
同一の処理完了時刻を有する複数パケットを非同期的に通信する半導体バスにおいて、複数パケットの送信間隔を適切に調整することにより、処理期限を守りながら、必要なアクセス量を最短時間で実行することのできる送信間隔制御方式を考える。各イニシエータは、処理完了期限Tb(サイクル)の間に、Np回のデータアクセスを完了させることで、処理のリアルタイム性を確保する必要がある。
隣接する各データアクセス間の間隔をGサイクルとし、1回の通信間隔の制御で調整される調整単位をK、処理完了期限迄に残されたサイクル数をRc、残されたデータアクセス数をRp、1パケットを転送するために要するサイクル数をNfとすると、各データアクセス毎の通信間隔Gは、数1で与えられる。
Figure 0005838367
数1によれば、現在時刻tと処理完了期限Tbとに基づいてリアルタイム性を確保しつつ通信間隔Gを適切に制御するためには、通信間隔の調整範囲の上限を計算する必要がある。よって、残サイクル数Rcを残アクセス数Rpで除する必要がある。
一般に、除算処理はハードウェアによる演算コストを増加させる。すなわち、除算処理には、加減算などと比較して多くのサイクル数が必要とされる。
そのため、除算実行に費やされるサイクル数により、通信間隔Gを制御できる最小間隔が制限されてしまい、実際のパケットサイズに合わせて最適なタイミングで通信間隔Gを更新できないという第一の課題があった。また除算実行に必要なサイクル数を短縮するためには、特許文献2に記載のように複雑な高速除算アルゴリズムの実行や大規模な除算結果のデータテーブルを保持することが必要となり、非常に大きなゲート数規模のハードウェア回路を要するという第二の課題があった。さらに、各データアクセスが処理されるタイミングはバスやターゲットの混み具合によって揺らぐため、通信間隔Gの制御を行う時点でのデータアクセス残数Rpの値を予測することは難しく、予測的に除算実行を行うことで高速化することができないという第三の課題があった。
本発明は上記課題に鑑みてなされたものであり、その目的は、予め定められた処理完了時刻を有する複数パケットを非同期的に通信する半導体バスにおいて、複数パケットの送信間隔を適切に調整することにより、処理期限を守りながら、必要なアクセス量を最短時間で実行することのできる送信間隔制御方式を提供することにある。
本発明による制御装置は、複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置であって、所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも1つのパケットを、バスに送信する送受信部とを備えている。
前記許容遅延演算部は、各々が所定の演算の実行に時間nを要する、並列的なN個の演算実行部と、前記バスに送信されるパケットの最小のサイズa、前記演算実行部の並列数Nおよび前記時間nに基づいて制御間隔pを計算する制御間隔決定部とを備えており、前記所定数は前記制御間隔pによって定められてもよい。
前記制御間隔決定部は、下記の式によって前記制御間隔pを決定してもよい。
Figure 0005838367
前記送信間隔決定部は、前記調整範囲情報に加えて、さらに前記バスの負荷Lの情報に基づいて各パケットの送信間隔を決定してもよい。
前記負荷Lが予め定められた値より大きいときは、前記送信間隔決定部は各パケットの送信間隔を拡大し、前記負荷Lが前記予め定められた値以下のときは、前記送信間隔決定部は各パケットの送信間隔を縮小してもよい。
前記バスには、他のイニシエータまたはターゲットが接続されており、前記送信間隔制御部は、アクセス要求を前記他のイニシエータまたは前記ターゲットに送信してから応答が帰ってくるまでの時間であるレイテンシを、前記送受信部を利用して求め、前記バスの負荷として利用してもよい。
本発明による方法は、複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置に並列的に設けられる演算回路の数Nを決定するための設計方法であって、前記制御装置は、所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも1つのパケットを、バスに送信する送受信部とを備えており、前記許容遅延演算部が、各々が所定の演算の実行に時間nを要する、並列的なN個の演算回路と、前記バスに送信されるパケットの最小のサイズa、前記演算回路の並列数Nおよび前記時間nに基づいて、前記所定数である制御間隔pを計算する制御間隔決定部とを備えるときにおいて、前記方法は、予め定められた制御間隔pの値を入力するステップと、予め定められた最小のサイズaの値および前記時間nの値を取得するステップと、下記の式によって、前記演算回路の並列数Nを決定するステップとを包含する。
Figure 0005838367
本発明によれば、同一の処理完了時刻を有する複数パケットを非同期的に通信する半導体バスにおいて、複数パケットの送信間隔を適切に調整することにより、フロー間の干渉を抑制し、システム全体としてのスループットとレイテンシを向上させることができる。また同時に処理完了時刻を守りながら、必要なアクセス量を最短時間で実行可能となるため、メディア処理などのアプリケーションのリアルタイム性を確保することが可能となる。また網の状態に応じた送信間隔の自動調整が働くため、設計フェーズにおける複雑なユースケースを用いた送信タイミングの設計評価のコストが削減できる。
イニシエータI1〜I4とターゲットT1〜T4との間のメインバスにNoCを適用した一般的な接続構成の例を示す図である。 メモリへのバーストアクセスの一例を示す図である。 従来技術を適用した場合において、処理の締切時刻までに全てのアクセスが完了されない例を示す図である。 NoCバスを有するSoC100の構成例を示す図である。 DMACが生成した要求トランザクション10のデータ構造の例を示す図である。 NIC1によってパケットヘッダPHが付加されてパケット化された要求トランザクション12を示す図である。 NIC5がMEM1から受け取った返信トランザクション14のデータ構造の一例を示す図である。 パケット化された返信トランザクション16および18のデータ構造の一例を示す図である。 典型的なバーストアクセス例を示す図である。 DMAC、ENC、DECが同時にMEM1に対してアクセス要求を行った場合に、DMACのアクセス遅延例を示す図である。 DMAC、ENC、DECが送信間隔を調整しながらMEM1に対してアクセス要求を行った場合の、DMACのアクセス遅延例を示す図である。 イニシエータ側のNIC120の基本的な構成を示す図である。 送信間隔制御部125の基本構成を示す図である。 イニシエータ側のNIC120の処理の手順を示すフローチャートである。 許容遅延演算部131の基本構成を示す図である。 制御間隔決定部144の処理の手順を示すフローチャートである。 送信間隔制御部125が管理するパラメータを記録するためのレジスタ群の例を示す図である。 送信間隔制御部125の処理の手順を示すフローチャートである。 バーストアクセスの種類を示す図である。 イニシエータからのデータアクセスの最小パケットサイズが9フリットであるとしたときのタイミング図である。 新たにイニシエータからパケットサイズが7フリットのデータアクセスが発生したとしたときのタイミング図である。 演算回路を2つの回路A及び回路Bを用いて並列化することにより、調整範囲を制限時間内に算出可能にしたときのタイミング図である。 並列数N=3、最小パケットサイズa=2、除算回路の演算に要するサイクル数n=9のときのタイミング図である。 図23に示す条件下で動作中に、イニシエータが送信する最小パケットサイズが2フリット(a=2)から4フリット(a=4)に変更されたときのタイミング図である。 送信間隔制御を行わない場合のパケットのレイテンシの結果を示す図である。 本発明の実施形態による送信間隔制御を行った場合のパケットのレイテンシの結果を示す図である。
以下、添付の図面を参照しながら、本発明による送信間隔制御装置の実施形態を説明する。以下の実施形態においては、携帯電話やAV機器に組み込まれるSoCのメインバスとしてNoCを使用する例を挙げて、送信間隔制御装置を説明する。
(実施形態1)
まず、回路網の構成を説明する。図4は、NoCバスを有するSoC100の構成例を示す。SoC100は、たとえば携帯電話やAV機器に組み込まれる。図4においては、最上段に記載されたイニシエータから、最下段に記載されたターゲットにデータが伝送される。または、当該イニシエータからの読み出し要求に応答して、ターゲットからイニシエータにデータが伝送される。
図4にはバスのイニシエータおよびターゲットの一例が示されている。すなわちバスのイニシエータとして、画面への表示処理を行うDMAC(Direct Memory Access Controller)、映像信号のMPEG(Motion Picture Expert Group)符号化を行うENC(Encoder)、映像信号のMPEG復号化を行うDEC(Decoder)、ウェブブラウザやユーザインタフェース処理などを行うCPU(Central Processing Unit)が含まれる。またターゲットとして、外部のDRAM1〜DRAM4(図示せず)に接続されたメモリコントローラMEM1(Memory Controller 1)からMEM4(Memory Controller 4)が含まれる。
各イニシエータおよび各ターゲットは、ネットワーク・インタフェース・コントローラNICn(n:1〜8の整数)と接続されている。そして、複数のネットワーク・インタフェース・コントローラの間は、ルータRk(k:1〜4の整数)によって接続されている。これにより、各イニシエータおよび各ターゲットが相互に通信可能に接続される。
以下では、SoC100におけるデータの基本的な処理およびデータの流れを概説する。
イニシエータは、まずターゲットへのアクセス要求である要求トランザクションを生成し、自身と接続されたNICx(x:1〜4の整数)に出力する。
イニシエータから要求トランザクションを受け取ったNICxは、受け取った要求トランザクションをパケット化し、ルータR1〜R4同士の接続によって構成されるネットワークバスに送出する。
メモリコントローラMEMy(y:1〜4の整数)に接続されたNIC(y+4)は、ルータR1〜R4を介してイニシエータ側から伝送されてきたパケットを受信し、そのパケットからイニシエータの要求トランザクションを構成する。そして当該NIC(y+4)は、得られた要求トランザクションを、自身と接続されたメモリコントローラMEMyに転送する。メモリコントローラMEMyは、要求トランザクションに従ってDRAMyへデータを書き込み(データライト)、または、DRAMyに格納されたデータを読み出す(データリード)。その結果は、そのメモリコントローラMEMyからNIC(y+4)に渡される。
メモリコントローラMEMyに接続されたNIC(y+4)は、メモリコントローラMEMyがDRAMyにリードまたはライトすることによって得られた結果である返信トランザクションをパケット化し、ルータRk(k:1〜4の整数)で構成されるネットワークバス上に送出する。
そしてイニシエータに接続されたNICxは、ターゲットから送られた返信パケットを受け取って脱パケット化し、返信トランザクションを構成して、アクセス結果としてイニシエータに通知する。
次に、上述の要求トランザクションおよび返信トランザクションの具体例を説明する。ここでは、DMACが要求トランザクション10を送信して、MEM1に格納されたデータを読み出す例を説明する。
図5は、DMACが生成した要求トランザクション10のデータ構造の例を示す。要求トランザクション10は、R/Wフィールド、ADDRフィールドおよびSIZEフィールドを有している。図5ではそれぞれ「R/W」、「ADDR」、「SIZE」と示されている。以下の図6〜8でも同様に記載する。
R/Wフィールドにはメモリからの読み出し動作を行うことを示す命令が記述される。ADDRフィールドにはデータの読み出しを行うDRAMのアドレスが記述される。またSIZEフィールドで読み出すべきデータのサイズが指定されている。
図6は、NIC1によってパケットヘッダPHが付加されてパケット化された要求トランザクション12を示している。パケットヘッダPHには、要求元(その要求を送信したイニシエータ)としてNIC1のノードのIDが格納される。またパケットヘッダPHには、要求の宛先としてNIC5のノードのIDが格納される。NIC5は、パケット化された要求トランザクション12からパケットヘッダを除去する処理(脱パケット化処理)を行って図5に示した要求トランザクション10を再構成し、その要求トランザクション10をMEM1に転送する。
MEM1は、要求トランザクション10に記述されたR/Wフィールドに基づいて読み出し動作であることを特定する。さらにMEM1は、ADDRフィールドおよびSIZEフィールドを読み取り、ADDRフィールドに指定されたDRAM上の番地から、SIZEフィールドに指定されたサイズのデータを読み出す。その後MEM1は、読み出した結果得られたデータを、NIC5に出力する。
図7は、NIC5がMEM1から受け取った返信トランザクション14のデータ構造の一例を示す。NIC5は返信トランザクションをパケット化し、ネットワークバスに転送する。
図8は、パケット化された返信トランザクション16および18のデータ構造の一例を示す。返信トランザクション16は、取得したデータにパケットヘッダPHを付して生成される。なお、返信するデータのサイズが大きい場合には、複数のパケットに分けて返信されてもよい。1つの返信パケット16または複数の返信パケット18を受け取った後、NIC1は、返信パケット16または18を脱パケット化処理することにより、図7に示す返信トランザクション14を再構築する。NIC1は、そのデータをDMACに転送することで、DMACのメモリアクセスが完了する。
次に、本実施形態によるSoC100の動作を説明する。
以下では、イニシエータであるDMACが映像を画面(図示せず)表示する処理を行うとする。ただし、SoC100上ではDMACのみが動作するのではなく、ENC、DEC、CPUも並列的に動作しつつ、データの授受を行う状況を想定する。
本実施形態では、DMACは画面への表示処理を行うため、表示画面のコマ落ちやフリーズの発生により製品のユーザ価値を低下させないためには、メモリアクセス時のレイテンシへの要求が厳しく、リアルタイム性の確保が重要となる。
一方、MPEGに代表される映像や音声の符号化と復号化のアルゴリズムを実行するENC及びDECは、その信号処理の過程で、バースト的なアクセスを発生させる。図9は、典型的なバーストアクセスの様子を示した例である。図9中の"Tb"はバーストが発生する周期である。MPEGのマクロブロック単位で信号処理を行うコーデックであれば、Tbは1マクロブロック時間に相当するサイクル数で表される。"Np"は1回のバーストで発生するアクセスの回数である。Npはバーストアクセスの開始に先立って、コーデックの処理アルゴリズムにより決定される。
またCPUは、ユーザとのインタラクション処理やインターネットのブラウジング処理などに用いられる。アクセスが発生するタイミングやアクセス量を事前に見積もることは困難であるが、他のイニシエータと比較すると、CPUの処理に関してはリアルタイム性に対する要求は厳しくない。
ネットワークバスを構成するルータは、パケットヘッダに格納された宛先に従って出力ポートを決定し、パケットの転送を行っていく。1パケットを転送するために必要なサイクル数Tpは、内部のハードウェア構成とパケットサイズとによって異なる。
図10は、DMAC、ENC、DECが同時にMEM1に対してアクセス要求を行った場合に、DMACのアクセスが遅延する様子を示す。図面の上からENC、DEC、DMAC、R1およびR3がパケットを出力していること、および、パケットを出力した時刻(サイクル)が示されている。なお図中で各パケットに振られた番号は、パケットを区別するための番号であり、説明の都合上付加したものに過ぎない。
図10の例では、ENCとDECが同一のタイミングでパケット1とパケット2のデータを送信し、続くサイクルでパケット3とパケット4を送信し、続くサイクルでパケット5とパケット6を送信している。そして、パケット5および6が出力されたタイミングと同一のタイミングでDMACがパケット7を送信している。
以下の説明では、ルータR1およびR3は、ENC、DECからの送信パケットとの干渉待合が発生しなければ、1パケットの転送に1サイクルを要すると仮定する。つまり、DMACから出力されたパケット7は2サイクル後に、MEM1に到着するものとする。
ENCとDMACが送信したパケットは、1サイクル後にルータR1に受信され、後段のルータR3へと中継される。一方、ENCからのパケット5の送信と同時にDMACから送信されたパケット7は、ENCからのパケット5と同時にルータR1を通過できない。そこで、たとえばパケット7はパケット5の後に中継される。このときパケット7には1サイクルの遅延が発生することになる。
一方、DECは、ENCの送信開始のタイミングと同一のタイミングでパケット2、パケット4、パケット6を順に送信している。パケット2、4、6はルータR2を経由してルータR3に送信される。ルータR3は、ルータR1の中継パケットと共にパケット2、4、6を中継する。ルータR3は、ルータR1からのパケットと、DECからのパケットを交互に出力する。
図10のルータR3のパケット出力タイミングによれば、ルータR3によって中継され、MEM1に到着するパケット7には、最速でMEM1に到達する2サイクルを基準として、4サイクル分の遅延が発生していることが分かる。この遅延はルータ網上でのパケット競合に起因している。したがって、ネットワークバスの段数が増えると遅延は更に大きくなり、DMACのメモリアクセスのレイテンシが許容時間を超える状況が発生する。
一方、図11は、DMAC、ENC、DECが送信間隔を調整しながらMEM1に対してアクセス要求を行った場合の、DMACのアクセスが遅延する様子を示す。図11に示すように、DMAC、ENC、DECが送信間隔を調整するとDMACのレイテンシは大幅に短縮される。ENCおよびDECは送信パケット間隔を空けてパケット1〜6を送信している。一方、DMACは、ENCおよびDECからパケットが送信されていないタイミングでパケット7を送信している。DMACが送信したパケット7は、ENCとDECからの送信パケットの間の空きサイクルを利用して最短のレイテンシである2サイクルでMEM1に到着している。
本実施形態では、ENC、DECは、アクセス負荷の状態とアクセスの進捗度合いを用いて動的にパケットの送信間隔を決定する。決定のタイミングは送信間隔の算出演算に要するサイクル数と演算ハードウェア資源及び稼働中のアクセスフローによって規定される最小のパケット転送サイクル数によって決定される。
図12は、イニシエータ側のNIC120の基本的な構成を示す。NIC120は、たとえば図4のNIC1〜4である。なお、以下に説明する機能に鑑みて、NIC120は「送信間隔制御装置」と呼ぶこともある。
NIC120は、パケット化部121と、脱パケット化部122と、パケットバッファ123と、パケット送受信部124と、送信間隔制御部125とを備えている。
パケット化部121は、イニシエータから送信されたデータを受け取り、そのデータにパケットヘッダを付加し、パケット化する。たとえば、パケット化部121は、イニシエータから送信された要求トランザクション10(図5)を受け取り、パケットヘッダPHを付加してパケット化された要求トランザクション12(図6)を生成する。この処理はパケット化処理とも呼ばれる。
脱パケット化部122は、パケット化部121の処理と逆の処理を行う。すなわち、脱パケット化部122は、ルータから受け取ったパケットからパケットヘッダを除去する。この処理は脱パケット化処理とも呼ばれる。
パケットバッファ123は、パケットを一時的に格納するために設けられたバッファである。
パケット送受信部124は、パケットの送受信に関連する処理を行う。パケットの送信時には、パケット送受信部124は、パケットバッファ123に格納されたパケットデータを送信データバス幅ごとに読み出して、パケットの送信処理を行う。パケットの受信時には、パケット送受信部124は、受信データバス幅毎に受信されたデータをパケットバッファ123に格納していくことでパケットを再構築する。
送信間隔制御部125の詳細は図13を参照しながら後に詳細に説明する。
パケット化部121、脱パケット化部122、パケットバッファ123およびパケット送受信部124は、一般的なNICに存在する機能である。これらの構成要素に基づくNIC120の処理を概説する。
パケット送信時の処理は以下のとおりである。パケット化部121はイニシエータからデータを受け取り、そのデータにパケットヘッダを付加してパケット化処理を行う。パケットバッファ123はそのパケットを一時的に格納する。パケット送受信部124はパケットバッファ123に保持されたパケットデータを送信データバス幅ごとに読み出してパケットの送信処理を行う。
パケットの受信時の処理は以下のとおりである。パケット送受信部124は受信データバス幅毎にデータを受信し、パケットバッファ123に格納する、これにより、パケットが再構築される。脱パケット化部122は、得られたパケットからパケットヘッダを除去し、残されたデータをイニシエータに出力する。
次に、送信間隔制御部125を説明する。
送信間隔制御部125は、本実施形態にかかるNIC120に固有の機能要素である。
図13は送信間隔制御部125の基本構成を示す。送信間隔制御部125は、許容遅延演算部131と、調整方法選択部132と、送信間隔決定部133とを有している。
許容遅延演算部131は、バーストアクセスの進捗情報に基づいて、リアルタイム性が確保可能な通信間隔の調整範囲(許容遅延量)を演算する。進捗情報は、許容遅延演算部131が保持する情報である。具体的には、進捗情報は、バーストアクセスの残数(アクセス残数)である。以下では主として「アクセス残数」という語を用いて説明する。
調整方法選択部132は、負荷情報に基づいて通信間隔の調整方法を選択し、間隔制御情報を生成する。
送信間隔決定部133は、調整範囲情報と間隔制御情報に基づいて通信間隔を決定し、データの送信許可情報を生成する。
ここで、送信間隔制御部125を含む、イニシエータ側のNIC120の処理の概要を説明する。
図14は、イニシエータ側のNIC120の処理の手順を示すフローチャートである。
ステップS100において、送信間隔制御部125は、最小パケットサイズaを示す情報を取得する。最小パケットサイズとは、データアクセスのためにターゲットに送信されるパケットの最小のサイズをいう。最小パケットサイズaは、データアクセスの種類やターゲットに応じて変動し得る。
ステップS102において、許容遅延演算部131は、最小パケットサイズa、許容遅延演算部131に設けられた除算回路の並列数Nおよび各除算回路が演算に要するサイクル数nに基づいて、制御間隔pを演算する。なお、並列数Nおよびサイクル数nは、後に図15を参照しながら説明するように許容遅延演算部131内に保持されている。
ステップS104において、許容遅延演算部131は、制御間隔pに基づくタイミングで、許容遅延Iを求める。この「制御間隔pに基づくタイミング」とは、p個のパケットを送信する毎に、という意味である。求められた許容遅延Iはパケット送信の遅延をどの程度許容できるかを示す調整範囲情報として利用される。
調整範囲情報が得られると、送信間隔決定部133はステップS106の処理を実行する。ステップS106において、送信間隔決定部133は、調整範囲情報およびネットワークバスの負荷(レイテンシ)の情報を受け取る。そして、調整範囲および負荷(レイテンシ)に応じてパケットの送信間隔を調整する。パケットの送信間隔に合致する場合には、送信間隔決定部133は、イニシエータからのデータ(アクセス要求に対応する要求トランザクション)の送信を許可するか禁止するかを決定し、その結果を示す情報を出力する。
ステップS108において、パケット化部121は、データの送信を許可されたイニシエータからデータを受け取り、パケット化する。
そしてステップS110において、パケット送受信部124は、生成されたパケットを送信する。
ステップS104からS110までの処理を具体的に説明すると以下のとおりである。
たとえば、制御間隔pに基づくタイミングで求められた許容遅延Iが負であるとする。これは、遅延は許容されないことを意味する。このとき、パケットの転送サイクルが完了する度に送信間隔決定部133はイニシエータからのデータの送信を許可し(ステップS108)、パケット送受信部124は、遅延なく次のデータ(パケット)を送信する(ステップS110)。
一方、許容遅延Iが0以上であるときは、調整方法選択部132はその時点でのネットワークバスの負荷(レイテンシ)に応じてパケットの通信間隔を決定する。負荷が比較的大きければ、ネットワークバスが混雑しているため、パケットの送信間隔を拡大する。一方、負荷が比較的小さければ、ネットワークバスは混雑していないため、パケットの送信間隔を縮小する。決定された通信間隔に応じて、送信間隔決定部133はデータの送信を許可または禁止する情報をイニシエータに出力する。
上述の説明から理解されるように、制御間隔pは、許容遅延Iを再計算するタイミングを示している。許容遅延Iが得られると、パケットの送信間隔を調整する処理が行われる。よって、制御間隔pは、パケットの送信間隔を調整するためのパラメータであるといえる。
図15は、許容遅延演算部131の基本構成を示す。許容遅延演算部131は、演算実行部141と、演算結果格納部142と、許容遅延算出部143と、制御間隔決定部144とを有している。
演算実行部141は、サイクル数を要する除算実行を予測的に並列処理する。本実施形態では、演算実行部141が並列的に設けられることを想定している。並列的に設けられる演算実行部141の数は、後に「N」という記号で表される。
演算結果格納部142は、演算結果を送信間隔の算出時点まで記憶する。
許容遅延算出部143は、送信間隔の調整範囲情報を算出する。
制御間隔決定部144は、イニシエータからアクセスされる最小のパケットサイズ、演算実行部の演算に費やされる処理サイクル数及びハードウェアの並列処理可能数から最適な制御間隔を決定する。
以下、図16を参照しながら、制御間隔決定部144の処理を説明する。
図16は、制御間隔決定部144の処理の手順を示すフローチャートである。
ステップS200において、制御間隔決定部144は制御間隔pを更新するか否かを判断する。最小パケットサイズaが変更された場合は、制御間隔決定部144は制御間隔pを更新すると判断する。更新すると判断しない場合には、制御間隔決定部144は次の処理に進まない。
なお、最小パケットサイズaを示す情報は、NIC120上のレジスタ(図示せず)に保持されている。最小パケットサイズaが変更されたか否かは、制御間隔決定部144が当該レジスタをモニタして検出すればよい。
ステップS202において、制御間隔決定部144は、後述する数8に示す天井関数を用いて、制御間隔pを求める。
ステップS204において、制御間隔決定部144は、求めた制御間隔pを内部メモリまたはレジスタ(図示せず)に保持する。
図17は、送信間隔制御部125が管理するパラメータを記録するためのレジスタ群の例を示す。以下、各レジスタに設定されるパラメータの意味を説明する。
Tbはバーストアクセスが発生する周期であり、Tpはトランザクションの転送に要するサイクル数である。たとえば、128バイトのトランザクションを64ビットバスで送信する場合であれば、サイクル数128/64*8=16サイクルとなる。
Npは単一のバースト周期内に生成されるアクセスの回数である。Sbはバースト周期の開始時刻のサイクル数を格納するためのレジスタであり、Rpはバースト周期内に生成されるべきアクセス数Npから既に生成されたアクセス数を差し引いたアクセスの残数である。RcはRp回のアクセスを完了するまでに残されたサイクル残数である。またGは次回のアクセスまでの送信間隔であり、Lは直近のレイテンシである。
パラメータTb、Tp、Npは、イニシエータから要求されるメモリアクセス特性を決定する。これらは、メモリへのアクセス開始に先立ってイニシエータによって各レジスタ上で初期化される。またパラメータSb、Rp、Rc、G、Lは、送信間隔制御部125が管理する内部パラメータを記録するために用いられる。チップの電源投入時またはリセット時に各レジスタ上でゼロクリアされる。また以下の説明で登場するTcは、サイクルカウンタの現在値であり、システム上での現在時刻を表す。サイクルカウンタは、チップの電源投入時またはリセット時にゼロにクリアされ、1クロックサイクル毎にインクリメントされるnビットのカウンタで良い。
以下、送信間隔制御部125の動作を説明する。
図18は、送信間隔制御部125の処理の手順を示すフローチャートである。この処理は、バーストアクセス区間中のアクセス要求毎に繰り返される。
まず、イニシエータからターゲットへのアクセス要求が発生し、NIC120がトランザクションを受け取ったことを、送信間隔制御部133が検出すると、処理が開始される。たとえば送信間隔制御部133は、パケットバッファ123(図12)をモニタしている。送信間隔制御部133は、トランザクションのデータの存在を検出することにより、上述のアクセス要求およびトランザクションの受信を検出する。または、送信間隔制御部133がパケット送受信部124またはパケット化部121から通知を受けることにより、上述の検出を行ってもよい。
上述のようにアクセス要求が検出されると処理が開始される。
ステップS2において、送信間隔制御部133は、アクセス残数レジスタRpを読み出す。アクセス残数レジスタRpがRp=0のときは処理はステップS4に進み、Rp=1のときは処理はステップS8に進み、Rpの値がそれら以外のときは処理はステップS6に進む。このように処理をアクセス残数レジスタRpの値に応じて変えている理由は、バーストアクセスの種類に応じて適切な処理を行うためである。
図19は、バーストアクセスの種類を示している。図19に示すように、Rp=0の場合には、バースト周期内での先頭アクセスであることを意味する。またRp=1の場合には、バースト周期内での最後尾(最終の)アクセスであることを意味する。Rpの値がそれら以外の場合には、バースト中のアクセス(中間アクセス)であることを意味する。適切な動作になるよう、本実施形態においてはそれぞれの場合で各部の行う処理内容を異ならせている。
再び図17を参照する。ステップS4は先頭アクセスの場合の処理である。許容遅延演算部131は、数2〜数5に従い、関連パラメータの初期化処理を行う。
Figure 0005838367
Figure 0005838367
Figure 0005838367
Figure 0005838367
数4におけるTb’はバースト周期Tbから時間余裕として確保するべきマージン量を差し引いた値である。イニシエータは、バースト周期内の全てのアクセスを完了した後にデータ処理を行うための時間マージンを必要とする。確保するべき時間マージンを決定する主な要因はその処理に要する最大のサイクル数である。データ格納用のメモリ領域とデータ処理用のメモリ領域が分離されているようなプログラムでは、Tb’およびTbを同じ値にすることができる。
ステップS4の処理が完了すると、処理はステップS32に進む。
次に、ステップS6の処理を説明する。ステップS6は中間アクセスの場合の処理である。
ステップS6において許容遅延演算部131は、数6に従い、サイクル残数Rcを更新する。
Figure 0005838367
さらにステップS10において許容遅延演算部131は、数7に従い、許容遅延(または調整範囲)Iを計算する。
Figure 0005838367
許容遅延演算部131は、許容遅延Iの値を調整範囲情報として調整方法選択部132および送信間隔決定部133に通知する。
許容遅延Iの値の計算は、大きく2つのフェーズに分離できる。第一のフェーズは1/Rpを算出するフェーズであり、第二のフェーズは、積和演算により許容遅延Iを算出するフェーズである。言うまでもなく、演算コストに関しては除算演算を含む第一のフェーズの方が高い。本実施形態では、第一のフェーズに要するサイクル数を9サイクル、第二のフェーズに要するサイクル数を2サイクルとして説明する。第一のフェーズは演算実行部141によって実行され、第二のフェーズは許容遅延算出部143によって実行される。
続いて、図20〜図24を参照する。これらの図面の説明に関連して、以下では「フリット」という概念を用いる。「1フリット」は、1バスクロック毎に転送が可能なデータの伝送単位である。1フリットのサイズは、1パケットのサイズ以下である。本実施形態では、1パケットは、複数のフリットに分割されて伝送されるとする。
なお、パケットサイズは、1パケットを転送するのに要するサイクル数と比例している。当該サイクル数が決まれば、1フリットのデータサイズとサイクル数との積によってパケットサイズを求めることができる。
図20は、イニシエータからのデータアクセスの最小パケットサイズが9フリットであるとしたときのタイミング図を示す。最上段の矩形波形はバスクロックの状態を示す。最上段に添えて記載されている記号tは、1バスクロック(1サイクル)を単位時間としたときの経過時間を示す。
二段目の各矩形はフリットを示している。各矩形には、たとえば「P0」、「F0」のような、PおよびFを用いた記号が示されている。1つのフリット内のPおよびFを、本明細書では便宜的に「P−F」のようにハイフンでつなげて表記する。たとえば最初のフリットは「P0−F0」のように表記する。
P0−F0は、0番目のパケット(パケット0)を構成する0番目のフリット(パケット0のヘッダフリット)、P0−F8は0番目のパケットの9番目のフリット(パケット0のトレイラーフリット)を示す。次のパケット1(P1)の送信が開始されるタイミングは、最短でt=10であることが分かる。したがって、t=10の時点で許容遅延Iの更新が完了していることが必要になる。
最下段は、演算等の処理に要する時間(サイクル)である。第一のフェーズである除算演算はt=8のタイミングで完了するよう、t=−1の時点において予測的に開始される。その後、第二のフェーズで積和演算が実行され、許容遅延Iが算出される。第二のフェーズである積和演算の完了は、許容遅延Iの算出完了(更新)を意味する。許容遅延Iの算出はt=10で完了する。よって、続くパケット1(P1)の送信間隔を決定するための調整範囲を制限時間内に算出できている。
続くパケット2(P2)の送信間隔を決定するための演算が開始される。パケット2が送信されるタイミングは、最短でt=19である。第一のフェーズである除算はt=8からt=17のサイクル期間中に実行され、第二のフェーズで2サイクルを消費した後、t=19で許容遅延Iを更新する。このような演算サイクルを確保できれば、続くパケット3の送信間隔を決定するための許容遅延(調整範囲)を制限時間内に算出することが可能である。
図21は、新たにイニシエータからパケットサイズが7フリットのデータアクセスが発生したとしたときのタイミング図を示す。パケット2(P2)に対する第一の演算フェーズはt=8のタイミングで完了し、第二のフェーズはt=10に完了する。よって、続くパケット2(P2)の送信間隔を決定するための調整範囲Iを、制限時間内に算出できているといえる。
しかしながら、パケットサイズが7フリットであるために、パケット3(P3)の送信タイミングは最短でt=17となる。第一の演算フェーズはt=17で完了するが、第二のフェーズが完了までにはさらに2サイクルかかり、処理遅延が生じる。よって、パケット3の送信が開始される最短タイミングまでには許容遅延Iの値を算出できず、リアルタイム性が確保できなくなってしまう。この例によれば、調整範囲Iを制限時間内に算出できるかどうかは、パケットサイズに依存することが分かる。
図22は、演算回路を2つの回路A及び回路Bを用いて並列化することにより、調整範囲を制限時間内に算出可能にしたときのタイミング図を示す。パケットサイズは図21の例と同じく、7フリットである。この構成例は、図15の演算実行部141の並列数が2のときの構成に対応する。
回路Aがt=8まで1/Rpの予測演算を行い、t=10で調整範囲Iを更新する間に、並列化された回路Bがt=6からt=17の間、1/Rpの予測演算を行い、調整範囲Iを更新する。このように第一の演算フェーズを実行する除算回路を2並列化することで、許容遅延Iの算出タイミングに遅延を生じず、リアルタイム性を確保できるようになる。この例によれば、調整範囲Iを制限時間内に算出できるかどうかは、演算回路が並列化されているか否かに依存することが分かる。
ここで、新たにイニシエータから1パケットが4フリットで構成されるデータのアクセスが発生した場合を考える。この場合、図22のような、並列化された演算回路が2つ設けられていたとしても、リアルタイム性を守ることができない。
このようなデータアクセスが発生し得る場合には、第一の演算フェーズを実行する除算回路の更なる並列化を必要とする。これは結果として、回路面積を増大させてしまう。しかしながら、NoCが実装される製品の仕様によっては、演算回路の更なる並列化が許容される場合も考えられる。
そこで本実施形態では、回路面積制約を受けつつも実装された、第一のフェーズを実行する除算回路の並列数Nに合わせて、調整範囲Iの更新間隔pを、イニシエータが送信する最小パケットサイズaに応じて制御する構成を示す。これにより、リアルタイム性を確保することが可能になる。各除算回路の演算に要するサイクル数はnとする。
図23は、並列数N=3、最小パケットサイズa=2、除算回路の演算に要するサイクル数n=9のときのタイミング図を示す。このとき、制御間隔決定部144は、制御間隔pを、天井関数を用いた以下の式により決定する。
Figure 0005838367
天井関数は、実数xに対してx以上の最小の整数を与える関数である。上述の条件下では、n/Naは1.5であるため、制御間隔pは2と算出される。このとき、送信間隔制御部125は、パケットバッファ123を監視し、2つのパケットが送信される度に、送信間隔を更新する。なお図23では、予測演算の開始を2つ目のパケットを構成する2つのフリットのうち、最初のフリットが送信された時点で予測演算を開始している。このように許容遅延Iを一定のパケット数送信毎に更新し、その許容遅延Iを用いて送信間隔の拡大や縮小を制御する(図18)。これにより、アクセス残数Rpは単調減少となり、1/Rpを予測的に演算することが可能となる。
図24は、たとえば図23に示す条件下で動作中に、イニシエータが送信する最小パケットサイズが2フリット(a=2)から4フリット(a=4)に変更されたときのタイミング図を示す。
一般にN、a、nの値はNIC上のレジスタ等に格納される。イニシエータは最小パケットサイズに変更が生じた際に、レジスタを更新する。これにより、送信間隔制御部144は、上述の条件の変更に関する通知をイニシエータまたはNICから受けることができる。
送信間隔制御部144は、aの値を格納するレジスタが変更を受けたことを検出すると、または、変更されたとの通知を受信すると、再度(数8)によって、制御間隔pを再計算して更新する。このとき、p=1となるため、1パケット毎に送信間隔が再計算されており、バスの混雑状態への追従性が向上する。このように実装上限られた並列処理数の演算回路を用いて、最も追従性の良い制御間隔を動的に計算することで、リアルタイム性を確保する上で、効率の良い制御を実現可能となる。
再び図17を参照する。ステップS12において調整方法選択部132は、調整範囲情報のIの値が非負か負かを判定する。非負の場合には処理はステップS14に進み、負の場合には処理はステップS16に進む。
ステップS14において、許容遅延演算部131は、現在のネットワークバスの負荷状況を推定するため、負荷情報を取得する。負荷の把握に利用する情報として、直近のトランザクション処理に要したレイテンシの値Lを用いることができる。レイテンシは、要求を出してから応答が帰ってくるまでの時間である。
レイテンシの値Lの具体的な求め方の一例は以下のとおりである。まず、パケット送受信部124は要求トランザクションをネットワークバスに送出する時点におけるサイクルカウンタTcの値をパケットヘッダ内に記録しておく。ターゲット側のNICは返信トランザクションを送出する際に、先に受信していたパケットのパケットヘッダ内に記録されていたサイクルカウンタの値を、送出しようとする返信トランザクションのパケットのパケットヘッダ内に記録(コピー)する。そして許容遅延演算部131は、イニシエータ側のNICに返信トランザクションのパケットが到着した時点でのサイクルカウンタの値を、コピーされたサイクルカウンタの値(=要求トランザクション送出時点でのサイクルカウンタの値)から差し引くことによって求めてもよい。
上述の説明では、イニシエータ側のNIC120が要求トランザクションをネットワークバスに送出する時点を起点とし、その起点からの経過時間をレイテンシとして計測した。しかしながら、たとえばイニシエータからの要求トランザクションの受信時を起点とし、当該イニシエータが要求を出してから応答が帰ってくるまでの時間をレイテンシとして計測してもよい。
また、複数のイニシエータが相互に直接通信する場合も想定され得る。その場合には、イニシエータからの要求トランザクションの受信時を起点とし、当該イニシエータが他のイニシエータに要求を出してから応答が帰ってくるまでの時間をレイテンシとして計測してもよい。
次のステップS18において、調整方法選択部132は、算出したレイテンシの値Lの値を予め設定された閾値L1およびL2(L1<L2)とを比較し、調整方法を選択する。L>L2に該当するときは、負荷が大きい、つまり伝送されているパケット数が多いことを意味する。よって、送信間隔を増加させ、パケットの密度を減少させる必要がある。一方、L≦L1に該当するときは、負荷が小さい、つまり伝送されているパケット数が少ないことを意味する。このときは、送信間隔を縮小させ、パケットの密度を増加させることができる。L2>L≧L1に該当するときは、負荷が中程度であると言える。
L2>L≧L1の場合には、処理はステップS20に進み、送信間隔決定部133は、段階的に送信間隔を拡大する調整を行う。送信間隔Gは、G+K1により求められる。
K1は段階調整幅であり、数9のように定義する。
Figure 0005838367
この定義によると、バースト周期内でデータ送信を行うサイクルの割合が小さいイニシエータほど、送信間隔の調整幅は大きくすることができる。なお、kは調整パラメータであり、シミュレーションなどにより決定される定数である。
数8をより詳しく説明する。数8に含まれる(Np・Tp)は、単一のバースト周期内に生成されるアクセス回数Npと1パケットを転送するために必要なサイクル数Tpとの積であるから、1バースト周期内において必要とされるサイクル数である。よって、バースト周期Tbを(Np・Tp)で除算すると、バーストアクセス期間中における、1サイクル当たりの時間長が得られる。本願明細書では、このように得られた値を「バーストアクセスの密度」と呼ぶ。数8のK1は、当該バーストアクセスの密度に調整パラメータkを乗じて得られる値であり、バーストアクセスの密度に応じた値である。
L≦L1の場合には、処理はステップS22に進み、送信間隔決定部133は、段階的に送信間隔を縮小する調整を行う。送信間隔Gは、G−K2により求められる。
K2は段階調整幅であり、K2=1としてもよいし、数8のK1をK2としてK1と同じように定義してもよい。
そしてL>L2の場合には、処理はステップS24に進み、調整方法選択部132は、非段階的に送信間隔を拡大する調整を行う。
ステップS24においては、送信間隔決定部133は、数9に従い、送信間隔Gを更新する。
Figure 0005838367
なお図17のステップS24では、a=0と表している。
非段階的な調整は、必須ではないが、段階的な調整でレイテンシが改善しないような過負荷な状態から、速やかに脱却できる可能性がある。aは乱数の発生区間の下限であり、a=I/2などとしてもよいし、a=K1などとしてもよい。また乱数の確率分布は一様分布を用いてもよい。
調整方法選択部132は、決定された調整方法を間隔制御情報として、送信間隔決定部133に通知する。その後、処理はステップS26およびS28に進む。
ステップS26において、送信間隔決定部133は送信間隔Gと許容遅延Iとを比較する。送信間隔Gが許容遅延Iより小さいときには、ステップS30に進み、その送信間隔Gを記録する。送信間隔Gが許容遅延I以上のときには、ステップS28に進み、許容遅延Iをその送信間隔Gとして設定する。そしてステップS30において、その送信間隔Gを記録する。
なお、この例においては閾値L1およびL2を2つ設けたが、これは一例である。閾値はL1のみであってもよい。このときは、L>L1の場合には、段階的に送信間隔を拡大する調整を行い、L≦L1の場合には、段階的に送信間隔を縮小する調整を行ってもよい。
このとき、送信間隔Gは以下の処理により求めることができる。
まず段階的に送信間隔を拡大する場合(L>L1)には、送信間隔決定部133は、数10に従い、送信間隔Gを更新する。
Figure 0005838367
K1は上述の数9に示す通りである。
また、段階的に送信間隔を縮小する場合(L≦L1)には、送信間隔決定部133は、数12に従い、送信間隔Gを更新する。
Figure 0005838367
K2=1としてもよいし、数9のように定義してもよい。
なお、数11および数12の”min”は、図17のステップS26およびS28の処理を包含していることに留意されたい。
送信間隔決定部133は、内部にデクリメントカウンタを持ち、デクリメントカウンタの保持する値が、ゼロの場合だけ、送信許可信号をアサート(Assert)して、イニシエータが要求トランザクションを発行可能な状態にする。デクリメントカウンタにゼロ以外の値が書き込まれると、送信許可信号はネゲート(Negate)され、イニシエータは新たな要求トランザクションが発行可能な状態となるまで、メモリアクセスを待機させる。デクリメントカウンタの値は、サイクルカウンタがインクリメントされる度にデクリメントされることで次第にゼロに近づく。
先頭アクセスの場合に実行されるステップS32では、アクセス残数Rpをデクリメントし(Rp=Rp−1)、ステップS34においてTp+Gをデクリメントカウンタに書き込む。そしてステップS38において、送信間隔決定部133は送信許可信号を”DISABLE”に設定する。これによりTp+Gサイクル以内のイニシエータからの要求トランザクションの発行が禁止される。
中間アクセスの場合に実行されるステップS16において、送信間隔決定部133は、調整範囲情報により許容遅延Iの値が負であることを検出した場合には、イニシエータが行う処理のリアルタイム性を確保するため、送信間隔GをG=0に更新する。その後処理はステップS30に進んで送信間隔Gの値が記録される。次のステップS32ではアクセス残数Rpをデクリメントし(Rp=Rp−1)、ステップS34においてデクリメントカウンタにTp+Gを書き込む。そしてステップS38において、送信間隔決定部133は送信許可信号を”DISABLE”に設定する。これによりTp+Gサイクル以内のイニシエータからの要求トランザクションの発行が禁止される。
最後尾アクセスの場合に実行されるステップS8において、送信間隔決定部133は、アクセス残数Rpをゼロクリアし、ステップS36においてデクリメントカウンタにSb+Tbを書き込む。そしてステップS38において、送信間隔決定部133は送信許可信号を”DISABLE”に設定する。これによりTp+Sbサイクル以内のイニシエータからの要求トランザクションの発行が禁止される。
その後、ステップS40においてカウンタがリセットされたことを検出すると、ステップS42において送信間隔決定部133は送信許可信号を”ENABLE”に設定する。これにより、イニシエータからの要求トランザクションの発行が許可される。
送信間隔の拡大だけでなく縮小を行うことにより、Np回のアクセスを早期に完了させ、後から発生するであろう他のイニシエータのアクセスを可能な限りバスの帯域内に収容することができる。例えば図4のCPUは、ユーザとのインタラクションやインターネットのブラウジングなどに利用されるため、ユーザの指定した処理を実行するために発生するメモリアクセス量は、事前に予測することが困難である。そのような場合でも、送信間隔の縮小により、各イニシエータが早期に全てのメモリアクセスを完了していれば、ユーザによって起動されたCPU処理のアクセスをバス帯域内に収容することができ、バス帯域の利用効率が向上する。
以上のように送信間隔制御部125が働くことにより、イニシエータ間でリンクを共用するネットワークバス上でのリアルタイム性の確保が可能となるとともに、バス帯域の利用効率も向上させることができる。図25及び図26は、ENC、DEC、DMACのアクセスをモデル化し、ソフトウェアシミュレータにより、レイテンシの大きさを比較評価したものである。横軸は時間(サイクルクロックの値)を、縦軸はレイテンシの値(単位はサイクル)を示している。使用した3種類のイニシエータのアクセスモデルは以下のように条件設定した。
ENC: Tb=4000、Np=250、Tp=4 (灰色)
DEC: Tb=4000、Np=250、Tp=4 (灰色)
DMAC:Tb=400、 Np=4、 Tp=4 (黒色)
図25は送信間隔制御を行わない場合のパケットのレイテンシの結果を示す。0サイクルからENCとDECのバーストアクセスが開始されると、レイテンシは一定の傾斜で大きくなっていき、850サイクル程度まで増加していることが分かる。バーストアクセスによりバスが過負荷となっている間に行われたDMACのメモリアクセスも、バーストアクセスの影響でレイテンシが同様に伸びている。
一方、図26は本実施形態による送信間隔制御を行った場合のパケットのレイテンシの結果を示す。0サイクルから開始されたENCとDECのバーストアクセスは、レイテンシの増加とともに、送信間隔が制御され、50サイクル程度のレイテンシに抑制されている。またこのため、DMACのアクセスも送信間隔制御されたためにできた空きサイクルにより、低レイテンシでアクセスが完了していることが分かる。また送信間隔が縮小される制御が入っているため、0から4000サイクルの間で実行されるべきENC及びDECの各4000回のアクセスは、2000サイクル迄の間で全て完了していることが分かる。このように、各イニシエータ毎のリアルタイム性の確保とバス帯域の利用効率向上がなされることがシミュレーションで確認できる。
本実施形態では、送信間隔制御部はイニシエータ側のNICの一部として説明したが、NIC機能ブロックの外部に位置していてもよい。またイニシエータとターゲット間を接続するネットワークバスのトポロジーとして、フライ網を仮定したが、メッシュ網やトーラス網などの他のトポロジーであってもよい。また本実施形態では、ターゲットが複数存在する場合を説明しているが、ターゲットは単一でも良い。
(実施形態2)
本実施形態では、実施形態1において説明した第一の演算フェーズを実行するのに要する演算サイクル数n、イニシエータが送信する最小パケットサイズa、必要とされる制御粒度を示す制御間隔pを、回路設計時における要求仕様として定義する。これにより、(数13)に示す関係式から、必要な演算回路の並列数を決定することができる。
Figure 0005838367
Nによって、回路の実装規模や実装面積が決定されるため、設計時における回路規模の見積りに利用することができると共に、設計手法または設計ツールとして用いることも可能である。
たとえば、設計者にとっては、1パケットの送信毎に送信間隔を制御したいという要求は強いと考えられる。その場合には、制御間隔pを1に固定すればよい。このように、pの値が変化しない条件下でも、最適な数の並列演算回路を有する送信間隔制御装置を設計することが可能になる。
本願発明は、チップ(NoC)上に実装されるNICまたは送信間隔制御装置として実施されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施される。そのようなシミュレーションプログラムは、コンピュータによって実行される。本実施形態においては、図12、図13、図15に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、上述した実施形態の各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
たとえば、並列演算回路の最適な並列数Nを求めるためには、使用者は、上述のコンピュータに、予め定めた制御間隔pの値を入力し、予め想定される、イニシエータが送信する最小のパケットサイズaおよび並列演算回路の演算実行の要処理時間nを入力すればよい。コンピュータは、上述の数13にそれらを代入することにより、最適な並列演算回路数Nを求めることが可能になる。
本発明は、TV、レコーダなどのAV家電、携帯電話などのモバイル機器をはじめとして各種組込機器上でリアルタイム処理を行う半導体LSI上のパケット通信型のバスに適用可能である。たとえば本発明は、バスを共用する複数のイニシエータを、パケットの送信間隔を制御することによって効率的に通信させるための送信間隔制御装置、制御方法、制御プログラムとして利用可能である。
121 パケット化部
122 脱パケット化部
123 パケットバッファ部
124 パケット送受信部
125 送信間隔制御部
131 許容遅延演算部
132 調整方法選択部
133 送信間隔制御部
141 演算実行部
142 演算結果格納部
143 許容遅延算出部
144 制御間隔決定部

Claims (7)

  1. 複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置であって、
    所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、
    少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、
    前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも1つのパケットを、バスに送信する送受信部と
    を備えた、送信間隔を制御する制御装置。
  2. 前記許容遅延演算部は、
    各々が所定の演算の実行に時間nを要する、並列的なN個の演算実行部と、
    前記バスに送信されるパケットの最小のサイズa、前記演算実行部の並列数Nおよび前記時間nに基づいて制御間隔pを計算する制御間隔決定部と
    を備えており、前記所定数は前記制御間隔pによって定められる、請求項1に記載の制御装置。
  3. 前記制御間隔決定部は、下記数1に示す式によって前記制御間隔pを決定する、請求項2に記載の制御装置。
    Figure 0005838367
  4. 前記送信間隔決定部は、前記調整範囲情報に加えて、さらに前記バスの負荷Lの情報に基づいて各パケットの送信間隔を決定する、請求項1に記載の制御装置。
  5. 前記負荷Lが予め定められた値より大きいときは、前記送信間隔決定部は各パケットの送信間隔を拡大し、
    前記負荷Lが前記予め定められた値以下のときは、前記送信間隔決定部は各パケットの送信間隔を縮小する、請求項4に記載の制御装置。
  6. 前記バスには、他のイニシエータまたはターゲットが接続されており、
    前記許容遅延演算部は、アクセス要求を前記他のイニシエータまたは前記ターゲットに送信してから応答が帰ってくるまでの時間であるレイテンシを、前記送受信部を利用して求め、前記バスの負荷として利用する、請求項4に記載の制御装置。
  7. 複数のパケットが伝送される、ネットワーク化されたバスを有する半導体回路において、各パケットの送信タイミングを制御して各パケットを前記バスに送信する制御装置に並列的に設けられる演算回路の数Nを決定するための設計方法であって、
    前記制御装置は、
    所定数のパケットの送信完了時刻に応じて定まるタイミングで、以後に送信されるパケットの許容可能な送信遅延量を示す許容遅延を計算し、調整範囲情報として出力する許容遅延演算部と、
    少なくとも前記調整範囲情報に基づいて各パケットの送信間隔を決定し、決定結果に応じて、隣接して接続されたイニシエータによるデータの送信を許可し、または禁止する送信間隔決定部と、
    前記データの送信が許可された前記イニシエータから受信したデータに基づいて生成された少なくとも1つのパケットを、バスに送信する送受信部と
    を備えており、
    前記許容遅延演算部が、
    各々が所定の演算の実行に時間nを要する、並列的なN個の演算回路と、
    前記バスに送信されるパケットの最小のサイズa、前記演算回路の並列数Nおよび前記時間nに基づいて、前記所定数である制御間隔pを計算する制御間隔決定部と
    を備えるときにおいて、
    予め定められた制御間隔pの値を入力するステップと、
    予め定められた最小のサイズaの値および前記時間nの値を取得するステップと、
    下記数2に示す式によって、前記演算回路の並列数Nを決定するステップと
    を包含する設計方法。
    Figure 0005838367
JP2011152076A 2011-07-08 2011-07-08 制御装置および演算回路の数を決定するための設計方法 Active JP5838367B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011152076A JP5838367B2 (ja) 2011-07-08 2011-07-08 制御装置および演算回路の数を決定するための設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011152076A JP5838367B2 (ja) 2011-07-08 2011-07-08 制御装置および演算回路の数を決定するための設計方法

Publications (2)

Publication Number Publication Date
JP2013021452A JP2013021452A (ja) 2013-01-31
JP5838367B2 true JP5838367B2 (ja) 2016-01-06

Family

ID=47692472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011152076A Active JP5838367B2 (ja) 2011-07-08 2011-07-08 制御装置および演算回路の数を決定するための設計方法

Country Status (1)

Country Link
JP (1) JP5838367B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5895153B2 (ja) 2013-02-19 2016-03-30 パナソニックIpマネジメント株式会社 インタフェース装置およびバスシステム
JP5943109B1 (ja) 2015-03-10 2016-06-29 日本電気株式会社 半導体チップ、集積回路、及びデータ転送方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3139750B2 (ja) * 1998-09-25 2001-03-05 日本電気アイシーマイコンシステム株式会社 タイミング調整方法
JP2007134936A (ja) * 2005-11-10 2007-05-31 Matsushita Electric Ind Co Ltd Dmaコントローラおよび半導体集積回路
JP4895198B2 (ja) * 2007-01-26 2012-03-14 Kddi株式会社 許容遅延時間を考慮した下りリンクの無線アクセス制御方法、アクセスポイント、端末及びプログラム
WO2012140848A1 (ja) * 2011-04-13 2012-10-18 パナソニック株式会社 制御装置

Also Published As

Publication number Publication date
JP2013021452A (ja) 2013-01-31

Similar Documents

Publication Publication Date Title
JP6179812B2 (ja) 制御装置
JP5776022B2 (ja) 制御装置
de Souza Carvalho et al. Dynamic task mapping for MPSoCs
JP6054464B2 (ja) トランザクションの優先レベルを設定するデータ処理装置および方法
Carvalho et al. Congestion-aware task mapping in heterogeneous MPSoCs
US9100354B2 (en) Control device, for instance for systems-on-chip, and corresponding method
KR102374572B1 (ko) 네트워크 온 칩 설계를 위한 트랜잭션 트래픽 스펙
JP5276220B2 (ja) バス制御装置およびバス制御装置に指示を出力する制御装置
JP2009512260A (ja) 加入者装置、通信システムの通信コントローラ、および通信システムの加入者装置内でゲートウェイ機能を実現する方法
KR101382606B1 (ko) 하이브리드 광학 네트워크 온 칩의 태스크 매핑 장치 및 방법과 이를 이용한 하이브리드 광학 네트워크 온 칩 시스템
JP5838367B2 (ja) 制御装置および演算回路の数を決定するための設計方法
Becker et al. Partitioning and analysis of the network-on-chip on a COTS many-core platform
Gillis et al. Quantifying the performance benefits of partitioned communication in mpi
JP2005085079A (ja) データ転送制御装置
TWI760690B (zh) 一種資料傳輸系統及其資源配置方法
JP2006215621A (ja) Dma制御装置
JP2014110538A (ja) ネットワークスイッチ装置、タスク移動方法、およびタスク移動プログラム
Guindani et al. Achieving qos in noc-based mpsocs through dynamic frequency scaling
JP7226084B2 (ja) 情報処理装置
Kostrzewa et al. Supporting dynamic voltage and frequency scaling in networks-on-chip for hard real-time systems
JP6090492B1 (ja) メモリアクセス制御装置、情報処理システム、メモリアクセス制御方法、及び、プログラム
TWI773196B (zh) 分配運算資源的方法和使用所述方法的電子裝置
Sallam et al. The connection-then-credit flow control protocol for networks-on-chips: Implementation trade-offs
Reza Reinforcement Learning for Runtime Optimization for High Performance and Energy Efficient NoC
Kanduri et al. Predictable application mapping for manycore real-time and cyber-physical systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140620

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150303

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150616

R151 Written notification of patent or utility model registration

Ref document number: 5838367

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151