(57)【要約】【課題】優先度別のキューを予め用意できない、多くのデータ系列に対して、読み出しの優先順序を変更可能にした情報処理装置を提供する。【解決手段】複数のキューを単一のメモリで構成する情報処理装置であって、データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストと、蓄積された各データについて、データ毎に異なる系列番号、ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストとを含む記憶部と、データの優先度の変更情報に基づいて、優先度リスト中の直前番号および直後番号を書き換える制御部とを有する。【選択図】図１
2011254149.tif 000002
【特許請求の範囲】
【請求項１】
複数のキューを単一のメモリで構成する情報処理装置であって、
データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストと、蓄積された各データについて、データ毎に異なる系列番号、前記ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストと、を含む記憶部と、
データの優先度の変更情報に基づいて、前記優先度リスト中の前記直前番号および前記直後番号を書き換える制御部と、
を有する情報処理装置。
【請求項２】
請求項１記載の情報処理装置において、
前記変更情報が、新たに入力された、系列番号ｉのデータを系列番号ｐと系列番号ｎの間の優先順序に追加する旨の情報である場合、
前記制御部は、前記系列番号ｐの前記直後番号の欄を前記系列番号ｎから前記系列番号ｉに書き換え、前記系列番号ｎの前記直前番号の欄を前記系列番号ｐから前記系列番号ｉに書き換えるとともに、前記系列番号ｉのデータについて、該系列番号ｉと、前記ポインタと、前記直後番号として前記系列番号ｎと、前記直前番号として前記系列番号ｐとを対応づけて前記優先度リストに記述する、情報処理装置。
【請求項３】
請求項１記載の情報処理装置において、
最優先のデータの系列番号を示す最優先ポインタを保持する最優先ポインタレジスタをさらに有し、
前記変更情報が、前記最優先ポインタを系列番号ｘから系列番号ｉに変更する旨と、該系列番号ｘから該系列番号ｉの直前番号に相当する系列番号ｐまでのデータを、系列番号ｊから該系列番号ｊの直後番号に相当する系列番号ｎの間の優先順序に変更する旨の情報である場合、
前記制御部は、前記最優先ポインタレジスタに記録された前記系列番号ｘを前記系列番号ｉに書き換えるとともに、前記系列番号ｘの前記直前番号の欄に前記系列番号ｊを記述し、前記系列番号ｐの前記直後番号の欄に前記系列番号ｎを記述し、前記系列番号ｊの前記直後番号の欄に前記系列番号ｘを記述し、前記系列番号ｎの前記直前番号の欄に前記系列番号ｐを記述する、情報処理装置。
【請求項４】
請求項１記載の情報処理装置において、
前記変更情報が、系列番号ｉのデータを削除する旨の情報である場合、
前記制御部は、前記系列番号ｉの前記直前番号の欄に記述された系列番号を読み出し、該系列番号の前記直後番号の欄に記述された該系列番号ｉを該系列番号ｉにおける前記直後番号に書き換え、前記系列番号ｉの前記直後番号の欄に記述された系列番号を読み出し、該系列番号の前記直前番号の欄に記述された該系列番号ｉを該系列番号ｉにおける前記直前番号に書き換える、情報処理装置。
【請求項５】
複数のキューを有する単一のメモリに保存されるデータの優先度を制御するための情報処理方法であって、
データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストを作成し、
蓄積された各データについて、データ毎に異なる系列番号、前記ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストを作成し、
データの優先度の変更情報に基づいて、前記優先度リスト中の前記直前番号および前記直後番号を書き換える、情報処理方法。
【請求項６】
請求項５記載の情報処理方法において、
前記変更情報が、新たに入力された、系列番号ｉのデータを系列番号ｐと系列番号ｎの間の優先順序に追加する旨の情報である場合、
前記系列番号ｐの前記直後番号の欄を前記系列番号ｎから前記系列番号ｉに書き換え、前記系列番号ｎの前記直前番号の欄を前記系列番号ｐから前記系列番号ｉに書き換え、
前記系列番号ｉのデータについて、該系列番号ｉと、前記ポインタと、前記直後番号として前記系列番号ｎと、前記直前番号として前記系列番号ｐとを対応づけて前記優先度リストに記述する、情報処理方法。
【請求項７】
請求項５記載の情報処理方法において、
最優先のデータの系列番号を示す最優先ポインタを予め記録し、
前記変更情報が、前記最優先ポインタを系列番号ｘから系列番号ｉに変更する旨と、該系列番号ｘから該系列番号ｉの直前番号に相当する系列番号ｐまでのデータを、系列番号ｊから該系列番号ｊの直後番号に相当する系列番号ｎの間の優先順序に変更する旨の情報である場合、
前記最優先ポインタを前記系列番号ｘから前記系列番号ｉに書き換え、
前記系列番号ｘの前記直前番号の欄に前記系列番号ｊを記述し、前記系列番号ｐの前記直後番号の欄に前記系列番号ｎを記述し、前記系列番号ｊの前記直後番号の欄に前記系列番号ｘを記述し、前記系列番号ｎの前記直前番号の欄に前記系列番号ｐを記述する、情報処理方法。
【請求項８】
請求項５記載の情報処理方法において、
前記変更情報が、系列番号ｉのデータを削除する旨の情報である場合、
前記系列番号ｉの前記直前番号の欄に記述された系列番号を読み出し、該系列番号の前記直後番号の欄に記述された該系列番号ｉを該系列番号ｉにおける前記直後番号に書き換え、
前記系列番号ｉの前記直後番号の欄に記述された系列番号を読み出し、該系列番号の前記直前番号の欄に記述された該系列番号ｉを該系列番号ｉにおける前記直前番号に書き換える、情報処理方法。
【請求項９】
複数のキューを有する単一のメモリに保存されるデータの優先度を制御するコンピュータに実行させるためのプログラムであって、
データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストを作成し、
蓄積された各データについて、データ毎に異なる系列番号、前記ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストを作成し、
データの優先度の変更情報に基づいて、前記優先度リスト中の前記直前番号および前記直後番号を書き換える処理を前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数種類のデータを優先度に応じて送出する情報処理装置、情報処理方法、およびその方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
通信ネットワーク内のルータは、データが外部から入力されると、入力された順にデータを外部に転送するが、音声や動画など、リアルタイム性が要求されるデータを受信すると、これらのデータを優先的に転送する。その方法の一例として、データ系列を優先度に応じて何種類か既定しておき、その種類数分のキューをルータのメモリとして予め用意し、到着したデータ系列を種類毎に分類して蓄積し、各キューからどのくらいデータを送出するかを優先度の応じて決めるという方法がある。この方法では、予めキューを用意した本数分について、優先度の入れ替えを行うことは可能であった。
【０００３】
上述のルータの一例となる情報処理装置について説明する。図８は関連する情報処理装置の一構成例を示すブロック図である。
【０００４】
図８に示すように、情報処理装置１００は、入力バッファ２０と、出力バッファ３０と、記憶部１４０と、情報処理部１５０とを有する。記憶部１４０は、データを保存するためのデータメモリ１４２−１〜１４２−ｎ（ｎは２以上の整数）を有する。データメモリ１４２−１〜１４２−ｎのそれぞれがキューに相当する。情報処理部１５０は、系列番号抽出部１５１と、優先度別書き込み部１５２と、優先度別読み出し部１５３と、制御部１５４とを有する。
【０００５】
一連のデータからなるデータ系列が入力バッファ２０を介して入力されると、系列番号抽出部１５１は、その系列番号を抽出して制御部１５４に渡す。優先度別書き込み部１５２は、入力バッファ２０からデータ系列を受け取ると、制御部１５４から受け取る系列番号とデータ系列を対応づけ、優先度にしたがってデータメモリ１４２−１〜１４２−ｎのいずれかに格納する。データメモリ１４２−１〜１４２−ｎのそれぞれは、異なる優先度が既定されたキューとして機能する。
【０００６】
優先度別読み出し部１５３は、データメモリ１４２−１〜１４２−ｎの各データメモリからどのくらいの頻度で、または、どのくらい連続的に読み出すかという、制御部１５４からの指示にしたがって、データ系列を読み出して出力バッファ３０を介して送出する。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“コンフィグレーションガイドＶｏｌ．２  ４．１．３−スケジューリング”、［ｏｎｌｉｎｅ］、ＮＥＣホームページ、［平成２２年４月５日検索］、インターネット＜ＵＲＬ：http:// www.nec.co.jp/ ip88n/ s24_sw/ html/ cfguide2/ cfguide2- chap4- 05.html＞
【非特許文献２】“ユニファイドコミュニケーションへの道  第２回−音質の良いネットワーク”、［ｏｎｌｉｎｅ］、ＮＯＲＴＥＬホームページ、［平成２２年４月５日検索］、インターネット＜ＵＲＬ：http:// www.nortel.com/ promotions/ japan/ column/ uc/ qos_jp.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図８を参照して説明した方法では、予め用意した本数分のキューについて、キュー毎に優先度を入れ替えることが可能である。しかし、データ系列の種類数が多く、キューの本数を予め決められない、つまり、優先度別のキューを予め用意しておくことができないような、非常に多くのデータ系列に対しては、読み出しの優先順序を制御することはできなかった。
【０００９】
本発明は上述したような技術が有する問題点を解決するためになされたものであり、優先度別のキューを予め用意できない、多くのデータ系列に対して、読み出しの優先順序を変更可能にした情報処理装置、情報処理方法、およびその方法をコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための本発明の情報処理装置は、複数のキューを単一のメモリで構成する情報処理装置であって、
データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストと、蓄積された各データについて、データ毎に異なる系列番号、前記ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストと、を含む記憶部と、
データの優先度の変更情報に基づいて、前記優先度リスト中の前記直前番号および前記直後番号を書き換える制御部と、
を有する構成である。
【００１１】
また、本発明の情報処理方法は、複数のキューを有する単一のメモリに保存されるデータの優先度を制御するための情報処理方法であって、
データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストを作成し、
蓄積された各データについて、データ毎に異なる系列番号、前記ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストを作成し、
データの優先度の変更情報に基づいて、前記優先度リスト中の前記直前番号および前記直後番号を書き換えるものである。
【００１２】
さらに、本発明のプログラムは、複数のキューを有する単一のメモリに保存されるデータの優先度を制御するコンピュータに実行させるためのプログラムであって、
データを蓄積するメモリの領域と各キューの対応関係を記憶するポインタリストを作成し、
蓄積された各データについて、データ毎に異なる系列番号、前記ポインタリストにおいてキューの先頭を示すポインタ、直前の優先度を有するデータの系列番号である直前番号、および直後の優先度を有するデータの系列番号である直後番号を対応付けて記憶する優先度リストを作成し、
データの優先度の変更情報に基づいて、前記優先度リスト中の前記直前番号および前記直後番号を書き換える処理を前記コンピュータに実行させるものである。
【発明の効果】
【００１３】
本発明によれば、優先度別のキューを予め用意しておくことができないような、非常に多くのデータ系列に対しても、その優先度を変更することができ、また、優先度をつけて送出することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態の情報処理装置の一構成例を示すブロック図である。
【図２】本実施形態のポインタリストを説明するための図である。
【図３】本実施形態の優先度リストの一例を示す図である。
【図４】本実施形態の情報処理方法の手順を示すフローチャートである。
【図５】優先度リストにデータを追加する場合の一例を説明するための図である。
【図６】優先度リストにおいてデータの優先順序を変更する場合の一例を説明するための図である。
【図７】優先度リストから優先度の情報を削除する場合の一例を説明するための図である。
【図８】関連する情報処理装置の一構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
本実施形態の情報処理装置の構成を説明する。図１は本実施形態の情報処理装置の一構成例を示すブロック図である。
【００１６】
図１に示すように、情報処理装置１０は、入力バッファ２０と、出力バッファ３０と、記憶部４０と、情報処理部５０とを有する。記憶部４０は、データを記録するためのデータメモリ４２と、記録したデータを管理するためのデータ管理メモリ４４とを有する。データメモリ４２には、外部から入力されるデータを格納するための区分領域が複数設けられている。データ管理メモリ４４には、ポインタリストおよび優先度リストが格納される。
【００１７】
入力バッファ２０は外部から信号線を介して入力されるデータを情報処理部５０に渡す。出力バッファ３０は情報処理部５０から受け取るデータを信号線を介して外部に送信する。以下に、各構成について詳細に説明する。
【００１８】
図１に示したデータ管理メモリ４４に格納されるポインタリストについて説明する。ポインタリストは、各データ系列のデータがデータメモリ４２のどこに記録されているかを示す表である。
【００１９】
図２（ａ）はポインタリストの一例を示す図である。この場合のデータ保存方法では、各データ系列のデータはデータメモリ４２内の複数の区分領域にランダムに分割されて格納されている。
【００２０】
図２（ａ）に示すリストでは、各要素に、データの格納されているアドレスと、次に読みにいくアドレスが組になって記述されている。例えば、図２（ａ）の第１の要素では、あるデータ系列について、データの先頭部分がアドレス０１１０の区分領域に格納され、次のデータ部分がアドレス０１２０に格納されていることを示している。データの先頭部分のアドレスをポインタと称する。図２（ａ）に示す「０１１０」がこのデータ系列のポインタに相当する。ポインタは、データメモリ４２に蓄積されたデータ系列の数だけポインタリストに記録される。
【００２１】
図２（ａ）は、あるデータ系列について、データの先頭部分がアドレス０１１０の区分領域に格納され、以下、アドレス０１２０、０１４３、０１６７の順にそれぞれの区分領域にデータが分割されて格納され、アドレス０１６７の区分領域に最後のデータ部分が格納されていることを示している。データ系列のデータがデータメモリ４２内でランダムに格納されていても、ポインタリストを参照することで、データ系列毎にデータを読み出すことが可能となる。
【００２２】
図２（ｂ）は別のポインタリストを示す図である。この場合のデータ保存方法では、各データ系列のデータがデータメモリ４２内で連続して格納されている。図２（ｂ）に示すポインタリストは、各データ系列の先頭アドレスに相当するポインタのみを記録した表である。この表では、あるデータ系列のポインタが０１００であり、別のデータ系列のポインタが０１１２であることを示している。データ系列毎にまとまってデータメモリ４２に格納されているので、データ系列の最初の区分領域のアドレスがわかれば、データ系列毎にデータを読み出すことが可能となる。
【００２３】
図２（ａ）に示すデータ保存方法では、上述したように、データ系列のデータをデータメモリ４２内にランダムに格納することができるだけでなく、データ系列のデータ量がデータ系列毎に異なっている場合にも対応可能であり、メモリを有効に活用することができる。一方、図２（ｂ）に示すデータ保存方法では、１つ分のデータ系列のデータ量が決まっている場合に有効であり、データメモリ４２内に隙間なくデータを保存することが可能となる。
【００２４】
図２（ａ）および図２（ｂ）のいずれの場合でも、１つのデータ系列が記録される領域が１つのキューに相当する。以下では、データ保存方法およびポインタリストが図２（ａ）で説明した場合として説明する。
【００２５】
なお、データ系列毎に異なる系列番号をiとし、データ系列iのポインタをhead(i)と表す。外部から入力バッファ２０にデータが入力される際、そのデータの前後のデータで、一連の系列をなすものには同一の系列番号が付与される。
【００２６】
次に、図１に示したデータ管理メモリ４４に格納される優先度リストについて説明する。
【００２７】
図３は優先度リストの一例を示す図である。図３の右側に優先度リストの一例を示し、図３の左側には、その優先度リストに対応するポインタリストを示している。ここでは、各データ系列の系列番号を優先度リストのアドレスとして、そのまま使用している。
【００２８】
図３の左側に示すポインタリストには、２つのデータ系列についてメモリでの格納状況が記述されている。２つのデータ系列のそれぞれのポインタを丸で囲んでいる。ポインタが０１００のデータ系列は、０１００、０１３７、０１４８、０１７７、・・・の各アドレスが示す区分領域に順に格納されている。このデータ系列の系列番号を０１００とする。また、ポインタが０１１２のデータ系列は、０１１２、０１２４、０１６３、・・・の各アドレスが示す区分領域に順に格納されている。このデータ系列の系列番号を０１１０とする。
【００２９】
図３の右側に示す優先度リストは、各アドレス（各系列番号）に対応して、３つのフィールドを持つ表形式である。各要素は、系列番号iをアドレスとして、３つのフィールド、
１：PR_L(i)：ポインタ（ポインタリストに記述されたポインタと対応）
２：PR_N(i)：次の系列番号（優先度リスト内の次の優先度のデータ系列を示す）
３：PR_P(i)：前の系列番号（優先度リスト内の前の優先度のデータ系列を示す）
から構成される。これらの全てフィールドの初期値は、特別な値NULLとする。第１のフィールドには、上述のhead(i)が記録される。
【００３０】
系列番号iのデータ系列の直後の優先度にPR_N(i)の系列番号のデータが位置づけられ、系列番号iのデータ系列の直前の優先度にPR_P(i)の系列番号のデータが位置づけられている。以下では、PR_N(i)を、系列番号iのデータ系列に対して、直後の優先度を有するデータの系列番号である直前番号と称する。また、PR_P(i)を、系列番号iのデータ系列について、直前の優先度を有するデータの系列番号である直前番号と称する。
【００３１】
図３の優先度リストから、例えば、系列番号i=0110の要素では、PR_L(0110)はポインタ0112を意味し、PR_N(0110)は次の系列番号0120を意味し、PR_P(0110)は前の系列番号0100を意味していることがわかる。最優先ポインタは最優先の系列番号を示し、最優先ポインタレジスタは最優先の系列番号を保持している。最優先ポインタレジスタ（不図示）はデータ管理メモリ４４内に設けられている。図３では、最優先ポインタを破線枠で囲んで表示し、系列番号0100が最優先ポインタであることを示している。最優先ポインタをPR_0と表す。
【００３２】
次に、図１に示した情報処理部５０について説明する。
【００３３】
情報処理部５０は、系列番号抽出部５１と、書き込み制御部５２と、読み出し制御部５３と、制御部５４とを有する。また、制御部５４には、プログラムにしたがって処理を実行するＣＰＵ（Central Processing Unit）（不図示）と、プログラムを格納するためのメモリ（不図示）とが設けられている。
【００３４】
系列番号抽出部５１は、入力バッファ２０を介してデータ系列を受信すると、系列番号を抽出して制御部５４に渡す。その際、そのデータの前後のデータで、一連の系列をなすものには同一の系列番号を付与する。なお、系列番号抽出部５１が系列番号を優先度リストのアドレスとして使用可能な番号として付与しているが、系列番号と優先度リストのアドレスが相互に１対１対応できるようになっていれば、他の外部的手段によって付与されてもよい。
【００３５】
書き込み制御部５２は、入力バッファ２０からデータ系列を受け取り、制御部５４から系列番号を受け取ると、データ系列をデータメモリ４２の複数の区分領域に分割して格納し、各区分領域のアドレスと系列番号を制御部５４に通知する。
【００３６】
読み出し制御部５３は、アドレスの情報およびデータ読み出しの指示を含む読み出し信号を制御部５４から受信すると、アドレスに格納されたデータをデータメモリ４２から読み出して出力バッファ３０に渡す。
【００３７】
なお、データの読み出しは、優先度の高い順から低い順に、データ系列単位で読み出してもよく、各データ系列の区分領域単位で読み出してもよい。このことを、図３に示したポインタリストおよび優先度リストの例で説明する。
【００３８】
図３では、読み出しの優先順位はポインタ０１００のデータ系列の次がポインタ０１１２のデータ系列である。データの読み出し方法として、データ系列単位で読み出す場合、アドレス０１００→０１３７→・・・→（ＥＮＤ）の順で系列番号０１００のデータ系列を読み出し、次に、アドレス０１１２→０１２４→・・・→（ＥＮＤ）の順でデータ系列０１１０のデータ系列を読み出すことになる。データの別の読み出し方法として、各データ系列の区分領域単位で読み出す場合、アドレス０１００→０１１２→０１３７→０１２４→・・・→（ＥＮＤ）→（ＥＮＤ）の順で複数のデータ系列のデータを交互に読み出すことになる。この場合、優先度が高いほど、１回に読み出すデータの区分領域の数を多くしてもよい。
【００３９】
制御部５４は、複数の区分領域のアドレスと系列番号の情報を書き込み制御部５２から受け取ると、それらの情報をデータ管理メモリ４４のポインタリストに記録し、データ系列の優先順序に関する情報を、図３に示したように優先度リストに記録し、最優先ポインタをデータ管理メモリ４４内のレジスタに記録する。
【００４０】
データ系列の優先順序は、通常、入力された順に出力するように決まるが、データの種類に対応して予め優先度が決められていてもよい。この場合、制御部５４は、入力されるデータ系列の種類を認識し、認識した種類の優先度に応じて、図３に示した優先度リストを作成する。
【００４１】
また、制御部５４は、データの優先度の変更情報があると、変更情報に基づいて、優先度リスト中の直前番号および直後番号を書き換える。その際、最優先ポインタが変更される場合には、制御部５４は、最優先ポインタレジスタの内容も書き換える。さらに、制御部５４は、優先度リストの優先順序にしたがって、読み出し信号を読み出し制御部５３に送信する。
【００４２】
データの優先度の変更情報は、制御部５４がデータから認識するものであってもよく、外部から入力されるものでもよい。データの優先度の変更情報は、データが追加された場合の追加情報、蓄積されたデータの優先度を変更する場合の順序変更情報、データを削除する場合の削除情報などがある。ここで言う、データの追加および削除は、データの優先度の変更を伴うものである。
【００４３】
制御部５４が認識する変更情報の一例として、データメモリ４２に複数のデータ系列を格納した後、リアルタイム性が要求されるデータがデータメモリ４２内にあることを制御部５４が認識した場合、リアルタイム性が要求されるデータが追加して蓄積された場合などが考えられる。
【００４４】
本実施形態の情報処理装置は、データの系列数が、その本数分のキューを予め用意しておくには多すぎるような場合にも、読み出しの優先度を調節できるという特徴がある。
【００４５】
なお、本実施形態では、系列番号抽出部５１、書き込み制御部５２および読み出し制御部５３は、それぞれの仕様に合わせたゲートアレイのような専用回路で構成されているが、制御部５４と同様に、ＣＰＵがプログラムを実行することで仮想的に構成されてもよい。
【００４６】
次に、本実施形態の情報処理装置による情報処理方法を説明する。図４は本実施形態の情報処理方法の手順を示すフローチャートである。
【００４７】
データ系列が入力バッファ２０を介して入力されると、系列番号抽出部５１がデータ系列から系列番号iを抽出し、書き込み制御部５２は、データ系列をデータメモリ４２の区分領域に格納する（ステップ１０１）。制御部５４は、データ系列が格納された各区分領域のアドレスをポインタリストに記録する（ステップ１０２）。また、制御部５４は、データ系列iについて、PR_L(i)を優先度リストに記録する。具体的には、優先度リストのアドレスiの第１のフィールドの要素をNULLからポインタリストの先頭アドレスhead(i)に更新、すなわち、PR_L(i)=head(i)とする。また、制御部５４は、データ系列iについて、PR_N(i)およびPR_P(i)を優先度リストに記録する（ステップ１０２）。
【００４８】
制御部５４は、優先度の変更情報があるか否かを判定し（ステップ１０３）、変更情報がなければ、読み出し信号を読み出し制御部５３に送信する。読み出し制御部５３は、読み出し信号にしたがって、データメモリ４２からデータを読み出して出力バッファ３０を介して出力する（ステップ１０５）。
【００４９】
一方、ステップ１０３で、優先度の変更情報がある場合、制御部５４は、変更情報にしたがって、少なくとも優先度リスト中の直前番号および直後番号を書き換え、優先度リストを更新する（ステップ１０４）。その後、ステップ１０５の処理に進む。
【００５０】
図４に示したステップ１０４における処理のうち、データを追加する場合、データの優先順序を変更する場合、および、データを削除する場合について具体的に説明する。
【００５１】
はじめに、データの優先度の変更を伴う、データ追加の場合を説明する。
【００５２】
制御部５４は、新たにデータ系列が入力されることで、データの優先度の変更を伴う、追加情報を認識すると、以下のようにして、優先度の変更を行う。系列番号iのデータ系列を、p番とn番のデータ系列の間の優先順位に追加する場合、次の手順をとる。
PR_L(i)=head(i); ・・・式（１）
PR_P(i)=PR_P(n); ・・・式（２）
PR_N(i)=PR_N(p); ・・・式（３）
PR_P(n)=i;       ・・・式（４）
PR_N(p)=i;       ・・・式（５）
式（１）〜（５）を用いた具体例を説明する。図５は優先度リストにデータを追加する場合の一例を説明するための図である。図５に示す例では、0200番のデータ系列を0120番と0130番のデータ系列の間の優先順位に追加する場合である。
【００５３】
式（１）から、ポインタPR_L(0200)にhead(0200)が新たに定義される。そして、式（２）および（３）はそれぞれ次のようになる。
PR_P(0200)=PR_P(0130); ・・・式（２）’
PR_N(0200)=PR_N(0120); ・・・式（３）’
式（２）’により、0200番のデータ系列の前に、0130番の１つ前、すなわち0120番のデータ系列が位置づけられる。式（３）’により、0200番のデータ系列の後に、0120番の１つ後、すなわち0130番のデータ系列が位置づけされる。
【００５４】
式（４）および（５）はそれぞれ次のようになる。
PR_P(0130)=0200; ・・・式（４）’
PR_N(0120)=0200; ・・・式（５）’
式（４）’および（５）’から、0130番のデータ系列の前に0200番のデータ系列が位置づけられ、0120番のデータ系列の後に0200番のデータ系列が位置づけられる。制御部５４が、上述の手順で処理を実行することで、優先度リストが図３に示したリストから図５に示したリストに更新される。
【００５５】
次に、データの優先順序を変更する場合を説明する。ここでは、最優先のデータ系列を変更する場合とする。
【００５６】
図６は優先度リストにおいてデータの優先順序を変更する場合の一例を説明するための図である。特に、図６は、最優先のデータ系列をどのデータ系列に変更するかを示している。
【００５７】
「最優先のデータ系列を変更する」手順は、
１：最優先ポインタPR_0が指し示す先を変えること、
２：それまで最優先およびそれに引き続く優先度だった系列の優先度をどのようにするか、
の２段階からなる手順である。
【００５８】
上述したように、最優先ポインタPR_0は、最優先の系列番号を示している。第１の段階は、この最優先ポインタPR_0の値を変えることである。図６は、変更前における最優先ポインタの値が0100であり、これが変更前の最優先の系列番号であったが、最優先ポインタが0120に書き換えられた後の状態を示している。この結果、最優先ポインタは、優先度リストのアドレス0120を指し示していることになる。優先度リストのアドレス0120に格納されている、第１のフィールドの値を、特に、この図では示していないが、ポインタリストにおいて、この値は、最優先の系列のポインタリスト構造の開始アドレスを指し示すものである。以上が第１の段階である。
【００５９】
第２の段階には、さまざまな任意性があるが、i番のデータ系列を最優先とし、それまで最優先からi番の１つ前までの全てのデータ系列を、j番のデータ系列と、その次の優先度のデータ系列との間に挿入するという処理は、次の手順をとる（ただし、i =jの場合もあり得る）。
PR_P(PR_0)=j;        ・・・式（６）
PR_N(PR_P(i))=PR_N(j); ・・・式（７）
PR_P(PR_N(j))=PR_P(i); ・・・式（８）
PR_N(j)=PR_0;        ・・・式（９）
PR_O=i;              ・・・式（１０）
PR_P(PR_0)=NULL;     ・・・式（１１）
図６では、0120番のデータ系列を最優先とし、最優先であった0100番のデータ系列およびその次の0110番のデータ系列を0170番と0180番の間の優先度として追加する場合を示している。式（６）〜（９）において、PR_0に0100を代入し、iに0120を代入し、jに0170を代入する。
【００６０】
式（６）により、0100番の前がNULLから0170番に変更される。式（７）の左辺であるPR_N(PR_P(0120))がPR_N(0110)になり、右辺がPR_N(0170)になることから、0110番のデータ系列の次が0120番から0180番のデータ系列に変更される。式（８）では、左辺のPR_P(PR_N(0170))がPR_P(0180)になり、右辺がPR_P(0120)になることから、0180番のデータ系列の前が0170番から0110番のデータ系列に変更される。
【００６１】
式（９）では、左辺がPR_N(0170)となり、右辺が0100となることから、0170番のデータ系列の次が0180番から0100番に変更される。そして、式（１０）のiに0120を代入することで、PR_0に0120番が定義され、PR_0が0100番から0120番に変更される。さらに、式（１１）の左辺のPR_P(PR_0)には、式（１０）でPR_0に定義された0120が代入され、0120番の前が0110番からNULLに変更される。
【００６２】
制御部５４が式（６）〜式（１１）の手順で処理を実行することで、優先度リストが図３に示したリストから図６に示したリストに更新される。
【００６３】
次に、データの優先度の情報を削除する場合を説明する。例えば、データが削除された後、優先度リストを更新する必要がある。
【００６４】
制御部５４は、データ系列が読めない状態になったとき（例えば、読み出す対象がなくなったとき）、次のようにして、その優先度の情報を優先度リストから削除する。
【００６５】
i番のデータ系列の優先度を削除する場合、次の手順をとる。
PR_N(PR_P(i))=PR_N(i); ・・・式（１２）
PR_P(PR_N(i))=PR_P(i); ・・・式（１３）
PR_N(i)=NULL;          ・・・式（１４）
PR_P(i)=NULL;          ・・・式（１５）
図７は優先度リストから優先度の情報を削除する場合の一例を説明するための図である。図７は、0130番のデータ系列の優先度を削除した場合を示す。式（１２）〜（１５）のiに0130を代入する。
【００６６】
式（１２）により、0120番のデータ系列の次が0130番から0140番のデータ系列に変更される。式（１３）により、0140番のデータ系列の前が0130番から0120番のデータ系列に変更される。式（１４）および（１５）により、0130番の次がNULLに変更され、0130番の前がNULLに変更される。制御部５４が式（１２）〜式（１５）の手順で処理を実行することで、優先度リストが図３に示したリストから図７に示したリストに更新される。
【００６７】
本実施形態では、データの記録先を示すポインタリストと優先度の順序を示す優先度リストとを、各データ系列の格納先を示すポインタを介してデータの記録先と優先度を参照可能な双方向リスト構造にして管理している。そのため、多くの種類数、すなわち優先度リストのアドレスの種類数分のデータ系列に対して、それらの優先度を優先度リストで管理することで、優先度の追加や削除を自由に行うことができる。
【００６８】
よって、本実施形態では、優先度別のキューを予め用意しておくことができないような、非常に多くのデータ系列に対しても、優先度を変更することが可能であり、優先度をつけてデータを送出することができる。また、データを蓄積する際に、データの読み出しの優先度を決めておく必要がないので、蓄積したデータの容量などの、偶然性や統計性のある情報に基づいて優先度を変更することも可能になる。
【００６９】
なお、上述の実施形態のようにすることで、優先度リストで系列のリスト順序を変更できるようになるが、このリストに基づいてどのようにデータメモリからデータの読み出しを行うかは、読み出し制御部５３の構成で説明したように、任意である。例えば、最優先のデータ系列がなくなるまで、第２の優先度のデータ系列を出さないとするのか、あるいは、第Ｍ（Ｍは２以上の整数）の優先度までの間にどのような比率でデータ送出を行うのか、ということは、本発明とは別に任意に定めることができる。データ送出に関して、これらをどのように定めた場合でも、優先度別にキューを予め用意しておくことができないような、非常に多くのデータ系列に対しても、優先度をつけた送出が可能になるという効果は変わらない。
【００７０】
また、本実施形態では、情報処理装置がルータに代表される中継装置の場合で説明したが、中継装置に限らず、優先度に応じてデータを送出する装置であれば、本発明の情報処理方法を実行することが可能である。
【００７１】
また、本発明の情報処理装置を、コンピュータとプログラムによっても実現でき、そのプログラムを記録媒体に記録することも、ネットワークを介して提供することも可能である。
【符号の説明】
【００７２】
１０    情報処理装置
４０    記憶部
４２    データメモリ
４４    データ管理メモリ
５０    情報処理部
５１    系列番号抽出部
５２    書き込み制御部
５３    読み出し制御部
５４    制御部
【図１】
2011254149.tif 000003
【図２】
2011254149.tif 000004
【図３】
2011254149.tif 000005
【図４】
2011254149.tif 000006
【図５】
2011254149.tif 000007
【図６】
2011254149.tif 000008
【図７】
2011254149.tif 000009
【図８】
2011254149.tif 000010