JP3721129B2 - コンピュータのロードとストア演算を改善する方法および装置 - Google Patents
コンピュータのロードとストア演算を改善する方法および装置 Download PDFInfo
- Publication number
- JP3721129B2 JP3721129B2 JP2001554162A JP2001554162A JP3721129B2 JP 3721129 B2 JP3721129 B2 JP 3721129B2 JP 2001554162 A JP2001554162 A JP 2001554162A JP 2001554162 A JP2001554162 A JP 2001554162A JP 3721129 B2 JP3721129 B2 JP 3721129B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- stream
- data entity
- instruction
- mask
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 239000013598 vector Substances 0.000 claims abstract description 32
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000008672 reprogramming Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Supplying Of Containers To The Packaging Station (AREA)
- Pens And Brushes (AREA)
- Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Description
発明の分野
本発明は、デジタル処理の分野に関し、より詳細には、コンピュータの演算においてデータエンティティをロードし、ストアするための方法および装置に関する。
【0002】
関連出願の相互参照
本発明は、2000年1月18日出願の仮出願第60/176937号に対する優先権を主張し、また、本発明は、1998年12月16日出願の同時係属出願第09/216017号、1999年1月27日出願の同時係属出願第09/240012号、1999年3月22日出願の同時係属出願第09/273810号、1999年5月14日出願の同時係属出願第09/312302号に関し、また一部継続出願である以上に列挙する4件に関し、4件すべてを参照により本件に組み込む。
【0003】
発明の背景
本発明は、ソフトウェアからの命令を実行する際のCPU動作の分野に関する。当技術分野で知られるとおり、多くの種類の命令セットアーキテクチャ(ISA)が存在し、いくつかのアーキテクチャが、多くのコンピュータオペレーションで好まれるようになっている。これらアーキテクチャの1つが、よく知られているMIPS ISAであり、本明細書では、いくつかの例でMIPS ISAを使用する。ただし、本発明は、MIPS ISAには限定されない。
【0004】
命令を実行する際にコンピュータプロセスにおいて必要な動作の1つが、汎用メモリまたはキャッシュメモリと、データが即時にアクセス可能であるCPUのレジスタファイルとの間でデータエンティティを移動することである。複数のデータエンティティをロードまたはストアしてからでなければ、実行を開始または継続できないとき、従来の命令セットアーキテクチャでは、いくつかの命令が必要とされる。データにアクセスする必要があるアプリケーションでは、既知のパターンで関連するデータエンティティをロードまたはストアすることが可能な単一の命令を有することが望ましく、またそのような動作が可能な単一の命令が、多くのコンピュータ演算の速度および効率を相当に向上させることを本発明者は発見した。
【0005】
したがって、明らかに必要とされているのは、メモリの中で既知の位置関係を有するデータエンティティを示すための単一の命令を含み、該単一命令を実行した結果として一連のそのようなデータエンティティをロードまたはストアするための方法および装置である。
【0006】
発明の概要
本発明の好ましい実施形態では、コンピュータ演算において、メモリからデータエンティティを選択し、データエンティティをレジスタファイルに書き込むための方法が提供され、本方法は、(a)第1のアドレスから開始してN個のエンティティを選択して読み取るステップと、(b)メモリのエンティティの順序で第1のレジスタからのレジスタ・ファイルにエンティティを書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ(ISA)に従って実施されるストリームロード(Stream Load)命令の結果起こり、ISAは、MIPSであることが可能である。また、好ましい実施形態では、ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第1のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【0007】
本発明の別の態様では、コンピュータ演算において、レジスタファイルからデータエンティティを選択し、データエンティティをメモリに書き込むための方法が提供され、本方法は、(a)第1のレジスタから開始してN個のエンティティを選択して読み取るステップと、(b)レジスタファイルのエンティティの順序で第1のアドレスからメモリにエンティティを書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ(ISA)に従って実施されるストリームストア命令の結果起こり、ISAは、MIPSである。また、好ましい実施形態では、ストリームストア命令の引数が、データエンティティの読取りを開始するレジスタ、データエンティティの書込みを開始するメモリのアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【0008】
本発明の別の態様では、コンピュータ演算において、メモリからデータエンティティを選択し、データエンティティをレジスタファイルに書き込むための方法が提供され、本方法は、(a)第1のアドレスとの関係で、コピーするエンティティの第1のマップを照会するステップと、(b)マップによって示されるエンティティを選択して読み取るステップと、(c)第1のレジスタとの関係で、メモリからコピーしたエンティティを書き込む位置の第2のマップを照会するステップと、(d)第2のマップに従ってエンティティをレジスタファイルに書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ(ISA)に従って実施されるマスクされたロード(Masked Load)命令の結果起こる。また、好ましい実施形態では、ISAは、MIPSである。また、好ましい実施形態では、マスクされたロード命令の引数が、マスクの位置決めをするための開始メモリアドレス、使用するマスク番号、およびレジスタファイルにデータエンティティの書込みを開始する第1のレジスタを示す。いくつかの実施形態では、第1のおよび第2のマップは、ビットストリングとして実施され、ストリングにおけるビットの位置が、メモリから選択されるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す。
【0009】
本発明のさらに別の態様では、レジスタファイルからデータエンティティを選択し、データエンティティをメモリに書き込むための方法が提供され、本方法は、(a)第1のレジスタとの関係で、読み取るエンティティの第1のマップを照会するステップと、(b)マップによって示されるエンティティを選択して読み取るステップと、(c)第1のアドレスとの関係で、レジスタファイルから読み取ったエンティティを書き込む位置の第2のマップを照会するステップと、(d)第2のマップに従ってエンティティをメモリファイルに書き込むステップとを含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ(ISA)に従って実施されるマスクされたストア(Masked Store)命令の結果起こり、ISAは、MIPSであることが可能である。また、好ましい実施形態では、マスクされたストア命令の引数が、マスクを位置決めするための開始レジスタ、番号を使用するマスク、およびメモリへのデータエンティティの書込みを開始する第1のレジスタを示す。いくつかの実施形態では、第1のおよび第2のマップは、ビットストリングとして実施され、ストリングにおけるビットの位置が、読み取られるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す。
【0010】
本発明のさらに別の実施形態では、コンピュータ演算において使用するためのストリームロード命令が提供され、本命令は、命令の指示と、データエンティティの読取りを開始するメモリの第1のアドレスを示す第1の引数と、メモリから読み取ったデータエンティティの書込みを開始するレジスタファイルの第1のレジスタを示す第2の引数と、読取りおよび書込みを行うデータエンティティの数を示す第3の引数とを含む。
【0011】
別の態様では、ストリーム・ストア命令が提供され、本命令は、命令の指示と、データエンティティの読取りを開始するレジスタファイルの第1のアドレスを示す第1の引数と、レジスタファイルから読み取ったデータエンティティの書込みを開始するメモリの第1のアドレスを示す第2の引数と、読取りおよび書込みを行うデータエンティティの数を示す第3の引数とを含む。
【0012】
さらに別の態様では、マスクされたロード命令が提供され、本命令は、命令の指示と、読み取るべきデータエンティティを示すマスクを配置するメモリの第1のアドレスを示す第1の引数と、メモリから読み取ったデータエンティティの書込みを開始するレジスタファイルの第1のレジスタを示す第2の引数と、読取りおよび書込みを行うデータエンティティを選択するのに使用するマスク番号を示す第3の引数とを含む。
【0013】
さらに別の態様では、マスクされたストア命令が提供され、本命令は、命令の指示と、読み取るべきデータエンティティを示すマスクを配置するレジスタファイルの第1のレジスタを示す第1の引数と、レジスタファイルから読み取ったデータエンティティの書込みを開始するメモリの第1のアドレスを示す第2の引数と、コピーおよび書込みを行うデータエンティティを選択するのに使用するマスク番号を示す第3の引数とを含む。
【0014】
別の態様では、CPUと、メモリと、レジスタファイルとを含む計算システムが提供される。システムは、メモリからレジスタファイルにデータエンティティをロードする際、CPUが、所定の数のデータエンティティを読み取り、所定の第1のレジスタから開始して、メモリと同じ順序でデータエンティティをレジスタファイルのレジスタに書き込むことを特徴とする。システムの好ましい実施形態では、メモリからレジスタファイルにデータエンティティを転送することは、命令セットアーキテクチャ(ISA)に従って実施され、CPUによって実行されるストリームロード命令の結果起こり、ISAは、MIPSであることが可能である。いくつかの実施形態では、ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第1のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【0015】
さらに別の態様では、CPUと、メモリと、レジスタファイルとを含む計算システムが提供される。システムは、レジスタファイルからメモリにデータエンティティをストアする際、CPUが、レジスタファイルから所定の数のデータエンティティを読み取り、所定の第1のアドレスから開始して、レジスタファイルと同じ順序でデータエンティティをメモリのアドレス指定された場所に書き込むことを特徴とする。好ましい実施形態では、レジスタファイルからメモリにデータエンティティをストアすることは、命令セットアーキテクチャ(ISA)に従って実施され、CPUによって実行されるストリームストア命令の結果起こり、ISAは、MIPSであることが可能である。また、好ましい実施形態では、ストリームストア命令の引数が、データエンティティを読み取る第1のレジスタファイル、データエンティティを書き込むメモリの第1のアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【0016】
別の態様では、CPUと、メモリと、レジスタファイルとを含む計算システムが提供される。このシステムは、レジスタファイルからメモリにデータエンティティをストアする際、CPUが、レジスタファイルから所定の数のデータエンティティを読み取り、所定の第1のアドレスから開始して、レジスタファイルと同じ順序でデータエンティティをメモリのアドレス指定された場所に書き込むことを特徴とする。好ましい実施形態では、レジスタファイルからメモリにデータエンティティをストアすることは、命令セットアーキテクチャ(ISA)に従って実施され、CPUによって実行されるストリームストア命令の結果起こり、ISAは、MIPSであることが可能である。いくつかの実施形態では、ストリームストア命令の引数が、データエンティティを読み取る第1のレジスタファイル、データエンティティを書き込むメモリの第1のアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す。
【0017】
別の態様では、CPUと、メモリと、レジスタファイルとを含む計算システムが提供される。メモリからレジスタファイルにデータエンティティをロードする際、CPUは、第1のアドレスに関する所定のパターンに従ってデータエンティティを読み取り、第1のレジスタに関する所定のパターンでデータエンティティをレジスタファイルのレジスタに書き込む。好ましい実施形態では、メモリからレジスタファイルにデータエンティティをロードすることは、命令セットアーキテクチャ(ISA)に従って実施され、CPUによって実行されるマスクされたロード命令の結果起こり、ISAは、MIPSであることが可能である。いくつかの実施形態では、マスクされたロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第1のレジスタ、ならびにデータエンティティの読取りおよび書込みのためのメモリおよびレジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す。さらに、ストアされたマスクは、2ビットストリングベクトルとして実施することが可能であり、第1のアドレスとの関係でどのデータエンティティを読み取るかを第1のベクトルが示し、第1のレジスタとの関係でどのレジスタにデータエンティティを書き込むかを第2のベクトルが示す。
【0018】
さらに別の態様では、CPUと、メモリと、レジスタファイルとを含む計算システムが提供される。システムでは、レジスタファイルからメモリにデータエンティティをストアする際、CPUが、所定のパターンに従ってレジスタファイルからデータエンティティを読み取り、第1のアドレスから開始して、やはり所定のパターンに従ってデータエンティティをメモリのアドレス指定された場所に書き込む。好ましい実施形態では、レジスタファイルからメモリにデータエンティティをストアすることは、命令セットアーキテクチャ(ISA)に従って実施され、CPUによって実行されるマスクされたストア命令の結果起こり、ISAは、MIPSであることが可能である。好ましい実施形態では、マスクされたロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、データエンティティの書込みを開始するレジスタファイルの第1のレジスタ、ならびにデータエンティティの読取りおよび書込みのためのメモリおよびレジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す。いくつかの実施形態では、ストアされたマスクは、2ビットストリングベクトルとして実施され、第1のレジスタとの関係でどのデータエンティティを読み取るかを第1のベクトルが示し、第1のアドレスとの関係でどのレジスタにデータエンティティを書き込むかを第2のベクトルが示す。
【0019】
さらに別の態様では、動的マルチストリーミング(DMS)プロセッサが提供され、本プロセッサは、第1の複数k個の個別ストリームと、第2の複数m個のマスクまたはマスクセットとを含む。第2の複数m個の個別マスクまたはマスクセットは、マスクされたロードおよび/またはマスクされたストア演算を行うため、第1の複数k個のストリームの個々のストリームを排他的に使用するように専用に供される。好ましい実施形態では、個々のマスクまたはマスクセットは、個々のマスクまたはマスクセットを専用とするストリームによってのみ変更可能である。
【0020】
さらに別の態様では、動的マルチストリーミング(DMS)プロセッサシステムが提供され、本システムは、複数k個の個別ストリームと、マスクされたロード動作およびマスクされたストア演算を行う際に使用するための1組のマスクまたはマスクセットを含み、単一の命令を実行した結果として、かつマスク、キャッシュメモリ、およびシステムメモリに従って複数のデータエンティティがロードされるか、またはストアされる。システムは、マスクされたロード動作またはマスクされたストア演算を行う際、システムメモリと1つまたは複数のレジスタファイルの間で直接にデータエンティティを転送することを特徴とする。
【0021】
以下、詳細な実施を可能にすることにおいて教示する本発明の実施形態では、単一の命令に従って複数のデータエンティティの読取りおよび書込みを行うことができ、実行時に多くのサイクルを節約し、連続的にまたは事前にストアされた位置マスクに従って読取りおよび書込みを行うため、データエンティティを選択できる、コンピュータシステムにおけるロードおよびストア演算のための方法および装置が、初めて提供される。
【0022】
好ましい実施形態の説明
以上に概略で説明したように、コンピュータ演算の技術分野において、いくつかの異なる命令セットアーキテクチャ(ISA)が存在する。命令セットアーキテクチャは、一般的に言って、CPUが命令として解釈する2進ワードにおけるビットおよびビットのセットの配列である。よく知られているMIPS ISAは、好ましい実施形態で本発明を実施する際に本発明者によって使用されたアーキテクチャであるが、本発明は、もちろん、MIPS ISAに限定されない。この理由で、MIPSアーキテクチャで知られる命令語の部分の特定の使用は、本明細書では詳細に説明しない。MIPSアーキテクチャが、新しい命令を実施するのに使用できる未使用の演算コードを提供することは、よく知られており、本発明者は、MIPSの好ましい実施形態では、この特徴を利用している。
【0023】
本発明は、おそらく、あらゆるISAに適用されるので、本発明者は、以下のように新規で明白でない機能を導入する命令を特定して説明する。
【0024】
Instruction A,B,C
ただし、A、B、Cは、命令を実行する際に行われる機能に関するパラメータを定義する引数である。
【0025】
図1Aは、CPUがデータを取り出すことができるキャッシュメモリまたはシステムメモリなどの任意のメモリであることが可能なメモリ11、およびレジスタファイル15を示す概略図である。メモリ11は、好ましい実施形態では32ビットのワード幅を有し、またレジスタファイル15も同様に、レジスタ幅を有する。ワード幅およびレジスタ幅は、好ましくは同じであるが、本発明の別の実施形態では異なる可能性がある。
【0026】
図1のメモリおよびレジスタファイルの図の下に、本発明の実施形態によるストリームロード命令のための論理構造が存在する。命令構造の中には、命令演算コード(ストリームロードのための)、および第1の引数@、第2の引数「第1のレジスタ」、および第3の引数「N」の3つの引数が存在する。図を参照すると、CPUは、この命令を実行するとき、命令演算コードから、演算の順序がどのようであるかを知り、メモリ11からワードを取り、ワードをレジスタファイル15に書き込む。引数は、パラメータを提供する。
【0027】
示した例では、CPUは、図1Aで斜線部分のワード13として示すメモリ11のアドレス@から開始して、N個の連続するワードを読み取り、これらN個のワードを同じ順序で、レジスタファイルでワード17のブロックを提供するレジスタの「第1のレジスタ」から開始してレジスタファイル15に書き込む。
【0028】
本発明の代替の実施形態では、メモリのワード幅が、レジスタファイルのレジスタの幅と異なる可能性があるため、メモリから選択されたワードは、複数のレジスタに影響を与える、または1つのレジスタを満たさない可能性がある。メモリワードが、例えば、レジスタ幅の2倍である場合、1つのメモリワードは、2つの連続するレジスタを満たすことになり、ある選択された数のメモリワードは、その2倍の数のレジスタを満たすことになる。他方、メモリワードが、レジスタ幅の1/2である場合、単一のレジスタを満たすのに2つのメモリワードが必要とされることになる。
【0029】
図1Bは、図1Aと同様の概略図であるが、対の他方のストリームストア命令を描いており、CPUが、命令を実行して、レジスタの「第1のレジスタ」から開始してレジスタファイル15からN個の連続するワード(ワード17)を読み取り、これらN個のワードを同じ順序で、引数で定義されるアドレス@から開始してワード13を提供するメモリ11に書き込む。
【0030】
本明細書で定義する新しい命令は、いくつかの実例で重要な用例を有し、その1つが、ネットワークのパケット経路指定におけるパケットの処理にマルチストリーミングプロセッサを適用することにある。ただし、これらの命令には、広い範囲の適用において実質的にあらゆる種類のプロセッサを使用する、他の多数の使用法がある。
【0031】
パケット処理では、多数のパケットが、同一の構造を有し、パケットがルータに運び込まれ、メモリ11などのメモリにストアされると、ある規則に従って処理されるよう、レジスタファイルにあるヘッダフィールドをロードする必要がある。構造は分かっているので、ヘッダを含むバイトをメモリに連続的に記憶することができ、処理のためにパケットに関するすべての必要なデータをレジスタファイルにロードし、処理の後にレジスタをストアするように新しいストリームロード命令および新しいストリームストア命令の引数を構造化することができる。もちろん、ストアするのは、ロードで使用するレジスタと同じレジスタであることも、異なるレジスタであることも可能である。同様に、多数の実例でコンピュータの演算を向上させる、ストリームロードおよびストリームストアに関する他の多数の可能な適用例が存在する。
【0032】
本発明の代替の実施形態では、メモリでも、レジスタファイルでもワードが連続するという制限のない、複数のワードをロードし、ストアする新しいコマンドを構造化することにより、本発明の機能性を相当に強化することができると本発明者は判断した。新しいコマンドを、それぞれ、マスクされたロードおよびマスクされたストアと命名する。
【0033】
図2Aは、マスクされたロードの例を示すメモリ11およびレジスタファイル15の概略図である。本例におけるメモリ11は、1バイト幅であり、メモリ11で0から7まで任意に番号を付けた8個のメモリワードを示している。各ワードは、当技術分野で知られるとおり、メモリアドレスを有する。本例におけるレジスタファイル15は、4バイト幅であり、左側で0から7まで任意に番号を付けたレジスタに構成して、示されている。図の下には、3つの引数を有するマスクされたロード命令の構成例がある。第1の引数は、メモリ11のアドレスであり、第2の引数は、レジスタファイルの第1のレジスタであり、また第3の引数は、この場合、マスク番号である。
【0034】
図2Bは、2つの列を有するマスク例を示し、左側の列は、示すとおり、メモリバイト番号を表し、右側の列は、相対レジスタ番号を表している。これは、図2Aのマスクされたロード例に関するマスクである。メモリバイト番号0、3、5、7を左側の列にリストし、相対レジスタ番号0、0、2、3を右側の列にリストしていることに留意されたい。マスクは、どのメモリバイトを読み取り、それらのバイトをレジスタファイルのどこに書き込むかをマスクされたロード命令に知らせる。
【0035】
図2Aを再び参照すると、相対メモリバイト0、3、5、7に斜線が入っている(それぞれ別の仕方で)ことに留意されたい。マスクされたロード命令のアドレス(@)引数は、メモリのどこにマスクを配置するかをCPUに知らせ、マスクは、開始アドレスとの関係で読み取るバイトを選択する。レジスタファイルは、4バイト幅であるので、メモリから4バイトをレジスタファイルの単一のレジスタに並べて書き込むことができる。本例では、デフォルトでは、選択されたバイトは、各レジスタの最下位バイトから開始してレジスタファイルに書き込まれ、最下位バイトは、デフォルトでは、本例の右端のバイトである。
【0036】
マスクは、相対メモリバイト番号0が、相対レジスタ番号0に行くことを示している。これは、命令の第2の引数によって示される第1のレジスタである。したがって、メモリバイト0は、レジスタファイルの相対レジスタ0の最下位バイトに書き込まれるものとして示している。次にマスクは、相対メモリバイト3もレジスタファイルの相対レジスタ0に書き込まれることを示している。これは、相対レジスタ0に行く第2のバイトであり、レジスタファイルの示されたレジスタの最下位から2番目のバイトに書き込まれる。メモリバイト5は、相対レジスタ2に書き込まれ、レジスタ2に行く唯一のバイトであるため、最下位の位置に行く。相対メモリバイト7は、マスクに従って相対レジスタ3に行き、このことも図2Aで示している。斜交平行線は、メモリからレジスタファイルへのデータの移動を共通に示す。
【0037】
本例では、デフォルトで、次のエンティティが別のレジスタに書き込まれるようになるまで、メモリから選択されたデータエンティティは、最下位バイトから開始してレジスタに書き込まれる。これは、レジスタにおける選択されたバイトの配置の一例に過ぎない。その他の任意の配置も、マスクによって示されることが可能であり、示した簡単なマスクは、レジスタにおけるバイトの配置を示すより多くの列を有することも可能であった。多くのマスク実施およびデフォルトが、本発明の趣旨および範囲で可能である。
【0038】
ストリームロードおよびストリームストア演算のケースで前述したのと同様に、マスクされたロード演算も、マッチするマスクされたストア命令を有する。ストアの場合、命令アーキテクチャにおいて、選択されたビットが、ロード演算ではなくストアを示し、引数は、マスクされたロードと同じ構造を有する。
【0039】
当分野の技術者には、本発明の様々な実施形態で、マスクは、任意の数であることが可能であり、ロードされるバイトの数および位置を定義する各マスクの長さも、異なる実施形態で様々でありうることが明白であろう。本発明の一実施形態では、先に簡単に説明した、経路指定装置においてデータパケットを処理する状況では有用である。この特定のケースでは、経路指定のためにデータパケットを処理する際、マスクを実施して、例えば、パケットのあるヘッダなどのメモリからのデータエンティティのあるパターンを捕捉することができる。
【0040】
また、本発明のいくつかの実施形態では、マスクされたロードおよびマスクされたストア命令が、動的マルチストリーミングプロセッサを使用するパケット処理のために使用されるスレッド(ソフトウェア)で使用される。これらのプロセッサは、複数の物理的ストリームを有し、各ストリームは、別個のスレッドをサポートすることができ、また各ストリームは、通常、専用のレジスタファイルを有する。この場合、マスクセットを記憶して、個々のストリームに専用とする、あるいは2つ以上のまたはすべてのストリームによって共用することが可能である。そのような動的マルチストリーミング(DMS)プロセッサを前述の「関連出願の相互参照」でリストした優先権出願で詳細に説明している。
【0041】
好ましい実施形態では、マスクは、プログラミング可能であり、したがって、必要に応じてマスクセットを交換または変更することができる。マスクは、様々な方法で記憶することができる。マスクは、例えば、システムメモリに記憶して、システムからアクセス可能にすること、またはプロセッサ上にある、またはない隠れたレジスタの中に、またはプログラマブルROM装置の中に記憶してアクセス可能にすることが可能である。いくつかの実施形態では、マスクをリンクして、より大きいマスクを作成し、再プログラミングすることなしにマスクを変更できるようにする機構が提供される。本発明の一実施形態では、32個のマスクが提供され、最大で8個のマスクをリンクすることができる。いくつかのケースでは、命令が、マスキングに必要なビットを受け容れるのに十分な幅を持つ場合、マスクを命令自体の中に記憶することができる。命令の幅が、例えば、64ビットである場合、32ビットだけが命令自体に必要であり、その他の32ビットをマスクベクトルにすることができる。
【0042】
プログラミングの可能性について、マスクは、様々な方法でプログラミング、そして/または変更することができる。プログラミングは、人間の介入を必要とするという意味で、手作業で、またはマスクを使用する処理システムの動的処置によって変更可能である。処理システムの動的処置による場合、DMSプロセッサへの適用において、あるソフトウェア負担が存在する可能性がある、というのは、1つのストリームが、マスクまたは1組のマスクをロードまたはストア演算で使用している場合、他のストリームが、そのマスクまたはマスクセットを更新しないことを保証しなければならないからである。したがって、DMSプロセッサのケースでは、マスクをストリームの専用にすることが好ましい。k個のストリームを有するようなプロセッサシステムでは、k個のストリームのそれぞれに専用のマスクまたは一組のマスクが存在して、特定のストリームは、自らのマスクまたは自らのマスクセットだけを使用でき、更新できる。
【0043】
以上の説明では、マスクされたロードまたはマスクされたストア演算に関して、メモリ源およびデータエンティティの宛先の特別の区別は行わなかった。ただし、当技術分野では、最新技術のプロセッサが、システムメモリだけを使用して直接に動作するのではなく、通常、キャッシュメモリを使用して動作することがよく知られている。キャッシュメモリおよびキャッシュ動作は、当技術分野ではよく知られており、本明細書で詳細に説明する必要はない。
【0044】
本発明により、DMSプロセッサとともに使用されるマスクされたロードおよびマスクされたストア演算の一実施形態では、マスクされたロード/ストアは、メモリアクセスがキャッシュ可能な空間に属する場合でさえ、キャッシュをバイパスする(すなわち、要求されたデータがキャッシュに存在するかどうかを問い合わせることなしに、アクセスが、直接メモリに行く)選択をすることが可能である。この場合、データの整合性を保証するのはソフトウェアである。データキャッシュをバイパスする場合、データキャッシュに対する読取り/書込みポートは、他のストリームによる通常のロード/ストアで行われる他のアクセスのために解放される。キャッシュへのポートはコストがかかる。
【0045】
本発明の好ましい実施形態では、マスク(または、いくつかのケースでは、マスクの部分)が、2つのベクトルとして実施され、各ベクトルは、32ビットのワードとして書き込まれ、記憶される。図3Aは、ベクトル−マスクを示す図であり、図3Bは、図3Aのベクトル−マスクに従ってバイトがメモリ17からファイル19に転送される、メモリ17およびレジスタファイル(コンテキストレジスタ)19を示す図である。
【0046】
次に図3Aを参照すると、各サブマスクに、選択ベクトルおよびレジスタベクトルの2つのベクトルが存在する。図3Aに示すようにサブマスクは、完全なマスクであることが可能であり、完全なマスクは、最大で8個の(この実施形態では)サブマスクから構成される。これを以下により詳細に説明する。
【0047】
次に図3Aのサブマスク0を参照すると、選択ベクトルのビット0、1、7、12、13に1が存在する。1は、選択ベクトルのどの位置でも、メモリからレジスタファイルに転送されるべき相対ビットを選択するためのものである。その他のビットは、ゼロである。もちろん、その逆を真にすることも可能である。
【0048】
次に図3Bを参照すると、メモリ17が、32バイト幅として構成されている。本例では、用途は、パケット処理であり、操作されるデータエンティティは、パケットのためのヘッダフィールドからのバイトである。前述のとおり、データエンティティを選択するための開始位置が、第1の引数@(アドレスに関しては、図2Aを参照)としてマスクされたロード命令において与えられている。第3の引数は、マスタ番号を提供し、マスク番号は、このケースでは、図3Aの2ベクトルサブマスクである。メモリ17に記憶され、図3Aのサブマスク0によって転送されるべきものとして示されるパケットヘッダに関係するバイトを、それぞれ異なる斜線を入れて、斜線部分として図3Bのメモリ17に示している。32バイトのパケットヘッダからの任意の組合せのバイトまたはすべてのバイトをレジスタファイルに転送するために選択することができる。
【0049】
サブマスク0のレジスタベクトルは、選択されたバイトを書き込むレジスタファイルにおける相対位置を示す。この特定の例では、レジスタベクトルの1つの位置だけに1が存在する、つまり位置12だけに1が存在することに留意されたい。レジスタベクトルの1の意義は、レジスタファイルにバイトを記憶すべきレジスタにインデックスを付けることである。他の例では、レジスタベクトルに複数の1が存在することが可能である。
【0050】
次に図3Bを参照すると、第1のレジスタ(FR)から開始してレジスタファイルにバイトが記憶される。記憶のための第1のレジスタ(ローディング開始レジスタ)は、マスクされたロード命令の第2の引数である。他の適用および他の実施では、様々な理由で様々なデフォルトが存在することが可能である。本例におけるマスクされたロード命令は、メモリ17から第1のレジスタでレジスタファイル19に選択されたバイトのローディングを開始し、デフォルトは、最下位の位置から隣接する位置に順に、レジスタベクトルによってレジスタにインデックスが付けられるまでロードすることである。別の実施形態では、別の順序を使用することも可能である。したがって、バイト0、1、7が右(最下位)から第1のレジスタにロードされる。図3Aのレジスタベクトルの位置12における1が、レジスタにインデックスを付けており、したがって、バイト12および13が、レジスタFR+1の最初の2つの位置にロードされる。メモリ17から選択されているバイトは他に存在しないので、動作は、これで終了である。
【0051】
本明細書で前述し、例示するとおり、サブマスク0は、完全なマスクである。ただし、好ましい実施形態では、最大で8個のサブマスクを組み合せてマスクを構成することができる。本実施形態における各サブマスクは、図3Bに示すとおり、マスク終了ビットを有する。マスク終了ビットの1は、サブマスクが、特定の命令にマスクを形成するように組み合わされる最後のサブマスクであることを示す。
【0052】
以上に説明したベクトルマスクの例は、一例に過ぎないことを強調しておく。本発明の趣旨および範囲の中で他の多くのマスキングスキームが可能である。例えば、第1のアドレスで開始して選択されるように示される第1のデータエンティティが、第1のレジスタにコピーされ、選択されるデータエンティティ間の1つまたは複数のゼロが、レジスタファイルに後続のエンティティが配置されるレジスタのインデックスを示すように、選択および配置が、単一のベクトルによって示されることが可能である。多くのこのようなスキームが可能であり、比較的少数を本明細書で例により示している。
【0053】
当分野の技術者には、ストリームロード命令およびストリームストア命令のケースで前述したのと同様に、マスクされたストアも、詳細に説明したマスクされたロード命令とほぼ同じように実施できることが明白であろう。
【0054】
本例のストア演算では、データエンティティが書き込まれないレジスタファイルのバイトが存在することに留意されたい。これらのバイトを残すか、または消去するかの選択が存在する。好ましい実施形態では、未使用のバイトは消去される。
【0055】
当分野の技術者には、本発明の趣旨および範囲を逸脱することなく、前述した本発明の実施形態において行うのが可能な多くの変形が存在することが明白であろう。例えば、マスクを構造化し、実施することができる多種多様なやり方が存在し、また、マスクを記憶し、プログラミングし、交換し、変更することができる多種多様なやり方が存在する。同様に、使用する命令セットアーキテクチャに応じて、マスクされたロードおよびマスクストア命令を定義し、実施することができる様々なやり方が存在する。同様に、本明細書で例として使用したパケット処理の適用例を超えて、このような独自の命令に多数の適用例が存在し、新しい命令は、本発明者が特に関心を持つ動的マルチストリーミング(DMS)プロセッサを含め、多くの種類のプロセッサで役立つ可能性がある。
【0056】
DMSプロセッサについては、本出願は、DMSプロセッサの態様、および機能を教示する4つのケースに関連し、該4件すべてを前述の「相互参照」のセクションでリストしており、該4件すべてが、参照により本件に組み込まれる。以上に教示するようにストリームおよびマスクされたロード/ストア命令の使用は、DSMプロセッサにおいて特に興味を引くものである、というのは、機能ユニットの中でマスクされたロード/ストア命令が実行されている間、スレッドで、新しい命令を実行するストリームは、非活動状態に留まることができるからである。したがって、他のストリームが、プロセッサの残りのリソースを使用することができる。ただし、新しい命令を実行するストリームは、マスクされたロード/ストアが完了するまで、アイドル状態にある必要はない。命令が、実行中のマスクされたロード/ストア命令によって影響されるレジスタの値に依存しない限り、ストリームは続行して、さらなる命令を実行することができる。言い換えれば、ストリームは、順序によらず、命令を実行することが可能である。
【0057】
以上に加えて、本発明の様々な実施形態において、細分性の幅広い選択が存在する。使用した例では、バイトを選択したが、他の実施形態では、細分性は、メモリのビットであっても、ワードであっても、またはブロックであってもよい。ワードを使用するケースでは、レジスタがワード幅と同じ幅である場合、レジスタベクトルは必要ない。さらに、ストリームロードおよびストア演算は、単に、マスクされたロードおよびストア演算の特定のケースであることに留意されたい。
【0058】
本発明の用途が広く、また範囲も広いが、本発明は、頭記の特許請求の範囲によってのみ制限されるべきである。
【図面の簡単な説明】
【図1A】 本発明の実施形態によるストリームロード演算を示すメモリおよびレジスタファイルの概略図である。
【図1B】 本発明の実施形態によるストリームストア演算を示すメモリおよびレジスタファイルの概略図である。
【図2A】 本発明の実施形態によるマスクされたロード演算を示すメモリおよびレジスタファイルの概略図である。
【図2B】 本発明の実施形態による例としてのマスクを示す図である。
【図2C】 本発明の実施形態による1組のマスクを示す図である。
【図3A】 本発明の実施形態によりベクトルとして実施されたサブマスクを含むマスクを示す図である。
【図3B】 本発明の実施形態によるマスクされた演算におけるメモリおよびレジスタファイルを示す図である。
Claims (55)
- コンピュータの演算において、メモリからデータエンティティを選択して前記データエンティティをレジスタファイルに書き込むための方法であって、
前記データエンティティを選択するための前記メモリ内のアドレスを指定し、
前記データエンティティを書き込むための前記レジスタファイル内のレジスタを指定し、
前記メモリから選択され前記レジスタファイルに書き込まれる前記データエンティティ中のものを選択するのに使用するマスクを提供し、
前記マスクに従って前記アドレスから開始する前記データエンティティを選択し、
前記マスクに従って前記データエンティティを前記レジスタファイルに書き込み、
前記メモリ内の前記アドレスと前記レジスタファイル内の前記レジスタを指定する単一の命令が、前記マスクに従って、選択的に、前記メモリから前記データエンティティを読み取り、前記データエンティティを前記レジスタファイル内の複数のレジスタに書き込む、ことを実行することを含む方法。 - 前記実行することが、命令セットアーキテクチャ(ISA)に従って実施されたストリームロード(Stream Load)命令の実行の結果起こる請求項1に記載の方法。
- 前記ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第1のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項2に記載の方法。
- 前記ストリームロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(Dynamic Multi−streaming)(DMS)プロセッサで行われ、前記ストリームロード命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項2に記載の方法。
- 前記ストリームロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記ストリームロード命令が実行される間、前記ストリームロード命令によって影響されるメモリの値に依存しない命令を実行する請求項2に記載の方法。
- コンピュータの演算において、レジスタファイルからデータエンティティを選択して前記データエンティティをメモリに書き込むための方法であって、
前記データエンティティを選択するための前記レジスタファイル内のレジスタを指定し、
前記データエンティティを書き込むための前記メモリ内のアドレスを指定し、
前記レジスタファイルから選択され前記メモリに書き込まれる前記データエンティティ中のものを選択するのに使用するマスクを提供し、
前記マスクに従って前記レジスタファイル内の前記レジスタから開始する前記データエンティティを選択し、
前記マスクに従って前記データエンティティを前記アドレスで前記メモリに書き込み、
前記メモリ内の前記アドレスと前記レジスタファイル内の前記レジスタを指定する単一の命令が、前記マスクに従って、選択的に、前記レジスタファイルから前記データエンティティを読み取り、前記データエンティティを前記メモリ内の前記アドレスに書き込む、ことを実行することを含む方法。 - 前記実行することが、命令セットアーキテクチャ(ISA)に従って実施されたストリームストア(Stream Store)命令の結果起こる請求項6に記載の方法。
- 前記ストリームストア命令の引数が、データエンティティの読取りを開始するレジスタ、前記データエンティティの書込みを開始する前記メモリのアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項7に記載の方法。
- 前記ストリームストアの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記ストリームストア命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項7に記載の方法。
- 前記ストリームストアの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記ストリームストア命令が実行される間、前記ストリームストア命令によって影響されるメモリの値に依存しない命令を実行する請求項7に記載の方法。
- コンピュータの演算において、メモリからデータエンティティを選択して前記データエンティティをレジスタファイルに書き込むための方法であって、
(a)第1のアドレスとの関係でコピーするエンティティの第1のマップを照会するステップと、
(b)前記マップによって示されたエンティティを選択して読み取るステップと、
(c)第1のレジスタとの関係で、前記メモリからコピーした前記エンティティを書き込む位置の第2のマップを照会するステップと、
(d)前記第2のマップに従って前記エンティティを前記レジスタファイルに書き込むステップとを含む方法。 - 前記ステップが、命令セットアーキテクチャ(ISA)に従って実施されたマスクされたロード(Masked Load)命令の結果起こる請求項11に記載の方法。
- 前記マスクされたロード命令の引数が、マスクを配置するための開始メモリアドレス、使用するマスク番号、ならびに前記レジスタファイルにデータエンティティの書込みを開始する第1のレジスタを示す請求項12に記載の方法。
- 前記第1のおよび前記第2のマップがビットストリングとして実施され、前記ストリングのビット位置が、メモリから選択されるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す請求項11に記載の方法。
- ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項14に記載の方法。
- 前記マスクされたロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記マスクされたロード命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項12に記載の方法。
- 前記マスクされたロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記マスクされたロード命令が実行される間、前記マスクされたロード命令によって影響されるメモリの値に依存しない命令を実行する請求項12に記載の方法。
- コンピュータの演算において、レジスタファイルからデータエンティティを選択して前記データエンティティをメモリに書き込むための方法であって、
(a)第1のレジスタとの関係で読み取るエンティティの第1のマップを照会するステップと、
(b)前記マップによって示されたエンティティを選択して読み取るステップと、
(c)第1のアドレスとの関係で、前記レジスタファイルから読み取った前記エンティティを書き込む位置の第2のマップを照会するステップと、
(d)前記第2のマップに従って前記エンティティを前記メモリに書き込むステップとを含む方法。 - 前記ステップが、命令セットアーキテクチャ(ISA)に従って実施されたマスクされたストア(Masked Store)命令の結果起こる請求項18に記載の方法。
- 前記マスクされたストア命令の引数が、マスクを配置するための前記第1レジスタ、複数のマスクからの使用するマスク番号、ならびに前記メモリにデータエンティティの書込みを開始する前記第1のアドレスを示す請求項19に記載の方法。
- 前記第1のおよび前記第2のマップがビットストリングとして実施され、前記ストリングのビットの位置が、読み取られるべきデータエンティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す請求項18に記載の方法。
- ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項21に記載の方法。
- 前記マスクされたストアの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記マスクされたストア命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項19に記載の方法。
- 前記マスクされたストアの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記マスクされたストア命令が実行される間、前記マスクされたストア命令によって影響されるメモリの値に依存しない命令を実行する請求項19に記載の方法。
- マスクされたストリームロード命令を実行するコンピュータシステムであって、前記マスクされたストリームロード命令は、
前記命令の指示と、
データエンティティの読取りを開始するメモリの第1のアドレスを示す第1の引数と、
前記メモリから読み取った前記データエンティティの書込みを開始するレジスタファイルの第1のレジスタを示す第2の引数と、
前記データエンティティの中のどれが前記メモリから読み取られるかを定義する、マスクを示す第3の引数とを含む、コンピュータシステム。 - ストリームストア命令を実行するコンピュータシステムであって、前記ストリームストア命令は、
前記命令の指示と、
データエンティティの読取りを開始するレジスタファイルの第1のアドレスを示す第1の引数と、
前記レジスタファイルから読み取った前記データエンティティの書込みを開始するメモリの第1のアドレスを示す第2の引数と、
前記データエンティティの中のどれが前記レジスタファイルから読み取られるかを定義する、マスクを示す第3の引数とを含む、コンピュータシステム。 - マスクされたロード命令を実行するコンピュータシステムであって、前記マスクされたロード命令は、
前記命令の指示と、
読み取るべきデータエンティティを示すマスクを配置するメモリの第1のアドレスを示す第1の引数と、
前記メモリから読み取った前記データエンティティの書込みを開始するレジスタファイルの第1のレジスタを示す第2の引数と、
読取りおよび書込みを行うべき前記データエンティティを選択するのに使用するマスク番号を示す第3の引数とを含むコンピュータシステム。 - マスクされたストア命令を実行するコンピュータシステムであって、前記マスクされたストア命令は、
前記命令の指示と、
読み取るべきデータエンティティを示すマスクを配置するレジスタファイルの第1のレジスタを示す第1の引数と、
前記レジスタファイルから読み取った前記データエンティティの書込みを開始するメモリの第1のアドレスを示す第2の引数と、
コピーおよび書込みを行うべき前記データエンティティを選択するのに使用するマスク番号を示す第3の引数とを含むコンピュータシステム。 - CPUと、
前記CPUに接続されたメモリと、
レジスタファイルとを含む計算システムであって、
前記CPUが、前記メモリから前記レジスタファイルにデータエンティティをロードする際、ストリームロード命令に規定されたある数のデータエンティティを読み取り、前記ストリームロード命令に規定されたレジスタから開始する、前記ストリームロード命令に規定されたマスク内で指定された前記レジスタファイルのレジスタに前記データエンティティを書き込むことを特徴とするシステム。 - メモリから前記レジスタファイルにデータエンティティを転送することが、命令セットアーキテクチャ(ISA)に従って実施され、前記CPUによって実行されるストリームロード命令の結果起こる請求項29に記載のシステム。
- 前記ストリームロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第1のレジスタ、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項30に記載のシステム。
- 前記ストリームロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記ストリームロード命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項30に記載のシステム。
- 前記ストリームロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記ストリームロード命令が実行される間、前記ストリームロード命令によって影響されるメモリの値に依存しない命令を実行する請求項30に記載のシステム。
- CPUと、
前記CPUに接続されたメモリと、
レジスタファイルとを含む計算システムであって、
前記CPUが、前記レジスタファイルから前記メモリにデータエンティティをストアする際、ストリームストア命令に規定されたある数のデータエンティティを前記レジスタファイルから読み取り、前記ストリームストア命令に規定されたマスク内で指定された前記メモリのアドレス指定された場所に前記データエンティティを書き込むことを特徴とするシステム。 - 前記レジスタファイルからメモリにデータエンティティをストアすることが、命令セットアーキテクチャ(ISA)に従って実施され、前記CPUによって実行されるストリームストア命令の結果起こる請求項34に記載のシステム。
- 前記ストリームストア命令の引数が、データエンティティの読取りを開始する第1のレジスタファイル、前記データエンティティを書き込むメモリの第1のアドレス、ならびに読取りおよび書込みを行うデータエンティティの数を示す数値を示す請求項35に記載のシステム。
- 前記ストリームストアの実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記ストリームストア命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項35に記載のシステム。
- 前記ストリームストアの実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記ストリームストア命令が実行される間、前記ストリームストア命令によって影響されるメモリの値に依存しない命令を実行する請求項35に記載のシステム。
- CPUと、
メモリと、
レジスタファイルとを含む計算システムであって、
前記CPUが、前記メモリから前記レジスタファイルにデータエンティティをロードする際、第1のアドレスで前記メモリに入り、マスクに従ってデータエンティティを読み取り、前記マスクに従って前記レジスタファイルのレジスタに前記データエンティティを書き込むことを特徴とするシステム。 - メモリから前記レジスタファイルにデータエンティティをロードすることが、命令セットアーキテクチャ(ISA)に従って実施され、前記CPUによって実行されるマスクされたロード命令の結果起こる請求項39に記載のシステム。
- 前記マスクされたロード命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第1のレジスタ、ならびにデータエンティティの読取りおよび書込みのための前記メモリおよび前記レジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す請求項40に記載のシステム。
- 前記ストアされたマスクが、2ビットストリングベクトルとして実施され、前記第1のアドレスとの関係でどのデータエンティティを読み取るかを第1のベクトルが示し、前記第1のレジスタとの関係でどのレジスタに前記データエンティティを書き込むかを第2のベクトルが示す請求項41に記載のシステム。
- ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項42に記載のシステム。
- 前記マスクされたロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記マスクされたロード命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項40に記載のシステム。
- 前記マスクされたロードの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記マスクされたロード命令が実行される間、前記マスクされたロード命令によって影響されるメモリの値に依存しない命令を実行する請求項40に記載のシステム。
- CPUと、
メモリと、
レジスタファイルとを含む計算システムであって、
前記CPUが、前記レジスタファイルから前記メモリにデータエンティティをストアする際、第1のレジスタで前記レジスタファイルに入り、マスクに従って前記レジスタファイルからデータエンティティを読み取り、第1のアドレスから開始して、やはりマスクに従って前記データエンティティをメモリのアドレス指定された場所に書き込むことを特徴とするシステム。 - 前記レジスタファイルからメモリにデータエンティティをストアすることが、命令セットアーキテクチャ(ISA)に従って実施され、前記CPUによって実行されるマスクされたストア命令の結果起こる請求項46に記載のシステム。
- 前記マスクされたストア命令の引数が、データエンティティの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する前記レジスタファイルの第1のレジスタ、ならびに前記データエンティティの読取りおよび書込みのための前記メモリおよび前記レジスタファイルの相対位置を示すのに使用するストアされたマスクを示すマスク番号を示す請求項47に記載のシステム。
- 前記ストアされたマスクが、2ビットストリングベクトルとして実施され、前記第1のレジスタとの関係でどのデータエンティティを読み取るかを第1のベクトルが示し、前記第1のアドレスとの関係でどのレジスタに前記データエンティティを書き込むかを第2のベクトルが示す請求項48に記載のシステム。
- ビットストリングマップが、サブマスクとして表現され、サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能である請求項49に記載のシステム。
- 前記マスクされたストアの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記マスクされたストア命令が実行されている間、前記第1のストリームが非活動状態に留まる請求項47に記載のシステム。
- 前記マスクされたストアの前記実行が、第1のスレッドを実行する第1のストリームによって動的マルチストリーミング(DMS)プロセッサで行われ、前記第1のストリームが、前記マスクされたストア命令が実行される間、前記マスクされたストア命令によって影響されるメモリの値に依存しない命令を実行する請求項47に記載のシステム。
- 第1の複数k個の個別ストリームと、
第2の複数m個のマスクまたはマスクセットとを含む動的マルチストリーミングプロセッサであって、
前記第2の複数m個の個別マスクまたはマスクセットが、マスクされたロード動作および/またはマスクされたストア演算を行うため、前記第1の複数k個のストリームの個々のストリームを排他的に使用するように専用に供されるプロセッサ。 - 個々のマスクまたはマスクセットが、前記個々のマスクまたは前記個々のマスクセットを専用とするストリームによってのみ変更可能である請求項53に記載のDMSプロセッサ。
- 複数k個の個別ストリームと、
マスクされたロードおよびマスクされたストア演算を行う際に使用するための1組のマスクまたはマスクセットであって、単一の命令を実行した結果として、かつ前記マスクに従って複数のデータエンティティをロードまたはストアするマスクまたはマスクセットと、
キャッシュメモリと、
システムメモリとを含む動的マルチストリーミング(DMS)プロセッサシステムであって、
マスクされたロードまたはマスクされたストア演算を行う際、前記システムが前記システムメモリと1つまたは複数のレジスタファイルの間で直接にデータエンティティを転送することを特徴とするシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17693700P | 2000-01-18 | 2000-01-18 | |
US60/176,937 | 2000-01-18 | ||
US62980500A | 2000-07-31 | 2000-07-31 | |
US09/629,805 | 2000-07-31 | ||
PCT/US2001/000413 WO2001053934A1 (en) | 2000-01-18 | 2001-01-03 | Method and apparatus for improved computer load and store operations |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003521035A JP2003521035A (ja) | 2003-07-08 |
JP3721129B2 true JP3721129B2 (ja) | 2005-11-30 |
Family
ID=26872769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001554162A Expired - Fee Related JP3721129B2 (ja) | 2000-01-18 | 2001-01-03 | コンピュータのロードとストア演算を改善する方法および装置 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1257912B1 (ja) |
JP (1) | JP3721129B2 (ja) |
AT (1) | ATE440321T1 (ja) |
AU (1) | AU2001226324A1 (ja) |
CA (1) | CA2406679A1 (ja) |
DE (1) | DE60139606D1 (ja) |
WO (1) | WO2001053934A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6781589B2 (en) | 2001-09-06 | 2004-08-24 | Intel Corporation | Apparatus and method for extracting and loading data to/from a buffer |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
US7921263B2 (en) * | 2006-12-22 | 2011-04-05 | Broadcom Corporation | System and method for performing masked store operations in a processor |
CN102736895B (zh) * | 2011-04-07 | 2015-06-10 | 中兴通讯股份有限公司 | 一种实现寄存器文件间的数据传输方法及装置 |
KR101949417B1 (ko) * | 2011-12-02 | 2019-02-20 | 삼성전자주식회사 | 프로세서, 명령어 생성 장치 및 방법 |
US9501276B2 (en) | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US9830151B2 (en) * | 2014-12-23 | 2017-11-28 | Intel Corporation | Method and apparatus for vector index load and store |
CN113132124B (zh) * | 2019-12-30 | 2024-03-19 | 中兴通讯股份有限公司 | 告警信息配置方法、告警扫描方法、装置和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2616182B2 (ja) * | 1990-08-29 | 1997-06-04 | 三菱電機株式会社 | データ処理装置 |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
US5649144A (en) * | 1994-06-13 | 1997-07-15 | Hewlett-Packard Co. | Apparatus, systems and methods for improving data cache hit rates |
JP2889845B2 (ja) * | 1995-09-22 | 1999-05-10 | 松下電器産業株式会社 | 情報処理装置 |
US5913054A (en) * | 1996-12-16 | 1999-06-15 | International Business Machines Corporation | Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle |
US6119203A (en) * | 1998-08-03 | 2000-09-12 | Motorola, Inc. | Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system |
-
2001
- 2001-01-03 AU AU2001226324A patent/AU2001226324A1/en not_active Abandoned
- 2001-01-03 CA CA002406679A patent/CA2406679A1/en not_active Abandoned
- 2001-01-03 DE DE60139606T patent/DE60139606D1/de not_active Expired - Lifetime
- 2001-01-03 WO PCT/US2001/000413 patent/WO2001053934A1/en active Application Filing
- 2001-01-03 AT AT01900915T patent/ATE440321T1/de not_active IP Right Cessation
- 2001-01-03 JP JP2001554162A patent/JP3721129B2/ja not_active Expired - Fee Related
- 2001-01-03 EP EP01900915A patent/EP1257912B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
AU2001226324A1 (en) | 2001-07-31 |
ATE440321T1 (de) | 2009-09-15 |
EP1257912A4 (en) | 2006-12-20 |
EP1257912B1 (en) | 2009-08-19 |
CA2406679A1 (en) | 2001-07-26 |
WO2001053934A1 (en) | 2001-07-26 |
JP2003521035A (ja) | 2003-07-08 |
EP1257912A1 (en) | 2002-11-20 |
DE60139606D1 (de) | 2009-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7529907B2 (en) | Method and apparatus for improved computer load and store operations | |
US6523090B2 (en) | Shared instruction cache for multiple processors | |
US6202106B1 (en) | Method for providing specific knowledge of a structure of parameter blocks to an intelligent direct memory access controller | |
KR970011207B1 (ko) | 원자 억세스를 제공하는 레지스터가 소프트웨어 인터록 없이 공유된 레지스터의 개별 비트를 세트하고 클리어하기 위한 방법 및 장치 | |
JP2005527035A (ja) | 幅の広いメモリへのアクセス | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
US6415338B1 (en) | System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier | |
JP3721129B2 (ja) | コンピュータのロードとストア演算を改善する方法および装置 | |
US6378050B1 (en) | Information processing apparatus and storage medium | |
KR19990036893A (ko) | 다중 어드레싱 모드를 실행하는 프로세서 구조 및 그 설계방법 | |
JP2008077590A (ja) | データ転送装置 | |
JP2006527436A (ja) | データ処理装置及びレジスタ・ファイルとメモリとの間でデータ値を転送する方法 | |
JP2005182538A (ja) | データ転送装置 | |
JP2005322240A (ja) | インデックス付きレジスタアクセス用の方法および装置 | |
JP2000020396A (ja) | 可変式キャッシュ方式 | |
JPS5856277A (ja) | 情報処理装置ならびに方法 | |
JPS60134937A (ja) | アドレス拡張装置 | |
JPH09114733A (ja) | キャッシュ記憶装置における非整列データ転送機構 | |
JPS5834856B2 (ja) | キオクセイギヨソウチ | |
JP2942449B2 (ja) | データ処理装置 | |
JP2576589B2 (ja) | 仮想記憶アクセス制御方式 | |
JP2002351740A (ja) | バッファ装置、バッファ制御装置、バッファ制御方法、バッファ制御プログラム及び記録媒体 | |
JP2000056972A (ja) | Vliwプロセッサ及びその処理方法 | |
JPS61250753A (ja) | アドレス拡張方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050502 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050803 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050830 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050909 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3721129 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090916 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100916 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110916 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110916 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120916 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130916 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |