(57)【要約】ナローリンクにおける頻出データ値を圧縮するシステム、装置及び方法が開示される。一実施形態では、システムは、プロセッサと、リンクインタフェースユニットと、通信リンクと、を含む。リンクインタフェースユニットは、通信リンクを介して送信されるデータストリームを受信するように構成されており、データストリームは、プロセッサによって生成される。リンクインタフェースユニットは、データストリームの第１サイズのデータブロックが１つ以上の第１データパターンと一致するかどうかを判別し、データストリームの第２サイズのデータブロックが１つ以上の第２データパターンと一致するかどうかを判別する。リンクインタフェースユニットは、第１データパターン又は第２データパターンと一致しないデータブロックのみを、通信リンクを介して送信する。【選択図】図１２
2019536386.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
リンクインタフェースユニットと、
通信リンクと、を備え、
前記リンクインタフェースユニットは、
前記通信リンクを介して送信されるデータストリームを受信し、
前記データストリームを第１サイズのデータブロックに分割し、
前記データブロックの第２部分が１つ以上の第１データパターンと一致すると判別したことに応じて、前記データブロックの前記第２部分を送信することなく、前記データブロックの第１部分を、前記通信リンクを介して送信する、ように構成されている、
システム。
【請求項２】
前記リンクインタフェースユニットは、
前記第２部分が何れのデータパターンと一致するかを示す符号を生成し、
前記符号を、前記通信リンクを介して送信する、ように構成されている、
請求項１のシステム。
【請求項３】
前記リンクインタフェースユニットは、前記第１サイズの各データブロックの一部が前記１つ以上のパターンの何れにも一致しないと判別したことに応じて、
前記データストリームを第２サイズのデータブロックに分割し、
前記第２サイズのデータブロックの第２ブロックが１つ以上の第１データパターンと一致すると判別したことに応じて、前記第２サイズのデータブロックの第２ブロックを送信することなく、前記第２サイズのデータブロックの第１ブロックを、前記通信リンクを介して送信する、ように構成されている、
請求項１のシステム。
【請求項４】
前記データストリームはデータのキャッシュラインであり、前記第２サイズは前記第１サイズの半分に等しい、
請求項３のシステム。
【請求項５】
前記リンクインタフェースユニットは、
前記データストリームを監視して、何れのデータパターンが第１期間に亘って前記データストリーム内で頻繁に発生するかを動的に判別し、
前記１つ以上の第１データパターンと異なる第２データパターンが前記第１期間に亘って前記データストリーム内で頻繁に発生するデータパターンであると判別したことに応じて、前記データストリーム内の前記第１サイズのデータブロックが前記第２データパターンと一致するかどうかを判別する、ように構成されている、
請求項１のシステム。
【請求項６】
頻繁に発生するデータパターンは、前記第１期間内に閾値回数よりも多く発生するデータパターンである、
請求項５のシステム。
【請求項７】
前記リンクインタフェースユニットは、
第１ソフトウェアアプリケーションに関連するデータを圧縮する場合に第１パターン検出スキームを実行し、
第２ソフトウェアアプリケーションに関連するデータを圧縮する場合に前記第１パターン検出スキームと異なる第２パターン検出スキームを実行する、ように構成されている、
請求項１のシステム。
【請求項８】
通信リンクを介して送信されるデータストリームを受信することと、
リンクインタフェースユニットが、前記データストリームを第１サイズのデータブロックに分割することと、
前記第１サイズのデータブロックの第２ブロックが１つ以上の第１パターンと一致すると判別したことに応じて、前記第２ブロックを送信することなく、前記第１サイズのデータブロックの第１ブロックを、前記通信リンクを介して送信することと、を含む、
方法。
【請求項９】
前記第２ブロックが何れのデータパターンと一致するかを示す符号を生成することと、
前記符号を、前記通信リンクを介して送信することと、を含む、
請求項８の方法。
【請求項１０】
前記第１サイズの各データブロックの一部が前記1つ以上のパターンの何れにも一致しないと判別したことに応じて、
前記データストリームを第２サイズのデータブロックに分割することと、
前記第２サイズのデータブロックの第２ブロックが１つ以上の第1データパターンと一致すると判別したことに応じて、前記第２サイズのデータブロックの第２ブロックを送信することなく、前記第２サイズのデータブロックの第１ブロックを、前記通信リンクを介して送信することと、を含む、
請求項８の方法。
【請求項１１】
前記データストリームはデータのキャッシュラインであり、前記第２サイズは前記第１サイズの半分に等しい、
請求項１０の方法。
【請求項１２】
前記データストリームを監視して、何れのデータパターンが第１期間に亘って前記データストリーム内で頻繁に発生するかを動的に判別することと、
前記１つ以上の第１データパターンと異なる第２データパターンが前記第１期間に亘って前記データストリーム内で頻繁に発生するデータパターンであると判別したことに応じて、前記データストリーム内の前記第１サイズのデータブロックが前記第２データパターンと一致するかどうかを判別することと、を含む、
請求項８の方法。
【請求項１３】
頻繁に発生するデータパターンは、前記第１期間内に閾値回数よりも多く発生するデータパターンである、
請求項１２の方法。
【請求項１４】
第１ソフトウェアアプリケーションに関連するデータを圧縮する場合に第１パターン検出スキームを実行することと、
第２ソフトウェアアプリケーションに関連するデータを圧縮する場合に前記第１パターン検出スキームと異なる第２パターン検出スキームを実行することと、を含む、
請求項８の方法。
【請求項１５】
１つ以上のバッファと、
制御ロジックと、を備え、
前記制御ロジックは、
通信リンクを介して送信されるデータストリームを受信し、
前記データストリームを前記１つ以上のバッファに記憶し、
前記データスストリームを第１サイズのデータブロックに分割し、
前記第１サイズのデータブロックの第２ブロックが１つ以上の第１データパターンと一致すると判別したことに応じて、前記第２ブロックを送信することなく、前記第１サイズのデータブロックの第１ブロックを、前記通信リンクを介して送信する、ように構成されている、
リンクインタフェースユニット。
【請求項１６】
前記リンクインタフェースユニットは、
前記第２ブロックが何れのデータパターンと一致するかを示す符号を生成し、
前記符号を、前記通信リンクを介して送信する、ように構成されている、
請求項１５のリンクインタフェースユニット。
【請求項１７】
前記リンクインタフェースユニットは、前記第１サイズの各データブロックの一部が前記１つ以上のパターンの何れにも一致しないと判別したことに応じて、
前記データストリームを第２サイズのデータブロックに分割し、
前記第２サイズのデータブロックの第２ブロックが１つ以上の第１データパターンと一致すると判別したことに応じて、前記第２サイズのデータブロックの第２ブロックを送信することなく、前記第２サイズのデータブロックの第１ブロックを、前記通信リンクを介して送信する、ように構成されている、
請求項１５のリンクインタフェースユニット。
【請求項１８】
前記データストリームはデータのキャッシュラインであり、前記第２サイズは前記第１サイズの半分に等しい、
請求項１７のリンクインタフェースユニット。
【請求項１９】
前記リンクインタフェースユニットは、
前記データストリームを監視して、何れのデータパターンが第１期間に亘って前記データストリーム内で頻繁に発生するかを動的に判別し、
前記１つ以上の第１データパターンと異なる第２データパターンが前記第１期間に亘って前記データストリーム内で頻繁に発生するデータパターンであると判別したことに応じて、前記データストリーム内の前記第１サイズのデータブロックが前記第２データパターンと一致するかどうかを判別する、ように構成されている、
請求項１５のリンクインタフェースユニット。
【請求項２０】
頻繁に発生するデータパターンは、前記第１期間内に閾値回数よりも多く発生するデータパターンである、
請求項１９のリンクインタフェースユニット。
【発明の詳細な説明】
【背景技術】
【０００１】
別々のダイ上の電気コンポーネントは、ダイ間のリンクを介して互いに通信する。ダイ間の帯域幅は、物理的な距離、オフチップ接続の電気的特性、及び、ピンの制限された有用性によって制限される。リンクの幅（転送されるデータのビットを単位として）と併せて、リンク上でデータが送信される周波数は、リンクの帯域幅を定義する。リンクの信号数すなわち周波数を増やすと帯域幅を増やすことができるが、何れもコスト及び技術に影響があり、効率的に拡張することができない。
【０００２】
本明細書に記載された方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【０００３】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】リンクインタフェースユニットの一実施形態のブロック図である。
【図３】通信リンク上での送信の前にキャッシュラインを圧縮する技術の一実施形態を示す図である。
【図４】リンクを介した送信の前にデータのキャッシュラインを圧縮する技術の別の実施形態を示す図である。
【図５】圧縮されたデータブロックの符号化フィールドを示すテーブルの一実施形態を示す図である。
【図６】２つの符号化テーブルの例を示す図である。
【図７】様々なタイプのアプリケーションに対して実装されたパターン検出スキームを用いたテーブルの一実施形態を示す図である。
【図８】プロセッサ生成データを圧縮する方法の一実施形態を示す一般化されたフロー図である。
【図９】プロセッサ生成データを圧縮する方法の別の実施形態を示す一般化されたフロー図である。
【図１０】データストリームのデータブロックのデータパターンチェックを動的に実行する方法の一実施形態を示す一般化されたフロー図である。
【図１１】プロセッサ生成データを圧縮する方法の一実施形態を示す一般化されたフロー図である。
【図１２】プロセッサ生成データを圧縮する方法の別の実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００４】
以下の説明では、本明細書に提示された方法及びメカニズムの十分な理解を提供するために、多数の具体的な詳細が述べられている。しかしながら、当業者であれば、これらの具体的な詳細がなくても様々な実施形態を実施可能であることを理解されたい。いくつかの例では、本明細書に記載されたアプローチを曖昧にするのを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明瞭にするために、図に示す要素が必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法は、他の要素に対して誇張され得る。
【０００５】
ナローリンクにおける頻出データ値を圧縮する様々なシステム、装置、方法及びコンピュータ可読媒体が開示される。一実施形態では、システムは、少なくともプロセッサと、リンクインタフェースユニットと、通信リンクと、を含む。一実施形態では、リンクインタフェースユニットは、通信リンクを介して送信されるデータストリームを受信するように構成されており、データストリームは、プロセッサによって生成される。一実施形態では、データストリームは、データの１つ以上のキャッシュラインを含む。一実施形態では、リンクインタフェースユニットは、データのキャッシュラインを分割する２つの異なる方法を利用する。リンクインタフェースユニットは、キャッシュラインを第１サイズのデータのブロックに分割し、次いで、キャッシュラインの１つおきのブロックが１つ以上のパターンのうち何れかのパターンと一致するかどうかを判別する。一実施形態では、第１サイズは、３２ビットである。一実施形態では、１つのパターンは、全てのビットがゼロに等しい。１つおきのブロックが１つ以上のパターンのうち所定のパターンと一致する場合、リンクインタフェースユニットは、通信リンクを介して他のブロックのみを送信する。これにより、通信リンクを介して送信されるデータ量が半分に減少する。１つおきのブロックが１つ以上のパターンの何れにも一致しない場合、リンクインタフェースユニットは、キャッシュラインを第２サイズのデータのブロックに分割し、次いで、キャッシュラインの第２サイズの１つおきのブロックが１つ以上のパターンのうち何れかのパターンと一致するかどうかを判別する。一実施形態では、第２サイズは、１６ビットである。１つおきのブロックが１つ以上のパターンのうち所定のパターンと一致する場合、リンクインタフェースユニットは、通信リンクを介して他のブロックのみを送信する。また、リンクインタフェースユニットは、受信側が元のデータを再構成することができるように、何れの所定のパターンが他のブロックと一致することを示し、且つ、ブロックのサイズを示す符号化フィールドを、通信リンクを介して送信する。１つおきのブロックが１つ以上のパターンの何れにも一致しない場合、リンクインタフェースユニットは、データのキャッシュライン全体を、通信リンクを介して送信する。
【０００６】
一実施形態では、リンクインタフェースユニットは、データストリームを監視して、第１期間に亘ってデータストリーム内で何れのデータパターンが頻繁に発生するかを動的に判別するように構成されている。次に、リンクインタフェースユニットは、第１期間に亘って第３データパターンがデータストリーム内で頻繁に発生するデータパターンであると判別したことに応じて、データストリーム内の第１サイズのデータのブロックが第３データパターンと一致するかどうかを判別する。第３データパターンは、１つ以上の第１データパターン又は第２データパターンと異なる。一実施形態では、頻繁に発生するデータパターンは、第１期間において、閾値回数よりも多く発生するデータパターンである。
【０００７】
一実施形態では、システムは、システムのプロセッサによって実行されているソフトウェアアプリケーションのタイプに基づいて、データを圧縮するように実行されるパターン検出スキームを変更する。例えば、一実施形態では、リンクインタフェースユニットは、第１ソフトウェアアプリケーションに関連するデータを圧縮する場合に第１パターン検出スキームを実行し、第２ソフトウェアアプリケーションに関連するデータを圧縮する場合に、第１パターン検出スキームとは異なる第２パターン検出スキームを実行する。また、リンクインタフェースユニットは、他のタイプのソフトウェアアプリケーションについて、任意の数の他のパターン検出スキームを実行する。
【０００８】
図１を参照すると、コンピューティングシステム１００の一実施形態のブロック図が示されている。一実施形態では、システム１００は、複数のノードを含む。図１には、ノード１０５，１１０が示されている。システム１００は、ノード１０５，１１０について示した回路と同様の回路を有する追加のノードを含むことができることに留意されたい。ノード１０５，１１０は、通信リンク１５５を介して互いに接続されている。実施形態に応じて、通信リンク１５５は、双方向リンク又は一方向リンクとすることができる。実施形態に応じて、リンク１５５の幅は、様々な幅（例えば、１６ビット）を有する。一実施形態では、ノード１０５は、第１集積回路ダイ上に形成されており、ノード１１０は、第２集積回路ダイ上に形成されており、リンク１５５は、第１ダイと第２ダイとの間の相互接続を提供する。
【０００９】
ノード１０５，１１０は、任意の数及びタイプのコンピューティングノードを表す。一般的に言えば、ノード１０５又はノード１１０は、少なくとも１つの計算／処理要素（例えば、プロセッサ、プロセッサコア、プログラマブルロジックデバイス、特定用途向け集積回路）と、少なくとも１つのメモリデバイスと、を有する装置又はシステムとして定義される。ノードの少なくとも１つの計算要素は、実施形態に応じて、命令を実行し、及び／又は、１つ以上のタイプの計算（例えば、浮動小数点、整数、メモリ、Ｉ／Ｏ）を実行するように構成されている。各ノード１０５，１１０のコンポーネントは、１つ以上の通信バス又はファブリック（例えば、スイッチファブリック１３５，１４０）によって相互接続されている。一実施形態では、各ノード１０５，１１０の機能は、単一の集積回路に組み込まれている。別の実施形態では、各ノード１０５，１１０の機能は、コンピュータのマザーボード上のチップセットに組み込まれている。一実施形態では、各ノード１０５，１１０は、モバイルコンピュータ、デスクトップ、サーバ、又は、他のデバイス若しくはシステム内のスタンドアロンシステムである。別の実施形態では、各ノード１０５，１１０は、マルチソケットシステム１００のソケットである。さらなる実施形態では、各ノード１０５，１１０は、マルチダイシステム１００の別々のダイである。
【００１０】
一実施形態では、ノード１０５，１１０は、リンク１５５上で通信するためのパケットベースのインタフェースを実装する。一般に、パケットは、リンク１５５上で１つ以上のビットタイム（bit times）として送信される。一実施形態では、所定のビットタイムは、クロック信号の立ち上がりエッジ又は立ち下がりエッジの基準とすることができる。別の実施形態では、リンク１５５は、クロック信号を含まない。代わりに、クロックは、データライン上の遷移を検出することによってリカバリされる。一実施形態では、リンク１５５は、パケットインタフェースよりも狭い。この実施形態では、パケットは、リンク１５５上で多くのビットタイムに亘って拡散される。
【００１１】
様々な実施形態では、リンクユニット１１５，１２０は、リンク１５５を介して送信されるデータの量を減らす（例えば、圧縮する）技術を実装するように構成されている。また、リンクユニット１１５，１２０は、リンクインタフェースユニットとも呼ばれることに留意されたい。一実施形態では、リンク１５５を介して送信されるデータにおいて頻繁に発生するデータのパターンを検出する技術が実装される。リンクユニット１１５は、ノード１０５上で、リンク１５５を介して伝達されることになるプロセッサ生成データが１つ以上の頻繁に発生するデータパターンを含むかどうかを判別するように構成されている。一実施形態では、リンク１５５を介して送信されるプロセッサ生成データは、リンク１５５を介して送信される前に、リンクユニット１１５のバッファに記憶される。リンクユニット１１５は、バッファに記憶されたプロセッサ生成データと共にリンク１５５を介して伝達されるコマンドパケット及びデータパケットを構成するように構成されている。一実施形態では、プロセッサ１６０からリンクユニット１１５に送信されたデータ内でデータパターンが検出された場合、当該データは、リンク１５５を介して送信される前に圧縮される。一実施形態では、データが、可変部と交互になっている固定部のパターンと一致した場合、データの可変部のみがリンク１５５上で送信される。例えば、一実施形態では、データのキャッシュラインは、複数のデータワードを含み、各データワードの上半分がパターン（例えば、全てゼロ）と一致する場合、各データワードの下半分のみがリンク１５５上で送信される。このようにして、リンク１５５上で送信されるデータの量が半分に減り、消費電力を低減し、リンク１５５の効率を向上させることができる。一実施形態では、固定部が何れのパターンと一致したかを示し、且つ、固定部のサイズを示す符号化フィールドが、コマンドパケット内に生成される。例えば、一実施形態では、固定部のサイズは、１６ビット又は３２ビットの何れかである。他の実施形態では、他のサイズを利用することができる。
【００１２】
リンクユニット１１５又はリンクユニット１２０は、リンク１５５を介して送信された圧縮パケットを受信すると、データパケット内のデータワードの可変部及び対応するコマンドパケット内の符号化フィールドからデータペイロードを再構成するように構成されている。受信側の制御ロジックがデータペイロードを再構成している場合であって、所定のデータパターンが検出されたことを符号化フィールドが示す場合に、制御ロジックは、指定されたデータパターンで固定部を生成し、固定部を、データペイロードにおいて可変部に隣接する位置に挿入する。
【００１３】
ノード１０５は、キャッシュ１６５に接続されたプロセッサ１６０と、スイッチファブリック１３５と、を少なくとも含む。また、プロセッサ１６０は、１つ以上の内部キャッシュを含むことができる。プロセッサ１６０は、任意の数のコアを有する任意の数及びタイプのプロセッサ（例えば、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ））を表す。各プロセッサコアは、１つ以上の実行ユニット、キャッシュメモリ、スケジューラ、分岐予測回路等を含む。一実施形態では、プロセッサ１６０は、ノード１０５のメイン制御ソフトウェア（例えば、オペレーティングシステム等）を実行するように構成されている。一般に、使用中にプロセッサ１６０によって実行されるソフトウェアは、ノード１０５の他のコンポーネントを制御して、ノード１０５の所望の機能を実現することができる。また、プロセッサ１６０は、アプリケーションプログラム等の他のソフトウェアを実行することもできる。
【００１４】
スイッチファブリック１３５は、メモリコントローラ（ＭＣ）１２５と、リンクユニット１１５と、に接続されている。スイッチファブリック１３５は、ノード１０５のコンポーネント間でメッセージをルーティングする通信ファブリックである。メモリコントローラ１２５は、任意の数及びタイプのメモリモジュール又はデバイスを表すメモリ１２７に接続されている。いくつかの実施形態では、メモリ１２７は、マザーボード、又は、ノード１０５の他のコンポーネントを搭載した他のキャリアに搭載された１つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ１２７の少なくとも一部は、ノード１０５のダイに実装されている。メモリ１２７を実装するのに用いられるメモリデバイスは、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、ＤＤＲ２  ＤＲＡＭ、ＤＤＲ３  ＤＲＡＭ、ＤＤＲ４  ＤＲＡＭ等を含むが、これらに限定されない。ノード１１０は、ノード１０５と同様に、プロセッサ１７０と、キャッシュ１７５と、リンクユニット１２０、スイッチファブリック１４０と、メモリ１３２に接続されたメモリコントローラ１３０と、を含む。
【００１５】
様々な実施形態では、コンピューティングシステム１００は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、コンピューティングノード、スーパーコンピュータ、モバイルデバイス、タブレット、電話、スマートフォン、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、時計、ウェアラブルデバイス、コンシューマデバイス、サーバ、ファイルサーバ、アプリケーションサーバ、ストレージサーバ、ウェブサーバ、クラウドコンピューティングサーバ、又は、一般的な任意のタイプのコンピューティングシステム若しくはデバイス若しくはこれらの一部を含むがこれらに限定されない、様々なタイプのコンピュータシステム又はコンピューティングデバイスの何れかに対応することができる。コンピューティングシステム１００のコンポ−ネントの数は、実施形態によって異なり得ることに留意されたい。図１に示す数よりも多い又は少ない各コンポーネント／サブコンポーネントが存在する場合がある。コンピューティングシステム１００は、図１に示されていない他のコンポーネントを含んでもよいことに留意されたい。また、他の実施形態では、コンピューティングシステム１００は、図１に示す以外の方法で構成されてもよい。
【００１６】
図２を参照すると、リンクインタフェースユニット２０５の一実施形態のブロック図が示されている。一実施形態では、リンクインタフェースユニット２０５の制御ロジックは、（図１の）リンクユニット１１５，１２０に含まれている。一実施形態では、リンクインタフェースユニット２０５は、性能モニタ２１０と、制御ユニット２１２と、検出ユニット２１５と、送信バッファ２２５と、受信バッファ２３０と、を含む。他の実施形態では、リンクインタフェースユニット２０５は、他のコンポーネントを含むことができる。様々な実施形態では、リンクインタフェースユニット２０５の制御ロジックは、ソフトウェア及び／又はハードウェアの任意の適切な組み合わせを用いて実装することができる。リンクインタフェースユニット２０５は、スイッチファブリック（図示省略）に接続されており、１つ以上の他のコンポーネントに接続されたリンク２３５に接続されている。
【００１７】
一実施形態では、性能モニタ２１０は、リンク２３５を介して送信されているデータストリーム内で頻繁に発生するデータパターンを監視するように構成されている。性能モニタ２１０は、頻繁に発生するデータパターンを検出した場合、パターンの指標を制御ユニット２１２に送信する。一実施形態では、制御ユニット２１２は、検出ユニット２１５によって検索されているパターン２２０をプログラムするように構成されている。一実施形態では、検出ユニット２１５は、リンク２３５を介した送信の前にバッファリングされている、送信バッファ２２５に記憶されたデータブロック内のパターン２２０を検索するように構成されている。別の実施形態では、パターン２２０は、事前に決められ固定されている。
【００１８】
一実施形態では、検出ユニット２１５は、送信バッファ２２５内のデータが何れかのパターン２２０と一致するかどうかを検出するように構成されている。一実施形態では、パターン２２０は、複数の異なるサイズのデータパターンを含む。この実施形態では、検出ユニット２１５は、送信バッファ２２５内の様々なサイズのデータブロックを調べて、これらが様々なサイズのデータパターン２２０と一致するかどうかを判別する。検出ユニット２１５が、データのキャッシュラインの固定部が１つのデータパターン２２０と一致することを検出した場合、リンク２３５を介して送信されるデータから固定部が削除され、固定部が削除されたことを示し、固定部が何れのパターンと一致したかを示す符号化フィールドが送信される。一実施形態では、制御ユニット２１２は、リンク２３５を介して受信され、受信バッファ２３０に記憶されているデータを再構成するように構成されている。例えば、制御ユニット２１２は、キャッシュラインの固定部が削除されたかどうかを判別し、受信バッファ２３０から符号化フィールドを取得することによって、キャッシュラインの固定部が何れのパターンと一致したかを判別する。制御ユニット２１２は、元のデータストリームを再構成するように、これらの固定部をデータに戻す。
【００１９】
図３を参照すると、通信リンク上で送信する前にキャッシュライン３０５を圧縮する技術の一実施形態の図が示されている。キャッシュライン３０５内に記憶されているのは、それぞれ所定数のビットである複数のデータワードである。いくつかの実施形態では、キャッシュライン３０５内のデータワードは、複数のサイズのうち１つのサイズであってもよいことに留意されたい。例えば、一実施形態では、プロセッサは、６４ビットアーキテクチャを有するが、３２ビットのソフトウェアと下位互換性がある。したがって、この実施形態では、プロセッサは、６４ビット又は３２ビットの両方のソフトウェアを処理することが可能である。他の実施形態では、プロセッサは、他のサイズのデータワードをサポートすることができる。
【００２０】
キャッシュライン３０５は、いくつかのプロセッサ生成データブロック３１０Ａ〜３１０Ｎを含み、キャッシュライン毎のデータブロック数は、実施形態によって異なる。データブロック３１０Ａ〜３１０Ｎは、変数又はワードとも呼ばれる。キャッシュライン３０５のデータが通信リンク（例えば、図２のリンク２３５）を介して送信される場合、検出ユニット（例えば、検出ユニット２１５）は、データブロック３１０Ａ〜３１０Ｎ内の１つおきのデータブロックが１つ以上のデータパターンと一致するかどうかを判別する。１つ以上のデータパターンは、頻繁に使用されるパターンを含み、検出ユニットが探している正確なデータパターンは、実施形態によって異なる。データブロック３１０Ａ〜３１０Ｎ内の１つおきのデータブロックにおいてパターンが検出された場合、リンクインタフェースユニットは、データブロック３１０Ａ〜３１０Ｎの可変ブロックのみを、通信リンクを介して送信する。１つおきのデータブロックでパターンが検出されない場合、検出ユニットは、サブセット３１５Ａ〜３１５Ｎが１つ以上のデータパターンと一致するかどうかを判別する。各サブセット３１５Ａ〜３１５Ｎにおいてパターンが検出された場合、リンクインタフェースユニットは、データブロック３１０Ａ〜３１０Ｎの他の部分のみを送信する。
【００２１】
図４を参照すると、リンクを介して送信する前にデータのキャッシュラインを圧縮する技術の別の実施形態のブロック図が示されている。キャッシュライン４０５は、任意の数及びサイズのデータブロックを表すデータブロック４４０，４４５，４５０，４５５を含む。キャッシュライン４０５、及び、オプションで１つ以上のキャッシュラインは、通信リンクを介して別々のダイ又はコンポーネントに送信されるデータパケットに詰め込まれる。
【００２２】
一実施形態では、キャッシュライン４０５のデータブロック４４０，４４５，４５０，４５５は、データパケット４２５に詰め込まれる。データパケット４２５は、任意のサイズのデータパケットを表し、そのサイズは実施形態によって異なる。データパケット４２５は、パケットのタイプ及び任意の追加情報を示すヘッダ４３０を含む。一実施形態では、単一のキャッシュライン４０５のデータブロックは、複数のデータパケット４２５に分けられる。別の実施形態では、１つ以上のキャッシュラインのデータブロックは、単一のデータパケット４２５に組み合わせられる。検出ユニットは、キャッシュライン４０５のデータブロック毎に、データブロック全体が１つ以上のパターンと一致するかどうか、又は、データブロックのサブセットが１つ以上のパターンと一致するかどうかを判別する。一実施形態では、サブセットは、データブロックの上半分である。他の実施形態では、サブセットは、データブロックの他の部分であってもよい。
【００２３】
一実施形態では、データパターンは、全て１又は全て０を含む。例えば、データブロック４４０，４４５，４５０，４５５に記憶された小さい値の場合、上位ビットは全て０になる。或いは、データブロック４４０，４４５，４５０、４５５に記憶された小さい負の値の場合、上位ビットは、符号拡張を用いて全て１になる。一実施形態では、キャッシュライン４０５の各データブロック４４０，４４５，４５０，４５５のサブセットに対してデータパターンが検出された場合、データブロックのサブセットは、データパケット４２５に含まれない。これにより、通信リンクを介して送信されるデータの量が減少する。
【００２４】
データパケット４２５に示すように、キャッシュライン４０５のデータブロックの各サブセット４４０Ａ，４４５Ａ，４５０Ａ，４５５Ａは、頻繁に用いられるパターンに一致すると想定され、これにより、キャッシュライン４０５のデータブロックの他の部分４４０Ｂ，４４５Ｂ，４５０Ｂ，４５５Ｂのみがデータパケット４２５に含まれる。また、データブロックのサブセット４４０Ａ，４４５Ａ，４５０Ａ，４５５Ａが各データブロックの上半分であり、サブセット４４０Ｂ，４４５Ｂ，４５０Ｂ，４５５Ｂが各データブロックの下半分であると想定する。他の実施形態では、パターンを検出する目的で、データブロックを他のサイズ及び／又は他の数のサブセットに分割することができる。
【００２５】
一実施形態では、キャッシュライン４０５のデータブロック毎にパターンが検出されたかどうかを示し、何れのパターンが検出されたかを示す符号化フィールド４２０が生成され、コマンドパケット４１５に含まれる。また、コマンドパケット４１５は、パケットのタイプ及び追加情報を指定するヘッダ４１８を含む。一実施形態では、第１符号化フィールドは、パターンが、データブロック全体で検出されたのか又はデータブロックのサブセットで検出されたのかを示す。一実施形態では、第２符号化フィールドは、複数のパターンのうち何れのパターンが検出されたかを示す。他の実施形態では、データパケット４２５内でデータブロックが圧縮されたかどうか及びどのように圧縮されたかを符号化するために、他の数及びタイプの符号化フィールドをコマンドパケット４１５に含めることができる。
【００２６】
図５を参照すると、圧縮データブロックの符号化フィールドを示すテーブル５００の一実施形態が示されている。列５０５は、キャッシュライン内でパターンが検出されたかどうかを示す単一ビットのフィールドであり、「１」は、パターンが検出されたことを示し、「０」は、パターンが検出されなかったことを示す。列５１０は、何れのパターンが検出されたかを示す２ビットのフィールドである。他の実施形態では、列５１０は、検索されているパターンの総数に応じて、何れのパターンが検出されたかを示す他の数のビットを含むことができる。列５２０は、列５１０の各符号化に対するパターンを指定する。
【００２７】
一実施形態では、「００」という符号化は、第１サイズの各データブロックの上半分が全て０のビットであることを示すために用いられ、「０１」という符号化は、第１サイズの各データブロックの上半分が全て１のビットであることを示すために用いられ、「１０」という符号化は、第２サイズの各データブロックの上半分が全て０のビットであることを示すために用いられ、「１１」という符号化は、第２サイズの各データブロックの上半分が全て１のビットであることを示すために用いられる。一実施形態では、第１サイズは６４ビットであり、第２サイズは３２ビットである。他の実施形態では、第１サイズ及び第２サイズは、他のビット数である。キャッシュラインがこれらのパターンのうち１つのパターンがと一致する場合、キャッシュラインの各ブロックの上半分は、通信リンクを介して送信されるデータパケットに含まれない。受信側がこのデータパケットを受信すると、受信側は、コマンドパケットを利用して、パターンが検出されたかどうか、及び、何れのパターンが検出されたかを識別し、受信側がデータを元のフォーマットに復元することができる。他の実施形態では、他の符号化を利用して、パターンが検出されたかどうか、及び、何れのパターンが検出されたかを示すことができる。また、他の実施形態では、他の数及びタイプのパターンを、通信リンクを介して送信されるデータブロックの中から検索することができる。
【００２８】
一実施形態では、列５０５，５１０の組み合わせは、（図４の）コマンドパケット４１５の符号化フィールド４２０に対応する。この実施形態では、１つ以上のデータパケット（例えば、データパケット４２５）で送信されるキャッシュライン毎に、列５０５，５１０のフィールドがコマンドパケットに含まれる。コマンドパケット内のこれらのフィールドの順序は、データパケット内のキャッシュラインの順序と一致することになる。
【００２９】
図６を参照すると、２つの符号化テーブルの例が示されている。テーブル６００は、図６の左側に示されており、通信リンクを介して送信されるデータを圧縮する一実施形態で使用される符号化スキームを表す。この実施形態では、符号化フィールド６０５は、４つの異なるシナリオを表す２ビットを含む。符号化フィールド６０５が「００」に設定されている場合、テーブル６００の列６１０に示すように、対応するデータブロック内でパターンが検出されなかったことを示す。符号化フィールド６０５が「０１」に設定されている場合、キャッシュラインの各データブロックの上半分の全てのビットが「０」に等しいことを示す。符号化フィールド６０５が「１０」に設定されている場合、キャッシュラインの各データブロックの上半分の全てのビットが「１」に等しいことを示す。符号化フィールド６０５が「１１」に設定されている場合、１つおきのデータブロック内の全てのビットが「０」に等しいことを示す。これらの符号化が表すパターンは、他の実施形態において再構成されてもよいことに留意されたい。テーブル６００に示すパターン以外のパターンを利用可能であることにも留意されたい。これらのパターンのうち何れかのパターンがプロセッサ生成データのキャッシュライン内で検出されると、所定のパターンに一致するキャッシュラインの部分は、リンクを介して送信されるデータから削除される。何れのデータが削除されたかを受信側に知らせるために、対応する符号化フィールド６０５が、リンクを介して送信される。一実施形態では、対応する符号化フィールド６０５は、コマンドパケットで送信され、符号化フィールドは、リンクを介して送信されるデータパケット内のキャッシュラインの順序に対応する順序で送信される。
【００３０】
一実施形態では、テーブル６００における符号化によって表される３つのパターンは、通信リンクを介して送信されるプロセッサ生成データ内で頻繁に発生するパターンであると予想される。したがって、テーブル６００に示す符号化スキームを用いることによって、通信リンクを効率的に使用することができる。他の実施形態では、他のパターンがテーブル６００に示すものよりも頻繁に発生する場合に、通信リンクを介してプロセッサ生成データを送信する際にこれらの他のパターンを圧縮することができるように、圧縮スキームを動的に調整してもよい。
【００３１】
図６の右側に示すテーブル６２０は、別の実施形態で用いられる別の符号化スキームを表す。この実施形態では、符号化フィールド６２５は単一ビットを含み、これは、ビット＝「１」の場合にはパターンが検出されたことを表し、ビット＝「０」の場合にはパターンが検出されなかったことを表す。データストリームを圧縮するのに用いられる実際のパターンは、実施形態によって異なってもよい。一実施形態では、パターンは、何れのパターンがプロセッサ生成データ内で最も頻繁に発生すると予想されるかに基づいて、予め決定される。
【００３２】
別の実施形態では、プロセッサ生成データをリアルタイムで検証することによって、パターンを動的に決定する。この実施形態では、データストリームを圧縮するのに用いられるパターンは、経時的に変化し得る。例えば、第１パターンは、第１期間に亘ってデータストリームを圧縮するのに用いられる。次に、性能モニタは、データストリーム内で第２パターンが第１パターンよりも頻繁に発生していると判別する。すると、システムは、第２期間に亘ってデータストリームを圧縮するために第２パターンの使用に切り替える。第２パターンの使用に切り替えるために、第１ノードのリンクインタフェースユニットは、メッセージを第２ノードのリンクインタフェースユニットに送信して、データを圧縮するための圧縮スキームが第２パターンに切り替えられたことを第２ノードに通知する。次に、第２ノードは、自身の制御ロジックを更新して、リンク上で受信したデータが適切に再構成されるようにする。
【００３３】
図７を参照すると、異なるタイプのアプリケーションに対して実施されたパターン検出スキームを有するテーブル７００の一実施形態が示されている。一実施形態では、システムは、システムのプロセッサによって実行されている異なるタイプのソフトウェアアプリケーションに対して異なるパターン検出スキームを利用する。異なる検出スキームは、列７０５に列挙された異なるアプリケーションタイプについて、テーブル７００の列７１０に示されている。アプリケーションタイプ及びこれらの対応するパターン検出スキームの例は、一実施形態を示していることに留意されたい。他の実施形態では、他のパターン検出スキームを利用して、異なるアプリケーションタイプに割り当てることができる。また、他のアプリケーションタイプを特徴付けて、対応するパターン検出スキームに割り当てることができる。
【００３４】
一実施形態では、決定は、特定のアプリケーションに関連するワークロードの分析に基づく。例えば、所定のソフトウェアアプリケーションについての典型的なワークロードの分析を実行して、１つ以上の通信リンクを介して転送されるプロセッサ生成データに記憶される最も可能性の高いパターンを決定することができる。また、分析によって、何れのパターン検出スキームが通信リンクの効率的な使用を達成するかを決定する。検索されるパターンの数、パターンが予め決定されているか動的に決定されるか、及び／又は、パターンが予め決定されている場合に何れのパターンが利用されるか等に基づいて、様々な異なるパターン検出スキームを利用することができる。
【００３５】
例えば、一実施形態では、システムは、ウェブサーバアプリケーションが動的パターン検出スキームから利益を得ることになると判別する。動的パターン検出スキームは、データストリーム内で何れのパターンが最も頻繁に発生するかに基づいて、通信リンクを介して伝達されるデータストリーム内で何れのパターンを検索するかを動的に決定することを指す。データストリームの動的分析が、異なる期間で頻繁に発生する異なるパターンを検出するので、検索されるパターンが経時的に変化する可能性がある。一実施形態では、システムは、データベースアプリケーションが４つのパターンを検索する固定パターン検出スキームを利用するであろうと決定し、仮想化アプリケーションが３つのパターンを検索する固定パターン検出スキームを利用するであろうと決定し、マルチメディアアプリケーションがデータストリームのブロック内で１つのパターンを検索する固定パターン検出スキームを利用するであろうと決定する。固定パターン検出スキームは、データストリーム内で一致を検索する場合に予め決定されたパターンを用いるスキームを指す。例えば、図５のテーブル５００は、一実施形態による１つ以上の通信リンクを介して伝達されるデータストリームのデータブロック内で検索され得る４つの異なる所定のパターンを示す。特定のアプリケーションに対する特定のパターン検出スキームのこれらの例は、単に、特定のアプリケーションに対して特定のパターン検出スキームを向ける能力を説明するために使用されているに過ぎない。他の実施形態では、列挙されたアプリケーションは、テーブル７００に示すもの以外のタイプのパターン検出スキームを利用することができる。
【００３６】
図８を参照すると、プロセッサ生成データを圧縮する方法８００の一実施形態が示されている。議論を進めるために、この実施形態におけるステップ及び図９〜図１２におけるステップは、順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち１つ以上の要素は、同時に行われてもよいし、示された順序とは異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて他の追加の要素が行われてもよい。本明細書に記載された様々なシステム又は装置の何れかは、方法８００を実施するように構成されている。
【００３７】
リンクインタフェースユニットは、通信リンクを介して送信されるプロセッサ生成データストリームを受信する（ブロック８０５）。一実施形態では、データストリームは、プロセッサキャッシュ又はプロセッサに接続されたキャッシュからのデータの１つ以上のキャッシュラインを含む。次に、リンクインタフェースユニットは、データストリーム内の第１サイズのデータブロックが１つ以上の第１データパターンと一致するかどうかを判別する（ブロック８１０）。一実施形態では、第１サイズのデータブロックの境界は、プロセッサ生成データのキャッシュライン内のデータワードの境界と一致する。
【００３８】
また、リンクインタフェースユニットは、データストリーム内の第２サイズのデータブロックが１つ以上の第２データパターンと一致するかどうかを判別する（ブロック８１５）。一実施形態では、第１サイズのデータブロックは、第２サイズのデータブロックの２倍に等しい。例えば、一実施形態では、第１サイズは６４ビットであり、第２サイズは３２ビットである。この実施形態では、第２サイズのブロックは、第１サイズのブロックの上半分である。他の実施形態では、他の第１サイズ及び第２サイズが実装される。
【００３９】
第１データパターン及び第２データパターンは、データストリーム内で頻繁に発生するデータパターンを含む。データストリームは、データ群とも呼ばれる。一実施形態では、データストリームは、キャッシュラインである。一実施形態では、第１データパターン及び第２データパターンは、予め決定されている。別の実施形態では、第１データパターン及び第２データパターンは、１つ以上のデータストリームの分析に基づいて動的に決定される。さらなる実施形態では、第１データパターン及び第２データパターンは、システムによって実行されているソフトウェアアプリケーションのタイプ及び／又は１つ以上の他の要因に基づいて動的に決定される。
【００４０】
次に、リンクインタフェースユニットは、第１データパターン又は第２データパターンの何れにも一致しないデータブロックのみを、通信リンクを介して送信する（ブロック８２０）。次いで、リンクインタフェースユニットは、何れのブロックが送信されなかったかを示し、何れのパターンが未送信ブロックと一致したかを示す符号化フィールドを、通信リンクを介して送信する（ブロック８２５）。ブロック８２５の後に、方法８００は終了する。
【００４１】
図９を参照すると、プロセッサ生成データを圧縮する方法９００の別の実施形態が示されている。システムは、通信リンクを介した送信のために選択されたデータストリーム内の所定のデータワード内で１つ以上の頻繁に発生するパターンの何れかが検出されたかどうかを判別する（ブロック９０５）。一実施形態では、データストリームは、システムの１つ以上のプロセッサによって生成される。一実施形態では、所定のデータワード及び／又は所定のデータワードのサブセットを１つ以上の頻繁に発生するデータパターンと比較して、所定のデータワード及び／又はサブセットが１つ以上の頻繁に発生するデータパターンの何れかと一致するかどうかを判別する。次に、システムは、所定のデータワードが１つ以上の頻繁に発生するデータパターンのうち何れかのデータパターンと一致すると判定したことに応じて、所定のデータワードを圧縮する（ブロック９１０）。実施形態に応じて、所定のデータワードを圧縮するために、任意の様々な圧縮スキームを利用することができる。ブロック９１０の後に、方法９００は終了する。
【００４２】
図１０を参照すると、データストリームのデータブロックのデータパターンチェックを動的に実施する方法１０００の一実施形態が示されている。データブロックが第１データパターンと一致する場合、システムは、データストリーム内のデータブロックを圧縮する（ブロック１００５）。システムは、データストリームを監視して、何れのデータパターンが第１期間に亘ってデータストリーム内で最も頻繁に発生するかを動的に判別する（ブロック１０１０）。第１期間の後に、システムは、第１期間に亘って第１データパターンと異なる第２データパターンがデータストリーム内で頻繁に発生したと判別したことに応じて、データブロックが第２データパターンと一致する場合に、データストリーム内のデータブロックを圧縮する（ブロック１０１５）。ブロック１０１５の後に、方法１０００は終了する。一実施形態では、第２データパターンが第１期間に亘って閾値回数よりも多く検出された場合に、第２データパターンがデータストリーム内で頻繁に発生したと判別される。閾値及び第１期間の長さは、実施形態に応じて変化してもよく、様々な実施形態においてプログラム可能である。
【００４３】
図１１を参照すると、プロセッサ生成データを圧縮する方法１１００の一実施形態が示されている。リンクインタフェースユニットは、通信リンクを介して送信されるデータのキャッシュラインを受信する（ブロック１１０５）。次に、リンクインタフェースユニットは、キャッシュライン内の第１サイズの１つおきのデータブロックが１つ以上のパターンの何れかと一致するかどうかを判別する（ブロック１１００）。キャッシュライン内の第１サイズの１つおきのデータブロックが１つ以上のパターンの何れかと一致する場合（条件付きブロック１１１５：はい）、リンクインタフェースユニットは、キャッシュラインの第１サイズの交互のデータブロックのみを、通信リンクを介して送信する（ブロック１１２０）。例えば、キャッシュラインが８つのブロックを含み、１番目、３番目、５番目及び７番目のブロックが１つ以上のパターンのうち何れかと一致する場合（例えば、全てのビットが「０」に等しい）、キャッシュラインの２番目、４番目、６番目及び８番目のブロックのみが通信リンクを介して送信される。したがって、キャッシュラインの半分のみがブロック１１２０において送信され、キャッシュラインの１つおきのデータブロックは、通信リンク上で送信されずに削除される。削除されるブロックは、１つのデータパターンと一致する１つおきのブロックであることを理解されたい。
【００４４】
キャッシュライン内の第１サイズの１つおきのデータブロックが１つ以上のパターンの何れにも一致しない場合（条件付きブロック１１１５：いいえ）、リンクインタフェースユニットは、キャッシュライン内の第２サイズの１つおきのデータブロックが１つ以上のパターンの何れかと一致するかどうかを判別する（ブロック１１２５）。一実施形態では、第２サイズは、第１サイズの半分に等しい。キャッシュライン内の第２サイズの１つおきのデータブロックが１つ以上のパターンの何れかと一致する場合（条件付きブロック１１３０：はい）、リンクインタフェースユニットは、キャッシュラインの第２サイズの交互のデータブロックのみを、通信リンクを介して送信する（ブロック１１３５）。キャッシュライン内の第２サイズの１つおきのデータブロックが１つ以上のパターンの何れにも一致しない場合（条件付きブロック１１３０：いいえ）、リンクインタフェースユニットは、キャッシュライン全体を、通信リンクを介して送信する（ブロック１１４０）。ブロック１１２０，１１３５，１１４０の後に、方法１１００は終了する。
【００４５】
図１２を参照すると、プロセッサ生成データを圧縮する方法１２００の別の実施形態が示されている。リンクインタフェースユニットは、通信リンクを介して送信されるデータ群を受信する（ブロック１２０５）。一実施形態では、データ群は、プロセッサの内部キャッシュ又はプロセッサに接続されたキャッシュからのデータのキャッシュラインに対応する。リンクインタフェースユニットは、データ群を第１サイズのデータブロックに分割する（ブロック１２１０）。一実施形態では、第１サイズは、６４ビットである。次に、リンクインタフェースユニットは、各データブロックのサブセットが１つ以上のパターンの何れかと一致するかどうかを判別する（ブロック１２１５）。一実施形態では、サブセットは、データブロックの上半分である。他の実施形態では、サブセットは、データブロックの他の部分である。各データブロックのサブセットが１つ以上のパターンの何れかと一致する場合（条件付きブロック１２２０：はい）、リンクインタフェースユニットは、各データブロックのサブセットを送信せずに、各データブロックの他の部分を、通信リンクを介して送信する（ブロック１２２５）。例えば、サブセットがデータブロックの上半分である場合、リンクインタフェースユニットは、各データブロックの下半分のみを、リンクを介して送信する。また、リンクインタフェースユニットは、通信リンクを介して、各データブロックのサブセットが一致したパターンの指標を送信する（ブロック１２３０）。各データブロックのサブセットが１つ以上のパターンの何れにも一致しない場合（条件付きブロック１２２０：いいえ）、リンクインタフェースユニットは、各データブロックの全体を、通信リンクを介して送信する（ブロック１２３５）。また、リンクインタフェースユニットは、通信リンクを介して、各データブロックのサブセットが１つ以上のパターンの何れにも一致しなかったとの指標を送信する（ブロック１２４０）。代わりに、各データブロックのサブセットが１つ以上のパターンの何れにも一致しない場合、リンクインタフェースユニットは、データ群を第２サイズのデータブロックに分割し、第２サイズの各データブロックのサブセットが１つ以上のパターンの何れかに一致するかどうかを確認するために、ブロック１２１５〜１２２０を再度実行することができる。ブロック１２３０，１２４０の後に、方法１２００は終了する。
【００４６】
様々な実施形態において、ソフトウェアアプリケーションのプログラム命令を用いて、上述した方法及び／又はメカニズムを実施することができる。プログラム命令は、例えばＣ等の高水準プログラミング言語でハードウェアの動作を記述する。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が用いられる。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多数のタイプの記憶媒体が利用可能である。記憶媒体は、プログラムを実行するためにプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含む。
【００４７】
上記の実施形態は、実装の非限定的な例に過ぎないことが強調されるべきである。上記の開示が十分に理解されれば、当業者には多数の変形及び変更が明らかになるであろう。添付の特許請求の範囲は、このような変形及び変更を全て包含するように解釈されることを意図している。
【図１】
2019536386.tif 000003
【図２】
2019536386.tif 000004
【図３】
2019536386.tif 000005
【図４】
2019536386.tif 000006
【図５】
2019536386.tif 000007
【図６】
2019536386.tif 000008
【図７】
2019536386.tif 000009
【図８】
2019536386.tif 000010
【図９】
2019536386.tif 000011
【図１０】
2019536386.tif 000012
【図１１】
2019536386.tif 000013
【図１２】
2019536386.tif 000014
【手続補正書】
【提出日】令和1年6月13日(2019.6.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサと、
リンクインタフェースユニットと、
通信リンクと、を備え、
前記リンクインタフェースユニットは、
受信したデータストリームを監視し、
前記データストリーム内で頻繁に発生するデータパターンを動的に判別し、
前記データストリームの第２部分が動的に判別された１つ以上のデータパターンと一致すると判別したことに応じて、前記データストリームの前記第２部分を送信することなく、前記データストリームの第１部分を、前記通信リンクを介して送信し、
何れの部分が送信されなかったかに関する指標を送信する、ように構成されている、
システム。
【請求項２】
前記リンクインタフェースユニットは、
前記通信リンクを介して符号を送信して、前記第２部分が何れのデータパターンと一致するかを示すように構成されている、
請求項１のシステム。
【請求項３】
前記リンクインタフェースユニットは、
前記データストリームを第１サイズのブロックに分割し、
前記ブロック内の１つおきのブロックが、動的に判別された１つ以上のデータパターンと一致するかどうかを判別する、ように構成されている、
請求項１のシステム。
【請求項４】
前記リンクインタフェースユニットは、
前記１つおきのブロックが、動的に判別された１つ以上のデータパターンと一致すると判別したことに応じて、前記１つおきのブロックを削除する、ように構成されている、
請求項３のシステム。
【請求項５】
頻繁に発生するデータパターンは、第１期間内に閾値回数よりも多く発生するデータパターンである、
請求項１のシステム。
【請求項６】
前記リンクインタフェースユニットは、
第１ソフトウェアアプリケーションに関連するデータを圧縮する場合に第１パターン検出スキームを実行し、
第２ソフトウェアアプリケーションに関連するデータを圧縮する場合に前記第１パターン検出スキームと異なる第２パターン検出スキームを実行する、ように構成されている、
請求項１のシステム。
【請求項７】
通信リンクを介して送信されるデータストリームを受信することと、
前記データストリーム内で頻繁に発生するデータパターンを動的に判別することと、
前記データストリームの第２部分が動的に判別された１つ以上のデータパターンと一致すると判別したことに応じて、前記データストリームの前記第２部分を送信することなく、前記データストリームの第１部分を、前記通信リンクを介して送信することと、
何れの部分が送信されなかったかに関する指標を送信することと、を含む、
方法。
【請求項８】
前記通信リンクを介して符号を送信して、前記第２部分が何れのデータパターンと一致するかを示すことを含む、
請求項７の方法。
【請求項９】
前記データストリームを第１サイズのブロックに分割することと、
前記ブロック内の１つおきのブロックが、動的に判別された１つ以上のデータパターンと一致するかどうかを判別することと、を含む、
請求項７の方法。
【請求項１０】
前記１つおきのブロックが、動的に判別された１つ以上のデータパターンと一致すると判別したことに応じて、前記１つおきのブロックを削除することを含む、
請求項９の方法。
【請求項１１】
頻繁に発生するデータパターンは、第１期間内に閾値回数よりも多く発生するデータパターンである、
請求項７の方法。
【請求項１２】
第１ソフトウェアアプリケーションに関連するデータを圧縮する場合に第１パターン検出スキームを実行することと、
第２ソフトウェアアプリケーションに関連するデータを圧縮する場合に前記第１パターン検出スキームと異なる第２パターン検出スキームを実行することと、を含む、
請求項７の方法。
【請求項１３】
１つ以上のバッファと、
制御ロジックと、を備え、
前記制御ロジックは、
通信リンクを介して送信されるデータストリームを受信し、
前記データストリーム内で頻繁に発生するデータパターンを動的に判別し、
前記データストリームの第２部分が動的に判別された１つ以上のデータパターンと一致すると判別したことに応じて、前記データストリームの前記第２部分を送信することなく、前記データストリームの第１部分を、前記通信リンクを介して送信し、
何れの部分が送信されなかったかに関する指標を送信する、ように構成されている、
リンクインタフェースユニット。
【請求項１４】
前記リンクインタフェースユニットは、
前記通信リンクを介して符号を送信して、前記第２部分が何れのデータパターンと一致するかを示す、ように構成されている、
請求項１３のリンクインタフェースユニット。
【請求項１５】
前記リンクインタフェースユニットは、
前記データストリームを第１サイズのブロックに分割し、
前記ブロック内の１つおきのブロックが、動的に判別された１つ以上のデータパターンと一致するかどうかを判別する、ように構成されている、
請求項１３のリンクインタフェースユニット。
【請求項１６】
前記リンクインタフェースユニットは、
前記１つおきのブロックが、動的に判別された１つ以上のデータパターンと一致すると判別したことに応じて、前記１つおきのブロックを削除する、ように構成されている、
請求項１５のリンクインタフェースユニット。
【請求項１７】
頻繁に発生するデータパターンは、第１期間内に閾値回数よりも多く発生するデータパターンである、
請求項１６のリンクインタフェースユニット。
【国際調査報告】
2019536386.tif 000015
2019536386.tif 000016
2019536386.tif 000017