JP2003521035A - コンピュータのロードとストア演算を改善する方法および装置 - Google Patents

コンピュータのロードとストア演算を改善する方法および装置

Info

Publication number
JP2003521035A
JP2003521035A JP2001554162A JP2001554162A JP2003521035A JP 2003521035 A JP2003521035 A JP 2003521035A JP 2001554162 A JP2001554162 A JP 2001554162A JP 2001554162 A JP2001554162 A JP 2001554162A JP 2003521035 A JP2003521035 A JP 2003521035A
Authority
JP
Japan
Prior art keywords
stream
memory
instruction
register
data entity
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.)
Granted
Application number
JP2001554162A
Other languages
English (en)
Other versions
JP3721129B2 (ja
Inventor
ネミロフスキイ,マリオ
ムソル,エンリケ
サンカー,ナレンドラ
メルビン,ステイーブン
Original Assignee
クリアウオーター・ネツトワークス・インコーポレイテツド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クリアウオーター・ネツトワークス・インコーポレイテツド filed Critical クリアウオーター・ネツトワークス・インコーポレイテツド
Publication of JP2003521035A publication Critical patent/JP2003521035A/ja
Application granted granted Critical
Publication of JP3721129B2 publication Critical patent/JP3721129B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Pens And Brushes (AREA)

Abstract

(57)【要約】 コンピュータシステムにおけるロードおよびストア演算を拡張して、ストリームロードおよびストア、ならびにマスクされたロードおよびストアを提供する。ストリーム演算において、適切な引数により、データエンティティの読取りを開始するメモリ11の第1のアドレス13またはレジスタファイル15の第1のレジスタ17、エンティティの記憶を開始する第1のアドレス13または第1のレジスタ17、ならびに読取りまたは書込みを行うエンティティの数を示すストリーム命令をCPUが実行する。マスクされたロードおよびマスクされたストア演算(17、18)において、記憶されたマスクを使用して、ロードおよびストアのための第1のアドレスとレジスタとに関するパターンを示す。マスクに関して、ビットストリングベクトル法を教示する。

Description

【発明の詳細な説明】
【0001】 発明の分野 本発明は、デジタル処理の分野に関し、より詳細には、コンピュータの演算に
おいてデータエンティティをロードし、ストアするための方法および装置に関す
る。
【0002】 関連出願の相互参照 本発明は、2000年1月18日出願の仮出願第60/176937号に対す
る優先権を主張し、また、本発明は、1998年12月16日出願の同時係属出
願第09/216017号、1999年1月27日出願の同時係属出願第09/
240012号、1999年3月22日出願の同時係属出願第09/27381
0号、1999年5月14日出願の同時係属出願第09/312302号に関し
、また一部継続出願である以上に列挙する4件に関し、4件すべてを参照により
本件に組み込む。
【0003】 発明の背景 本発明は、ソフトウェアからの命令を実行する際のCPU動作の分野に関する
。当技術分野で知られるとおり、多くの種類の命令セットアーキテクチャ(IS
A)が存在し、いくつかのアーキテクチャが、多くのコンピュータオペレーショ
ンで好まれるようになっている。これらアーキテクチャの1つが、よく知られて
いるMIPS ISAであり、本明細書では、いくつかの例でMIPS ISA
を使用する。ただし、本発明は、MIPS ISAには限定されない。
【0004】 命令を実行する際にコンピュータプロセスにおいて必要な動作の1つが、汎用
メモリまたはキャッシュメモリと、データが即時にアクセス可能であるCPUの
レジスタファイルとの間でデータエンティティを移動することである。複数のデ
ータエンティティをロードまたはストアしてからでなければ、実行を開始または
継続できないとき、従来の命令セットアーキテクチャでは、いくつかの命令が必
要とされる。データにアクセスする必要があるアプリケーションでは、既知のパ
ターンで関連するデータエンティティをロードまたはストアすることが可能な単
一の命令を有することが望ましく、またそのような動作が可能な単一の命令が、
多くのコンピュータ演算の速度および効率を相当に向上させることを本発明者は
発見した。
【0005】 したがって、明らかに必要とされているのは、メモリの中で既知の位置関係を
有するデータエンティティを示すための単一の命令を含み、該単一命令を実行し
た結果として一連のそのようなデータエンティティをロードまたはストアするた
めの方法および装置である。
【0006】 発明の概要 本発明の好ましい実施形態では、コンピュータ演算において、メモリからデー
タエンティティを選択し、データエンティティをレジスタファイルに書き込むた
めの方法が提供され、本方法は、(a)第1のアドレスから開始してN個のエン
ティティを選択して読み取るステップと、(b)メモリのエンティティの順序で
第1のレジスタからのレジスタ・ファイルにエンティティを書き込むステップと
を含む。好ましい実施形態では、ステップは、命令セットアーキテクチャ(IS
A)に従って実施されるストリームロード(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 Lo
ad)命令の結果起こる。また、好ましい実施形態では、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によって実行されるストリームストア命令の結果起こり、I
SAは、MIPSであることが可能である。また、好ましい実施形態では、スト
リームストア命令の引数が、データエンティティを読み取る第1のレジスタファ
イル、データエンティティを書き込むメモリの第1のアドレス、ならびに読取り
および書込みを行うデータエンティティの数を示す数値を示す。
【0016】 別の態様では、CPUと、メモリと、レジスタファイルとを含む計算システム
が提供される。このシステムは、レジスタファイルからメモリにデータエンティ
ティをストアする際、CPUが、レジスタファイルから所定の数のデータエンテ
ィティを読み取り、所定の第1のアドレスから開始して、レジスタファイルと同
じ順序でデータエンティティをメモリのアドレス指定された場所に書き込むこと
を特徴とする。好ましい実施形態では、レジスタファイルからメモリにデータエ
ンティティをストアすることは、命令セットアーキテクチャ(ISA)に従って
実施され、CPUによって実行されるストリームストア命令の結果起こり、IS
Aは、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として示すメモリ1
1のアドレス@から開始して、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バイト幅であり、メモリ1
1で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に示している。3
2バイトのパケットヘッダからの任意の組合せのバイトまたはすべてのバイトを
レジスタファイルに転送するために選択することができる。
【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】 本発明の実施形態によるマスクされた演算におけるメモリおよびレジスタファ
イルを示す図である。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE,TR),OA(BF ,BJ,CF,CG,CI,CM,GA,GN,GW, ML,MR,NE,SN,TD,TG),AP(GH,G M,KE,LS,MW,MZ,SD,SL,SZ,TZ ,UG,ZW),EA(AM,AZ,BY,KG,KZ, MD,RU,TJ,TM),AE,AL,AM,AT, AU,AZ,BA,BB,BG,BR,BY,CA,C H,CN,CR,CU,CZ,DE,DK,DM,EE ,ES,FI,GB,GD,GE,GH,GM,HR, HU,ID,IL,IN,IS,JP,KE,KG,K P,KR,KZ,LC,LK,LR,LS,LT,LU ,LV,MA,MD,MG,MK,MN,MW,MX, NO,NZ,PL,PT,RO,RU,SD,SE,S G,SI,SK,SL,TJ,TM,TR,TT,TZ ,UA,UG,UZ,VN,YU,ZA,ZW (72)発明者 サンカー,ナレンドラ アメリカ合衆国、カリフオルニア・95008、 キヤンベル、サニーサイド・アベニユー・ 35 (72)発明者 メルビン,ステイーブン アメリカ合衆国、カリフオルニア・94114、 サン・フランシスコ、フオーテイーンス・ ストリート・967 Fターム(参考) 5B033 AA01 AA04 BE01 5B060 DA04

Claims (63)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータの演算において、メモリからデータエンティテ
    ィを選択して前記データエンティティをレジスタファイルに書き込むための方法
    であって、 (a)第1のアドレスから開始してN個のエンティティを選択して読み取るス
    テップと、 (b)前記メモリの前記エンティティの順序で前記エンティティを第1のレジ
    スタから前記レジスタファイルに書き込むステップを含む方法。
  2. 【請求項2】 前記ステップが、命令セットアーキテクチャ(ISA)に従
    って実施されたストリームロード(Stream Load)命令の実行の結果
    起こる請求項1に記載の方法。
  3. 【請求項3】 前記ISAが、MIPSである請求項2に記載の方法。
  4. 【請求項4】 前記ストリームロード命令の引数が、データエンティティの
    読取りを開始するメモリアドレス、前記データエンティティの書込みを開始する
    前記レジスタファイルの第1のレジスタ、ならびに読取りおよび書込みを行うデ
    ータエンティティの数を示す数値を示す請求項3に記載の方法。
  5. 【請求項5】 前記ストリームロードの前記実行が、第1のスレッドを実行
    する第1のストリームによって動的マルチストリーミング(Dynamic M
    ulti−streaming)(DMS)プロセッサで行われ、前記ストリー
    ムロード命令が実行されている間、前記第1のストリームが非活動状態に留まる
    請求項2に記載の方法。
  6. 【請求項6】 前記ストリームロードの前記実行が、第1のスレッドを実行
    する第1のストリームによって動的マルチストリーミング(DMS)プロセッサ
    で行われ、前記第1のストリームが、前記ストリームロード命令が実行される間
    、前記ストリームロード命令によって影響されるメモリの値に依存しない命令を
    実行する請求項2に記載の方法。
  7. 【請求項7】 コンピュータの演算において、レジスタファイルからデータ
    エンティティを選択して前記データエンティティをメモリに書き込むための方法
    であって、 (a)第1のレジスタから開始してN個のエンティティを選択して読み取るス
    テップと、 (d)前記レジスタファイルの前記エンティティの順序で前記エンティティを
    第1のアドレスから前記メモリに書き込むステップとを含む方法。
  8. 【請求項8】 前記ステップが、命令セットアーキテクチャ(ISA)に従
    って実施されたストリームストア(Stream Store)命令の結果起こ
    る請求項7に記載の方法。
  9. 【請求項9】 前記ISAが、MIPSである請求項8に記載の方法。
  10. 【請求項10】 前記ストリームストア命令の引数が、データエンティティ
    の読取りを開始するレジスタ、前記データエンティティの書込みを開始する前記
    メモリのアドレス、ならびに読取りおよび書込みを行うデータエンティティの数
    を示す数値を示す請求項9に記載の方法。
  11. 【請求項11】 前記ストリームストアの前記実行が、第1のスレッドを実
    行する第1のストリームによって動的マルチストリーミング(DMS)プロセッ
    サで行われ、前記ストリームストア命令が実行されている間、前記第1のストリ
    ームが非活動状態に留まる請求項8に記載の方法。
  12. 【請求項12】 前記ストリームストアの前記実行が、第1のスレッドを実
    行する第1のストリームによって動的マルチストリーミング(DMS)プロセッ
    サで行われ、前記第1のストリームが、前記ストリームストア命令が実行される
    間、前記ストリームストア命令によって影響されるメモリの値に依存しない命令
    を実行する請求項8に記載の方法。
  13. 【請求項13】 コンピュータの演算において、メモリからデータエンティ
    ティを選択して前記データエンティティをレジスタファイルに書き込むための方
    法であって、 (a)第1のアドレスとの関係でコピーするエンティティの第1のマップを照
    会するステップと、 (b)前記マップによって示されたエンティティを選択して読み取るステップ
    と、 (c)第1のレジスタとの関係で、前記メモリからコピーした前記エンティテ
    ィを書き込む位置の第2のマップを照会するステップと、 (d)前記第2のマップに従って前記エンティティを前記レジスタファイルに
    書き込むステップとを含む方法。
  14. 【請求項14】 前記ステップが、命令セットアーキテクチャ(ISA)に
    従って実施されたマスクされたロード(Masked Load)命令の結果起
    こる請求項13に記載の方法。
  15. 【請求項15】 前記ISAが、MIPSである請求項14に記載の方法。
  16. 【請求項16】 前記マスクされたロード命令の引数が、マスクを配置する
    ための開始メモリアドレス、使用するマスク番号、ならびに前記レジスタファイ
    ルにデータエンティティの書込みを開始する第1のレジスタを示す請求項15に
    記載の方法。
  17. 【請求項17】 前記第1のおよび前記第2のマップがビットストリングと
    して実施され、前記ストリングのビット位置が、メモリから選択されるべきデー
    タエンティティの位置、およびデータエンティティが書き込まれるべきレジスタ
    を示す請求項13に記載の方法。
  18. 【請求項18】 ビットストリングマップが、サブマスクとして表現され、
    サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能で
    ある請求項17に記載の方法。
  19. 【請求項19】 前記マスクされたロードの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記マスクされたロード命令が実行されている間、前記第1のス
    トリームが非活動状態に留まる請求項14に記載の方法。
  20. 【請求項20】 前記マスクされたロードの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記第1のストリームが、前記マスクされたロード命令が実行さ
    れる間、前記マスクされたロード命令によって影響されるメモリの値に依存しな
    い命令を実行する請求項14に記載の方法。
  21. 【請求項21】 コンピュータの演算において、レジスタファイルからデー
    タエンティティを選択して前記データエンティティをメモリに書き込むための方
    法であって、 (a)第1のレジスタとの関係で読み取るエンティティの第1のマップを照会
    するステップと、 (b)前記マップによって示されたエンティティを選択して読み取るステップ
    と、 (c)第1のアドレスとの関係で、前記レジスタファイルから読み取った前記
    エンティティを書き込む位置の第2のマップを照会するステップと、 (d)前記第2のマップに従って前記エンティティを前記メモリファイルに書
    き込むステップとを含む方法。
  22. 【請求項22】 前記ステップが、命令セットアーキテクチャ(ISA)に
    従って実施されたマスクされたストア(Masked Store)命令の結果
    起こる請求項21に記載の方法。
  23. 【請求項23】 前記ISAが、MIPSである請求項22に記載の方法。
  24. 【請求項24】 前記マスクされたストア命令の引数が、マスクを配置する
    ための開始レジスタ、番号を使用するマスク、ならびに前記メモリにデータエン
    ティティの書込みを開始する第1のレジスタを示す請求項23に記載の方法。
  25. 【請求項25】 前記第1のおよび前記第2のマップがビットストリングと
    して実施され、前記ストリングのビットの位置が、読み取られるべきデータエン
    ティティの位置、およびデータエンティティが書き込まれるべきレジスタを示す
    請求項21に記載の方法。
  26. 【請求項26】 ビットストリングマップが、サブマスクとして表現され、
    サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能で
    ある請求項25に記載の方法。
  27. 【請求項27】 前記マスクされたストアの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記マスクされたストア命令が実行されている間、前記第1のス
    トリームが非活動状態に留まる請求項22に記載の方法。
  28. 【請求項28】 前記マスクされたストアの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記第1のストリームが、前記マスクされたストア命令が実行さ
    れる間、前記マスクされたストア命令によって影響されるメモリの値に依存しな
    い命令を実行する請求項22に記載の方法。
  29. 【請求項29】 コンピュータの演算において使用するためのストリームロ
    ード命令であって、 前記命令の指示と、 データエンティティの読取りを開始するメモリの第1のアドレスを示す第1の
    引数と、 前記メモリから読み取った前記データエンティティの書込みを開始するレジス
    タファイルの第1のレジスタを示す第2の引数と、 読取りおよび書込みを行うデータエンティティの数を示す第3の引数とを含む
    命令。
  30. 【請求項30】 コンピュータの演算において使用するためのストリームス
    トア命令であって、 前記命令の指示と、 データエンティティの読取りを開始するレジスタファイルの第1のアドレスを
    示す第1の引数と、 前記レジスタファイルから読み取った前記データエンティティの書込みを開始
    するメモリの第1のアドレスを示す第2の引数と、 読取りおよび書込みを行うデータエンティティの数を示す第3の引数とを含む
    命令。
  31. 【請求項31】 コンピュータの演算において使用するためのマスクされた
    ロード命令であって、 前記命令の指示と、 読み取るべきデータエンティティを示すマスクを配置するメモリの第1のアド
    レスを示す第1の引数と、 前記メモリから読み取った前記データエンティティの書込みを開始するレジス
    タファイルの第1のレジスタを示す第2の引数と、 読取りおよび書込みを行うべき前記データエンティティを選択するのに使用す
    るマスク番号を示す第3の引数とを含む命令。
  32. 【請求項32】 コンピュータの演算において使用するためのマスクされた
    ストア命令であって、 前記命令の指示と、 読み取るべきデータエンティティを示すマスクを配置するレジスタファイルの
    第1のレジスタを示す第1の引数と、 前記レジスタファイルから読み取った前記データエンティティの書込みを開始
    するメモリの第1のアドレスを示す第2の引数と、 コピーおよび書込みを行うべき前記データエンティティを選択するのに使用す
    るマスク番号を示す第3の引数とを含む命令。
  33. 【請求項33】 CPUと、 メモリと、 レジスタファイルとを含む計算システムであって、 前記CPUが、前記メモリから前記レジスタファイルにデータエンティティを
    ロードする際、所定の数のデータエンティティを読み取り、所定の第1のレジス
    タから開始して、前記メモリと同じ順序で前記データエンティティを前記レジス
    タファイルのレジスタに書き込むことを特徴とするシステム。
  34. 【請求項34】 メモリから前記レジスタファイルにデータエンティティを
    転送することが、命令セットアーキテクチャ(ISA)に従って実施され、前記
    CPUによって実行されるストリームロード命令の結果起こる請求項33に記載
    のシステム。
  35. 【請求項35】 前記ISAが、MIPSである請求項34に記載のシステ
    ム。
  36. 【請求項36】 前記ストリームロード命令の引数が、データエンティティ
    の読取りを開始するメモリアドレス、前記データエンティティの書込みを開始す
    る前記レジスタファイルの第1のレジスタ、ならびに読取りおよび書込みを行う
    データエンティティの数を示す数値を示す請求項35に記載のシステム。
  37. 【請求項37】 前記ストリームロードの前記実行が、第1のスレッドを実
    行する第1のストリームによって動的マルチストリーミング(DMS)プロセッ
    サで行われ、前記ストリームロード命令が実行されている間、前記第1のストリ
    ームが非活動状態に留まる請求項34に記載のシステム。
  38. 【請求項38】 前記ストリームロードの前記実行が、第1のスレッドを実
    行する第1のストリームによって動的マルチストリーミング(DMS)プロセッ
    サで行われ、前記第1のストリームが、前記ストリームロード命令が実行される
    間、前記ストリームロード命令によって影響されるメモリの値に依存しない命令
    を実行する請求項34に記載のシステム。
  39. 【請求項39】 CPUと、 メモリと、 レジスタファイルとを含む計算システムであって、 前記CPUが、前記レジスタファイルから前記メモリにデータエンティティを
    ストアする際、所定の数のデータエンティティを前記レジスタファイルから読み
    取り、所定の第1のアドレスから開始して、前記レジスタファイルと同じ順序で
    前記データエンティティをメモリのアドレス指定された場所に書き込むことを特
    徴とするシステム。
  40. 【請求項40】 前記レジスタファイルからメモリにデータエンティティを
    ストアすることが、命令セットアーキテクチャ(ISA)に従って実施され、前
    記CPUによって実行されるストリームストア命令の結果起こる請求項39に記
    載のシステム。
  41. 【請求項41】 前記ISAが、MIPSである請求項40に記載のシステ
    ム。
  42. 【請求項42】 前記ストリームストア命令の引数が、データエンティティ
    の読取りを開始する第1のレジスタファイル、前記データエンティティを書き込
    むメモリの第1のアドレス、ならびに読取りおよび書込みを行うデータエンティ
    ティの数を示す数値を示す請求項41に記載のシステム。
  43. 【請求項43】 前記ストリームストアの実行が、第1のスレッドを実行す
    る第1のストリームによって動的マルチストリーミング(DMS)プロセッサで
    行われ、前記ストリームストア命令が実行されている間、前記第1のストリーム
    が非活動状態に留まる請求項40に記載のシステム。
  44. 【請求項44】 前記ストリームストアの実行が、第1のスレッドを実行す
    る第1のストリームによって動的マルチストリーミング(DMS)プロセッサで
    行われ、前記第1のストリームが、前記ストリームストア命令が実行される間、
    前記ストリームストア命令によって影響されるメモリの値に依存しない命令を実
    行する請求項40に記載のシステム。
  45. 【請求項45】 CPUと、 メモリと、 レジスタファイルとを含む計算システムであって、 前記CPUが、前記メモリから前記レジスタファイルにデータエンティティを
    ロードする際、第1のアドレスで前記メモリに入り、前記第1のアドレスとの関
    係で所定のパターンに従ってデータエンティティを読み取り、第1のレジスタと
    の関係で所定のパターンで前記データエンティティを前記レジスタファイルのレ
    ジスタに書き込むことを特徴とするシステム。
  46. 【請求項46】 メモリから前記レジスタファイルにデータエンティティを
    ロードすることが、命令セットアーキテクチャ(ISA)に従って実施され、前
    記CPUによって実行されるマスクされたロード命令の結果起こる請求項45に
    記載のシステム。
  47. 【請求項47】 前記ISAが、MIPSである請求項46に記載のシステ
    ム。
  48. 【請求項48】 前記マスクされたロード命令の引数が、データエンティテ
    ィの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始
    する前記レジスタファイルの第1のレジスタ、ならびにデータエンティティの読
    取りおよび書込みのための前記メモリおよび前記レジスタファイルの相対位置を
    示すのに使用するストアされたマスクを示すマスク番号を示す請求項47に記載
    のシステム。
  49. 【請求項49】 前記ストアされたマスクが、2ビットストリングベクトル
    として実施され、前記第1のアドレスとの関係でどのデータエンティティを読み
    取るかを第1のベクトルが示し、前記第1のレジスタとの関係でどのレジスタに
    前記データエンティティを書き込むかを第2のベクトルが示す請求項48に記載
    のシステム。
  50. 【請求項50】 ビットストリングマップが、サブマスクとして表現され、
    サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能で
    ある請求項49に記載のシステム。
  51. 【請求項51】 前記マスクされたロードの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記ストリームロード命令が実行されている間、前記第1のスト
    リームが非活動状態に留まる請求項46に記載のシステム。
  52. 【請求項52】 前記マスクされたロードの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記第1のストリームが、前記マスクされたロード命令が実行さ
    れる間、前記マスクされたロード命令によって影響されるメモリの値に依存しな
    い命令を実行する請求項46に記載のシステム。
  53. 【請求項53】 CPUと、 メモリと、 レジスタファイルとを含む計算システムであって、 前記CPUが、前記レジスタファイルから前記メモリにデータエンティティを
    ストアする際、第1のレジスタで前記レジスタファイルに入り、所定のパターン
    に従って前記レジスタファイルからデータエンティティを読み取り、第1のアド
    レスから開始して、やはり所定のパターンに従って前記データエンティティをメ
    モリのアドレス指定された場所に書き込むことを特徴とするシステム。
  54. 【請求項54】 前記レジスタファイルからメモリにデータエンティティを
    ストアすることが、命令セットアーキテクチャ(ISA)に従って実施され、前
    記CPUによって実行されるマスクされたストア命令の結果起こる請求項53に
    記載のシステム。
  55. 【請求項55】 前記ISAが、MIPSである請求項54に記載のシステ
    ム。
  56. 【請求項56】 前記マスクされたストア命令の引数が、データエンティテ
    ィの読取りを開始するメモリアドレス、前記データエンティティの書込みを開始
    する前記レジスタファイルの第1のレジスタ、ならびに前記データエンティティ
    の読取りおよび書込みのための前記メモリおよび前記レジスタファイルの相対位
    置を示すのに使用するストアされたマスクを示すマスク番号を示す請求項55に
    記載のシステム。
  57. 【請求項57】 前記ストアされたマスクが、2ビットストリングベクトル
    として実施され、前記第1のレジスタとの関係でどのデータエンティティを読み
    取るかを第1のベクトルが示し、前記第1のアドレスとの関係でどのレジスタに
    前記データエンティティを書き込むかを第2のベクトルが示す請求項56に記載
    のシステム。
  58. 【請求項58】 ビットストリングマップが、サブマスクとして表現され、
    サブマスクが、結合されたマスクが得られるように様々な組合せでリンク可能で
    ある請求項57に記載のシステム。
  59. 【請求項59】 前記マスクされたストアロードの前記実行が、第1のスレ
    ッドを実行する第1のストリームによって動的マルチストリーミング(DMS)
    プロセッサで行われ、前記ストリームロード命令が実行されている間、前記第1
    のストリームが非活動状態に留まる請求項54に記載のシステム。
  60. 【請求項60】 前記マスクされたストアの前記実行が、第1のスレッドを
    実行する第1のストリームによって動的マルチストリーミング(DMS)プロセ
    ッサで行われ、前記第1のストリームが、前記マスクされたストア命令が実行さ
    れる間、前記マスクされたストア命令によって影響されるメモリの値に依存しな
    い命令を実行する請求項54に記載のシステム。
  61. 【請求項61】 第1の複数k個の個別ストリームと、 第2の複数m個のマスクまたはマスクセットとを含む動的マルチストリーミン
    グプロセッサであって、 前記第2の複数m個の個別マスクまたはマスクセットが、マスクされたロード
    動作および/またはマスクされたストア演算を行うため、前記第1の複数k個の
    ストリームの個々のストリームを排他的に使用するように専用に供されるプロセ
    ッサ。
  62. 【請求項62】 個々のマスクまたはマスクセットが、前記個々のマスクま
    たは前記個々のマスクセットを専用とするストリームによってのみ変更可能であ
    る請求項61に記載のDMSプロセッサ。
  63. 【請求項63】 複数k個の個別ストリームと、 マスクされたロードおよびマスクされたストア演算を行う際に使用するための
    1組のマスクまたはマスクセットであって、単一の命令を実行した結果として、
    かつ前記マスクに従って複数のデータエンティティをロードまたはストアするマ
    スクまたはマスクセットと、 キャッシュメモリと、 システムメモリとを含む動的マルチストリーミング(DMS)プロセッサシス
    テムであって、 マスクされたロードまたはマスクされたストア演算を行う際、前記システムが
    前記システムメモリと1つまたは複数のレジスタファイルの間で直接にデータエ
    ンティティを転送することを特徴とするシステム。
JP2001554162A 2000-01-18 2001-01-03 コンピュータのロードとストア演算を改善する方法および装置 Expired - Fee Related JP3721129B2 (ja)

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 true JP2003521035A (ja) 2003-07-08
JP3721129B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007505373A (ja) * 2003-09-08 2007-03-08 フリースケール セミコンダクター インコーポレイテッド Simdオペレーションを実行するデータ処理システム及び方法
KR20130062150A (ko) * 2011-12-02 2013-06-12 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
JP2014513343A (ja) * 2011-04-07 2014-05-29 ゼットティーイー コーポレイション レジスタファイル間におけるデータ伝送の実現方法及び実現装置
JP2018500660A (ja) * 2014-12-23 2018-01-11 インテル・コーポレーション ベクトルインデックスロードおよびストアのための方法および装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
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
US7921263B2 (en) * 2006-12-22 2011-04-05 Broadcom Corporation System and method for performing masked store operations in a processor
US9501276B2 (en) 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
CN113132124B (zh) * 2019-12-30 2024-03-19 中兴通讯股份有限公司 告警信息配置方法、告警扫描方法、装置和系统

Family Cites Families (6)

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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007505373A (ja) * 2003-09-08 2007-03-08 フリースケール セミコンダクター インコーポレイテッド Simdオペレーションを実行するデータ処理システム及び方法
JP2014513343A (ja) * 2011-04-07 2014-05-29 ゼットティーイー コーポレイション レジスタファイル間におけるデータ伝送の実現方法及び実現装置
KR20130062150A (ko) * 2011-12-02 2013-06-12 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
KR101949417B1 (ko) 2011-12-02 2019-02-20 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
JP2018500660A (ja) * 2014-12-23 2018-01-11 インテル・コーポレーション ベクトルインデックスロードおよびストアのための方法および装置

Also Published As

Publication number Publication date
WO2001053934A1 (en) 2001-07-26
ATE440321T1 (de) 2009-09-15
DE60139606D1 (de) 2009-10-01
EP1257912A4 (en) 2006-12-20
JP3721129B2 (ja) 2005-11-30
AU2001226324A1 (en) 2001-07-31
CA2406679A1 (en) 2001-07-26
EP1257912A1 (en) 2002-11-20
EP1257912B1 (en) 2009-08-19

Similar Documents

Publication Publication Date Title
US7529907B2 (en) Method and apparatus for improved computer load and store operations
DE69907955T2 (de) Globale und locale registersegmentierung in einem vliw prozessor
US11269638B2 (en) Exposing valid byte lanes as vector predicates to CPU
JP3747936B2 (ja) データプロセッサの結果レジスタの選択したサブワード位置に結果を送る並列サブワード命令
US11934833B2 (en) Stream data unit with multiple head registers
JP2011522325A (ja) ローカル及びグローバルのデータ共有
JPH0764853A (ja) Simdマルチプロセッサ用の可変正確度間接的アドレス方法およびそれを行う装置
US20230385063A1 (en) Streaming engine with early exit from loop levels supporting early exit loops and irregular loops
US6415338B1 (en) System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier
JP2003521035A (ja) コンピュータのロードとストア演算を改善する方法および装置
KR19990036893A (ko) 다중 어드레싱 모드를 실행하는 프로세서 구조 및 그 설계방법
US20080077733A1 (en) Data transfer apparatus
US11042502B2 (en) Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions
JP2003196086A (ja) レジスタウィンドウ方式によるレジスタファイル及びその制御方法
US20030131205A1 (en) Atomic transfer of a block of data
JP2006527436A (ja) データ処理装置及びレジスタ・ファイルとメモリとの間でデータ値を転送する方法
JP2916605B2 (ja) コンピュータ用プロセツサ
JP3304928B2 (ja) バリア同期方法およびバリア同期用プログラムを記録した記録媒体
CN112540793A (zh) 支持多访存模式的可重构处理单元阵列及控制方法、装置
JPS5856277A (ja) 情報処理装置ならびに方法
JPS6032220B2 (ja) 情報処理装置
JPS63251835A (ja) ベクトル処理装置
JPS58137081A (ja) ベクトルプロセツサ
JPH10111798A (ja) 情報処理装置
JPH09114733A (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