JP2001134436A - 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法 - Google Patents

効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法

Info

Publication number
JP2001134436A
JP2001134436A JP2000329216A JP2000329216A JP2001134436A JP 2001134436 A JP2001134436 A JP 2001134436A JP 2000329216 A JP2000329216 A JP 2000329216A JP 2000329216 A JP2000329216 A JP 2000329216A JP 2001134436 A JP2001134436 A JP 2001134436A
Authority
JP
Japan
Prior art keywords
data
operand
instruction
bit
bits
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.)
Abandoned
Application number
JP2000329216A
Other languages
English (en)
Inventor
W Bosuharuto Patrik
ダブリュ、ボスハルト パトリック
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2001134436A publication Critical patent/JP2001134436A/ja
Abandoned 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 ビット操作命令と機能が制限されるという欠
点に対処する。 【解決手段】 プロセッサの動作方法。命令(20)を
フェッチするステップを含む。命令は命令操作コード
(OPCODE)、第一と第二のデータオペランド(D
ATA D1’、DATA D2’)に対応する第一と第
二のデータオペランドビット群を含む。第一と第二のデ
ータオペランドの少なくとも一方が整数N個のビットで
構成される(例、N=32)。命令は整数M個のビット
(2M<整数N)で構成される少なくとも一つの即値ビ
ット操作オペランド(ARGUMENT(S))も含
む。方法は命令実行ステップも含み、これは第一と第二
のデータオペランドの一方のビット数の操作ステップを
含む。操作されるビット数は少なくとも一つの即値ビッ
ト操作オペランドに応じ、操作ステップは命令操作コー
ドに応じる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプロセッサに関する
ものであり、更に詳しくは、このようなプロセッサにお
ける3オペランドのシフトとマージの一方または両方の
命令とオペレーションの利用可能性と具体化(インプリ
メンテーション)を改善することを対象としている。
【0002】
【従来の技術】本発明は、コンピュータ・テクノロジ
ー、マイクロプロセッサ、および他の型のプロセッサの
常に進展する分野に関連している。プロセッサ装置は多
数の用途で使用される。プロセッサ装置の普及により、
市場は複雑で、過重な要求をするものとなり、オペレー
ションの効率が主要な考慮すべき問題となることが多
く、このような効率はプロセッサの価格と性能に反映さ
れる。以下の説明と実施例はプロセッサの効率と機能を
対象としており、シフト・マージ命令機能の領域で生じ
る。
【0003】従来技術には、各命令があるプロセッサで
実行される、多数のビット操作命令が含まれる。単一命
令を使用してデータを操作することができるからであ
る。これに対して、命令がプロセッサ命令セットの一部
でない場合には、結果としての同じデータ操作が1命令
よりかなり多くの命令を必要とすることがある。これら
の型の命令を説明するために、後で四つの異なる例を示
す。それらの命令を詳しく説明する前に、図1に、一般
の命令10によってこれらの命令のすべての基本命令フ
ォーマットを示す。命令10は操作(演算)コード(O
PCODE)を含む。操作コードは、特定の型の命令を
定義する特有のビットパターンを形成する多数のビット
を含む。命令10は更に、データD1およびデータD2
して示されている二つのデータオペランドへの参照を含
む。これらの参照は一般に、対応するレジスタに対する
ものであるので、これらのデータが命令10に直接埋め
込まれていることを示すことは意図されていない。更
に、説明のため、最新の例として、データD1およびD2
はレジスタに記憶された通常32ビットの量であり、こ
のようなレジスタが32個あることが多い。したがっ
て、データD1およびD2に対する参照は5ビットの識別
子である。5ビットの各識別子は、データD1またはデ
ータD2が記憶される32個のレジスタの中の対応する
一つのレジスタを表す。命令10は一つ以上のビット操
作アーギュメント(引数)をも含む。下記の例では、全
体の10ビットの場合に、二つの5ビットのアーギュメ
ントまたは単一の5ビットのアーギュメントがある。後
で、特定の対応する命令に基づいて、別のアーギュメン
トについて説明する。しかし、通常、アーギュメント
は、シフト量、位置、または操作すべきビット数のよう
な、データD1およびD2を操作するためのパラメータに
関連する。後で更に詳しく説明するように、アーギュメ
ントは即値情報(すなわち、命令10の中に埋め込まれ
る)であってもよいし、命令によりアドレス指定され
て、記憶装置(たとえば、レジスタ)から読出されても
よいことに注意すべきである。最後に、命令10はあて
先参照DESTを含むことにも注意すべきである。この
参照も一般に32個のレジスタの中の一つのレジスタへ
のものであるので、やはり5ビットの識別子である。D
ESTロケーションは、命令10のオペレーションの結
果が書込まれるレジスタである。
【0004】図2aおよび2bは従来技術のINSER
T命令のオペランドとオペレーションを示す。図2aは
INSERT命令の二つの32ビットのデータオペラン
ドを示し、これらがデータAおよびBとして示されてい
る。INSERT命令の第三のオペランドは、二つの側
面を与えるビット操作オペランドであり、これに関連し
て通常10ビットのオペランドとして実施される。これ
らのビットの中の5ビットがSHIFTアーギュメント
を定義し、これらのビットの中の残りの5ビットがLE
NGTHアーギュメントを定義する。SHIFTアーギ
ュメントは、データAを右シフトすべきビット数、すな
わち、それの最上位ビットがそれの最下位ビットのもと
の位置に向かってシフトされるように右シフトすべきビ
ット数を定義する。このようにして図2aは、右向きの
矢印の先のSHIFTアーギュメントに応答したデータ
Aの右シフトを示す。シフトによる結果を図2bではA
Sと示してある。たとえば、SHIFTが6に等しけれ
ば、データAは6ビットだけ右シフトされ、その結果、
その最下位ビットで始まり、データAの、より上位の2
6ビットをそなえたASが得られる。注意すべきこと
は、図2bのASはシフトの機能を示すためのものに過
ぎず、シフトされた値ASを一時的に記憶するために付
加的な記憶装置またはクロックサイクルが必要になると
いうことを示唆しようとするものではないということで
ある。LENGTHアーギュメントは、A S(すなわ
ち、Aのシフトされた値)から取出され、データBの最
下位ビットで始まるデータBの値の上にコピーされるビ
ット数を定義する。このようにASからコピーされるL
ENGTH個のビットがASLとして示されている。した
がって、図2bに示すように、ASからLENGTHに
等しい個数のビットがデータBの上にコピーされること
により、ビット0で始まり、ビットLENGTH−1ま
で続く値ASLを含む結果R1が作成される。結果R1の
中の残りのビットはデータBの対応するビットと同じで
ある。上記のことから、ASのLENGTHに等しい個
数のビットがデータBとマージされると述べてもよく、
したがって、これがINSERTが一つの型のシフト・
マージ命令である理由である。
【0005】図3aおよび3bは従来技術のDEPOS
IT命令のオペランドおよびオペレーションを示す。図
3aはDEPOSIT命令の二つの32ビットのデータ
オペランドを示し、これがデータCおよびDとして示さ
れている。DEPOSIT命令の第三のオペランドはビ
ット操作オペランドである。このビット操作オペランド
は二つの側面を与え、また通常10ビットのオペランド
として実施される。これらのビットの中の5ビットはS
HIFTアーギュメントを定義し、これらのビットの中
の残りの5ビットはLENGTHアーギュメントを定義
する。SHIFTアーギュメントは、データCを左シフ
トすべきビット数、すなわち、それの最下位ビットがそ
れの最上位ビットのもとの位置に向かってシフトされる
ように左シフトすべきビット数を定義する。このように
して図3aは、左向きの矢印の先のSHIFTアーギュ
メントに応答した左シフトを示す。シフトによる結果を
図3bではCSと示してある。たとえば、SHIFTが
4に等しければ、データCは4ビットだけ左シフトさ
れ、その結果、その最下位ビットで始まり、データC
の、最下位の28ビットをそなえたCSが得られる。注
意すべきことは、図3bのCSはシフトの機能を示すた
めのものに過ぎず、シフトされた値CSを一時的に記憶
するために付加的な記憶装置またはクロックサイクルが
必要になるということを示唆しようとするものではない
ということである。LENGTHアーギュメントは、C
S(すなわち、Cのシフトされた値)から取出され、ビ
ットロケーションSHIFTで始まり、したがってビッ
トロケーションSHIFT+LENGTH−1まで続く
データDの値の上にコピーされる、すなわちそれ「とマ
ージされる」ビット数を定義する。参考のため、CS
LENGTH個のビットはCSLとして示されている。し
たがって、図3bに示すように、CSLがデータDの対応
するビットロケーション上にコピーされることにより、
ビットSHIFTで始まり、ビットSHIFT+LEN
GTH−1まで続く値CSLを含む結果R2が作成され
る。結果R3の中の残りのビットはデータCの対応する
ビットロケーションと同じであり、結果R2の上位ビッ
トロケーションと下位ビットロケーションの両方に現れ
る(SHIFTが0より大きく、32より小さいものと
する)。
【0006】図4aおよび4bは従来技術のREPLA
CE命令のオペランドおよびオペレーションを示す。図
4aはREPLACE命令の二つの32ビットのデータ
オペランドを示し、これがデータEおよびFとして示さ
れている。REPLACE命令の第三のオペランドはビ
ット操作オペランドである。このビット操作オペランド
は二つの側面を与え、また通常10ビットのオペランド
として実施される。これらのビットの中の5ビットはP
OSITIONアーギュメントを定義し、これらのビッ
トの中の残りの5ビットはLENGTHアーギュメント
を定義する。POSITIONアーギュメントはデータ
Eの中のビット位置を定義し、LENGTHアーギュメ
ントはPOSITIONビットで始まるデータEからコ
ピーされるビット数を定義する。更に詳しく述べると、
これらのコピーされたビットは図4bでELとして示さ
れている量を形成し、POSITIONビットで始まる
データFの値の上にコピーされる。したがって、図4b
に示すように、データFの対応するビットロケーション
の上にELがコピーされることにより、ビットPOSI
TIONで始まり、ビットPOSITION+LENG
TH−1まで続く値ELを含むマージされた結果R3が
作成される。結果R3の中の残りのビットはデータFの
対応するビットロケーションと同じであり、結果R3の
上位ビットロケーションと下位ビットロケーションの両
方に現れる(POSITIONは0より大きく、31よ
り小さい)。
【0007】図5aおよび5bは従来技術のFUNNE
L−SHIFT命令のオペランドとオペレーションを示
す。図5aはFUNNEL−SHIFT命令の二つの3
2ビットのデータオペランドを示し、これらがデータG
およびHとして示されている。FUNNEL−SHIF
T命令の場合、やはり図5aに示されるように、二つの
32ビットのオペランドは連結されている。FUNNE
L−SHIFT命令の第三のオペランドは、単一の側面
だけを与えるビット操作オペランドであり、通常5ビッ
トのオペランドとして実施される。この5ビットがSH
IFTアーギュメントを定義する。SHIFTアーギュ
メントは、両方のデータGおよびHを右シフトするビッ
ト数(すなわち、各々の最上位ビットがそれぞれの最下
位ビットのもとの位置に向かってシフトされるように右
シフトするビット数)を定義する。このようにして図5
aは、右向きの矢印の先のSHIFTアーギュメントに
応答した右シフトを示す。シフトによる結果R4が図5
bに示されている。結果R4は、それぞれGSおよびHS
と表される、右シフト後のデータGおよびHの値を含む
32ビットの結果である。更に注意すべきことは、FU
NNEL−SHIFT命令の32ビットの結果R4はそ
の最下位ビット位置で始まり、データGのビット位置は
シフト量に等しいということである。たとえば、SHI
FTが5に等しければ、データGは5位置だけ右シフト
され、したがって、ビットG0からG4はシフトアウトさ
れるので、結果R4のGSはその最下位ビットがG5で始
まり、G31までのデータGの残りのビットを含む。ま
た、データHも右シフトされるので、結果R4のHS
0からH0+SHIFT-1までのHのビットを含む。この場合
も、たとえば、SHIFTが5に等しければ、HSはH0
からH4までを含む。
【0008】前記命令により与えられるオペレーション
と機能を前提として、本発明者は種々の観察を行った。
これらの観察により更に、後で説明する好適実施例が導
入される。第一の観察として、INSERT命令、DE
POSIT命令、およびREPLACE命令のいずれか
に対する10ビット値と、FUNNEL−SHIFT命
令に対する5ビット値は各命令の中の即値オペランドと
することができる。その代わりに、これらの値は読出し
データ、たとえばレジスタまたはメモリロケーションか
らの読出しデータとして与えられてもよい。しかし、即
値オペランドのアプローチまたは読出し値のアプローチ
については、後で更に詳しく説明するように、欠点があ
る。
【0009】INSERT命令、DEPOSIT命令、
REPLACE命令、およびFUNNEL−SHIFT
命令のいずれかに対する10ビットまたは5ビットの値
が(たとえば、レジスタファイルからの)外部読出しに
よって与えられるとき、読出される装置には付加的な読
出しポートが必要とされる。更に詳しく述べると、上記
の三つのオペランド命令の場合、外部読出しには第一の
データオペランド、第二のデータオペランド、および第
三のオペランドとしての10ビット(または5ビット)
の値が含まれるので、総計三つの読出しポートが必要と
される。このような付加的なポートは、スペースと実際
の装置コストの点で非常に高価になり得る。通常、レジ
スタファイルのコストは読出しポート数の二乗に比例し
て増加する傾向にあるので、第三のオペランドに対する
付加的なポートは負担となり、多数のプロセッサを具体
化する際、手が出せないものとなる恐れがある。更に、
この第三のポートの値を外部に読出さなければならない
場合には、レジスタファイルと、ポートから読出すこと
ができる回路との間に、付加的な一組の転送マルチプレ
クサが必要とされる。最後に、32個のレジスタを含む
レジスタファイルから外部読出し(すなわち、共通の具
体化)を行うものとして、これらの32個のレジスタの
中の一つのレジスタのアドレス指定をするために命令は
5ビットのフィールドを含まなければならない。したが
って、このアドレス指定機能を達成するために、命令に
5ビットの位置が必要とされる。
【0010】INSERT命令、DEPOSIT命令、
REPLACE命令、およびFUNNEL−SHIFT
命令のいずれかに対する10ビットまたは5ビットの値
が即値として命令に埋込まれたときは、命令のサイズは
必ず、INSERT命令、DEPOSIT命令、および
REPLACE命令に対しては10ビット、FUNNE
L−SHIFT命令に対しては5ビットだけ大きくされ
る。このビット数により、プロセッサ命令セットを収容
するために必要とされる操作コードのスペース量がかな
り増大することがあり得る。実際、この付加的な操作コ
ードのスペースの可能性のため、多くのプロセッサはこ
れらのビット操作命令を含まない。
【0011】
【発明が解決しようとする課題】上記のことに鑑みて、
本明細書の残りの部分で説明する好適実施例によって達
成されるように、従来技術のビット操作命令とそれらの
機能が制限されるという欠点に対処する必要が生じる。
【0012】
【課題を解決するための手段】好適実施例ではプロセッ
サを動作させるための方法が示される。この方法は命令
をフェッチする第一のステップを含む。命令は、命令操
作コードと、第一のデータオペランド(D1’)に対応
する第一のデータオペランドビット群と、第二のデータ
オペランド(D2’)に対応する第二のデータオペラン
ドビット群とを含む。第一のデータオペランドと第二の
データオペランドの少なくとも一方が整数N個のビット
で構成される。命令はまた、整数M個のビット(2M
整数Nより小さい)で構成される少なくとも一つの即値
ビット操作オペランドをも含む。この方法は更に命令を
実行する第二のステップを含む。この命令実行ステップ
は、第一のデータオペランドと第二のデータオペランド
の一方のビット数を操作するステップを含む。最後に、
操作されるビット数は少なくとも一つの即値ビット操作
オペランドに応じ、そして操作ステップは更に命令操作
コードに応じる。他の回路、システム、および方法も開
示され、特許請求される。
【0013】
【発明の実施の形態】従来の技術の項で図1から5bに
ついて説明したが、その説明は理解されたものとする。
【0014】図6は好適実施例による3オペランドのビ
ット操作命令に対する基本命令フォーマット20を示
す。命令20は操作コードを含む。従来技術と同様に、
操作コードは多数のビットを含み、ビットパターンが特
定の型の命令を定義する。やはり従来技術と同様に、命
令20は更に、データD1’およびデータD2’として示
されている二つのデータオペランドへの参照を含む(こ
こでアポストロフィー’は前に説明したデータオペラン
ドとの混同を避けるために使用される)。これらのデー
タオペランド参照は好ましくは、レジスタに対するもの
であるので、これらのデータが命令20に直接埋め込ま
れていることを示すことは意図されていない。しかし、
代替実施例では、可能性は少ないが、オペランドの一つ
が、特に長さが32ビットより短い場合に、命令の中に
配置された即値データであることは起こり得る。したが
って、いずれにしても、命令20は二つのビット群を含
み、一つのビット群はデータD1’に対応し、もう一つ
のビット群はデータD2’に対応する。各ビット群は
(たとえば、レジスタ内の)オペランドを参照するか、
または実際のオペランドである。これらの種々の代替案
にもかかわらず、従来技術の説明との一貫性のためと、
最新例として、本明細書の例では、データD1’および
2’はレジスタに記憶された通常32ビットの量とし
て説明する。命令20は一つまたは二つの即値アーギュ
メントで構成されるビット操作オペランドをも含む。好
適実施例では、これらのアーギュメントは各々、2ビッ
トのアーギュメントであるので、命令20の中に一つの
アーギュメントだけが埋込まれるときは合計2ビットが
使用され、命令20の中に二つの2ビットアーギュメン
トが埋込まれるときは合計4ビットが使用される。一つ
のアーギュメントか二つのアーギュメントかの選択はビ
ット操作命令の型によって決まり、これは命令の操作コ
ードによって定義される。最後に、従来技術と同様に、
命令20はあて先参照DEST’をも含む。この参照も
一般に32個のレジスタの中の一つのレジスタへのもの
であるので、やはり5ビットの識別子である。DES
T’ロケーションは、命令20のオペレーションの結果
が書込まれるレジスタである。
【0015】図6から命令20の具体化と発明の側面を
更に発展させるために、図7aおよび7bは命令20の
操作コードが本発明のINSERT命令を要求する場合
に具体化される命令20のオペレーションを示す。図7
aは本発明のINSERT命令の二つの32ビットのデ
ータオペランドを示し、これらがデータJおよびKとし
て示されている。本発明のINSERT命令の第三のオ
ペランドは、従来技術の側面と同じ二つの側面を与える
ビット操作オペランドであるが、より少ないビット数を
使用してこれを行うことにより、今求められている特徴
のある機能を生じる。詳しく説明すると、本発明のIN
SERT命令を達成するために具体化される命令20の
場合、第一の本発明の2ビットの即値オペランドがSH
IFTアーギュメントを定義し、第二の本発明の2ビッ
トのオペランドがLENGTHアーギュメントを定義す
る。SHIFTアーギュメントは、データJを右シフト
するバイト数、すなわち、それの最上位バイトがそれの
最下位バイトのもとの位置に向かってシフトされるよう
に右シフトするバイト数を定義する。このようにして図
7aは、右向きの矢印の先のSHIFTアーギュメント
に応答した右シフトを示す。四つの異なるバイトシフト
位置B0からB3が図示されており、2ビットのSHIF
Tアーギュメントがこれらの四つの位置のいずれか一つ
を表すことが理解されよう。更に、バイトシフトによる
結果が図7bではJSBと示してある。たとえば、SHI
FTが1に等しければ、データJは1バイトだけ右シフ
トされ(すなわち、バイト位置B0)、その結果、その
最下位バイトで始まり、データJの、より上位の3バイ
トをそなえたJSBが得られる。図7bのJSBはシフトの
機能を示すためのものに過ぎず、シフトされた値JSB
一時的に記憶するために付加的な記憶装置またはクロッ
クサイクルが必要になるということを示唆しようとする
ものではない。本発明の2ビットのLENGTHアーギ
ュメントは、JSB(すなわち、Jのシフトされた値)か
ら取出され、データKの最下位バイトで始まるデータK
の値の上にコピーされるバイト数を定義する。したがっ
て、本発明の2ビットのLENGTHアーギュメント
は、図7bに長さL0からL3として示された四つのバイ
ト整列(調整)(byte−aligned)長の一つ
を定義することができる。参考のために、データKとマ
ージされるJSBのバイト数LENGTHが図7bでJSL
として示されている。また、たとえば図7bは、2ビッ
トのLENGTHアーギュメントは、JSBのシフトされ
た値の2バイトをデータKの最下位2バイトの上にコピ
ーするように指定することにより、ビット0で始まり、
SBのLENGTH個のバイトをそなえた値JSLを含む
結果R5が作成される。結果R5の残りのバイトはデー
タKの対応するバイトロケーションと同じである。した
がって、JSのLENGTH個のバイトがデータKとマ
ージされると述べてもよい。
【0016】図7aおよび7bについての前記説明から
当業者には理解されるように、本発明のINSERT命
令に関連した機能は従来技術のINSERT命令と同様
に3オペランド操作を可能とする。しかし、本発明のI
NSERT命令はバイト整列ベースでそのシフトとマー
ジの機能を遂行する。バイト整列ベースはディジタルデ
ータ技術ではときにバイト粒度の使用と呼ばれる。好適
実施例でのバイト粒度の選択は、後で説明するように本
発明者が行った付加的な観察に基づいて行われる。
【0017】本発明のシフトとマージの一方または両方
の命令での好適実施例のバイト粒度の使用に対する第一
の考慮すべき事柄として、従来技術の項で詳細に説明し
たように、従来技術のシフトとマージの一方または両方
の命令は命令を具体化するために必要なビット数の要求
が非常に過重である。これに反して、好適実施例ははる
かに少ないビット数で3オペランドのシフトとマージの
一方または両方のオペレーションを可能とする。たとえ
ば、命令10および20のアーギュメントのビット数に
ついて見ると、命令10はそのアーギュメントについて
命令20に比べて6ビット余計に必要とすることが容易
にわかる(すなわち、命令10の場合の10ビットから
命令20の場合の4ビットを引く)。この6ビットの削
減は、プロセッサで命令を具体化するために必要なブー
ルスペースの点から極めて重要である。したがって、そ
の結果、本実施例によって達成されるような6ビットの
削減により、二つの5ビットのアーギュメントをそなえ
た従来技術のINSERT命令が必要とするブールスペ
ースの1/64(すなわち、ビット当たり1/2のスペ
ース削減で、6ビットに対して(1/2)6=1/6
4)を使用して本発明のINSERT命令を具体化する
ことができる。所要スペースの激減で、本発明のINS
ERT命令および後で説明する命令はずっと容易にプロ
セッサに組み込まれ、これによりそれらのプロセッサの
プログラマに対するこのような命令の利用可能性が向上
し、その結果、処理効率が改善される。
【0018】本発明のシフトとマージの一方または両方
の命令での好適実施例のバイト粒度の使用についての第
二の考慮すべき事柄として、バイト粒度はその機能にお
いて従来技術で行われる個別ビット粒度のように柔軟で
はないが、本発明者はバイトまたは半ワード(すなわ
ち、2バイト)ベースで動作するそれらの型の処理に対
してはこの制約は少なくなるか、または実際には制約で
なくなるということに気づいたということに注意すべき
である。たとえば、マルチメディアの進展を支援するプ
ロセッサのような、単一命令マルチメディアデータ(S
IMD)オペレーションを遂行するように構成された多
数の現代的なプロセッサでは、その大半のオペレーショ
ンがバイトベースの操作を含むような映像またはマルチ
メディアのオペレーションが行われることが多い。した
がって、上記の本発明のINSERT命令はこのような
プロセッサに容易に組み込むことができるので、本発明
のINSERT命令のバイト粒度機能を利用することが
できる。もう一つの例として、通信用データをパックし
てストリームとするような、多数の現代的な通信アプリ
ケーションも、バイトベースの操作を行うオペレーショ
ンを含む。したがって、この場合も、このようなアプリ
ケーションは、従来技術のINSERT命令で必要とさ
れる追加の負担や複雑さなしに、本発明のINSERT
命令とその機能から利益を得る。最後に、これらの側面
は、以下に説明する本発明の命令と機能にも当てはま
る。
【0019】図8aおよび8bは、その操作コードビッ
トが本発明のDEPOSIT命令を指定する場合に具体
化される命令20のオペレーションを示す。図8aは本
発明のDEPOSIT命令の二つの32ビットのデータ
オペランドを示し、これがデータLおよびMとして示さ
れている。本発明のDEPOSIT命令の第三のオペラ
ンドはビット操作オペランドである。このビット操作オ
ペランドは即値オペランドであって、従来技術のDEP
OSIT命令と同じ二つの側面を与えるが、図6と首尾
一貫して、二つの5ビットアーギュメントではなくて二
つの2ビットアーギュメントを使用する。詳しく述べる
と、本発明のDEPOSIT命令を達成するために具体
化される命令20の場合、第一の本発明の2ビットの即
値オペランドはSHIFTアーギュメントを定義し、第
二の本発明の2ビットのアーギュメントはLENGTH
アーギュメントを定義する。SHIFTアーギュメント
は、データLを左シフトするビット数、すなわち、それ
の下位バイトがそれの最上位バイトのもとの位置に向か
ってシフトされるように左シフトするバイト数を定義す
る。このようにして図8aは、左向きの矢印の先のSH
IFTアーギュメントに応答した左シフトを示す。四つ
の異なるシフト位置S0からS3が示されているので、2
ビットのSHIFTアーギュメントがこれらの四つの位
置のいずれか一つを表すことが理解できる。また、バイ
トシフトによる結果を図8bではLSBと示してある。た
とえば、SHIFTが2に等しければ、データLは2バ
イトだけ左シフトされ、その結果、その最下位ビットで
始まり、データLの、最下位の2バイトをそなえたLSB
が得られる。注意すべきことは、図8bのLSBはシフト
の機能を示すためのものに過ぎず、シフトされた値LSB
を一時的に記憶するために付加的な記憶装置またはクロ
ックサイクルが必要になるということを示唆しようとす
るものではないということである。LENGTHアーギ
ュメントは、LSBから取出され、SHIFTバイトロケ
ーションで始まるデータMの値の上にコピーされる(す
なわちその中にマージされる)バイト数を定義する。こ
れにより、結果R6が得られる。したがって、結果R6
に関連して、図8bは対応するバイト整列された四つの
シフト位置S0からS3も示す。マージされるデータはS
HIFTアーギュメントで表されるロケーションから挿
入されるからである。たとえば、図8bはSHIFTが
2に等しく、LENGTHがLSBの1バイトをデータM
にマージすべきことを指示している場合を示す。マージ
されたデータはLSLとして示されている。結果R6の中
の残りのバイトはデータMの対応するバイトロケーショ
ンと同じであり、結果R6の上位バイトロケーションと
下位バイトロケーションの両方に現れる(SHIFTが
0より大きく、3より小さいものとする)。
【0020】図9aおよび9bは、その操作コードビッ
トが本発明のREPLACE命令を指定する場合に具体
化される命令20のオペレーションを示す。図9aは本
発明のREPLACE命令の二つの32ビットのデータ
オペランドを示し、これがデータNおよびPとして示さ
れている。本発明のREPLACE命令の第三のオペラ
ンドは即値ビット操作オペランドであり、従来技術のR
EPLACE命令と同じ二つの側面を与えるが、図6と
首尾一貫して、本発明のREPLACE命令は二つの5
ビットアーギュメントではなくて二つの2ビットアーギ
ュメントを使用する。詳しく述べると、本発明のREP
LACE命令を達成するために具体化される命令20の
場合、第一の本発明の2ビットの即値オペランドはPO
SITIONアーギュメントを定義し、第二の本発明の
2ビットのアーギュメントはLENGTHアーギュメン
トを定義する。POSITIONアーギュメントは、四
つの位置P0からP3の一つで生じるものとして図9aに
示された、データNの中のバイト位置を定義する。LE
NGTHアーギュメントはPOSITIONロケーショ
ンで始まるデータEからコピーされるバイト数を定義す
る。更に詳しく述べると、これらのコピーされたバイト
は図9bでNLBとして示されている量を形成し、POS
ITIONロケーションで始まるデータPの値の上にコ
ピーされる。したがって、図9bに示すように、データ
Pの対応するバイトロケーションの上にNLBがコピーさ
れることにより、ビットPOSITIONで始まるLE
NGTH個のバイトの値NLBを含むマージされた結果R
7が作成される。結果R7の中の残りのバイトはデータ
Pの対応するビットロケーションと同じである。
【0021】図10aおよび10bは、その操作コード
ビットが本発明のFUNNEL−SHIFT命令を指定
する場合に具体化される命令20のオペレーションを示
す。図10aは本発明のFUNNEL−SHIFT命令
の二つの32ビットのデータオペランドを示す。図10
aは本発明のFUNNEL−SHIFT命令の二つの3
2ビットのデータオペランドを示す。これらはデータQ
およびRとして示されており、やはり図10aに示され
るように連結されている。本発明のFUNNEL−SH
IFT命令の第三のオペランドは即値ビット操作オペラ
ンドであり、これは好ましくは2ビットであり、SHI
FTアーギュメントを定義する。SHIFTアーギュメ
ントは、両方のデータQおよびRを右シフトするバイト
数、すなわち、各々の最上位ビットがそれぞれの最下位
ビットのもとの位置に向かってシフトされるように右シ
フトするバイト数を定義する。このようにして図10a
は、右向きの矢印の先のSHIFTアーギュメントに応
答した右シフトを示す。四つのシフト位置S0からS3
2ビットのSHIFTアーギュメントで表すことができ
る。シフトによる結果R8が図10bに示されている。
結果R8は、それぞれQSBおよびRSBと表される、右シ
フト後のデータQおよびRの値を含む。更に注意すべき
ことは、本発明のFUNNEL−SHIFT命令の32
ビットの結果R8はその最下位ビット位置で始まり、デ
ータQのバイト位置はバイトシフト量に等しいというこ
とである。たとえば、図10bに示されるようにSHI
FTが1に等しければ、データRは1バイト位置だけ右
シフトされ、したがって、ビットR0からR7はシフト
アウトされるので、結果R8の中のR3はその最下位ビ
ットロケーションがデータRの第二のもとのバイトのビ
ットR8で始まり、データRのバイトの残りを含む。ま
た、データQも右シフトされるので、結果R8の中のQ
SBはQ0からQ0+([SHIFT*8]-1)までのQのバイトを含
む。この場合も、たとえば、SHIFTが1に等しけれ
ば、QSBはQ0からQ7までを含む。
【0022】図11は、前に説明した本発明の命令の一
つ以上の命令をその中で具体化することができ、このよ
うな命令に応答して、より効率的な3オペランドのシフ
トとマージの一方または両方のオペレーションを行うこ
とができる、プロセッサ30のブロック図を示す。プロ
セッサ30は好ましくは単一の集積回路であり、前記命
令との関係で図示と説明を簡略化するようにブロック図
で示されている。当業者には容易に理解されるように、
プロセッサのオペレーションと機能に関するものとして
示されているブロックから付加的な詳細が生じる。ま
た、プロセッサ30は、TMS320C62x/C67
xディジタル信号プロセッサを含む、テキサス・インス
ツルメンツ社(Texas Instruments
Incorported)から市販されているプロセッ
サのTMS320 C6000シリーズからのプロセッ
サを代表している。
【0023】プロセッサ30にはプログラムメモリ32
が含まれる。プログラムメモリ32は、装置によっては
プログラムキャッシュとして使用することができる。プ
ロセッサ30にはデータメモリ34も含まれる。メモリ
32および34は中央処理装置(CPU)36と通信す
るように結合される。CPU36にはパイプライン38
が含まれる。パイプライン38は、プログラムフェッチ
ユニット38a、命令ディスパッチユニット38b、お
よび命令復号ユニット38cとして示された種々の段階
をそなえている。CPU36のパイプラインは更に、パ
スAおよびパスBとして示されている二つのデータパス
を含む。各データパスは対応する一組の四つの機能ユニ
ット(パスAに対するL1、S1、M1、およびD1
と、パスBに対するL2、S2、M2、およびD2)を
そなえている。手短かに言えば、機能ユニットのオペレ
ーション機能が次の表1に示されている。表1で、与え
られた具体化に応じて付加的な機能を各ユニットに追加
したり、各ユニットから削除することができる。
【0024】
【表1】
【0025】各組の機能ユニットは(レジスタファイル
AおよびレジスタファイルBとして示されている)対応
するデータパスレジスタファイルと通信することができ
る。各レジスタファイルは32個の32ビットレジスタ
を含む。図示されていないが、これらの通信のいくつか
は交差結合されたパスをも含む。これにより、パスAの
いくつかの機能ユニットがレジスタファイルBから読出
すことができ、パスBのいくつかの機能ユニットがレジ
スタファイルAから読出すことができる。CPU36に
は、制御レジスタ40、制御論理42、試験論理44、
エミュレーション論理46、および割込み論理48も含
まれる。プロセッサ30には、これらの識別子に対応す
る機能を遂行するための直接メモリアクセス(”DM
A”)/外部メモリインタフェース(”EMIF”)ブ
ロック50のような付加的なブロックも含まれ得る。プ
ロセッサ30には、たとえば、タイマ、直列ポート、お
よびホストポートインタフェースを含む、種々の周辺装
置への接続を支援し得る周辺ブロック52も含まれてい
る。最後に、プロセッサ30は電源ダウン論理ブロック
54を含む。電源ダウン論理ブロック54は、CPUア
クティビティ、周辺装置アクティビティ、およびフェイ
ズロックドループ(PLL)のアクティビティを停止す
ることにより、消費電力を低減することができる。
【0026】次に、パイプライン内での命令処理の側面
と関連して、プロセッサ30の動作について説明する。
これにより、上記の本発明のシフトとマージの一方また
は両方の命令がプロセッサ30の中で機能をどのように
果たすかを、再び例により、更に理解することができ
る。プログラムフェッチユニット38a、命令ディスパ
ッチユニット38b、および命令復号ユニット38cは
一緒になってCPUクロックサイクル毎に機能ユニット
に8個以内の32ビット命令を送達することができる。
命令の処理は二つのデータパス(AおよびB)の各々で
行われ、前に説明したように、これらのパスは各々、4
個の機能ユニット(L、S、M、およびD)と32個の
32ビット汎用レジスタを含む。プロセッサ30のパイ
プラインオペレーションを更に説明するために、例とし
て以下’C62xについてこのようなオペレーションの
説明を行う。
【0027】フェッチユニット38aについては、これ
は8個の命令のフェッチパケットを使用する。8個の命
令はすべて一緒にフェッチ処理の中を進む。フェッチ処
理は四つのフェーズ(プログラムアドレス生成フェー
ズ、プログラムアドレス送出フェーズ、プログラムアク
セスレディ待合わせフェーズ、およびプログラムフェッ
チパケット受信フェーズ)で構成される。プログラムア
ドレス生成フェーズの間に、CPUでプログラムアドレ
スが生成される。プログラムアドレス送出フェーズで
は、プログラムアドレスがメモリに送出される。プログ
ラムアクセスレディ待合わせフェーズでは、メモリの読
出しが行われる。最後に、プログラムフェッチパケット
受信フェーズでは、CPUでフェッチパケットが受信さ
れる。
【0028】命令ディスパッチユニット38bおよび命
令復号ユニット38cについては、ディスパッチユニッ
ト38bでフェッチパケットが実行パケットに分割され
る。実行パケットは一つの命令または2個から8個の並
行命令で構成される。ディスパッチユニット38bは実
行パケット内の命令を適当な機能ユニットに割当てるこ
とも行う。命令復号ユニット38cのオペレーションで
は、機能ユニット内での命令の実行のために、ソースレ
ジスタ、あて先レジスタ、および結合されたパスが復号
される。その後、与えられたクロックサイクルの間、命
令を割当てられた各機能ユニットは命令を実行する。実
行パケットが8個までの命令を含み得るとした場合、単
一のクロック(と実行)サイクル内に、これらの8個ま
での命令を実行することができる。実行パケットが8個
より少ない命令をそなえている場合には、対応する命令
をそなえていないパケットの残りのスロットは非オペレ
ーション命令(”NOPs”)として扱われ、NOP
(s)は機能ユニットにディスパッチされない。NOP
(s)と結合された実行はないからである。
【0029】プロセッサ30での実行は、ある命令を収
容するために5個のフェーズに分解される。しかし、ほ
とんどの命令の場合、これらのフェーズの中の一つだけ
を実行する必要がある。たとえば、いわゆる単一サイク
ル命令の場合、単一サイクル命令は一つのフェーズで結
果を演算し、結果をレジスタに書込む。もう一つの例と
して、乗算命令の場合、第一の実行フェーズで乗算命令
はオペランドを読んで、その演算を開始し、第二の実行
フェーズで乗算命令は結果を演算して、結果をレジスタ
に書込む。更にもう一つの例として、ロード命令の場
合、5個のフェーズで実行する。ロード命令は、(1)
アドレスの演算、(2)メモリへのアドレスの送出、
(3)メモリへのアクセス、(4)CPUへのデータの
返送、(5)レジスタへのデータの書込み、のステップ
をこの順に遂行する。
【0030】前記のことから、前に説明した本発明のシ
フトとマージの一方または両方の命令の一つ以上をプロ
セッサ30がどのように具体化できるかを当業者が理解
できる。詳しく述べると、このような各命令はプロセッ
サ30の操作コードスペースに含めることができるの
で、メモリ32に記憶され、そしてメモリ32から検索
されるプログラムの一部とすることができる。命令が一
旦フェッチされ、ディスパッチされれば、前に説明した
ように、命令は二つのデータオペランドと、二つのデー
タオペランドに対するオペレーションを定義する一つま
たは二つのアーギュメントで構成される即値を含むこと
になる。したがって、実行の間、実行のため(たとえ
ば、レジスタからメモリへ)データオペランドを利用可
能とされる必要があるが、即値は直接アクセス可能であ
り、付加的な外部読出しを必要としない。次に、シフト
とマージの一方または両方の命令は、データオペランド
の検索と同じフェーズ、または一つ以上の付加的な実行
フェーズで実行される。いずれにしろ、この実行の間、
シフトオペレーション(それがある場合)とマージオペ
レーションの一方または両方が指定されるので、実行ユ
ニットはデータオペランドのビット数より少ない粒度で
オペレーションを遂行する。この場合も、好適実施例で
はこの粒度は、シフトとマージの一方または両方の命令
の中に埋込まれた2ビットのアーギュメントにより定義
されるバイトベースになっている。
【0031】上記のことから理解されるように、本実施
例は3オペランドのシフトとマージの一方または両方の
特性を共通にそなえた、本発明の種々の命令と、対応す
る機能を提供する。また、本実施例を詳細に説明してき
たが、発明の範囲を逸脱することなく上記の説明に対し
て種々の置換、変形、または変更を加えることができ
る。たとえば、説明した本発明の命令の各々に対する好
適実施例とその結果の機能はバイトベースのオペレーシ
ョンを必要とするが、従来技術の単一ビットの粒度より
大きい他のレベルの粒度を使用して更に他の代替案を行
うこともできる。たとえば、シフトとマージの一方また
は両方に対してバイトのロケーションを指定するために
二つの2ビットアーギュメントを使用するのではなく
て、二つの3ビットアーギュメントを使用することもで
き、あるいは二つの4ビットアーギュメントを使用する
こともできる。これにより、シフトとマージの一方また
は両方のオペレーションに対して、各アーギュメントは
それぞれ8個または16個までの異なるロケーションを
与える。更にもう一つの例として、前記の例では命令が
二つのアーギュメントを含むとき、両方のアーギュメン
トに対して同じビット数を与えるのに対して、更に他の
変形では命令は第一の粒度レベルの第一のアーギュメン
トと第二の、そして異なる粒度レベルの第二のアーギュ
メントとを含むことができる。実際、これについては、
二つのアーギュメントの一方は5ビットのアーギュメン
トとし、他方は5ビットより少なくすることができる。
これにより、従来技術に比べて、命令とその機能を具体
化するために必要とされるビット数が更に削減される。
更にまた、上記の命令は32ビットのデータオペランド
の例で示されたが、本教示は他のサイズのデータオペラ
ンドにも適用できることは理解されるはずである。その
ような場合、本発明の命令とその機能はデータオペラン
ドのサイズによって各ビットを識別するために必要な粒
度より大きな粒度をそなえた少なくとも一つのアーギュ
メントを含む。最後に、図11のプロセッサは本命令と
対応する機能を具体化することができる型のプロセッサ
の例を示すが、他の多数のプロセッサがここに教示した
テクノロジーを同様に具体化することができる。これら
の付加的な例が与えられたことにより、当業者は特許請
求の範囲に規定された発明の範囲を更に理解されるはず
である。
【0032】以上の説明に関して更に以下の項を開示す
る。 (1)プロセッサを動作させるための方法であって、命
令操作コードと、第一のデータオペランドに対応する第
一のデータオペランドビット群と、第二のデータオペラ
ンドに対応する第二のデータオペランドビット群とを含
む命令であって、第一のデータオペランドと第二のデー
タオペランドの少なくとも一方が整数N個のビットで構
成され、少なくとも一つの即値ビット操作オペランドが
Mが整数Nより小さいような整数M個のビットで構成
される、命令をフェッチするステップと、命令を実行す
るステップであって、第一のデータオペランドと第二の
データオペランドの一方のビット数を操作するステップ
を含み、操作されるビット数は少なくとも一つの即値ビ
ット操作オペランドに応じ、そして操作ステップは更に
命令操作コードに応じる、命令実行ステップとを含むプ
ロセッサの動作方法。
【0033】(2)第1項記載のプロセッサの動作方法
であって、前記少なくとも一つの即値ビット操作オペラ
ンドが、整数M個のビットで構成される第一の即値ビッ
ト操作オペランドと、整数M個のビットで構成される第
二の即値ビット操作オペランドとを含み、前記命令実行
ステップが更に、第一の即値ビット操作オペランドに応
じて第一のデータオペランドのビット数を操作するステ
ップと、第二の即値ビット操作オペランドに応じて第二
のデータオペランドのビット数を操作するステップとを
含む、プロセッサの動作方法。
【0034】(3)第2項記載のプロセッサの動作方法
であって、第一のデータオペランドのビット数を操作す
る前記ステップが、第一のデータオペランドの最上位ビ
ットが第一のデータオペランドの最下位ビットロケーシ
ョンに向かう方向にシフトされるように第一のデータオ
ペランドをシフトするステップを含み、第一の即値ビッ
ト操作オペランドが、第一のデータオペランドの最上位
ビットが第一のデータオペランドの最下位ビットロケー
ションに向かう方向にシフトされる程度を指定し、第二
のデータオペランドのビット数を操作する前記ステップ
が、前記シフトステップの後に、第二のデータオペラン
ドの一部の上に第一のデータオペランドの一部をコピー
するステップを含み、第二の即値ビット操作オペランド
が、第二のデータオペランドの一部の上にコピーされる
第一のデータオペランドの一部を指定する、プロセッサ
の動作方法。
【0035】(4)第3項記載のプロセッサの動作方法
であって、前記シフトステップの後に、第二のデータオ
ペランドの一部の上に第一のデータオペランドの一部を
コピーする前記ステップが、前記シフトステップの後
に、第二のデータオペランドの最下位部分の上に第一の
データオペランドの一部をコピーするステップを含む、
プロセッサの動作方法。
【0036】(5)第2項記載のプロセッサの動作方法
であって、第一のデータオペランドのビット数を操作す
る前記ステップが、第一のデータオペランドの最下位ビ
ットが第一のデータオペランドの最上位ビットロケーシ
ョンに向かう方向にシフトされるように第一のデータオ
ペランドをシフトするステップを含み、第一の即値ビッ
ト操作オペランドが、第一のデータオペランドの最下位
ビットが第一のデータオペランドの最上位ビットに向か
う方向にシフトされる程度を指定し、第二のデータオペ
ランドのビット数を操作する前記ステップが、前記シフ
トステップの後に、第二のデータオペランドの一部の上
に第一のデータオペランドの一部をコピーするステップ
を含み、第二の即値ビット操作オペランドが、第二のデ
ータオペランドの一部の上にコピーされる第一のデータ
オペランドの一部を指定する、プロセッサの動作方法。
【0037】(6)第5項記載のプロセッサの動作方法
であって、前記シフトステップの後に、第二のデータオ
ペランドの一部の上に第一のデータオペランドの一部を
コピーする前記ステップが、前記シフトステップの後
に、第一の即値ビット操作オペランドによって指定され
たように、第二のデータオペランドの一部の上に第一の
データオペランドの一部をコピーするステップを含む、
プロセッサの動作方法。
【0038】(7)第2項記載のプロセッサの動作方法
であって、前記命令実行ステップが更に、第二のデータ
オペランドの一部の上に第一のデータオペランドの一部
をコピーするステップを含み、第一の即値ビット操作オ
ペランドが、第二のデータオペランドの一部の上にコピ
ーされる第一のデータオペランドの一部を指定し、第二
の即値ビット操作オペランドが、その上に第一のデータ
オペランドの一部がコピーされる第二のデータオペラン
ドの一部を指定する、プロセッサの動作方法。
【0039】(8)第1項記載のプロセッサの動作方法
であって、前記命令実行ステップが更に、第一のデータ
オペランドの最上位ビットが第一のデータオペランドの
最下位ビットロケーションに向かう方向にシフトされる
ように第一のデータオペランドをシフトするステップで
あって、第一の即値ビット操作オペランドが、第一のデ
ータオペランドの最上位ビットが第一のデータオペラン
ドの最下位ビットロケーションに向かう方向にシフトさ
れる程度を指定する、第一のデータオペランドシフトス
テップと、第二のデータオペランドの最上位ビットが第
二のデータオペランドの最下位ビットロケーションに向
かう方向にシフトされるように第二のデータオペランド
をシフトするステップであって、第一の即値ビット操作
オペランドが、第二のデータオペランドの最上位ビット
が第二のデータオペランドの最下位ビットロケーション
に向かう方向にシフトされる程度を指定する、第二のデ
ータオペランドシフトステップと、前記二つのシフトス
テップの後に結果を形成するステップであって、第一の
データオペランドの最下位ビットロケーションを超えて
シフトされない第一のデータオペランドのビットと第二
のデータオペランドの最下位ビットロケーションを超え
てシフトされる第二のデータオペランドのビットとを連
結するステップを含む、結果形成ステップとを含むプロ
セッサの動作方法。
【0040】(9)第1項記載のプロセッサの動作方法
であって、前記少なくとも一つの即値ビット操作オペラ
ンドが、整数M個のビットで構成される第一の即値ビッ
ト操作オペランドと、整数Mに等しくない整数P個のビ
ットで構成される第二の即値ビット操作オペランドとを
含み、前記命令実行ステップが更に、第一の即値ビット
操作オペランドに応じて第一のデータオペランドのビッ
ト数を操作するステップと、第二の即値ビット操作オペ
ランドに応じて第二のデータオペランドのビット数を操
作するステップとを含む、プロセッサの動作方法。
【0041】(10)第1項記載のプロセッサの動作方
法であって、第一のデータオペランドに対応する第一の
データオペランドビット群が第一のデータオペランドを
記憶するレジスタのレジスタアドレスを含む、プロセッ
サの動作方法。
【0042】(11)第10項記載のプロセッサの動作
方法であって、第二のデータオペランドに対応する第二
のデータオペランドビット群が第二のデータオペランド
を記憶するレジスタのレジスタアドレスを含む、プロセ
ッサの動作方法。
【0043】(12)第10項記載のプロセッサの動作
方法であって、第二のデータオペランドに対応する第二
のデータオペランドビット群が第二のデータオペランド
で構成される即値データ値を含む、プロセッサの動作方
法。
【0044】(13)プロセッサであって、命令をフェ
ッチするための回路と、複数の命令に対するコードを記
憶するための命令スペースであって、命令の中の少なく
とも一つはフェッチ回路によってフェッチされるように
動作することができ、そして命令の中の少なくとも一つ
は命令操作コードと、第一のデータオペランドに対応す
る第一のデータオペランドビット群と、第二のデータオ
ペランドに対応する第二のデータオペランドビット群と
を含み、第一のデータオペランドと第二のデータオペラ
ンドの少なくとも一方が整数N個のビットで構成され、
少なくとも一つの即値ビット操作オペランドが2Mが整
数Nより小さいような整数M個のビットで構成される、
命令スペースと、命令を実行する回路であって、第一の
データオペランドと第二のデータオペランドの一方のビ
ット数を操作するための回路を含み、操作されるビット
数は少なくとも一つの即値ビット操作オペランドに応
じ、そして操作回路は更に命令操作コードに応じる、命
令実行回路とを具備するプロセッサ。
【0045】(14)第13項記載のプロセッサであっ
て、前記少なくとも一つの即値ビット操作オペランド
が、整数M個のビットで構成される第一の即値ビット操
作オペランドと、整数M個のビットで構成される第二の
即値ビット操作オペランドとを含み、前記命令実行回路
が更に、第一の即値ビット操作オペランドに応じて第一
のデータオペランドのビット数を操作するための回路
と、第二の即値ビット操作オペランドに応じて第二のデ
ータオペランドのビット数を操作するための回路とを含
む、プロセッサ。
【0046】(15)第14項記載のプロセッサであっ
て、第一のデータオペランドのビット数を操作するため
の前記回路が、第一のデータオペランドの最上位ビット
が第一のデータオペランドの最下位ビットロケーション
に向かう方向にシフトされるように第一のデータオペラ
ンドをシフトする回路を含み、第一の即値ビット操作オ
ペランドが、第一のデータオペランドの最上位ビットが
第一のデータオペランドの最下位ビットロケーションに
向かう方向にシフトされる程度を指定し、第二のデータ
オペランドのビット数を操作するための前記回路が、前
記シフト回路の動作の後に、第二のデータオペランドの
一部の上に第一のデータオペランドの一部をコピーする
ための回路を含み、第二の即値ビット操作オペランド
が、第二のデータオペランドの一部の上にコピーされる
第一のデータオペランドの一部を指定する、プロセッ
サ。
【0047】(16)第15項記載のプロセッサであっ
て、前記シフト回路の動作の後に、第二のデータオペラ
ンドの一部の上に第一のデータオペランドの一部をコピ
ーするための前記回路が、前記シフト回路の動作の後
に、第二のデータオペランドの最下位部分の上に第一の
データオペランドの一部をコピーするための回路を含
む、プロセッサ。
【0048】(17)第14項記載のプロセッサであっ
て、第一のデータオペランドのビット数を操作するため
の前記回路が、第一のデータオペランドの最下位ビット
が第一のデータオペランドの最上位ビットロケーション
に向かう方向にシフトされるように第一のデータオペラ
ンドをシフトするための回路を含み、第一の即値ビット
操作オペランドが、第一のデータオペランドの最下位ビ
ットが第一のデータオペランドの最上位ビットに向かう
方向にシフトされる程度を指定し、第二のデータオペラ
ンドのビット数を操作するための前記回路が、前記シフ
ト回路の動作の後に、第二のデータオペランドの一部の
上に第一のデータオペランドの一部をコピーするための
回路を含み、第二の即値ビット操作オペランドが、第二
のデータオペランドの一部の上にコピーされる第一のデ
ータオペランドの一部を指定する、プロセッサ。
【0049】(18)第17項記載のプロセッサであっ
て、前記シフト回路の動作の後に、第二のデータオペラ
ンドの一部の上に第一のデータオペランドの一部をコピ
ーするための前記回路が、前記シフト回路の動作の後
に、第一の即値ビット操作オペランドによって指定され
たように、第二のデータオペランドの一部の上に第一の
データオペランドの一部をコピーするための回路を含
む、プロセッサ。
【0050】(19)第14項記載のプロセッサであっ
て、前記命令実行回路が更に、第二のデータオペランド
の一部の上に第一のデータオペランドの一部をコピーす
るための回路を含み、第一の即値ビット操作オペランド
が、第二のデータオペランドの一部の上にコピーされる
第一のデータオペランドの一部を指定し、第二の即値ビ
ット操作オペランドが、その上に第一のデータオペラン
ドの一部がコピーされる第二のデータオペランドの一部
を指定する、プロセッサ。
【0051】(20)第13項記載のプロセッサであっ
て、前記命令実行回路が更に、第一のデータオペランド
の最上位ビットが第一のデータオペランドの最下位ビッ
トロケーションに向かう方向にシフトされるように第一
のデータオペランドをシフトするための回路であって、
第一の即値ビット操作オペランドが、第一のデータオペ
ランドの最上位ビットが第一のデータオペランドの最下
位ビットロケーションに向かう方向にシフトされる程度
を指定する、第一のデータオペランドシフト回路と、第
二のデータオペランドの最上位ビットが第二のデータオ
ペランドの最下位ビットロケーションに向かう方向にシ
フトされるように第二のデータオペランドをシフトする
ための回路であって、第一の即値ビット操作オペランド
が、第二のデータオペランドの最上位ビットが第二のデ
ータオペランドの最下位ビットロケーションに向かう方
向にシフトされる程度を指定する、第二のデータオペラ
ンドシフト回路と、前記二つのシフト回路の動作の後に
結果を形成するための回路であって、第一のデータオペ
ランドの最下位ビットロケーションを超えてシフトされ
ない第一のデータオペランドのビットと第二のデータオ
ペランドの最下位ビットロケーションを超えてシフトさ
れる第二のデータオペランドのビットとを連結するため
の回路を含む、結果形成回路とを含むプロセッサ。
【0052】(21)プロセッサを動作させるための方
法。この方法は命令(20)をフェッチする第一のステ
ップを含む。命令は、命令操作コード(OPCODE)
と、第一のデータオペランド(DATA D1’)に対
応する第一のデータオペランドビット群と、第二のデー
タオペランド(DATA D2’)に対応する第二のデ
ータオペランドビット群とを含む。第一のデータオペラ
ンドと第二のデータオペランドの少なくとも一方が整数
N個のビットで構成される(たとえば、N=32)。命
令はまた、整数M個のビット(2Mが整数Nより小さ
い)で構成される少なくとも一つの即値ビット操作オペ
ランド(ARGUMENT(S))をも含む。この方法
は更に命令を実行する第二のステップをも含む。この命
令実行ステップは、第一のデータオペランドと第二のデ
ータオペランドの一方のビット数を操作するステップを
含む。最後に、操作されるビット数は少なくとも一つの
即値ビット操作オペランドに応じ、そして操作ステップ
は更に命令操作コードに応じる。
【図面の簡単な説明】
【図1】従来技術の一般的なシフトとマージの一方また
は両方の命令を示す図である。
【図2】従来技術のINSERT命令の二つのデータオ
ペランドを示す図であって、aはデータAオペランドの
右シフト前の図、bは右シフト後のデータAオペランド
を示し、右シフトした値をデータBオペランドの下位ビ
ット上にコピーした後のINSERT命令の結果を示す
図である。
【図3】従来技術のDEPOSIT命令の二つのデータ
オペランドを示す図であって、aはデータCオペランド
の左シフト前の図、bは左シフト後のデータCオペラン
ドを示し、左シフトした値をデータDオペランドの選択
されたビット群上にコピーした後のDEPOSIT命令
の結果を示す図である。
【図4】従来技術のREPLACE命令の二つのデータ
オペランドを示す図であって、aはREPLACE命令
実行前の図、bはデータEオペランドに対するPOSI
TIONとLENGTHの定義を示し、POSITIO
Nビットから始まるデータEのLENGTHビットをデ
ータEオペランドの対応するビットロケーション上にコ
ピーした後のREPLACE命令の結果を示す図であ
る。
【図5】従来技術のFUNNEL−SHIFT命令の二
つのデータオペランドを示す図であって、aはデータG
およびHのオペランドの右シフト前の図、bは右シフト
後のデータGおよびHのオペランドを示し、FUNNE
L−SHIFT命令の結果を右シフトされた値の最下位
32ビットとして示す図である。
【図6】本発明の好適実施例によるシフトとマージの一
方または両方の命令を示す図である。
【図7】本発明のINSERT命令の二つのデータオペ
ランドを示す図であって、aはバイトベースのデータJ
オペランドの右シフト前の図、bは右シフト後のデータ
Jオペランドを示し、右シフトした値をデータKオペラ
ンドの下位ビット上にコピーした後のINSERT命令
の結果を示す図である。
【図8】本発明のDEPOSIT命令の二つのデータオ
ペランドを示す図であって、aはデータLオペランドの
左シフト前の図、bは左シフト後のデータLオペランド
を示し、左シフトした値をデータMオペランドの選択さ
れたビット群上にコピーした後のDEPOSIT命令の
結果を示す図である。
【図9】本発明のREPLACE命令の二つのデータオ
ペランドを示す図であって、aはREPLACE命令実
行前の図、bはデータNオペランドに対するPOSIT
IONとLENGTHの定義を示し、POSITION
ビットから始まるデータNのLENGTH個のバイトを
データPオペランドの対応するバイトロケーション上に
コピーした後のREPLACE命令の結果を示す図であ
る。
【図10】本発明のFUNNEL−SHIFT命令の二
つのデータオペランドを示す図であって、aはQおよび
Rのオペランドの1バイト以上の右シフト前の図、bは
右シフト後のQおよびRのオペランドを示し、FUNN
EL−SHIFT命令の結果を右シフトされた値の最下
位4バイトとして示す図である。
【図11】好適実施例を具体化するプロセッサのブロッ
ク図である。
【符号の説明】
20 命令 30 プロセッサ ARGUMENT アーギュメント D1’ データオペランド D2’ データオペランド OPCODE 操作コード

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサを動作させるための方法であ
    って、 命令操作コードと、第一のデータオペランドに対応する
    第一のデータオペランドビット群と、第二のデータオペ
    ランドに対応する第二のデータオペランドビット群とを
    含む命令であって、第一のデータオペランドと第二のデ
    ータオペランドの少なくとも一方が整数N個のビットで
    構成され、少なくとも一つの即値ビット操作オペランド
    が2Mが整数Nより小さいような整数M個のビットで構
    成される、命令をフェッチするステップと、 命令を実行するステップであって、第一のデータオペラ
    ンドと第二のデータオペランドの一方のビット数を操作
    するステップを含み、操作されるビット数は少なくとも
    一つの即値ビット操作オペランドに応じ、そして操作ス
    テップは更に命令操作コードに応じる、命令実行ステッ
    プとを含むプロセッサの動作方法。
  2. 【請求項2】 プロセッサであって、 命令をフェッチするための回路と、 複数の命令に対するコードを記憶するための命令スペー
    スであって、命令の中の少なくとも一つはフェッチ回路
    によってフェッチされるように動作することができ、そ
    して命令の中の少なくとも一つは命令操作コードと、第
    一のデータオペランドに対応する第一のデータオペラン
    ドビット群と、第二のデータオペランドに対応する第二
    のデータオペランドビット群とを含み、第一のデータオ
    ペランドと第二のデータオペランドの少なくとも一方が
    整数N個のビットで構成され、少なくとも一つの即値ビ
    ット操作オペランドが2Mが整数Nより小さいような整
    数M個のビットで構成される、命令スペースと、 命令を実行する回路であって、第一のデータオペランド
    と第二のデータオペランドの一方のビット数を操作する
    ための回路を含み、操作されるビット数は少なくとも一
    つの即値ビット操作オペランドに応じ、そして操作回路
    は更に命令操作コードに応じる、命令実行回路とを具備
    するプロセッサ。
JP2000329216A 1999-10-29 2000-10-27 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法 Abandoned JP2001134436A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US431562 1995-05-01
US09/431,562 US6430684B1 (en) 1999-10-29 1999-10-29 Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s)

Publications (1)

Publication Number Publication Date
JP2001134436A true JP2001134436A (ja) 2001-05-18

Family

ID=23712488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000329216A Abandoned JP2001134436A (ja) 1999-10-29 2000-10-27 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法

Country Status (2)

Country Link
US (1) US6430684B1 (ja)
JP (1) JP2001134436A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007528545A (ja) * 2004-03-10 2007-10-11 アーム・リミテッド データ・ワードの中へビットを挿入する装置および方法
JP2009037599A (ja) * 2002-08-09 2009-02-19 Marvell World Trade Ltd アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
JP5853177B2 (ja) * 2011-04-08 2016-02-09 パナソニックIpマネジメント株式会社 データ処理装置、及びデータ処理方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7318145B1 (en) 2001-06-01 2008-01-08 Mips Technologies, Inc. Random slip generator
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
US7340495B2 (en) * 2001-10-29 2008-03-04 Intel Corporation Superior misaligned memory load and copy using merge hardware
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
US7734898B2 (en) * 2004-09-17 2010-06-08 Freescale Semiconductor, Inc. System and method for specifying an immediate value in an instruction
JP4374363B2 (ja) * 2006-09-26 2009-12-02 Okiセミコンダクタ株式会社 ビットフィールド操作回路
US8045472B2 (en) 2008-12-29 2011-10-25 Apple Inc. Credit management when resource granularity is larger than credit granularity
US9313127B2 (en) * 2013-02-01 2016-04-12 Texas Instruments Incorporated Rotate-mask-merge and deposit-field instructions for packet processing
US10255462B2 (en) 2016-06-17 2019-04-09 Arm Limited Apparatus and method for obfuscating power consumption of a processor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4219874A (en) * 1978-03-17 1980-08-26 Gusev Valery Data processing device for variable length multibyte data fields
US4999796A (en) * 1989-12-14 1991-03-12 Motorola, Inc. Sticky bit detection and shifting logic
US5495598A (en) * 1993-12-23 1996-02-27 Unisys Corporation Stuck fault detection for branch instruction condition signals
US5787025A (en) * 1996-02-28 1998-07-28 Atmel Corporation Method and system for performing arithmetic operations with single or double precision

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009037599A (ja) * 2002-08-09 2009-02-19 Marvell World Trade Ltd アライメントまたはブロードキャスト命令を含むマルチメディア・コプロセッサの制御メカニズム
US8131981B2 (en) 2002-08-09 2012-03-06 Marvell International Ltd. SIMD processor performing fractional multiply operation with saturation history data processing to generate condition code flags
JP2007528545A (ja) * 2004-03-10 2007-10-11 アーム・リミテッド データ・ワードの中へビットを挿入する装置および方法
JP5853177B2 (ja) * 2011-04-08 2016-02-09 パナソニックIpマネジメント株式会社 データ処理装置、及びデータ処理方法

Also Published As

Publication number Publication date
US6430684B1 (en) 2002-08-06

Similar Documents

Publication Publication Date Title
JP2001134436A (ja) 効率的な粒度のシフトとマージの一方または両方の命令をそなえたプロセッサの回路、システム及び方法
JP4879307B2 (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
JP3976082B2 (ja) 異なった幅のvliwプロセッサコマンド
US20110225397A1 (en) Mapping between registers used by multiple instruction sets
JPH09512652A (ja) 多重命令セットによるデータ処理
JP2001202245A (ja) 改良式命令セットアーキテクチャを有するマイクロプロセッサ
US9021236B2 (en) Methods and apparatus for storing expanded width instructions in a VLIW memory for deferred execution
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
US7447886B2 (en) System for expanded instruction encoding and method thereof
US20030159021A1 (en) Selected register decode values for pipeline stage register addressing
KR100765567B1 (ko) 산술 논리 유닛 및 스택을 가지는 데이터 프로세서, 멀티미디어 장치 및 컴퓨터 판독가능 기록 매체
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
KR100322726B1 (ko) 번역 및 테스트를 위한 전문 밀리코드 명령
KR19990082747A (ko) 압축기억된십진수나눗셈에대한전문밀리코드명령
KR100322725B1 (ko) 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그
US8631173B2 (en) Semiconductor device
JP2006527436A (ja) データ処理装置及びレジスタ・ファイルとメモリとの間でデータ値を転送する方法
JP3451921B2 (ja) プロセッサ
JP3841820B2 (ja) マイクロコンピュータ
JPH0922379A (ja) マイクロコンピュータ
JP2005339540A (ja) 復号手段を有するコントローラ
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
JP2001216154A (ja) むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置
JP2003131873A (ja) マイクロコンピュータ
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071029

A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20081210