(57)【要約】  マルチ・コア処理環境における波形データの構成可能な圧縮及び復元は、コア間のデータ転送効率を改善し、データ格納リソースを節約する。波形データ処理システムにおいて、入力、中間及び出力波形データは、コア間及びコアとオフチップ・メモリとの間で交換されることが多い。各コアにおいて、単一の構成可能な圧縮器及び単一の構成可能な復元器を、整数又は浮動小数点データを圧縮及び復元するように構成することができる。メモリ・コントローラにおいて、構成可能な圧縮器は、オフチップ・メモリへの転送用に整数又は浮動小数点波形データを圧縮パケットに圧縮し、構成可能な復元器は、オフチップ・メモリから受信した圧縮パケットを復元する。圧縮は、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減する。圧縮は、波形データを交換するのに必要な待ち時間及び帯域幅の両方を低減する。この要約書は、特許請求の範囲に記載された本発明の範囲を限定するものではない。【選択図】図１４ａ
2013506917.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第１のメモリデバイス及び前記チップ外に配置された第２のメモリデバイスとを含むシステムにおいて、波形データを前記第２のメモリデバイスに格納するために圧縮する方法であって、
前記メモリ・コントローラにおいて、整数データ形式又は浮動小数点データ形式で表わされた複数のサンプルを含む前記波形データを前記第２のメモリデバイスに書き込む要求を前記プロセッサから受信するステップと、
前記メモリ・コントローラに組み込まれた圧縮論理において、１つ又はそれ以上の圧縮制御パラメータを前記プロセッサから受信するステップと、
前記プロセッサからの前記要求に応答して、前記メモリ・コントローラ内の前記圧縮論理において、前記複数のサンプルを前記第１のメモリデバイスから受信するステップと、
前記圧縮論理が、前記圧縮制御パラメータに従って前記複数のサンプルを圧縮して、圧縮パケット用の複数の圧縮サンプルを形成するステップと、
前記圧縮パケットを前記第２のメモリデバイスに転送し、前記第２のメモリデバイスが前記圧縮パケットを格納するステップと、
を含むことを特徴とするシステム。
【請求項２】
前記圧縮制御パラメータのうちの１つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記圧縮ステップが、前記圧縮モード・パラメータに従って、前記サンプルに対して無損失圧縮操作又は損失圧縮操作を適用することを特徴とする請求項１に記載の方法。
【請求項３】
前記圧縮制御パラメータのうちの１つが、圧縮パケット当たりの所望のビット数又は所望の圧縮比であることを特徴とする請求項１に記載の方法。
【請求項４】
前記圧縮ステップが、
１つ又はそれ以上の圧縮パケットについてパケット当たりの前記圧縮サンプル内のビット数を計算するステップと、
前記パケット当たりの前記圧縮サンプル内の前記ビット数を、前記パケット当たりの所望のビット数と比較して、フィードバック・パラメータを定めるステップと、
前記フィードバック・パラメータに従って、前記圧縮するステップを適合させるステップと、
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記圧縮制御パラメータのうちの第１のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記サンプルのデータ型パラメータであり、前記整数データ形式の場合、各入力サンプルは、第１の符号ビットと第１の複数の仮数ビットとで構成され、前記浮動小数点データ形式の場合、各サンプルは、第２の符号ビットと、第２の複数の仮数ビットと、複数の浮動小数点指数ビットとで構成されており、前記方法は、
前記データ型パラメータが前記整数データ形式を指示する場合に、各サンプルの前記第１の符号ビット及び前記第１の複数の仮数ビットを処理するように前記圧縮ステップを構成するステップと、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、各サンプルの前記第２の符号ビット、前記第２の複数の仮数ビット及び前記複数の浮動小数点指数ビットを処理するように前記圧縮するステップを構成するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮ステップが、
前記圧縮モード・パラメータに従って、各サンプルの前記第１の符号ビット及び前記第１の複数の仮数ビットに無損失圧縮操作又は損失圧縮操作を適用するステップ
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記圧縮ステップが、
前記複数の浮動小数点指数ビットを、各サンプルの前記第２の符号ビット及び前記第２の複数の仮数ビットから分離するステップと、
各サンプルの前記複数の浮動小数点指数ビットに無損失圧縮操作を適用して、複数の圧縮された浮動小数点指数を生成するステップと、
前記圧縮モード・パラメータに従って、各サンプルの前記第２の符号ビット及び前記第２の複数の仮数ビットに無損失圧縮操作又は損失圧縮操作を適用して、複数の圧縮された符号及び仮数を形成するステップと、
前記複数の圧縮された浮動小数点指数並びに前記複数の圧縮された符号及び仮数を前記圧縮パケットに与えるステップと、
を含むことを特徴とする請求項５に記載の方法。
【請求項８】
前記圧縮パケットが、ヘッダ部とペイロード部とをさらに含み、前記方法が、
前記圧縮制御パラメータのうちの少なくとも１つを前記ヘッダ部に与えるステップと、
前記複数の圧縮サンプルを前記ペイロード部に与えるステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラが、前記プロセッサのうちの１つ又はそれ以上から、それぞれの波形データを前記第２のメモリデバイスに書き込む要求を受信し、前記圧縮ステップがそれぞれの複数のサンプルに適用されてそれぞれの複数の圧縮サンプルを形成することを特徴とする請求項１に記載の方法。
【請求項１０】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記圧縮論理が、前記圧縮ステップを行うように前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項１に記載の方法。
【請求項１１】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第１のメモリデバイス及び前記チップ外に配置された第２のメモリデバイスとを含むシステムにおいて、前記第２のメモリデバイスから取り出された波形データを復元する方法であって、
前記メモリ・コントローラにおいて、前記第２のメモリデバイスから前記波形データを取り出す要求を前記プロセッサから受信し、前記波形データは、前記第２のメモリデバイス内に格納された複数の圧縮サンプルによって表わされ、前記複数の圧縮サンプル及び１つ又はそれ以上の圧縮制御パラメータは、圧縮パケット内に収容されている、ステップと、
前記要求に応答して、前記メモリ・コントローラに組み込まれた復元論理において、前記圧縮パケットを前記第２のメモリデバイスから受信するステップと、
前記復元論理が、前記１つ又はそれ以上の圧縮制御パラメータに従って、前記圧縮パケットの前記複数の圧縮サンプルを復元して、前記波形データを表わす複数の復元サンプルを形成するステップと、
前記複数の復元サンプルを前記第１のメモリデバイスに与え、前記第１のメモリデバイスが、前記プロセッサによるアクセスのために前記複数の復元サンプルを格納するステップと、
を含むことを特徴とする方法。
【請求項１２】
前記圧縮制御パラメータのうちの１つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記復元ステップが、前記圧縮モード・パラメータに従って、前記複数の圧縮サンプルに対して無損失復元操作又は損失復元操作を適用することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記圧縮制御パラメータのうちの第１のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記圧縮サンプルのデータ型パラメータであり、前記整数データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された符号及び仮数データを含み、前記浮動小数点データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された浮動小数点指数、符号及び仮数データを含み、前記方法は、
前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮された符号及び仮数データを処理して各復元サンプルの第１の符号ビット及び第１の複数の仮数ビットを生成するように、前記復元ステップを構成するステップと、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記複数の圧縮サンプルの前記圧縮された浮動小数点指数、符号及び仮数データを処理して各復元サンプルの第２の符号ビット、第２の複数の仮数ビット及び複数の浮動小数点指数ビットを生成するように、前記復元ステップを構成するステップと、
をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記復元ステップが、
前記圧縮モード・パラメータに従って、前記圧縮された符号及び仮数データに無損失復元操作又は損失復元操作を適用して、前記各復元サンプルの前記第１の符号ビット及び前記第１の複数の仮数ビットを前記整数データ形式に従って生成するステップ
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記復元ステップが、
前記圧縮された浮動小数点指数データ及び前記圧縮された符号及び仮数データを前記圧縮パケットから抽出するステップと、
前記圧縮された浮動小数点指数データに無損失復元操作を適用して、複数の復元された浮動小数点指数を形成するステップと、
前記圧縮モード・パラメータに従って、前記圧縮された符号及び仮数データに無損失復元操作又は損失圧縮操作を適用して、複数の復元された符号及び仮数を形成するステップと、
前記復元された浮動小数点指数を前記復元された符号及び仮数のうちの対応する１つと組み合わせて、前記復元サンプルを前記浮動小数点データ形式に従って形成するステップと
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラが、前記プロセッサのうちの１つ又はそれ以上から、それぞれの波形データを前記第２のメモリデバイスから読み出す要求を受信し、それぞれの波形データは、前記第２のメモリデバイス内に格納されたそれぞれの複数の圧縮サンプルにより表わされ、前記復元ステップが前記それぞれの複数の圧縮サンプルに適用されてそれぞれの複数の復元サンプルを形成することを特徴とする請求項１１に記載の方法。
【請求項１７】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記復元論理が、前記復元ステップを行うように前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項１１に記載の方法。
【請求項１８】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第１のメモリデバイス及び前記チップ外に配置された第２のメモリデバイスとを含むシステムにおいて、波形データを前記第２のメモリデバイスに格納するために圧縮する装置であって、
前記プロセッサ及び前記第１のメモリデバイスに結合され、整数データ形式又は浮動小数点データ形式で表わされた複数のサンプルを含む前記波形データを前記第２のメモリデバイスに書き込む要求を前記プロセッサから受信するように動作可能であり、前記要求に応答して、前記複数のサンプルを前記第１のメモリデバイスから取り出す、メモリ・コントローラと、
前記メモリ・コントローラに組み込まれ、前記第１のメモリデバイスから取り出された前記複数のサンプル及び１つ又はそれ以上の圧縮制御パラメータを前記プロセッサから受信するように結合され、前記１つ又はそれ以上の圧縮制御パラメータに従って前記複数のサンプルを圧縮して圧縮パケット用の複数の圧縮サンプルを形成するように動作可能であり、前記圧縮パケットを前記格納のために前記第２のメモリデバイスに与えるように結合された、圧縮論理と、
を含むことを特徴とする装置。
【請求項１９】
前記圧縮制御パラメータのうちの１つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記圧縮論理が、前記圧縮モード・パラメータに従って無損失圧縮モード又は損失圧縮モードで動作可能であることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記圧縮制御パラメータのうちの１つが、圧縮パケット当たりの所望のビット数又は所望の圧縮比であることを特徴とする請求項１８に記載の装置。
【請求項２１】
前記圧縮論理が、
１つ又はそれ以上の前記圧縮パケットについてパケット当たりの前記圧縮サンプル内のビット数を計算する論理と、
前記パケット当たりの前記圧縮サンプル内の前記ビット数を、前記圧縮パケット当たりの所望のビット数と比較して、フィードバック・パラメータを定める論理と、
前記フィードバック・パラメータに従って圧縮操作を適合させる論理と、
をさらに含むことを特徴とする請求項２０に記載の装置。
【請求項２２】
前記圧縮制御パラメータのうちの第１のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記サンプルのデータ型パラメータであり、前記整数データ形式の場合、各入力サンプルは、第１の符号ビットと第１の複数の仮数ビットとで構成され、前記浮動小数点データ形式の場合、各サンプルは、第２の符号ビットと、第２の複数の仮数ビットと、複数の浮動小数点指数ビットとで構成されており、前記圧縮論理が、
それぞれのサンプルの符号ビット及び仮数ビットを圧縮する第１の論理と、
それぞれのサンプルの浮動小数点指数ビットを圧縮する第２の論理と、
前記データ型パラメータが前記整数データ形式を指示する場合に、各サンプルの前記第１の符号ビット及び前記第１の複数の仮数ビットを前記第１の論理に与える論理と、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、各サンプルの前記第２の符号ビット及び前記第２の複数の仮数ビットを前記第１の論理に与え、かつ前記複数の浮動小数点指数ビットを前記第２の論理に与える論理と、
をさらに含むことを特徴とする請求項１８に記載の装置。
【請求項２３】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示し、前記第１の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であることを特徴とする請求項２２に記載の装置。
【請求項２４】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示し、前記第１の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であり、前記第２の論理が、前記無損失圧縮モードで動作可能であることを特徴とする請求項２２に記載の装置。
【請求項２５】
前記圧縮パケットが、ヘッダ部とペイロード部とをさらに含み、前記圧縮論理が、
前記圧縮制御パラメータのうちの少なくとも１つを前記ヘッダ部に与える論理と、
前記複数の圧縮サンプルを前記ペイロード部に与える論理と、
をさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２６】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラは、前記プロセッサのうちの１つ又はそれ以上に結合され、それぞれのプロセッサからそれぞれの波形データを前記第２のメモリデバイスに書き込む要求を受信するようになっており、前記圧縮論理が、それぞれの複数のサンプルに適用されてそれぞれの複数の圧縮サンプルを生成するようになっていることを特徴とする請求項１８に記載の装置。
【請求項２７】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記圧縮論理が、前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項１８に記載の装置。
【請求項２８】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第１のメモリデバイス及び前記チップ外に配置された第２のメモリデバイスとを含むシステムにおいて、前記第２のメモリデバイスから取り出された波形データを復元するための装置であって、
前記プロセッサ及び前記第１のメモリデバイスに結合され、前記第２のメモリから前記波形データを読み出す要求を前記プロセッサから受信するように動作可能であり、前記波形データは、前記第２のメモリデバイス内に格納された複数の圧縮サンプルにより表わされ、前記複数の圧縮サンプル及び１つ又はそれ以上の圧縮制御パラメータは、圧縮パケット内に収容されており、前記要求に応答して、前記第２のメモリデバイスから前記圧縮パケットを取り出すように前記第２のメモリデバイスに結合された、メモリ・コントローラと、
前記メモリ・コントローラに組み込まれ、前記第２のメモリデバイスから取り出された前記圧縮パケットを受信するように結合され、前記１つ又はそれ以上の圧縮制御パラメータに従って前記複数の圧縮サンプルを復元して、前記波形データを表わす複数の復元サンプルを形成するように動作可能であり、前記複数の復元サンプルを与えるように結合され、前記第１のメモリデバイスが前記プロセッサによるアクセスのために前記複数の復元サンプルを格納する、復元論理と、
を含むことを特徴とする装置。
【請求項２９】
前記圧縮制御パラメータのうちの１つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記復元論理が、前記圧縮モード・パラメータに従って無損失復元操作又は損失復元操作を適用するように動作可能であることを特徴とする請求項２８に記載の装置。
【請求項３０】
前記圧縮制御パラメータのうちの第１のものが、整数データ形式又は浮動小数点データ形式を指示する、前記圧縮サンプルのデータ型パラメータであり、前記整数データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された符号及び仮数データを含み、前記浮動小数点データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された浮動小数点指数、符号及び仮数データを含み、前記圧縮論理が、
それぞれの圧縮サンプルの圧縮された符号及び仮数データを復元して、復元された符号及び仮数を形成する、第１の論理と、
それぞれの圧縮サンプルの圧縮された浮動小数点指数データを復元して、復元された浮動小数点指数を形成する、第２の論理と、
前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮パケットの前記圧縮された符号及び仮数データを前記第１の論理に与える論理と、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記圧縮パケットの前記圧縮された符号及び仮数データを前記第１の論理に与え、かつ前記圧縮パケットの前記圧縮された浮動小数点指数データを前記第２の論理に与える論理と、
をさらに含むことを特徴とする請求項２８に記載の装置。
【請求項３１】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記第１の論理が、前記圧縮モード・パラメータに従って、無損失復元操作又は損失復元操作を適用するように動作可能であることを特徴とする請求項３０に記載の装置。
【請求項３２】
前記圧縮制御パラメータのうちの第２のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記第１の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であり、前記第２の論理が、前記無損失圧縮モードで動作可能であり、前記圧縮論理が、
前記復元された浮動小数点指数を前記復元された符号及び仮数のうちの対応する１つと組み合わせて、前記復元サンプルを前記浮動小数点データ形式に従って形成する論理
をさらに含むことを特徴とする請求項３０に記載の装置。
【請求項３３】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラは、前記プロセッサのうちの１つ又はそれ以上に結合され、それぞれの波形データを前記第２のメモリデバイスから読み出す要求をそれぞれの前記プロセッサから受信するようになっており、前記それぞれの波形データは、前記第２のメモリデバイス内に格納されたそれぞれの複数の圧縮サンプルにより表わされ、前記復元論理が、前記それぞれの複数の圧縮サンプルに適用されてそれぞれの複数の復元サンプルを形成するようになっていることを特徴とする請求項２８に記載の装置。
【請求項３４】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記復元論理が、前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項２８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重コア処理アーキテクチャにおける、コンピューティング・コア間のデータ転送のため及びメモリへのデータ書き込みのための波形データの圧縮と、後でコンピューティング・コアにおいてデータを受信するとき又はデータ読み出しのときの復元と、特に整数及び浮動小数点の両方の数値データ型の圧縮に関する。本発明は、全てのデータ型に対して、無損失圧縮モード、固定レート圧縮モード又は固定品質圧縮モードの選択をサポートする。
【背景技術】
【０００２】
波形データ処理アプリケーションにおいて、アプリケーション特有の方式で波形データ値を変換するために、マイクロ・プロセッサの中央演算処理装置（ＣＰＵ）又はその他の信号処理ファブリックは、格納されたプログラムの制下で波形データ値に対して算術演算及び論理演算を行う。入力、中間及び出力波形データ値は、格納部、メモリ又は入力デバイスから取り込まれ、処理され、そして格納部、メモリ又は出力デバイスに与えられる。波形データは、整数及び浮動小数点方式の数値データ型で表わすことができる。そのような波形データ処理アプリケーションの例として、これらに限られないが以下のものが挙げられる。即ち、
携帯電話における移動体電話信号の送受信、
携帯用音声再生装置の音声録音及び再生、
ＤＶＤからの圧縮映像の取り込み、圧縮映像の復元、及び表示装置への圧縮映像の送信、
ボイス・レコーダにおけるデジタル化された話し言葉の録音及び再生、及び
化学的、分子的、電気的、又は生物学的プロセスのシミュレーション。
【０００３】
波形データ処理産業は、幅広い範囲の波形データ処理エンジン及び波形データ記憶装置を提供する膨大な数の製造業者で構成されている。波形データ処理エンジンは、ほとんどの場合、ＭＰＹ及びＭＡＣのような専用アセンブリ言語命令を用いた積和（ＭＡＣ）演算をサポートするデジタル信号プロセッサ（ＤＳＰ）動作可能ＣＰＵを用いて実装される。波形処理アプリケーションのためのＭＰＹ及びＭＡＣ命令を有するＣＰＵを提供する会社としては、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｐｅｎｔｉｕｍ、Ｎｅｈａｌｅｍ、Ｉｔａｎｉｕｍ、Ｌａｒｒａｂｅｅ及びその他のプロセッサを含む、ｘ８６命令セットのプロセッサのファミリー）、Ｎｖｉｄｉａグラフィック処理ユニット（ＧＰＵ）、ｘ８６互換ＣＰＵのＡｄｖａｎｃｅ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ）ファミリー、ＡＭＤ／ＡＴＩ  ＧＰＵ、Ｔｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ（ＴＭＳ３２０  ＤＳＰファミリー）、Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ（Ｂｌａｃｋｆｉｎ、ＴｉｇｅｒＳｈａｒｃ、ＳＨＡＲＣ及びＡＤＳＰ−２１ｘｘファミリー）、Ｍｏｔｏｒｏｌａ（ＰｏｗｅｒＰＣ及び５６ｘｘｘファミリー）、ＡＲＭ（Ｃｏｒｔｅｘ、ＡＲＭ７、ＡＲＭ９、ＡＲＭ１０及びＡＲＭ１１ファミリー）、ＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｙ（Ｒ２０００からＲ１６０００、ＭＩＰＳ１６、ＭＩＰＳ３２、ＭＩＰＳ６４及びＭＩＰＳ  ＤＳＰファミリー）、Ｍｉｃｒｏｃｈｉｐ（ｄｓＰＩＣファミリー）、ＩＢＭ（ＰｏｗｅｒＰＣファミリー）、及びその他、多数が挙げられる。波形データ処理アプリケーションは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）内の論理素子、算術素子、及び記憶素子のプログラム可能なファブリックを用いて実装することもできる。波形データ処理アプリケーションに用いられるＦＰＧＡを提供する会社としては、Ａｌｔｅｒａ（Ｃｙｃｌｏｎｅ、Ａｒｒｉａ及びＳｔｒaｔｉｘファミリー）、Ｘｉｌｉｎｘ（Ｓｐａｒｔａｎ及びＶｉｒｔｅｘファミリー）、Ａｃｔｅｌ（Ａｘｃｅｌｅｒａｔｏｒ及びＰｒｏＡＳＩＣファミリー）、Ｌａｔｔｉｃｅ（ＸＰ、ＥＣＰ、及びＳＣファミリー）、及びその他、多数が挙げられる。波形データ処理アプリケーションは、特定の波形データ処理操作を行うように設計された特定用途向け集積回路（ＡＳＩＣ）に含まれている場合もある。ＡＳＩＣベンダとしては、ＴＳＭＣ、ＵＭＣ、ＩＢＭ、ＬＳＩ  Ｌｏｇｉｃ及びその他、多数が挙げられる。
【０００４】
ＤＳＰ、ＦＰＧＡ、ＡＳＩＣ及びメモリという市場区分は全て、半導体産業の下位区分である。「メモリ」及び「格納部」という用語は、以下の説明において、波形データ処理アプリケーションで用いられる整数又は浮動小数点方式のサンプルデータ値を一時的又は恒久的に格納するデバイス及びサブシステムについて、交換可能に用いられる。波形データのメモリは、以下の半導体カテゴリ、即ち、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、動的ランダム・アクセス・メモリ（ＤＲＡＭ）、２倍速又は４倍速データ転送速度ランダム・アクセス・メモリ（ＤＤＲ及びＱＤＲ）、フラッシュ・メモリ、ソリッド・ステート・ドライブ（ＳＳＤ）、フラッシュ・ドライブ、ディスク・ドライブ、強磁性ランダム・アクセス・メモリ（ＦＲＡＭ）、キャッシュ・メモリ、及び波形データを格納にするのに用いられるその他の任意の将来的な半導体メモリ、を含むことができる。半導体メモリ又は記憶装置を製造する会社としては、ＳＲＡＭ製造業者のＣｙｐｒｅｓｓ、Ｄａｌｌａｓ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ、Ｈｏｎｅｙｗｅｌｌ、Ｈｙｎｉｘ、ＩＤＴ、Ｍｉｃｒｏｎ、三菱、ＮＥＣ、Ｒｅｎｃｅｓａｓ、シャープ、ソニー、東芝、ＵＴＭＣ／Ａｅｒｏｆｌｅｘ、Ｗｈｉｔｅ  Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｓｉｇｎ、及びその他、ＤＲＡＭ製造業者のＳａｍｓｕｎｇ、Ｈｙｎｉｘ、Ｍｉｃｒｏｎ、Ｅｌｐｉｄａ、Ｎａｎｙａ、Ｑｉｍｏｎｄａ、ＰｒｏＭＯＳ、Ｐｏｗｅｒｃｈｉｐ及びその他、フラッシュ・メモリ製造業者のＳａｍｓｕｎｇ、東芝、Ｉｎｔｅｌ、ＳＴ  Ｍｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ、Ｒｅｎｅｓａｓ、Ｈｙｎｉｘ及びその他、ＦＲＡＭ製造業者の富士通、Ｒａｍｔｒｏｎ及びＳａｍｓｕｎｇが挙げられる。
【０００５】
本説明において、「波形データ処理アプリケーション」は、サンプルデータ波形に対して数学的演算及び／又は論理演算を行うアプリケーションを含む。サンプルデータ波形は、多くの場合（これらに限定されないが）、話し言葉、音声、画像、映像又はその他のセンサ出力信号といった実世界のアナログ信号をアナログ−デジタル変換器（ＡＤＣ）を用いてデジタル化することにより得られる。サンプルデータ信号はまた、シミュレートすることもでき、そして、アナログの話し言葉、音声、画像又は映像信号を生成するために、直接、又は付加的な波形データ処理操作の後で、デジタル−アナログ変換器（ＤＡＣ）に供給することができる。この説明において、「サンプルデータ波形」は、入力サンプルデータ波形又は中間サンプルデータ波形に対して行われた数学的演算及び／又は論理演算により生成された中間及び／又は最終サンプルデータ波形も含む。
【０００６】
波形データは、２つの主要な数値形式、即ち整数形式及び浮動小数点形式で優先的に格納される。整数形式は、符号付き、符号なし、又は符号及び絶対値表現を用いて波形データを表わし、この場合、サンプルデータ値の幅は、典型的には固定されている。波形データ処理に適した一般的な整数形式は、それぞれ｛−１２８，＋１２７｝及び｛−３２７６８，＋３２７６８｝の範囲の８ビット及び１６ビットの符号付き整数、並びにそれぞれ｛０，２５５｝及び｛０，６５５３５｝の範囲の８ビット及び１６ビットの符号なし整数である。代替的に、波形データは、３２ビット、６４ビット、及び１２８ビットの浮動小数点形式で表わすことができる。最も一般的な浮動小数点形式は、浮動小数点値に関するＩＥＥＥ−７５４規格に準拠する。ＩＥＥＥ−７５４規格は、初めに１９８５年に発行され、その後２００８年に改訂された。ＩＥＥＥ７５４規格は、１符号ビット、８指数ビット及び２３仮数ビットを用いて、３２ビット浮動小数点値（「単精度（ｆｌｏａｔ）」又は「単精度ｆｌｏａｔ」とも呼ばれる）を表わす。ＩＥＥＥ−７５４規格は、１符号ビット、１１指数ビット及び５２仮数ビットを用いて、６４ビット浮動小数点値（「倍精度（ｄｏｕｂｌｅ）」又は「倍精度ｆｌｏａｔ」とも呼ばれる）を表す。１６ビット「半精度浮動小数点」のようなその他の浮動小数点表示も存在するが、専用の浮動小数点回路を有するＣＰＵ又はＤＳＰプロセッサにおいては通常、単精度及び倍精度に対する操作がサポートされている。そのような回路は、多くの場合、浮動小数点ユニット又はＦＰＵと呼ばれる。多くのアプリケーションにおいて、浮動小数点計算は、浮動小数点データが倍精度形式で表される場合よりも単精度形式で表わされる場合の方が、はるかに高速であり、消費電力もはるかに少ない。
【０００７】
波形データ処理アプリケーションに用いられる記憶装置は、様々なアクセス時間を示す。アクセス時間が１０ナノ秒未満の最も高速の記憶素子は、通常、プロセッサ・コアと同じ半導体ダイ又は集積回路（ＩＣ）上に製作することができるＳＲＡＭである。このようなＳＲＡＭ格納部は、キャッシュ・メモリ、オンチップ・メモリ又はレジスタ・ファイルと呼ばれる。最も低速の半導体記憶素子は、典型的にはフラッシュ・メモリであり、個々のサンプル値データ要素へのアクセス時間は１００ナノ秒から１マイクロ秒の範囲である。フラッシュ・メモリの書き込みは、フラッシュ・メモリの読み出しより遅い。メモリ技術は、一般に階層的に配置され、最速の記憶素子がＣＰＵ又はＤＳＰ処理ファブリックの最も近くに配置され、より低速の記憶素子が、より高速の記憶素子の周りに層状に配置される。「オンチップ」及び「オフチップ」という用語は、ＣＰＵ又は処理ファブリックに対する格納部の近さを特徴付けるために用いられる形容詞である。オンチップ格納部は、同じ半導体基板上にあるか、又はＣＰＵ若しくは処理ファブリックと同じマルチ・チップ・モジュール（ＭＣＭ）内にパッケージされる。オフチップ格納部は、ＣＰＵ又は処理ファブリックとは別の集積回路（ＩＣ）上に配置される。その他の低速の記憶素子には、ディスク・ドライブ及びテープ・ドライブが含まれ、これらのアクセス時間は数十ミリ秒であり、データ転送速度は典型的に１００ＭＢ／秒又はそれ以下である。
【０００８】
波形データ処理アプリケーションに用いられる層状階層のメモリを想定すると、波形データを処理するアプリケーションが常に目標とするところは、メモリ内に格納されたサンプルデータに対するＣＰＵ又は信号処理ファブリックのアクセス時間を改善することである。第２の目標は、波形データを求めるＣＰＵ又は信号処理ファブリックの要求と、そのＣＰＵ又は信号処理ファブリックに直接アクセス可能なメモリ（典型的にはキャッシュ又はレジスタ・ファイル）内にそのデータが出現するまでの間の待ち時間を減らすことである。第３の目標は、波形データ・プロセッサ・コアをそのメモリ階層に接続するファブリックの複雑さを低減することである。
【０００９】
波形処理アプリケーションには、命令及びデータの両方を圧縮及び復元するための技術がある。多くの圧縮又はコード化技術は、１つの波形データ形式のデータのみ、例えば整数データ又は浮動小数点データのみを受け入れることができるが、両方を受け入れることはできない。同様に、多くの圧縮又はコード化技術は、１つの圧縮モードのみ、例えば無損失モード又は損失モードのみを提供するが、両方は提供しない。多くの圧縮又はコード化技術は、話し言葉、音声、画像又は映像といった特定のクラスの波形データにのみ適用可能であり、その他のクラスの波形データに対しては十分な圧縮をもたらさない。多くの圧縮又はコード化技術は、ＳＲＡＭ、ＤＲＡＭ又はフラッシュ用のメモリ・コントローラで典型的に見られる（アドレス，データ）の対に対して動作する。
【００１０】
マルチ・コア波形処理システムにおいては、多くの種類の波形データが異なるデータ形式を用いて表わされることがある。特定のアプリケーションのためのプログラムは、典型的にはデータ形式を定義する。マルチ・コア処理アーキテクチャの目的は、一般に大容量データに対して、計算集約的操作を行うことである。計算集約的アプリケーションにおける大容量データの高速転送を可能にするために、コンピューティング・コア間及びコアとメモリとの間の伝送のための波形データの圧縮が必要とされる。
【００１１】
本説明では、集積回路（ＩＣ）とチップという用語を、１つ又はそれ以上の電子ダイを収容する、電子的又は光学的な接続部（ピン、リード、ポート等）を備えた単一のパッケージを指すために相互交換可能に用いる。電子ダイ又は半導体ダイは、集積回路及び半導体デバイスを含む半導体基板である。ダイは、単一のコア又は複数のコアを有することができる。コアは、任意のタイプのデータ・プロセッサ用の処理ユニットとすることができる。例えば、プロセッサ・コアは、中央演算処理ユニット（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ)、グラフィック処理ユニット（ＧＰＵ）、マイクロ・コントローラ・ユニット（ＭＣＵ）、通信プロセッサ又は任意のタイプの処理ユニットとすることができる。単一のダイ上の個々のコアは、同じタイプの処理ユニットの場合もあり、又はアプリケーションに適した異なるタイプの処理ユニットの組み合わせの場合もある。このような処理ユニットは（これらに限られないが）、メモリ・コントローラ、直接メモリアクセス（ＤＭＡ）コントローラ、ネットワーク・コントローラ、キャッシュ・コントローラ、及び浮動小数点ユニット（ＦＰＵ）を含むことができる。このような処理ユニットは、同じダイ上に１つ又はそれ以上のプロセッサ・コアと共に組み込まれる場合もあり、又はプロセッサ・コアとは別のダイ上に置かれる場合もある。
【００１２】
本記述において、圧縮に適用される「実時間」は、デジタル信号が、デジタル信号のサンプリングレートと少なくとも同じ速さのレートで圧縮されることを意味する。属性「実時間」はまた、デジタル信号の処理、転送及び格納の速度を、元の信号収集速度すなわちサンプリングレートと比較して記述することもできる。サンプリングレートは、ＡＤＣ又はＤＡＣが、デジタル信号とアナログ信号との間での変換中にサンプルを形成するレートである。非圧縮でサンプリングされた又はデジタルの信号のビットレートは、サンプル毎のビット数にサンプリングレートを乗じたものである。圧縮レートは、圧縮サンプルのビットレートに対する元の信号サンプルのビットレートの比率である。実時間システムの機能をシミュレートする波形データ処理アプリケーションにおいて、波形データ値のシーケンスに対して行われる操作のシーケンスは、実時間処理シーケンスと同一のものとすることができるが、処理が行われる速度は、「実時間」よりも低速とすることができる。本説明は、シミュレートされた波形データ処理アプリケーションのようなアプリケーションに言及する。
【００１３】
本説明は、種々の通信ファブリックに言及する。通信ファブリックは、２つ又はそれ以上の処理コアが互いに通信することを可能にする２つのコア間の任意の接続部である。通信ファブリックの例として、バス、ネットワーク、印刷回路基板上のトレース、送信機及び受信機を含む無線リンク、スイッチ、ネットワーク・インターフェース・カード（ＮＩＣ）、ルータ、ネットワーク・オン・チップ、又は２つのプロセッサ・コア間のその他の任意の有線又は無線接続部が挙げられる。
【００１４】
本説明は、無損失圧縮及び損失圧縮に言及する。無損失圧縮において、復元サンプルは、元のサンプルと同一の値を有する。幾つかのアプリケーションにおいて、損失圧縮は、必然的にビットレートの十分な低減をもたらす場合がある。損失圧縮において、復元サンプルは、元のサンプルと似ているが同一ではない。損失圧縮は、圧縮サンプルのビットレートと復元サンプルにおける歪みとの間でトレードオフを生じさせる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許第７，００９，５３３号明細書
【特許文献２】米国特許第５，８３９，１００号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１６】
本発明の実施形態は、上記の従来の問題を考慮して作成されたものである。本発明の目的は、以下を含む。
（Ａ）マルチ・コア処理システム内のプロセッサ・コア間での転送のための、２つ又はそれ以上のプロセッサ・コアにおける波形データの圧縮。
（Ｂ）プロセッサ・コアと波形データ・メモリ階層の要素との間での転送のための、プロセッサ・コア又はＣＰＵにおける波形データの圧縮。
（Ｃ）入力コントローラから複数のプロセッサ・コアへの分散のための、波形データの圧縮。
（Ｄ）圧縮データを出力コントローラに転送するための、１つ又はそれ以上のプロセッサ・コアにおける処理波形データの圧縮。
（Ｅ）受信側ＣＰＵにおける、送信側ＣＰＵ、入力コントローラ又はメモリから受信した圧縮データの復元。
（Ｆ）処理波形データを再現するための、出力コントローラにおける圧縮データの復元。
（Ｇ）マルチ・コア処理環境における、整数及び浮動小数点データ形式の波形データの構成可能な圧縮及び復元。
（Ｈ）単一プロセッサ・コアにおける、メモリからの転送又は取り込みのための整数及び浮動小数点データ形式の波形データの構成可能な圧縮及び復元。
（Ｉ）整数及び浮動小数点データ形式を圧縮するための動作モードを有する、単一の構成可能な圧縮器。
（Ｊ）予め圧縮されたデータから整数及び浮動小数点データを再現するための動作モードを有する、単一の構成可能な復元器。
（Ｋ）パケット・ベースの通信インターフェースを介した圧縮波形データの伝送のために、データ・パケットの圧縮ペイロードを形成する圧縮器。
（Ｌ）パケット・ベースの通信インターフェースから圧縮ペイロード・データを取り込み、対応する波形データを再現する復元器。
（Ｍ）ユーザ制御下又は自動選択の下で、無損失又は損失圧縮を適用するように圧縮器を構成すること。
（Ｎ）制御パラメータに従って、無損失又は損失復元を適用するように復元器を構成すること。
（Ｏ）固定圧縮ビットレートを有する圧縮データを生成するように圧縮操作を適合すること。
（Ｐ）固定品質基準を有する圧縮データを生成するように圧縮操作を適合すること。
【課題を解決するための手段】
【００１７】
波形データの圧縮は、マルチ・コア処理システムのリソースを節約することにより、幾つもの利点を提供する。マルチ・コア処理システムにおいては、入力、中間及び出力波形データは、多くの場合、コア間で共有され、交換される。圧縮は、そのような波形データを２つ又はそれ以上のコア間で交換するのに必要な待ち時間及び帯域幅を低減する。圧縮は、波形データをプロセッサ・コア間で伝送するのに必要な電力及び領域を低減する。さらなる利点は、複数のプロセッサが波形データを交換できるようにするために必要なピンの数及び印刷回路基板のトレース領域を減らすことである。圧縮は、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減し、それによりメモリの有効容量を増大させる。波形データの圧縮は、波形データをＣＰＵと波形データ・メモリ階層の要素との間で転送するときのアクセス時間及び待ち時間の両方を短くする。要するに、本発明の利点として、単一又はマルチ・コア処理環境において波形データを交換する圧縮送信機及び復元受信機の複雑度、費用及び電力を削減することが挙げられる。
【００１８】
波形データは、複数のプロセッサ・コア上で並列して実行される複数のスレッドが共同で用いることができる。実行を続けるために波形データの一部を必要とする１つのコア上のスレッドが、別のコア上のスレッドがデータの処理を完了させて、これを待機スレッドに送るのを待機しているときには、複数のスレッドが強制的に待機モードに入れられることがある。これらの待機モードは、共通の波形データに対して並列に動作する複数のスレッドを実行するマルチ・プロセッサ・システムの場合の重大な性能のボトルネックである。処理コア間での共通の波形データの通信に必要とされる時間、及び共通波形データがマルチ・プロセッサ・システムの入力及び出力リソースと通信するのに必要な時間が、この重大な性能のボトルネックに関与する。
【図面の簡単な説明】
【００１９】
【図１ａ】波形データの１つのクラスを示す。
【図１ｂ】波形データの１つのクラスを示す。
【図１ｃ】波形データの１つのクラスを示す。
【図２】波形データ処理アプリケーションにおける共通的な要素を示す。
【図３】２つの処理要素間の双方向のパケット・ベースの波形データ交換パイプラインを示す。
【図４】データの交換に用いられるパケット内の典型的なフィールドを示す。
【図５】業界規格に準拠したパケット・ベースのプロトコルの表を含む。
【図６ａ】様々な半導体及びＣＰＵベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図６ｂ】様々な半導体及びＣＰＵベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図６ｃ】様々な半導体及びＣＰＵベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図６ｄ】様々な半導体及びＣＰＵベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図６ｅ】様々な半導体及びＣＰＵベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図７ａ】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ（ＮｏＣ）ファブリックを示す。
【図７ｂ】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ（ＮｏＣ）ファブリックを示す。
【図７ｃ】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ（ＮｏＣ）ファブリックを示す。
【図８】マルチ・コア構成、コア間距離、及びメモリタイプを互いに関連付ける表を含む。
【図９】共同して、波形データ処理アプリケーションにおいて複数のコア間で共有される波形データを圧縮するのに適した、本発明の主要なシステムコンポーネントを示す。
【図１０】整数波形データの圧縮に適した圧縮器を示す。
【図１１】圧縮された整数波形データの復元に適した復元器を示す。
【図１２】浮動小数点波形データの圧縮に適した圧縮器を示す。
【図１３】圧縮された浮動小数点波形データの復元に適した復元器を示す。
【図１４ａ】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図１４ｂ】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図１４ｃ】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図１５】入力データをプロセッサ・コアに供給する例である。
【図１６】複数のプロセッサ・コア間でデータを通信する例である。
【図１７】プロセッサ・コアから出力コントローラへの例示的なデータ転送である。
【図１８】オフチップ・メモリ・アクセスのために圧縮及び復元を用いた、改善されたＤＭＡ、入力／出力又はメモリ用のコントローラを示す。
【図１９】データ転送時間の例を圧縮ありの場合及び圧縮なしの場合とで比較する表を含む。
【図２０】マルチ・パケット・データセットの入力／出力時間の削減に伴う処理時間の削減を示す。
【発明を実施するための形態】
【００２０】
本発明は、マルチ・コア処理環境における波形データの構成可能な圧縮及び復元に関する。マルチ・コア処理システムにおいて、各コアは、波形データのサブセットの別々の計算を行うことができる。入力、中間及び出力波形データを、コアとメモリ階層との間で共有し、交換することができる。本発明は、２つ又はそれ以上のコア間でそのような波形データを交換するのに必要な待ち時間及び帯域幅の両方を低減させる。本発明はまた、メモリ又は格納部での書き込み中に波形データを圧縮し、メモリ又は格納部での読み出し中に波形データを復元することにより、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減するのにも適している。
【００２１】
図１は、３つの波形データの例を示す。図１ａは、レーダ又は超音波アプリケーションで用いられる信号パルスに典型的なパルス波形のグラフを示す。図１ａの波形データは、ｙ軸上の値の範囲で示されるように、｛−１２８，＋１２７｝の範囲の８ビットの符号付き整数値として処理されている。図１ａのｘ軸は、およそ３５００サンプルが波形データパルスを構成することを示す。図１ａは、一方の軸が時間と共に変化する信号特性を表わし、二つめの軸が典型的には時間次元（時間又はサンプルカウント）を表わす、２次元波形データの一般的なクラスの具体例である。２次元波形データ・グラフにより表される個々の波形データ特性は、アプリケーション毎に異なる。
【００２２】
図１ｂは、科学的又は数学的アプリケーション用に計算された曲面の３次元グラフを示す。ｚ軸は、波形データ値が浮動小数点形式であり、｛−２．０，＋２．０｝の範囲内にあることを示す。ｘ軸及びｙ軸の値は、それぞれ、｛−１，＋１｝及び｛−２，＋２｝の範囲内にある。図１ｂは、縦軸が時間と共に変化する信号特性を表わし、第２及び第３の軸が２つのその他の次元（おそらくは２次元グリッド上の空間的位置）を表わす、３次元波形データの一般的なクラスの具体例である。３次元波形データのグラフにより表される個々の波形データ特性は、アプリケーション毎に異なる。
【００２３】
図１ｃは、化学的シミュレーションから得られる３次元分子のプロットである。図１ｃは軸を含んでいないが、図示された分子の寸法及び立体配置は、おそらくはシミュレーションにより生成された内部浮動小数点波形データの視覚化である。図１ｃは、データを３次元物体として表わすことができる３次元波形データの一般的なクラスの具体例である。３次元物体により表される個々の波形データ特性は、アプリケーション毎に異なる。
【００２４】
図１ａ、図１ｂ及び図１ｃは、波形データの広範なクラスの例である。波形データに共通の特性は、これらに限定されるものではないが、以下の事柄を含むことができる。
１．データ値は、整数形式又は浮動小数点形式で表わされる。
２．データ値は、サンプリング・プロセス又はシミュレーションに基づく特定のシーケンスで生じる。
３．データ値は、隣接するデータ値と特定の関係を有する。
４．加算、減算、乗算、除算又は加重平均などの数学的演算は、シーケンス内の隣接するデータ値に対して行われることが多い。
５．隣接するデータ値は、互いに相関することが多い。
【００２５】
図２は、波形データ処理のための処理環境を示す。実世界アナログ信号は、センサ又は検出器によりもたらされるものとすることができる。アナログ−デジタル変換器（ＡＤＣ）１２０は、実世界アナログ信号１１０をデジタル化し、デジタル化波形データ１２５ａを生成する。数値プロセッサ１４０は、単一コア又は多重コア（マルチ・コア）を含むことができる。数値プロセッサ１４０は、デジタル化波形データ１２５ａに対して数学的演算及び／又は論理演算を行い、随意の中間デジタル結果１５０及びデジタル処理結果１６０ａを生成する。特定のアプリケーションにおいて、数値プロセッサ１４０は、デジタル化波形データ１２５ａの代わりに又はこれに加えて、シミュレートされたデジタル波形データ１２５ｂを実世界信号シミュレータ１３０から受信する。特定のアプリケーションにおいて、デジタル化された処理結果１６０ｂは、デジタル−アナログ変換器（ＤＡＣ）１６３に適用され、実世界アナログ出力１６５を生成する。多くのアプリケーションにおいて、デジタル化波形データ１２５ａ、シミュレートされたデジタル波形データ１２５ｂ、中間デジタル結果１５０、デジタル処理結果１６０ａ及びデジタル化された処理結果１６０ｂは、数値プロセッサ１４０へと入るとき又はそこから出るときの帯域幅ボトルネックを経る。本発明の実施形態は、波形データに対する帯域幅ボトルネックを低減する。
【００２６】
図３は、２つの直接接続されたプロセッサ・コア間の典型的なコア−コア間インターフェースを示す。コア２００ａとコア２００ｂとは、双方向全二重受信（Ｒｘ）−送信（Ｔｘ）サブシステムを通じて通信する。コア２００ａは、送信インターフェース２１０ａ及びＴｘＦＩＦＯ又はメモリ・バッファ２２０ａを用いて、コア２００ｂに情報を送信する。パケット・ベースの通信の場合、送信チャネル２３０ａは、典型的には最大ペイロード・サイズ（パケット容量）を有するパケットを搬送する。送信インターフェース２１０ａは、この最大ペイロード・サイズより大きいペイロードを、パケット・プロトコルの最大ペイロード・サイズに適合した複数の送信パケット２４０ａに分割する。図５（後述する）は、一般的なパケット・ベースの通信プロトコルに関して典型的なパケット・ペイロード・サイズの一覧を示す。異なる優先度を有するパケットの送信をサポートするために、ＴｘＦＩＦＯ又はメモリ・バッファ２２０ａは、複数のＦＩＦＯ又はメモリ・バッファと、複数のＦＩＦＯ又はメモリ・バッファ２２０ａから所与の瞬間において優先度が最も高いパケットを送信チャネル２３０ａを介して送るメモリ・コントローラ（図示せず）とを含むことができる。コア２００ｂは、ＲｘＦＩＦＯ又はメモリ・バッファ２５０ａ及びＲｘインターフェース２６０ａを用いて、送信チャネル２３０ａからパケットを受信する。ＲｘＦＩＦＯ又はメモリ・バッファ２６０ａは、異なる優先度のパケットを保持する受信パケットをバッファ内に一時的に格納する、ＴｘＦＩＦＯ又はメモリ・バッファ２２０ａに対応する複数のＦＩＦＯ又はメモリ・バッファを含むことができる。多重優先度コア−コア間インターフェースにより、パケット・プロトコルは、サービス品質（ＱｏＳ）、実時間、及び優先順位付けされた通信をサポートすることが可能になる。コア２００ｂは、Ｒｘインターフェース２６０ａにより、コア２００ａから新たに到着したパケットの可用性を通知され、ことによるとコア２００ａに対する随意的な割込（図示せず）が伴う。コア２００ｂは、Ｔｘインターフェース２１０ｂ、ＴｘＦＩＦＯ又はメモリ・バッファ２２０ｂ、送信チャネル２３０ｂ、送信パケット２４０ｂ、ＲｘＦＩＦＯ又はメモリ・インターフェース２５０ｂ及びＲｘインターフェース２６０を含む類似の通信チェーンを通じて、パケットをコア２００ａに送信する。唯一の違いは、パケット方向である（コア２００ａからコア２００ｂ、又はコア２００ｂからコア２００ａ）。図４は、典型的なパケット２４０のコンポーネントを示す。パケット・プロトコルは、通常、パケット・ヘッダ２４２で始まり、パケット・ペイロード２４４が続き、随意のパケット・トレイラ２４６で終わる。パケット・ヘッダ２４２は、特定のパケット・プロトコル又は規格により指定された必須フィールド及び随意フィールドの両方を収容する。必須パケット・フィールドは、通常、パケット開始又は同期インジケータと、パケットのソース（送信元）及び宛先（受信先）の識別子とを含む。随意のパケット・フィールドは、ペイロード・データ型（制御部又はデータ；パケットの優先度など）及びペイロード長を含むことができる。パケット２４０のデータを搬送する部分は、ペイロード部２４４又はデータ部と呼ばれる。パケット・プロトコル又は規格に応じて、パケット・ペイロード２４４は、不変の固定サイズ、ヘッダ２４２とトレイラ２４６との間でサイズが変化するペイロード（パケット・ヘッダ２４２内にパケット長インジケータを含まない）、又はサイズが変化し、その長さがパケット・ヘッダ２４２に含まれるペイロードを有することができる。ペイロードの内容は、パケット・プロトコル又は規格に応じて様々であるが、ほとんどのパケット・プロトコル又は規格は、バイト（８ビット）、ワード（１６ビット）、ロングワード（３２ビット）、及び浮動小数点（３２ビット又は６４ビット）の単位を許容する。ときとして、搬送されるパケット・ペイロードのデータ型は、パケット・プロトコルの下層には知られていないことがある。随意のパケット・トレイラ２４６は、受信されたパケット内の誤りの検出と可能な訂正とを補助する巡回冗長検査（ＣＲＣ）、又はパケット終了フィールドを含むことができる。
【００２７】
図５は、ヘッダ・フィールド及びペイロード・フィールドの両方を含む、通信プロトコルに関する種々のコンピュータ業界規格を比較する表である。規格は、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、Ｅｔｈｅｒｎｅｔ（その種々の形は通常、データ転送速度を含めて、１０ｂａｓｅＴ［１０Ｍｂｐｓ］、１００ｂａｓｅＴ［１００Ｍｂｐｓ］、１ＧｂａｓｅＴ又はＧｂＥ［１Ｇｂｐｓ］、１０ＧｂａｓｅＴ又は１０ＧｂＥ［１０Ｇｐｓ］のように呼ばれる）、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、ＱｕｉｃｋＰａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＱＰＩ）、Ｉｎｆｉｎｉｂａｎｄ及びＲａｐｉｄＩＯを含む。これらの規格は、パケット・ベースのプロトコルの例示であり、更なるプロトコルが将来的に開発され得る。図５に示されるように、パケット・ヘッダ長は、４バイトから４２バイトまで様々であり、一方、許容されるペイロード・サイズは、０バイトから４０９６バイトまで様々である。本発明の実施形態は、パケット・ペイロード内に収容される数値データ（整数及び／又は浮動小数点値）を圧縮する。
【００２８】
図６ａから図６ｅは、様々なベンダから出ているマルチ・プロセッサの構成を示す。図６の例は、２００９年の時点での商用マルチ・コア・プロセッサを例示するものであり、その他のアーキテクチャが将来的に開発され得る。図６ａは、Ｉｎｔｅｌ  Ｎｅｈａｌｅｍ  ＣＰＵのアーキテクチャを示す。Ｉｎｔｅｌ  Ｎｅｈａｌｅｍ  ＣＰＵは、１つのダイ上に４つのプロセッサ・コア４００ａ、４００ｂ、４００ｃ及び４００ｄを収容し、８ＭＢの容量を有する共有キャッシュ４０２を備える。プロセッサ・コア４００ａ〜４００ｄは、一対のＱＰＩインターフェース４０４を通じてその他のコンピュータ・システム周辺装置にアクセスする。ＱＰＩインターフェース４０４は、パケット・ベースの通信プロトコルを用いる。本明細書において説明される圧縮は、ＱＰＩインターフェース４０４に組み込むことができる。
【００２９】
図６ｂは、Ｎｖｉｄｉａ  ＧｅＦｏｒｃｅ  ８８００ＧＰＵのアーキテクチャを示す。Ｎｖｉｄｉａ  ＧｅＦｏｒｃｅ  ８８００ＧＰＵは、８つのマルチ・プロセッサ４１０ａ〜４１０ｈにグループ分けされる６４のプロセッサを含む。各マルチ・プロセッサは、８つのコアを含む。マルチ・プロセッサ４１０ａ〜４１０ｈは、入力値、中間結果及び出力値を格納し、かつそのような値をコア間で交換するために、分散型レベル１（Ｌ１）キャッシュ４１２及び分散型レベル２（Ｌ２）キャッシュ４１３を利用する。ＧｅＦｏｒｃｅ８８００は、ホストＣＰＵ４１４から入力データ値を受信し、出力データ値をホストＣＰＵ４１４へと送信する。本明細書において説明される圧縮は、データ・アセンブラのための、ホスト−ＧＰＵ通信及びＧＰＵ−ホスト通信のコントローラに組み込むことができる。
【００３０】
図６ｃは、ＡＭＤ／ＡＴＩマルチ・コアＧＰＵのアーキテクチャを示す。ＡＭＤ／ＡＴＩＧＰＵは、処理ユニット４２０ａ及び４２０ｂのような６４個のストリーム処理ユニット４２０を含む。ストリーム処理ユニット４２０は、読み出し／書き込みキャッシュ４２２及びストリーム出力バッファ４２４を共有する。本明細書において説明される圧縮は、読み出し／書き込みキャッシュ４２２を制御するストリームＩ／Ｏ通信コントローラに組み込むことができる。
【００３１】
図６ｄは、Ｉｎｔｅｌ  ＬａｒｒａｂｅｅＣＰＵのアーキテクチャを示す。Ｉｎｔｅｌ  ＬａｒｒａｂｅｅＣＰＵは、各パッケージが３２個のプロセッサ・コアを含む４つのＬａｒｒａｂｅｅプロセッサ・パッケージ４３０ａ、４３０ｂ、４３０ｃ及び４３０ｄを含む。Ｌａｒｒａｂｅｅプロセッサ・パッケージ４３０ａ、４３０ｂ、４３０ｃ及び４３０ｄは、複数の共通シリアル相互接続（ＣＳＩ）バス４３４を用いて相互接続される。各Ｌａｒｒａｂｅｅパッケージ４３０は、接続されたメモリ・サブシステム４３２へのアクセスを有する。本明細書において説明される圧縮は、ＣＳＩバス・ハードウェアに組み込むことができる。
【００３２】
図６ｅは、ＩＢＭ  Ｃｅｌｌブロードバンド・エンジン（ＣＢＥ）のアーキテクチャを示す。ＩＢＭ  Ｃｅｌｌブロードバンド・エンジンは、エレメント・インターコネクト・バス（ＥＩＢ）４４６を用いて通信する８つのシナジスティック・プロセッサ・エレメント（ＳＰＥ）４４０ａ〜４４０ｈを含む。パワーＰＣプロセッサ・エレメント（ＰＰＥ）は、ＥＩＢ４４６を介してＳＰＥ４４０ａから４４０ｈがアクセスすることができるＬ１キャッシュ４４２及びＬ２キャッシュ４４３を含む。ＩＢＭ  Ｃｅｌｌは、ＦｌｅｘＩＯ  ＢＩＣのようなバス・インターフェース・コントローラ（ＢＩＣ）４４４を用いて、バス４４７へのオフチップ・バス・アクセスを行う。メモリ・インターフェース・コントローラ（ＭＩＣ）４４５は、オフチップ・メモリ４４８へのデータ転送を制御する。本明細書で説明される圧縮は、ＥＩＢ４４６用コントローラ、ＭＩＣ４４５、及びＢＩＣ４４４に組み込むことができる。
【００３３】
図７は、３つの商用ネットワーク・オン・チップ（ＮｏＣ）相互接続の例を示す。ＮｏＣは、１つの半導体ダイ上の２つ又はそれ以上のプロセッサを相互接続するために用いられる。図７ａは、図６ｅで紹介されたＩＢＭ  Ｃｅｌｌブロードバンド・エンジンのＥＩＢ４４６を示す。８つのＳＰＥ４００ａ〜４００ｈは各々、ＥＩＢ４４６に取り付けられ、Ｌ１キャッシュ４４２、Ｌ２キャッシュ４４３及びＩ／Ｏインターフェース５０４も同様に取り付けられる。ＥＩＢ４４６は、図７ａに示されるように、４つの対向回転（ｃｏｕｎｔｅｒ−ｒｏｔａｔｉｎｇ）リングで構成された相互接続ファブリックを実装する。ＥＩＢは、ＩＢＭ  Ｃｅｌｌクロック・サイクル当たり９６バイトまで転送することが可能であり、Ｌ１キャッシュ４４２、Ｌ２キャッシュ４４３及びＩ／Ｏインターフェース５０４から読み出されたデータをプロセッサ４００に提供し、又はプロセッサ４００により提供されたデータをＬ１キャッシュ４４２、Ｌ２キャッシュ４４３及びＩ／Ｏインターフェース５０４にソーシングすることができる。Ｉ／Ｏインターフェース５０４は、オフチップのデータ転送のためのものであり、ＢＩＣ４４４（図６ｅ）を含む。本明細書において説明される圧縮は、ＥＩＢ４４６にアクセスするためのメモリ・コントローラ若しくはＩ／Ｏインターフェース５０４用のコントローラ、又はその両方に組み込むことができる。
【００３４】
図７ｂは、Ｉｎｔｅｌ  Ｎｅｈａｌｅｍ８−プロセッサ・コアのアーキテクチャを示す。８つのプロセッサ５１０ａ〜５１０ｈは、２つの対向回転リング５１６を通じて接続される。オフチップの読み出し及び書き込みは、４つのＱＰＩインターフェース５１４ａ〜５１４ｄを横断する。本明細書において説明される圧縮は、対向回転リング５１６へのアクセス用コントローラ、又はオフチップ・コンポーネントへのＱＩＰインターフェース５１４、又はその両方に組み込むことができる。組み込まれたメモリ・コントローラ（図示せず）は、スケーラブル・メモリ・インターフェースＳＭＩ０及びＳＭＩ１上でのオフチップ・メモリへの／からのデータ転送を制御する。
【００３５】
図７ｃは、Ｓｏｎｉｃｓ，Ｉｎｃによって開発されたＮｏＣファブリックを示す。ＳｏｎｉｃｓＭＸ  Ｓｍａｒｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ５２６は、ＣＰＵ５２０ａ、ＤＳＰ５２０ｂ、及びマルチ・メディア・エンジン（ＭＭＥ）５２０ｃがデータ交換することを可能にする。本明細書において説明される圧縮は、ＳｏｎｉｃｓＭＸ  Ｓｍａｒｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ５２６に組み入れることができる。
【００３６】
図８は、種々のマルチ・プロセッサ構成と、プロセッサ間距離と、その構成におけるプロセッサ間の通信を容易にする最も一般的に用いられるメモリ型式との表である。一般に、パケット・ベースのプロトコルを用いるデータ交換は、プロセッサ間の距離が大きくなるほど、実装されることが多い。同じ半導体ダイ上にあるか、又は同じマルチ・ダイ・パッケージ若しくはマルチ・チップ・モジュール（ＭＣＭ）内にある２つのプロセッサ間のデータ交換は、通常、共有Ｌ１キャッシュ、共有Ｌ２キャッシュ又はネットワーク・オン・チップ・インターフェースを用いて行われる。ダイ上又はチップ上のプロセッサは、通常、たかだか数ｍｍ単位で隔てられる。２つのプロセッサが、ｍｍ〜ｃｍ単位で隔てられた別個のチップに配置される場合は、プロセッサは、キャッシュ、ＦＩＦＯ又はＲＡＭを用いてデータ値を交換することができる。２００９年の時点では、ＱＰＩ、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、Ｉｎｆｉｎｉｂａｎｄ及びＣＳＩなどの高速ＩＣ相互接続を用いて、分散キャッシュを共有することができる。しかしながら、ｃｍ単位で隔てられたプロセッサ間でデータを交換するには、ＦＩＦＯ又はＲＡＭを用いる方が一般的である。プロセッサ間の距離がメートル（ｍ）又はキロメートル（ｋｍ）にまで増大した場合には、ほとんどの商用の相互接続部は、何らかの形態のパケット・ベースの交換を用いる。パケット・ベースの通信は、ＱＰＩ及びＨｙｐｅｒＴｒａｎｓｐｏｒｔプロトコルが１ｍｍ未満で隔てられたプロセッサ間のキャッシュ・メモリ・データの交換を実装することで証明されるように、コア間の短距離通信にも用いられる。
【００３７】
図９は、好ましい実施形態による、圧縮パケットを形成するための波形データ・サンプルの圧縮のブロック図である。入力サンプル６００のシーケンスは、構成可能な圧縮器６２０で圧縮され、圧縮パケット６３０を生成する。入力サンプル６００は、デジタル化波形データ１２５ａ、シミュレートされたデジタル波形データ１２５ｂ、又は中間デジタル結果１５０を表すものとすることができる。入力サンプル６００は、整数形式又は浮動小数点形式を有することができる。典型的なプログラム可能な処理コア又はＣＰＵでは、データ形式はプログラム内で指定することができる。プログラムがデータ形式を指定していない場合には、プロセッサ・コアは、デフォルトのデータ形式を用いる。圧縮制御インターフェース６１０は、種々のモードでの動作のために、構成可能な圧縮器６２０に制御パラメータを与える。例えば、制御パラメータは、整数又は浮動小数点圧縮モード、及び無損失又は損失圧縮モードを選択することができる。損失圧縮モードが選択された場合は、圧縮制御インターフェース６１０は、固定レート圧縮又は固定品質圧縮のための付加的な制御パラメータを含むことができる。例えば、固定レート圧縮では、制御パラメータは、入力データ・ブロックのサイズと圧縮パケット６３０のペイロード部のサイズとの間の所望の圧縮比を表わすことができる。例えば、固定品質圧縮では、圧縮パラメータは、圧縮パケット６３０が復元された後に得られる値の信号対雑音比を表わすことができる。構成可能な圧縮器６２０が、異なるサイズの入力サンプル６００のブロック（即ち、連続したサンプルのグループ）を処理するように適応可能である場合は、圧縮制御インターフェース６１０は、入力ブロックのサイズを制御パラメータによって指定することができる。圧縮パケット６３０がヘッダを含む場合は、圧縮制御インターフェース６１０は、パケット・ヘッダ内に、圧縮ブロック・サイズ又は誤り訂正コード（ＥＣＣ）といったどのようなパラメータが含まれているのかを指定することができる。単一の構成可能な圧縮器６２０を、整数及び浮動小数点値の両方を処理するように適合させることが可能である。
【００３８】
図１０は、整数値を圧縮する場合の構成可能な圧縮器６２０のブロック図である。損失圧縮の場合は、損失圧縮調整プロセッサ６２２が入力サンプル６００上で動作して、調整済入力サンプル６２３を形成する。無損失圧縮の場合は、損失圧縮調整プロセッサ６２２は、バイパスされるか又は「無調整」に設定され、調整済入力サンプル６２３は、入力サンプル６００と同じ値を有することになる。損失圧縮調整プロセッサ６２２は、圧縮及びフィードバック制御ブロック６２８により、調整制御信号６２９ａを介して制御される。損失圧縮調整プロセッサ６２２により導入される損失度は、ユーザが圧縮制御インターフェース６１０を介して選択することができる。代替的に、損失度は、フィードバック・パラメータに基づいて自動的に調整することができる。例えば、固定レート圧縮モードの場合、圧縮パケット・サイズ測定ブロック６２６が圧縮パケット・サイズ６２７を計算する。圧縮フィードバック・ブロック６２８は、圧縮パケット・サイズ６２７を所望のパケット・サイズと比較して、調整制御信号６２９ａのフィードバック・パラメータを定める。ユーザは、圧縮制御インターフェース６１０を介して、所望のパケット・サイズを選択することができる。圧縮パケット・サイズ測定ブロック６２６は、パケット毎の測定パケット・サイズ６２７を提供することもでき、又は選択可能な出力パケット数にわたって平均された測定パケット・サイズ６２７を提供することもできる。無損失圧縮器６２４は、圧縮制御信号６２９ｂに従って、調整済入力サンプル６２３を圧縮する。
【００３９】
同一出願人による特許及び出願は、無損失圧縮器６２４及び損失圧縮調整プロセッサ６２２において用いることができる様々な圧縮技術を記載する。これらは、引用によりここに組み入れられる、２００６年３月７日に発行された、Ｗｅｇｅｎｅｒによる「Ａｄａｐｔｉｖｅ  Ｃｏｍｐｒｅｓｓｉｏｎ  ａｎｄ  Ｄｅｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｂａｎｄｌｉｍｉｔｅｄ  Ｓｉｇｎａｌｓ」と題する特許文献１、引用によりここに組み入れられる、１９９８年１１月１７日に発行された、Ｗｅｇｅｎｅｒによる「Ｌｏｓｓｌｅｓｓ  ａｎｄ  ｌｏｓｓ−ｌｉｍｉｔｅｄ  Ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｓａｍｐｌｅｄ  Ｄａｔａ  Ｓｉｇｎａｌｓ」と題する特許文献２、及び引用によりここに組み入れられる、２００９年１０月２３日に出願された、Ｗｅｇｅｎｅｒによる「Ｂｌｏｃｋ  Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｃｏｍｐｒｅｓｓｉｏｎ  ｏｆ  Ｓｉｇｎａｌ  Ｄａｔａ」（「ＢＦＰ圧縮出願」）と題する米国特許出願番号第１２／６０５，２４５号を含む。
【００４０】
圧縮技術には、調整済入力サンプル６２３の１つ又はそれ以上の微分を計算することによる差分コード化、ブロック浮動小数点ビット・パッキング、ハフマン・コード化、及び無損失圧縮器６２４を実装することができるその他の無損失圧縮技術が含まれる。無損失圧縮器６２４は、圧縮パケット６３０を生成することができ、この圧縮パケット６３０は、ヘッダ６３２及び圧縮ペイロード６３４を含むことができる。ヘッダ６３２は、圧縮及びフィードバック制御ブロック６２８により与えられる１つ又はそれ以上の圧縮制御パラメータを含むことができる。ヘッダ６３２は、圧縮パケット内に収容される圧縮サンプルの整数又は浮動小数点値などのデータ型を示すパラメータ、並びに調整制御信号６２９ａ及び圧縮制御信号６２９ｂのような値制御パラメータを収容することができる。圧縮及びフィードバック制御ブロック６２８は、平均又は瞬間圧縮比などの種々の圧縮統計量を示すことができる圧縮ステータス信号６１５、調整制御信号６２９ａ、圧縮制御信号６２９ｂ、又は構成可能な圧縮器６２０内での内部的な警告若しくは誤り状態を生成することができる。
【００４１】
図１１は、圧縮整数データの復元のブロック図である。構成可能な復元器７２０は、圧縮パケット６３０を受信する。復元制御ブロック７２８は、圧縮パケット・ヘッダ６３２の内容を検査し、復元器７２４及び損失圧縮調整ブロック７２２のための制御パラメータをいずれもデコードする。復元器７２４は、復元制御信号７２９ａの制御下で、図１０の損失圧縮器６２４によって行われた圧縮操作を解除（アンドゥ）する操作を行い、それにより調整入力信号７２３を再現する。損失復元調整ブロック７２２は、復元調整信号７２９ｂの制御下で、図１０の損失圧縮調整ブロック６２２により行われた調整操作を解除する操作を行う。復元された信号７３０は、構成可能な復元器７２０の出力サンプルを表わす。復元制御ブロック７２８は随意に、平均又は瞬間圧縮比を含むことができるステータス信号７１５、圧縮制御信号７２９ａ、復元調整信号７２９ｂ、又は復元器７２０からの内部警告又は誤り信号を生成することができる。
【００４２】
図１２は、浮動小数点データを圧縮するように構成された構成可能な圧縮器６２０のブロック図である。浮動小数点データ表現は、３つのフィールド、即ち符号ビット、指数、及び有効数字部（仮数）で構成される。フォーマット・プリプロセッサ（図示せず）は、各々の浮動小数点入力サンプルの符号及び有効数字部から指数を分離して、入力指数６０３を与える。フォーマット・プリプロセッサは、符号ビットと有効数字部とを組み合わせて、符号及び仮数入力サンプル６０１を形成する。構成可能な圧縮器６２０は、図１０に関して説明された構成可能な圧縮器６２０が整数サンプル６００を処理するのと同じ方式で、符号及び仮数入力サンプル６０１を処理する。さらに、構成可能な圧縮器６２０は、無損失指数圧縮器６６０及び圧縮ペイロード・マルチプレクサ６７０を入力指数６０３に適用する。無損失指数圧縮器６６０は、圧縮及びフィードバック制御ブロック６２８からの無損失指数圧縮制御信号６２９ｃの制御下で、無損失方式で指数６０３を圧縮する。無損失指数圧縮器６６０は、特許文献１、特許文献２及びＢＦＰ圧縮出願に記載された技術の１つ又はそれ以上を適用することができる。圧縮制御信号６２９ａは、指数６０３に適用される圧縮方法、例えばブロック浮動小数点コード化、差分コード化、ハフマン・コード化又は指数６０３を圧縮するのに適したその他の圧縮技術、を指定する制御パラメータを与えることができる。圧縮ペイロード・マルチプレクサ６７０は、圧縮された指数ビット６６５並びに圧縮された符号及び仮数ビット６３１の圧縮パケット・ペイロード６３４ａ内での位置を制御する。圧縮ペイロード・マルチプレクサ６７０は、図１０に関して説明されたように、圧縮及びフィードバック制御ブロック６２８により制御することができる。
【００４３】
図１２に示される構成可能な圧縮器６２０は、整数又は浮動小数点の波形データ値に適用することができる。整数サンプルが圧縮される場合には、指数圧縮器６６０及び圧縮ペイロード・マルチプレクサ６７０は使用されず、整数サンプルは、図１０の入力サンプル６００に類似した符号及び仮数入力サンプル６０１を与える。浮動小数点サンプルが圧縮される場合には、浮動小数点の指数値が指数６０３となり、浮動小数点の符号及び仮数値が符号及び仮数入力サンプル６０１となる。フォーマット・プリプロセッサが入力サンプル６００に適用され、指数６０３と、符号及び仮数サンプル６０１とを与える。フォーマット・プリプロセッサは、浮動小数点データから抽出された浮動小数点の符号及び仮数と、整数データとに対して共通の形式を与えるので、損失圧縮調整ブロック６２２及び無損失圧縮器６２４は、入力サンプル１００が整数又は浮動小数点値のどちらで表されているかにかかわらず、同じ形式のデータを受信する。こうすることで、構成可能な圧縮器６２０を、圧縮及びフィードバック制御ブロック６２８からの種々の制御信号に従って、整数又は浮動小数点波形データ値のいずれかを圧縮するように構成することができる。
【００４４】
図１３は、圧縮された浮動小数点データを復元するための構成可能な復元器７２０のブロック図である。構成可能な復元器７２０は、圧縮された浮動小数点データを圧縮ペイロード６３４ａとして含む圧縮パケットを受信する。復元器７２４及び損失復元調整ブロック７２２は、図１１に関して説明されたそれぞれの要素と同じ復元操作を圧縮された符号及び仮数データに適用する。構成可能な復元器７２０は、ペイロード・デマルチプレクサ８７０と、圧縮された指数データを処理するための指数復元器８６０とを含む。圧縮パケット・ヘッダ６３２ａを検査した後、復元コントローラ７２８は、制御パラメータを、ペイロード・デマルチプレクサ８７０、復元器７２４、損失復元調整ブロック７２２及び指数復元器８６０に与える。ペイロード・デマルチプレクサ８７０は、圧縮ペイロード６３４ａを、圧縮された指数ビット８６５と圧縮された符号及び仮数ビット８３１とに分離する。分離された、圧縮された符号及び仮数ビット８３１は、圧縮された整数データ（図１１）について説明したのと同様に復元され、調整される。指数復元器８６０は、指数復元器制御信号７２９ｃによって与えられる制御パラメータに従って、圧縮された指数ビット８６５を復元する。指数復元器７２０は、復元された指数７３０ｂを生成する。復元器７２４及び損失復元調整ブロック７２２は、復元された符号及び仮数サンプル７３０ａを生成する。データ・フォーマッタ（図示せず）は、復元された指数７３０ｂと、対応する復元された符号及び仮数サンプル７３０ａとを組み合わせて、元の入力サンプル６００と同じ浮動小数点形式を有する復元サンプルのシーケンスにすることができる。代替的に、データ・フォーマッタは、復元された指数７３０ｂ並びに対応する復元された符号及び仮数サンプル７３０ａの形式変換を提供して、元のサンプルとは異なるデータ形式を有する復元サンプルを生成することができる。復元制御ブロック７２８により生成される種々の復元及び調整制御信号の設定に基づき、随意に圧縮パケット・ヘッダ６３２ａ内のヘッダパラメータの制御下で、構成可能な復元器７２０は、復元された整数波形データ値又は復元された浮動小数点波形データ値を生成することができる。
【００４５】
無損失圧縮器６２４の好ましい実施形態は、無損失差分コード化と、それに続いてブロック浮動小数点ビット・パッキングを適用する。無損失差分コード化の技術は、特許文献１及び特許文献２に記載されている。ブロック浮動小数点ビット・パッキングの技術は、ＢＦＰ出願に記載されている。差分コード化とそれに続くブロック浮動小数点ビットパキングとを適用することによって、パケット・ベースの波形データ圧縮にとって望ましい、待ち時間が短い圧縮器が実装される。損失圧縮調整ブロック６２２の好ましい実施形態は、入力サンプル６００の絶対値を小さくして、制御可能量の損失を提供する。損失圧縮調整ブロックは、入力サンプル６００に対してビットシフタ及び乗算器を適用することにより、サンプルの絶対値を小さくする。ビットシフタと乗算器との組み合わせによって、所望の低複雑度の目標が達成される。
【００４６】
構成可能な復元器７２０の好ましい実施形態において、復元制御器７２８は、圧縮パケット・ヘッダ６３２内に収容された制御パラメータをデコードし、復元のためのそれぞれの制御信号７２９ａ、７２９ｂ、及び７２９ｃを提供する。圧縮パケットのヘッダ６３２又は６３２ａの好ましい実施形態は、データ型（整数又は浮動小数点データ）のインジケータ、並びに調整及び圧縮制御パラメータを含む。圧縮パケット・ヘッダ６３２はまた、圧縮中に保存された仮数ビットの数を含む、そのパケットの圧縮ペイロード全体に適用される制御パラメータを随意に含むこともできる。
【００４７】
図１４は、図６ａ、図６ｅ、及び図７ｂに関して説明されたマルチ・コア・プロセッサにおける構成可能な圧縮器６２０及び構成可能な復元器７２０の位置の例を示す。図１４ａは、図６ａのＩｎｔｅｌ  ＮｅｈａｌｅｍＣＰＵアーキテクチャにおける圧縮及び復元の組込を示す。構成可能な圧縮器６２０及び構成可能な復元器７２０を各ＱＰＩインターフェース４０４のところに組み込んで、送信されるＱＰＩパケットのペイロード用にデータを圧縮し、かつ受信したＱＰＩパケットのペイロードから圧縮データを復元することができる。Ｎｅｈａｌｅｍプロセッサに波形データを提供するためのオフチップ入力コントローラ（図示せず）は、入力波形データを圧縮して、ＱＰＩパケット用の圧縮ペイロード・データを形成する。ＱＰＩインターコネクト・リンク・コントローラ４０４における復元器７２０は、圧縮ペイロード・データを復元し、ＣＰＵコア４００ａ−ｄへの転送のためのＱＰＩパケット用のペイロード・データとして復元波形データを与える。図７ｂに関して説明されたＮｅｈａｌｅｍ８−プロセッサ・コアのアーキテクチャの場合、復元ペイロード・データを収容したＱＰＩパケットは、対向回転リング５１６を介してプロセッサ・コア５１０ａ〜５１０ｈに転送される。Ｎｅｈａｌｅｍアーキテクチャは、オフチップ・コンポーネントへの／からのデータ転送に同じパケット・プロトコルを使用するオンチップ通信の一例である。組み込まれたメモリ・コントローラもまた、オフチップ・メモリに提供される波形データを圧縮し、かつメモリから取り出された圧縮波形データを復元するために、構成可能な圧縮器６２０及び圧縮回御器７２０を含むことができる。
【００４８】
図１４ｂは、図６ｅのＩＢＭ  Ｃｅｌｌ  Ｂｒｏａｄｂａｎｄ  Ｅｎｇｉｎｅのアーキテクチャにおける圧縮及び復元の組込を示す。バス・インターフェース・コントローラ（ＢＩＣ）４４４は、オフチップ通信を制御する。構成可能な圧縮器６２０及び構成可能な復元器７２０をＢＩＣ４４４のところに組み込んで、送信パケット用の波形データを圧縮し、かつ受信した圧縮パケットを復元することができる。入力データを複数のＳＰＥ４４０ａ〜４４０ｈに与えるために、オフチップ・コントローラ（図示せず）は、ＢＩＣ４４４において受信されるバスパケット用の圧縮ペイロード・データを形成するために波形データを圧縮する圧縮器を含む。ＢＩＣ４４４における構成可能な復元器７２０は、圧縮ペイロード・データを復元し、ＳＰＥ４４０ａ〜４４０ｈへの転送のためにＥＩＢ４４６に与えられる復元波形データを形成する。構成可能な復元器７２０は、復元波形データを、ＥＩＢ４４６と互換性があるプロトコルを有するパケットに挿入することができる。ＩＢＭ  Ｃｅｌｌアーキテクチャは、オフチップのデータ転送とは異なるパケット・プロトコルを用いるオンチップ通信の一例である。処理波形データのオフチップ転送の場合、ＢＩＣ４４４とのインターフェースのところにある構成可能な圧縮器６２０は、ＳＰＥ４４０ａ−ｈからＥＩＢ４４６を介して転送された処理波形データを圧縮して、外部バス４４７を通じた送信のための圧縮ペイロード・データを形成する。宛先デバイス（図示せず）におけるオフチップ・コントローラは、受信したバスパケットから圧縮ペイロード・データを抽出及び復元して圧縮波形データを再現する復元器を含む。構成可能な圧縮器６２０及び復元器７２０をメモリ・インターフェース・コントローラ（ＭＩＣ）４４５に組み込んで、オフチップ・メモリ４４８への／からの圧縮データ転送を提供することができる。構成可能な圧縮器６２０及び復元器７２０は、ＭＩＣ４４５及びＢＩＣ４４４とは別に実装することもでき、又はＭＩＣ４４５及びＢＩＣ４４４で共有することもできる。
【００４９】
図１４ｃは、Ｉｎｔｅｌ  Ｎｅｈａｌｅｍ（図７ｂ）のプロセッサ・コア間の通信のための圧縮及び復元の一例を示す。８つのプロセッサ・コア５１０ａ−ｈは、２つの対向回転リング５１６を介してデータを転送する。対向回転リング５１６は、ＱＰＩパケット・プロトコルを用いてパケットを転送する。プロセッサ・コア５１０ａ−ｈは、その他の１つ又はそれ以上のコア５１０ａ−ｈへの転送のために波形データを圧縮するそれぞれの構成可能な圧縮器６２０ａ−ｈを含む。転送される波形データは、アプリケーション処理の中間データであり得る。構成可能な圧縮器６２０ａ−ｈは、ペイロード部が圧縮データを収容するＱＰＩパケットを形成する。構成可能な圧縮器６２０ａ−ｈは、圧縮ペイロードを有するＱＰＩパケットを、対向回転リング５１６を介して、その他のコア５１０ａ−ｈのうちの１つ又はそれ以上に与える。対向回転リング５１６から受信したデータについて、それぞれの構成可能な復元器７２０ａ−ｈは、受信したＱＰＩパケットの圧縮ペイロードを復元して、それぞれのコア５１０ａ−ｈによるさらなる処理のために中間データ又は波形データを再現する。プロセッサ・コア間の通信に加えて、構成可能な圧縮器６２６０及び復元器７２０を、ＱＰＩインターフェース５１４ａ−ｄ及び／又はメモリ・インターフェースＳＭＩ０及びＳＭＩ１におけるコントローラに組み込むこともできる。
【００５０】
図１５は、入力データをプロセッサ・コアに供給する例である。入力コントローラ１８００は、サンプル波形データを与えるＡＤＣ１２０、シミュレートされた波形データを与えるシミュレータ１３０又は中間デジタル結果１５０を与える外部プロセッサなどの、入力データを生成するデバイスに接続することができる（図２参照）。入力コントローラ１８００は、プロセッサ・コア１８１０への転送前に入力データを圧縮する。プロセッサ・コア１８１０は、特定のアプリケーションの動作を行う前に、受信した入力データに対して復元を適用する。入力コントローラ１８００は、圧縮データを複数のプロセッサ・コア（図１５には図示せず）に分散させ、その各々が、受信したデータを復元して、アプリケーション処理用の復元データを形成する。
【００５１】
図１６は、複数のプロセッサ・コア間でデータを通信する例である。ソース・プロセッサ・コア１９００ａ及び１９００ｂは、一部が処理されたデータ又は中間結果をアプリケーションでのさらなる処理のために宛先プロセッサ・コア１９００ｃ及び１９００ｄの各々に与えている。ソース・コア１９００ａ、ｂは、それぞれの、一部が処理されたデータ又は中間結果を圧縮し、それぞれの圧縮データを転送する。宛先コア１９００ｃ、ｄは各々、ソース・コア１９００ａ、ｂの両方から圧縮データを受信し、復元する。宛先コア１９００ｃ、ｄは、それぞれの処理操作を復元データに適用する。
【００５２】
図１７は、プロセッサ・コアから出力コントローラへの例示的なデータ転送である。プロセッサ・コア２０００は、特定のアプリケーション用の処理波形データを生成する。処理波形データは、そのアプリケーションのための、一部が処理された中間結果又は完全に処理された最終結果を表わすことができる。プロセッサ・コア２０００は、処理されたデータを圧縮し、圧縮データを出力コントローラ２０１０に転送する。出力コントローラ２０１０は、圧縮データを受信し、復元する。複数のプロセッサ・コア（図示せず）が、処理データを圧縮して出力コントローラ２０１０に転送することができる。出力コントローラ２０１０は、さらなる処理又は表示のために、復元データに対して、異なるプロセッサ・コアから受信したデータを集約するなどの付加的な機能を実行することができる。
【００５３】
図１８は、オフチップ・メモリ又は記憶装置２１３０に対する読み出し及び書き込みアクセスが圧縮及び復元を用いて改善されたプロセッサ２１００を示す。ＣＰＵ又はコア２１０５は、オンチップ・メモリ２１２０、及びオフチップ・メモリ又は記憶装置２１３０の両方に対してアクセスする。オンチップ・メモリ２１２０に対するＣＰＵ又はコア２１０５のアクセスは、アドレス及びデータバス２１１５を介して直接行われる。ＣＰＵ又はコア２１０５は、圧縮制御インターフェース６１０を介して、直接メモリアクセス（ＤＭＡ）、入力／出力又はメモリ用のコントローラ２１１０を介したオフチップ・メモリ又は格納部２１３０への圧縮アクセス（読み出し又は書き込み）を要求する。図９に関して上述したように、圧縮制御インターフェース６１０は、オフチップ・メモリ又は記憶装置２３１０への書き込み中に、ＣＰＵ又はコア２１０５が、構成可能な圧縮器６２０に対して、整数又は浮動小数点データを圧縮するための制御パラメータ、無損失又は損失モードでの圧縮のための制御パラメータ、所望の圧縮ブロック・サイズを指定するための制御パラメータ、及びその他の圧縮特定パラメータを与えることを可能にする。構成可能な圧縮器６２０は、オフチップ・メモリ又は記憶装置２１３０に格納される圧縮パケットのヘッダ内に制御情報を含めることができる。オフチップ・メモリ又は記憶装置２１３０からのデータの読み出し中に、構成可能な復元器７２０は、各圧縮パケットのヘッダ内の制御情報をデコードし、制御パラメータに従った復元操作を用いて、整数又は浮動小数点値を復元する。復元された出力サンプルは、オンチップ・メモリ２１２０に与えられる。構成可能な圧縮器６２０は、オフチップ・メモリ又は格納部２１３０に対するブロック又はパケット・ベース性のアクセスに特に適している。要素２１１０がＤＭＡコントローラとして実装される場合、大きいデータ・ブロックは、典型的にはオンチップ・メモリ２１２０とオフチップ・メモリ又は記憶装置２１３０との間で転送される。本発明は、（ランダム・アクセスの単一値処理とは対照的な）パケット・ベース処理又はストリーム処理の圧縮及び復元に適用することができるので、構成可能な圧縮器６２０及び構成可能な復元器７２０は、ＤＭＡアクセスに非常に適している。また、ＣＰＵ又はコア２１０５は、典型的にはＤＭＡコントローラ２１１０を介してＤＭＡアクセスを開始するので、データ書き込み中に構成可能な圧縮器６２０により導入される待ち時間、又はオフチップ・メモリ若しくは記憶装置２１３０からのデータ読み出し中に構成可能な復元器７２０により導入される待ち時間は、比較的長い（ＣＰＵがオンチップ・メモリ２１２０にアクセスする場合と比べて長い）ＤＭＡトランザクション時間の中に覆い隠すことができる。
【００５４】
図１９は、１ＭＢデータ・パケットに２：１圧縮を適用した例についての帯域幅改善の表を示す。この例では、１ＭＢデータ・パケットは、整数又は浮動小数点の波形値を収容しているものと仮定する。波形値は、８ビット、１６ビット又は３２ビット値を収容できるものとし、これは波形サンプル当たり１、２又は４バイトに対応する。同様に、波形値は、３２ビット又は６４ビット長の浮動小数点値を収容できるものとし、これは浮動小数点波形サンプル当たり４バイト又は８バイトに対応する。図１９の列１は例示的なパラメータを示し、列２及び３は、圧縮なしの場合及び２：１圧縮の場合のパラメータ値をそれぞれ含む。列２（圧縮なし）を検討すると、コア１からコア２への１ＭＢデータの転送は、コア１の送信機（Ｔｘ）における１ミリ秒（０．００１秒）の起動待ち時間と、コア２の受信機（Ｒｘ）における１ミリ秒（０．００１秒）の完了待ち時間とを含む。１ＭＢの波形データ・パケットは、この例では、コア１とコア２との間の１ＭＢ／秒のリンクを用いた転送時間１秒を含めて、１．００２秒の合計非圧縮転送時間を要する。対照的に、列３は、元の１ＭＢ波形パケットに対して２：１圧縮が適用され、５００ｋＢの圧縮データのみが転送される場合における同じパラメータを示す。構成可能な圧縮器６２０及び構成可能な復元器７２０は両方とも、圧縮及び復元パイプラインを満たすことにより生じる、付加的な起動待ち時間を有する。この例では、圧縮及び復元待ち時間は、各々、１０ミリ秒（０．０１秒）と見積もられる。したがって、２：１圧縮を用いると、１ＭＢ波形パケットは、コア１とコア２との間の１ＭＢ／秒のリンクを用いた転送時間０．５秒を含めて、０．５２秒の合計圧縮転送時間を要する。図１９の最下行は、２：１圧縮を用いた転送帯域幅が非圧縮転送帯域幅のほぼ２倍であることを示す。
【００５５】
マルチ・コア・アプリケーションにおいては、行われる計算作業は、複数のコア間に分散される。多くの波形処理アプリケーションにおいて、整数又は浮動小数点データのいずれかが、様々なネットワーク、バス及びメモリ・インターフェースを用いて複数のコアに分散される。そのようなアプリケーションの合計処理時間は、波形データ・サンプルを多数の処理コアに分散させるのに必要な時間、並びに各コアにおいて計算作業を完了させるのに要する時間の両方に影響を受ける。そのうえ、波形処理は、データが既知のシーケンス又は順序で分散されることを要する場合が多く、その場合、幾つかのコアは、隣接したコアがそこで処理した波形出力結果を配信するのを待機する時間を費やす。Ｉ／Ｏ時間が減らされれば、計算時間にかかわらず、全ての波形処理アプリケーションについて合計時間は低減することになる。合計時間がコア計算時間よりもＩ／Ｏ（データ交換）時間によって決まるアプリケーションは、「Ｉ／Ｏバウンド」アプリケーションと呼ばれる。本発明は、Ｉ／Ｏバウンド・アプリケーションの合計処理時間を短縮するのに特に有効である。Ｉ／Ｏバウンド・アプリケーションは、本発明による波形データ帯域幅の増大と、波形データ待ち時間の削減との両方から利益を得る。コアが波形入力データを待機して費やす時間も削減される。
【００５６】
図２０は、Ｎ個の処理コアのパイプラインで実行されるＩ／Ｏ及び処理が圧縮によりどのように加速されるかを示す。図２０に示す例は、図１９で論じたように、コア間パケットの２：１圧縮を仮定する。タイムラインＡは、Ｎ個のコア間で非圧縮波形データ・パケットを送信する波形データ処理アプリケーションにおける一連のＮ対の｛Ｉ／Ｏ、計算｝矩形を示す。各矩形の幅は、Ｉ／Ｏ又は計算動作にかかる時間を表わす。タイムラインＢは、同じ処理ステップを表すが、各Ｉ／Ｏに対して２：１圧縮を用いている。対応する計算動作ＣＯＭＰ１〜ＣＯＭＰＮの時間は、タイムラインＡに示されるものと同一であり、即ち、両アプリケーションで計算時間は同じであることに留意されたい。しかしながら、Ｉ／Ｏ又はデータ交換時間は２分の１に削減されるので（２：１圧縮）、タイムラインＢにおける総プロセス持続時間はＴ２であり、これは図２０のａでの総プロセス持続時間Ｔ１より短い。プロセス持続時間の全体としてのスピードアップ（Ｔ１−Ｔ２）は、個別のＩ／Ｏ及び計算時間の長さに依存するが、図２０は、処理パイプライン内で構成される複数のコア間のＩ／Ｏが、本発明の構成可能な、待ち時間の短い、高帯域幅の圧縮及び復元ブロックを用いてコア間のＩ／Ｏを加速した場合、波形データ圧縮アプリケーションの完了がより早まることになることを明らかにする。リング、星形及びメッシュなどのその他のマルチ・コア・トポロジに対して本発明の圧縮を適用しても、コア間のデータ交換を加速することができる。
【００５７】
図２０の例において、計算動作ＣＯＭＰ１〜ＣＯＭＰＮは、Ｎ個のプロセッサ・コア上で実行されるスレッドを表わすことができる。時間間隔［Ｉ／Ｏ又はＸＣＨＧ］は、Ｎ個のプロセッサ・コアのパイプラインに沿った波形データの通信に要する時間を表わす。［Ｉ／Ｏ又はＸＣＨＧ］の時間間隔中、対応するコアは待機モードに入る。図２０に示されるように、圧縮は、データ転送にかかる時間を削減するので、それによりコアが待機モードにある時間を削減する。その結果、プロセス全体の持続時間の削減と、コアの計算リソースのより有効な利用という両方の点で、システム性能が改善される。
【００５８】
本発明の実施形態は、パケット・ベース又はブロック・ベースのデータ交換を用いてコア間で整数又は浮動小数点データが交換される波形データ・アプリケーションに適している。構成可能なプロセッサ６２０は、特定のデータ型に適合させることができ、その波形データに対して選択された圧縮モード（無損失又は損失）は受信側コアに送信される。構成可能な圧縮器６２０は、制御情報を圧縮パケットのヘッダ内に挿入する。構成可能な復元器７２０は、受信した各圧縮パケットのパケット・ヘッダからデータ型及びその他の制御パラメータを決定する。構成可能な復元器７２０は、特定の圧縮パケットについてのデータ型、及び圧縮モードなどの制御パラメータに従って、適切な復元操作を圧縮ペイロード・データに適用する。本発明は、様々なネットワーク、バス及び格納部の用途に適しており、これらには、図５において説明されたもの（これらに限定されない）が含まれ、かつ、オンチップ・キャッシュ（レジスタ・ファイル、ＳＲＡＭ又はＤＲＡＭ）、オフチップＳＲＡＭ、ＤＲＡＭ、又はフラッシュなどの半導体メモリ、及びディスク又はテープ・ドライブなどの磁気媒体が含まれる。
【００５９】
構成可能な圧縮器及び復元器には様々な実装の選択肢がある。好ましい実装形態において、構成可能な圧縮器６２０は、送信パケット・バッファと同じダイ上に直接組み込まれるので、波形データは、最短の待機時間かつ最高の圧縮及び復元レートでパケット送信用に圧縮される。構成可能な圧縮器６２０及び構成可能な復元器７２０は、実時間レートで、即ち、それらがインターフェースするデバイスと少なくとも同じ速さで動作することができ、波形サンプルが供給される速さと同じ速さでこれを圧縮し、波形サンプルが消費される速さと同じ速さでこれを復元する。同様に、好ましい実施形態において、構成可能な復元器７２０は、受信パケット・バッファと同じダイ上に直接組み込まれるので、パケットが受信されると、波形データは、前述のように最短の待ち時間及び最高の圧縮及び復元レートで復元される。代替的に、構成可能な圧縮器６２０及び構成可能な復元器７２０は、送信及び受信コアの命令セットをそれぞれ用いた、速度及び待ち時間が最適化されたアセンブリ言語実装で実装することができる。アセンブリ言語実装は、圧縮波形データ要素毎に複数の命令サイクルを必要とするので、その速度及び待ち時間は、上記の好ましい実装よりかなり高いものになる。
【００６０】
マルチ・チップ実装の場合、構成可能な圧縮器６２０及び／又は構成可能な復元器７２０は、通信プロセッサが実装されたダイとは別のダイ上（即ちハードウェア内）に実装され、この場合、この別の圧縮及び／又は復元ダイは、通信プロセッサが実装されたダイと同じ基板上にあり、従ってこれと近接している。このマルチ・チップ実装の場合、圧縮器及び復元器のダイは、別個の製品として開発することができ、後で様々な通信プロセッサ・ダイに組み込むことができる。このマルチ・チップ実装の利点は、圧縮器及び／又は復元器ダイを、同一ダイ上の好ましい実装形態よりも低コストで組み込むことを可能にすることであるが、それは、通信プロセッサを収容するダイが、構成可能な圧縮器６２０及び／又は復元器７２０を収容するダイよりもかなり大きい（従って、設計及び製造の両方により多くの費用がかかる）場合が多いからである。
【００６１】
通信リンクが波形データを一方向に送信する場合のような特定のアプリケーションについては、構成可能な圧縮器６２０及び構成可能な復元器７２０を別々のダイに組み込むことができる。そのような条件は、波形データのソースが１つのデバイス（例えばＡＤＣ又はデータ収集サブシステム）により捕捉され、一方、圧縮された波形データの処理が別のデバイス（例えばＦＰＧＡ、ＣＰＵ、ＧＰＵなど）により行われるような場合に生じる。他のアプリケーションの場合と同様に、圧縮器は、ＦＰＧＡ、ＣＰＵ、ＧＰＵなどによる波形データの処理と統合することができ、一方、圧縮パケットは、受信され、復元され、得られた波形は、ＤＡＣ又はその他のアナログ若しくはデジタル信号生成器のような出力サブシステムに与えられる。
【００６２】
本明細書において、複数のプロセッサ・コアと、複数のプロセッサ・コア間でデータ・パケットを転送するための通信ファブリックとを有する波形処理システムにおいて用いられる方法が説明され、波形データ・サンプルは、整数形式又は浮動小数点形式で表わされ、この方法は、
波形データ・サンプルのサブセットをプリプロセッサ制御パラメータの制御下で前処理して、圧縮器入力サンプルを生成するステップと、
圧縮器入力サンプルの絶対値を絶対値調整パラメータの制御下で調整して、調整済信号サンプルを生成するステップと、
調整済信号サンプルを圧縮制御パラメータの制御下で圧縮して、圧縮パケット・ペイロード用の圧縮サンプルを生成するステップと、
プリプロセッサ制御パラメータのインジケータ、絶対値制御パラメータのインジケータ、及び圧縮器制御パラメータのインジケータを含むパケット・ヘッダを作成するステップと、
パケット・ヘッダと圧縮パケット・ペイロードとを組み合わせて圧縮パケットにするステップと、
通信ファブリックに対するインターフェースにおいて圧縮パケットを提供するステップと
を含む。
【００６３】
付加的な実装の選択肢は以下を含む。構成可能な圧縮器６２０及び構成可能な復元器７２０は、ターゲットＡＳＩＣ設計プロセス用のカスタム知的財産（ＩＰ）ブロックとして実装することができる。構成可能な圧縮器６２０及び構成可能な復元器７２０は、ＣＰＵ、ＧＰＵ、ＤＳＰチップ又はその他のマルチ・コア・プロセッサ上のソフトウェア内に実装することができる。構成可能な圧縮器６２０及び構成可能な復元器７２０は、ネットワーク・オン・チップ、完全接続スイッチ又は部分接続スイッチ実装の一部として実装することができる。
【００６４】
構成可能な圧縮器６２０及び構成可能な復元器７２０の実施形態は、スループットを改善し、待ち時間を削減し、又は複雑度を減らすよう適合させることも可能である。例えば、複数のプリプロセッサを用いて、浮動小数点｛符号，指数，仮数｝フィールドを、損失圧縮調整ブロック６２２及び損失圧縮器６２４の期待される入力形式に従う形式に変換することができる。次に、待ち時間を削減する、スループットを高める、又は圧縮器若しくは復元器の複雑度を低減する、又はこれらの特徴の全てを組み合わせた特定のプロセッサが選択される。プリプロセッサは、基数２から基数１０に変換するなどの進数変換を行うこともでき、このような都合のよい進数変換の理由及び利点は、ＩＥＥＥ−７５４（２００８）浮動小数点データ規格に記載されている。
【００６５】
本発明の実施形態をＤＲＡＭ、ＤＤＲ、ＤＤＲ２又はＤＤＲ３外部メモリ用のメモリ・コントローラに組み込み、それにより、単一コア又はマルチ・コアＣＰＵの外部の半導体（ＤＲＡＭ、フラッシュ、ＦＲＡＭ等）メモリ内に格納された整数及び浮動小数点の両方の波形データ値を圧縮及び復元する、メモリ・コントローラ用の構成可能な圧縮器を実装することもできる。同様に、本発明を、同一ダイ上（又はマルチ・チップ・モジュール内の同一パッケージ内）のキャッシュ・コントローラに組み込んで、波形データ用の構成可能なキャッシュ・メモリ圧縮器及び復元器を実装することができる。
【００６６】
本発明の好ましい実施形態を図示して説明してきたが、本発明は、これらの実施形態のみに限定されるものではないことが明らかであろう。特許請求の範囲に記載された本発明の思想及び範囲から逸脱することのない幾多の修正、変更、バリエーション、置換、及び均等物が、当業者には明らかとなろう。
【符号の説明】
【００６７】
６００：入力サンプル
６１０：圧縮制御インターフェース
６２０：構成可能な圧縮器
６２３：調整済入力サンプル
６２７：圧縮パケット・サイズ
６２９ａ：調整制御信号
６２９ｂ：圧縮制御信号
６２９ｃ：無損失指数圧縮制御信号
６３０：圧縮パケット
６３２：ヘッダ
６３４：ペイロード
６７０：圧縮ペイロード・マルチプレクサ
７２０：構成可能な復元器
７２９ａ：復元制御信号
７２９ｂ：復元調整信号
７２９ｃ：指数復元器制御信号
７３０：復元された信号
８７０：ペイロード・デマルチプレクサ
２１００：プロセッサ
２１１５：アドレス及びデータバス
【図１ａ】
2013506917.tif 000003
【図１ｂ】
2013506917.tif 000004
【図１ｃ】
2013506917.tif 000005
【図２】
2013506917.tif 000006
【図３】
2013506917.tif 000007
【図４】
2013506917.tif 000008
【図５】
2013506917.tif 000009
【図６ａ】
2013506917.tif 000010
【図６ｂ】
2013506917.tif 000011
【図６ｃ】
2013506917.tif 000012
【図６ｄ】
2013506917.tif 000013
【図６ｅ】
2013506917.tif 000014
【図７ａ】
2013506917.tif 000015
【図７ｂ】
2013506917.tif 000016
【図７ｃ】
2013506917.tif 000017
【図８】
2013506917.tif 000018
【図９】
2013506917.tif 000019
【図１０】
2013506917.tif 000020
【図１１】
2013506917.tif 000021
【図１２】
2013506917.tif 000022
【図１３】
2013506917.tif 000023
【図１４ａ】
2013506917.tif 000024
【図１４ｂ】
2013506917.tif 000025
【図１４ｃ】
2013506917.tif 000026
【図１５】
2013506917.tif 000027
【図１６】
2013506917.tif 000028
【図１７】
2013506917.tif 000029
【図１８】
2013506917.tif 000030
【図１９】
2013506917.tif 000031
【図２０】
2013506917.tif 000032
【国際調査報告】
2013506917.tif 000033
2013506917.tif 000034