圧縮及び復元を用いたマルチ・プロセッサの波形データ交換の改善
マルチ・コア処理環境における波形データの構成可能な圧縮及び復元は、コア間のデータ転送効率を改善し、データ格納リソースを節約する。波形データ処理システムにおいて、入力、中間及び出力波形データは、コア間及びコアとオフチップ・メモリとの間で交換されることが多い。各コアにおいて、単一の構成可能な圧縮器及び単一の構成可能な復元器を、整数又は浮動小数点データを圧縮及び復元するように構成することができる。メモリ・コントローラにおいて、構成可能な圧縮器は、オフチップ・メモリへの転送用に整数又は浮動小数点波形データを圧縮パケットに圧縮し、構成可能な復元器は、オフチップ・メモリから受信した圧縮パケットを復元する。圧縮は、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減する。圧縮は、波形データを交換するのに必要な待ち時間及び帯域幅の両方を低減する。この要約書は、特許請求の範囲に記載された本発明の範囲を限定するものではない。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、多重コア処理アーキテクチャにおける、コンピューティング・コア間のデータ転送のため及びメモリへのデータ書き込みのための波形データの圧縮と、後でコンピューティング・コアにおいてデータを受信するとき又はデータ読み出しのときの復元と、特に整数及び浮動小数点の両方の数値データ型の圧縮に関する。本発明は、全てのデータ型に対して、無損失圧縮モード、固定レート圧縮モード又は固定品質圧縮モードの選択をサポートする。
【背景技術】
【0002】
波形データ処理アプリケーションにおいて、アプリケーション特有の方式で波形データ値を変換するために、マイクロ・プロセッサの中央演算処理装置(CPU)又はその他の信号処理ファブリックは、格納されたプログラムの制下で波形データ値に対して算術演算及び論理演算を行う。入力、中間及び出力波形データ値は、格納部、メモリ又は入力デバイスから取り込まれ、処理され、そして格納部、メモリ又は出力デバイスに与えられる。波形データは、整数及び浮動小数点方式の数値データ型で表わすことができる。そのような波形データ処理アプリケーションの例として、これらに限られないが以下のものが挙げられる。即ち、
携帯電話における移動体電話信号の送受信、
携帯用音声再生装置の音声録音及び再生、
DVDからの圧縮映像の取り込み、圧縮映像の復元、及び表示装置への圧縮映像の送信、
ボイス・レコーダにおけるデジタル化された話し言葉の録音及び再生、及び
化学的、分子的、電気的、又は生物学的プロセスのシミュレーション。
【0003】
波形データ処理産業は、幅広い範囲の波形データ処理エンジン及び波形データ記憶装置を提供する膨大な数の製造業者で構成されている。波形データ処理エンジンは、ほとんどの場合、MPY及びMACのような専用アセンブリ言語命令を用いた積和(MAC)演算をサポートするデジタル信号プロセッサ(DSP)動作可能CPUを用いて実装される。波形処理アプリケーションのためのMPY及びMAC命令を有するCPUを提供する会社としては、Intel Corporation(Pentium、Nehalem、Itanium、Larrabee及びその他のプロセッサを含む、x86命令セットのプロセッサのファミリー)、Nvidiaグラフィック処理ユニット(GPU)、x86互換CPUのAdvance Micro Devices(AMD)ファミリー、AMD/ATI GPU、Texas Instruments(TMS320 DSPファミリー)、Analog Devices(Blackfin、TigerSharc、SHARC及びADSP−21xxファミリー)、Motorola(PowerPC及び56xxxファミリー)、ARM(Cortex、ARM7、ARM9、ARM10及びARM11ファミリー)、MIPS Technology(R2000からR16000、MIPS16、MIPS32、MIPS64及びMIPS DSPファミリー)、Microchip(dsPICファミリー)、IBM(PowerPCファミリー)、及びその他、多数が挙げられる。波形データ処理アプリケーションは、フィールド・プログラマブル・ゲート・アレイ(FPGA)内の論理素子、算術素子、及び記憶素子のプログラム可能なファブリックを用いて実装することもできる。波形データ処理アプリケーションに用いられるFPGAを提供する会社としては、Altera(Cyclone、Arria及びStratixファミリー)、Xilinx(Spartan及びVirtexファミリー)、Actel(Axcelerator及びProASICファミリー)、Lattice(XP、ECP、及びSCファミリー)、及びその他、多数が挙げられる。波形データ処理アプリケーションは、特定の波形データ処理操作を行うように設計された特定用途向け集積回路(ASIC)に含まれている場合もある。ASICベンダとしては、TSMC、UMC、IBM、LSI Logic及びその他、多数が挙げられる。
【0004】
DSP、FPGA、ASIC及びメモリという市場区分は全て、半導体産業の下位区分である。「メモリ」及び「格納部」という用語は、以下の説明において、波形データ処理アプリケーションで用いられる整数又は浮動小数点方式のサンプルデータ値を一時的又は恒久的に格納するデバイス及びサブシステムについて、交換可能に用いられる。波形データのメモリは、以下の半導体カテゴリ、即ち、静的ランダム・アクセス・メモリ(SRAM)、動的ランダム・アクセス・メモリ(DRAM)、2倍速又は4倍速データ転送速度ランダム・アクセス・メモリ(DDR及びQDR)、フラッシュ・メモリ、ソリッド・ステート・ドライブ(SSD)、フラッシュ・ドライブ、ディスク・ドライブ、強磁性ランダム・アクセス・メモリ(FRAM)、キャッシュ・メモリ、及び波形データを格納にするのに用いられるその他の任意の将来的な半導体メモリ、を含むことができる。半導体メモリ又は記憶装置を製造する会社としては、SRAM製造業者のCypress、Dallas Semiconductor、Honeywell、Hynix、IDT、Micron、三菱、NEC、Rencesas、シャープ、ソニー、東芝、UTMC/Aeroflex、White Electronic Design、及びその他、DRAM製造業者のSamsung、Hynix、Micron、Elpida、Nanya、Qimonda、ProMOS、Powerchip及びその他、フラッシュ・メモリ製造業者のSamsung、東芝、Intel、ST Microelectronics、Renesas、Hynix及びその他、FRAM製造業者の富士通、Ramtron及びSamsungが挙げられる。
【0005】
本説明において、「波形データ処理アプリケーション」は、サンプルデータ波形に対して数学的演算及び/又は論理演算を行うアプリケーションを含む。サンプルデータ波形は、多くの場合(これらに限定されないが)、話し言葉、音声、画像、映像又はその他のセンサ出力信号といった実世界のアナログ信号をアナログ−デジタル変換器(ADC)を用いてデジタル化することにより得られる。サンプルデータ信号はまた、シミュレートすることもでき、そして、アナログの話し言葉、音声、画像又は映像信号を生成するために、直接、又は付加的な波形データ処理操作の後で、デジタル−アナログ変換器(DAC)に供給することができる。この説明において、「サンプルデータ波形」は、入力サンプルデータ波形又は中間サンプルデータ波形に対して行われた数学的演算及び/又は論理演算により生成された中間及び/又は最終サンプルデータ波形も含む。
【0006】
波形データは、2つの主要な数値形式、即ち整数形式及び浮動小数点形式で優先的に格納される。整数形式は、符号付き、符号なし、又は符号及び絶対値表現を用いて波形データを表わし、この場合、サンプルデータ値の幅は、典型的には固定されている。波形データ処理に適した一般的な整数形式は、それぞれ{−128,+127}及び{−32768,+32768}の範囲の8ビット及び16ビットの符号付き整数、並びにそれぞれ{0,255}及び{0,65535}の範囲の8ビット及び16ビットの符号なし整数である。代替的に、波形データは、32ビット、64ビット、及び128ビットの浮動小数点形式で表わすことができる。最も一般的な浮動小数点形式は、浮動小数点値に関するIEEE−754規格に準拠する。IEEE−754規格は、初めに1985年に発行され、その後2008年に改訂された。IEEE754規格は、1符号ビット、8指数ビット及び23仮数ビットを用いて、32ビット浮動小数点値(「単精度(float)」又は「単精度float」とも呼ばれる)を表わす。IEEE−754規格は、1符号ビット、11指数ビット及び52仮数ビットを用いて、64ビット浮動小数点値(「倍精度(double)」又は「倍精度float」とも呼ばれる)を表す。16ビット「半精度浮動小数点」のようなその他の浮動小数点表示も存在するが、専用の浮動小数点回路を有するCPU又はDSPプロセッサにおいては通常、単精度及び倍精度に対する操作がサポートされている。そのような回路は、多くの場合、浮動小数点ユニット又はFPUと呼ばれる。多くのアプリケーションにおいて、浮動小数点計算は、浮動小数点データが倍精度形式で表される場合よりも単精度形式で表わされる場合の方が、はるかに高速であり、消費電力もはるかに少ない。
【0007】
波形データ処理アプリケーションに用いられる記憶装置は、様々なアクセス時間を示す。アクセス時間が10ナノ秒未満の最も高速の記憶素子は、通常、プロセッサ・コアと同じ半導体ダイ又は集積回路(IC)上に製作することができるSRAMである。このようなSRAM格納部は、キャッシュ・メモリ、オンチップ・メモリ又はレジスタ・ファイルと呼ばれる。最も低速の半導体記憶素子は、典型的にはフラッシュ・メモリであり、個々のサンプル値データ要素へのアクセス時間は100ナノ秒から1マイクロ秒の範囲である。フラッシュ・メモリの書き込みは、フラッシュ・メモリの読み出しより遅い。メモリ技術は、一般に階層的に配置され、最速の記憶素子がCPU又はDSP処理ファブリックの最も近くに配置され、より低速の記憶素子が、より高速の記憶素子の周りに層状に配置される。「オンチップ」及び「オフチップ」という用語は、CPU又は処理ファブリックに対する格納部の近さを特徴付けるために用いられる形容詞である。オンチップ格納部は、同じ半導体基板上にあるか、又はCPU若しくは処理ファブリックと同じマルチ・チップ・モジュール(MCM)内にパッケージされる。オフチップ格納部は、CPU又は処理ファブリックとは別の集積回路(IC)上に配置される。その他の低速の記憶素子には、ディスク・ドライブ及びテープ・ドライブが含まれ、これらのアクセス時間は数十ミリ秒であり、データ転送速度は典型的に100MB/秒又はそれ以下である。
【0008】
波形データ処理アプリケーションに用いられる層状階層のメモリを想定すると、波形データを処理するアプリケーションが常に目標とするところは、メモリ内に格納されたサンプルデータに対するCPU又は信号処理ファブリックのアクセス時間を改善することである。第2の目標は、波形データを求めるCPU又は信号処理ファブリックの要求と、そのCPU又は信号処理ファブリックに直接アクセス可能なメモリ(典型的にはキャッシュ又はレジスタ・ファイル)内にそのデータが出現するまでの間の待ち時間を減らすことである。第3の目標は、波形データ・プロセッサ・コアをそのメモリ階層に接続するファブリックの複雑さを低減することである。
【0009】
波形処理アプリケーションには、命令及びデータの両方を圧縮及び復元するための技術がある。多くの圧縮又はコード化技術は、1つの波形データ形式のデータのみ、例えば整数データ又は浮動小数点データのみを受け入れることができるが、両方を受け入れることはできない。同様に、多くの圧縮又はコード化技術は、1つの圧縮モードのみ、例えば無損失モード又は損失モードのみを提供するが、両方は提供しない。多くの圧縮又はコード化技術は、話し言葉、音声、画像又は映像といった特定のクラスの波形データにのみ適用可能であり、その他のクラスの波形データに対しては十分な圧縮をもたらさない。多くの圧縮又はコード化技術は、SRAM、DRAM又はフラッシュ用のメモリ・コントローラで典型的に見られる(アドレス,データ)の対に対して動作する。
【0010】
マルチ・コア波形処理システムにおいては、多くの種類の波形データが異なるデータ形式を用いて表わされることがある。特定のアプリケーションのためのプログラムは、典型的にはデータ形式を定義する。マルチ・コア処理アーキテクチャの目的は、一般に大容量データに対して、計算集約的操作を行うことである。計算集約的アプリケーションにおける大容量データの高速転送を可能にするために、コンピューティング・コア間及びコアとメモリとの間の伝送のための波形データの圧縮が必要とされる。
【0011】
本説明では、集積回路(IC)とチップという用語を、1つ又はそれ以上の電子ダイを収容する、電子的又は光学的な接続部(ピン、リード、ポート等)を備えた単一のパッケージを指すために相互交換可能に用いる。電子ダイ又は半導体ダイは、集積回路及び半導体デバイスを含む半導体基板である。ダイは、単一のコア又は複数のコアを有することができる。コアは、任意のタイプのデータ・プロセッサ用の処理ユニットとすることができる。例えば、プロセッサ・コアは、中央演算処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィック処理ユニット(GPU)、マイクロ・コントローラ・ユニット(MCU)、通信プロセッサ又は任意のタイプの処理ユニットとすることができる。単一のダイ上の個々のコアは、同じタイプの処理ユニットの場合もあり、又はアプリケーションに適した異なるタイプの処理ユニットの組み合わせの場合もある。このような処理ユニットは(これらに限られないが)、メモリ・コントローラ、直接メモリアクセス(DMA)コントローラ、ネットワーク・コントローラ、キャッシュ・コントローラ、及び浮動小数点ユニット(FPU)を含むことができる。このような処理ユニットは、同じダイ上に1つ又はそれ以上のプロセッサ・コアと共に組み込まれる場合もあり、又はプロセッサ・コアとは別のダイ上に置かれる場合もある。
【0012】
本記述において、圧縮に適用される「実時間」は、デジタル信号が、デジタル信号のサンプリングレートと少なくとも同じ速さのレートで圧縮されることを意味する。属性「実時間」はまた、デジタル信号の処理、転送及び格納の速度を、元の信号収集速度すなわちサンプリングレートと比較して記述することもできる。サンプリングレートは、ADC又はDACが、デジタル信号とアナログ信号との間での変換中にサンプルを形成するレートである。非圧縮でサンプリングされた又はデジタルの信号のビットレートは、サンプル毎のビット数にサンプリングレートを乗じたものである。圧縮レートは、圧縮サンプルのビットレートに対する元の信号サンプルのビットレートの比率である。実時間システムの機能をシミュレートする波形データ処理アプリケーションにおいて、波形データ値のシーケンスに対して行われる操作のシーケンスは、実時間処理シーケンスと同一のものとすることができるが、処理が行われる速度は、「実時間」よりも低速とすることができる。本説明は、シミュレートされた波形データ処理アプリケーションのようなアプリケーションに言及する。
【0013】
本説明は、種々の通信ファブリックに言及する。通信ファブリックは、2つ又はそれ以上の処理コアが互いに通信することを可能にする2つのコア間の任意の接続部である。通信ファブリックの例として、バス、ネットワーク、印刷回路基板上のトレース、送信機及び受信機を含む無線リンク、スイッチ、ネットワーク・インターフェース・カード(NIC)、ルータ、ネットワーク・オン・チップ、又は2つのプロセッサ・コア間のその他の任意の有線又は無線接続部が挙げられる。
【0014】
本説明は、無損失圧縮及び損失圧縮に言及する。無損失圧縮において、復元サンプルは、元のサンプルと同一の値を有する。幾つかのアプリケーションにおいて、損失圧縮は、必然的にビットレートの十分な低減をもたらす場合がある。損失圧縮において、復元サンプルは、元のサンプルと似ているが同一ではない。損失圧縮は、圧縮サンプルのビットレートと復元サンプルにおける歪みとの間でトレードオフを生じさせる。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】米国特許第7,009,533号明細書
【特許文献2】米国特許第5,839,100号明細書
【発明の概要】
【発明が解決しようとする課題】
【0016】
本発明の実施形態は、上記の従来の問題を考慮して作成されたものである。本発明の目的は、以下を含む。
(A)マルチ・コア処理システム内のプロセッサ・コア間での転送のための、2つ又はそれ以上のプロセッサ・コアにおける波形データの圧縮。
(B)プロセッサ・コアと波形データ・メモリ階層の要素との間での転送のための、プロセッサ・コア又はCPUにおける波形データの圧縮。
(C)入力コントローラから複数のプロセッサ・コアへの分散のための、波形データの圧縮。
(D)圧縮データを出力コントローラに転送するための、1つ又はそれ以上のプロセッサ・コアにおける処理波形データの圧縮。
(E)受信側CPUにおける、送信側CPU、入力コントローラ又はメモリから受信した圧縮データの復元。
(F)処理波形データを再現するための、出力コントローラにおける圧縮データの復元。
(G)マルチ・コア処理環境における、整数及び浮動小数点データ形式の波形データの構成可能な圧縮及び復元。
(H)単一プロセッサ・コアにおける、メモリからの転送又は取り込みのための整数及び浮動小数点データ形式の波形データの構成可能な圧縮及び復元。
(I)整数及び浮動小数点データ形式を圧縮するための動作モードを有する、単一の構成可能な圧縮器。
(J)予め圧縮されたデータから整数及び浮動小数点データを再現するための動作モードを有する、単一の構成可能な復元器。
(K)パケット・ベースの通信インターフェースを介した圧縮波形データの伝送のために、データ・パケットの圧縮ペイロードを形成する圧縮器。
(L)パケット・ベースの通信インターフェースから圧縮ペイロード・データを取り込み、対応する波形データを再現する復元器。
(M)ユーザ制御下又は自動選択の下で、無損失又は損失圧縮を適用するように圧縮器を構成すること。
(N)制御パラメータに従って、無損失又は損失復元を適用するように復元器を構成すること。
(O)固定圧縮ビットレートを有する圧縮データを生成するように圧縮操作を適合すること。
(P)固定品質基準を有する圧縮データを生成するように圧縮操作を適合すること。
【課題を解決するための手段】
【0017】
波形データの圧縮は、マルチ・コア処理システムのリソースを節約することにより、幾つもの利点を提供する。マルチ・コア処理システムにおいては、入力、中間及び出力波形データは、多くの場合、コア間で共有され、交換される。圧縮は、そのような波形データを2つ又はそれ以上のコア間で交換するのに必要な待ち時間及び帯域幅を低減する。圧縮は、波形データをプロセッサ・コア間で伝送するのに必要な電力及び領域を低減する。さらなる利点は、複数のプロセッサが波形データを交換できるようにするために必要なピンの数及び印刷回路基板のトレース領域を減らすことである。圧縮は、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減し、それによりメモリの有効容量を増大させる。波形データの圧縮は、波形データをCPUと波形データ・メモリ階層の要素との間で転送するときのアクセス時間及び待ち時間の両方を短くする。要するに、本発明の利点として、単一又はマルチ・コア処理環境において波形データを交換する圧縮送信機及び復元受信機の複雑度、費用及び電力を削減することが挙げられる。
【0018】
波形データは、複数のプロセッサ・コア上で並列して実行される複数のスレッドが共同で用いることができる。実行を続けるために波形データの一部を必要とする1つのコア上のスレッドが、別のコア上のスレッドがデータの処理を完了させて、これを待機スレッドに送るのを待機しているときには、複数のスレッドが強制的に待機モードに入れられることがある。これらの待機モードは、共通の波形データに対して並列に動作する複数のスレッドを実行するマルチ・プロセッサ・システムの場合の重大な性能のボトルネックである。処理コア間での共通の波形データの通信に必要とされる時間、及び共通波形データがマルチ・プロセッサ・システムの入力及び出力リソースと通信するのに必要な時間が、この重大な性能のボトルネックに関与する。
【図面の簡単な説明】
【0019】
【図1a】波形データの1つのクラスを示す。
【図1b】波形データの1つのクラスを示す。
【図1c】波形データの1つのクラスを示す。
【図2】波形データ処理アプリケーションにおける共通的な要素を示す。
【図3】2つの処理要素間の双方向のパケット・ベースの波形データ交換パイプラインを示す。
【図4】データの交換に用いられるパケット内の典型的なフィールドを示す。
【図5】業界規格に準拠したパケット・ベースのプロトコルの表を含む。
【図6a】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6b】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6c】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6d】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6e】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図7a】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ(NoC)ファブリックを示す。
【図7b】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ(NoC)ファブリックを示す。
【図7c】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ(NoC)ファブリックを示す。
【図8】マルチ・コア構成、コア間距離、及びメモリタイプを互いに関連付ける表を含む。
【図9】共同して、波形データ処理アプリケーションにおいて複数のコア間で共有される波形データを圧縮するのに適した、本発明の主要なシステムコンポーネントを示す。
【図10】整数波形データの圧縮に適した圧縮器を示す。
【図11】圧縮された整数波形データの復元に適した復元器を示す。
【図12】浮動小数点波形データの圧縮に適した圧縮器を示す。
【図13】圧縮された浮動小数点波形データの復元に適した復元器を示す。
【図14a】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図14b】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図14c】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図15】入力データをプロセッサ・コアに供給する例である。
【図16】複数のプロセッサ・コア間でデータを通信する例である。
【図17】プロセッサ・コアから出力コントローラへの例示的なデータ転送である。
【図18】オフチップ・メモリ・アクセスのために圧縮及び復元を用いた、改善されたDMA、入力/出力又はメモリ用のコントローラを示す。
【図19】データ転送時間の例を圧縮ありの場合及び圧縮なしの場合とで比較する表を含む。
【図20】マルチ・パケット・データセットの入力/出力時間の削減に伴う処理時間の削減を示す。
【発明を実施するための形態】
【0020】
本発明は、マルチ・コア処理環境における波形データの構成可能な圧縮及び復元に関する。マルチ・コア処理システムにおいて、各コアは、波形データのサブセットの別々の計算を行うことができる。入力、中間及び出力波形データを、コアとメモリ階層との間で共有し、交換することができる。本発明は、2つ又はそれ以上のコア間でそのような波形データを交換するのに必要な待ち時間及び帯域幅の両方を低減させる。本発明はまた、メモリ又は格納部での書き込み中に波形データを圧縮し、メモリ又は格納部での読み出し中に波形データを復元することにより、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減するのにも適している。
【0021】
図1は、3つの波形データの例を示す。図1aは、レーダ又は超音波アプリケーションで用いられる信号パルスに典型的なパルス波形のグラフを示す。図1aの波形データは、y軸上の値の範囲で示されるように、{−128,+127}の範囲の8ビットの符号付き整数値として処理されている。図1aのx軸は、およそ3500サンプルが波形データパルスを構成することを示す。図1aは、一方の軸が時間と共に変化する信号特性を表わし、二つめの軸が典型的には時間次元(時間又はサンプルカウント)を表わす、2次元波形データの一般的なクラスの具体例である。2次元波形データ・グラフにより表される個々の波形データ特性は、アプリケーション毎に異なる。
【0022】
図1bは、科学的又は数学的アプリケーション用に計算された曲面の3次元グラフを示す。z軸は、波形データ値が浮動小数点形式であり、{−2.0,+2.0}の範囲内にあることを示す。x軸及びy軸の値は、それぞれ、{−1,+1}及び{−2,+2}の範囲内にある。図1bは、縦軸が時間と共に変化する信号特性を表わし、第2及び第3の軸が2つのその他の次元(おそらくは2次元グリッド上の空間的位置)を表わす、3次元波形データの一般的なクラスの具体例である。3次元波形データのグラフにより表される個々の波形データ特性は、アプリケーション毎に異なる。
【0023】
図1cは、化学的シミュレーションから得られる3次元分子のプロットである。図1cは軸を含んでいないが、図示された分子の寸法及び立体配置は、おそらくはシミュレーションにより生成された内部浮動小数点波形データの視覚化である。図1cは、データを3次元物体として表わすことができる3次元波形データの一般的なクラスの具体例である。3次元物体により表される個々の波形データ特性は、アプリケーション毎に異なる。
【0024】
図1a、図1b及び図1cは、波形データの広範なクラスの例である。波形データに共通の特性は、これらに限定されるものではないが、以下の事柄を含むことができる。
1.データ値は、整数形式又は浮動小数点形式で表わされる。
2.データ値は、サンプリング・プロセス又はシミュレーションに基づく特定のシーケンスで生じる。
3.データ値は、隣接するデータ値と特定の関係を有する。
4.加算、減算、乗算、除算又は加重平均などの数学的演算は、シーケンス内の隣接するデータ値に対して行われることが多い。
5.隣接するデータ値は、互いに相関することが多い。
【0025】
図2は、波形データ処理のための処理環境を示す。実世界アナログ信号は、センサ又は検出器によりもたらされるものとすることができる。アナログ−デジタル変換器(ADC)120は、実世界アナログ信号110をデジタル化し、デジタル化波形データ125aを生成する。数値プロセッサ140は、単一コア又は多重コア(マルチ・コア)を含むことができる。数値プロセッサ140は、デジタル化波形データ125aに対して数学的演算及び/又は論理演算を行い、随意の中間デジタル結果150及びデジタル処理結果160aを生成する。特定のアプリケーションにおいて、数値プロセッサ140は、デジタル化波形データ125aの代わりに又はこれに加えて、シミュレートされたデジタル波形データ125bを実世界信号シミュレータ130から受信する。特定のアプリケーションにおいて、デジタル化された処理結果160bは、デジタル−アナログ変換器(DAC)163に適用され、実世界アナログ出力165を生成する。多くのアプリケーションにおいて、デジタル化波形データ125a、シミュレートされたデジタル波形データ125b、中間デジタル結果150、デジタル処理結果160a及びデジタル化された処理結果160bは、数値プロセッサ140へと入るとき又はそこから出るときの帯域幅ボトルネックを経る。本発明の実施形態は、波形データに対する帯域幅ボトルネックを低減する。
【0026】
図3は、2つの直接接続されたプロセッサ・コア間の典型的なコア−コア間インターフェースを示す。コア200aとコア200bとは、双方向全二重受信(Rx)−送信(Tx)サブシステムを通じて通信する。コア200aは、送信インターフェース210a及びTxFIFO又はメモリ・バッファ220aを用いて、コア200bに情報を送信する。パケット・ベースの通信の場合、送信チャネル230aは、典型的には最大ペイロード・サイズ(パケット容量)を有するパケットを搬送する。送信インターフェース210aは、この最大ペイロード・サイズより大きいペイロードを、パケット・プロトコルの最大ペイロード・サイズに適合した複数の送信パケット240aに分割する。図5(後述する)は、一般的なパケット・ベースの通信プロトコルに関して典型的なパケット・ペイロード・サイズの一覧を示す。異なる優先度を有するパケットの送信をサポートするために、TxFIFO又はメモリ・バッファ220aは、複数のFIFO又はメモリ・バッファと、複数のFIFO又はメモリ・バッファ220aから所与の瞬間において優先度が最も高いパケットを送信チャネル230aを介して送るメモリ・コントローラ(図示せず)とを含むことができる。コア200bは、RxFIFO又はメモリ・バッファ250a及びRxインターフェース260aを用いて、送信チャネル230aからパケットを受信する。RxFIFO又はメモリ・バッファ260aは、異なる優先度のパケットを保持する受信パケットをバッファ内に一時的に格納する、TxFIFO又はメモリ・バッファ220aに対応する複数のFIFO又はメモリ・バッファを含むことができる。多重優先度コア−コア間インターフェースにより、パケット・プロトコルは、サービス品質(QoS)、実時間、及び優先順位付けされた通信をサポートすることが可能になる。コア200bは、Rxインターフェース260aにより、コア200aから新たに到着したパケットの可用性を通知され、ことによるとコア200aに対する随意的な割込(図示せず)が伴う。コア200bは、Txインターフェース210b、TxFIFO又はメモリ・バッファ220b、送信チャネル230b、送信パケット240b、RxFIFO又はメモリ・インターフェース250b及びRxインターフェース260を含む類似の通信チェーンを通じて、パケットをコア200aに送信する。唯一の違いは、パケット方向である(コア200aからコア200b、又はコア200bからコア200a)。図4は、典型的なパケット240のコンポーネントを示す。パケット・プロトコルは、通常、パケット・ヘッダ242で始まり、パケット・ペイロード244が続き、随意のパケット・トレイラ246で終わる。パケット・ヘッダ242は、特定のパケット・プロトコル又は規格により指定された必須フィールド及び随意フィールドの両方を収容する。必須パケット・フィールドは、通常、パケット開始又は同期インジケータと、パケットのソース(送信元)及び宛先(受信先)の識別子とを含む。随意のパケット・フィールドは、ペイロード・データ型(制御部又はデータ;パケットの優先度など)及びペイロード長を含むことができる。パケット240のデータを搬送する部分は、ペイロード部244又はデータ部と呼ばれる。パケット・プロトコル又は規格に応じて、パケット・ペイロード244は、不変の固定サイズ、ヘッダ242とトレイラ246との間でサイズが変化するペイロード(パケット・ヘッダ242内にパケット長インジケータを含まない)、又はサイズが変化し、その長さがパケット・ヘッダ242に含まれるペイロードを有することができる。ペイロードの内容は、パケット・プロトコル又は規格に応じて様々であるが、ほとんどのパケット・プロトコル又は規格は、バイト(8ビット)、ワード(16ビット)、ロングワード(32ビット)、及び浮動小数点(32ビット又は64ビット)の単位を許容する。ときとして、搬送されるパケット・ペイロードのデータ型は、パケット・プロトコルの下層には知られていないことがある。随意のパケット・トレイラ246は、受信されたパケット内の誤りの検出と可能な訂正とを補助する巡回冗長検査(CRC)、又はパケット終了フィールドを含むことができる。
【0027】
図5は、ヘッダ・フィールド及びペイロード・フィールドの両方を含む、通信プロトコルに関する種々のコンピュータ業界規格を比較する表である。規格は、PCI Express(PCIe)、Ethernet(その種々の形は通常、データ転送速度を含めて、10baseT[10Mbps]、100baseT[100Mbps]、1GbaseT又はGbE[1Gbps]、10GbaseT又は10GbE[10Gps]のように呼ばれる)、HyperTransport、QuickPath Interconnect(QPI)、Infiniband及びRapidIOを含む。これらの規格は、パケット・ベースのプロトコルの例示であり、更なるプロトコルが将来的に開発され得る。図5に示されるように、パケット・ヘッダ長は、4バイトから42バイトまで様々であり、一方、許容されるペイロード・サイズは、0バイトから4096バイトまで様々である。本発明の実施形態は、パケット・ペイロード内に収容される数値データ(整数及び/又は浮動小数点値)を圧縮する。
【0028】
図6aから図6eは、様々なベンダから出ているマルチ・プロセッサの構成を示す。図6の例は、2009年の時点での商用マルチ・コア・プロセッサを例示するものであり、その他のアーキテクチャが将来的に開発され得る。図6aは、Intel Nehalem CPUのアーキテクチャを示す。Intel Nehalem CPUは、1つのダイ上に4つのプロセッサ・コア400a、400b、400c及び400dを収容し、8MBの容量を有する共有キャッシュ402を備える。プロセッサ・コア400a〜400dは、一対のQPIインターフェース404を通じてその他のコンピュータ・システム周辺装置にアクセスする。QPIインターフェース404は、パケット・ベースの通信プロトコルを用いる。本明細書において説明される圧縮は、QPIインターフェース404に組み込むことができる。
【0029】
図6bは、Nvidia GeForce 8800GPUのアーキテクチャを示す。Nvidia GeForce 8800GPUは、8つのマルチ・プロセッサ410a〜410hにグループ分けされる64のプロセッサを含む。各マルチ・プロセッサは、8つのコアを含む。マルチ・プロセッサ410a〜410hは、入力値、中間結果及び出力値を格納し、かつそのような値をコア間で交換するために、分散型レベル1(L1)キャッシュ412及び分散型レベル2(L2)キャッシュ413を利用する。GeForce8800は、ホストCPU414から入力データ値を受信し、出力データ値をホストCPU414へと送信する。本明細書において説明される圧縮は、データ・アセンブラのための、ホスト−GPU通信及びGPU−ホスト通信のコントローラに組み込むことができる。
【0030】
図6cは、AMD/ATIマルチ・コアGPUのアーキテクチャを示す。AMD/ATIGPUは、処理ユニット420a及び420bのような64個のストリーム処理ユニット420を含む。ストリーム処理ユニット420は、読み出し/書き込みキャッシュ422及びストリーム出力バッファ424を共有する。本明細書において説明される圧縮は、読み出し/書き込みキャッシュ422を制御するストリームI/O通信コントローラに組み込むことができる。
【0031】
図6dは、Intel LarrabeeCPUのアーキテクチャを示す。Intel LarrabeeCPUは、各パッケージが32個のプロセッサ・コアを含む4つのLarrabeeプロセッサ・パッケージ430a、430b、430c及び430dを含む。Larrabeeプロセッサ・パッケージ430a、430b、430c及び430dは、複数の共通シリアル相互接続(CSI)バス434を用いて相互接続される。各Larrabeeパッケージ430は、接続されたメモリ・サブシステム432へのアクセスを有する。本明細書において説明される圧縮は、CSIバス・ハードウェアに組み込むことができる。
【0032】
図6eは、IBM Cellブロードバンド・エンジン(CBE)のアーキテクチャを示す。IBM Cellブロードバンド・エンジンは、エレメント・インターコネクト・バス(EIB)446を用いて通信する8つのシナジスティック・プロセッサ・エレメント(SPE)440a〜440hを含む。パワーPCプロセッサ・エレメント(PPE)は、EIB446を介してSPE440aから440hがアクセスすることができるL1キャッシュ442及びL2キャッシュ443を含む。IBM Cellは、FlexIO BICのようなバス・インターフェース・コントローラ(BIC)444を用いて、バス447へのオフチップ・バス・アクセスを行う。メモリ・インターフェース・コントローラ(MIC)445は、オフチップ・メモリ448へのデータ転送を制御する。本明細書で説明される圧縮は、EIB446用コントローラ、MIC445、及びBIC444に組み込むことができる。
【0033】
図7は、3つの商用ネットワーク・オン・チップ(NoC)相互接続の例を示す。NoCは、1つの半導体ダイ上の2つ又はそれ以上のプロセッサを相互接続するために用いられる。図7aは、図6eで紹介されたIBM Cellブロードバンド・エンジンのEIB446を示す。8つのSPE400a〜400hは各々、EIB446に取り付けられ、L1キャッシュ442、L2キャッシュ443及びI/Oインターフェース504も同様に取り付けられる。EIB446は、図7aに示されるように、4つの対向回転(counter−rotating)リングで構成された相互接続ファブリックを実装する。EIBは、IBM Cellクロック・サイクル当たり96バイトまで転送することが可能であり、L1キャッシュ442、L2キャッシュ443及びI/Oインターフェース504から読み出されたデータをプロセッサ400に提供し、又はプロセッサ400により提供されたデータをL1キャッシュ442、L2キャッシュ443及びI/Oインターフェース504にソーシングすることができる。I/Oインターフェース504は、オフチップのデータ転送のためのものであり、BIC444(図6e)を含む。本明細書において説明される圧縮は、EIB446にアクセスするためのメモリ・コントローラ若しくはI/Oインターフェース504用のコントローラ、又はその両方に組み込むことができる。
【0034】
図7bは、Intel Nehalem8−プロセッサ・コアのアーキテクチャを示す。8つのプロセッサ510a〜510hは、2つの対向回転リング516を通じて接続される。オフチップの読み出し及び書き込みは、4つのQPIインターフェース514a〜514dを横断する。本明細書において説明される圧縮は、対向回転リング516へのアクセス用コントローラ、又はオフチップ・コンポーネントへのQIPインターフェース514、又はその両方に組み込むことができる。組み込まれたメモリ・コントローラ(図示せず)は、スケーラブル・メモリ・インターフェースSMI0及びSMI1上でのオフチップ・メモリへの/からのデータ転送を制御する。
【0035】
図7cは、Sonics,Incによって開発されたNoCファブリックを示す。SonicsMX Smart Interconnect526は、CPU520a、DSP520b、及びマルチ・メディア・エンジン(MME)520cがデータ交換することを可能にする。本明細書において説明される圧縮は、SonicsMX Smart Interconnect526に組み入れることができる。
【0036】
図8は、種々のマルチ・プロセッサ構成と、プロセッサ間距離と、その構成におけるプロセッサ間の通信を容易にする最も一般的に用いられるメモリ型式との表である。一般に、パケット・ベースのプロトコルを用いるデータ交換は、プロセッサ間の距離が大きくなるほど、実装されることが多い。同じ半導体ダイ上にあるか、又は同じマルチ・ダイ・パッケージ若しくはマルチ・チップ・モジュール(MCM)内にある2つのプロセッサ間のデータ交換は、通常、共有L1キャッシュ、共有L2キャッシュ又はネットワーク・オン・チップ・インターフェースを用いて行われる。ダイ上又はチップ上のプロセッサは、通常、たかだか数mm単位で隔てられる。2つのプロセッサが、mm〜cm単位で隔てられた別個のチップに配置される場合は、プロセッサは、キャッシュ、FIFO又はRAMを用いてデータ値を交換することができる。2009年の時点では、QPI、HyperTransport、Infiniband及びCSIなどの高速IC相互接続を用いて、分散キャッシュを共有することができる。しかしながら、cm単位で隔てられたプロセッサ間でデータを交換するには、FIFO又はRAMを用いる方が一般的である。プロセッサ間の距離がメートル(m)又はキロメートル(km)にまで増大した場合には、ほとんどの商用の相互接続部は、何らかの形態のパケット・ベースの交換を用いる。パケット・ベースの通信は、QPI及びHyperTransportプロトコルが1mm未満で隔てられたプロセッサ間のキャッシュ・メモリ・データの交換を実装することで証明されるように、コア間の短距離通信にも用いられる。
【0037】
図9は、好ましい実施形態による、圧縮パケットを形成するための波形データ・サンプルの圧縮のブロック図である。入力サンプル600のシーケンスは、構成可能な圧縮器620で圧縮され、圧縮パケット630を生成する。入力サンプル600は、デジタル化波形データ125a、シミュレートされたデジタル波形データ125b、又は中間デジタル結果150を表すものとすることができる。入力サンプル600は、整数形式又は浮動小数点形式を有することができる。典型的なプログラム可能な処理コア又はCPUでは、データ形式はプログラム内で指定することができる。プログラムがデータ形式を指定していない場合には、プロセッサ・コアは、デフォルトのデータ形式を用いる。圧縮制御インターフェース610は、種々のモードでの動作のために、構成可能な圧縮器620に制御パラメータを与える。例えば、制御パラメータは、整数又は浮動小数点圧縮モード、及び無損失又は損失圧縮モードを選択することができる。損失圧縮モードが選択された場合は、圧縮制御インターフェース610は、固定レート圧縮又は固定品質圧縮のための付加的な制御パラメータを含むことができる。例えば、固定レート圧縮では、制御パラメータは、入力データ・ブロックのサイズと圧縮パケット630のペイロード部のサイズとの間の所望の圧縮比を表わすことができる。例えば、固定品質圧縮では、圧縮パラメータは、圧縮パケット630が復元された後に得られる値の信号対雑音比を表わすことができる。構成可能な圧縮器620が、異なるサイズの入力サンプル600のブロック(即ち、連続したサンプルのグループ)を処理するように適応可能である場合は、圧縮制御インターフェース610は、入力ブロックのサイズを制御パラメータによって指定することができる。圧縮パケット630がヘッダを含む場合は、圧縮制御インターフェース610は、パケット・ヘッダ内に、圧縮ブロック・サイズ又は誤り訂正コード(ECC)といったどのようなパラメータが含まれているのかを指定することができる。単一の構成可能な圧縮器620を、整数及び浮動小数点値の両方を処理するように適合させることが可能である。
【0038】
図10は、整数値を圧縮する場合の構成可能な圧縮器620のブロック図である。損失圧縮の場合は、損失圧縮調整プロセッサ622が入力サンプル600上で動作して、調整済入力サンプル623を形成する。無損失圧縮の場合は、損失圧縮調整プロセッサ622は、バイパスされるか又は「無調整」に設定され、調整済入力サンプル623は、入力サンプル600と同じ値を有することになる。損失圧縮調整プロセッサ622は、圧縮及びフィードバック制御ブロック628により、調整制御信号629aを介して制御される。損失圧縮調整プロセッサ622により導入される損失度は、ユーザが圧縮制御インターフェース610を介して選択することができる。代替的に、損失度は、フィードバック・パラメータに基づいて自動的に調整することができる。例えば、固定レート圧縮モードの場合、圧縮パケット・サイズ測定ブロック626が圧縮パケット・サイズ627を計算する。圧縮フィードバック・ブロック628は、圧縮パケット・サイズ627を所望のパケット・サイズと比較して、調整制御信号629aのフィードバック・パラメータを定める。ユーザは、圧縮制御インターフェース610を介して、所望のパケット・サイズを選択することができる。圧縮パケット・サイズ測定ブロック626は、パケット毎の測定パケット・サイズ627を提供することもでき、又は選択可能な出力パケット数にわたって平均された測定パケット・サイズ627を提供することもできる。無損失圧縮器624は、圧縮制御信号629bに従って、調整済入力サンプル623を圧縮する。
【0039】
同一出願人による特許及び出願は、無損失圧縮器624及び損失圧縮調整プロセッサ622において用いることができる様々な圧縮技術を記載する。これらは、引用によりここに組み入れられる、2006年3月7日に発行された、Wegenerによる「Adaptive Compression and Decompression of Bandlimited Signals」と題する特許文献1、引用によりここに組み入れられる、1998年11月17日に発行された、Wegenerによる「Lossless and loss−limited Compression of Sampled Data Signals」と題する特許文献2、及び引用によりここに組み入れられる、2009年10月23日に出願された、Wegenerによる「Block Floating Point Compression of Signal Data」(「BFP圧縮出願」)と題する米国特許出願番号第12/605,245号を含む。
【0040】
圧縮技術には、調整済入力サンプル623の1つ又はそれ以上の微分を計算することによる差分コード化、ブロック浮動小数点ビット・パッキング、ハフマン・コード化、及び無損失圧縮器624を実装することができるその他の無損失圧縮技術が含まれる。無損失圧縮器624は、圧縮パケット630を生成することができ、この圧縮パケット630は、ヘッダ632及び圧縮ペイロード634を含むことができる。ヘッダ632は、圧縮及びフィードバック制御ブロック628により与えられる1つ又はそれ以上の圧縮制御パラメータを含むことができる。ヘッダ632は、圧縮パケット内に収容される圧縮サンプルの整数又は浮動小数点値などのデータ型を示すパラメータ、並びに調整制御信号629a及び圧縮制御信号629bのような値制御パラメータを収容することができる。圧縮及びフィードバック制御ブロック628は、平均又は瞬間圧縮比などの種々の圧縮統計量を示すことができる圧縮ステータス信号615、調整制御信号629a、圧縮制御信号629b、又は構成可能な圧縮器620内での内部的な警告若しくは誤り状態を生成することができる。
【0041】
図11は、圧縮整数データの復元のブロック図である。構成可能な復元器720は、圧縮パケット630を受信する。復元制御ブロック728は、圧縮パケット・ヘッダ632の内容を検査し、復元器724及び損失圧縮調整ブロック722のための制御パラメータをいずれもデコードする。復元器724は、復元制御信号729aの制御下で、図10の損失圧縮器624によって行われた圧縮操作を解除(アンドゥ)する操作を行い、それにより調整入力信号723を再現する。損失復元調整ブロック722は、復元調整信号729bの制御下で、図10の損失圧縮調整ブロック622により行われた調整操作を解除する操作を行う。復元された信号730は、構成可能な復元器720の出力サンプルを表わす。復元制御ブロック728は随意に、平均又は瞬間圧縮比を含むことができるステータス信号715、圧縮制御信号729a、復元調整信号729b、又は復元器720からの内部警告又は誤り信号を生成することができる。
【0042】
図12は、浮動小数点データを圧縮するように構成された構成可能な圧縮器620のブロック図である。浮動小数点データ表現は、3つのフィールド、即ち符号ビット、指数、及び有効数字部(仮数)で構成される。フォーマット・プリプロセッサ(図示せず)は、各々の浮動小数点入力サンプルの符号及び有効数字部から指数を分離して、入力指数603を与える。フォーマット・プリプロセッサは、符号ビットと有効数字部とを組み合わせて、符号及び仮数入力サンプル601を形成する。構成可能な圧縮器620は、図10に関して説明された構成可能な圧縮器620が整数サンプル600を処理するのと同じ方式で、符号及び仮数入力サンプル601を処理する。さらに、構成可能な圧縮器620は、無損失指数圧縮器660及び圧縮ペイロード・マルチプレクサ670を入力指数603に適用する。無損失指数圧縮器660は、圧縮及びフィードバック制御ブロック628からの無損失指数圧縮制御信号629cの制御下で、無損失方式で指数603を圧縮する。無損失指数圧縮器660は、特許文献1、特許文献2及びBFP圧縮出願に記載された技術の1つ又はそれ以上を適用することができる。圧縮制御信号629aは、指数603に適用される圧縮方法、例えばブロック浮動小数点コード化、差分コード化、ハフマン・コード化又は指数603を圧縮するのに適したその他の圧縮技術、を指定する制御パラメータを与えることができる。圧縮ペイロード・マルチプレクサ670は、圧縮された指数ビット665並びに圧縮された符号及び仮数ビット631の圧縮パケット・ペイロード634a内での位置を制御する。圧縮ペイロード・マルチプレクサ670は、図10に関して説明されたように、圧縮及びフィードバック制御ブロック628により制御することができる。
【0043】
図12に示される構成可能な圧縮器620は、整数又は浮動小数点の波形データ値に適用することができる。整数サンプルが圧縮される場合には、指数圧縮器660及び圧縮ペイロード・マルチプレクサ670は使用されず、整数サンプルは、図10の入力サンプル600に類似した符号及び仮数入力サンプル601を与える。浮動小数点サンプルが圧縮される場合には、浮動小数点の指数値が指数603となり、浮動小数点の符号及び仮数値が符号及び仮数入力サンプル601となる。フォーマット・プリプロセッサが入力サンプル600に適用され、指数603と、符号及び仮数サンプル601とを与える。フォーマット・プリプロセッサは、浮動小数点データから抽出された浮動小数点の符号及び仮数と、整数データとに対して共通の形式を与えるので、損失圧縮調整ブロック622及び無損失圧縮器624は、入力サンプル100が整数又は浮動小数点値のどちらで表されているかにかかわらず、同じ形式のデータを受信する。こうすることで、構成可能な圧縮器620を、圧縮及びフィードバック制御ブロック628からの種々の制御信号に従って、整数又は浮動小数点波形データ値のいずれかを圧縮するように構成することができる。
【0044】
図13は、圧縮された浮動小数点データを復元するための構成可能な復元器720のブロック図である。構成可能な復元器720は、圧縮された浮動小数点データを圧縮ペイロード634aとして含む圧縮パケットを受信する。復元器724及び損失復元調整ブロック722は、図11に関して説明されたそれぞれの要素と同じ復元操作を圧縮された符号及び仮数データに適用する。構成可能な復元器720は、ペイロード・デマルチプレクサ870と、圧縮された指数データを処理するための指数復元器860とを含む。圧縮パケット・ヘッダ632aを検査した後、復元コントローラ728は、制御パラメータを、ペイロード・デマルチプレクサ870、復元器724、損失復元調整ブロック722及び指数復元器860に与える。ペイロード・デマルチプレクサ870は、圧縮ペイロード634aを、圧縮された指数ビット865と圧縮された符号及び仮数ビット831とに分離する。分離された、圧縮された符号及び仮数ビット831は、圧縮された整数データ(図11)について説明したのと同様に復元され、調整される。指数復元器860は、指数復元器制御信号729cによって与えられる制御パラメータに従って、圧縮された指数ビット865を復元する。指数復元器720は、復元された指数730bを生成する。復元器724及び損失復元調整ブロック722は、復元された符号及び仮数サンプル730aを生成する。データ・フォーマッタ(図示せず)は、復元された指数730bと、対応する復元された符号及び仮数サンプル730aとを組み合わせて、元の入力サンプル600と同じ浮動小数点形式を有する復元サンプルのシーケンスにすることができる。代替的に、データ・フォーマッタは、復元された指数730b並びに対応する復元された符号及び仮数サンプル730aの形式変換を提供して、元のサンプルとは異なるデータ形式を有する復元サンプルを生成することができる。復元制御ブロック728により生成される種々の復元及び調整制御信号の設定に基づき、随意に圧縮パケット・ヘッダ632a内のヘッダパラメータの制御下で、構成可能な復元器720は、復元された整数波形データ値又は復元された浮動小数点波形データ値を生成することができる。
【0045】
無損失圧縮器624の好ましい実施形態は、無損失差分コード化と、それに続いてブロック浮動小数点ビット・パッキングを適用する。無損失差分コード化の技術は、特許文献1及び特許文献2に記載されている。ブロック浮動小数点ビット・パッキングの技術は、BFP出願に記載されている。差分コード化とそれに続くブロック浮動小数点ビットパキングとを適用することによって、パケット・ベースの波形データ圧縮にとって望ましい、待ち時間が短い圧縮器が実装される。損失圧縮調整ブロック622の好ましい実施形態は、入力サンプル600の絶対値を小さくして、制御可能量の損失を提供する。損失圧縮調整ブロックは、入力サンプル600に対してビットシフタ及び乗算器を適用することにより、サンプルの絶対値を小さくする。ビットシフタと乗算器との組み合わせによって、所望の低複雑度の目標が達成される。
【0046】
構成可能な復元器720の好ましい実施形態において、復元制御器728は、圧縮パケット・ヘッダ632内に収容された制御パラメータをデコードし、復元のためのそれぞれの制御信号729a、729b、及び729cを提供する。圧縮パケットのヘッダ632又は632aの好ましい実施形態は、データ型(整数又は浮動小数点データ)のインジケータ、並びに調整及び圧縮制御パラメータを含む。圧縮パケット・ヘッダ632はまた、圧縮中に保存された仮数ビットの数を含む、そのパケットの圧縮ペイロード全体に適用される制御パラメータを随意に含むこともできる。
【0047】
図14は、図6a、図6e、及び図7bに関して説明されたマルチ・コア・プロセッサにおける構成可能な圧縮器620及び構成可能な復元器720の位置の例を示す。図14aは、図6aのIntel NehalemCPUアーキテクチャにおける圧縮及び復元の組込を示す。構成可能な圧縮器620及び構成可能な復元器720を各QPIインターフェース404のところに組み込んで、送信されるQPIパケットのペイロード用にデータを圧縮し、かつ受信したQPIパケットのペイロードから圧縮データを復元することができる。Nehalemプロセッサに波形データを提供するためのオフチップ入力コントローラ(図示せず)は、入力波形データを圧縮して、QPIパケット用の圧縮ペイロード・データを形成する。QPIインターコネクト・リンク・コントローラ404における復元器720は、圧縮ペイロード・データを復元し、CPUコア400a−dへの転送のためのQPIパケット用のペイロード・データとして復元波形データを与える。図7bに関して説明されたNehalem8−プロセッサ・コアのアーキテクチャの場合、復元ペイロード・データを収容したQPIパケットは、対向回転リング516を介してプロセッサ・コア510a〜510hに転送される。Nehalemアーキテクチャは、オフチップ・コンポーネントへの/からのデータ転送に同じパケット・プロトコルを使用するオンチップ通信の一例である。組み込まれたメモリ・コントローラもまた、オフチップ・メモリに提供される波形データを圧縮し、かつメモリから取り出された圧縮波形データを復元するために、構成可能な圧縮器620及び圧縮回御器720を含むことができる。
【0048】
図14bは、図6eのIBM Cell Broadband Engineのアーキテクチャにおける圧縮及び復元の組込を示す。バス・インターフェース・コントローラ(BIC)444は、オフチップ通信を制御する。構成可能な圧縮器620及び構成可能な復元器720をBIC444のところに組み込んで、送信パケット用の波形データを圧縮し、かつ受信した圧縮パケットを復元することができる。入力データを複数のSPE440a〜440hに与えるために、オフチップ・コントローラ(図示せず)は、BIC444において受信されるバスパケット用の圧縮ペイロード・データを形成するために波形データを圧縮する圧縮器を含む。BIC444における構成可能な復元器720は、圧縮ペイロード・データを復元し、SPE440a〜440hへの転送のためにEIB446に与えられる復元波形データを形成する。構成可能な復元器720は、復元波形データを、EIB446と互換性があるプロトコルを有するパケットに挿入することができる。IBM Cellアーキテクチャは、オフチップのデータ転送とは異なるパケット・プロトコルを用いるオンチップ通信の一例である。処理波形データのオフチップ転送の場合、BIC444とのインターフェースのところにある構成可能な圧縮器620は、SPE440a−hからEIB446を介して転送された処理波形データを圧縮して、外部バス447を通じた送信のための圧縮ペイロード・データを形成する。宛先デバイス(図示せず)におけるオフチップ・コントローラは、受信したバスパケットから圧縮ペイロード・データを抽出及び復元して圧縮波形データを再現する復元器を含む。構成可能な圧縮器620及び復元器720をメモリ・インターフェース・コントローラ(MIC)445に組み込んで、オフチップ・メモリ448への/からの圧縮データ転送を提供することができる。構成可能な圧縮器620及び復元器720は、MIC445及びBIC444とは別に実装することもでき、又はMIC445及びBIC444で共有することもできる。
【0049】
図14cは、Intel Nehalem(図7b)のプロセッサ・コア間の通信のための圧縮及び復元の一例を示す。8つのプロセッサ・コア510a−hは、2つの対向回転リング516を介してデータを転送する。対向回転リング516は、QPIパケット・プロトコルを用いてパケットを転送する。プロセッサ・コア510a−hは、その他の1つ又はそれ以上のコア510a−hへの転送のために波形データを圧縮するそれぞれの構成可能な圧縮器620a−hを含む。転送される波形データは、アプリケーション処理の中間データであり得る。構成可能な圧縮器620a−hは、ペイロード部が圧縮データを収容するQPIパケットを形成する。構成可能な圧縮器620a−hは、圧縮ペイロードを有するQPIパケットを、対向回転リング516を介して、その他のコア510a−hのうちの1つ又はそれ以上に与える。対向回転リング516から受信したデータについて、それぞれの構成可能な復元器720a−hは、受信したQPIパケットの圧縮ペイロードを復元して、それぞれのコア510a−hによるさらなる処理のために中間データ又は波形データを再現する。プロセッサ・コア間の通信に加えて、構成可能な圧縮器6260及び復元器720を、QPIインターフェース514a−d及び/又はメモリ・インターフェースSMI0及びSMI1におけるコントローラに組み込むこともできる。
【0050】
図15は、入力データをプロセッサ・コアに供給する例である。入力コントローラ1800は、サンプル波形データを与えるADC120、シミュレートされた波形データを与えるシミュレータ130又は中間デジタル結果150を与える外部プロセッサなどの、入力データを生成するデバイスに接続することができる(図2参照)。入力コントローラ1800は、プロセッサ・コア1810への転送前に入力データを圧縮する。プロセッサ・コア1810は、特定のアプリケーションの動作を行う前に、受信した入力データに対して復元を適用する。入力コントローラ1800は、圧縮データを複数のプロセッサ・コア(図15には図示せず)に分散させ、その各々が、受信したデータを復元して、アプリケーション処理用の復元データを形成する。
【0051】
図16は、複数のプロセッサ・コア間でデータを通信する例である。ソース・プロセッサ・コア1900a及び1900bは、一部が処理されたデータ又は中間結果をアプリケーションでのさらなる処理のために宛先プロセッサ・コア1900c及び1900dの各々に与えている。ソース・コア1900a、bは、それぞれの、一部が処理されたデータ又は中間結果を圧縮し、それぞれの圧縮データを転送する。宛先コア1900c、dは各々、ソース・コア1900a、bの両方から圧縮データを受信し、復元する。宛先コア1900c、dは、それぞれの処理操作を復元データに適用する。
【0052】
図17は、プロセッサ・コアから出力コントローラへの例示的なデータ転送である。プロセッサ・コア2000は、特定のアプリケーション用の処理波形データを生成する。処理波形データは、そのアプリケーションのための、一部が処理された中間結果又は完全に処理された最終結果を表わすことができる。プロセッサ・コア2000は、処理されたデータを圧縮し、圧縮データを出力コントローラ2010に転送する。出力コントローラ2010は、圧縮データを受信し、復元する。複数のプロセッサ・コア(図示せず)が、処理データを圧縮して出力コントローラ2010に転送することができる。出力コントローラ2010は、さらなる処理又は表示のために、復元データに対して、異なるプロセッサ・コアから受信したデータを集約するなどの付加的な機能を実行することができる。
【0053】
図18は、オフチップ・メモリ又は記憶装置2130に対する読み出し及び書き込みアクセスが圧縮及び復元を用いて改善されたプロセッサ2100を示す。CPU又はコア2105は、オンチップ・メモリ2120、及びオフチップ・メモリ又は記憶装置2130の両方に対してアクセスする。オンチップ・メモリ2120に対するCPU又はコア2105のアクセスは、アドレス及びデータバス2115を介して直接行われる。CPU又はコア2105は、圧縮制御インターフェース610を介して、直接メモリアクセス(DMA)、入力/出力又はメモリ用のコントローラ2110を介したオフチップ・メモリ又は格納部2130への圧縮アクセス(読み出し又は書き込み)を要求する。図9に関して上述したように、圧縮制御インターフェース610は、オフチップ・メモリ又は記憶装置2310への書き込み中に、CPU又はコア2105が、構成可能な圧縮器620に対して、整数又は浮動小数点データを圧縮するための制御パラメータ、無損失又は損失モードでの圧縮のための制御パラメータ、所望の圧縮ブロック・サイズを指定するための制御パラメータ、及びその他の圧縮特定パラメータを与えることを可能にする。構成可能な圧縮器620は、オフチップ・メモリ又は記憶装置2130に格納される圧縮パケットのヘッダ内に制御情報を含めることができる。オフチップ・メモリ又は記憶装置2130からのデータの読み出し中に、構成可能な復元器720は、各圧縮パケットのヘッダ内の制御情報をデコードし、制御パラメータに従った復元操作を用いて、整数又は浮動小数点値を復元する。復元された出力サンプルは、オンチップ・メモリ2120に与えられる。構成可能な圧縮器620は、オフチップ・メモリ又は格納部2130に対するブロック又はパケット・ベース性のアクセスに特に適している。要素2110がDMAコントローラとして実装される場合、大きいデータ・ブロックは、典型的にはオンチップ・メモリ2120とオフチップ・メモリ又は記憶装置2130との間で転送される。本発明は、(ランダム・アクセスの単一値処理とは対照的な)パケット・ベース処理又はストリーム処理の圧縮及び復元に適用することができるので、構成可能な圧縮器620及び構成可能な復元器720は、DMAアクセスに非常に適している。また、CPU又はコア2105は、典型的にはDMAコントローラ2110を介してDMAアクセスを開始するので、データ書き込み中に構成可能な圧縮器620により導入される待ち時間、又はオフチップ・メモリ若しくは記憶装置2130からのデータ読み出し中に構成可能な復元器720により導入される待ち時間は、比較的長い(CPUがオンチップ・メモリ2120にアクセスする場合と比べて長い)DMAトランザクション時間の中に覆い隠すことができる。
【0054】
図19は、1MBデータ・パケットに2:1圧縮を適用した例についての帯域幅改善の表を示す。この例では、1MBデータ・パケットは、整数又は浮動小数点の波形値を収容しているものと仮定する。波形値は、8ビット、16ビット又は32ビット値を収容できるものとし、これは波形サンプル当たり1、2又は4バイトに対応する。同様に、波形値は、32ビット又は64ビット長の浮動小数点値を収容できるものとし、これは浮動小数点波形サンプル当たり4バイト又は8バイトに対応する。図19の列1は例示的なパラメータを示し、列2及び3は、圧縮なしの場合及び2:1圧縮の場合のパラメータ値をそれぞれ含む。列2(圧縮なし)を検討すると、コア1からコア2への1MBデータの転送は、コア1の送信機(Tx)における1ミリ秒(0.001秒)の起動待ち時間と、コア2の受信機(Rx)における1ミリ秒(0.001秒)の完了待ち時間とを含む。1MBの波形データ・パケットは、この例では、コア1とコア2との間の1MB/秒のリンクを用いた転送時間1秒を含めて、1.002秒の合計非圧縮転送時間を要する。対照的に、列3は、元の1MB波形パケットに対して2:1圧縮が適用され、500kBの圧縮データのみが転送される場合における同じパラメータを示す。構成可能な圧縮器620及び構成可能な復元器720は両方とも、圧縮及び復元パイプラインを満たすことにより生じる、付加的な起動待ち時間を有する。この例では、圧縮及び復元待ち時間は、各々、10ミリ秒(0.01秒)と見積もられる。したがって、2:1圧縮を用いると、1MB波形パケットは、コア1とコア2との間の1MB/秒のリンクを用いた転送時間0.5秒を含めて、0.52秒の合計圧縮転送時間を要する。図19の最下行は、2:1圧縮を用いた転送帯域幅が非圧縮転送帯域幅のほぼ2倍であることを示す。
【0055】
マルチ・コア・アプリケーションにおいては、行われる計算作業は、複数のコア間に分散される。多くの波形処理アプリケーションにおいて、整数又は浮動小数点データのいずれかが、様々なネットワーク、バス及びメモリ・インターフェースを用いて複数のコアに分散される。そのようなアプリケーションの合計処理時間は、波形データ・サンプルを多数の処理コアに分散させるのに必要な時間、並びに各コアにおいて計算作業を完了させるのに要する時間の両方に影響を受ける。そのうえ、波形処理は、データが既知のシーケンス又は順序で分散されることを要する場合が多く、その場合、幾つかのコアは、隣接したコアがそこで処理した波形出力結果を配信するのを待機する時間を費やす。I/O時間が減らされれば、計算時間にかかわらず、全ての波形処理アプリケーションについて合計時間は低減することになる。合計時間がコア計算時間よりもI/O(データ交換)時間によって決まるアプリケーションは、「I/Oバウンド」アプリケーションと呼ばれる。本発明は、I/Oバウンド・アプリケーションの合計処理時間を短縮するのに特に有効である。I/Oバウンド・アプリケーションは、本発明による波形データ帯域幅の増大と、波形データ待ち時間の削減との両方から利益を得る。コアが波形入力データを待機して費やす時間も削減される。
【0056】
図20は、N個の処理コアのパイプラインで実行されるI/O及び処理が圧縮によりどのように加速されるかを示す。図20に示す例は、図19で論じたように、コア間パケットの2:1圧縮を仮定する。タイムラインAは、N個のコア間で非圧縮波形データ・パケットを送信する波形データ処理アプリケーションにおける一連のN対の{I/O、計算}矩形を示す。各矩形の幅は、I/O又は計算動作にかかる時間を表わす。タイムラインBは、同じ処理ステップを表すが、各I/Oに対して2:1圧縮を用いている。対応する計算動作COMP1〜COMPNの時間は、タイムラインAに示されるものと同一であり、即ち、両アプリケーションで計算時間は同じであることに留意されたい。しかしながら、I/O又はデータ交換時間は2分の1に削減されるので(2:1圧縮)、タイムラインBにおける総プロセス持続時間はT2であり、これは図20のaでの総プロセス持続時間T1より短い。プロセス持続時間の全体としてのスピードアップ(T1−T2)は、個別のI/O及び計算時間の長さに依存するが、図20は、処理パイプライン内で構成される複数のコア間のI/Oが、本発明の構成可能な、待ち時間の短い、高帯域幅の圧縮及び復元ブロックを用いてコア間のI/Oを加速した場合、波形データ圧縮アプリケーションの完了がより早まることになることを明らかにする。リング、星形及びメッシュなどのその他のマルチ・コア・トポロジに対して本発明の圧縮を適用しても、コア間のデータ交換を加速することができる。
【0057】
図20の例において、計算動作COMP1〜COMPNは、N個のプロセッサ・コア上で実行されるスレッドを表わすことができる。時間間隔[I/O又はXCHG]は、N個のプロセッサ・コアのパイプラインに沿った波形データの通信に要する時間を表わす。[I/O又はXCHG]の時間間隔中、対応するコアは待機モードに入る。図20に示されるように、圧縮は、データ転送にかかる時間を削減するので、それによりコアが待機モードにある時間を削減する。その結果、プロセス全体の持続時間の削減と、コアの計算リソースのより有効な利用という両方の点で、システム性能が改善される。
【0058】
本発明の実施形態は、パケット・ベース又はブロック・ベースのデータ交換を用いてコア間で整数又は浮動小数点データが交換される波形データ・アプリケーションに適している。構成可能なプロセッサ620は、特定のデータ型に適合させることができ、その波形データに対して選択された圧縮モード(無損失又は損失)は受信側コアに送信される。構成可能な圧縮器620は、制御情報を圧縮パケットのヘッダ内に挿入する。構成可能な復元器720は、受信した各圧縮パケットのパケット・ヘッダからデータ型及びその他の制御パラメータを決定する。構成可能な復元器720は、特定の圧縮パケットについてのデータ型、及び圧縮モードなどの制御パラメータに従って、適切な復元操作を圧縮ペイロード・データに適用する。本発明は、様々なネットワーク、バス及び格納部の用途に適しており、これらには、図5において説明されたもの(これらに限定されない)が含まれ、かつ、オンチップ・キャッシュ(レジスタ・ファイル、SRAM又はDRAM)、オフチップSRAM、DRAM、又はフラッシュなどの半導体メモリ、及びディスク又はテープ・ドライブなどの磁気媒体が含まれる。
【0059】
構成可能な圧縮器及び復元器には様々な実装の選択肢がある。好ましい実装形態において、構成可能な圧縮器620は、送信パケット・バッファと同じダイ上に直接組み込まれるので、波形データは、最短の待機時間かつ最高の圧縮及び復元レートでパケット送信用に圧縮される。構成可能な圧縮器620及び構成可能な復元器720は、実時間レートで、即ち、それらがインターフェースするデバイスと少なくとも同じ速さで動作することができ、波形サンプルが供給される速さと同じ速さでこれを圧縮し、波形サンプルが消費される速さと同じ速さでこれを復元する。同様に、好ましい実施形態において、構成可能な復元器720は、受信パケット・バッファと同じダイ上に直接組み込まれるので、パケットが受信されると、波形データは、前述のように最短の待ち時間及び最高の圧縮及び復元レートで復元される。代替的に、構成可能な圧縮器620及び構成可能な復元器720は、送信及び受信コアの命令セットをそれぞれ用いた、速度及び待ち時間が最適化されたアセンブリ言語実装で実装することができる。アセンブリ言語実装は、圧縮波形データ要素毎に複数の命令サイクルを必要とするので、その速度及び待ち時間は、上記の好ましい実装よりかなり高いものになる。
【0060】
マルチ・チップ実装の場合、構成可能な圧縮器620及び/又は構成可能な復元器720は、通信プロセッサが実装されたダイとは別のダイ上(即ちハードウェア内)に実装され、この場合、この別の圧縮及び/又は復元ダイは、通信プロセッサが実装されたダイと同じ基板上にあり、従ってこれと近接している。このマルチ・チップ実装の場合、圧縮器及び復元器のダイは、別個の製品として開発することができ、後で様々な通信プロセッサ・ダイに組み込むことができる。このマルチ・チップ実装の利点は、圧縮器及び/又は復元器ダイを、同一ダイ上の好ましい実装形態よりも低コストで組み込むことを可能にすることであるが、それは、通信プロセッサを収容するダイが、構成可能な圧縮器620及び/又は復元器720を収容するダイよりもかなり大きい(従って、設計及び製造の両方により多くの費用がかかる)場合が多いからである。
【0061】
通信リンクが波形データを一方向に送信する場合のような特定のアプリケーションについては、構成可能な圧縮器620及び構成可能な復元器720を別々のダイに組み込むことができる。そのような条件は、波形データのソースが1つのデバイス(例えばADC又はデータ収集サブシステム)により捕捉され、一方、圧縮された波形データの処理が別のデバイス(例えばFPGA、CPU、GPUなど)により行われるような場合に生じる。他のアプリケーションの場合と同様に、圧縮器は、FPGA、CPU、GPUなどによる波形データの処理と統合することができ、一方、圧縮パケットは、受信され、復元され、得られた波形は、DAC又はその他のアナログ若しくはデジタル信号生成器のような出力サブシステムに与えられる。
【0062】
本明細書において、複数のプロセッサ・コアと、複数のプロセッサ・コア間でデータ・パケットを転送するための通信ファブリックとを有する波形処理システムにおいて用いられる方法が説明され、波形データ・サンプルは、整数形式又は浮動小数点形式で表わされ、この方法は、
波形データ・サンプルのサブセットをプリプロセッサ制御パラメータの制御下で前処理して、圧縮器入力サンプルを生成するステップと、
圧縮器入力サンプルの絶対値を絶対値調整パラメータの制御下で調整して、調整済信号サンプルを生成するステップと、
調整済信号サンプルを圧縮制御パラメータの制御下で圧縮して、圧縮パケット・ペイロード用の圧縮サンプルを生成するステップと、
プリプロセッサ制御パラメータのインジケータ、絶対値制御パラメータのインジケータ、及び圧縮器制御パラメータのインジケータを含むパケット・ヘッダを作成するステップと、
パケット・ヘッダと圧縮パケット・ペイロードとを組み合わせて圧縮パケットにするステップと、
通信ファブリックに対するインターフェースにおいて圧縮パケットを提供するステップと
を含む。
【0063】
付加的な実装の選択肢は以下を含む。構成可能な圧縮器620及び構成可能な復元器720は、ターゲットASIC設計プロセス用のカスタム知的財産(IP)ブロックとして実装することができる。構成可能な圧縮器620及び構成可能な復元器720は、CPU、GPU、DSPチップ又はその他のマルチ・コア・プロセッサ上のソフトウェア内に実装することができる。構成可能な圧縮器620及び構成可能な復元器720は、ネットワーク・オン・チップ、完全接続スイッチ又は部分接続スイッチ実装の一部として実装することができる。
【0064】
構成可能な圧縮器620及び構成可能な復元器720の実施形態は、スループットを改善し、待ち時間を削減し、又は複雑度を減らすよう適合させることも可能である。例えば、複数のプリプロセッサを用いて、浮動小数点{符号,指数,仮数}フィールドを、損失圧縮調整ブロック622及び損失圧縮器624の期待される入力形式に従う形式に変換することができる。次に、待ち時間を削減する、スループットを高める、又は圧縮器若しくは復元器の複雑度を低減する、又はこれらの特徴の全てを組み合わせた特定のプロセッサが選択される。プリプロセッサは、基数2から基数10に変換するなどの進数変換を行うこともでき、このような都合のよい進数変換の理由及び利点は、IEEE−754(2008)浮動小数点データ規格に記載されている。
【0065】
本発明の実施形態をDRAM、DDR、DDR2又はDDR3外部メモリ用のメモリ・コントローラに組み込み、それにより、単一コア又はマルチ・コアCPUの外部の半導体(DRAM、フラッシュ、FRAM等)メモリ内に格納された整数及び浮動小数点の両方の波形データ値を圧縮及び復元する、メモリ・コントローラ用の構成可能な圧縮器を実装することもできる。同様に、本発明を、同一ダイ上(又はマルチ・チップ・モジュール内の同一パッケージ内)のキャッシュ・コントローラに組み込んで、波形データ用の構成可能なキャッシュ・メモリ圧縮器及び復元器を実装することができる。
【0066】
本発明の好ましい実施形態を図示して説明してきたが、本発明は、これらの実施形態のみに限定されるものではないことが明らかであろう。特許請求の範囲に記載された本発明の思想及び範囲から逸脱することのない幾多の修正、変更、バリエーション、置換、及び均等物が、当業者には明らかとなろう。
【符号の説明】
【0067】
600:入力サンプル
610:圧縮制御インターフェース
620:構成可能な圧縮器
623:調整済入力サンプル
627:圧縮パケット・サイズ
629a:調整制御信号
629b:圧縮制御信号
629c:無損失指数圧縮制御信号
630:圧縮パケット
632:ヘッダ
634:ペイロード
670:圧縮ペイロード・マルチプレクサ
720:構成可能な復元器
729a:復元制御信号
729b:復元調整信号
729c:指数復元器制御信号
730:復元された信号
870:ペイロード・デマルチプレクサ
2100:プロセッサ
2115:アドレス及びデータバス
【技術分野】
【0001】
本発明は、多重コア処理アーキテクチャにおける、コンピューティング・コア間のデータ転送のため及びメモリへのデータ書き込みのための波形データの圧縮と、後でコンピューティング・コアにおいてデータを受信するとき又はデータ読み出しのときの復元と、特に整数及び浮動小数点の両方の数値データ型の圧縮に関する。本発明は、全てのデータ型に対して、無損失圧縮モード、固定レート圧縮モード又は固定品質圧縮モードの選択をサポートする。
【背景技術】
【0002】
波形データ処理アプリケーションにおいて、アプリケーション特有の方式で波形データ値を変換するために、マイクロ・プロセッサの中央演算処理装置(CPU)又はその他の信号処理ファブリックは、格納されたプログラムの制下で波形データ値に対して算術演算及び論理演算を行う。入力、中間及び出力波形データ値は、格納部、メモリ又は入力デバイスから取り込まれ、処理され、そして格納部、メモリ又は出力デバイスに与えられる。波形データは、整数及び浮動小数点方式の数値データ型で表わすことができる。そのような波形データ処理アプリケーションの例として、これらに限られないが以下のものが挙げられる。即ち、
携帯電話における移動体電話信号の送受信、
携帯用音声再生装置の音声録音及び再生、
DVDからの圧縮映像の取り込み、圧縮映像の復元、及び表示装置への圧縮映像の送信、
ボイス・レコーダにおけるデジタル化された話し言葉の録音及び再生、及び
化学的、分子的、電気的、又は生物学的プロセスのシミュレーション。
【0003】
波形データ処理産業は、幅広い範囲の波形データ処理エンジン及び波形データ記憶装置を提供する膨大な数の製造業者で構成されている。波形データ処理エンジンは、ほとんどの場合、MPY及びMACのような専用アセンブリ言語命令を用いた積和(MAC)演算をサポートするデジタル信号プロセッサ(DSP)動作可能CPUを用いて実装される。波形処理アプリケーションのためのMPY及びMAC命令を有するCPUを提供する会社としては、Intel Corporation(Pentium、Nehalem、Itanium、Larrabee及びその他のプロセッサを含む、x86命令セットのプロセッサのファミリー)、Nvidiaグラフィック処理ユニット(GPU)、x86互換CPUのAdvance Micro Devices(AMD)ファミリー、AMD/ATI GPU、Texas Instruments(TMS320 DSPファミリー)、Analog Devices(Blackfin、TigerSharc、SHARC及びADSP−21xxファミリー)、Motorola(PowerPC及び56xxxファミリー)、ARM(Cortex、ARM7、ARM9、ARM10及びARM11ファミリー)、MIPS Technology(R2000からR16000、MIPS16、MIPS32、MIPS64及びMIPS DSPファミリー)、Microchip(dsPICファミリー)、IBM(PowerPCファミリー)、及びその他、多数が挙げられる。波形データ処理アプリケーションは、フィールド・プログラマブル・ゲート・アレイ(FPGA)内の論理素子、算術素子、及び記憶素子のプログラム可能なファブリックを用いて実装することもできる。波形データ処理アプリケーションに用いられるFPGAを提供する会社としては、Altera(Cyclone、Arria及びStratixファミリー)、Xilinx(Spartan及びVirtexファミリー)、Actel(Axcelerator及びProASICファミリー)、Lattice(XP、ECP、及びSCファミリー)、及びその他、多数が挙げられる。波形データ処理アプリケーションは、特定の波形データ処理操作を行うように設計された特定用途向け集積回路(ASIC)に含まれている場合もある。ASICベンダとしては、TSMC、UMC、IBM、LSI Logic及びその他、多数が挙げられる。
【0004】
DSP、FPGA、ASIC及びメモリという市場区分は全て、半導体産業の下位区分である。「メモリ」及び「格納部」という用語は、以下の説明において、波形データ処理アプリケーションで用いられる整数又は浮動小数点方式のサンプルデータ値を一時的又は恒久的に格納するデバイス及びサブシステムについて、交換可能に用いられる。波形データのメモリは、以下の半導体カテゴリ、即ち、静的ランダム・アクセス・メモリ(SRAM)、動的ランダム・アクセス・メモリ(DRAM)、2倍速又は4倍速データ転送速度ランダム・アクセス・メモリ(DDR及びQDR)、フラッシュ・メモリ、ソリッド・ステート・ドライブ(SSD)、フラッシュ・ドライブ、ディスク・ドライブ、強磁性ランダム・アクセス・メモリ(FRAM)、キャッシュ・メモリ、及び波形データを格納にするのに用いられるその他の任意の将来的な半導体メモリ、を含むことができる。半導体メモリ又は記憶装置を製造する会社としては、SRAM製造業者のCypress、Dallas Semiconductor、Honeywell、Hynix、IDT、Micron、三菱、NEC、Rencesas、シャープ、ソニー、東芝、UTMC/Aeroflex、White Electronic Design、及びその他、DRAM製造業者のSamsung、Hynix、Micron、Elpida、Nanya、Qimonda、ProMOS、Powerchip及びその他、フラッシュ・メモリ製造業者のSamsung、東芝、Intel、ST Microelectronics、Renesas、Hynix及びその他、FRAM製造業者の富士通、Ramtron及びSamsungが挙げられる。
【0005】
本説明において、「波形データ処理アプリケーション」は、サンプルデータ波形に対して数学的演算及び/又は論理演算を行うアプリケーションを含む。サンプルデータ波形は、多くの場合(これらに限定されないが)、話し言葉、音声、画像、映像又はその他のセンサ出力信号といった実世界のアナログ信号をアナログ−デジタル変換器(ADC)を用いてデジタル化することにより得られる。サンプルデータ信号はまた、シミュレートすることもでき、そして、アナログの話し言葉、音声、画像又は映像信号を生成するために、直接、又は付加的な波形データ処理操作の後で、デジタル−アナログ変換器(DAC)に供給することができる。この説明において、「サンプルデータ波形」は、入力サンプルデータ波形又は中間サンプルデータ波形に対して行われた数学的演算及び/又は論理演算により生成された中間及び/又は最終サンプルデータ波形も含む。
【0006】
波形データは、2つの主要な数値形式、即ち整数形式及び浮動小数点形式で優先的に格納される。整数形式は、符号付き、符号なし、又は符号及び絶対値表現を用いて波形データを表わし、この場合、サンプルデータ値の幅は、典型的には固定されている。波形データ処理に適した一般的な整数形式は、それぞれ{−128,+127}及び{−32768,+32768}の範囲の8ビット及び16ビットの符号付き整数、並びにそれぞれ{0,255}及び{0,65535}の範囲の8ビット及び16ビットの符号なし整数である。代替的に、波形データは、32ビット、64ビット、及び128ビットの浮動小数点形式で表わすことができる。最も一般的な浮動小数点形式は、浮動小数点値に関するIEEE−754規格に準拠する。IEEE−754規格は、初めに1985年に発行され、その後2008年に改訂された。IEEE754規格は、1符号ビット、8指数ビット及び23仮数ビットを用いて、32ビット浮動小数点値(「単精度(float)」又は「単精度float」とも呼ばれる)を表わす。IEEE−754規格は、1符号ビット、11指数ビット及び52仮数ビットを用いて、64ビット浮動小数点値(「倍精度(double)」又は「倍精度float」とも呼ばれる)を表す。16ビット「半精度浮動小数点」のようなその他の浮動小数点表示も存在するが、専用の浮動小数点回路を有するCPU又はDSPプロセッサにおいては通常、単精度及び倍精度に対する操作がサポートされている。そのような回路は、多くの場合、浮動小数点ユニット又はFPUと呼ばれる。多くのアプリケーションにおいて、浮動小数点計算は、浮動小数点データが倍精度形式で表される場合よりも単精度形式で表わされる場合の方が、はるかに高速であり、消費電力もはるかに少ない。
【0007】
波形データ処理アプリケーションに用いられる記憶装置は、様々なアクセス時間を示す。アクセス時間が10ナノ秒未満の最も高速の記憶素子は、通常、プロセッサ・コアと同じ半導体ダイ又は集積回路(IC)上に製作することができるSRAMである。このようなSRAM格納部は、キャッシュ・メモリ、オンチップ・メモリ又はレジスタ・ファイルと呼ばれる。最も低速の半導体記憶素子は、典型的にはフラッシュ・メモリであり、個々のサンプル値データ要素へのアクセス時間は100ナノ秒から1マイクロ秒の範囲である。フラッシュ・メモリの書き込みは、フラッシュ・メモリの読み出しより遅い。メモリ技術は、一般に階層的に配置され、最速の記憶素子がCPU又はDSP処理ファブリックの最も近くに配置され、より低速の記憶素子が、より高速の記憶素子の周りに層状に配置される。「オンチップ」及び「オフチップ」という用語は、CPU又は処理ファブリックに対する格納部の近さを特徴付けるために用いられる形容詞である。オンチップ格納部は、同じ半導体基板上にあるか、又はCPU若しくは処理ファブリックと同じマルチ・チップ・モジュール(MCM)内にパッケージされる。オフチップ格納部は、CPU又は処理ファブリックとは別の集積回路(IC)上に配置される。その他の低速の記憶素子には、ディスク・ドライブ及びテープ・ドライブが含まれ、これらのアクセス時間は数十ミリ秒であり、データ転送速度は典型的に100MB/秒又はそれ以下である。
【0008】
波形データ処理アプリケーションに用いられる層状階層のメモリを想定すると、波形データを処理するアプリケーションが常に目標とするところは、メモリ内に格納されたサンプルデータに対するCPU又は信号処理ファブリックのアクセス時間を改善することである。第2の目標は、波形データを求めるCPU又は信号処理ファブリックの要求と、そのCPU又は信号処理ファブリックに直接アクセス可能なメモリ(典型的にはキャッシュ又はレジスタ・ファイル)内にそのデータが出現するまでの間の待ち時間を減らすことである。第3の目標は、波形データ・プロセッサ・コアをそのメモリ階層に接続するファブリックの複雑さを低減することである。
【0009】
波形処理アプリケーションには、命令及びデータの両方を圧縮及び復元するための技術がある。多くの圧縮又はコード化技術は、1つの波形データ形式のデータのみ、例えば整数データ又は浮動小数点データのみを受け入れることができるが、両方を受け入れることはできない。同様に、多くの圧縮又はコード化技術は、1つの圧縮モードのみ、例えば無損失モード又は損失モードのみを提供するが、両方は提供しない。多くの圧縮又はコード化技術は、話し言葉、音声、画像又は映像といった特定のクラスの波形データにのみ適用可能であり、その他のクラスの波形データに対しては十分な圧縮をもたらさない。多くの圧縮又はコード化技術は、SRAM、DRAM又はフラッシュ用のメモリ・コントローラで典型的に見られる(アドレス,データ)の対に対して動作する。
【0010】
マルチ・コア波形処理システムにおいては、多くの種類の波形データが異なるデータ形式を用いて表わされることがある。特定のアプリケーションのためのプログラムは、典型的にはデータ形式を定義する。マルチ・コア処理アーキテクチャの目的は、一般に大容量データに対して、計算集約的操作を行うことである。計算集約的アプリケーションにおける大容量データの高速転送を可能にするために、コンピューティング・コア間及びコアとメモリとの間の伝送のための波形データの圧縮が必要とされる。
【0011】
本説明では、集積回路(IC)とチップという用語を、1つ又はそれ以上の電子ダイを収容する、電子的又は光学的な接続部(ピン、リード、ポート等)を備えた単一のパッケージを指すために相互交換可能に用いる。電子ダイ又は半導体ダイは、集積回路及び半導体デバイスを含む半導体基板である。ダイは、単一のコア又は複数のコアを有することができる。コアは、任意のタイプのデータ・プロセッサ用の処理ユニットとすることができる。例えば、プロセッサ・コアは、中央演算処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィック処理ユニット(GPU)、マイクロ・コントローラ・ユニット(MCU)、通信プロセッサ又は任意のタイプの処理ユニットとすることができる。単一のダイ上の個々のコアは、同じタイプの処理ユニットの場合もあり、又はアプリケーションに適した異なるタイプの処理ユニットの組み合わせの場合もある。このような処理ユニットは(これらに限られないが)、メモリ・コントローラ、直接メモリアクセス(DMA)コントローラ、ネットワーク・コントローラ、キャッシュ・コントローラ、及び浮動小数点ユニット(FPU)を含むことができる。このような処理ユニットは、同じダイ上に1つ又はそれ以上のプロセッサ・コアと共に組み込まれる場合もあり、又はプロセッサ・コアとは別のダイ上に置かれる場合もある。
【0012】
本記述において、圧縮に適用される「実時間」は、デジタル信号が、デジタル信号のサンプリングレートと少なくとも同じ速さのレートで圧縮されることを意味する。属性「実時間」はまた、デジタル信号の処理、転送及び格納の速度を、元の信号収集速度すなわちサンプリングレートと比較して記述することもできる。サンプリングレートは、ADC又はDACが、デジタル信号とアナログ信号との間での変換中にサンプルを形成するレートである。非圧縮でサンプリングされた又はデジタルの信号のビットレートは、サンプル毎のビット数にサンプリングレートを乗じたものである。圧縮レートは、圧縮サンプルのビットレートに対する元の信号サンプルのビットレートの比率である。実時間システムの機能をシミュレートする波形データ処理アプリケーションにおいて、波形データ値のシーケンスに対して行われる操作のシーケンスは、実時間処理シーケンスと同一のものとすることができるが、処理が行われる速度は、「実時間」よりも低速とすることができる。本説明は、シミュレートされた波形データ処理アプリケーションのようなアプリケーションに言及する。
【0013】
本説明は、種々の通信ファブリックに言及する。通信ファブリックは、2つ又はそれ以上の処理コアが互いに通信することを可能にする2つのコア間の任意の接続部である。通信ファブリックの例として、バス、ネットワーク、印刷回路基板上のトレース、送信機及び受信機を含む無線リンク、スイッチ、ネットワーク・インターフェース・カード(NIC)、ルータ、ネットワーク・オン・チップ、又は2つのプロセッサ・コア間のその他の任意の有線又は無線接続部が挙げられる。
【0014】
本説明は、無損失圧縮及び損失圧縮に言及する。無損失圧縮において、復元サンプルは、元のサンプルと同一の値を有する。幾つかのアプリケーションにおいて、損失圧縮は、必然的にビットレートの十分な低減をもたらす場合がある。損失圧縮において、復元サンプルは、元のサンプルと似ているが同一ではない。損失圧縮は、圧縮サンプルのビットレートと復元サンプルにおける歪みとの間でトレードオフを生じさせる。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】米国特許第7,009,533号明細書
【特許文献2】米国特許第5,839,100号明細書
【発明の概要】
【発明が解決しようとする課題】
【0016】
本発明の実施形態は、上記の従来の問題を考慮して作成されたものである。本発明の目的は、以下を含む。
(A)マルチ・コア処理システム内のプロセッサ・コア間での転送のための、2つ又はそれ以上のプロセッサ・コアにおける波形データの圧縮。
(B)プロセッサ・コアと波形データ・メモリ階層の要素との間での転送のための、プロセッサ・コア又はCPUにおける波形データの圧縮。
(C)入力コントローラから複数のプロセッサ・コアへの分散のための、波形データの圧縮。
(D)圧縮データを出力コントローラに転送するための、1つ又はそれ以上のプロセッサ・コアにおける処理波形データの圧縮。
(E)受信側CPUにおける、送信側CPU、入力コントローラ又はメモリから受信した圧縮データの復元。
(F)処理波形データを再現するための、出力コントローラにおける圧縮データの復元。
(G)マルチ・コア処理環境における、整数及び浮動小数点データ形式の波形データの構成可能な圧縮及び復元。
(H)単一プロセッサ・コアにおける、メモリからの転送又は取り込みのための整数及び浮動小数点データ形式の波形データの構成可能な圧縮及び復元。
(I)整数及び浮動小数点データ形式を圧縮するための動作モードを有する、単一の構成可能な圧縮器。
(J)予め圧縮されたデータから整数及び浮動小数点データを再現するための動作モードを有する、単一の構成可能な復元器。
(K)パケット・ベースの通信インターフェースを介した圧縮波形データの伝送のために、データ・パケットの圧縮ペイロードを形成する圧縮器。
(L)パケット・ベースの通信インターフェースから圧縮ペイロード・データを取り込み、対応する波形データを再現する復元器。
(M)ユーザ制御下又は自動選択の下で、無損失又は損失圧縮を適用するように圧縮器を構成すること。
(N)制御パラメータに従って、無損失又は損失復元を適用するように復元器を構成すること。
(O)固定圧縮ビットレートを有する圧縮データを生成するように圧縮操作を適合すること。
(P)固定品質基準を有する圧縮データを生成するように圧縮操作を適合すること。
【課題を解決するための手段】
【0017】
波形データの圧縮は、マルチ・コア処理システムのリソースを節約することにより、幾つもの利点を提供する。マルチ・コア処理システムにおいては、入力、中間及び出力波形データは、多くの場合、コア間で共有され、交換される。圧縮は、そのような波形データを2つ又はそれ以上のコア間で交換するのに必要な待ち時間及び帯域幅を低減する。圧縮は、波形データをプロセッサ・コア間で伝送するのに必要な電力及び領域を低減する。さらなる利点は、複数のプロセッサが波形データを交換できるようにするために必要なピンの数及び印刷回路基板のトレース領域を減らすことである。圧縮は、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減し、それによりメモリの有効容量を増大させる。波形データの圧縮は、波形データをCPUと波形データ・メモリ階層の要素との間で転送するときのアクセス時間及び待ち時間の両方を短くする。要するに、本発明の利点として、単一又はマルチ・コア処理環境において波形データを交換する圧縮送信機及び復元受信機の複雑度、費用及び電力を削減することが挙げられる。
【0018】
波形データは、複数のプロセッサ・コア上で並列して実行される複数のスレッドが共同で用いることができる。実行を続けるために波形データの一部を必要とする1つのコア上のスレッドが、別のコア上のスレッドがデータの処理を完了させて、これを待機スレッドに送るのを待機しているときには、複数のスレッドが強制的に待機モードに入れられることがある。これらの待機モードは、共通の波形データに対して並列に動作する複数のスレッドを実行するマルチ・プロセッサ・システムの場合の重大な性能のボトルネックである。処理コア間での共通の波形データの通信に必要とされる時間、及び共通波形データがマルチ・プロセッサ・システムの入力及び出力リソースと通信するのに必要な時間が、この重大な性能のボトルネックに関与する。
【図面の簡単な説明】
【0019】
【図1a】波形データの1つのクラスを示す。
【図1b】波形データの1つのクラスを示す。
【図1c】波形データの1つのクラスを示す。
【図2】波形データ処理アプリケーションにおける共通的な要素を示す。
【図3】2つの処理要素間の双方向のパケット・ベースの波形データ交換パイプラインを示す。
【図4】データの交換に用いられるパケット内の典型的なフィールドを示す。
【図5】業界規格に準拠したパケット・ベースのプロトコルの表を含む。
【図6a】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6b】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6c】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6d】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図6e】様々な半導体及びCPUベンダにより提供される波形データ処理に適したマルチ・コア製品を示す。
【図7a】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ(NoC)ファブリックを示す。
【図7b】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ(NoC)ファブリックを示す。
【図7c】処理要素間で非圧縮又は圧縮波形データを搬送するのに適したネットワーク・オン・チップ(NoC)ファブリックを示す。
【図8】マルチ・コア構成、コア間距離、及びメモリタイプを互いに関連付ける表を含む。
【図9】共同して、波形データ処理アプリケーションにおいて複数のコア間で共有される波形データを圧縮するのに適した、本発明の主要なシステムコンポーネントを示す。
【図10】整数波形データの圧縮に適した圧縮器を示す。
【図11】圧縮された整数波形データの復元に適した復元器を示す。
【図12】浮動小数点波形データの圧縮に適した圧縮器を示す。
【図13】圧縮された浮動小数点波形データの復元に適した復元器を示す。
【図14a】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図14b】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図14c】既存のマルチ・コア波形データ・プロセッサにおける本発明の構成可能な圧縮器及び復元器の例示的な組込を示す。
【図15】入力データをプロセッサ・コアに供給する例である。
【図16】複数のプロセッサ・コア間でデータを通信する例である。
【図17】プロセッサ・コアから出力コントローラへの例示的なデータ転送である。
【図18】オフチップ・メモリ・アクセスのために圧縮及び復元を用いた、改善されたDMA、入力/出力又はメモリ用のコントローラを示す。
【図19】データ転送時間の例を圧縮ありの場合及び圧縮なしの場合とで比較する表を含む。
【図20】マルチ・パケット・データセットの入力/出力時間の削減に伴う処理時間の削減を示す。
【発明を実施するための形態】
【0020】
本発明は、マルチ・コア処理環境における波形データの構成可能な圧縮及び復元に関する。マルチ・コア処理システムにおいて、各コアは、波形データのサブセットの別々の計算を行うことができる。入力、中間及び出力波形データを、コアとメモリ階層との間で共有し、交換することができる。本発明は、2つ又はそれ以上のコア間でそのような波形データを交換するのに必要な待ち時間及び帯域幅の両方を低減させる。本発明はまた、メモリ又は格納部での書き込み中に波形データを圧縮し、メモリ又は格納部での読み出し中に波形データを復元することにより、波形データを半導体又は磁気メモリ内に保持するのに必要なメモリ又は格納部を削減するのにも適している。
【0021】
図1は、3つの波形データの例を示す。図1aは、レーダ又は超音波アプリケーションで用いられる信号パルスに典型的なパルス波形のグラフを示す。図1aの波形データは、y軸上の値の範囲で示されるように、{−128,+127}の範囲の8ビットの符号付き整数値として処理されている。図1aのx軸は、およそ3500サンプルが波形データパルスを構成することを示す。図1aは、一方の軸が時間と共に変化する信号特性を表わし、二つめの軸が典型的には時間次元(時間又はサンプルカウント)を表わす、2次元波形データの一般的なクラスの具体例である。2次元波形データ・グラフにより表される個々の波形データ特性は、アプリケーション毎に異なる。
【0022】
図1bは、科学的又は数学的アプリケーション用に計算された曲面の3次元グラフを示す。z軸は、波形データ値が浮動小数点形式であり、{−2.0,+2.0}の範囲内にあることを示す。x軸及びy軸の値は、それぞれ、{−1,+1}及び{−2,+2}の範囲内にある。図1bは、縦軸が時間と共に変化する信号特性を表わし、第2及び第3の軸が2つのその他の次元(おそらくは2次元グリッド上の空間的位置)を表わす、3次元波形データの一般的なクラスの具体例である。3次元波形データのグラフにより表される個々の波形データ特性は、アプリケーション毎に異なる。
【0023】
図1cは、化学的シミュレーションから得られる3次元分子のプロットである。図1cは軸を含んでいないが、図示された分子の寸法及び立体配置は、おそらくはシミュレーションにより生成された内部浮動小数点波形データの視覚化である。図1cは、データを3次元物体として表わすことができる3次元波形データの一般的なクラスの具体例である。3次元物体により表される個々の波形データ特性は、アプリケーション毎に異なる。
【0024】
図1a、図1b及び図1cは、波形データの広範なクラスの例である。波形データに共通の特性は、これらに限定されるものではないが、以下の事柄を含むことができる。
1.データ値は、整数形式又は浮動小数点形式で表わされる。
2.データ値は、サンプリング・プロセス又はシミュレーションに基づく特定のシーケンスで生じる。
3.データ値は、隣接するデータ値と特定の関係を有する。
4.加算、減算、乗算、除算又は加重平均などの数学的演算は、シーケンス内の隣接するデータ値に対して行われることが多い。
5.隣接するデータ値は、互いに相関することが多い。
【0025】
図2は、波形データ処理のための処理環境を示す。実世界アナログ信号は、センサ又は検出器によりもたらされるものとすることができる。アナログ−デジタル変換器(ADC)120は、実世界アナログ信号110をデジタル化し、デジタル化波形データ125aを生成する。数値プロセッサ140は、単一コア又は多重コア(マルチ・コア)を含むことができる。数値プロセッサ140は、デジタル化波形データ125aに対して数学的演算及び/又は論理演算を行い、随意の中間デジタル結果150及びデジタル処理結果160aを生成する。特定のアプリケーションにおいて、数値プロセッサ140は、デジタル化波形データ125aの代わりに又はこれに加えて、シミュレートされたデジタル波形データ125bを実世界信号シミュレータ130から受信する。特定のアプリケーションにおいて、デジタル化された処理結果160bは、デジタル−アナログ変換器(DAC)163に適用され、実世界アナログ出力165を生成する。多くのアプリケーションにおいて、デジタル化波形データ125a、シミュレートされたデジタル波形データ125b、中間デジタル結果150、デジタル処理結果160a及びデジタル化された処理結果160bは、数値プロセッサ140へと入るとき又はそこから出るときの帯域幅ボトルネックを経る。本発明の実施形態は、波形データに対する帯域幅ボトルネックを低減する。
【0026】
図3は、2つの直接接続されたプロセッサ・コア間の典型的なコア−コア間インターフェースを示す。コア200aとコア200bとは、双方向全二重受信(Rx)−送信(Tx)サブシステムを通じて通信する。コア200aは、送信インターフェース210a及びTxFIFO又はメモリ・バッファ220aを用いて、コア200bに情報を送信する。パケット・ベースの通信の場合、送信チャネル230aは、典型的には最大ペイロード・サイズ(パケット容量)を有するパケットを搬送する。送信インターフェース210aは、この最大ペイロード・サイズより大きいペイロードを、パケット・プロトコルの最大ペイロード・サイズに適合した複数の送信パケット240aに分割する。図5(後述する)は、一般的なパケット・ベースの通信プロトコルに関して典型的なパケット・ペイロード・サイズの一覧を示す。異なる優先度を有するパケットの送信をサポートするために、TxFIFO又はメモリ・バッファ220aは、複数のFIFO又はメモリ・バッファと、複数のFIFO又はメモリ・バッファ220aから所与の瞬間において優先度が最も高いパケットを送信チャネル230aを介して送るメモリ・コントローラ(図示せず)とを含むことができる。コア200bは、RxFIFO又はメモリ・バッファ250a及びRxインターフェース260aを用いて、送信チャネル230aからパケットを受信する。RxFIFO又はメモリ・バッファ260aは、異なる優先度のパケットを保持する受信パケットをバッファ内に一時的に格納する、TxFIFO又はメモリ・バッファ220aに対応する複数のFIFO又はメモリ・バッファを含むことができる。多重優先度コア−コア間インターフェースにより、パケット・プロトコルは、サービス品質(QoS)、実時間、及び優先順位付けされた通信をサポートすることが可能になる。コア200bは、Rxインターフェース260aにより、コア200aから新たに到着したパケットの可用性を通知され、ことによるとコア200aに対する随意的な割込(図示せず)が伴う。コア200bは、Txインターフェース210b、TxFIFO又はメモリ・バッファ220b、送信チャネル230b、送信パケット240b、RxFIFO又はメモリ・インターフェース250b及びRxインターフェース260を含む類似の通信チェーンを通じて、パケットをコア200aに送信する。唯一の違いは、パケット方向である(コア200aからコア200b、又はコア200bからコア200a)。図4は、典型的なパケット240のコンポーネントを示す。パケット・プロトコルは、通常、パケット・ヘッダ242で始まり、パケット・ペイロード244が続き、随意のパケット・トレイラ246で終わる。パケット・ヘッダ242は、特定のパケット・プロトコル又は規格により指定された必須フィールド及び随意フィールドの両方を収容する。必須パケット・フィールドは、通常、パケット開始又は同期インジケータと、パケットのソース(送信元)及び宛先(受信先)の識別子とを含む。随意のパケット・フィールドは、ペイロード・データ型(制御部又はデータ;パケットの優先度など)及びペイロード長を含むことができる。パケット240のデータを搬送する部分は、ペイロード部244又はデータ部と呼ばれる。パケット・プロトコル又は規格に応じて、パケット・ペイロード244は、不変の固定サイズ、ヘッダ242とトレイラ246との間でサイズが変化するペイロード(パケット・ヘッダ242内にパケット長インジケータを含まない)、又はサイズが変化し、その長さがパケット・ヘッダ242に含まれるペイロードを有することができる。ペイロードの内容は、パケット・プロトコル又は規格に応じて様々であるが、ほとんどのパケット・プロトコル又は規格は、バイト(8ビット)、ワード(16ビット)、ロングワード(32ビット)、及び浮動小数点(32ビット又は64ビット)の単位を許容する。ときとして、搬送されるパケット・ペイロードのデータ型は、パケット・プロトコルの下層には知られていないことがある。随意のパケット・トレイラ246は、受信されたパケット内の誤りの検出と可能な訂正とを補助する巡回冗長検査(CRC)、又はパケット終了フィールドを含むことができる。
【0027】
図5は、ヘッダ・フィールド及びペイロード・フィールドの両方を含む、通信プロトコルに関する種々のコンピュータ業界規格を比較する表である。規格は、PCI Express(PCIe)、Ethernet(その種々の形は通常、データ転送速度を含めて、10baseT[10Mbps]、100baseT[100Mbps]、1GbaseT又はGbE[1Gbps]、10GbaseT又は10GbE[10Gps]のように呼ばれる)、HyperTransport、QuickPath Interconnect(QPI)、Infiniband及びRapidIOを含む。これらの規格は、パケット・ベースのプロトコルの例示であり、更なるプロトコルが将来的に開発され得る。図5に示されるように、パケット・ヘッダ長は、4バイトから42バイトまで様々であり、一方、許容されるペイロード・サイズは、0バイトから4096バイトまで様々である。本発明の実施形態は、パケット・ペイロード内に収容される数値データ(整数及び/又は浮動小数点値)を圧縮する。
【0028】
図6aから図6eは、様々なベンダから出ているマルチ・プロセッサの構成を示す。図6の例は、2009年の時点での商用マルチ・コア・プロセッサを例示するものであり、その他のアーキテクチャが将来的に開発され得る。図6aは、Intel Nehalem CPUのアーキテクチャを示す。Intel Nehalem CPUは、1つのダイ上に4つのプロセッサ・コア400a、400b、400c及び400dを収容し、8MBの容量を有する共有キャッシュ402を備える。プロセッサ・コア400a〜400dは、一対のQPIインターフェース404を通じてその他のコンピュータ・システム周辺装置にアクセスする。QPIインターフェース404は、パケット・ベースの通信プロトコルを用いる。本明細書において説明される圧縮は、QPIインターフェース404に組み込むことができる。
【0029】
図6bは、Nvidia GeForce 8800GPUのアーキテクチャを示す。Nvidia GeForce 8800GPUは、8つのマルチ・プロセッサ410a〜410hにグループ分けされる64のプロセッサを含む。各マルチ・プロセッサは、8つのコアを含む。マルチ・プロセッサ410a〜410hは、入力値、中間結果及び出力値を格納し、かつそのような値をコア間で交換するために、分散型レベル1(L1)キャッシュ412及び分散型レベル2(L2)キャッシュ413を利用する。GeForce8800は、ホストCPU414から入力データ値を受信し、出力データ値をホストCPU414へと送信する。本明細書において説明される圧縮は、データ・アセンブラのための、ホスト−GPU通信及びGPU−ホスト通信のコントローラに組み込むことができる。
【0030】
図6cは、AMD/ATIマルチ・コアGPUのアーキテクチャを示す。AMD/ATIGPUは、処理ユニット420a及び420bのような64個のストリーム処理ユニット420を含む。ストリーム処理ユニット420は、読み出し/書き込みキャッシュ422及びストリーム出力バッファ424を共有する。本明細書において説明される圧縮は、読み出し/書き込みキャッシュ422を制御するストリームI/O通信コントローラに組み込むことができる。
【0031】
図6dは、Intel LarrabeeCPUのアーキテクチャを示す。Intel LarrabeeCPUは、各パッケージが32個のプロセッサ・コアを含む4つのLarrabeeプロセッサ・パッケージ430a、430b、430c及び430dを含む。Larrabeeプロセッサ・パッケージ430a、430b、430c及び430dは、複数の共通シリアル相互接続(CSI)バス434を用いて相互接続される。各Larrabeeパッケージ430は、接続されたメモリ・サブシステム432へのアクセスを有する。本明細書において説明される圧縮は、CSIバス・ハードウェアに組み込むことができる。
【0032】
図6eは、IBM Cellブロードバンド・エンジン(CBE)のアーキテクチャを示す。IBM Cellブロードバンド・エンジンは、エレメント・インターコネクト・バス(EIB)446を用いて通信する8つのシナジスティック・プロセッサ・エレメント(SPE)440a〜440hを含む。パワーPCプロセッサ・エレメント(PPE)は、EIB446を介してSPE440aから440hがアクセスすることができるL1キャッシュ442及びL2キャッシュ443を含む。IBM Cellは、FlexIO BICのようなバス・インターフェース・コントローラ(BIC)444を用いて、バス447へのオフチップ・バス・アクセスを行う。メモリ・インターフェース・コントローラ(MIC)445は、オフチップ・メモリ448へのデータ転送を制御する。本明細書で説明される圧縮は、EIB446用コントローラ、MIC445、及びBIC444に組み込むことができる。
【0033】
図7は、3つの商用ネットワーク・オン・チップ(NoC)相互接続の例を示す。NoCは、1つの半導体ダイ上の2つ又はそれ以上のプロセッサを相互接続するために用いられる。図7aは、図6eで紹介されたIBM Cellブロードバンド・エンジンのEIB446を示す。8つのSPE400a〜400hは各々、EIB446に取り付けられ、L1キャッシュ442、L2キャッシュ443及びI/Oインターフェース504も同様に取り付けられる。EIB446は、図7aに示されるように、4つの対向回転(counter−rotating)リングで構成された相互接続ファブリックを実装する。EIBは、IBM Cellクロック・サイクル当たり96バイトまで転送することが可能であり、L1キャッシュ442、L2キャッシュ443及びI/Oインターフェース504から読み出されたデータをプロセッサ400に提供し、又はプロセッサ400により提供されたデータをL1キャッシュ442、L2キャッシュ443及びI/Oインターフェース504にソーシングすることができる。I/Oインターフェース504は、オフチップのデータ転送のためのものであり、BIC444(図6e)を含む。本明細書において説明される圧縮は、EIB446にアクセスするためのメモリ・コントローラ若しくはI/Oインターフェース504用のコントローラ、又はその両方に組み込むことができる。
【0034】
図7bは、Intel Nehalem8−プロセッサ・コアのアーキテクチャを示す。8つのプロセッサ510a〜510hは、2つの対向回転リング516を通じて接続される。オフチップの読み出し及び書き込みは、4つのQPIインターフェース514a〜514dを横断する。本明細書において説明される圧縮は、対向回転リング516へのアクセス用コントローラ、又はオフチップ・コンポーネントへのQIPインターフェース514、又はその両方に組み込むことができる。組み込まれたメモリ・コントローラ(図示せず)は、スケーラブル・メモリ・インターフェースSMI0及びSMI1上でのオフチップ・メモリへの/からのデータ転送を制御する。
【0035】
図7cは、Sonics,Incによって開発されたNoCファブリックを示す。SonicsMX Smart Interconnect526は、CPU520a、DSP520b、及びマルチ・メディア・エンジン(MME)520cがデータ交換することを可能にする。本明細書において説明される圧縮は、SonicsMX Smart Interconnect526に組み入れることができる。
【0036】
図8は、種々のマルチ・プロセッサ構成と、プロセッサ間距離と、その構成におけるプロセッサ間の通信を容易にする最も一般的に用いられるメモリ型式との表である。一般に、パケット・ベースのプロトコルを用いるデータ交換は、プロセッサ間の距離が大きくなるほど、実装されることが多い。同じ半導体ダイ上にあるか、又は同じマルチ・ダイ・パッケージ若しくはマルチ・チップ・モジュール(MCM)内にある2つのプロセッサ間のデータ交換は、通常、共有L1キャッシュ、共有L2キャッシュ又はネットワーク・オン・チップ・インターフェースを用いて行われる。ダイ上又はチップ上のプロセッサは、通常、たかだか数mm単位で隔てられる。2つのプロセッサが、mm〜cm単位で隔てられた別個のチップに配置される場合は、プロセッサは、キャッシュ、FIFO又はRAMを用いてデータ値を交換することができる。2009年の時点では、QPI、HyperTransport、Infiniband及びCSIなどの高速IC相互接続を用いて、分散キャッシュを共有することができる。しかしながら、cm単位で隔てられたプロセッサ間でデータを交換するには、FIFO又はRAMを用いる方が一般的である。プロセッサ間の距離がメートル(m)又はキロメートル(km)にまで増大した場合には、ほとんどの商用の相互接続部は、何らかの形態のパケット・ベースの交換を用いる。パケット・ベースの通信は、QPI及びHyperTransportプロトコルが1mm未満で隔てられたプロセッサ間のキャッシュ・メモリ・データの交換を実装することで証明されるように、コア間の短距離通信にも用いられる。
【0037】
図9は、好ましい実施形態による、圧縮パケットを形成するための波形データ・サンプルの圧縮のブロック図である。入力サンプル600のシーケンスは、構成可能な圧縮器620で圧縮され、圧縮パケット630を生成する。入力サンプル600は、デジタル化波形データ125a、シミュレートされたデジタル波形データ125b、又は中間デジタル結果150を表すものとすることができる。入力サンプル600は、整数形式又は浮動小数点形式を有することができる。典型的なプログラム可能な処理コア又はCPUでは、データ形式はプログラム内で指定することができる。プログラムがデータ形式を指定していない場合には、プロセッサ・コアは、デフォルトのデータ形式を用いる。圧縮制御インターフェース610は、種々のモードでの動作のために、構成可能な圧縮器620に制御パラメータを与える。例えば、制御パラメータは、整数又は浮動小数点圧縮モード、及び無損失又は損失圧縮モードを選択することができる。損失圧縮モードが選択された場合は、圧縮制御インターフェース610は、固定レート圧縮又は固定品質圧縮のための付加的な制御パラメータを含むことができる。例えば、固定レート圧縮では、制御パラメータは、入力データ・ブロックのサイズと圧縮パケット630のペイロード部のサイズとの間の所望の圧縮比を表わすことができる。例えば、固定品質圧縮では、圧縮パラメータは、圧縮パケット630が復元された後に得られる値の信号対雑音比を表わすことができる。構成可能な圧縮器620が、異なるサイズの入力サンプル600のブロック(即ち、連続したサンプルのグループ)を処理するように適応可能である場合は、圧縮制御インターフェース610は、入力ブロックのサイズを制御パラメータによって指定することができる。圧縮パケット630がヘッダを含む場合は、圧縮制御インターフェース610は、パケット・ヘッダ内に、圧縮ブロック・サイズ又は誤り訂正コード(ECC)といったどのようなパラメータが含まれているのかを指定することができる。単一の構成可能な圧縮器620を、整数及び浮動小数点値の両方を処理するように適合させることが可能である。
【0038】
図10は、整数値を圧縮する場合の構成可能な圧縮器620のブロック図である。損失圧縮の場合は、損失圧縮調整プロセッサ622が入力サンプル600上で動作して、調整済入力サンプル623を形成する。無損失圧縮の場合は、損失圧縮調整プロセッサ622は、バイパスされるか又は「無調整」に設定され、調整済入力サンプル623は、入力サンプル600と同じ値を有することになる。損失圧縮調整プロセッサ622は、圧縮及びフィードバック制御ブロック628により、調整制御信号629aを介して制御される。損失圧縮調整プロセッサ622により導入される損失度は、ユーザが圧縮制御インターフェース610を介して選択することができる。代替的に、損失度は、フィードバック・パラメータに基づいて自動的に調整することができる。例えば、固定レート圧縮モードの場合、圧縮パケット・サイズ測定ブロック626が圧縮パケット・サイズ627を計算する。圧縮フィードバック・ブロック628は、圧縮パケット・サイズ627を所望のパケット・サイズと比較して、調整制御信号629aのフィードバック・パラメータを定める。ユーザは、圧縮制御インターフェース610を介して、所望のパケット・サイズを選択することができる。圧縮パケット・サイズ測定ブロック626は、パケット毎の測定パケット・サイズ627を提供することもでき、又は選択可能な出力パケット数にわたって平均された測定パケット・サイズ627を提供することもできる。無損失圧縮器624は、圧縮制御信号629bに従って、調整済入力サンプル623を圧縮する。
【0039】
同一出願人による特許及び出願は、無損失圧縮器624及び損失圧縮調整プロセッサ622において用いることができる様々な圧縮技術を記載する。これらは、引用によりここに組み入れられる、2006年3月7日に発行された、Wegenerによる「Adaptive Compression and Decompression of Bandlimited Signals」と題する特許文献1、引用によりここに組み入れられる、1998年11月17日に発行された、Wegenerによる「Lossless and loss−limited Compression of Sampled Data Signals」と題する特許文献2、及び引用によりここに組み入れられる、2009年10月23日に出願された、Wegenerによる「Block Floating Point Compression of Signal Data」(「BFP圧縮出願」)と題する米国特許出願番号第12/605,245号を含む。
【0040】
圧縮技術には、調整済入力サンプル623の1つ又はそれ以上の微分を計算することによる差分コード化、ブロック浮動小数点ビット・パッキング、ハフマン・コード化、及び無損失圧縮器624を実装することができるその他の無損失圧縮技術が含まれる。無損失圧縮器624は、圧縮パケット630を生成することができ、この圧縮パケット630は、ヘッダ632及び圧縮ペイロード634を含むことができる。ヘッダ632は、圧縮及びフィードバック制御ブロック628により与えられる1つ又はそれ以上の圧縮制御パラメータを含むことができる。ヘッダ632は、圧縮パケット内に収容される圧縮サンプルの整数又は浮動小数点値などのデータ型を示すパラメータ、並びに調整制御信号629a及び圧縮制御信号629bのような値制御パラメータを収容することができる。圧縮及びフィードバック制御ブロック628は、平均又は瞬間圧縮比などの種々の圧縮統計量を示すことができる圧縮ステータス信号615、調整制御信号629a、圧縮制御信号629b、又は構成可能な圧縮器620内での内部的な警告若しくは誤り状態を生成することができる。
【0041】
図11は、圧縮整数データの復元のブロック図である。構成可能な復元器720は、圧縮パケット630を受信する。復元制御ブロック728は、圧縮パケット・ヘッダ632の内容を検査し、復元器724及び損失圧縮調整ブロック722のための制御パラメータをいずれもデコードする。復元器724は、復元制御信号729aの制御下で、図10の損失圧縮器624によって行われた圧縮操作を解除(アンドゥ)する操作を行い、それにより調整入力信号723を再現する。損失復元調整ブロック722は、復元調整信号729bの制御下で、図10の損失圧縮調整ブロック622により行われた調整操作を解除する操作を行う。復元された信号730は、構成可能な復元器720の出力サンプルを表わす。復元制御ブロック728は随意に、平均又は瞬間圧縮比を含むことができるステータス信号715、圧縮制御信号729a、復元調整信号729b、又は復元器720からの内部警告又は誤り信号を生成することができる。
【0042】
図12は、浮動小数点データを圧縮するように構成された構成可能な圧縮器620のブロック図である。浮動小数点データ表現は、3つのフィールド、即ち符号ビット、指数、及び有効数字部(仮数)で構成される。フォーマット・プリプロセッサ(図示せず)は、各々の浮動小数点入力サンプルの符号及び有効数字部から指数を分離して、入力指数603を与える。フォーマット・プリプロセッサは、符号ビットと有効数字部とを組み合わせて、符号及び仮数入力サンプル601を形成する。構成可能な圧縮器620は、図10に関して説明された構成可能な圧縮器620が整数サンプル600を処理するのと同じ方式で、符号及び仮数入力サンプル601を処理する。さらに、構成可能な圧縮器620は、無損失指数圧縮器660及び圧縮ペイロード・マルチプレクサ670を入力指数603に適用する。無損失指数圧縮器660は、圧縮及びフィードバック制御ブロック628からの無損失指数圧縮制御信号629cの制御下で、無損失方式で指数603を圧縮する。無損失指数圧縮器660は、特許文献1、特許文献2及びBFP圧縮出願に記載された技術の1つ又はそれ以上を適用することができる。圧縮制御信号629aは、指数603に適用される圧縮方法、例えばブロック浮動小数点コード化、差分コード化、ハフマン・コード化又は指数603を圧縮するのに適したその他の圧縮技術、を指定する制御パラメータを与えることができる。圧縮ペイロード・マルチプレクサ670は、圧縮された指数ビット665並びに圧縮された符号及び仮数ビット631の圧縮パケット・ペイロード634a内での位置を制御する。圧縮ペイロード・マルチプレクサ670は、図10に関して説明されたように、圧縮及びフィードバック制御ブロック628により制御することができる。
【0043】
図12に示される構成可能な圧縮器620は、整数又は浮動小数点の波形データ値に適用することができる。整数サンプルが圧縮される場合には、指数圧縮器660及び圧縮ペイロード・マルチプレクサ670は使用されず、整数サンプルは、図10の入力サンプル600に類似した符号及び仮数入力サンプル601を与える。浮動小数点サンプルが圧縮される場合には、浮動小数点の指数値が指数603となり、浮動小数点の符号及び仮数値が符号及び仮数入力サンプル601となる。フォーマット・プリプロセッサが入力サンプル600に適用され、指数603と、符号及び仮数サンプル601とを与える。フォーマット・プリプロセッサは、浮動小数点データから抽出された浮動小数点の符号及び仮数と、整数データとに対して共通の形式を与えるので、損失圧縮調整ブロック622及び無損失圧縮器624は、入力サンプル100が整数又は浮動小数点値のどちらで表されているかにかかわらず、同じ形式のデータを受信する。こうすることで、構成可能な圧縮器620を、圧縮及びフィードバック制御ブロック628からの種々の制御信号に従って、整数又は浮動小数点波形データ値のいずれかを圧縮するように構成することができる。
【0044】
図13は、圧縮された浮動小数点データを復元するための構成可能な復元器720のブロック図である。構成可能な復元器720は、圧縮された浮動小数点データを圧縮ペイロード634aとして含む圧縮パケットを受信する。復元器724及び損失復元調整ブロック722は、図11に関して説明されたそれぞれの要素と同じ復元操作を圧縮された符号及び仮数データに適用する。構成可能な復元器720は、ペイロード・デマルチプレクサ870と、圧縮された指数データを処理するための指数復元器860とを含む。圧縮パケット・ヘッダ632aを検査した後、復元コントローラ728は、制御パラメータを、ペイロード・デマルチプレクサ870、復元器724、損失復元調整ブロック722及び指数復元器860に与える。ペイロード・デマルチプレクサ870は、圧縮ペイロード634aを、圧縮された指数ビット865と圧縮された符号及び仮数ビット831とに分離する。分離された、圧縮された符号及び仮数ビット831は、圧縮された整数データ(図11)について説明したのと同様に復元され、調整される。指数復元器860は、指数復元器制御信号729cによって与えられる制御パラメータに従って、圧縮された指数ビット865を復元する。指数復元器720は、復元された指数730bを生成する。復元器724及び損失復元調整ブロック722は、復元された符号及び仮数サンプル730aを生成する。データ・フォーマッタ(図示せず)は、復元された指数730bと、対応する復元された符号及び仮数サンプル730aとを組み合わせて、元の入力サンプル600と同じ浮動小数点形式を有する復元サンプルのシーケンスにすることができる。代替的に、データ・フォーマッタは、復元された指数730b並びに対応する復元された符号及び仮数サンプル730aの形式変換を提供して、元のサンプルとは異なるデータ形式を有する復元サンプルを生成することができる。復元制御ブロック728により生成される種々の復元及び調整制御信号の設定に基づき、随意に圧縮パケット・ヘッダ632a内のヘッダパラメータの制御下で、構成可能な復元器720は、復元された整数波形データ値又は復元された浮動小数点波形データ値を生成することができる。
【0045】
無損失圧縮器624の好ましい実施形態は、無損失差分コード化と、それに続いてブロック浮動小数点ビット・パッキングを適用する。無損失差分コード化の技術は、特許文献1及び特許文献2に記載されている。ブロック浮動小数点ビット・パッキングの技術は、BFP出願に記載されている。差分コード化とそれに続くブロック浮動小数点ビットパキングとを適用することによって、パケット・ベースの波形データ圧縮にとって望ましい、待ち時間が短い圧縮器が実装される。損失圧縮調整ブロック622の好ましい実施形態は、入力サンプル600の絶対値を小さくして、制御可能量の損失を提供する。損失圧縮調整ブロックは、入力サンプル600に対してビットシフタ及び乗算器を適用することにより、サンプルの絶対値を小さくする。ビットシフタと乗算器との組み合わせによって、所望の低複雑度の目標が達成される。
【0046】
構成可能な復元器720の好ましい実施形態において、復元制御器728は、圧縮パケット・ヘッダ632内に収容された制御パラメータをデコードし、復元のためのそれぞれの制御信号729a、729b、及び729cを提供する。圧縮パケットのヘッダ632又は632aの好ましい実施形態は、データ型(整数又は浮動小数点データ)のインジケータ、並びに調整及び圧縮制御パラメータを含む。圧縮パケット・ヘッダ632はまた、圧縮中に保存された仮数ビットの数を含む、そのパケットの圧縮ペイロード全体に適用される制御パラメータを随意に含むこともできる。
【0047】
図14は、図6a、図6e、及び図7bに関して説明されたマルチ・コア・プロセッサにおける構成可能な圧縮器620及び構成可能な復元器720の位置の例を示す。図14aは、図6aのIntel NehalemCPUアーキテクチャにおける圧縮及び復元の組込を示す。構成可能な圧縮器620及び構成可能な復元器720を各QPIインターフェース404のところに組み込んで、送信されるQPIパケットのペイロード用にデータを圧縮し、かつ受信したQPIパケットのペイロードから圧縮データを復元することができる。Nehalemプロセッサに波形データを提供するためのオフチップ入力コントローラ(図示せず)は、入力波形データを圧縮して、QPIパケット用の圧縮ペイロード・データを形成する。QPIインターコネクト・リンク・コントローラ404における復元器720は、圧縮ペイロード・データを復元し、CPUコア400a−dへの転送のためのQPIパケット用のペイロード・データとして復元波形データを与える。図7bに関して説明されたNehalem8−プロセッサ・コアのアーキテクチャの場合、復元ペイロード・データを収容したQPIパケットは、対向回転リング516を介してプロセッサ・コア510a〜510hに転送される。Nehalemアーキテクチャは、オフチップ・コンポーネントへの/からのデータ転送に同じパケット・プロトコルを使用するオンチップ通信の一例である。組み込まれたメモリ・コントローラもまた、オフチップ・メモリに提供される波形データを圧縮し、かつメモリから取り出された圧縮波形データを復元するために、構成可能な圧縮器620及び圧縮回御器720を含むことができる。
【0048】
図14bは、図6eのIBM Cell Broadband Engineのアーキテクチャにおける圧縮及び復元の組込を示す。バス・インターフェース・コントローラ(BIC)444は、オフチップ通信を制御する。構成可能な圧縮器620及び構成可能な復元器720をBIC444のところに組み込んで、送信パケット用の波形データを圧縮し、かつ受信した圧縮パケットを復元することができる。入力データを複数のSPE440a〜440hに与えるために、オフチップ・コントローラ(図示せず)は、BIC444において受信されるバスパケット用の圧縮ペイロード・データを形成するために波形データを圧縮する圧縮器を含む。BIC444における構成可能な復元器720は、圧縮ペイロード・データを復元し、SPE440a〜440hへの転送のためにEIB446に与えられる復元波形データを形成する。構成可能な復元器720は、復元波形データを、EIB446と互換性があるプロトコルを有するパケットに挿入することができる。IBM Cellアーキテクチャは、オフチップのデータ転送とは異なるパケット・プロトコルを用いるオンチップ通信の一例である。処理波形データのオフチップ転送の場合、BIC444とのインターフェースのところにある構成可能な圧縮器620は、SPE440a−hからEIB446を介して転送された処理波形データを圧縮して、外部バス447を通じた送信のための圧縮ペイロード・データを形成する。宛先デバイス(図示せず)におけるオフチップ・コントローラは、受信したバスパケットから圧縮ペイロード・データを抽出及び復元して圧縮波形データを再現する復元器を含む。構成可能な圧縮器620及び復元器720をメモリ・インターフェース・コントローラ(MIC)445に組み込んで、オフチップ・メモリ448への/からの圧縮データ転送を提供することができる。構成可能な圧縮器620及び復元器720は、MIC445及びBIC444とは別に実装することもでき、又はMIC445及びBIC444で共有することもできる。
【0049】
図14cは、Intel Nehalem(図7b)のプロセッサ・コア間の通信のための圧縮及び復元の一例を示す。8つのプロセッサ・コア510a−hは、2つの対向回転リング516を介してデータを転送する。対向回転リング516は、QPIパケット・プロトコルを用いてパケットを転送する。プロセッサ・コア510a−hは、その他の1つ又はそれ以上のコア510a−hへの転送のために波形データを圧縮するそれぞれの構成可能な圧縮器620a−hを含む。転送される波形データは、アプリケーション処理の中間データであり得る。構成可能な圧縮器620a−hは、ペイロード部が圧縮データを収容するQPIパケットを形成する。構成可能な圧縮器620a−hは、圧縮ペイロードを有するQPIパケットを、対向回転リング516を介して、その他のコア510a−hのうちの1つ又はそれ以上に与える。対向回転リング516から受信したデータについて、それぞれの構成可能な復元器720a−hは、受信したQPIパケットの圧縮ペイロードを復元して、それぞれのコア510a−hによるさらなる処理のために中間データ又は波形データを再現する。プロセッサ・コア間の通信に加えて、構成可能な圧縮器6260及び復元器720を、QPIインターフェース514a−d及び/又はメモリ・インターフェースSMI0及びSMI1におけるコントローラに組み込むこともできる。
【0050】
図15は、入力データをプロセッサ・コアに供給する例である。入力コントローラ1800は、サンプル波形データを与えるADC120、シミュレートされた波形データを与えるシミュレータ130又は中間デジタル結果150を与える外部プロセッサなどの、入力データを生成するデバイスに接続することができる(図2参照)。入力コントローラ1800は、プロセッサ・コア1810への転送前に入力データを圧縮する。プロセッサ・コア1810は、特定のアプリケーションの動作を行う前に、受信した入力データに対して復元を適用する。入力コントローラ1800は、圧縮データを複数のプロセッサ・コア(図15には図示せず)に分散させ、その各々が、受信したデータを復元して、アプリケーション処理用の復元データを形成する。
【0051】
図16は、複数のプロセッサ・コア間でデータを通信する例である。ソース・プロセッサ・コア1900a及び1900bは、一部が処理されたデータ又は中間結果をアプリケーションでのさらなる処理のために宛先プロセッサ・コア1900c及び1900dの各々に与えている。ソース・コア1900a、bは、それぞれの、一部が処理されたデータ又は中間結果を圧縮し、それぞれの圧縮データを転送する。宛先コア1900c、dは各々、ソース・コア1900a、bの両方から圧縮データを受信し、復元する。宛先コア1900c、dは、それぞれの処理操作を復元データに適用する。
【0052】
図17は、プロセッサ・コアから出力コントローラへの例示的なデータ転送である。プロセッサ・コア2000は、特定のアプリケーション用の処理波形データを生成する。処理波形データは、そのアプリケーションのための、一部が処理された中間結果又は完全に処理された最終結果を表わすことができる。プロセッサ・コア2000は、処理されたデータを圧縮し、圧縮データを出力コントローラ2010に転送する。出力コントローラ2010は、圧縮データを受信し、復元する。複数のプロセッサ・コア(図示せず)が、処理データを圧縮して出力コントローラ2010に転送することができる。出力コントローラ2010は、さらなる処理又は表示のために、復元データに対して、異なるプロセッサ・コアから受信したデータを集約するなどの付加的な機能を実行することができる。
【0053】
図18は、オフチップ・メモリ又は記憶装置2130に対する読み出し及び書き込みアクセスが圧縮及び復元を用いて改善されたプロセッサ2100を示す。CPU又はコア2105は、オンチップ・メモリ2120、及びオフチップ・メモリ又は記憶装置2130の両方に対してアクセスする。オンチップ・メモリ2120に対するCPU又はコア2105のアクセスは、アドレス及びデータバス2115を介して直接行われる。CPU又はコア2105は、圧縮制御インターフェース610を介して、直接メモリアクセス(DMA)、入力/出力又はメモリ用のコントローラ2110を介したオフチップ・メモリ又は格納部2130への圧縮アクセス(読み出し又は書き込み)を要求する。図9に関して上述したように、圧縮制御インターフェース610は、オフチップ・メモリ又は記憶装置2310への書き込み中に、CPU又はコア2105が、構成可能な圧縮器620に対して、整数又は浮動小数点データを圧縮するための制御パラメータ、無損失又は損失モードでの圧縮のための制御パラメータ、所望の圧縮ブロック・サイズを指定するための制御パラメータ、及びその他の圧縮特定パラメータを与えることを可能にする。構成可能な圧縮器620は、オフチップ・メモリ又は記憶装置2130に格納される圧縮パケットのヘッダ内に制御情報を含めることができる。オフチップ・メモリ又は記憶装置2130からのデータの読み出し中に、構成可能な復元器720は、各圧縮パケットのヘッダ内の制御情報をデコードし、制御パラメータに従った復元操作を用いて、整数又は浮動小数点値を復元する。復元された出力サンプルは、オンチップ・メモリ2120に与えられる。構成可能な圧縮器620は、オフチップ・メモリ又は格納部2130に対するブロック又はパケット・ベース性のアクセスに特に適している。要素2110がDMAコントローラとして実装される場合、大きいデータ・ブロックは、典型的にはオンチップ・メモリ2120とオフチップ・メモリ又は記憶装置2130との間で転送される。本発明は、(ランダム・アクセスの単一値処理とは対照的な)パケット・ベース処理又はストリーム処理の圧縮及び復元に適用することができるので、構成可能な圧縮器620及び構成可能な復元器720は、DMAアクセスに非常に適している。また、CPU又はコア2105は、典型的にはDMAコントローラ2110を介してDMAアクセスを開始するので、データ書き込み中に構成可能な圧縮器620により導入される待ち時間、又はオフチップ・メモリ若しくは記憶装置2130からのデータ読み出し中に構成可能な復元器720により導入される待ち時間は、比較的長い(CPUがオンチップ・メモリ2120にアクセスする場合と比べて長い)DMAトランザクション時間の中に覆い隠すことができる。
【0054】
図19は、1MBデータ・パケットに2:1圧縮を適用した例についての帯域幅改善の表を示す。この例では、1MBデータ・パケットは、整数又は浮動小数点の波形値を収容しているものと仮定する。波形値は、8ビット、16ビット又は32ビット値を収容できるものとし、これは波形サンプル当たり1、2又は4バイトに対応する。同様に、波形値は、32ビット又は64ビット長の浮動小数点値を収容できるものとし、これは浮動小数点波形サンプル当たり4バイト又は8バイトに対応する。図19の列1は例示的なパラメータを示し、列2及び3は、圧縮なしの場合及び2:1圧縮の場合のパラメータ値をそれぞれ含む。列2(圧縮なし)を検討すると、コア1からコア2への1MBデータの転送は、コア1の送信機(Tx)における1ミリ秒(0.001秒)の起動待ち時間と、コア2の受信機(Rx)における1ミリ秒(0.001秒)の完了待ち時間とを含む。1MBの波形データ・パケットは、この例では、コア1とコア2との間の1MB/秒のリンクを用いた転送時間1秒を含めて、1.002秒の合計非圧縮転送時間を要する。対照的に、列3は、元の1MB波形パケットに対して2:1圧縮が適用され、500kBの圧縮データのみが転送される場合における同じパラメータを示す。構成可能な圧縮器620及び構成可能な復元器720は両方とも、圧縮及び復元パイプラインを満たすことにより生じる、付加的な起動待ち時間を有する。この例では、圧縮及び復元待ち時間は、各々、10ミリ秒(0.01秒)と見積もられる。したがって、2:1圧縮を用いると、1MB波形パケットは、コア1とコア2との間の1MB/秒のリンクを用いた転送時間0.5秒を含めて、0.52秒の合計圧縮転送時間を要する。図19の最下行は、2:1圧縮を用いた転送帯域幅が非圧縮転送帯域幅のほぼ2倍であることを示す。
【0055】
マルチ・コア・アプリケーションにおいては、行われる計算作業は、複数のコア間に分散される。多くの波形処理アプリケーションにおいて、整数又は浮動小数点データのいずれかが、様々なネットワーク、バス及びメモリ・インターフェースを用いて複数のコアに分散される。そのようなアプリケーションの合計処理時間は、波形データ・サンプルを多数の処理コアに分散させるのに必要な時間、並びに各コアにおいて計算作業を完了させるのに要する時間の両方に影響を受ける。そのうえ、波形処理は、データが既知のシーケンス又は順序で分散されることを要する場合が多く、その場合、幾つかのコアは、隣接したコアがそこで処理した波形出力結果を配信するのを待機する時間を費やす。I/O時間が減らされれば、計算時間にかかわらず、全ての波形処理アプリケーションについて合計時間は低減することになる。合計時間がコア計算時間よりもI/O(データ交換)時間によって決まるアプリケーションは、「I/Oバウンド」アプリケーションと呼ばれる。本発明は、I/Oバウンド・アプリケーションの合計処理時間を短縮するのに特に有効である。I/Oバウンド・アプリケーションは、本発明による波形データ帯域幅の増大と、波形データ待ち時間の削減との両方から利益を得る。コアが波形入力データを待機して費やす時間も削減される。
【0056】
図20は、N個の処理コアのパイプラインで実行されるI/O及び処理が圧縮によりどのように加速されるかを示す。図20に示す例は、図19で論じたように、コア間パケットの2:1圧縮を仮定する。タイムラインAは、N個のコア間で非圧縮波形データ・パケットを送信する波形データ処理アプリケーションにおける一連のN対の{I/O、計算}矩形を示す。各矩形の幅は、I/O又は計算動作にかかる時間を表わす。タイムラインBは、同じ処理ステップを表すが、各I/Oに対して2:1圧縮を用いている。対応する計算動作COMP1〜COMPNの時間は、タイムラインAに示されるものと同一であり、即ち、両アプリケーションで計算時間は同じであることに留意されたい。しかしながら、I/O又はデータ交換時間は2分の1に削減されるので(2:1圧縮)、タイムラインBにおける総プロセス持続時間はT2であり、これは図20のaでの総プロセス持続時間T1より短い。プロセス持続時間の全体としてのスピードアップ(T1−T2)は、個別のI/O及び計算時間の長さに依存するが、図20は、処理パイプライン内で構成される複数のコア間のI/Oが、本発明の構成可能な、待ち時間の短い、高帯域幅の圧縮及び復元ブロックを用いてコア間のI/Oを加速した場合、波形データ圧縮アプリケーションの完了がより早まることになることを明らかにする。リング、星形及びメッシュなどのその他のマルチ・コア・トポロジに対して本発明の圧縮を適用しても、コア間のデータ交換を加速することができる。
【0057】
図20の例において、計算動作COMP1〜COMPNは、N個のプロセッサ・コア上で実行されるスレッドを表わすことができる。時間間隔[I/O又はXCHG]は、N個のプロセッサ・コアのパイプラインに沿った波形データの通信に要する時間を表わす。[I/O又はXCHG]の時間間隔中、対応するコアは待機モードに入る。図20に示されるように、圧縮は、データ転送にかかる時間を削減するので、それによりコアが待機モードにある時間を削減する。その結果、プロセス全体の持続時間の削減と、コアの計算リソースのより有効な利用という両方の点で、システム性能が改善される。
【0058】
本発明の実施形態は、パケット・ベース又はブロック・ベースのデータ交換を用いてコア間で整数又は浮動小数点データが交換される波形データ・アプリケーションに適している。構成可能なプロセッサ620は、特定のデータ型に適合させることができ、その波形データに対して選択された圧縮モード(無損失又は損失)は受信側コアに送信される。構成可能な圧縮器620は、制御情報を圧縮パケットのヘッダ内に挿入する。構成可能な復元器720は、受信した各圧縮パケットのパケット・ヘッダからデータ型及びその他の制御パラメータを決定する。構成可能な復元器720は、特定の圧縮パケットについてのデータ型、及び圧縮モードなどの制御パラメータに従って、適切な復元操作を圧縮ペイロード・データに適用する。本発明は、様々なネットワーク、バス及び格納部の用途に適しており、これらには、図5において説明されたもの(これらに限定されない)が含まれ、かつ、オンチップ・キャッシュ(レジスタ・ファイル、SRAM又はDRAM)、オフチップSRAM、DRAM、又はフラッシュなどの半導体メモリ、及びディスク又はテープ・ドライブなどの磁気媒体が含まれる。
【0059】
構成可能な圧縮器及び復元器には様々な実装の選択肢がある。好ましい実装形態において、構成可能な圧縮器620は、送信パケット・バッファと同じダイ上に直接組み込まれるので、波形データは、最短の待機時間かつ最高の圧縮及び復元レートでパケット送信用に圧縮される。構成可能な圧縮器620及び構成可能な復元器720は、実時間レートで、即ち、それらがインターフェースするデバイスと少なくとも同じ速さで動作することができ、波形サンプルが供給される速さと同じ速さでこれを圧縮し、波形サンプルが消費される速さと同じ速さでこれを復元する。同様に、好ましい実施形態において、構成可能な復元器720は、受信パケット・バッファと同じダイ上に直接組み込まれるので、パケットが受信されると、波形データは、前述のように最短の待ち時間及び最高の圧縮及び復元レートで復元される。代替的に、構成可能な圧縮器620及び構成可能な復元器720は、送信及び受信コアの命令セットをそれぞれ用いた、速度及び待ち時間が最適化されたアセンブリ言語実装で実装することができる。アセンブリ言語実装は、圧縮波形データ要素毎に複数の命令サイクルを必要とするので、その速度及び待ち時間は、上記の好ましい実装よりかなり高いものになる。
【0060】
マルチ・チップ実装の場合、構成可能な圧縮器620及び/又は構成可能な復元器720は、通信プロセッサが実装されたダイとは別のダイ上(即ちハードウェア内)に実装され、この場合、この別の圧縮及び/又は復元ダイは、通信プロセッサが実装されたダイと同じ基板上にあり、従ってこれと近接している。このマルチ・チップ実装の場合、圧縮器及び復元器のダイは、別個の製品として開発することができ、後で様々な通信プロセッサ・ダイに組み込むことができる。このマルチ・チップ実装の利点は、圧縮器及び/又は復元器ダイを、同一ダイ上の好ましい実装形態よりも低コストで組み込むことを可能にすることであるが、それは、通信プロセッサを収容するダイが、構成可能な圧縮器620及び/又は復元器720を収容するダイよりもかなり大きい(従って、設計及び製造の両方により多くの費用がかかる)場合が多いからである。
【0061】
通信リンクが波形データを一方向に送信する場合のような特定のアプリケーションについては、構成可能な圧縮器620及び構成可能な復元器720を別々のダイに組み込むことができる。そのような条件は、波形データのソースが1つのデバイス(例えばADC又はデータ収集サブシステム)により捕捉され、一方、圧縮された波形データの処理が別のデバイス(例えばFPGA、CPU、GPUなど)により行われるような場合に生じる。他のアプリケーションの場合と同様に、圧縮器は、FPGA、CPU、GPUなどによる波形データの処理と統合することができ、一方、圧縮パケットは、受信され、復元され、得られた波形は、DAC又はその他のアナログ若しくはデジタル信号生成器のような出力サブシステムに与えられる。
【0062】
本明細書において、複数のプロセッサ・コアと、複数のプロセッサ・コア間でデータ・パケットを転送するための通信ファブリックとを有する波形処理システムにおいて用いられる方法が説明され、波形データ・サンプルは、整数形式又は浮動小数点形式で表わされ、この方法は、
波形データ・サンプルのサブセットをプリプロセッサ制御パラメータの制御下で前処理して、圧縮器入力サンプルを生成するステップと、
圧縮器入力サンプルの絶対値を絶対値調整パラメータの制御下で調整して、調整済信号サンプルを生成するステップと、
調整済信号サンプルを圧縮制御パラメータの制御下で圧縮して、圧縮パケット・ペイロード用の圧縮サンプルを生成するステップと、
プリプロセッサ制御パラメータのインジケータ、絶対値制御パラメータのインジケータ、及び圧縮器制御パラメータのインジケータを含むパケット・ヘッダを作成するステップと、
パケット・ヘッダと圧縮パケット・ペイロードとを組み合わせて圧縮パケットにするステップと、
通信ファブリックに対するインターフェースにおいて圧縮パケットを提供するステップと
を含む。
【0063】
付加的な実装の選択肢は以下を含む。構成可能な圧縮器620及び構成可能な復元器720は、ターゲットASIC設計プロセス用のカスタム知的財産(IP)ブロックとして実装することができる。構成可能な圧縮器620及び構成可能な復元器720は、CPU、GPU、DSPチップ又はその他のマルチ・コア・プロセッサ上のソフトウェア内に実装することができる。構成可能な圧縮器620及び構成可能な復元器720は、ネットワーク・オン・チップ、完全接続スイッチ又は部分接続スイッチ実装の一部として実装することができる。
【0064】
構成可能な圧縮器620及び構成可能な復元器720の実施形態は、スループットを改善し、待ち時間を削減し、又は複雑度を減らすよう適合させることも可能である。例えば、複数のプリプロセッサを用いて、浮動小数点{符号,指数,仮数}フィールドを、損失圧縮調整ブロック622及び損失圧縮器624の期待される入力形式に従う形式に変換することができる。次に、待ち時間を削減する、スループットを高める、又は圧縮器若しくは復元器の複雑度を低減する、又はこれらの特徴の全てを組み合わせた特定のプロセッサが選択される。プリプロセッサは、基数2から基数10に変換するなどの進数変換を行うこともでき、このような都合のよい進数変換の理由及び利点は、IEEE−754(2008)浮動小数点データ規格に記載されている。
【0065】
本発明の実施形態をDRAM、DDR、DDR2又はDDR3外部メモリ用のメモリ・コントローラに組み込み、それにより、単一コア又はマルチ・コアCPUの外部の半導体(DRAM、フラッシュ、FRAM等)メモリ内に格納された整数及び浮動小数点の両方の波形データ値を圧縮及び復元する、メモリ・コントローラ用の構成可能な圧縮器を実装することもできる。同様に、本発明を、同一ダイ上(又はマルチ・チップ・モジュール内の同一パッケージ内)のキャッシュ・コントローラに組み込んで、波形データ用の構成可能なキャッシュ・メモリ圧縮器及び復元器を実装することができる。
【0066】
本発明の好ましい実施形態を図示して説明してきたが、本発明は、これらの実施形態のみに限定されるものではないことが明らかであろう。特許請求の範囲に記載された本発明の思想及び範囲から逸脱することのない幾多の修正、変更、バリエーション、置換、及び均等物が、当業者には明らかとなろう。
【符号の説明】
【0067】
600:入力サンプル
610:圧縮制御インターフェース
620:構成可能な圧縮器
623:調整済入力サンプル
627:圧縮パケット・サイズ
629a:調整制御信号
629b:圧縮制御信号
629c:無損失指数圧縮制御信号
630:圧縮パケット
632:ヘッダ
634:ペイロード
670:圧縮ペイロード・マルチプレクサ
720:構成可能な復元器
729a:復元制御信号
729b:復元調整信号
729c:指数復元器制御信号
730:復元された信号
870:ペイロード・デマルチプレクサ
2100:プロセッサ
2115:アドレス及びデータバス
【特許請求の範囲】
【請求項1】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、波形データを前記第2のメモリデバイスに格納するために圧縮する方法であって、
前記メモリ・コントローラにおいて、整数データ形式又は浮動小数点データ形式で表わされた複数のサンプルを含む前記波形データを前記第2のメモリデバイスに書き込む要求を前記プロセッサから受信するステップと、
前記メモリ・コントローラに組み込まれた圧縮論理において、1つ又はそれ以上の圧縮制御パラメータを前記プロセッサから受信するステップと、
前記プロセッサからの前記要求に応答して、前記メモリ・コントローラ内の前記圧縮論理において、前記複数のサンプルを前記第1のメモリデバイスから受信するステップと、
前記圧縮論理が、前記圧縮制御パラメータに従って前記複数のサンプルを圧縮して、圧縮パケット用の複数の圧縮サンプルを形成するステップと、
前記圧縮パケットを前記第2のメモリデバイスに転送し、前記第2のメモリデバイスが前記圧縮パケットを格納するステップと、
を含むことを特徴とするシステム。
【請求項2】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記圧縮ステップが、前記圧縮モード・パラメータに従って、前記サンプルに対して無損失圧縮操作又は損失圧縮操作を適用することを特徴とする請求項1に記載の方法。
【請求項3】
前記圧縮制御パラメータのうちの1つが、圧縮パケット当たりの所望のビット数又は所望の圧縮比であることを特徴とする請求項1に記載の方法。
【請求項4】
前記圧縮ステップが、
1つ又はそれ以上の圧縮パケットについてパケット当たりの前記圧縮サンプル内のビット数を計算するステップと、
前記パケット当たりの前記圧縮サンプル内の前記ビット数を、前記パケット当たりの所望のビット数と比較して、フィードバック・パラメータを定めるステップと、
前記フィードバック・パラメータに従って、前記圧縮するステップを適合させるステップと、
をさらに含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記圧縮制御パラメータのうちの第1のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記サンプルのデータ型パラメータであり、前記整数データ形式の場合、各入力サンプルは、第1の符号ビットと第1の複数の仮数ビットとで構成され、前記浮動小数点データ形式の場合、各サンプルは、第2の符号ビットと、第2の複数の仮数ビットと、複数の浮動小数点指数ビットとで構成されており、前記方法は、
前記データ型パラメータが前記整数データ形式を指示する場合に、各サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットを処理するように前記圧縮ステップを構成するステップと、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、各サンプルの前記第2の符号ビット、前記第2の複数の仮数ビット及び前記複数の浮動小数点指数ビットを処理するように前記圧縮するステップを構成するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮ステップが、
前記圧縮モード・パラメータに従って、各サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットに無損失圧縮操作又は損失圧縮操作を適用するステップ
をさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記圧縮ステップが、
前記複数の浮動小数点指数ビットを、各サンプルの前記第2の符号ビット及び前記第2の複数の仮数ビットから分離するステップと、
各サンプルの前記複数の浮動小数点指数ビットに無損失圧縮操作を適用して、複数の圧縮された浮動小数点指数を生成するステップと、
前記圧縮モード・パラメータに従って、各サンプルの前記第2の符号ビット及び前記第2の複数の仮数ビットに無損失圧縮操作又は損失圧縮操作を適用して、複数の圧縮された符号及び仮数を形成するステップと、
前記複数の圧縮された浮動小数点指数並びに前記複数の圧縮された符号及び仮数を前記圧縮パケットに与えるステップと、
を含むことを特徴とする請求項5に記載の方法。
【請求項8】
前記圧縮パケットが、ヘッダ部とペイロード部とをさらに含み、前記方法が、
前記圧縮制御パラメータのうちの少なくとも1つを前記ヘッダ部に与えるステップと、
前記複数の圧縮サンプルを前記ペイロード部に与えるステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラが、前記プロセッサのうちの1つ又はそれ以上から、それぞれの波形データを前記第2のメモリデバイスに書き込む要求を受信し、前記圧縮ステップがそれぞれの複数のサンプルに適用されてそれぞれの複数の圧縮サンプルを形成することを特徴とする請求項1に記載の方法。
【請求項10】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記圧縮論理が、前記圧縮ステップを行うように前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項1に記載の方法。
【請求項11】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、前記第2のメモリデバイスから取り出された波形データを復元する方法であって、
前記メモリ・コントローラにおいて、前記第2のメモリデバイスから前記波形データを取り出す要求を前記プロセッサから受信し、前記波形データは、前記第2のメモリデバイス内に格納された複数の圧縮サンプルによって表わされ、前記複数の圧縮サンプル及び1つ又はそれ以上の圧縮制御パラメータは、圧縮パケット内に収容されている、ステップと、
前記要求に応答して、前記メモリ・コントローラに組み込まれた復元論理において、前記圧縮パケットを前記第2のメモリデバイスから受信するステップと、
前記復元論理が、前記1つ又はそれ以上の圧縮制御パラメータに従って、前記圧縮パケットの前記複数の圧縮サンプルを復元して、前記波形データを表わす複数の復元サンプルを形成するステップと、
前記複数の復元サンプルを前記第1のメモリデバイスに与え、前記第1のメモリデバイスが、前記プロセッサによるアクセスのために前記複数の復元サンプルを格納するステップと、
を含むことを特徴とする方法。
【請求項12】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記復元ステップが、前記圧縮モード・パラメータに従って、前記複数の圧縮サンプルに対して無損失復元操作又は損失復元操作を適用することを特徴とする請求項11に記載の方法。
【請求項13】
前記圧縮制御パラメータのうちの第1のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記圧縮サンプルのデータ型パラメータであり、前記整数データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された符号及び仮数データを含み、前記浮動小数点データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された浮動小数点指数、符号及び仮数データを含み、前記方法は、
前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮された符号及び仮数データを処理して各復元サンプルの第1の符号ビット及び第1の複数の仮数ビットを生成するように、前記復元ステップを構成するステップと、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記複数の圧縮サンプルの前記圧縮された浮動小数点指数、符号及び仮数データを処理して各復元サンプルの第2の符号ビット、第2の複数の仮数ビット及び複数の浮動小数点指数ビットを生成するように、前記復元ステップを構成するステップと、
をさらに含むことを特徴とする請求項11に記載の方法。
【請求項14】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記復元ステップが、
前記圧縮モード・パラメータに従って、前記圧縮された符号及び仮数データに無損失復元操作又は損失復元操作を適用して、前記各復元サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットを前記整数データ形式に従って生成するステップ
をさらに含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記復元ステップが、
前記圧縮された浮動小数点指数データ及び前記圧縮された符号及び仮数データを前記圧縮パケットから抽出するステップと、
前記圧縮された浮動小数点指数データに無損失復元操作を適用して、複数の復元された浮動小数点指数を形成するステップと、
前記圧縮モード・パラメータに従って、前記圧縮された符号及び仮数データに無損失復元操作又は損失圧縮操作を適用して、複数の復元された符号及び仮数を形成するステップと、
前記復元された浮動小数点指数を前記復元された符号及び仮数のうちの対応する1つと組み合わせて、前記復元サンプルを前記浮動小数点データ形式に従って形成するステップと
をさらに含むことを特徴とする請求項13に記載の方法。
【請求項16】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラが、前記プロセッサのうちの1つ又はそれ以上から、それぞれの波形データを前記第2のメモリデバイスから読み出す要求を受信し、それぞれの波形データは、前記第2のメモリデバイス内に格納されたそれぞれの複数の圧縮サンプルにより表わされ、前記復元ステップが前記それぞれの複数の圧縮サンプルに適用されてそれぞれの複数の復元サンプルを形成することを特徴とする請求項11に記載の方法。
【請求項17】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記復元論理が、前記復元ステップを行うように前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項11に記載の方法。
【請求項18】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、波形データを前記第2のメモリデバイスに格納するために圧縮する装置であって、
前記プロセッサ及び前記第1のメモリデバイスに結合され、整数データ形式又は浮動小数点データ形式で表わされた複数のサンプルを含む前記波形データを前記第2のメモリデバイスに書き込む要求を前記プロセッサから受信するように動作可能であり、前記要求に応答して、前記複数のサンプルを前記第1のメモリデバイスから取り出す、メモリ・コントローラと、
前記メモリ・コントローラに組み込まれ、前記第1のメモリデバイスから取り出された前記複数のサンプル及び1つ又はそれ以上の圧縮制御パラメータを前記プロセッサから受信するように結合され、前記1つ又はそれ以上の圧縮制御パラメータに従って前記複数のサンプルを圧縮して圧縮パケット用の複数の圧縮サンプルを形成するように動作可能であり、前記圧縮パケットを前記格納のために前記第2のメモリデバイスに与えるように結合された、圧縮論理と、
を含むことを特徴とする装置。
【請求項19】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記圧縮論理が、前記圧縮モード・パラメータに従って無損失圧縮モード又は損失圧縮モードで動作可能であることを特徴とする請求項18に記載の装置。
【請求項20】
前記圧縮制御パラメータのうちの1つが、圧縮パケット当たりの所望のビット数又は所望の圧縮比であることを特徴とする請求項18に記載の装置。
【請求項21】
前記圧縮論理が、
1つ又はそれ以上の前記圧縮パケットについてパケット当たりの前記圧縮サンプル内のビット数を計算する論理と、
前記パケット当たりの前記圧縮サンプル内の前記ビット数を、前記圧縮パケット当たりの所望のビット数と比較して、フィードバック・パラメータを定める論理と、
前記フィードバック・パラメータに従って圧縮操作を適合させる論理と、
をさらに含むことを特徴とする請求項20に記載の装置。
【請求項22】
前記圧縮制御パラメータのうちの第1のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記サンプルのデータ型パラメータであり、前記整数データ形式の場合、各入力サンプルは、第1の符号ビットと第1の複数の仮数ビットとで構成され、前記浮動小数点データ形式の場合、各サンプルは、第2の符号ビットと、第2の複数の仮数ビットと、複数の浮動小数点指数ビットとで構成されており、前記圧縮論理が、
それぞれのサンプルの符号ビット及び仮数ビットを圧縮する第1の論理と、
それぞれのサンプルの浮動小数点指数ビットを圧縮する第2の論理と、
前記データ型パラメータが前記整数データ形式を指示する場合に、各サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットを前記第1の論理に与える論理と、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、各サンプルの前記第2の符号ビット及び前記第2の複数の仮数ビットを前記第1の論理に与え、かつ前記複数の浮動小数点指数ビットを前記第2の論理に与える論理と、
をさらに含むことを特徴とする請求項18に記載の装置。
【請求項23】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示し、前記第1の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であることを特徴とする請求項22に記載の装置。
【請求項24】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示し、前記第1の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であり、前記第2の論理が、前記無損失圧縮モードで動作可能であることを特徴とする請求項22に記載の装置。
【請求項25】
前記圧縮パケットが、ヘッダ部とペイロード部とをさらに含み、前記圧縮論理が、
前記圧縮制御パラメータのうちの少なくとも1つを前記ヘッダ部に与える論理と、
前記複数の圧縮サンプルを前記ペイロード部に与える論理と、
をさらに含むことを特徴とする請求項18に記載の方法。
【請求項26】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラは、前記プロセッサのうちの1つ又はそれ以上に結合され、それぞれのプロセッサからそれぞれの波形データを前記第2のメモリデバイスに書き込む要求を受信するようになっており、前記圧縮論理が、それぞれの複数のサンプルに適用されてそれぞれの複数の圧縮サンプルを生成するようになっていることを特徴とする請求項18に記載の装置。
【請求項27】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記圧縮論理が、前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項18に記載の装置。
【請求項28】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、前記第2のメモリデバイスから取り出された波形データを復元するための装置であって、
前記プロセッサ及び前記第1のメモリデバイスに結合され、前記第2のメモリから前記波形データを読み出す要求を前記プロセッサから受信するように動作可能であり、前記波形データは、前記第2のメモリデバイス内に格納された複数の圧縮サンプルにより表わされ、前記複数の圧縮サンプル及び1つ又はそれ以上の圧縮制御パラメータは、圧縮パケット内に収容されており、前記要求に応答して、前記第2のメモリデバイスから前記圧縮パケットを取り出すように前記第2のメモリデバイスに結合された、メモリ・コントローラと、
前記メモリ・コントローラに組み込まれ、前記第2のメモリデバイスから取り出された前記圧縮パケットを受信するように結合され、前記1つ又はそれ以上の圧縮制御パラメータに従って前記複数の圧縮サンプルを復元して、前記波形データを表わす複数の復元サンプルを形成するように動作可能であり、前記複数の復元サンプルを与えるように結合され、前記第1のメモリデバイスが前記プロセッサによるアクセスのために前記複数の復元サンプルを格納する、復元論理と、
を含むことを特徴とする装置。
【請求項29】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記復元論理が、前記圧縮モード・パラメータに従って無損失復元操作又は損失復元操作を適用するように動作可能であることを特徴とする請求項28に記載の装置。
【請求項30】
前記圧縮制御パラメータのうちの第1のものが、整数データ形式又は浮動小数点データ形式を指示する、前記圧縮サンプルのデータ型パラメータであり、前記整数データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された符号及び仮数データを含み、前記浮動小数点データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された浮動小数点指数、符号及び仮数データを含み、前記圧縮論理が、
それぞれの圧縮サンプルの圧縮された符号及び仮数データを復元して、復元された符号及び仮数を形成する、第1の論理と、
それぞれの圧縮サンプルの圧縮された浮動小数点指数データを復元して、復元された浮動小数点指数を形成する、第2の論理と、
前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮パケットの前記圧縮された符号及び仮数データを前記第1の論理に与える論理と、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記圧縮パケットの前記圧縮された符号及び仮数データを前記第1の論理に与え、かつ前記圧縮パケットの前記圧縮された浮動小数点指数データを前記第2の論理に与える論理と、
をさらに含むことを特徴とする請求項28に記載の装置。
【請求項31】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記第1の論理が、前記圧縮モード・パラメータに従って、無損失復元操作又は損失復元操作を適用するように動作可能であることを特徴とする請求項30に記載の装置。
【請求項32】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記第1の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であり、前記第2の論理が、前記無損失圧縮モードで動作可能であり、前記圧縮論理が、
前記復元された浮動小数点指数を前記復元された符号及び仮数のうちの対応する1つと組み合わせて、前記復元サンプルを前記浮動小数点データ形式に従って形成する論理
をさらに含むことを特徴とする請求項30に記載の装置。
【請求項33】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラは、前記プロセッサのうちの1つ又はそれ以上に結合され、それぞれの波形データを前記第2のメモリデバイスから読み出す要求をそれぞれの前記プロセッサから受信するようになっており、前記それぞれの波形データは、前記第2のメモリデバイス内に格納されたそれぞれの複数の圧縮サンプルにより表わされ、前記復元論理が、前記それぞれの複数の圧縮サンプルに適用されてそれぞれの複数の復元サンプルを形成するようになっていることを特徴とする請求項28に記載の装置。
【請求項34】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記復元論理が、前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項28に記載の装置。
【請求項1】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、波形データを前記第2のメモリデバイスに格納するために圧縮する方法であって、
前記メモリ・コントローラにおいて、整数データ形式又は浮動小数点データ形式で表わされた複数のサンプルを含む前記波形データを前記第2のメモリデバイスに書き込む要求を前記プロセッサから受信するステップと、
前記メモリ・コントローラに組み込まれた圧縮論理において、1つ又はそれ以上の圧縮制御パラメータを前記プロセッサから受信するステップと、
前記プロセッサからの前記要求に応答して、前記メモリ・コントローラ内の前記圧縮論理において、前記複数のサンプルを前記第1のメモリデバイスから受信するステップと、
前記圧縮論理が、前記圧縮制御パラメータに従って前記複数のサンプルを圧縮して、圧縮パケット用の複数の圧縮サンプルを形成するステップと、
前記圧縮パケットを前記第2のメモリデバイスに転送し、前記第2のメモリデバイスが前記圧縮パケットを格納するステップと、
を含むことを特徴とするシステム。
【請求項2】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記圧縮ステップが、前記圧縮モード・パラメータに従って、前記サンプルに対して無損失圧縮操作又は損失圧縮操作を適用することを特徴とする請求項1に記載の方法。
【請求項3】
前記圧縮制御パラメータのうちの1つが、圧縮パケット当たりの所望のビット数又は所望の圧縮比であることを特徴とする請求項1に記載の方法。
【請求項4】
前記圧縮ステップが、
1つ又はそれ以上の圧縮パケットについてパケット当たりの前記圧縮サンプル内のビット数を計算するステップと、
前記パケット当たりの前記圧縮サンプル内の前記ビット数を、前記パケット当たりの所望のビット数と比較して、フィードバック・パラメータを定めるステップと、
前記フィードバック・パラメータに従って、前記圧縮するステップを適合させるステップと、
をさらに含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記圧縮制御パラメータのうちの第1のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記サンプルのデータ型パラメータであり、前記整数データ形式の場合、各入力サンプルは、第1の符号ビットと第1の複数の仮数ビットとで構成され、前記浮動小数点データ形式の場合、各サンプルは、第2の符号ビットと、第2の複数の仮数ビットと、複数の浮動小数点指数ビットとで構成されており、前記方法は、
前記データ型パラメータが前記整数データ形式を指示する場合に、各サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットを処理するように前記圧縮ステップを構成するステップと、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、各サンプルの前記第2の符号ビット、前記第2の複数の仮数ビット及び前記複数の浮動小数点指数ビットを処理するように前記圧縮するステップを構成するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮ステップが、
前記圧縮モード・パラメータに従って、各サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットに無損失圧縮操作又は損失圧縮操作を適用するステップ
をさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記圧縮ステップが、
前記複数の浮動小数点指数ビットを、各サンプルの前記第2の符号ビット及び前記第2の複数の仮数ビットから分離するステップと、
各サンプルの前記複数の浮動小数点指数ビットに無損失圧縮操作を適用して、複数の圧縮された浮動小数点指数を生成するステップと、
前記圧縮モード・パラメータに従って、各サンプルの前記第2の符号ビット及び前記第2の複数の仮数ビットに無損失圧縮操作又は損失圧縮操作を適用して、複数の圧縮された符号及び仮数を形成するステップと、
前記複数の圧縮された浮動小数点指数並びに前記複数の圧縮された符号及び仮数を前記圧縮パケットに与えるステップと、
を含むことを特徴とする請求項5に記載の方法。
【請求項8】
前記圧縮パケットが、ヘッダ部とペイロード部とをさらに含み、前記方法が、
前記圧縮制御パラメータのうちの少なくとも1つを前記ヘッダ部に与えるステップと、
前記複数の圧縮サンプルを前記ペイロード部に与えるステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項9】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラが、前記プロセッサのうちの1つ又はそれ以上から、それぞれの波形データを前記第2のメモリデバイスに書き込む要求を受信し、前記圧縮ステップがそれぞれの複数のサンプルに適用されてそれぞれの複数の圧縮サンプルを形成することを特徴とする請求項1に記載の方法。
【請求項10】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記圧縮論理が、前記圧縮ステップを行うように前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項1に記載の方法。
【請求項11】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、前記第2のメモリデバイスから取り出された波形データを復元する方法であって、
前記メモリ・コントローラにおいて、前記第2のメモリデバイスから前記波形データを取り出す要求を前記プロセッサから受信し、前記波形データは、前記第2のメモリデバイス内に格納された複数の圧縮サンプルによって表わされ、前記複数の圧縮サンプル及び1つ又はそれ以上の圧縮制御パラメータは、圧縮パケット内に収容されている、ステップと、
前記要求に応答して、前記メモリ・コントローラに組み込まれた復元論理において、前記圧縮パケットを前記第2のメモリデバイスから受信するステップと、
前記復元論理が、前記1つ又はそれ以上の圧縮制御パラメータに従って、前記圧縮パケットの前記複数の圧縮サンプルを復元して、前記波形データを表わす複数の復元サンプルを形成するステップと、
前記複数の復元サンプルを前記第1のメモリデバイスに与え、前記第1のメモリデバイスが、前記プロセッサによるアクセスのために前記複数の復元サンプルを格納するステップと、
を含むことを特徴とする方法。
【請求項12】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記復元ステップが、前記圧縮モード・パラメータに従って、前記複数の圧縮サンプルに対して無損失復元操作又は損失復元操作を適用することを特徴とする請求項11に記載の方法。
【請求項13】
前記圧縮制御パラメータのうちの第1のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記圧縮サンプルのデータ型パラメータであり、前記整数データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された符号及び仮数データを含み、前記浮動小数点データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された浮動小数点指数、符号及び仮数データを含み、前記方法は、
前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮された符号及び仮数データを処理して各復元サンプルの第1の符号ビット及び第1の複数の仮数ビットを生成するように、前記復元ステップを構成するステップと、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記複数の圧縮サンプルの前記圧縮された浮動小数点指数、符号及び仮数データを処理して各復元サンプルの第2の符号ビット、第2の複数の仮数ビット及び複数の浮動小数点指数ビットを生成するように、前記復元ステップを構成するステップと、
をさらに含むことを特徴とする請求項11に記載の方法。
【請求項14】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記復元ステップが、
前記圧縮モード・パラメータに従って、前記圧縮された符号及び仮数データに無損失復元操作又は損失復元操作を適用して、前記各復元サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットを前記整数データ形式に従って生成するステップ
をさらに含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記復元ステップが、
前記圧縮された浮動小数点指数データ及び前記圧縮された符号及び仮数データを前記圧縮パケットから抽出するステップと、
前記圧縮された浮動小数点指数データに無損失復元操作を適用して、複数の復元された浮動小数点指数を形成するステップと、
前記圧縮モード・パラメータに従って、前記圧縮された符号及び仮数データに無損失復元操作又は損失圧縮操作を適用して、複数の復元された符号及び仮数を形成するステップと、
前記復元された浮動小数点指数を前記復元された符号及び仮数のうちの対応する1つと組み合わせて、前記復元サンプルを前記浮動小数点データ形式に従って形成するステップと
をさらに含むことを特徴とする請求項13に記載の方法。
【請求項16】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラが、前記プロセッサのうちの1つ又はそれ以上から、それぞれの波形データを前記第2のメモリデバイスから読み出す要求を受信し、それぞれの波形データは、前記第2のメモリデバイス内に格納されたそれぞれの複数の圧縮サンプルにより表わされ、前記復元ステップが前記それぞれの複数の圧縮サンプルに適用されてそれぞれの複数の復元サンプルを形成することを特徴とする請求項11に記載の方法。
【請求項17】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記復元論理が、前記復元ステップを行うように前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項11に記載の方法。
【請求項18】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、波形データを前記第2のメモリデバイスに格納するために圧縮する装置であって、
前記プロセッサ及び前記第1のメモリデバイスに結合され、整数データ形式又は浮動小数点データ形式で表わされた複数のサンプルを含む前記波形データを前記第2のメモリデバイスに書き込む要求を前記プロセッサから受信するように動作可能であり、前記要求に応答して、前記複数のサンプルを前記第1のメモリデバイスから取り出す、メモリ・コントローラと、
前記メモリ・コントローラに組み込まれ、前記第1のメモリデバイスから取り出された前記複数のサンプル及び1つ又はそれ以上の圧縮制御パラメータを前記プロセッサから受信するように結合され、前記1つ又はそれ以上の圧縮制御パラメータに従って前記複数のサンプルを圧縮して圧縮パケット用の複数の圧縮サンプルを形成するように動作可能であり、前記圧縮パケットを前記格納のために前記第2のメモリデバイスに与えるように結合された、圧縮論理と、
を含むことを特徴とする装置。
【請求項19】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記圧縮論理が、前記圧縮モード・パラメータに従って無損失圧縮モード又は損失圧縮モードで動作可能であることを特徴とする請求項18に記載の装置。
【請求項20】
前記圧縮制御パラメータのうちの1つが、圧縮パケット当たりの所望のビット数又は所望の圧縮比であることを特徴とする請求項18に記載の装置。
【請求項21】
前記圧縮論理が、
1つ又はそれ以上の前記圧縮パケットについてパケット当たりの前記圧縮サンプル内のビット数を計算する論理と、
前記パケット当たりの前記圧縮サンプル内の前記ビット数を、前記圧縮パケット当たりの所望のビット数と比較して、フィードバック・パラメータを定める論理と、
前記フィードバック・パラメータに従って圧縮操作を適合させる論理と、
をさらに含むことを特徴とする請求項20に記載の装置。
【請求項22】
前記圧縮制御パラメータのうちの第1のものが、前記整数データ形式又は前記浮動小数点データ形式を指示する、前記サンプルのデータ型パラメータであり、前記整数データ形式の場合、各入力サンプルは、第1の符号ビットと第1の複数の仮数ビットとで構成され、前記浮動小数点データ形式の場合、各サンプルは、第2の符号ビットと、第2の複数の仮数ビットと、複数の浮動小数点指数ビットとで構成されており、前記圧縮論理が、
それぞれのサンプルの符号ビット及び仮数ビットを圧縮する第1の論理と、
それぞれのサンプルの浮動小数点指数ビットを圧縮する第2の論理と、
前記データ型パラメータが前記整数データ形式を指示する場合に、各サンプルの前記第1の符号ビット及び前記第1の複数の仮数ビットを前記第1の論理に与える論理と、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、各サンプルの前記第2の符号ビット及び前記第2の複数の仮数ビットを前記第1の論理に与え、かつ前記複数の浮動小数点指数ビットを前記第2の論理に与える論理と、
をさらに含むことを特徴とする請求項18に記載の装置。
【請求項23】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示し、前記第1の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であることを特徴とする請求項22に記載の装置。
【請求項24】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示し、前記第1の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であり、前記第2の論理が、前記無損失圧縮モードで動作可能であることを特徴とする請求項22に記載の装置。
【請求項25】
前記圧縮パケットが、ヘッダ部とペイロード部とをさらに含み、前記圧縮論理が、
前記圧縮制御パラメータのうちの少なくとも1つを前記ヘッダ部に与える論理と、
前記複数の圧縮サンプルを前記ペイロード部に与える論理と、
をさらに含むことを特徴とする請求項18に記載の方法。
【請求項26】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラは、前記プロセッサのうちの1つ又はそれ以上に結合され、それぞれのプロセッサからそれぞれの波形データを前記第2のメモリデバイスに書き込む要求を受信するようになっており、前記圧縮論理が、それぞれの複数のサンプルに適用されてそれぞれの複数の圧縮サンプルを生成するようになっていることを特徴とする請求項18に記載の装置。
【請求項27】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記圧縮論理が、前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項18に記載の装置。
【請求項28】
プロセッサと、メモリ・コントローラと、チップ上に組み込まれた第1のメモリデバイス及び前記チップ外に配置された第2のメモリデバイスとを含むシステムにおいて、前記第2のメモリデバイスから取り出された波形データを復元するための装置であって、
前記プロセッサ及び前記第1のメモリデバイスに結合され、前記第2のメモリから前記波形データを読み出す要求を前記プロセッサから受信するように動作可能であり、前記波形データは、前記第2のメモリデバイス内に格納された複数の圧縮サンプルにより表わされ、前記複数の圧縮サンプル及び1つ又はそれ以上の圧縮制御パラメータは、圧縮パケット内に収容されており、前記要求に応答して、前記第2のメモリデバイスから前記圧縮パケットを取り出すように前記第2のメモリデバイスに結合された、メモリ・コントローラと、
前記メモリ・コントローラに組み込まれ、前記第2のメモリデバイスから取り出された前記圧縮パケットを受信するように結合され、前記1つ又はそれ以上の圧縮制御パラメータに従って前記複数の圧縮サンプルを復元して、前記波形データを表わす複数の復元サンプルを形成するように動作可能であり、前記複数の復元サンプルを与えるように結合され、前記第1のメモリデバイスが前記プロセッサによるアクセスのために前記複数の復元サンプルを格納する、復元論理と、
を含むことを特徴とする装置。
【請求項29】
前記圧縮制御パラメータのうちの1つが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記復元論理が、前記圧縮モード・パラメータに従って無損失復元操作又は損失復元操作を適用するように動作可能であることを特徴とする請求項28に記載の装置。
【請求項30】
前記圧縮制御パラメータのうちの第1のものが、整数データ形式又は浮動小数点データ形式を指示する、前記圧縮サンプルのデータ型パラメータであり、前記整数データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された符号及び仮数データを含み、前記浮動小数点データ形式の場合、前記圧縮パケットは、前記複数の圧縮サンプルの圧縮された浮動小数点指数、符号及び仮数データを含み、前記圧縮論理が、
それぞれの圧縮サンプルの圧縮された符号及び仮数データを復元して、復元された符号及び仮数を形成する、第1の論理と、
それぞれの圧縮サンプルの圧縮された浮動小数点指数データを復元して、復元された浮動小数点指数を形成する、第2の論理と、
前記データ型パラメータが前記整数データ形式を指示する場合に、前記圧縮パケットの前記圧縮された符号及び仮数データを前記第1の論理に与える論理と、
前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記圧縮パケットの前記圧縮された符号及び仮数データを前記第1の論理に与え、かつ前記圧縮パケットの前記圧縮された浮動小数点指数データを前記第2の論理に与える論理と、
をさらに含むことを特徴とする請求項28に記載の装置。
【請求項31】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記整数データ形式を指示する場合に、前記第1の論理が、前記圧縮モード・パラメータに従って、無損失復元操作又は損失復元操作を適用するように動作可能であることを特徴とする請求項30に記載の装置。
【請求項32】
前記圧縮制御パラメータのうちの第2のものが、無損失圧縮モード又は損失圧縮モードを指示する圧縮モード・パラメータであり、前記データ型パラメータが前記浮動小数点データ形式を指示する場合に、前記第1の論理が、前記圧縮モード・パラメータに従って、前記無損失圧縮モード又は前記損失圧縮モードで動作可能であり、前記第2の論理が、前記無損失圧縮モードで動作可能であり、前記圧縮論理が、
前記復元された浮動小数点指数を前記復元された符号及び仮数のうちの対応する1つと組み合わせて、前記復元サンプルを前記浮動小数点データ形式に従って形成する論理
をさらに含むことを特徴とする請求項30に記載の装置。
【請求項33】
前記システムが、前記チップ上に組み込まれた複数のプロセッサを含み、前記メモリ・コントローラは、前記プロセッサのうちの1つ又はそれ以上に結合され、それぞれの波形データを前記第2のメモリデバイスから読み出す要求をそれぞれの前記プロセッサから受信するようになっており、前記それぞれの波形データは、前記第2のメモリデバイス内に格納されたそれぞれの複数の圧縮サンプルにより表わされ、前記復元論理が、前記それぞれの複数の圧縮サンプルに適用されてそれぞれの複数の復元サンプルを形成するようになっていることを特徴とする請求項28に記載の装置。
【請求項34】
前記メモリ・コントローラは、直接メモリ・アクセス・コントローラをさらに含み、前記復元論理が、前記直接メモリ・アクセス・コントローラに組み込まれることを特徴とする請求項28に記載の装置。
【図1a】
【図1b】
【図1c】
【図2】
【図3】
【図4】
【図5】
【図6a】
【図6b】
【図6c】
【図6d】
【図6e】
【図7a】
【図7b】
【図7c】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14a】
【図14b】
【図14c】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図1b】
【図1c】
【図2】
【図3】
【図4】
【図5】
【図6a】
【図6b】
【図6c】
【図6d】
【図6e】
【図7a】
【図7b】
【図7c】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14a】
【図14b】
【図14c】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公表番号】特表2013−506917(P2013−506917A)
【公表日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2012−532224(P2012−532224)
【出願日】平成22年9月27日(2010.9.27)
【国際出願番号】PCT/US2010/050420
【国際公開番号】WO2011/041269
【国際公開日】平成23年4月7日(2011.4.7)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(510153951)サンプリファイ システムズ インコーポレイテッド (9)
【Fターム(参考)】
【公表日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成22年9月27日(2010.9.27)
【国際出願番号】PCT/US2010/050420
【国際公開番号】WO2011/041269
【国際公開日】平成23年4月7日(2011.4.7)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(510153951)サンプリファイ システムズ インコーポレイテッド (9)
【Fターム(参考)】
[ Back to top ]