説明

データ転送制御装置、データ転送制御方法、およびデータ転送制御システム

【課題】圧縮用の辞書のサイズを大きくしなくても、辞書のポインタを用いてデータの差し替えを行うことができる確率を高めることができるデータ転送制御装置を提供する。
【解決手段】エントリ毎に複数にフィールドに区分されたパケットヘッダを複数エントリ分記憶する圧縮辞書テーブル処理部20220であって、圧縮対象の情報と圧縮辞書テーブル処理部20220に記憶されている情報とをエントリ毎かつ区分毎に比較する手段と、その比較結果を複数のエントリ間で比較する手段とを備えるものと、その比較の結果に基づいて選択された1つのエントリを表す情報と、該選択したエントリにおいて圧縮対象の情報と一致した1個以上の区分を表す情報と、圧縮対象の情報において該選択したエントリと一致しなかった0個以上の区分に対応する情報を表す情報とから圧縮パケットヘッダを生成するパケット生成論理21230を備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ転送制御装置、データ転送制御方法、およびデータ転送制御システムに関する。
【背景技術】
【0002】
コンピュータシステムにおいて、システム内でデータを転送するために用いるパケットは、一般的に、パケットの制御種別を示すパケット種別フィールドと、行き先を示すデスティネーションフィールドと、リクエスト元を示すリクエスタフィールドと、アドレスを示すアドレスフィールドとが含まれている。通常、全てのパケットには、上記の各フィールドの情報がパケットヘッダとして含まれている。例えば、DMA(Direct Memory Access)等、大量のデータを短いパケットの単位で転送する場合でも、全てのパケットに同じようなパケットヘッダが含まれる。すなわち、パケットヘッダの転送が、転送系路のスループットの一部を消費している。そのため、転送経路は、データ転送能力を十分に発揮する事ができないという問題があった。
【0003】
なお、本願において、データとは、文字、記号、数値等の処理対象となる情報と、上記の各フィールドの情報やパケットの転送等を制御するための制御情報とを含むものであるとする。
【0004】
一方、パケットのパケット長を長くし、ヘッダ転送のオーバヘッド分を軽減するといった方法も考えられる。しかし、同じ転送経路を、複数のデータ転送で共有するコンピュータシステムの場合、特定のパケットが転送経路を占有する時間を長くすることは、他のパケットのレイテンシ性能を悪化させるという問題が有る。そのため、制御情報以外のデータの転送に用いるパケットにおいても、パケット長が比較的短い(例えば64Byteくらいの)パケットとして転送する事が求められる場合が多い。
【0005】
また、転送するヘッダやデータの一部を圧縮することも考えられる。圧縮技術の一つの手法として、静的または動的辞書を用いてデータを圧縮する技術がある(例えば特許文献1)。特許文献1に記載されている辞書圧縮方式では、転送しようとする文字列が辞書内に存在する場合、文字列に代えて辞書のポインタ(あるいはインデックス)が送信される。この場合、ポインタの大きさが差し替えられた文字列の大きさよりも小さければ圧縮効果が得られる。また、動的辞書を用いる場合、新しい文字列が転送されるときに、データの圧縮側の辞書と伸張側の辞書とで同一の位置に同一の新しい文字列が追加され、辞書が更新される(例えば段落0013)。また、特許文献1には、他の辞書圧縮の方法としてスライディング・ウィンドウ圧縮を用いる技術が示されている(例えば段落0014)。スライディング・ウィンドウ圧縮では、固定サイズのスライディング・ウィンドウを移動させながら文字列の比較を行い、一致した場合には辞書のポインタ(あるいはリファレンス)への差し替えが行われる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2004−514366号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、特許文献1に記載されている辞書圧縮技術では、圧縮しようとするデータが、辞書に登録されているデータと完全に一致した場合に、辞書のポインタを用いたデータの差し替えが可能となる。したがって、例えば対象とするデータの種類が多いような場合に、辞書のポインタを用いたデータの差し替えを行うことができる確率を高めようとすると、辞書へのデータ登録数を多くする必要がある。しかしながら、辞書のサイズが大きくなると、圧縮対象となる入力データと、登録されているデータとを逐次に比較する場合には比較に要する時間が長くなってしまう。また、入力データと、登録されているデータとを並列的に比較する場合には比較器等の構成が増えてしまう。
【0008】
本発明は、上記課題を解決することができるデータ転送制御装置、データ転送制御方法、およびデータ転送制御システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるデータ転送制御装置は、複数の区分毎に圧縮対象の属性を示すエントリ登録情報を、予め決められた複数の前記区分により構成されるエントリ毎に記憶する記憶手段と、入力情報と前記エントリ登録情報とを前記エントリ毎かつ前記区分毎に比較する第1の比較手段と、前記第1の比較手段による比較結果を前記エントリ間で比較する第2の比較手段と、前記第2の比較手段による比較結果に基づいて選択された前記エントリを表す第1の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とが一致する少なくとも1つの前記区分を表す第2の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とにおいて一致しない前記区分に対応する前記入力情報を表す第3の情報とを用いて前記入力情報を圧縮する圧縮手段とを備える。
【0010】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるデータ転送制御方法は、複数の区分毎に圧縮対象の属性を示すエントリ登録情報を、予め決められた複数の前記区分により構成されるエントリ毎に記憶する記憶手段と、入力情報と前記エントリ登録情報とを前記エントリ毎かつ前記区分毎に比較する第1の比較手段と、前記第1の比較手段による比較結果を前記エントリ間で比較する第2の比較手段と、前記第2の比較手段による比較結果に基づいて選択された前記エントリを表す第1の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とが一致する少なくとも1つの前記区分を表す第2の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とにおいて一致しない前記区分に対応する前記入力情報を表す第3の情報とを用いて前記入力情報を圧縮する圧縮手段とを備える。
【0011】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるデータ転送制御システムは、複数の区分毎に圧縮対象の属性を示すエントリ登録情報を、予め決められた複数の前記区分により構成されるエントリ毎に記憶する記憶手段と、入力情報と前記エントリ登録情報とを前記エントリ毎かつ前記区分毎に比較する第1の比較手段と、前記第1の比較手段による比較結果を前記エントリ間で比較する第2の比較手段と、前記第2の比較手段による比較結果に基づいて選択された前記エントリを表す第1の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とが一致する少なくとも1つの前記区分を表す第2の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とにおいて一致しない前記区分に対応する前記入力情報を表す第3の情報とを用いて前記入力情報を圧縮する圧縮手段と、前記圧縮手段が前記入力情報を圧縮することにより得られた転送情報を送信する送信手段と、を有するデータ送信部と、前記送信手段が送信した前記転送情報を受信する受信手段と、前記エントリ毎に複数に区分された情報を複数エントリ分記憶する第2の記憶手段と、前記受信手段が受信した前記転送情報に基づいて、前記第2の記憶手段において前記第1の情報に対応する前記エントリでかつ前記第2の情報に対応する区分に記憶されている第1の区分情報と、前記第3の情報が表す第2の区分情報とを用いて、前記圧縮対象の情報を復元する復元手段と、を有するデータ受信部と、を備える。
【発明の効果】
【0012】
本発明によれば、圧縮対象となる入力情報の全部とエントリ毎の登録情報の全部とが一致していなくても、圧縮対象となる情報の一部と記憶手段(すなわち圧縮辞書に対応するもの)内のいずれかのエントリのいずれかの区分とが一致していれば、圧縮手段によって当該エントリを表す第1の情報(すなわちポインタ)を用いて転送情報を生成することが可能となる。したがって、全部の一致を要求する場合と比較して、記憶手段のエントリ数(すなわちデータ登録数)を増やすことなく、ポインタを用いてデータの差し替えを行うことができる確率を高めることができる。
【図面の簡単な説明】
【0013】
【図1】本発明の一実施の形態の構成を示すブロック図である。
【図2】図1の実施形態で用いられる通常パケットと圧縮パケットのパケットヘッダの構成例を示す図である。
【図3】図1の実施形態における送信側の圧縮辞書テーブル処理部の構成例を示すブロック図である。
【図4】図1のパケット生成論理の動作例を示すフローチャートである。
【図5】図1の実施形態におけるパケット送信側LSIの動作例を説明するための図表である。
【図6】図1の実施形態における受信側の圧縮辞書テーブル処理部の構成例を示すブロック図である。
【図7】図1の実施形態におけるパケット受信側LSIの動作例を説明するための図表である。
【図8】図1の実施の形態の動作例を説明するための模式図である。
【図9】図1の実施の形態を主要な機能毎にまとめて模式的に示すブロック図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明によるデータ転送制御装置の一実施形態を説明するためのブロック図であり、図2は、図1の実施形態で用いられる通常のパケットヘッダと圧縮したパケットヘッダの構成例を示す模式図である。まず、図2を参照して、本発明の実施形態で使用する圧縮していない通常のパケットヘッダ(以下、通常パケットヘッダ)、および、圧縮されているパケットのパケットヘッダ(以下、圧縮パケットヘッダ)のフォーマットの一例について説明する。また、本実施形態で転送されるパケットのうち、パケットヘッダが通常パケットヘッダであるパケットを通常パケット、パケットヘッダが圧縮パケットヘッダであるパケットを圧縮パケット、また、通常パケットまたは圧縮パケットから復元されたパケットを復元パケットと呼ぶ。なお、このパケットヘッダの後ろには、パケットの中身であるデータが格納されている。つまり、パケットヘッダは、パケットの中身であるデータの属性を示す属性情報である。
【0015】
図2を参照すると、図2(A)に示した通常パケットヘッダ10000は、パケット識別子フィールド10001、パケット種別フィールド10002、デスティネーションフィールド10003、リクエスタフィールド10004、アドレスフィールド10005、およびその他のフィールド10006から構成されている。また、アドレスフィールド10005は、アドレス上位フィールド10007、アドレス中位フィールド10008、およびアドレス下位フィールド10009から構成されている。
【0016】
パケット識別子フィールド10001は、圧縮パケットであるか否かを示す識別子を保持する1ビットのフィールドである。本実施形態において、パケット識別子フィールド10001に識別子「1」が格納されている場合、圧縮パケットであることを示す。また、パケット識別子フィールド10001に識別子「0」が格納されている場合、通常パケットであることを示す。
パケット種別フィールド10002は、パケット種別を示すフィールドである。
デスティネーションフィールド10003は、パケットのデスティネーション(リンク先)を示すフィールドである。
リクエスタフィールド10004は、リクエスト元の情報を示すフィールドである。
アドレスフィールド10005は、通常パケットヘッダ10000の転送先に係るアドレスを示すフィールドである。つまり、通常パケットの転送先のアドレスを示す情報を格納する。このアドレスフィールド10005は、アドレス上位フィールド10007、アドレス中位フィールド10008、およびアドレス下位フィールド10009を含む。これらアドレス上位フィールド10007、アドレス中位フィールド10008、およびアドレス下位フィールド10009は、アドレスフィールド10005を所定のビット数で分割したフィールドであり、所定ビット数の上位、中位および下位アドレスを示すフィールドである。
その他のフィールド10006は、その他のフィールド情報を示すフィールドである。
【0017】
図2(B)に示した圧縮パケットヘッダ11000は、パケット識別子フィールド11001、エントリ番号フィールド11002、差し替え情報フィールド11003、および不一致フィールド11004から構成される。
パケット識別子フィールド11001は、圧縮パケットであるか否かを示す識別子を保持する1ビットのフィールドである。本実施形態において、パケット識別子フィールド10001に識別子「1」が格納されている場合、圧縮パケットであることを示す。また、パケット識別子フィールド10001に識別子「0」が格納されている場合、通常パケットであることを示す。
エントリ番号フィールド11002は、圧縮辞書テーブル処理部20220内のエントリ処理部31000(i)の位置を示すフィールドである。なお、圧縮辞書テーブル処理部20220は、エントリ毎に割り当てられる複数のエントリ処理部31000(i)として利用可能なハードウエア資源を備える。なお、各エントリ処理部31000(i)は、ハードウエア資源内の各エントリ処理部31000(i)の使用状況等に応じて割り当てる。なお、エントリとは、圧縮辞書テーブル処理部20220において登録されているパケットヘッダの単位を示す。
差し替え情報フィールド11003は、パケットヘッダに含まれるフィールドのうち圧縮されたフィールドを示すフィールドである。
不一致フィールド11004は、パケットヘッダに含まれるフィールドのうち圧縮されなかったフィールドを示すフィールドである。なお、圧縮できなかったフィールドに格納されている情報は、圧縮されない情報のまま、パケットの末尾に付加される。
【0018】
次に、図1を参照して本発明によるデータ転送制御装置の一実施形態の構成について説明する。図1を参照すると、本発明の一実施形態としてのデータ転送制御装置は、パケット送信側LSI(Large Scale Integration)20000内のパケット送信部20200として構成されている。
パケット送信側LSI20000は、LSI間のインタフェースであるSerDes(Serializer/Deserializer)22000を介して、パケット受信側LSI21000と接続されている。パケット送信側LSI20000とパケット受信側LSI21000との間のパケット転送は、このSerDes22000でシリアル転送される。
【0019】
パケット送信側LSI20000は、リクエスタ20100、パケット送信部(データ転送制御装置)20200、およびSerDes送信部20300で構成されている。
リクエスタ20100は、通常パケットを生成するパケット生成処理を実行する。本実施形態において、リクエスタ20100は、パケット受信側LSI21000に送信する送信実体データを複数個に分割する。このリクエスタ20100は、分割された各送信実体データを、通常パケットヘッダ10000を備える通常パケットの中身データを格納する部分に書き込む。これにより、リクエスタ20100は、通常パケットを生成する。
【0020】
パケット送信部20200は、リクエスタ20100によって生成された通常パケットを受信側LSI21000に送信する送信処理と、必要に応じて通常パケットのパケットヘッダを圧縮するパケット圧縮処理とを実行する。このパケット送信部20200は、パケット圧縮処理を実行した場合に圧縮パケットを、パケット圧縮処理を実行しない場合に通常パケットを、それぞれSerDes送信部20300に出力する。
SerDes送信部20300は、パケット送信部20200から出力された通常パケットあるいは圧縮パケットをシリアルデータに変換して、SerDes22000へ送信する。
【0021】
他方、パケット受信側LSI21000は、SerDes受信部21100、パケット受信部21200、およびターゲット21300から構成されている。
SerDes受信部21100は、SerDes22000を介してパケット送信側LSI20000からシリアルデータを受信し、パケット化する。
パケット受信部21200は、SerDes22000を介してパケットを受信し、受信したパケットが圧縮パケットであった場合、圧縮パケットを復元する復元処理を実行するとともに、復元した復元パケットをターゲット21300に出力する。また、パケット受信部21200は、受信したパケットが通常パケットであった場合、パケットを復元する復元処理を実行せずに、そのまま通常パケットをターゲット21300出力する。
ターゲット21300は、パケット受信部21200から出力された復元パケットあるいは通常パケットを受け取り、受け取ったパケットに対して予め決められた処理を実行する。
【0022】
上述したパケット送信側LSI20000内のパケット送信部20200は、通常パケット保持レジスタ20210、圧縮辞書テーブル処理部20220、およびパケット圧縮論理回路20230から構成されている。
通常パケット保持レジスタ20210は、リクエスタ20100から受信した通常パケットをSerDes送信部20300へ出力するタイミングまで一時的に保持する記憶領域である。
この通常パケット保持レジスタ20210は、有効な通常パケットを保持したタイミングで、リクエスタ20100から入力する通常パケットに格納されている情報のうち、通常パケットヘッダ10000の各フィールドに格納されている情報を、圧縮辞書テーブル処理部20220へ信号線20241を介して出力する。
また同様に、通常パケット保持レジスタ20210は、有効な通常パケットを保持したタイミングで、リクエスタ20100から入力する通常パケットに格納されている情報を、パケット圧縮論理回路20230に出力する。つまり、通常パケット保持レジスタ20210は、通常パケットの全てのフィールドに格納されている情報(すなわち通常パケットヘッダ10000の全てのフィールドに格納されている情報と、通常パケットに含まれる通常パケットヘッダ10000以外の全てのフィールドに格納されている情報と)を、パケット圧縮論理回路20230へ信号線20242を介して出力する。
【0023】
圧縮辞書テーブル処理部20220は、複数の論理回路やレジスタなどから構成され、通過するパケットヘッダに格納されている情報に基づき、パケット圧縮論理回路20230による圧縮処理に利用される圧縮対象であるフィールドが登録されているいか否かを判定する。この圧縮辞書テーブル処理部20220は、圧縮対象であるフィールドを検索する際に参照する辞書データを内蔵するレジスタに登録している。つまり、圧縮辞書テーブル処理部20220は、圧縮対象であるフィードを検索する辞書として機能するテーブルを有している。この圧縮辞書テーブル処理部20220は、圧縮対象であるフィードを検索により得た場合、当該フィードを圧縮することを判定する。一方、圧縮対象であるフィードを検索により検出できなかった場合、圧縮辞書テーブル処理部20220は、圧縮処理を実行しないことを判定する。
【0024】
また、圧縮辞書テーブル処理部20220は、圧縮すると判定した場合に使用するエントリを表すエントリ番号と、当該エントリの中のどのフィールドを圧縮時に使用するのかを表す差し替え情報とを出力する機能とを有している。この圧縮辞書テーブル処理部20220が有する圧縮辞書として機能するテーブルは、通常パケットヘッダ10000に格納されることが予想されるデータをフィールド単位で比較および選択ならびに書き換え可能な形態で複数組格納している。テーブル内の各組のデータはそれぞれ1個の通常パケットヘッダ10000に対応している。また、各組のデータの格納位置は、所定の1個のエントリ番号で示されている。本実施形態では、テーブル内の各組のデータが、1個の通常パケットヘッダ10000に対応する1組のデータを記憶する1組のレジスタ(あるいは一定範囲の記憶領域)を有するエントリと称する回路ブロックに記憶される。
【0025】
パケット圧縮論理回路20230は、圧縮辞書テーブル処理部20220から出力されたエントリ番号と差し替え情報とに基づき、圧縮するか否かの判定を行う機能と、圧縮すると判定した場合に圧縮パケットヘッダを生成するとともに、生成した圧縮パケットヘッダを通常パケットにおける通常パケットヘッダ10000と置き換えて、圧縮パケットを合成する機能とを有している。また、パケット圧縮論理回路20230は、圧縮するか否かの判定の結果を表す情報を圧縮情報として信号線20245を用いて圧縮辞書テーブル処理部20220に出力する。また、パケット圧縮論理回路20230は、生成した圧縮パケットまたは圧縮を行わなかった通常パケットをSerDes送信部20300へ出力する機能を有している。
【0026】
ここで、図3を参照して、パケット送信側LSI20000内の圧縮辞書テーブル処理部20220の詳細構成例について説明する。なお、図3では、通常パケット保持レジスタ20210の記憶領域のうち、通常パケットヘッダ10000を保持する部分の記憶領域のみを示している。図3において通常パケット保持レジスタ20210は、図2(A)に示した通常パケットヘッダ10000を構成するパケット識別子フィールド10001、パケット種別フィールド10002、デスティネーションフィールド10003、リクエスタフィールド10004、アドレス上位フィールド10007、アドレス中位フィールド10008、アドレス下位フィールド10009、およびその他のフィールド10006内に格納されているデータを、一時的に保持する複数のレジスタ(記憶領域)20211〜20214、20217〜20219および20216を有している。
【0027】
図3に示した圧縮辞書テーブル処理部20220は、複数のエントリ処理部31000(i)と、ビット幅比較論理回路32000と、一致情報選択回路33000と、カウンタ制御回路34000と、登録先選択回路35000とを有している。各エントリ処理部31000(i)は、同一構成である。また、各エントリ処理部31000(i)には、固有の識別情報(あるいは位置情報)であるエントリ番号(i)がそれぞれ割り当てられている。
【0028】
圧縮辞書テーブル処理部20220は、通過する通常パケットヘッダ10000に格納された情報ごとに、エントリ番号(i)を割り当てて、エントリ処理部31000(i)として利用されるコンパレータやレジスタを含むハードウエア資源にエントリ処理部31000(i)の機能構成を割り当てる。つまり、圧縮辞書テーブル処理部20220は、通話パケット保持レジスタ20210から入力する通常パケットヘッダ10000に格納された情報に対応するエントリ処理部31000(i)が割り当てられているか否かを判定する。対応するエントリ処理部31000(i)が割り当てられていない場合、圧縮辞書テーブル処理部20220は、エントリ処理部31000(i)として機能していない状態のハードウエア資源に対して、エントリ処理部31000(i)を割り当てる。この圧縮辞書テーブル処理部20220による処理を、以下、圧縮辞書テーブル処理部登録処理という。
【0029】
また、圧縮辞書テーブル処理部20220は、通過する通常パケットヘッダ10000に格納された情報に対応するエントリ処理部31000(i)が登録されている場合、このエントリ処理部31000(i)に登録されている情報と通常パケットヘッダ10000に格納された情報との照合結果に基づき、通常パケットヘッダ10000の一部の情報を圧縮する。この圧縮辞書テーブル処理部20220による処理を、以下、圧縮処理という。
【0030】
エントリ処理部31000(i)は、Valid(バリッド)レジスタ31100、登録パケット情報レジスタ31200、一致カウンタ31300、7個のコンパレータ31401〜31407、ビット幅加算機31500、および束線化回路31600を有している。このエントリ処理部31000(i)は、上述の圧縮辞書テーブル処理部登録処理によって登録されたエントリ番号(i)毎に、コンパレータやレジスタを含むハードウエア資源に割り当てられる処理部である。
【0031】
Validレジスタ31100は、各エントリ処理部31000(i)の有効/無効を示す1ビットのデータが格納される。Validレジスタ31100は、例えば、エントリ処理部31000(i)として利用されるハードウエア資源に登録された情報が初期化した後等で登録されたエントリ処理部31000(i)に対応するデータが格納される前の状態である場合、無効であることを示す情報「0」が格納されている。また、Validレジスタ31100は、通過した通常パケットヘッダ10000に対応するエントリ処理部31000(i)が割り当てられ、当該通常パケットヘッダ10000に格納されている情報が登録パケット情報レジスタ31200に登録(格納)された状態である場合、有効であることを示す情報「1」が格納されている。
【0032】
登録パケット情報レジスタ31200は、複数のフィールド(区分)毎に圧縮対象の属性を示すエントリ登録情報を格納する。例えば、登録パケット情報レジスタ31200は、通常パケットヘッダ10000に含まれるフィードのうちパケット識別子フィールド10001を除く各フィールドに格納されているエントリ登録情報を、フィールド単位で読み出しおよび書き込み可能に保持するレジスタ(あるいは記憶領域)31201〜31207を有している。
各レジスタ31201〜31207は、通常パケットヘッダ10000の各フィールド10002〜10004、10007〜10009および10006のデータである、パケット種別を示すパケット種別情報、デスティネーションを示すデスティネーション情報、リクエスト元の情報を示すリクエスタ情報、上位アドレスを示すアドレス上位情報、中位のアドレスを示すアドレス中位情報、下位アドレスを示すアドレス下位情報、およびその他のフィールド情報を示すその他情報をそれぞれ保持する。各レジスタ31201〜31207には、圧縮辞書テーブル処理部登録処理において、通常パケット保持レジスタ20210のレジスタ20211〜20214、20217〜20219および20216に保持されているデータが所定の条件が成立した場合に取り込まれ、保持される。
【0033】
一致カウンタ31300は、エントリ登録情報を用いてパケット圧縮が行われた回数を保持するカウンタである。
一致カウンタ31300には、初期状態で「0」が格納されている。また、一致カウンタ31300は、エントリ登録情報を用いてパケット圧縮が行われた場合に、1ずつカウントアップされた情報「1」、「2」、・・・を格納する。
【0034】
コンパレータ31401〜31407は、通常パケット保持レジスタ20210の各レジスタに格納されている情報(以下、入力情報という)と、登録パケット情報レジスタ31200の各レジスタ31201〜31206に格納されている情報(エントリ登録情報)との比較を、それぞれ対応するフィールド毎に行い、通常パケット保持レジスタ20210の入力情報と登録パケット情報レジスタ31200のエントリ登録情報が少なくとも1つのフィールドで一致するか否かの判定を行う比較器である。
コンパレータ31401〜31407は、通常パケット保持レジスタ20210に含まれる対応のフィールドに格納されている入力情報と、登録パケット情報レジスタ31200に含まれる対応のフィールドに格納されているエントリ登録情報とを比較し、フィールドごとに一致の有無を表す1ビットのデータをそれぞれ出力する。例えば、通常パケット保持レジスタ20210の入力情報と、登録パケット情報レジスタ31200のエントリ登録情報とが一致している場合、コンパレータ31401〜31407は「1」を出力する。一方、通常パケット保持レジスタ20210の入力情報と、登録パケット情報レジスタ31200のエントリ登録情報とが一致していない場合、コンパレータ31401〜31407は「0」を出力する。
【0035】
束線化回路31600は、全てのコンパレータ31401〜31407の出力を束ねた結果を、エントリ処理部31000(i)の比較結果として(ここでは一致情報Gとして)、エントリ処理部31000(i)の外に出力する。この場合、束線化回路31600は、7個のコンパレータ31401〜31407の出力を束ねて7ビットの一致情報Gを出力する。各コンパレータ31401〜31407の比較結果を表す出力はビット幅加算機31500へも入力される。
【0036】
ビット幅加算機31500は、各コンパレータ31401〜31407の出力に基づいて、一致したフィールドのビット幅の値を加算して、各エントリ処理部31000(i)の一致ビット幅情報Hとして、エントリ処理部31000(i)の外へ出力する。例えば、通常パケットヘッダ10000のパケット種別フィールド10002のビット幅が7ビット、デスティネーションフィールド10003のビット幅が5ビットであるとする。また、パケット種別レジスタ20212に格納されている入力情報とパケット種別レジスタ31201に格納されているエントリ登録情報とが一致し、かつ、デスティネーションレジスタ20213に格納されている入力情報とデスティネーションレジスタ31202に格納されているエントリ登録情報とが一致しているとする。さらに、この他のフィールドのレジスタに格納された入力情報とエントリ登録情報とがそれぞれ不一致であったとする。この場合、ビット幅加算機31500の出力(一致ビット幅情報H)は、パケット種別フィールドのビット幅「7」と、デスティネーションフィールドのビット幅「5」とを加算した一致ビット幅「12」となる。また、ビット幅加算機31500は、各コンパレータ31401〜31407のいずれにおいても一致している状態が検出されなかった場合には、一致ビット幅情報Hとして「0」を出力する。
【0037】
ビット幅比較論理回路32000は、比較器、セレクタ、カウンタなどの種々の論理回路の複合回路である。ビット幅比較論理回路32000は、各エントリ処理部31000(i)から出力された各エントリの一致ビット幅情報Hとを比較し、比較結果に基づいて一致ビット幅が最大のエントリ処理部31000(i)を示すエントリ番号(i)を出力する。
ただし、ビット幅比較論理回路32000は、同一の最大値である一致ビット幅情報Hを有するエントリ処理部31000(i)が複数あった場合には、例えば最も若い番号のエントリ番号(i)を出力する。あるいは、ビット幅比較論理回路32000は、同一の最大値である一致ビット幅情報Hを有する各エントリ処理部31000(i)の中で一致カウンタ31300の値が最も大きいエントリ番号(i)を出力するようにしてもよい。また、ビット幅比較論理回路32000は、少なくとも1つのフィールドのビット幅に対応する値以上のビット幅の値が、いずれのエントリ処理部31000(i)からも入力されなかった場合、すなわち各エントリ処理部31000(i)の各コンパレータ31401〜31407のいずれにおいても一致している状態が検出されなかった場合には、有効なエントリ番号(i)がないことを示す値のエントリ番号(例えば0や負の値;以下、無効なエントリ番号と称する)を出力する。このビット幅比較論理回路32000から出力されたエントリ番号は、通常パケット保持レジスタ20210に保持されているパケットを、圧縮パケットヘッダ11000(図2参照)に変換する場合(すなわち圧縮する場合)に、エントリ番号フィールド11002に格納される値となる。
【0038】
一致情報選択回路33000は、各エントリ処理部31000(i)の束線化回路31600から出力される一致情報Gを入力し、ビット幅比較論理回路32000から出力されたエントリ番号(i)に基づいて、当該エントリ番号(i)で指定されるエントリ処理部31000(i)の束線化回路31600の出力(一致情報G)を選択して、差し替え情報Sとして出力する。この一致情報選択回路33000から出力された差し替え情報Sは、通常パケット保持レジスタ20210に保持されているパケットを、圧縮パケットヘッダ11000(図2参照)に変換する場合(すなわち圧縮する場合)に、差し替え情報フィールド11003に格納される値となる。なお、一致情報選択回路33000は、ビット幅比較論理回路32000から無効なエントリ番号が出力された場合にはすべてのビットを0(すなわち差し替えしないことを示す値)とした差し替え情報Sを出力する。
【0039】
また、カウンタ制御回路34000は、ビット幅比較論理回路32000から出力されたエントリ番号(i)とパケット圧縮論理回路20230から入力された圧縮情報とに基づいて、当該エントリ番号(i)を用いたパケット圧縮が行われた場合に、当該エントリ番号(i)で指定される(すなわち一致ビット幅が最大のエントリとして決定された)エントリ処理部31000(i)の一致カウンタ31300を選択して、選択した一致カウンタ31300の値を1加算する。
【0040】
登録先選択回路35000は、各エントリ処理部31000(i)0の登録パケット情報レジスタ31200内の値の更新を制御する回路である。登録先選択回路35000には、各エントリ処理部31000(i)におけるValidレジスタ31100の値および一致カウンタ31300のカウント値と、パケット圧縮論理回路20230から出力された圧縮情報とが入力される。
この登録先選択回路35000は、まず、パケット圧縮論理回路20230から入力された圧縮情報に基づいて圧縮処理が行われなかったことを検出した場合に、Validレジスタ31100の値と一致カウンタ31300のカウント値とに基づいて1つのエントリ処理部31000(i)を選択する。ここで、パケット圧縮論理回路20230において圧縮処理が行われなかった場合とは、パケット圧縮論理回路20230において圧縮パケットヘッダの生成が行われず、通常パケットが出力されることを意味する。この場合、受信側では通常パケットが受信されると受信側の圧縮辞書テーブル処理部21220のエントリ登録情報の更新処理が実施されるため、送信側の圧縮辞書テーブル処理部20220においてもエントリ登録情報の更新処理を実施する必要がある。
【0041】
なお、Validレジスタ31100の値が無効であるエントリ処理部31000(i)がある場合には(まだデータが登録されていないエントリ処理部31000(i)がある場合には)、無効であるエントリ処理部31000(i)の1つが登録先選択回路35000によって選択される。
無効であるエントリ処理部31000(i)が複数ある場合には、例えば最も若い番号のエントリ番号(i)のエントリ処理部31000(i)が登録先選択回路35000によって選択される。一方、Validレジスタ31100の値が無効であるエントリ処理部31000(i)がない場合には、一致カウンタ31300のカウント値が最も小さいエントリ処理部31000(i)の1つが登録先選択回路35000によって選択される。
【0042】
カウント値が最も小さいエントリ処理部31000(i)が複数ある場合には、例えば最も若い番号のエントリ番号(i)のエントリ処理部31000(i)が登録先選択回路35000によって選択される。そして、登録先選択回路35000は、次に、Validレジスタ31100の値および一致カウンタ31300のカウント値に基づいて選択したエントリ処理部31000(i)の登録パケット情報レジスタ31200に、通常パケット保持レジスタ20210に保持されているデータを登録する。つまり、通常パケット保持レジスタ20210の各レジスタ20212〜20214、20217〜20219および20216に保持されているデータを、登録パケット情報レジスタ31200の各レジスタ31201〜31207に格納する。
また、登録先選択回路35000は、Validレジスタ31100の値および一致カウンタ31300のカウント値に基づいて選択したエントリ処理部31000(i)のValidレジスタ31100の値を有効に設定するとともに、一致カウンタ31300のカウント値を0にクリアする。
【0043】
このようにして、パケット圧縮論理回路20230において圧縮処理が行われなかった場合、圧縮辞書テーブル処理部20220内の情報と少なくとも一部が一致しない通常パケットヘッダ10000は、それが通常パケット保持レジスタ20210を通過した場合に、無効なエントリ、もしくは、カウント値が最小である圧縮辞書テーブル処理部のエントリ処理部31000(i)に取り込まれる。つまり、パケット圧縮論理回路20230において圧縮処理が行われなかった場合、通過する通常パケットヘッダ10000の情報が圧縮辞書テーブル処理部20220に登録されていないため、圧縮辞書テーブル処理部20220は、通過する通常パケットヘッダ10000の情報をエントリ登録情報として、それぞれ対応するフィールド毎に、登録パケット情報レジスタ31200に登録する。
【0044】
次に、図4および図5を参照して、図1に示したパケット送信側LSIのパケット圧縮論理回路20230の動作について説明する。図4はパケット圧縮論理回路20230による処理の流れの一例を示すフローチャートである。図5は、動作例を説明するための図表である。図5の図表では、ケース番号1〜7の7種類の動作例に対応する情報を示している。
【0045】
なお、図5の例では、通常パケットヘッダ10000のフィールド長を64ビットとしている。パケット識別子フィールド10001のフィールド長を1ビットとしている。パケット種別フィールド10002のフィールド長を7ビットとしている。デスティネーションフィールド10003のフィールド長を5ビットとしている。リクエスタフィールド10004のフィールド長を5ビットとしている。アドレス上位フィールド10007のフィールド長を22ビットとしている。アドレス中位フィールド10008のフィールド長を9ビットとしている。アドレス下位フィールド10009のフィールド長を8ビットとしている。そして、その他のフィールド10006のフィールド長を7ビットとしている。
【0046】
また、エントリ番号(i)のビット長を8ビットとしている。この場合、例えばエントリ番号(0)を無効なエントリ番号とし、i=1〜255を有効なエントリ番号(i)として用いることができる。
【0047】
また、差し替え情報Sの各ビットは、図3のコンパレータ31401〜31407の比較結果が一致している場合に「1」、不一致の場合に「0」としている。例えば、ケース番号1では、差し替え情報Sの7ビットがすべて「1」となっている。この場合、図3の7個のコンパレータ31401〜31407における比較結果がすべて一致となっていたことを示している。
【0048】
さて、いまここで、通常パケット保持レジスタ20210が、リクエスタ20100からパケットを受信したとすると、パケット圧縮論理回路20230は、まず、圧縮辞書テーブル処理部20220から信号線20244を用いて受信した差し替え情報Sに差し替えを行うことが可能である旨の設定、すなわち差し替え情報Sのいずれかのビットに差し替えを行うことが可能であることを示す値(上記の例では1)が設定されているか否かを判定する(図4のステップS11)。パケット圧縮論理回路20230は、差し替え情報Sが設定されていると判定した場合(ステップS11で「yes」の場合)、差し替え情報Sの各ビットの値に基づいて圧縮パケットヘッドのビット数を算出する(ステップS12)。
【0049】
例えば、図5のケース番号1のように、差し替え情報Sを構成する7個のビットがすべて1である場合、すなわち、いずれかのエントリ番号(i)のエントリ処理部31000(i)においてすべてのコンパレータ31401〜31407で一致が検出された場合、当該エントリ処理部31000(i)の登録パケット情報レジスタ31200に保持されている各フィールドのデータと、通常パケット保持レジスタ20210に保持されている対応する各フィールドのデータとがすべて一致したことになる。この場合、一致ビットの合計数は63ビットとなる(すなわち通常パケットヘッダ10000のビット幅64ビットからパケット識別子フィールド10001の1ビットを減じた値となる)。この場合、圧縮パケットヘッダ11000は、不一致フィールド11004が0ビットとなるので、1ビットのパケット識別子フィールド11001と、8ビットのエントリ番号フィールド11002と、7ビットの差し替え情報フィールド11003との合計16ビットから構成されることになる。ちなみに、この場合、パケット受信側LSI21000では、圧縮パケットヘッダ11000内のエントリ番号フィールド11002内に格納されているエントリ番号(i)の情報のみで(すなわち差し替え情報S無しで)圧縮前の通常パケットヘッダ10000と同一のデータを復元することができる。
【0050】
また、例えば、図5のケース番号2のように、差し替え情報Sを構成する5個のビットが1で、アドレス下位フィールド10009とその他のフィールド10006とに対応する2個のビットが0であったとする。
この場合、いずれかのエントリ番号(i)のエントリ処理部31000(i)において5個のコンパレータ31401〜31405で一致が、また2個のコンパレータ31406〜31407で不一致が検出されたことになる。すなわち、この場合、当該エントリ処理部31000(i)の登録パケット情報レジスタ31200に保持されている各フィールドのデータは、通常パケット保持レジスタ20210に保持されている対応する各フィールドのデータと比較すると以下のようになる。つまり、下位アドレスを示すアドレス下位情報を保持するレジスタ31206と、その他のフィールド情報を示すその他情報を保持するレジスタ31207とに保持されているデータを除く、レジスタ31201〜31205で保持されているデータが一致したことになる。
【0051】
この場合、一致ビットの合計数は48ビットとなる(すなわち通常パケットヘッダ10000のビット幅64ビットからパケット識別子フィールド10001の1ビット、アドレス下位フィールド10009の8ビット、およびその他のフィールド10006の7ビットを減じた値となる)。また、この場合、圧縮パケットヘッダ11000では、不一致フィールド11004に、アドレス下位フィールド10009の8ビットのデータとその他のフィールド10006の7ビットのデータとが格納されることになる。すなわち、不一致フィールド11004のビット数は合計で15ビットとなる。したがって、圧縮パケットヘッダ11000は、1ビットのパケット識別子フィールド11001と、8ビットのエントリ番号フィールド11002と、7ビットの差し替え情報フィールド11003と、15ビットのその他のフィールド10006との合計31ビットから構成されることになる。
【0052】
同様に、図5のケース番号3、4、5、6および7の例では、圧縮パケットヘッダ11000の合計ビット数は24、46、51、56および63ビットとなる。
ここで、ケース番号3は、中位アドレスを示すアドレス中位情報を保持するレジスタ31205と、下位アドレスを示すアドレス下位情報を保持するレジスタ31206と、その他のフィールド情報を示すその他情報を保持するレジスタ31207とに保持されているデータが不一致となる例に対応している。
また、ケース番号4は、ケース番号3で不一致としたレジスタ31205〜31207に加え、上位アドレスを示すアドレス上位情報を保持するレジスタ31204に保持されているデータが不一致となる例に対応している。
また、ケース番号5は、ケース番号4で不一致としたレジスタ31204〜31207に加え、リクエスト元の情報を示すリクエスタ情報を保持するレジスタ31203に保持されているデータが不一致となる例に対応している。
また、ケース番号6は、ケース番号5で不一致としたレジスタ31203〜31207に加え、デスティネーションを示すデスティネーション情報を保持するレジスタ31202に保持されているデータが不一致となる例に対応している。
そして、ケース番号7は、ケース番号6で不一致としたレジスタ31202〜31207に加え、パケット種別を示すパケット種別情報を保持するレジスタ31201に保持されているデータが不一致となる例に対応している。
【0053】
次に、パケット圧縮論理回路20230は、圧縮時のパケットヘッダすなわち圧縮パケットヘッダのビット数と、非圧縮時のパケットヘッダすなわち通常パケットヘッダ10000のビット数とを比較する(ステップS14)。例えば図5に示した例では、パケット圧縮論理回路20230が、ステップS13で求めた圧縮パケットヘッダのビット数と、通常パケットヘッダ10000のビット数64ビットとを比較する。
【0054】
ステップS13での比較の結果、圧縮時のパケットヘッダすなわち圧縮パケットヘッダのビット数が、非圧縮時のパケットヘッダすなわち通常パケットヘッダ10000のビット数より少ない場合(ステップS14で「yes」の場合)、パケット圧縮論理回路20230は、エントリ番号(i)および差し替え情報Sと通常パケットヘッダ10000とに基づいて圧縮パケットヘッダ11000を生成する(ステップS15)。また、ステップS15では、パケットヘッダ11000を生成した旨を示す圧縮情報が出力される。
【0055】
上述したように、図5のケース番号1の例では、圧縮パケットヘッダ11000のビット数が16ビットとなるので、ステップS14では圧縮パケットヘッダのビット数が、通常パケットヘッダ10000のビット数64ビットより少ないとパケット圧縮論理回路20230によって判定される(ステップS14で「yes」)。
よって、ステップS15では、パケット圧縮論理回路20230によって圧縮パケットヘッダが生成される。この場合、上述したように、1ビットのパケット識別子フィールド11001と、8ビットのエントリ番号フィールド11002と、7ビットの差し替え情報フィールド11003とからなる合計16ビットの圧縮パケットヘッダ11000がパケット圧縮論理回路20230によって生成される。
【0056】
また、図5のケース番号2の例では、圧縮パケットヘッダ11000のビット数が31ビットとなるので、ステップS14では圧縮パケットヘッダのビット数が、通常パケットヘッダ10000のビット数64ビットより少ないと判定される(ステップS14で「yes」)。よって、ステップS15ではパケット圧縮論理回路20230によって圧縮パケットヘッダが生成される。
この場合、上述したように、1ビットのパケット識別子フィールド11001と、8ビットのエントリ番号フィールド11002と、7ビットの差し替え情報フィールド11003と、15ビットのその他のフィールド10006からなる合計31ビットの圧縮パケットヘッダ11000がパケット圧縮論理回路20230によって生成される。
【0057】
他方、例えば図5のケース番号5の例では、圧縮パケットヘッダ11000のビット数が67ビットとなるので、ステップS14では圧縮パケットヘッダのビット数が、通常パケットヘッダ10000のビット数64ビットより少なくないとパケット圧縮論理回路20230によって判定される(ステップS14で「no」)。
この場合には、パケット圧縮論理回路20230は、通常パケット保持レジスタ20210から受信した通常パケットをSerDes送信部20300に向けて出力する(ステップS17)。また、ステップS11の判定結果がnoとなった場合も同様にステップS17から通常パケットが出力される。
【0058】
ステップS15でパケット圧縮論理回路20230が圧縮パケットヘッダを生成すると、パット生成論理20230は、通常パケット保持レジスタ20210から受信した通常パケットの通常パケットヘッダ10000をステップS15で生成した圧縮パケットヘッダで差し替えることで、圧縮パケットを生成し、SerDes送信部20300に向けて出力する(ステップS16)。
【0059】
例えば、図5のケース番号1の例では、64ビットの通常パケットヘッダ10000がパケット圧縮論理回路20230によって16ビットの圧縮パケットヘッダに差し替えられる。
この場合、64ビットから16ビットへの48ビットの削減効果が得られる。また、図5のケース番号2の例では、64ビットの通常パケットヘッダ10000がパケット圧縮論理回路20230によって31ビットの圧縮パケットヘッダに差し替えられる。この場合、64ビットから31ビットへの33ビットの削減効果が得られる。
同様に、図5のケース番号3とケース番号4の例では、それぞれ24ビットと2ビットの削減効果を得ることができる。一方、ケース番号5〜7の例では、削減効果が無く、パケットヘッダは圧縮されない。
【0060】
このように、パケット圧縮論理回路20230は、圧縮辞書テーブル処理部20220から受信したエントリ番号(i)と、差し替え情報Sの情報を元に、通常パケット保持レジスタ20210から受信した通常パケットヘッダ10000を圧縮効果がある場合に圧縮パケットヘッダに差し替えることで、圧縮パケットを生成する。
一方、パケット圧縮論理回路20230は、圧縮辞書テーブル処理部20220から受信した差し替え情報Sで、差し替え情報Sで差し替えた場合に通常パケットよりビット幅が大きくなる場合は、差し替えを行わず、通常パケットのまま転送を行う。
【0061】
なお、図5に示した図表について詳細に説明を行うと次のようになる。すなわち、図5に示した図表は、パケット送信側LSI20000のパケット圧縮論理回路20230の動作の一例を示している。
図5の図表では、パケット圧縮論理回路20230が圧縮辞書テーブル処理部20220から受信する差し替え情報Sのケース(全ケースではない)と、その時に生成する圧縮パケットのビット幅、および、圧縮パケット生成の有無を示している。
なお、各フィールドのビット幅は仮に設定した値であり、コンピュータシステムの制御方式に依存し増減する事が有る。
本実施形態では、パケット識別子フィールドは1ビット幅(0は通常パケット、1は圧縮パケット)、パケット種別フィールドは7ビット、デスティネーションフィールドは5ビット、リクエスタフィールドは5ビット、アドレスフィールドは39ビットとし、アドレスフィールドの一致比較範囲は上位22ビット、中位9ビット、下位8ビットと分割している。
また、これら以外の、その他フィールドは7ビットとして、計算している。圧縮パケットに関しては、パケット識別子フィールド1ビット、エントリ番号情報を8ビット、差し替え情報Sを7bitとし、不一致フィールドは、不一致フィールドの数、幅により可変である。この場合、不一致フィールドが存在しない圧縮パケットでも、16ビットの幅を必要となる。尚、通常パケットのヘッダのビット幅は、64ビットとしている。
【0062】
さらに、図5の図表のケース番号1を例に説明する。ケース1では、圧縮辞書テーブル処理部20220から信号線20244で受信する差し替え情報Sは、比較対象の全てのフィールドで一致を検出したことを示す結果なので、一致ビットは63ビットという結果となる。
圧縮パケットを生成した場合、不一致フィールド分が存在しないので、圧縮パケットのビット幅は16ビットのみとなり、48ビットの削減効果が有る。
この場合、パケット圧縮論理回路20230は効果有りと判断し、差し替え動作を行う。ケース2〜4に関しても同様であるが、不一致した情報を不一致フィールドに追加するため、その分効果は低くなるが、通常パケットと比べてビット幅を削減できるため、圧縮パケットへの差し替えは実施する。ケース5〜7に関しては、圧縮パケットを生成した場合、圧縮パケットの方が通常パケットよりも大きくなるため、圧縮パケットへの差し替えは実施されない。
【0063】
一方、図1に示したパケット受信部21200は、圧縮パケット保持レジスタ21210、圧縮辞書テーブル処理部21220、およびパケット復元論理21230から構成される。圧縮パケット保持レジスタ21210は、SerDes受信部21100から受信した圧縮パケットまたは通常パケットのパケットヘッダをターゲット21300へ出力するタイミングまで一時保持する。圧縮辞書テーブル処理部21220は、復元情報のデータとなる先行パケットのヘッダ情報を保持する。パケット復元論理21230は、パケットヘッダを圧縮前の情報に復元し、またはそのまま用いて通常パケットを生成し、ターゲット21300へ送信する。
【0064】
パケット受信側LSI21000内の圧縮辞書テーブル処理部21220の詳細構成例を図6に示す。なお、図6では、圧縮パケット保持レジスタ21210の中で、圧縮パケットヘッダを保持する部分をレジスタ21210Aとして、また、通常パケットヘッダ10000を保持する部分をレジスタ21210Bとして示している。
すなわち、図6においてレジスタ(あるいは記憶領域)21211B〜21218Bには、図2(A)に示した通常パケットヘッダ10000を構成するパケット識別子フィールド10001、パケット種別フィールド10002、デスティネーションフィールド10003、リクエスタフィールド10004、アドレス上位フィールド10007、アドレス中位フィールド10008、アドレス下位フィールド10009、およびその他のフィールド10006内のデータが保持される。
また、レジスタ(あるいは記憶領域)21211A〜21214Aには、図2(B)に示した圧縮パケットヘッダ11000を構成するパケット識別子フィールド11001、エントリ番号フィールド11002、差し替え情報フィールド11003、および不一致フィールド11004内のデータが保持される。
【0065】
図3に示した圧縮辞書テーブル処理部21220は、複数のエントリ処理部41000(i)と、カウンタ制御回路44000と、登録先選択回路45000と、パケット情報選択回路46000とを有している。各エントリ処理部41000(i)は、同一構成であるが、各エントリ処理部41000(i)には固有の識別情報(あるいは位置情報)である異なるエントリ番号(i)が割り当てられている。
【0066】
エントリ処理部41000(i)は、Validレジスタ41100、およびパケット情報レジスタ41200を有している。Validレジスタ41100は、図3に示したValidレジスタ31100に対応する構成であり、そのエントリの有効/無効を示す1ビットのデータが格納される。
Validレジスタ41100は、例えば、初期化した後等でデータが格納される前の状態で無効に、パケット情報レジスタ41200に通常パケットヘッダ10000が格納された状態で有効に設定される。
パケット情報レジスタ41200は、図3に示した登録パケット情報レジスタ31200に対応する構成であり、通常パケットヘッダ10000の各フィールド情報をフィールド単位で読み出しおよび書き込み可能に保持するレジスタである。
一致カウンタ41300は、図3に示した一致カウンタ31300に対応する構成であり、後続パケットと一致した回数(すなわち、パケット情報レジスタ41200が保持するデータがパケットヘッダを復元する際に使用された回数)を保持するカウンタである。
この一致カウンタ41300は、初期状態で0にクリアされ、圧縮パケット保持レジスタ21210内のレジスタ21212Aに保持されたエントリ番号(i)が当該エントリ処理部41000(i)のエントリ番号(i)と一致した場合に1ずつカウントアップするカウンタである。
【0067】
パケット情報レジスタ41200は、図3に示した登録パケット情報レジスタ31200に対応する構成であり、レジスタ(あるいは記憶領域)41201〜41207を有している。
各レジスタ41201〜41207は、通常パケットヘッダ10000の各フィールド10002〜10004、10007〜10009および10006のデータである、パケット種別を示すパケット種別情報、デスティネーションを示すデスティネーション情報、リクエスト元の情報を示すリクエスタ情報、上位アドレスを示すアドレス上位情報、中位のアドレスを示すアドレス中位情報、下位アドレスを示すアドレス下位情報、およびその他のフィールド情報を示すその他情報をそれぞれ保持する。
各レジスタ41201〜41207には、圧縮パケット保持レジスタ21210のレジスタ20211B〜20214B、20217B〜20219Bおよび20216Bに保持されているデータが取り込まれ、保持される。つまり、圧縮パケット保持レジスタ21210に(圧縮パケットではなく)通常パケットが通過する際に、複数のエントリ処理部41000(i)中から登録先選択回路45000で1つのエントリ処理部41000(i)が選択され、そして、選択されたエントリ処理部41000(i)にデータの取り込みが行われる。
【0068】
また、カウンタ制御回路44000は、図3に示したカウンタ制御回路34000に対応する構成であり、圧縮パケット保持レジスタ21210内のレジスタ21211Aに保持されているパケット識別子フィールドが圧縮状態であることを示している場合に、レジスタ21212Aに保持されたエントリ番号(i)と一致するエントリ処理部41000(i)を選択し、選択した一致カウンタ41300の値を1加算する。
【0069】
また、登録先選択回路45000は、図3に示した登録先選択回路35000に対応する構成であり、各エントリ処理部41000(i)0内のパケット情報レジスタ41200内の値の更新を制御する回路である。
登録先選択回路45000には、圧縮パケット保持レジスタ21210内のレジスタ21211Bおよびレジスタ21211Aに保持されている値(パケット識別子フィールド)と、各エントリ処理部41000(i)におけるValidレジスタ41100の値および一致カウンタ41300のカウント値とが入力される。
【0070】
この登録先選択回路45000は、圧縮パケット保持レジスタ21210内のレジスタ21211Bに保持されているパケット識別子フィールドが圧縮状態ではない(すなわち通常パケットヘッダ10000である)ことを示している場合に、Validレジスタ41100の値と一致カウンタ41300のカウント値とに基づいて1つのエントリ処理部41000(i)0を選択する。
この選択で用いられる条件は、図3に示した登録先選択回路35000で使われるものと同一である。つまり、Validレジスタ41100の値が無効であるエントリ処理部41000(i)がある場合には、無効であるエントリ処理部41000(i)の1つが登録先選択回路45000によって選択される。
無効であるエントリ処理部41000(i)が複数ある場合には、例えば最も若い番号のエントリ番号(i)のエントリ処理部41000(i)が登録先選択回路45000によって選択される。
一方、Validレジスタ41100の値が無効であるエントリ処理部41000(i)がない場合には、一致カウンタ41300のカウント値が最も小さいエントリ処理部41000(i)の1つが登録先選択回路45000によって選択される。
カウント値が最も小さいエントリ処理部41000(i)が複数ある場合には、例えば最も若い番号のエントリ番号(i)のエントリ処理部41000(i)が登録先選択回路45000によって選択される。
【0071】
そして、登録先選択回路45000は、Validレジスタ41100の値および一致カウンタ41300のカウント値に基づいて選択したエントリ処理部41000(i)のパケット情報レジスタ41200に、圧縮パケット保持レジスタ21210のレジスタ21210Bに保持されているデータを登録する。つまり、圧縮パケット保持レジスタ21210の各レジスタ20212B〜20214B、20217B〜20219Bおよび20216Bに保持されているデータ(つまり通常パケットヘッダの情報)を、パケット情報レジスタ41200の各レジスタ41201〜41207に格納する。
また、登録先選択回路45000は、Validレジスタ41100の値および一致カウンタ41300のカウント値に基づいて選択したエントリ処理部41000(i)のValidレジスタ41100の値を有効に設定するとともに、一致カウンタ41300のカウント値を0にクリアする。
【0072】
このようにして、圧縮辞書テーブル処理部21220内の情報と一致しない通常パケットヘッダは、それが圧縮パケット保持レジスタ21210を通過した場合に、無効なエントリ、もしくは、カウント値が最小である圧縮辞書テーブル処理部のエントリ処理部41000(i)に取り込まれる。
【0073】
上記のように、登録先選択回路45000によるエントリ処理部41000(i)の選択条件は、図3に示した登録先選択回路35000によるエントリ処理部31000(i)の選択条件と同一となるように設定されている。したがって、圧縮辞書テーブル処理部20220内の各エントリ処理部31000(i)の各レジスタ31100および31200ならびに一致カウンタ31300に格納されているデータと、圧縮辞書テーブル処理部21220内の各エントリ処理部41000(i)の各レジスタ41100および41200ならびに一致カウンタ41300に格納されているデータとは一致することになる。
【0074】
すなわち、圧縮辞書テーブル処理部20220のパケット情報の保持制御は、パケット送信側LSI20000の圧縮辞書テーブル処理部20220での制御と同じである。このため、時間差は有るものの、パケット受信側LSI21000内の圧縮辞書テーブル処理部21220内の情報は、通常パケットが圧縮パケット保持レジスタ21210を通過するタイミングにおいて、該通常パケットが、パケット送信側LSI20000において通常パケット保持レジスタ20210を通過した時点でのパケット送信側LSI20000の圧縮辞書テーブル処理部20220内の情報と一致する。したがって、パケット送信側LSI20000で、SerDes送信部20300から圧縮パケットを出力したタイミングにおけるパケット送信側LSI20000の圧縮辞書テーブル処理部20220内の該パケットで指定したエントリが保持していた情報は、該パケットがパケット受信側LSI21000の圧縮パケット保持レジスタ21210を通過するタイミングにおけるパケット受信側LSI21000の圧縮辞書テーブル処理部21220内の該パケットで指定したエントリが保持している情報と一致するため、受信側の圧縮辞書テーブル処理部21220の情報を用いてパケットの復元が可能である。
【0075】
また、パケット情報選択回路46000は、圧縮パケット保持レジスタ21210内のレジスタ21211Bおよびレジスタ21211Aに保持されている値(すなわちパケット識別子)と、レジスタ21212Aに保持されている値(すなわちエントリ番号(i))と、レジスタ21213Aに保持されている値(すなわち差し替え情報S)とに基づいて、パケット復元論理21230に出力されるパケット情報を生成する。パケット情報は、差し替えが行われるフィールドのデータを有して構成されるものであり、圧縮パケット保持レジスタ21210に圧縮パケットヘッダが保持されている場合にのみ生成される。すなわち、レジスタ21211Bおよびレジスタ21211Aに保持されている値(すなわちパケット識別子)が圧縮パケットであることを示している場合にのみ生成される。圧縮パケットである場合、パケット情報選択回路46000は、レジスタ21212Aに保持されている値(すなわちエントリ番号(i))で指示されるエントリ処理部41000(i)のパケット情報レジスタ41200において、レジスタ21213Aに保持されている値(すなわち差し替え情報S)で指示されたフィールドの値を保持するレジスタ41201〜41207の1または複数に格納されているデータを、パケット情報として出力する。
【0076】
次に図7を参照して、パケット受信側LSI20000のパケット復元論理21230の動作について説明する。図7は、通常パケットヘッダ10000の例と、圧縮パケットヘッダの5つの例に対するパケット復元論理21230の動作例を説明するための図表である。図7では、パケット復元論理21230が圧縮パケット保持レジスタ21210から受信する差し替え情報Sのケース(全ケースではない)と、その時に生成する復元パケットの各フィールドの参照元を示している。これらの例で、パケット識別子フィールドは、0で通常パケット、1で圧縮パケットを表す。なお、Xは値が無効であることを示している。差し替え情報Sは、ビット毎に、1で各フィールドを圧縮辞書テーブル処理部21220内のデータで差し替えること、0で差し替えないことを表す。また、図7の図表の「パケット生成」の欄は、生成されるパケットヘッダの各フィールドが、通常もしくは圧縮パケットヘッダ内のフィールドまたは圧縮辞書テーブル処理部21220内のデータのどれを用いて生成されたかを示している。「そのまま」はパケット受信側LSI20000が受信したパケットヘッダ内の当該フィールドの値をそのまま用いることを示している。「テーブル」は圧縮辞書テーブル処理部21220において対応するエントリ処理部41000(i)内のデータを用いることを示している。また、「不一致フィールド」はパケット受信側LSI20000が受信した圧縮パケットヘッダ内の不一致フィールドの値を用いることを示している。
【0077】
パケット復元論理21230は、圧縮辞書テーブル処理部21220から信号線21243を用いて受信したパケット情報と、圧縮パケット保持レジスタ21210から信号線21242を用い入力された差し替え情報Sおよび圧縮パケットの不一致フィールドを元に、通常パケットを復元する。
【0078】
先ず、図7のケース番号1を例に説明する。ケース1では、圧縮パケット保持レジスタ21210のパケット識別子フィールドが0、すなわち通常パケットである事を示している。このため、パケット復元論理21230では、パケットの復元動作は行わない。これに対して、ケース番号2〜6に関しては、圧縮パケット保持レジスタ21210のパケット識別子フィールドが1、すなわち圧縮パケットであるため、パケット復元論理21230は、パケットの復元動作を行う。この時、圧縮パケット保持レジスタ21210から信号線21242を用いて入力された差し替え情報Sが「1」であるビットに対応するフィールドに関しては、圧縮辞書テーブル処理部21220から信号線21243を用いて出力されたパケット情報を参照し、各フィールドの情報を生成する。差し替え情報Sが「0」であるビットに対応するフィールドに関しては、信号線21242を用いて入力した不一致フィールドの情報を参照してフィールドの情報を生成し、各フィールドをマージして元のパケットの情報に復元する。
【0079】
以降では、図1および図8を参照し、連続したアドレス空間に対する複数のパケット転送を行うDMA転送を例に、圧縮辞書への登録、および、後続パケットにおけるパケットヘッダの圧縮、復元についての動作を説明する。図8は、以下の動作例で処理される情報の具体例を示している。また、圧縮辞書テーブル処理部20220および21220にはデータがなにも登録されていないこととする。
【0080】
[圧縮辞書への登録]
リクエスタ20100がターゲット21300のメモリに対するDMA転送の最初のパケットの送出を行う。最初のパケットがリクエスタ20100からパケット送信部20200へ出力され、パケット送信部20200内の通常パケット保持レジスタ20210に取り込まれる。通常パケット保持レジスタ20210はパケットヘッダの情報を信号線20241で送信側の圧縮辞書テーブル処理部20220へ出力する。以下では、図8(A)のパケットヘッダP1が圧縮辞書テーブル処理部20220へ出力された場合を例にとり説明する。図8(A)のパケットヘッダP1は、各フィールド10001〜10004、10007〜10009および10006にデータD1〜D8を格納して構成されている。ただし、D1は圧縮されていないパケットヘッドであることを示す0となっている。
【0081】
送信側の圧縮辞書テーブル処理部20220は、信号線20241を参照し、圧縮対象のパケットヘッダが、送信側の圧縮辞書テーブル処理部20220内の有効なエントリに一致する、もしくは、一部の情報が一致するエントリが存在するか否かを判定する(ここでは、最初のパケットなので一致するエントリは存在しない)。この場合、送信側の圧縮辞書テーブル処理部20220における判定の結果、エントリの一致は無かったため、送信側の圧縮辞書テーブル処理部20220は、差し替え情報S(信号線20244)として、一致なし(差し替え情報S=オール0)という結果をパケット圧縮論理回路20230へ出力する。また、差し替え情報S=オール0なので、パケット圧縮論理回路20230からは圧縮情報(信号線20245)として圧縮処理を行わない旨の情報が出力される。したがって、送信側の圧縮辞書テーブル処理部20220は、テーブル内の各エントリ処理部31000(i)が有する一致カウンタカウンタ値を比較し、一致回数が一番少ないエントリ、もしくは、無効なエントリへ、通常パケット保持レジスタ20210からのパケットヘッダP1の情報を全て取り込み、以降は有効なエントリとして、保持する。ここでは、図8(B)に示すようにエントリ番号「1」のエントリ処理部31000(i)における登録パケット情報レジスタ31200の各レジスタ31201〜31207にパケットヘッダP1のパケット識別子フィールド10001を除く各フィールドのデータD2〜D8が取り込まれる。
【0082】
送信側の圧縮辞書テーブル処理部20220から、差し替え情報S(信号線20244)として、一致なし(オール0)という結果を受信した、パケット圧縮論理回路20230は、圧縮動作は行わず、通常パケット保持レジスタ20210からの信号線20242を用いて受信した通常パケットをそのままの形でSerDes送信部20300へ転送する。ここでSerDes送信部20300へ転送された通常パケットのパケットヘッダは、図8(A)の通常パケットヘッダP1と同一である。
【0083】
SerDes22000を通過して、パケット受信側LSI21000のSerDes受信部21100へ受信されたパケットは、パケット受信部21200の圧縮パケット保持レジスタ21210へ圧縮されていないパケットの形(パケット識別=0)で取り込まれる。圧縮パケット保持レジスタ21210は受信側の圧縮辞書テーブル処理部21220へ受信したパケットヘッダの情報を信号線21241で出力し、これを受信した受信側の圧縮辞書テーブル処理部21220は、送信側の圧縮辞書テーブル処理部20220と同様に、受信側の圧縮辞書テーブル処理部21220内の有効なエントリに一致する、もしくは、一部の情報が一致するエントリが存在するか否かの判定を行う(ここでは送信側と同様に、一致するエントリは存在しない)。
【0084】
受信側の圧縮辞書テーブル処理部21220の判定の結果、エントリの一致は無かったため、受信側の圧縮辞書テーブル処理部21220は、テーブル内の各エントリ処理部41000(i)が有する一致カウンタ41300のカウンタ値を比較し、一致回数が一番少ないエントリ、もしくは、無効なエントリへ圧縮パケット保持レジスタ21210からのパケットヘッダの情報を全て取り込み、以降は有効なエントリとして、保持する。尚、登録エントリを決定する論理も、送信側の圧縮辞書テーブル処理部20220と受信側の圧縮辞書テーブル処理部21220で同じとするため、本例で示した、1つのパケットが二つの圧縮辞書内において登録されるエントリの番号は、同一となる。すなわち、図8(C)に示したように、エントリ番号1のエントリ処理部41000(i)におけるパケット情報レジスタ41200の各レジスタ41201〜41207にパケットヘッダP1のパケット識別子フィールド10001を除く各フィールドのデータD2〜D8が取り込まれる。
【0085】
圧縮パケット保持レジスタ21210は受信側の圧縮辞書テーブル処理部21220へパケット情報を出力すると同時に、パケット復元論理21230へパケットの情報を信号線21242で出力する。これを受信したパケット復元論理21230はパケットの復元動作は行わず、そのままのパケットの情報を、ターゲット21300へ出力する。ここでターゲット21300へ出力されるパケットのパケットヘッダは、図8(A)の通常パケットヘッダP1と同一である。
【0086】
DMA転送の最初のパケットの転送に関しては、圧縮動作が行われていないため、スループットの改善効果は無く、圧縮辞書テーブル処理部の情報を更新したのみの動作となる。
【0087】
[パケットの圧縮と復元動作]
リクエスタ20100がターゲット21300のメモリに対するDMA転送の2個目のパケットの送出を行う。最初のパケットとのパケットヘッダ差分は、アドレスの下位のみであり、他は全て一致する。図8(D)に2個目のパケットとしての通常パケットヘッダP2を示した。通常パケットヘッダP2では、アドレス下位フィールド10009の値がD7からD7−2に変わっている。
【0088】
リクエスタ20100は2個目のDMAパケットをパケット送信部20200へ出力し、パケット送信部20200内の通常パケット保持レジスタ20210に取り込まれる。通常パケット保持レジスタ20210はパケットヘッダの情報を信号線20241で送信側の圧縮辞書テーブル処理部20220へ出力する。送信側の圧縮辞書テーブル処理部20220は、該信号20241を参照し、送信側の圧縮辞書テーブル処理部20220内の有効なエントリに一致する、もしくは、一部の情報が一致するエントリが存在するか否かを判定する。送信側の圧縮辞書テーブル処理部20220は1個目のDMAパケットで登録したエントリの情報とアドレス下位以外の情報が一致している事を検出し、パケット圧縮論理回路20230へ、エントリ番号(信号線20243)および差し替え情報S(信号線20244)を出力する。また、送信側の圧縮辞書テーブル処理部20220は、パケット圧縮論理回路20230から圧縮した旨を示す圧縮情報が入力された場合に、一致したエントリの一致カウンタ31300を1加算し、圧縮転送が行われた回数を記録する。この例では、差し替え情報Sは、2進数で「1111101」となる。ただし、差し替え情報Sの各ビットは、0が差し替えを行わない場合、1が差し替えを行う場合を示している。また、差し替え情報Sの各ビットは、最上位ビットがパケット種別フィールド10002に対応し、順次下位に向けて、デスティネーションフィールド10003、リクエスタフィールド10004、アドレス上位フィールド10007、アドレス中位フィールド10008、アドレス下位フィールド10009、およびその他のフィールド10006に対応している。すなわち、差し替え情報S「1111101」は、アドレス下位フィールド10009の差し替えを行わず、他のフィールドについては差し替えを行うことを示している。
【0089】
有効な差し替え情報S(すなわちいずれかのビットが1となっている差し替え情報S)(信号線20244)を受信したパケット圧縮論理回路20230は、パケット識別子を1(圧縮パケット)として、送信側の圧縮辞書テーブル処理部20220から受信したエントリ番号の情報、および、差し替え情報Sを、それぞれエントリ番号フィールド、および、差し替え情報フィールドに、通常パケット保持レジスタ2021から信号線20242で受信したアドレスの下位フィールドを不一致フィールドに適用した、圧縮パケットを生成し、SerDes送信部20300へ転送する。図8(E)にここでSerDes送信部20300へ転送される圧縮パケットの圧縮パケットヘッダP3を示した。圧縮パケットヘッダP3のパケット識別子フィールド11001は「1」、エントリ番号フィールド11002はエントリ番号=「0000001」、差し替え情報フィールド11003は差し替え情報S「1111101」、および不一致フィールド11004は通常パケットヘッダP2のアドレス下位フィールドの値「D7−2」となっている。
【0090】
SerDes22000を通過して、パケット受信側LSI21000のSerDes受信部21100へ受信された圧縮パケットは、パケット受信部21200の圧縮パケット保持レジスタ21210へ圧縮パケットの形(パケット識別=1)で取り込まれる。圧縮パケット保持レジスタ21210は受信側の圧縮辞書テーブル処理部21220へパケットヘッダの情報を信号線21241で出力する。これを受信した受信側の圧縮辞書テーブル処理部21220は、圧縮パケットヘッダのエントリ番号フィールド11002の情報から、先のDMA転送パケット受信時に該エントリに登録された情報を読み出し、パケット情報として、パケット復元論理21230へ出力する。また、これと同時に、該エントリの一致カウンタ41300を1加算し、送信側の圧縮辞書テーブル処理部20220の情報と一致させる。
【0091】
圧縮パケット保持レジスタ21210は受信側の圧縮辞書テーブル処理部21220へパケットヘッダの情報を出力すると同時に、パケット復元論理21230へパケットの情報を信号線21242で出力する。これを受信したパケット復元論理21230は、差し替え情報Sを元に、パケットの復元を行う。即ち、この例において、差し替え情報Sでは、アドレス下位以外のフィールドは圧縮辞書テーブル処理部21220に一致という情報となるので、アドレス下位以外の情報は、受信側の圧縮辞書テーブル処理部21220から出力されたパケット情報を参照し、アドレス下位のフィールドに関しては、圧縮パケット保持レジスタ21210からの不一致フィールドの情報を参照する事で、パケットの復元を行う。図8(E)および(F)はここで復元された復元パケットのパケットヘッダP3と各フィールドのデータの参照元との関係を示している。アドレス下位フィールド11009のデータD7−2は圧縮パケットヘッダP3の不一致フィールド11004に基づいて復元されている。他のフィールドは、受信側の圧縮辞書テーブル処理部21220のエントリ番号=1のエントリ処理部41000(i)のパケット情報レジスタ41200の対応するフィールドのデータに基づいて復元されている。
【0092】
そして、パケットヘッダを復元したパケット復元論理21230は、ターゲット21300へ該復元したパケットヘッダを出力する。
【0093】
本実施形態によれば、圧縮対象となる入力情報の全部とエントリ毎のエントリ登録情報の全部とが一致していなくても、いずれかのエントリ処理部31000(i)において、圧縮対象となる入力情報の一部と圧縮辞書テーブル処理部内のエントリ登録情報のいずれかのフィールドの情報とが一致していれば、パケット圧縮論理回路20230によって当該エントリを表すエントリ番号(i)を用いて圧縮した情報を生成することが可能となる。すなわち、圧縮辞書のエントリ数(すなわちデータ登録数)を増やすことなく、エントリ番号(すなわち圧縮辞書のポインタ)を用いてデータの差し替えを行うことができる確率を高めることができる。
【0094】
なお、上記の実施形態では、圧縮対象をパケットヘッダの部分としているが、これに限らず、本発明は、パケットヘッダ以外の例えば所定の制御情報などのデータに対して適用することも可能である。
【0095】
なお、本発明の特徴は次のようにとらえることができる。本発明は、LSI間のデータ転送および制御情報の転送を、パケットを用いて転送するコンピュータシステムにおいて、出現頻度の高いパケットヘッダ等を、パケットの送出制御部で圧縮して転送する機能と、パケットの受信部において、該圧縮パケットを復元する機能を設けることにより、必要な情報を失うことなく、転送経路のスループットを改善できる事を特徴としている。
【0096】
また、本発明は、複数のエントリを有し、パケットのヘッダ情報等を格納する事ができる圧縮辞書テーブル処理部をパケット送信部、およびパケット受信部に設け、パケット送信部からパケット受信部へ通過するパケットに同期して、それぞれの圧縮辞書内の情報を同じ状態とする様に制御する。パケット送信部においては、パケット受信部へ転送するパケットのアドレス等の情報を、圧縮辞書テーブル処理部で索引し、圧縮可能なパケットであると判断した場合は、パケットのヘッダ情報等をパケット受信部に在る圧縮辞書内のポインタ(ヘッダ情報等より短い情報)に差し替える事で、パケットヘッダ等の情報量を削減し、転送経路に占めるパケットヘッダ等の帯域を小さくする事でスループットを向上する事を可能とする。また、パケット受信部においては、圧縮辞書内のポインタからヘッダ情報を復元することで、情報を失うことなく従来と同様に動作する事を可能とする。
【0097】
なお、本発明の実施の形態に対しては、例えば、パケット送信部20200やパケット受信部21200内のブロックを分割したり、統合したり、多重化したりする等の変更を適宜行うことが可能である。また、上記実施形態では、登録先選択回路35000および登録先選択回路45000についてはValidレジスタの値や一致カウンタのカウント値に基づいて登録先のエントリ番号(i)を選択することとしたが、不揮発性のメモリなどを用いて過去の使用実績を記録してそれに基づいて登録先のエントリを決定する等、他の手法を用いて登録先を決定することもできる。また、本発明のデータ転送制御装置は、パケット送信部20200としてとらえるだけでなく、パケット送信側LSI20000としてとらえるようにしたり、さらにパケット受信側LSI21000とあわせて送受信システムとしてとらえるようにしたりすることもできる。また、パケット送信部20200等は、CPU(中央処理装置)とCPUで実行されるプログラムとを用いて構成することができ、そのプログラムは通信回線やコンピュータ読み取り可能な記録媒体に記録して流通させることが可能である。
【0098】
なお、上記実施形態の構成と、特許請求の範囲の記載事項との対応は次のとおりである。特許請求の範囲の「記憶手段」は圧縮辞書テーブル処理部20220および登録パケット情報レジスタ31200に対応している。「圧縮対象の情報」は通常パケットヘッダに対応している。「エントリ」はエントリ処理部31000(i)に、「区分」はフィールド10002〜10009およびレジスタ31201〜31207に対応している。「第1の比較手段」は圧縮辞書テーブル処理部20220およびコンパレータ31401〜31407に対応している。「第2の比較手段」は圧縮辞書テーブル処理部20220およびビット幅比較論理回路32000に対応している。「第1の情報」はエントリ番号フィールド11002に、「第2の情報」は差し替え情報フィールド11003に、「第3の情報」は不一致フィールド11004に、それぞれ対応している。「計数手段」が一致カウンタ31300に対応している。そして、「有効情報記憶手段」がValidレジスタ31100に対応している。
【0099】
また、「送信手段」は、SerDes送信部20300に対応している。「受信手段」はSerDes受信部21100に対応している。「第1の記憶手段」は圧縮辞書テーブル20220および登録パケット情報レジスタ31200に対応している。「第2の記憶手段」は圧縮辞書テーブル処理部20220およびパケット情報レジスタ41200に対応している。「復元手段」はパケット復元論理21230に対応している。「第1の区分情報」はレジスタ41201〜41200に格納されているデータに対応している。「第2の区分情報」は不一致フィールド11004に格納されているデータに対応している。
【0100】
また、上記実施形態の構成を主要な機能毎にまとめ、模式的に示すと図9に示すように表すことができる。なお、上記実施形態の構成に対応するものには同一の符号を付けている。すなわち、本発明のデータ転送制御装置10は、エントリ毎に複数に区分された情報を複数エントリ分記憶する記憶手段1と、圧縮対象の情報20と記憶手段1に記憶されている情報とをエントリ毎かつ区分毎に比較する第1の比較手段2と、第1の比較手段2による比較結果を複数のエントリ間で比較する第2の比較手段3と、第2の比較手段3による比較結果に基づいて選択された1つのエントリを表す第1の情報と、選択したエントリにおいて圧縮対象の情報20と一致した1個以上の区分を表す第2の情報と、圧縮対象の情報20において選択したエントリに記憶されている情報と一致しなかった0個以上の区分に対応する情報を表す第3の情報とを用いて転送情報を生成する圧縮手段4とを備えることで構成されている。
【0101】
また、本実施の形態に係るパケット送信側LSI20000とパケット受信側LSI21000は、内部にコンピュータシステムを有している。そして、動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいう「コンピュータシステム」とは、CPU及び各種メモリやOS、周辺機器等のハードウェアを含むものである。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
【0102】
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
また、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものであってもよい。
【0103】
さらに、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【符号の説明】
【0104】
20000 パケット送信側LSI
20100 リクエスタ
20200 パケット送信部
20210 通常パケット保持レジスタ
20220 圧縮辞書テーブル処理部
20230 SerDes送信部
20230 パケット生成論理
21000 パケット受信側LSI
21100 SerDes受信部
21200 パケット受信部
21210 圧縮パケット保持レジスタ
21220 圧縮辞書テーブル処理部
21230 パケット復元論理
11001 パケット識別子フィールド
11002 エントリ番号フィールド
11003 差し替え情報フィールド
11004 不一致フィールド

【特許請求の範囲】
【請求項1】
複数の区分毎に圧縮対象の属性を示すエントリ登録情報を、予め決められた複数の前記区分により構成されるエントリ毎に記憶する記憶手段と、
入力情報と前記エントリ登録情報とを前記エントリ毎かつ前記区分毎に比較する第1の比較手段と、
前記第1の比較手段による比較結果を前記エントリ間で比較する第2の比較手段と、
前記第2の比較手段による比較結果に基づいて選択された前記エントリを表す第1の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とが一致する少なくとも1つの前記区分を表す第2の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とにおいて一致しない前記区分に対応する前記入力情報を表す第3の情報とを用いて前記入力情報を圧縮する圧縮手段と
を備えることを特徴とするデータ転送制御装置。
【請求項2】
前記第1の比較手段が、前記エントリ毎に、前記入力情報と前記エントリ登録情報とが一致するか否かを前記区分毎に比較するものであり、
前記第2の比較手段が、前記第1の比較手段による比較の結果において一致した前記区分のデータ長を前記エントリ毎に加算した結果を、前記エントリ間で比較するものである
ことを特徴とする請求項1に記載のデータ転送制御装置。
【請求項3】
前記記憶手段が、前記第1の比較手段による比較結果又は前記第2の記憶手段による比較結果に応じて計数動作を行う計数手段を前記エントリ毎に複数有し、
前記第1の比較手段による比較の結果、前記入力情報が前記各エントリ登録情報における前記区分ごとの情報のうち少なくとも1つと一致しなかった場合、前記記憶手段が、前記計数手段の計数値に応じて選択された1つの前記エントリに前記入力情報を記憶する
ことを特徴とする請求項1又は2に記載のデータ転送制御装置。
【請求項4】
前記記憶手段が、前記第1の比較手段による比較結果又は前記第2の記憶手段による比較結果に応じて計数動作を行う計数手段を前記エントリ毎に複数有するとともに、有効又は無効を意味する情報を記憶する有効情報記憶手段を前記エントリ毎に複数有し、
前記第1の比較手段による比較の結果、前記入力情報が前記各エントリ登録情報における前記区分ごとの情報のうち少なくとも1つと一致しなかった場合、前記記憶手段が、前記計数手段の計数値又は前記有効情報記憶手段の記憶内容に応じて選択された1つの前記エントリの前記エントリ登録情報として前記入力情報を記憶する
ことを特徴とする請求項1から3のうちいずれか1項に記載のデータ転送制御装置。
【請求項5】
前記複数の区分には、前記入力情報の転送先に係るアドレスを分割した複数の部分に対応する複数の区分が含まれている
ことを特徴とする請求項1から4のうちいずれか1項に記載のデータ転送制御装置。
【請求項6】
前記圧縮手段において、前記転送情報が前記入力情報よりも小さい場合に前記第1から前記第3の情報を用いて前記転送情報が生成される
ことを特徴とする請求項1から5のうちいずれか1項に記載のデータ転送制御装置。
【請求項7】
複数の区分毎に圧縮対象の属性を示すエントリ登録情報を、予め決められた複数の前記区分により構成されるエントリ毎に記憶する記憶手段を参照して、入力情報と前記エントリ登録情報とを前記エントリ毎かつ前記区分毎に比較する第1の比較ステップと、
前記第1の比較ステップにより得られた比較結果を、前記エントリ間で比較する第2の比較ステップと、
前記第2の比較ステップにより得られた比較結果に基づいて1つの前記エントリを選択する選択ステップと、
前記選択ステップにおいて選択された前記エントリを表す第1の情報と、前記選択ステップにおいて選択された前記エントリの前記エントリ登録情報と前記入力情報とが一致する少なくとも1つの前記区分を表す第2の情報と、前記選択ステップにおいて選択された前記エントリの前記エントリ登録情報と前記入力情報とにおいて一致しない前記区分に対応する前記入力情報を表す第3の情報とを用いて前記入力情報を圧縮する圧縮ステップと、
を有することを特徴とするデータ転送制御方法。
【請求項8】
複数の区分毎に圧縮対象の属性を示すエントリ登録情報を、予め決められた複数の前記区分により構成されるエントリ毎に記憶する記憶手段と、
入力情報と前記エントリ登録情報とを前記エントリ毎かつ前記区分毎に比較する第1の比較手段と、
前記第1の比較手段による比較結果を前記エントリ間で比較する第2の比較手段と、
前記第2の比較手段による比較結果に基づいて選択された前記エントリを表す第1の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とが一致する少なくとも1つの前記区分を表す第2の情報と、選択した前記エントリの前記エントリ登録情報と前記入力情報とにおいて一致しない前記区分に対応する前記入力情報を表す第3の情報とを用いて前記入力情報を圧縮する圧縮手段と
前記圧縮手段が前記入力情報を圧縮することにより得られた転送情報を送信する送信手段と、
を有するデータ送信部と、
前記送信手段が送信した前記転送情報を受信する受信手段と、
前記エントリ毎に複数に区分された情報を複数エントリ分記憶する第2の記憶手段と、
前記受信手段が受信した前記転送情報に基づいて、前記第2の記憶手段において前記第1の情報に対応する前記エントリでかつ前記第2の情報に対応する区分に記憶されている第1の区分情報と、前記第3の情報が表す第2の区分情報とを用いて、前記圧縮対象の情報を復元する復元手段と、
を有するデータ受信部と、
を備えることを特徴とするデータ転送制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate