JP2010521728A - データ圧縮のための回路及びこれを用いるプロセッサ - Google Patents

データ圧縮のための回路及びこれを用いるプロセッサ Download PDF

Info

Publication number
JP2010521728A
JP2010521728A JP2009553163A JP2009553163A JP2010521728A JP 2010521728 A JP2010521728 A JP 2010521728A JP 2009553163 A JP2009553163 A JP 2009553163A JP 2009553163 A JP2009553163 A JP 2009553163A JP 2010521728 A JP2010521728 A JP 2010521728A
Authority
JP
Japan
Prior art keywords
circuit
data
map
value
zero
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2009553163A
Other languages
English (en)
Other versions
JP2010521728A5 (ja
Inventor
デイヴィッド モロニー
Original Assignee
リニア アルジェブラ テクノロジーズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by リニア アルジェブラ テクノロジーズ リミテッド filed Critical リニア アルジェブラ テクノロジーズ リミテッド
Publication of JP2010521728A publication Critical patent/JP2010521728A/ja
Publication of JP2010521728A5 publication Critical patent/JP2010521728A5/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】本出願は、コンピュータ・システム設計における基本課題であるメモリ・アクセス・コストの最小化に対処する。
【解決手段】これは、メモリ技術又はプロセッサへの接続様式に関わらず、コンピュータ・システムの設計における基本的制約であり、所与の時間に転送可能なプロセッサとメモリとの間データについては、大きな制約、すなわち利用可能なメモリ帯域があり、利用可能なメモリ帯域によるコンピュータ計算力の制限は、しばしばメモリの壁と呼ばれている。本提供の解決においては、圧縮されるデータ構造体マップを生成し、該マップは該構造体における些少ではないデータ値の位置を表し(例えば、ゼロでない値)、圧縮構造体を提供するために該構造体から些少なデータ値を削除する。
【選択図】図1

Description

本出願は、データ圧縮方法に関し、特に構造体の圧縮に関する。
メモリに格納されるデータ量を削減するための、圧縮方法及びアルゴリズムは、当技術分野において公知である。特に、例えば画像に対するJPEG等、異なるデータの種類に対して、異なるアルゴリズムが知られている。
本出願は、マトリクス構造体の圧縮を目的とする。
以前に試みられた一つの方法(マローニー及びジェラティ、WO2006120664)は、非構造体化マトリクスから構造体化マトリクスへの変換により、マトリクス構造体を圧縮することを取り入れた。この圧縮方法は、マトリクスの主対角の上下にあるデータの重複を効果的に排除した。
マトリクス構造体を取扱う他の方法が米国特許第6591019号に提案されており、データ値のマトリクスは、bitMapテーブル、signMapテーブル及びdataMapテーブルからなる構造体に圧縮される。ビットマップ・テーブルは、一連の2ビットのエントリを含み、それぞれのビットのエントリは、非圧縮マトリクス構造体のエントリに対応する。bitMapの各2ビットのエントリは、非圧縮のマトリクスの対応する値がゼロでもあるか、1であるか、dataMapにスケーリングされた形式で格納されているか、又はdataMapに非圧縮形式で格納されているかを識別する。signMapテーブルは、非圧縮構造体における値の符号を識別する。この方法の不利な点は、値のスケーリングにおいて情報が失われるため、無損失ではないことである。該方法は、ソフトウェア実施に対してのみ実用的である。
上記の各方法は、メモリ内に構造体を格納するために必要なメモリがより少ない限りにおいては、従来技術に対して改良をもたらすが、プロセッサにおいて構造体を復元するときには、これらの方法ではまだ重大な計算コストを招く。加えて、上記の方法は、いずれも、圧縮及び復元に関する複雑さのために処理速度にも弱点があり、プロセッサにおける実行の際には、装置がパフォーマンスに関して比較的巨大で低速となる。
本出願は、実施コストを最小にし、実装の圧縮/復元速度を最大にすると共に、メモリ・アクセス・コストを最小にする、コンピュータ・システムの設計課題に対処することを目的とする。メモリ・アクセス・コスト(メモリ帯域幅)は、メモリ技術又はプロセッサ接続様式に関わらず、コンピュータ・システムの設計における基本的な制約であり、プロセッサとメモリとの間で所与の時間内にどれだけのデータが転送できるかについては、最大の制約があり、これらは利用可能なメモリ帯域幅であり、利用可能なメモリ帯域幅によるコンピュータ能力の制約は、「メモリ・ウォール」と呼ばれることがある。
本出願は、データを圧縮フォーマットに格納し、メモリ内に格納されなければならない巨大なデータセット上で動作する、例えばコンピュータ・グラフィック、剛体力学、有限要素分析及び他の科学及び工学アプリケーション等の多くのアプリケーションに用いられる、ブロック構造体データに適した圧縮及び復元手段を提供することにより、有効なメモリ帯域幅を増加させ、計算における「メモリ・ウォール」の制約を最小化することを目的とする。
本出願は、データ転送及びが復元プロセッサ資源を占有せず、顕著の遅延がない一方で、実装コストに関しては低くしたまま、処理速度に関しては高速である、プロセッサのハードウェアに圧縮/復元回路をプロセッサのハードウェアに組み込むことによって、メモリ・ウォールの課題に対処する。比較的単純な圧縮/復元ハードウェアを許容する好ましい圧縮方法が提供される。
第1実施形態は、個々のデータ値の構造体を格納するためのメモリと、構造体内の些少ではない(ゼロでない)値の位置を格納するためのマップ・メモリと、データ出力とを含む回路であって、本回路は該マップを用いてメモリから些少ではない(ゼロでない)データを取り出し、取り出したデータをデータ出力における圧縮構造体として提供するよう構成される回路を提供する。メモリは、レジスタ、複数のレジスタ及び/又はレジスタ・ファイルを適切に含む。位置は、ビットマップとして格納でき、ビットマップの各ビットは、格納された構造体における個々のデータ値に対応できる。複数のコンパレータを設けることが可能であり、各コンパレータは、データ値が些少ではないかどうかを識別し、各コンパレータの出力はマップへの入力として供給される。コンパレータ入力は、メモリの読み込みポート、メモリの書き込みポート、及び/又はプロセッサのロード/ストアポートに設けてもよい。
データ出力はデータバスを含んでもよく、本回路は、メモリからデータバスへ圧縮構造体を順次出力するよう構成される。本回路は、更に、マップからゼロでない値の数を算出するための少なくとも一つの加算器を含んでもよい。本回路は、更に、メモリからデータ出力までゼロでないデータを書き込むことを順次可能にするためのロジックを含んでもよい。該ロジックは、加算器の構成を含むことができ、該構成において後続の加算器は、該構成において先行する加算器の出力を入力として有する。各加算器は、構造体の関連データ値に対応でき、各加算器は関連データ値に対応するマップからの入力を受け付ける。本回路は、更に、整数コンパレータのツリーを含むことができ、各整数コンパレータは二つの整数入力を比較するためのものであり、各コンパレータにおける第1の入力は、加算器ツリーにおいて対応する加算器からの出力である。各コンパレータへの第2の入力は、配列信号である。本回路は、更に、些少ではないデータをデータ出力に書き込むという正しい配列を確実にするために、個々のコンパレータ出力を有するマップから値を結合するためのコンバイナを含んでもよい。本回路は、更に、本回路の動作を制御するためのコントローラを含んでもよい。本回路は、マップの内容を出力として提供するようにも適合できる。適切には、本回路は、集積回路上に設けることができる。本回路の一つ以上を含むプロセッサが提供されてもよい。
更なる態様において、圧縮構造体から復元構造体を抽出するための回路が提供される。本回路は、個々の些少ではないデータ値の圧縮構造体を受け付けるための入力と、復元構造体内の些少ではないデータ値の位置を識別するマップを受信するためのマップ・レジスタと、復元構造体を格納するためのメモリとを含み、本回路は、マップ・レジスタの内容にしたがって、メモリを些少ではないデータ値で占有するよう構成される。該メモリは、複数のレジスタ又はレジスタ・ファイルを含むことができる。該位置は、ビットマップとして格納でき、該ビットマップの各ビットは、復元構造体における個々のデータ値に対応する。
データ入力はデータバスを含んでもよく、この場合に本回路は、データバスからメモリに圧縮構造体を順次入力するよう構成される。本回路は、更に、マップから些少ではない値の数を算出するための少なくとも一つの加算器を含んでもよい。回路は、更に、順次データ入力からメモリへの些少ではないデータの書き込みを順次可能にするための、好適には加算器の構成であるロジックを含んでもよい。この構成における後続の加算器は、この構成における先行の加算器の出力を入力として有することができる。各加算器は、非圧縮構造体における関連データ値に対応でき、各加算器は関連データ値に対応するマップからの入力を受け付ける。本回路は、更に、整数コンパレータの構成を含むことができ、各整数コンパレータは二つの整数入力を比較するため野茂のであり、各コンパレータの第1の入力は、加算器構成において対応する加算器からの出力である。各コンパレータへの第2の入力は、配列信号でもよい。本回路は、更に、些少ではないデータのデータ出力に対する書き込みの正しい順序を確実にするために、マップからの値を個別のコンパレータ出力と結合するためのコンバイナを含んでもよい。本回路は、更に、回路の動作を制御するためのコントローラを含んでもよい。本回路は、更に、マップ入力を含んでもよく、本回路は、マップ・レジスタに入力されるマップからマップをロードするよう適合される。適切には、本回路は、集積回路上に設けることができる。適切には、些少なデータ値はゼロ・データ値であり、些少ではないデータ値はゼロでないデータ値である。アプリケーションは、これらの回路の少なくとも一つを取り入れるプロセッサに拡張する。
また更なる実施形態は、データ構造体を格納する指示に応答する圧縮回路を備えたプロセッサ・チップを提供し、この圧縮回路は、記憶部に圧縮フォーマットを提供するために構造体から些少な値を除去するよう適合される。圧縮回路は、構造体における些少な値の位置を識別するマップを提供するよう適合できる。プロセッサは、更に、圧縮フォーマット・データをロードする指示に応答する復元回路を含んでもよく、この復元回路は、些少な値をそれがロードされる際に圧縮データ内に再占有するよう適合される。復元回路は、些少な値が再占有するためのマップを使用できる。適切には、些少なデータ値はゼロ・データ値であり、些少ではないデータ値はゼロでないデータ値である。
したがって、他の実施形態は、構造体内で些少な入力値の位置を識別する単一のマップを作成するステップと、一つのマップの情報だけから単に復元可能な圧縮構造体を提供するために、識別された些少な入力値を該構造体から除去するステップとを含む、データ値の構造体を圧縮する無損失な方法を提供する。データ値は、浮動小数点数(単精度又は倍精度)、拡張精度浮動小数点数、128ビット精度の浮動小数点数又は整数でもよい。
適切には、マップは、個々のデータ値を表すビットマップの各ビットを有するビットマップを含む。位置を識別するステップは、それが些少ではないエントリ値であるかどうかを決定するために、各データ値を比較することを含むことができる。各比較の出力は合計され、些少ではないエントリ値のカウント数を提供できる。このカウントは、圧縮構造体のサイズ及び/又は圧縮構造体に提供されるエントリ数を決定するために使用できる。各比較の出力は、圧縮構造体へのデータ値の書き込みを可能にするために使用できる。構造体はマトリクスでもよく、マップは列及び行の数を識別できる。好ましい構成において、些少な入力値はゼロ値であり、些少ではない値はゼロでない。
更なる実施形態は、複数の些少ではないデータ値と、複数の些少ではないデータ値に対する些少なデータ値の位置を表すマップとを含む、圧縮データ構造体を提供する。好ましい構成において、些少な入力値はゼロ値であり、些少ではない値はゼロでない。マップは、個々のビットによって表される個々のデータ値を有するビットマップを含んでもよい。
更なる実施形態は、圧縮データ構造体を復元する方法を提供し、この圧縮構造体は、複数の些少ではないデータ値と、非圧縮構造体における些少ではない値の位置を表すマップとを含む。本方法は、占有された復元データ構造体を提供するために、未占有の非圧縮構造体を提供するステップと、些少ではない値を取り出すステップと、些少ではない値をマップに表されるその位置にしたがって当該未占有の構造体に占有させるステップとを含む。好ましい構成において、些少な入力値はゼロ値であり、些少ではない値はゼロでない。この場合、未占有のマトリクスの値は、ゼロでない値による占有の前に、ゼロに初期化してもよい。あるいは、マップにおいてゼロ値として識別される占有された構造体の位置が、ゼロにセットされてもよい。マップは、個々のデータ値を表しているビットマップの各ビットを有するビットマップを含んでもよい。ビットマップの個々のビットは合計され、圧縮構造体におけるゼロでない値のカウント数を提供できる。このカウントは、未占有の構造体に読み込まれるデータ値の量を決定するために使用できる。適切には、マップは、非圧縮構造体へのデータ値の書き込みを可能にするために使用される。構造体は、行列構成を有するマトリクスを含むことができる。
これらの及び他の実施形態、特徴及び利点は、後述の例示的記載から明らかである。
以下、添付図面を参照し、本発明を説明する。
本出願に係る圧縮方法の例示的フローチャートである。 非圧縮構造体の例、及び図1の方法の結果として生成する圧縮構造体である。 本出願に係る復元方法の例示的フローチャートである。 本出願に係る例示的プロセッサである。 図4のプロセッサへの導入に適切な例示的復元回路である。 図5の動作を説明する例示的タイミング図である。 図4のプロセッサへの導入に適切な例示的復元回路である。 図7の動作を説明する例示的タイミング図である。 図5及び図7の回路がどのように結合できるかを説明する例示的構造体である。
本出願は、3次元コンピュータ・グラフィック、ゲーム物理学(剛体力学)、有限要素解析(FEA)及び検索エンジン等に使用されるような、巨大な浮動小数点マトリクス・データセットに含まれるゼロ・データ値を利用する、新規な方法を採用する。しかしながら、本アプリケーションは他のデータ構造体に適切であり、単にマトリクス・ベースの構造体だけに限定されない。
多くのマトリクスに対して、エントリの顕著な数は、浮動小数点表現における32ビット又は64ビットを全く占有しないゼロ充填であり、これはオンチップ又はオフチップのメモリから取り出されなければならず、メモリ又はレジスタから取り出されたゼロに対する些少な動作を実施することにプロセッサを忙殺する可能性があることを、発明者は認識してきた。
本出願は、ゼロ・データ値が除去された圧縮構造体において、データ値の行及び列に構成される格納用マトリクス構造体を提供する。マトリクス構造体におけるゼロ及びゼロでない値の位置を識別し、マトリクス構造体の無損失の再構築を可能にする、圧縮構造体に対する関連するマップが提供される。値が些少な値として識別されなければ、それは些少ではなく、逆も同様であることは明らかであるので、このようなマップは、些少な値の位置を識別するもの、又は些少ではない値の位置を識別するものと見なすことができることはいうまでもない。本方法は、従来技術に対して多くの重要な効果を提供する。第1に、本方法は無損失であり、第2に、本方法は直ちにハードウェアに実装されるため、メモリへのロード時に圧縮構造体の復元に伴う計算負荷を低減できる。同様に、処理リソースの追加を招くことなく、データを圧縮形態に格納できる。
このマップは、圧縮構造体に付随して、又は、複雑なデータ構造体へのランダムアクセスが必要な構造体の索引付けの一部として、メモリ内に格納できる。
本発明の技術の利点は、32以下のデータ構造体エントリを表すために32ビットのビットマップが用いられることを仮定し、ゼロ値の数に対するメモリからの転送要求を、単精度値に対しては32ビットから1ビットに、又は倍精度値に対しては64ビットから1ビットに低減することである。一般性を全く失うことなく、32以上又は以下のエントリを有するデータ構造体を提供するため、ビットマップ・サイズが調節可能であることは明らかである。同じ効果は、整値を用いても得られうる。
以下、図1の例示的シーケンスのフローチャート、及び図2の16の32ビット単精度エントリを含む例示的4×4マトリクスを参照し、動作モードを記載する。
この処理は、圧縮マトリクス構造体から第1のエントリを取り出すことから開始する。第1のエントリは、それがゼロ値かゼロでない値であるかどうかを決定するために比較される。比較の結果により、第1の値をゼロとして、又はゼロでない値として識別するために、マップの第1の位置にエントリが作られる。適切には、マップは、ビットマップ内に関連ビットを有するマトリクス構造体における各値を有するビットマップである。第1のエントリがゼロ値である場合には、このエントリは廃棄、削除又は後の廃棄又は削除のためにタグ付けされ(例えばマトリクス・データから圧縮ストレージへの転送中に)、例えば第1ビットをゼロにセットすることにより、ゼロ値が存在したことを示すため、マトリクスに対するマップの第1の位置にエントリが作られる。マトリクスにおいて、例えば図2の第1のエントリが1.0である等、第1の値がゼロでない値である場合は、マップにおける第1のエントリは1にセットされ、ゼロでない値であることを指示する。同時に、この第1のエントリは、圧縮構造体における第1のエントリとして格納される。
次いで、マトリクスにおける残りのエントリのそれぞれに対して、この処理が繰り返される。図示の例示的マトリクスにおいて、エントリは行ごとにスキャンされるが、列ごとのスキャンも使用できること、又は単一のコンパレータを用いて順次的にするよりもむしろ複数のコンパレータを使用して単一操作でビットマップ全体の行/列を生成できることを考慮されたい。
したがって、1.0、2.0、3.0及び4.0という値を有する第1の行に対しては、ゼロ値のエントリがないため対応するマップは1111であるが、第2の行においては2番目の値のみがゼロでない値(6.0)であるため、マップは0100である。同様に、第3の行に対しては、この行の最初の三つの値がゼロであるため、マップ内の最後のエントリのみが1である。
この圧縮処理の結果、16のエントリとして(単精度に対してはそれぞれ32ビット)メモリに以前に格納されたマトリクスは、9の圧縮マトリクス(同様にそれぞれ32ビット)及びこれらのゼロでない値及び非圧縮マトリクスにおいて、対応するゼロ値を表す16ビットのマップに置き換えることができる。各メモリの位置は32ビットであるため、該マップがマトリクスを用いてどこに格納されるかというマップの格納に対して、16よりも32ビットが必要とされる。それにもかかわらず、16×32ビットの非圧縮マトリクス・フォーマット(全体で512ビット)は、9×32ビットの圧縮マトリクス及び1×32ビットのマップ(全体で320ビット)に置き換えられ、これは(512−320)/512=37.5%の圧縮を表している。
高密度マトリクス(ゼロ充填を含む)に対して一つ以上のエントリがゼロ(32ビットのビットマップが使用される場合)である限り、圧縮は達成される。しかしながら、エントリあたりに1ビットのペナルティがあり、ゼロ充填なしで高密度のデータセットを格納するために、より多くのメモリが用いられる結果となる場合がある。実際には、3次元コンピュータ・グラフィック、ゲーム物理学(剛体力学)、有限要素解析(FEA)及び検索エンジン(例えばGoogle(商標))を含む関心データセットは、まばらであり、大量のゼロ充填を含む。
本出願は、複数の行及び列に関して記載されるが、単一の行又は列からなる構造体の圧縮にも適用できる。
いうまでもなく、いくつかの状況において、マトリクスを再構成するためにマトリクスの列−行構造、すなわち行及び列の数を知ることが必要な場合がある。しかしながら、膨大な数のアプリケーションにおいて、コンテンツはメモリから取り出され、スカラー形態で、すなわち図2の単一カラムに示すようにレジスタに格納され、これは無関係であり、該データをマトリクスと見なすのは、ソフトウェア/プロセッサである。加えて、圧縮と復元との間の様式に整合性があれば、行−列構造の存在は不明確でもよい。状況によっては、列−行構造についての知識が必要とされが、これはマップ内に/マップに追加して含まれてもよい。
図3に示すように、圧縮構造体を非圧縮構造体に展開する処理は、圧縮方法の逆である。この方法は、空の非圧縮構造体を提供し、マップをロードすることから始まる。次いで、マップの第1ビットは、ゼロであるかゼロでない値であるかを決定するために比較される。第1ビットが1である場合は、第1のデータ値は、メモリから非圧縮構造体の第1のエントリにロードされる。同様に、第1ビットがゼロである場合は、非圧縮構造体の第1のエントリにゼロ値を挿入する。非圧縮構造体の全ての値がゼロに初期化される場合には、ゼロ値を挿入する特別なステップは必要ではない。マップの終端に達するまで、又は全てのデータ値がロードされるまで、この処理が繰り返される。ロードするデータ値の数は、単にマップの個々のゼロでないビット(圧縮されたゼロでないマトリクス/ベクトル・エントリに対応する)を計数することによって算出できる。
図2の圧縮構造体を復元する場合、マップの最初の4つの値は1であるため、最初の4つのデータ値が、圧縮構造体から非圧縮構造体の最初の4つのエントリにロードされる。マップの5番目のビットはゼロであるため、非圧縮構造体の5番目のエントリはゼロ値で占有され、以下同様である。
圧縮構造体が非圧縮構造体に展開されるときでも、圧縮構造体に対するマップを保持して使用し、引き続き非常に効果を奏することが可能である。特に、マップは、出願人の同時係属中の出願に記載のように、乗算、加算又は他の算術演算の結果として、プロセッサ内で機能ユニットの制御に効果的に使用できる。
効率に関しては、マトリクス構造体サイズが比較的大きい場合、これを複数の下位マトリクスに分割し、それぞれの下位マトリクスがマトリクス構造体の一部を表してもよい。この構成においては、上記の方法で下位マトリクスのそれぞれを個々に圧縮できる。
上記の方法は、ソフトウェアに実装でき、図4に示すように、データはプロセッサと往復する際にハードウェアにおいて復元、圧縮され、処理速度に関して非常に効果を得ることができる。選択された圧縮構造体は、特に、スケーリング及び他の操作を含む従来技術の方法とは対照的に、ハードウェア実装に適していることはいうまでもない。ハードウェア構成において、プロセッサは、例えばマトリクスの格納/取り出し等、ブロック形式のデータの取り出し及び/又は格納のために特定の指示を有するよう適合できる。このような構成において、圧縮及び復元の方法/ハードウェアは、中央プロセッサ・コアに対して透過的とすることが可能であるが、上記に説明のようにプロセッサ自体の中でマップを使用することが非常に有効である場合があり、同様に、後述するように、プロセッサ・ハードウェア内に/これと組み合わせてマップを生成することが効果的である場合がある。いずれにしても、圧縮/復元の動作は、プログラマ/オペレーティング・ソフトウェアを実質的に透過的とする様式で効果的に実行できることはいうまでもない。
本出願を、オンチップ又はオフチップのメモリからプロセッサにデータをロード及び格納することに関して記載してきたが、多様な他のアプリケーションが可能であることはいうまでもなく、例えばコプロセッサ間でのデータ共有を含むことを、更に考慮されたい。
以下、メモリからプロセッサへのロードの際に、圧縮データ構造体の復元/展開を提供する例示的ハードウェア実装を記載する。説明のために、下記の表1に例示する比較的小さな3×3(9エントリ)の圧縮マトリクスを用い、ここにA、B、C、D及びEはゼロでないデータ値を表し、101010101は3×3マトリクスのゼロでない値に対するマップである。実際には、提案する技法は、復元データに対する転送先として機能し、N×Mエントリ以上を有する、いずれの任意の大きさのN×Mマトリクス及びレジスタ・ファイルにも拡張できる。
Figure 2010521728
例示的な復元ロジックは、図5に示すように、圧縮ビットマップ・レジスタ、書込アドレス計算機、書込アドレス・コンパレータ、コンバイナ及び転送先オンチップ・メモリを含む。例示的装置において、これらの素子は、例えばアドレス生成ユニット(AGU)又はダイレクト・メモリ・アクセス(DMA)コントローラ等のコントローラの制御下にある。これらの素子の構成及び動作を、以下、図6の例示的なタイミング図を参照し、より詳細に説明する。
圧縮ビットマップ・レジスタは、圧縮マトリクス構造体に対するマップを格納する十分なサイズのレジスタであり、実際には、これは、サポートするN×M圧縮マトリクスにおける各エントリについて、1ビットのエントリに対応する。例示的な装置において、圧縮ビットマップ・レジスタは、9ビット(MCB0−MCB8)を含み、各ビットは非圧縮構造体の位置に対応する。展開処理の開始時に、コントローラは、オンチップ又はオフチップのメモリから圧縮ビットマップ・レジスタへマップをロードする。図5のビットマップ・レジスタに示す値は、単に例示的な値であることを考慮されたい。同様に、値のデータは、圧縮マトリクス・データに対する読出アドレスを生成するコントローラ制御下のバスにおいて、該データ全体にわたり、メモリからデータに順次転送される。あるいは、データは、ゼロでないエントリのグループ内にメモリから転送でき、例えば、2×32ビットの値を64ビットバスを介して転送でき、配線増加というコストはあるものの一般性を失うことはない。コントローラの挙動は、復元ロジック及び圧縮ビットマップ・レジスタにより制御され、書込アドレス計算機を用いて、クロックサイクルによりベースアドレスから開始するフェッチ対象バイト数(バイト・フェッチ)を生成できる。
書込アドレス計算機は、オンチップ・メモリ(レジスタ・ファイル)上の各エントリに対する書込アドレス(WA)を計算するために、2の補足整数加算器のツリーを含む。ツリーの各加算器は、2つの入力を有する。第1の入力は、ビットマップ・レジスタからの対応する値であり、すなわち、ビットマップ・レジスタにおける第1のエントリ(MCB0)は、第1の加算器への入力である。同様に、ビットマップ・レジスタの最後のエントリ(MCB8)は、ツリーの最後の加算器への入力である。各加算器への第2の入力は、ツリーにおける以前の加算器からの出力を含むので、第1の加算器(WA0)の出力は、第2の加算器への入力であり、同様に、第8の加算器(WA7)の出力は最後の加算器への入力である。
第1の加算器はツリーにおいて下位の加算器を有さないため、−1のベース入力が設けられ、これはレジスタ・ファイル内の展開構造体にデータを格納するときに確実に正確なアドレス割り当てを行うためである。小さい整数の加算器ツリーは、MAPレジスタ内のエントリに基づいて、レジスタ・ファイル転送先(書込)アドレスを生成する。図示の特定の実施例は、9エントリのレジスタ・ファイルであり、加算器ツリーのベースアドレスは−1に設定される。より大きなレジスタ・ファイル(9以上のエントリ)の場合には、3×3マトリクスは、加算器ツリーのベースアドレスをbase_adr―1に設定することにより、ベースアドレスから開始して復元できる。後者の場合、3×3マトリクスは、位置0よりもむしろ特定のベースアドレスで開始するレジスタ・ファイルに配置されることになる。
加えて、加算器のツリーにおける最後の加算器からの出力は、メモリから取り出す必要のあるゼロでない値がいくつあるかを(AGU/DMA)コントローラに指示する、バイト・フェッチ値として提供される。これらのバイトは、データバス(data_in)上ではシーケンシャルな様式でロードされる。より広いバスを介してペア又は4つのグループのいずれかでデータが転送される場合は、64又は128ビットワード数を転送することを示すために、最下位1又は2ビット(lsbs)は、バイト・フェッチ値から削除される(かつ丸められる)。
書込アドレス・コンパレータは、ワードポインタ(wrd_ptr)値に対して書込アドレス(WA)を比較する2の補数整数コンパレータのツリーを含み、これはコントローラに設けられるカウンタ出力であり、加算器ツリー終端由来のバイト・フェッチ出力の値までゼロからインクリメントする。
コンバイナは、データバスからのデータをレジスタ・ファイルの適切な場所にロードできる書込有効(WEN)信号を生成するために、その対応するビットマップ・レジスタ値を用いてそれぞれの書込アドレス・コンパレータ出力の論理積を取るためのANDゲートを含む。特に、このwrd_ptr値は、データがレジスタ・ファイルにラッチされるべき時点及び場所を決定するために、加算器ツリーにより生成されるWAアドレス(出力)に対して比較される。
状況によっては、ビットマップ・レジスタのエントリがゼロ(例えば、MCB1、MCB3、MCB5、MCB7)である場合は、関連付けられるANDゲート(WEN1、WEN3、WEN5、WEN7)の出力は、決して有効化されず、レジスタ・ファイルにおいて対応する位置(r1、r3、r5、r7)には何のデータもロードされないことが明らかである。このため、それらはタイミング図には示されない。レジスタ・ファイルは、処理における最初のステップとして、クリア(全てゼロ値にセットされる)が可能である。コンパレータ値が論理積に一致し、対応するMCBビットが1にセットされるときには、レジスタ・ファイルのWEN(書込有効)ビットはハイにセットされる。セットされると、WENビットにより、data_inバスの内容は正しいレジスタ・ファイルのレジスタに書き込まれる。図示の例において、第1の書込有効信号(WEN0)は、wrd_ptrがゼロであるときに、すなわち第1のゼロでない要素をレジスタ・ファイルの位置r0にロードするために、有効化される。同様に、WA2=MCB2{7}+WA1{=MCBI(0)+WA0(0)}=1であり、したがって第2のゼロでないデータ値(B)は、第3のレジスタ位置r2にデータバスからロードされることになるため、第3の書込有効信号(WEN2)は、wrd_ptr値が1であるときに有効化されることになる。
その結果、復元/展開処理の終了時において、レジスタ・ファイル内には非圧縮構造体が格納され、図示の例は、A、0、B、0、C、0、D、0、E、0を表す。
3×3圧縮マトリクスに対してここで説明した同じ一般原理を用いて、いかなる任意のN×M圧縮マトリクス及び復元マトリクスのエントリのためのいかなる任意のサイズのレジスタ・ファイル転送先もサポートできる。
類似の構成は、圧縮経路(圧縮回路)に使用できる。図7に示す圧縮経路の場合には、非圧縮データ構造体(すなわち各レジスタ・ファイルのエントリ)内の各データ値を0.0に比較し、レジスタ・ファイルのエントリがゼロでない場合にビットマップ・エントリ・ビットを1に設定するために、浮動小数点コンパレータのツリーが必要である。9入力レジスタ・ファイル9のためのIEEE単精度登録事項の例においては、このような浮動小数点コンパレータが必要である。
図7に示す例示的な圧縮回路は、32ビット・コンパレータのバンク、圧縮ビットマップ・レジスタ、読出アドレス計算機、読出アドレス・コンパレータ、及びコンバイナを含む。上述の展開回路と同様に、これらの素子は、例えば、アドレス生成ユニット(AGU)又はダイレクト・メモリ・アクセス(DMA)等のコントローラの制御下にある。以下、これらの素子の構造及び動作を、図8の例示的なタイミング図を参照し、より詳細に説明する。
例示的な構成において、非圧縮構造体(r0〜r8)はレジスタ・ファイルに格納され、レジスタ内のそれぞれの値は、コンパレータ・バンク内の対応するコンパレータに提供され、個々の値がゼロでない値かゼロ値であるかを決定するために比較が実行される。
コンパレータは、レジスタ・ファイルからの読出値として示しているが、レジスタ・ファイル内のエントリのいずれがゼロ値/ゼロでない値であるかを指示する、ゼロビット・レジスタを有することが、より効果的である場合がある。このレジスタは、データがレジスタ・ファイルの書込ポートにラッチされる際に占有される。このゼロビット・レジスタは、他の目的(例えば、計算の高速化)に効果的に使用でき、同一出願人の同時係属出願において、より詳細に記載される。圧縮サイクル開始時に比較の必要がないため、この方法はクロックサイクルを節約する。加えて、レジスタ・ファイル上で並列比較を実施するために、配線と電力との両者の点で実装が非常に高価である9つの読出ポートを有する必要性は、取り除かれる。この方法の更なる効果は、必要とする浮動小数点コンパレータ数の減少を含む(レジスタ・ファイルに対して3つの書込ポートのある例示的構成においては3×)。
複数のロード/ストアポートを有するプロセッサにおいて、圧縮/復元ロジックは、単一のロード/ストアポートを有するプロセッサの場合には共有することが可能であり、単一の共有レジスタ・ファイル又は複数の独立したレジスタ・ファイルのいずれが使用されても、それぞれの独立したロード/ストアポートに対して1回複製されなければならないことに注意すべきである。
ただし、単に説明の容易さのために、図7の装置を参照して動作モードを説明するが、コンパレータ・バンクからの個々の出力は、圧縮ビットマップ・レジスタへの入力として設けられ、これは上述のように、圧縮/非圧縮マトリクス構造体に対するマップを格納する十分なサイズのレジスタである。しかしながら、いったんビットマップ・レジスタがロードされると、二つの異なる装置間では動作様式が同じであることはいうまでもない。コンパレータ出力は、圧縮処理の第1段階として、圧縮ビットマップ・レジスタにロードされる。図7のビットマップ・レジスタに示される値が、単に例示的な値であることはいうまでもない。
コントローラの挙動は、圧縮ロジック及び圧縮ビットマップ・レジスタによって制御され、読出アドレス計算機を用いて、クロックサイクルによりベースアドレスから開始する格納対象バイト数(バイト・ストア、後述する)を生成できる。
読出アドレス計算機は、オンチップ・メモリ(レジスタ・ファイル)上の各エントリに対する読出アドレス(RA)を計算するために、2の補足(図示の例においては5ビット)整数加算器のツリーを含む。ツリーの各加算器は、2つの入力を有する。第1の入力は、ビットマップ・レジスタからの対応する値であり、すなわち、ビットマップ・レジスタにおける第1のエントリは、第1の加算器への入力である。同様に、ビットマップ・レジスタの最後のエントリは、ツリーの最後の加算器への入力である。各加算器への第2の入力は、ツリーにおける以前の加算器からの出力を含むので、第1の加算器(RA0)の出力は、第2の加算器への入力であり、同様に、第8の加算器(RA7)の出力は最後の加算器への入力である。
第1の加算器はツリーにおいて下位の加算器を有さないため、0のベース入力(すなわち、入力なし)が設けられ、これはレジスタ・ファイルからのデータ読出時に確実に正確なアドレス割り当てを行う。整数加算器のツリーは、マップ・レジスタのエントリに基づいて、レジスタ・ファイル転送先(読出)アドレスを生成する。
加算器ツリー内の最後の加算器からの出力は、(AGU/DMA)コントローラに対してオンチップ又はオフチップ・メモリ内の圧縮構造体に格納が必要なゼロでない値がいくつあるかを指示する、バイト・ストア値として提供される。これらのバイトは、データバス(data_out)を介して、シーケンシャルな様式で格納される。
読出アドレス・コンパレータは、ワードポインタ(rd_ptr)値に対して読出アドレス(RA)を比較する2の補数整数コンパレータのツリーを含み、これはコントローラに設けられるカウンタ出力であり、加算器ツリー終端由来のバイト・ストア出力の値までゼロからインクリメントする。
コンバイナは、ANDゲートのツリーを含む。各ANDゲートは、適切な位置でレジスタ・ファイルからデータを抽出できる読出有効(REN)信号を生成するために、読出アドレス・コンパレータ出力をその対応するビットマップ・レジスタと結合する。特に、このrd_ptr値は、データがレジスタ・ファイルから読み出されるべき時点及び場所を決定するために、加算器ツリーにより生成されるRAアドレス(出力)に対して比較される。
状況によっては、ビットマップ・レジスタのエントリがゼロ(例えば、MCB1、MCB3、MCB5、MCB7)である場合は、関連付けられるANDゲート(REN1、REN3、REN5、REN7)の出力は有効化されず、レジスタ・ファイルにおいて対応する位置(r1、r3、r5、r7)からは何のデータも読み出されないことが明らかである。このため、それらはタイミング図には示されない。コンパレータ値が論理積に一致し、対応するMCBビットが1にセットされるときには、レジスタ・ファイルのREN(読出有効)ビットはハイにセットされる。セットされると、RENビットにより、レジスタ・ファイル内の選択されたエントリの内容が、data_outバスに配置される。図示の例において、第1の読込有効信号(REN0)は、rd_ptrがゼロであるときに、すなわち第1のゼロでない要素(A)をレジスタ・ファイルの位置r0からdata_outに読み出すために、有効化される。同様に、RA2=MCB2{7}+RA1{7}=2であり、したがって第2のゼロでないデータ値(B)は、第2のゼロでないデータ値(C)は第3のレジスタ位置r2からdata_outにラッチされることになるため、第3の読出有効信号(REN2)は、rd_ptr値が2であるときに有効化されることになる。
その結果、圧縮処理の終了後、レジスタ・ファイルは、マップ・レジスタ由来のマップと共にオンチップ又はオフチップ・メモリ内のコントローラによって格納されたdata_out上に、A、C、E、G及びIを配置することになる。
3×3非圧縮マトリクスに対して本願明細書において概説した同一の一般原理を用いて、いずれの任意のN×M非圧縮マトリクスもサポートできることはいうまでもない。
上述の説明から、コントローラの一般的制御下において同一のハードウェアを圧縮及び復元のために使用できることを、理解されたい。
図9に、このような組み合わせ構成を示し、これは上述のレジスタ・ファイル書込ポートに取り付けられるコンパレータを有する構成を取り入れている。この例では、レジスタ・ファイルに接続するプロセッサ・データ経路は、3つの書込ポートを必要とする。実際には、この構成案は、任意の数のレジスタ・ファイル書込ポート、及び任意の数のエントリを有するレジスタ・ファイルに容易に拡張できる。オンチップ又はオフチップ・ストレージにデータを圧縮するため、又はオンチップ又はオフチップ・ストレージからレジスタ・ファイルへのロード時にデータを展開するために、必要に応じてwr_ptr、rd_ptr及び他の信号が動作/受信されることはいうまでもない。
base_addrが−1であることは、簡便な説明のために示していない。
プロセッサの実行パスと直列的に浮動小数点コンパレータを書き戻す遅延が発生しないことを確実にする目的で、追加の実行パイプライン・ステージを必要とする場合があるが、さもなければ該プロセッサのクロックレートとこれによるFLOPSレートを制約する可能性があるためである。
本出願に記載の新規な方法は、例えば、些少な値の格納に要するメモリを低減することによりプロセッサが必要とするメモリ帯域を削減すること、メモリを往復するオンチップ又はオフチップのバスを介する帯域に関して効率的に、圧縮又は非圧縮のいずれにおいても、スカラー、ベクトル又はマトリクス・データの移動に要するバスのサイズを削減すること、メモリ又はプロセッサ・レジスタから読み出されるときに、圧縮されたスカラー、ベクトル又はマトリクス・データ上での動作時に電力消費を削減し、効率的な処理パワー(FLOPS)を向上すること、及びプロセッサのレイテンシを低減することを含む多数の重要な効果を提供する。
添付図面において、図示のラインは複数のラインに対応でき、これは隣接する番号を有する交差線によって表されており、例えば、図9におけるstore_dataバスは32ビット・バスを表す一方で、加算器ツリーからの各出力は5ビットである。
含む/からなるという言葉は、本明細書における使用時には、記載の特徴、整数、ステップ又は構成要素の存在を特定するためであるが、一以上の他の特徴、整数、ステップ、構成要素又はこれらの群の存在又は追加を排除するものではない。

Claims (88)

  1. 圧縮回路であって、
    a)個々のデータ値の構造体を格納するためのデータメモリと、
    b)マップを格納するためのマップ・メモリであって、前記マップは前記構造体内においてゼロでない値の位置を表すマップ・メモリと、
    c)データ出力であって、前記回路は、前記データメモリからゼロでないデータを取り出し、前記取り出されたデータを前記データ出力において前記マップを表すデータを組み合わせた圧縮構造体として提供するよう構成されるデータ出力と、を含む圧縮回路。
  2. 前記データメモリは複数のレジスタを含む、請求項1に記載の回路。
  3. 前記データメモリはレジスタ・ファイルを含む、請求項1に記載の回路。
  4. 前記マップ・メモリはレジスタを含む、請求項1に記載の回路。
  5. 前記位置はビットマップとして格納される、請求項4に記載の回路。
  6. 前記ビットマップにおける各ビットは、前記格納された構造体における個々のデータの値に対応する、請求項5に記載の回路。
  7. 複数のコンパレータを更に含み、各コンパレータはデータ値がゼロでないかどうかを識別し、各コンパレータの出力は前記マップ・メモリへの入力として提供される、請求項1に記載の回路。
  8. 前記コンパレータ入力は、前記データメモリの読み込みポートによって設けられる、請求項7に記載の回路。
  9. 前記コンパレータは、前記データメモリの書き込みポートによって設けられる、請求項7に記載の回路。
  10. 前記コンパレータ入力は、プロセッサのロード/ストアポートによって設けられる、請求項7に記載の回路。
  11. 前記データ出力はデータバスを含み、前記回路は、前記メモリから前記データバスに前記圧縮した構造体を連続して出力するよう構成される、請求項2に記載の回路。
  12. 前記マップからゼロでない値の前記数を計算するために、少なくとも一つの加算器を更に含む、請求項2に記載の回路。
  13. 前記メモリから前記データ出力にゼロでない出力の前記書き込みを連続して可能にするためのロジックを更に含む、請求項2に記載の回路。
  14. 前記ロジックは加算器の構成を含む、請求項13に記載の回路。
  15. 前記構成におけるそれぞれの後続の加算器は、前記構成において先行する加算器の前記出力を、入力として有する、請求項14に記載の回路。
  16. 各加算器は前記構造体において付随するデータ値に対応し、各加算器は前記付随するデータ値に対応する前記マップから入力を受け付ける、請求項2に記載の回路。
  17. 更に整数コンパレータのツリーを含み、各整数コンパレータは二つの整数入力を比較するためのものであり、各コンパレータの第1の入力は前記加算器ツリーにおいて対応する加算器からの出力である、請求項14に記載の回路。
  18. 各コンパレータへの第2の入力は、配列信号である、請求項17に記載の回路。
  19. 前記データ出力に些少ではないデータを書き込む前記正しいシーケンスを確認するために、前記マップからの前記値を個々のコンパレータ出力と結合するためのコンバイナを更に含む、請求項17に記載の回路。
  20. 前記回路の前記動作を制御するためのコントローラを更に含む、請求項1に記載の回路。
  21. 前記データ値は、単精度浮動小数点数である、請求項1に記載の回路。
  22. 前記データ値は、倍精度浮動小数点数である、請求項1に記載の回路。
  23. 前記データ値は、拡張精度浮動小数点数である、請求項1に記載の回路。
  24. 前記データ値は、128ビット精度浮動小数点数である、請求項1に記載の回路。
  25. 前記データ値は、整数である、請求項1に記載の回路。
  26. 前記回路は、出力として前記マップの内容も提供するよう適合される、請求項1に記載の回路。
  27. 前記回路は、集積回路に設けられる、請求項1に記載の回路。
  28. 請求項1から請求項27のいずれか一つに記載の少なくとも一つの回路を含むプロセッサ。
  29. 前記回路の複数の実例が存在する、請求項28に記載のプロセッサ。
  30. 圧縮構造体から復元される構造体を提供するための復元回路であって、
    a)個々の些少ではないデータ値の圧縮構造体を受け付けるための入力と、
    b)復元構造体内において些少ではないデータ値の位置を識別するマップを受信するためのマップ・レジスタと、
    c)復元構造体を格納するためのメモリであって、前記回路は前記マップ・レジスタの内容にしたがって個々の入力された些少ではないデータ値を前記メモリに投入するメモリと、を含む回路。
  31. 前記メモリは、複数のレジスタを含む、請求項30に記載の回路。
  32. 前記メモリは、レジスタ・ファイルを含む、請求項30に記載の回路。
  33. 前記位置は、ビットマップとして格納される、請求項30に記載の回路。
  34. 前記ビットマップにおける各ビットは、復元構造体の個々のデータ値に対応する、請求項33に記載の回路。
  35. 前記データ入力はデータバスを含み、前記回路は前記データバスから前記メモリに連続して前記圧縮構造体を入力するよう構成される、請求項30に記載の回路。
  36. 前記マップから些少ではない値の数を計算するための少なくとも一つの加算器を更に含む、請求項30に記載の回路。
  37. 前記データ入力からメモリに些少ではないデータの前記書き込みを可能にするためのロジックを更に含む、請求項30に記載の回路。
  38. 前記ロジックは、加算器の構成を含む、請求項37に記載の回路。
  39. 前記構成のそれぞれの後続する加算器は、前記構成の前記先行する加算器の前記出力を入力として有する、請求項38に記載の回路。
  40. 各加算器は、非圧縮の前記構造体における関連データ値に対応し、各加算器は前記関連データ値に対応する前記マップからの入力を受け付ける、請求項39に記載の回路。
  41. 整数コンパレータの構成を更に含み、各整数コンパレータは二つの整数を比較するためのものであり、各コンパレータの第1の入力は前記加算器構成において対応する加算器からの出力である、請求項40に記載の回路。
  42. 各コンパレータへの第2の入力は、配列信号である、請求項41に記載の回路。
  43. 前記データ出力へのゼロでないデータの書き込みの前記正しいシーケンスを確認するために、前記マップからの前記値を個々のコンパレータ出力と結合するためのコンバイナを更に含む、請求項41に記載の回路。
  44. 前記回路の動作を制御するためのコントローラを更に含む、請求項41に記載の回路。
  45. 前記データ値は、単精度浮動小数点数である、請求項30に記載の回路。
  46. 前記データ値は、倍精度浮動小数点数である、請求項30に記載の回路。
  47. 前記データ値は、整数である、請求項30に記載の回路。
  48. 更にマップ入力を含み、前記回路は、前記マップ入力から前記マップ・レジスタへマップをロードする用適合される、請求項30に記載の回路。
  49. 前記回路は、集積回路に設けられる、請求項30に記載の回路。
  50. 些少なデータ値はゼロのデータ値であり、些少ではないデータ値はゼロでないデータ値である、請求項30から請求項49のいずれかに記載の回路。
  51. 請求項30から請求項50のいずれかに記載の少なくとも一つの回路を含むプロセッサ。
  52. 前記回路の複数の実例が存在する、請求項51に記載のプロセッサ。
  53. データ構造体を格納する命令に応答する圧縮回路を含むプロセッサ・チップであって、前記圧縮回路は、格納に対して圧縮フォーマットを提供するために前記構造体から些少な値を除去するよう適合される、プロセッサ・チップ。
  54. 前記圧縮回路は、前記構造体において些少な値の位置を識別するマップを提供するよう適合される、請求項53に記載のプロセッサ・チップ。
  55. 前記圧縮フォーマット・データをロードする命令に応答する復元回路を更に含み、前記復元回路は、前記圧縮データにロード時に些少な値を再投入するよう適合される、請求項53に記載のプロセッサ。
  56. 前記復元回路は、些少な値を再投入するためにマップを使用する、請求項55に記載のプロセッサ。
  57. 些少なデータ値はゼロのデータ値であり、些少ではないデータ値はゼロでないデータ値である、請求項53から請求項56のいずれかに記載のプロセッサ。
  58. 前記回路は、前記データ出力に並行して、前記取り出された個々のデータを多重に提供するよう構成される、請求項1に記載の回路。
  59. 前記個々のデータ値はxビット長であり、前記データ出力はnxビットのデータバスを含み、nは1よりも大きな整数であり、nデータ値はある時刻に前記データバス上に配置される、請求項58に記載の回路。
  60. 前記回路は、個々の些少ではないデータ値の圧縮構造体を多重に受信するよう構成される、請求項30に記載の回路。
  61. 前記個々のデータ値はxビット長であり、前記データ入力はnxビットのデータバスを含み、nは1よりも大きな整数であり、nデータ値はある時刻に前記データバスから取り出される、請求項60に記載の回路。
  62. データ値の構造体を圧縮する方法であって、前記構造体内においてゼロの値の位置を識別するマップを生成するステップと、前記ゼロでない値及び前記マップのみからなる圧縮構造体を提供するために、前記構造体から前記識別された些少なエントリ値を除去するステップと、を含む方法。
  63. 前記データ値は、浮動小数点数である、請求項62に記載の方法。
  64. 前記データ値は、単精度又は倍精度浮動小数点数である、請求項62に記載の方法。
  65. 前記データ値は、拡張精度浮動小数点数又は128ビット精度浮動小数点数である、請求項62に記載の方法。
  66. 前記データ値は、整数である、請求項62に記載の方法。
  67. 前記マップは、個々のデータ値を表すビットマップの各ビットを有するビットマップを含む、請求項62〜66のいずれかに記載の方法。
  68. 前記位置を識別する前記ステップは、ゼロでない値であるかどうか決定するために、各データ値を比較することを含む、請求項62〜67のいずれかに記載の方法。
  69. 各比較の出力は、ゼロでない値の前記数に対して提供されるカウントに対して合計される、請求項68に記載の方法。
  70. 前記カウントは、前記圧縮構造体のサイズを決定するために用いられ、請求項68に記載の方法。
  71. 前記カウントは、前記圧縮構造体に設けられるエントリの前記数を決定するために用いる、請求項68に記載の方法。
  72. 各比較の前記出力は、前記圧縮構造体にデータ値の書込を有効化するために用いられる、請求項68に記載の方法。
  73. 前記構造体はマトリクスであり、前記マップは行及び列の前記数を識別する、請求項62から72のいずれかに記載の方法。
  74. 前記構造体は、行−列の構成に配列されるマトリクスを含む、請求項62に記載の方法。
  75. 圧縮データ構造体であって、複数のゼロでないデータ値と、前記構造体の非圧縮形態における複数の些少ではない値に対するゼロ・データ値の位置を表すマップとを含む、圧縮データ構造体。
  76. 前記マップはビットマップを含み、それぞれの独立したデータ値は独立したビットによって表される、請求項75に記載の圧縮データ構造体。
  77. 圧縮データ構造体を復元する方法であって、前記圧縮構造体は、複数のゼロでない値と、非圧縮構造体における前記ゼロでない値の位置を表すマップとを含み、前記方法は、
    未占有の非圧縮構造体を提供することと、
    前記ゼロでない値を取り出すことと、
    占有された復元データ構造体を提供するために、前記マップに表される位置にしたがって、前記未占有の構造体内の前記ゼロでない値を占有することと、
    のステップを含む方法。
  78. 前記未占有のマトリクスの前記値は、前記ゼロでない値によって占有の前にゼロまで初期化される)請求項77に記載の方法。
  79. 前記マップのゼロ値として識別される占有構造体における位置は、ゼロにセットされる、請求項77に記載の方法。
  80. 前記データ値は、浮動小数点数である、請求項77に記載の方法。
  81. 前記データ値は、単精度浮動小数点数である、請求項77に記載の方法。
  82. 前記データ値は、倍精度浮動小数点数である、請求項77に記載の方法。
  83. 前記データ値は、整数である、請求項77に記載の方法。
  84. 前記マップは、個々のデータ値を表す前記ビットマップの各ビットを有するビットマップからなる、請求項77から83のいずれかに記載の方法。
  85. 前記ビットマップの前記個々のビットは、前記圧縮構造体におけるゼロでない値の前記数のカウントを提供するために合計される、請求項84に記載の方法。
  86. 前記カウントは、前記未占有の構造体に読み込まれるデータ値の量を決定するために用いられる、請求項85に記載の方法。
  87. 前記マップは、前記非圧縮構造体へのデータ値の書き込みを有効化するために用いられる、請求項77から86のいずれかに記載の方法。
  88. 前記構造体は、行−列構成を有するマトリクスを含む、請求項77から87のいずれかに記載の方法。
JP2009553163A 2007-03-15 2008-03-14 データ圧縮のための回路及びこれを用いるプロセッサ Ceased JP2010521728A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0704976A GB2447494A (en) 2007-03-15 2007-03-15 A method and circuit for compressing data using a bitmap to identify the location of data values
US91127307P 2007-04-11 2007-04-11
PCT/EP2008/053133 WO2008110633A1 (en) 2007-03-15 2008-03-14 A circuit for compressing data and a processor employing same

Publications (2)

Publication Number Publication Date
JP2010521728A true JP2010521728A (ja) 2010-06-24
JP2010521728A5 JP2010521728A5 (ja) 2011-05-06

Family

ID=38008470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009553163A Ceased JP2010521728A (ja) 2007-03-15 2008-03-14 データ圧縮のための回路及びこれを用いるプロセッサ

Country Status (8)

Country Link
US (1) US8713080B2 (ja)
EP (1) EP2137821A1 (ja)
JP (1) JP2010521728A (ja)
KR (1) KR20100029179A (ja)
CN (1) CN101689863A (ja)
GB (1) GB2447494A (ja)
IE (1) IES20080201A2 (ja)
WO (1) WO2008110633A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511986A (ja) * 2008-02-11 2011-04-14 リニア アルジェブラ テクノロジーズ リミテッド プロセッサ
JP2016095600A (ja) * 2014-11-13 2016-05-26 カシオ計算機株式会社 電子機器およびプログラム
JP2022504995A (ja) * 2019-10-12 2022-01-14 バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751687B2 (en) * 2010-04-30 2014-06-10 Microsoft Corporation Efficient encoding of structured data
CN102739444A (zh) * 2012-06-12 2012-10-17 中兴通讯股份有限公司 一种性能数据传输方法、系统和网管
US9256502B2 (en) * 2012-06-19 2016-02-09 Oracle International Corporation Method and system for inter-processor communication
GB2551291B (en) 2013-05-23 2018-02-14 Linear Algebra Tech Limited Corner detection
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US9934043B2 (en) 2013-08-08 2018-04-03 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing computational imaging pipeline
US9196017B2 (en) 2013-11-15 2015-11-24 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing noise from an image
US9270872B2 (en) 2013-11-26 2016-02-23 Linear Algebra Technologies Limited Apparatus, systems, and methods for removing shading effect from image
US20170068458A1 (en) * 2015-09-03 2017-03-09 Qualcomm Incorporated Hardware-accelerated storage compression
US10613756B2 (en) * 2015-09-03 2020-04-07 Qualcomm Incorporated Hardware-accelerated storage compression
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US10565207B2 (en) * 2016-04-12 2020-02-18 Hsilin Huang Method, system and program product for mask-based compression of a sparse matrix
US11469772B2 (en) * 2017-04-11 2022-10-11 Joshua Huang Method, system and program product for mask-based compression of a sparse matrix
EP3501010B1 (en) 2016-08-19 2023-11-01 Movidius Ltd. Rendering operations using sparse volumetric data
WO2018174931A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and appartus for tile configuration
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
JP6986678B2 (ja) * 2017-07-10 2021-12-22 パナソニックIpマネジメント株式会社 映像信号処理装置及び映像信号伝送システム
WO2019079358A1 (en) 2017-10-16 2019-04-25 KOMENDA, J. Kyle HASHING DENSITY COORDINATES FOR VOLUMETRIC DATA
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
US20190362235A1 (en) 2018-05-23 2019-11-28 Xiaofan Xu Hybrid neural network pruning
JP7074989B2 (ja) * 2018-08-31 2022-05-25 国立大学法人 筑波大学 データ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システム
WO2020125973A1 (en) * 2018-12-19 2020-06-25 Telefonaktiebolaget Lm Ericsson (Publ) Compressing and decompressing information about data objects hosted at a device
US11379420B2 (en) 2019-03-08 2022-07-05 Nvidia Corporation Decompression techniques for processing compressed data suitable for artificial neural networks
WO2020211000A1 (zh) * 2019-04-17 2020-10-22 深圳市大疆创新科技有限公司 数据解压缩的装置与方法
US11941633B2 (en) 2019-09-06 2024-03-26 U.S. Bancorp, National Association System for identifying points of compromise
US11468447B2 (en) * 2019-09-06 2022-10-11 U.S. Bancorp, National Association System for identifying points of compromise
US11586601B2 (en) * 2020-02-05 2023-02-21 Alibaba Group Holding Limited Apparatus and method for representation of a sparse matrix in a neural network
US10911267B1 (en) 2020-04-10 2021-02-02 Apple Inc. Data-enable mask compression on a communication bus
US11362672B2 (en) 2020-05-08 2022-06-14 Qualcomm Incorporated Inline decompression

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003516702A (ja) * 1999-12-07 2003-05-13 任天堂株式会社 3d変換マトリックス圧縮および復元

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3553651A (en) * 1967-12-06 1971-01-05 Singer General Precision Memory storage system
DE2615790A1 (de) * 1976-04-10 1977-10-20 Bbc Brown Boveri & Cie Verfahren zur datenreduktion auf bit-seriellen uebertragungswegen
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
US5586300A (en) * 1994-07-20 1996-12-17 Emc Corporation Flexible addressing memory controller wherein multiple memory modules may be accessed according to comparison of configuration addresses
US5963642A (en) * 1996-12-30 1999-10-05 Goldstein; Benjamin D. Method and apparatus for secure storage of data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003516702A (ja) * 1999-12-07 2003-05-13 任天堂株式会社 3d変換マトリックス圧縮および復元

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011511986A (ja) * 2008-02-11 2011-04-14 リニア アルジェブラ テクノロジーズ リミテッド プロセッサ
JP2016095600A (ja) * 2014-11-13 2016-05-26 カシオ計算機株式会社 電子機器およびプログラム
JP2022504995A (ja) * 2019-10-12 2022-01-14 バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム
JP7256811B2 (ja) 2019-10-12 2023-04-12 バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム

Also Published As

Publication number Publication date
KR20100029179A (ko) 2010-03-16
US8713080B2 (en) 2014-04-29
US20100106692A1 (en) 2010-04-29
CN101689863A (zh) 2010-03-31
EP2137821A1 (en) 2009-12-30
IES20080201A2 (en) 2008-09-17
WO2008110633A1 (en) 2008-09-18
GB2447494A (en) 2008-09-17
GB0704976D0 (en) 2007-04-25

Similar Documents

Publication Publication Date Title
JP2010521728A (ja) データ圧縮のための回路及びこれを用いるプロセッサ
US10719318B2 (en) Processor
US8984043B2 (en) Multiplying and adding matrices
CN108388537B (zh) 一种卷积神经网络加速装置和方法
US7836116B1 (en) Fast fourier transforms and related transforms using cooperative thread arrays
US7640284B1 (en) Bit reversal methods for a parallel processor
US8094157B1 (en) Performing an occurence count of radices
JP2744526B2 (ja) 準16基数プロセッサおよび方法
EP2017743A2 (en) High speed and efficient matrix multiplication hardware module
US7689541B1 (en) Reordering data using a series of offsets
JP2010521728A5 (ja)
US10884736B1 (en) Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing
KR20190028426A (ko) Simd 아키텍처에서 레인 셔플을 위한 셔플러 회로
US7624107B1 (en) Radix sort algorithm for graphics processing units
US11550586B2 (en) Method and tensor traversal engine for strided memory access during execution of neural networks
CN117539546A (zh) 基于非空列存储的稀疏矩阵向量乘加速方法及装置
US11586922B2 (en) Tensor dropout in a neural network
JP2009295159A (ja) メモリのアクセス方法
Shahbahrami et al. FPGA implementation of parallel histogram computation
CN111158757B (zh) 并行存取装置和方法以及芯片
CN112149049A (zh) 用于变换矩阵的装置和方法、数据处理系统
KR101715456B1 (ko) 스레드 오프셋 카운터
EP0655694B1 (en) Discrete cosine transform processor
CN111831207B (zh) 一种数据处理方法、装置及其设备
IES85108Y1 (en) A circuit for compressing data and a processor employing same

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130318

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130418

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130515

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130814

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130911

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131008

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20140225