JP2011511986A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

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
Application number
JP2010545506A
Other languages
English (en)
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 JP2011511986A publication Critical patent/JP2011511986A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed 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に記載されるデータ処理装置も提供する。有利な実施形態は、従属項において提供する。
本出願を、添付図面を参照して説明する。
当業で公知のプロセッサの配置図である。 本出願のプロセッサの処理に適している一連の変換である。 本出願の一実施形態に係るプロセッサの例である。 図3のプロセッサに使用することができる例示的な解凍方法を示す図である。 図3のプロセッサにより、どのようにメモリ構造を32ビットRAMに適合するように圧縮できるかを示す図である。 図3のプロセッサに使用することができる例示的な指示コードのフォーマットを示す図である。 図3のプロセッサにより、どのように図5と同じメモリ構造を64ビットRAMに適合するように圧縮できるかを示す図である。 図3のプロセッサに使用してもよいアドレスを生成する例示的な回路を示す図である。 例示的な値を用いて図8の演算を説明する図である。 図3のプロセッサに使用してもよい、例示的な読込/記憶回路を説明する図である。 図10に使用するアドレスシーケンス生成を示す図である。 図10の回路の処理モードを示す例示的なタイミング図である。 図3のプロセッサのより詳細なブロック図である。 指示フォーマットである。 例示的なプロセッサで利用できる、圧縮データの読込/記憶のための指示を含む様々な処理コードの指示を示す表である。 非圧縮に基づく指示のアドレス生成のための回路を示す図である。 プロセッサの圧縮方法によるビット生成回路である。 図3の例示的なプロセッサにより提供される計算の低減量を、様々なタイプの行列構造に対して示す図である。 圧縮データを読込/記憶する図2のプロセッサに適した回路を示す図である。 メモリ構造上のポート幅の影響を示す図である。 図20に示すアドレスのためのアドレス生成へ、結果として生じる影響を示す図である。 図20の影響を示すタイミング図の例である。
圧縮の望ましい状況の典型的な例は、行列表示および線形代数演算を使用して、コンピュータグラフィクスおよび関連アプリケーションにおける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ビットセットに依存して生成される。
図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)
指示ワードの直接の制御下にない最後の機能部は、デバッグ制御部(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ベースレジスタにコピーする。
図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つの演算対象を備え、
    前記プロセッサは、非圧縮構造体内の前記データ値の位置を、前記圧縮構造体における前記データ値のためのメモリ位置に変換するように適合され、さらに、前記データ値を前記メモリ位置から読み出すように適合される
    ことを特徴とするプロセッサ。
  2. 請求項1に記載のプロセッサであって、前記非圧縮構造体は、瑣末な値および瑣末でない値を備え、前記圧縮構造体は、瑣末でないデータ値のみを備えること、を特徴とするプロセッサ。
  3. 請求項1または2に記載のプロセッサであって、前記圧縮データ構造体は、前記非圧縮構造体における瑣末でないデータ値の位置を表すマップを備えること、を特徴とするプロセッサ。
  4. 請求項3に記載のプロセッサであって、前記プロセッサは、要求された前記値の転送に先だって、前記圧縮データ構造体の前記マップを得るように構成されること、を特徴とするプロセッサ。
  5. 請求項3または4に記載のプロセッサであって、前記瑣末でないデータ値は非零値であること、を特徴とするプロセッサ。
  6. 請求項3〜5のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記マップから前記要求された値が瑣末な値か瑣末でない値かを決定すること、を特徴とするプロセッサ。
  7. 請求項6に記載のプロセッサであって、前記少なくとも1つの演算対象は、前記圧縮構造体のためのベースアドレスを含むこと、を特徴とするプロセッサ。
  8. 請求項7に記載のプロセッサであって、前記要求された値が瑣末でない値の場合、前記プロセッサは、前記マップから瑣末でない値の数をカウントし、それを前記ベースアドレスへのオフセットとして要求された値の前に加算し、ランダムアクセスメモリがそれに応じてアドレスにアクセスするようにセットするように構成されること、を特徴とするプロセッサ。
  9. 請求項8に記載のプロセッサであって、前記カウントは、複数の加算器を用いて実行されること、を特徴とするプロセッサ。
  10. 請求項8に記載のプロセッサであって、前記要求された値が瑣末な値であるときは、前記プロセッサは、前記メモリにアクセスすることなく前記瑣末な値を返すように構成されること、を特徴とするプロセッサ。
  11. 請求項1〜10のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記指示に応答して複数のデータ値を読込むように適合されること、を特徴とするプロセッサ。
  12. 請求項1に記載のプロセッサであって、前記データ値は浮動小数点数であること、を特徴とするプロセッサ。
  13. 請求項12に記載のプロセッサであって、前記データ値は単精度浮動小数点数であること、を特徴とするプロセッサ。
  14. 請求項12に記載のプロセッサであって、前記データ値は倍精度浮動小数点数であること、を特徴とするプロセッサ。
  15. 請求項12に記載のプロセッサであって、前記データ値は拡張精度浮動小数点数であること、を特徴とするプロセッサ。
  16. 請求項12に記載のプロセッサであって、前記データ値は128ビット精度浮動小数点数であること、を特徴とするプロセッサ。
  17. 請求項1に記載のプロセッサであって、前記データ値は整数であること、を特徴とするプロセッサ。
  18. 請求項1に記載のプロセッサであって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とするプロセッサ。
  19. データ構造体からプロセッサへ少なくとも1つのデータ値を読込む方法であって、
    前記データ構造体は、瑣末でないデータ値のみが存在する圧縮形式でメモリに記憶され
    前記圧縮形式は、さらに、非圧縮構造体における前記瑣末でないデータ値の位置を特定するマップを備え、
    前記方法は、
    前記非圧縮構造体に読込むための、前記少なくとも1つのデータ値のための少なくとも1つの位置を受け取るステップと、
    前記マップを使用し、前記圧縮構造体における、前記少なくとも1つのデータ値の前記少なくとも1つの記憶された位置を特定するステップと、
    前記少なくとも1つの記憶された位置を使用し、前記少なくとも1つのデータ値を、前記メモリから前記プロセッサに読込むステップと、
    を含むことを特徴とする方法。
  20. 請求項19に記載の方法であって、前記方法は、前記少なくとも1つの位置に特定されたデータ値のみを読込むこと、を特徴とする方法。
  21. 請求項20に記載の方法であって、前記方法は、前記少なくとも1つのデータ値の読み出しに先立って、前記圧縮データ構造体の前記マップを得るステップを含むこと、を特徴とする方法。
  22. 請求項21に記載の方法であって、前記マップを得るステップは前記メモリから前記マップを読み出すステップを含むこと、を特徴とする方法。
  23. 請求項20〜22のいずれか一項に記載の方法であって、前記瑣末でないデータ値は非零値であること、を特徴とする方法。
  24. 請求項20〜23のいずれか一項に記載の方法であって、前記要求されたデータ値が瑣末でない値の場合は、前記方法は、前記要求されたデータ値の前に、前記マップから瑣末でない値の数をカウントし、それに応じて前記ランダムアクセスメモリがアドレスにアクセスするようにセットするように構成されること、を特徴とする方法。
  25. 請求項20〜24のいずれか一項に記載の方法であって、前記方法は、複数のデータ値を前記プロセッサおよびメモリの間に同時に転送すること、を特徴とする方法。
  26. 請求項20〜23のいずれか一項に記載の方法であって、前記受け取った少なくとも1つの位置が、前記非圧縮構造体における瑣末な値の前記記憶位置に対応する場合は、前記方法は、前記瑣末な値を直接前記プロセッサに提供するように構成されること、を特徴とする方法。
  27. 請求項20〜26に記載の方法であって、前記データ値は、浮動小数点数であること、を特徴とする方法。
  28. 請求項27に記載の方法であって、前記データ値は、単精度浮動小数点数であること、を特徴とする方法。
  29. 請求項27に記載の方法であって、前記データ値は、倍精度浮動小数点数であること、を特徴とする方法。
  30. 請求項27に記載の方法であって、前記データ値は、拡張精度浮動小数点数であること、を特徴とする方法。
  31. 請求項27に記載の方法であって、前記データ値は、128ビット精度浮動小数点数であること、を特徴とする方法。
  32. 請求項20〜26のいずれか一項に記載の方法であって、前記データ値は整数であること、を特徴とする方法。
  33. 請求項20に記載の方法であって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とする方法。
  34. 少なくとも1つのデータ値を、メモリ内の圧縮構造体から読込むデータ転送機能を有するデータ処理装置であって、
    前記圧縮構造体は、瑣末でないデータ値のみが存在する複数のデータ値、および、対応する非圧縮構造体内に前記瑣末でないデータ値の位置を特定するマップを備え、
    前記データ転送機能は、前記データ値を読込むための指示に応答し、
    前記指示は、前記対応する非圧縮構造体内における前記データ値の位置を特定し、
    前記データ転送の特徴は、前記特定された位置からメモリオフセットを生成し、前記オフセットを、前記データ値をメモリから転送するために使用することに適合される
    ことを特徴とするデータ処理装置。
  35. 請求項34に記載のデータ処理装置であって、前記データ処理装置はプロセッサであること、を特徴とするデータ処理装置。
  36. 請求項34に記載のデータ処理装置であって、前記データ処理装置は状態エンジンであること、を特徴とするデータ処理装置。
  37. 指示セットアーキテクチャを有するプロセッサであって、
    前記指示セットアーキテクチャは、ランダムアクセスメモリにおける、非圧縮データ構造体から対応する圧縮データ構造体の中に、少なくとも1つのデータ値を記憶するための少なくとも1つの記憶指示を備え、
    前記少なくとも1つの記憶指示は、演算コード、および、前記非圧縮データ構造体における前記少なくとも1つのデータ値の位置を特定する少なくとも1つの演算対象を備え、
    前記プロセッサは、非圧縮構造体内の前記少なくとも1つのデータ値の前記位置を、前記圧縮構造体における前記データ値のためのメモリ位置に、前記圧縮構造体内のデータ値の前記位置を示すマップを用いて変換することに適合され、さらに、前記少なくとも1つのデータ値をこのメモリ位置に記憶することに適合される
    ことを特徴とするプロセッサ。
  38. 請求項37に記載のプロセッサであって、前記非圧縮構造体は瑣末な値および瑣末でない値を備え、前記圧縮構造体は瑣末でないデータ値のみを備えること、を特徴とするプロセッサ。
  39. 請求項37または38に記載のプロセッサであって、前記マップは、前記圧縮データ構造体の一部であり、前記非圧縮データ構造体における瑣末でないデータ値の位置を表すこと、を特徴とするプロセッサ。
  40. 請求項39に記載のプロセッサであって、前記プロセッサは、前記要求された値を記憶する前に、メモリから前記圧縮データ構造体の前記マップを得るように構成されること、を特徴とするプロセッサ。
  41. 請求項39または40に記載のプロセッサであって、前記瑣末でないデータ値は非零値であること、を特徴とするプロセッサ。
  42. 請求項37〜41のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記データ値の前に、前記マップから瑣末でない値の数をカウントし、それに応じて前記ランダムアクセスメモリがアドレスにアクセスするようにセットするように構成されること、を特徴とするプロセッサ。
  43. 請求項42に記載のプロセッサであって、前記カウントは一連の加算器を用いて実行されること、を特徴とするプロセッサ。
  44. 請求項37から43のいずれか一項に記載のプロセッサであって、前記プロセッサは、前記演算コードに応答し、複数のデータ値を同時に記憶すること、を特徴とするプロセッサ。
  45. 請求項37〜44のいずれか一項に記載のプロセッサであって、前記少なくとも1つの演算対象は、RAMにおける前記圧縮データ構造体の前記ベースアドレス含むこと、を特徴とするプロセッサ。
  46. 請求項37〜46のいずれか一項に記載のプロセッサであって、前記圧縮データ構造体内の複数のデータ値を一つの指示とともに記憶することができること、を特徴とするプロセッサ。
  47. 請求項37に記載のプロセッサであって、前記データ値は、浮動小数点数であること、を特徴とするプロセッサ。
  48. 請求項47に記載のプロセッサであって、前記データ値は、単精度浮動小数点数であること、を特徴とするプロセッサ。
  49. 請求項47に記載のプロセッサであって、前記データ値は、倍精度浮動小数点数であること、を特徴とするプロセッサ。
  50. 請求項47に記載のプロセッサであって、前記データ値は、拡張精度浮動小数点数であること、を特徴とするプロセッサ。
  51. 請求項47に記載のプロセッサであって、前記データ値は、128ビット精度浮動小数点数であること、を特徴とするプロセッサ。
  52. 請求項37に記載のプロセッサであって、前記データ値は整数であること、を特徴とするプロセッサ。
  53. 請求項37に記載のプロセッサであって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とするプロセッサ。
  54. プロセッサから、瑣末でないデータ値のみが存在するメモリ内の圧縮構造体の中にデータ値を挿入する方法であって、
    前記圧縮構造体は、対応する非圧縮構造体における、前記瑣末でないデータ値の位置を特定するマップを備え、
    前記方法は、
    挿入される前記データ値の前記非圧縮構造体内の位置を受け取るステップと、
    前記マップを使用し、前記受け取った位置から、前記圧縮構造体における前記データ値の前記対応する位置を特定するステップと、
    前記対応する位置を使用し、前記メモリ内の前記データ値を記憶するステップと、
    を含むことを特徴とする方法。
  55. 請求項54に記載の方法であって、前記方法は、前記データ値を記憶するステップに先立って、前記圧縮データ構造体の前記マップを得るステップ含むこと、を特徴とする方法。
  56. 請求項55に記載の方法であって、前記マップを得る前記ステップは、前記マップを前記メモリから読み出すステップを含むこと、を特徴とする方法。
  57. 請求項54〜56のいずれか一項に記載の方法であって、前記瑣末でないデータ値は非零値であること、を特徴とする方法。
  58. 請求項54〜57のいずれか一項に記載の方法であって、要求されたデータ値が瑣末でない値の場合は、前記方法は、前記マップから、前記要求されたデータ値の前に瑣末でない値の数をカウントし、それに応じて、前記ランダムアクセスメモリがアドレスにアクセスするようにセットするように構成されること、を特徴とする方法。
  59. 請求項54〜58のいずれか一項に記載の方法であって、前記方法は、複数の2つのデータ値を前記プロセッサとメモリの間に同時に転送すること、を特徴とする方法。
  60. 請求項54〜59のいずれか一項に記載の方法であって、前記データ値は、浮動小数点数であること、を特徴とする方法。
  61. 請求項60に記載の方法であって、前記データ値は、単精度浮動小数点数であること、を特徴とする方法。
  62. 請求項60に記載の方法であって、前記データ値は、倍精度浮動小数点数であること、を特徴とする方法。
  63. 請求項60に記載の方法であって、前記データ値は、拡張精度浮動小数点数であること、を特徴とする方法。
  64. 請求項60に記載の方法であって、前記データ値は、128ビット精度浮動小数点数であること、を特徴とする方法。
  65. 請求項54〜59のいずれか一項に記載の方法であって、前記データ値は整数であること、を特徴とする方法。
  66. 請求項54に記載の方法であって、前記データ値は、浮動小数点数、浮動小数点数行列、浮動小数点数ベクトル、および、固定小数点整数の組合せであること、を特徴とする方法。
  67. データ値を直接メモリ内の圧縮構造体内に記憶するための、データ転送機能を有するデータ処理装置であって、
    前記圧縮構造体は、瑣末でないデータ値のみが存在する複数のデータ値、および、対応する非圧縮構造体内の前記瑣末でないデータ値の位置を特定するマップを備え、
    前記データ転送機能は、前記データ値を記憶するための指示に応答し、
    前記指示は、前記対応する非圧縮構造体内の前記データ値の位置を特定し、
    前記データ転送機能は、前記特定された位置からメモリオフセットを生成し、前記メモリにアクセスするための前記オフセットを使用し、前記データ値をメモリの中に記憶するように適合される
    ことを特徴とするデータ処理装置。
  68. 請求項67に記載のデータ処理装置であって、前記データ処理装置はプロセッサであること、を特徴とするデータ処理装置。
  69. 請求項67に記載のデータ処理装置であって、前記データ処理装置は状態エンジンであること、を特徴とするデータ処理装置。
JP2010545506A 2008-02-11 2009-02-11 プロセッサ Pending JP2011511986A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022504995A (ja) * 2019-10-12 2022-01-14 バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド アドバンストインタコネクト技術を利用してaiトレーニングを加速するための方法及びシステム

Families Citing this family (34)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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