JP3414209B2 - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP3414209B2
JP3414209B2 JP20412597A JP20412597A JP3414209B2 JP 3414209 B2 JP3414209 B2 JP 3414209B2 JP 20412597 A JP20412597 A JP 20412597A JP 20412597 A JP20412597 A JP 20412597A JP 3414209 B2 JP3414209 B2 JP 3414209B2
Authority
JP
Japan
Prior art keywords
constant
register
instruction
stored
read
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
Application number
JP20412597A
Other languages
English (en)
Other versions
JPH1153187A (ja
Inventor
岳人 瓶子
信夫 桧垣
旭 田中
哲也 田中
秀一 高山
謙介 小谷
信哉 宮地
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP20412597A priority Critical patent/JP3414209B2/ja
Priority to US09/124,659 priority patent/US6195740B1/en
Publication of JPH1153187A publication Critical patent/JPH1153187A/ja
Application granted granted Critical
Publication of JP3414209B2 publication Critical patent/JP3414209B2/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/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
    • 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/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サに関し、特に実行サイクル数の減少を図る技術に関す
る。
【0002】
【従来の技術】近年のマイクロプロセッサ応用製品の高
機能化及び高速化に伴い、コード効率の高いプログラム
を実行することができるマイクロプロセッサ(以下、単
に「プロセッサ」という。)が望まれている。つまり、
プログラムを構成する各命令中には無駄なコードや未使
用の領域が含まれないことが望ましい。
【0003】ところが、特に、VLIW(Very Long In
struction Word)の如く固定長命令の場合には、命令中
にノーオペレーションコード(nopコード)等の無駄
なコードを置く必要が生じる。VLIWは複数のオペレ
ーションフィールドからなり、各オペレーションフィー
ルドにおいてプロセッサが備える複数の演算ユニットに
対応したオペレーションが指定されるが、オペレーショ
ンの依存関係等により、常に並列実行可能な複数のオペ
レーションが存在するとは限らないからである。
【0004】このようなnopコードの挿入に伴うコー
ド効率の低下を回避する従来の技術として、例えば、特
開平8−161169に開示されたVLIW方式の計算
機システムがある。これは、nopコードを配置する必
要があるオペレーションフィールドに、他の命令で用い
られる定数を配置しておき、その配置情報を参照して配
置してある定数を他の命令のオペランドとして用いる、
というシステムである。
【0005】しかしながら、上記のシステムでは、無駄
領域を埋めることができる定数の大きさが制限されると
いう問題がある。つまり、オペレーションフィールド長
よりも長い定数を配置することができない。そこで、も
う一つの従来技術として、特願平9−159049にお
いて出願人は、nopコードを配置する必要があるオペ
レーションフィールドに分割した定数を配置し、その定
数を内部の定数レジスタに蓄積していき、他の命令でそ
の定数レジスタを指定することにより蓄積した定数をそ
の命令のオペランドとして用いる、というシステムを提
案している。このようにして、後続命令で使用される定
数を分割して配置していくことにより、命令中にnop
コードを挿入することによる無駄領域の発生を回避して
いる。
【0006】
【発明が解決しようとする課題】しかしながら、上記の
定数を内部の定数レジスタに蓄積していくシステムで
は、定数レジスタに定数を蓄積するオペレーションと、
定数レジスタに蓄積された定数を使用するオペレーショ
ンが分離しており、定数を使用するオペレーションで定
数レジスタを指定する必要があるため、必要以上に実行
サイクル数が増大するという問題点を有している。
【0007】また、上記のシステムでは、定数レジスタ
に蓄積された定数を一度使用すると、次にその定数と全
く同じ値や一部しか異ならない値を蓄積する場合でも、
一から定数レジスタのすべてのビットを蓄積する必要が
あり、実行サイクル数が増大するという問題点を有して
いる。そこで、本発明はかかる問題点に鑑みてなされた
ものであり、定数レジスタに定数を蓄積するオペレーシ
ョンと、定数レジスタの定数を使用するオペレーション
が分離していることによるオーバーヘッドを解決し、実
行サイクル数を低減することを目的とする。
【0008】さらに、定数レジスタに蓄積された定数を
一度しか使用できない点を改善し、定数レジスタの内容
の一部又は全部を繰り返して読み出せるようにすること
により、実行サイクル数を低減することを目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するため
に請求項1記載のプロセッサは、複数の命令を格納する
記憶装置から命令を読み出す命令読み出し手段と、定数
を格納するための定数レジスタと、前記命令中に第1の
定数が置かれていることと、前記命令中に第2の定数が
置かれていることを解読する解読手段と、前記解読手段
により前記第1の定数が置かれていると解読された場合
に、前記第1の定数を前記定数レジスタに格納する格納
手段と、前記解読手段により前記第2の定数が置かれて
いると解読された場合に、前記定数レジスタに格納され
ている定数を読み出し、その読み出された定数と前記第
2の定数とを連結した定数をオペランドとするオペレー
ションを実行する実行手段とを備えることを特徴とす
る。
【0010】これによって、第2の定数がオペランドと
して使用される際に定数レジスタに格納された第1の定
数も併せて使用される。また上記目的を達成するために
請求項2記載のプロセッサは、複数の命令を格納する記
憶装置から命令を読み出す命令読み出し手段と、定数を
格納するための定数レジスタと、前記命令中に第1の定
数が置かれていることと、前記命令中に第2の定数が置
かれていることを解読する解読手段と、前記解読手段に
より前記第1の定数が置かれていると解読された場合
に、前記定数レジスタに定数が格納されていないと判断
すると前記第1の定数を所定位置に格納し、前記定数レ
ジスタに定数が既に格納されていると判断すると前記定
数レジスタに既に格納されている定数を残したまま前記
第1の定数を新たに前記定数レジスタに格納する格納手
段と、前記解読手段により前記第2の定数が置かれてい
ると解読された場合に、前記定数レジスタに格納されて
いる定数を読み出し、その読み出された定数と前記第2
の定数とを連結した定数をオペランドとするオペレーシ
ョンを実行する実行手段とを備えることを特徴とする。
【0011】これによって、複数の命令に跨って分割配
置されていた第1の定数の断片が定数レジスタに格納さ
れて蓄積され、元の定数に復元される。さらに第2の定
数がオペランドとして使用される際に定数レジスタに格
納復元された第1の定数も併せて使用される。ここで請
求項3記載のプロセッサは、請求項1または2記載のプ
ロセッサにおいて、前記解読手段は、さらに、前記命令
中に所定のオペレーションが置かれていることを解読
し、前記実行手段は、前記定数レジスタに格納されてい
る定数を読み出し、その読み出された定数と前記第2の
定数とを連結した定数をオペランドとする第1のオペレ
ーションと、読み出された定数のみをオペランドとする
第2のオペレーションとを選択的に実行し、前記解読手
段により前記第2の定数が置かれていると解読された場
合には前記第1のオペレーションを実行し、前記解読手
段により前記所定のオペレーションが置かれていると解
読された場合には、前記所定のオペレーションを前記第
2のオペレーションとして実行するとしたものである。
【0012】また上記目的を達成するために請求項4記
載のプロセッサは、複数の命令を格納する記憶装置から
命令を読み出す命令読み出し手段と、定数を格納するた
めの定数レジスタと、前記命令中に定数が置かれている
ことを解読する解読手段と、前記解読手段により定数が
置かれていると解読された場合に、前記定数レジスタに
定数が格納されていないと判断すると前記定数を所定位
置に格納し、前記定数レジスタに定数が既に格納されて
いると判断すると前記定数レジスタに既に格納されてい
る定数を残したまま前記定数を新たに前記定数レジスタ
に格納する格納手段と、前記定数レジスタに格納されて
いる定数を読み出し、その定数をオペランドとするオペ
レーションを実行する実行手段と、前記実行手段により
前記定数レジスタから定数が読み出されたことを示す状
態保持手段とを備え、前記格納手段は、前記状態保持手
段により定数が読み出されたことを示されていると、前
記定数を前記定数レジスタに格納する前に前記定数レジ
スタの内容を消去することを特徴とする。
【0013】これによって、複数の命令に跨って分割配
置されていた定数の断片が定数レジスタに格納されて蓄
積され、元の定数に復元される。復元された定数は、読
み出された後に次に新たな定数の断片が定数レジスタに
格納される前に消去される。ここで請求項5記載のプロ
セッサは、請求項1から3記載のプロセッサにおいて、
さらに、前記実行手段により前記定数レジスタから定数
が読み出されたことを示す状態保持手段を備え、前記格
納手段は、前記状態保持手段により定数が読み出された
ことを示されていると、前記第1の定数を前記定数レジ
スタに格納する前に前記定数レジスタの内容を消去する
としたものである。
【0014】また請求項6記載のプロセッサは、前記実
行手段は、請求項4または5記載のプロセッサにおい
て、前記状態保持手段により定数が読み出されたことを
示されていても、前記定数レジスタに格納されている定
数を繰り返し読み出し、その定数の少なくとも一部をオ
ペランドとするオペレーションを実行するとしたもので
ある。
【0015】これによって、定数レジスタに復元格納さ
れた定数は繰り返し読み出される。さらに請求項7記載
のプロセッサは、請求項1から3記載のプロセッサにお
いて、前記解読手段は、さらに、前記命令中に第3の定
数を伴う定数置換オペレーションが置かれていることを
解読し、前記格納手段は、前記解読手段により前記定数
置換オペレーションが置かれていると解読された場合
に、前記定数レジスタに格納されている定数の一部を残
したまま他の部分と前記第3の定数とを置換して格納す
るとしたものである。
【0016】これによって、定数レジスタに復元格納さ
れた定数は一部が置き換えられつつ繰り返し読み出され
る。ここで請求項8記載のプロセッサは、請求項7記載
のプロセッサにおいて、前記置換する部分が、前記定数
レジスタの最下位ビットを含む部分であるとしたもので
ある。
【0017】さらに上記目的を達成するために請求項9
記載のプロセッサは、複数の命令を格納する記憶装置か
ら命令を読み出す命令読み出し手段と、定数を格納する
ための定数レジスタと、前記命令中に第1の定数が置か
れていることと、前記命令中に第2の定数が置かれてい
ることを解読する解読手段と、前記解読手段により前記
第1の定数が置かれていると解読された場合に、前記定
数レジスタに定数が格納されていないと判断すると前記
第1の定数を所定位置に格納し、前記定数レジスタに定
数が既に格納されていると判断すると前記定数レジスタ
に既に格納されている定数を残したまま前記第1の定数
を新たに前記定数レジスタに格納する格納手段と、前記
実行手段により前記定数レジスタから定数が読み出され
たことを示す状態保持手段と、前記解読手段により前記
第2の定数が置かれていると解読された場合であって、
前記状態保持手段により定数が読み出されていないこと
を示されている場合は、前記定数レジスタに格納されて
いる定数を読み出し、その読み出された定数と前記第2
の定数とを連結した定数をオペランドとするオペレーシ
ョンを実行し、前記状態保持手段により定数が読み出さ
れたことを示されている場合は、前記第2の定数のみを
オペランドとするオペレーションを実行する実行手段と
を備えることを特徴とする。
【0018】これによって、複数の命令に跨って分割配
置されていた第1の定数の断片が定数レジスタに格納さ
れて蓄積され、元の定数に復元される。第1の定数を初
めて読み出す時には第2の定数も併せて使用される。さ
らに上記した請求項1から9記載の各プロセッサは、命
令のフォーマットを指定するフォーマットコードが置か
れるフォーマットフィールドと、並列実行させるオペレ
ーションを指定する複数のオペレーションフィールドと
を含む命令を解読し実行するVLIW方式のプロセッサ
であって、前記解読手段は、前記フォーマットコードを
参照することにより、少なくとも1つの前記オペレーシ
ョンフィールドに定数が置かれていることを解読すると
することができる。
【0019】
【発明の実施の形態】以下、本発明に係るプロセッサの
実施の形態について、図面を用いて詳細に説明する。な
お、本明細書では、「命令」とは本プロセッサが同時並
列に解読し実行するコード全体を意味し、「オペレーシ
ョン」とは本プロセッサが並列に実行できる数値演算、
論理演算、転送、分岐等の処理単位又はその処理単位を
指定するためのコードを意味する。 (命令フォーマット)まず、本プロセッサが解読実行す
る命令の構造について説明する。
【0020】本プロセッサは、VLIWアーキテクチャ
を採るプロセッサ(以下、「VLIWプロセッサ」とい
う。)であり、32ビット固定長の命令を解読実行す
る。図1(a)は、本プロセッサが実行する命令50の
フィールド構成を示す図である。図1(b)〜図1
(d)は16種類の命令フォーマットを示す図であり、
そのうち、図1(b)は3オペレーション、図1(c)
は2オペレーション、図1(d)は1オペレーションを
同時に指定できる命令フォーマットである。
【0021】この命令50は、32ビット固定長であ
り、4ビットずつに区切られた8個のフィールド(上位
よりP0.0フィールド51、P1.0フィールド5
2、…、P3.2フィールド58)からなる。なお、P
2.0フィールド53〜P2.2フィールド55のグル
ープをまとめて第1演算フィールド59と呼び、P3.
0フィールド56〜P3.2フィールド58のグループ
をまとめて第2演算フィールド60と呼ぶ。
【0022】図1(b)〜図1(d)において、“co
nst”は定数であり、これが用いられるオペレーショ
ンの種類によっては即値、絶対番地、ディスプレースメ
ント等の数値定数や文字定数を意味する。“op”はオ
ペレーションの種類を指定するオペコードを、“Rs”
はソースオペランドとなるレジスタを、“Rd”はデス
ティネーションオペランドとなるレジスタを、“cc”
は本プロセッサが備える専用の32ビットレジスタ(図
3に示される定数レジスタ36)の格納値を分岐先の絶
対番地又は相対番地(ディスプレースメント)とする分
岐オペレーションを指定するオペコードを意味する。
【0023】各命令フォーマット毎の実際の動作につい
ては、後で詳細な説明を加える。図2は、図1で用いら
れている3種類のオペコード“cc”、“op1”及び
“op2”それぞれによって指定される具体的なオペレ
ーションを説明する図である。4ビットのオペコード
“cc”は、16種類の分岐オペレーションの中の一つ
を指定する。1つの分岐オペレーションは、分岐条件と
分岐形式によって特定される。分岐条件には、等しい
(“eq”)、等しくない(“neq”)、より大きい
(“gt”)等がある。分岐形式には、上記定数レジス
タ36の格納値を分岐先の絶対番地として分岐する形式
(ニーモニック表示において“i”が添付されていない
もの)と相対番地として分岐する形式(ニーモニック表
示において“i”が添付されているもの)とがある。例
えば、オペコード“eq”は、直前の比較結果が等しい
場合に絶対番地指定による分岐を行なうオペレーション
を意味し、オペコード“eqi”は、直前の比較結果が
等しい場合に相対番地指定による分岐を行なうオペレー
ションを意味する。
【0024】4ビットのオペコード“op1”は、“a
dd”(加算)、“sub”(減算)、“mul”(乗
算)、“and”(論理積)、“or”(論理和)等の
算術論理演算に属するオペレーションの一つを指定する
場合と、“mov”(ワード(32ビット)データの転
送)、“movh”(ハーフワードデータの転送)、
“movb”(バイトデータの転送)等のレジスタ間転
送に属するオペレーションの一つを指定する場合とがあ
る。また、転送オペレーションの一つとして、定数レジ
スタの下位4ビットの内容を置換する“setl4”オ
ペレーションが用意されている。
【0025】4ビットのオペコード“op2”は、上記
オペコード“op1”と同様の算術論理演算及びレジス
タ間転送に加えて、“ld”(メモリからレジスタへの
1ワードデータのロード)、“st”(レジスタからメ
モリへのワードデータのストア)等のレジスタ・メモリ
間転送に属するオペレーションの一つを指定する場合が
ある。
【0026】第1演算フィールド59には、本プロセッ
サと外部(メモリ)とのデータの転送を伴わないオペレ
ーション(算術論理演算、レジスタ間転送)を指定する
ためのオペコードとオペランド(ソース及びデスティネ
ーション)との組又は定数が置かれる。第2演算フィー
ルド60には、上記第1演算フィールド59の場合に加
えて、本プロセッサと外部(メモリ)とのデータの転送
を伴うオペレーション(レジスタ・メモリ間転送)を指
定するためのオペコードとオペランドとの組が置かれる
こともある。
【0027】なお、以上のようなオペレーションの種類
の各フィールドへの割り当ては、ノイマン型の本プロセ
ッサにおいては2つ以上の分岐オペレーションを同時に
実行する必要がないこと、本プロセッサと外部(メモ
リ)とのオペランドの入出力ポート(図3におけるオペ
ランドアクセス部40)を1つに限定していること等に
基づく。 (プロセッサのハードウェア構成)次に、本プロセッサ
のハードウェア構成を説明する。
【0028】図3は、本発明に係るプロセッサのハード
ウェア構成を示すブロック図である。本プロセッサは、
上述したように、最大3つのオペレーションを並列実行
するVLIWプロセッサであり、大きく分けて、命令レ
ジスタ10、解読部20及び実行部30から構成され
る。
【0029】命令レジスタ10は、命令フェッチ部39
から送られてきた1個の命令を保持する32ビットのレ
ジスタである。解読部20は、命令レジスタ10に保持
された命令を解読し、その解読結果に応じた制御線を実
行部30に出力するものであり、大きく分けて、フォー
マットデコーダ21と命令デコーダ22とからなる。
【0030】命令デコーダ22はさらに、P1.0フィ
ールド12に保持されたオペコード“cc”を解読しそ
の結果に基づいてPC部33を制御する分岐デコーダ2
3と、P2.0フィールド13に保持されたオペコード
を解読しその結果に基づいて第1演算部37を制御する
第1演算デコーダ24と、P3.0フィールド16に保
持されたオペコードを解読しその結果に基づいて第2演
算部38及びオペランドアクセス部40を制御する第2
演算デコーダ25とからなる。
【0031】フォーマットデコーダ21は、P0.0フ
ィールド11に保持された4ビットのフォーマットコー
ドをデコードすることによって命令レジスタ10に保持
された命令のフォーマットが図1(b)〜図1(d)に
示された16種類のうちのいずれであるかを特定し、そ
の結果に応じて分岐デコーダ23、第1演算デコーダ2
4及び第2演算デコーダ25による解読動作を許可又は
禁止したり、実行部30の定数レジスタ制御部32を動
作させたりする。
【0032】なお、上記デコーダ21、23〜25は、
基本的には1サイクルに1つのオペレーションを解読
し、実行部30に制御信号を与える。また、命令レジス
タ10と実行部30を接続する26ビットの定数信号線
26は、命令レジスタ10に置かれた定数やオペランド
を実行部30に転送するためのバスである。実行部30
は、解読部20での解読結果に基づいて、最大3つのオ
ペレーションを並列実行する回路ユニットであり、実行
制御部31、PC部33、レジスタ群34、第1演算部
37、第2演算部38、命令フェッチ部39及びオペラ
ンドアクセス部40からなる。なお、この実行部30の
うち定数レジスタ制御部32、PC部33及び定数レジ
スタ36については、別の図面においてさらに詳細な構
成を示している。
【0033】実行制御部31は、解読部20での実行結
果に基づいて実行部30の各構成要素33〜40を制御
する制御回路や配線の総称であり、通常のプロセッサが
備える構成要素(タイミング制御、動作許可禁止制御、
ステータス管理、割り込み制御等の回路)の他に本プロ
セッサに特有の定数レジスタ制御部32を有する。定数
レジスタ制御部32は、フォーマットデコーダ21から
の指示に基づいて命令レジスタ10に保持された4ビッ
ト又は16ビットの定数(const)を定数レジスタ
36に格納する制御を行なう。
【0034】PC(プログラムカウンタ)部33は、分
岐デコーダ23による制御の下で、次に解読実行すべき
命令が置かれている図示されていない外部メモリ上のア
ドレスを命令フェッチ部39に出力する。命令フェッチ
部39は、32ビットのIA(インストラクションアド
レス)バス及び32ビットのID(インストラクション
データ)バスを通じて図示されていない外部メモリから
命令ブロックをフェッチし、内部の命令キャッシュに保
持すると共に、PC部33から出力されたアドレスに相
当する命令を命令レジスタ10に供給する。
【0035】レジスタ群34は、16個の32ビット汎
用レジスタ35と1個の32ビット定数レジスタ36か
ら構成される。これら17個のレジスタ35、36に格
納された値は、第1演算デコーダ24及び第2演算デコ
ーダ25での解読結果に基づいて、第1演算部37及び
第2演算部38に転送され、ここで演算が施され、又
は、ここを単に通過した後に、レジスタ群34又はオペ
ランドアクセス部40に送られる。なお、定数レジスタ
36に格納された値は、第1演算部37及び第2演算部
38での演算に用いられる他に、PC部33にも転送さ
れ、ここで分岐先となる有効アドレスを生成するために
用いられる。
【0036】第1演算部37は、2個の32ビットデー
タに対して算術論理演算を行なうALUと乗算を行う乗
算器とを内部に有し、第1演算デコーダ24による制御
の下で2種類のオペレーション(算術論理演算とレジス
タ間転送)を実行する。第2演算部38も、第1演算部
37と同様に、2個の32ビットデータに対して算術論
理演算を行なうALUと乗算を行う乗算器とを内部に有
し、第2演算デコーダ25による制御の下で2種類のオ
ペレーション(算術論理演算とレジスタ間転送)を実行
する。
【0037】オペランドアクセス部40は、第2演算デ
コーダによる制御の下でレジスタ群34と図示されてい
ない外部メモリとの間でオペランドの転送を行なう回路
であり、そのオペランドやオペランドアドレスを保持す
るバッファを内部に有する。具体的には、例えば、命令
レジスタ10のP3.1フィールド16にオペコード
“ld”が置かれていた場合には、外部メモリに置かれ
ていた1ワードのデータがオペランドアクセス部40を
経てレジスタ群34のいずれかのレジスタにロードさ
れ、また、オペコード“st”が置かれていた場合に
は、レジスタ群34のいずれかのレジスタの格納値が外
部メモリにストアされる。
【0038】上記PC部33、レジスタ群34、第1演
算部37、第2演算部38及びオペランドアクセス部4
0は、図示されるように、内部バス(L1バス、R1バ
ス、L2バス、R2バス、D1バス、D2バス)で接続
されている。なお、L1バス及びR1バスはそれぞれ第
1演算部37の2つの入力ポートに、L2バス及びR2
バスはそれぞれ第2演算部38の2つの入力ポートに、
D1バス及びD2バスはそれぞれ第1演算部37及び第
2演算部38の出力ポートに接続されている。 (定数レジスタ36及びその周辺回路の詳細な構成)次
に、定数レジスタ36及びその周辺回路について詳細に
説明する。
【0039】図4は、定数レジスタ36及びその周辺回
路の詳細な構成と接続関係を示すブロック図である。な
お、図中の固定値(“0”)27は、定数“0”を示す
4本の信号線の固定的な配線を意味する。定数レジスタ
制御部32は、5個の3入力セレクタ32a〜32eと
3個の4入力セレクタ32f〜32hとからなり、定数
レジスタ36は、8個の4ビット幅レジスタ36a〜3
6hからなる。なお、各入出力データは並列4ビットで
ある。
【0040】読み出しフラグ記憶部28は、定数レジス
タ36をゼロクリアすべきかどうかを調べるために用い
られる。図5は、読み出しフラグ記憶部28の値の変化
を示す状態遷移図である。読み出しフラグ記憶部28の
値は、定数レジスタ36の格納値が読み出され、かつ定
数レジスタ36への定数の格納が行なわれなかった場合
に“1”にセットされる。読み出しフラグ記憶部28の
値が“1”の状態で、定数を格納するオペレーションが
指定された場合、定数を設定する前に定数レジスタ制御
部32の制御により定数レジスタ36の内容はゼロクリ
アされる。その後、読み出しフラグ記憶部28の値は
“0”にセットされる。
【0041】定数レジスタ制御部32は、フォーマット
デコーダ21及び命令デコーダ22からの制御信号に従
って上記8個の入力セレクタ32a〜32hを制御する
ことで、以下に示す8通りの格納方法のいずれかの方法
により、命令レジスタ10に保持された定数を定数レジ
スタ36に格納させる。図6(a)〜図6(h)は、そ
の8通りの格納方法を説明する図である。
【0042】図6(a)は、フォーマットデコーダ21
によってP0.0フィールド11に保持された値が
“0”又は“1”であると解読され、読み出しフラグ記
憶部28の値が“0”である場合の格納方法を示す。こ
れは、P1.0フィールド12に置かれた4ビットの定
数のみを定数レジスタ36に格納する場合に相当する。
具体的には、定数レジスタ36に保持されたデータを4
ビット単位で上位にシフトさせると同時に、命令レジス
タ10のP1.0フィールド12に保持された4ビット
の定数を定数レジスタ36の最下位の4ビットレジスタ
36hに格納する。
【0043】図6(b)は、フォーマットデコーダ21
によってP0.0フィールド11に保持された値が
“0”又は“1”であると解読され、読み出しフラグ記
憶部28の値が“1”である場合の格納方法を示す。こ
れは、定数レジスタ36の内容をゼロクリアしてから、
P1.0フィールド12に置かれた4ビットの定数のみ
を定数レジスタ36に格納する場合に相当する。
【0044】具体的には、命令レジスタ10のP1.0
フィールド12に保持された4ビットの定数を定数レジ
スタ36の最下位の4ビットレジスタ36hに格納する
と同時に、定数レジスタ36の残りのビット36a〜3
6gに“0”を格納する。図6(c)は、フォーマット
デコーダ21によってP0.0フィールド11に保持さ
れた値が“4”であると解読され、読み出しフラグ記憶
部28の値が“0”である場合の格納方法を示す。これ
は、P1.0フィールド12〜P2.2フィールド15
に置かれた16ビットの定数を定数レジスタ36に格納
する場合に相当する。
【0045】具体的には、定数レジスタ36の下位16
ビット36e〜36hに保持されたデータを上位16ビ
ット36a〜36dにシフトさせると同時に、命令レジ
スタ10のP1.0フィールド12〜P2.2フィール
ド15に保持された16ビットの定数を定数レジスタ3
6の下位16ビット36e〜36hに格納する。図6
(d)は、フォーマットデコーダ21によってP0.0
フィールド11に保持された値が“4”であると解読さ
れ、読み出しフラグ記憶部28の値が“1”である場合
の格納方法を示す。これは、定数レジスタ36の内容を
ゼロクリアしてから、P1.0フィールド12〜P2.
2フィールド15に置かれた16ビットの定数を定数レ
ジスタ36に格納する場合に相当する。
【0046】具体的には、命令レジスタ10のP1.0
フィールド12〜P2.2フィールド15に保持された
16ビットの定数を定数レジスタ36の下位16ビット
36e〜36hに格納すると同時に、残りのビット36
a〜36dに“0”を格納する。図6(e)は、フォー
マットデコーダ21によってP0.0フィールド11に
保持された値が“5”であると解読され、読み出しフラ
グ記憶部28の値が“0”である場合の格納方法を示
す。これは、P1.0フィールド12とP3.0フィー
ルド16〜P3.2フィールド18に置かれた16ビッ
トの定数を定数レジスタ36に格納する場合に相当す
る。
【0047】具体的には、定数レジスタ36の下位16
ビット36e〜36hに保持されたデータを上位16ビ
ット36a〜36dにシフトさせると同時に、命令レジ
スタ10のP1.0フィールド12とP3.0フィール
ド16〜P3.2フィールド18に保持された16ビッ
トの定数を定数レジスタ36の下位16ビット36e〜
36hに格納する。
【0048】図6(f)は、フォーマットデコーダ21
によってP0.0フィールド11に保持された値が
“5”であると解読され、読み出しフラグ記憶部28の
値が“1”である場合の格納方法を示す。これは、定数
レジスタ36の内容をゼロクリアしてから、P1.0フ
ィールド12とP3.0フィールド16〜P3.2フィ
ールド18に置かれた16ビットの定数を定数レジスタ
36に格納する場合に相当する。
【0049】具体的には、命令レジスタ10のP1.0
フィールド12とP3.0フィールド16〜P3.2フ
ィールド18に保持された16ビットの定数を定数レジ
スタ36の下位16ビット36e〜36hに格納すると
同時に、残りのビット36a〜36dに“0”を格納す
る。図6(g)は、第1演算デコーダ24でデコードし
た結果、オペレーションが“setl4”であると解読
された場合の格納方法を示す。これは、現在定数レジス
タ36に格納されている値の下位4ビットのみを変更す
る場合に相当する。
【0050】具体的には、定数レジスタ36に既に格納
されているデータのシフトは行なわず、P2.1フィー
ルドに保持された4ビットの定数を定数レジスタ36の
下位4ビット36hに格納する。図6(h)は、第2演
算デコーダ25でデコードした結果、オペレーションが
“setl4”であると解読された場合の格納方法を示
す。これは、現在定数レジスタ36に格納されている値
の下位4ビットのみを変更する場合に相当する。
【0051】具体的には、定数レジスタ36に既に格納
されているデータのシフトは行なわず、P3.1フィー
ルドに保持された4ビットの定数を定数レジスタ36の
下位4ビット36hに格納する。以上のように、命令レ
ジスタ10のP0.0フィールド11の値が“0”、
“1”、“4”、“5”であり、読み出しフラグ28の
値が“0”の場合には、定数レジスタ36に既に格納さ
れた定数をシフトさせながら新たな定数が定数レジスタ
36に格納される。そして、命令レジスタ10のP0.
0フィールド11の値が“0”、“1”、“4”、
“5”であり、読み出しフラグ28の値が“1”の場合
には、定数レジスタ36をゼロクリアしてから新たな定
数が定数レジスタ36に格納される。また、“setl
4”オペレーションが指定された場合には、定数レジス
タ36の下位4ビットのみを変更し、上位ビットの格納
値はそのまま残すことができる。なお、“setl4”
オペレーションは、すべてのオペコード“op1”又は
“op2”に配置することができ、その場合の“Rd
1”又は“Rd2”の内容は無視される。
【0052】“setl4”のように、定数レジスタ3
6の下位ビットのみを変更するオペレーションを用意す
ることにより、下位ビットのみが異なるいくつかの定数
を使用したい場合に、定数全体を何度も設定しなおす必
要がなくなり、定数レジスタ36の上位部分を使い回し
することができるようになる。図7(a)〜図7(f)
は、定数レジスタ36及び読み出しフラグ記憶部28の
値の変化を示す図である。
【0053】図7(a)は、定数レジスタ36に格納さ
れていた定数“0x87654321”が読み出された
直後におけるそれらの内容を示し、図7(b)〜図7
(e)は、その後に4ビットの定数“0x8”、“0x
7”、“0x6”、“0x5”が順次に格納された直後
におけるそれらの内容を示し、図7(f)は、図7
(e)における定数“0x00008765”が読み出
された直後におけるそれらの内容を示す。
【0054】このように、読み出しフラグ記憶部28に
よってゼロクリアの必要性の有無を管理することで、複
数の命令に跨って分割配置されていた定数は、定数レジ
スタ36に蓄積して格納され、ゼロ拡張された元の定数
として復元される。ここで、ゼロ拡張とは、ある数値の
有効桁数が一定の桁数に満たない場合に、その有効桁よ
り上位の桁全てをゼロで埋める処理をいう。
【0055】また、読み出しフラグ記憶部28を用意す
ることにより、新しい定数を格納する際にゼロクリアの
必要性の有無を判定することができるようになり、定数
レジスタ36の値を使用した時点で定数レジスタ36を
ゼロクリアしておく必要がなくなっている。これによっ
て、以下に示すような定数レジスタ36の格納値の全体
の再利用が可能となっている。
【0056】ここで、再び図1に示した各命令フォーマ
ットについて、読み出しフラグ記憶部28の値に応じた
本プロセッサの動作を説明する。なお、本プロセッサで
は、初期状態として読み出しフラグ記憶部28の値は
“1”にセットされている。フォーマットコード(P
0.0フィールド11の格納値)“0”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0057】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、P1.0フィールド52に指定され
た“const”を定数レジスタ36の36hに格納
し、36a〜36gをゼロクリアする。そして、読み出
しフラグ記憶部28の値を“0”にする。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0058】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、定数レジスタ36の36b〜36h
を36a〜36gに4ビット左シフトしてから、P1.
0フィールド52に指定された“const”を定数レ
ジスタ36の36hに格納する。読み出しフラグ記憶部
28の値は“0”のままである。
【0059】フォーマットコード“1”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドはP2.1フィールド5
4に指定された4ビットの定数“coust1”であ
る。
【0060】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、P1.0フィールド52に指定され
た“const”を定数レジスタ36の36hに格納
し、36a〜36gをゼロクリアする。そして、読み出
しフラグ記憶部28の値を“0”にする。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドは、定数レジスタ36の
36b〜36hとP2.1フィールド54に指定された
4ビットの定数“coust1”を連結した32ビット
の定数である。そして、定数レジスタ36の内容を読み
出したので、読み出しフラグ記憶部28の値を“1”に
セットする。
【0061】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、この時点で読みだしフラグ記憶部2
8の値は“1”になっているので、P1.0フィールド
52に指定された“const”を定数レジスタ36の
36hに格納し、36a〜36gをゼロクリアする。そ
して、読み出しフラグ記憶部28の値を“0”にする。
【0062】フォーマットコード“2”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。それと同時
に、第2演算フィールド60に指定された“op2”を
実行する。ソースオペランドは“Rs2”、デスティネ
ーションオペランドは“Rd2”である。
【0063】次に、P1.0フィールド52に指定され
た“cc”オペレーションの分岐条件を満たすかどうか
を判定し、満たす場合は、PC部33において定数レジ
スタ36の内容から分岐先アドレスを求め、PC(プロ
グラムカウンタ)に格納する。読み出しフラグ記憶部2
8の値は“1”のままである。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0064】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、P1.0フィールド52に指定され
た“cc”オペレーションの分岐条件を満たすかどうか
を判定し、満たす場合は、PC部33において定数レジ
スタ36の内容から分岐先アドレスを求め、PC(プロ
グラムカウンタ)に格納する。
【0065】最後に、読み出しフラグ記憶部28の値を
“1”にセットする。フォーマットコード“3”につい
て: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドはP2.1フィールド5
4に指定された4ビットの定数“coust1”であ
る。
【0066】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、P1.0フィールド52に指定され
た“cc”オペレーションの分岐条件を満たすかどうか
を判定し、満たす場合は、PC部33において定数レジ
スタ36の内容から分岐先アドレスを求め、PC(プロ
グラムカウンタ)に格納する。
【0067】読み出しフラグ記憶部28の値は“1”の
ままである。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドはP2.1フィールド5
4に指定された4ビットの定数“coust1”であ
る。
【0068】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。次に、P1.0フィールド52に指定され
た“cc”オペレーションの分岐条件を満たすかどうか
を判定し、満たす場合は、PC部33において定数レジ
スタ36の内容から分岐先アドレスを求め、PC(プロ
グラムカウンタ)に格納する。
【0069】最後に、読み出しフラグ記憶部28の値を
“1”にセットする。フォーマットコード“4”につい
て: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第2演算フィールド60に指定された“op2”
を実行する。ソースオペランドは“Rs2”、デスティ
ネーションオペランドは“Rd2”である。
【0070】次に、P1.0フィールド52〜P2.2
フィールド55に指定された16ビットの定数“con
st”を定数レジスタ36の下位16ビット36e〜3
6hに格納し、36a〜36dをゼロクリアする。そし
て、読み出しフラグ記憶部28の値を“0”にする。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第2演算フィールド60に指定された“op2”
を実行する。ソースオペランドは“Rs2”、デスティ
ネーションオペランドは“Rd2”である。
【0071】次に、定数レジスタ36の下位16ビット
36e〜36hを36a〜36dにシフトしてから、P
1.0フィールド52〜P2.2フィールド55に指定
された16ビットの定数“const”を定数レジスタ
36の下位16ビット36e〜36hに格納する。読み
出しフラグ記憶部28の値は“0”のままである。フォ
ーマットコード“5”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0072】次に、P1.0フィールド52とP3.0
フィールド56〜P3.2フィールド58に指定された
16ビットの定数“const”を定数レジスタ36の
下位16ビット36e〜36hに格納し、36a〜36
dをゼロクリアする。そして、読み出しフラグ記憶部2
8の値を“0”にする。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0073】次に、定数レジスタ36の下位16ビット
36e〜36hを36a〜36dにシフトしてから、P
1.0フィールド52とP3.0フィールド56〜P
3.2フィールド58に指定された16ビットの定数
“const”を定数レジスタ36の下位16ビット3
6e〜36hに格納する。読み出しフラグ記憶部28の
値は“0”のままである。
【0074】フォーマットコード“6”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドはP1.0フィールド5
2に指定された4ビットの定数“coust1”とP
2.1フィールド54に指定された4ビットの定数“c
oust1”を連結させた8ビットの定数である。
【0075】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドは、定数レジスタ36の
下位24ビット36c〜36hとP1.0フィールド5
2に指定された4ビットの定数“coust1”とP
2.1フィールド54に指定された4ビットの定数“c
oust1”を連結した32ビットの定数である。そし
て、定数レジスタ36の内容を読み出したので、読み出
しフラグ記憶部28の値を“1”にセットする。
【0076】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。ソースオペランドは
“Rs2”、デスティネーションオペランドは“Rd
2”である。フォーマットコード“7”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0077】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。デスティネーション
オペランドは“Rd2”である。ソースオペランドはP
1.0フィールド52に指定された4ビットの定数“c
oust1”とP3.1フィールド57に指定された4
ビットの定数“coust1”を連結させた8ビットの
定数である。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。ソースオペランドは“Rs1”、デスティ
ネーションオペランドは“Rd1”である。
【0078】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。デスティネーション
オペランドは“Rd2”である。ソースオペランドは、
定数レジスタ36の下位24ビット36c〜36hとP
1.0フィールド52に指定された4ビットの定数“c
oust1”とP3.1フィールド57に指定された4
ビットの定数“coust1”を連結した32ビットの
定数である。そして、定数レジスタ36の内容を読み出
したので、読み出しフラグ記憶部28の値を“1”にセ
ットする。
【0079】フォーマットコード“8”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドはP1.0フィールド5
2に指定された4ビットの定数“coust1”とP
2.1フィールド54に指定された4ビットの定数“c
oust1”を連結させた8ビットの定数である。
【0080】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。デスティネーション
オペランドは“Rd2”である。ソースオペランドはP
3.1フィールド57に指定された4ビットの定数“c
oust2”である。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドは、定数レジスタ36の
下位24ビットとP1.0フィールド52に指定された
4ビットの定数“coust1”とP2.1フィールド
54に指定された4ビットの定数“const1”を連
結した32ビットの定数である。そして、定数レジスタ
36の内容を読み出したので、読み出しフラグ記憶部2
8の値を“1”にセットする。
【0081】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。デスティネーション
オペランドは“Rd2”である。ソースオペランドはP
3.1フィールド57に指定された4ビットの定数“c
oust2”である。フォーマットコード“9”につい
て: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドはP2.1フィールド5
4に指定された4ビットの定数“coust1”であ
る。
【0082】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。デスティネーション
オペランドは“Rd2”である。ソースオペランドはP
1.0フィールド52に指定された4ビットの定数“c
oust2”とP3.1フィールド57に指定された4
ビットの定数“coust2”を連結させた8ビットの
定数である。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第1演算フィールド59に指定された“op1”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドは、定数レジスタ36の
下位28ビット36b〜36hとP1.0フィールド5
2に指定された4ビットの定数“coust1”とを連
結した32ビットの定数である。そして、定数レジスタ
36の内容を読み出したので、読み出しフラグ記憶部2
8の値を“1”にセットする。
【0083】それと同時に、第2演算フィールド60に
指定された“op2”を実行する。デスティネーション
オペランドは“Rd2”である。ソースオペランドはP
1.0フィールド52に指定された4ビットの定数“c
oust2”とP3.1フィールド57に指定された4
ビットの定数“coust2”を連結させた8ビットの
定数である。
【0084】フォーマットコード“A”について: (1)読み出しフラグ記憶部28の値が“1”のとき まず、第2演算フィールド60に指定された“op2”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドは、P2.0フィールド
53〜P2.2フィールド55に指定された12ビット
の定数“coust2”とP3.1フィールド57に指
定された4ビットの定数“coust2”を連結させた
16ビットの定数である。
【0085】次に、P1.0フィールド52に指定され
た“cc”オペレーションの分岐条件を満たすかどうか
を判定し、満たす場合は、PC部33において定数レジ
スタ36の内容から分岐先アドレスを求め、PC(プロ
グラムカウンタ)に格納する。読み出しフラグ記憶部2
8の値は“1”のままである。 (2)読み出しフラグ記憶部28の値が“0”のとき まず、第2演算フィールド60に指定された“op2”
を実行する。デスティネーションオペランドは“Rd
1”である。ソースオペランドは、P2.0フィールド
53〜P2.2フィールド55に指定された12ビット
の定数“coust2”とP3.1フィールド57に指
定された4ビットの定数“coust2”を連結させた
16ビットの定数である。
【0086】次に、P1.0フィールド52に指定され
た“cc”オペレーションの分岐条件を満たすかどうか
を判定し、満たす場合は、PC部33において定数レジ
スタ36の内容から分岐先アドレスを求め、PC(プロ
グラムカウンタ)に格納する。最後に、読み出しフラグ
記憶部28の値を“1”にセットする。
【0087】フォーマットコード“B”について:1オ
ペレーションのみを実行する命令であり、読み出しフラ
グ記憶部28の値にかかわらず、定数レジスタ36の内
容の参照は行なわない。オペランドは、P1.0フィー
ルド52〜P2.2フィールド55に指定された16ビ
ットの定数“coust2”とP3.1フィールド57
〜P3.2フィールド58に指定された8ビットの定数
“coust2”を連結させた24ビットの定数であ
る。
【0088】フォーマットコード“C”〜フォーマット
コード“F”については、“reserved”とし
て、拡張命令などのために取ってある。本プロセッサで
は、1個の命令に最大3つのオペレーションを指定する
ことができるが、その場合には、図1(b)に示された
3オペレーション用の命令フォーマットから判るよう
に、それら3つのオペレーションの種類は次のいずれか
の組み合わせになる。 (1)4ビットの定数を定数レジスタ36にセットする
オペレーションと2個の汎用オペレーション(フォーマ
ットコードが“0”、“1”の場合) (2)定数レジスタ36にセットされた値を絶対番地又
は相対番地として分岐するオペレーションと2個の汎用
オペレーション(フォーマットコードが“2”、“3”
の場合) このように、本プロセッサの命令は、わずか32ビット
長でありながら最大3つのオペレーションを同時に指定
することができるコード効率の高いフィールド構成を有
している。また、定数レジスタ36の格納値を読み出す
と同時に、読み出した定数とオペランドフィールドに指
定された定数を連結した定数をオペランドとしてオペレ
ーションを実行することができることが特徴である。 (PC部33の詳細な構成)次に、PC部33の詳細な
構成を説明する。
【0089】図8は、PC部33の詳細な構成を示すブ
ロック図である。PC部33は、定数“4”を示す固定
的な配線である固定値(“4”)33a、2入力セレク
タ33b、加算器33c、次に解読実行すべき命令のア
ドレスを保持するPC33d及び4入力セレクタ33e
から構成される。このPC部33では、解読部20から
の制御信号に従ってセレクタ33b、33eが動作する
ことにより、以下の3通りの値のいずれかが有効アドレ
スとしてセレクタ33eから命令フェッチ部39に出力
される。 (1)PC33dの内容に“4”を加算した値 これは、分岐しないで順次に実行する場合、即ち、解読
実行された命令に分岐オペレーションが指定されていな
い場合に相当する。なお、“4”を加算するのは、1つ
の命令の長さが4バイト(32ビット)であることによ
る。 (2)PC33dの内容に定数レジスタ36の内容を加
算した値 これは、定数レジスタ36の内容を相対番地として分岐
する場合、例えば、P1.0フィールド12によって相
対番地による分岐が指定されていると分岐デコーダ23
が解読した場合が該当する。 (3)定数レジスタ36の内容 これは、定数レジスタ36の内容を絶対番地として分岐
する場合、例えば、P1.0フィールド12によって絶
対番地による分岐が指定されていると分岐デコーダ23
が解読した場合が該当する。
【0090】以上のように、このPC部33は、専用の
加算器33cを備え、定数レジスタ36に保持された値
を直接用いる構成となっているので、第1演算部37や
第2演算部38での演算とは独立並行して、定数レジス
タ36の格納値を絶対番地又は相対番地として分岐する
実行制御を行なうことができる。 (プロセッサの動作)次に、具体的な命令を解読実行し
た場合の本プロセッサの動作について説明する。
【0091】図9は、24ビットの定数を扱う処理の一
例を示すフローチャートである。本図には、レジスタR
0とR1との格納値の差を求め(ステップS100)、
その結果に24ビットの定数“0x876543”(以
下、“0x”を付した数は16進数を表す)”)を加え
(ステップS101、S102)、最後にレジスタR2
の格納値をレジスタR1に転送しておく(ステップS1
03)という処理が示されている。
【0092】図10は、図9に示された処理内容を本プ
ロセッサに行なわせるプログラムの例を示す図である。
このプログラムは、2個の命令71、72から構成され
ている。1行が1個の命令に相当し、各命令の内容は各
フィールドに置かれたニーモニックで表現されている。
なお、定数は全て16進数で表現されている。また、
“fmtn(n=0〜F)”はフォーマットコード
“n”を示し、“Rn(n=0〜15)”はレジスタ群
34の中の1つのレジスタを示す。
【0093】図10を用いて、各命令71、72ごとの
本プロセッサの動作を説明する。まず、初期状態とし
て、読み出しフラグ記憶部28の値を“1”にする。 (命令71)命令71が命令レジスタ10にロードされ
ると、フォーマットデコーダ21は、命令レジスタ10
のP0.0フィールド11の値(“fmt4”)から、
この命令はフォーマットコードが“4”の2オペレーシ
ョン命令であると判断し、以下の2つのオペレーション
が並列実行されるように実行部30を制御する。 (1)第1のオペレーション 定数レジスタ制御部32は、内部の8個のセレクタ32
a〜32hを制御することで、図6(c)に示された格
納方法により、P1.0フィールド12〜P2.2フィ
ールド15に保持された16ビットの定数(0x876
5)を定数レジスタ36の下位16ビットに格納する。
定数レジスタ36の上位16ビットはゼロクリアされ
る。そして、読み出しフラグ記憶部28の値を“0”に
する。 (2)第2のオペレーション 第2演算部38は、汎用レジスタR0の内容と汎用レジ
スタR1の内容を入力とし、R0の内容からR1の内容
を減算した後に、その結果を再び汎用レジスタR0に格
納する。 (命令72)命令72が命令レジスタ10にロードされ
ると、フォーマットデコーダ21は、命令レジスタ10
のP0.0フィールド11の値(“fmt6”)から、
この命令はフォーマットコードが“6”の2オペレーシ
ョン命令であると判断し、以下の2つのオペレーション
が並列実行されるように実行部30を制御する。 (1)第1のオペレーション P2.0フィールド13のオペレーションは、定数をオ
ペランドにとるオペレーションであり、読み出しフラグ
記憶部28の値が“0”なので、定数レジスタ36の下
位24ビット(0x008765)とP1.0フィール
ド12に指定された4ビットの定数(0x4)とP2.
1フィールド14に指定された4ビットの定数(0x
3)を連結した値(0x00876543)と汎用レジ
スタR0の内容とで加算を行なった後に、その結果を再
び汎用レジスタR0に格納する。
【0094】そして、読み出しフラグ記憶部28の値を
“1”にセットする。 (2)第2のオペレーション 第2演算部38は、汎用レジスタR2の値を入力とし、
そのまま通過させて、汎用レジスタR1に格納する。以
上のようにして、暗黙的に定数レジスタ36の格納値を
利用し、定数レジスタ36とオペレーションで指定され
た定数を連結した定数をオペランドとして実行すること
により、2個の命令によって24ビットの定数を扱うオ
ペレーションを実行することができる。 (定数レジスタの読み出しと同時に使用することができ
ない場合との比較)次に、本発明に係るプロセッサのよ
うに定数レジスタ36の格納値を暗黙のうちに使用する
のではなく、従来の技術の項に示した特願平9−159
049のプロセッサのように、明示的に定数レジスタを
指定してオペレーションを行ない、定数レジスタ36へ
定数を格納するオペレーションと定数レジスタ36の格
納値を利用するオペレーションとが分離しているプロセ
ッサにおいて、上記図10に示されたプログラムと同一
の処理を行なったときの処理方法について説明し、本発
明に係るプロセッサと比較する。
【0095】図11は、上記従来のプロセッサにおい
て、図10と同一内容の処理を行なうプログラムの例を
示す。ただし、定数レジスタ名はR15であるとする。
図11と図10を比較して判るように、上記従来のプロ
セッサ用のプログラムは、本発明に係るプロセッサ用の
ものよりも1個の命令だけ多くなっている。図11にお
いては、1つのオペレーションでは、定数レジスタへの
値の設定もしくは定数レジスタの格納値の利用のいずれ
か一方しか行なうことができないため、24ビットの定
数を設定するのに必要な2個の命令と、その定数を利用
する命令とを合わせた3個の命令が必要になっている。
その結果、無動作オペレーション“nop”を挿入せざ
るを得なくなっている。
【0096】以上のように、本発明に係るプロセッサに
よれば、定数レジスタに蓄積された定数とオペレーショ
ンで指定された定数からオペランドとなる定数を生成す
ると同時にその定数を用いてオペレーションを実行する
ことができる。これにより、実行サイクル数を減少させ
ることができる。 (定数レジスタ全体の再読み出し)次に、分岐オペレー
ションを含むプログラムの例を図12に示す。
【0097】このプログラムは、3個の命令76〜78
から構成されている。図12を見て判るように、本プロ
グラムでは、命令76において図6(c)の格納方法に
て16ビットの定数“0x1234”を定数レジスタ3
6に設定し、命令77の“eqi”オペレーションにて
定数レジスタ36の内容を参照し、その値(0x123
4)を相対番地(ディスプレースメント)として分岐オ
ペレーションを実行している。この時点で読み出しフラ
グ記憶部28の値は“1”にセットされる。そして、命
令78の“gti”オペレーションにて再び定数レジス
タ36の内容を参照し、その値(0x1234)を相対
番地として分岐オペレーションを実行している。なお、
分岐条件の判定には、直前の“cmp”オペレーション
の結果が反映される。
【0098】このように、読み出しフラグ記憶部28の
値が“1”にセットされても、次に定数レジスタ36に
定数を格納するオペレーションが実行されるまでは、定
数レジスタ36の内容は変更されないので、定数レジス
タ36の格納値全体を複数回読み出して利用することが
できる。これによって、同一の定数を定数レジスタ36
に何度も設定し直す必要がなくなり、実行サイクル数・
命令コードサイズを低減することができる。 (定数レジスタの一部を使い回し)次に、図6の定数レ
ジスタ36への定数の格納方法の説明で現れた“set
l4”オペレーションを含むプログラムの例を図13に
示す。
【0099】このプログラムは、3個の命令79〜81
から構成されている。図13を見て判るように、本プロ
グラムでは、命令79において図6(c)の格納方法に
て16ビットの定数“0x3210”を定数レジスタ3
6に設定し、命令80の“eqi”オペレーションにて
定数レジスタ36の内容を参照し、その値(0x321
0)を相対番地(ディスプレースメント)として分岐オ
ペレーションを実行している。また、命令80の第二演
算フィールド60の“setl4”オペレーションによ
って図6(h)の格納方法にて4ビットの定数“0x
c”を定数レジスタ36の下位4ビットに格納する。こ
れにより定数レジスタ36の格納値は“0x321c”
になる。次に、命令81の“gti”オペレーションに
て定数レジスタ36の内容を参照し、その値(0x32
1c)を相対番地として分岐オペレーションを実行して
いる。なお、分岐条件の判定には、直前の“cmp”オ
ペレーションの結果が反映される。
【0100】このように、“setl4”のような定数
レジスタ36の一部のみを変更するオペレーションを用
意することにより、一部分のみ異なる定数の設定は、異
なる部分のみ設定し直せばよいことになる。これによっ
て、一部分のみ異なる定数を定数レジスタ36に何度も
一から設定し直す必要がなくなり、実行サイクル数・命
令コードサイズを低減することができる。 (定数レジスタ36の周辺回路の変形例)次に、図4に
示された定数レジスタ36の周辺回路についての変形例
を示す。上記実施例では、定数レジスタ36の下位4ビ
ットのみを変更するオペレーションを用意し、上位ビッ
トの格納値を使い回しできることを示したが、下位4ビ
ットだけでなく、任意のビットについて上記のような格
納値の一部の再利用が可能である。その一例として、図
14に、定数レジスタ36の周辺回路の変形例のブロッ
ク図を示す。
【0101】図4の定数レジスタ制御部32は定数レジ
スタ36をシフトレジスタとして機能させたが、図14
の定数レジスタ制御部90は定数レジスタ36を並列入
力のレジスタとして機能させている点で異なる。具体的
には、定数レジスタ制御部90とフォーマットデコーダ
21との接続及び定数レジスタ制御部90の構成要素が
図4に示されたものと異なる。
【0102】定数レジスタ制御部90は、格納桁カウン
タ91と8個の8入力セレクタ90a〜90hとからな
る。格納桁カウンタ91は、3ビットのカウンタであ
り、その時点において定数レジスタ36に蓄積されてい
る定数の有効桁数をニブル(4ビット)単位で示すもの
である。定数レジスタ制御部90は、命令レジスタ10
に保持された定数を格納する旨の指示をフォーマットデ
コーダ21から受けると、その時点での格納桁カウンタ
91の値を参照することで定数レジスタ36の適切な位
置にその定数を格納し、その後に、格納桁カウンタ91
を更新しておく。
【0103】ただし、図4の定数レジスタ制御部32の
場合と異なり、後で実行される命令に置かれた定数が定
数レジスタ36の上位桁に格納される。したがって、例
えば32ビットの定数を16ビットずつ2回に分けて格
納する場合には、先に下位16ビットを格納することに
なる。定数レジスタを図14のように構成し、定数レジ
スタ36a〜36hの任意のレジスタの格納値のみを変
更するオペレーション“set4a”、“set4
b”、…、“set4h”や、定数レジスタ36の下位
8ビットや上位8ビットのみを変更するオペレーション
“setl8”、“setu8”などのオペレーション
群を用意することにより、定数レジスタ36の下位のみ
に限らない一部の格納値のみを変更することが可能とな
り、残りの格納値を使い回しすることができるようにな
る。
【0104】以上、本発明に係るプロセッサについて、
実施形態及び変形例に基づいて説明したが、本発明はこ
れら実施形態及び変形例に限られないことは勿論であ
る。即ち、 (1)上記実施の形態では、数値定数を扱う例が示され
たが、文字定数であってもよいことは言うまでもない。
複数の命令に跨って分割配置された文字定数であって
も、定数レジスタ36への複数回の格納によって、桁数
の長い元の文字定数が復元されるからである。 (2)また、上記実施の形態では、定数レジスタ36に
定数が格納される時にゼロ拡張される構成になっていた
が、格納される時に符号拡張される構成にしてもよい
し、また、定数を読み出す際にゼロ拡張/符号拡張を行
なう構成にしてもよい。そのためには、定数レジスタ3
6の周辺回路に拡張を制御する回路を追加すればよい。
【0105】ここで、符号拡張とは、ある数値の有効桁
数が一定の桁数に満たない場合に、その数値の最上位ビ
ットを符号ビットとみなし、その符号ビットと同じ論理
値で有効桁より上位の桁全てを埋める処理をいう。 (3)また、上記実施の形態では、定数レジスタ36に
格納されていた値の下位部分(上位部分の値を捨てたも
の)の下位側に、オペレーションで指定された定数を連
結し、それをオペランドとしてオペレーションを実行す
ることを可能としたが、オペレーションで指定された定
数を定数レジスタ36に格納されていた値の下位部分の
上位側に連結し、それをオペランドとしてオペレーショ
ンを実行することも可能である。さらに、定数レジスタ
36の上位部分の値を捨てるのではなく下位部分の値を
捨て、定数レジスタ36の上位部分の下位側または上位
側にオペレーションで指定された定数を連結し、それを
オペランドとしてオペレーションを実行することも可能
である。 (4)また、上記実施の形態では、図1(b)〜図1
(d)の命令フォーマットから判るように、1個の命令
によって定数レジスタ36に格納させることができる定
数の桁数は4ビット及び16ビットのいずれかであった
が、本発明はこの桁数に限定されるものではない。例え
ば、12ビットや28ビットの定数を定数レジスタ36
に格納するための命令フォーマットを定義してもよい。
そのためには、定数レジスタ36の周辺回路の接続関係
を変更すればよい。 (5)また、上記実施の形態のプロセッサは2個の演算
部37、38を備えるVLIWプロセッサであったが、
本発明は、1個の演算部のみを備え1個の命令中に1個
のオペレーションだけを指定する単一オペレーション命
令を実行するVLIWアーキテクチャを採らないプロセ
ッサに対しても適用することができるのは言うまでもな
い。
【0106】
【発明の効果】以上の説明から明らかなように、本発明
のプロセッサは、複数の命令を格納する記憶装置から命
令を読み出す命令読み出し手段と、定数を格納するため
の定数レジスタと、前記命令中に第1の定数が置かれて
いることと、前記命令中に第2の定数が置かれているこ
とを解読する解読手段と、前記解読手段により前記第1
の定数が置かれていると解読された場合に、前記第1の
定数を前記定数レジスタに格納する格納手段と、前記解
読手段により前記第2の定数が置かれていると解読され
た場合に、前記定数レジスタに格納されている定数を読
み出し、その読み出された定数と前記第2の定数とを連
結した定数をオペランドとするオペレーションを実行す
る実行手段とを備えることを特徴とする。
【0107】これによって、第2の定数がオペランドと
して使用される際に定数レジスタに格納された第1の定
数も併せて使用される。その結果、1つのオペレーショ
ンで定数の設定とその定数の使用とを同時に行なうこと
可能となり、実行サイクル数を削減することができる。
また本発明のプロセッサは、前記実行手段により前記定
数レジスタから定数が読み出されたことを示す状態保持
手段とを備え、前記格納手段は、前記状態保持手段によ
り定数が読み出されたことを示されていると、前記定数
を前記定数レジスタに格納する前に前記定数レジスタの
内容を消去することを特徴とするプロセッサにおいて、
前記実行手段は、前記状態保持手段により定数が読み出
されたことを示されていても、前記定数レジスタに格納
されている定数を繰り返し読み出し、その定数の少なく
とも一部をオペランドとするオペレーションを実行する
としたものである。
【0108】これによって、定数レジスタに復元格納さ
れた定数は繰り返し読み出される。その結果、定数レジ
スタの格納値の全体を複数回使用することができるよう
になり、全く同じ定数を繰り返し設定する必要がなくな
るので、実行サイクル数・命令コードサイズを低減する
ことができる。また本発明のプロセッサは、前記解読手
段は、さらに、前記命令中に第3の定数を伴う定数置換
オペレーションが置かれていることを解読し、前記格納
手段は、前記解読手段により前記定数置換オペレーショ
ンが置かれていると解読された場合に、前記定数レジス
タに格納されている定数の一部を残したまま他の部分と
前記第3の定数とを置換して格納するとしたものであ
る。
【0109】これによって、定数レジスタに復元格納さ
れた定数は一部が置き換えられつつ繰り返し読み出され
る。その結果、定数レジスタの格納値の一部を複数回使
用することができるようになり、一部分のみ異なる定数
を繰り返し最初から設定する必要がなくなるので、実行
サイクル数・命令コードサイズを低減することができ
る。
【図面の簡単な説明】
【図1】(a)本発明に係るプロセッサが実行する命令
のフィールド構成を示す図 (b)3オペレーションを示す図 (c)2オペレーションを示す図 (d)1オペレーションを同時に指定できる命令フォー
マットを示す図
【図2】図1で用いられている3種類のオペコード“c
c”、“op1”及び“op2”それぞれによって指定
される具体的なオペレーションを説明する図
【図3】同プロセッサのハードウェア構成を示すブロッ
ク図
【図4】同プロセッサの定数レジスタ36及びその周辺
回路の詳細な構成を示すブロック図
【図5】図4に示された読み出しフラグ記憶部28の値
の変化を示す遷移図
【図6】図4に示された定数レジスタ制御部32による
定数の格納方法を示す図
【図7】図4に示された定数レジスタ36及び読み出し
フラグ記憶部28の値の変化を示す図
【図8】同プロセッサのPC部33の詳細な構成を示す
ブロック図
【図9】24ビットの定数を扱う処理の一例を示すフロ
ーチャート
【図10】図9に示された処理をを同プロセッサに行な
わせるプログラムの例を示す図
【図11】定数を格納するオペレーションと定数レジス
タ36の格納値を利用するオペレーションが分離してお
り、定数レジスタを明示的に指定してオペレーションを
実行するプロセッサにおいて、図10と同一の処理を行
なわせるプログラムの例を示す図
【図12】分岐オペレーションを含む処理を同プロセッ
サに行なわせるプログラムの例を示す図
【図13】定数レジスタ36の下位4ビットのみを変更
するオペレーション“setl4”を含む処理を同プロ
セッサに行なわせるプログラムの例を示す図
【図14】定数レジスタの変形例に係る定数レジスタ3
6の周辺回路の構成を示すブロック図
【符号の説明】
10 命令レジスタ 20 解読部 21 フォーマットデコーダ 22 命令デコーダ 23 分岐デコーダ 24 第1演算デコーダ 25 第2演算デコーダ 28 読み出しフラグ記憶部 30 実行部 31 実行制御部 32 定数レジスタ制御部 32a〜32h セレクタ 33 PC部 33a 固定値“4” 33b、33e セレクタ 33c 加算器 33d PC 34 レジスタ群 35 汎用レジスタR0〜R15 36 定数レジスタR16 36a〜36h 4ビット幅レジスタ 37 第1演算部 38 第2演算部 39 命令フェッチ部 40 オペランドアクセス部 50 命令 51〜58 命令フィールド 59 第1演算フィールド 60 第2演算フィールド 90 変形例に係る定数レジスタ制御部 91 格納桁カウンタ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 9/38 370 G06F 9/30 340F (72)発明者 田中 哲也 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 高山 秀一 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 小谷 謙介 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 宮地 信哉 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平11−7387(JP,A) 特開 平5−143333(JP,A) 特開 平2−236631(JP,A) 特開 昭62−3332(JP,A) 特開 平5−150979(JP,A) 特開 平3−194621(JP,A) 特開 昭64−88838(JP,A) 特開 平8−161169(JP,A) 特開 平11−7388(JP,A) 特開 平3−147021(JP,A) 特開 平11−53186(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数の命令を格納する記憶装置から命令
    を読み出す命令読み出し手段と、 定数を格納するための定数レジスタと、 前記命令読み出し手段により読み出された命令中に第1
    のオペレーションが置かれていることを解読し、前記命
    令中に前記第1のオペレーションを実行する際のオペラ
    ンドの一部となるべき第1の定数が置かれていることを
    解読する解読手段と 記解読手段により前記命令中に前記第1のオペレーシ
    ョンと、前記第の定数が置かれていると解読された
    場合に、前記定数レジスタに予め格納されている定数を
    読み出し、その読み出された前記定数と前記第の定数
    とを連結した定数をオペランドとして前記第1のオペレ
    ーションを実行する実行手段とを備えることを特徴とす
    るプロセッサ。
  2. 【請求項2】 前記プロセッサは、さらに、 記命令中に第2の定数が置かれていることを解読する
    解読手段と、 前記解読手段により前記命令中に前記第の定数が置か
    れていると解読された場合に、前記定数レジスタに定数
    が格納されていないと判断すると前記第の定数を所定
    位置に格納し、前記定数レジスタに定数が既に格納され
    ていると判断すると前記定数レジスタに既に格納されて
    いる定数を残したまま前記第の定数を新たに前記定数
    レジスタに格納する格納手段と、を備えることを特徴と
    する請求項1記載のプロセッサ。
  3. 【請求項3】 前記プロセッサは、さらに、 前記命令中に第2のオペレーションが置かれていること
    を解読する解読手段と、 前記解読手段により前記命令中に前記第2のオペレーシ
    ョンが置かれていると解読された場合に、前記定数レジ
    スタに予め格納されている定数を読み出し、読み出され
    た定数のみをオペランドとして第2のオペレーションを
    実行する実行手段とを備える ことを特徴とする請求項1
    または2記載のプロセッサ。
  4. 【請求項4】 複数の命令を格納する記憶装置から命令
    を読み出す命令読み出し手段と、 定数を格納するための定数レジスタと、前記命令読み出し手段により読み出された命令中に含ま
    れるオペレーションの内容を解読し、 前記命令中に定数
    が置かれていることを解読する解読手段と、 前記解読手段により定数が置かれていると解読された場
    合に、前記定数レジスタに定数が格納されていないと判
    断すると前記定数を所定位置に格納し、前記定数レジス
    タに定数が既に格納されていると判断すると前記定数レ
    ジスタに既に格納されている定数を残したまま前記定数
    を新たに前記定数レジスタに格納する格納手段と、前記解読手段により、定数をオペランドとするオペレー
    ションが置かれていると解読された場合に、 前記定数レ
    ジスタに格納されている定数を読み出し、その定数をオ
    ペランドとして前記オペレーションを実行する実行手段
    と、 前記実行手段により前記定数レジスタから定数が読み出
    されたことを示す状態保持手段とを備え、 前記格納手段は、 前記状態保持手段により定数が読み出されたことを示さ
    れていると、次に前記定数レジスタに定数を格納する前
    に前記定数レジスタの内容を消去することを特徴とする
    プロセッサ。
  5. 【請求項5】 前記プロセッサは、さらに、 前記実行手段により前記定数レジスタから定数が読み出
    されたことを示す状態保持手段を備え、 前記格納手段は、 前記状態保持手段により定数が読み出されたことを示さ
    れていると、次に前記定数レジスタに定数を格納する前
    に前記定数レジスタの内容を消去することを特徴とする
    請求項1から請求項3いずれか記載のプロセッサ。
  6. 【請求項6】 前記実行手段は、 前記状態保持手段により定数が読み出されたことを示さ
    れていても、前記定数レジスタに格納されている前記
    数を再度読み出し、前記定数の少なくとも一部をオペラ
    ンドとしてオペレーションを実行することが可能である
    ことを特徴とする請求項4または請求項5記載のプロセ
    ッサ。
  7. 【請求項7】 前記解読手段は、さらに、前記命令中に
    第3の定数を伴う定数置換オペレーションが置かれてい
    ることを解読し、 前記格納手段は、前記解読手段により前記定数置換オペ
    レーションが置かれていると解読された場合に、前記定
    数レジスタに格納されている定数の一部を残したまま他
    の部分と前記第3の定数とを置換して格納することを特
    徴とする請求項1から請求項3いずれか記載のプロセッ
    サ。
  8. 【請求項8】 前記置換する部分が、前記定数レジスタ
    の最下位ビットを含む部分である請求項7記載のプロセ
    ッサ。
  9. 【請求項9】 複数の命令を格納する記憶装置から命令
    を読み出す命令読み出し手段と、 定数を格納するための定数レジスタと、 前記命令読み出し手段により読み出された命令中に所定
    のオペレーションが置かれていることを解読し、前記命
    令中に前記オペレーションを実行する際のオペランドも
    しくはオペランドの一部となるべきの定数が置かれ
    ていることを解読する解読手段と、 前記定数レジスタから定数が読み出されたことを示す状
    態保持手段と、 前記解読手段により前記オペレーションと、前記第1の
    定数が置かれていると解読された場合であって、 前記状態保持手段により定数が読み出されていないこと
    を示されている場合は、前記定数レジスタに予め格納さ
    れている定数を読み出し、その読み出された定数と前記
    の定数とを連結した定数をオペランドとして前記オ
    ペレーションを実行し、 前記状態保持手段により定数が読み出されたことを示さ
    れている場合は、前記第の定数のみをオペランドと
    て前記オペレーションを実行する実行手段とを備えるこ
    とを特徴とするプロセッサ。
  10. 【請求項10】 命令のフォーマットを指定するフォー
    マットコードが置かれるフォーマットフィールドと、並
    列実行させるオペレーションを指定する複数のオペレー
    ションフィールドとを含む命令を解読し実行するVLI
    W方式のプロセッサであって、 解読手段は、前記フォーマットコードを参照することに
    より、少なくとも1つの前記オペレーションフィールド
    に定数が置かれていることを解読することを特徴とする
    請求項1から請求項9いずれか記載のプロセッサ。
JP20412597A 1997-07-30 1997-07-30 プロセッサ Expired - Fee Related JP3414209B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP20412597A JP3414209B2 (ja) 1997-07-30 1997-07-30 プロセッサ
US09/124,659 US6195740B1 (en) 1997-07-30 1998-07-29 Constant reconstructing processor that execute an instruction using an operand divided between instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20412597A JP3414209B2 (ja) 1997-07-30 1997-07-30 プロセッサ

Publications (2)

Publication Number Publication Date
JPH1153187A JPH1153187A (ja) 1999-02-26
JP3414209B2 true JP3414209B2 (ja) 2003-06-09

Family

ID=16485247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20412597A Expired - Fee Related JP3414209B2 (ja) 1997-07-30 1997-07-30 プロセッサ

Country Status (2)

Country Link
US (1) US6195740B1 (ja)
JP (1) JP3414209B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
CN1148647C (zh) 1999-08-30 2004-05-05 Ip菲力股份有限公司 数据处理系统及其控制方法
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US8860722B2 (en) 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US7512826B2 (en) * 2005-04-20 2009-03-31 International Business Machines Corporation Method, apparatus, and product for an efficient virtualized time base in a scaleable multi-processor computer
JP4916151B2 (ja) * 2005-09-29 2012-04-11 ルネサスエレクトロニクス株式会社 並列演算装置
US8599208B2 (en) 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
CN102184090B (zh) * 2011-05-27 2013-12-04 清华大学 一种动态可重构处理器及其固定数的调用方法
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
JP2015049832A (ja) 2013-09-04 2015-03-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 定数ロードのオーバーヘッドを削減する方法、装置及びプログラム
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542067A (en) * 1992-04-23 1996-07-30 International Business Machines Corporation Virtual multi-port RAM employing multiple accesses during single machine cycle
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP3623840B2 (ja) * 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US5787302A (en) * 1996-05-15 1998-07-28 Philips Electronic North America Corporation Software for producing instructions in a compressed format for a VLIW processor
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
US5983757A (en) * 1997-06-02 1999-11-16 Snap-On Technologies, Inc. Ratchet mechanism with laminated parts and method of making same

Also Published As

Publication number Publication date
JPH1153187A (ja) 1999-02-26
US6195740B1 (en) 2001-02-27

Similar Documents

Publication Publication Date Title
JP3414209B2 (ja) プロセッサ
JP3790607B2 (ja) Vliwプロセッサ
US5390307A (en) Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
JP3658101B2 (ja) データ処理装置
EP0627681B1 (en) Apparatus and method for processing data with a plurality of flag groups
US5682531A (en) Central processing unit
KR100618247B1 (ko) 코드크기의축소화를지원하는정수복원형프로세서
JPH07120278B2 (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
JP3412462B2 (ja) プロセッサ
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
US5519881A (en) Priority encoder for accessing multiple registers simultaneously and a data processing system which uses it
JP3670801B2 (ja) プロセッサ
JPH0769806B2 (ja) データ処理装置
EP1050800A1 (en) A pipelined execution unit
US6922760B2 (en) Distributed result system for high-performance wide-issue superscalar processor
US20040098568A1 (en) Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method
JP2004005733A (ja) Vliwプロセッサ
JPH0769802B2 (ja) データ処理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080404

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090404

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100404

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110404

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120404

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees