説明

NoCシステム及び入力切替装置

【課題】NoCシステムのスループットの低下を回避する。
【解決手段】NoCシステムの複数のNoCルータのうちの特定ルータと接続された複数の機能ブロック(NoCルータまたはIP)と、該特定ルータとの間に、入力切替装置200が設けられている。特定ルータは、入力切替装置200からのフリットを一時的に格納する複数の第1のバッファ(FIFO311〜315)を有する。入力切替装置200における複数の第2のバッファ(FIFO211〜215)は、上記複数の機能ブロックに夫々対応し、該機能ブロックからのフリットを一時的に格納する。制御部220は、複数の第1のバッファの空き容量に基づいて、各第2のバッファに格納されたフリットの出力先を、複数の第1のバッファのうちの1つに選択的に設定する。分配器230は、各第2のバッファに格納されたフリットを、制御部220により該フリットに対して設定された出力先に出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ルーティング、具体的にはNoC(Network on Chip)システムにおけるルーティング技術に関する。
【背景技術】
【0002】
近年、半導体プロセスの微細化につれ、1つのチップ内に搭載できるプロセッサ・コア(Processor Core)などのIP(Intellectual Property:知能素子)の数は、増加の一途を辿っている。IP数の増加に伴い、IPを繋ぐ配線は複雑化し、配線数も増加している。このような背景において、従来のオン・チップ・バスに代わる結合網として、NoC(Network on Chip)が注目されている(非特許文献1)。
【0003】
図5は、非特許文献1のスライド8から抽出したものであり、NoCのネットワークトポロジを示す。図中丸は、NoCルータを示す。なお、以下の説明において、「NoCルータ」を単に「ルータ」とも呼ぶ。
【0004】
NoCは、ツリー(Tree)型、メッシュ(Mesh)型など様々なトポロジーを有する。メッシュ型は、グリッド(Grid)型とも呼ばれる。
【0005】
図5の上部に示すように、ツリー型では、複数のルータが階層的に接続され、上位階層の各ルータは、直下の階層の各ルータと直接接続されている。図5の上部の例は、2階層のツリー型を示しているが、ツリーの階層は何階層であってもかまわない。なお、本明細書の説明において、機能ブロックAと機能ブロックBが直接接続されていることは、該2つの機能ブロックが、ルータを介さずに、データの送受信ができるように接続されていることを意味する。機能ブロックは、NoCルータまたはIP(Intellectual Property)である。IPとNoCルータの間にはNI(Network Interface)という装置があるが、便宜上IPとNoCルータは直接接続されていると称す。また、機能ブロックAと直接接続されている機能ブロックBは、「Aの隣のB」や「Aに隣接するB」ともいう。
【0006】
図5の下部に示すように、メッシュ型では、複数のルータが格子状に配置され、各ルータは、上下左右の他のルータと直接接続されている。メッシュ型を例にして、NoCのルータのハードウェア構造を説明する。
【0007】
図6は、非特許文献1のスライド32の一部を抽出して符号を追加したものであり、5入力5出力のルータ10の概略を示す。図中「X+」、「X−」、「Y+」、「Y−」は、ルータ10の「右隣」、「左隣」、「真下」、「真上」のルータ(隣接ルータ)を夫々示し、図中「CORE」は、ルータ10と直接接続されたプロセッサ・コアなどのIPである。
【0008】
図7は、図6におけるルータ10と、CORE及び各隣接ルータとの座標関係が分かるように示した図である。図7から分かるように、ルータ10は、COREと、4つの隣接ルータとに直接接続されている。
【0009】
図6に示すように、ルータ10は、5本のパス11によりCORE及び4つの隣接ルータと夫々接続されており、5つのFIFO12と、調停器(図中ARBITER)14と、XBAR16を有する。
【0010】
5つのFIFO12は、5つのパス11に夫々接続されており、当該パス11に接続されたCOREまたは隣接ルータからのパケットを一時的に格納する。
【0011】
調停器14は、5つのFIFO12に夫々格納されたパケットの宛先に応じて、該パケットの出力先の調停を行う。XBAR16は、スイッチ機能を有し、調停器14の調停結果の出力先にパケットを出力する。例えば、「X+」のルータから、CORE宛てのパケットが入力されると、該パケットは、「X+」のルータに対応するFIFO12に一時格納された後、COREに出力される。また、例えば、「X+」のルータから、「Y+」のルータに直接接続されたIP(図示せず)宛てのパケットが入力されると、該パケットは、「X+」のルータに対応するFIFO12に一時格納された後、「Y+」のルータに出力される。
【0012】
図8を参照し、あるIPから別のIPに送信する場合の信号の流れの例を用いて、NoCのパケットの構成を説明する。
【0013】
図8の例において、IP20は、送信側IPすなわちマスターであり、IP30は、受信側IPすなわちスレーブである。IP20から送出された信号は、NI(Network Interface)22、ルータ24、ルータ26、NI28を経由して、IP30に到達する。なお、ルータ24からルータ26までは、さらに他のルータを経由する場合もある。
【0014】
ルータ24は、IP20と直接接続されたルータであり、ルータ26は、IP30と直接接続されたルータである。
【0015】
NI22は、IP20が送出した信号をパケット化して、複数のフリットを得てルータ24に出力する。
【0016】
NI22により得られた複数のフリットのうちの先頭のフリットは、ヘッドフリットと呼ばれ、制御信号部42(Control Signal)、出発地部44(Source)、目的地部46(Destination)を有する。出発地部44と目的地部46は、アドレス情報であり、送信元(ここではIP20)と宛先(ここではIP30)の夫々のアドレスである。
【0017】
2番目からの各フリットは、ボディフリットと呼ばれ、信号の中身を示すデータが挿入されている。ボディフリットのうちの末尾のフリットは、テイルフリットと呼ばれる。
【0018】
なお、バスプロトコルによっては、アドレス情報は、2番目のフリット(ヘッドフリットの次のフリット)に含まれる場合もある。
【0019】
以下の説明において、送信元のIPから送出した1つの信号をパケット化して得た、ヘッドフリットからテイルフリットまでの複数のフリットを、1つの「フリットグループ」という。
【0020】
ルータ24は、NI22からの各フリットを、時分割多重で順次転送する。具体的には、1つのフリットグループに対して、目的地部46から次のルータを決定し、ヘッドフリットからテイルフリットまでの各フリットを、次のルータに順次転送する。
【0021】
ルータ24からの各フリットは、ルータ24とルータ26の間のルータを経由して、ルータ26に到達する。ルータ26は、これらをNI28に順次出力する。
【0022】
NI28は、ルータ26からの、1つのフリットグループを構成する複数のフリットを、IPが送受信する信号に復元してIP30に出力する。NI28によるこの復元処理は、NI22が行う「パケット化」とは逆の処理であり、以下「デパケット」という。
【0023】
このようにして、マスターとしてのIP20から、スレーブとしてのIP30への送信が実現される。
【0024】
NoCシステムに対して、種々の視点からの提案がなされている。
例えば、特許文献1には、IPのインタフェースプロトコルであるAXI(Advanced eXtensible Inteface)をNoCに適用した場合において、データの円滑な転送を図る技術が開示されている。図9を参照して説明する。
【0025】
図9は、特許文献1の図2において符号を変更したものであり、特許文献1の技術を適用したNoCルータ50の構成を示す。
【0026】
NoCルータ50は、スイッチ53、仲裁器51、インターリーブ装置80を備え、複数のAXIマスター(IP)から転送される複数のデータ(フリット)をスイッチングしてNI60を介してAXIスレーブ70(IP)に伝達する。
【0027】
仲裁器51は、スイッチ53に到達したデータを通過させるスイッチング順序を決定する。スイッチ53は、仲裁器51により決定されたスイッチング順序で、到達したデータをスイッチングして1つずつインターリーブ装置80に伝達する。なお、図9に示していないが、スイッチ53は、データの出力先がインターリーブ装置80である点を除き、図6における複数のFIFO12とXBAR16と同様の機能を有すると考えられる。
【0028】
インターリーブ装置80は、分類器81と、複数のAXIマスターに対して夫々設けられた複数のバッファ83と、出力器85と、インターリーブマネージャー87を備える。
【0029】
分類器81は、スイッチ53からのデータを分類し、複数のバッファ83のうちの1つに伝達する。なお、分類器81は、入力されたデータがいずれのAXIマスターから入力されたかに応じて分類し、該当AXIマスターに対応するバッファ83にデータを伝達する。
【0030】
出力器85は、インターリーブマネージャー87の制御によって選択された1つ以上のバッファ83からのデータを取り出し、取り出されたデータがインターリーブされるように出力する。
【0031】
インターリーブマネージャー87は、AXIスレーブ70からインターリーブ許容能力に対する情報を受信し、インターリーブ許容能力に符合する数のデータがインターリーブされ、AXIスレーブ70に提供されるように出力器85を制御する。
【0032】
NI60は、出力器85から出力されたデータ(インターリーブされたデータ)をデパケットし、AXIスレーブ70に出力する。
【先行技術文献】
【特許文献】
【0033】
【特許文献1】特開2007−115252号公報
【非特許文献】
【0034】
【非特許文献1】Network−on−Chip最前線、Revised Version、2008年8月26日、インターネット<http:/www.am.ics.keio.ac.jp/members/matutani/papers/matsutani_kyushu2008.ppt>
【発明の概要】
【発明が解決しようとする課題】
【0035】
以上の説明から分かるように、NoCシステムにおいて、ルータ内に、フリットの転送を行うパス毎、すなわち、該ルータと直接接続されたIP及びルータ毎に、バッファが設けられており、これらのバッファは、自身に対応するIPまたはルータからのフリットを一時的に格納する。
【0036】
そのため、あるパスを介してフリットが連続して入力され、該パスに対応するバッファがいっぱいになった場合、該バッファに空きができるまで、ルータは、同じパスからの後続のフリットを受け入れることができない。これでは、NoCシステムのスループットが低下し、所謂「Head of Line Blocking Problem」という問題が生じてしまう。
【0037】
本発明は、上記事情に鑑みてなされたものであり、NoCシステムのスループットの低下を回避する技術を提供する。
【課題を解決するための手段】
【0038】
本発明の一つの態様は、フリットの転送を行うNoCルータを複数備えたNoCシステムである。各NoCルータは、複数の機能ブロックと直接接続されている。機能ブロックは、該NoCルータ以外のNoCルータまたはIP(Intellectual Property)である。
【0039】
少なくとも1つのNoCルータは、特定ルータである。「特定ルータ」は、該ルータと、該ルータと直接接続された複数の機能ブロックとの間に、入力切替装置が設けられたルータであり、複数の第1のバッファと、転送部を有する。
【0040】
前記複数の第1のバッファは、入力切替装置からのフリットを一時的に格納する。前記転送部は、該複数の第1のバッファに一時的に格納されたフリットを、前記複数の機能ブロックのうちの、該フリットの転送先となる機能ブロックに転送する。
【0041】
入力切替装置は、複数の第2のバッファと、制御部と、分配部とを有する。
前記複数の第2のバッファは、前記複数の機能ブロックに夫々対応し、該機能ブロックからのフリットを一時的に格納する。
【0042】
制御部は、前記特定ルータにおける前記複数の第1のバッファの空き容量に基づいて、前記複数の第2のバッファに格納されたフリットの出力先を、前記複数の第1のバッファのうちの1つに選択的に設定する。
【0043】
分配部は、前記複数の第2のバッファに格納されたフリットを、前記制御部により該フリットに対して設定された前記出力先に出力する。
【0044】
なお、上記態様のシステムを方法や装置に置き換えて表現したもの、上記態様のシステムに含まれる入力切替装置や該入力切替装置による切替方法なども、本発明の態様としては有効である。
【発明の効果】
【0045】
本発明にかかる技術によれば、NoCシステムのスループットの低下を回避できる。
【図面の簡単な説明】
【0046】
【図1】本発明の実施の形態にかかるNoCシステムを示す図である。
【図2】図1に示すNoCシステムにおける転送装置を示す図である。
【図3】図2に示す転送装置における入力切替装置を示す図である。
【図4】図3に示す入力切替装置における処理の流れを示すフローチャートである。
【図5】NoCのネットワークトポロジを説明するための図である。
【図6】NoCルータのハードウェア構成を説明するための図である。
【図7】図6に示すルータと他の機能ブロックの座標関係を説明するための図である。
【図8】NoCのパケット構成を説明するための図である。
【図9】従来技術を説明するための図である。
【発明を実施するための形態】
【0047】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。
【0048】
図1は、本発明の実施の形態にかかるNoCシステム100を示す。図1において、丸(110)はプロセッサ・コアなどのIPであり、小さい矩形(120)はNI(Network Interface)であり、大きい矩形(140)は転送装置である。
【0049】
NI120は、直接接続されたIP110と転送装置140の間に設けられており、「パケット化」機能と「デパケット」機能を有する。具体的には、NI120は、IP110が出力した信号をパケット化してフリットを得て、該IP110と直接接続された転送装置140に出力し、転送装置140からIP110へのフリットをデパケットして信号に戻してIP110に出力する。なお、前述したように、「直接接続される」とは、NoCルータを介さずに、データの送受信ができるように接続されることを意味する。
【0050】
転送装置140について後に詳細に説明するが、各転送装置140は、フリットの転送を行うNoCルータを有する。すなわち、本実施の形態のNoCシステム100は、メッシュ型のNoCシステムであり、NoCルータ同士は、格子状に接続されている。また、各NoCルータは、複数の機能ブロックと直接接続されており、これらの機能ブロックは、IPまたは他のNoCルータである。これらの機能ブロックのうちのNoCルータを夫々真上、真下、左隣、右隣のルータともいう。
【0051】
なお、図示の例では、転送装置140毎、すなわちNoCルータ毎に1つのIP110が直接接続されるようになっているが、転送装置140には、必ずIPが接続されるとは限らず、また、接続されるIPの数も1つとは限らない。
【0052】
図2は、転送装置140の構成を示す。分かりやすいように、図2は、転送装置140について、フリットが入力される側と、フリットを出力する側とを分けて示すものである。
【0053】
転送装置140は、入力切替装置200とNoCルータ300を有する。NoCルータ300と直接接続された各機能ブロック(上下左右の4つのNoCルータと、IP)から該転送装置140へ出力したフリット(F1、F2、F3、F4、FIP)は、まず、入力切替装置200に入力される。なお、F1、F2、F3、F4は、夫々、右隣のルータ(X+)、左隣のルータ(X−)、真下のルータ(Y+)、真上のルータ(Y−)からのフリットであり、FIPは、NI120を介してIP110からのフリットである。
【0054】
NoCルータ300は、直接接続された複数の機能ブロックとの間に入力切替装置200が設けられている点と、後述する混雑度通知部340を備える点を除き、通常のNoCルータと同様である。このようなNoCルータを、以下では、特定ルータともいう。また、説明上の便宜のため、NoCルータ300と、該NoCルータ300と直接接続された各機能ブロックとの間に設けられた入力切替装置200を、該NoCルータ300の入力切替装置200という。
【0055】
本実施の形態のNoCシステム100において、例として、全てのNoCルータ300は特定ルータであり、隣接するNoCルータ300の入力切替装置200同士は、さらに直接接続されており、NoCルータ300を介さずに、互いにデータの送受信ができる。
【0056】
入力切替装置200には、NoCルータ300の上下左右の4つのNoCルータの入力切替装置200からのフリットFS(1,2,3,4)も入力される。
【0057】
入力切替装置200は、入力されたフリット(F1、F2、F3、F4、FIP、FS)をNoCルータ300に出力し、NoCルータ300は、入力切替装置200からのフリットを、上下左右の4つの隣接ルータと、IP110との5つの機能ブロックのうちの、該フリットの転送先となる機能ブロックに出力する。
【0058】
入力切替装置200は、フリットをNoCルータ300に出力せず、上下左右の4つの隣接ルータのいずれかの入力切替装置200に出力する場合もある。このように出力されたフリットは、出力先の入力切替装置200にフリットFSとして入力される。
【0059】
NoCルータ300は、入力切替装置200と接続された5つの入力ポート301〜305と、該5つの入力ポート301〜305と接続されたバッファリング部310と、バッファリング部310と接続された5つの出力ポート321〜325と、出力ポート321〜325と接続された転送部330と、混雑度通知部340を有する。
【0060】
バッファリング部310は、入力ポート301〜305と夫々接続された5つの第1のバッファ(ここではFIFO)311〜315を備え、これらのFIFO311〜315の出力側は、出力ポート321〜〜325に夫々接続されている。転送部330は、ARBITER332とXBAR334を備える。
【0061】
入力ポート301〜305、バッファリング部310、出力ポート321〜325、転送部330は、通常のNoCルータに備えられたものと同様であり、ここで簡単に説明する。
【0062】
入力ポート301〜305は、入力切替装置200からのフリットを、バッファリング部310における、自身と接続されたFIFOに出力する。FIFO311〜315は、フリットを一時的に格納する。出力ポート321〜325は、FIFO311〜315に一時的に格納されたフリットをXBAR334に出力する。
【0063】
XBAR334は、ARBITER332の制御に従って、出力ポート321〜325からのフリットを、上下左右の4つの隣接ルータと、IP110との5つの機能ブロックのうちの、該フリットの転送先となる機能ブロックに出力する。
【0064】
混雑度通知部340は、バッファリング部310における各第1のバッファ(FIFO311〜315)の空き容量を示しうる混雑度情報Sを入力切替装置200に出力するものである。この混雑度情報Sは、FIFO311〜315の夫々の空き容量を示すことができればいかなる形式のものであってもよい。例えば、本実施の形態において、FIFO311〜315は、複数段を備え、1段毎に1つのフリットを格納する構造を有し、混雑度情報Sは、FIFO311〜315の夫々の空き段数を示す情報である。
【0065】
図3を参照して入力切替装置200を詳細に説明する。
図3に示すように、入力切替装置200は、6つの第2のバッファ(ここではFIFO211〜216)と、制御部220と、分配器230を有する。
【0066】
FIFO211〜215は、上下左右のNoCルータとIP110に夫々対応し、これらの機能ブロックからのフリット(F1、F2、F3、F4、FIP)を一時的に格納する。FIFO216は、該入力切替装置200と接続された他の入力切替装置200からのフリットFSを一時的に格納する。
【0067】
デフォルトでは、FIFO211〜215に格納されたフリットは、NoCルータ300におけるFIFO311〜315に夫々出力されるように設定されており、FIFO216に格納されたフリットは、FIFO311〜315のうちの1つ例えばFIFO311に出力されるように設定されている。
【0068】
制御部220は、FIFO211〜216に格納されたフリットの出力先を設定する。FIFO211〜216に格納されたフリットの出力先は、NoCルータ300における入力ポート301〜305のいずれか1つ、または上下左右の4つのルータの入力切替装置200のいずれか1つである。また、制御部220は、上下左右の4つのルータの入力切替装置200に拒否信号BPを送信する場合もある。この出力先の設定は、NoCルータ300からの混雑度情報Sと、上下左右の4つのルータの入力切替装置200からの拒否信号BPに基づいてなされ、拒否信号BPの送信は、NoCルータ300からの混雑度情報Sに基づいてなされる。
【0069】
制御部220は、NoCルータ300の各第1のバッファ(FIFO311〜315)のうちに、第1の閾値以上の空き容量を有するFIFOが存在し、かつ、該FIFO以外に、第1の閾値以下の第2の閾値以上の空き容量を有するFIFOが存在することを判定条件として、該判定条件が満たされているときに、フリットの出力先を、FIFO311〜315のうちの、上記第1の閾値以上の空き容量を有するFIFOの入力ポートに設定する。言い換えれば、FIFO311〜315のうちに、第2の閾値以上の空き容量を有するFIFOが複数あり、かつ、これらの複数のFIFOのうちに、第1の閾値以上の空き容量を有するFIFOが存在することを判定条件が満たされているときに、フリットの出力先を、第1の閾値以上の空き容量を有するFIFOに設定する。
【0070】
第1の閾値と第2の閾値は、予め設定された値とすることができる。例えば、各第1のバッファ(FIFO311〜315)が4段のFIFOである場合に、第1の閾値と第2の閾値を夫々「2段」と「1段」、または、「2段」と「2段」などとすることができる。
【0071】
上記判定条件が満たされていない場合に、制御部220は、フリットの入力を受け付けないことを示す拒否信号BP(バック・プレッシャ)を、各隣接ルータの入力切替装置200に出力すると共に、その後、自身に入力された各フリットの出力先を、各隣接ルータの入力切替装置200のうちの、拒否信号BPを出力していない入力切替装置200に設定すると共に、NoCルータ300を介さずに、該入力切替装置200にフリットを直接出力する。
【0072】
分配器230は、制御部220により制御されるスイッチとして機能し、制御部220からのフリットを、制御部220により設定された出力先(NoCルータ300の入力ポート301〜305のいずれか、実質的にはFIFO311〜315のいずれか)に出力する。
【0073】
図4を参照して入力切替装置200の動作をより詳細に説明する。
図4は、入力切替装置200における処理の流れを示すフローチャートである。入力切替装置200の制御部220は、まず、FIFO211〜216にフリットが格納されているか否かを確認し、いずれのFIFOにもフリットが無ければ、フリットが入力されるまで待機する(S100:No、S100〜)。
【0074】
前述したように、入力切替装置200のFIFO211〜215には、上下左右の4つの隣接ルータ、IP110からのフリット(F1〜F4、FIP)が入力され、FIFO216には、上下左右の4つの隣接ルータの入力切替装置200からフリット(FS)が入力される。いずれかのFIFOにフリットが入力されると、制御部220は、該フリットがヘッドフリットであるか否かを確認する(S100:Yes、S102)。
【0075】
ステップS102において、ヘッドフリットであると確認されれば、入力切替装置200は、NoCルータ300、より具体的には混雑度通知部340から混雑度情報Sを取得し、判定条件が満たされているか否かを確認する(S102:Yes、S104)。
【0076】
この判定条件は、前述したように、「FIFO311〜315のうちに、第2の閾値(例えば1段)以上の空き容量を有するFIFOが複数あり、かつ、これらの複数のFIFOのうちに、少なくとも1つのFIFOが第1の閾値(例えば2段)以上の空き容量を有する」ことである。
【0077】
上記判定条件が満たされていれば、制御部220は、FIFO211〜216の当該FIFOに対して、それに格納されたフリットの出力先を、FIFO311〜315のうちの、第1の閾値以上の空き容量を有するFIFOの入力ポートに設定して、固定する(S104:Yes、S110)。「固定する」とは、FIFO211〜216の当該FIFOに格納された、ステップS102で入力されたヘッドフリットに対応するテイルフリットまでの各後続のフリットの出力先を、上記ヘッドフリットに対して設定した出力先のままにすることを意味する。例えば、FIFO211にヘッドフリットが格納され、制御部220は、NoCルータ300の混雑度通知部340からの混雑度情報Sに基づいて該ヘッドフリットの出力先を入力ポート301に設定したとする。その後、FIFO211に格納された、テイルフリットまでの各後続のフリットの出力先を入力ポート301のままに設定する。
【0078】
ステップS104において判定条件が満たされており、さらに、FIFO311〜315のうちに、第1の閾値以上の空き容量を有するFIFOが複数ある場合に、制御部220は、これらの複数のFIFOのうちのいずれか任意の1つ、または空き容量が最も多いFIFOの入力ポートを出力先に設定する。あるいは、第1の閾値以上の空き容量を有するFIFOのうちに、デフォルト設定のFIFOが含まれる場合には、デフォルト設定のFIFOの入力ポートを出力先に設定し、デフォルト設定のFIFOが含まれない場合には、空き容量が最も多いFIFOの入力ポートを出力先に設定するようにしてもよい。
【0079】
例えば、FIFO211にヘッドフリットが格納され、FIFO311、FIFO312、FIFO313のいずれも第1の閾値以上の空き容量を有する場合、制御部220は、該ヘッドフリットの出力先をFIFO311、FIFO312、FIFO313のいずれか任意の1つの入力ポートに設定してもよいし、FIFO311、FIFO312、FIFO313のうちの、空き容量が最も多いFIFOの入力ポートに設定してもよい。あるいは、FIFO211のデフォルトの出力先となるFIFO311の入力ポート301に設定してもよい。
【0080】
ステップS104において、判定条件が満たされていなければ、制御部220は、上下左右の4つの隣接ルータに拒否信号BPを出力する(拒否信号BPをアクティブにする)と共に、上下左右の4つの隣接ルータの入力切替装置200のうちに、拒否信号BPを出力していない入力切替装置200があるか否かを確認する(S104:No、S120、S122)。
【0081】
上下左右の4つの隣接ルータの入力切替装置200のうちに、拒否信号BPを出力していない入力切替装置200があれば、制御部220は、該入力切替装置200を、出力先に設定して、固定する(S122:Yes、S124)。
【0082】
一方、ステップS122において、上下左右の4つの隣接ルータの入力切替装置200のいずれからも拒否信号BPが出力されていれば(S122:No)、制御部220は、FIFO211〜FIFO216のうちの当該バッファに対して、入力ポート301〜305のうちの、該バッファのデフォルトの入力ポートを出力先に設定して、固定する(S130)。
【0083】
例えば、FIFO211にヘッドフリットが格納された際に、FIFO311〜FIFO315のいずれの空き容量も第1の閾値より少なく、上下左右の4つの隣接ルータのうちの真上のルータの入力切替装置200のみが拒否信号BP信号を出力していない場合に、制御部220は、FIFO211に対して、真上のルータの入力切替装置200を出力先に設定する。
【0084】
一方、FIFO211にヘッドフリットが格納された際に、FIFO311〜FIFO315のいずれの空き容量も第1の閾値より少なく、かつ、上下左右の4つの隣接ルータのいずれの入力切替装置200も拒否信号BP信号を出力している場合に、制御部220は、FIFO211に対して、デフォルト設定の入力ポート301を出力先に設定する。
【0085】
このようにして、FIFO211〜216のいずれかにヘッドフリットが格納されると、制御部220により、NoCルータ300からの混雑度情報Sが示すFIFO311〜315の混雑程度と、上下左右の隣接NoCルータの入力切替装置200からの拒否信号BPの有無に基づいて、該ヘッドフリットの出力先が設定される(S110、S124、S130)。
【0086】
ステップS140において、FIFO211〜216に格納されたフリットの出力がなされる。具体的には、制御部220は、入力ポート301〜305のいずれかを出力先に設定した場合に(S110またはS130)、該フリットを分配器230に出力する。分配器230は、制御部220からのフリットを、制御部220により設定された入力ポートに出力する。一方、制御部220は、上下左右の4つの隣接ルータのいずれかの入力切替装置200を出力先に設定した場合に、該フリットを、設定された出力先の入力切替装置200に出力する(S140)。
【0087】
なお、ステップS130からステップS140に移行する際に、出力先の入力ポートに対応するバッファが空き容量を有しておらず、フリットを受け付けることができない場合がある。この場合、上記バッファに空き容量ができるまで待機して、該バッファに空き容量ができてからそれにフリットを出力すればよい。
【0088】
その後、FIFO211〜FIFO216の当該バッファに格納された、テイルフリットまでの各後続のフリットを、ステップS110、S124、S130で設定された出力先に出力する(S102:No、S140、S150:No、S140〜)。
【0089】
FIFO211〜216の当該バッファからテイルフリットが出力されると、制御部220は、該バッファに対して設定した出力先の固定を解除する(S160)。
【0090】
その後、入力切替装置200にフリットが入力される度に、ステップS102からの処理が繰り返される。
【0091】
本実施の形態のNoCシステム100において、各NoCルータ300は、直接接続された複数の機能ブロック(他のNoCルータ300またはIP110)との間に入力切替装置200が設けられた特定ルータである。NoCルータ300内の複数の第2のバッファ(FIFO311〜315)の空き容量を示しうるNoCルータ300からの混雑度情報Sに基づいて、該NoCルータ300と直接接続された各機能ブロックの出力先を、FIFO311〜315のいずれかに選択的に設定することができる。すなわち、入力切替装置200内のFIFO211〜215は、NoCルータ300に直接接続された複数の機能ブロックとは1対1の関係ではあるものの、NoCルータ300内のFIFO311〜315は、上記複数の機能ブロックとは1対1の関係にはならないため、FIFO311〜315に格納するフリットの量を分散させることができる。そのため、「Head of Line Blocking Problem」という問題を軽減し、NoCシステムのスループットの低下を回避することができる。
【0092】
また、本実施の形態のNoCシステム100において、ヘッドフリットに対して出力先を設定した後に、該ヘッドフリットに対応するテイルフリットまでの各後続のフリットに対して出力先を固定することによって、同一のフリットグループに属する各フリットがルータの同一のバッファに出力されることを保証することができる。
【0093】
さらに、本実施の形態のNoCシステム100において、入力切替装置200は、自身と接続されたNoCルータ300のFIFO311〜315が上述した判定条件を満たさない場合に、該NoCルータ300と直接接続された他のNoCルータ300の入力切替装置200に拒否信号BPを出すと共に、FIFO211〜216に格納されたフリットを、他のNoCルータ300の入力切替装置200のうちの、拒否信号BP信号を出力していない入力切替装置200に出力する。こうすることにより、入力切替装置200と接続されたNoCルータ300のFIFO311〜315が混雑し、後続のフリットを受け付けることができない場合には、該NoCルータ300と直接接続された他のNoCルータ300の入力切替装置200に後続のフリットを出力して転送させることができる。従って、隣接するNoCルータ300間で転送の負荷を分散させることができ、NoCシステムのスループットをより向上させることができる。
【0094】
また、本実施の形態のNoCシステム100において、入力切替装置200の制御部220は、自身のバッファ(FIFO211〜216)に格納されたフリットを、自身と接続されたNoCルータ300と、他の入力切替装置200とのいずれに出力するかを決定する際に、NoCルータ300のFIFO311〜315のうちに、「第1の閾値以上の空き容量を有するバッファ」に加え、他に、「第1の閾値以下の第2の閾値以上の空き容量を有するバッファ」が存在することを判定条件にしている。こうすることにより、FIFO311〜315のうちに、1つのバッファ例えばFIFO311以外の各バッファが混雑している場合に、フリットが集中してFIFO311に出力されるようなことを回避できる。
【0095】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【0096】
例えば、本実施の形態のNoCシステム100において、全てのNoCルータ300が特定ルータであるが、NoCシステムに含まれるNoCルータのうちの一部のNoCルータのみが特定ルータであるようにしてもよい。
【0097】
具体的には、例えば、NoCシステムにおいて、直接接続された複数の機能ブロックからのフリット量のバラつきが多い場所におけるNoCルータのみが特定ルータになるようにすることができる。この場合、この特定ルータの入力切替装置は、該特定ルータの混雑度情報Sに基づいて、該特定ルータと直接接続された各機能ブロックからのフリットの出力先を、該特定ルータが有する複数のバッファのうちの1つに選択的に設定するため、特定ルータの複数のバッファに格納されるフリットの量が分散され、あるバッファにのみフリットが集中して出力されることに起因するスループットの低下を回避することができる。
【0098】
また、ある特定ルータと直接接続された機能ブロックのうちに複数の他の特定ルータが含まれる場合において、該特定ルータの入力切替装置を、複数のほかの特定ルータのうちの一部のルータの入力切替装置にのみ接続するようにしてもよい。この場合、該特定ルータの入力切替装置は、フリットを他の入力切替装置に出力する必要があるときに、上記一部のルータの入力切替装置からフリットの出力先を選択すればよい。
【0099】
勿論、各特定ルータの入力切替装置に対して、フリットを他の入力切替装置に出力する必要があるときに、該入力切替装置に接続された他の入力切替装置の数に関わらず、該他の入力切替装置のうちの1つのみを出力先に設定できるようにしてもよい。
【0100】
また、本実施の形態のNoCシステム100において、特定ルータに備えられたバッファ(FIFO311など)の数が、該特定ルータと直接接続された機能ブロックの数と同一であるが、特定ルータに備えられるバッファの数が、2つ以上の任意の数とすることができる。
【0101】
また、NoCシステム100において、入力切替装置200には、他の入力切替装置からのフリットを格納するバッファがFIFO216の1つのみであるが、入力切替装置200に、各他の入力切替装置に夫々対応バッファを夫々設けるようにしてもよい。
【0102】
また、NoCシステム100は、本発明の技術をメッシュ型のNoCシステムに適用した例であるが、本発明にかかる技術は、ツリー型など、他のパケット多入力多出力のNoCシステムにも同様に適用することができる。
【符号の説明】
【0103】
10 ルータ 11 パス
12 FIFO 14 調停器
16 XBAR 20 IP
22 NI 24 ルータ
26 ルータ 28 NI
30 IP 42 制御信号部
44 出発地部 46 目的地部
50 NoCルータ 51 仲裁器
53 スイッチ 60 NI
70 AXIスレーブ 80 インターリーブ装置
81 分類器 83 バッファ
85 出力器 87 インターリーブマネージャー
100 NoCシステム 110 IP
120 NI 140 転送装置
200 入力切替装置 211 FIFO
212 FIFO 213 FIFO
214 FIFO 215 FIFO
216 FIFO 220 制御部
230 分配器 300 NoCルータ
301 入力ポート 302 入力ポート
303 入力ポート 304 入力ポート
305 入力ポート 310 バッファリング部
311 FIFO 312 FIFO
313 FIFO 314 FIFO
315 FIFO 321 出力ポート
322 出力ポート 323 出力ポート
324 出力ポート 325 出力ポート
330 転送部 332 ARBITER
334 XBAR 340 混雑度通知部

【特許請求の範囲】
【請求項1】
フリットの転送を行うNoCルータを複数備えたNoCシステムにおいて、
各NoCルータは、複数の機能ブロックと直接接続されており、前記機能ブロックは、該NoCルータ以外のNoCルータまたはIP(Intellectual Property)であり、
少なくとも1つのNoCルータは、該NoCルータと、該NoCルータと直接接続された前記複数の機能ブロックとの間に、入力切替装置が設けられた特定ルータであり、
前記特定ルータは、
前記入力切替装置からのフリットを一時的に格納する複数の第1のバッファと、
該複数の第1のバッファに一時的に格納されたフリットを、前記複数の機能ブロックのうちの、該フリットの転送先となる機能ブロックに転送する転送部とを有し、
前記入力切替装置は、
前記複数の機能ブロックに夫々対応し、該機能ブロックからのフリットを一時的に格納する複数の第2のバッファと、
前記特定ルータにおける前記複数の第1のバッファの空き容量に基づいて、前記複数の第2のバッファに格納されたフリットの出力先を、前記複数の第1のバッファのうちの1つに選択的に設定する制御部と、
前記複数の第2のバッファに格納されたフリットを、前記制御部により該フリットに対して設定された前記出力先に出力する分配部とを備えることを特徴とするNoCシステム。
【請求項2】
前記制御部は、
前記第2のバッファに格納されたヘッドフリットに対して前記出力先を設定した後に、該第2のバッファに格納された、前記ヘッドフリットに対応するテイルフリットまでの各後続のフリットの出力先を、前記ヘッドフリットに対して設定した出力先に固定することを特徴とする請求項1に記載のNoCシステム。
【請求項3】
前記制御部は、
前記特定ルータにおける前記複数の第1のバッファのうちに、第1の閾値以上の空き容量を有する第1のバッファが存在することを判定条件とし、該判定条件が満たされているときに、前記第1の閾値以上の空き容量を有する第1のバッファを前記出力先に設定することを特徴とする請求項2に記載のNoCシステム。
【請求項4】
前記特定ルータは、
自身に設けられた前記複数の第1のバッファの夫々の空き容量を示しうる混雑度情報を、該特定ルータに対応する前記入力切替装置に出力する混雑度通知部を備え、
前記入力切替装置における前記制御部は、前記特定ルータにおける前記混雑度通知部からの前記混雑度情報に基づいて前記出力先を設定することを特徴とする請求項3に記載のNoCシステム。
【請求項5】
前記特定ルータと直接接続された前記複数の機能ブロックのうちに他の特定ルータが含まれており、
夫々の前記特定ルータの前記入力切替装置が互いに接続されており、
前記入力切替装置における前記制御部は、
前記判定条件が満たされていないときに、
該入力切替装置の前記複数の第2のバッファに格納されたフリットの出力先を、該入力切替装置と接続された他の入力切替装置に設定すると共に、該他の入力切替装置に前記フリットを出力することを特徴とする請求項3または4に記載のNoCシステム。
【請求項6】
前記入力切替装置における前記制御部は、
前記判定条件が満たされていないときに、
フリットの入力を受け付けないことを示す拒否信号を、前記他の入力切替装置に出力すると共に、
前記他の入力切替装置が前記拒否信号を出力していないことを条件に、該入力切替装置を前記出力先に設定することを特徴とする請求項5に記載のNoCシステム。
【請求項7】
前記入力切替装置における前記制御部は、
該入力切替装置に対応する前記特定ルータにおいて、前記第1の閾値以上の空き容量を有する前記第1のバッファが複数ある場合に、該複数の第1のバッファのうちの、空き容量が最も多い第1のバッファを前記出力先に設定することを特徴とする請求項3から6のいずれか1項に記載のNoCシステム。
【請求項8】
前記入力切替装置における前記制御部は、
該入力切替装置に対応する前記特定ルータの前記複数の第1のバッファの中に、前記第1の閾値以上の空き容量を有する第1のバッファ以外に、前記第1の閾値以下の第2の閾値以上の空き容量を有する他の第1のバッファが存在することを前記判定条件とすることを特徴とする請求項3から7のいずれか1項に記載のNoCシステム。
【請求項9】
NoCルータと、該NoCルータと直接接続された複数の機能ブロックとの間に設けられた入力切替装置であって、前記機能ブロックは、該NoCルータ以外のNoCルータまたはIP(Intellectual Property)であり、前記NoCルータは、前記入力切替装置からのフリットを一時的に格納する複数の第1のバッファと、該複数の第1のバッファに一時的に格納されたフリットを、前記複数の機能ブロックのうちの、該フリットの転送先となる機能ブロックに転送する転送部とを有する前記入力切替装置において、
前記複数の機能ブロックに夫々対応し、該機能ブロックからのフリットを一時的に格納する複数の第2のバッファと、
前記NoCルータにおける前記複数の第1のバッファの空き容量に基づいて、前記複数の第2のバッファに格納されたフリットの出力先を、前記複数の第1のバッファのうちの1つに選択的に設定する制御部と、
前記複数の第2のバッファに格納されたフリットを、前記制御部により該フリットに対して設定された前記出力先に出力する分配部とを備えることを特徴とする入力切替装置。
【請求項10】
前記制御部は、
前記第2のバッファに格納されたヘッドフリットに対して前記出力先を設定した後に、該第2のバッファに格納された、前記ヘッドフリットに対応するテイルフリットまでの各後続のフリットの出力先を、前記ヘッドフリットに対して設定した出力先に固定することを特徴とする請求項9に記載の入力切替装置。
【請求項11】
前記制御部は、
前記複数の第1のバッファのうちに、第1の閾値以上の空き容量を有する第1のバッファが存在することを判定条件とし、該判定条件が満たされているときに、前記第1の閾値以上の空き容量を有する第1のバッファを前記出力先に設定することを特徴とする請求項10に記載の入力切替装置。
【請求項12】
前記NoCルータは、自身に設けられた前記複数の第1のバッファの夫々の空き容量を示しうる混雑度情報を、前記入力切替装置に出力する混雑度通知部を備え、
前記入力切替装置における前記制御部は、前記混雑度通知部からの前記混雑度情報に基づいて前記出力先を設定することを特徴とする請求項11に記載の入力切替装置。
【請求項13】
前記NoCルータと直接接続された前記複数の機能ブロックに含まれる他のNoCルータの前記入力切替装置と接続されており、
前記制御部は、
前記判定条件が満たされていないときに、
前記複数の第2のバッファに格納されたフリットの出力先を、前記他のNoCルータの前記入力切替装置に設定すると共に、該入力切替装置に前記フリットを出力することを特徴とする請求項11または12に記載の入力切替装置。
【請求項14】
前記制御部は、
前記判定条件が満たされていないときに、
フリットの入力を受け付けないことを示す拒否信号を、前記他のNoCルータの前記入力切替装置に出力すると共に、
該入力切替装置が前記拒否信号を出力していないことを条件に、該入力切替装置を前記出力先に設定することを特徴とする請求項13に記載の入力切替装置。
【請求項15】
前記制御部は、
前記第1の閾値以上の空き容量を有する前記第1のバッファが複数ある場合に、該複数の第1のバッファのうちの、空き容量が最も多い第1のバッファを前記出力先に設定することを特徴とする請求項11から14のいずれか1項に記載の入力切替装置。
【請求項16】
前記制御部は、
前記複数の第1のバッファの中に、前記第1の閾値以上の空き容量を有する第1のバッファ以外に、前記第1の閾値以下の第2の閾値以上の空き容量を有する他の第1のバッファが存在することを前記判定条件とすることを特徴とする請求項11から15のいずれか1項に記載の入力切替装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate