(57)【要約】【課題】ＣＡＭユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることが可能なアクセス中継ユニットを提供すること。【解決手段】アクセス中継ユニット１００は、データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するように構成され、上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力するように構成される。【選択図】図８
2012257063.tif 000002
【特許請求の範囲】
【請求項１】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するように構成され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力するように構成されたアクセス中継ユニット。
【請求項２】
請求項１に記載のアクセス中継ユニットであって、
前記ＣＡＭユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【請求項３】
請求項２に記載のアクセス中継ユニットであって、
前記ＣＡＭユニットへ、前記バッファ識別情報及び前記宛先情報を出力してから、当該宛先情報に基づいて当該ＣＡＭユニットにより出力された前記転送先情報を前記スレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱うように構成されたアクセス中継ユニット。
【請求項４】
請求項１乃至請求項３のいずれかに記載のアクセス中継ユニットであって、
前記スレッドにより出力された、宛先情報、及び、スレッド識別情報を受け付けた場合において、前記複数のコンテキストバッファのすべてが使用されているとき、その旨を表すバッファ使用不可情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【請求項５】
請求項１乃至請求項４のいずれかに記載のアクセス中継ユニットであって、
メモリバスを介して前記データ転送ユニットと接続され、
前記スレッド識別情報は、前記データ転送ユニットが前記メモリバスを介して前記アクセス中継ユニットへアクセスするために用いられ且つ記憶領域を特定するアドレス情報に含まれるアクセス中継ユニット。
【請求項６】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するアクセス中継ユニットに適用され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力する、
アクセス中継方法。
【請求項７】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するアクセス中継ユニットに、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力する、
処理を実行させるためのアクセス中継プログラム。
【請求項８】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
前記データ転送ユニットによる、前記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備え、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力するように構成され、
前記アクセス中継ユニットは、
前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記ＣＡＭユニットへ出力するように構成され、
前記ＣＡＭユニットは、
前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力するように構成されたデータ転送装置。
【請求項９】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
前記データ転送ユニットによる、前記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に適用され、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記ＣＡＭユニットへ出力し、
前記ＣＡＭユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
データ転送方法。
【請求項１０】
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
前記データ転送ユニットによる、前記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記ＣＡＭユニットへ出力し、
前記ＣＡＭユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
処理を実行させるためのデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを転送する処理を実行するデータ転送ユニットによる、ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットに関する。
【背景技術】
【０００２】
ルータ、及び、スイッチ等のデータを転送するデータ転送装置が知られている。この種のデータ転送装置の一つとして特許文献１に記載のデータ転送装置は、データを転送する処理を実行するデータ転送ユニットと、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、を備える。
【０００３】
ＣＡＭユニットは、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶する。データ転送ユニットは、データを受信すると、受信したデータの宛先を表す宛先情報をＣＡＭユニットへ出力する。ＣＡＭユニットは、宛先情報を受け付け、宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報をデータ転送ユニットへ出力する。データ転送ユニットは、転送先情報を受け付け、受け付けられた転送先情報が表す転送先へ、上記受信されたデータを転送する。
【０００４】
また、複数のスレッドを生成し、生成した複数のスレッドにより分散処理を行うマルチスレッド技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−５６３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、マルチスレッド技術をデータ転送装置に適用することが好適であると考えられる。また、ＣＡＭユニットは、受け付けた宛先情報を保持するためのコンテキストバッファを複数備え、コンテキストバッファを用いることにより、宛先情報が満足する条件を表す宛先条件情報を検索する検索処理を実行するように構成されることが多い。
【０００７】
このような場合、コンテキストバッファと、スレッドと、を予め１つずつ対応付けておくことにより、ＣＡＭユニットは、各スレッドからの宛先情報に基づく検索処理を、そのスレッドと対応付けられたコンテキストバッファを用いることにより、実行することができる。
【０００８】
しかしながら、スレッドの数がコンテキストバッファの数よりも多い場合、ＣＡＭユニットは、コンテキストバッファを用いることができないため、上記複数のスレッドの一部からの宛先情報に基づく検索処理を実行することができない。
【０００９】
また、上記複数のスレッドの中には、ＣＡＭユニットへアクセスしないスレッドも存在することが多い。例えば、受信されたデータを一時的に記憶する機能、及び、受信されたデータの種別を判別する機能のみを実現するためのスレッドは、ＣＡＭユニットへアクセスしない。このように、ＣＡＭユニットへアクセスしないスレッドに対して、コンテキストバッファを無駄に割り当ててしまうことにより、コンテキストバッファが不足する虞もある。
【００１０】
このため、本発明の目的は、上述した課題である「複数のスレッドの一部からの宛先情報に基づく検索処理をＣＡＭユニットに実行させることができない場合が生じること」を解決することが可能なアクセス中継ユニットを提供することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態であるアクセス中継ユニットは、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するように構成され、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力するように構成される。
【００１２】
また、本発明の他の形態であるアクセス中継方法は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するアクセス中継ユニットに適用され、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力する、方法である。
【００１３】
また、本発明の他の形態であるアクセス中継プログラムは、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するアクセス中継ユニットに、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力する、
処理を実行させるためのプログラムである。
【００１４】
また、本発明の他の形態であるデータ転送装置は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
上記データ転送ユニットによる、上記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備え、
上記データ転送ユニットは、
上記生成された複数のスレッドのそれぞれが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を上記アクセス中継ユニットへ出力するように構成され、
上記アクセス中継ユニットは、
上記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、上記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を上記ＣＡＭユニットへ出力するように構成され、
上記ＣＡＭユニットは、
上記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を上記アクセス中継ユニットへ出力するように構成される。
【００１５】
また、本発明の他の形態であるデータ転送方法は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
上記データ転送ユニットによる、上記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に適用され、
上記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を上記アクセス中継ユニットへ出力し、
上記アクセス中継ユニットが、上記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、上記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記アクセス中継ユニットが、上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を上記ＣＡＭユニットへ出力し、
上記ＣＡＭユニットが、上記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を上記アクセス中継ユニットへ出力する、方法である。
【００１６】
また、本発明の他の形態であるデータ転送プログラムは、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
上記データ転送ユニットによる、上記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に、
上記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を上記アクセス中継ユニットへ出力し、
上記アクセス中継ユニットが、上記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、上記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
上記アクセス中継ユニットが、上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を上記ＣＡＭユニットへ出力し、
上記ＣＡＭユニットが、上記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を上記アクセス中継ユニットへ出力する、
処理を実行させるためのプログラムである。
【発明の効果】
【００１７】
本発明は、以上のように構成されることにより、ＣＡＭユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１実施形態に係るデータ転送装置の構成を表す図である。
【図２】本発明の第１実施形態に係るアクセス中継ユニットの構成を表す図である。
【図３】本発明の第１実施形態に係るアクセス管理レジスタが記憶している情報を示した図である。
【図４】本発明の第１実施形態に係る未使用バッファ管理用バッファが記憶している情報を示した図である。
【図５】本発明の第１実施形態に係る結果格納用メモリが記憶している情報を示した図である。
【図６】本発明の第１実施形態に係るキューバッファが記憶している情報を示した図である。
【図７】本発明の第１実施形態に係るデータ転送装置の作動を示したシーケンス図である。
【図８】本発明の第３実施形態に係るアクセス中継ユニットの構成を表す図である。
【発明を実施するための形態】
【００１９】
以下、本発明に係る、アクセス中継ユニット、アクセス中継方法、アクセス中継プログラム、データ転送装置、データ転送方法、及び、データ転送プログラム、の各実施形態について図１〜図８を参照しながら説明する。
【００２０】
＜第１実施形態＞
（構成）
図１に示したように、第１実施形態に係るデータ転送装置１は、データ転送ユニット１０と、アクセス中継ユニット２０と、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニット３０と、を備える。データ転送ユニット１０、及び、アクセス中継ユニット２０は、メモリバスを介して互いに接続されている。また、アクセス中継ユニット２０、及び、ＣＡＭユニット３０も、互いに接続されている。
【００２１】
データ転送ユニット１０は、ネットワークプロセッサである。データ転送ユニット１０は、複数のコア１１，…（コア＃１〜コア＃Ｎ、ここで、Ｎは、正の整数）と、メモリコントローラ１２と、を備える。各コア１１は、少なくとも１つのスレッドを生成する。各スレッドは、データ転送装置１が受信したデータ（例えば、パケット、セグメント、及び、フレーム等）を転送する処理を実行する。
【００２２】
各スレッドは、メモリコントローラ１２を介してアクセス中継ユニット２０へアクセスする。即ち、各スレッドは、メモリコントローラ１２を介して、アクセス中継ユニット２０との間で情報を授受する。
【００２３】
各スレッドは、受信されたデータの宛先を表す宛先情報と、当該スレッド（自スレッド）を識別するためのスレッド識別情報（スレッドＩＤ、例えば、スレッド番号）と、をアクセス中継ユニット２０へ出力する。このとき、各スレッドは、スレッド識別情報を含むアドレス情報をアクセス中継ユニット２０へ出力することにより、スレッド識別情報をアクセス中継ユニット２０へ出力する。
【００２４】
ここで、アドレス情報は、データ転送ユニット１０がメモリバスを介してアクセス中継ユニット２０へアクセスするために用いられる情報である。更に、アドレス情報は、記憶領域を特定する情報である。
【００２５】
各スレッドは、転送先を表す転送先情報の出力を要求する転送先出力要求と、当該スレッド（自スレッド）を識別するためのスレッド識別情報と、をアクセス中継ユニット２０へ出力する。
【００２６】
各スレッドは、アクセス中継ユニット２０により出力された転送先情報を受け付ける。各スレッドは、転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、受信されたデータを転送する。
【００２７】
アクセス中継ユニット２０は、データ転送ユニット１０による、ＣＡＭユニット３０へのアクセスを中継する。本例では、アクセス中継ユニット２０は、ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）である。なお、アクセス中継ユニット２０の詳細については、後述する。
【００２８】
本例では、ＣＡＭユニット３０は、ＴＣＡＭ（Ｔｅｒｎａｒｙ  ＣＡＭ）ユニットである。なお、ＣＡＭユニット３０は、ＢＣＡＭ（Ｂｉｎａｒｙ  ＣＡＭ）ユニットであってもよい。
【００２９】
ＣＡＭユニット３０は、テーブル記憶部３１と、コンテキストバッファ部３２と、を備える。
テーブル記憶部３１は、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶する。
【００３０】
本例では、データの宛先、及び、転送先のそれぞれは、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスである。なお、データの宛先、及び、転送先のそれぞれは、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであってもよい。また、転送先は、通信ポートを識別するためのポート識別情報（例えば、ポート番号等）であってもよい。
【００３１】
コンテキストバッファ部３２は、複数のコンテキストバッファを含む。各コンテキストバッファのサイズは、ＣＡＭユニット３０が検索処理の対象として使用する宛先情報のサイズに基づいて予め設定されている。
【００３２】
ＣＡＭユニット３０は、アクセス中継ユニット２０により出力された、バッファ識別情報及び宛先情報を受け付ける。ＣＡＭユニット３０は、バッファ識別情報及び宛先情報を受け付けた場合、当該バッファ識別情報により識別されるコンテキストバッファを用いることにより、検索処理を実行する。
【００３３】
検索処理は、上記受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を検索する処理である。ＣＡＭユニット３０は、検索された転送先情報をアクセス中継ユニット２０へ出力する。
【００３４】
アクセス中継ユニット２０は、スレッドにより出力された、スレッド識別情報及び宛先情報を受け付ける。アクセス中継ユニット２０は、スレッド識別情報及び宛先情報を受け付けた場合、ＣＡＭユニット３０が備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択する。
【００３５】
アクセス中継ユニット２０は、上記選択されたコンテキストバッファを識別するためのバッファ識別情報と、上記受け付けられた宛先情報と、をＣＡＭユニット３０へ出力する。
【００３６】
アクセス中継ユニット２０は、ＣＡＭユニット３０により出力された転送先情報を受け付ける。アクセス中継ユニット２０は、転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けたスレッド識別情報と、を対応付けて記憶する。
【００３７】
アクセス中継ユニット２０は、スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付ける。アクセス中継ユニット２０は、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する。
【００３８】
更に、アクセス中継ユニット２０は、ＣＡＭユニット３０へ、バッファ識別情報及び宛先情報を出力してから、当該宛先情報に基づいてＣＡＭユニット３０により出力された転送先情報をスレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱う。
【００３９】
具体的には、アクセス中継ユニット２０は、図２に示したように、ＣＡＭアクセス変換部２１と、キューバッファ２２と、未使用バッファ管理用バッファ２３と、アクセス管理レジスタ２４と、検索結果受付部２５と、を備える。
【００４０】
キューバッファ２２、未使用バッファ管理用バッファ２３、及び、アクセス管理レジスタ２４のそれぞれは、ＣＡＭアクセス変換部２１及び検索結果受付部２５のそれぞれからアクセス（読み書き）可能に構成されている。
【００４１】
検索結果受付部２５は、結果格納用メモリ２６と、アクセス管理レジスタＩＤ保持用レジスタ２７と、を備える。
【００４２】
ＣＡＭアクセス変換部２１は、スレッド（データ転送ユニット１０）が有するインタフェースに従ったアクセス（本例では、メモリバスを介したアクセス）を、ＣＡＭユニット３０が有するインタフェースに従ったアクセス（本例では、ＣＡＭユニット３０により予め定められた形式に従ったデータ）に変換する。
【００４３】
アクセス管理レジスタ２４は、図３に示したように、ＣＡＭユニット３０が備えるコンテキストバッファの数と同数のレコードを記憶している。レコードとコンテキストバッファとは、１つずつ対応付けられている。
【００４４】
各レコードは、アクセス管理レジスタ２４においてレコードを識別するためのレジスタＩＤと、スレッドを識別するためのスレッドＩＤ（スレッド識別情報）と、アクセス状態情報と、ステータス情報と、を含む。
【００４５】
アクセス状態情報は、任意のスレッドが、ＣＡＭユニット３０へアクセスしているか否かを表す情報である。アクセス中継ユニット２０は、任意のスレッドが、ＣＡＭユニット３０へアクセスしていることを表すアクセス状態情報を含むレコードと対応付けられたコンテキストバッファを、使用しているコンテキストバッファとして取り扱う。
【００４６】
ステータス情報は、アクセスの状況を表す情報である。アクセスの状況は、第１の状況〜第４の状況のいずれかである。
【００４７】
第１の状況は、ステータス情報と（即ち、ステータス情報を含むレコードと）対応付けられているコンテキストバッファに、あるスレッドが割り当てられているとともに、アクセス中継ユニット２０が宛先情報に基づく検索処理の実行をＣＡＭユニット３０に要求し、且つ、その検索処理の結果としての転送先情報をアクセス中継ユニット２０が受け付けていない状況である。
【００４８】
第２の状況は、アクセス中継ユニット２０がＣＡＭユニット３０からの転送先情報を受け付け、且つ、ステータス情報と対応付けられているコンテキストバッファに割り当てられているスレッドへ、当該転送先情報を出力していない状況である。
【００４９】
第３の状況は、ステータス情報と対応付けられているコンテキストバッファに割り当てられているスレッドへ転送先情報を出力し、且つ、当該コンテキストバッファへの当該スレッドの割当を解除していない状況である。
【００５０】
第４の状況は、ステータス情報と対応付けられているコンテキストバッファに、いずれのスレッドも割り当てられていない（即ち、当該コンテキストバッファへのスレッドの割当が解除された）状況である。
【００５１】
未使用バッファ管理用バッファ２３は、図４に示したように、レジスタＩＤを格納する。未使用バッファ管理用バッファ２３は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式に従って、いずれのスレッドも割り当てられていない（即ち、使用されていない、未使用の）コンテキストバッファと対応付けられたレジスタＩＤを格納する。
【００５２】
結果格納用メモリ２６は、図５に示したように、データ転送ユニット１０が生成したスレッドの数と同数のレコードを記憶している。レコードとスレッドとは、１つずつ対応付けられている。各レコードは、転送先情報を含む。
【００５３】
アクセス中継ユニット２０は、スレッド識別情報及び転送先出力要求を受け付けた場合、結果格納用メモリ２６に記憶されているレコードのうちの、当該受け付けられたスレッド識別情報により識別されるスレッドと対応付けて記憶されているレコードに含まれる転送先情報を当該スレッドへ出力する。
【００５４】
アクセス管理レジスタＩＤ保持用レジスタ２７は、結果格納用メモリ２６が記憶しているレコードの数と同数のレコードを記憶している。アクセス管理レジスタＩＤ保持用レジスタ２７が記憶しているレコードと、結果格納用メモリ２６が記憶しているレコードと、は１つずつ対応付けられている。アクセス管理レジスタＩＤ保持用レジスタ２７が記憶しているレコードは、レジスタＩＤを含む。
【００５５】
本例では、アクセス中継ユニット２０は、ＣＡＭユニット３０から転送先情報を受け付けた場合、結果格納用メモリ２６に記憶されているレコードのうちの、当該転送先情報が出力される基となった宛先情報とともにスレッドから受け付けたスレッド識別情報により識別されるスレッドと対応付けられたレコード（格納先レコード）に、当該転送先情報を格納する。
【００５６】
更に、アクセス中継ユニット２０は、アクセス管理レジスタＩＤ保持用レジスタ２７に記憶されているレコードのうちの、上記格納先レコードと対応付けられたレコードに、アクセス管理レジスタ２４に記憶されているレコードのうちの、上記スレッド識別情報を含むレコードに含まれるレジスタＩＤを、格納する。
【００５７】
キューバッファ２２は、図６に示したように、検索処理の実行をＣＡＭユニット３０に要求しているスレッドを識別するためのスレッド識別情報（スレッドＩＤ）と、アクセス管理レジスタ２４に記憶されているレコードのうちの、当該スレッド識別情報を含むレコードに含まれるレジスタＩＤと、を含むレコードを格納する。
【００５８】
（作動）
次に、上述したデータ転送装置１の作動について図７を参照しながら説明する。
先ず、データ転送ユニット１０は、複数のスレッドを生成する。その後、データ転送装置１は、データ（本例では、パケット）を受信する。データ転送ユニット１０は、生成された複数のスレッドの１つを選択し、選択されたスレッドに、上記受信されたデータを転送する処理を実行させる。
【００５９】
このスレッドは、先ず、メモリバスを介してアクセス中継ユニット２０へアクセスする（即ち、メモリアクセスを行う）。具体的には、スレッドは、メモリバスの一部を構成するアドレスバスを介して、当該スレッド（自スレッド）を識別するためのスレッド識別情報を含むアドレス情報をアクセス中継ユニット２０へ出力する。更に、スレッドは、メモリバスの一部を構成するデータバスを介して、受信されたデータの宛先を表す宛先情報を含むデータ情報をアクセス中継ユニット２０へ出力する。
【００６０】
即ち、スレッドは、受信されたデータの宛先を表す宛先情報と、当該スレッド（自スレッド）を識別するためのスレッド識別情報と、をアクセス中継ユニット２０へ出力する（ステップＳ１０１）。
【００６１】
これにより、アクセス中継ユニット２０は、宛先情報、及び、スレッド識別情報を受け付ける。そして、アクセス中継ユニット２０は、使用されていない（未使用の）コンテキストバッファを、受け付けられたスレッド識別情報により識別されるスレッドに割り当てる（ステップＳ１０２）。
【００６２】
具体的には、アクセス中継ユニット２０は、未使用バッファ管理用バッファ２３に格納されているレジスタＩＤのうちの、最初に格納されたレジスタＩＤを取得する。更に、アクセス中継ユニット２０は、取得されたレジスタＩＤを未使用バッファ管理用バッファ２３から削除（消去）する。次いで、アクセス中継ユニット２０は、アクセス管理レジスタ２４に記憶されているレコードのうちの、上記取得されたレジスタＩＤにより識別されるレコードを特定する。
【００６３】
そして、アクセス中継ユニット２０は、上記特定されたレコードに含まれるスレッドＩＤとして、上記受け付けられたスレッド識別情報を格納する。更に、アクセス中継ユニット２０は、当該レコードに含まれるアクセス状態情報を、任意のスレッドが、ＣＡＭユニット３０へアクセスしていることを表す情報（本例では、「ＯＮ」）に設定する。
【００６４】
次いで、アクセス中継ユニット２０は、ＣＡＭアクセス変換部２１に、スレッドが有するインタフェースに従ったアクセスを、ＣＡＭユニット３０が有するインタフェースに従ったアクセスに変換する処理を実行させる。
【００６５】
そして、アクセス中継ユニット２０は、変換後のデータを、ＣＡＭユニット３０へ出力する（ステップＳ１０３）。ここで、変換後のデータは、スレッドに割り当てられたコンテキストバッファを識別するためのバッファ識別情報と、宛先情報と、を含むデータである。更に、アクセス中継ユニット２０は、上記特定されたレコードに含まれるステータス情報を、第１の状況を表す情報に設定する。
【００６６】
次いで、アクセス中継ユニット２０は、上記受け付けられたスレッド識別情報と、上記特定されたレコードを識別するためのレコードＩＤと、を含むレコードをキューバッファ２２に格納する。
【００６７】
ＣＡＭユニット３０は、アクセス中継ユニット２０により出力された、バッファ識別情報及び宛先情報を受け付ける。そして、ＣＡＭユニット３０は、当該バッファ識別情報により識別されるコンテキストバッファを用いることにより、当該宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を検索する検索処理を実行する（ステップＳ１０４）。
【００６８】
次いで、ＣＡＭユニット３０は、検索された転送先情報をアクセス中継ユニット２０へ出力する（ステップＳ１０５）。
【００６９】
これにより、アクセス中継ユニット２０の検索結果受付部２５は、転送先情報を受け付ける。そして、アクセス中継ユニット２０は、キューバッファ２２に格納されている、スレッド識別情報、及び、レジスタＩＤを取得する。更に、アクセス中継ユニット２０は、取得された、スレッド識別情報、及び、レジスタＩＤをキューバッファ２２から削除（消去）する。
【００７０】
そして、アクセス中継ユニット２０は、結果格納用メモリ２６に記憶されているレコードのうちの、上記取得されたスレッド識別情報により識別されるスレッドと対応付けられたレコードを特定する。次いで、アクセス中継ユニット２０は、特定されたレコードに、上記受け付けられた転送先情報を格納する（ステップＳ１０６）。
【００７１】
即ち、アクセス中継ユニット２０は、受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けたスレッド識別情報と、を対応付けて記憶している、と言うことができる。
【００７２】
更に、アクセス中継ユニット２０は、アクセス管理レジスタＩＤ保持用レジスタ２７に記憶されているレコードのうちの、上記特定されたレコードと対応付けられたレコードに、上記取得されたレジスタＩＤを格納する。
【００７３】
加えて、アクセス中継ユニット２０は、アクセス管理レジスタ２４に記憶されているレコードのうちの、上記レジスタＩＤにより識別されるレコードに含まれるステータス情報を、第２の状況を表す情報に設定する。
【００７４】
その後、スレッドは、メモリバスを介してアクセス中継ユニット２０へアクセスする。具体的には、スレッドは、メモリバスの一部を構成するアドレスバスを介して、当該スレッド（自スレッド）を識別するためのスレッド識別情報を含むアドレス情報をアクセス中継ユニット２０へ出力する。更に、スレッドは、メモリバスの一部を構成するデータバスを介して、転送先出力要求を含むデータ情報をアクセス中継ユニット２０へ出力する。
【００７５】
即ち、スレッドは、転送先出力要求と、当該スレッド（自スレッド）を識別するためのスレッド識別情報と、をアクセス中継ユニット２０へ出力する（ステップＳ１０７）。
【００７６】
これにより、アクセス中継ユニット２０は、転送先出力要求、及び、スレッド識別情報を受け付ける。そして、アクセス中継ユニット２０は、結果格納用メモリ２６に記憶されているレコードのうちの、上記受け付けられたスレッド識別情報により識別されるスレッドと対応付けられたレコードを特定する。
【００７７】
次いで、アクセス中継ユニット２０は、特定されたレコードに格納されている転送先情報を、上記受け付けられたスレッド識別情報により識別されるスレッドへ出力する（ステップＳ１０８）。
【００７８】
そして、アクセス中継ユニット２０は、アクセス管理レジスタＩＤ保持用レジスタ２７に記憶されているレコードのうちの、上記特定されたレコードと対応付けられたレコードに含まれるレジスタＩＤを取得する。
【００７９】
次いで、アクセス中継ユニット２０は、アクセス管理レジスタ２４に記憶されているレコードのうちの、上記取得されたレジスタＩＤにより識別されるレコードを特定し、当該特定されたレコードに含まれる情報を削除（消去）する。加えて、アクセス中継ユニット２０は、上記取得されたレジスタＩＤを、未使用バッファ管理用バッファ２３に新たに格納（追加）する。
【００８０】
このようにして、アクセス中継ユニット２０は、スレッドに割り当てていたコンテキストバッファを解放する（スレッドへのコンテキストバッファの割当を解除する）（ステップＳ１０９）。
【００８１】
スレッドは、アクセス中継ユニット２０からの転送先情報を受け付ける。そして、スレッドは、当該受け付けられた転送先情報が表す転送先へ、上記受信されたデータを転送する（ステップＳ１１０）。
【００８２】
以上、説明したように、本発明の第１実施形態に係るアクセス中継ユニット２０は、ＣＡＭユニット３０が備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、をＣＡＭユニット３０へ出力する。
【００８３】
これによれば、スレッドがＣＡＭユニット３０へ宛先情報に基づく検索処理を要求する際に、コンテキストバッファが不足する可能性を低減することができる。これにより、ＣＡＭユニット３０に任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【００８４】
更に、本発明の第１実施形態に係るアクセス中継ユニット２０は、ＣＡＭユニット３０により出力された転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶する。加えて、アクセス中継ユニット２０は、スレッドにより出力されたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する。
【００８５】
これによれば、各スレッドは、自スレッドが出力した宛先情報に基づいてＣＡＭユニット３０により出力された転送先情報を、確実に受け取ることができる。
【００８６】
加えて、本発明の第１実施形態に係るアクセス中継ユニット２０は、ＣＡＭユニット３０へ、バッファ識別情報及び宛先情報を出力してから、当該宛先情報に基づいてＣＡＭユニット３０により出力された転送先情報を当該スレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱う。
これによれば、データを転送する処理を各スレッドに確実に実行させることができる。
【００８７】
更に、本発明の第１実施形態に係るアクセス中継ユニット２０は、メモリバスを介してデータ転送ユニット１０と接続される。加えて、スレッド識別情報は、データ転送ユニット１０がメモリバスを介してアクセス中継ユニット２０へアクセスするために用いられ且つ記憶領域を特定するアドレス情報に含まれる。
【００８８】
これによれば、データ転送ユニット１０は、アクセス中継ユニット２０へ高速にアクセスすることができる。
【００８９】
＜第２実施形態＞
次に、本発明の第２実施形態に係るデータ転送装置について説明する。第２実施形態に係るデータ転送装置は、上記第１実施形態に係るデータ転送装置に対して、すべてのコンテキストバッファが使用されているとき、スレッドが所定の待機時間だけ待機するように構成されている点において相違している。従って、以下、かかる相違点を中心として説明する。
【００９０】
第２実施形態に係るアクセス中継ユニット２０は、スレッドにより出力された、宛先情報、及び、スレッド識別情報を受け付けた場合において、未使用バッファ管理用バッファ２３に、いずれのレジスタＩＤも格納されていないとき（即ち、複数のコンテキストバッファのすべてが使用されているとき）、その旨を表すバッファ使用不可情報を当該スレッドへ出力する。
【００９１】
各スレッドは、宛先情報、及び、スレッド識別情報をアクセス中継ユニット２０へ出力した場合において、バッファ使用不可情報をアクセス中継ユニット２０から受け付けたとき、予め設定された待機時間だけ待機し、その後、宛先情報、及び、スレッド識別情報をアクセス中継ユニット２０へ再び出力する。
【００９２】
従って、第２実施形態に係るデータ転送装置１によれば、スレッドがＣＡＭユニット３０に対して検索処理の実行を無駄に要求することを回避することができる。
【００９３】
＜第３実施形態＞
次に、本発明の第３実施形態に係るアクセス中継ユニットについて図８を参照しながら説明する。
第３実施形態に係るアクセス中継ユニット１００は、
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するように構成され、
上記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、上記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力するように構成される。
【００９４】
これによれば、スレッドがＣＡＭユニットへ宛先情報に基づく検索処理を要求する際に、コンテキストバッファが不足する可能性を低減することができる。これにより、ＣＡＭユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【００９５】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【００９６】
なお、上記各実施形態においてアクセス中継ユニット２０の各機能は、回路等のハードウェアにより実現されていた。ところで、アクセス中継ユニット２０は、処理装置と、プログラム（ソフトウェア）を記憶する記憶装置と、を備えるとともに、処理装置がそのプログラムを実行することにより、各機能を実現するように構成されていてもよい。
【００９７】
この場合、プログラムは、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００９８】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【００９９】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【０１００】
（付記１）
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するように構成され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力するように構成されたアクセス中継ユニット。
【０１０１】
これによれば、スレッドがＣＡＭユニットへ宛先情報に基づく検索処理を要求する際に、コンテキストバッファが不足する可能性を低減することができる。これにより、ＣＡＭユニットに任意のスレッドからの宛先情報に基づく検索処理を確実に実行させることができる。
【０１０２】
（付記２）
付記１に記載のアクセス中継ユニットであって、
前記ＣＡＭユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【０１０３】
これによれば、各スレッドは、自スレッドが出力した宛先情報に基づいてＣＡＭユニットにより出力された転送先情報を、確実に受け取ることができる。
【０１０４】
（付記３）
付記２に記載のアクセス中継ユニットであって、
前記ＣＡＭユニットへ、前記バッファ識別情報及び前記宛先情報を出力してから、当該宛先情報に基づいて当該ＣＡＭユニットにより出力された前記転送先情報を前記スレッドへ出力するまでの間、当該バッファ識別情報により識別されるコンテキストバッファを、使用しているコンテキストバッファとして取り扱うように構成されたアクセス中継ユニット。
【０１０５】
これによれば、データを転送する処理を各スレッドに確実に実行させることができる。
【０１０６】
（付記４）
付記１乃至付記３のいずれか一項に記載のアクセス中継ユニットであって、
前記スレッドにより出力された、宛先情報、及び、スレッド識別情報を受け付けた場合において、前記複数のコンテキストバッファのすべてが使用されているとき、その旨を表すバッファ使用不可情報を当該スレッドへ出力するように構成されたアクセス中継ユニット。
【０１０７】
これによれば、スレッドがＣＡＭユニットに対して検索処理の実行を無駄に要求することを回避することができる。
【０１０８】
（付記５）
付記１乃至付記４のいずれか一項に記載のアクセス中継ユニットであって、
メモリバスを介して前記データ転送ユニットと接続され、
前記スレッド識別情報は、前記データ転送ユニットが前記メモリバスを介して前記アクセス中継ユニットへアクセスするために用いられ且つ記憶領域を特定するアドレス情報に含まれるアクセス中継ユニット。
【０１０９】
これによれば、データ転送ユニットは、アクセス中継ユニットへ高速にアクセスすることができる。
【０１１０】
（付記６）
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するアクセス中継ユニットに適用され、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力する、
アクセス中継方法。
【０１１１】
（付記７）
付記６に記載のアクセス中継方法であって、
前記ＣＡＭユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する、
アクセス中継方法。
【０１１２】
（付記８）
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットによる、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットへのアクセスを中継するアクセス中継ユニットに、
前記スレッドにより出力された、当該スレッドを識別するためのスレッド識別情報、及び、受信されたデータの宛先を表す宛先情報を受け付けた場合、前記ＣＡＭユニットが備える複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該宛先情報と、を当該ＣＡＭユニットへ出力する、
処理を実行させるためのアクセス中継プログラム。
【０１１３】
（付記９）
付記８に記載のアクセス中継プログラムであって、
前記アクセス中継ユニットに、更に、
前記ＣＡＭユニットにより出力された、転送先を表す転送先情報を受け付けた場合、当該転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドにより出力された、転送先情報の出力を要求する転送先出力要求、及び、スレッド識別情報を受け付けた場合、当該スレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力する、
処理を実行させるためのアクセス中継プログラム。
【０１１４】
（付記１０）
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
前記データ転送ユニットによる、前記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備え、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力するように構成され、
前記アクセス中継ユニットは、
前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、当該選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記ＣＡＭユニットへ出力するように構成され、
前記ＣＡＭユニットは、
前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力するように構成されたデータ転送装置。
【０１１５】
（付記１１）
付記１０に記載のデータ転送装置であって、
前記アクセス中継ユニットは、
前記ＣＡＭユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、転送先情報の出力を要求する転送先出力要求と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力するように構成され、
前記アクセス中継ユニットは、更に、
前記スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力するように構成され、
前記データ転送ユニットは、
前記生成された複数のスレッドのそれぞれが、前記アクセス中継ユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、前記受信されたデータを転送するように構成されたデータ転送装置。
【０１１６】
（付記１２）
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
前記データ転送ユニットによる、前記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に適用され、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記ＣＡＭユニットへ出力し、
前記ＣＡＭユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
データ転送方法。
【０１１７】
（付記１３）
付記１２に記載のデータ転送方法であって、
前記アクセス中継ユニットが、前記ＣＡＭユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドが、転送先情報の出力を要求する転送先出力要求と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力し、
前記スレッドが、前記アクセス中継ユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、前記受信されたデータを転送する、
データ転送方法。
【０１１８】
（付記１４）
データを転送する処理を実行するスレッドを複数生成するデータ転送ユニットと、
複数のコンテキストバッファを備えるとともに、データの宛先の条件を表す宛先条件情報と、転送先を表す転送先情報と、を対応付けるテーブルを記憶するＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）ユニットと、
前記データ転送ユニットによる、前記ＣＡＭユニットへのアクセスを中継するアクセス中継ユニットと、
を備えるデータ転送装置に、
前記スレッドが、受信されたデータの宛先を表す宛先情報と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び宛先情報を受け付けた場合、前記複数のコンテキストバッファの中から、使用されていないコンテキストバッファを選択し、
前記アクセス中継ユニットが、前記選択されたコンテキストバッファを識別するためのバッファ識別情報と、当該受け付けられた宛先情報と、を前記ＣＡＭユニットへ出力し、
前記ＣＡＭユニットが、前記アクセス中継ユニットにより出力された、バッファ識別情報及び宛先情報を受け付けた場合、当該受け付けられたバッファ識別情報により識別されるコンテキストバッファを用いることにより、当該受け付けられた宛先情報が満足する条件を表す宛先条件情報と対応付けられた転送先情報を前記アクセス中継ユニットへ出力する、
処理を実行させるためのデータ転送プログラム。
【０１１９】
（付記１５）
付記１４に記載のデータ転送プログラムであって、
前記データ転送装置に、更に、
前記アクセス中継ユニットが、前記ＣＡＭユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報と、当該転送先情報が出力される基となった宛先情報とともに受け付けられたスレッド識別情報と、を対応付けて記憶し、
前記スレッドが、転送先情報の出力を要求する転送先出力要求と、当該スレッドを識別するためのスレッド識別情報と、を前記アクセス中継ユニットへ出力し、
前記アクセス中継ユニットが、前記スレッドにより出力された、スレッド識別情報及び転送先出力要求を受け付けた場合、当該受け付けられたスレッド識別情報と対応付けて記憶されている転送先情報を当該スレッドへ出力し、
前記スレッドが、前記アクセス中継ユニットにより出力された転送先情報を受け付けた場合、当該受け付けられた転送先情報が表す転送先へ、前記受信されたデータを転送する、
処理を実行させるためのデータ転送プログラム。
【産業上の利用可能性】
【０１２０】
本発明は、データを転送する処理を実行するデータ転送ユニットによる、ＣＡＭユニットへのアクセスを中継するアクセス中継ユニット等に適用可能である。
【符号の説明】
【０１２１】
１      データ転送装置
１０    データ転送ユニット
１１    コア
１２    メモリコントローラ
２０    アクセス中継ユニット
２１    ＣＡＭアクセス変換部
２２    キューバッファ
２３    未使用バッファ管理用バッファ
２４    アクセス管理レジスタ
２５    検索結果受付部
２６    結果格納用メモリ
２７    アクセス管理レジスタＩＤ保持用レジスタ
３０    ＣＡＭユニット
３１    テーブル記憶部
３２    コンテキストバッファ部
１００  アクセス中継ユニット
【図１】
2012257063.tif 000003
【図２】
2012257063.tif 000004
【図３】
2012257063.tif 000005
【図４】
2012257063.tif 000006
【図５】
2012257063.tif 000007
【図６】
2012257063.tif 000008
【図７】
2012257063.tif 000009
【図８】
2012257063.tif 000010