[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JPH10187444A - データ処理装置及び方法 - Google Patents

データ処理装置及び方法

Info

Publication number
JPH10187444A
JPH10187444A JP9352657A JP35265797A JPH10187444A JP H10187444 A JPH10187444 A JP H10187444A JP 9352657 A JP9352657 A JP 9352657A JP 35265797 A JP35265797 A JP 35265797A JP H10187444 A JPH10187444 A JP H10187444A
Authority
JP
Japan
Prior art keywords
instruction
register
arithmetic
instructions
data 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.)
Granted
Application number
JP9352657A
Other languages
English (en)
Other versions
JP3102399B2 (ja
Inventor
Takashi Hotta
多加志 堀田
Shigeya Tanaka
成弥 田中
Hideo Maejima
英雄 前島
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 JP09352657A priority Critical patent/JP3102399B2/ja
Publication of JPH10187444A publication Critical patent/JPH10187444A/ja
Application granted granted Critical
Publication of JP3102399B2 publication Critical patent/JP3102399B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】メモリ,レジスタ間演算等の複雑な命令の処理
時間を短縮する。 【解決手段】複数の命令を記憶する命令ユニットと、命
令ユニットに格納された命令をデコードするデコーダ
と、データを格納するレジスタファイルと、レジスタフ
ァイルと接続され、デコードされた命令に基づいて演算
を実行する複数の演算器とを有するデータ処理装置にお
いて、複数のレジスタと、各レジスタと接続され各演算
器にデータを送るための第1の信号線と、レジスタと接
続され各演算器からのデータを受けるための第2の信号
線と、第1の信号群と第2の信号線群とを接続するため
のスイッチとからレジスタファイルを構成する。

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は命令デコーダ、
205はアドレス計算制御回路、206はマイクロ命令
を格納しておくControl Storage(CS)、207はマイ
クロ命令カウンタ、208はマイクロ命令レジスタ、2
09はデコーダ、210はメモリとデータをやり取りする
レジスタMDR (Memory Dtata Register)、211はメ
モリ上のオペランドアドレスを示すレジスタMAR(Mem
ory AddressRegister) 、212はアドレス加算器、2
13はレジスタファイル、214はALU (Arithmetic
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を制御する。
【0012】R(Read)ステージでは、レジスタファイル
607より、命令で示されたレジスタが、バス618,
619を通して、ALU608に転送される。また、E(Execu
tion)ステージでは、ALU608により、演算が行われる。
最後にW(Write)ステージでは、演算された結果がレジ
スタファイル607に、バス620を通して格納され
る。
【0013】RISC型計算機では、命令を基本的な命
令のみに限定している。演算はレジスタ−レジスタ間に
限られており、オペランドフェッチを伴う命令はロード
命令とストア命令のみである。複雑な命令は基本命令を
組み合わせることによって実現する。また、マイクロ命
令は使用されず、命令レジスタ605の内容が直接デコ
ーダ606でデコードされ、ALU608等を制御する。
【0014】図7はレジスタ−レジスタ間演算の処理フ
ローを示している。パイプラインは命令が簡単なため、
4段ですんでいる。
【0015】図8は条件分岐時の処理フローを示してい
る。CISC型計算機に比して、パイプライン段数が少
ないため、待サイクルが少ない。図8の例では、待サイ
クルは1サイクルのみである。ただし、必ずしも、レジ
スタ間演算ばかりではなく、メモリからのオペランドの
ロードや、メモリへのオペランドのストアが必要であ
る。CISC型計算機では、アドレス加算器があるた
め、メモリからのオペランドのロードが1マシンサイク
ルで実行可能だが、図6に示したRISC型計算機で
は、ロード命令は、アドレス計算命令とロード命令に分
解されるため、2マシンサイクルを要してしまう。
【0016】
【発明が解決しようとする課題】上記従来技術の問題点
について整理して述ベる。CISC型計算機では、アド
レス加算器があるためメモリ,レジスタ間命令を1マシ
ンサイクルで実行できるが、パイプライン段数が多いた
め、分岐時のオーバヘッドが大きい。また、複雑な命令
を実行する時にはEステージのみが動くので、アドレス
加算器に遊びが生じてしまうという問題点があった。
【0017】また、RISC型計算機では、パイプライ
ン段数が少ないため分岐時のオーバヘッドが小さい。と
ころが、アドレス加算器がなく、メモリ,レジスタ間演
算のためには、ロード命令,レジスタ間演算命令の2命
令を要するという問題点があった。
【0018】本発明の第1の目的は、複数の演算器を無
駄なく動作させて処理能力を高めることにある。
【0019】本発明の第2の目的は、分岐時のオーバヘ
ッドを小さくすることにある。
【0020】また本発明の第3の目的は、メモリ,レジ
スタ間演算等の複雑な命令の処理時間を短縮することに
ある。
【0021】
【課題を解決するための手段】上記目的を達成するため
に本発明は、複数の命令を記憶する命令ユニットと、命
令ユニットに格納された命令をデコードするデコード手
段と、データを格納するレジスタファイルと、レジスタ
ファイルと接続され、デコードされた命令に基づいて演
算を実行する複数の演算器とを有するデータ処理装置に
おいて、レジスタファイルは複数のレジスタと、各レジ
スタと接続され各演算器にデータを送るための第1の信
号線と、レジスタと接続され各演算器からのデータを受
けるための第2の信号線と、第1の信号群と上記第2の
信号線群とを接続するためのスイッチとから構成されて
いることを特徴とする。
【0022】
【発明の実施の形態】以下、本発明の一実施例を説明す
る。
【0023】図9は、本実施例で述ベるプロセツサの命
令一覧である。基本命令は全てレジスタ間演算である。
分岐命令には、無条件分岐命令BRA,条件付分岐命令
BRACC(ccは分岐条件を示す。)、サブルーチンへ
の分岐命令CALL、サブルーチンからの戻り命令RT
Nの4つがある。他に、ロード命令LOAD、とストア
命令STORがある。説明の都合上、データ型は32ビ
ット整数のみとしたがこれに限定されるものではない。
またアドレスは32ビット(4バイト)毎にふられてい
るものとした。簡単のために、上記の如く命令数を制限
しているが、これは、本発明を制限するものではなく、
1マシンサイクルで処理できる内容であれば、さらに命
令を増やしてもよい。
【0024】図10に命令フオーマットを示す。命令は
全て32ビットの固定長である。基本命令中の下、S
1,S2,Dフィールドは、それぞれ、演算結果をフラ
グに反映するかどうかを指示するビット,第1ソースレ
ジスタを指示するフィールド,第2ソースレジスタを指
示するフィールド,ディスティネーションレジスタを指
示するフィールドである。
【0025】本実施例の構成を示したのが、図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演算ユニットであ
る。
【0026】本実施例では、1マシンサイクルの間に2
つの命令が並列して読み出され実行される。本実施例で
のパイプライン処理の様子を示したのが、図11〜図1
4である。パイプラインはIF(Instruction Fetch),
R(Read),EX(Execution),W(Write)の4段であ
る。
【0027】再び、図1を用いて、本実施例の動作につ
いて説明する。
【0028】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命
令間の各種の競合を示す競合信号である。競合信号がア
サートされた場合には、競合を避けるようにハードウエ
アで制御する。競合回避方法については、後に詳しく述
ベる。
【0029】次に基本命令処理時の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に送出される。
【0030】次にEXステージの動作について説明す
る。
【0031】EXステージでは、第1命令レジスタのオ
ペコードの内容に従って、第1演算ユニット110にお
いて、バス125,126により送られてきたデータ間
の演算を行う。並列して、第2命令レジスタ105のオ
ペコードの内容に従って、第2演算ユニット112にお
いて、バス127,128により送られてきたデータ間
の演算を行う。
【0032】最後にWステージの動作を説明する。Wス
テージでは、第1演算ユニット110の演算結果が、バス
129を通して、第1命令レジスタのディスティネーシ
ョンフィールドDで指されるレジスタに格納される。ま
た、第2演算ユニット112の演算結果が、バス131
を通して、第2命令レジスタのディスティネーションフ
ィールドDで指されるレジスタに格納される。
【0033】図11は、基本命令を連続して処理するフ
ローを示したものである。1マシンサイクルに2命令ず
つ処理される。また、この例では、第1演算ユニットと
第2演算ユニットは常に並列して動作している。
【0034】図12は第1命令としてロード命令、また
は、ストア命令,第2命令として基本命令を連続して処
理するフローを示したものである。ロード命令実行時に
は、Rステージで、第1命令レジスタのS2フィールド
で指されるレジスタの内容が、バス126を通して、MA
R109に転送される。
【0035】次に、EXステージで、メモリインタフェ
ース100を通して、オペランドをフェッチする。最後
に、Wステージでフェッチされたオペランドが、バス1
29を通して、第1命令レジスタのディスティネーショ
ンフィールドDで指されるレジスタに格納される。EX
ステージ,1マシンサイクルでオペランドをフェッチす
ることは、メモリインタフェースに高速キャッシュを備
えていれば、可能である。特に、図1に示す、計算機全
体が半導体基板上に集積され、命令キャッシュ,データ
キャッシュ共にオンチップ化されている場合などは容易
である。もちろん、キャッシュがミスヒットした場合に
は、1マシンサイクルでオペランドフェッチを終了する
ことができない。このような時は、システムクロックを
止めて、EXステージを延長すればよい。これは、従来
の計算機でも行われていることである。
【0036】次にストア命令実行時には、Rステージに
おいて、第1命令レジスタの第1ソースレジスタフィー
ルドS1で指されるレジスタの内容がデータとして、バ
ス125を通してMDR108に転送される。また同時に、第
1命令レジスタの第2リースレジスタフィールドS2で
指されるレジスタの内容がアドレスとして、バス126
を通してMAR109に転送される。次にEXステージで、MA
R109で指される番地に、MDR108内のデータが書き込まれ
る。図12に示すように、ロード命令,ストア命令が第
1命令にある場合についても、1マシンサイクルに2命
令ずつ処理することができる。ロード命令,ストア命令
が第2命令に出現した時の処理については後に詳しく述
ベる。
【0037】図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型の計算機に比して、分岐時のオーバヘッド
を小さくできるという利点がある。
【0038】図14は条件分岐命令BRACCの処理フロ
ーを示したものである。ADD1Fと示した命令で、フ
ラグのセットが行われ、その結果に従い分岐の成否が決
められる。この時も、図13を用いて説明した無条件分
岐命令処理時と同様にBRACC命令のおかれている番地の
次の命令、図14命令1と、その次の命令、図142が
読み出され処理される。ただし、この2命令の処理フロ
ー中Wステージにおいては、BRACC命令の分岐条件不
成立時のみ演算結果のレジスタファイルへの書き込みが
行われる。即ち、分岐命令成立時には、演算結果の書き
込みが抑制される。
【0039】以上、図11〜図14を用いて説明したよ
うに、本実施例では、1マシンサイクルに2命令ずつ処
理するので、その処理能力が最大2倍に向上されるとい
う利点がある。また、命令が簡単で、ワイヤドロジック
による制御でパイプライン段数が4段と少ないため、分
岐時のオーバヘッドを最大1マシンサイクルと小さくす
ることができる。さらにコンパイラによる遅延分岐の最
適化が成功すれば、上記オーバヘッドをなくすことがで
きる。
【0040】また、複雑な処理も、簡単な命令の組み合
わせで実行するため、従来のCISC型計算機におけるパイ
プライン並列によるアドレス加算器とALUの並列動作
に比して、図1第1演算ユニット110と第2演算ユニ
ット112の並列動作をより遊びなく行うことができる
という利点がある。この点について、もう少し説明す
る。メモリからレジスタへのロードを繰り返す場合、従
来CISC型計算機では図15に示すように、1マシン
サイクルに1つずつデータをロードすることができる。
これに対して本実施例においては、1つのデータのロー
ドに、アドレス計算用ADD命令と、そのアドレスを用
いたLOAD命令の2命令かかるが、図16に示すよう
に1マシンサイクルに2命令ずつ実行できるので、やは
り、1マシンサイクルに1つずつデータをロードでき
る。演算器の並列動作という意味では、両者とも2つの
演算器が同時に並列して動いており、この例では同じで
ある。
【0041】さらに複雑な処理について比較したのが、
図17と図18である。従来のCISC型計算機で6サイク
ルのEXステージでの処理を要していた図17に示す命
令1は、図18に示すように、本実施例では3サイクル
で終了することができる。これは従来のCISC型計算
機では、命令1の実行中、アドレス加算器の動作がとま
ってしまうが、本実施例では、2つの演算器が毎サイク
ル並列して動くことが可能となるためである。
【0042】図1第1演算ユニット110の中を説明し
たのが図19である。1500はALU、1501はバ
レルシフタ、1502はフラグ生成回路である。バス12
5,126より転送されてきたデータは、加減算,論理演
算の時にはALU1500 で、SFT命令の時にはバレルシフ
タで処理される。処理結果はバス130に送出される。
演算結果によりフラグがフラグ生成回路1502により
生成され、信号123として送出される。
【0043】図1第2演算ユニット112の中を一例と
して説明したのが図20である。
【0044】1600はALU、1601はフラグ生成
回路である。第1演算ユニットとの相違点はバレルシフ
タがない点である。これは、SFT命令は算術論理演算
命令に比して出現ひん度が低いため、省略したのであ
る。こうすることにより、1マシンサイクルに、2つの
SFT命令を実行することができなくなるが、ハードウ
エア量を削減できるという利点がある。2つのSFT命
令が出現した時の制御方法については後述する。
【0045】図21は図1レジスタファイル111の中
を示したものである。1708はレジスタ、1700〜
1709はバススイッチである。各レジスタは、4つの
リードポード、2つの書込みポートを持つ。バススイッ
チは、前命令のディスティネーションフィールドで指さ
れたレジスタを、次命令で直ちに使う時に、レジスタフ
ァイルをバイパスするために用いられる。例えば、バス
スイッチ1702は、バス129から127へのバイパ
ススイッチであり、第1命令のディスティネーションレ
ジスタフィールドDと第2命令の第1ソースレジスタフ
ィールドS1が一致した時に開けるようにすればよい。
【0046】次に第1命令と第2命令の競合解消方法に
ついて図22から図29を用いて説明する。第1命令と
第2命令の組み合せによっては、両命令を同時に実行で
きないことがある。これを競合と呼ぶことにする。以下
の場合に競合がおこる。
【0047】1.ロード,ストア命令が第2命令として
出現した場合。
【0048】2.SFT命令が第2命令として出現した
場合。
【0049】3.第1命令のディスティネーションレジ
スタフィールドDで指されるレジスタと、第2命令の第
1ソースレジスタフィールドS1で指されるレジスタ、
または、第2命令の第2ソースレジスタフィールドS2
で指されるレジスタが一致する時。
【0050】上記、競合の内、1と2は、第2演算ユニ
ットで、ロード,ストア命令、及び、SFT命令が処理
できないことにより生ずる本実施例特有の問題である。
図1において、バス127に第2MDR、バス128に
第2MARを追加し、メモリインタフェースにて、1マ
シンサイクルに2つのデータをアクセスできるようにす
れば、第1の競合条件は解消できる。また、第2演算ユ
ニットにもバレルシフタを設ければ、第2の競合条件も
解消できる。本実施例では、ハードウエア削減のため、
上記競合条件が生じたのである。この様な場合も、後に
述べるように、容易に競合を解消できるので、必要性能
と、許されるハードウエア量に応じて、同時処理大の命
令に対応するハードウエアのみ2重化することは、実質
的に性能を落とさずに、ハードウエアを削減できるとい
う利点がある。
【0051】図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命
令が出現しないようにすることが好ましい。
【0052】別の競合解消方式について図23を用いて
述べる。即ち、第2命令となる奇数アドレスには、SF
T命令をおくことを禁止し、他に実行する命令のない時
にはNOP命令を入れておく。こうすれば、プログラム
サイズは若干増加するが、競合解消のためのハードウエ
アを省略できるよい利点がある。
【0053】図24は、ロード命令が第2命令として出
現した時の処理方法を示している。3番地にロード命令
がある。処理方法は、SFT命令の時と同じである。
【0054】図25は、レジスタ競合時の処理方式を示
している。2番地の命令が8番レジスタに書き込んでお
り、同じ8番レジスタを3番地の命令が読み出してい
る。この場合も、SFT命令同様、2マシンサイクルに
分けて実行する。
【0055】ロード,ストア命令,レジスタ競合につい
ても、奇数番地におくことを禁止して、競合を解消して
もよい。効果はSFT命令のところで述ベたのと同じで
ある。
【0056】次に、図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を送出する。
【0057】図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命令のみ実効されるので正しい処
理が可能である。キャッシュ読出しは毎サイクル行われ
るが、キャッシュへの書き込みは、キャッシュがミスヒ
ットした時のみ、しかも、数マシンサイクルかけて行わ
れる。従って、競合検出回路を、キャッシュ書込み時に
動作させ、キャッシュに競合ビットを保持しておくこと
は、マシンサイクルを短縮する上で有効である。
【0058】図28は、第26命令キャッシュ2301
の構成を示したものである。2500はディレクトリ、25
01はデータメモリ、2502はセレクタ、2503は
アドレスレジスタ、2504は書込みレジスタ、250
5はコンパレータ、2506はキャッシュ制御回路であ
る。図28のキャッシュは通常のキャッシュの構成とほ
ぼ同じであるが、データメモリ2501に、2命令分8
バイトに1つずつ、競合ビット保持用のフィールドがあ
ること、キャッシュ読出し時に、PC最下位を無視し、
常に第1命令2305と第2命令2306と競合信号1
16を送出する点が異なっている。
【0059】図28では、データメモリ8K語分、ブロ
ックサイズ32バイトとしてある。プログラムカウンタ
より送出された信号113はアドレスレジスタ2503
にセットされる。アドレスの3〜12ビットで、ディレ
クトリ2500とデータメモリ2501が引かれる。コ
ンパレータ2505は、ディレクトリ出力とアドレスレ
ジスタの13〜32ビットを比較する。不一致であれ
ば、信号2508により、キャッシュ制御回路2506
にそれを知らせる。キャッシュ制御回路2506は、主
メモリよりミスヒットした命令を含むブロックを読み出
し、データメモリ2501にセットする。一方、セレク
タ2502は、アドレスレジスタの第1,2ビットを用
いて、ブロックの中から必要な2命令を選択する。第1
命令と第2命令は必ず同一ブロック内にあり、片方のみ
ミスヒットすることはない。
【0060】図29は、図1命令ユニット103の他の
構成例を示したものである。2600はキャッシュメモリ、
2601は競合検出回路、2302は第1マスク回路、
2303は第2マスク回路である。図26の構成との違い
は、シャッシュに競合ビット保持のフィールドがなく、
キャッシュ出力の第1命令2601と第2命令2602
を、毎サイクル競合検出回路2601が監視しているこ
とである。第1マスク回路2302,第2マスク回路2
303の動作は、図26のものと同じである。本実施例
によれば、キャッシュ読み出し後に毎サイクル競合検出
回路が働くので、マシンサイクルが伸びるという欠点が
あるが、キャッシュ内の競合ビットフィールドがなくて
よいという利点がある。
【0061】さらに、本実施例では、1マシンサイクル
に2命令ずつ処理されることを生かして、図30に示す
ように特殊な場合に条件付分岐命令をさらに高速化する
ことができる。即ち、条件付分岐命令において、条件成
立時の分岐先が次の次の命令(図30命令2)である
時、条件の成否にかかわらず、命令2,命令3を実行
し、条件の成否により、命令1のWステージを抑止する
かどうかを制御することにより、条件成立時の待サイク
ルをなくすことができる。ただし、この場合、条件分岐
命令は必ず第1命令側におくこととする。通常の条件付
分岐では、図14を用いて説明したように、分岐成立時
には、1サイクルの待サイクルが生じる。言葉を換えて
説明すれば、本発明では1マシンサイクルに2命令ずつ
処理するので、2命令単位での命令処理フローに影響を
与えずに、第1命令側の条件付分岐命令の条件の成否に
より、第2命令側の命令の実行を制御することができ
る。
【0062】さらに、本実施例では、1マシンサイクル
に2命令ずつ処理されることを生かして、“アトミッ
ク”な処理を容易に実現することができる。アトミック
処理とは、必ず一続きに行われる処理のことで、プロセ
ス間の同期等に使用される。図31(a)は従来の計算
機の場合であり、(b)は本実施例について説明してい
る。(a)では各命令の間に割込みが入る可能性がある
が、(b)では、命令1と命令2の間、及び、命令3と
命令4の間には決して割込みが入らない。このため、
(a)では、任意の命令のすき間に、他のプロセスを処
理するプログラムが入る可能性があるが、(b)では、
命令1と命令2,命令3と命令4は必ず一続きに実行さ
れることが保証されているという利点がある。
【0063】図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で示した実施例と同
じなので省略する。
【0064】同様に、さらに並列度をあげることは可能
であるが、数命令に1つの割合で分岐命令が存在するよ
うなプログラムもあり、そのようなプログラムでは、極
端に並列度をあげても、あまり効果が得られない。2〜
4命令同時処理程度が至当である。分岐が少なく、競合
も少ないプログラムでは、さらに並列度をあげれば、効
果的に性能が高まる。また、並列度を2n(nは自然数)
とすることにより、命令ユニットの制御を容易にするこ
とができる。
【0065】さらに、本発明の他実施例について述ベ
る。これまでの実施例では、常に複数命令同時処理を行
っていた。通常は1マシンサイクルに1命令ずつ処理
し、部分的に複数命令同時処理を行うことによっても利
益を得ることができる。図33に3つの例を示す。図3
3(a)では、第1命令は主メモリ、第2命令はアドレ
ス空間の先頭部分のみにあり、かつ、ROM化されてい
る。(b)では、第1命令,第2命令ともに、アドレス
空間の先頭部分でROM化されている。他の部分は第1
命令のみで、主メモリにある。(c)では、(a)とほ
ぼ同じであるが、第2命令のROM化部分がアドレス空
間の中間にある。計算機全体の構成は図1と同じであ
り、ただ命令ユニット103を変更すればよい。ROM
部分には、使用ひん度が高く、並列度の高いプログラム
を書いておき、主ルーチンよりサブルーチンコールによ
って利用する。ROM部分は小容量でよいので、コンパ
イラがなくても、アセンブラにより最適なプログラムを
作成することができる。
【0066】図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命令を送出する。
【0067】図33(c)を実現するためには、図34
マスク回路制御回路2902を図35のようにすればよ
い。3000はコンパレータ、3001はベースレジス
タである。ベースレジスタの上位12〜31ビットと、
アドレス113の上位12〜31ビットが一致した時
に、コンパレータ3000は、有効信号2904をアサ
ートする。
【0068】図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を送出す
る。
【0069】図33〜図36を用いて述べたように、部
分的に複数命令同時処理を行い、その部分をROM化す
ることによりハードウエアを削減できる。また、ROM
部分のみであればアセンブラによって最適設計できるの
で、複数命令同時処理を意識したコンパイラを開発しな
くてもよいという利点がある。さらに、ROM部分を書
き換えることにより、アプリケーションごとに、アプリ
ケーションに適した高速化が実現できる。
【0070】
【発明の効果】本発明によれば、複雑な命令は基本命令
に分解され、かつ、1マシンサイクルで複数の命令が同
時に読み出され、実行されるために、複数の演算器が同
時に動き、処理能力を高めることができる。また、命令
の機能が簡単で、パイプライン段数を短くできるので、
分岐時のオーバヘッドを小さくできる。
【0071】また、複数演算器が並列して動くため、複
雑な処理の処理時間を短縮することができる。
【図面の簡単な説明】
【図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演算ユニッ
ト。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】複数の命令を記憶する命令ユニットと、 上記命令ユニットに格納された命令をデコードするデコ
    ーダと、 データを格納するレジスタファイルと、 上記レジスタファイルと接続され、上記デコードされた
    命令に基づいて演算を実行する複数の演算器とを有する
    データ処理装置において、 上記レジスタファイルは複数のレジスタと、上記各レジ
    スタと接続され上記各演算器にデータを送るための第1
    の信号線と、上記レジスタと接続され上記各演算器から
    のデータを受けるための第2の信号線と、上記第1の信
    号群と上記第2の信号線群とを接続するためのスイッチ
    とから構成されていることを特徴とするデータ処理装
    置。
  2. 【請求項2】複数の命令を記憶する命令ユニットと、 上記命令ユニットに格納された命令をデコードする第
    1,第2のデコード手段と、 データを格納するレジスタファイルと、 上記レジスタファイルと接続され、上記デコードされた
    命令に基づいて演算を実行する第1,第2の演算器とを
    有するデータ処理装置において、 上記レジスタファイルは複数のレジスタと、上記各レジ
    スタと接続され上記第1,第2の演算器が演算を行うた
    めのデータを送る第1の信号線群と、上記レジスタと接
    続され上記第1,第2の演算器の演算結果を受けるため
    の第2の信号線群と、上記第1の信号群と上記第2の信
    号線群とを接続するための複数のスイッチとから構成さ
    れていることを特徴とするデータ処理装置。
  3. 【請求項3】請求項2のデータ処理装置において、 前記レジスタファイルは、上記スイッチにより上記第1
    の信号線群と上記第2の信号線群とを接続し、上記第1
    の演算器の演算結果を上記第2の演算器へ送ることを特
    徴とするデータ処理装置。
  4. 【請求項4】請求項2のデータ処理装置において、 前記レジスタファイルは、上記スイッチにより上記第1
    の信号線群と上記第2の信号線群とを接続し、上記第1
    の演算器の演算結果を上記第2の演算器に、上記第2の
    演算器の演算結果を上記第1の演算器に送ることを特徴
    とするデータ処理装置。
  5. 【請求項5】請求項2のデータ処理装置において、 前記レジスタファイルは、上記スイッチにより上記第1
    の信号線群と上記第2の信号線群とを接続し、上記第1
    の演算器の演算結果を上記第2の演算器へ送るとともに
    上記レジスタに上記第1の演算器の演算結果を格納する
    ことを特徴とするデータ処理装置。
  6. 【請求項6】請求項2のデータ処理装置において、 前記レジスタファイルは、上記スイッチにより上記第1
    の信号線群と上記第2の信号線群とを接続し、上記第1
    の演算器の演算結果を上記第2の演算器に、上記第2の
    演算器の演算結果を上記第1の演算器に送ると共に、上
    記第1,第2の演算結果を上記レジスタに格納すること
    を特徴とするデータ処理装置。
  7. 【請求項7】請求項2のデータ処理装置において、 上記第1,第2の演算器は2入力1出力の演算器であっ
    て、 前記レジスタファイルは、上記第1の演算器の演算結果
    を上記第2の演算器の入力の一つとなるように上記スイ
    ッチにより上記第1の信号線群と上記第2の信号線群と
    を接続することを特徴とするデータ処理装置。
  8. 【請求項8】請求項2のデータ処理装置において、 上記第1,第2の演算器は2入力1出力の演算器であっ
    て、 前記レジスタファイルは、上記第1の演算器の演算結果
    を上記第2の演算器の2つの入力となるように上記スイ
    ッチにより上記第1の信号線群と上記第2の信号線群と
    を接続することを特徴とするデータ処理装置。
  9. 【請求項9】請求項2,7,8のデータ処理装置におい
    て、 上記レジスタファイルは、2入力4出力であることを特
    徴とするデータ処理装置。
JP09352657A 1997-12-22 1997-12-22 データ処理装置及び方法 Expired - Fee Related JP3102399B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP63283673A Division JP2810068B2 (ja) 1988-11-11 1988-11-11 プロセッサシステム、コンピュータシステム及び命令処理方法

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
JPH10187444A true JPH10187444A (ja) 1998-07-21
JP3102399B2 JP3102399B2 (ja) 2000-10-23

Family

ID=18425552

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP3102399B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012150589A (ja) * 2011-01-18 2012-08-09 Toshiba Corp 演算装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012150589A (ja) * 2011-01-18 2012-08-09 Toshiba Corp 演算装置

Also Published As

Publication number Publication date
JP3102399B2 (ja) 2000-10-23

Similar Documents

Publication Publication Date Title
JP2810068B2 (ja) プロセッサシステム、コンピュータシステム及び命令処理方法
JP2550213B2 (ja) 並列処理装置および並列処理方法
JP2834837B2 (ja) プログラマブルコントローラ
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
EP0498067A2 (en) Microcode generation for a scalable compound instruction set machine
US5041968A (en) Reduced instruction set computer (RISC) type microprocessor executing instruction functions indicating data location for arithmetic operations and result location
US5832258A (en) Digital signal processor and associated method for conditional data operation with no condition code update
JPH07120284B2 (ja) データ処理装置
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
US5983344A (en) Combining ALU and memory storage micro instructions by using an address latch to maintain an address calculated by a first micro instruction
JP3182591B2 (ja) マイクロプロセッサ
JP3102399B2 (ja) データ処理装置及び方法
JP3147884B2 (ja) 記憶装置及び情報処理装置
US6453412B1 (en) Method and apparatus for reissuing paired MMX instructions singly during exception handling
JP2636821B2 (ja) 並列処理装置
JP3461887B2 (ja) 可変長パイプライン制御装置
JP2785820B2 (ja) 並列処理装置
JP2927281B2 (ja) 並列処理装置
US6289439B1 (en) Method, device and microprocessor for performing an XOR clear without executing an XOR instruction
JP4702004B2 (ja) マイクロコンピュータ
JP2636074B2 (ja) マイクロプロセッサ
JPH04264954A (ja) 複合命令計算機
JPH0425937A (ja) 情報処理装置
JPH041821A (ja) パイプライン型マイクロ命令制御方式

Legal Events

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