(57)【特許請求の範囲】
【請求項１】
データキャッシング方法であって、
セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することと、含み、
前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である、
前記データキャッシング方法。
【請求項２】
前記セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶する前に、前記セルに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得すること、
をさらに含む、請求項１に記載のデータキャッシング方法。
【請求項３】
前記セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することは、
セルの入力ポート番号に基づいて、前記入力ポート番号に対応している先入先出のキューのテールポインタ、エンキューサブポインタ及びフリーアドレスを取得し、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶し、前記セルに占用される有効のキャッシュユニットを読み込み、前記有効のキャッシュユニットがフリーアドレスを占有していない場合、前記先入先出のキューのエンキューサブポインタを更新し、前記フリーアドレスを解放し、前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有している場合、前記先入先出のキューのテールポインタ及びエンキューサブポインタを更新すること、
を含む、請求項１又は２に記載のデータキャッシング方法。
【請求項４】
前記デキュー待ちのセルをデキューするようスケジューリングした後に、
前記デキュー待ちのセルに占用される接合ユニットの実際の数、及び前記デキュー待ちのセルに占用されるキャッシュユニットの数に基づいて、前記第１背圧カウント値に対して校正を行うこと、
をさらに含む、請求項２に記載のデータキャッシング方法。
【請求項５】
前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することは、
書き込みポインタを探し出し、前記デキュー待ちのセルに占用される接合ユニットの実際の数に基づいて、前記セルを前記書き込みポインタに対応するレジスタに記憶し、前記レジスタに有効のセルが含まれている場合、接合ユニットを単位として前記デキュー待ちのセルを前記有効のセルと接合し、セルの接合情報を記録し、書き込みポインタを更新すること、
を含む、請求項１又は２に記載のデータキャッシング方法。
【請求項６】
データキャッシング装置であって、
セルの入力ポート番号に基づいて前記セルを対応する先入先出のキューに記憶するように構成されるキャッシングモジュールと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、データの伝送を行うために、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶するように構成される処理モジュールと、含み、
前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である、
前記データキャッシング装置。
【請求項７】
前記セルに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得するように構成される取得モジュール、
をさらに含む、請求項６に記載のデータキャッシング装置。
【請求項８】
前記デキュー待ちのセルに占用される接合ユニットの実際の数、及び前記デキュー待ちのセルに占用されるキャッシュユニットの数に基づいて、前記第１背圧カウント値に対して校正を行うように構成される校正モジュール、
をさらに含む、請求項７に記載のデータキャッシング装置。
【請求項９】
データキャッシング方法であって、
セル接合の方式で接合されているデータを別々のセルに還元することと、
セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングすることと、を含み、
前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第２背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第２背圧カウント値によって得られ、Ｋが正の整数である、
前記データキャッシング方法。
【請求項１０】
セル接合の方式で接合されているデータを別々のセルに還元することは、
前記データに含まれているセルの接合情報に基づいて、セル接合の方式で接合されているデータを別々のセルに還元すること、
を含む、請求項９に記載のデータキャッシング方法。
【請求項１１】
データキャッシング装置であって、
セル接合の方式で接合されているデータを別々のセルに還元するように構成される還元モジュールと、
セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶するように構成される記憶モジュールと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、デキュー待ちのセルをデキューするようスケジューリングするように構成されるスケジューリングモジュールと、を含み、
前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第２背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第２背圧カウント値によって得られ、Ｋが正の整数である、
前記データキャッシング装置。
【請求項１２】
コンピュータ記憶媒体であって、
請求項１〜５のいずれか１項に記載のデータキャッシング方法を実行するためのコンピュータ実行可能な命令を記憶している、
前記コンピュータ記憶媒体。
【請求項１３】
コンピュータ記憶媒体であって、
請求項９〜１０のいずれか１項に記載のデータキャッシング方法を実行するためのコンピュータ実行可能な命令を記憶している、
前記コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ通信技術領域に関し、特にパケットスイッチングネットワークにおけるデータキャッシング方法、装置及び記憶媒体に関する。
【背景技術】
【０００２】
データ通信領域において、パケットスイッチングネットワークの中で、スイッチングネットワーク要素のチップのデータのキャッシュスペースの効率、規模及びデータバスの幅がチップの性能と単位面積当たりの消費電力に対して極めて重要である。内部バスのリソースとキャッシュリソースを省き、スイッチングの効率を向上させるために、通常、データメッセージを複数のセルに分割してから、スイッチングネットワーク要素のチップに伝送し、セルのスイッチングとコピー処理を行い、その後、データメッセージに再構成する。セルが自動アドレシングクエリ、入力端と出力端とのキャッシングを経由して、入力ポートから出力ポートに入り、転送とコピー機能を完成させ、図１が大規模のスイッチングネットワークにおけるデータ処理を示す図である。セルが最も小さい伝送とスイッチングの単位として、固定長と可変長という二つの処理方式があり、可変長セルが固定長セルよりキャッシュリソースとバスリソースの利用率が高く、通常、可変長セル処理方式が採用される。
【０００３】
スイッチングネットワーク要素のチップ内のセルキャッシュは、主に、セルの自動アドレシングの処理結果待ち及び出力のスケジューリングの間で、セルデータの記憶に用いられる。ネットワークにトラヒックの圧力が存在しない場合、キャッシュスペースが必要となる規模が小さいが、ネットワークが混雑している場合、１００メートルの光ファイバー上のシリアルデータメッセージをキャッシングする必要がある。ネットワークが混雑である場合のパケット紛失を避けるように、キャッシュスペースがスイッチングネットワーク要素のチップのスイッチング能力に基づいて計算される。現在のセルのキャッシング方式が、通常、リンクの数、光ファイバーの長さ及びデータ伝送レートに基づいて、余分がある記憶スペースを換算するが、スイッチングネットワーク規模の拡大とデータ伝送レートの高速化に伴い、キャッシュスペースのリソースもそれに応じて上げる必要がある。例えばデータ速度が１２．５Ｇから２５Ｇまで上げる場合、紛失せずに転送を行うことを保証するために、キャッシュスペースの容量を倍にしなければならない。また、可変長セルのスイッチングの前提で、キャッシュリソースの利用率が低く、最小のセルを記憶する場合、５０％よりも低い。図２が異なる長さのネットワーク要素の記憶スペースの利用率を示す図である。
【０００４】
以上のように、キャッシュリソースとバスリソースとの利用率を向上させるために、パケットスイッチングネットワークに応用するデータキャッシング方法及び装置を提供することは、早急に解決する必要がある問題になっている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
これを鑑み、本発明の実施例の目的は、データキャッシング方法、装置及び記憶媒体を提供して、キャッシュリソースとバスリソースの利用率を有効に向上させることができることにある。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明の実施例の技術案は下記のように実現している。
【０００７】
本発明の実施例は、データキャッシング方法を提供し、前記方法は、
セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することと、含み、
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である。
【０００８】
上記の技術案において、前記セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶する前に、前記方法はさらに、前記セルに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得することを含む。
【０００９】
上記の技術案において、前記セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することは、
セルの入力ポート番号に基づいて、前記入力ポート番号に対応している先入先出のキューのテールポインタ、エンキューサブポインタ及びフリーアドレスを取得し、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶し、前記セルに占用される有効のキャッシュユニットを読み込み、前記有効のキャッシュユニットがフリーアドレスを占有していない場合、前記先入先出のキューのエンキューサブポインタを更新し、前記フリーアドレスを解放し、前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有している場合、前記先入先出のキューのテールポインタ及びエンキューサブポインタを更新することを含む。
【００１０】
上記の技術案において、前記デキュー待ちのセルをデキューするようスケジューリングした後に、前記方法はさらに、
前記デキュー待ちのセルに占用される接合ユニットの実際の数、及び前記デキュー待ちのセルに占用されるキャッシュユニットの数に基づいて、前記第１背圧カウント値に対して校正を行うことを含む。
【００１１】
前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することは、
書き込みポインタを探し出し、前記デキュー待ちのセルに占用される接合ユニットの実際の数に基づいて、前記セルを前記書き込みポインタに対応するレジスタに記憶し、前記レジスタに有効のセルが含まれている場合、接合ユニットを単位として前記デキュー待ちのセルを前記有効のセルと接合し、セルの接合情報を記録し、書き込みポインタを更新することを含む。
【００１２】
本発明の実施例はさらに、データキャッシング装置を提供し、前記装置は、
セルの入力ポート番号に基づいて前記セルを対応する先入先出のキューに記憶するように構成されるキャッシングモジュールと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、データの伝送を行うために、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶するように構成される処理モジュールと、含み、
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である。
【００１３】
上記の技術案において、前記装置はさらに、前記セルに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得するように構成される取得モジュールを含む。
【００１４】
上記の技術案において、前記装置はさらに、前記デキュー待ちのセルに占用される接合ユニットの実際の数、及び前記デキュー待ちのセルに占用されるキャッシュユニットの数に基づいて、前記第１背圧カウント値に対して校正を行うように構成される校正モジュールを含む。
【００１５】
本発明の実施例はさらに、データキャッシング方法を提供し前記方法は、
セル接合の方式で接合されているデータを別々のセルに還元することと、
セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングすることと、を含み、
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第２背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第２背圧カウント値によって得られ、Ｋが正の整数である。
【００１６】
上記の技術案において、セル接合の方式で接合されているデータを別々のセルに還元することは、
前記データに含まれているセルの接合情報に基づいて、セル接合の方式で接合されているデータを別々のセルに還元することを含む。
【００１７】
本発明の実施例はさらに、データキャッシング装置を提供し、前記装置は、
セル接合の方式で接合されているデータを別々のセルに還元するように構成される還元モジュールと、
セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶するように構成される記憶モジュールと、
現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、デキュー待ちのセルをデキューするようスケジューリングするように構成されるスケジューリングモジュールと、を含み、
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第２背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第２背圧カウント値によって得られ、Ｋが正の整数である。
【００１８】
本発明の実施例はさらに、コンピュータ記憶媒体を提供し、前記コンピュータ記憶媒体に、本発明の実施例の上記データキャッシング方法を実行するためのコンピュータプログラムを記憶している。
【００１９】
本発明の実施例に提供されているデータキャッシング方法、装置及び記憶媒体によれば、セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキュー（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）に記憶し、現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶し、ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られる。このように、セルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することによって、バスの利用率を向上させ、また、セルに対するデキュー前の能動的な背圧処理によって、スイッチングネットワーク要素のチップにおけるセルのスイッチングの効率と正確性を保証することができる。
【図面の簡単な説明】
【００２０】
【図１】大規模スイッチングネットワークにおけるデータ処理を示す図である。
【図２】異なる長さのネットワーク要素の記憶スペースの利用率を示す図である。
【図３】本発明の実施例１におけるデータキャッシング方法を示す図である。
【図４】本発明におけるセルのキャッシングを示す図である。
【図５】本発明におけるセルの接合を示す図である。
【図６】本発明の実施例２におけるデータキャッシング方法を示す図である。
【図７】本発明の実施例１におけるデータキャッシング装置の構成構造を示す図である。
【図８】本発明の実施例２におけるデータキャッシング装置の構成構造を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施例において、セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶し、現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、データ伝送のために、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶する。ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルでの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である。
【００２２】
図３は、本発明の実施例１におけるデータキャッシング方法を示す図であり、図３に示すように、セルのキャッシュ入力端において、本実施例のデータキャッシング方法のフローは、下記のステップ３０１〜ステップ３０２を含む。
【００２３】
ステップ３０１において、セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶する。
【００２４】
本ステップの前に、前記方法はさらに、前記セルヘッダに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得することを含む。
【００２５】
ここで、前記キャッシュユニットは、ランダムアクセスメモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）アドレス毎のＮ分の１であり、即ち、ＲＡＭを固定のＮ個に分け、１個毎が一つのキャッシュユニットであり、Ｎが正の整数であり、Ｎの値がデータの転送レートなどに基づいて設定されることが可能である。
【００２６】
前記セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶すると同時に、前記方法はさらに、前記セルのセル情報を前記対応する先入先出のキューに記憶することを含む。ここで、前記セル情報は、前記セルの長さ、セルバージョン及び前記セルに占用されるキャッシュユニットの数を含む。
【００２７】
一つの実施例において、本ステップは、セルの入力ポート番号に基づいて、前記入力ポート番号に対応している先入先出のキューのテールポインタ、エンキューサブポインタ及びフリーアドレスを取得し、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶し、前記セルに占用される有効のキャッシュユニットを読み込み、前記有効のキャッシュユニットがフリーアドレスを占有していない場合、前記先入先出のキューのエンキューサブポインタを更新し、前記フリーアドレスを解放し、前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有している場合、前記先入先出のキューのテールポインタ及びエンキューサブポインタを更新することをを含み、本発明におけるセルのキャッシングが図４に示されている通りである。
【００２８】
ここで、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶することは、
前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていることを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、上位ビットから下位ビットの順序で前記セルをフリーアドレスに書き込むことと、
前記先入先出のキューが空ではないこと、又は前記テールポインタ内のキャッシュユニットが満杯に書き込まれていないことを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じのＭ個のグループの分割データに分け、また、エンキューサブポインタの位置に基づいて、上位ビットから下位ビットの順序で、前記セルのＭ個のグループの分割データを書き込み、エンキューサブポインタの位置に、セルの最上位ビットに位置付けられている１つのグループの分割データを書き込み、エンキューサブポインタから１を引いたものである前記フリーアドレスの番号のキャッシュユニットに、前記セルの分割データの最後の１つのグループの分割データを書き込むことと、含む。
【００２９】
ここで、前記Ｍの値が、一つのアドレスに含まれているキャッシュユニットの数と同じであり、即ちＭ＝Ｎである。前記Ｍが正の整数である。
【００３０】
前記セルに占用される有効のキャッシュユニットが、前記セルに実際に占用されるキャッシュユニットである。
【００３１】
前記有効のキャッシュユニットがフリーアドレスを占有していないことは、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きくなく、かつ前記エンキューサブポインタが０ではないことを含む。
【００３２】
前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有していることは、前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていること、又は、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きいことを含む。
【００３３】
前記セルに実際に占用されるキャッシュユニットの数がＭより小さい場合、前記セルの最後の１つのグループの分割データが無効である。
【００３４】
ステップ３０２において、現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶する。
【００３５】
ここで、前記接合ユニットのビット幅が、一つのキャッシュユニットのビット幅のＸ分の１であり、データの転送レートなどに基づいて設定されることが可能であり、最少のレジスタの条件でデータを紛失しないことを保証する必要があるし、バスリソースが充分に利用され、空きビートを回避することも保証する必要がある。Ｘが正の整数である。
【００３６】
前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である。
【００３７】
ここで、前記第１背圧カウント値が、前記キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断するための依拠である。
【００３８】
前記Ｋ−１番目のサイクルの第１背圧カウント値＝Ｋ−２番目のサイクルの第１背圧カウント値＋前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値−サイクル毎のバスで伝送可能な接合ユニットの数。
【００３９】
前記前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値＝前記前回のデキューセルに占用されるキャッシュユニットの数と前記Ｘの乗積。
【００４０】
Ｋの値が１である場合、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルをデキューする時に、その前にいずれのその他のセルがデキューされていないため、前記第１背圧カウント値が０のままであり、直接に前記デキュー待ちのセルのデキュー及び後続操作を行うことが可能である。
【００４１】
Ｋの値が２である時に、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルが既にデキューされ、第１個のデキュー待ちのセルをデキューする前に、その他のセルのデキューが存在しないため、即ち、Ｋ−２番目のサイクルの第１背圧カウント値が０であるため、第１個のデキュー待ちのセルに占用される接合ユニットの数の推定値、およびサイクル毎のバスで伝送可能な接合ユニットの数に基づいて、直接に第１個のサイクルの第１背圧カウント値を取得することが可能であり、第１個のサイクルの第１背圧カウント値に基づいて、次のデキュー待ちのセルのデキューを許可するか否かを判断する。
【００４２】
一つの実施例において、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値より大きい場合、前記キュー内のデキュー待ちのセルをＫ番目のサイクルでデキューすることを許可せず、サイクル毎のバスで伝送可能な接合ユニットの数に基づいて、前記レジスタ内のデータを伝送し、Ｇ番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下になってから、Ｇ＋１番目のサイクルで前記デキュー待ちのセルをデキュー可能であると確定し、ここで、ＧがＫより大きい正の整数である。
【００４３】
一つの実施例において、前記デキュー待ちのセルをデキューするようスケジューリングすることは、デキューポート番号に基づいて、対応する先入先出のキューのヘッダポインタ、従ヘッダポインタ及びデキューサブポインタを取得し、前記キュー内のデキュー待ちのセルに占用されるキャッシュユニットの数及びデキューサブポインタに基づいて、読み込もうとしているキャッシュユニットの番号範囲及び個数を計算し、前記デキュー待ちのセルに占用されるキャッシュユニット内のデータを一つのセルに再構成し、デキューサブポインタを、元デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値に更新し、前記加算後の値がＮより大きい場合、前記加算後の値からＮを引いた値に更新し、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値がＮより大きくない場合、ヘッダポインタを更新する必要がなく、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算結果がＮより大きい場合、ヘッダポインタを前記従ヘッダポインタに更新することを含む。ここで、前記デキュー待ちのセルが前記先入先出のキューの先頭のセルである。
【００４４】
ここで、前記デキューポート番号が前記入力ポート番号と同じである。
【００４５】
一つの実施例において、前記デキュー待ちのセルをデキューするようスケジューリングした後に、前記方法はさらに、前記デキュー待ちのセルに占用される接合ユニットの数の実際値に基づいて、第１背圧カウント値に対して校正を行うことを含む。
【００４６】
ここで、前記デキュー待ちのセルに占用される接合ユニットの数の実際値が、通常、前記デキュー待ちのセルに占用される接合ユニットの数の推定値以下であるため、前記実際値が前記推定値と異なる場合、前記校正は、第１背圧カウント値から前記推定値と前記実際値の差分を引くことを含む。校正後の第１背圧カウント値を用いて、前記第１プリセット閾値の値と比較して、キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断する。
【００４７】
一つの実施例において、本発明の実施例に、二つ又は二つ以上のレジスタにより構成される一つのレジスタセットを含む。
【００４８】
前記レジスタは、Ｙ個の仮想ユニットを含み、即ち、前記レジスタがＹ個の仮想ユニットに分けられ、前記仮想ユニットのビット幅が一つの接合ユニットのビット幅と同じである。
【００４９】
前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することは、
レジスタセット内の書き込みポインタを取得し、前記デキュー待ちのセルに占用される接合ユニットの実際の数に基づいて、前記セルを前記書き込みポインタに対応するレジスタ内に記憶し、前記レジスタに有効のセルを含む場合、接合ユニットを単位として、前記デキュー待ちのセルを前記有効のセルと接合し、セルの接合情報を記録し、書き込みポインタを、前記デキュー待ちのセルに占用される接合ユニットの数と元書き込みポインタの加算後の値に更新し、前記加算後の値がＹ以上である場合、前記加算後の値からＹを引いて、新たな書き込みポインタとすることを含む。ここで、前記書き込みポインタが接合ユニットをステッピング値とする。本発明におけるセルの接合は図５に示されている通りである。
【００５０】
ここで、前記セルの接合情報は、接合位置、セルヘッダ識別子、セルテール識別子およびセル有効識別子を含み、ここで、前記接合位置が二つのセルの境界を識別する。
【００５１】
本発明の実施例において、前記レジスタが最大二つの異なるセルの接合を許可するように設定され、そのため、前記セルの有効識別子が、第１セル有効識別子と第２セル有効識別子を含み、レジスタ内の第２個のセルがまだ入力されず、前記レジスタに含まれる仮想ユニットに満杯に書き込まれていない場合、第２セル有効識別子が無効である。
【００５２】
一つの実施例において、前記レジスタセット内のレジスタに有効のセルが含まれている場合、前記レジスタセット内の読み出しポインタに対応するレジスタ内のすべてのデータをセルのキャッシュ出力端に、前記セルの接合情報をつけて出力する。図５に示すように、読み出しポインタがレジスタを単元として変わり、レジスタ０のデータ出力の後に、読み出しポインタがレジスタ１に指す。
【００５３】
図６は本発明の実施例２におけるデータキャッシング方法を示す図であり、図６に示すように、セルのキャッシュ出力端において、本実施例のデータキャッシング方法フローは、ステップ６０１〜ステップ６０３を含む。
【００５４】
ステップ６０１において、セル接合の方式で接合されているデータを別々のセルに還元する。
【００５５】
ここで、出力レジスタからデータを出力する時に、最初に行う必要があることは、セル接合の方式で接合されているデータを別々のセルに還元することである。
【００５６】
本ステップは、前記データに含まれるセルの接合情報に基づいて、セル接合の方式で接合されているデータを別々のセルに還元することを含む。
【００５７】
ここで、前記セルの接合情報は、接合位置、セルヘッダ識別子、セルテール識別子およびセル有効識別子を含み、ここで、前記接合位置が二つのセルの境界を識別する。
【００５８】
ステップ６０２において、セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶する。
【００５９】
本ステップの前に、前記方法はさらに、前記セルヘッダに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得することを含む。
【００６０】
ここで、前記キャッシュユニットは、ＲＡＭアドレス毎のＮ分の１であり、即ち、ＲＡＭを固定のＮ個に分け、１個毎が一つのキャッシュユニットであり、Ｎが正の整数であり、Ｎの値がデータの転送レートなどに基づいて設定されることが可能である。
【００６１】
前記セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶すると同時に、前記方法はさらに、前記セルのセル情報を前記対応する先入先出のキューに記憶することを含み、ここで、前記セル情報は、前記セルの長さ、セルバージョン及び前記セルに占用されるキャッシュユニットの数を含む。
【００６２】
一つの実施例において、本ステップは、セルの出力ポート番号に基づいて、前記出力ポート番号に対応している先入先出のキューのテールポインタ、エンキューサブポインタ及びフリーアドレスを取得し、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶し、前記セルに占用される有効のキャッシュユニットを読み込み、前記有効のキャッシュユニットがフリーアドレスを占有していない場合、前記先入先出のキューのエンキューサブポインタを更新し、前記フリーアドレスを解放し、前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有している場合、前記先入先出のキューのテールポインタ及びエンキューサブポインタを更新することをを含む。
【００６３】
ここで、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶することは、
前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていることを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、上位ビットから下位ビットの順序で前記セルをフリーアドレスに書き込むことと、
前記先入先出のキューが空ではないこと、又は前記テールポインタ内のキャッシュユニットが満杯に書き込まれていないことを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、エンキューサブポインタの位置に基づいて、上位ビットから下位ビットの順序で、前記セルのＭ個のグループの分割データを書き込み、エンキューサブポインタの位置に、セルの最上位ビットに位置付けられている１つのグループの分割データを書き込み、エンキューサブポインタから１を引いたものである前記フリーアドレスの番号のキャッシュユニットに、前記セルの最後の１つのグループの分割データを書き込むことと、含む。
【００６４】
ここで、前記Ｍの値が、一つのアドレスに含まれているキャッシュユニットの数と同じであり、即ちＭ＝Ｎである。前記Ｍが正の整数である。
【００６５】
前記セルに占用される有効のキャッシュユニットが、前記セルに実際に占用されるキャッシュユニットである。
【００６６】
前記有効のキャッシュユニットがフリーアドレスを占有していないことは、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きくなく、かつ前記エンキューサブポインタが０ではないことを含む。
【００６７】
前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有していることは、前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていること、又は、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きいことを含む。
【００６８】
前記セルに実際に占用されるキャッシュユニットの数がＭより小さい場合、前記セルの最後の１つのグループの分割データが無効である。
【００６９】
ステップ６０３において、現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングする。
【００７０】
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第２背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第２背圧カウント値によって得られ、Ｋが正の整数である。
【００７１】
ここで、前記接合ユニットのビット幅が、一つのキャッシュユニットのビット幅のＸ分の１であり、データの転送レートなどに基づいて設定されることが可能であり、最少のレジスタの条件でデータを紛失しないことを保証する必要があるし、バスリソースが充分に利用され、空きビートを回避することも保証する必要がある。Ｘが正の整数である。
【００７２】
前記第２背圧カウント値が、前記キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断するための依拠である。
【００７３】
前記Ｋ−１番目のサイクルの第２背圧カウント値＝Ｋ−２番目のサイクルの第２背圧カウント値＋前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値−サイクル毎のバスで伝送可能な接合ユニットの数。
【００７４】
前記前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値＝前記前回のデキューセルに占用されるキャッシュユニットの数と前記Ｘの乗積。
【００７５】
Ｋの値が１である場合、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルをデキューする時に、その前にいずれのその他のセルがデキューされていないため、前記第２背圧カウント値が０のままであり、直接に前記デキュー待ちのセルのデキュー及び後続操作を行うことが可能である。
【００７６】
Ｋの値が２である時に、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルが既にデキューされ、第１個のデキュー待ちのセルをデキューする前に、その他のセルのデキューが存在しないため、即ち、Ｋ−２番目のサイクルの第２背圧カウント値が０であるため、第１個のデキュー待ちのセルに占用される接合ユニットの数の推定値、およびサイクル毎のバスで伝送可能な接合ユニットの数に基づいて、直接に第１個のサイクルの第２背圧カウント値を取得することが可能であり、第１個のサイクルの第２背圧カウント値に基づいて、次のデキュー待ちのセルのデキューを許可するか否かを判断する。
【００７７】
一つの実施例において、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値より大きい場合、前記キュー内のデキュー待ちのセルをＫ番目のサイクルでデキューすることを許可せず、サイクル毎のバスで伝送可能な接合ユニットの数に基づいて、前記レジスタ内のデータを伝送し、Ｇ番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下になってから、Ｇ＋１番目のサイクルで前記デキュー待ちのセルをデキュー可能であると確定し、ここで、ＧがＫより大きい正の整数である。
【００７８】
一つの実施例において、前記デキュー待ちのセルをデキューするようスケジューリングすることは、デキューポート番号に基づいて、対応する先入先出のキューのヘッダポインタ、従ヘッダポインタ及びデキューサブポインタを取得し、前記キュー内のデキュー待ちのセルに占用されるキャッシュユニットの数及びデキューサブポインタに基づいて、読み込もうとしているキャッシュユニットの番号範囲及び個数を計算し、前記デキュー待ちのセルに占用されるキャッシュユニット内のデータを一つのセルに再構成してバスに伝送し、デキューサブポインタを、元デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値に更新し、前記加算後の値がＮより大きい場合、前記加算後の値からＮを引いた値に更新し、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値がＮより大きくない場合、ヘッダポインタを更新する必要がなく、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算結果がＮより大きい場合、ヘッダポインタを前記従ヘッダポインタに更新することを含む。ここで、前記デキュー待ちのセルが前記先入先出のキューの先頭のセルである。
【００７９】
ここで、前記デキューポート番号が前記出力ポート番号と同じである。
【００８０】
一つの実施例において、前記デキュー待ちのセルをデキューするようスケジューリングした後に、前記方法はさらに、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、前記実際値に基づいて、第２背圧カウント値に対して校正を行うことを含む。
【００８１】
ここで、前記デキュー待ちのセルに占用される接合ユニットの数の実際値が、通常、前記デキュー待ちのセルに占用される接合ユニットの数の推定値以下であるため、前記実際値が前記推定値と異なる場合、前記校正は、第２背圧カウント値から前記推定値と前記実際値の差分を引くことを含む。校正後の第２背圧カウント値を用いて、前記第２プリセット閾値の値と比較し、キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断する。
【００８２】
図７は、本発明の実施例１におけるデータキャッシング装置の構成構造を示す図であり、図７に示すように、前記装置は、キャッシングモジュール７１及び処理モジュール７２を含む。
【００８３】
前記キャッシングモジュール７１は、セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶するように構成される。
【００８４】
前記処理モジュール７２は、現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、前記デキュー待ちのセルをデキューするようスケジューリングし、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、データの伝送を行うために、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶するように構成される。
【００８５】
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第１背圧カウント値によって得られ、Ｋが正の整数である。
【００８６】
前記キャッシュユニットは、ＲＡＭアドレス毎のＮ分の１であり、即ち、ＲＡＭを固定のＮ個に分け、１個毎が一つのキャッシュユニットであり、Ｎが正の整数であり、Ｎの値がデータの転送レートなどに基づいて設定されることが可能である。
【００８７】
前記接合ユニットのビット幅が、一つのキャッシュユニットのビット幅のＸ分の１であり、データの転送レートなどに基づいて設定されることが可能であり、最少のレジスタの条件でデータを紛失しないことを保証する必要があるし、バスリソースが充分に利用され、空きビートを回避することも保証する必要がある。Ｘが正の整数である。
【００８８】
一つの実施例において、前記装置はさらに、取得モジュール７３を含む。取得モジュール７３は、前記セルヘッダに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得するように構成される。
【００８９】
それに応じて、前記キャッシングモジュール７１はさらに、前記セルのセル情報を前記対応する先入先出のキューに記憶するように構成される。ここで、前記セル情報は、前記セルの長さ、セルバージョン及び前記セルに占用されるキャッシュユニットの数を含む
一つの実施例において、前記キャッシングモジュール７１は、セルの入力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することは、
前記キャッシングモジュール７１は、セルの入力ポート番号に基づいて、前記入力ポート番号に対応している先入先出のキューのテールポインタ、エンキューサブポインタ及びフリーアドレスを取得し、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶し、前記セルに占用される有効のキャッシュユニットを読み込み、前記有効のキャッシュユニットがフリーアドレスを占有していない場合、前記先入先出のキューのエンキューサブポインタを更新し、前記フリーアドレスを解放し、前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有している場合、前記先入先出のキューのテールポインタ及びエンキューサブポインタを更新することをを含む。
【００９０】
ここで、前記キャッシングモジュール７１は、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶することは、
前記キャッシングモジュール７１は、前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていることを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、上位ビットから下位ビットの順序で前記セルをフリーアドレスに書き込むことと、
前記先入先出のキューが空ではないこと、又は前記テールポインタ内のキャッシュユニットが満杯に書き込まれていないことを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、エンキューサブポインタの位置に基づいて、上位ビットから下位ビットの順序で、前記セルのＭ個のグループの分割データを書き込み、エンキューサブポインタの位置に、セルの最上位ビットに位置付けられている１つのグループの分割データを書き込み、エンキューサブポインタから１を引いたものである前記フリーアドレスの番号のキャッシュユニットに、前記セルの最後の１つのグループの分割データを書き込むことと、含む。
【００９１】
ここで、前記Ｍの値が、一つのアドレスに含まれているキャッシュユニットの数と同じであり、即ちＭ＝Ｎである。前記Ｍが正の整数である。
【００９２】
前記セルに占用される有効のキャッシュユニットが、前記セルに実際に占用されるキャッシュユニットである。
【００９３】
前記有効のキャッシュユニットがフリーアドレスを占有していないことは、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きくなく、かつ前記エンキューサブポインタが０ではないことを含む。
【００９４】
前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有していることは、前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていること、又は、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きいことを含む。
【００９５】
前記セルに実際に占用されるキャッシュユニットの数がＭより小さい場合、前記セルの最後の１つのグループの分割データが無効である。
【００９６】
一つの実施例において、前記Ｋ−１番目のサイクルの第１背圧カウント値が、前記キュー内のデキュー待ちのセルをＫ番目のサイクルでデキューすることを許可するか否かを判断するための依拠である。
【００９７】
前記Ｋ−１番目のサイクルの第１背圧カウント値＝Ｋ−２番目のサイクルの第１背圧カウント値＋前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値−サイクル毎のバスで伝送可能な接合ユニットの数。
【００９８】
前記前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値＝前記前回のデキューセルに占用されるキャッシュユニットの数と前記Ｘの乗積。
【００９９】
Ｋの値が１である場合、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルをデキューする時に、その前にいずれのその他のセルがデキューされていないため、前記第１背圧カウント値が０のままであり、直接に前記デキュー待ちのセルのデキュー及び後続操作を行うことが可能である。
【０１００】
Ｋの値が２である時に、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルが既にデキューされ、第１個のデキュー待ちのセルをデキューする前に、その他のセルのデキューが存在しないため、即ち、Ｋ−２番目のサイクルの第１背圧カウント値が０であるため、第１個のデキュー待ちのセルに占用される接合ユニットの数の推定値、およびサイクル毎のバスで伝送可能な接合ユニットの数に基づいて、直接に第１個のサイクルの第１背圧カウント値を取得することが可能であり、第１個のサイクルの第１背圧カウント値に基づいて、次のデキュー待ちのセルのデキューを許可するか否かを判断する。
【０１０１】
一つの実施例において、前記処理モジュール７２は、Ｋ−１番目のサイクルの第１背圧カウント値が第１プリセット閾値の値より大きい場合、前記キュー内のデキュー待ちのセルをＫ番目のサイクルでデキューすることを許可せず、サイクル毎のバスで伝送可能な接合ユニットの数に基づいて、前記レジスタ内のデータを伝送し、Ｇ番目のサイクルの第１背圧カウント値が第１プリセット閾値の値以下になってから、Ｇ＋１番目のサイクルで前記デキュー待ちのセルをデキュー可能であると確定するように構成される。ここで、ＧがＫより大きい正の整数である。
【０１０２】
一つの実施例において、前記処理モジュール７２が、前記デキュー待ちのセルをデキューするようスケジューリングすることは、
前記処理モジュール７２が、デキューポート番号に基づいて、対応する先入先出のキューのヘッダポインタ、従ヘッダポインタ及びデキューサブポインタを取得し、前記キュー内のデキュー待ちのセルに占用されるキャッシュユニットの数及びデキューサブポインタに基づいて、読み込もうとしているキャッシュユニットの番号範囲及び個数を計算し、前記デキュー待ちのセルに占用されるキャッシュユニット内のデータを一つのセルに再構成し、デキューサブポインタを、元デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値に更新し、前記加算後の値がＮより大きい場合、前記加算後の値からＮを引いた値に更新し、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値がＮより大きくない場合、ヘッダポインタを更新する必要がなく、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算結果がＮより大きい場合、ヘッダポインタを前記従ヘッダポインタに更新することを含む。ここで、前記デキュー待ちのセルが前記先入先出のキューの先頭のセルである。
【０１０３】
ここで、前記デキューポート番号が前記入力ポート番号と同じである。
【０１０４】
一つの実施例において、前記装置はさらに、校正モジュール７４を含む。校正モジュール７４は、前記デキュー待ちのセルに占用される接合ユニットの実際の数、及び前記デキュー待ちのセルに占用されるキャッシュユニットの数に基づいて、前記第１背圧カウント値に対して校正を行うように構成される。
【０１０５】
ここで、前記デキュー待ちのセルに占用される接合ユニットの数の実際値が、通常、前記デキュー待ちのセルに占用される接合ユニットの数の推定値以下であるため、前記実際値が前記推定値と異なる場合、前記校正は、第１背圧カウント値から前記推定値と前記実際値の差分を引くことを含む。校正後の第１背圧カウント値を用いて、前記第１プリセット閾値の値と比較して、キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断する。
【０１０６】
一つの実施例において、本発明の実施例に、二つ又は二つ以上のレジスタにより構成される一つのレジスタセットを含む。
【０１０７】
前記レジスタは、Ｙ個の仮想ユニットを含み、即ち、前記レジスタがＹ個の仮想ユニットに分けられ、前記仮想ユニットのビット幅が一つの接合ユニットのビット幅と同じである。
【０１０８】
前記処理モジュール７２が、前記デキュー待ちのセルをセル接合の方式でバスのビット幅と同じビット幅のレジスタに記憶することは、
前記処理モジュール７２が、レジスタセット内の書き込みポインタを取得し、前記デキュー待ちのセルに占用される接合ユニットの実際の数に基づいて、前記セルを前記書き込みポインタに対応するレジスタ内に記憶し、前記レジスタに有効のセルを含む場合、接合ユニットを単位として、前記デキュー待ちのセルを前記有効のセルと接合し、セルの接合情報を記録し、書き込みポインタを、前記デキュー待ちのセルに占用される接合ユニットの数と元書き込みポインタの加算後の値に更新し、前記加算後の値がＹ以上である場合、前記加算後の値からＹを引いて、新たな書き込みポインタとすることを含む。ここで、前記書き込みポインタが接合ユニットをステッピング値とする。
【０１０９】
ここで、前記セルの接合情報は、接合位置、セルヘッダ識別子、セルテール識別子およびセル有効識別子を含み、ここで、前記接合位置が二つのセルの境界を識別する。
【０１１０】
本発明の実施例において、前記レジスタが最大二つの異なるセルの接合を許可するように設定され、そのため、前記セルの有効識別子が、第１セル有効識別子と第２セル有効識別子を含み、レジスタ内の第２個のセルがまだ入力されず、前記レジスタに含まれる仮想ユニットに満杯に書き込まれていない場合、第２セル有効識別子が無効である。
【０１１１】
一つの実施例において、前記処理モジュール７２はさらに、前記レジスタセット内のレジスタに有効のセルデータが含まれていることを確定した場合、前記レジスタセット内の読み出しポインタに対応するレジスタ内のすべてのデータをセルのキャッシュ出力端に、前記セルの接合情報をつけて出力するように構成される。図５に示すように、読み出しポインタがレジスタを単元として変わり、レジスタ０のデータ出力の後に、読み出しポインタがレジスタ１に指す。
【０１１２】
図８は本発明の実施例２におけるデータキャッシング装置の構成構造を示す図であり、図８に示すように、前記装置は、還元モジュール８１、記憶モジュール８２及びスケジューリングモジュール８３を含む。
【０１１３】
前記還元モジュール８１は、セル接合の方式で接合されているデータを別々のセルに還元するように構成される。
【０１１４】
前記記憶モジュール８２は、セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶するように構成される。
【０１１５】
前記スケジューリングモジュール８３は、現在のＫ番目のサイクルで、デキュー待ちのセルをデキュー可能であると確定し、デキュー待ちのセルをデキューするようスケジューリングするように構成される。
【０１１６】
ここで、前記デキュー待ちのセルをデキュー可能であると確定することは、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下であることに基づいて行われ、前記Ｋ−１番目のサイクルの第２背圧カウント値が、前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値、サイクル毎のバスで伝送可能な接合ユニットの数、及びＫ−２番目のサイクルの第２背圧カウント値によって得られ、Ｋが正の整数である。
【０１１７】
一つの実施例において、前記還元モジュール８１が、セル接合の方式で接合されているデータを別々のセルに還元することは、
前記還元モジュール８１が、前記データに含まれているセルの接合情報に基づいて、セル接合の方式で接合されているデータを別々のセルに還元する。
【０１１８】
ここで、前記セルの接合情報は、接合位置、セルヘッダ識別子、セルテール識別子およびセル有効識別子を含み、ここで、前記接合位置が二つのセルの境界を識別する。
【０１１９】
一つの実施例において、前記装置はさらに、抽出モジュール８４を含み、前記セルヘッダに含まれているセルの長さ情報とセルのバージョン情報を抽出し、前記セルの長さ情報とセルのバージョン情報に基づいて、前記セルに占用されるキャッシュユニットの数を取得するように構成される。
【０１２０】
ここで、前記キャッシュユニットは、ＲＡＭアドレス毎のＮ分の１であり、即ち、ＲＡＭを固定のＮ個に分け、１個毎が一つのキャッシュユニットであり、Ｎが正の整数であり、Ｎの値がデータの転送レートなどに基づいて設定されることが可能である。
【０１２１】
それに応じて、前記記憶モジュール８２はさらに、前記セルのセル情報を前記対応する先入先出のキューに記憶するように構成され、ここで、前記セル情報は、前記セルの長さ、セルバージョン及び前記セルに占用されるキャッシュユニットの数を含む。
【０１２２】
一つの実施例において、前記記憶モジュール８２が、セルの出力ポート番号に基づいて、前記セルを対応する先入先出のキューに記憶することは、
前記記憶モジュール８２は、セルの出力ポート番号に基づいて、前記出力ポート番号に対応している先入先出のキューのテールポインタ、エンキューサブポインタ及びフリーアドレスを取得し、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶し、前記セルに占用される有効のキャッシュユニットを読み込み、前記有効のキャッシュユニットがフリーアドレスを占有していない場合、前記先入先出のキューのエンキューサブポインタを更新し、前記フリーアドレスを解放し、前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有している場合、前記先入先出のキューのテールポインタ及びエンキューサブポインタを更新する。
【０１２３】
ここで、前記記憶モジュール８２が、前記セルを、長さがアドレス毎に占用されるキャッシュユニットの数であることに基づいて、前記先入先出のキューに記憶することは、
前記記憶モジュール８２が、前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていることを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、上位ビットから下位ビットの順序で前記セルをフリーアドレスに書き込むことと、
前記記憶モジュール８２が、前記先入先出のキューが空ではないこと、又は前記テールポインタ内のキャッシュユニットが満杯に書き込まれていないことを確定した場合、前記セルを、上位ビットから下位ビットに、前記キャッシュユニットのビット幅と同じビット幅のＭ個のグループの分割データに分け、また、エンキューサブポインタの位置に基づいて、上位ビットから下位ビットの順序で、前記セルのＭ個のグループの分割データを書き込み、エンキューサブポインタの位置に、セルの最上位ビットに位置付けられている１つのグループの分割データを書き込み、エンキューサブポインタから１を引いたものである前記フリーアドレスの番号のキャッシュユニットに、前記セルの最後の１つのグループの分割データを書き込むことと、含む。
【０１２４】
ここで、前記Ｍの値が、一つのアドレスに含まれているキャッシュユニットの数と同じであり、即ちＭ＝Ｎである。前記Ｍが正の整数である。
【０１２５】
前記セルに占用される有効のキャッシュユニットが、前記セルに実際に占用されるキャッシュユニットである。
【０１２６】
前記有効のキャッシュユニットがフリーアドレスを占有していないことは、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きくなく、かつ前記エンキューサブポインタが０ではないことを含む。
【０１２７】
前記セルに占用される有効のキャッシュユニットがフリーアドレスを占有していることは、前記先入先出のキューが空であること、又は前記テールポインタ内のキャッシュユニットが既に満杯に書き込まれていること、又は、前記セルに実際に占用されるキャッシュユニットの数とエンキューサブポインタの加算結果がＭより大きいことを含む。
【０１２８】
前記セルに実際に占用されるキャッシュユニットの数がＭより小さい場合、前記セルの最後の１つのグループの分割データが無効である。
【０１２９】
一つの実施例において、前記接合ユニットのビット幅が、一つのキャッシュユニットのビット幅のＸ分の１であり、データの転送レートなどに基づいて設定されることが可能であり、最少のレジスタの条件でデータを紛失しないことを保証する必要があるし、バスリソースが充分に利用され、空きビートを回避することも保証する必要がある。Ｘが正の整数である。
【０１３０】
前記第２背圧カウント値が、前記キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断するための依拠である。
【０１３１】
前記Ｋ−１番目のサイクルの第２背圧カウント値＝Ｋ−２番目のサイクルの第２背圧カウント値＋前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値−サイクル毎のバスで伝送可能な接合ユニットの数。
【０１３２】
前記前回のデキューセルをデキューする時に占用された接合ユニットの数の推定値＝前記前回のデキューセルに占用されるキャッシュユニットの数と前記Ｘの乗積。
【０１３３】
Ｋの値が１である場合、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルをデキューする時に、その前にいずれのその他のセルがデキューされていないため、前記第２背圧カウント値が０のままであり、直接に前記デキュー待ちのセルのデキュー及び後続操作を行うことが可能である。
【０１３４】
Ｋの値が２である時に、即ち、前記先入先出のキュー内の第１個のデキュー待ちのセルが既にデキューされていて、第１個のデキュー待ちのセルをデキューする前に、その他のセルのデキューが存在しないため、即ち、Ｋ−２番目のサイクルの第２背圧カウント値が０であるため、第１個のデキュー待ちのセルに占用される接合ユニットの数の推定値、およびサイクル毎のバスで伝送可能な接合ユニットの数に基づいて、直接に第１個のサイクルの第２背圧カウント値を取得することが可能であり、第１個のサイクルの第２背圧カウント値に基づいて、次のデキュー待ちのセルのデキューを許可するか否かを判断する。
【０１３５】
一つの実施例において、前記スケジューリングモジュール８３は、Ｋ−１番目のサイクルの第２背圧カウント値が第２プリセット閾値の値より大きい場合、前記キュー内のデキュー待ちのセルをＫ番目のサイクルでデキューすることを許可せず、サイクル毎のバスで伝送可能な接合ユニットの数に基づいて、前記レジスタ内のデータを伝送し、Ｇ番目のサイクルの第２背圧カウント値が第２プリセット閾値の値以下になってから、Ｇ＋１番目のサイクルで前記デキュー待ちのセルをデキュー可能であると確定するように構成される。ここで、ＧがＫより大きい正の整数である。
【０１３６】
一つの実施例において、前記スケジューリングモジュール８３が、前記デキュー待ちのセルをデキューするようスケジューリングすることは、
前記スケジューリングモジュール８３は、デキューポート番号に基づいて、対応する先入先出のキューのヘッダポインタ、従ヘッダポインタ及びデキューサブポインタを取得し、前記キュー内のデキュー待ちのセルに占用されるキャッシュユニットの数及びデキューサブポインタに基づいて、読み込もうとしているキャッシュユニットの番号範囲及び個数を計算し、前記デキュー待ちのセルに占用されるキャッシュユニット内のデータを一つのセルに再構成してバスに伝送し、デキューサブポインタを、元デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値に更新し、前記加算後の値がＮより大きい場合、前記加算後の値からＮを引いた値に更新し、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算後の値がＮより大きくない場合、ヘッダポインタを更新する必要がなく、デキューサブポインタと前記セルに占用されるキャッシュユニットの数の加算結果がＮより大きい場合、ヘッダポインタを前記従ヘッダポインタに更新することを含む。ここで、前記デキュー待ちのセルが前記先入先出のキューの先頭のセルである。
【０１３７】
ここで、前記デキューポート番号が前記出力ポート番号と同じである。
【０１３８】
一つの実施例において、前記装置はさらに、修正モジュール８５を含む。修正モジュール８５は、前記デキュー待ちのセルをデキューするようスケジューリングした後に、前記デキュー待ちのセルに占用される接合ユニットの数の実際値を取得し、前記実際値に基づいて、第２背圧カウント値に対して校正を行うように構成される。
【０１３９】
ここで、前記デキュー待ちのセルに占用される接合ユニットの数の実際値が、通常、前記デキュー待ちのセルに占用される接合ユニットの数の推定値以下であるため、前記実際値が前記推定値と異なる場合、前記校正は、第２背圧カウント値から前記推定値と前記実際値の差分を引くことを含む。校正後の第２背圧カウント値を用いて、前記第２プリセット閾値の値と比較し、キュー内のデキュー待ちのセルを次のサイクルでデキューすることを許可するか否かを判断する。
【０１４０】
本発明の実施例に提供されているキャッシングモジュール、処理モジュール、取得モジュール、校正モジュール、還元モジュール、記憶モジュール、スケジューリングモジュール、抽出モジュール、修正モジュールが、いずれもプロセッサによって実現されても良く、もちろん、具体的なロジック回路によって実現されても良い。ここで、前記プロセッサは、移動端末又はサーバ上のプロセッサであっても良く、実際応用において、プロセッサが中央処理装置（ＣＰＵ）、マイクロプロセッサ（ＭＰＵ）、デジタルシグナルプロセッサ（ＤＳＰ）又は現場でプログラム可能なゲートアレイ（ＦＰＧＡ）などであっても良い。
【０１４１】
本発明の実施例において、ソフトウェア機能モジュールの形で上記データキャッシング方法を実現して、単独の製品として販売または使用する場合、コンピュータ読み取り可能の記憶媒体に記憶しても良い。これによって、本発明の実施例の技術案が事実的に、言い換えれば先行技術に貢献した部分がソフトウェア製品の形で体現でき、該コンピュータソフトウェア製品は記憶媒体に記憶され、コンピュータ装置（パソコン、サーバ、またはネットワーク装置などであっても良い）は、本発明の各実施例の全部または一部の前記方法を実行するための複数の命令を含む。上記の記憶媒体は、ＵＳＢメモリ、移動ハードディスク、読み取り専用メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスクまたは光ディスクなどの各種のプログラムコードが記憶できる媒体を含む。従って、本発明の実施例はいずれのハードウェアとソフトウェアとの結合を限定しない。
【０１４２】
それに応じて、本発明の実施例はさらに、コンピュータ記憶媒体を提供し、該コンピュータ記憶媒体にコンピュータプログラムが記憶され、該コンピュータプログラムが本発明の実施例における上記のデータキャッシング方法を実行することに用いられる。
【０１４３】
以上は、本発明の好ましい実施例に過ぎなく、本発明の範囲を限定するものではない。
【図１】
0006340481.tif 000002
【図２】
0006340481.tif 000003
【図３】
0006340481.tif 000004
【図４】
0006340481.tif 000005
【図５】
0006340481.tif 000006
【図６】
0006340481.tif 000007
【図７】
0006340481.tif 000008
【図８】
0006340481.tif 000009