(57)【要約】      （修正有）【課題】選択された待ち行列から１つ以上のデータセグメントを取り出すために、複数の待ち行列のうちの１つを選択する。【解決手段】出力インタフェース１０ａ〜１０ｃによる送信のために、複数の待ち行列４ｄ〜４ｉ、４ｋ、４ｍのうちの１つを選択し、選択された待ち行列から１つ以上のデータセグメントを取り出す方法であり、第１のスケジューラ２０を利用して、出力インタフェースが選択され、第２のスケジューラ２４を利用して、複数の待ち行列が選択され、第３のスケジューラ２６を利用して、複数の待ち行列から１つの待ち行列が選択される。選択された待ち行列からの１つ以上のデータセグメントが、選択された出力インタフェースに転送される。【選択図】図２
2015208004.tif 000002
【特許請求の範囲】
【請求項１】
出力インタフェース（１０）による送信のために、複数の待ち行列（４）のうちの１つを選択し、選択された待ち行列（４）から１つ以上のデータセグメントを取り出す方法において、第１のスケジューラ（２０）を利用して、前記出力インタフェース（１０）が選択され、第２のスケジューラ（２４）を利用して、複数の待ち行列（４）が選択され、第３のスケジューラ（２６）を利用して、前記複数の待ち行列（４）から１つの待ち行列（４）が選択され、前記選択された待ち行列（４）からの１つ以上のデータセグメントが、前記出力インタフェース（１０）へと転送されることを特徴とする、方法。
【請求項２】
前記第１のスケジューラは、アクティブな環状リスト（１４）を有し、前記アクティブな環状リスト（１４）は、出力インタフェース（１０）ごとに１つ以上のエントリを有し、現在のタイムスロット（６０）において、前記出力インタフェース（１０）の受信態勢にある場合には、１つ以上のデータセグメントが、前記選択された待ち行列（４）から切り離される、請求項１に記載の方法。
【請求項３】
前記第１のスケジューラ（２０）は、パッシブな環状リスト（１８）を有し、前記アクティブな環状リスト（１４）の処理中に前記パッシブな環状リスト（１８）が構成され、前記パッシブな環状リスト（１８）の前記構成が終了している場合には、前記パッシブな環状リスト（１８）は、前記アクティブな環状リスト（１４）の代替となる、請求項２に記載の方法。
【請求項４】
前記第２のスケジューラ（２４）のために、前記複数の待ち行列（４）のそれぞれに固定の優先度（２２）が割り当てられ、前記第２のスケジューラ（２４）は、優先度スケジューリングを実行する、請求項１に記載の方法。
【請求項５】
前記複数の待ち行列（４）のうちの少なくとも１つの待ち行列（４）が、処理すべきデータセグメントを含む場合には、前記第２のスケジューラ（２４）は、前記複数の待ち行列（４）のうちの１つを選択する、請求項４に記載の方法。
【請求項６】
前記第３のスケジューラ（２６）は、加重ラウンドロビン方式に従って、前記複数の待ち行列（４）から、前記待ち行列（４）のうちの１つを選択する、請求項１に記載の方法。
【請求項７】
前記出力インタフェース（１０）に従って、前記待ち行列（４）の交換の前に、データセグメントが前記待ち行列（４）から取り出される、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記出力インタフェース（１０）に従って、前記待ち行列（４）の交換の前に、複数のデータセグメントを含むデータブロックが、前記選択された待ち行列（４）から取り出される、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
請求項１〜７のいずれか１項に記載の方法を実施するよう構成された集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１の上位概念に係る複数の待ち行列のうちの１つを選択する方法に関する。
【背景技術】
【０００２】
選択された待ち行列から１つ以上のデータセグメントを取り出すために、複数の待ち行列のうちの１つを選択する方法が公知である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記背景に鑑みれば、より簡単に、複数の待ち行列のうちの１つを選択する方法が求められる。
【課題を解決するための手段】
【０００４】
本発明の根底にある問題は、請求項１に記載の方法によって解決される。有利な発展形態が従属請求項に示される。本発明にとって重要な特徴が、以下の明細書の記載及び図面において示され、その際に、上記特徴は、単独でも又は様々な組み合わせにおいても本発明にとって重要となりうるが、そのことについては再度明示的には指摘しない。
【０００５】
第１のスケジューラ、第２のスケジューラ、及び第３のスケジューラによって１つの待ち行列が選択され、従って、選択された待ち行列からの１つ以上のデータセグメントが、出力インタフェースへと転送されうる。この有利な３段階のスケジューリングによって、一方では、特定の出力インタフェースのために決められた優先度の高いデータが、最優先で処理され送信されるということが可能となる。他方では、この３段階のスケジューリング操作によって、簡単なやり方でハードウェアにより形成される方法を創出することが可能である。
【０００６】
本発明の更なる別の特徴、適用の可能性、及び利点は、図面に示される本発明の実施例に関する以下の明細書の記載から明らかとなろう。記載され又は示される全ての特徴は、それ自体が、又、任意の組み合わせにおいて、特許請求の範囲又は特許請求項の連関における当該特徴についての要約とは独立して、及び、明細書又は図面での当該特徴についての記述又は記載とは独立して、本発明の主題となる。機能的に等価の値及び特徴のために、全ての図面において、実施形態が異なる場合にも同じ符号が利用される。以下では、図面を参照しながら本発明の実施形態の例を解説する。
【図面の簡単な説明】
【０００７】
【図１】通信機構を示す。
【図２】３段階のスケジューリング方法を概略的に示す。
【図３】概略的なプロセス図を示す。
【発明を実施するための形態】
【０００８】
図１は、複数の待ち行列４ａ〜４ｃにデータが充填された通信機構２を示している。以下の説明では、複数の待ち行列を区別する必要が無い場合は、単に待ち行列４と総称することもある。待ち行列４のために、１個のプロセッサユニット６が存在する。この１個のプロセッサユニット６に基づいて、選択ユニット８を利用して、プロセッサユニット６がどのような順序で、様々な待ち行列４からのデータを獲得するのか、及び、プロセッサユニット６がどのような長さで、様々な待ち行列４からのデータを獲得するのかについて決定する必要がある。プロセッサユニット６は、様々な出力インタフェース１０ａ〜１０ｃと接続されており、この様々な出力インタフェース１０ａ〜１０ｃへと待ち行列からのデータが転送される。以下の説明では、出力インタフェースを区別する必要が無い場合は、単に出力インタフェース１０と総称することもある。
【０００９】
図２は、３段階のスケジューリング方法を概略図１２で示している。アクティブなサークル状に配置されるデータ（カレンダサークル）とも呼ばれる第１のアクティブな環状リスト１４は、タイムスロットごとにそれぞれが設けられた処理ステップの連なりを含み、その際に、１つの処理ステップが１つの出力インタフェース１０に割り当てられる。環状リスト１４は、矢印１６に従って、１つのタイムスロットへのエントリごとに処理される。環状リスト１４の（ここではインタフェース１０ｃのための）一番下の要素又は最後の要素が処理された後に、環状リスト１４の（ここではインタフェース１０ａのための）第１の要素のところから再び処理が開始される。従って、１つのタイムスロットに、環状リスト１４内の出力インタフェース１０が１つずつ割り当てられる。従って、環状リスト１４の第１の要素のところで、出力インタフェース１０ａのための待ち行列４が処理される。第２のエントリ及び第３のエントリについてはそれぞれ、出力インタフェース１０ｂのための待ち行列４が処理される。最後のエントリのために、出力インタフェース１０ｃのための待ち行列４が処理される。
【００１０】
現在のタイムスロットにおいて、出力インタフェース１０が受信体勢にある場合には、選択された待ち行列４から、１つ以上のデータセグメントが切り離される。他の実施形態において、現在のタイムスロットで、アクティブな環状リスト１４に従って選択された各出力インタフェース１０が準備態勢にある場合には、１つの待ち行列が選択される。
【００１１】
さらに、アクティブな環状リスト１４の隣に、パッシブな環状リスト１８がバックグラウンドに示されており、このパッシブな環状リスト１８は、アクティブな環状リスト１４の処理中に構成可能である。パッシブな環状リスト１８は、その構成の後でアクティブな環状リスト１４の代替となりうる。パッシブな環状リスト１８は、プロセッサユニット６の駆動中に加わる出力インタフェース１０又は停止された出力インタフェース１０を考慮するために役立つ。さらに、パッシブなカレンダサークル１８において、インタフェース１０が用いられる際の重み付けが考慮されうる。
【００１２】
環状リスト１４及び１８の管理及び実行は、出力インタフェース１０を選択する第１のスケジュール２０を利用して行われる。例えば、環状リスト１４内の第２のエントリによって、出力インタフェース１０ｂに対して、複数の優先度２２ａ、２２ｂが割り当てられるが、その際、ここで示される２個という優先度２２の数は単に例示的なものに過ぎない。優先度の数と、優先度２２に関する優先度スケジューリングの数と、を介して、選択された待ち行列４において高い優先度２２が割り当てられた優先度の高いデータを優先的に処理し、送信することが保証される。
【００１３】
第２のスケジューラ２４を利用して、固定の優先度２２を用いて優先度スケジューリングが実行され、これにより複数の待ち行列４が選択される。優先度２２には、複数の待ち行列４が割り当てられている。従って、優先度２２ａには、第１の数の待ち行列４ｄ〜４ｉが割り当てられている。第２の優先度２２ｂには、第２の数の待ち行列４ｋ、４ｍが割り当てられている。
【００１４】
第１の数の待ち行列４ｄ〜４ｉを例に挙げて、第３のスケジューラ２６の機能について解説する。第３のスケジューラ２６は、実行可能（Ｒｅａｄｙ）ＦＩＦＯ（先入れ先出し）３０と、待機（Ｗａｉｔ）ＦＩＦＯ３２と、を含む。第３のスケジューラ２６を利用して加重ラウンドロビン方式を実行するために、各待ち行列４ｄ〜４ｉに重み付けが割り当てられ、待ち行列の処理に従って、本来は待ち行列４がＦＩＦＯ３０に入った際に重み付けの値に設定されるカウンタが、待ち行列４の処理ステップごとに減少される。矢印３４に従って、第１の実現に係る新しい待ち行列４がＦＩＦＯ３０に入れられ、その際、待ち行列４のカウンタは、待ち行列４の重みと、優先度２２内での待ち行列４の数と、の積をＸで除算した値に設定される。代替的な実現において、矢印３６に従って、新しい待ち行列４がＦＩＦＯ３２に入れられる。
【００１５】
待ち行列４の選択の際には、実行可能ＦＩＦＯ３０からの第１の待ち行列４ｇが、処理のために選択される。待ち行列４ｇが空の場合、即ちデータセグメントがもはや存在しない場合には、待ち行列４ｇは、矢印３８に従ってスケジューリングから抜かれ、その際に対応して待ち行列４ｇが切り離される。
【００１６】
待ち行列４ｇの処理ステップの後に、即ち、データセグメントが取り出され又は複数のセグメントを含むデータブロックが取り出された後に、待ち行列４ｇのカウンタが減少される。待ち行列４ｇのカウンタの値が０に達した場合には、矢印４０に従って、待ち行列４ｇが待機ＦＩＦＯ３２の最後尾に置かれ、待ち行列４ｇのカウンタが、待ち行列４ｇの重み付けの値に設定される。待ち行列４ｇのカウンタの減分後に当該カウンタの値が０よりも大きい場合には、矢印４２に従って、待ち行列４ｇは、ＦＩＦＯ３０の最後尾に置かれる。待ち行列４ｇの処理ステップの終了後に、待ち行列４ｈがＦＩＦＯ３０の先頭に置かれる。
【００１７】
データセグメントに基づくスケジューリングと、データブロックに基づくスケジューリングと、が区別される。データセグメントに基づくスケジューリングの場合には、出力インタフェース１０に従って、他の待ち行列４に替えられる前に、選択された待ち行列４からデータセグメントが取り出される。データセグメントに基づくスケジューリングは、例えば、複数の入力バッファを有し、受信されたデータセグメントを再ソート出来る出力インタフェースにとっては可能である。というのは、データセグメントに基づくスケジューリングの場合は、データブロックのデータセグメントが追い越される可能性があるからであり、従って、例えばデータブロック内での、データセグメントの元々の順序はもはや維持されない。
【００１８】
データブロックに基づくスケジューリングの場合には、複数のデータセグメントを含むデータブロックが基本となる。出力インタフェース１０に従って、他の待ち行列４に替えられる前に、選択された待ち行列４からデータブロック全体が取り出される。データブロックに基づくスケジューリングは、例えば、上記データブロックのために入力バッファを１つしか持たず、受信されたデータを簡単には再ソート出来ない出力インタフェースにとっては必要である。というのは、データセグメントに基づくスケジューリングの場合は、データブロックのデータセグメントが追い越される可能性があるからであり、従って、データブロック内のデータブロックの元々の順序はもはや維持されない。
【００１９】
アクティブなＦＩＦＯ３０内に待ち行列がもはや含まれていない場合には、ＦＩＦＯ３２が作動されてＦＩＦＯ３０が停止され、その際に、ＦＩＦＯ３２は、先にＦＩＦＯ３０について記載したのと同様に処理される。
【００２０】
スケジューラ２０によるスケジューリングのタイムスロットにおいて、出力インタフェース１０がデータを受信する態勢になっていない場合には、第１のスケジューラ２０は、第２のスケジューラ２４及び第３のスケジューラ２６のスケジューリングを開始する。このケースにおいて、本方法又はシステムがハードウェアでパイプライン（Ｐｉｐｅｌｉｎｅ）として構成されており、かつ、第２のスケジューラ２４と、第３のスケジューラ２６と、出力インタフェースへと配置された他の処理ユニットとが、もはや受信態勢にない各出力インタフェース１０のために既にデータを処理しており又は処理する場合には、データが失われる可能性がある。これについて有利に、入力インタフェース内に一時記憶装置が設けられ、この一時記憶装置が、出力インタフェースが受信態勢にないことによるデータセグメントの損失を防止する。データ損失が発生した際には、データが新たに待ち行列４に入れられるように、各入力インタフェースに対してシグナリングされる。
【００２１】
図３は、タイムスロット６０の間に実行される、平行して進行する３つのプロセスを概略的に示している。第１のプロセス６２は、新しいデータが待ち行列４に入った場合には記録し、対応する待ち行列が、既に第３のスケジューラ２６に割り当てられているかを検査する。新しいデータを含む待ち行列４が、未だに第３のスケジューラ２６に割り当てられていない場合には、この待ち行列４は、図２の矢印３４に従って、対応するＦＩＦＯ３０の列に入れられ、又は、図２の矢印３６に従って、対応するＦＩＦＯ３２の列に入れられる。
【００２２】
第２のプロセス６４は、現在のタイムスロット内で扱うべき対応する出力インタフェース１０が、既に第３のスケジューラ２６に割り当てられているかを検査する。各出力インタフェース１０が未だにスケジューラ２６に割り当てられていない場合には、プロセス６４は、パッシブなリスト１８において、各出力インタフェース１０のために少なくとも１つのエントリを案内する。これに対して、第３のスケジューラ２６が既に各出力インタフェースのためにアクティブである場合には、第３のスケジューラ２６は次の待ち行列４を選択する。第２のプロセス６４は、ＦＩＦＯ３０が待ち行列４をもはや持たなくなり次第、ＦＩＦＯ３２を作動させる。
【００２３】
第３のプロセス６６は、図２の矢印３８、４０、及び４２に係る上記ステップを実行する。
【００２４】
データブロックに基づくスケジューリングの場合には、第３のプロセス６６は、待ち行列からのデータブロックの最後のデータセグメントが取り出された後に、ようやく他の待ち行列を選択する。第１のプロセス６２は、データブロックの最後のデータセグメントが待ち行列の列に入れられた場合にようやく、空ではないとして待ち行列にマーク付けをし、これに応じて、待ち行列がスケジューラ２６に割り当てられる。
【図１】
2015208004.tif 000003
【図２】
2015208004.tif 000004
【図３】
2015208004.tif 000005