説明

アクセス中継ユニット

【課題】CAMユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることが可能なアクセス中継ユニットを提供すること。
【解決手段】アクセス中継ユニット100は、データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するように構成され、上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力するように構成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを転送する処理を実行するデータ転送ユニットによる、CAMユニットへのアクセスを中継するアクセス中継ユニットに関する。
【背景技術】
【0002】
ルータ、及び、スイッチ等のデータを転送するデータ転送装置が知られている。この種のデータ転送装置の一つとして特許文献1に記載のデータ転送装置は、データを転送する処理を実行するデータ転送ユニットと、CAM(Content Addressable Memory)ユニットと、を備える。
【0003】
CAMユニットは、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶する。データ転送ユニットは、データを受信すると、受信したデータの宛先を表す宛先情報をCAMユニットへ出力する。CAMユニットは、宛先情報を受け付け、宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報をデータ転送ユニットへ出力する。データ転送ユニットは、転送先情報を受け付け、受け付けられた転送先情報が表す転送先へ、上記受信されたデータを転送する。
【0004】
また、複数のスレッドを生成し、生成した複数のスレッドにより分散処理を行うマルチスレッド技術が知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−5636号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、マルチスレッド技術をデータ転送装置に適用することが好適であると考えられる。また、CAMユニットは、受け付けた宛先情報を保持するためのコンテキストバッファを複数備え、コンテキストバッファを用いることにより、宛先情報が満足する条件を表す宛先条件情報を検索する検索処理を実行するように構成されることが多い。
【0007】
このような場合、コンテキストバッファと、スレッドと、を予め1つずつ対応付けておくことにより、CAMユニットは、各スレッドからの宛先情報に基づく検索処理を、そのスレッドと対応付けられたコンテキストバッファを用いることにより、実行することができる。
【0008】
しかしながら、スレッドの数がコンテキストバッファの数よりも多い場合、CAMユニットは、コンテキストバッファを用いることができないため、上記複数のスレッドの一部からの宛先情報に基づく検索処理を実行することができない。
【0009】
また、上記複数のスレッドの中には、CAMユニットへアクセスしないスレッドも存在することが多い。例えば、受信されたデータを一時的に記憶する機能、及び、受信されたデータの種別を判別する機能のみを実現するためのスレッドは、CAMユニットへアクセスしない。このように、CAMユニットへアクセスしないスレッドに対して、コンテキストバッファを無駄に割り当ててしまうことにより、コンテキストバッファが不足する虞もある。
【0010】
このため、本発明の目的は、上述した課題である「複数のスレッドの一部からの宛先情報に基づく検索処理をCAMユニットに実行させることができない場合が生じること」を解決することが可能なアクセス中継ユニットを提供することにある。
【課題を解決するための手段】
【0011】
かかる目的を達成するため本発明の一形態であるアクセス中継ユニットは、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するように構成され、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力するように構成される。
【0012】
また、本発明の他の形態であるアクセス中継方法は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するアクセス中継ユニットに適用され、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力する、方法である。
【0013】
また、本発明の他の形態であるアクセス中継プログラムは、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するアクセス中継ユニットに、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力する、
処理を実行させるためのプログラムである。
【0014】
また、本発明の他の形態であるデータ転送装置は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
上記データ転送ユニットによる、上記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備え、
上記データ転送ユニットは、
上記生成された複数のスレッドのそれぞれが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を上記アクセス中継ユニットへ出力するように構成され、
上記アクセス中継ユニットは、
上記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、上記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を上記CAMユニットへ出力するように構成され、
上記CAMユニットは、
上記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を上記アクセス中継ユニットへ出力するように構成される。
【0015】
また、本発明の他の形態であるデータ転送方法は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
上記データ転送ユニットによる、上記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に適用され、
上記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を上記アクセス中継ユニットへ出力し、
上記アクセス中継ユニットが、上記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、上記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記アクセス中継ユニットが、上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を上記CAMユニットへ出力し、
上記CAMユニットが、上記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を上記アクセス中継ユニットへ出力する、方法である。
【0016】
また、本発明の他の形態であるデータ転送プログラムは、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
上記データ転送ユニットによる、上記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に、
上記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を上記アクセス中継ユニットへ出力し、
上記アクセス中継ユニットが、上記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、上記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記アクセス中継ユニットが、上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を上記CAMユニットへ出力し、
上記CAMユニットが、上記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を上記アクセス中継ユニットへ出力する、
処理を実行させるためのプログラムである。
【発明の効果】
【0017】
本発明は、以上のように構成されることにより、CAMユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【図面の簡単な説明】
【0018】
【図1】本発明の第1実施形態に係るデータ転送装置の構成を表す図である。
【図2】本発明の第1実施形態に係るアクセス中継ユニットの構成を表す図である。
【図3】本発明の第1実施形態に係るアクセス管理レジスタが記憶している情報を示した図である。
【図4】本発明の第1実施形態に係る未使用バッファ管理用バッファが記憶している情報を示した図である。
【図5】本発明の第1実施形態に係る結果格納用メモリが記憶している情報を示した図である。
【図6】本発明の第1実施形態に係るキューバッファが記憶している情報を示した図である。
【図7】本発明の第1実施形態に係るデータ転送装置の作動を示したシーケンス図である。
【図8】本発明の第3実施形態に係るアクセス中継ユニットの構成を表す図である。
【発明を実施するための形態】
【0019】
以下、本発明に係る、アクセス中継ユニット、アクセス中継方法、アクセス中継プログラム、データ転送装置、データ転送方法、及び、データ転送プログラム、の各実施形態について図1〜図8を参照しながら説明する。
【0020】
<第1実施形態>
(構成)
図1に示したように、第1実施形態に係るデータ転送装置1は、データ転送ユニット10と、アクセス中継ユニット20と、CAM(Content Addressable Memory)ユニット30と、を備える。データ転送ユニット10、及び、アクセス中継ユニット20は、メモリバスを介して互いに接続されている。また、アクセス中継ユニット20、及び、CAMユニット30も、互いに接続されている。
【0021】
データ転送ユニット10は、ネットワークプロセッサである。データ転送ユニット10は、複数のコア11,…(コア#1〜コア#N、ここで、Nは、正の整数)と、メモリコントローラ12と、を備える。各コア11は、少なくとも1つのスレッドを生成する。各スレッドは、データ転送装置1が受信したデータ(例えば、パケット、セグメント、及び、フレーム等)を転送する処理を実行する。
【0022】
各スレッドは、メモリコントローラ12を介してアクセス中継ユニット20へアクセスする。即ち、各スレッドは、メモリコントローラ12を介して、アクセス中継ユニット20との間で情報を授受する。
【0023】
各スレッドは、受信されたデータの宛先を表す宛先情報と、当該スレッド(自スレッド)を識別するためのスレッド識別情報(スレッドID、例えば、スレッド番号)と、をアクセス中継ユニット20へ出力する。このとき、各スレッドは、スレッド識別情報を含むアドレス情報をアクセス中継ユニット20へ出力することにより、スレッド識別情報をアクセス中継ユニット20へ出力する。
【0024】
ここで、アドレス情報は、データ転送ユニット10がメモリバスを介してアクセス中継ユニット20へアクセスするために用いられる情報である。更に、アドレス情報は、記憶領域を特定する情報である。
【0025】
各スレッドは、転送先を表す転送先情報の出力を要求する転送先出力要求と、当該スレッド(自スレッド)を識別するためのスレッド識別情報と、をアクセス中継ユニット20へ出力する。
【0026】
各スレッドは、アクセス中継ユニット20により出力された転送先情報を受け付ける。各スレッドは、転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、受信されたデータを転送する。
【0027】
アクセス中継ユニット20は、データ転送ユニット10による、CAMユニット30へのアクセスを中継する。本例では、アクセス中継ユニット20は、PLD(Programmable Logic Device)である。なお、アクセス中継ユニット20の詳細については、後述する。
【0028】
本例では、CAMユニット30は、TCAM(Ternary CAM)ユニットである。なお、CAMユニット30は、BCAM(Binary CAM)ユニットであってもよい。
【0029】
CAMユニット30は、テーブル記憶部31と、コンテキストバッファ部32と、を備える。
テーブル記憶部31は、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶する。
【0030】
本例では、データの宛先、及び、転送先のそれぞれは、IP(Internet Protocol)アドレスである。なお、データの宛先、及び、転送先のそれぞれは、MAC(Media Access Control)アドレスであってもよい。また、転送先は、通信ポートを識別するためのポート識別情報(例えば、ポート番号等)であってもよい。
【0031】
コンテキストバッファ部32は、複数のコンテキストバッファを含む。各コンテキストバッファのサイズは、CAMユニット30が検索処理の対象として使用する宛先情報のサイズに基づいて予め設定されている。
【0032】
CAMユニット30は、アクセス中継ユニット20により出力された、バッファ識別情報及び宛先情報を受け付ける。CAMユニット30は、バッファ識別情報及び宛先情報を受け付けた場合、当該バッファ識別情報により識別されるコンテキストバッファを用いることにより、検索処理を実行する。
【0033】
検索処理は、上記受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を検索する処理である。CAMユニット30は、検索された転送先情報をアクセス中継ユニット20へ出力する。
【0034】
アクセス中継ユニット20は、スレッドにより出力された、スレッド識別情報及び宛先情報を受け付ける。アクセス中継ユニット20は、スレッド識別情報及び宛先情報を受け付けた場合、CAMユニット30が備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択する。
【0035】
アクセス中継ユニット20は、上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、上記受け付けられた宛先情報と、をCAMユニット30へ出力する。
【0036】
アクセス中継ユニット20は、CAMユニット30により出力された転送先情報を受け付ける。アクセス中継ユニット20は、転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けたスレッド識別情報と、を対応付けて記憶する。
【0037】
アクセス中継ユニット20は、スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付ける。アクセス中継ユニット20は、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する。
【0038】
更に、アクセス中継ユニット20は、CAMユニット30へ、バッファ識別情報及び宛先情報を出力してから、当該宛先情報に基づいてCAMユニット30により出力された転送先情報をスレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱う。
【0039】
具体的には、アクセス中継ユニット20は、図2に示したように、CAMアクセス変換部21と、キューバッファ22と、未使用バッファ管理用バッファ23と、アクセス管理レジスタ24と、検索結果受付部25と、を備える。
【0040】
キューバッファ22、未使用バッファ管理用バッファ23、及び、アクセス管理レジスタ24のそれぞれは、CAMアクセス変換部21及び検索結果受付部25のそれぞれからアクセス(読み書き)可能に構成されている。
【0041】
検索結果受付部25は、結果格納用メモリ26と、アクセス管理レジスタID保持用レジスタ27と、を備える。
【0042】
CAMアクセス変換部21は、スレッド(データ転送ユニット10)が有するインタフェースに従ったアクセス(本例では、メモリバスを介したアクセス)を、CAMユニット30が有するインタフェースに従ったアクセス(本例では、CAMユニット30により予め定められた形式に従ったデータ)に変換する。
【0043】
アクセス管理レジスタ24は、図3に示したように、CAMユニット30が備えるコンテキストバッファの数と同数のレコードを記憶している。レコードとコンテキストバッファとは、1つずつ対応付けられている。
【0044】
各レコードは、アクセス管理レジスタ24においてレコードを識別するためのレジスタIDと、スレッドを識別するためのスレッドID(スレッド識別情報)と、アクセス状態情報と、ステータス情報と、を含む。
【0045】
アクセス状態情報は、任意のスレッドが、CAMユニット30へアクセスしているか否かを表す情報である。アクセス中継ユニット20は、任意のスレッドが、CAMユニット30へアクセスしていることを表すアクセス状態情報を含むレコードと対応付けられたコンテキストバッファを、使用しているコンテキストバッファとして取り扱う。
【0046】
ステータス情報は、アクセスの状況を表す情報である。アクセスの状況は、第1の状況〜第4の状況のいずれかである。
【0047】
第1の状況は、ステータス情報と(即ち、ステータス情報を含むレコードと)対応付けられているコンテキストバッファに、あるスレッドが割り当てられているとともに、アクセス中継ユニット20が宛先情報に基づく検索処理の実行をCAMユニット30に要求し、且つ、その検索処理の結果としての転送先情報をアクセス中継ユニット20が受け付けていない状況である。
【0048】
第2の状況は、アクセス中継ユニット20がCAMユニット30からの転送先情報を受け付け、且つ、ステータス情報と対応付けられているコンテキストバッファに割り当てられているスレッドへ、当該転送先情報を出力していない状況である。
【0049】
第3の状況は、ステータス情報と対応付けられているコンテキストバッファに割り当てられているスレッドへ転送先情報を出力し、且つ、当該コンテキストバッファへの当該スレッドの割当を解除していない状況である。
【0050】
第4の状況は、ステータス情報と対応付けられているコンテキストバッファに、いずれのスレッドも割り当てられていない(即ち、当該コンテキストバッファへのスレッドの割当が解除された)状況である。
【0051】
未使用バッファ管理用バッファ23は、図4に示したように、レジスタIDを格納する。未使用バッファ管理用バッファ23は、FIFO(First In First Out)方式に従って、いずれのスレッドも割り当てられていない(即ち、使用されていない、未使用の)コンテキストバッファと対応付けられたレジスタIDを格納する。
【0052】
結果格納用メモリ26は、図5に示したように、データ転送ユニット10が生成したスレッドの数と同数のレコードを記憶している。レコードとスレッドとは、1つずつ対応付けられている。各レコードは、転送先情報を含む。
【0053】
アクセス中継ユニット20は、スレッド識別情報及び転送先出力要求を受け付けた場合、結果格納用メモリ26に記憶されているレコードのうちの、当該受け付けられたスレッド識別情報により識別されるスレッドと対応付けて記憶されているレコードに含まれる転送先情報を当該スレッドへ出力する。
【0054】
アクセス管理レジスタID保持用レジスタ27は、結果格納用メモリ26が記憶しているレコードの数と同数のレコードを記憶している。アクセス管理レジスタID保持用レジスタ27が記憶しているレコードと、結果格納用メモリ26が記憶しているレコードと、は1つずつ対応付けられている。アクセス管理レジスタID保持用レジスタ27が記憶しているレコードは、レジスタIDを含む。
【0055】
本例では、アクセス中継ユニット20は、CAMユニット30から転送先情報を受け付けた場合、結果格納用メモリ26に記憶されているレコードのうちの、当該転送先情報が出力される基となった宛先情報とともにスレッドから受け付けたスレッド識別情報により識別されるスレッドと対応付けられたレコード(格納先レコード)に、当該転送先情報を格納する。
【0056】
更に、アクセス中継ユニット20は、アクセス管理レジスタID保持用レジスタ27に記憶されているレコードのうちの、上記格納先レコードと対応付けられたレコードに、アクセス管理レジスタ24に記憶されているレコードのうちの、上記スレッド識別情報を含むレコードに含まれるレジスタIDを、格納する。
【0057】
キューバッファ22は、図6に示したように、検索処理の実行をCAMユニット30に要求しているスレッドを識別するためのスレッド識別情報(スレッドID)と、アクセス管理レジスタ24に記憶されているレコードのうちの、当該スレッド識別情報を含むレコードに含まれるレジスタIDと、を含むレコードを格納する。
【0058】
(作動)
次に、上述したデータ転送装置1の作動について図7を参照しながら説明する。
先ず、データ転送ユニット10は、複数のスレッドを生成する。その後、データ転送装置1は、データ(本例では、パケット)を受信する。データ転送ユニット10は、生成された複数のスレッドの1つを選択し、選択されたスレッドに、上記受信されたデータを転送する処理を実行させる。
【0059】
このスレッドは、先ず、メモリバスを介してアクセス中継ユニット20へアクセスする(即ち、メモリアクセスを行う)。具体的には、スレッドは、メモリバスの一部を構成するアドレスバスを介して、当該スレッド(自スレッド)を識別するためのスレッド識別情報を含むアドレス情報をアクセス中継ユニット20へ出力する。更に、スレッドは、メモリバスの一部を構成するデータバスを介して、受信されたデータの宛先を表す宛先情報を含むデータ情報をアクセス中継ユニット20へ出力する。
【0060】
即ち、スレッドは、受信されたデータの宛先を表す宛先情報と、当該スレッド(自スレッド)を識別するためのスレッド識別情報と、をアクセス中継ユニット20へ出力する(ステップS101)。
【0061】
これにより、アクセス中継ユニット20は、宛先情報、及び、スレッド識別情報を受け付ける。そして、アクセス中継ユニット20は、使用されていない(未使用の)コンテキストバッファを、受け付けられたスレッド識別情報により識別されるスレッドに割り当てる(ステップS102)。
【0062】
具体的には、アクセス中継ユニット20は、未使用バッファ管理用バッファ23に格納されているレジスタIDのうちの、最初に格納されたレジスタIDを取得する。更に、アクセス中継ユニット20は、取得されたレジスタIDを未使用バッファ管理用バッファ23から削除(消去)する。次いで、アクセス中継ユニット20は、アクセス管理レジスタ24に記憶されているレコードのうちの、上記取得されたレジスタIDにより識別されるレコードを特定する。
【0063】
そして、アクセス中継ユニット20は、上記特定されたレコードに含まれるスレッドIDとして、上記受け付けられたスレッド識別情報を格納する。更に、アクセス中継ユニット20は、当該レコードに含まれるアクセス状態情報を、任意のスレッドが、CAMユニット30へアクセスしていることを表す情報(本例では、「ON」)に設定する。
【0064】
次いで、アクセス中継ユニット20は、CAMアクセス変換部21に、スレッドが有するインタフェースに従ったアクセスを、CAMユニット30が有するインタフェースに従ったアクセスに変換する処理を実行させる。
【0065】
そして、アクセス中継ユニット20は、変換後のデータを、CAMユニット30へ出力する(ステップS103)。ここで、変換後のデータは、スレッドに割り当てられたコンテキストバッファを識別するためのバッファ識別情報と、宛先情報と、を含むデータである。更に、アクセス中継ユニット20は、上記特定されたレコードに含まれるステータス情報を、第1の状況を表す情報に設定する。
【0066】
次いで、アクセス中継ユニット20は、上記受け付けられたスレッド識別情報と、上記特定されたレコードを識別するためのレコードIDと、を含むレコードをキューバッファ22に格納する。
【0067】
CAMユニット30は、アクセス中継ユニット20により出力された、バッファ識別情報及び宛先情報を受け付ける。そして、CAMユニット30は、当該バッファ識別情報により識別されるコンテキストバッファを用いることにより、当該宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を検索する検索処理を実行する(ステップS104)。
【0068】
次いで、CAMユニット30は、検索された転送先情報をアクセス中継ユニット20へ出力する(ステップS105)。
【0069】
これにより、アクセス中継ユニット20の検索結果受付部25は、転送先情報を受け付ける。そして、アクセス中継ユニット20は、キューバッファ22に格納されている、スレッド識別情報、及び、レジスタIDを取得する。更に、アクセス中継ユニット20は、取得された、スレッド識別情報、及び、レジスタIDをキューバッファ22から削除(消去)する。
【0070】
そして、アクセス中継ユニット20は、結果格納用メモリ26に記憶されているレコードのうちの、上記取得されたスレッド識別情報により識別されるスレッドと対応付けられたレコードを特定する。次いで、アクセス中継ユニット20は、特定されたレコードに、上記受け付けられた転送先情報を格納する(ステップS106)。
【0071】
即ち、アクセス中継ユニット20は、受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けたスレッド識別情報と、を対応付けて記憶している、と言うことができる。
【0072】
更に、アクセス中継ユニット20は、アクセス管理レジスタID保持用レジスタ27に記憶されているレコードのうちの、上記特定されたレコードと対応付けられたレコードに、上記取得されたレジスタIDを格納する。
【0073】
加えて、アクセス中継ユニット20は、アクセス管理レジスタ24に記憶されているレコードのうちの、上記レジスタIDにより識別されるレコードに含まれるステータス情報を、第2の状況を表す情報に設定する。
【0074】
その後、スレッドは、メモリバスを介してアクセス中継ユニット20へアクセスする。具体的には、スレッドは、メモリバスの一部を構成するアドレスバスを介して、当該スレッド(自スレッド)を識別するためのスレッド識別情報を含むアドレス情報をアクセス中継ユニット20へ出力する。更に、スレッドは、メモリバスの一部を構成するデータバスを介して、転送先出力要求を含むデータ情報をアクセス中継ユニット20へ出力する。
【0075】
即ち、スレッドは、転送先出力要求と、当該スレッド(自スレッド)を識別するためのスレッド識別情報と、をアクセス中継ユニット20へ出力する(ステップS107)。
【0076】
これにより、アクセス中継ユニット20は、転送先出力要求、及び、スレッド識別情報を受け付ける。そして、アクセス中継ユニット20は、結果格納用メモリ26に記憶されているレコードのうちの、上記受け付けられたスレッド識別情報により識別されるスレッドと対応付けられたレコードを特定する。
【0077】
次いで、アクセス中継ユニット20は、特定されたレコードに格納されている転送先情報を、上記受け付けられたスレッド識別情報により識別されるスレッドへ出力する(ステップS108)。
【0078】
そして、アクセス中継ユニット20は、アクセス管理レジスタID保持用レジスタ27に記憶されているレコードのうちの、上記特定されたレコードと対応付けられたレコードに含まれるレジスタIDを取得する。
【0079】
次いで、アクセス中継ユニット20は、アクセス管理レジスタ24に記憶されているレコードのうちの、上記取得されたレジスタIDにより識別されるレコードを特定し、当該特定されたレコードに含まれる情報を削除(消去)する。加えて、アクセス中継ユニット20は、上記取得されたレジスタIDを、未使用バッファ管理用バッファ23に新たに格納(追加)する。
【0080】
このようにして、アクセス中継ユニット20は、スレッドに割り当てていたコンテキストバッファを解放する(スレッドへのコンテキストバッファの割当を解除する)(ステップS109)。
【0081】
スレッドは、アクセス中継ユニット20からの転送先情報を受け付ける。そして、スレッドは、当該受け付けられた転送先情報が表す転送先へ、上記受信されたデータを転送する(ステップS110)。
【0082】
以上、説明したように、本発明の第1実施形態に係るアクセス中継ユニット20は、CAMユニット30が備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、をCAMユニット30へ出力する。
【0083】
これによれば、スレッドがCAMユニット30へ宛先情報に基づく検索処理を要求する際に、コンテキストバッファが不足する可能性を低減することができる。これにより、CAMユニット30に任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【0084】
更に、本発明の第1実施形態に係るアクセス中継ユニット20は、CAMユニット30により出力された転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶する。加えて、アクセス中継ユニット20は、スレッドにより出力されたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する。
【0085】
これによれば、各スレッドは、自スレッドが出力した宛先情報に基づいてCAMユニット30により出力された転送先情報を、確実に受け取ることができる。
【0086】
加えて、本発明の第1実施形態に係るアクセス中継ユニット20は、CAMユニット30へ、バッファ識別情報及び宛先情報を出力してから、当該宛先情報に基づいてCAMユニット30により出力された転送先情報を当該スレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱う。
これによれば、データを転送する処理を各スレッドに確実に実行させることができる。
【0087】
更に、本発明の第1実施形態に係るアクセス中継ユニット20は、メモリバスを介してデータ転送ユニット10と接続される。加えて、スレッド識別情報は、データ転送ユニット10がメモリバスを介してアクセス中継ユニット20へアクセスするために用いられ且つ記憶領域を特定するアドレス情報に含まれる。
【0088】
これによれば、データ転送ユニット10は、アクセス中継ユニット20へ高速にアクセスすることができる。
【0089】
<第2実施形態>
次に、本発明の第2実施形態に係るデータ転送装置について説明する。第2実施形態に係るデータ転送装置は、上記第1実施形態に係るデータ転送装置に対して、すべてのコンテキストバッファが使用されているとき、スレッドが所定の待機時間だけ待機するように構成されている点において相違している。従って、以下、かかる相違点を中心として説明する。
【0090】
第2実施形態に係るアクセス中継ユニット20は、スレッドにより出力された、宛先情報、及び、スレッド識別情報を受け付けた場合において、未使用バッファ管理用バッファ23に、いずれのレジスタIDも格納されていないとき(即ち、複数のコンテキストバッファのすべてが使用されているとき)、その旨を表すバッファ使用不可情報を当該スレッドへ出力する。
【0091】
各スレッドは、宛先情報、及び、スレッド識別情報をアクセス中継ユニット20へ出力した場合において、バッファ使用不可情報をアクセス中継ユニット20から受け付けたとき、予め設定された待機時間だけ待機し、その後、宛先情報、及び、スレッド識別情報をアクセス中継ユニット20へ再び出力する。
【0092】
従って、第2実施形態に係るデータ転送装置1によれば、スレッドがCAMユニット30に対して検索処理の実行を無駄に要求することを回避することができる。
【0093】
<第3実施形態>
次に、本発明の第3実施形態に係るアクセス中継ユニットについて図8を参照しながら説明する。
第3実施形態に係るアクセス中継ユニット100は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するように構成され、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力するように構成される。
【0094】
これによれば、スレッドがCAMユニットへ宛先情報に基づく検索処理を要求する際に、コンテキストバッファが不足する可能性を低減することができる。これにより、CAMユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【0095】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【0096】
なお、上記各実施形態においてアクセス中継ユニット20の各機能は、回路等のハードウェアにより実現されていた。ところで、アクセス中継ユニット20は、処理装置と、プログラム(ソフトウェア)を記憶する記憶装置と、を備えるとともに、処理装置がそのプログラムを実行することにより、各機能を実現するように構成されていてもよい。
【0097】
この場合、プログラムは、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0098】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【0099】
<付記>
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【0100】
(付記1)
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するように構成され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力するように構成されたアクセス中継ユニット。
【0101】
これによれば、スレッドがCAMユニットへ宛先情報に基づく検索処理を要求する際に、コンテキストバッファが不足する可能性を低減することができる。これにより、CAMユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【0102】
(付記2)
付記1に記載のアクセス中継ユニットであって、
前記CAMユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【0103】
これによれば、各スレッドは、自スレッドが出力した宛先情報に基づいてCAMユニットにより出力された転送先情報を、確実に受け取ることができる。
【0104】
(付記3)
付記2に記載のアクセス中継ユニットであって、
前記CAMユニットへ、前記バッファ識別情報及び前記宛先情報を出力してから、当該宛先情報に基づいて当該CAMユニットにより出力された前記転送先情報を前記スレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱うように構成されたアクセス中継ユニット。
【0105】
これによれば、データを転送する処理を各スレッドに確実に実行させることができる。
【0106】
(付記4)
付記1乃至付記3のいずれか一項に記載のアクセス中継ユニットであって、
前記スレッドにより出力された、宛先情報、及び、スレッド識別情報を受け付けた場合において、前記複数のコンテキストバッファのすべてが使用されているとき、その旨を表すバッファ使用不可情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【0107】
これによれば、スレッドがCAMユニットに対して検索処理の実行を無駄に要求することを回避することができる。
【0108】
(付記5)
付記1乃至付記4のいずれか一項に記載のアクセス中継ユニットであって、
メモリバスを介して前記データ転送ユニットと接続され、
前記スレッド識別情報は、前記データ転送ユニットが前記メモリバスを介して前記アクセス中継ユニットへアクセスするために用いられ且つ記憶領域を特定するアドレス情報に含まれるアクセス中継ユニット。
【0109】
これによれば、データ転送ユニットは、アクセス中継ユニットへ高速にアクセスすることができる。
【0110】
(付記6)
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するアクセス中継ユニットに適用され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力する、
アクセス中継方法。
【0111】
(付記7)
付記6に記載のアクセス中継方法であって、
前記CAMユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する、
アクセス中継方法。
【0112】
(付記8)
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するアクセス中継ユニットに、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力する、
処理を実行させるためのアクセス中継プログラム。
【0113】
(付記9)
付記8に記載のアクセス中継プログラムであって、
前記アクセス中継ユニットに、更に、
前記CAMユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する、
処理を実行させるためのアクセス中継プログラム。
【0114】
(付記10)
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
前記データ転送ユニットによる、前記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備え、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力するように構成され、
前記アクセス中継ユニットは、
前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記CAMユニットへ出力するように構成され、
前記CAMユニットは、
前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力するように構成されたデータ転送装置。
【0115】
(付記11)
付記10に記載のデータ転送装置であって、
前記アクセス中継ユニットは、
前記CAMユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、転送先情報の出力を要求する転送先出力要求と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力するように構成され、
前記アクセス中継ユニットは、更に、
前記スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力するように構成され、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、前記アクセス中継ユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、前記受信されたデータを転送するように構成されたデータ転送装置。
【0116】
(付記12)
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
前記データ転送ユニットによる、前記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に適用され、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記CAMユニットへ出力し、
前記CAMユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
データ転送方法。
【0117】
(付記13)
付記12に記載のデータ転送方法であって、
前記アクセス中継ユニットが、前記CAMユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドが、転送先情報の出力を要求する転送先出力要求と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力し、
前記スレッドが、前記アクセス中継ユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、前記受信されたデータを転送する、
データ転送方法。
【0118】
(付記14)
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
前記データ転送ユニットによる、前記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記CAMユニットへ出力し、
前記CAMユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
処理を実行させるためのデータ転送プログラム。
【0119】
(付記15)
付記14に記載のデータ転送プログラムであって、
前記データ転送装置に、更に、
前記アクセス中継ユニットが、前記CAMユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドが、転送先情報の出力を要求する転送先出力要求と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力し、
前記スレッドが、前記アクセス中継ユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、前記受信されたデータを転送する、
処理を実行させるためのデータ転送プログラム。
【産業上の利用可能性】
【0120】
本発明は、データを転送する処理を実行するデータ転送ユニットによる、CAMユニットへのアクセスを中継するアクセス中継ユニット等に適用可能である。
【符号の説明】
【0121】
1 データ転送装置
10 データ転送ユニット
11 コア
12 メモリコントローラ
20 アクセス中継ユニット
21 CAMアクセス変換部
22 キューバッファ
23 未使用バッファ管理用バッファ
24 アクセス管理レジスタ
25 検索結果受付部
26 結果格納用メモリ
27 アクセス管理レジスタID保持用レジスタ
30 CAMユニット
31 テーブル記憶部
32 コンテキストバッファ部
100 アクセス中継ユニット

【特許請求の範囲】
【請求項1】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するように構成され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力するように構成されたアクセス中継ユニット。
【請求項2】
請求項1に記載のアクセス中継ユニットであって、
前記CAMユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【請求項3】
請求項2に記載のアクセス中継ユニットであって、
前記CAMユニットへ、前記バッファ識別情報及び前記宛先情報を出力してから、当該宛先情報に基づいて当該CAMユニットにより出力された前記転送先情報を前記スレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱うように構成されたアクセス中継ユニット。
【請求項4】
請求項1乃至請求項3のいずれかに記載のアクセス中継ユニットであって、
前記スレッドにより出力された、宛先情報、及び、スレッド識別情報を受け付けた場合において、前記複数のコンテキストバッファのすべてが使用されているとき、その旨を表すバッファ使用不可情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【請求項5】
請求項1乃至請求項4のいずれかに記載のアクセス中継ユニットであって、
メモリバスを介して前記データ転送ユニットと接続され、
前記スレッド識別情報は、前記データ転送ユニットが前記メモリバスを介して前記アクセス中継ユニットへアクセスするために用いられ且つ記憶領域を特定するアドレス情報に含まれるアクセス中継ユニット。
【請求項6】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するアクセス中継ユニットに適用され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力する、
アクセス中継方法。
【請求項7】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、CAM(Content Addressable Memory)ユニットへのアクセスを中継するアクセス中継ユニットに、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記CAMユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該CAMユニットへ出力する、
処理を実行させるためのアクセス中継プログラム。
【請求項8】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
前記データ転送ユニットによる、前記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備え、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力するように構成され、
前記アクセス中継ユニットは、
前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記CAMユニットへ出力するように構成され、
前記CAMユニットは、
前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力するように構成されたデータ転送装置。
【請求項9】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
前記データ転送ユニットによる、前記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に適用され、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記CAMユニットへ出力し、
前記CAMユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
データ転送方法。
【請求項10】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するCAM(Content Addressable Memory)ユニットと、
前記データ転送ユニットによる、前記CAMユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記CAMユニットへ出力し、
前記CAMユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
処理を実行させるためのデータ転送プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate