JPH08166880A - コンピュータ - Google Patents
コンピュータInfo
- Publication number
- JPH08166880A JPH08166880A JP6309198A JP30919894A JPH08166880A JP H08166880 A JPH08166880 A JP H08166880A JP 6309198 A JP6309198 A JP 6309198A JP 30919894 A JP30919894 A JP 30919894A JP H08166880 A JPH08166880 A JP H08166880A
- Authority
- JP
- Japan
- Prior art keywords
- register
- data
- instruction
- addition
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
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)
- Advance Control (AREA)
Abstract
(57)【要約】
【目的】 実行する命令数を少なくした高性能なコンピ
ュータを得る。 【構成】 制御回路50は、命令CMDを受け、命令C
MDに基づき、命令CMDがpush命令がpush命令を指示
する場合に“H”となる特殊命令信号12をレジスタフ
ァイル30に出力する。レジスタファイル30は、特殊
命令信号12が“H”の場合、読み出しレジスタアドレ
ス信号16a及び16bの値に関係なく、レジスタデー
タ6aとして$29のレジスタの格納データ値を出力
し、レジスタデータ6bとして$31のレジスタの格納
データ値を出力する。ALU2はレジスタデータ6aと
制御データ7aとを加算してALU演算結果8をレジス
タファイル30に出力する。アドレス加算器3は、レジ
スタデータ6aと制御データ7bとを加算してるアドレ
ス加算結果11を外部メモリに出力する。
ュータを得る。 【構成】 制御回路50は、命令CMDを受け、命令C
MDに基づき、命令CMDがpush命令がpush命令を指示
する場合に“H”となる特殊命令信号12をレジスタフ
ァイル30に出力する。レジスタファイル30は、特殊
命令信号12が“H”の場合、読み出しレジスタアドレ
ス信号16a及び16bの値に関係なく、レジスタデー
タ6aとして$29のレジスタの格納データ値を出力
し、レジスタデータ6bとして$31のレジスタの格納
データ値を出力する。ALU2はレジスタデータ6aと
制御データ7aとを加算してALU演算結果8をレジス
タファイル30に出力する。アドレス加算器3は、レジ
スタデータ6aと制御データ7bとを加算してるアドレ
ス加算結果11を外部メモリに出力する。
Description
【0001】
【産業上の利用分野】この発明は実行する命令数を少な
くした高性能なコンピュータに関するものである。
くした高性能なコンピュータに関するものである。
【0002】
【従来の技術】コンピュータは、ソフトウェアでプログ
ラムされた任意の手続きをそのコンピュータが実行でき
る命令語で記述した命令列に変換し、その命令列を実行
することでいろいろな処理を実現する。コンピュータの
1つとして、たとえば、MIPS社が開発したMIPS
R3000コンピュータ(以下「R3000」と称
す)がある。このR3000は、“mips RISC
ARCHITECTURE”,GERRY KANE
に詳しく説明されている。
ラムされた任意の手続きをそのコンピュータが実行でき
る命令語で記述した命令列に変換し、その命令列を実行
することでいろいろな処理を実現する。コンピュータの
1つとして、たとえば、MIPS社が開発したMIPS
R3000コンピュータ(以下「R3000」と称
す)がある。このR3000は、“mips RISC
ARCHITECTURE”,GERRY KANE
に詳しく説明されている。
【0003】図14はR3000の中央処理装置(Cent
er Processing Unit、以下CPUと呼ぶ)の構成を示す
ブロック図である。同図において、1はレジスタファイ
ル、2は算術論理演算装置(以下「ALU」と称す)、
3はアドレス加算器、4はプログラムカウンタ、5は制
御回路(命令デコーダを含む)である。なお、シフト回
路や乗算回路のような演算に関するものはすべてALU
2に含まれているとする。
er Processing Unit、以下CPUと呼ぶ)の構成を示す
ブロック図である。同図において、1はレジスタファイ
ル、2は算術論理演算装置(以下「ALU」と称す)、
3はアドレス加算器、4はプログラムカウンタ、5は制
御回路(命令デコーダを含む)である。なお、シフト回
路や乗算回路のような演算に関するものはすべてALU
2に含まれているとする。
【0004】また、6a,6bはレジスタファイル1よ
り読み出したレジスタの格納データ、7a,7bは制御
回路から出力される即値、8はALUの演算結果、9は
プログラムカウンタの出力データすなわち命令メモリの
アドレス値、CMDは命令メモリの出力信号すなわちこ
のコンピュータを動作させる命令、11はアドレス加算
器の演算結果すなわちデータメモリのアドレス値であ
る。18は命令語の中に記述されている書き込むレジス
タの番号を示すアドレスデータ、16a,16bはそれ
ぞれ命令語の中に記述されている読み出すレジスタの番
号を示すアドレスデータである。
り読み出したレジスタの格納データ、7a,7bは制御
回路から出力される即値、8はALUの演算結果、9は
プログラムカウンタの出力データすなわち命令メモリの
アドレス値、CMDは命令メモリの出力信号すなわちこ
のコンピュータを動作させる命令、11はアドレス加算
器の演算結果すなわちデータメモリのアドレス値であ
る。18は命令語の中に記述されている書き込むレジス
タの番号を示すアドレスデータ、16a,16bはそれ
ぞれ命令語の中に記述されている読み出すレジスタの番
号を示すアドレスデータである。
【0005】制御回路5は、命令CMDを受け、命令C
MDに基づき、制御データ7a及び7bをALU2及び
アドレス加算器3にそれぞれ出力し、読み出しレジスタ
アドレス信号16a,16b及び書き込みレジスタアド
レス信号18をレジスタファイル1に出力する。
MDに基づき、制御データ7a及び7bをALU2及び
アドレス加算器3にそれぞれ出力し、読み出しレジスタ
アドレス信号16a,16b及び書き込みレジスタアド
レス信号18をレジスタファイル1に出力する。
【0006】レジスタファイル1は、読み出しレジスタ
アドレス信号16a,16b及び書き込みレジスタアド
レス信号18に基づき、レジスタデータ6aをALU2
及びアドレス加算器3に出力し、レジスタデータ6bを
外部メモリ(図示せず)に出力する。また、書き込みレ
ジスタアドレス信号18で書き込みレジスタが指示され
ている場合、書き込みレジスタにALU演算結果8を書
き込む。
アドレス信号16a,16b及び書き込みレジスタアド
レス信号18に基づき、レジスタデータ6aをALU2
及びアドレス加算器3に出力し、レジスタデータ6bを
外部メモリ(図示せず)に出力する。また、書き込みレ
ジスタアドレス信号18で書き込みレジスタが指示され
ている場合、書き込みレジスタにALU演算結果8を書
き込む。
【0007】ALU2はレジスタデータ6aと制御デー
タ7aとを加算し、その加算結果であるALU演算結果
8をレジスタファイル1に出力する。
タ7aとを加算し、その加算結果であるALU演算結果
8をレジスタファイル1に出力する。
【0008】アドレス加算器3は、レジスタデータ6a
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
【0009】プログラムカウンタ4は、制御信号23が
“L”のとき、プログラムカウント値9を順次インクリ
メントして出力する。
“L”のとき、プログラムカウント値9を順次インクリ
メントして出力する。
【0010】コンピュータR3000はプログラムカウ
ント値9をアドレス値として読み出された命令10を制
御回路5で解読し、必要な信号を生成してそれぞれのブ
ロックにその信号を与えることによって処理を実行す
る。
ント値9をアドレス値として読み出された命令10を制
御回路5で解読し、必要な信号を生成してそれぞれのブ
ロックにその信号を与えることによって処理を実行す
る。
【0011】図15はレジスタファイル1の内部構成を
示す説明図である。同図に示すように、マトリクス状に
メモリセルMCが構成され、各行のメモリセルMCがそ
れぞれ$0〜$31のレジスタR0〜R31となる。こ
れらのメモリセルMCへのアクセスはデコード回路60
0〜602の制御下で行われる。
示す説明図である。同図に示すように、マトリクス状に
メモリセルMCが構成され、各行のメモリセルMCがそ
れぞれ$0〜$31のレジスタR0〜R31となる。こ
れらのメモリセルMCへのアクセスはデコード回路60
0〜602の制御下で行われる。
【0012】デコード回路600は書き込みレジスタア
ドレス信号18を受け、書き込みレジスタアドレス信号
18に基づき複数の書き込みレジスタ選択線19を選択
的に“H”にする。デコード回路601は読み出しレジ
スタアドレス信号16aを受け、読み出しレジスタアド
レス信号16aに基づき複数の読み出しレジスタ選択線
20aを選択的に“H”にする。デコード回路602は
読み出しレジスタアドレス信号16bを受け、読み出し
レジスタアドレス信号16bに基づき読み出しレジスタ
選択線20bを選択的に“H”にする。
ドレス信号18を受け、書き込みレジスタアドレス信号
18に基づき複数の書き込みレジスタ選択線19を選択
的に“H”にする。デコード回路601は読み出しレジ
スタアドレス信号16aを受け、読み出しレジスタアド
レス信号16aに基づき複数の読み出しレジスタ選択線
20aを選択的に“H”にする。デコード回路602は
読み出しレジスタアドレス信号16bを受け、読み出し
レジスタアドレス信号16bに基づき読み出しレジスタ
選択線20bを選択的に“H”にする。
【0013】図16はメモリセルMCの内部構成を示す
回路図である。同図に示すように、インバータG1及び
G2のループ接続により記憶部21を構成し、インバー
タG1の入力部とALU演算結果8の1ビット情報が得
られる書き込み信号線L8との間にNMOSトランジス
タQ1が介挿される。また、インバータG1の出力がイ
ンバータG3の入力に接続され、インバータG3の出力
部とレジスタデータ6aの1ビット情報が出力されるレ
ジスタデータ線L6aとの間にNMOSトランジスタQ
2が介挿される。さらに、インバータG1の出力がイン
バータG4の入力に接続され、インバータG4の出力部
とレジスタデータ6bの1ビット情報が出力されるレジ
スタデータ線L6bとの間にNMOSトランジスタQ3
が介挿される。そして、トランジスタQ1のゲートに書
き込み選択線L1が接続され、トランジスタQ2のゲー
トに読み出し選択線L2aが接続され、トランジスタQ
3のゲートに読み出し選択線L2bが接続される。そし
て、書き込み選択線L1に書き込みレジスタ選択線19
が接続され、読み出し選択線L2aに読み出しレジスタ
選択線20aが接続され、読み出し選択線L2bに読み
出しレジスタ選択線20bが接続される。
回路図である。同図に示すように、インバータG1及び
G2のループ接続により記憶部21を構成し、インバー
タG1の入力部とALU演算結果8の1ビット情報が得
られる書き込み信号線L8との間にNMOSトランジス
タQ1が介挿される。また、インバータG1の出力がイ
ンバータG3の入力に接続され、インバータG3の出力
部とレジスタデータ6aの1ビット情報が出力されるレ
ジスタデータ線L6aとの間にNMOSトランジスタQ
2が介挿される。さらに、インバータG1の出力がイン
バータG4の入力に接続され、インバータG4の出力部
とレジスタデータ6bの1ビット情報が出力されるレジ
スタデータ線L6bとの間にNMOSトランジスタQ3
が介挿される。そして、トランジスタQ1のゲートに書
き込み選択線L1が接続され、トランジスタQ2のゲー
トに読み出し選択線L2aが接続され、トランジスタQ
3のゲートに読み出し選択線L2bが接続される。そし
て、書き込み選択線L1に書き込みレジスタ選択線19
が接続され、読み出し選択線L2aに読み出しレジスタ
選択線20aが接続され、読み出し選択線L2bに読み
出しレジスタ選択線20bが接続される。
【0014】したがって、書き込みレジスタ選択線19
が“H”になると、トランジスタQ1がオンし、書き込
み信号線L8より得られるALU演算結果8の1ビット
情報が記憶部21に書き込まれ、読み出しレジスタ選択
線20aが“H”になると、トランジスタQ2がオン
し、記憶部21の格納データがレジスタデータ線L6a
を介してレジスタデータ6bとして出力され、読み出し
レジスタ選択線20bが“H”になると、トランジスタ
Q3がオンし、記憶部21の格納データがレジスタデー
タ線L6bを介してレジスタデータ6bとして出力され
る。
が“H”になると、トランジスタQ1がオンし、書き込
み信号線L8より得られるALU演算結果8の1ビット
情報が記憶部21に書き込まれ、読み出しレジスタ選択
線20aが“H”になると、トランジスタQ2がオン
し、記憶部21の格納データがレジスタデータ線L6a
を介してレジスタデータ6bとして出力され、読み出し
レジスタ選択線20bが“H”になると、トランジスタ
Q3がオンし、記憶部21の格納データがレジスタデー
タ線L6bを介してレジスタデータ6bとして出力され
る。
【0015】このような構成のレジスタファイル1は、
書き込みレジスタアドレス信号18に基づき書き込みレ
ジスタ選択線19を選択的に“H”にして、“H”の書
き込みレジスタ選択線19に接続されるレジスタRi
(i=0〜31)のメモリセルMCに、ALU演算結果
8を書き込んだり、読み出しレジスタアドレス信号16
aに基づき、読み出しレジスタ選択線20aを“H”に
して、“H”の読み出しレジスタ選択線20aに接続さ
れるレジスタRiのメモリセルMCから、レジスタデー
タ6aを出力したり、読み出しレジスタアドレス信号1
6bに基づき、読み出しレジスタ選択線20bを“H”
にして、“H”の読み出しレジスタ選択線20bに接続
されるレジスタRiのメモリセルMCから、レジスタデ
ータ6bを出力したりする。
書き込みレジスタアドレス信号18に基づき書き込みレ
ジスタ選択線19を選択的に“H”にして、“H”の書
き込みレジスタ選択線19に接続されるレジスタRi
(i=0〜31)のメモリセルMCに、ALU演算結果
8を書き込んだり、読み出しレジスタアドレス信号16
aに基づき、読み出しレジスタ選択線20aを“H”に
して、“H”の読み出しレジスタ選択線20aに接続さ
れるレジスタRiのメモリセルMCから、レジスタデー
タ6aを出力したり、読み出しレジスタアドレス信号1
6bに基づき、読み出しレジスタ選択線20bを“H”
にして、“H”の読み出しレジスタ選択線20bに接続
されるレジスタRiのメモリセルMCから、レジスタデ
ータ6bを出力したりする。
【0016】このように、レジスタファイル1は、コン
ピュータの内部に存在するコンピュータが処理できるビ
ット幅のデータ記憶装置群を構成している。R3000
のレジスタファイル1の場合は32ビット幅のレジスタ
を32個装備しており、それぞれを識別するため$0か
ら$31までの番号がつけられている。以下、本明細書
中では32個のレジスタ群の中でx番のレジスタを$x
と表現する。
ピュータの内部に存在するコンピュータが処理できるビ
ット幅のデータ記憶装置群を構成している。R3000
のレジスタファイル1の場合は32ビット幅のレジスタ
を32個装備しており、それぞれを識別するため$0か
ら$31までの番号がつけられている。以下、本明細書
中では32個のレジスタ群の中でx番のレジスタを$x
と表現する。
【0017】最近のコンピュータではこれらのレジスタ
群は自由にデータを読み出したり、書き込んだりするこ
とが可能であるが、R3000の場合は特に$0のレジ
スタは零レジスタと特定し、書き込むことはできなく
て、読み出す場合は常に値0を読み出すことにハードウ
ェアで決められている。
群は自由にデータを読み出したり、書き込んだりするこ
とが可能であるが、R3000の場合は特に$0のレジ
スタは零レジスタと特定し、書き込むことはできなく
て、読み出す場合は常に値0を読み出すことにハードウ
ェアで決められている。
【0018】また$31はリンクレジスタと呼ばれ、分
岐命令実行後に復帰する場合の戻り先のアドレスのデー
タを格納するレジスタに指定されている。また$29は
スタックポインタ用のレジスタに指定されており、これ
は分岐命令を実行した場合に分岐先の命令が分岐前のC
PU内のレジスタの値を書き換える場合に備えて、あら
かじめレジスタのデータを退避する外部メモリ素子上の
アドレス値を格納するレジスタである。
岐命令実行後に復帰する場合の戻り先のアドレスのデー
タを格納するレジスタに指定されている。また$29は
スタックポインタ用のレジスタに指定されており、これ
は分岐命令を実行した場合に分岐先の命令が分岐前のC
PU内のレジスタの値を書き換える場合に備えて、あら
かじめレジスタのデータを退避する外部メモリ素子上の
アドレス値を格納するレジスタである。
【0019】しかし、$31と$29は形式的に上記の
ような使用方法が決められているだけであり、それ以外
のデータの格納に利用することは可能であり、またそう
することも何ら問題ではない。そのため、$29の利用
に関しては必ず命令語の中でその番号を指定する必要が
ある。$31に関しては、基本的には命令語の中でその
番号を指定する必要があるが、命令語の中で指定せずに
利用される場合がある。
ような使用方法が決められているだけであり、それ以外
のデータの格納に利用することは可能であり、またそう
することも何ら問題ではない。そのため、$29の利用
に関しては必ず命令語の中でその番号を指定する必要が
ある。$31に関しては、基本的には命令語の中でその
番号を指定する必要があるが、命令語の中で指定せずに
利用される場合がある。
【0020】R3000とは異なり、コンピュータの中
にはレジスタを固定的にある決まった命令だけでしか利
用できないようなコンピュータも存在する。このような
コンピュータでは命令によって読み書きするレジスタが
固定されているので、命令語の中にわざわざレジスタの
名称を記述しないようになっている。
にはレジスタを固定的にある決まった命令だけでしか利
用できないようなコンピュータも存在する。このような
コンピュータでは命令によって読み書きするレジスタが
固定されているので、命令語の中にわざわざレジスタの
名称を記述しないようになっている。
【0021】最近のコンピュータにはコンパイラと呼ば
れるソフトウェアが必須であり、コンピュータというハ
ードウェアとこのコンパイラというソフトウェアの組み
合わせが現在の高速で高性能なコンピュータを作ってい
ると言っても過言ではない。コンパイラとはコンピュー
タが命令を実行しやすいように命令を並べたり、コンピ
ュータが持っている演算装置を効率的に利用できるよう
にするソフトウェアである。コンパイラにとってはコン
ピュータが多くのレジスタを装備し、データをコンピュ
ータのレジスタ間で移動できたほうが効率が良い。その
ため命令でレジスタが固定されているよりも、いろいろ
な命令でいろいろなレジスタが利用できるほうが都合が
良い。したがって、最近の高性能なコンピュータでは命
令でレジスタが固定されていない場合が多い。
れるソフトウェアが必須であり、コンピュータというハ
ードウェアとこのコンパイラというソフトウェアの組み
合わせが現在の高速で高性能なコンピュータを作ってい
ると言っても過言ではない。コンパイラとはコンピュー
タが命令を実行しやすいように命令を並べたり、コンピ
ュータが持っている演算装置を効率的に利用できるよう
にするソフトウェアである。コンパイラにとってはコン
ピュータが多くのレジスタを装備し、データをコンピュ
ータのレジスタ間で移動できたほうが効率が良い。その
ため命令でレジスタが固定されているよりも、いろいろ
な命令でいろいろなレジスタが利用できるほうが都合が
良い。したがって、最近の高性能なコンピュータでは命
令でレジスタが固定されていない場合が多い。
【0022】命令でレジスタが固定されているようなコ
ンピュータでは、複雑度が増すためレジスタは8個ぐら
いしか装備できず、レジスタを16個以上(最近はほと
んどが32個)装備しているコンピュータでは命令でレ
ジスタを固定していない。そのため、命令語の中で利用
するレジスタの番号(あるいは名称)を指定するように
なっている。レジスタを命令で指定できるほうが、レジ
スタファイルをメモリ素子のような構成で作成でき半導
体集積回路にとっては利点が大きい。
ンピュータでは、複雑度が増すためレジスタは8個ぐら
いしか装備できず、レジスタを16個以上(最近はほと
んどが32個)装備しているコンピュータでは命令でレ
ジスタを固定していない。そのため、命令語の中で利用
するレジスタの番号(あるいは名称)を指定するように
なっている。レジスタを命令で指定できるほうが、レジ
スタファイルをメモリ素子のような構成で作成でき半導
体集積回路にとっては利点が大きい。
【0023】アドレス加算器はロード命令(CPU外部
のメモリ素子のデータをCPU内のレジスタに読み込む
命令)やストア命令(CPU内のレジスタのデータをC
PU外部のメモリ素子に書き込む命令)の実行の場合
に、外部メモリ素子の番地(アドレス)を計算するため
の加算器である。その他のALU、プログラムカウン
タ、制御回路はコンピュータに必要となる通常の回路で
あるので特に説明は加えない。
のメモリ素子のデータをCPU内のレジスタに読み込む
命令)やストア命令(CPU内のレジスタのデータをC
PU外部のメモリ素子に書き込む命令)の実行の場合
に、外部メモリ素子の番地(アドレス)を計算するため
の加算器である。その他のALU、プログラムカウン
タ、制御回路はコンピュータに必要となる通常の回路で
あるので特に説明は加えない。
【0024】以下に従来のコンピュータとしてR300
0がいろいろな命令を実行する例について説明する。図
17はR3000がcall-return文(任意の命令列に分
岐し、もとの命令列に戻ってくる命令)を実行する場合
の命令を命令語とそのマシン語と合わせて示したもので
ある。マシン語とは命令語をコンピュータが理解できる
2進数の数字の列で表現したものであり、最近の高性能
コンピュータでは1命令それぞれが32ビット長に固定
されている。
0がいろいろな命令を実行する例について説明する。図
17はR3000がcall-return文(任意の命令列に分
岐し、もとの命令列に戻ってくる命令)を実行する場合
の命令を命令語とそのマシン語と合わせて示したもので
ある。マシン語とは命令語をコンピュータが理解できる
2進数の数字の列で表現したものであり、最近の高性能
コンピュータでは1命令それぞれが32ビット長に固定
されている。
【0025】図17では、命令1が命令「jal」によ
り、命令列A(命令10から命令16で構成)を呼び出
している。そして、命令列Aの処理が完了した場合に命
令2に戻ってきて命令2を実行する。このような処理を
call-return処理と呼ぶ。命令1ではプログラムカウン
タに命令10のアドレス値、この例の場合は10をセッ
トする。命令1のマシン語では、最初の6ビットが「ja
l」という分岐命令を表わしていて、次の5ビットとそ
の次の5ビットと最後の16ビットが分岐先アドレス1
0を表わしている。この10をプログラムカウンタ4に
セットする。
り、命令列A(命令10から命令16で構成)を呼び出
している。そして、命令列Aの処理が完了した場合に命
令2に戻ってきて命令2を実行する。このような処理を
call-return処理と呼ぶ。命令1ではプログラムカウン
タに命令10のアドレス値、この例の場合は10をセッ
トする。命令1のマシン語では、最初の6ビットが「ja
l」という分岐命令を表わしていて、次の5ビットとそ
の次の5ビットと最後の16ビットが分岐先アドレス1
0を表わしている。この10をプログラムカウンタ4に
セットする。
【0026】jal 命令では分岐先の命令列Aの実行完了
後に必ず次の命令に戻ってくる必要があるので、ハード
ウェアで暗黙的に$31のレジスタに命令2のアドレス
値すなわち2をセットする。これは命令語やマシン語で
はなにも指定する必要がない。これはjal 命令では現在
のプログラムカウント値(命令1のアドレスを示す1)
に1を加算した値(命令2のアドレスを示す2)を$3
1に書き込むことが暗黙的にわかっているので、特にマ
シン語に記述する必要がないからである。これが先に述
べた$31のレジスタを命令後の中で指定せずに利用す
る特別な場合に相当する。
後に必ず次の命令に戻ってくる必要があるので、ハード
ウェアで暗黙的に$31のレジスタに命令2のアドレス
値すなわち2をセットする。これは命令語やマシン語で
はなにも指定する必要がない。これはjal 命令では現在
のプログラムカウント値(命令1のアドレスを示す1)
に1を加算した値(命令2のアドレスを示す2)を$3
1に書き込むことが暗黙的にわかっているので、特にマ
シン語に記述する必要がないからである。これが先に述
べた$31のレジスタを命令後の中で指定せずに利用す
る特別な場合に相当する。
【0027】コンピュータは命令1の後に命令10を実
行する。命令10の「addi」は加算命令であるが、$2
9のレジスタの格納データと(−6)とを加算して$2
9のレジスタに書き込むことを示している。命令10の
マシン語では、最初の6ビットが「addi」という命令を
表わしていて、次の5ビットが書き込むレジスタ$29
を、次の5ビットが読み出すレジスタ$29を表わして
いて、最後の16ビットが加算データ(−6)を表わし
ている。通常のaddi命令では読み出すレジスタと書き込
むレジスタは異なっているので2個のレジスタを指定す
る必要があり、この場合でもマシン語では$29のレジ
スタを2度指定する必要がある。
行する。命令10の「addi」は加算命令であるが、$2
9のレジスタの格納データと(−6)とを加算して$2
9のレジスタに書き込むことを示している。命令10の
マシン語では、最初の6ビットが「addi」という命令を
表わしていて、次の5ビットが書き込むレジスタ$29
を、次の5ビットが読み出すレジスタ$29を表わして
いて、最後の16ビットが加算データ(−6)を表わし
ている。通常のaddi命令では読み出すレジスタと書き込
むレジスタは異なっているので2個のレジスタを指定す
る必要があり、この場合でもマシン語では$29のレジ
スタを2度指定する必要がある。
【0028】命令11はストア命令で、$29のレジス
タの格納データと5とを加算した値をアドレス番号と
し、CPU外部のメモリの上記アドレス番号に$31の
レジスタの格納データを記憶することを意味している。
これは後で実行する命令13が命令1と同様に「jal」
命令であり、$31のレジスタに戻り先のアドレスを無
条件に書き込むため、現在の$31のレジスタの格納デ
ータを外部メモリへ退避する必要があるために発生する
命令である。命令11のマシン語では、最初の6ビット
がストア命令を表わしていて、次の5ビットがアドレス
計算に必要なレジスタ番号$29を、次の5ビットが外
部に記憶するデータを保持しているレジスタの番号$3
1を表わし、最後の16ビットが加算するデータ5を表
わしている。
タの格納データと5とを加算した値をアドレス番号と
し、CPU外部のメモリの上記アドレス番号に$31の
レジスタの格納データを記憶することを意味している。
これは後で実行する命令13が命令1と同様に「jal」
命令であり、$31のレジスタに戻り先のアドレスを無
条件に書き込むため、現在の$31のレジスタの格納デ
ータを外部メモリへ退避する必要があるために発生する
命令である。命令11のマシン語では、最初の6ビット
がストア命令を表わしていて、次の5ビットがアドレス
計算に必要なレジスタ番号$29を、次の5ビットが外
部に記憶するデータを保持しているレジスタの番号$3
1を表わし、最後の16ビットが加算するデータ5を表
わしている。
【0029】このように、コンピュータでは外部メモリ
上にレジスタのデータを退避するため、その退避するメ
モリ上の空き空間のアドレスを指示するレジスタが必要
であり、R3000では$29のレジスタに相当する。
上記の例の場合は$31のレジスタの格納データだけを
退避させているが、callする命令列が使用するレジスタ
数によりその退避するレジスタ数は任意の数となる。
上にレジスタのデータを退避するため、その退避するメ
モリ上の空き空間のアドレスを指示するレジスタが必要
であり、R3000では$29のレジスタに相当する。
上記の例の場合は$31のレジスタの格納データだけを
退避させているが、callする命令列が使用するレジスタ
数によりその退避するレジスタ数は任意の数となる。
【0030】命令12と命令13は命令列Aの本来の命
令である命令10と命令11は命令12と命令13を実
行するための準備と考えてもよい。命令13はjal 命令
であるので、分岐した後に必要な処理を実行完了して命
令14にもどってくる。命令14はロード命令であり、
$29のレジスタの格納データに5を加算した値をアド
レス番号として外部メモリからデータを読み出し、$3
1のレジスタに転送して書き込むことを表わしている。
すなわち、命令列Aが呼ばれた命令へ戻るために、$3
1に戻り先アドレスをセットすることになる。命令15
は$29のレジスタの格納データと6とを加算すること
を表わしている。これは命令列を呼び出す前の状態の$
29のレジスタの格納データに戻す、すなわち空き空間
をもとに戻すことを意味する。
令である命令10と命令11は命令12と命令13を実
行するための準備と考えてもよい。命令13はjal 命令
であるので、分岐した後に必要な処理を実行完了して命
令14にもどってくる。命令14はロード命令であり、
$29のレジスタの格納データに5を加算した値をアド
レス番号として外部メモリからデータを読み出し、$3
1のレジスタに転送して書き込むことを表わしている。
すなわち、命令列Aが呼ばれた命令へ戻るために、$3
1に戻り先アドレスをセットすることになる。命令15
は$29のレジスタの格納データと6とを加算すること
を表わしている。これは命令列を呼び出す前の状態の$
29のレジスタの格納データに戻す、すなわち空き空間
をもとに戻すことを意味する。
【0031】命令16は$31のレジスタが指示するア
ドレス値をプログラムカウンタにセットし、分岐するこ
とを示している。この例の場合では、$31のレジスタ
の格納データ値は命令2のアドレス値である2であり、
命令2に分岐する。すなわち、命令列Aを呼び出した命
令1の次の命令に戻ることになる。
ドレス値をプログラムカウンタにセットし、分岐するこ
とを示している。この例の場合では、$31のレジスタ
の格納データ値は命令2のアドレス値である2であり、
命令2に分岐する。すなわち、命令列Aを呼び出した命
令1の次の命令に戻ることになる。
【0032】以下、図14で示した従来のコンピュータ
による図17の命令10及び命令11の処理方法を詳述
する。
による図17の命令10及び命令11の処理方法を詳述
する。
【0033】図17における命令10のaddi命令を処
理する場合 制御回路5は命令CMDをデコードして、書き込みアド
レス信号18として“11101 ”、読み出しレジスタアド
レス信号16aとして“11101 ”を設定し、加算される
即値−6を制御データ7aとして設定する。そして、レ
ジスタファイル1は、読み出しレジスタアドレス信号1
6a及び書き込みレジスタアドレス信号18に基づき、
レジスタデータ6aとして$29のレジスタの格納デー
タ値(D29)を出力し、書き込みレジスタとして$2
9のレジスタを指定する。そして、ALU2は、レジス
タデータ6a(D29)と制御データ7a(“−6”)
とを加算して得られるALU演算結果8をレジスタファ
イル1に出力することにより、レジスタファイル1内の
$29のレジスタの格納データ値としてALU演算結果
8が書き込まれる。
理する場合 制御回路5は命令CMDをデコードして、書き込みアド
レス信号18として“11101 ”、読み出しレジスタアド
レス信号16aとして“11101 ”を設定し、加算される
即値−6を制御データ7aとして設定する。そして、レ
ジスタファイル1は、読み出しレジスタアドレス信号1
6a及び書き込みレジスタアドレス信号18に基づき、
レジスタデータ6aとして$29のレジスタの格納デー
タ値(D29)を出力し、書き込みレジスタとして$2
9のレジスタを指定する。そして、ALU2は、レジス
タデータ6a(D29)と制御データ7a(“−6”)
とを加算して得られるALU演算結果8をレジスタファ
イル1に出力することにより、レジスタファイル1内の
$29のレジスタの格納データ値としてALU演算結果
8が書き込まれる。
【0034】図17における命令11のsw命令を処理
する場合 制御回路5は命令CMDがデコードして、読み出しレジ
スタアドレス信号16aとして“11101”を設定し、も
う一つの読み出しレジスタアドレス信号16bとして
“11111”を設定し、加算される即値5を制御データ7
bとして設定する。そして、レジスタファイル1は、読
み出しレジスタアドレス信号16a及び16bに基づ
き、レジスタデータ6aとして$29のレジスタの格納
データ値(D29)をアドレス加算器3に出力するとも
に、レジスタデータ6bとして$31のレジスタの格納
データ値(D31)を外部メモリに出力する。
する場合 制御回路5は命令CMDがデコードして、読み出しレジ
スタアドレス信号16aとして“11101”を設定し、も
う一つの読み出しレジスタアドレス信号16bとして
“11111”を設定し、加算される即値5を制御データ7
bとして設定する。そして、レジスタファイル1は、読
み出しレジスタアドレス信号16a及び16bに基づ
き、レジスタデータ6aとして$29のレジスタの格納
データ値(D29)をアドレス加算器3に出力するとも
に、レジスタデータ6bとして$31のレジスタの格納
データ値(D31)を外部メモリに出力する。
【0035】そして、アドレス加算器3は、レジスタデ
ータ6a(D29)と制御データ7b(“5”)とを加
算して得られるアドレス加算結果11を外部メモリに出
力する。その結果、アドレス加算結果11をアドレス値
とする外部メモリに、読み出したレジスタデータ6bす
なわち$31のレジスタの格納データ値が書き込まれ
る。
ータ6a(D29)と制御データ7b(“5”)とを加
算して得られるアドレス加算結果11を外部メモリに出
力する。その結果、アドレス加算結果11をアドレス値
とする外部メモリに、読み出したレジスタデータ6bす
なわち$31のレジスタの格納データ値が書き込まれ
る。
【0036】図16はR3000がfor 文(同じ命令列
を指示された数だけ繰り返し実行する命令)を実行する
場合の命令を命令コードとそのマシン語と合わせて示し
た図である。図16では命令3で指示される命令を1024
回繰り返すfor 文の例を示してある。
を指示された数だけ繰り返し実行する命令)を実行する
場合の命令を命令コードとそのマシン語と合わせて示し
た図である。図16では命令3で指示される命令を1024
回繰り返すfor 文の例を示してある。
【0037】まず命令1でレジスタの1番に繰り返す回
数である1024をセットする。命令1のaddiは加算命令で
あるが、$0のレジスタの格納データ値に1024を加算し
て$1に書き込むことを示している。$0のレジスタは
先にも述べたように値は常に“0”である。命令1のマ
シン語では、最初の6ビットがaddiという加算命令を表
わしていて、次の5ビットが$0を表わし、最後の16
ビットが1024を表わしている。
数である1024をセットする。命令1のaddiは加算命令で
あるが、$0のレジスタの格納データ値に1024を加算し
て$1に書き込むことを示している。$0のレジスタは
先にも述べたように値は常に“0”である。命令1のマ
シン語では、最初の6ビットがaddiという加算命令を表
わしていて、次の5ビットが$0を表わし、最後の16
ビットが1024を表わしている。
【0038】命令2で同様に$2のレジスタの格納デー
タ値として、繰り返しの最初であることを意味する
“1”をセットする。命令3はこのfor 文が繰り返し実
行する本来の命令(処理)であり、ここでは命令3が1
個だけであるが、この数は約64000個(216個)の
命令が可能である。
タ値として、繰り返しの最初であることを意味する
“1”をセットする。命令3はこのfor 文が繰り返し実
行する本来の命令(処理)であり、ここでは命令3が1
個だけであるが、この数は約64000個(216個)の
命令が可能である。
【0039】命令4では、必要な処理(ここでは命令
3)を実行したので$2のレジスタの格納データ値に値
1を加算して、$2のレジスタの格納データ値としてセ
ットする。読み出すレジスタも書き込むレジスタも同じ
であるので、括弧のような命令記述でもよい。しかしマ
シン語では、通常のaddi命令と同じ命令であるので、最
初の6ビットがaddiという加算命令を表わしていて、次
の5ビットが書き込むレジスタである$2を、次の5ビ
ットが読み出すレジスタである$2を表わし、最後の1
6ビットが加算1を表わしている。このようにマシン語
の中では$2を2回記述する必要がある。
3)を実行したので$2のレジスタの格納データ値に値
1を加算して、$2のレジスタの格納データ値としてセ
ットする。読み出すレジスタも書き込むレジスタも同じ
であるので、括弧のような命令記述でもよい。しかしマ
シン語では、通常のaddi命令と同じ命令であるので、最
初の6ビットがaddiという加算命令を表わしていて、次
の5ビットが書き込むレジスタである$2を、次の5ビ
ットが読み出すレジスタである$2を表わし、最後の1
6ビットが加算1を表わしている。このようにマシン語
の中では$2を2回記述する必要がある。
【0040】命令5では$2のレジスタの格納データ値
と$1のレジスタの格納データ値とを比較し、一致して
いなければ現在実行中の番地の−2の番地(すなわち命
令3の番地)の処理にもどることを示している。命令5
のマシン語では命令1のマシン語と同様に、最初の6ビ
ットが「bne」という比較分岐命令を表わし、次の5ビ
ットが$2のレジスタの格納データ値を、次の5ビット
が$1のレジスタの格納データ値を表わし、最後の16
ビットが−2を表わしている。
と$1のレジスタの格納データ値とを比較し、一致して
いなければ現在実行中の番地の−2の番地(すなわち命
令3の番地)の処理にもどることを示している。命令5
のマシン語では命令1のマシン語と同様に、最初の6ビ
ットが「bne」という比較分岐命令を表わし、次の5ビ
ットが$2のレジスタの格納データ値を、次の5ビット
が$1のレジスタの格納データ値を表わし、最後の16
ビットが−2を表わしている。
【0041】命令5では$2のレジスタの格納データ値
が1024になるまでは$2のレジスタの格納データ値と$
1のレジスタの格納データ値とが一致しない。命令4で
$2のレジスタの格納データ値が1づつ増加していくの
で、結局命令3から命令4を1024回実行しなければ$2
のレジスタの格納データ値は1024にならない。$2のレ
ジスタの格納データ値が“1024”になると、命令5では
$2のレジスタの格納データ値と$1のレジスタの格納
データ値とが一致するので命令3に分岐することなく、
命令6に処理が移行する。これで、for 文の繰り返し命
令を実行したことになる。
が1024になるまでは$2のレジスタの格納データ値と$
1のレジスタの格納データ値とが一致しない。命令4で
$2のレジスタの格納データ値が1づつ増加していくの
で、結局命令3から命令4を1024回実行しなければ$2
のレジスタの格納データ値は1024にならない。$2のレ
ジスタの格納データ値が“1024”になると、命令5では
$2のレジスタの格納データ値と$1のレジスタの格納
データ値とが一致するので命令3に分岐することなく、
命令6に処理が移行する。これで、for 文の繰り返し命
令を実行したことになる。
【0042】図19は図14で示したR3000のさら
に詳細な構成を示すブロック図である。同図に示すよう
に、R3000には比較回路100という分岐命令制御
用の比較回路100が設けられている。比較回路100
はレジスタデータ6a及びレジスタデータ6bを受け、
レジスタデータ6aとレジスタデータ6bとの比較結果
を比較結果信号101としてプログラムカウンタ4に出
力する。
に詳細な構成を示すブロック図である。同図に示すよう
に、R3000には比較回路100という分岐命令制御
用の比較回路100が設けられている。比較回路100
はレジスタデータ6a及びレジスタデータ6bを受け、
レジスタデータ6aとレジスタデータ6bとの比較結果
を比較結果信号101としてプログラムカウンタ4に出
力する。
【0043】制御回路5は、通常は“L”の制御信号2
3を出力し、命令CMDがbne命令を指示する場合に
“H”の制御信号23をプログラムカウンタ4に出力す
る。
3を出力し、命令CMDがbne命令を指示する場合に
“H”の制御信号23をプログラムカウンタ4に出力す
る。
【0044】プログラムカウンタ4は、制御信号23、
制御データ7b及び比較結果信号101を受け、制御信
号23が“H”で比較結果信号101が不一致を指示し
ているとき、現在のプログラムカウント値9に制御デー
タ7bを加算した値を新たなプログラムカウント値9と
して出力し、制御信号23が“H”で比較結果信号10
1が一致を指示しているとき、プログラムカウント値9
に1を加算して新たなプログラムカウント値9として出
力する。また、プログラムカウンタ4は、制御信号23
が“L”のとき、プログラムカウント値9を順次インク
リメントして出力する。
制御データ7b及び比較結果信号101を受け、制御信
号23が“H”で比較結果信号101が不一致を指示し
ているとき、現在のプログラムカウント値9に制御デー
タ7bを加算した値を新たなプログラムカウント値9と
して出力し、制御信号23が“H”で比較結果信号10
1が一致を指示しているとき、プログラムカウント値9
に1を加算して新たなプログラムカウント値9として出
力する。また、プログラムカウンタ4は、制御信号23
が“L”のとき、プログラムカウント値9を順次インク
リメントして出力する。
【0045】以下、図19で示したR3000による図
18の命令4及び命令5の処理方法を詳述する。
18の命令4及び命令5の処理方法を詳述する。
【0046】図18における命令4のaddi命令を処理
する場合 制御回路5は、命令CMDがデコードして、書き込みア
ドレス信号18として“11100 ”、読み出しレジスタア
ドレス信号16aとして“11100”を設定し、加算され
る即値1を制御データ7aとして設定する。そして、レ
ジスタファイル1は、読み出しレジスタアドレス信号1
6a及び書き込みレジスタアドレス信号18に基づき、
レジスタデータ6aとして$28のレジスタの格納デー
タ値(D28)を出力し、書き込みレジスタとして$2
8のレジスタを指定する。そして、ALU2は、レジス
タデータ6a(D28)と制御データ7a(1)とを加
算して得られるALU演算結果8をレジスタファイル1
に出力することにより、レジスタファイル1内の$28
のレジスタの格納データ値としてALU演算結果8が書
き込まれる。
する場合 制御回路5は、命令CMDがデコードして、書き込みア
ドレス信号18として“11100 ”、読み出しレジスタア
ドレス信号16aとして“11100”を設定し、加算され
る即値1を制御データ7aとして設定する。そして、レ
ジスタファイル1は、読み出しレジスタアドレス信号1
6a及び書き込みレジスタアドレス信号18に基づき、
レジスタデータ6aとして$28のレジスタの格納デー
タ値(D28)を出力し、書き込みレジスタとして$2
8のレジスタを指定する。そして、ALU2は、レジス
タデータ6a(D28)と制御データ7a(1)とを加
算して得られるALU演算結果8をレジスタファイル1
に出力することにより、レジスタファイル1内の$28
のレジスタの格納データ値としてALU演算結果8が書
き込まれる。
【0047】図18における命令5のbne命令を処理
する場合 制御回路5は、命令CMDをデコードして、読み出しレ
ジスタアドレス信号16aとして“11100”を設定し、
もう一つの読み出しレジスタアドレス信号16bとして
“11110”を設定し、プログラムカウント値9に加算さ
れる即値−2を制御データ7bとして設定する。さら
に、制御回路5は“H”の制御信号23を出力する。そ
して、レジスタファイル1は、読み出しレジスタアドレ
ス信号16a及び16bに基づき、レジスタデータ6a
として$28のレジスタの格納データ値(D28)を出
力し、レジスタデータ6bとして$30のレジスタの格
納データ値(D30)を出力する。そして、比較回路1
00は、レジスタデータ6a(D28)とレジスタデー
タ6b(D30)との比較を行い、その比較結果を比較
結果信号101としてプログラムカウンタ4に出力す
る。
する場合 制御回路5は、命令CMDをデコードして、読み出しレ
ジスタアドレス信号16aとして“11100”を設定し、
もう一つの読み出しレジスタアドレス信号16bとして
“11110”を設定し、プログラムカウント値9に加算さ
れる即値−2を制御データ7bとして設定する。さら
に、制御回路5は“H”の制御信号23を出力する。そ
して、レジスタファイル1は、読み出しレジスタアドレ
ス信号16a及び16bに基づき、レジスタデータ6a
として$28のレジスタの格納データ値(D28)を出
力し、レジスタデータ6bとして$30のレジスタの格
納データ値(D30)を出力する。そして、比較回路1
00は、レジスタデータ6a(D28)とレジスタデー
タ6b(D30)との比較を行い、その比較結果を比較
結果信号101としてプログラムカウンタ4に出力す
る。
【0048】その結果、“H”の制御信号23を受ける
プログラムカウンタ4は、比較結果信号101が不一致
を指示しているとき、現在のプログラムカウント値9
(“5”)に制御データ7b(“−2”)を加算した値
(“3”)を新たなプログラムカウント値9として出力
し、比較結果信号101が一致を指示しているとき、現
在のプログラムカウント値9(“5”)に1を加算して
新たなプログラムカウント値9(“6”)として出力す
る。
プログラムカウンタ4は、比較結果信号101が不一致
を指示しているとき、現在のプログラムカウント値9
(“5”)に制御データ7b(“−2”)を加算した値
(“3”)を新たなプログラムカウント値9として出力
し、比較結果信号101が一致を指示しているとき、現
在のプログラムカウント値9(“5”)に1を加算して
新たなプログラムカウント値9(“6”)として出力す
る。
【0049】
【発明が解決しようとする課題】このようにR3000
等の従来のコンピュータは、call-return処理を行う場
合、図17に示すように、呼び出された命令列Aは命令
10及び命令11を必ず実行する必要があった。同様
に、ループ処理を行う場合、図18に示すように、ルー
プ制御命令である命令4及び命令5を必ず実行する必要
があった。
等の従来のコンピュータは、call-return処理を行う場
合、図17に示すように、呼び出された命令列Aは命令
10及び命令11を必ず実行する必要があった。同様
に、ループ処理を行う場合、図18に示すように、ルー
プ制御命令である命令4及び命令5を必ず実行する必要
があった。
【0050】つまり、call-return処理あるいはループ
命令を実行するごとに、本来実行すべき命令の内容に関
係なく必ず2命令を行う必要が生じるため、非効率であ
るという問題点があった。
命令を実行するごとに、本来実行すべき命令の内容に関
係なく必ず2命令を行う必要が生じるため、非効率であ
るという問題点があった。
【0051】この発明は上記問題点を解決するためにな
されたもので、実行する命令数を少なくした高性能なコ
ンピュータを得ることを目的とする。
されたもので、実行する命令数を少なくした高性能なコ
ンピュータを得ることを目的とする。
【0052】
【課題を解決するための手段】この発明に係る請求項1
記載のコンピュータは、複数のレジスタを有し、外部よ
り得られる命令受け、該命令に基づき、前記複数のレジ
スタの格納データを選択的に読み出しデータとして出力
するデータ読み出し部を備え、前記命令は、格納データ
を読み出すレジスタを特定する記述がなされていない所
定の特殊命令を含み、前記読み出しデータに基づく演算
処理を施し、演算結果を出力するデータ演算部をさらに
備え、前記データ読み出し部は、前記命令が前記所定の
特殊命令の場合に、前記複数のレジスタのうち予め定め
られた2個のレジスタを第1及び第2の特定レジスタと
して特定し、前記第1の特定レジスタの格納データであ
る第1の格納データと、前記第2の特定レジスタの格納
データである第2の格納データとを前記読み出しデータ
として出力している。
記載のコンピュータは、複数のレジスタを有し、外部よ
り得られる命令受け、該命令に基づき、前記複数のレジ
スタの格納データを選択的に読み出しデータとして出力
するデータ読み出し部を備え、前記命令は、格納データ
を読み出すレジスタを特定する記述がなされていない所
定の特殊命令を含み、前記読み出しデータに基づく演算
処理を施し、演算結果を出力するデータ演算部をさらに
備え、前記データ読み出し部は、前記命令が前記所定の
特殊命令の場合に、前記複数のレジスタのうち予め定め
られた2個のレジスタを第1及び第2の特定レジスタと
して特定し、前記第1の特定レジスタの格納データであ
る第1の格納データと、前記第2の特定レジスタの格納
データである第2の格納データとを前記読み出しデータ
として出力している。
【0053】また、請求項2記載のコンピュータのよう
に、前記データ読み出し部は、前記命令に基づき読み出
しアドレス信号を出力するともに、前記命令が前記所定
の特殊命令の場合に活性状態の特殊命令信号を出力する
制御手段と、前記複数のレジスタを有し、前記読み出し
アドレス信号を受け、前記読み出しアドレス信号に基づ
き、前記複数のレジスタの格納データを選択的に前記読
み出しデータとして出力するレジスタ群とを備え、前記
レジスタ群は、前記特殊命令信号をさらに受け、前記特
殊命令信号が活性状態のとき前記読み出しアドレス信号
に関係なく前記第1及び第2の特定レジスタの前記第1
及び第2の格納データを前記読み出しデータとして出力
するように構成してもよい。
に、前記データ読み出し部は、前記命令に基づき読み出
しアドレス信号を出力するともに、前記命令が前記所定
の特殊命令の場合に活性状態の特殊命令信号を出力する
制御手段と、前記複数のレジスタを有し、前記読み出し
アドレス信号を受け、前記読み出しアドレス信号に基づ
き、前記複数のレジスタの格納データを選択的に前記読
み出しデータとして出力するレジスタ群とを備え、前記
レジスタ群は、前記特殊命令信号をさらに受け、前記特
殊命令信号が活性状態のとき前記読み出しアドレス信号
に関係なく前記第1及び第2の特定レジスタの前記第1
及び第2の格納データを前記読み出しデータとして出力
するように構成してもよい。
【0054】また、請求項3記載のコンピュータのよう
に、前記所定の特殊命令は、命令の種別、第1の数及び
第2の数が規定されており、前記データ読み出し部は、
前記命令が前記所定の特殊命令の場合に、前記第1及び
第2の数を前記読み出しデータとしてさらに出力し、前
記データ演算部は、前記第1の格納データと前記第1の
数とに基づく演算を行い第1の演算結果を出力する第1
の演算手段と、前記第2の格納データと前記第2の数と
に基づく演算を行い第2の演算結果を出力する第2の演
算手段とを備えて構成してもよい。
に、前記所定の特殊命令は、命令の種別、第1の数及び
第2の数が規定されており、前記データ読み出し部は、
前記命令が前記所定の特殊命令の場合に、前記第1及び
第2の数を前記読み出しデータとしてさらに出力し、前
記データ演算部は、前記第1の格納データと前記第1の
数とに基づく演算を行い第1の演算結果を出力する第1
の演算手段と、前記第2の格納データと前記第2の数と
に基づく演算を行い第2の演算結果を出力する第2の演
算手段とを備えて構成してもよい。
【0055】さらに、請求項4記載のコンピュータは、
前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記第1の演算結果を前記第1の特定レジ
スタに書き込み、前記第2の演算結果は外部メモリの書
き込みアドレスとして規定され、前記第2の格納データ
は前記外部メモリの前記書き込みアドレスへの書き込み
データとして規定される。
前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記第1の演算結果を前記第1の特定レジ
スタに書き込み、前記第2の演算結果は外部メモリの書
き込みアドレスとして規定され、前記第2の格納データ
は前記外部メモリの前記書き込みアドレスへの書き込み
データとして規定される。
【0056】この発明に係る請求項5記載のコンピュー
タは、複数のレジスタを有し、外部より得られる命令に
基づき、前記複数のレジスタの格納データを選択的に読
み出しデータとして出力するデータ読み出し部と、前記
読み出しデータに基づく演算処理を施し、演算結果を出
力するデータ演算部とを備え、前記データ読み出し部
は、前記命令が所定の特殊命令の場合に、前記複数のレ
ジスタのうち予め定められた1個のレジスタを参照用レ
ジスタとして特定し、前記参照用レジスタの格納データ
である参照用格納データを前記読み出しデータとして出
力し、前記データ演算部は、前記参照用格納データと比
較用データとの比較を行い、比較結果信号を出力するデ
ータ比較手段を備えて構成される。
タは、複数のレジスタを有し、外部より得られる命令に
基づき、前記複数のレジスタの格納データを選択的に読
み出しデータとして出力するデータ読み出し部と、前記
読み出しデータに基づく演算処理を施し、演算結果を出
力するデータ演算部とを備え、前記データ読み出し部
は、前記命令が所定の特殊命令の場合に、前記複数のレ
ジスタのうち予め定められた1個のレジスタを参照用レ
ジスタとして特定し、前記参照用レジスタの格納データ
である参照用格納データを前記読み出しデータとして出
力し、前記データ演算部は、前記参照用格納データと比
較用データとの比較を行い、比較結果信号を出力するデ
ータ比較手段を備えて構成される。
【0057】また、請求項6記載のコンピュータのよう
に、前記データ読み出し部は、前記命令に基づき読み出
しアドレス信号を出力するともに、前記命令が前記所定
の特殊命令の場合に活性状態の特殊命令信号を出力する
制御手段と、前記複数のレジスタを有し、前記読み出し
アドレス信号を受け、前記読み出しアドレス信号に基づ
き、前記複数のレジスタの格納データを選択的に前記読
み出しデータとして出力するレジスタ群とを備え、前記
レジスタ群は、前記特殊命令信号をさらに受け、前記特
殊命令信号が活性状態のとき前記読み出しアドレス信号
に関係なく前記参照用レジスタの前記参照用格納データ
を前記読み出しデータとして出力してもよい。
に、前記データ読み出し部は、前記命令に基づき読み出
しアドレス信号を出力するともに、前記命令が前記所定
の特殊命令の場合に活性状態の特殊命令信号を出力する
制御手段と、前記複数のレジスタを有し、前記読み出し
アドレス信号を受け、前記読み出しアドレス信号に基づ
き、前記複数のレジスタの格納データを選択的に前記読
み出しデータとして出力するレジスタ群とを備え、前記
レジスタ群は、前記特殊命令信号をさらに受け、前記特
殊命令信号が活性状態のとき前記読み出しアドレス信号
に関係なく前記参照用レジスタの前記参照用格納データ
を前記読み出しデータとして出力してもよい。
【0058】さらに、請求項7記載のコンピュータのよ
うに、前記データ読み出し部は、前記命令が前記所定の
特殊命令の場合にのみ活性状態となる制御信号をさらに
出力し、前記制御信号及び前記比較結果信号を受け、前
記制御信号が活性状態のとき、前記比較結果信号に基づ
き、現在の実行対象の命令のアドレスを規定するプログ
ラムカウント値を出力するプログラムカウンタをさらに
備えて構成してもよい。
うに、前記データ読み出し部は、前記命令が前記所定の
特殊命令の場合にのみ活性状態となる制御信号をさらに
出力し、前記制御信号及び前記比較結果信号を受け、前
記制御信号が活性状態のとき、前記比較結果信号に基づ
き、現在の実行対象の命令のアドレスを規定するプログ
ラムカウント値を出力するプログラムカウンタをさらに
備えて構成してもよい。
【0059】また、請求項8記載のコンピュータのよう
に、前記所定の特殊命令は、格納データを読み出すレジ
スタを特定する記述がなされていない命令であり、前記
データ読み出し部は、前記命令が前記所定の特殊命令の
場合に、前記複数のレジスタのうち、前記参照用レジス
タ以外で予め定められた1個のレジスタを加算用レジス
タとし、前記加算用レジスタの格納データである加算用
格納データを前記読み出しデータとしてさらに出力し、
前記比較用データは、前記加算用格納データに基づくデ
ータであってもよい。
に、前記所定の特殊命令は、格納データを読み出すレジ
スタを特定する記述がなされていない命令であり、前記
データ読み出し部は、前記命令が前記所定の特殊命令の
場合に、前記複数のレジスタのうち、前記参照用レジス
タ以外で予め定められた1個のレジスタを加算用レジス
タとし、前記加算用レジスタの格納データである加算用
格納データを前記読み出しデータとしてさらに出力し、
前記比較用データは、前記加算用格納データに基づくデ
ータであってもよい。
【0060】さらに、請求項9記載のコンピュータのよ
うに、前記データ読み出し部は、前記命令に基づき読み
出しアドレス信号を出力するともに、前記命令が前記所
定の特殊命令の場合に活性状態の特殊命令信号を出力す
る制御手段と、前記複数のレジスタを有し、前記読み出
しアドレス信号を受け、前記読み出しアドレス信号に基
づき、前記複数のレジスタの格納データを選択的に前記
読み出しデータとして出力するレジスタ群とを備え、前
記レジスタ群は、前記特殊命令信号をさらに受け、前記
特殊命令信号が活性状態のとき前記読み出しアドレス信
号に関係なく前記参照用レジスタの前記参照用格納デー
タ及び前記加算用格納データの前記加算用格納データを
前記読み出しデータとして出力してもよい。
うに、前記データ読み出し部は、前記命令に基づき読み
出しアドレス信号を出力するともに、前記命令が前記所
定の特殊命令の場合に活性状態の特殊命令信号を出力す
る制御手段と、前記複数のレジスタを有し、前記読み出
しアドレス信号を受け、前記読み出しアドレス信号に基
づき、前記複数のレジスタの格納データを選択的に前記
読み出しデータとして出力するレジスタ群とを備え、前
記レジスタ群は、前記特殊命令信号をさらに受け、前記
特殊命令信号が活性状態のとき前記読み出しアドレス信
号に関係なく前記参照用レジスタの前記参照用格納デー
タ及び前記加算用格納データの前記加算用格納データを
前記読み出しデータとして出力してもよい。
【0061】また、請求項10記載のコンピュータのよ
うに、前記所定の特殊命令は、前記複数のレジスタから
加算用レジスタを特定するレジスタ特定項目が記述され
た命令であり、前記データ読み出し部は、前記命令が前
記所定の特殊命令の場合に、前記レジスタ特定項目に基
づき、前記複数のレジスタから前記加算用レジスタを特
定し、前記加算用レジスタの格納データである加算用格
納データをさらに出力し、前記比較用データは、前記加
算用格納データに基づくデータであってもよい。
うに、前記所定の特殊命令は、前記複数のレジスタから
加算用レジスタを特定するレジスタ特定項目が記述され
た命令であり、前記データ読み出し部は、前記命令が前
記所定の特殊命令の場合に、前記レジスタ特定項目に基
づき、前記複数のレジスタから前記加算用レジスタを特
定し、前記加算用レジスタの格納データである加算用格
納データをさらに出力し、前記比較用データは、前記加
算用格納データに基づくデータであってもよい。
【0062】この発明に係る請求項11記載のコンピュ
ータは、複数のレジスタを有し、外部より得られる命令
に基づき、前記複数のレジスタの格納データを選択的に
読み出しデータとして出力するデータ読み出し部を備
え、前記データ読み出し部は、前記複数のレジスタのう
ち2個以上のレジスタを加算用レジスタグループとして
予め特定し、前記加算用レジスタグループ以外の前記複
数のレジスタのうち2個以上のレジスタを参照用レジス
タグループとして予め特定し、前記命令は、前記加算用
レジスタグループから加算用レジスタを特定する第1の
レジスタ特定項目及び前記参照用レジスタグループから
参照用レジスタを特定する第2のレジスタ特定項目が記
述された所定の特殊命令を含み、前記読み出しデータに
基づき演算処理を施し、演算結果を出力するデータ演算
部をさらに備え、前記データ読み出し部は、前記命令が
前記所定の特殊命令の場合に、前記第1のレジスタ特定
項目に基づき前記加算用レジスタグループから前記加算
用レジスタを特定し、前記第2のレジスタ特定項目に基
づき前記参照用レジスタグループから前記参照用レジス
タを特定し、前記加算用レジスタの格納データである加
算用格納データ及び前記参照用レジスタの格納データで
ある参照用格納データとを前記読み出しデータとして出
力し、前記データ演算部は、前記加算用データに基づく
比較用データと前記参照用格納データとの比較を行い比
較結果信号を出力するデータ比較手段を備えて構成され
る。
ータは、複数のレジスタを有し、外部より得られる命令
に基づき、前記複数のレジスタの格納データを選択的に
読み出しデータとして出力するデータ読み出し部を備
え、前記データ読み出し部は、前記複数のレジスタのう
ち2個以上のレジスタを加算用レジスタグループとして
予め特定し、前記加算用レジスタグループ以外の前記複
数のレジスタのうち2個以上のレジスタを参照用レジス
タグループとして予め特定し、前記命令は、前記加算用
レジスタグループから加算用レジスタを特定する第1の
レジスタ特定項目及び前記参照用レジスタグループから
参照用レジスタを特定する第2のレジスタ特定項目が記
述された所定の特殊命令を含み、前記読み出しデータに
基づき演算処理を施し、演算結果を出力するデータ演算
部をさらに備え、前記データ読み出し部は、前記命令が
前記所定の特殊命令の場合に、前記第1のレジスタ特定
項目に基づき前記加算用レジスタグループから前記加算
用レジスタを特定し、前記第2のレジスタ特定項目に基
づき前記参照用レジスタグループから前記参照用レジス
タを特定し、前記加算用レジスタの格納データである加
算用格納データ及び前記参照用レジスタの格納データで
ある参照用格納データとを前記読み出しデータとして出
力し、前記データ演算部は、前記加算用データに基づく
比較用データと前記参照用格納データとの比較を行い比
較結果信号を出力するデータ比較手段を備えて構成され
る。
【0063】また、請求項12記載のコンピュータのよ
うに、前記所定の特殊命令は、所定の加算数がさらに規
定された命令であり、前記データ読み出し部は、前記命
令が前記所定の特殊命令の場合に、前記所定の加算数を
前記読み出しデータとしてさらに出力し、前記比較用デ
ータは、前記加算用格納データに前記所定の加算数を加
算して得られるデータであってもよい。
うに、前記所定の特殊命令は、所定の加算数がさらに規
定された命令であり、前記データ読み出し部は、前記命
令が前記所定の特殊命令の場合に、前記所定の加算数を
前記読み出しデータとしてさらに出力し、前記比較用デ
ータは、前記加算用格納データに前記所定の加算数を加
算して得られるデータであってもよい。
【0064】さらに、請求項13記載のコンピュータの
ように、前記データ演算部は、前記加算用格納データと
前記所定の加算数とを加算して演算結果を出力する演算
手段をさらに備え、前記データ読み出し部は、前記命令
が前記所定の特殊命令の場合に、前記演算結果を前記加
算用レジスタに書き込んでもよい。
ように、前記データ演算部は、前記加算用格納データと
前記所定の加算数とを加算して演算結果を出力する演算
手段をさらに備え、前記データ読み出し部は、前記命令
が前記所定の特殊命令の場合に、前記演算結果を前記加
算用レジスタに書き込んでもよい。
【0065】また、請求項14記載のコンピュータのよ
うに、前記データ読み出し部は、前記命令に基づき読み
出しアドレス信号を出力するともに、前記命令が前記所
定の特殊命令の場合に活性状態の前記制御信号を出力す
る制御手段と、前記複数のレジスタを有し、前記読み出
しアドレス信号を受け、前記読み出しアドレス信号に基
づき、前記複数のレジスタの格納データを選択的に前記
読み出しデータとして出力する第1のレジスタ群と、前
記複数のレジスタにおける前記参照用レジスタの前記参
照用格納データと同一データを格納する複製参照用レジ
スタと、前記複数のレジスタにおける前記加算用レジス
タの前記加算用格納データと同一データを格納する複製
加算用レジスタとを有し、前記複製参照用レジスタの格
納データを前記参照用格納データとし、前記複製加算用
レジスタの格納データを前記加算用格納データとして常
に出力する第2のレジスタ群とを備え、前記制御信号及
び前記比較結果信号を受け、前記制御信号が活性状態の
とき、前記比較結果信号に基づき、現在の実行対象の命
令のアドレスを規定するプログラムカウント値を出力す
るプログラムカウンタをさらに備えて構成してもよい。
うに、前記データ読み出し部は、前記命令に基づき読み
出しアドレス信号を出力するともに、前記命令が前記所
定の特殊命令の場合に活性状態の前記制御信号を出力す
る制御手段と、前記複数のレジスタを有し、前記読み出
しアドレス信号を受け、前記読み出しアドレス信号に基
づき、前記複数のレジスタの格納データを選択的に前記
読み出しデータとして出力する第1のレジスタ群と、前
記複数のレジスタにおける前記参照用レジスタの前記参
照用格納データと同一データを格納する複製参照用レジ
スタと、前記複数のレジスタにおける前記加算用レジス
タの前記加算用格納データと同一データを格納する複製
加算用レジスタとを有し、前記複製参照用レジスタの格
納データを前記参照用格納データとし、前記複製加算用
レジスタの格納データを前記加算用格納データとして常
に出力する第2のレジスタ群とを備え、前記制御信号及
び前記比較結果信号を受け、前記制御信号が活性状態の
とき、前記比較結果信号に基づき、現在の実行対象の命
令のアドレスを規定するプログラムカウント値を出力す
るプログラムカウンタをさらに備えて構成してもよい。
【0066】さらに、請求項15記載のコンピュータの
ように、前記所定の特殊命令は、所定の加算数がさらに
規定された命令であり、前記制御手段は、前記命令が前
記所定の特殊命令の場合に、前記所定の加算数をさらに
出力し、前記比較用データは、前記加算用格納データに
前記所定の加算数を加算して得られるデータであっても
よい。
ように、前記所定の特殊命令は、所定の加算数がさらに
規定された命令であり、前記制御手段は、前記命令が前
記所定の特殊命令の場合に、前記所定の加算数をさらに
出力し、前記比較用データは、前記加算用格納データに
前記所定の加算数を加算して得られるデータであっても
よい。
【0067】さらに、請求項16記載のコンピュータの
ように、前記データ演算部は、前記加算用格納データと
前記所定の加算数とを加算して演算結果を出力する演算
手段をさらに備え、前記制御手段は、前記命令が前記所
定の特殊命令の場合に、前記演算結果を前記加算用レジ
スタ及び前記複製加算用レジスタへ書き込むことを指示
する書き込みアドレス信号を前記第1及び第2のレジス
タ群に出力することにより、前記演算結果を前記加算用
レジスタ及び複製加算用レジスタに書き込んでもよい。
ように、前記データ演算部は、前記加算用格納データと
前記所定の加算数とを加算して演算結果を出力する演算
手段をさらに備え、前記制御手段は、前記命令が前記所
定の特殊命令の場合に、前記演算結果を前記加算用レジ
スタ及び前記複製加算用レジスタへ書き込むことを指示
する書き込みアドレス信号を前記第1及び第2のレジス
タ群に出力することにより、前記演算結果を前記加算用
レジスタ及び複製加算用レジスタに書き込んでもよい。
【0068】
【作用】この発明における請求項1記載のコンピュータ
のデータ読み出し部は、格納データを読み出すレジスタ
を特定する記述がなされていない所定の特殊命令の場合
に、複数のレジスタのうち予め定められた2個のレジス
タを第1及び第2の特定レジスタとして特定し、第1の
特定レジスタの格納データである第1の格納データと、
第2の特定レジスタの格納データである第2の格納デー
タとを読み出しデータをして出力する。
のデータ読み出し部は、格納データを読み出すレジスタ
を特定する記述がなされていない所定の特殊命令の場合
に、複数のレジスタのうち予め定められた2個のレジス
タを第1及び第2の特定レジスタとして特定し、第1の
特定レジスタの格納データである第1の格納データと、
第2の特定レジスタの格納データである第2の格納デー
タとを読み出しデータをして出力する。
【0069】したがって、所定の特殊命令は、第1及び
第2の特定レジスタを指定する記述の代わりに、他の指
示を記述することができる。
第2の特定レジスタを指定する記述の代わりに、他の指
示を記述することができる。
【0070】また、請求項2記載のコンピュータは、命
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく第1及び第2の特定レジ
スタの第1及び第2の格納データを読み出しデータとし
て出力するレジスタ群とを備える。
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく第1及び第2の特定レジ
スタの第1及び第2の格納データを読み出しデータとし
て出力するレジスタ群とを備える。
【0071】したがって、命令が所定の特殊命令の場合
に速やかにレジスタ群から第1及び第2の格納データが
出力されるため、所定の特殊命令をより高速に実行する
ことができる。
に速やかにレジスタ群から第1及び第2の格納データが
出力されるため、所定の特殊命令をより高速に実行する
ことができる。
【0072】また、請求項3記載のコンピュータのデー
タ演算部は、第1の格納データと第1の数とに基づく演
算を行い第1の演算結果を出力する第1の演算手段と、
第2の格納データと第2の数とに基づく演算を行い第2
の演算結果を出力する第2の演算手段とを備えるため、
2つの演算処理を並行して行うことができる。
タ演算部は、第1の格納データと第1の数とに基づく演
算を行い第1の演算結果を出力する第1の演算手段と、
第2の格納データと第2の数とに基づく演算を行い第2
の演算結果を出力する第2の演算手段とを備えるため、
2つの演算処理を並行して行うことができる。
【0073】さらに、請求項4記載のコンピュータのデ
ータ読み出し部は、命令が所定の特殊命令の場合に、第
1の演算結果を第1の特定レジスタに書き込み、第2の
演算結果は外部メモリの書き込みアドレスとして規定さ
れ、第2の格納データは外部メモリの上記書き込みアド
レスへの書き込みデータとして規定されるため、第1の
特定レジスタへの書き込み処理及び外部メモリへの書き
込み処理が並行して行える。
ータ読み出し部は、命令が所定の特殊命令の場合に、第
1の演算結果を第1の特定レジスタに書き込み、第2の
演算結果は外部メモリの書き込みアドレスとして規定さ
れ、第2の格納データは外部メモリの上記書き込みアド
レスへの書き込みデータとして規定されるため、第1の
特定レジスタへの書き込み処理及び外部メモリへの書き
込み処理が並行して行える。
【0074】この発明における請求項5記載のコンピュ
ータのデータ読み出し部は、命令が所定の特殊命令の場
合に、複数のレジスタのうち予め定められた1個のレジ
スタを参照用レジスタとして特定し、参照用レジスタの
格納データである参照用格納データを読み出しデータと
して出力する。
ータのデータ読み出し部は、命令が所定の特殊命令の場
合に、複数のレジスタのうち予め定められた1個のレジ
スタを参照用レジスタとして特定し、参照用レジスタの
格納データである参照用格納データを読み出しデータと
して出力する。
【0075】したがって、所定の特殊命令は、参照用レ
ジスタを指定する記述の代わりに、他の指示を記述する
ことができる。
ジスタを指定する記述の代わりに、他の指示を記述する
ことができる。
【0076】また、請求項6記載のコンピュータは、命
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データを読み出しデータとして出力するレジスタ群
とを備える。
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データを読み出しデータとして出力するレジスタ群
とを備える。
【0077】したがって、命令が所定の特殊命令の場合
に速やかにレジスタ群から参照用格納データが出力され
るため、所定の特殊命令をより高速に実行することがで
きる。
に速やかにレジスタ群から参照用格納データが出力され
るため、所定の特殊命令をより高速に実行することがで
きる。
【0078】また、請求項7記載のコンピュータのデー
タ読み出し部は、命令が所定の特殊命令の場合にのみ活
性状態となる制御信号をさらに出力し、制御信号が活性
状態のとき、比較結果信号に基づき、現在の実行対象の
命令のアドレスを規定するプログラムカウント値を出力
するプログラムカウンタをさらに備える。
タ読み出し部は、命令が所定の特殊命令の場合にのみ活
性状態となる制御信号をさらに出力し、制御信号が活性
状態のとき、比較結果信号に基づき、現在の実行対象の
命令のアドレスを規定するプログラムカウント値を出力
するプログラムカウンタをさらに備える。
【0079】したがって、所定の特殊命令によりプログ
ラムカウント値を変更する処理を行うことができる。
ラムカウント値を変更する処理を行うことができる。
【0080】また、請求項8記載のコンピュータのデー
タ読み出し部は、命令が所定の特殊命令の場合に、複数
のレジスタのうち、参照用レジスタ以外で予め定められ
た1個のレジスタを加算用レジスタとし、加算用レジス
タの格納データである加算用格納データを読み出しデー
タとしてさらに出力する。
タ読み出し部は、命令が所定の特殊命令の場合に、複数
のレジスタのうち、参照用レジスタ以外で予め定められ
た1個のレジスタを加算用レジスタとし、加算用レジス
タの格納データである加算用格納データを読み出しデー
タとしてさらに出力する。
【0081】したがって、所定の特殊命令は、上記参照
用レジスタと加算用レジスタを指定する記述の代わり
に、他の指示を記述することができる。
用レジスタと加算用レジスタを指定する記述の代わり
に、他の指示を記述することができる。
【0082】また、請求項9記載のコンピュータは、命
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データ及び加算用格納データの加算用格納データを
読み出しデータとして出力するレジスタ群とを備える。
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データ及び加算用格納データの加算用格納データを
読み出しデータとして出力するレジスタ群とを備える。
【0083】したがって、命令が所定の特殊命令の場合
に速やかにレジスタ群から参照用格納データ及び加算用
格納データが出力されるため、所定の特殊命令をより高
速に実行することができる。
に速やかにレジスタ群から参照用格納データ及び加算用
格納データが出力されるため、所定の特殊命令をより高
速に実行することができる。
【0084】また、請求項10記載のコンピュータのデ
ータ読み出し部は、命令が所定の特殊命令の場合に、所
定の特殊命令に記述されたレジスタ特定項目に基づき、
複数のレジスタから加算用レジスタを特定し、加算用レ
ジスタの格納データである加算用格納データをさらに出
力するため、複数のレジスタから加算用レジスタを選択
することができ、加算用レジスタの選択範囲を広げるこ
とができる。
ータ読み出し部は、命令が所定の特殊命令の場合に、所
定の特殊命令に記述されたレジスタ特定項目に基づき、
複数のレジスタから加算用レジスタを特定し、加算用レ
ジスタの格納データである加算用格納データをさらに出
力するため、複数のレジスタから加算用レジスタを選択
することができ、加算用レジスタの選択範囲を広げるこ
とができる。
【0085】この発明における請求項11記載のコンピ
ュータのデータ読み出し部は、命令が所定の特殊命令の
場合に、第1のレジスタ特定項目に基づき加算用レジス
タグループから加算用レジスタを特定し、第2のレジス
タ特定項目に基づき参照用レジスタグループから参照用
レジスタを特定し、加算用レジスタの格納データである
加算用格納データ及び参照用レジスタの格納データであ
る参照用格納データとを読み出しデータとして出力す
る。
ュータのデータ読み出し部は、命令が所定の特殊命令の
場合に、第1のレジスタ特定項目に基づき加算用レジス
タグループから加算用レジスタを特定し、第2のレジス
タ特定項目に基づき参照用レジスタグループから参照用
レジスタを特定し、加算用レジスタの格納データである
加算用格納データ及び参照用レジスタの格納データであ
る参照用格納データとを読み出しデータとして出力す
る。
【0086】したがって、所定の特殊命令は、加算用レ
ジスタ及び参照用レジスタを指定する記述を最小限に抑
える代わりに、他の指示を記述することができる。
ジスタ及び参照用レジスタを指定する記述を最小限に抑
える代わりに、他の指示を記述することができる。
【0087】加えて、加算用レジスタグループから加算
用レジスタを選択することができ、参照用レジスタグル
ープから参照用レジスタを選択することができるため、
加算用及び参照用レジスタの選択範囲を広げることがで
きる。
用レジスタを選択することができ、参照用レジスタグル
ープから参照用レジスタを選択することができるため、
加算用及び参照用レジスタの選択範囲を広げることがで
きる。
【0088】また、請求項12記載のコンピュータのよ
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
【0089】また、請求項13記載のコンピュータのデ
ータ演算部は、加算用格納データと所定の加算数とを加
算して、上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、データ読み出し部は、命令が
所定の特殊命令の場合に、演算結果を加算用レジスタに
書き込むため、加算用格納データを制御パラメータとし
たループ処理の終了判定用の信号として上記比較結果信
号を用いることができる。
ータ演算部は、加算用格納データと所定の加算数とを加
算して、上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、データ読み出し部は、命令が
所定の特殊命令の場合に、演算結果を加算用レジスタに
書き込むため、加算用格納データを制御パラメータとし
たループ処理の終了判定用の信号として上記比較結果信
号を用いることができる。
【0090】また、請求項14記載のコンピュータのデ
ータ読み出し部は、複数のレジスタにおける参照用レジ
スタの参照用格納データの参照用格納データと同一デー
タを格納する複製参照用レジスタと、複数のレジスタに
おける加算用レジスタの加算用格納データと同一データ
を格納する複製加算用レジスタとを有し、複製参照用レ
ジスタの格納データを参照用格納データとし、複製加算
用レジスタの格納データを加算用格納データとして常に
出力する第2のレジスタ群とを備えるため、データ比較
手段は、第2のレジスタ群から得られる参照用格納デー
タ及び加算用格納データに基づき、高速に比較結果信号
を出力することができる。
ータ読み出し部は、複数のレジスタにおける参照用レジ
スタの参照用格納データの参照用格納データと同一デー
タを格納する複製参照用レジスタと、複数のレジスタに
おける加算用レジスタの加算用格納データと同一データ
を格納する複製加算用レジスタとを有し、複製参照用レ
ジスタの格納データを参照用格納データとし、複製加算
用レジスタの格納データを加算用格納データとして常に
出力する第2のレジスタ群とを備えるため、データ比較
手段は、第2のレジスタ群から得られる参照用格納デー
タ及び加算用格納データに基づき、高速に比較結果信号
を出力することができる。
【0091】加えて、制御信号が活性状態のとき、比較
結果信号に基づき、現在の実行対象の命令のアドレスを
規定するプログラムカウント値を出力するプログラムカ
ウンタをさらに備えるため、所定の特殊命令によりプロ
グラムカウント値を変更する処理を行うことができる。
結果信号に基づき、現在の実行対象の命令のアドレスを
規定するプログラムカウント値を出力するプログラムカ
ウンタをさらに備えるため、所定の特殊命令によりプロ
グラムカウント値を変更する処理を行うことができる。
【0092】また、請求項15記載のコンピュータのよ
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
【0093】さらに、請求項16記載のコンピュータの
データ演算部は、加算用格納データと所定の加算数とを
加算して上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、制御手段は、命令が所定の特
殊命令の場合に、演算結果を加算用レジスタ及び複製加
算用レジスタへの書き込むを指示する書き込みアドレス
信号を第1及び第2のレジスタ群に出力することによ
り、演算結果を加算用レジスタ及び複製加算用レジスタ
に書き込むため、複製加算用レジスタより得られる加算
用格納データを制御パラメータとしたループ処理の終了
判定用の信号として上記比較結果信号を用いることがで
きる。
データ演算部は、加算用格納データと所定の加算数とを
加算して上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、制御手段は、命令が所定の特
殊命令の場合に、演算結果を加算用レジスタ及び複製加
算用レジスタへの書き込むを指示する書き込みアドレス
信号を第1及び第2のレジスタ群に出力することによ
り、演算結果を加算用レジスタ及び複製加算用レジスタ
に書き込むため、複製加算用レジスタより得られる加算
用格納データを制御パラメータとしたループ処理の終了
判定用の信号として上記比較結果信号を用いることがで
きる。
【0094】
<<第1の実施例>> <原理>図17で示した命令群の実行に際して、R30
00では命令10の加算命令はALU2で実行し、命令
11のストア命令による加算はアドレス加算器3で実行
する。このように命令列を呼び出す場合には、スタック
ポインタレジスタ$29の処理と、戻り先アドレスレジ
スタ(リンクレジスタ)$31の処理とを実行すること
がほとんど必然となり、さらにそのレジスタ番号は暗黙
的に決定されている。また命令列Aにおいて、命令10
は$29のレジスタの格納データ値から6を減算し、命
令11は命令10の結果の$29のレジスタの格納デー
タ値に5を加算してアドレス値を求めてストア命令を実
行しているので、結局は命令10を実行する前の$29
のレジスタの格納データ値から1を減算した値をアドレ
ス値としてストア命令を実行しても良い。
00では命令10の加算命令はALU2で実行し、命令
11のストア命令による加算はアドレス加算器3で実行
する。このように命令列を呼び出す場合には、スタック
ポインタレジスタ$29の処理と、戻り先アドレスレジ
スタ(リンクレジスタ)$31の処理とを実行すること
がほとんど必然となり、さらにそのレジスタ番号は暗黙
的に決定されている。また命令列Aにおいて、命令10
は$29のレジスタの格納データ値から6を減算し、命
令11は命令10の結果の$29のレジスタの格納デー
タ値に5を加算してアドレス値を求めてストア命令を実
行しているので、結局は命令10を実行する前の$29
のレジスタの格納データ値から1を減算した値をアドレ
ス値としてストア命令を実行しても良い。
【0095】そこで、この命令10と命令11を同時に
実行できる命令を新しく用意し、命令の種類に付け加え
てみる。たとえばその命令をpush命令とすると図17の
命令は図1のような命令列になる。命令10では、$2
9及び$31のレジスタの格納データ値を操作すること
は暗黙的にわかっているので、命令語の中では特に指定
していない。命令10では、$29のレジスタの格納デ
ータ値に−6を加算して$29のレジスタに書き込むこ
と、同時に$29のレジスタの格納データ値に−1を加
算したアドレス値の外部メモリに$31のレジスタの格
納データ値を書き込むことを意味している。また命令1
0のマシン語は図1のように設定する。最初の6ビット
はpush命令を表わしていて、次の5ビットとその次の5
ビット(あわせて10ビット)が−1を表わしていて、
最後の16ビットが−6を表わしている。
実行できる命令を新しく用意し、命令の種類に付け加え
てみる。たとえばその命令をpush命令とすると図17の
命令は図1のような命令列になる。命令10では、$2
9及び$31のレジスタの格納データ値を操作すること
は暗黙的にわかっているので、命令語の中では特に指定
していない。命令10では、$29のレジスタの格納デ
ータ値に−6を加算して$29のレジスタに書き込むこ
と、同時に$29のレジスタの格納データ値に−1を加
算したアドレス値の外部メモリに$31のレジスタの格
納データ値を書き込むことを意味している。また命令1
0のマシン語は図1のように設定する。最初の6ビット
はpush命令を表わしていて、次の5ビットとその次の5
ビット(あわせて10ビット)が−1を表わしていて、
最後の16ビットが−6を表わしている。
【0096】図1のような命令列にすることで、もとも
と6命令の実行が必要であった命令列Aが5命令だけで
実行可能になる。たとえば、この命令列Aを何回も呼び
出して実行するプログラムが存在していた場合、呼び出
す回数分の性能向上が期待できる。さらに、もともとの
2つの命令はそれぞれ別の加算器で計算されていた命令
なので、このようなpush命令を付け加えることにより、
ハードウェア構成が複雑化することもない。
と6命令の実行が必要であった命令列Aが5命令だけで
実行可能になる。たとえば、この命令列Aを何回も呼び
出して実行するプログラムが存在していた場合、呼び出
す回数分の性能向上が期待できる。さらに、もともとの
2つの命令はそれぞれ別の加算器で計算されていた命令
なので、このようなpush命令を付け加えることにより、
ハードウェア構成が複雑化することもない。
【0097】push命令では、外部のアドレス計算をする
場合、$29のレジスタの格納データ値と10ビットの
値を加減算することになる。もともとの命令列では、$
29のレジスタの格納データ値に対し16ビットの値を
加減算し、さらに16ビットの値を加減算した値となっ
ている。したがって、push命令における10ビットの加
算ではもともとの命令に比べるとビット数が足りないの
で、もともとの命令と同じ機能を実行することができな
くなる場合が発生する。これは以下のようなことを意味
する。
場合、$29のレジスタの格納データ値と10ビットの
値を加減算することになる。もともとの命令列では、$
29のレジスタの格納データ値に対し16ビットの値を
加減算し、さらに16ビットの値を加減算した値となっ
ている。したがって、push命令における10ビットの加
算ではもともとの命令に比べるとビット数が足りないの
で、もともとの命令と同じ機能を実行することができな
くなる場合が発生する。これは以下のようなことを意味
する。
【0098】従来例:アドレス値=$29±x(16ビ
ット)±y(16ビット) 本実施例:アドレス値=$29±z(10ビット) しかし、zの値はxとyの差の値であり、16ビットで
表わすことができる数の中では非常に小さい値になる可
能性が高いし、スタックポインタの特性上それはほとん
ど32(レジスタの数)以下である。したがって、加算
する値が10ビットと少なくなることに特に問題が生じ
るとは考えられない。また、どうしても新しいpush命令
の使用で問題が発生する命令列の場合では、従来の命令
列で実行することが可能(従来のコンピュータの機能は
何ら変更されていないため)であるのでこのビット数が
小さくなることは問題とはならない。10ビットだけの
加算はプログラムの性質上、多く利用されるcall-retur
n文では十分なビット数である。
ット)±y(16ビット) 本実施例:アドレス値=$29±z(10ビット) しかし、zの値はxとyの差の値であり、16ビットで
表わすことができる数の中では非常に小さい値になる可
能性が高いし、スタックポインタの特性上それはほとん
ど32(レジスタの数)以下である。したがって、加算
する値が10ビットと少なくなることに特に問題が生じ
るとは考えられない。また、どうしても新しいpush命令
の使用で問題が発生する命令列の場合では、従来の命令
列で実行することが可能(従来のコンピュータの機能は
何ら変更されていないため)であるのでこのビット数が
小さくなることは問題とはならない。10ビットだけの
加算はプログラムの性質上、多く利用されるcall-retur
n文では十分なビット数である。
【0099】<構成>図1のような命令を処理するこの
発明の第1の実施例であるコンピュータのハードウェア
構成を図2に示す。図2において、1はレジスタファイ
ル、2は算術論理演算装置(以下ALU)、3はアドレ
ス加算器、4はプログラムカウンタ、5は制御回路(命
令デコーダを含む)である。ここでシフト回路や乗算回
路のような演算に関係するものはすべてALU2に含ま
れているとする。また、6a,6bはレジスタファイル
30より読み出したレジスタ(の格納)データ、7a,
7bは制御回路から出力される制御データ、8はALU
の演算結果、9はプログラムカウンタ4から出力される
プログラムカウント値、すなわち命令メモリのアドレス
値、CMDは命令メモリの出力信号すなわちこのコンピ
ュータを動作させる命令、11はアドレス加算器の演算
結果すなわちデータメモリのアドレス値である。18は
命令語の中に記述されている書き込むレジスタの番号を
示す書き込みレジスタアドレス信号、16a,16bは
命令語の中に記述されている読み出すレジスタの番号を
示す読み出しレジスタアドレス信号である。12はpush
命令を意味する特殊命令信号であり、命令CMDがpush
命令がpush命令を指示する場合に“H”となる信号であ
る。
発明の第1の実施例であるコンピュータのハードウェア
構成を図2に示す。図2において、1はレジスタファイ
ル、2は算術論理演算装置(以下ALU)、3はアドレ
ス加算器、4はプログラムカウンタ、5は制御回路(命
令デコーダを含む)である。ここでシフト回路や乗算回
路のような演算に関係するものはすべてALU2に含ま
れているとする。また、6a,6bはレジスタファイル
30より読み出したレジスタ(の格納)データ、7a,
7bは制御回路から出力される制御データ、8はALU
の演算結果、9はプログラムカウンタ4から出力される
プログラムカウント値、すなわち命令メモリのアドレス
値、CMDは命令メモリの出力信号すなわちこのコンピ
ュータを動作させる命令、11はアドレス加算器の演算
結果すなわちデータメモリのアドレス値である。18は
命令語の中に記述されている書き込むレジスタの番号を
示す書き込みレジスタアドレス信号、16a,16bは
命令語の中に記述されている読み出すレジスタの番号を
示す読み出しレジスタアドレス信号である。12はpush
命令を意味する特殊命令信号であり、命令CMDがpush
命令がpush命令を指示する場合に“H”となる信号であ
る。
【0100】制御回路50は、命令CMDを受け、命令
CMDに基づき、制御データ7a及び7bをALU2及
びアドレス加算器3にそれぞれ出力し、特殊命令信号1
2、読み出しレジスタアドレス信号16a,16b及び
書き込みレジスタアドレス信号18をレジスタファイル
30に出力する。
CMDに基づき、制御データ7a及び7bをALU2及
びアドレス加算器3にそれぞれ出力し、特殊命令信号1
2、読み出しレジスタアドレス信号16a,16b及び
書き込みレジスタアドレス信号18をレジスタファイル
30に出力する。
【0101】レジスタファイル30は、特殊命令信号1
2、読み出しレジスタアドレス信号16a,16b及び
書き込みレジスタアドレス信号18に基づき、レジスタ
データ6aをALU2及びアドレス加算器3に出力し、
レジスタデータ6bを図示しない外部メモリに出力す
る。また、書き込みレジスタアドレス信号18で書き込
みレジスタが指示されている場合、書き込みレジスタに
ALU演算結果8を書き込む。
2、読み出しレジスタアドレス信号16a,16b及び
書き込みレジスタアドレス信号18に基づき、レジスタ
データ6aをALU2及びアドレス加算器3に出力し、
レジスタデータ6bを図示しない外部メモリに出力す
る。また、書き込みレジスタアドレス信号18で書き込
みレジスタが指示されている場合、書き込みレジスタに
ALU演算結果8を書き込む。
【0102】さらに、レジスタファイル30は、特殊命
令信号12が“H”の場合、読み出しレジスタアドレス
信号16a及び16bの値に関係なく、レジスタデータ
6aとして$29のレジスタの格納データ値を出力し、
レジスタデータ6bとして$31のレジスタの格納デー
タ値を出力する。
令信号12が“H”の場合、読み出しレジスタアドレス
信号16a及び16bの値に関係なく、レジスタデータ
6aとして$29のレジスタの格納データ値を出力し、
レジスタデータ6bとして$31のレジスタの格納デー
タ値を出力する。
【0103】ALU2はレジスタデータ6aと制御デー
タ7aとを加算し、その加算結果であるALU演算結果
8をレジスタファイル30に出力する。
タ7aとを加算し、その加算結果であるALU演算結果
8をレジスタファイル30に出力する。
【0104】アドレス加算器3は、レジスタデータ6a
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
【0105】プログラムカウンタ4は、プログラムカウ
ント値9を順次出力する。
ント値9を順次出力する。
【0106】図2においては通常のコンピュータの処理
に必要な機能やそれぞれのブロックの接続等については
削除してある。当然本発明のコンピュータも通常のコン
ピュータの処理は実行できる。
に必要な機能やそれぞれのブロックの接続等については
削除してある。当然本発明のコンピュータも通常のコン
ピュータの処理は実行できる。
【0107】<レジスタファイル>図3は第1の実施例
のレジスタファイル30の内部構成を示す説明図であ
る。同図に示すように、マトリクス状にメモリセルMC
が構成され、各行のメモリセルMCがそれぞれ$0〜$
31のレジスタR0〜R31となる。これらのメモリセ
ルMCへのアクセスはデコード回路600〜602の制
御下で行われる。
のレジスタファイル30の内部構成を示す説明図であ
る。同図に示すように、マトリクス状にメモリセルMC
が構成され、各行のメモリセルMCがそれぞれ$0〜$
31のレジスタR0〜R31となる。これらのメモリセ
ルMCへのアクセスはデコード回路600〜602の制
御下で行われる。
【0108】デコード回路600は書き込みレジスタア
ドレス信号18を受け、書き込みレジスタアドレス信号
18に基づき複数の書き込みレジスタ選択線19を選択
的に“H”にする。デコード回路601は読み出しレジ
スタアドレス信号16aを受け、読み出しレジスタアド
レス信号16aに基づき複数の読み出しレジスタ選択線
20aを選択的に“H”にする。デコード回路602は
読み出しレジスタアドレス信号16bを受け、読み出し
レジスタアドレス信号16bに基づき読み出しレジスタ
選択線20bを選択的に“H”にする。
ドレス信号18を受け、書き込みレジスタアドレス信号
18に基づき複数の書き込みレジスタ選択線19を選択
的に“H”にする。デコード回路601は読み出しレジ
スタアドレス信号16aを受け、読み出しレジスタアド
レス信号16aに基づき複数の読み出しレジスタ選択線
20aを選択的に“H”にする。デコード回路602は
読み出しレジスタアドレス信号16bを受け、読み出し
レジスタアドレス信号16bに基づき読み出しレジスタ
選択線20bを選択的に“H”にする。
【0109】また、デコード回路601の各読み出しレ
ジスタ選択線20aと各レジスタR0〜R31の読み出
し選択線L2aとの間にはPMOSトランジスタQ11
がそれぞれ介挿され、各読み出しレジスタ選択線20b
と各レジスタR0〜R31の読み出し選択線L2bとの
間にはPMOSトランジスタQ12がそれぞれ介挿され
る。そして、トランジスタQ11及び12のゲートには
共通に特殊命令信号12が印加される。
ジスタ選択線20aと各レジスタR0〜R31の読み出
し選択線L2aとの間にはPMOSトランジスタQ11
がそれぞれ介挿され、各読み出しレジスタ選択線20b
と各レジスタR0〜R31の読み出し選択線L2bとの
間にはPMOSトランジスタQ12がそれぞれ介挿され
る。そして、トランジスタQ11及び12のゲートには
共通に特殊命令信号12が印加される。
【0110】さらに、レジスタR0〜R28,R30及
びR31の各読み出し選択線L2aはNMOSトランジ
スタQ21を介して接地され、レジスタR29の読み出
し選択線L2aのみNMOSトランジスタQ21を介し
て電源VDDに接続される。また、レジスタR0〜R30
の各読み出し選択線L2bはNMOSトランジスタQ2
2を介して接地され、レジスタR31の読み出し選択線
L2bのみNMOSトランジスタQ22bを介して電源
VDDに接続される。そして、トランジスタQ21及び2
2のゲートには特殊命令信号12が共通に印加される。
びR31の各読み出し選択線L2aはNMOSトランジ
スタQ21を介して接地され、レジスタR29の読み出
し選択線L2aのみNMOSトランジスタQ21を介し
て電源VDDに接続される。また、レジスタR0〜R30
の各読み出し選択線L2bはNMOSトランジスタQ2
2を介して接地され、レジスタR31の読み出し選択線
L2bのみNMOSトランジスタQ22bを介して電源
VDDに接続される。そして、トランジスタQ21及び2
2のゲートには特殊命令信号12が共通に印加される。
【0111】したがって、特殊命令信号12が“H”の
とき、トランジスタQ11及びQ12がオフし、トラン
ジスタQ21及びQ22がオンするため、すべての読み
出し選択線L2a及び読み出し選択線L2bがデコード
回路601及び602の制御下を離れ、強制的に“H”
あるいは“L”が設定される。すなわち、レジスタR0
〜R28,R30及びR31の各読み出し選択線L2a
は“L”に、レジスタR29の読み出し選択線L2aは
“H”に、レジスタR0〜R30の各読み出し選択線L
2bは“L”に、レジスタR31の読み出し選択線L2
bは“H”に設定される。
とき、トランジスタQ11及びQ12がオフし、トラン
ジスタQ21及びQ22がオンするため、すべての読み
出し選択線L2a及び読み出し選択線L2bがデコード
回路601及び602の制御下を離れ、強制的に“H”
あるいは“L”が設定される。すなわち、レジスタR0
〜R28,R30及びR31の各読み出し選択線L2a
は“L”に、レジスタR29の読み出し選択線L2aは
“H”に、レジスタR0〜R30の各読み出し選択線L
2bは“L”に、レジスタR31の読み出し選択線L2
bは“H”に設定される。
【0112】一方、特殊命令信号12が“L”のとき、
トランジスタQ11及びQ12がオンし、トランジスタ
Q21及びQ22がオフするため、読み出しレジスタ選
択線20aと読み出し選択線L2aとが電気的に接続さ
れ、読み出しレジスタ選択線20bと読み出し選択線L
2bとが電気的に接続されるため、図15で示した従来
のレジスタファイルと等価な構成となるため、従来同
様、読み出しレジスタアドレス信号16a及び16bに
基づき、読み出しレジスタ選択線20a及び20bを選
択的に“H”にする。なお、メモリセルMCの内部構成
は図16で示した従来構成と同じである。
トランジスタQ11及びQ12がオンし、トランジスタ
Q21及びQ22がオフするため、読み出しレジスタ選
択線20aと読み出し選択線L2aとが電気的に接続さ
れ、読み出しレジスタ選択線20bと読み出し選択線L
2bとが電気的に接続されるため、図15で示した従来
のレジスタファイルと等価な構成となるため、従来同
様、読み出しレジスタアドレス信号16a及び16bに
基づき、読み出しレジスタ選択線20a及び20bを選
択的に“H”にする。なお、メモリセルMCの内部構成
は図16で示した従来構成と同じである。
【0113】<動作>以下、図2で示した第1の実施例
のコンピュータによるpush命令の実行内容を説明する。
のコンピュータによるpush命令の実行内容を説明する。
【0114】命令CMDがpush命令であった場合、制御
回路50は第1のサイクルにおいて、命令CMDをデコ
ードして、そのデコード結果に基づき、即値−6を制御
データ7aに設定し、即値−1を制御データ7bに設定
する。同時に、特殊命令信号12を“H”とする。
回路50は第1のサイクルにおいて、命令CMDをデコ
ードして、そのデコード結果に基づき、即値−6を制御
データ7aに設定し、即値−1を制御データ7bに設定
する。同時に、特殊命令信号12を“H”とする。
【0115】“H”の特殊命令信号12を受けたレジス
タファイル30は、レジスタファイル30は読み出しレ
ジスタアドレス信号16a及び16bの値に関係なく、
レジスタデータ6aとして$29のレジスタの格納デー
タ値(D29)をALU2及びアドレス加算器3に出力
し、レジスタデータ6bとして$31のレジスタの格納
データ値(D31)を外部メモリ出力する。
タファイル30は、レジスタファイル30は読み出しレ
ジスタアドレス信号16a及び16bの値に関係なく、
レジスタデータ6aとして$29のレジスタの格納デー
タ値(D29)をALU2及びアドレス加算器3に出力
し、レジスタデータ6bとして$31のレジスタの格納
データ値(D31)を外部メモリ出力する。
【0116】そして、制御回路50は第1のサイクルに
続いて実行される第2のサイクルにおいて、書き込みレ
ジスタとして$29のレジスタを指定する書き込みレジ
スタアドレス信号18を出力する。このとき、ALU2
はレジスタデータ6a(D29)と制御データ7a
(“−6”)との加算結果をALU演算結果8としてレ
ジスタファイル30に出力している。その結果、レジス
タファイル30内の$29のレジスタの格納データ値と
してALU演算結果8(D29−1)が書き込まれる。
続いて実行される第2のサイクルにおいて、書き込みレ
ジスタとして$29のレジスタを指定する書き込みレジ
スタアドレス信号18を出力する。このとき、ALU2
はレジスタデータ6a(D29)と制御データ7a
(“−6”)との加算結果をALU演算結果8としてレ
ジスタファイル30に出力している。その結果、レジス
タファイル30内の$29のレジスタの格納データ値と
してALU演算結果8(D29−1)が書き込まれる。
【0117】ALU2の動作と並行して、アドレス加算
器11は、レジスタデータ6a(D29)と制御データ
7b(“−1”)との加算結果をアドレス加算結果11
として外部メモリに出力する。その結果、外部メモリの
アドレス加算結果11(D29−1)のアドレスにレジ
スタデータ6b(D31)が書き込まれる。
器11は、レジスタデータ6a(D29)と制御データ
7b(“−1”)との加算結果をアドレス加算結果11
として外部メモリに出力する。その結果、外部メモリの
アドレス加算結果11(D29−1)のアドレスにレジ
スタデータ6b(D31)が書き込まれる。
【0118】このように、第1の実施例のコンピュータ
は、従来は2つの命令により実行されていた処理を1つ
のpush命令により他に悪影響を及ぼすことなく実行可能
に構成することにより、実行する命令数を少なくした高
性能な処理を行うことができる。また、命令数が少なく
なるということは、実際に必要となるメモリ容量が少な
くて同じ処理が可能となり、これは最近のコンピュータ
には必須となっているキャッシュメモリのヒット率を向
上させることにつながる。ヒット率が向上すれば、実行
命令数が少なくなり高性能なコンピュータができるだけ
でなく、システムとしての性能がさらに向上することも
期待できる。
は、従来は2つの命令により実行されていた処理を1つ
のpush命令により他に悪影響を及ぼすことなく実行可能
に構成することにより、実行する命令数を少なくした高
性能な処理を行うことができる。また、命令数が少なく
なるということは、実際に必要となるメモリ容量が少な
くて同じ処理が可能となり、これは最近のコンピュータ
には必須となっているキャッシュメモリのヒット率を向
上させることにつながる。ヒット率が向上すれば、実行
命令数が少なくなり高性能なコンピュータができるだけ
でなく、システムとしての性能がさらに向上することも
期待できる。
【0119】加えて、制御回路50は、命令CMDがpu
sh命令の場合に特殊命令信号12を“H”にすることに
より、レジスタファイル30から高速に$29及び$3
1のレジスタの格納データをレジスタデータ6a及び6
bとして出力させるため、push命令を高速に実行するこ
とができる。
sh命令の場合に特殊命令信号12を“H”にすることに
より、レジスタファイル30から高速に$29及び$3
1のレジスタの格納データをレジスタデータ6a及び6
bとして出力させるため、push命令を高速に実行するこ
とができる。
【0120】さらに、ALU2及びアドレス加算器3そ
れぞれにより、ALU演算結果8及びアドレス加算結果
11を並行して求めることができるため、push命令をよ
り高速に実行することができる。
れぞれにより、ALU演算結果8及びアドレス加算結果
11を並行して求めることができるため、push命令をよ
り高速に実行することができる。
【0121】さらに、レジスタファイル30の$29の
レジスタへのALU演算結果8の書き込み処理と、アド
レス加算結果11の外部メモリへの書き込み処理とを並
行して行うことができるため、push命令をより高速に実
行することができる。
レジスタへのALU演算結果8の書き込み処理と、アド
レス加算結果11の外部メモリへの書き込み処理とを並
行して行うことができるため、push命令をより高速に実
行することができる。
【0122】<その他>第1の実施例では、制御回路5
0がpush命令を受けると“H”の特殊命令信号12を出
力することにより、レジスタファイル30から強制的に
$29及び$31のレジスタの格納データを出力するよ
うに構成したが、制御回路50がpush命令を受けると、
$29及び$31のレジスタからの読み出しを指示する
読み出しレジスタアドレス信号16a及び16bを出力
することにより、レジスタファイル30から$29及び
$31のレジスタの格納データを出力するように構成し
てもよい。
0がpush命令を受けると“H”の特殊命令信号12を出
力することにより、レジスタファイル30から強制的に
$29及び$31のレジスタの格納データを出力するよ
うに構成したが、制御回路50がpush命令を受けると、
$29及び$31のレジスタからの読み出しを指示する
読み出しレジスタアドレス信号16a及び16bを出力
することにより、レジスタファイル30から$29及び
$31のレジスタの格納データを出力するように構成し
てもよい。
【0123】このように構成すると特殊命令信号12を
用いずに済ますことができるという利点を奏するが、通
常のレジスタの読み出し及び書き込み動作が実行される
ため、実行速度の点では劣る。
用いずに済ますことができるという利点を奏するが、通
常のレジスタの読み出し及び書き込み動作が実行される
ため、実行速度の点では劣る。
【0124】<<第2の実施例>> <原理>従来のコンピュータは図16のようにしてfor
文のような繰り返し処理を実行している。図16で示す
命令4のaddiのような加算命令や命令5のbne のような
比較命令は非常に時間を必要とする処理であり、1個の
命令で加算してその後比較するような処理をコンピュー
タが同時にまとめて実行することはなかった。
文のような繰り返し処理を実行している。図16で示す
命令4のaddiのような加算命令や命令5のbne のような
比較命令は非常に時間を必要とする処理であり、1個の
命令で加算してその後比較するような処理をコンピュー
タが同時にまとめて実行することはなかった。
【0125】ところが、このような加算してその後比較
するような処理をまとめて実行できる新しい回路をもつ
コンピュータについて“Evaluation of A+B=K Conditio
ns Without Carry Propagation,”JCS,Vol.41,No.11,pp
1484に記述されている。この論文の方法を利用すれば、
加算して比較する処理を併せて高速に(通常の比較回路
と同等の速度で)実行することができるようになる。し
たがって、この2つの命令を1つの命令として実行する
ことができる。すなわち命令実行数が減少するので、高
性能なコンピュータを得ることができる。
するような処理をまとめて実行できる新しい回路をもつ
コンピュータについて“Evaluation of A+B=K Conditio
ns Without Carry Propagation,”JCS,Vol.41,No.11,pp
1484に記述されている。この論文の方法を利用すれば、
加算して比較する処理を併せて高速に(通常の比較回路
と同等の速度で)実行することができるようになる。し
たがって、この2つの命令を1つの命令として実行する
ことができる。すなわち命令実行数が減少するので、高
性能なコンピュータを得ることができる。
【0126】しかし、ここで問題が発生する。たとえ
ば、上記のような組み合わせた命令をaddibne 命令とし
て、R3000の方式にしたがってマシン語を作成して
みると図4のようになる。図4で命令4がaddibne 命令
である。最初の6ビットがaddibne 命令を表わす命令コ
ードで、次の5ビットが加算されて書き込まれるレジス
タ$28を表わし、次の5ビットが加算されるために読
み出されるレジスタ$28を表わし、次の5ビットが比
較されるデータを保持しているレジスタ$30を表わ
し、次の16ビットが加算される数である“1”を表わ
し、最後の16ビットが分岐先のアドレスである“−
1”を表わしている。
ば、上記のような組み合わせた命令をaddibne 命令とし
て、R3000の方式にしたがってマシン語を作成して
みると図4のようになる。図4で命令4がaddibne 命令
である。最初の6ビットがaddibne 命令を表わす命令コ
ードで、次の5ビットが加算されて書き込まれるレジス
タ$28を表わし、次の5ビットが加算されるために読
み出されるレジスタ$28を表わし、次の5ビットが比
較されるデータを保持しているレジスタ$30を表わ
し、次の16ビットが加算される数である“1”を表わ
し、最後の16ビットが分岐先のアドレスである“−
1”を表わしている。
【0127】このとき図4から明らかなようにこの新規
の命令のマシン語が53ビットとなり、他の32ビット
のこれまでの命令のビット数と異なってしまう。このよ
うに他の命令とビット数が異なる新規の命令を追加する
ことは、極めて非実用的である。
の命令のマシン語が53ビットとなり、他の32ビット
のこれまでの命令のビット数と異なってしまう。このよ
うに他の命令とビット数が異なる新規の命令を追加する
ことは、極めて非実用的である。
【0128】無理に使用しようとすれば、加算される数
の大きさをもともとは16ビットであったものを小さく
制限したり、分岐先を求めるために加算される数をもと
もとは16ビットであったものを小さく制限したりする
必要が出てくる。そうするともともとのコンピュータで
処理できていた命令が処理できなくなる場合が発生す
る。加算される数の大きさは後で述べるように小さな値
でもかまわないが、たとえ1ビットに加算される数にビ
ット数を制限しても、addibine命令の総ビット数は32
ビットを越えてしまう。
の大きさをもともとは16ビットであったものを小さく
制限したり、分岐先を求めるために加算される数をもと
もとは16ビットであったものを小さく制限したりする
必要が出てくる。そうするともともとのコンピュータで
処理できていた命令が処理できなくなる場合が発生す
る。加算される数の大きさは後で述べるように小さな値
でもかまわないが、たとえ1ビットに加算される数にビ
ット数を制限しても、addibine命令の総ビット数は32
ビットを越えてしまう。
【0129】これを解決するために、命令内で指定する
要素を減らすことを考える。このaddibine命令で利用す
るレジスタを暗黙的に決めておくことで、addibine命令
内で指定しなければいけない要素を減らすことができ、
命令を32ビット以内のビット数に制限し、上記問題を
解決することができる。
要素を減らすことを考える。このaddibine命令で利用す
るレジスタを暗黙的に決めておくことで、addibine命令
内で指定しなければいけない要素を減らすことができ、
命令を32ビット以内のビット数に制限し、上記問題を
解決することができる。
【0130】このaddibne 命令では、連続的に一定の値
を加算される加算用レジスタと加算された後のレジスタ
の値を比較する参照データを保持する参照用レジスタが
必要であるが、このレジスタを暗黙的にその番号を決め
ておく。これは、スタックポインタレジスタが$29で
あったり、リンクレジスタが$31と決められているの
と同じ要領である。たとえば、回数をカウントしている
値を保持している加算用レジスタは$28、比較される
参照データを保持している参照用レジスタは$30とい
うように決めることである。
を加算される加算用レジスタと加算された後のレジスタ
の値を比較する参照データを保持する参照用レジスタが
必要であるが、このレジスタを暗黙的にその番号を決め
ておく。これは、スタックポインタレジスタが$29で
あったり、リンクレジスタが$31と決められているの
と同じ要領である。たとえば、回数をカウントしている
値を保持している加算用レジスタは$28、比較される
参照データを保持している参照用レジスタは$30とい
うように決めることである。
【0131】しかし、このレジスタの固定はaddibne 命
令に限ってだけであり、この$28と$30のレジスタ
はほかの命令では通常レジスタと同じように使用でき
る。
令に限ってだけであり、この$28と$30のレジスタ
はほかの命令では通常レジスタと同じように使用でき
る。
【0132】このようにaddibne 命令が暗黙的にレジス
タ番号を指定できるようにしておくと、この新規な命令
を使用したfor 文の命令列は図5のようになる。図5で
命令4がaddibne 命令を示しているが、最初の6ビット
がaddibne 命令を表わし、次の5ビットとその次の5ビ
ットとが加算用レジスタ$28に加算される値1を表わ
し、最後の16ビットが分岐先のアドレスである値−1
を表わしている。
タ番号を指定できるようにしておくと、この新規な命令
を使用したfor 文の命令列は図5のようになる。図5で
命令4がaddibne 命令を示しているが、最初の6ビット
がaddibne 命令を表わし、次の5ビットとその次の5ビ
ットとが加算用レジスタ$28に加算される値1を表わ
し、最後の16ビットが分岐先のアドレスである値−1
を表わしている。
【0133】従来の命令列では、加算される値が16ビ
ットの数まで指定可能であったが、本発明では加算する
値は10ビットまでと小さくなっている。したがって、
従来の命令列を本発明の命令列に変換できない場合が存
在する。しかし、この加算する値は通常では回数をカウ
ントするために加算していくので、その多くは“1”と
“−1”と考えられる。プログラム上で奇数をカウント
したり、偶数をカウントしたりする場合に、加算する値
が“2”と“−2”である場合なども考えられるがそん
なに大きな値がよく使用されるとは常識的に考えられな
い。したがって人間が作るプログラムから考えて10ビ
ットで指定できる大きさで実用上十分である。
ットの数まで指定可能であったが、本発明では加算する
値は10ビットまでと小さくなっている。したがって、
従来の命令列を本発明の命令列に変換できない場合が存
在する。しかし、この加算する値は通常では回数をカウ
ントするために加算していくので、その多くは“1”と
“−1”と考えられる。プログラム上で奇数をカウント
したり、偶数をカウントしたりする場合に、加算する値
が“2”と“−2”である場合なども考えられるがそん
なに大きな値がよく使用されるとは常識的に考えられな
い。したがって人間が作るプログラムから考えて10ビ
ットで指定できる大きさで実用上十分である。
【0134】また、どうしても新しいaddibne 命令の使
用で問題が発生する命令列の場合では、第1の実施例同
様、変換できない命令列は従来の命令列で実行すること
が可能(本発明で従来のコンピュータの機能には何ら変
更がなされていない)であるのでこのビット数が小さく
なることは問題とはならない。プログラムの性質上、多
く利用されるfor 文では十分なビット数である。
用で問題が発生する命令列の場合では、第1の実施例同
様、変換できない命令列は従来の命令列で実行すること
が可能(本発明で従来のコンピュータの機能には何ら変
更がなされていない)であるのでこのビット数が小さく
なることは問題とはならない。プログラムの性質上、多
く利用されるfor 文では十分なビット数である。
【0135】<構成>図5のような命令を処理するこの
発明の第2の実施例であるコンピュータのハードウェア
構成を図6に示す。図6において、1はレジスタファイ
ル、2はALU、3はアドレス加算器、4はプログラム
カウンタ、5は制御回路(命令デコーダを含む)であ
る。ここでシフト回路や乗算回路のような演算に関係す
るものはすべてALU2に含まれているとする。また、
6a,6bはレジスタファイル30より読み出したレジ
スタ(の格納)データ、7a,7bは制御回路から出力
される制御データ、8はALUの演算結果、9はプログ
ラムカウンタ4から出力されるプログラムカウント値、
すなわち命令メモリのアドレス値、CMDは命令メモリ
の出力信号すなわちこのコンピュータを動作させる命
令、11はアドレス加算器の演算結果すなわちデータメ
モリのアドレス値である。18は命令語の中に記述され
ている書き込むレジスタの番号を示す書き込みレジスタ
アドレス信号、16a,16bは命令語の中に記述され
ている読み出すレジスタの番号を示す読み出しレジスタ
アドレス信号である。103はaddibne命令を意味する
特殊命令信号であり、命令CMDがaddibne命令でを指
示する場合に“H”となる信号である。
発明の第2の実施例であるコンピュータのハードウェア
構成を図6に示す。図6において、1はレジスタファイ
ル、2はALU、3はアドレス加算器、4はプログラム
カウンタ、5は制御回路(命令デコーダを含む)であ
る。ここでシフト回路や乗算回路のような演算に関係す
るものはすべてALU2に含まれているとする。また、
6a,6bはレジスタファイル30より読み出したレジ
スタ(の格納)データ、7a,7bは制御回路から出力
される制御データ、8はALUの演算結果、9はプログ
ラムカウンタ4から出力されるプログラムカウント値、
すなわち命令メモリのアドレス値、CMDは命令メモリ
の出力信号すなわちこのコンピュータを動作させる命
令、11はアドレス加算器の演算結果すなわちデータメ
モリのアドレス値である。18は命令語の中に記述され
ている書き込むレジスタの番号を示す書き込みレジスタ
アドレス信号、16a,16bは命令語の中に記述され
ている読み出すレジスタの番号を示す読み出しレジスタ
アドレス信号である。103はaddibne命令を意味する
特殊命令信号であり、命令CMDがaddibne命令でを指
示する場合に“H”となる信号である。
【0136】制御回路50は、命令CMDを受け、命令
CMDに基づき、制御データ7aをALU2及び加算比
較回路40に出力し、制御データ7bをアドレス加算器
3及びプログラムカウンタ4に出力し、特殊命令信号1
03、読み出しレジスタアドレス信号16a,16b及
び書き込みレジスタアドレス信号18をレジスタファイ
ル30に出力する。さらに、制御回路50は、命令CM
Dに基づき、比較結果信号104の有効/無効を“H”
/“L”で指示する制御信号23をプログラムカウンタ
4に出力する。
CMDに基づき、制御データ7aをALU2及び加算比
較回路40に出力し、制御データ7bをアドレス加算器
3及びプログラムカウンタ4に出力し、特殊命令信号1
03、読み出しレジスタアドレス信号16a,16b及
び書き込みレジスタアドレス信号18をレジスタファイ
ル30に出力する。さらに、制御回路50は、命令CM
Dに基づき、比較結果信号104の有効/無効を“H”
/“L”で指示する制御信号23をプログラムカウンタ
4に出力する。
【0137】レジスタファイル30は、特殊命令信号1
03、読み出しレジスタアドレス信号16a,16b及
び書き込みレジスタアドレス信号18に基づき、レジス
タデータ6aをALU2、アドレス加算器3及び加算比
較回路40に出力し、レジスタデータ6bを加算比較回
路40及び図示しない外部メモリに出力する。また、書
き込みレジスタアドレス信号18で書き込みレジスタが
指示されている場合、書き込みレジスタにALU演算結
果8を書き込む。
03、読み出しレジスタアドレス信号16a,16b及
び書き込みレジスタアドレス信号18に基づき、レジス
タデータ6aをALU2、アドレス加算器3及び加算比
較回路40に出力し、レジスタデータ6bを加算比較回
路40及び図示しない外部メモリに出力する。また、書
き込みレジスタアドレス信号18で書き込みレジスタが
指示されている場合、書き込みレジスタにALU演算結
果8を書き込む。
【0138】さらに、レジスタファイル30は、特殊命
令信号103が“H”の場合、読み出しレジスタアドレ
ス信号16a及び16bの値に関係なく、レジスタデー
タ6aとして$28のレジスタの格納データ値を出力
し、レジスタデータ6bとして$30のレジスタの格納
データ値を出力する。
令信号103が“H”の場合、読み出しレジスタアドレ
ス信号16a及び16bの値に関係なく、レジスタデー
タ6aとして$28のレジスタの格納データ値を出力
し、レジスタデータ6bとして$30のレジスタの格納
データ値を出力する。
【0139】ALU2はレジスタデータ6aと制御デー
タ7aとを加算し、その加算結果であるALU演算結果
8をレジスタファイル30に出力する。
タ7aとを加算し、その加算結果であるALU演算結果
8をレジスタファイル30に出力する。
【0140】アドレス加算器3は、レジスタデータ6a
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
【0141】加算比較回路40は、レジスタデータ6a
に制御データ7aを加算した値と、レジスタデータ6b
とを比較し、その比較結果を比較結果信号104として
プログラムカウンタ4に出力する。
に制御データ7aを加算した値と、レジスタデータ6b
とを比較し、その比較結果を比較結果信号104として
プログラムカウンタ4に出力する。
【0142】プログラムカウンタ4は、制御信号23、
制御データ7b及び比較結果信号104を受け、制御信
号23が“H”で比較結果信号104が不一致を指示し
ているとき、現在のプログラムカウント値9に制御デー
タ7bを加算した値を新たなプログラムカウント値9と
して出力し、制御信号23が“H”で比較結果信号10
4が一致を指示しているとき、プログラムカウント値9
に1を加算して新たなプログラムカウント値9として出
力する。また、プログラムカウンタ4は制御信号23が
“L”のときは常に現在のプログラムカウント値9に1
を加算して新たなプログラムカウント値9として出力す
る。
制御データ7b及び比較結果信号104を受け、制御信
号23が“H”で比較結果信号104が不一致を指示し
ているとき、現在のプログラムカウント値9に制御デー
タ7bを加算した値を新たなプログラムカウント値9と
して出力し、制御信号23が“H”で比較結果信号10
4が一致を指示しているとき、プログラムカウント値9
に1を加算して新たなプログラムカウント値9として出
力する。また、プログラムカウンタ4は制御信号23が
“L”のときは常に現在のプログラムカウント値9に1
を加算して新たなプログラムカウント値9として出力す
る。
【0143】図6においては通常のコンピュータの処理
に必要な機能やそれぞれのブロックの接続等については
削除してある。当然本発明のコンピュータも通常のコン
ピュータの処理は実行できる。
に必要な機能やそれぞれのブロックの接続等については
削除してある。当然本発明のコンピュータも通常のコン
ピュータの処理は実行できる。
【0144】<レジスタファイル>図7は第2の実施例
のレジスタファイル30の内部構成を示す説明図であ
る。同図に示すように、図3で示した第1の実施例のレ
ジスタファイルと同様、マトリクス状にメモリセルMC
が構成され、各行のメモリセルMCがそれぞれ$0〜$
31のレジスタR0〜R31となる。これらのメモリセ
ルMCへのアクセスはデコード回路600〜602の制
御下で行われる。以下、第1の実施例のレジスタファイ
ル30と異なる箇所を中心に説明する。
のレジスタファイル30の内部構成を示す説明図であ
る。同図に示すように、図3で示した第1の実施例のレ
ジスタファイルと同様、マトリクス状にメモリセルMC
が構成され、各行のメモリセルMCがそれぞれ$0〜$
31のレジスタR0〜R31となる。これらのメモリセ
ルMCへのアクセスはデコード回路600〜602の制
御下で行われる。以下、第1の実施例のレジスタファイ
ル30と異なる箇所を中心に説明する。
【0145】各読み出しレジスタ選択線20aとレジス
タR0〜R31の各読み出し選択線L2aとの間にはP
MOSトランジスタQ11がそれぞれ介挿され、各読み
出しレジスタ選択線20bとレジスタR0〜R31の各
読み出し選択線L2bとの間にはPMOSトランジスタ
Q12がそれぞれ介挿される。そして、トランジスタQ
11及び12のゲートには特殊命令信号103が印加さ
れる。
タR0〜R31の各読み出し選択線L2aとの間にはP
MOSトランジスタQ11がそれぞれ介挿され、各読み
出しレジスタ選択線20bとレジスタR0〜R31の各
読み出し選択線L2bとの間にはPMOSトランジスタ
Q12がそれぞれ介挿される。そして、トランジスタQ
11及び12のゲートには特殊命令信号103が印加さ
れる。
【0146】さらに、レジスタR0〜R27,R29〜
R31の各読み出し選択線L2aはNMOSトランジス
タQ21を介して接地され、レジスタR28の読み出し
選択線L2aのみNMOSトランジスタQ21を介して
電源VDDに接続される。また、レジスタR0〜R29、
R31の各読み出し選択線L2bはNMOSトランジス
タQ22を介して接地され、レジスタR30の読み出し
選択線L2bのみNMOSトランジスタQ22bを介し
て電源VDDに接続される。そして、トランジスタQ21
及び22のゲートには特殊命令信号103が共通に印加
される。
R31の各読み出し選択線L2aはNMOSトランジス
タQ21を介して接地され、レジスタR28の読み出し
選択線L2aのみNMOSトランジスタQ21を介して
電源VDDに接続される。また、レジスタR0〜R29、
R31の各読み出し選択線L2bはNMOSトランジス
タQ22を介して接地され、レジスタR30の読み出し
選択線L2bのみNMOSトランジスタQ22bを介し
て電源VDDに接続される。そして、トランジスタQ21
及び22のゲートには特殊命令信号103が共通に印加
される。
【0147】したがって、特殊命令信号103が“H”
のとき、トランジスタQ11及びQ12がオフし、トラ
ンジスタQ21及びQ22がオンするため、すべての読
み出しレジスタアドレス信号16a及び16bがデコー
ド回路601及び602の制御下を離れ、強制的に
“H”あるいは“L”が設定される。すなわち、レジス
タR0〜R27,R39〜R31の各読み出し選択線L
2aは“L”に、レジスタR28の読み出し選択線L2
aは“H”に、レジスタR0〜R29及びR31の各読
み出し選択線L2bは“L”に、レジスタR30の読み
出し選択線L2bは“H”に設定される。
のとき、トランジスタQ11及びQ12がオフし、トラ
ンジスタQ21及びQ22がオンするため、すべての読
み出しレジスタアドレス信号16a及び16bがデコー
ド回路601及び602の制御下を離れ、強制的に
“H”あるいは“L”が設定される。すなわち、レジス
タR0〜R27,R39〜R31の各読み出し選択線L
2aは“L”に、レジスタR28の読み出し選択線L2
aは“H”に、レジスタR0〜R29及びR31の各読
み出し選択線L2bは“L”に、レジスタR30の読み
出し選択線L2bは“H”に設定される。
【0148】一方、特殊命令信号103が“L”のと
き、トランジスタQ11及びQ12がオンし、トランジ
スタQ21及びQ22がオフするため、読み出しレジス
タ選択線20aと読み出し選択線L2aとが電気的に接
続され、読み出しレジスタ選択線20bと読み出し選択
線L2bとが電気的に接続されるため、図15で示した
従来のレジスタファイルと等価な構成となるため、従来
同様、読み出しレジスタアドレス信号16a及び16b
に基づき、読み出しレジスタ選択線20a及び20bを
選択的に“H”にして読み出しレジスタの選択動作を行
う。なお、メモリセルMCの内部構成は図16で示した
従来構成と同じである。
き、トランジスタQ11及びQ12がオンし、トランジ
スタQ21及びQ22がオフするため、読み出しレジス
タ選択線20aと読み出し選択線L2aとが電気的に接
続され、読み出しレジスタ選択線20bと読み出し選択
線L2bとが電気的に接続されるため、図15で示した
従来のレジスタファイルと等価な構成となるため、従来
同様、読み出しレジスタアドレス信号16a及び16b
に基づき、読み出しレジスタ選択線20a及び20bを
選択的に“H”にして読み出しレジスタの選択動作を行
う。なお、メモリセルMCの内部構成は図16で示した
従来構成と同じである。
【0149】<動作>以下、図6で示した第2の実施例
のコンピュータによるaddibne命令の実行内容を説明す
る。
のコンピュータによるaddibne命令の実行内容を説明す
る。
【0150】命令CMDがaddibne命令であった場合、
制御回路50は第1のサイクルにおいて、命令CMDを
デコードして、そのデコード結果に基づき、レジスタデ
ータ6aに加算される即値1を制御データ7aとして設
定し、プログラムカウント値9に加算される即値−2を
制御データ7bとして設定し、制御信号23及び特殊命
令信号103を“H”にする。
制御回路50は第1のサイクルにおいて、命令CMDを
デコードして、そのデコード結果に基づき、レジスタデ
ータ6aに加算される即値1を制御データ7aとして設
定し、プログラムカウント値9に加算される即値−2を
制御データ7bとして設定し、制御信号23及び特殊命
令信号103を“H”にする。
【0151】そして、レジスタファイル30は、“H”
の特殊命令信号103に基づき、レジスタデータ6aと
して$28のレジスタの格納データ値(D28)を出力
し、レジスタデータ6bとして$30のレジスタの格納
データ値(D30)を出力する。そして、加算比較回路
40は、レジスタデータ6a(D28)に制御データ7
a(“1”)を加算した値とレジスタデータ6b(D3
0)との比較を行い、その比較結果を比較結果信号10
4としてプログラムカウンタ4に出力する。同時にAL
U2は、レジスタデータ6a(D28)に制御データ7
a(“1”)を加算した値をALU演算結果8として出
力する。
の特殊命令信号103に基づき、レジスタデータ6aと
して$28のレジスタの格納データ値(D28)を出力
し、レジスタデータ6bとして$30のレジスタの格納
データ値(D30)を出力する。そして、加算比較回路
40は、レジスタデータ6a(D28)に制御データ7
a(“1”)を加算した値とレジスタデータ6b(D3
0)との比較を行い、その比較結果を比較結果信号10
4としてプログラムカウンタ4に出力する。同時にAL
U2は、レジスタデータ6a(D28)に制御データ7
a(“1”)を加算した値をALU演算結果8として出
力する。
【0152】そして、制御回路50は第1のサイクルに
続いて実行される第2のサイクルにおいて、書き込みレ
ジスタとして$28のレジスタを指定する書き込みレジ
スタアドレス信号18を出力する。その結果、レジスタ
ファイル30内の$28のレジスタの格納データ値とし
てALU演算結果8(D28+1)が書き込まれる。
続いて実行される第2のサイクルにおいて、書き込みレ
ジスタとして$28のレジスタを指定する書き込みレジ
スタアドレス信号18を出力する。その結果、レジスタ
ファイル30内の$28のレジスタの格納データ値とし
てALU演算結果8(D28+1)が書き込まれる。
【0153】同時に、“H”の制御信号23を受けてい
るプログラムカウンタ4は、比較結果信号104が不一
致を指示しているとき、現在のプログラムカウント値9
(“5”)に制御データ7b(“−2”)を加算した値
(“3”)を新たなプログラムカウント値9として出力
し、比較結果信号104が一致を指示しているとき、現
在のプログラムカウント値9(“5”)に1を加算して
新たなプログラムカウント値9(“6”)として出力す
る。
るプログラムカウンタ4は、比較結果信号104が不一
致を指示しているとき、現在のプログラムカウント値9
(“5”)に制御データ7b(“−2”)を加算した値
(“3”)を新たなプログラムカウント値9として出力
し、比較結果信号104が一致を指示しているとき、現
在のプログラムカウント値9(“5”)に1を加算して
新たなプログラムカウント値9(“6”)として出力す
る。
【0154】このように、第2の実施例のコンピュータ
は、従来は2つの命令により実行されていた処理を1つ
の命令addibneにより他に悪影響を及ぼすことなく実行
可能に構成することにより、実行する命令数を少なくし
た高性能な処理を行うことができる。また、命令数が少
なくなるということは、実際に必要となるメモリ容量が
少なくて同じ処理が可能となり、これは最近のコンピュ
ータには必須となっているキャッシュメモリのヒット率
を向上させることにつながる。ヒット率が向上すれば、
実行命令数が少なくなり高性能なコンピュータができる
だけでなく、システムとしての性能がさらに向上するこ
とも期待できる。
は、従来は2つの命令により実行されていた処理を1つ
の命令addibneにより他に悪影響を及ぼすことなく実行
可能に構成することにより、実行する命令数を少なくし
た高性能な処理を行うことができる。また、命令数が少
なくなるということは、実際に必要となるメモリ容量が
少なくて同じ処理が可能となり、これは最近のコンピュ
ータには必須となっているキャッシュメモリのヒット率
を向上させることにつながる。ヒット率が向上すれば、
実行命令数が少なくなり高性能なコンピュータができる
だけでなく、システムとしての性能がさらに向上するこ
とも期待できる。
【0155】加えて、制御回路50は、命令CMDがad
dibne命令の場合に特殊命令信号103を“H”にする
ことにより、レジスタファイル30から高速に$28及
び$30のレジスタの格納データをレジスタデータ6a
及び6bとして出力させるため、addibne命令を高速に
実行することができる。
dibne命令の場合に特殊命令信号103を“H”にする
ことにより、レジスタファイル30から高速に$28及
び$30のレジスタの格納データをレジスタデータ6a
及び6bとして出力させるため、addibne命令を高速に
実行することができる。
【0156】<addibne命令の変形例> <第1の変形例>図8で示したaddibne命令は10ビッ
トの情報で、格納データを加算するレジスタ($28)
と比較される参照データを格納するレジスタ($30)
とを固定し、加算する値を10ビットで表現する命令体
系にしたが、加算する値が10ビットも必要でない場
合、加算する値を5ビットにして、残りの5ビットでレ
ジスタ番号を指定するような命令体系にしてもよい。レ
ジスタ番号指定用の5ビットで格納データを加算する加
算用レジスタを指定できるようにすれば、加算用レジス
タを$28のレジスタに固定する必要がなくなり加算用
レジスタの選択範囲が広がり、コンパイラがより自由な
命令列をつくることも可能となる。
トの情報で、格納データを加算するレジスタ($28)
と比較される参照データを格納するレジスタ($30)
とを固定し、加算する値を10ビットで表現する命令体
系にしたが、加算する値が10ビットも必要でない場
合、加算する値を5ビットにして、残りの5ビットでレ
ジスタ番号を指定するような命令体系にしてもよい。レ
ジスタ番号指定用の5ビットで格納データを加算する加
算用レジスタを指定できるようにすれば、加算用レジス
タを$28のレジスタに固定する必要がなくなり加算用
レジスタの選択範囲が広がり、コンパイラがより自由な
命令列をつくることも可能となる。
【0157】<第2の変形例>また、上記したレジスタ
番号指定用の5ビットで2個のレジスタを指定すること
にしてもよい。通常のレジスタファイルの番号の指定の
方法では、5ビットでは1個のレジスタしか指定できな
いが、addibne命令では、使用するレジスタの番号の上
位3ビットが固定されていると暗黙的に決定されている
ような命令規則にしておけばよい。たとえば、addibne
命令で必要になる格納データが加算されるレジスタの場
合は上位3ビットが“110”で固定されていて、$2
4,$25,$26,$27のレジスタのうちのどれか
を2ビットで指定し、参照データを格納するレジスタの
場合は上位3ビットが“111”で固定されている$2
8,$29,$30,$31のうちのどれかを2ビット
で指定するようにしておけばよい。すなわち、$24〜
$27のレジスタにより加算用レジスタグループを構成
し、$28〜$31のレジスタにより参照用レジスタグ
ループを構成する。
番号指定用の5ビットで2個のレジスタを指定すること
にしてもよい。通常のレジスタファイルの番号の指定の
方法では、5ビットでは1個のレジスタしか指定できな
いが、addibne命令では、使用するレジスタの番号の上
位3ビットが固定されていると暗黙的に決定されている
ような命令規則にしておけばよい。たとえば、addibne
命令で必要になる格納データが加算されるレジスタの場
合は上位3ビットが“110”で固定されていて、$2
4,$25,$26,$27のレジスタのうちのどれか
を2ビットで指定し、参照データを格納するレジスタの
場合は上位3ビットが“111”で固定されている$2
8,$29,$30,$31のうちのどれかを2ビット
で指定するようにしておけばよい。すなわち、$24〜
$27のレジスタにより加算用レジスタグループを構成
し、$28〜$31のレジスタにより参照用レジスタグ
ループを構成する。
【0158】for 文は2重に利用される場合がある。図
8に2重のfor 文の例を示す。命令5から命令7を1025
回繰り返し、命令3から命令10を1024回繰り返すプロ
グラム例である。このような場合、加算されるレジスタ
が2個($2と$4)、比較されるデータが格納されて
いるレジスタが2個($1と$3)存在しているため、
本発明の実施例3のaddibne 命令は利用することができ
ない。
8に2重のfor 文の例を示す。命令5から命令7を1025
回繰り返し、命令3から命令10を1024回繰り返すプロ
グラム例である。このような場合、加算されるレジスタ
が2個($2と$4)、比較されるデータが格納されて
いるレジスタが2個($1と$3)存在しているため、
本発明の実施例3のaddibne 命令は利用することができ
ない。
【0159】しかし、第2の変形例により、加算用レジ
スタグループから4個($24〜$27)まで加算用レ
ジスタを指定でき、参照用レジスタグループから4個
($28〜$31)まで参照用レジスタを指定できるの
で、4重のfor 文までは問題なくaddibne 命令を利用す
ることができる。
スタグループから4個($24〜$27)まで加算用レ
ジスタを指定でき、参照用レジスタグループから4個
($28〜$31)まで参照用レジスタを指定できるの
で、4重のfor 文までは問題なくaddibne 命令を利用す
ることができる。
【0160】図9は図8の2重ループを第2の変形例の
addibne命令を用いて記述した例である。このaddibne命
令は、前述したように、加算用レジスタの場合は上位3
ビットが“110”で固定されていて、参照データを格納
する参照用レジスタの場合は上位3ビットが“111”で
固定されている。そして、レジスタ番号指定用の5ビッ
ト(%Xと表示)の下位2ビット(第0ビット,第1ビ
ット)の“00”“01”“10”“11”に対応して、$24
〜$27のレジスタがそれぞれ指定され、%xの第2,
第3ビットの“00”“01”“10”“11”に対応して、$
28〜$31のレジスタがそれぞれ指定される。
addibne命令を用いて記述した例である。このaddibne命
令は、前述したように、加算用レジスタの場合は上位3
ビットが“110”で固定されていて、参照データを格納
する参照用レジスタの場合は上位3ビットが“111”で
固定されている。そして、レジスタ番号指定用の5ビッ
ト(%Xと表示)の下位2ビット(第0ビット,第1ビ
ット)の“00”“01”“10”“11”に対応して、$24
〜$27のレジスタがそれぞれ指定され、%xの第2,
第3ビットの“00”“01”“10”“11”に対応して、$
28〜$31のレジスタがそれぞれ指定される。
【0161】したがって、命令6のaddibne命令の%0
(“00000”)により、加算されるレジスタとして$2
4が指定され、参照用のレジスタとして$28が指定さ
れる。また、命令8のaddibne命令の%5(“00101”)
により、加算されるレジスタとして$25が指定され、
参照用のレジスタとして$29が指定される。
(“00000”)により、加算されるレジスタとして$2
4が指定され、参照用のレジスタとして$28が指定さ
れる。また、命令8のaddibne命令の%5(“00101”)
により、加算されるレジスタとして$25が指定され、
参照用のレジスタとして$29が指定される。
【0162】このように、第2の実施例の第2の変形例
のaddibne命令を用いて、図8の2重ループを図9のよ
うに記述しなおすことにより、1024×1025=1049600回
の命令が省略して処理を行えるので、非常に高速なコン
ピュータを実現することができる。
のaddibne命令を用いて、図8の2重ループを図9のよ
うに記述しなおすことにより、1024×1025=1049600回
の命令が省略して処理を行えるので、非常に高速なコン
ピュータを実現することができる。
【0163】<その他>第2の実施例では、制御回路5
0がaddibne命令を受けると“H”の特殊命令信号10
3を出力することにより、レジスタファイル30から強
制的に$28及び$30のレジスタの格納データを出力
するように構成したが、制御回路50がaddibne命令を
受けると、$28及び$30のレジスタからの読み出し
を指示する読み出しレジスタアドレス信号16a及び1
6bを出力することにより、レジスタファイル30から
$28及び$30のレジスタの格納データを出力するよ
うに構成してもよい。
0がaddibne命令を受けると“H”の特殊命令信号10
3を出力することにより、レジスタファイル30から強
制的に$28及び$30のレジスタの格納データを出力
するように構成したが、制御回路50がaddibne命令を
受けると、$28及び$30のレジスタからの読み出し
を指示する読み出しレジスタアドレス信号16a及び1
6bを出力することにより、レジスタファイル30から
$28及び$30のレジスタの格納データを出力するよ
うに構成してもよい。
【0164】このように構成すると特殊命令信号103
を用いずに済ますことができるという利点を奏するが、
通常のレジスタの読み出し動作が実行されるため、実行
速度の点では劣る。
を用いずに済ますことができるという利点を奏するが、
通常のレジスタの読み出し動作が実行されるため、実行
速度の点では劣る。
【0165】<<第3の実施例>> <構成>図10はこの発明の第3の実施例であるコンピ
ュータの構成を示すブロック図である。図10に示すよ
うに、制御回路51は、命令CMDを受け、命令CMD
に基づき、制御データ7aをALU2及び加算比較回路
40に出力し、制御データ7bをアドレス加算器3及び
プログラムカウンタ4に出力し、読み出しレジスタアド
レス信号16a,16b及び書き込みレジスタアドレス
信号18をレジスタファイル1に出力し、書き込みレジ
スタアドレス信号18を複製レジスタファイル1′に出
力し、比較結果信号104の有効/無効を“H”/
“L”で指示する制御信号23をプログラムカウンタ4
に出力する。
ュータの構成を示すブロック図である。図10に示すよ
うに、制御回路51は、命令CMDを受け、命令CMD
に基づき、制御データ7aをALU2及び加算比較回路
40に出力し、制御データ7bをアドレス加算器3及び
プログラムカウンタ4に出力し、読み出しレジスタアド
レス信号16a,16b及び書き込みレジスタアドレス
信号18をレジスタファイル1に出力し、書き込みレジ
スタアドレス信号18を複製レジスタファイル1′に出
力し、比較結果信号104の有効/無効を“H”/
“L”で指示する制御信号23をプログラムカウンタ4
に出力する。
【0166】レジスタファイル1は、内部構成は図15
で示した従来構成と全く同様であり、読み出しレジスタ
アドレス信号16a,16b及び書き込みレジスタアド
レス信号18に基づき、レジスタデータ6aをALU2
及びアドレス加算器3に出力し、レジスタデータ6bを
図示しない外部メモリに出力する。また、書き込みレジ
スタアドレス信号18で書き込みレジスタが指示されて
いる場合、書き込みレジスタにALU演算結果8を書き
込む。
で示した従来構成と全く同様であり、読み出しレジスタ
アドレス信号16a,16b及び書き込みレジスタアド
レス信号18に基づき、レジスタデータ6aをALU2
及びアドレス加算器3に出力し、レジスタデータ6bを
図示しない外部メモリに出力する。また、書き込みレジ
スタアドレス信号18で書き込みレジスタが指示されて
いる場合、書き込みレジスタにALU演算結果8を書き
込む。
【0167】また、複製レジスタファイル1′は、複製
レジスタデータ6a′及び6b′を加算比較回路40に
常に出力する。複製レジスタデータ6a′は、レジスタ
ファイル1の$28のレジスタR28(加算用レジス
タ)の格納データと同一のデータを格納した$28の複
製レジスタR28′の格納データであり、レジスタデー
タ6b′は、レジスタファイル1の$30のレジスタR
30(参照用レジスタ)の格納データと同一のデータを
格納した$30の複製レジスタR30′の格納データで
ある。
レジスタデータ6a′及び6b′を加算比較回路40に
常に出力する。複製レジスタデータ6a′は、レジスタ
ファイル1の$28のレジスタR28(加算用レジス
タ)の格納データと同一のデータを格納した$28の複
製レジスタR28′の格納データであり、レジスタデー
タ6b′は、レジスタファイル1の$30のレジスタR
30(参照用レジスタ)の格納データと同一のデータを
格納した$30の複製レジスタR30′の格納データで
ある。
【0168】図11は第3の実施例の複製レジスタファ
イル1′の内部構成を示す説明図である。同図に示すよ
うに、マトリクス状にメモリセルMCが2行に構成さ
れ、第1行のメモリセルMCが$28の複製レジスタR
28′となり、第2行のメモリセルMCが$30の複製
レジスタR30′となり、メモリセルMCへの書き込み
時のアクセスはデコード回路600′の制御下で行われ
る。
イル1′の内部構成を示す説明図である。同図に示すよ
うに、マトリクス状にメモリセルMCが2行に構成さ
れ、第1行のメモリセルMCが$28の複製レジスタR
28′となり、第2行のメモリセルMCが$30の複製
レジスタR30′となり、メモリセルMCへの書き込み
時のアクセスはデコード回路600′の制御下で行われ
る。
【0169】デコード回路600′は書き込みレジスタ
アドレス信号18を受け、書き込みレジスタアドレス信
号18に基づき2つの書き込みレジスタ選択線19′を
選択的に“H”にする。また、レジスタR28′の各メ
モリセルMCは、図11及び図12に示すように、読み
出し選択線L2aは電源VDDに接続され、読み出し選択
線L2bは接地される。レジスタR30′の各メモリセ
ルMCは、図11及び図13に示すように、読み出し選
択線L2aは接地され、読み出し選択線L2bは電源V
DDに接続される。なお、メモリセルMCの内部構成の他
の部分は図16で示した従来のメモリセルMCの構成と
同様であるため、説明は省略する。
アドレス信号18を受け、書き込みレジスタアドレス信
号18に基づき2つの書き込みレジスタ選択線19′を
選択的に“H”にする。また、レジスタR28′の各メ
モリセルMCは、図11及び図12に示すように、読み
出し選択線L2aは電源VDDに接続され、読み出し選択
線L2bは接地される。レジスタR30′の各メモリセ
ルMCは、図11及び図13に示すように、読み出し選
択線L2aは接地され、読み出し選択線L2bは電源V
DDに接続される。なお、メモリセルMCの内部構成の他
の部分は図16で示した従来のメモリセルMCの構成と
同様であるため、説明は省略する。
【0170】図10に戻って、ALU2はレジスタデー
タ6aと制御データ7aとを加算し、その加算結果であ
るALU演算結果8をレジスタファイル1に出力する。
タ6aと制御データ7aとを加算し、その加算結果であ
るALU演算結果8をレジスタファイル1に出力する。
【0171】アドレス加算器3は、レジスタデータ6a
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
と制御データ7bとを加算し、その加算結果であるアド
レス加算結果11を外部メモリに出力する。このアドレ
ス加算結果11が外部メモリのアクセス対象のアドレス
となる。
【0172】加算比較回路40は、複製レジスタデータ
6a′に制御データ7aを加算した値と、複製レジスタ
データ6b′とを比較し、その比較結果を比較結果信号
104としてプログラムカウンタ4に出力する。
6a′に制御データ7aを加算した値と、複製レジスタ
データ6b′とを比較し、その比較結果を比較結果信号
104としてプログラムカウンタ4に出力する。
【0173】プログラムカウンタ4は、制御信号23、
制御データ7b及び比較結果信号104を受け、制御信
号23が“H”で比較結果信号104が不一致を指示し
ているとき、現在のプログラムカウント値9に制御デー
タ7bを加算した値を新たなプログラムカウント値9と
して出力し、制御信号23が“H”で比較結果信号10
4が一致を指示しているとき、プログラムカウント値9
に“1”を加算して新たなプログラムカウント値9とし
て出力する。また、プログラムカウンタ4は制御信号2
3が“L”のときは常に現在のプログラムカウント値9
に“1”を加算して新たなプログラムカウント値9とし
て出力する。
制御データ7b及び比較結果信号104を受け、制御信
号23が“H”で比較結果信号104が不一致を指示し
ているとき、現在のプログラムカウント値9に制御デー
タ7bを加算した値を新たなプログラムカウント値9と
して出力し、制御信号23が“H”で比較結果信号10
4が一致を指示しているとき、プログラムカウント値9
に“1”を加算して新たなプログラムカウント値9とし
て出力する。また、プログラムカウンタ4は制御信号2
3が“L”のときは常に現在のプログラムカウント値9
に“1”を加算して新たなプログラムカウント値9とし
て出力する。
【0174】図10においては通常のコンピュータの処
理に必要な機能やそれぞれのブロックの接続等について
は削除してある。当然本発明のコンピュータも通常のコ
ンピュータの処理は実行できる。
理に必要な機能やそれぞれのブロックの接続等について
は削除してある。当然本発明のコンピュータも通常のコ
ンピュータの処理は実行できる。
【0175】<動作>以下、図10で示した第3の実施
例のコンピュータによる図5で示したaddibne命令の実
行内容を説明する。
例のコンピュータによる図5で示したaddibne命令の実
行内容を説明する。
【0176】加算比較回路40は、複製レジスタデータ
6a′(D28)に制御データ7a(“1”)を加算し
た値と複製レジスタデータ6b′(D30)との比較を
行い、その比較結果を比較結果信号104としてプログ
ラムカウンタ4に常に出力している。
6a′(D28)に制御データ7a(“1”)を加算し
た値と複製レジスタデータ6b′(D30)との比較を
行い、その比較結果を比較結果信号104としてプログ
ラムカウンタ4に常に出力している。
【0177】命令CMDがaddibne命令であった場合、
制御回路51は第1のサイクルにおいて、命令CMDを
デコードして、そのデコード結果に基づき、レジスタデ
ータ6aに加算される即値1を制御データ7aとして設
定し、プログラムカウント値9に加算される即値−2を
制御データ7bとして設定し、制御信号23を“H”に
し、$28のレジスタを読み出しレジスタに指示するよ
うに読み出しレジスタアドレス信号16aを設定する。
制御回路51は第1のサイクルにおいて、命令CMDを
デコードして、そのデコード結果に基づき、レジスタデ
ータ6aに加算される即値1を制御データ7aとして設
定し、プログラムカウント値9に加算される即値−2を
制御データ7bとして設定し、制御信号23を“H”に
し、$28のレジスタを読み出しレジスタに指示するよ
うに読み出しレジスタアドレス信号16aを設定する。
【0178】そして、レジスタファイル1は、読み出し
レジスタアドレス信号16aに基づき、レジスタデータ
6aとして$28のレジスタの格納データ値(D28)
を出力する。そして、ALU2は、レジスタデータ6a
(D28)に制御データ7a(“1”)を加算した値を
ALU演算結果8として出力する。
レジスタアドレス信号16aに基づき、レジスタデータ
6aとして$28のレジスタの格納データ値(D28)
を出力する。そして、ALU2は、レジスタデータ6a
(D28)に制御データ7a(“1”)を加算した値を
ALU演算結果8として出力する。
【0179】そして、“H”の制御信号23を受けてい
るプログラムカウンタ4は、比較結果信号104が不一
致を指示しているとき、現在のプログラムカウント値9
(“5”)に制御データ7b(“−2”)を加算した値
(“3”)を新たなプログラムカウント値9として出力
し、比較結果信号104が一致を指示しているとき、現
在のプログラムカウント値9(“5”)に1を加算して
新たなプログラムカウント値9(“6”)として出力す
る。
るプログラムカウンタ4は、比較結果信号104が不一
致を指示しているとき、現在のプログラムカウント値9
(“5”)に制御データ7b(“−2”)を加算した値
(“3”)を新たなプログラムカウント値9として出力
し、比較結果信号104が一致を指示しているとき、現
在のプログラムカウント値9(“5”)に1を加算して
新たなプログラムカウント値9(“6”)として出力す
る。
【0180】そして、制御回路51は第1のサイクルに
続いて実行される第2のサイクルにおいて、書き込みレ
ジスタとして$28のレジスタを指定する書き込みレジ
スタアドレス信号18を出力する。その結果、レジスタ
ファイル1内の$28のレジスタの格納データ及び複製
レジスタファイル1′内の$28の複製レジスタの格納
データとしてALU演算結果8(D28+1)が書き込
まれる。
続いて実行される第2のサイクルにおいて、書き込みレ
ジスタとして$28のレジスタを指定する書き込みレジ
スタアドレス信号18を出力する。その結果、レジスタ
ファイル1内の$28のレジスタの格納データ及び複製
レジスタファイル1′内の$28の複製レジスタの格納
データとしてALU演算結果8(D28+1)が書き込
まれる。
【0181】このように、第3の実施例のコンピュータ
は、従来は2つの命令により実行されていた処理を1つ
の命令addibneにより他に悪影響を及ぼすことなく実行
可能に構成することにより、実行する命令数を少なくし
た高性能な処理を行うことができる。
は、従来は2つの命令により実行されていた処理を1つ
の命令addibneにより他に悪影響を及ぼすことなく実行
可能に構成することにより、実行する命令数を少なくし
た高性能な処理を行うことができる。
【0182】さらに、複製レジスタファイル1′を加え
ることにより、レジスタファイル1は従来構成のものを
そのまま用いることができる。したがって、addibne命
令対応によってもレジスタファイル1の処理を遅らせた
りすることは発生しない。
ることにより、レジスタファイル1は従来構成のものを
そのまま用いることができる。したがって、addibne命
令対応によってもレジスタファイル1の処理を遅らせた
りすることは発生しない。
【0183】加えて、複製レジスタファイル1′の複製
レジスタデータ6a′及び6b′として、レジスタファ
イル1内の$28及び$30のレジスタの格納データと
同一データが常に出力されるため、加算比較回路40の
比較結果信号104を早期に得ることができるため、第
2の実施例に比べループの分岐判断を高速に行うことが
できる。
レジスタデータ6a′及び6b′として、レジスタファ
イル1内の$28及び$30のレジスタの格納データと
同一データが常に出力されるため、加算比較回路40の
比較結果信号104を早期に得ることができるため、第
2の実施例に比べループの分岐判断を高速に行うことが
できる。
【0184】
【発明の効果】以上説明したように、この発明における
請求項1記載のコンピュータのデータ読み出し部は、格
納データを読み出すレジスタを特定する記述がなされて
いない所定の特殊命令の場合に、複数のレジスタのうち
予め定められた2個のレジスタを第1及び第2の特定レ
ジスタとして特定し、第1の特定レジスタの格納データ
である第1の格納データと、第2の特定レジスタの格納
データである第2の格納データとを読み出しデータをし
て出力する。
請求項1記載のコンピュータのデータ読み出し部は、格
納データを読み出すレジスタを特定する記述がなされて
いない所定の特殊命令の場合に、複数のレジスタのうち
予め定められた2個のレジスタを第1及び第2の特定レ
ジスタとして特定し、第1の特定レジスタの格納データ
である第1の格納データと、第2の特定レジスタの格納
データである第2の格納データとを読み出しデータをし
て出力する。
【0185】したがって、所定の特殊命令は、第1及び
第2の特定レジスタを指定する記述の代わりに、他の指
示を記述することができる。
第2の特定レジスタを指定する記述の代わりに、他の指
示を記述することができる。
【0186】その結果、従来では複数の命令により実行
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、高性能なコンピュー
タを得ることができる。
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、高性能なコンピュー
タを得ることができる。
【0187】また、請求項2記載のコンピュータは、命
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく第1及び第2の特定レジ
スタの第1及び第2の格納データを読み出しデータとし
て出力するレジスタ群とを備える。
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく第1及び第2の特定レジ
スタの第1及び第2の格納データを読み出しデータとし
て出力するレジスタ群とを備える。
【0188】したがって、命令が所定の特殊命令の場合
に速やかにレジスタ群から第1及び第2の格納データが
出力されるため、所定の特殊命令をより高速に実行する
ことができる。
に速やかにレジスタ群から第1及び第2の格納データが
出力されるため、所定の特殊命令をより高速に実行する
ことができる。
【0189】また、請求項3記載のコンピュータのデー
タ演算部は、第1の格納データと第1の数とに基づく演
算を行い第1の演算結果を出力する第1の演算手段と、
第2の格納データと第2の数とに基づく演算を行い第2
の演算結果を出力する第2の演算手段とを備えるため、
2つの演算処理を並行して行うことができる。
タ演算部は、第1の格納データと第1の数とに基づく演
算を行い第1の演算結果を出力する第1の演算手段と、
第2の格納データと第2の数とに基づく演算を行い第2
の演算結果を出力する第2の演算手段とを備えるため、
2つの演算処理を並行して行うことができる。
【0190】その結果、第1及び第2の演算手段によ
り、並行して演算処理を行わせることにより、所定の特
殊命令をより高速に実行することができる。
り、並行して演算処理を行わせることにより、所定の特
殊命令をより高速に実行することができる。
【0191】さらに、請求項4記載のコンピュータのデ
ータ読み出し部は、命令が所定の特殊命令の場合に、第
1の演算結果を第1の特定レジスタに書き込み、第2の
演算結果は外部メモリの書き込みアドレスとして規定さ
れ、第2の格納データは外部メモリの上記書き込みアド
レスへの書き込みデータとして規定されるため、第1の
特定レジスタへの書き込み処理及び外部メモリへの書き
込み処理が並行して行える。
ータ読み出し部は、命令が所定の特殊命令の場合に、第
1の演算結果を第1の特定レジスタに書き込み、第2の
演算結果は外部メモリの書き込みアドレスとして規定さ
れ、第2の格納データは外部メモリの上記書き込みアド
レスへの書き込みデータとして規定されるため、第1の
特定レジスタへの書き込み処理及び外部メモリへの書き
込み処理が並行して行える。
【0192】その結果、上記2つの書き込み処理を並行
して行うことにより、所定の特殊命令をより高速に実行
することができる。
して行うことにより、所定の特殊命令をより高速に実行
することができる。
【0193】この発明における請求項5記載のコンピュ
ータのデータ読み出し部は、命令が所定の特殊命令の場
合に、複数のレジスタのうち予め定められた1個のレジ
スタを参照用レジスタとして特定し、参照用レジスタの
格納データである参照用格納データを読み出しデータと
して出力する。
ータのデータ読み出し部は、命令が所定の特殊命令の場
合に、複数のレジスタのうち予め定められた1個のレジ
スタを参照用レジスタとして特定し、参照用レジスタの
格納データである参照用格納データを読み出しデータと
して出力する。
【0194】したがって、所定の特殊命令は、参照用レ
ジスタを指定する記述の代わりに、他の指示を記述する
ことができる。
ジスタを指定する記述の代わりに、他の指示を記述する
ことができる。
【0195】その結果、従来では複数の命令により実行
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、高性能なコンピュー
タを得ることができる。
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、高性能なコンピュー
タを得ることができる。
【0196】また、請求項6記載のコンピュータは、命
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データを読み出しデータとして出力するレジスタ群
とを備える。
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データを読み出しデータとして出力するレジスタ群
とを備える。
【0197】したがって、命令が所定の特殊命令の場合
に速やかにレジスタ群から参照用格納データが出力され
るため、所定の特殊命令をより高速に実行することがで
きる。
に速やかにレジスタ群から参照用格納データが出力され
るため、所定の特殊命令をより高速に実行することがで
きる。
【0198】また、請求項7記載のコンピュータのデー
タ読み出し部は、命令が所定の特殊命令の場合にのみ活
性状態となる制御信号をさらに出力し、制御信号が活性
状態のとき、比較結果信号に基づき、現在の実行対象の
命令のアドレスを規定するプログラムカウント値を出力
するプログラムカウンタをさらに備える。
タ読み出し部は、命令が所定の特殊命令の場合にのみ活
性状態となる制御信号をさらに出力し、制御信号が活性
状態のとき、比較結果信号に基づき、現在の実行対象の
命令のアドレスを規定するプログラムカウント値を出力
するプログラムカウンタをさらに備える。
【0199】したがって、所定の特殊命令によりプログ
ラムカウント値を変更する処理を行うことができる。
ラムカウント値を変更する処理を行うことができる。
【0200】また、請求項8記載のコンピュータのデー
タ読み出し部は、命令が所定の特殊命令の場合に、複数
のレジスタのうち、参照用レジスタ以外で予め定められ
た1個のレジスタを加算用レジスタとし、加算用レジス
タの格納データである加算用格納データを読み出しデー
タとしてさらに出力する。
タ読み出し部は、命令が所定の特殊命令の場合に、複数
のレジスタのうち、参照用レジスタ以外で予め定められ
た1個のレジスタを加算用レジスタとし、加算用レジス
タの格納データである加算用格納データを読み出しデー
タとしてさらに出力する。
【0201】したがって、所定の特殊命令は、上記参照
用レジスタと加算用レジスタを指定する記述の代わり
に、他の指示を記述することができる。
用レジスタと加算用レジスタを指定する記述の代わり
に、他の指示を記述することができる。
【0202】その結果、従来では複数の命令により実行
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、さらに高性能なコン
ピュータを得ることができる。
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、さらに高性能なコン
ピュータを得ることができる。
【0203】また、請求項9記載のコンピュータは、命
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データ及び加算用格納データの加算用格納データを
読み出しデータとして出力するレジスタ群とを備える。
令が所定の特殊命令の場合に活性状態の特殊命令信号を
出力する制御手段と、特殊命令信号が活性状態のとき読
み出しアドレス信号に関係なく参照用レジスタの参照用
格納データ及び加算用格納データの加算用格納データを
読み出しデータとして出力するレジスタ群とを備える。
【0204】したがって、命令が所定の特殊命令の場合
に速やかにレジスタ群から参照用格納データ及び加算用
格納データが出力されるため、所定の特殊命令をより高
速に実行することができる。
に速やかにレジスタ群から参照用格納データ及び加算用
格納データが出力されるため、所定の特殊命令をより高
速に実行することができる。
【0205】また、請求項10記載のコンピュータのデ
ータ読み出し部は、命令が所定の特殊命令の場合に、所
定の特殊命令に記述されたレジスタ特定項目に基づき、
複数のレジスタから加算用レジスタを特定し、加算用レ
ジスタの格納データである加算用格納データをさらに出
力するため、複数のレジスタから加算用レジスタを選択
することができ、加算用レジスタの選択範囲を広げるこ
とができる。
ータ読み出し部は、命令が所定の特殊命令の場合に、所
定の特殊命令に記述されたレジスタ特定項目に基づき、
複数のレジスタから加算用レジスタを特定し、加算用レ
ジスタの格納データである加算用格納データをさらに出
力するため、複数のレジスタから加算用レジスタを選択
することができ、加算用レジスタの選択範囲を広げるこ
とができる。
【0206】この発明における請求項11記載のコンピ
ュータのデータ読み出し部は、命令が所定の特殊命令の
場合に、第1のレジスタ特定項目に基づき加算用レジス
タグループから加算用レジスタを特定し、第2のレジス
タ特定項目に基づき参照用レジスタグループから参照用
レジスタを特定し、加算用レジスタの格納データである
加算用格納データ及び参照用レジスタの格納データであ
る参照用格納データとを読み出しデータとして出力す
る。
ュータのデータ読み出し部は、命令が所定の特殊命令の
場合に、第1のレジスタ特定項目に基づき加算用レジス
タグループから加算用レジスタを特定し、第2のレジス
タ特定項目に基づき参照用レジスタグループから参照用
レジスタを特定し、加算用レジスタの格納データである
加算用格納データ及び参照用レジスタの格納データであ
る参照用格納データとを読み出しデータとして出力す
る。
【0207】したがって、所定の特殊命令は、加算用レ
ジスタ及び参照用レジスタを指定する記述を最小限に抑
える代わりに、他の指示を記述することができる。
ジスタ及び参照用レジスタを指定する記述を最小限に抑
える代わりに、他の指示を記述することができる。
【0208】その結果、従来では複数の命令により実行
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、高性能なコンピュー
タを得ることができる。
されていた処理を所定の特殊命令のみで処理可能とな
り、命令数を省略することにより、高性能なコンピュー
タを得ることができる。
【0209】加えて、加算用レジスタグループから加算
用レジスタを選択することができ、参照用レジスタグル
ープから参照用レジスタを選択することができるため、
加算用及び参照用レジスタの選択範囲を広げることがで
きる。
用レジスタを選択することができ、参照用レジスタグル
ープから参照用レジスタを選択することができるため、
加算用及び参照用レジスタの選択範囲を広げることがで
きる。
【0210】その結果、異なる加算用及び参照用レジス
タを特定する複数の所定の特殊命令を組み合わせて複雑
な命令列を記述することができる。
タを特定する複数の所定の特殊命令を組み合わせて複雑
な命令列を記述することができる。
【0211】また、請求項12記載のコンピュータのよ
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
【0212】また、請求項13記載のコンピュータのデ
ータ演算部は、加算用格納データと所定の加算数とを加
算して、上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、データ読み出し部は、命令が
所定の特殊命令の場合に、演算結果を加算用レジスタに
書き込むため、加算用格納データを制御パラメータとし
たループ処理の終了判定用の信号として上記比較結果信
号を用いることができる。
ータ演算部は、加算用格納データと所定の加算数とを加
算して、上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、データ読み出し部は、命令が
所定の特殊命令の場合に、演算結果を加算用レジスタに
書き込むため、加算用格納データを制御パラメータとし
たループ処理の終了判定用の信号として上記比較結果信
号を用いることができる。
【0213】また、請求項14記載のコンピュータのデ
ータ読み出し部は、複数のレジスタにおける参照用レジ
スタの参照用格納データの参照用格納データと同一デー
タを格納する複製参照用レジスタと、複数のレジスタに
おける加算用レジスタの加算用格納データと同一データ
を格納する複製加算用レジスタとを有し、複製参照用レ
ジスタの格納データを参照用格納データとし、複製加算
用レジスタの格納データを加算用格納データとして常に
出力する第2のレジスタ群とを備えるため、データ比較
手段は、第2のレジスタ群から得られる参照用格納デー
タ及び加算用格納データに基づき、高速に比較結果信号
を出力することができる。
ータ読み出し部は、複数のレジスタにおける参照用レジ
スタの参照用格納データの参照用格納データと同一デー
タを格納する複製参照用レジスタと、複数のレジスタに
おける加算用レジスタの加算用格納データと同一データ
を格納する複製加算用レジスタとを有し、複製参照用レ
ジスタの格納データを参照用格納データとし、複製加算
用レジスタの格納データを加算用格納データとして常に
出力する第2のレジスタ群とを備えるため、データ比較
手段は、第2のレジスタ群から得られる参照用格納デー
タ及び加算用格納データに基づき、高速に比較結果信号
を出力することができる。
【0214】その結果、プログラムカウンタによるプロ
グラムカウント値を速やかに出力することができ、所定
の特殊命令をより一層高速に処理することができる。
グラムカウント値を速やかに出力することができ、所定
の特殊命令をより一層高速に処理することができる。
【0215】加えて、制御信号が活性状態のとき、比較
結果信号に基づき、現在の実行対象の命令のアドレスを
規定するプログラムカウント値を出力するプログラムカ
ウンタをさらに備えるため、所定の特殊命令によりプロ
グラムカウント値を変更する処理を行うことができる。
結果信号に基づき、現在の実行対象の命令のアドレスを
規定するプログラムカウント値を出力するプログラムカ
ウンタをさらに備えるため、所定の特殊命令によりプロ
グラムカウント値を変更する処理を行うことができる。
【0216】また、請求項15記載のコンピュータのよ
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
うに、比較用データを加算用格納データに所定の加算数
を加算して得られるデータを用いることにより、分岐判
断として比較結果信号を用いることができる。
【0217】さらに、請求項16記載のコンピュータの
データ演算部は、加算用格納データと所定の加算数とを
加算して上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、制御手段は、命令が所定の特
殊命令の場合に、演算結果を加算用レジスタ及び複製加
算用レジスタへの書き込むを指示する書き込みアドレス
信号を第1及び第2のレジスタ群に出力することによ
り、演算結果を加算用レジスタ及び複製加算用レジスタ
に書き込むため、複製加算用レジスタより得られる加算
用格納データを制御パラメータとしたループ処理の終了
判定用の信号として上記比較結果信号を用いることがで
きる。
データ演算部は、加算用格納データと所定の加算数とを
加算して上記比較用データと同一値の演算結果を出力す
る演算手段をさらに備え、制御手段は、命令が所定の特
殊命令の場合に、演算結果を加算用レジスタ及び複製加
算用レジスタへの書き込むを指示する書き込みアドレス
信号を第1及び第2のレジスタ群に出力することによ
り、演算結果を加算用レジスタ及び複製加算用レジスタ
に書き込むため、複製加算用レジスタより得られる加算
用格納データを制御パラメータとしたループ処理の終了
判定用の信号として上記比較結果信号を用いることがで
きる。
【図1】 この発明の第1の実施例で用いる命令列を示
す説明図である。
す説明図である。
【図2】 この発明の第1の実施例であるコンピュータ
の構成を示すブロック図である。
の構成を示すブロック図である。
【図3】 図2のレジスタファイルの内部構成を示す説
明図である。
明図である。
【図4】 2つの命令を組み合わせ命令を含む命令列を
示す説明図である。
示す説明図である。
【図5】 この発明の第2の実施例で用いる命令列を示
す説明図である。
す説明図である。
【図6】 この発明の第2の実施例であるコンピュータ
の構成を示すブロック図である。
の構成を示すブロック図である。
【図7】 図6のレジスタファイルの内部構成を示す説
明図である。
明図である。
【図8】 2重ループ命令を含む命令列を示す説明図で
ある。
ある。
【図9】 この発明の第2の実施例で用いる命令列を示
す説明図である。
す説明図である。
【図10】 この発明の第3の実施例であるコンピュー
タの構成を示すブロック図である。
タの構成を示すブロック図である。
【図11】 図10の複製レジスタファイルの内部構成
を示す説明図である。
を示す説明図である。
【図12】 図11のメモリセルの内部構成を示す回路
図である。
図である。
【図13】 図11のメモリセルの内部構成を示す回路
図である。
図である。
【図14】 従来のコンピュータの構成を示すブロック
図である。
図である。
【図15】 図14のレジスタファイルの内部構成を示
す説明図である。
す説明図である。
【図16】 図15のメモリセルの内部構成を示す回路
図である。
図である。
【図17】 従来の命令列を示す説明図である。
【図18】 従来の命令列を示す説明図である。
【図19】 従来のコンピュータの構成を示すブロック
図である。
図である。
1 レジスタファイル、1′ 複製レジスタファイル、
2 ALU、3 アドレス加算器、4 プログラムカウ
ンタ、30 レジスタファイル、40 加算比較回路、
50,51 制御回路。
2 ALU、3 アドレス加算器、4 プログラムカウ
ンタ、30 レジスタファイル、40 加算比較回路、
50,51 制御回路。
Claims (16)
- 【請求項1】 複数のレジスタを有し、外部より得られ
る命令受け、該命令に基づき、前記複数のレジスタの格
納データを選択的に読み出しデータとして出力するデー
タ読み出し部を備え、前記命令は、格納データを読み出
すレジスタを特定する記述がなされていない所定の特殊
命令を含み、 前記読み出しデータに基づく演算処理を施し、演算結果
を出力するデータ演算部をさらに備え、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記複数のレジスタのうち予め定められた
2個のレジスタを第1及び第2の特定レジスタとして特
定し、前記第1の特定レジスタの格納データである第1
の格納データと、前記第2の特定レジスタの格納データ
である第2の格納データとを前記読み出しデータとして
出力することを特徴とする、コンピュータ。 - 【請求項2】 前記データ読み出し部は、 前記命令に基づき読み出しアドレス信号を出力するとも
に、前記命令が前記所定の特殊命令の場合に活性状態の
特殊命令信号を出力する制御手段と、 前記複数のレジスタを有し、前記読み出しアドレス信号
を受け、前記読み出しアドレス信号に基づき、前記複数
のレジスタの格納データを選択的に前記読み出しデータ
として出力するレジスタ群とを備え、前記レジスタ群
は、前記特殊命令信号をさらに受け、前記特殊命令信号
が活性状態のとき前記読み出しアドレス信号に関係なく
前記第1及び第2の特定レジスタの前記第1及び第2の
格納データを前記読み出しデータとして出力する、請求
項1記載のコンピュータ。 - 【請求項3】 前記所定の特殊命令は、命令の種別、第
1の数及び第2の数が規定されており、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記第1及び第2の数を前記読み出しデー
タとしてさらに出力し、 前記データ演算部は、 前記第1の格納データと前記第1の数とに基づく演算を
行い第1の演算結果を出力する第1の演算手段と、 前記第2の格納データと前記第2の数とに基づく演算を
行い第2の演算結果を出力する第2の演算手段とを備え
る、請求項1記載のコンピュータ。 - 【請求項4】 前記データ読み出し部は、前記命令が前
記所定の特殊命令の場合に、前記第1の演算結果を前記
第1の特定レジスタに書き込み、 前記第2の演算結果は外部メモリの書き込みアドレスと
して規定され、前記第2の格納データは前記外部メモリ
の前記書き込みアドレスへの書き込みデータとして規定
される、請求項3記載のコンピュータ。 - 【請求項5】 複数のレジスタを有し、外部より得られ
る命令に基づき、前記複数のレジスタの格納データを選
択的に読み出しデータとして出力するデータ読み出し部
と、 前記読み出しデータに基づく演算処理を施し、演算結果
を出力するデータ演算部とを備え、 前記データ読み出し部は、前記命令が所定の特殊命令の
場合に、前記複数のレジスタのうち予め定められた1個
のレジスタを参照用レジスタとして特定し、前記参照用
レジスタの格納データである参照用格納データを前記読
み出しデータとして出力し、 前記データ演算部は、前記参照用格納データと比較用デ
ータとの比較を行い、比較結果信号を出力するデータ比
較手段を備える、コンピュータ。 - 【請求項6】 前記データ読み出し部は、 前記命令に基づき読み出しアドレス信号を出力するとも
に、前記命令が前記所定の特殊命令の場合に活性状態の
特殊命令信号を出力する制御手段と、 前記複数のレジスタを有し、前記読み出しアドレス信号
を受け、前記読み出しアドレス信号に基づき、前記複数
のレジスタの格納データを選択的に前記読み出しデータ
として出力するレジスタ群とを備え、前記レジスタ群
は、前記特殊命令信号をさらに受け、前記特殊命令信号
が活性状態のとき前記読み出しアドレス信号に関係なく
前記参照用レジスタの前記参照用格納データを前記読み
出しデータとして出力する、請求項5記載のコンピュー
タ。 - 【請求項7】 前記データ読み出し部は、前記命令が前
記所定の特殊命令の場合にのみ活性状態となる制御信号
をさらに出力し、 前記制御信号及び前記比較結果信号を受け、前記制御信
号が活性状態のとき、前記比較結果信号に基づき、現在
の実行対象の命令のアドレスを規定するプログラムカウ
ント値を出力するプログラムカウンタをさらに備える、
請求項6記載のコンピュータ。 - 【請求項8】 前記所定の特殊命令は、格納データを読
み出すレジスタを特定する記述がなされていない命令で
あり、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記複数のレジスタのうち、前記参照用レ
ジスタ以外で予め定められた1個のレジスタを加算用レ
ジスタとし、前記加算用レジスタの格納データである加
算用格納データを前記読み出しデータとしてさらに出力
し、 前記比較用データは、前記加算用格納データに基づくデ
ータである、請求項5記載のコンピュータ。 - 【請求項9】 前記データ読み出し部は、 前記命令に基づき読み出しアドレス信号を出力するとも
に、前記命令が前記所定の特殊命令の場合に活性状態の
特殊命令信号を出力する制御手段と、 前記複数のレジスタを有し、前記読み出しアドレス信号
を受け、前記読み出しアドレス信号に基づき、前記複数
のレジスタの格納データを選択的に前記読み出しデータ
として出力するレジスタ群とを備え、前記レジスタ群
は、前記特殊命令信号をさらに受け、前記特殊命令信号
が活性状態のとき前記読み出しアドレス信号に関係なく
前記参照用レジスタの前記参照用格納データ及び前記加
算用格納データの前記加算用格納データを前記読み出し
データとして出力する、請求項8記載のコンピュータ。 - 【請求項10】 前記所定の特殊命令は、前記複数のレ
ジスタから加算用レジスタを特定するレジスタ特定項目
が記述された命令であり、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記レジスタ特定項目に基づき、前記複数
のレジスタから前記加算用レジスタを特定し、前記加算
用レジスタの格納データである加算用格納データをさら
に出力し、 前記比較用データは、前記加算用格納データに基づくデ
ータである、請求項5記載のコンピュータ。 - 【請求項11】 複数のレジスタを有し、外部より得ら
れる命令に基づき、前記複数のレジスタの格納データを
選択的に読み出しデータとして出力するデータ読み出し
部を備え、前記データ読み出し部は、前記複数のレジス
タのうち2個以上のレジスタを加算用レジスタグループ
として予め特定し、前記加算用レジスタグループ以外の
前記複数のレジスタのうち2個以上のレジスタを参照用
レジスタグループとして予め特定し、前記命令は、前記
加算用レジスタグループから加算用レジスタを特定する
第1のレジスタ特定項目及び前記参照用レジスタグルー
プから参照用レジスタを特定する第2のレジスタ特定項
目が記述された所定の特殊命令を含み、 前記読み出しデータに基づき演算処理を施し、演算結果
を出力するデータ演算部をさらに備え、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記第1のレジスタ特定項目に基づき前記
加算用レジスタグループから前記加算用レジスタを特定
し、前記第2のレジスタ特定項目に基づき前記参照用レ
ジスタグループから前記参照用レジスタを特定し、前記
加算用レジスタの格納データである加算用格納データ及
び前記参照用レジスタの格納データである参照用格納デ
ータとを前記読み出しデータとして出力し、 前記データ演算部は、前記加算用データに基づく比較用
データと前記参照用格納データとの比較を行い比較結果
信号を出力するデータ比較手段を備える、コンピュー
タ。 - 【請求項12】 前記所定の特殊命令は、所定の加算数
がさらに規定された命令であり、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記所定の加算数を前記読み出しデータと
してさらに出力し、 前記比較用データは、前記加算用格納データに前記所定
の加算数を加算して得られるデータである、請求項8、
請求項10及び請求項11のいずれか1項に記載のコン
ピュータ。 - 【請求項13】 前記データ演算部は、前記加算用格納
データと前記所定の加算数とを加算して演算結果を出力
する演算手段をさらに備え、 前記データ読み出し部は、前記命令が前記所定の特殊命
令の場合に、前記演算結果を前記加算用レジスタに書き
込む、請求項12記載のコンピュータ。 - 【請求項14】 前記データ読み出し部は、 前記命令に基づき読み出しアドレス信号を出力するとも
に、前記命令が前記所定の特殊命令の場合に活性状態の
前記制御信号を出力する制御手段と、 前記複数のレジスタを有し、前記読み出しアドレス信号
を受け、前記読み出しアドレス信号に基づき、前記複数
のレジスタの格納データを選択的に前記読み出しデータ
として出力する第1のレジスタ群と、 前記複数のレジスタにおける前記参照用レジスタの前記
参照用格納データと同一データを格納する複製参照用レ
ジスタと、前記複数のレジスタにおける前記加算用レジ
スタの前記加算用格納データと同一データを格納する複
製加算用レジスタとを有し、前記複製参照用レジスタの
格納データを前記参照用格納データとし、前記複製加算
用レジスタの格納データを前記加算用格納データとして
常に出力する第2のレジスタ群とを備え、 前記制御信号及び前記比較結果信号を受け、前記制御信
号が活性状態のとき、前記比較結果信号に基づき、現在
の実行対象の命令のアドレスを規定するプログラムカウ
ント値を出力するプログラムカウンタをさらに備える、
請求項8記載のコンピュータ。 - 【請求項15】 前記所定の特殊命令は、所定の加算数
がさらに規定された命令であり、 前記制御手段は、前記命令が前記所定の特殊命令の場合
に、前記所定の加算数をさらに出力し、 前記比較用データは、前記加算用格納データに前記所定
の加算数を加算して得られるデータである、請求項14
記載のコンピュータ。 - 【請求項16】 前記データ演算部は、前記加算用格納
データと前記所定の加算数とを加算して演算結果を出力
する演算手段をさらに備え、 前記制御手段は、前記命令が前記所定の特殊命令の場合
に、前記演算結果を前記加算用レジスタ及び前記複製加
算用レジスタへ書き込むことを指示する書き込みアドレ
ス信号を前記第1及び第2のレジスタ群に出力すること
により、前記演算結果を前記加算用レジスタ及び複製加
算用レジスタに書き込む、請求項15記載のコンピュー
タ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30919894A JP3493369B2 (ja) | 1994-12-13 | 1994-12-13 | コンピュータ |
US08/547,798 US5875323A (en) | 1994-12-13 | 1995-10-25 | Processor using implicit register addressing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP30919894A JP3493369B2 (ja) | 1994-12-13 | 1994-12-13 | コンピュータ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08166880A true JPH08166880A (ja) | 1996-06-25 |
JP3493369B2 JP3493369B2 (ja) | 2004-02-03 |
Family
ID=17990115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP30919894A Expired - Fee Related JP3493369B2 (ja) | 1994-12-13 | 1994-12-13 | コンピュータ |
Country Status (2)
Country | Link |
---|---|
US (1) | US5875323A (ja) |
JP (1) | JP3493369B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0787557A2 (en) | 1996-01-30 | 1997-08-06 | Suzuki Motor Corporation | Method of bonding aluminum members |
JP2015084250A (ja) * | 2009-12-22 | 2015-04-30 | インテル・コーポレーション | 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6686838B1 (en) | 2000-09-06 | 2004-02-03 | Xanboo Inc. | Systems and methods for the automatic registration of devices |
CN1306395C (zh) * | 2004-02-13 | 2007-03-21 | 中国科学院计算技术研究所 | Mips指令集的处理器扩展指令及其编码方法和部件 |
US20070061551A1 (en) * | 2005-09-13 | 2007-03-15 | Freescale Semiconductor, Inc. | Computer Processor Architecture Comprising Operand Stack and Addressable Registers |
JP5588781B2 (ja) * | 2010-08-10 | 2014-09-10 | 富士通株式会社 | セキュアモジュールおよび情報処理装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5569855A (en) * | 1978-11-20 | 1980-05-26 | Panafacom Ltd | Data processing system |
JP2902402B2 (ja) * | 1987-09-30 | 1999-06-07 | 三菱電機株式会社 | データ処理装置 |
US5142633A (en) * | 1989-02-03 | 1992-08-25 | Digital Equipment Corporation | Preprocessing implied specifiers in a pipelined processor |
-
1994
- 1994-12-13 JP JP30919894A patent/JP3493369B2/ja not_active Expired - Fee Related
-
1995
- 1995-10-25 US US08/547,798 patent/US5875323A/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0787557A2 (en) | 1996-01-30 | 1997-08-06 | Suzuki Motor Corporation | Method of bonding aluminum members |
JP2015084250A (ja) * | 2009-12-22 | 2015-04-30 | インテル・コーポレーション | 所与の範囲のページのキャッシュフラッシュおよび所与の範囲のエントリのtlb無効化を行なうシステム、方法、および装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3493369B2 (ja) | 2004-02-03 |
US5875323A (en) | 1999-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5070451A (en) | Forth specific language microprocessor | |
US4399507A (en) | Instruction address stack in the data memory of an instruction-pipelined processor | |
US5487159A (en) | System for processing shift, mask, and merge operations in one instruction | |
JPS59117666A (ja) | ベクトル処理装置 | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
JP3493369B2 (ja) | コンピュータ | |
US5349671A (en) | Microprocessor system generating instruction fetch addresses at high speed | |
US5504923A (en) | Parallel processing with improved instruction misalignment detection | |
US5867696A (en) | Saving a program counter value as the return address in an arbitrary general purpose register | |
US5101489A (en) | Data processing unit including a variable bit length bypass circuit | |
US6263424B1 (en) | Execution of data dependent arithmetic instructions in multi-pipeline processors | |
JPS6212529B2 (ja) | ||
JPH034936B2 (ja) | ||
US5751999A (en) | Processor and data memory for outputting and receiving data on different buses for storage in the same location | |
KR19980024622A (ko) | 프로그램 실행 방법 및 그 방법을 이용한 장치 | |
US5001629A (en) | Central processing unit with improved stack register operation | |
US6782467B1 (en) | Method and apparatus for fast limited core area access and cross-port word size multiplication in synchronous multiport memories | |
JP2861560B2 (ja) | データ処理装置 | |
JPH02126321A (ja) | 命令コードのデコード装置 | |
Rovatti et al. | Linear and fuzzy piecewise-linear signal processing with an extended DSP architecture | |
JP3474384B2 (ja) | シフタ回路及びマイクロプロセッサ | |
US6757813B1 (en) | Processor | |
JP3441847B2 (ja) | データメモリを有するプロセッサ | |
JPH07191911A (ja) | アドレス変換装置及びマイクロプロセッサ算出方法 | |
JPH11163736A (ja) | プロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081121 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081121 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091121 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |