![]() プロセッサ
专利摘要:
本出願は、全体の圧縮構造体を読み出し解凍する必要なく、メモリ内の圧縮構造体にランダムにアクセスする方法を提供する。 公开号:JP2011511986A 申请号:JP2010545506 申请日:2009-02-11 公开日:2011-04-14 发明作者:デービッド マロニィ 申请人:リニア アルジェブラ テクノロジーズ リミテッド; IPC主号:G06F9-34
专利说明:
[0001] 本出願は、プロセッサの分野、およびメモリとプロセッサの間のデータ転送の方法に関する。特に、本出願は、メモリ内の圧縮データ構造体において、圧縮構造体の全体を読み出して解凍する必要なく、個別の値、または、隣接グループもしくは非隣接グループの値にアクセスする方法を対象にする。] 背景技術 [0002] 計算システムの設計においては基本的な問題がある。すなわち、メモリアクセスの時間コストを最小にすることである。] [0003] これは、計算をサポートするどんなメモリ技術を使用しても、メモリをプロセッサに接続するためにどんな技術を使用しても、コンピュータシステムを設計する上での基本的な制限である。最大の制限は、所要時間内にどれだけの量の情報をプロセッサとメモリ間で転送できるかによる。これは、利用できるメモリの帯域幅であり、利用できるメモリの帯域幅による計算パワーの制限は、しばしば、「メモリウォール」と称される。] [0004] 本出願は、実効的なメモリの帯域幅を増やそうとし、データ圧縮の使用により「メモリウォール」の制限を最小化しようとする。] [0005] データ圧縮を使用し、「メモリウォール」の影響を減らすことは公知である。しかし、圧縮メモリサブシステムを使用するプログラマーにとっての問題点は、図1のシステムに示すように、データを処理する前に解凍しなければならないことである。これは、圧縮データをメモリ10の一部からプロセッサ16のレジスタファイルへ読み出すステップ、プログラムメモリ18から読み出したプログラムコードを使用して読み出したデータを解凍するステップ、および、メモリ12内の他の圧縮されていない部分に解凍したデータを記憶するステップを伴う。] 図1 [0006] しかし、この解決策は、圧縮データを読み出し、非圧縮の形態で記憶し、再びプロセッサに読み出して処理するために、追加のメモリ帯域幅を必要とするという不利な点がある。非圧縮データを保持するために追加のメモリ容量が必要となり、解凍プロセスはプロセッサのレジスタファイルへの圧力を増加させると考えられる。明らかに、これは次善の解決策である。このことは、なぜ、このような圧縮メモリのサブシステムは、マイクロプロセッサ産業の主流となるより、学術的好奇心の対象のままであるのかの説明を示唆する。] [0007] 欧州特許出願公開第0240032号明細書は、ベクトルデータを記憶し読み出すためのメモリを備えるベクトルプロセッサを開示する。ベクトルプロセッサは、各々が複数のm個のベクトル要素を並行して読み出しまたは書き込みができる複数のベクトルレジスタと、並行してm個のマスクビットに対応できる少なくとも1つのマスクベクトルレジスタと、前記メモリ、前記複数のベクトルレジスタおよび前記マスクベクトルレジスタに接続されており、メモリ内に一定の間隔で配置されたアドレスから、有効なマスクビットに対応する選択されたベクトルレジスタの選択された記憶位置へ、ベクトル要素を転送するための指示に応答する転送部とを備える。この方法は有用であるが、ベクトルデータの記憶/読み出しはレジスタ全体に制限される。] [0008] レジスタブロッキングは、行列代数(特に有限要素の場合)を加速するために有効な技術である。しかし、多くの行列(例えば、GOOGLE(登録商標)のようなサーチエンジンで使用されるもの)は零を埋める必要があり、有効なFLOPS(フロップス、Floating Point Operations Per Second)を減少させ、メモリに要求される帯域幅を増加させるという不利な点がある。これらは両方とも、現代の計算システムにおいて供給が不足しているものである。] [0009] 実際は、処理能力およびメモリの帯域幅は、それぞれ、年率50%および7%の全く異なる比率で向上しており、これにより増大している差は、上述のように「メモリウォール」と称される。メモリウォールを「突破」したとの主張が数多くある。これらは、たいていキャッシュを使用しチップ外で処理しなければならない確率を減らす構成、および/または、マルチスレッドを使用しチップ外の処理に伴う待ち時間および不利益を軽減する構成からなる。] [0010] これらの方法は、制限された外部メモリの帯域幅の問題を解決するよりは、むしろ、単に隠している。また、これらの方法は、一般的に、データセットが十分にデータの局所性を示していること、および/または、プログラムが十分なスレッドレベル並列性(TLP: Thread-Level Parallelism)を示し効率的であること、に依存している。これは、全ての問題に当てはまるわけではなく、確実に先験的にいつも知られているわけではない。実際には、より大きく、かつ、より興味深い問題の多くは、十分なデータの局所性も十分なTLPも示さない。システム全体のスループットは、外部メモリの帯域幅によって制限されるポイントまで悪化する。そして、チップ上に追加した追加ハードウェアは役に立たない。この理由により、大きな工学アプリケーションにおいて、プロセッサの性能を、製造業者が最大能力の仕様としている能力の1%、または、それ以下まで引き下ろしていることは、珍しいことではない。] [0011] 本出願は、圧縮フォーマットでデータを記憶することにより、実効的なメモリの帯域幅を増やし、計算上の「メモリウォール」の制限を最小化しようとする。このことは、例えば、コンピュータグラフィクス、剛体の力学、有限要素解析、および、その他の科学および工学アプリケーションを含む、メモリに記憶する必要がある大きなデータを処理する多くのアプリケーションにおいて使用されるブロック構造に適した圧縮手段および解凍手段を提供することにより達成される。「メモリウォール」の影響をさらに減らすために、プロセッサのパイプラインも圧縮を利用するように変形させ、処理レートを、圧縮データのみを計算することにより達成できる処理レートよりも増加させる。] [0012] 特に、本出願では、メモリに記憶されている圧縮構造体内の個別のデータに、値のマップ、および、指示の一部として特定された関連するフィールドビットを使用し、ランダムアクセスすることを許可している。] [0013] したがって、本出願の第1の実施形態は、請求項1および38に記載されるプロセッサを提供する。本出願は、請求項21および56に記載される方法も提供する。本出願は、さらに、請求項35および69に記載されるデータ処理装置も提供する。有利な実施形態は、従属項において提供する。] [0014] 本出願を、添付図面を参照して説明する。] 図面の簡単な説明 [0015] 当業で公知のプロセッサの配置図である。 本出願のプロセッサの処理に適している一連の変換である。 本出願の一実施形態に係るプロセッサの例である。 図3のプロセッサに使用することができる例示的な解凍方法を示す図である。 図3のプロセッサにより、どのようにメモリ構造を32ビットRAMに適合するように圧縮できるかを示す図である。 図3のプロセッサに使用することができる例示的な指示コードのフォーマットを示す図である。 図3のプロセッサにより、どのように図5と同じメモリ構造を64ビットRAMに適合するように圧縮できるかを示す図である。 図3のプロセッサに使用してもよいアドレスを生成する例示的な回路を示す図である。 例示的な値を用いて図8の演算を説明する図である。 図3のプロセッサに使用してもよい、例示的な読込/記憶回路を説明する図である。 図10に使用するアドレスシーケンス生成を示す図である。 図10の回路の処理モードを示す例示的なタイミング図である。 図3のプロセッサのより詳細なブロック図である。 指示フォーマットである。 例示的なプロセッサで利用できる、圧縮データの読込/記憶のための指示を含む様々な処理コードの指示を示す表である。 非圧縮に基づく指示のアドレス生成のための回路を示す図である。 プロセッサの圧縮方法によるビット生成回路である。 図3の例示的なプロセッサにより提供される計算の低減量を、様々なタイプの行列構造に対して示す図である。 圧縮データを読込/記憶する図2のプロセッサに適した回路を示す図である。 メモリ構造上のポート幅の影響を示す図である。 図20に示すアドレスのためのアドレス生成へ、結果として生じる影響を示す図である。 図20の影響を示すタイミング図の例である。] 図10 図2 図20 図3 図5 図8 [0016] 圧縮の望ましい状況の典型的な例は、行列表示および線形代数演算を使用して、コンピュータグラフィクスおよび関連アプリケーションにおける2次元画面で現実性をシミュレーションするものである。もとの行列データへの演算は、しばしば、回転、その他の変換およびそれらのシーケンスからなる。図2に、それらのタイプを示す。図に示すように、これらの行列は多数の零を含み、多数の零は、読込/記憶するための多くのメモリの帯域幅を必要とする。しかし、多数の零は、行列全体を使用して実行された計算結果に貢献していない。すなわち、多数の零は、計算の観点からは瑣末な値である。] 図2 [0017] 図3に示すように、本出願は、メモリ内の圧縮データを直接演算でき、解凍プロセスを必要としない変形したプロセッサを提供する。したがって、追加の非圧縮データ用のバッファ、および、圧縮データをバッファエリアに解凍し、さらに処理をすすめるための追加のプロセッサおよびメモリの帯域幅が不要となる。代わりに、圧縮および解凍プロセスは、プロセッサのメモリアクセス構造体に統合される。] 図3 [0018] 本出願は、例えば、浮動小数点数の行列、浮動小数点数のベクトル、浮動小数点数のスカラー、符号付き整数、符号なし整数、文字列、および、アドレスポインタの任意の組み合わせからなる、任意のサイズおよび複雑さの圧縮構造体を可能とする。] [0019] 好適には、圧縮および解凍ロジックは、プロセッサの読込/記憶ポート内に埋め込まれ、処理1件ごとに考慮する方式で、どのようにデータを圧縮メモリサブシステムから読み出し、および、圧縮メモリサブシステムへ書き込むかの詳細について気にする必要をなくすという点で、プログラマーの仕事を容易にする。] [0020] ここに記載する解決策は、値マップを使用し、図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つ以上の入力が零であれば達成される。] 図4 [0021] 上述の基本的な圧縮は興味深いものであり有利な効果を提供するが、多くの実際のアプリケーションにおいては、プログラマーは単なる疎行列以上のものを記憶することを望み、しばしば、複雑なデータ構造体に記憶されているデータを記憶し読み出すことを必要とする。課題は、いかに圧縮技術を統合し、混在した圧縮/非圧縮のデータ構造体を取り扱う際に、プログラマーを過度に悩ませることなく、同等の性能およびメモリ圧縮の利点を上述のアプリケーションに提供できるかである。] [0022] 本出願は、上述の方法により圧縮することができるが、非圧縮の浮動小数点数または整数を含んでいてもよい、大きな構造体内のデータにランダムにアクセスする手段を提供する。この技術によれば、基本構造は、32ビットの整数により表される32ビットの入力を32個まで含むことができる(値マップ)。原則として、この技術は32個に制限されない。しかし、32個の入力の値または構造、値マップの大きさ、および、入力の個数を選択し、プロセッサ設計の要求を満たすようにすることができる。値マップ内の1ビットは、メモリ内のその位置に、圧縮前のように、瑣末でない浮動小数点数または整数値が存在することを示す。各値は1つのビットで表されるので、値マップはビットマップとして参照することができる。図5に、どのように混在(圧縮/非圧縮)構造体をメモリに記憶するかを示す。] 図5 [0023] 提案する圧縮構造体の解凍ロジックにおける演算の基本的な原則は、値マップは、瑣末な値の存在を表すために使用されるということである。本出願の目的のためには、瑣末な値は単精度(32ビット)の0.0である(Hexでは、00000000)が、同様の技術は、倍精度またはより精度の高い浮動小数点数に容易に拡張できる。あるいは、ある特定のデータセットにおいて0.0以外の数が多数ある場合は、ここに示した技術は、0.0でない数が値マップの0を表すように容易に拡張できる。例えば、1.0という値を多く含むデータセットもあり得る。] [0024] 図5に示すデータ配列のRAMアドレスの例からわかるように、32ビットの値マップの各々の非零の入力(sx、sy、sz、x0−x3、y0−y3、z0−z3)に対して、オフセット「1」がベースアドレスに足される。実際には、メモリ内の値マップおよび次の構造のベースアドレスの両方が、現在の構造に埋め込まれ、プログラマーが読み出すことができる。] 図5 [0025] 圧縮構造体を使用することは、プログラマーにとっては、圧縮構造体で記憶されたデータを記憶し読み出す際に、オーバーヘッドを減らすことに役立つ。本出願においては、プログラミングのオーバーヘッドは、プロセッサのLSU(Load-Store Unit)アドレス生成器内の圧縮データを記憶し読み出す際の複雑さを隠すことにより最小化される。プロセッサは、例えば、RISCプロセッサでもよい。アドレス生成器により、プログラマーは、どのデータ要素が圧縮構造体から読み出されるかを特定することができる。順々に、LSUは要求された要素をメモリ内の圧縮構造体から、全体の圧縮構造体を解凍することなく読み出すことができる。] [0026] したがって、ここに示す例示的な配列においては、アドレス生成器により、プログラマーは、32入力の圧縮構造体から、どの8個の可能な4入力フィールド(ベクトル)を、単純な8ビットフィールドマスクを使って、読込み記憶するかを特定することができる。8ビットフィールドマスクは、図6に示す読込/記憶演算コードの中に含まれる。この例示的な配列においては、圧縮ベクトルを読込むための指示はLDCVであり、圧縮データを記憶するための指示はSTCVである。] 図6 [0027] この例示的な配列においては、プログラマーは、データがそこから読み出され、または、そこに記憶される、4入力のベクトルレジスタファイル(VRF:Vector Register File)レジスタを特定することができる。アドレス生成器が圧縮構造体のオフセットおよび値マップを追加する整数レジスタファイル(IRF:Integer Register File)内のベースレジスタもIRF内に登録する。演算コードは直近の8ビット値f[7:0]を含み、この8ビット値は、どの8個の4入力圧縮ベクトルが、実際にVRFから読込まれ、VRFに記憶されるかを選択するために使用される。] [0028] LSUのポート幅は一般的に制限されているため、LDCVおよびSTCVの指示は、複数のクロックサイクルを必要とすることを理解されたい。本出願の配列例では64ビットに制限されている。結果として、値マップは、fビットの順に繰り返す方法で復号され、64ビットの圧縮入力は、正しいVRFレジスタへ書き込まれ、または、読み出され、また、LSUポートから見て正しいメモリ(RAM)アドレスに記憶され、または、読み出される。図7に、64ビットメモリサブシステムにおける典型的な圧縮構造体のRAM内でのレイアウトを示す。] 図7 [0029] この方法および配列は、32ビットワードまたは64ビット幅メモリに限定されるものではなく、類似のレイアウトが、96または128ビット幅メモリなどを含む他のメモリ幅についても可能であることを理解されたい。しかし、説明を平易にするため、このような配列構成については、ここでは詳細に説明しない。] [0030] VRFは、完全な圧縮構造体のための段階領域として、圧縮読込みの場合は、その一部がプロセッサ内の他のレジスタファイルへ分散する前に使用することができる。または、その代わりに、VRFは、LSUポートに接続した外部RAMに圧縮構造体を記憶するための段階領域として使用することもできる。] [0031] 図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に順に適用することができる。] 図8 [0032] 図9に、圧縮データ構造体の例における様々な信号の値を示す。示したアドレスは、選択したIRF(整数レジスタファイル:Integer Register File)レジスタにおいて、値マップから静的に計算され、また、その後、圧縮した読込または記憶指示において特定されたfビットの段階に応じて順に適用される。] 図9 [0033] 図10に、要求された制御信号を生成するためのカウンタおよび有限状態マシンを含む、圧縮した読込/記憶演算のための完全なアドレス生成ロジックを示す。] 図10 [0034] アドレス選択マルチプレクサに適用するアドレスの順番を選択するfen[2:0]信号は、図11に示す真理値表に従って動作する。] 図11 [0035] 図12に示すように、ソース/宛先アドレスは、LSUアドレス生成器によって生成された圧縮した読込/記憶演算のためにのみ要求されているのではなく、圧縮した読込/記憶演算において特定されたものに関連したソース/宛先VRF行のためのソース/宛先アドレスも生成される。64ビットLSUバスの場合は、最大2行のVRF行に、圧縮した読込/記憶指示におけるアドレスを指定することができる。この配列の例においては、VRFは、圧縮した読込/記憶演算において、データを読込むソース、または、データを記憶する宛先として選択されたが、原則として、整数レジスタファイル(IRF:Integer Register File)、または、スカラーレジスタファイル(SRF:Scalar Register Rile)を、同じように選択することができる。] 図12 [0036] 図12の例示的なタイミング図は、明らかに、圧縮した読込/記憶演算は、実行に複数のサイクルを要することを示す。また、全ての必要な制御信号は、圧縮した読込/記憶制御ワードにおいて特定されたfビットと結合して、圧縮構造体についてのIRFの値マップ記述子の情報から生成されることを示す。制御信号のシーケンスは、アドレス生成器へのクロック入力により駆動されるカウンタとともに、fビットおよび値マップを用いて導かれる。] 図12 [0037] このタイミング図は、読込演算および記憶演算の両方についての動作を示す。2つの演算は、以下に示す点についてのみ異なる。 1.圧縮した読込の場合、読み出し信号が生成され、LSUポートに接続するRAMから読み出される。書き込み信号は、RAMの内容への宛先として働く適切なVRF行のために生成される。実際には、一連のRAMの読み出しおよびVRFの書き込みは、IRF内の値マップの状態、および、圧縮した読込演算コード内のfビットセットに依存して生成される。 2.同様に、圧縮した記憶の場合、一連のVRFの読み出しおよびRAMの書き込みは、IRF内の値マップの状態、および、圧縮した記憶演算コード内のfビットセットに依存して生成される。] [0038] 図13に、SVUアーキテクチャのブロック図を示す。読込記憶部(LSU:Load Store Unit)は圧縮した読込/記憶演算とともに、その一部を構成する。図に示すように、主要な外部とのインターフェースは、SVU指示メモリへのものおよびLSUポートであり、これらは、データメモリバンクとともにデバッグ制御部(DCU:Debug Control Unit)に接続する。デバッグ制御部により、SVUレジスタおよび診断情報は、プロセッサバスを経由して読み出し、書き込むことができる。] 図13 [0039] 指示ワードは、7個のスロットを有する。このスロットにより、指示ワードは、図14に示すように、1サイクル中に9個の機能部のうち7個までを制御することができる。] 図14 [0040] 本実施形態においては、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)] [0041] 指示ワードの直接の制御下にない最後の機能部は、デバッグ制御部(DCU:Debug Control-Unit)である。デバッグ制御部により、プロセッサは、特に例外的な条件、及び/又は、中断が発生した場合に、プログラムの実行を監視し制御することができる。] [0042] 例示的な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ベースレジスタにコピーする。] [0043] 図15に、LSUのための演算コードテーブルの例を示す。] 図15 [0044] 図16に、非圧縮の読込/記憶モードにおけるLSUのブロック図を示す。このモードにおいては、「bru_hold」信号は、読込/記憶演算が完了するまで、BRU内のプログラムカウンタ(PC:Program-Counter)が前に進むことを妨げる。読込および記憶が、1回のサイクルでは完了しないということは重要である。4要素が1回のサイクルで転送される(128ビット)よりは、4個要素が1または2回のサイクルで転送されなければならないからである。] 図16 [0045] 図17に、非零の値マップ生成のための、値マップ生成ロジックおよびVRFへの読込/記憶パスのブロック図を示す。非圧縮の4要素のベクトルがメモリからVRFへ読込まれるときはいつも、追加の4入力非零値マップが、4個のコンパレータ(4個の32入力NORゲート)の行を用いて生成され、メモリから取り出されたデータとして対応するVRFの行に挿入される。この4ビットの値マップの入力を後に用いて、データを圧縮フォーマットでメモリに記憶し、零値についての瑣末な演算を削除することによって、消費電力を最小にすることができる。] 図17 [0046] ここに記載するプロセッサアーキテクチャの比類のない能力は、全ての圧縮構造体を読み出す必要のない、ランダムアクセスの方法による、その圧縮データの読込および記憶へのサポートである。このサポートの理由は、多くの興味深いアプリケーションは、大量の疎データ、すなわち、メモリから取り出す必要がある多くの零を含むデータについて演算し、演算したときに零という結果を生成するからである。] [0047] このアーキテクチャの主要な前提は、プロセッサが取り扱う全てのデータは、4要素のベクトルにまとめられてメモリに記憶されるということである。これは、このデータが圧縮か非圧縮か、および、データが行列、ベクトル、まとまったスカラーまたは整数のいずれから構成されるかにかかわらない。この前提に基づいて、プログラマーは、行列/ベクトル/スカラー/整数データを、非零の入力のみが明確に記憶される32入力の圧縮ブロックの中に構成してもよい。全ての零の値および非零の値は、非零の値マップにおいて1ビット入力により表わされる。この値マップは、32入力をRAM内の32または、それより少ない32ビットワードに圧縮/解凍するために使用することができる。] [0048] 図に示すような、3次元グラフィックスおよびゲームの物理(剛体力学)のアプリケーションに用いられる変換行列は良い例である。図2に、8個の行列に対応する32ビットの値マップを示す。] 図2 [0049] 図18に示すように、グラフィック変換行列は、多くの割合の瑣末な値(零値)を含み、このことは、50%以上のデータ圧縮を達成することを可能とする。] 図18 [0050] 圧縮した値マップを用いることにより、プログラマーが定義した複雑なデータ構造体へのランダムアクセスは、図19に示すハードウェアを用いて可能となる。圧縮した読込演算により、プログラマーは、IRFにおいて特定されたベースアドレスの最初のアドレスからの演算コードにおいて8ビットフィールドにより特定された一連の最大8個のA要素値を集めることができる。ハードウェアは、自動的に、必要なアドレスを生成し、信号を読み出し、また、複数のサイクルの読込を必要とする場合、例えば、4個以上の非零をメモリから読込まなければならない場合に、BRUをホールドするためのホールド信号も生成する。その一方、従来技術においては、このタイプの複雑なスキャッタ・ギャザー機能性は、典型的には、複雑なデータ構造体のインデックスを作成するために、複数のレジスタをベースアドレスおよびオフセットによりセットアップすることを必要とする、従来のプロセッサアーキテクチャで達成するのは複雑である。その上、このような従来のプロセッサのアーキテクチャは、瑣末なデータ値を圧縮するための準備をしない。] 図19 [0051] 好適には、LSUのポート幅は、例えば、レジスタにおける入力として与えられたパラメータを用いて、独立して設定する。図20に示すようにSVUのLSUポートに接続された1/2/4要素幅データバスにわたる複数のトランザクションにおいて、4要素のベクトルを読込/記憶できるようにすることによって、このポート幅のパラメータにより、最上位のSoCの相互接続をSVUのスループットと交換することができる。] 図20 [0052] ポート幅のパラメータ化を支えるための追加アドレスlsbsの生成は、カウンタを用いて実行される。このカウンタは、0個、1個または2個のアドレスのlsbsを、図21に示すLSUにより生成されたアドレスに付け加える。] 図21 [0053] 図22に、SVUのRAMへの4要素の記憶へのポート幅パラメータの効果を示す。図に示すように、128ビットのベクトルを読込または記憶するために要するサイクル数は、ポート幅が1(32ビット)のときは4サイクル、ポート幅が2(64ビット)のときは2サイクル、および、ポート幅が4(128ビット)のときは1サイクルである。] 図22 [0054] 本出願は、メモリとプロセッサ間のデータ転送を実行するための特定された演算コードを有する指示セットを備えるプロセッサについて記載してきたが、プログラム記憶装置に明示的な指示セットがない場合も機能を実行することができ、むしろ、読込および記憶は、ステートマシンまたは他の手段の制御の下に実行されることを理解されたい。重要な利点は、1つまたはそれ以上のデータ項目を、全体の圧縮構造体を読み出し解凍する必要なく、メモリ内の圧縮構造体から取り扱うことができるということである。同様に、データの1項目を、全体の圧縮構造体を読み出しまたは解凍する必要なく、メモリに記憶された圧縮構造体において更新することができる。] [0055] この明細書においては、「含む/備える(comprises/comprising)」の用語は、決まった特徴、整数、ステップまたは要素の存在を特定することものである。しかし、1つまたはそれ以上の特徴、整数、ステップ、要素またはこれらのグループの存在または追加を排除するものではない。]
权利要求:
請求項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に記載のデータ処理装置であって、前記データ処理装置は状態エンジンであること、を特徴とするデータ処理装置。
类似技术:
公开号 | 公开日 | 专利标题 JP6109910B2|2017-04-05|メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 JP6339164B2|2018-06-06|Vector friendly instruction format and execution JP6274672B2|2018-02-07|Apparatus and method US9830197B2|2017-11-28|Cooperative thread array reduction and scan operations US9947084B2|2018-04-17|Multiresolution consistent rasterization US9678750B2|2017-06-13|Vector instructions to enable efficient synchronization and parallel reduction operations US5832288A|1998-11-03|Element-select mechanism for a vector processor US7877585B1|2011-01-25|Structured programming control flow in a SIMD architecture US8522000B2|2013-08-27|Trap handler architecture for a parallel processing unit KR101026689B1|2011-04-07|병렬 스레드 계산을 위한 가상 아키텍처 및 명령어 세트 US9946666B2|2018-04-17|Coalescing texture access and load/store operations Gilani et al.2013|Power-efficient computing for compute-intensive GPGPU applications TWI489386B|2015-06-21|由多個指令集使用之暫存器之間的映射 US5995122A|1999-11-30|Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format US6480868B2|2002-11-12|Conversion from packed floating point data to packed 8-bit integer data in different architectural registers US7042466B1|2006-05-09|Efficient clip-testing in graphics acceleration US9639365B2|2017-05-02|Indirect function call instructions in a synchronous parallel thread processor US7624251B2|2009-11-24|Instructions for efficiently accessing unaligned partial vectors US9495781B2|2016-11-15|Early sample evaluation during coarse rasterization CN106415492B|2020-04-07|用于图形处理器单元上的图形和非图形计算的语言、函数库和编译器 US7467288B2|2008-12-16|Vector register file with arbitrary vector addressing US5996057A|1999-11-30|Data processing system and method of permutation with replication within a vector register file US9830156B2|2017-11-28|Temporal SIMT execution optimization through elimination of redundant operations US6223320B1|2001-04-24|Efficient CRC generation utilizing parallel table lookup operations US7558942B1|2009-07-07|Memory mapped register file and method for accessing the same
同族专利:
公开号 | 公开日 EP2260380A1|2010-12-15| US10719318B2|2020-07-21| US9858073B2|2018-01-02| WO2009101119A1|2009-08-20| US20110047360A1|2011-02-24| CN101971139A|2011-02-09| GB2457303A|2009-08-12| US20180189066A1|2018-07-05| GB0802484D0|2008-03-19| KR20100122493A|2010-11-22|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-01-24| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120123 | 2013-08-06| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130806 | 2013-08-28| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130827 | 2014-02-13| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140212 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|