JP2022510281A - キャッシュラインアドレスに基づくストリーム内のコマンドの集約 - Google Patents

キャッシュラインアドレスに基づくストリーム内のコマンドの集約 Download PDF

Info

Publication number
JP2022510281A
JP2022510281A JP2021530941A JP2021530941A JP2022510281A JP 2022510281 A JP2022510281 A JP 2022510281A JP 2021530941 A JP2021530941 A JP 2021530941A JP 2021530941 A JP2021530941 A JP 2021530941A JP 2022510281 A JP2022510281 A JP 2022510281A
Authority
JP
Japan
Prior art keywords
command
address
read
write
write address
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
JP2021530941A
Other languages
English (en)
Inventor
ジェイ. ブレナン クリストファー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022510281A publication Critical patent/JP2022510281A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0677Optical disk device, e.g. CD-ROM, DVD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

演算結合器[240]は、読み出しアドレス、変更動作、及び、書き込みアドレスを有する一連のコマンドを受信する。場合によっては、コマンドは、コマンドの処理速度を制限するシリアル依存関係を有する場合がある。演算結合器は、互換性についてアドレスを比較し、シリアル依存関係を壊すために演算を変換し、複数のソースコマンドを、ソースコマンドよりもはるかに高速に実行可能なより少ない数の集約コマンドに結合する。演算結合器のいくつかの実施形態は、1つ以上の第1の読み出しアドレスと、第1の書き込みアドレスと、を含む第1のコマンドを受信する。演算結合器は、第1の読み出しアドレス及び第1の書き込みアドレスを、バッファに記憶された第2のコマンドの1つ以上の第2の読み出しアドレス及び第2の書き込みアドレスと比較する。演算結合器は、比較に基づいて、第1のコマンド及び第2のコマンドを選択的に結合して集約コマンドを形成する。【選択図】図2

Description

圧縮は、例えば、インタフェースを介して情報を送信するために必要とされる帯域幅の量を低減する等のように、1つの情報を表すバイト数を減らすために使用される。典型的な圧縮技術は、逆方向参照(backward reference)を使用して、現在のデータのチャンクを、前のデータのチャンクに対する変更を示す情報を加えた、前のデータ(又は、別の空間的若しくは時間的な位置のデータ)のチャンクに対するポインタとして表す。例えば、第1のアドレスでの3バイトのデータを、第2のアドレスでの3バイトのデータに1を加算する等の変更を示す情報を加えた、第1のアドレスから1キロバイト(kB)オフセットした第2のアドレスへのポインタとして当該3バイトのデータを表すことによって、圧縮することができる。データは、以前に受信したデータ(例えば、第2のアドレスでの3バイトのデータ)をコピーし、1を加算する等の示された変更を実行することによって、宛先で再構築される。
本開示は、添付の図面を参照することによってより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面において同じ符号を使用する場合には、類似又は同一の要素を示す。
いくつかの実施形態による、ディスプレイへの出力を意図した視覚的画像を生成するためのグラフィックスプロセッシングユニット(GPU)を含む処理システムのブロック図である。 いくつかの実施形態による、処理システム内又は処理システム間で送信される情報を復号及び解凍するために使用されるデコーダのブロック図である。 いくつかの実施形態による、コマンドのブロック図である。 いくつかの実施形態による、異なるコマンドに入力されるキャッシュラインの部分を表すマスクのマージャ(merger)のブロック図である。 いくつかの実施形態による、op結合器(オペコンバイナ)の第1の部分のブロック図である。 いくつかの実施形態による、op結合器の第2の部分のブロック図である。 いくつかの実施形態による、一致するコマンドを集約コマンドに結合する方法のフロー図である。
圧縮によって、異なるデータのチャンクを圧縮するために使用されるコマンド又は演算間にシリアル依存関係(serial dependencies)が生じる。例えば、第1の最近のコマンドは、(場合によっては、第2のデータチャンクの変更を加えた)第2の以前のデータチャンクへのポインタを使用してデータチャンクを圧縮し、第2の以前のデータチャンクは、(場合によっては、第3のデータチャンクの対応する変更を加えた)より以前の第3のデータチャンクへのポインタとして第2のデータチャンクを表す、第2の以前のコマンドによって圧縮されている。シリアル依存関係の複数のチェーンは、いくつかのコマンドストリームでインタリーブされる。例えば、前の値(例えば、DWord、ショートワード又はバイト)を出力にコピーするための(高度に圧縮可能な)同じコマンドの列がある場合がある。この列は、以前の値のパターンに一致させることができ、そのパターンを複製して出力を生成するために使用される。しかしながら、ストリーム内の現在のコマンドのソースは、ストリーム内の前のコマンドの結果であるので、識別されたコマンドのパターンをシリアルに実行する必要がある。複製されたコマンドが次の出力を生成するために(例えば、インクリメントする値の列を生成するために)値(例えば、1)を追加する場合、コマンドの実行がさらに複雑になる。
解凍を実施するために使用されるコマンド等のコマンドのストリームによって実行される動作は、キャッシュラインに対応する32バイトのウィンドウ等の所定のアドレス範囲内で動作する単一のコマンドを生成するために結合される。パイプラインのフロントエンドで受信されたコマンドは、バッファに記憶される。新たなコマンドの各々がフロントエンドに到着すると、新たなコマンドは、フロントエンドで以前に受信されバッファに記憶されたコマンドと比較される。新たなコマンドが、以前に受信した何れかのコマンドと一致する場合に、新たなコマンド及び一致する以前のコマンドは、パイプラインのバックエンドへの最終的なディスパッチのために、バッファに記憶されている集約コマンドに結合される。いくつかの実施形態では、新たなコマンドと一致するコマンドとの比較は、新たなコマンド及び一致するコマンドの書き込みアドレス又は読み出しアドレスを比較することと、書き込みアドレス及び読み出しアドレスが32バイトウィンドウ等の同じアドレス範囲内にあるかどうかを判別することと、を含む。集約コマンドは、後に受信するコマンドと比較するためにバッファに記憶される。バッファは、シリアル依存コマンドのインタリーブされたチェーンに関連する集約コマンド等の複数の異なる集約コマンドを含むことができる。いくつかの実施形態では、新たなコマンド及び一致するコマンドを結合することは、集約コマンドによって操作されるアドレスを識別するために、新たなコマンド及び一致するコマンドに関連するアドレス範囲内のデータに適用されるマスクを定義することを含む。例えば、コマンドストリームが、現在のアドレスからの第1のオフセットでデータを操作する第1のコマンドと、現在のアドレスからの第2のオフセットでデータを操作する第2のコマンドと、を含む場合、集約コマンドは、第1のオフセット及び第2のオフセットに基づいて定義されるマスクを含む。
図1は、いくつかの実施形態による、ディスプレイ110への出力を意図した視覚的画像を生成するためのグラフィックスプロセッシングユニット(GPU)105を含む処理システム100のブロック図である。GPU105は、メモリ115に記憶された命令を実行する。メモリ115のいくつかの実施形態は、ダイナミックランダムアクセスメモリ(DRAM)として実装される。しかし、メモリ115は、スタティックランダムアクセスメモリ(SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。図示した実施形態では、GPU105は、バス120を介してメモリ115と通信する。しかしながら、GPU105のいくつかの実施形態は、直接接続を介して、又は、他のバス、ブリッジ、スイッチ、ルータ等を介してメモリ115と通信する。GPU105は、実行された命令の結果等の情報をメモリ115に記憶することができる。例えば、メモリ115は、GPU105によって実行されるプログラムコードからの命令のコピー125を記憶することができる。GPU105のいくつかの実施形態は、命令を、同時に又は並列に、独立して実行する複数のプロセッサコア、計算ユニット又は固定機能回路(明確にするために図示省略)を含む。
処理システム100は、命令を実行するための中央演算処理装置(CPU)130を含む。CPU130のいくつかの実施形態は、命令を、同時に又は並列に、独立して実行する複数のプロセッサコア(明確にするために図示省略)を含む。また、CPU130は、バス120に接続されており、バス120を介してGPU105及びメモリ115と通信することができる。CPU130は、メモリ115に記憶されたプログラムコード135等の命令を実行することができ、CPU130は、実行された命令の結果等の情報をメモリ115に記憶することができる。また、CPU130は、GPU105にドローコールを発行することによって、グラフィック処理を開始することもできる。GPU105は、オブジェクトをレンダリングして、ディスプレイ110に提供されるピクセルの値を生成し、ディスプレイ110は、そのピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
入力/出力(I/O)エンジン140は、ディスプレイ110や、キーボード、マウス、プリンタ、外部ディスク等の処理システム100の他の要素に関連する入力動作又は出力動作を処理する。I/Oエンジン140は、I/Oエンジン140がGPU105、メモリ115又はCPU130と通信するように、バス120に結合されている。図示した実施形態では、I/Oエンジン140は、コンパクトディスク(CD)、デジタルビデオディスク(DVD)等の外部記憶媒体145に記憶された情報を読み出す。外部記憶媒体145は、ビデオゲーム等のアプリケーションを実行するために使用されるプログラムコードを表す情報を記憶する。外部記憶媒体145上のプログラムコードは、メモリ115に書き込まれ、GPU105又はCPU130によって実行される命令又はプログラムコード135のコピー125を形成する。
また、処理システム100は、暗号化、復号化、圧縮、解凍、及び、(処理システム100内で伝達される情報、処理システム100が外部エンティティから受信する情報、又は、処理システム100が外部エンティティに送信する情報にセキュリティを提供するために使用される)他の機能を実行するためのプロセッサ150も含む。プロセッサ150のいくつかの実施形態は、リテラルデータ、データの相対的な位置を示すポインタ、及び、データを圧縮又は解凍するために適用されるコマンドを含むデータストリームを解凍する。また、プロセッサ150は、以下に説明するように、受信したデータを解凍するために使用される動作を結合する回路を含むこともできる。
図示した実施形態では、一部のエンティティがメモリ115に直接アクセスするが、ダイレクトメモリアクセス(DMA)ロジック155は、メモリ115へのアクセスを提供する。DMAロジック155は、アドレスを生成し、メモリの読み出し又は書き込みのサイクルを開始する。例えば、GPU105、CPU105、I/Oエンジン140及びプロセッサ150は、メモリ115から情報を読み出し、DMAロジック155を介してメモリ115に情報を書き込む。いくつかの実施形態では、プロセッサ150及びDMAロジック155は、単一のエンティティとして実装される。DMAロジック155のいくつかの実施形態は、メモリ間でデータを転送するため、又は、GPU105内の計算ユニット間若しくはCPU130内のプロセッサコア間でデータを転送するために使用される。GPU105又はCPU130は、DMAロジック155によって実行されているデータ転送と同時に他の動作を実行することができ、DMAロジック155は、転送が完了したことを示すために、GPU105又はCPU130に割り込みを提供することができる。
図2は、いくつかの実施形態による、処理システム内で又は処理システム間で送信される情報を復号及び解凍するために使用されるデコーダ200のブロック図である。デコーダ200は、図1に示す処理システム100のいくつかの実施形態において実装される。例えば、デコーダ200を、プロセッサ150、又は、処理システム100内の他のエンティティに実装することができる。デコーダ200は、フロントエンド205と、ミドルエンド210と、バックエンド215と、に分割されている。デコーダ200は、キャッシュ220を含む(又は、キャッシュ220に関連付けられている)。キャッシュ220内のキャッシュライン225(明確にするために符号で示されているもののみ)は、デコーダ200によって受信された圧縮データと、ビットストリームからのコマンドを実行することによって生成された解凍データと、を記憶する。キャッシュライン225は、32バイト等の所定の長さを有する。いくつかの実施形態では、キャッシュ220はバッファとして実装され、キャッシュライン225の範囲は、外部DRAM又は共有SRAM等のメモリの一部へのウィンドウである。バッファは、キャッシュライン225のタグを含まない。
フロントエンド205は、圧縮されたビットストリームを受信する。圧縮されたビットストリームは、物理アドレスによって示される記憶位置に記憶されたリテラルデータと、現在のアドレスに対するデータの位置を示すポインタと、コマンドに入力されたデータの1つ以上の発信元アドレスと、コマンドによって書き込まれるデータのターゲットアドレスと、(場合によっては)入力データへのゼロの加算、付加、連結等のように入力データに対する変更を含むコマンドと、を含む。フロントエンド205は、圧縮されたビットストリームで受信されたコマンドを復号する。いくつかの実施形態では、フロントエンド205は、圧縮されたビットストリーム内のコマンドに先行する情報を使用して、定義されたハフマンテーブルに基づいてコマンドを復号する。フロントエンド205は、復号したコマンドをミドルエンド210に提供する。
ミドルエンド210は、復号したコマンドを含む、フロントエンド205から受信したシンボルを記憶するシンボルアレイ230のセットを含む。また、ミドルエンド210は、コマンドを表す情報を生成するコマンドアセンブラ235も含む。いくつかの実施形態では、コマンドアセンブラ235は、コピーされ、以前に受信したデータに条件付きで加えられるリテラルデータのバイト数を示すリテラル長と、以前に受信したデータからコピーされたバイト数を示す一致長と、リテラルデータのオフセットの最後から以前に受信したデータへのオフセットを示す一致オフセットと、を含むコマンドを提供する。
演算(op)結合器240は、コマンドアセンブラ235からコマンド情報を受信する。op結合器240のいくつかの実施形態は、縮小された(collapsed)バイトコマンドのアレイから単一のバックエンドコマンドを引き出す最後のシリアライゼーションサイクルを除いて、タイミング要件を満たすために必要なだけ深くパイプライン化されたフロースルーパイプライン(flow-through pipeline)として実装される。op結合器240は、コマンドアセンブラ235から受信したコマンドと、op結合器240によって生成された集約コマンドと、を記憶するバッファ245を含む。op結合器240は、コマンドアセンブラ235から受信したコマンドのうち、同じキャッシュライン225に関連付けられたコマンドを集約する。op結合器240のいくつかの実施形態は、受信したコマンドによって読み出されたデータの1つ以上の発信元(又は、読み出し)アドレスを含むコマンドを受信する。また、コマンドは、第1のコマンドによって書き込まれるデータの宛先(又は、書き込み)アドレスも含む。場合によっては、読み出しアドレス及び書き込みアドレスは、キャッシュライン225の開始を示し、コマンドは、キャッシュライン225内でデータを読み出し又は書き込むための位置を示すオフセットを含む。op結合器240は、コマンドアセンブラ235から受信した読み出しアドレス及び書き込みアドレスを、バッファ245に記憶されているコマンドの読み出しアドレス及び書き込みアドレスと比較する。例えば、受信したコマンド及びバッファされているコマンドの読み出しアドレス及び書き込みアドレスが同一である等のように、読み出しアドレス及び書き込みアドレスが同じキャッシュライン225を示す場合には、一致が発生する。op結合器240は、読み出しアドレスと書き込みアドレスとの間の一致に応じて、受信したコマンドを、バッファされているコマンドと結合する。
op結合器240は、可能な限り多くのコマンドパケットを可能な限り少ない集約コマンドに集約しようとする。次に、集約コマンドがバックエンド215に提供される。バックエンド215に提供される集約コマンドの数を低減することは、バックエンド215のスループットを最適化し、結果的に、外部メモリインタフェースのスループットを最適化する。バックエンド215は、(op結合器240によって生成された集約コマンドを含む)コマンドの読み出しアドレスを調べ、必要に応じてフェッチコマンドを発行する。また、バックエンド215は、ビットストリーム内のリテラルデータをポップ、整列及び拡張する。
図3は、いくつかの実施形態による、コマンド300のブロック図である。コマンド300は、図2に示すop結合器240等のop結合器を含むデコーダによって受信される。コマンド300は、1つ以上のキャッシュラインに記憶されたデータを操作し、操作の結果を、入力データを含むキャッシュラインである場合もあれば異なる場合もある別のキャッシュラインに書き込む。図示した実施形態では、デコーダは、2つのキャッシュラインに関連する情報を同時に処理するので、例えば、デコーダは、キャッシュライン境界と整列していないためにキャッシュラインに跨っている入力データを使用するコマンドを復号することができる。2つのキャッシュラインは、異なるバンクに関連付けられている。
したがって、コマンド300は、読み出しキャッシュライン315,320をそれぞれ示すアドレス305,310を含む。読み出しアドレス305,310は、異なるキャッシュライン315,320の開始アドレスを示すが、コマンド300のいくつかの実施形態は、同じキャッシュラインを示す読み出しアドレス305,310を含む。また、コマンド300は、キャッシュライン315,320の何れかを示す単一の読み出しアドレスを含むこともできる。また、コマンド300は、書き込みキャッシュライン330を示すアドレス325も含む。コマンド300によって表される操作によって生成されたデータは、書き込みキャッシュライン330の位置に書き込まれる。
オフセットは、キャッシュライン315,320,330内のデータの位置を示す。オフセットはコマンド300に含まれる。例えば、コマンド300は、キャッシュライン315の先頭からキャッシュライン315内の入力データの位置までのオフセット335を示す情報を含む。他の例では、コマンド300は、キャッシュライン320の先頭からキャッシュライン320内の入力データの位置までのオフセット340を示す情報を含む。さらに他の例では、コマンド300は、キャッシュライン330の先頭からコマンド300によって書き込まれた位置へのオフセット345を示す情報を含む。いくつかの実施形態では、アドレス305,310及びオフセット335,340によってそれぞれ示されるキャッシュライン315,320内の位置から読み出されるデータの部分は、マスクによって表される。したがって、コマンド300を別のコマンドと結合することは、2つのコマンドのマスクをマージすることを含む。
図4は、いくつかの実施形態による、異なるコマンドに入力されるキャッシュライン405の部分を表すマスクのマージャ400のブロック図である。マージャ400は、例えば、コマンドを結合して集約コマンドを形成する場合等に、図2に示すop結合器240のいくつかの実施形態によって実行される。キャッシュライン405は、圧縮されたビットストリームからの圧縮データ等のデータを表す部分410(明確にするために符号によって示す部分のみ)に分割される。部分410のサイズは任意であり、異なる部分は場合によって異なるサイズを有する。例えば、部分410のあるサブセットが3バイトのサイズを有することができ、部分410の別のサブセットが1バイトのサイズを有することができる。
マスク415,420は、対応するコマンドのために生成される。いくつかの実施形態では、マスク415,420は、対応するコマンドによって読み出される部分410の位置を示すコマンド内の読み出しアドレス及び対応するオフセットに基づいて生成される。また、コマンドは、部分410のサイズを示す情報も含む。図示した実施形態では、マスク415は、第1のコマンドがキャッシュライン405の位置425,430からデータを読み出すことを示す。マスク420は、第2のコマンドがキャッシュライン405の位置435,440からデータを読み出すことを示す。マスク415,420の各々は位置425,430,435,440を示しているが、他のコマンドのために生成されたマスクは、単一の位置、複数のキャッシュライン内の位置等を示すことができる。
マスク415,420は、対応する集約コマンドによって使用される集約マスク445を形成するためにマージされる。図示した実施形態では、集約マスク445は、集約コマンドに対する入力としてアクセスされる位置425,430,435,440を示す。集約マスク445を使用することによって、集約コマンドは、位置425,430,435,440に同時にアクセスすることができる。
図5は、いくつかの実施形態による、op結合器の第1の部分500のブロック図である。第1の部分500は、図2に示すop結合器240のいくつかの実施形態を実装するために使用される。第1の部分500は、図2に示すフロントエンド205等のフロントエンドからコマンドのセット510を受信するアドレス割り当て回路505を含む。いくつかの実施形態では、セット510は、上述したように、リテラル長、一致長及び一致オフセットによって表される出力アドレスを提供するコマンドアセンブラから受信される。出力アドレスは、コマンドの新たなセット510の各々の一部としてリセットされる。インクリメント回路511,512,513,514は、コマンドの出力アドレスを、それぞれの新たなリテラル及び一致でインクリメントする。アドレス割り当て回路505は、op結合器によって処理されている現在のアドレス515のコピーを記憶する。インクリメント回路511~514からの出力は、書き込みアドレス、リテラル読み出しアドレス及び一致読み出しアドレスである。場合によっては、コマンドが演算パイプラインのメモリ又はキャッシュラインにどのように整列するのかを比較するために、絶対アドレスがop結合器によって後に使用される。
アドレス割り当て回路505のいくつかの実施形態は、出力アドレスを生成し、現在のアドレスを更新するために、以下の擬似コードを実装する。
LiteralWriteAddress = currentAddress
SubLiteralOffset = previousMatchOffset
if (hasSubliterals)
SubLiteralAddress = currentAddress - SubLiteralOffset
MatchWriteAddress = currentAddress + LiteralLength
matchWrapsAtWriteStart = MatchLength > MatchOffset
if (matchWrapsAtWriteStart)
MatchRead = MatchOffset
else:
MatchRead = MatchLength
MatchAddress = currentAddress + LiteralLength - MatchOffset
currentAddress += LiteralLength + MatchLength
擬似コードは、コマンドのセット510に亘ってチェーンされており、潜在的に8つのサブコマンドを生成する。
平坦化回路(flatten circuitry)520は、リテラル及び一致を、リテラルを読み出して追加する共通のコマンドに変換する。アドレス割り当て回路505から受信された入力コマンドパケットは、最大で2つのコマンドを生成する。クランプ回路521,522,523,524は、アドレス割り当て回路505から受信したコマンドの各々の一致長をクランプする。いくつかの実施形態では、各入力コマンドは、書き込みにクランプされた1つのコマンドに変換される。また、2つの連続する読み出しライン(lines)が生成される。結果として得られる有効なサブコマンドは、クランプ回路521~524から、N×2(8)書き込み+N(4)読み出し先入先出(FIFO)バッファ等のバッファにプッシュされる。したがって、リテラルのない一致又は一致のない一連のリテラルがある場合、これらを単一の集約コマンドにまとめることができる。選択回路525は、同じラインから次に有効なN(4)を選択する。いくつかの実施形態では、選択回路525からの出力は、以下のN(4)インスタンスを含む。
‐ ReadAddress
‐ ReadLength:一致は、WriteLengthよりも短くすることができる。出力を満たすために読み出しが繰り返される。
‐ HasLiterals:真の場合、サブコマンドは、出力書き込み長と同じ数のリテラルを有する。
‐ WriteAddress
‐ WriteLength
整列回路530は、読み出し及び書き込みに必要とされるラインを計算する。また、整列回路530は、複数のキャッシュラインに書き込む必要があるコマンドを展開(unrolls)する。いくつかの実施形態では、キャッシュラインは、現在のデータのチャンクの先頭に対して整列された32バイトのアドレスである。2つの連続する読み出しが書き込みライン毎に実行され得るので、書き込みが1つのラインに制限されている場合には、読み出しは1つの読み出し操作で実行される。上述したように、入力コマンドは、書き込みにクランプされた1つのコマンドに変換され、2つの連続する読み出しラインが生成される。完了され、送信されるコマンドは、平坦化回路520のバッファ(FIFOバッファ等)からポップされる。後続のコマンドは、バッファ内の次のコマンドを書き込む(fill out)ために回転され、引き込まれる(pulled in)。
整列回路530の開始/終了回路535は、平坦化回路520から受信した読み出しアドレス及び書き込みアドレスに基づいて、読み出し及び書き込みのための開始行及び終了ラインを計算するために使用される。展開回路(unrolling circuitry)540は、書き込みラインの遷移を展開し、展開した書き込みライン、読み出しライン及び反復/回転情報を、同じラインから次に有効なN(4)を選択するピック回路545に提供するために使用される。いくつかの実施形態では、ピック回路545は、同じ書き込みライン及び読み出しラインを第1のラインとして共有する次の最大でN(4)のコマンドをピックアップすることを含む動作を実行する。例えば、ピック回路545は、同じ読み出し行及び書き込みラインを有するコマンドのみを送信する出力上のフィルタを有するN書き込み+N読み出しFIFOとして、平坦化ステップと同様に動作する。未使用の読み出しバンクを有するコマンドを、その読み出しバンクを使用するコマンドとともに送信することができる。ピック回路545の出力は、以下の通りである。
‐ WriteLine:チャンクの先頭を基準とする32バイトの整列アドレス
‐ WriteLength:ラインの最後まで覆われ、それが交差すると展開される。
‐ WriteStart[4:0]:ライン内の書き込みアドレス
‐ ReadLine[2 Banks]:2つの必ずしも連続していない32B読み出しライン
‐ バンク0は偶数ラインを有する。
‐ バンク1は奇数ラインを有する。
‐ ReadStart[5:0]:ReadAddress[5:0]
‐ ReadLength [5:0]:短い読み出しの場合には反復がどこで開始するかを定義し、長い読み出しの場合には何もしないのを定義する。
‐ RepeatRotate[6:0]:独自の出力を読み出し、ソースデータを繰り返す必要のある長いコピーの場合
整列回路530のいくつかの実施形態は、以下の擬似コードを実装する。
#計算し、演算をラインまで制限する
{oWriteLine, writeStart[4:0]} = iWriteAddress
writeEnd = min(writeStart + iWriteLength, 32)
length = writeEnd - writeStart
oWriteLength = length

#読み出し制御を計算する
readEnd = iReadAddress + iReadLength - 1
firstReadLine = iReadAddress[:5]
lastReadLine = readEnd[:5]
repeatFitsInOneRead = (lastReadLine - firstReadLine) < 2
if (repeatFitsInOneRead or firstCycleOfCommand)
repeatRotate = 0

#読み出しラインを計算する
if (repeatFitsInOneRead):
oReadLine[firstReadLine[0]] = firstReadLine
oReadLine[lastReadLine[0]] = lastReadLine
else #読み出しデータをウォークし、必要に応じて新たな読み出しを開始する
readBank = iReadAddress[5]
oReadLine[readBank] = iReadAddress[:5]
readLine2 = (iReadAddress + length - 1)[:5]
readBank2 = readLine2[5]
oReadLine[readBank2] = readLine2

#検出して次へ進む
NextWriteAddress = iWriteAddress + length
NextWriteLength = iWriteLength - length
if(repeatFitsInOneRead):
oNextRepeatRotate = (repeatRotate + length) % iReadLength
else:
oNextReadAddress += length

oHasMore = (NextWriteLength > 0)
2つのコマンドが同じバンクに異なる有効な読み出しラインを有していない限り、出力ReadLinesを異なるコマンドから取得することができる。
図6は、いくつかの実施形態による、op結合器の第2の部分600のブロック図である。第2の部分600は、図2に示すop結合器240のいくつかの実施形態を実装するために使用される。第2の部分600は、図5に示す整列回路530等の整列回路から入力コマンド610を受信するバイトブラスト及び収集回路605を含む。図示した実施形態では、バイトブラスト及び収集回路605は、4つの入力コマンド610を受信し、回路605は、入力コマンド610に対する読み出し{Address,Length}及び{Write Address,Num Literals}を、バイト毎のマルチプレクサ制御に変換する。入力コマンド610の各々のWriteAddress[4:0]及びWriteLengthは、図4に示すマスク415,420等のバイトマスクに変換される。読み出しライン及び書き込みラインが、第1のコマンドの読み出しライン及び書き込みラインと一致するコマンド毎に、有効なバイトが選択される。有効なバイトは重複していない。
バイトブラスト及び収集回路605のいくつかの実施形態は、入力コマンド610について以下を計算する。
‐ バイト[0…31]毎の出力:
○ ReadSelect:読み出しラインの0~63の何れのバイトか。MSB上の「奇数」のバイト。
○ ReadEnable:読み出しが追加される必要があるかどうか
○ LiteralSelect:この書き込みラインのバッチの何れのリテラルか
■ 各書き込みラインの0から(同じ書き込みラインを有する全てのコマンドのNumLiterals)の合計-1
○ WriteEnable:このバイトが有効化されているかどうか
○ LiteralEnable:リテラルが追加される必要があるかどうか
‐ 収集したコマンド毎の出力:
○ NumLiterals:ポップオフするリテラルの数
■ 次のコマンドが同じ書き込みラインを共有する場合にはゼロ
■ 書き込みラインが完了した場合には書き込みラインのリテラルの総数
○ WriteLine:チャンクの先頭を基準にした32バイトの整列アドレス
○ ReadLine[bank = 0…1]
○ ReadLineEnable [1:0]:読み出しが必要とされるかどうか
バイトブラスト及び収集回路605のいくつかの実施形態は、以下の擬似コードを実装する。
if (newWriteLine)
consumedLiterals = 0

#第1のリテラルIDを計算する
firstLiterals[0] = consumedLiterals
numLiterals[-1] = 0
for command in [0..3]
numLiterals[command] = iHasLiterals[command] ? iWriteLength[command] : 0
totalLiterals[command] = numLiterals[command-1] + numLiterals[command]
firstLiterals[command] = totalLiterals[command-1] + consumedLiterals

for each command with matching lines
writeEnables[31:0] = (~(0xFFFFFFFF << iWriteLength)) << iWriteStart
literalCount

for b in 0 to 31
#適切な入力コマンドを選択する
command = WriteEnables[0..3][b] # is a one hot mux control.
writeStart[4:0] = iWriteStart[command]
numLiterals[5:0] = iWriteLength[command]
oLiteralEnable = iHasLiterals[command]
firstLiteral = firstLiterals[command]
readLength = iReadLength[command]
repeatRotate = iReadRotate[command]
readStart = iReadStart[command]

byteInCommand = b - writeStart

oLiteralSelect[b][4:0] = oLiteralEnable ? byteInCommand+firstLiteral: 31

oReadEnable = readLength > 0
readOffset = (byteInCommand + repeatRotate) % readLength
oReadSelect[b][5:0] = (readStart + readOffset)
oWriteEnable[b] = writeEnables[0..3] [b]!= 0

isLastOfWriteLine = oWriteEnable[31]
totalConsumedLiterals = totalLiterals[LastOne(iCommandValids[0..3]] +
consumedLiterals
oNumLiterals = isLastOfWriteLine ? totalConsumedLiterals : 0
nextConsumedLiterals = totalConsumedLiterals
第2の部分のいくつかの実施形態は、バイトブラスト及び収集回路605のN(4)インスタンスを実装する。インスタンスは、異なるコマンドについて動作し、図5に示す整列ブロック530の出力におけるコマンド間の互換性のない読み出しライン及び書き込みラインを検出するフィルタを削除する。このアプローチは、バイトブラスト及び収集操作をより迅速に実行するという利点を有するが、op結合器の部分600での後続の動作において輻輳をもたらす場合がある。
結合回路615は、互換性のない書き込みライン又は読み出しライン(例えば、一致しない読み出しライン及び書き込みライン等)を有する所定数の以前に収集したコマンドを記憶する。結合回路615は、記憶されたコマンドの1つと互換性がある(例えば、一致する)、後に受信されたコマンドを結合又は集約する。新たなコマンドが提示されると、結合回路615は、有効な読み出しラインを無効な読み出しラインとマージすることができる。また、結合回路615は、互換性のある全てのコマンドから有効なバイトデータを選択することによって、コマンドを、一致する読み出しライン及び書き込みラインとマージする。結合回路615が互換性のないラインを有するコマンドを受信した場合、最も古い結合コマンドが押し出され、以前に受信したコマンドが、新たなコマンドのためのスペースを生成するために押し下げられる。押し出された(潜在的に集約又は結合された)コマンドは、図2に示すバックエンド215等のバックエンドに提供される。
結合回路615のいくつかの実施形態は、例えば互換性のないコマンド等のように一致しない読み出しアドレス又は書き込みアドレスを有する、以前に収集された2つのコマンドを記憶する。以前のコマンドは、第1の結合されたスロット620及び第2の結合されたスロット625に記憶される。新規に受信したコマンドは、第1の結合されたスロット620に記憶され、最も古い結合コマンドは、第2の結合されたスロット625に記憶される。同じ書き込みラインを有するが異なる読み出しラインを有する場合がある2つの結合器620,625があるので、結合回路615は、後に受信したコマンドが、第1の結合されたスロット620のコマンドと結合することによって、第2の結合されたスロット625内の以前のコマンドよりも先にジャンプすることを可能にする。結合回路615は、以下の擬似コードを使用して、先にジャンプすることがリードアフターライトコヒーレンシハザード(read-after-write coherency hazard)に違反するかどうかを判別するためにチェックする。
#既存のラインより先に進むことを検出し、抑制する。
cantCombineToSlot1 = False
for i in 0..1
if(iReadLine[i] == Combined[0].WriteLine):
cantCombineToSlot1 = True
リードアフターライトコヒーレンシハザードが検出された場合、先にジャンプすることが許可されない。
結合又は集約されたコマンド内の依存関係は、解決回路630を使用して解決される。結合回路615から押し出されたコマンドは、解決回路630によって受信され、解決回路630は、例えば、byte-can-go回路635のインスタンスを使用して、集約コマンド内のリードアフターライト依存関係を解決しようとする。解決回路630が依存関係を解決することができない場合、依存関係の前のバイトが別のコマンドとして送出され、次に、解決回路630は、残りのバイトの依存関係を解決しようと試みる。解決回路630のいくつかの実施形態は、以下の擬似コードを実装する。
for byte in 0..31
if (iWriteEnable[byte])
readBank = iReadSelect[byte][5]
readLine = iReadLines[readBank]
readOverlapsWriteLine = iWriteLine == readLine
if (readOverlapsWriteLine)
readByte = iReadSelect[byte][4:0]
if (iWriteEnable[readByte])
readIsCopying = !iLiteralEnable[readByte] &&
iReadEnable[readByte]
writeIsAdding = iLiteralEnable[byte] &&
iReadEnable[byte]
writeIsCopying = !iLiteralEnable[byte] &&
iReadEnable[byte]
#ハザードがリテラルのない単なる一致である場合、
#代わりに元の読み出し+リテラルを単にコピーする
if(writeIsCopying):
ReadSelect[byte] = ReadSelect[readByte]
LiteralSelect[byte] = LiteralSelect[readByte]
#ハザードがリテラルのない読み出しでの読み出し+リテラルである場合
#代わりに元の読み出しを使用
else if(writeIsAdding && readIsCopying)
ReadSelect[byte] = ReadSelect[readByte]
#それ以外の場合、追加を結合できない
#リードオンライト(read on write)ハザードがある
else
ByteCanGo[byte] = False
#リテラルをポップする前に、全てが展開されるまで待つ。
oNumLiterals = 0
上記の擬似コードでは、Falseである第1のByteCanGO[]は、後のバイトによる考慮から前のバイトを無効にし、その結果、偽のByteCanGoの各々は、コマンドを32バイトソースから複数のコマンドに分割する。1つのコマンド内に解決可能な循環依存関係が多く存在する場合があるので、これらの多くをインスタンス化し、順番にパイプライン化して、目標を達成する必要がある場合があることに留意されたい。
図7は、いくつかの実施形態による、一致するコマンドを集約コマンドに結合する方法700のフロー図である。方法700は、図2に示すop結合器240、並びに、図5及び図6に示すop結合器のいくつかの実施形態において実施される。
ブロック705において、op結合器は、例えば図2に示すコマンドアセンブラ235等のコマンドアセンブラから1つ以上のコマンドを受信する。受信したコマンドは、コマンドのソースデータの位置を示す1つ以上の読み出しアドレスを含む。また、受信したコマンドは、コマンドによって生成された宛先データの位置を示す書き込みアドレスを含む。いくつかの実施形態では、読み出しアドレス及び書き込みアドレスは、32バイトキャッシュライン等のキャッシュライン内の位置を示す。
ブロック710において、op結合器は、受信したコマンドの読み出しアドレス及び書き込みアドレスを、op結合器によって以前に受信されバッファされたコマンドの読み出しアドレス及び書き込みアドレスと比較する。バッファされたコマンドは、新規に受信した(例えば、結合されていない又は集約されていない)コマンド、又は、以前に受信された2つ以上のコマンドを結合することによって生成された集約コマンドであってもよい。
決定ブロック715において、op結合器は、受信したコマンドの読み出しアドレス及び書き込みアドレスが、バッファされたコマンドの読み出しアドレス及び書き込みアドレスと一致するかどうかを判別する。いくつかの実施形態では、コマンドは、異なるバンクに記憶された2つのキャッシュラインを参照する最大2つの読み出しアドレスを含む。コマンド内の読み出しアドレスの数に応じて、op結合器は、受信したコマンド及びバッファされたコマンドの1つ又は2つの読み出しアドレスを比較する。読み出しアドレスと書き込みアドレスとが一致する場合、方法700は、ブロック720に進む。読み出しアドレスと書き込みアドレスとが一致しない場合、方法700は、決定ブロック725に進む。
ブロック720において、op結合器は、受信したコマンドと、バッファされたコマンドと、を結合する。いくつかの実施形態では、受信したコマンドと、バッファされたコマンドと、を結合することは、図4に示すマスク415,420等のように、受信したコマンド及びバッファされたコマンドに関連するマスクをマージすることを含む。次に、方法700は、ブロック730に進む。
決定ブロック725において、op結合器は、受信したコマンドと比較することができる、より多くのバッファされたコマンドがあるかどうかを判別する。追加のバッファされたコマンドがある場合、方法700は、ブロック710に戻る。追加のバッファされたコマンドがない場合、方法は、ブロック730に進む。
ブロック730において、コマンドがバッファに追加される。受信したコマンドの読み出しアドレス又は書き込みアドレスが、何れのバッファされたコマンドの読み出しアドレス及び書き込みアドレスにも一致しなかった場合、バッファに追加されるコマンドは、受信したコマンドである。受信したコマンドの読み出しアドレス又は書き込みアドレスが、バッファされた何れかのコマンドの読み出しアドレス及び書き込みアドレスと一致する場合、バッファに追加されるコマンドは、結合又は集約されたコマンドである。
本明細書に開示するように、方法は、第1のコマンドによって読み出されるデータの少なくとも1つの第1の読み出しアドレスと、第1のコマンドによって書き込まれるデータの第1の書き込みアドレスと、を含む第1のコマンドを含むコマンドストリームを受信することと、少なくとも1つの第1の読み出しアドレス及び第1の書き込みアドレスを、バッファに記憶された第2のコマンドの少なくとも1つの第2の読み出しアドレス及び第2の書き込みアドレスと比較することと、少なくとも1つの第1の読み出しアドレスが少なくとも1つの第2の読み出しアドレスに一致し、第1の書き込みアドレスが第2の書き込みアドレスに一致することに応じて、第1のコマンド及び第2のコマンドを結合して第1の集約コマンドを形成することを含む。一態様では、第1のコマンドを受信することは、少なくとも1つの第1の読み出しアドレスが少なくとも1つの第2の読み出しアドレスと一致しない、又は、第1の書き込みアドレスが第2の書き込みアドレスと一致しないことに応じて、第1のコマンドをバッファに記憶することを含む。別の態様では、方法は、少なくとも1つの第1の読み出しアドレスが少なくとも1つの第2の読み出しアドレスと一致することに応じて、第1の集約コマンドをバッファに記憶することと、少なくとも1つの第1のアドレスが少なくとも1つの第2のアドレスと一致することに応じて、第1のコマンドをバッファから削除することと、を含む。
一態様では、少なくとも1つの第1の読み出しアドレス、少なくとも1つの第2の読み出しアドレス、第1の書き込みアドレス、及び、第2の書き込みアドレスは、所定の長さを有するキャッシュラインを示す。別の態様では、方法は、第1のコマンドで示される少なくとも1つの第1のオフセットに基づいて、第1のコマンドによって読み出されるキャッシュラインの少なくとも1つの第1の部分を識別することと、第2のコマンドで示される少なくとも1つの第2のオフセットに基づいて、第2のコマンドによって読み出されるキャッシュラインの少なくとも1つの第2の部分を識別することと、を含む。さらに別の態様では、方法は、第1のコマンド及び第2のコマンドを結合して集約コマンドを生成することは、少なくとも1つの第1の部分及び少なくとも1つの第2の部分を示すマスクを生成することを含む。さらに別の態様では、方法は、第3のコマンドによって読み出されるデータの少なくとも1つの第3の読み出しアドレスと、第3のコマンドによって書き込まれるデータの第3の書き込みアドレスと、を含む第3のコマンドを含むコマンドストリームを受信することと、少なくとも1つの第3の読み出しアドレス及び第3の書き込みアドレスを、バッファに記憶された第4のコマンドの少なくとも1つの第4の読み出しアドレス及び第4の書き込みアドレスと比較することと、少なくとも1つの第3の読み出しアドレスが少なくとも1つの第4の読み出しアドレスと一致し、第3の書き込みアドレスが第4の書き込みアドレスと一致することに応じて、第3のコマンド及び第4のコマンドを結合して第2の集約コマンドを形成することと、を含む。
別の態様では、第1のコマンド及び第2のコマンドは、コマンドストリームの第3のコマンド及び第4のコマンドとインタリーブされる。さらに別の態様では、方法は、第1のコマンドと第2のコマンドとの間に依存関係が存在するかどうかを判別することを含み、第1のコマンド及び第2のコマンドを結合することは、依存関係が存在するかどうかに基づいて、第1のコマンド及び第2のコマンドを選択的に結合することを含む。
本明細書に開示するように、装置は、第1のコマンドによって読み出されるデータの少なくとも1つの第1の読み出しアドレスと、第1のコマンドによって書き込まれるデータの第1の書き込みアドレスをと、含む第1のコマンドを記憶するように構成されたバッファと、少なくとも1つの第1の読み出しアドレス及び第1の書き込みアドレスを、バッファに記憶された第2のコマンドの少なくとも1つの第2の読み出しアドレス及び第2の書き込みアドレスと比較するように構成された演算結合器と、を備え、演算結合器は、少なくとも1つの第1の読み出しアドレスが少なくとも1つの第2の読み出しアドレスと一致し、第1の書き込みアドレスが第2の書き込みアドレスと一致することに応じて、第1のコマンド及び第2のコマンドを結合して第1の集約コマンドを形成するように構成されている。一態様では、バッファは、少なくとも1つの第1の読み出しアドレスが少なくとも1つの第2の読み出しアドレスと一致することに応じて、第1の集約コマンドを記憶するように構成されており、第1のコマンドは、少なくとも1つ第1のアドレスが少なくとも1つの第2のアドレスと一致することに応じて、バッファから削除される。別の態様では、少なくとも1つの第1の読み出しアドレス、少なくとも1つの第2の読み出しアドレス、第1の書き込みアドレス、及び、第2の書き込みアドレスは、所定の長さを有するキャッシュラインを示す。
一態様では、演算結合器は、第1のコマンドで示される少なくとも1つの第1のオフセットに基づいて、第1のコマンドによって読み出されるキャッシュラインの少なくとも1つの第1の部分を識別し、第2のコマンドで示される少なくとも1つの第2のオフセットに基づいて、第2のコマンドによって読み出されるキャッシュラインの少なくとも1つの第2の部分を識別するように構成されている。別の態様では、演算結合器は、少なくとも1つの第1の部分及び少なくとも1つの第2の部分を示すマスクを生成するように構成されている。さらに別の態様では、バッファは、第3のコマンドによって読み出されるデータの少なくとも1つの第3の読み出しアドレスと、第3のコマンドによって書き込まれるデータの第3の書き込みアドレスと、を含む第3のコマンドを記憶するように構成されており、作業結合器は、少なくとも1つの第3の読み出しアドレス及び第3の書き込みアドレスを、バッファに記憶された第4のコマンドの少なくとも1つの第4の読み出しアドレス及び第4の書き込みアドレスと比較するように構成されており、演算結合器は、少なくとも1つの第3の読み出しアドレスが少なくとも1つの第4の読み出しアドレスと一致し、第3の書き込みアドレスが第4の書き込みアドレスと一致することに応じて、第3のコマンド及び第4のコマンドを結合して第2の集約コマンドを形成するように構成されている。
一態様では、バッファは、第2の集約コマンドを記憶するように構成されている。別の態様では、第1のコマンド及び第2のコマンドは、第3のコマンド及び第4のコマンドとインタリーブされる。さらに別の態様では、演算結合器は、第1のコマンドと第2のコマンドとの間に依存関係が存在するかどうかを判別するように構成されており、演算結合器は、依存関係が存在するかどうかに基づいて第1のコマンド及び第2のコマンドを選択的に結合するように構成されている。
本明細書に開示するように、方法は、データを圧縮するために使用されるコマンドのストリーム内の第1のコマンドの第1の読み出しアドレス及び書き込みアドレスを、ストリーム内の第2のコマンドの第2の読み出しアドレス及び書き込みアドレスと比較することと、第1の読み出しコマンド及び書き込みコマンドがキャッシュラインを示し、第2の読み出しアドレス及び書き込みアドレスが同じキャッシュラインを示すかどうかに基づいて、第1のコマンド及び第2のコマンドを選択的に結合して集約コマンドを形成することと、を含む。一態様では、コマンドのストリームは、グラフィックスプロセッシングユニットによって生成されたグラフィックスデータを圧縮するために使用される。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. 方法であって、
    第1のコマンドによって読み出されるデータの少なくとも1つの第1の読み出しアドレスと、前記第1のコマンドによって書き込まれるデータの第1の書き込みアドレスと、を含む前記第1のコマンドを含むコマンドストリームを受信することと、
    前記少なくとも1つの第1の読み出しアドレス及び前記第1の書き込みアドレスを、バッファに記憶された第2のコマンドの少なくとも1つの第2の読み出しアドレス及び第2の書き込みアドレスと比較することと、
    前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致し、前記第1の書き込みアドレスが前記第2の書き込みアドレスと一致することに応じて、前記第1のコマンド及び前記第2のコマンドを結合して第1の集約コマンドを形成することと、を含む、
    方法。
  2. 前記第1のコマンドを受信することは、前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致しない、又は、前記第1の書き込みアドレスが前記第2の書き込みアドレスと一致しないことに応じて、前記第1のコマンドを前記バッファに記憶することを含む、
    請求項1の方法。
  3. 前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致することに応じて、前記第1の集約コマンドを前記バッファに記憶することと、
    前記少なくとも1つの第1のアドレスが前記少なくとも1つの第2のアドレスと一致することに応じて、前記第1のコマンドを前記バッファから削除することと、をさらに含む、
    請求項2の方法。
  4. 前記少なくとも1つの第1の読み出しアドレス、前記少なくとも1つの第2の読み出しアドレス、前記第1の書き込みアドレス、及び、前記第2の書き込みアドレスが、所定の長さを有するキャッシュラインを示す、
    請求項1の方法。
  5. 前記第1のコマンドで示される少なくとも1つの第1のオフセットに基づいて、前記第1のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第1の部分を識別することと、
    前記第2のコマンドで示される少なくとも1つの第2のオフセットに基づいて、前記第2のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第2の部分を識別することと、をさらに含む、
    請求項4の方法。
  6. 前記第1のコマンド及び前記第2のコマンドを結合して前記集約コマンドを生成することは、前記少なくとも1つの第1の部分及び前記少なくとも1つの第2の部分を示すマスクを生成することを含む、
    請求項5の方法。
  7. 第3のコマンドによって読み出されるデータの少なくとも1つの第3の読み出しアドレスと、前記第3のコマンドによって書き込まれるデータの第3の書き込みアドレスと、を含む第3のコマンドを含む前記コマンドストリームを受信することと、
    前記少なくとも1つの第3の読み出しアドレス及び前記第3の書き込みアドレスを、バッファに記憶された第4のコマンドの少なくとも1つの第4の読み出しアドレス及び第4の書き込みアドレスと比較することと、
    前記少なくとも1つの第3の読み出しアドレスが前記少なくとも1つの第4の読み出しアドレスと一致し、前記第3の書き込みアドレスが前記第4の書き込みアドレスと一致することに応じて、前記第3のコマンド及び前記第4のコマンドを結合して第2の集約コマンドを形成することと、をさらに含む、
    請求項1の方法。
  8. 前記第1のコマンド及び前記第2のコマンドは、前記コマンドストリームの前記第3のコマンド及び前記第4のコマンドとインタリーブされる、
    請求項7の方法。
  9. 前記第1のコマンドと前記第2のコマンドとの間に依存関係が存在するかどうかを判別することをさらに含み、
    前記第1のコマンド及び前記第2のコマンドを結合することは、前記依存関係が存在するかどうかに基づいて、前記第1のコマンド及び前記第2のコマンドを選択的に結合することを含む、
    請求項1の方法。
  10. 装置であって、
    第1のコマンドによって読み出されるデータの少なくとも1つの第1の読み出しアドレスと、前記第1のコマンドによって書き込まれるデータの第1の書き込みアドレスと、を含む前記第1のコマンドを記憶するように構成されたバッファと、
    前記少なくとも1つの第1の読み出しアドレス及び前記第1の書き込みアドレスを、前記バッファに記憶された第2のコマンドの少なくとも1つの第2の読み出しアドレス及び第2の書き込みアドレスと比較するように構成された演算結合器と、を備え、
    前記演算結合器は、前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致し、前記第1の書き込みアドレスが前記第2の書き込みアドレスと一致することに応じて、前記第1のコマンド及び前記第2のコマンドを結合して第1の集約コマンドを形成するように構成されている、
    装置。
  11. 前記バッファは、前記少なくとも1つの第1の読み出しアドレスが前記少なくとも1つの第2の読み出しアドレスと一致することに応じて、前記第1の集約コマンドを記憶するように構成されており、
    前記第1のコマンドは、前記少なくとも1つの第1のアドレスが前記少なくとも1つの第2のアドレスと一致することに応じて、前記バッファから削除される、
    請求項10の装置。
  12. 前記少なくとも1つの第1の読み出しアドレス、前記少なくとも1つの第2の読み出しアドレス、前記第1の書き込みアドレス、及び、前記第2の書き込みアドレスは、所定の長さを有するキャッシュラインを示す、
    請求項10の装置。
  13. 前記演算結合器は、
    前記第1のコマンドで示される少なくとも1つの第1のオフセットに基づいて、前記第1のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第1の部分を識別し、
    前記第2のコマンドで示される少なくとも1つの第2のオフセットに基づいて、前記第2のコマンドによって読み出される前記キャッシュラインの少なくとも1つの第2の部分を識別する、ように構成されている、
    請求項12の装置。
  14. 前記演算結合器は、前記少なくとも1つの第1の部分及び前記少なくとも1つの第2の部分を示すマスクを生成するように構成されている、
    請求項13の装置。
  15. 前記バッファは、第3のコマンドによって読み出されるデータの少なくとも1つの第3の読み出しアドレスと、前記第3のコマンドによって書き込まれるデータの第3の書き込みアドレスと、を含む前記第3のコマンドを記憶するように構成されており、
    前記演算結合器は、前記少なくとも1つの第3の読み出しアドレス及び前記第3の書き込みアドレスを、バッファに記憶された第4のコマンドの少なくとも1つの第4の読み出しアドレス及び第4の書き込みアドレスと比較するように構成されており、
    前記演算結合器は、前記少なくとも1つの第3の読み出しアドレスが前記少なくとも1つの第4の読み出しアドレスと一致し、前記第3の書き込みアドレスが前記第4の書き込みアドレスと一致することに応じて、前記第3のコマンド及び前記第4のコマンドを結合して第2の集約コマンドを形成するように構成されている、
    請求項10の装置。
  16. 前記バッファは、前記第2の集約コマンドを記憶するように構成されている、
    請求項15の装置。
  17. 前記第1のコマンド及び前記第2のコマンドは、前記第3のコマンド及び前記第4のコマンドとインタリーブされる、
    請求項16の装置。
  18. 前記演算結合器は、前記第1のコマンドと前記第2のコマンドとの間に依存関係が存在するかどうかを判別するように構成されており、
    前記演算結合器は、前記依存関係が存在するかどうかに基づいて前記第1のコマンド及び前記第2のコマンドを選択的に結合するように構成されている、
    請求項10の装置。
  19. 方法であって、
    データを圧縮するために使用されるコマンドのストリーム内の第1のコマンドの第1の読み出しアドレス及び書き込みアドレスを、前記ストリーム内の第2のコマンドの第2の読み出しアドレス及び書き込みアドレスと比較することと、
    前記第1の読み出しアドレス及び前記第1の書き込みアドレスがキャッシュラインを示し、前記第2の読み出しアドレス及び前記第2の書き込みアドレスが同じキャッシュラインを示すかどうかに基づいて、前記第1のコマンド及び前記第2のコマンドを選択的に結合して集約コマンドを形成することと、を含む、
    方法。
  20. 前記コマンドのストリームは、グラフィックスプロセッシングユニットによって生成されたグラフィックスデータを圧縮するために使用される、
    請求項19の方法。
JP2021530941A 2018-11-29 2019-06-18 キャッシュラインアドレスに基づくストリーム内のコマンドの集約 Pending JP2022510281A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/205,094 2018-11-29
US16/205,094 US11614889B2 (en) 2018-11-29 2018-11-29 Aggregating commands in a stream based on cache line addresses
PCT/US2019/037657 WO2020112169A1 (en) 2018-11-29 2019-06-18 Aggregating commands in a stream based on cache line addresses

Publications (1)

Publication Number Publication Date
JP2022510281A true JP2022510281A (ja) 2022-01-26

Family

ID=70850170

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021530941A Pending JP2022510281A (ja) 2018-11-29 2019-06-18 キャッシュラインアドレスに基づくストリーム内のコマンドの集約

Country Status (6)

Country Link
US (1) US11614889B2 (ja)
EP (1) EP3887932A4 (ja)
JP (1) JP2022510281A (ja)
KR (1) KR20210086708A (ja)
CN (1) CN113227957A (ja)
WO (1) WO2020112169A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102050679B (zh) * 2011-01-14 2013-02-06 福建工程学院 一种秸杆粉基复合肥防结块剂
US20220066681A1 (en) * 2020-08-27 2022-03-03 Micron Technology, Inc. Bubble break register in semiconductor device
CN115878521B (zh) * 2023-01-17 2023-07-21 北京象帝先计算技术有限公司 命令处理系统、电子装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087801A1 (en) * 2000-12-29 2002-07-04 Zohar Bogin Method and system for servicing cache line in response to partial cache line request
US20060090044A1 (en) * 2004-10-21 2006-04-27 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
JP2014063385A (ja) * 2012-09-21 2014-04-10 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP2017045151A (ja) * 2015-08-24 2017-03-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2017125709A1 (en) * 2016-01-20 2017-07-27 Arm Limited Vector atomic memory update instruction

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586294A (en) * 1993-03-26 1996-12-17 Digital Equipment Corporation Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US6249851B1 (en) * 1998-08-25 2001-06-19 Stmicroelectronics, Inc. Computer system having non-blocking cache and pipelined bus interface unit
JP2000132404A (ja) * 1998-10-22 2000-05-12 Matsushita Electric Ind Co Ltd 命令列最適化装置
US6434639B1 (en) * 1998-11-13 2002-08-13 Intel Corporation System for combining requests associated with one or more memory locations that are collectively associated with a single cache line to furnish a single memory operation
GB9825999D0 (en) * 1998-11-28 1999-01-20 British Aerospace A machine for laying up fabric to produce a laminate
US7440469B2 (en) * 2003-10-14 2008-10-21 Broadcom Corporation Descriptor write back delay mechanism to improve performance
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
JPWO2005078579A1 (ja) * 2004-02-12 2007-10-18 松下電器産業株式会社 プログラム変換装置およびプログラム変換方法
US20080235484A1 (en) * 2007-03-22 2008-09-25 Uri Tal Method and System for Host Memory Alignment
US8041755B2 (en) * 2007-06-08 2011-10-18 Apple Inc. Fast static rotator/shifter with non two's complemented decode and fast mask generation
US8112595B1 (en) * 2008-05-01 2012-02-07 Marvell Semiconductor Israel Ltd. Command cancellation channel for read—modify—write operation in a memory
US9183145B2 (en) * 2009-04-27 2015-11-10 Intel Corporation Data caching in a network communications processor architecture
GB2483282B (en) * 2010-09-03 2017-09-13 Advanced Risc Mach Ltd Data compression and decompression using relative and absolute delta values
US8595414B2 (en) * 2010-09-30 2013-11-26 Apple Inc. Selectively combining commands for a system having non-volatile memory
US20120221767A1 (en) 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
CN102377516A (zh) * 2011-06-22 2012-03-14 钜泉光电科技(上海)股份有限公司 数据处理方法及其装置
US8984182B2 (en) * 2011-10-06 2015-03-17 Marvell International Ltd. SCSI I/O command aggregation
US9612972B2 (en) * 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
GB2516864A (en) * 2013-08-02 2015-02-11 Ibm Increased instruction issue rate and latency reduction for out-of-order processing by instruction chaining and collision avoidance
US9092345B2 (en) * 2013-08-08 2015-07-28 Arm Limited Data processing systems
US9348518B2 (en) * 2014-07-02 2016-05-24 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
KR20180045102A (ko) * 2016-10-24 2018-05-04 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 저장 장치의 동작 방법
US10552340B2 (en) * 2017-02-28 2020-02-04 Oracle International Corporation Input/output direct memory access during live memory relocation
US20190034306A1 (en) * 2017-07-31 2019-01-31 Intel Corporation Computer System, Computer System Host, First Storage Device, Second Storage Device, Controllers, Methods, Apparatuses and Computer Programs
US10678478B2 (en) * 2018-08-24 2020-06-09 Apple Inc. Ordering memory requests based on access efficiency

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087801A1 (en) * 2000-12-29 2002-07-04 Zohar Bogin Method and system for servicing cache line in response to partial cache line request
US20060090044A1 (en) * 2004-10-21 2006-04-27 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
JP2014063385A (ja) * 2012-09-21 2014-04-10 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP2017045151A (ja) * 2015-08-24 2017-03-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2017125709A1 (en) * 2016-01-20 2017-07-27 Arm Limited Vector atomic memory update instruction

Also Published As

Publication number Publication date
US11614889B2 (en) 2023-03-28
WO2020112169A1 (en) 2020-06-04
EP3887932A1 (en) 2021-10-06
EP3887932A4 (en) 2022-08-10
US20200174697A1 (en) 2020-06-04
CN113227957A (zh) 2021-08-06
KR20210086708A (ko) 2021-07-08

Similar Documents

Publication Publication Date Title
US8762609B1 (en) System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
JP2022510281A (ja) キャッシュラインアドレスに基づくストリーム内のコマンドの集約
JP5764257B2 (ja) レジスタをアライメントするためのシステム、装置、および方法
TWI556165B (zh) 位元混洗處理器、方法、系統及指令
US7089391B2 (en) Managing a codec engine for memory compression/decompression operations using a data movement engine
TWI483183B (zh) 混洗浮點或整數值的裝置與方法
TWI582690B (zh) 用於滑動視窗資料存取之設備及方法
TWI489383B (zh) 遮蔽排列指令的裝置及方法
TW201814506A (zh) 硬體加速器及用於卸載操作之方法
EP2803012B1 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
KR101776227B1 (ko) 슬라이딩 윈도 인코딩 알고리즘들을 위한 명령어들
TWI501147B (zh) 用於從通用暫存器至向量暫存器的廣播之裝置及方法
JPH10232788A (ja) 信号処理装置及びソフトウェア
JP2009528584A (ja) Fpgaベースのパイプライン処理のためのファームウェアソケットモジュール
WO2014085472A1 (en) Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
TWI567645B (zh) 位元群組交錯處理器、方法、系統及指令
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TW201732734A (zh) 用於加速圖形分析的設備及方法
US20220035749A1 (en) Cryptographic protection of memory attached over interconnects
TW201722088A (zh) 使用硬體及軟體來解壓縮之系統、方法及裝置
TWI637317B (zh) 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置
JP2007034392A (ja) 情報処理装置及びデータ処理方法
TWI590155B (zh) 用以從4維座標計算4維z曲線指標的機器階層指令
TWI544412B (zh) 用於產生抑制的位址軌跡之設備和方法
TWI470541B (zh) 用於滑動視窗資料收集之設備及方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230927

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20231219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240419

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20240501