JP2011511986A - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP2011511986A JP2011511986A JP2010545506A JP2010545506A JP2011511986A JP 2011511986 A JP2011511986 A JP 2011511986A JP 2010545506 A JP2010545506 A JP 2010545506A JP 2010545506 A JP2010545506 A JP 2010545506A JP 2011511986 A JP2011511986 A JP 2011511986A
- Authority
- JP
- Japan
- Prior art keywords
- data
- processor
- data value
- value
- memory
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 65
- 239000013598 vector Substances 0.000 claims description 33
- 238000007906 compression Methods 0.000 claims description 26
- 230000006835 compression Effects 0.000 claims description 26
- 239000011159 matrix material Substances 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006837 decompression Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本出願は、全体の圧縮構造体を読み出し解凍する必要なく、メモリ内の圧縮構造体にランダムにアクセスする方法を提供する。
Description
本出願は、プロセッサの分野、およびメモリとプロセッサの間のデータ転送の方法に関する。特に、本出願は、メモリ内の圧縮データ構造体において、圧縮構造体の全体を読み出して解凍する必要なく、個別の値、または、隣接グループもしくは非隣接グループの値にアクセスする方法を対象にする。
計算システムの設計においては基本的な問題がある。すなわち、メモリアクセスの時間コストを最小にすることである。
これは、計算をサポートするどんなメモリ技術を使用しても、メモリをプロセッサに接続するためにどんな技術を使用しても、コンピュータシステムを設計する上での基本的な制限である。最大の制限は、所要時間内にどれだけの量の情報をプロセッサとメモリ間で転送できるかによる。これは、利用できるメモリの帯域幅であり、利用できるメモリの帯域幅による計算パワーの制限は、しばしば、「メモリウォール」と称される。
本出願は、実効的なメモリの帯域幅を増やそうとし、データ圧縮の使用により「メモリウォール」の制限を最小化しようとする。
データ圧縮を使用し、「メモリウォール」の影響を減らすことは公知である。しかし、圧縮メモリサブシステムを使用するプログラマーにとっての問題点は、図1のシステムに示すように、データを処理する前に解凍しなければならないことである。これは、圧縮データをメモリ10の一部からプロセッサ16のレジスタファイルへ読み出すステップ、プログラムメモリ18から読み出したプログラムコードを使用して読み出したデータを解凍するステップ、および、メモリ12内の他の圧縮されていない部分に解凍したデータを記憶するステップを伴う。
しかし、この解決策は、圧縮データを読み出し、非圧縮の形態で記憶し、再びプロセッサに読み出して処理するために、追加のメモリ帯域幅を必要とするという不利な点がある。非圧縮データを保持するために追加のメモリ容量が必要となり、解凍プロセスはプロセッサのレジスタファイルへの圧力を増加させると考えられる。明らかに、これは次善の解決策である。このことは、なぜ、このような圧縮メモリのサブシステムは、マイクロプロセッサ産業の主流となるより、学術的好奇心の対象のままであるのかの説明を示唆する。
欧州特許出願公開第0240032号明細書は、ベクトルデータを記憶し読み出すためのメモリを備えるベクトルプロセッサを開示する。ベクトルプロセッサは、各々が複数のm個のベクトル要素を並行して読み出しまたは書き込みができる複数のベクトルレジスタと、並行してm個のマスクビットに対応できる少なくとも1つのマスクベクトルレジスタと、前記メモリ、前記複数のベクトルレジスタおよび前記マスクベクトルレジスタに接続されており、メモリ内に一定の間隔で配置されたアドレスから、有効なマスクビットに対応する選択されたベクトルレジスタの選択された記憶位置へ、ベクトル要素を転送するための指示に応答する転送部とを備える。この方法は有用であるが、ベクトルデータの記憶/読み出しはレジスタ全体に制限される。
レジスタブロッキングは、行列代数(特に有限要素の場合)を加速するために有効な技術である。しかし、多くの行列(例えば、GOOGLE(登録商標)のようなサーチエンジンで使用されるもの)は零を埋める必要があり、有効なFLOPS(フロップス、Floating Point Operations Per Second)を減少させ、メモリに要求される帯域幅を増加させるという不利な点がある。これらは両方とも、現代の計算システムにおいて供給が不足しているものである。
実際は、処理能力およびメモリの帯域幅は、それぞれ、年率50%および7%の全く異なる比率で向上しており、これにより増大している差は、上述のように「メモリウォール」と称される。メモリウォールを「突破」したとの主張が数多くある。これらは、たいていキャッシュを使用しチップ外で処理しなければならない確率を減らす構成、および/または、マルチスレッドを使用しチップ外の処理に伴う待ち時間および不利益を軽減する構成からなる。
これらの方法は、制限された外部メモリの帯域幅の問題を解決するよりは、むしろ、単に隠している。また、これらの方法は、一般的に、データセットが十分にデータの局所性を示していること、および/または、プログラムが十分なスレッドレベル並列性(TLP: Thread-Level Parallelism)を示し効率的であること、に依存している。これは、全ての問題に当てはまるわけではなく、確実に先験的にいつも知られているわけではない。実際には、より大きく、かつ、より興味深い問題の多くは、十分なデータの局所性も十分なTLPも示さない。システム全体のスループットは、外部メモリの帯域幅によって制限されるポイントまで悪化する。そして、チップ上に追加した追加ハードウェアは役に立たない。この理由により、大きな工学アプリケーションにおいて、プロセッサの性能を、製造業者が最大能力の仕様としている能力の1%、または、それ以下まで引き下ろしていることは、珍しいことではない。
本出願は、圧縮フォーマットでデータを記憶することにより、実効的なメモリの帯域幅を増やし、計算上の「メモリウォール」の制限を最小化しようとする。このことは、例えば、コンピュータグラフィクス、剛体の力学、有限要素解析、および、その他の科学および工学アプリケーションを含む、メモリに記憶する必要がある大きなデータを処理する多くのアプリケーションにおいて使用されるブロック構造に適した圧縮手段および解凍手段を提供することにより達成される。「メモリウォール」の影響をさらに減らすために、プロセッサのパイプラインも圧縮を利用するように変形させ、処理レートを、圧縮データのみを計算することにより達成できる処理レートよりも増加させる。
特に、本出願では、メモリに記憶されている圧縮構造体内の個別のデータに、値のマップ、および、指示の一部として特定された関連するフィールドビットを使用し、ランダムアクセスすることを許可している。
したがって、本出願の第1の実施形態は、請求項1および38に記載されるプロセッサを提供する。本出願は、請求項21および56に記載される方法も提供する。本出願は、さらに、請求項35および69に記載されるデータ処理装置も提供する。有利な実施形態は、従属項において提供する。
本出願を、添付図面を参照して説明する。
圧縮の望ましい状況の典型的な例は、行列表示および線形代数演算を使用して、コンピュータグラフィクスおよび関連アプリケーションにおける2次元画面で現実性をシミュレーションするものである。もとの行列データへの演算は、しばしば、回転、その他の変換およびそれらのシーケンスからなる。図2に、それらのタイプを示す。図に示すように、これらの行列は多数の零を含み、多数の零は、読込/記憶するための多くのメモリの帯域幅を必要とする。しかし、多数の零は、行列全体を使用して実行された計算結果に貢献していない。すなわち、多数の零は、計算の観点からは瑣末な値である。
図3に示すように、本出願は、メモリ内の圧縮データを直接演算でき、解凍プロセスを必要としない変形したプロセッサを提供する。したがって、追加の非圧縮データ用のバッファ、および、圧縮データをバッファエリアに解凍し、さらに処理をすすめるための追加のプロセッサおよびメモリの帯域幅が不要となる。代わりに、圧縮および解凍プロセスは、プロセッサのメモリアクセス構造体に統合される。
本出願は、例えば、浮動小数点数の行列、浮動小数点数のベクトル、浮動小数点数のスカラー、符号付き整数、符号なし整数、文字列、および、アドレスポインタの任意の組み合わせからなる、任意のサイズおよび複雑さの圧縮構造体を可能とする。
好適には、圧縮および解凍ロジックは、プロセッサの読込/記憶ポート内に埋め込まれ、処理1件ごとに考慮する方式で、どのようにデータを圧縮メモリサブシステムから読み出し、および、圧縮メモリサブシステムへ書き込むかの詳細について気にする必要をなくすという点で、プログラマーの仕事を容易にする。
ここに記載する解決策は、値マップを使用し、図4に示す方法で、零および非零の入力を高密度なサブ行列に符合化する。このような値マップの使用は、先に関連出願において記載されている(2007年4月11日に出願の米国仮特許出願第60/911,273号、2007年4月11日に出願の米国仮特許出願第60/911,274号、英国特許出願第07049999.2号、英国特許出願第07049976.0号、および、優先権主張の基礎とした対応するPCT出願)。これらの全体の内容を、参照により本願に援用する。図示の例においては、37.5%の圧縮を達成している。提案した解決策は、記憶される行列の各々の零入力は、32ビットの単精度、64ビットの倍精度等の数ではなく1ビットにより表されるという有利な点を有する。全体の圧縮は、32ビットの単精度の入力をもつ疎行列を記憶する32ビットのメモリシステムにおいて、1つの密行列あたり1つ以上の入力が零であれば達成される。
上述の基本的な圧縮は興味深いものであり有利な効果を提供するが、多くの実際のアプリケーションにおいては、プログラマーは単なる疎行列以上のものを記憶することを望み、しばしば、複雑なデータ構造体に記憶されているデータを記憶し読み出すことを必要とする。課題は、いかに圧縮技術を統合し、混在した圧縮/非圧縮のデータ構造体を取り扱う際に、プログラマーを過度に悩ませることなく、同等の性能およびメモリ圧縮の利点を上述のアプリケーションに提供できるかである。
本出願は、上述の方法により圧縮することができるが、非圧縮の浮動小数点数または整数を含んでいてもよい、大きな構造体内のデータにランダムにアクセスする手段を提供する。この技術によれば、基本構造は、32ビットの整数により表される32ビットの入力を32個まで含むことができる(値マップ)。原則として、この技術は32個に制限されない。しかし、32個の入力の値または構造、値マップの大きさ、および、入力の個数を選択し、プロセッサ設計の要求を満たすようにすることができる。値マップ内の1ビットは、メモリ内のその位置に、圧縮前のように、瑣末でない浮動小数点数または整数値が存在することを示す。各値は1つのビットで表されるので、値マップはビットマップとして参照することができる。図5に、どのように混在(圧縮/非圧縮)構造体をメモリに記憶するかを示す。
提案する圧縮構造体の解凍ロジックにおける演算の基本的な原則は、値マップは、瑣末な値の存在を表すために使用されるということである。本出願の目的のためには、瑣末な値は単精度(32ビット)の0.0である(Hexでは、00000000)が、同様の技術は、倍精度またはより精度の高い浮動小数点数に容易に拡張できる。あるいは、ある特定のデータセットにおいて0.0以外の数が多数ある場合は、ここに示した技術は、0.0でない数が値マップの0を表すように容易に拡張できる。例えば、1.0という値を多く含むデータセットもあり得る。
図5に示すデータ配列のRAMアドレスの例からわかるように、32ビットの値マップの各々の非零の入力(sx、sy、sz、x0−x3、y0−y3、z0−z3)に対して、オフセット「1」がベースアドレスに足される。実際には、メモリ内の値マップおよび次の構造のベースアドレスの両方が、現在の構造に埋め込まれ、プログラマーが読み出すことができる。
圧縮構造体を使用することは、プログラマーにとっては、圧縮構造体で記憶されたデータを記憶し読み出す際に、オーバーヘッドを減らすことに役立つ。本出願においては、プログラミングのオーバーヘッドは、プロセッサのLSU(Load-Store Unit)アドレス生成器内の圧縮データを記憶し読み出す際の複雑さを隠すことにより最小化される。プロセッサは、例えば、RISCプロセッサでもよい。アドレス生成器により、プログラマーは、どのデータ要素が圧縮構造体から読み出されるかを特定することができる。順々に、LSUは要求された要素をメモリ内の圧縮構造体から、全体の圧縮構造体を解凍することなく読み出すことができる。
したがって、ここに示す例示的な配列においては、アドレス生成器により、プログラマーは、32入力の圧縮構造体から、どの8個の可能な4入力フィールド(ベクトル)を、単純な8ビットフィールドマスクを使って、読込み記憶するかを特定することができる。8ビットフィールドマスクは、図6に示す読込/記憶演算コードの中に含まれる。この例示的な配列においては、圧縮ベクトルを読込むための指示はLDCVであり、圧縮データを記憶するための指示はSTCVである。
この例示的な配列においては、プログラマーは、データがそこから読み出され、または、そこに記憶される、4入力のベクトルレジスタファイル(VRF:Vector Register File)レジスタを特定することができる。アドレス生成器が圧縮構造体のオフセットおよび値マップを追加する整数レジスタファイル(IRF:Integer Register File)内のベースレジスタもIRF内に登録する。演算コードは直近の8ビット値f[7:0]を含み、この8ビット値は、どの8個の4入力圧縮ベクトルが、実際にVRFから読込まれ、VRFに記憶されるかを選択するために使用される。
LSUのポート幅は一般的に制限されているため、LDCVおよびSTCVの指示は、複数のクロックサイクルを必要とすることを理解されたい。本出願の配列例では64ビットに制限されている。結果として、値マップは、fビットの順に繰り返す方法で復号され、64ビットの圧縮入力は、正しいVRFレジスタへ書き込まれ、または、読み出され、また、LSUポートから見て正しいメモリ(RAM)アドレスに記憶され、または、読み出される。図7に、64ビットメモリサブシステムにおける典型的な圧縮構造体のRAM内でのレイアウトを示す。
この方法および配列は、32ビットワードまたは64ビット幅メモリに限定されるものではなく、類似のレイアウトが、96または128ビット幅メモリなどを含む他のメモリ幅についても可能であることを理解されたい。しかし、説明を平易にするため、このような配列構成については、ここでは詳細に説明しない。
VRFは、完全な圧縮構造体のための段階領域として、圧縮読込みの場合は、その一部がプロセッサ内の他のレジスタファイルへ分散する前に使用することができる。または、その代わりに、VRFは、LSUポートに接続した外部RAMに圧縮構造体を記憶するための段階領域として使用することもできる。
図8を参照して、LSUのためのロジックの例を示す。この例は、所定のベースアドレス(base_addr)における圧縮構造体内部から値を読込むためのLSU圧縮構造体アドレス生成器のロジックである。加算器(圧縮器)の第1の行50が提供され、8個の4ビット値マップフィールド(bm7〜bm0)に配列された32ビットの値マップ構造体を、8個の3ビット数に圧縮する。各々の3ビット数は、与えられた4ビットの値マップ内の数を表す。加算器の第2の行52は、圧縮器の行の結果を加算するために提供される。圧縮器は、各々の値マップの開始アドレスを生成し、これによって、各々の値マップフィールドは、圧縮した読込または記憶演算コードにおいて、適切なfビットを適用して要求された場合に、独立してアドレスを指定することができる。ANDゲートの行54が提供され、圧縮した読込/記憶演算コードにおいて、f(フィールド)ビットセットの状態に応じて、要求されなかったフィールドをマスクする。これらのANDゲートの出力は、その後、さらなる加算器のセット56により加算され、32ビットワードの総数(word_cnt)を生成する。この総数は、演算コードのfビットに基づいて、メモリから読込み、メモリへ記憶しなければならない。最後の[8:1]のマルチプレクサ段58は、8フィールド実行信号により制御される。このフィールド実行信号により、選択され要求された値マップのアドレスを、要求されたRAMアドレスを生成するために、最後の加算器60に順に適用することができる。
図9に、圧縮データ構造体の例における様々な信号の値を示す。示したアドレスは、選択したIRF(整数レジスタファイル:Integer Register File)レジスタにおいて、値マップから静的に計算され、また、その後、圧縮した読込または記憶指示において特定されたfビットの段階に応じて順に適用される。
図10に、要求された制御信号を生成するためのカウンタおよび有限状態マシンを含む、圧縮した読込/記憶演算のための完全なアドレス生成ロジックを示す。
アドレス選択マルチプレクサに適用するアドレスの順番を選択するfen[2:0]信号は、図11に示す真理値表に従って動作する。
図12に示すように、ソース/宛先アドレスは、LSUアドレス生成器によって生成された圧縮した読込/記憶演算のためにのみ要求されているのではなく、圧縮した読込/記憶演算において特定されたものに関連したソース/宛先VRF行のためのソース/宛先アドレスも生成される。64ビットLSUバスの場合は、最大2行のVRF行に、圧縮した読込/記憶指示におけるアドレスを指定することができる。この配列の例においては、VRFは、圧縮した読込/記憶演算において、データを読込むソース、または、データを記憶する宛先として選択されたが、原則として、整数レジスタファイル(IRF:Integer Register File)、または、スカラーレジスタファイル(SRF:Scalar Register Rile)を、同じように選択することができる。
図12の例示的なタイミング図は、明らかに、圧縮した読込/記憶演算は、実行に複数のサイクルを要することを示す。また、全ての必要な制御信号は、圧縮した読込/記憶制御ワードにおいて特定されたfビットと結合して、圧縮構造体についてのIRFの値マップ記述子の情報から生成されることを示す。制御信号のシーケンスは、アドレス生成器へのクロック入力により駆動されるカウンタとともに、fビットおよび値マップを用いて導かれる。
このタイミング図は、読込演算および記憶演算の両方についての動作を示す。2つの演算は、以下に示す点についてのみ異なる。
1.圧縮した読込の場合、読み出し信号が生成され、LSUポートに接続するRAMから読み出される。書き込み信号は、RAMの内容への宛先として働く適切なVRF行のために生成される。実際には、一連のRAMの読み出しおよびVRFの書き込みは、IRF内の値マップの状態、および、圧縮した読込演算コード内のfビットセットに依存して生成される。
2.同様に、圧縮した記憶の場合、一連のVRFの読み出しおよびRAMの書き込みは、IRF内の値マップの状態、および、圧縮した記憶演算コード内のfビットセットに依存して生成される。
1.圧縮した読込の場合、読み出し信号が生成され、LSUポートに接続するRAMから読み出される。書き込み信号は、RAMの内容への宛先として働く適切なVRF行のために生成される。実際には、一連のRAMの読み出しおよびVRFの書き込みは、IRF内の値マップの状態、および、圧縮した読込演算コード内のfビットセットに依存して生成される。
2.同様に、圧縮した記憶の場合、一連のVRFの読み出しおよびRAMの書き込みは、IRF内の値マップの状態、および、圧縮した記憶演算コード内のfビットセットに依存して生成される。
図13に、SVUアーキテクチャのブロック図を示す。読込記憶部(LSU:Load Store Unit)は圧縮した読込/記憶演算とともに、その一部を構成する。図に示すように、主要な外部とのインターフェースは、SVU指示メモリへのものおよびLSUポートであり、これらは、データメモリバンクとともにデバッグ制御部(DCU:Debug Control Unit)に接続する。デバッグ制御部により、SVUレジスタおよび診断情報は、プロセッサバスを経由して読み出し、書き込むことができる。
指示ワードは、7個のスロットを有する。このスロットにより、指示ワードは、図14に示すように、1サイクル中に9個の機能部のうち7個までを制御することができる。
本実施形態においては、128ビットの指示のうちの最も左のビットは、将来の機能のために予約されていて、残りの127ビットがフィールドに分割される。このフィールドのそれぞれは、プロセッサのアーキテクチャの好適な実施形態に含まれる9個の機能部のうちの1個の機能部を制御する。
1x 基礎実行部(PEU:Predicated Execution Unit)
1x 分岐/繰り返し部(BRU:Branch/Repeat Unit)
2x 読込記憶部(LSU:Load-Store Units)
1x ベクトル演算部(VAU:Vector Arithmetic Unit)
1x スカラー演算部(SAU:Scalar Arithmetic Unit)
2x 整数演算部(IAU:Integer Arithmetic Units)
1x 比較/移動部(CMU:Compare/Move Unit)
1x 基礎実行部(PEU:Predicated Execution Unit)
1x 分岐/繰り返し部(BRU:Branch/Repeat Unit)
2x 読込記憶部(LSU:Load-Store Units)
1x ベクトル演算部(VAU:Vector Arithmetic Unit)
1x スカラー演算部(SAU:Scalar Arithmetic Unit)
2x 整数演算部(IAU:Integer Arithmetic Units)
1x 比較/移動部(CMU:Compare/Move Unit)
指示ワードの直接の制御下にない最後の機能部は、デバッグ制御部(DCU:Debug Control-Unit)である。デバッグ制御部により、プロセッサは、特に例外的な条件、及び/又は、中断が発生した場合に、プログラムの実行を監視し制御することができる。
例示的なLSUにより、プログラマーは、ベクトルデータをメモリからVRFレジスタに読込むことができる。LSUは、24ビットの演算コードにより制御され、8種類の演算のうちの1つの演算を実行することができる。
NOP メモリからデータを読込まない(省電力のためクロックがゲートによりオフされる)。
LDVX メモリから4要素の非圧縮のベクトルを読込む。
STVX メモリに4要素の非圧縮のベクトルを記憶する。
LDCV メモリから4要素の圧縮したベクトルを読込む。
STCV メモリに4要素の圧縮したベクトル要素を記憶する。
LDLI 特定したIRFレジスタの直近の16ビットを下位16ビットに読込む。
LDHI 特定したIRFレジスタの直近の16ビットを上位16ビットに読込む。
CPXI IRF値マップのフィールド1〜8のサイズ/アドレスをIRFベースレジスタにコピーする。
NOP メモリからデータを読込まない(省電力のためクロックがゲートによりオフされる)。
LDVX メモリから4要素の非圧縮のベクトルを読込む。
STVX メモリに4要素の非圧縮のベクトルを記憶する。
LDCV メモリから4要素の圧縮したベクトルを読込む。
STCV メモリに4要素の圧縮したベクトル要素を記憶する。
LDLI 特定したIRFレジスタの直近の16ビットを下位16ビットに読込む。
LDHI 特定したIRFレジスタの直近の16ビットを上位16ビットに読込む。
CPXI IRF値マップのフィールド1〜8のサイズ/アドレスをIRFベースレジスタにコピーする。
図15に、LSUのための演算コードテーブルの例を示す。
図16に、非圧縮の読込/記憶モードにおけるLSUのブロック図を示す。このモードにおいては、「bru_hold」信号は、読込/記憶演算が完了するまで、BRU内のプログラムカウンタ(PC:Program-Counter)が前に進むことを妨げる。読込および記憶が、1回のサイクルでは完了しないということは重要である。4要素が1回のサイクルで転送される(128ビット)よりは、4個要素が1または2回のサイクルで転送されなければならないからである。
図17に、非零の値マップ生成のための、値マップ生成ロジックおよびVRFへの読込/記憶パスのブロック図を示す。非圧縮の4要素のベクトルがメモリからVRFへ読込まれるときはいつも、追加の4入力非零値マップが、4個のコンパレータ(4個の32入力NORゲート)の行を用いて生成され、メモリから取り出されたデータとして対応するVRFの行に挿入される。この4ビットの値マップの入力を後に用いて、データを圧縮フォーマットでメモリに記憶し、零値についての瑣末な演算を削除することによって、消費電力を最小にすることができる。
ここに記載するプロセッサアーキテクチャの比類のない能力は、全ての圧縮構造体を読み出す必要のない、ランダムアクセスの方法による、その圧縮データの読込および記憶へのサポートである。このサポートの理由は、多くの興味深いアプリケーションは、大量の疎データ、すなわち、メモリから取り出す必要がある多くの零を含むデータについて演算し、演算したときに零という結果を生成するからである。
このアーキテクチャの主要な前提は、プロセッサが取り扱う全てのデータは、4要素のベクトルにまとめられてメモリに記憶されるということである。これは、このデータが圧縮か非圧縮か、および、データが行列、ベクトル、まとまったスカラーまたは整数のいずれから構成されるかにかかわらない。この前提に基づいて、プログラマーは、行列/ベクトル/スカラー/整数データを、非零の入力のみが明確に記憶される32入力の圧縮ブロックの中に構成してもよい。全ての零の値および非零の値は、非零の値マップにおいて1ビット入力により表わされる。この値マップは、32入力をRAM内の32または、それより少ない32ビットワードに圧縮/解凍するために使用することができる。
図に示すような、3次元グラフィックスおよびゲームの物理(剛体力学)のアプリケーションに用いられる変換行列は良い例である。図2に、8個の行列に対応する32ビットの値マップを示す。
図18に示すように、グラフィック変換行列は、多くの割合の瑣末な値(零値)を含み、このことは、50%以上のデータ圧縮を達成することを可能とする。
圧縮した値マップを用いることにより、プログラマーが定義した複雑なデータ構造体へのランダムアクセスは、図19に示すハードウェアを用いて可能となる。圧縮した読込演算により、プログラマーは、IRFにおいて特定されたベースアドレスの最初のアドレスからの演算コードにおいて8ビットフィールドにより特定された一連の最大8個のA要素値を集めることができる。ハードウェアは、自動的に、必要なアドレスを生成し、信号を読み出し、また、複数のサイクルの読込を必要とする場合、例えば、4個以上の非零をメモリから読込まなければならない場合に、BRUをホールドするためのホールド信号も生成する。その一方、従来技術においては、このタイプの複雑なスキャッタ・ギャザー機能性は、典型的には、複雑なデータ構造体のインデックスを作成するために、複数のレジスタをベースアドレスおよびオフセットによりセットアップすることを必要とする、従来のプロセッサアーキテクチャで達成するのは複雑である。その上、このような従来のプロセッサのアーキテクチャは、瑣末なデータ値を圧縮するための準備をしない。
好適には、LSUのポート幅は、例えば、レジスタにおける入力として与えられたパラメータを用いて、独立して設定する。図20に示すようにSVUのLSUポートに接続された1/2/4要素幅データバスにわたる複数のトランザクションにおいて、4要素のベクトルを読込/記憶できるようにすることによって、このポート幅のパラメータにより、最上位のSoCの相互接続をSVUのスループットと交換することができる。
ポート幅のパラメータ化を支えるための追加アドレスlsbsの生成は、カウンタを用いて実行される。このカウンタは、0個、1個または2個のアドレスのlsbsを、図21に示すLSUにより生成されたアドレスに付け加える。
図22に、SVUのRAMへの4要素の記憶へのポート幅パラメータの効果を示す。図に示すように、128ビットのベクトルを読込または記憶するために要するサイクル数は、ポート幅が1(32ビット)のときは4サイクル、ポート幅が2(64ビット)のときは2サイクル、および、ポート幅が4(128ビット)のときは1サイクルである。
本出願は、メモリとプロセッサ間のデータ転送を実行するための特定された演算コードを有する指示セットを備えるプロセッサについて記載してきたが、プログラム記憶装置に明示的な指示セットがない場合も機能を実行することができ、むしろ、読込および記憶は、ステートマシンまたは他の手段の制御の下に実行されることを理解されたい。重要な利点は、1つまたはそれ以上のデータ項目を、全体の圧縮構造体を読み出し解凍する必要なく、メモリ内の圧縮構造体から取り扱うことができるということである。同様に、データの1項目を、全体の圧縮構造体を読み出しまたは解凍する必要なく、メモリに記憶された圧縮構造体において更新することができる。
この明細書においては、「含む/備える(comprises/comprising)」の用語は、決まった特徴、整数、ステップまたは要素の存在を特定することものである。しかし、1つまたはそれ以上の特徴、整数、ステップ、要素またはこれらのグループの存在または追加を排除するものではない。
Claims (69)
- 指示セットのアーキテクチャを有するプロセッサであって、
前記指示セットのアーキテクチャは、ランダムアクセスメモリに記憶された圧縮構造体からデータ値を読み出すための、少なくとも1つの読込指示を備え、
前記少なくとも1つの読込指示は、演算コード、および、非圧縮構造体において前記データ値の位置を特定する少なくとも1つの演算対象を備え、
前記プロセッサは、非圧縮構造体内の前記データ値の位置を、前記圧縮構造体における前記データ値のためのメモリ位置に変換するように適合され、さらに、前記データ値を前記メモリ位置から読み出すように適合される
ことを特徴とするプロセッサ。 - 請求項1に記載のプロセッサであって、前記非圧縮構造体は、瑣末な値および瑣末でない値を備え、前記圧縮構造体は、瑣末でないデータ値のみを備えること、を特徴とするプロセッサ。
- 請求項1または2に記載のプロセッサであって、前記圧縮データ構造体は、前記非圧縮構造体における瑣末でないデータ値の位置を表すマップを備えること、を特徴とするプロセッサ。
- 請求項3に記載のプロセッサであって、前記プロセッサは、要求された前記値の転送に先だって、前記圧縮データ構造体の前記マップを得るように構成されること、を特徴とするプロセッサ。
- 請求項3または4に記載のプロセッサであって、前記瑣末でないデータ値は非零値であること、を特徴とするプロセッサ。
- 請求項3〜5のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記マップから前記要求された値が瑣末な値か瑣末でない値かを決定すること、を特徴とするプロセッサ。
- 請求項6に記載のプロセッサであって、前記少なくとも1つの演算対象は、前記圧縮構造体のためのベースアドレスを含むこと、を特徴とするプロセッサ。
- 請求項7に記載のプロセッサであって、前記要求された値が瑣末でない値の場合、前記プロセッサは、前記マップから瑣末でない値の数をカウントし、それを前記ベースアドレスへのオフセットとして要求された値の前に加算し、ランダムアクセスメモリがそれに応じてアドレスにアクセスするようにセットするように構成されること、を特徴とするプロセッサ。
- 請求項8に記載のプロセッサであって、前記カウントは、複数の加算器を用いて実行されること、を特徴とするプロセッサ。
- 請求項8に記載のプロセッサであって、前記要求された値が瑣末な値であるときは、前記プロセッサは、前記メモリにアクセスすることなく前記瑣末な値を返すように構成されること、を特徴とするプロセッサ。
- 請求項1〜10のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記指示に応答して複数のデータ値を読込むように適合されること、を特徴とするプロセッサ。
- 請求項1に記載のプロセッサであって、前記データ値は浮動小数点数であること、を特徴とするプロセッサ。
- 請求項12に記載のプロセッサであって、前記データ値は単精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項12に記載のプロセッサであって、前記データ値は倍精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項12に記載のプロセッサであって、前記データ値は拡張精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項12に記載のプロセッサであって、前記データ値は128ビット精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項1に記載のプロセッサであって、前記データ値は整数であること、を特徴とするプロセッサ。
- 請求項1に記載のプロセッサであって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とするプロセッサ。
- データ構造体からプロセッサへ少なくとも1つのデータ値を読込む方法であって、
前記データ構造体は、瑣末でないデータ値のみが存在する圧縮形式でメモリに記憶され
前記圧縮形式は、さらに、非圧縮構造体における前記瑣末でないデータ値の位置を特定するマップを備え、
前記方法は、
前記非圧縮構造体に読込むための、前記少なくとも1つのデータ値のための少なくとも1つの位置を受け取るステップと、
前記マップを使用し、前記圧縮構造体における、前記少なくとも1つのデータ値の前記少なくとも1つの記憶された位置を特定するステップと、
前記少なくとも1つの記憶された位置を使用し、前記少なくとも1つのデータ値を、前記メモリから前記プロセッサに読込むステップと、
を含むことを特徴とする方法。 - 請求項19に記載の方法であって、前記方法は、前記少なくとも1つの位置に特定されたデータ値のみを読込むこと、を特徴とする方法。
- 請求項20に記載の方法であって、前記方法は、前記少なくとも1つのデータ値の読み出しに先立って、前記圧縮データ構造体の前記マップを得るステップを含むこと、を特徴とする方法。
- 請求項21に記載の方法であって、前記マップを得るステップは前記メモリから前記マップを読み出すステップを含むこと、を特徴とする方法。
- 請求項20〜22のいずれか一項に記載の方法であって、前記瑣末でないデータ値は非零値であること、を特徴とする方法。
- 請求項20〜23のいずれか一項に記載の方法であって、前記要求されたデータ値が瑣末でない値の場合は、前記方法は、前記要求されたデータ値の前に、前記マップから瑣末でない値の数をカウントし、それに応じて前記ランダムアクセスメモリがアドレスにアクセスするようにセットするように構成されること、を特徴とする方法。
- 請求項20〜24のいずれか一項に記載の方法であって、前記方法は、複数のデータ値を前記プロセッサおよびメモリの間に同時に転送すること、を特徴とする方法。
- 請求項20〜23のいずれか一項に記載の方法であって、前記受け取った少なくとも1つの位置が、前記非圧縮構造体における瑣末な値の前記記憶位置に対応する場合は、前記方法は、前記瑣末な値を直接前記プロセッサに提供するように構成されること、を特徴とする方法。
- 請求項20〜26に記載の方法であって、前記データ値は、浮動小数点数であること、を特徴とする方法。
- 請求項27に記載の方法であって、前記データ値は、単精度浮動小数点数であること、を特徴とする方法。
- 請求項27に記載の方法であって、前記データ値は、倍精度浮動小数点数であること、を特徴とする方法。
- 請求項27に記載の方法であって、前記データ値は、拡張精度浮動小数点数であること、を特徴とする方法。
- 請求項27に記載の方法であって、前記データ値は、128ビット精度浮動小数点数であること、を特徴とする方法。
- 請求項20〜26のいずれか一項に記載の方法であって、前記データ値は整数であること、を特徴とする方法。
- 請求項20に記載の方法であって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とする方法。
- 少なくとも1つのデータ値を、メモリ内の圧縮構造体から読込むデータ転送機能を有するデータ処理装置であって、
前記圧縮構造体は、瑣末でないデータ値のみが存在する複数のデータ値、および、対応する非圧縮構造体内に前記瑣末でないデータ値の位置を特定するマップを備え、
前記データ転送機能は、前記データ値を読込むための指示に応答し、
前記指示は、前記対応する非圧縮構造体内における前記データ値の位置を特定し、
前記データ転送の特徴は、前記特定された位置からメモリオフセットを生成し、前記オフセットを、前記データ値をメモリから転送するために使用することに適合される
ことを特徴とするデータ処理装置。 - 請求項34に記載のデータ処理装置であって、前記データ処理装置はプロセッサであること、を特徴とするデータ処理装置。
- 請求項34に記載のデータ処理装置であって、前記データ処理装置は状態エンジンであること、を特徴とするデータ処理装置。
- 指示セットアーキテクチャを有するプロセッサであって、
前記指示セットアーキテクチャは、ランダムアクセスメモリにおける、非圧縮データ構造体から対応する圧縮データ構造体の中に、少なくとも1つのデータ値を記憶するための少なくとも1つの記憶指示を備え、
前記少なくとも1つの記憶指示は、演算コード、および、前記非圧縮データ構造体における前記少なくとも1つのデータ値の位置を特定する少なくとも1つの演算対象を備え、
前記プロセッサは、非圧縮構造体内の前記少なくとも1つのデータ値の前記位置を、前記圧縮構造体における前記データ値のためのメモリ位置に、前記圧縮構造体内のデータ値の前記位置を示すマップを用いて変換することに適合され、さらに、前記少なくとも1つのデータ値をこのメモリ位置に記憶することに適合される
ことを特徴とするプロセッサ。 - 請求項37に記載のプロセッサであって、前記非圧縮構造体は瑣末な値および瑣末でない値を備え、前記圧縮構造体は瑣末でないデータ値のみを備えること、を特徴とするプロセッサ。
- 請求項37または38に記載のプロセッサであって、前記マップは、前記圧縮データ構造体の一部であり、前記非圧縮データ構造体における瑣末でないデータ値の位置を表すこと、を特徴とするプロセッサ。
- 請求項39に記載のプロセッサであって、前記プロセッサは、前記要求された値を記憶する前に、メモリから前記圧縮データ構造体の前記マップを得るように構成されること、を特徴とするプロセッサ。
- 請求項39または40に記載のプロセッサであって、前記瑣末でないデータ値は非零値であること、を特徴とするプロセッサ。
- 請求項37〜41のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記データ値の前に、前記マップから瑣末でない値の数をカウントし、それに応じて前記ランダムアクセスメモリがアドレスにアクセスするようにセットするように構成されること、を特徴とするプロセッサ。
- 請求項42に記載のプロセッサであって、前記カウントは一連の加算器を用いて実行されること、を特徴とするプロセッサ。
- 請求項37から43のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記演算コードに応答し、複数のデータ値を同時に記憶すること、を特徴とするプロセッサ。
- 請求項37〜44のいずれか一項に記載のプロセッサであって、前記少なくとも1つの演算対象は、RAMにおける前記圧縮データ構造体の前記ベースアドレス含むこと、を特徴とするプロセッサ。
- 請求項37〜46のいずれか一項に記載のプロセッサであって、前記圧縮データ構造体内の複数のデータ値を一つの指示とともに記憶することができること、を特徴とするプロセッサ。
- 請求項37に記載のプロセッサであって、前記データ値は、浮動小数点数であること、を特徴とするプロセッサ。
- 請求項47に記載のプロセッサであって、前記データ値は、単精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項47に記載のプロセッサであって、前記データ値は、倍精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項47に記載のプロセッサであって、前記データ値は、拡張精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項47に記載のプロセッサであって、前記データ値は、128ビット精度浮動小数点数であること、を特徴とするプロセッサ。
- 請求項37に記載のプロセッサであって、前記データ値は整数であること、を特徴とするプロセッサ。
- 請求項37に記載のプロセッサであって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とするプロセッサ。
- プロセッサから、瑣末でないデータ値のみが存在するメモリ内の圧縮構造体の中にデータ値を挿入する方法であって、
前記圧縮構造体は、対応する非圧縮構造体における、前記瑣末でないデータ値の位置を特定するマップを備え、
前記方法は、
挿入される前記データ値の前記非圧縮構造体内の位置を受け取るステップと、
前記マップを使用し、前記受け取った位置から、前記圧縮構造体における前記データ値の前記対応する位置を特定するステップと、
前記対応する位置を使用し、前記メモリ内の前記データ値を記憶するステップと、
を含むことを特徴とする方法。 - 請求項54に記載の方法であって、前記方法は、前記データ値を記憶するステップに先立って、前記圧縮データ構造体の前記マップを得るステップ含むこと、を特徴とする方法。
- 請求項55に記載の方法であって、前記マップを得る前記ステップは、前記マップを前記メモリから読み出すステップを含むこと、を特徴とする方法。
- 請求項54〜56のいずれか一項に記載の方法であって、前記瑣末でないデータ値は非零値であること、を特徴とする方法。
- 請求項54〜57のいずれか一項に記載の方法であって、要求されたデータ値が瑣末でない値の場合は、前記方法は、前記マップから、前記要求されたデータ値の前に瑣末でない値の数をカウントし、それに応じて、前記ランダムアクセスメモリがアドレスにアクセスするようにセットするように構成されること、を特徴とする方法。
- 請求項54〜58のいずれか一項に記載の方法であって、前記方法は、複数の2つのデータ値を前記プロセッサとメモリの間に同時に転送すること、を特徴とする方法。
- 請求項54〜59のいずれか一項に記載の方法であって、前記データ値は、浮動小数点数であること、を特徴とする方法。
- 請求項60に記載の方法であって、前記データ値は、単精度浮動小数点数であること、を特徴とする方法。
- 請求項60に記載の方法であって、前記データ値は、倍精度浮動小数点数であること、を特徴とする方法。
- 請求項60に記載の方法であって、前記データ値は、拡張精度浮動小数点数であること、を特徴とする方法。
- 請求項60に記載の方法であって、前記データ値は、128ビット精度浮動小数点数であること、を特徴とする方法。
- 請求項54〜59のいずれか一項に記載の方法であって、前記データ値は整数であること、を特徴とする方法。
- 請求項54に記載の方法であって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とする方法。
- データ値を直接メモリ内の圧縮構造体内に記憶するための、データ転送機能を有するデータ処理装置であって、
前記圧縮構造体は、瑣末でないデータ値のみが存在する複数のデータ値、および、対応する非圧縮構造体内の前記瑣末でないデータ値の位置を特定するマップを備え、
前記データ転送機能は、前記データ値を記憶するための指示に応答し、
前記指示は、前記対応する非圧縮構造体内の前記データ値の位置を特定し、
前記データ転送機能は、前記特定された位置からメモリオフセットを生成し、前記メモリにアクセスするための前記オフセットを使用し、前記データ値をメモリの中に記憶するように適合される
ことを特徴とするデータ処理装置。 - 請求項67に記載のデータ処理装置であって、前記データ処理装置はプロセッサであること、を特徴とするデータ処理装置。
- 請求項67に記載のデータ処理装置であって、前記データ処理装置は状態エンジンであること、を特徴とするデータ処理装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0802484A GB2457303A (en) | 2008-02-11 | 2008-02-11 | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
PCT/EP2009/051598 WO2009101119A1 (en) | 2008-02-11 | 2009-02-11 | A processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011511986A true JP2011511986A (ja) | 2011-04-14 |
Family
ID=39247444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010545506A Pending JP2011511986A (ja) | 2008-02-11 | 2009-02-11 | プロセッサ |
Country Status (7)
Country | Link |
---|---|
US (2) | US9858073B2 (ja) |
EP (1) | EP2260380A1 (ja) |
JP (1) | JP2011511986A (ja) |
KR (1) | KR20100122493A (ja) |
CN (1) | CN101971139A (ja) |
GB (1) | GB2457303A (ja) |
WO (1) | WO2009101119A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022504995A (ja) * | 2019-10-12 | 2022-01-14 | バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド | アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2457303A (en) | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
GB2476800A (en) * | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
CN105264779B (zh) * | 2013-01-22 | 2019-06-07 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
WO2015061022A1 (en) * | 2013-10-22 | 2015-04-30 | Purde Research Foundation | Debugging non-deterministic embedded systems |
WO2016097793A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on off-die control element access in out-of-order processor |
US10089112B2 (en) * | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
WO2016097790A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
WO2016097800A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10209996B2 (en) | 2014-12-14 | 2019-02-19 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
EP3049956B1 (en) | 2014-12-14 | 2018-10-10 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
WO2016097802A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on long load cycles in an out-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
WO2016097814A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude shared ram-dependent load replays in out-of-order processor |
US10133580B2 (en) | 2014-12-14 | 2018-11-20 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10146546B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
WO2016097811A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
KR101819316B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 캐시 불가의존 로드 리플레이를 억제하는 메커니즘 |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10019262B2 (en) * | 2015-12-22 | 2018-07-10 | Intel Corporation | Vector store/load instructions for array of structures |
US10460704B2 (en) | 2016-04-01 | 2019-10-29 | Movidius Limited | Systems and methods for head-mounted display adapted to human visual mechanism |
US10503507B2 (en) * | 2017-08-31 | 2019-12-10 | Nvidia Corporation | Inline data inspection for workload simplification |
US10949947B2 (en) | 2017-12-29 | 2021-03-16 | Intel Corporation | Foveated image rendering for head-mounted display devices |
US10541708B1 (en) * | 2018-09-24 | 2020-01-21 | Redpine Signals, Inc. | Decompression engine for executable microcontroller code |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5282027A (en) * | 1975-11-28 | 1977-07-08 | Ibm | Refreshing device |
JPS6015771A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | ベクトルプロセッサ |
JPS62226275A (ja) * | 1986-03-28 | 1987-10-05 | Hitachi Ltd | ベクトル処理装置 |
JPS62233884A (ja) * | 1986-04-04 | 1987-10-14 | Hitachi Ltd | ベクトル・プロセツサ |
JP2003516702A (ja) * | 1999-12-07 | 2003-05-13 | 任天堂株式会社 | 3d変換マトリックス圧縮および復元 |
JP2004038404A (ja) * | 2002-07-01 | 2004-02-05 | Renesas Technology Corp | 圧縮コードを処理するマイクロコントローラ |
JP2010521729A (ja) * | 2007-03-15 | 2010-06-24 | リニア アルジェブラ テクノロジーズ リミテッド | 自明な算術演算を利用するプロセッサ |
JP2010521728A (ja) * | 2007-03-15 | 2010-06-24 | リニア アルジェブラ テクノロジーズ リミテッド | データ圧縮のための回路及びこれを用いるプロセッサ |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4125873A (en) | 1977-06-29 | 1978-11-14 | International Business Machines Corporation | Display compressed image refresh system |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US4606002A (en) | 1983-05-02 | 1986-08-12 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists |
GB8815978D0 (en) | 1988-07-05 | 1988-08-10 | British Telecomm | Method & apparatus for encoding decoding & transmitting data in compressed form |
US5247638A (en) | 1990-06-18 | 1993-09-21 | Storage Technology Corporation | Apparatus for compressing data in a dynamically mapped virtual data storage subsystem |
US5394534A (en) | 1992-09-11 | 1995-02-28 | International Business Machines Corporation | Data compression/decompression and storage of compressed and uncompressed data on a same removable data storage medium |
US5805735A (en) | 1995-03-02 | 1998-09-08 | Apple Computer, Inc. | Method and apparatus for compression of digitized image data using variable color fidelity |
US5960465A (en) | 1997-02-27 | 1999-09-28 | Novell, Inc. | Apparatus and method for directly accessing compressed data utilizing a compressed memory address translation unit and compression descriptor table |
US6243081B1 (en) | 1998-07-31 | 2001-06-05 | Hewlett-Packard Company | Data structure for efficient retrieval of compressed texture data from a memory system |
US6145069A (en) | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6564305B1 (en) * | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
US6442085B1 (en) * | 2000-10-02 | 2002-08-27 | International Business Machines Corporation | Self-Test pattern to detect stuck open faults |
CA2564844C (en) | 2004-04-26 | 2014-12-09 | Storewiz, Inc. | Method and system for compression of files for storage and operation on compressed files |
US7505960B2 (en) * | 2005-11-15 | 2009-03-17 | Microsoft Corporation | Scalable retrieval of data entries using an array index or a secondary key |
GB2457303A (en) | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
US7904464B2 (en) * | 2008-08-27 | 2011-03-08 | International Business Machines Corporation | Virtual list view support in a distributed directory |
-
2008
- 2008-02-11 GB GB0802484A patent/GB2457303A/en not_active Withdrawn
-
2009
- 2009-02-11 EP EP09709874A patent/EP2260380A1/en not_active Withdrawn
- 2009-02-11 KR KR1020107020168A patent/KR20100122493A/ko not_active Application Discontinuation
- 2009-02-11 CN CN2009801083973A patent/CN101971139A/zh active Pending
- 2009-02-11 WO PCT/EP2009/051598 patent/WO2009101119A1/en active Application Filing
- 2009-02-11 JP JP2010545506A patent/JP2011511986A/ja active Pending
- 2009-02-11 US US12/867,095 patent/US9858073B2/en active Active
-
2017
- 2017-12-27 US US15/855,661 patent/US10719318B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5282027A (en) * | 1975-11-28 | 1977-07-08 | Ibm | Refreshing device |
JPS6015771A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | ベクトルプロセッサ |
JPS62226275A (ja) * | 1986-03-28 | 1987-10-05 | Hitachi Ltd | ベクトル処理装置 |
JPS62233884A (ja) * | 1986-04-04 | 1987-10-14 | Hitachi Ltd | ベクトル・プロセツサ |
JP2003516702A (ja) * | 1999-12-07 | 2003-05-13 | 任天堂株式会社 | 3d変換マトリックス圧縮および復元 |
JP2004038404A (ja) * | 2002-07-01 | 2004-02-05 | Renesas Technology Corp | 圧縮コードを処理するマイクロコントローラ |
JP2010521729A (ja) * | 2007-03-15 | 2010-06-24 | リニア アルジェブラ テクノロジーズ リミテッド | 自明な算術演算を利用するプロセッサ |
JP2010521728A (ja) * | 2007-03-15 | 2010-06-24 | リニア アルジェブラ テクノロジーズ リミテッド | データ圧縮のための回路及びこれを用いるプロセッサ |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
---|---|
US20110047360A1 (en) | 2011-02-24 |
GB2457303A (en) | 2009-08-12 |
US9858073B2 (en) | 2018-01-02 |
EP2260380A1 (en) | 2010-12-15 |
US20180189066A1 (en) | 2018-07-05 |
GB0802484D0 (en) | 2008-03-19 |
CN101971139A (zh) | 2011-02-09 |
US10719318B2 (en) | 2020-07-21 |
KR20100122493A (ko) | 2010-11-22 |
WO2009101119A1 (en) | 2009-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719318B2 (en) | Processor | |
US8200940B1 (en) | Reduction operations in a synchronous parallel thread processing system with disabled execution threads | |
EP2480979B1 (en) | Unanimous branch instructions in a parallel thread processor | |
JP5035277B2 (ja) | 共有メモリに対するアトミックな更新を可能にするロックメカニズム | |
US8970608B2 (en) | State objects for specifying dynamic state | |
US8751771B2 (en) | Efficient implementation of arrays of structures on SIMT and SIMD architectures | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
US9519947B2 (en) | Architecture and instructions for accessing multi-dimensional formatted surface memory | |
KR100956970B1 (ko) | 프로세서에서의 마스킹된 저장 동작들을 위한 시스템 및방법 | |
US20110087864A1 (en) | Providing pipeline state through constant buffers | |
US8752018B2 (en) | Emitting coherent output from multiple threads for printf | |
JP2009517783A (ja) | ロジックおよびメモリのシミュレーション用ハードウェア加速システム | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
KR20110055629A (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
US9798543B2 (en) | Fast mapping table register file allocation algorithm for SIMT processors | |
US20110078689A1 (en) | Address Mapping for a Parallel Thread Processor | |
TWI764997B (zh) | 圖形處理單元及處理圖形應用程式的方法 | |
CN107851013B (zh) | 数据处理装置和方法 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
US20120084539A1 (en) | Method and sytem for predicate-controlled multi-function instructions | |
US9928033B2 (en) | Single-pass parallel prefix scan with dynamic look back | |
KR101715456B1 (ko) | 스레드 오프셋 카운터 | |
US11714641B2 (en) | Vector generating instruction for generating a vector comprising a sequence of elements that wraps as required | |
US7945757B1 (en) | Conserving and shaping address space with arrays | |
US8669991B2 (en) | Method macro expander |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120123 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130827 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140212 |