JP3147884B2 - 記憶装置及び情報処理装置 - Google Patents

記憶装置及び情報処理装置

Info

Publication number
JP3147884B2
JP3147884B2 JP00881899A JP881899A JP3147884B2 JP 3147884 B2 JP3147884 B2 JP 3147884B2 JP 00881899 A JP00881899 A JP 00881899A JP 881899 A JP881899 A JP 881899A JP 3147884 B2 JP3147884 B2 JP 3147884B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
register
cache
processing
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
JP00881899A
Other languages
English (en)
Other versions
JPH11272463A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP00881899A priority Critical patent/JP3147884B2/ja
Publication of JPH11272463A publication Critical patent/JPH11272463A/ja
Application granted granted Critical
Publication of JP3147884B2 publication Critical patent/JP3147884B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はミニコン,マイコン
等のCPUに係り、特に高速動作に好適なデータ処理装
置及び方法に関する。
【0002】
【従来の技術】従来より、計算機の高速化のために、種
々の工夫が行われている。代表的な手法にパイプライン
がある。パイプラインとは、1つの命令の処理を完全に
終えてから次の命令を始めるのではなくて、1つの命令
を複数ステージに分け、最初の命令が2番目のステージ
にさしかかったところで、次の命令の最初のステージの
処理を始めるというようにバケツリレー式に処理する方
式である。この様な方式については、富田眞治著「並列
計算機構成論」昭晃堂p.25〜68 に詳しく論じられ
ている。n段パイプライン方式を用いれば、それぞれの
パイプラインステージにて処理されている命令は1つで
あるが、全体としてn個の命令を同時に処理することが
でき、パイプラインピッチごとに、1つの命令の処理を
終えることができる。
【0003】さて、計算機の命令アーキテクチャが、そ
の処理方式,処理性能に及ぼす影響が大であることは周
知である。命令アーキテクチャの観点から計算機を分類
すると、CISC(Complex Instruction Set Compute
r)とRISC(Reduced Instruction Computer) に
分けられる。CISCでは複雑な命令をマイクロ命令を
使って処理する。これに対して、RISCでは、命令を
簡単なものに絞る代わりに、マイクロ命令を用いずに、
ハードワイヤド論理による制御で高速化を計っている。
以下、従来のCISC,RISCの両者について、ハー
ドウエア概要とそのパイプライン動作について述べる。
【0004】図2はCISC型計算機の一般的構成を説
明する図である。200はメモリインタフェース、20
1はプログラムカウンタ(PC)、202は命令キャッシ
ュ、203は命令レジスタ、204は命令デコーダ、2
05はアドレス計算制御回路、206はマイクロ命令を
格納しておくControl Storage(CS)、207はマイク
ロ命令カウンタ、208はマイクロ命令レジスタ、20
9はデコーダ、210はメモリとデータをやり取りする
レジスタMDR(Memory Dtata Register)、211は
メモリ上のオペランドアドレスを示すレジスタMAR
(Memory AddressRegister)、212はアドレス加算
器、213はレジスタファイル、214はALU(Arit
hmetic Logical Unit)である。
【0005】動作の概要を説明する。PC201によっ
て示された命令が、命令キャッシュより取り出され、信
号217を通して、命令レジスタ203にセットされ
る。命令デコーダ204は命令を信号218を通して受
けとり、マイクロ命令の先頭アドレスを信号220を通
して、マイクロプログラムカウンタ207にセットす
る。また、アドレス計算方法を信号219を通してアド
レス計算制御回路205に指示する。アドレス計算制御
回路205は、アドレス計算に必要なレジスタの読み出
し、アドレス加算器212の制御等を行う。アドレス計
算に必要なレジスタは、レジスタファイル213よりバ
ス226,227を通してアドレス加算器212に送出
される。一方、マイクロ令令は1マシンサイクルごとに
CS206より読み出され、デコーダ209によりデコ
ードされ、ALU214,レジスタファイル213を制御する
のに使われる。224は、これらの制御信号である。AL
U214は、レジスタよりバス228,229を通して送ら
れるデータを演算し、再びレジスタファイル213に格
納する。メモリインタフェース200は、命令のフェッ
チ,オペランドのフェッチ等、メモリとのやり取りを行
う回路である。
【0006】次に、図2で示した計算機のパイプライン
動作を図3,図4,図5を用いて説明する。パイプライ
ンは6段である。IF(Instruction Fetch)ステージで
は、命令キャッシュ202より命令が読み出され、命令
レジスタ203にセットされる。D(Decode)ステージ
では、命令デコーダ204により、命令のデコードが行
われる。A(Address)ステージでは、アドレス加算器2
12により、オペランドのアドレス計算が行われる。O
F(Operand Fetch)ステージでは、メモリインタフェー
ス200を通して、MAR211で指されたアドレスのオペラ
ンドがフェッチされ、MDR210にセットされる。次に、E
X(Execution)ステージでは、レジスタファイル21
3、及び、MDR210より、データが読み出され、ALU214に
送られ、演算される。最後にW(Write)ステージでは、
演算結果がレジスタファイル213の中の1つのレジス
タにバス230を通して格納される。
【0007】さて、図3は、基本命令の1つである加算
命令ADDを連続して処理する様子を示したものであ
る。1マシンサイクルごとに、1命令処理されており、
ALU214,アドレス加算器212共に毎サイクル並列して
動いている。
【0008】図4は、条件付分岐命令BRACCの処理の
様子を示したものである。TEST命令でフラグが生成
される。図4は条件成立時のフローを示したものであ
る。フラグ生成がEXステージで行われるため、ジャン
プ先命令のフェッチまでに3サイクルの待サイクルが生
じる。パイプライン段数を増やせば増やす程、この待サ
イクルは増え、性能向上のネックとなる。
【0009】図5は、複雑な命令の実行フローを示した
ものである。命令1が複雑な命令である。複雑な命令と
はストリングコピーの様に多数のメモリアクセスがある
命令等で、通常EXステージを多数回延長することによ
り処理される。EXステージはマイクロプログラムによ
り制御される。マイクロプログラムは1マシンサイクル
に1回アクセスされる。即、複雑な命令は、マイクロプ
ログラムを複数回読み出すことにより処理する。この
時、EXステージには1つの命令しか入らないので、次
の命令(図5命令2)は待たされる。このような時に
は、ALU214は常に動いているが、アドレス加算器212
には遊びが生じてしまう。
【0010】次にRISC型計算機について説明する。
図6はRISC型計算機の一般的構成を説明する図であ
る。601はメモリインタフェース、602はプログラ
ムカウンタ、603は命令キャッシュ、604はシーケ
ンサ、605は命令レジスタ、606はデコーダ、60
7はレジスタファイル、608はALU、609はMD
R、610はMARである。
【0011】図7に基本命令の処理フローを示す。IF
(instruction Fetch)ステージでは、プログラムカウン
タ602で指される命令が、命令キャッシュより読み出
され、命令レジスタ605にセットされる。また、シー
ケンサ604は命令信号615,ALU608よりのフラグ信号6
16より、プログラムカウンタ602を制御する。R
(Read)ステージでは、レジスタファイル607より、
命令で示されたレジスタが、バス618,619を通し
て、ALU608に転送される。また、E(Execution)ステー
ジでは、ALU608により、演算が行われる。最後にW(Wri
te)ステージでは、演算された結果がレジスタファイル
607に、バス620を通して格納される。
【0012】RISC型計算機では、命令を基本的な命
令のみに限定している。演算はレジスタ−レジスタ間に
限られており、オペランドフェッチを伴う命令はロード
命令とストア命令のみである。複雑な命令は基本命令を
組み合わせることによって実現する。また、マイクロ命
令は使用されず、命令レジスタ605の内容が直接デコ
ーダ606でデコードされ、ALU608等を制御する。
【0013】図7はレジスタ−レジスタ間演算の処理フ
ローを示している。パイプラインは命令が簡単なため、
4段ですんでいる。
【0014】図8は条件分岐時の処理フローを示してい
る。CISC型計算機に比して、パイプライン段数が少
ないため、待サイクルが少ない。図8の例では、待サイ
クルは1サイクルのみである。ただし、必ずしも、レジ
スタ間演算ばかりではなく、メモリからのオペランドの
ロードや、メモリへのオペランドのストアが必要であ
る。CISC型計算機では、アドレス加算器があるた
め、メモリからのオペランドのロードが1マシンサイク
ルで実行可能だが、図6に示したRISC型計算機で
は、ロード命令は、アドレス計算命令とロード命令に分
解されるため、2マシンサイクルを要してしまう。
【0015】
【発明が解決しようとする課題】上記従来技術の問題点
について整理して述ベる。CISC型計算機では、アド
レス加算器があるためメモリ,レジスタ間命令を1マシ
ンサイクルで実行できるが、パイプライン段数が多いた
め、分岐時のオーバヘッドが大きい。また、複雑な命令
を実行する時にはEステージのみが動くので、アドレス
加算器に遊びが生じてしまうという問題点があった。
【0016】また、RISC型計算機では、パイプライ
ン段数が少ないため分岐時のオーバヘッドが小さい。と
ころが、アドレス加算器がなく、メモリ,レジスタ間演
算のためには、ロード命令,レジスタ間演算命令の2命
令を要するという問題点があった。
【0017】本発明の第1の目的は、複数の演算器を無
駄なく動作させて処理能力を高めることにある。
【0018】本発明の第2の目的は、分岐時のオーバヘ
ッドを小さくすることにある。
【0019】また本発明の第3の目的は、メモリ,レジ
スタ間演算等の複雑な命令の処理時間を短縮することに
ある。
【0020】
【課題を解決するための手段】上記目的を達成するため
に本発明は、演算器で実行する複数の命令と、この命令
を並列に処理するか否かを示す情報とを記憶させ、複数
の命令と情報とを出力するメモリを特徴としている。
【0021】これにより、メモリから出力される情報に
基づいて演算器に命令を与えることにより、複数の演算
器を無駄なく動作させて処理効率を高めることができ
る。
【0022】また、上記目的を達成するために、演算器
で実行する複数の命令と、この命令を並列に処理するか
否かを示す情報とを記憶させたメモリと、このメモリか
ら出力された情報に基づいて演算器へ出力する命令を決
定する制御部を有することを特徴としている。
【0023】これにより、複数の演算器を無駄なく動作
させて処理効率を高めることができる。
【0024】
【発明の実施の形態】以下、本発明の一実施例を説明す
る。
【0025】図9は、本実施例で述ベるプロセッサの命
令一覧である。基本命令は全てレジスタ間演算である。
分岐命令には、無条件分岐命令BRA,条件付分岐命令
BRACC(ccは分岐条件を示す。),サブルーチンへ
の分岐命令CALL,サブルーチンからの戻り命令RT
Nの4つがある。他に、ロード命令LOADとストア命
令STORがある。説明の都合上、データ型は32ビッ
ト整数のみとしたがこれに限定されるものではない。ま
たアドレスは32ビット(4バイト)毎にふられている
ものとした。簡単のために、上記の如く命令数を制限し
ているが、これは、本発明を制限するものではなく、1
マシンサイクルで処理できる内容であれば、さらに命令
を増やしてもよい。
【0026】図10に命令フオーマットを示す。命令は
全て32ビットの固定長である。基本命令中の下、S
1,S2,Dフィールドは、それぞれ、演算結果をフラ
グに反映するかどうかを指示するビット,第1ソースレ
ジスタを指示するフィールド,第2ソースレジスタを指
示するフィールド,ディスティネーションレジスタを指
示するフィールドである。
【0027】本実施例の構成を示したのが、図1であ
る。100はメモリインタフェース、101は32ビッ
トのプログラムカウンタ、102はシーケンサ、103
は命令ユニット、104は32ビットの第1命令レジス
タ、105は32ビットの第2命令レジスタ、106は
第1デコーダ、107は第2デコーダ、108はMD
R、109はMAR、110は第1演算ユニット、11
1はレジスタファイル、112は第2演算ユニットであ
る。
【0028】本実施例では、1マシンサイクルの間に2
つの命令が並列して読み出され実行される。本実施例で
のパイプライン処理の様子を示したのが、図11〜図1
4である。パイプラインはIF(Instruction Fetch),
R(Read),EX(Execution),W(Write)の4段であ
る。
【0029】再び、図1を用いて、本実施例の動作につ
いて説明する。
【0030】IFステージでは、プログラムカウンタに
よって指される2つの命令が読み出され、バス115,
117を通して、それぞれ第1命令レジスタ104,第
2命令レジスタ105にセットされる。PCが偶数の時
には、PC番地の命令が第1命令レジスタに、PC+1
番地の命令が第2命令レジスタに格納される。また、P
Cが奇数の時には、第1命令レジスタにはNOP命令
が、第1命令レジスタにはPC番地の命令がセットされ
る。シーケンサ102はプログラムカウンタを制御する
回路である。第1命令レジスタ,第2命令レジスタ共
に、分岐命令でない時には、プログラムカウンタには、
前プログラムカウンタ値+2の値をセットする。分岐時
には、分岐アドレスを計算してプログラムカウンタにセ
ットする。条件分岐時には、第1演算ユニットよりのフ
ラグ情報123、及び、第2演算ユニットよりのフラグ
情報124より、分岐の成否を判定する。また、命令ユ
ニットより送出される信号116は、第1命令,第2命
令間の各種の競合を示す競合信号である。競合信号がア
サートされた場合には、競合を避けるようにハードウエ
アで制御する。競合回避方法については、後に詳しく述
ベる。
【0031】次に基本命令処理時のRステージの動作に
ついて説明する。Rステージでは、第1命令レジスタ1
04の内容が第1デコーダ106でデコードされ、ま
た、第2命令レジスタ105の内容が第2デコーダ10
7でデコードされる。その結果、第1命令レジスタ10
4の第1ソースレジスタフィールドS1で指されるレジ
スタの内容がバス125を通して、第2ソースレジスタ
フィールドS2で指されるレジスタの内容がバス126
を通して、第1演算ユット110へ送出される。また、
第2命令レジスタの第1ソースレジスタS1で指される
レジスタの内容がバス127を通して、第2ソースレジ
スタフィールドS2で指されるレジスタの内容がバス1
28を通して、第2演算ユニット112に送出される。
【0032】次にEXステージの動作について説明す
る。
【0033】EXステージでは、第1命令レジスタのオ
ペコードの内容に従って、第1演算ユニット110にお
いて、バス125,126により送られてきたデータ間
の演算を行う。並列して、第2命令レジスタ105のオ
ペコードの内容に従って、第2演算ユニット112にお
いて、バス127,128により送られてきたデータ間
の演算を行う。
【0034】最後にWステージの動作を説明する。Wス
テージでは、第1演算ユニット110の演算結果が、バス
129を通して、第1命令レジスタのディスティネーシ
ョンフィールドDで指されるレジスタに格納される。ま
た、第2演算ユニット112の演算結果が、バス131
を通して、第2命令レジスタのディスティネーションフ
ィールドDで指されるレジスタに格納される。
【0035】図11は、基本命令を連続して処理するフ
ローを示したものである。1マシンサイクルに2命令ず
つ処理される。また、この例では、第1演算ユニットと
第2演算ユニットは常に並列して動作している。
【0036】図12は第1命令としてロード命令、また
は、ストア命令,第2命令として基本命令を連続して処
理するフローを示したものである。ロード命令実行時に
は、Rステージで、第1命令レジスタのS2フィールド
で指されるレジスタの内容が、バス126を通して、MA
R109に転送される。
【0037】次に、EXステージで、メモリインタフェ
ース100を通して、オペランドをフェッチする。最後
に、Wステージでフェッチされたオペランドが、バス1
29を通して、第1命令レジスタのディスティネーショ
ンフィールドDで指されるレジスタに格納される。EX
ステージ,1マシンサイクルでオペランドをフェッチす
ることは、メモリインタフェースに高速キャッシュを備
えていれば可能である。特に図1に示す、計算機全体が
半導体基板上に集積され、命令キャッシュ,データキャ
ッシュ共にオンチップ化されている場合などは容易であ
る。もちろん、キャッシュがミスヒットした場合には、
1マシンサイクルでオペランドフェッチを終了すること
ができない。このような時は、システムクロックを止め
て、EXステージを延長すればよい。これは、従来の計
算機でも行われていることである。
【0038】次にストア命令実行時には、Rステージに
おいて、第1命令レジスタの第1ソースレジスタフィー
ルドS1で指されるレジスタの内容がデータとして、バ
ス125を通してMDR108に転送される。また同時に、第
1命令レジスタの第2リースレジスタフィールドS2で
指されるレジスタの内容がアドレスとして、バス126
を通してMAR109に転送される。次にEXステージで、MA
R109で指される番地に、MDR108内のデータが書き込まれ
る。図12に示すように、ロード命令,ストア命令が第
1命令にある場合についても、1マシンサイクルに2命
令ずつ処理することができる。ロード命令,ストア命令
が第2命令に出現した時の処理については後に詳しく述
ベる。
【0039】図13は、第2命令として無条件ジャンプ
BRA命令実行時の処理フローを示したものである。B
RA命令が読み出されると、Rステージにおいてシーケ
ンサ102はディスプレースメントフィールドdとプロ
グラムカウンタとの加算を行い、プログラムカウンタ1
01にセットする。この間にBRA命令の次の番地の命
令とその次の番地の命令(図13命令1と命令2)が読
み出される。その次のサイクルに、ジャンプ先の2命令
が読み出される。本実施例では、命令1,2とも実行可
能なハードウエアとしている。即ち、ジャンプ命令処理
時も、待サイクルが発生しない。この手法は、遅延分岐
と呼ばれるもので、RISC型の従来計算機でも行われ
ているものである。ただし、従来のRISC型計算機で
は、ジャンプ命令のアドレス計算中に、1命令しか実行
できなかったが、本実施例では、ジャンプ命令のアドレ
ス計算中にも、2命令同時処理されるため、より処理能
力を高めることができる。CALL命令,RTN命令の
処理フローも同様である。コンパイラにより、分岐命令
のアドレス計算中にできるかぎり有効な命令を実行でき
るようにコード生成するが、何もすることがない時には
図13命令1,2をNOP命令としておく。この時に
は、実質的に1マシンサイクルの待ちが生ずる。しかし
ながら、パイプライン段数が浅いので、従来例で述べた
CISC型の計算機に比して、分岐時のオーバヘッドを
小さくできるという利点がある。
【0040】図14は条件分岐命令BRACC の処理フ
ローを示したものである。ADD1Fと示した命令で、
フラグのセットが行われ、その結果に従い分岐の成否が
決められる。この時も、図13を用いて説明した無条件
分岐命令処理時と同様にBRACC命令のおかれている番地
の次の命令、図14命令1と、その次の命令、図14命
令2が読み出され処理される。ただし、この2命令の処
理フロー中Wステージにおいては、BRACC命令の分岐
条件不成立時のみ演算結果のレジスタファイルへの書き
込みが行われる。即ち、分岐命令成立時には、演算結果
の書き込みが抑制される。
【0041】以上、図11〜図14を用いて説明したよ
うに、本実施例では、1マシンサイクルに2命令ずつ処
理するので、その処理能力が最大2倍に向上されるとい
う利点がある。また、命令が簡単で、ワイヤドロジック
による制御でパイプライン段数が4段と少ないため、分
岐時のオーバヘッドを最大1マシンサイクルと小さくす
ることができる。さらにコンパイラによる遅延分岐の最
適化が成功すれば、上記オーバヘッドをなくすことがで
きる。
【0042】また、複雑な処理も、簡単な命令の組み合
わせで実行するため、従来のCISC型計算機におけるパイ
プライン並列によるアドレス加算器とALUの並列動作
に比して、図1第1演算ユニット110と第2演算ユニ
ット112の並列動作をより遊びなく行うことができる
という利点がある。この点について、もう少し説明す
る。メモリからレジスタへのロードを繰り返す場合、従
来CISC型計算機では図15に示すように、1マシン
サイクルに1つずつデータをロードすることができる。
これに対して本実施例においては、1つのデータのロー
ドに、アドレス計算用ADD命令と、そのアドレスを用
いたLOAD命令の2命令かかるが、図16に示すよう
に1マシンサイクルに2命令ずつ実行できるので、やは
り、1マシンサイクルに1つずつデータをロードでき
る。演算器の並列動作という意味では、両者とも2つの
演算器が同時に並列して動いており、この例では同じで
ある。
【0043】さらに複雑な処理について比較したのが、
図17と図18である。従来のCISC型計算機で6サイク
ルのEXステージでの処理を要していた図17に示す命
令1は、図18に示すように、本実施例では3サイクル
で終了することができる。これは従来のCISC型計算
機では、命令1の実行中、アドレス加算器の動作がとま
ってしまうが、本実施例では、2つの演算器が毎サイク
ル並列して動くことが可能となるためである。
【0044】図1第1演算ユニット110の中を説明し
たのが図19である。1500はALU、1501はバ
レルシフタ、1502はフラグ生成回路である。バス12
5,126より転送されてきたデータは加減算、論理演
算の時にはALU1500 で、SFT命令の時にはバレルシフ
タで処理される。処理結果はバス130に送出される。
演算結果によりフラグがフラグ生成回路1502により
生成され、信号123として送出される。
【0045】図1第2演算ユニット112の中を一例と
して説明したのが図20である。
【0046】1600はALU、1601はフラグ生成
回路である。第1演算ユニットとの相違点はバレルシフ
タがない点である。これは、SFT命令は算術論理演算
命令に比して出現ひん度が低いため、省略したのであ
る。こうすることにより、1マシンサイクルに、2つの
SFT命令を実行することができなくなるが、ハードウ
エア量を削減できるという利点がある。2つのSFT命
令が出現した時の制御方法については後述する。
【0047】図21は図1レジスタファイル111の中
を示したものである。1708はレジスタ、1700〜
1706,1709はバススイッチである。各レジスタ
は、4つのリードポード,2つの書込みポートを持つ。
バススイッチは、前命令のディスティネーションフィー
ルドで指されたレジスタを、次命令で直ちに使う時に、
レジスタファイルをバイパスするために用いられる。例
えば、バススイッチ1702は、バス129から127
へのバイパススイッチであり、第1命令のディスティネ
ーションレジスタフィールドDと第2命令の第1ソース
レジスタフィールドS1が一致した時に開けるようにす
ればよい。
【0048】次に第1命令と第2命令の競合解消方法に
ついて図22から図29を用いて説明する。第1命令と
第2命令の組み合せによっては、両命令を同時に実行で
きないことがある。これを競合と呼ぶことにする。以下
の場合に競合がおこる。
【0049】1.ロード,ストア命令が第2命令として
出現した場合。
【0050】2.SFT命令が第2命令として出現した
場合。
【0051】3.第1命令のディスティネーションレジ
スタフィールドDで指されるレジスタと、第2命令の第
1ソースレジスタフィールドS1で指されるレジスタ、
または、第2命令の第2ソースレジスタフィールドS2
で指されるレジスタが一致する時。
【0052】上記、競合の内、1と2は、第2演算ユニ
ットで、ロード,ストア命令、及び、SFT命令が処理
できないことにより生ずる本実施例特有の問題である。
図1において、バス127に第2MDR、バス128に
第2MARを追加し、メモリインタフェースにて、1マ
シンサイクルに2つのデータをアクセスできるようにす
れば、第1の競合条件は解消できる。また、第2演算ユ
ニットにもバレルシフタを設ければ、第2の競合条件も
解消できる。本実施例では、ハードウエア削減のため、
上記競合条件が生じたのである。この様な場合も、後に
述べるように、容易に競合を解消できるので、必要性能
と、許されるハードウエア量に応じて、同時処理大の命
令に対応するハードウエアのみ2重化することは、実質
的に性能を落とさずに、ハードウエアを削減できるとい
う利点がある。
【0053】図22を用いてSFT命令が第2命令とし
て出現した時の制御方法について述べる。図22上部で
は、第2命令となるアドレス“3”にSFT命令がある
場合である。図22下部は、実行時の第1命令レジス
タ,第2命令レジスタに入る命令を示している。プログ
ラムカウンタ2の時、第2命令がSFT命令であること
をハードウエアで検出し、第1命令レジスタには2番地
の命令を、第2命令レジスタにはNOP命令をセットす
る。さらに、次のマシンサイクルでは、プログラムカウ
ンタを“1”だけインクリメントし、3番地をセットす
る。そして、第1命令レジスタには、3番地のSFT命
令を第2命令レジスタにはNOP命令をセットする。こ
のように2マシンサイクルに分けて処理することによ
り、正しく処理することができる。もちろん、コンパイ
ラによる最適化を行い、できるだけ第2命令にSFT命
令が出現しないようにすることが好ましい。
【0054】別の競合解消方式について図23を用いて
述べる。即ち、第2命令となる奇数アドレスには、SF
T命令をおくことを禁止し、他に実行する命令のない時
にはNOP命令を入れておく。こうすれば、プログラム
サイズは若干増加するが、競合解消のためのハードウエ
アを省略できるよい利点がある。
【0055】図24は、ロード命令が第2命令として出
現した時の処理方法を示している。3番地にロード命令
がある。処理方法は、SFT命令の時と同じである。
【0056】図25は、レジスタ競合時の処理方式を示
している。2番地の命令が8番レジスタに書き込んでお
り、同じ8番レジスタを3番地の命令が読み出してい
る。この場合も、SFT命令同様、2マシンサイクルに
分けて実行する。
【0057】ロード,ストア命令,レジスタ競合につい
ても、奇数番地におくことを禁止して、競合を解消して
もよい。効果はSFT命令のところで述ベたのと同じで
ある。
【0058】次に、図22〜図25で説明した処理方式
を実現するハードウエア方式について説明する。図26
はこのための、図1命令ユニット103の構成を示した
図である。2300は競合検出回路、2301はキャッ
シュメモリ、2302は第1マスク回路、2303は第
2マスク回路である。バス113からは、通常プログラ
ムカウンタの値が入力され、プログラムカウンタで指さ
れる命令とその次の番地の命令が、バス2305,バス
2306に送出される。キャッシュミスヒット時にはメ
モリインタフェース100により命令のフェッチが行わ
れ、バス113を通して、キャッシュ2301に書き込
まれる。この時競合検出回路が第1命令と第2命令の間
の競合をチェックし、競合があれば、競合信号2304
をアサートする。キャッシュには2命令に1ビットずつ
両命令の競合状態を示すビットが設けられており、キャ
ッシュミス時に競合信号2304を格納する。第1マス
ク回路は、入力として第1命令,第2命令,競合ビッ
ト,プログラムカウンタの最下位ビットを受け、図27
に示すように、第1命令レジスタ104への信号115を
制御する。また、第2マスク回路は、入力として第2命
令,競合ビット,プログラムカウンタの最下位ビットを
受け、やはり、図27に示すように、第2命令レジスタ
105への信号117を送出する。
【0059】図27に示すように、競合ビット,PC最
下位ともに0の時には第1命令レジスタに第1命令が、
第2命令レジスタに第2命令が送出される。これは通常
ケースである。競合ビットが1、PC最下位が0の時に
は、第1命令レジスタに第1命令が、第2命令レジスタ
にNOP命令が送出される。これは、競合命令処理時の
第1マシンサイクル時の処理である。次に、競合ビット
が1でPC最下位も1の時には、第1命令レジスタに第
2命令を、第2命令レジスタにNOPを送出する。これ
は、競合命令処理時の第2マシンサイクル時の処理であ
る。上記処理により、図22,図23,図25で説明し
た競合命令の処理フローが実現される。分岐命令が奇数
番地に分岐した時には、図27に示すように、競合ビッ
トの値によらず、第2命令のみ実効されるので正しい処
理が可能である。キャッシュ読出しは毎サイクル行われ
るが、キャッシュへの書き込みは、キャッシュがミスヒ
ットした時のみ、しかも、数マシンサイクルかけて行わ
れる。従って、競合検出回路を、キャッシュ書込み時に
動作させ、キャッシュに競合ビットを保持しておくこと
は、マシンサイクルを短縮する上で有効である。
【0060】図28は、第26命令キャッシュ2301
の構成を示したものである。2500はディレクトリ、25
01はデータメモリ、2502はセレクタ、2503は
アドレスレジスタ、2504は書込みレジスタ、250
5はコンパレータ、2506はキャッシュ制御回路であ
る。図28のキャッシュは通常のキャッシュの構成とほ
ぼ同じであるが、データメモリ2501に、2命令分8
バイトに1つずつ、競合ビット保持用のフィールドがあ
ること、キャッシュ読出し時に、PC最下位を無視し、
常に第1命令2305と第2命令2306と競合信号1
16を送出する点が異なっている。
【0061】図28では、データメモリ8K語分,ブロ
ックサイズ32バイトとしてある。プログラムカウンタ
より送出された信号113はアドレスレジスタ2503
にセットされる。アドレスの3〜12ビットで、ディレ
クトリ2500とデータメモリ2501が引かれる。コ
ンパレータ2505は、ディレクトリ出力とアドレスレ
ジスタの13〜32ビットを比較する。不一致であれ
ば、信号2508により、キャッシュ制御回路2506
にそれを知らせる。キャッシュ制御回路2506は、主
メモリよりミスヒットした命令を含むブロックを読み出
し、データメモリ2501にセットする。一方、セレク
タ2502は、アドレスレジスタの第1,2ビットを用
いて、ブロックの中から必要な2命令を選択する。第1
命令と第2命令は必ず同一ブロック内にあり、片方のみ
ミスヒットすることはない。
【0062】図29は、図1命令ユニット103の他の
構成例を示したものである。2600はキャッシュメモリ、
2601は競合検出回路、2302は第1マスク回路、
2303は第2マスク回路である。図26の構成との違い
は、キャッシュに競合ビット保持のフィールドがなく、
キャッシュ出力の第1命令2601と第2命令2602
を、毎サイクル競合検出回路2601が監視しているこ
とである。第1マスク回路2302,第2マスク回路2
303の動作は、図26のものと同じである。本実施例
によれば、キャッシュ読み出し後に毎サイクル競合検出
回路が働くので、マシンサイクルが伸びるという欠点が
あるが、キャッシュ内の競合ビットフィールドがなくて
よいという利点がある。
【0063】さらに、本実施例では、1マシンサイクル
に2命令ずつ処理されることを生かして、図30に示す
ように特殊な場合に条件付分岐命令をさらに高速化する
ことができる。即ち、条件付分岐命令において、条件成
立時の分岐先が次の次の命令(図30命令2)である
時、条件の成否にかかわらず、命令2,命令3を実行
し、条件の成否により、命令1のWステージを抑止する
かどうかを制御することにより、条件成立時の待サイク
ルをなくすことができる。ただし、この場合、条件分岐
命令は必ず第1命令側におくこととする。通常の条件付
分岐では、図14を用いて説明したように、分岐成立時
には、1サイクルの待サイクルが生じる。言葉を換えて
説明すれば、本発明では1マシンサイクルに2命令ずつ
処理するので、2命令単位での命令処理フローに影響を
与えずに、第1命令側の条件付分岐命令の条件の成否に
より、第2命令側の命令の実行を制御することができ
る。
【0064】さらに、本実施例では、1マシンサイクル
に2命令ずつ処理されることを生かして、“アトミッ
ク”な処理を容易に実現することができる。アトミック
処理とは、必ず一続きに行われる処理のことで、プロセ
ス間の同期等に使用される。図31(a)は従来の計算
機の場合であり、(b)は本実施例について説明してい
る。(a)では各命令の間に割込みが入る可能性がある
が、(b)では、命令1と命令2の間、及び、命令3と
命令4の間には決して割込みが入らない。このため、
(a)では、任意の命令のすき間に、他のプロセスを処
理するプログラムが入る可能性があるが、(b)では、
命令1と命令2,命令3と命令4は必ず一続きに実行さ
れることが保証されているという利点がある。
【0065】図32は、本発明の他の実施例の構成を示
した図である。本実施例では、1マシンサイクルに4命
令ずつ処理することができる。3200はメモリインタ
フェース、3201はプログラムカウンタ、3202は
シーケンサ、3203は命令ユニット、3204〜32
07は、第1〜4命令レジスタ、3208〜3211
は、第1〜4デコーダ、3212はMDR、3213は
MAR、3214,3215,3217,3218は、第1
〜4演算ユニット,3216はレジスタファイルであ
る。各演算ユニットはレジスタファイル3216を共有
している。各部の動作説明は、図1で示した実施例と同
じなので省略する。
【0066】同様に、さらに並列度をあげることは可能
であるが、数命令に1つの割合で分岐命令が存在するよ
うなプログラムもあり、そのようなプログラムでは、極
端に並列度をあげても、あまり効果が得られない。2〜
4命令同時処理程度が至当である。分岐が少なく、競合
も少ないプログラムでは、さらに並列度をあげれば、効
果的に性能が高まる。また、並列度を2n(nは自然数)
とすることにより、命令ユニットの制御を容易にするこ
とができる。
【0067】さらに、本発明の他実施例について述ベ
る。これまでの実施例では、常に複数命令同時処理を行
っていた。通常は1マシンサイクルに1命令ずつ処理
し、部分的に複数命令同時処理を行うことによっても利
益を得ることができる。図33に3つの例を示す。図3
3(a)では、第1命令は主メモリ、第2命令はアドレ
ス空間の先頭部分のみにあり、かつ、ROM化されてい
る。(b)では、第1命令,第2命令ともに、アドレス
空間の先頭部分でROM化されている。他の部分は第1
命令のみで、主メモリにある。(c)では、(a)とほ
ぼ同じであるが、第2命令のROM化部分がアドレス空
間の中間にある。計算機全体の構成は図1と同じであ
り、ただ命令ユニット103を変更すればよい。ROM
部分には、使用ひん度が高く、並列度の高いプログラム
を書いておき、主ルーチンよりサブルーチンコールによ
って利用する。ROM部分は小容量でよいので、コンパ
イラがなくても、アセンブラにより最適なプログラムを
作成することができる。
【0068】図34は、図33(a)を実現するための、
図1命令ユニット103の構成を示したものである。2
900はキャッシュ、2901は4K語のROM、29
03はマスク回路、2902はマスク回路制御回路であ
る。マスク回路制御回路はアドレス113を常に監視し
ておりアドレスの上位12〜31ビットがオールゼロの
時のみ、有効信号2904をアサートする。マスク回路
2903は、有効信号2904がアサートされた時の
み、ROM出力2905を第2命令レジスタへの出力1
17として送出する。他の時はNOP命令を送出する。
【0069】図33(c)を実現するためには、図34
マスク回路制御回路2902を図35のようにすればよ
い。3000はコンパレータ、3001はベースレジス
タである。ベースレジスタの上位12〜31ビットと、
アドレス113の上位12〜31ビットが一致した時
に、コンパレータ3000は、有効信号2904をアサ
ートする。
【0070】図33(b)を実現するためには、図1命
令ユニット103を図36のように構成すればよい。2
901,2902,2903の機能は図29で説明した
同一番号のものと同じである。3100はキャッシュ、
3101は4K語のROM、3102はセレクタ制御回
路、3107はセレクタである。セレクタ制御回路31
02は、アドレス113の上位12〜31ビットを常に
監視し、それらがオールゼロの時のみROM選択信号3
105をアサートする。セレクタ3107は、ROM選
択信号3105がアサートされた時のみROM出力信号
3104を、第1命令レジスタへの出力115として送
出する。他の時には、キャッシュ出力3103を送出す
る。
【0071】図33〜図36を用いて述べたように、部
分的に複数命令同時処理を行い、その部分をROM化す
ることによりハードウエアを削減できる。また、ROM
部分のみであればアセンブラによって最適設計できるの
で、複数命令同時処理を意識したコンパイラを開発しな
くてもよいという利点がある。さらに、ROM部分を書
き換えることにより、アプリケーションごとに、アプリ
ケーションに適した高速化が実現できる。
【0072】
【発明の効果】本発明によれば、複雑な命令は基本命令
に分解され、かつ、1マシンサイクルで複数の命令が同
時に読み出され、実行されるために、複数の演算器が同
時に動き、処理能力を高めることができる。また、命令
の機能が簡単で、パイプライン段数を短くできるので、
分岐時のオーバヘッドを小さくできる。
【0073】また、複数演算器が並列して動くため、複
雑な処理の処理時間を短縮することができる。
【図面の簡単な説明】
【図1】本発明の一実施例の全体ブロックを示した図で
ある。
【図2】従来例の全体ブロックを示した図である。
【図3】図2の動作を説明するタイミングチャートを示
した図である。
【図4】図2の動作を説明するタイミングチャートを示
した図である。
【図5】図2の動作を説明するタイミングチャートを示
した図である。
【図6】もう1つの従来例の全体ブロックを示した図で
ある。
【図7】図6の動作を説明するタイミングチャートを示
した図である。
【図8】図6の動作を説明するタイミングチャートを示
した図である。
【図9】本発明の一実施例の命令一覧を示した図であ
る。
【図10】本発明の一実施例にかかる命令フオーマット
を示した図である。
【図11】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図12】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図13】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図14】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図15】従来例の動作を説明するタイミングチャート
を示した図である。
【図16】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図17】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図18】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図19】図1の第1演算ユニット110の構成を示し
た図である。
【図20】図1の第2演算ユニット112の構成を示し
た図である。
【図21】図1のレジスタファイル111の構成を示し
た図である。
【図22】図1に示した本発明の一実施例の動作を説明
するための図である。
【図23】図1に示した本発明の一実施例の動作を説明
するための図である。
【図24】図1に示した本発明の一実施例の動作を説明
するための図である。
【図25】図1に示した本発明の一実施例の動作を説明
するための図である。
【図26】図1の命令ユニット103の構成を示した図
である。
【図27】その動作を説明するための図である。
【図28】図26のキャッシュ2301の構成を示した
図である。
【図29】図1の命令ユニット103の他の構成を示し
た図である。
【図30】本発明の一実施例の動作を説明するタイミン
グチャートを示した図である。
【図31】命令構成を示した図である。
【図32】本発明の他の実施例の全体ブロックを示した
図である。
【図33】部分的に複数命令同時処理を行う本発明の他
の実施例を説明するための図である。
【図34】部分的に複数命令同時処理を行う本発明の他
の実施例を説明するための図である。
【図35】部分的に複数命令同時処理を行う本発明の他
の実施例を説明するための図である。
【図36】部分的に複数命令同時処理を行う本発明の他
の実施例を説明するための図である。
【符号の説明】
103…命令ユニット、104…第1命令レジスタ、1
05…第2命令レジスタ、110…第1演算ユニット、
111…レジスタファイル、112…第2演算ユニッ
ト。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭63−73332(JP,A) 特開 平2−127731(JP,A) 特開 昭62−70938(JP,A) 特開 平10−187444(JP,A) 特開 平2−130634(JP,A) 特開 昭56−168272(JP,A) 特開 昭61−245239(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】キャッシュに記憶される複数の命令と、R
    OMに予め記憶される少なくとも一部の命令を複数の演
    算器にて処理する情報処理方法において、 前記キャッシュから1サイクルに1命令ずつ読み出して
    前記演算器にて1つずつ処理する第1の処理手順と、 複数の前記ROMから1サイクルに複数の命令を読み出
    して前記複数の演算器で並列に処理する第2の処理手順
    とを有する情報処理方法。
  2. 【請求項2】複数の命令を記憶する主メモリと、 前記複数の命令の一部の命令を記憶するキャッシュと、 前記複数の命令とは異なる少なくとも一部の命令が予め
    記憶された複数のROMと、 前記複数の命令及び前記一部の命令を実行する複数の演
    算器とを有し、 前記複数のROMから命令を読み出す場合、1サイクル
    に複数の命令を前記複数の演算器で並列に処理し、 前記キャッシュから命令を読み出す場合、1サイクルに
    1つの命令を1つずつ前記演算器で処理する情報処理装
    置。
  3. 【請求項3】請求項2記載の情報処理装置において、 少なくとも前記キャッシュと、前記複数のROMと、前
    記複数の演算器は、半導体基板上に集積されている情報
    処理装置。
  4. 【請求項4】請求項2または3記載の情報処理装置にお
    いて、 前記複数のROMには、使用頻度が高く、並列度の高い
    命令が記憶される情報処理装置。
  5. 【請求項5】請求項2記載の情報処理装置において、 前記複数のROMから命令を読み出す場合の処理と前記
    キャッシュから命令を 読み出す場合の処理のどちらを実
    行するかを制御する制御回路を有する情報処理装置。
  6. 【請求項6】入力された複数の命令を記憶するキャッシ
    ュと、 前記複数の命令とは異なる命令が予め記憶された複数の
    ROMと、 前記複数の命令及び前記複数の命令とは異なる命令を実
    行する複数の演算器とを有し、 前記複数のROMから命令を読み出す場合、1サイクル
    に複数の命令を前記複数の演算器で並列に処理し、 前記キャッシュから命令を読み出す場合、1サイクルに
    1つの命令を1つずつ前記演算器で処理する半導体装
    置。
JP00881899A 1999-01-18 1999-01-18 記憶装置及び情報処理装置 Expired - Fee Related JP3147884B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP00881899A JP3147884B2 (ja) 1999-01-18 1999-01-18 記憶装置及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00881899A JP3147884B2 (ja) 1999-01-18 1999-01-18 記憶装置及び情報処理装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP09352657A Division JP3102399B2 (ja) 1997-12-22 1997-12-22 データ処理装置及び方法

Publications (2)

Publication Number Publication Date
JPH11272463A JPH11272463A (ja) 1999-10-08
JP3147884B2 true JP3147884B2 (ja) 2001-03-19

Family

ID=11703402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00881899A Expired - Fee Related JP3147884B2 (ja) 1999-01-18 1999-01-18 記憶装置及び情報処理装置

Country Status (1)

Country Link
JP (1) JP3147884B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236995B2 (en) * 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations

Also Published As

Publication number Publication date
JPH11272463A (ja) 1999-10-08

Similar Documents

Publication Publication Date Title
JP2810068B2 (ja) プロセッサシステム、コンピュータシステム及び命令処理方法
JP2550213B2 (ja) 並列処理装置および並列処理方法
JP2834837B2 (ja) プログラマブルコントローラ
US5509137A (en) Store processing method in a pipelined cache memory
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
US5041968A (en) Reduced instruction set computer (RISC) type microprocessor executing instruction functions indicating data location for arithmetic operations and result location
JPH03158928A (ja) データ処理装置
JPH07120284B2 (ja) データ処理装置
JP3345787B2 (ja) データ処理装置
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
US5983344A (en) Combining ALU and memory storage micro instructions by using an address latch to maintain an address calculated by a first micro instruction
JP3147884B2 (ja) 記憶装置及び情報処理装置
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
JP3102399B2 (ja) データ処理装置及び方法
JP2636821B2 (ja) 並列処理装置
JP2785820B2 (ja) 並列処理装置
JP2927281B2 (ja) 並列処理装置
JP3019818B2 (ja) データ処理方法
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP2696578B2 (ja) データ処理装置
JPH0769805B2 (ja) データ処理装置
JPS58129553A (ja) パイプライン計算機
JPH04264954A (ja) 複合命令計算機

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees