JPH0242534A - マイクロプロセッサ - Google Patents
マイクロプロセッサInfo
- Publication number
- JPH0242534A JPH0242534A JP8324389A JP8324389A JPH0242534A JP H0242534 A JPH0242534 A JP H0242534A JP 8324389 A JP8324389 A JP 8324389A JP 8324389 A JP8324389 A JP 8324389A JP H0242534 A JPH0242534 A JP H0242534A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- execution
- execution processing
- instructions
- processing means
- 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
Landscapes
- Advance Control (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[発明の目的]
(産業上の利用分野)
この発明は、命令をパイプライン方式により実行処理す
るマイクロプロセッサに関し、特に、バイフプラインの
乱れを抑制して、性能を大幅に向上させることができる
マイクロプロセッサに関する。
るマイクロプロセッサに関し、特に、バイフプラインの
乱れを抑制して、性能を大幅に向上させることができる
マイクロプロセッサに関する。
(従来の技術)
近年、マイクロプロセッサにあっては、命令をパイプラ
イン方式より実行処理して、性能の向上を図っている。
イン方式より実行処理して、性能の向上を図っている。
このパイプライン方式における一般的なステージの構成
は、例えば「命令フェッチ→命令デコードー実効アドレ
ス計算→アドレス変換−オペランドリード(読出し)−
命令実行−オペランドライド(書込み)」となる(文献
「32ビツト・マイクロプロセッサの全容一企業・戦略
・技術・市場動向」日経マグロウヒル社、PP。
は、例えば「命令フェッチ→命令デコードー実効アドレ
ス計算→アドレス変換−オペランドリード(読出し)−
命令実行−オペランドライド(書込み)」となる(文献
「32ビツト・マイクロプロセッサの全容一企業・戦略
・技術・市場動向」日経マグロウヒル社、PP。
137〜139)。
このようなパイプライン構成にあって、メモリオペラン
ドを有する高機能命令(Im)は、実効アドレスの計算
及び実効アドレスから物理アドレスに変換を行うアドレ
ス変換のステージでの処理が必要となる。これに対して
、メモリオペランドのない基本命令(IR)では、上記
2つのステージでの処理は不要となる。
ドを有する高機能命令(Im)は、実効アドレスの計算
及び実効アドレスから物理アドレスに変換を行うアドレ
ス変換のステージでの処理が必要となる。これに対して
、メモリオペランドのない基本命令(IR)では、上記
2つのステージでの処理は不要となる。
したがって、例えば命令のシーケンスが、Im−* I
R4I m →I R−+ I II n 1 Hの
ような場合には、パイプラインの“流れ”は、第12図
に示すようになる。なお、各ステージの処理は1サイク
ルで終了するものとし、命令(Ia+)のオペランドラ
イトをレジスタとして、実行ステージで完了するものと
する。また、第12図において、X印はステージの動作
が休止状態であることを示している。
R4I m →I R−+ I II n 1 Hの
ような場合には、パイプラインの“流れ”は、第12図
に示すようになる。なお、各ステージの処理は1サイク
ルで終了するものとし、命令(Ia+)のオペランドラ
イトをレジスタとして、実行ステージで完了するものと
する。また、第12図において、X印はステージの動作
が休止状態であることを示している。
第12図から明らかなように、実効アドレス計算のステ
ージ(OAG)は、4サイクル目と6サイクル目におい
て休止状態であり、アドレス変換のステージ(MMU)
は、5サイクル目と7サイクル目において休止状態とな
っている。
ージ(OAG)は、4サイクル目と6サイクル目におい
て休止状態であり、アドレス変換のステージ(MMU)
は、5サイクル目と7サイクル目において休止状態とな
っている。
このことから、実効アドレス計算及びアドレス変換の各
ステージでの稼働率は、50(%)となる。
ステージでの稼働率は、50(%)となる。
一方、複雑な高機能命令セットを有するCl5C(Co
mplex In5tructlon Set
Computer )型のマイクロプロセッサの場合に
は、実行のステージでの処理に数サイクルを必要とする
複雑な高機能命令(Ic )がある。
mplex In5tructlon Set
Computer )型のマイクロプロセッサの場合に
は、実行のステージでの処理に数サイクルを必要とする
複雑な高機能命令(Ic )がある。
このようなマイクロプロセッサにおいて、例えば命令シ
ーケンスが、I c 41 R−II R→IR→In
のような場合は、パイプラインの流れが第13図に示す
ようになる。なお、第13図において、命令1cは、そ
の実行ステージでの処理に4サイクルかかるものとし、
X印は第12図と同様とする。
ーケンスが、I c 41 R−II R→IR→In
のような場合は、パイプラインの流れが第13図に示す
ようになる。なお、第13図において、命令1cは、そ
の実行ステージでの処理に4サイクルかかるものとし、
X印は第12図と同様とする。
このような場合には、命令1cの実行に4サイクルかか
るために、第13図から明らかなように、所謂“パイプ
ラインの乱れ”が生じる。これにより、第13図に示し
た例では、すべての命令の実行が第13図の斜線で示し
た理想的なパイプラインの流れの中で終了せず、3サイ
クル分(12サイクル目〜14サイクル目)だけ処理が
長くかかっている。
るために、第13図から明らかなように、所謂“パイプ
ラインの乱れ”が生じる。これにより、第13図に示し
た例では、すべての命令の実行が第13図の斜線で示し
た理想的なパイプラインの流れの中で終了せず、3サイ
クル分(12サイクル目〜14サイクル目)だけ処理が
長くかかっている。
また、高機能命令1cの実行に4サイクルかかるため、
実効アドレス計算(OAG) 、アドレス変換(MMU
)及びオペランドリード(OF)の各ステージにおいて
、休止状態が存在することになる。
実効アドレス計算(OAG) 、アドレス変換(MMU
)及びオペランドリード(OF)の各ステージにおいて
、休止状態が存在することになる。
(発明が解決しようとする課題)
パイプライン処理を行うマイクロプロセッサにおいて、
メモリオペランドを有する高機能命令(1m)とメモリ
オペランドρない基本命令(■R)がそれぞれ交互に実
行された場合には、乱れは生じない。しかし、第12図
に示したように、実効アドレス計算及びアドレス変換の
ステージでの稼働率が低下するという問題が生じる。
メモリオペランドを有する高機能命令(1m)とメモリ
オペランドρない基本命令(■R)がそれぞれ交互に実
行された場合には、乱れは生じない。しかし、第12図
に示したように、実効アドレス計算及びアドレス変換の
ステージでの稼働率が低下するという問題が生じる。
また、実行ステージでの処理に数サイクルを必要とする
複雑な高機能命令(Ic)が実行される場合には、パイ
プラインの流れに乱れが生じる。
複雑な高機能命令(Ic)が実行される場合には、パイ
プラインの流れに乱れが生じる。
これにより、性能が低下するという問題があった。
さらに、このような場合にも、所定のステージでの稼働
率が低下することになる。
率が低下することになる。
そこで、この発明は、上記問題に鑑みてなされたもので
あり、その目的とするところは、ステージの稼働率の低
下を防止するとともに、パイプラインの乱れを抑制して
、性能を大幅に向上させることのできるマイクロプロセ
ッサを提供することある。
あり、その目的とするところは、ステージの稼働率の低
下を防止するとともに、パイプラインの乱れを抑制して
、性能を大幅に向上させることのできるマイクロプロセ
ッサを提供することある。
[発明の構成]
(課題を解決するための手段)
上記目的を達成するために、この発明に従うマイクロプ
ロセッサは、デコードされた命令のうち同一の処理過程
を経て実行処理されるメモリオペランドを有する処理の
複雑な高機能命令をマイクロプログラム制御により実行
処理する第1の実行処理手段と、前記第1の種類の命令
と処理内容が異なるメモリオペランドを持たない基本命
令をハードワイヤード制御により実行処理する第2の実
行処理手段と、デコードされた命令をプログラムシーケ
ンスの順序で発行して、発行した命令を前記第1の実行
処理手段および前記第2の実行処理手段のどちらで実行
処理するかを選択決定し、前記第1の実行処理手段と前
記第2の実行処理手段を独立にしかも並行して動作させ
る制御手段とを有している。
ロセッサは、デコードされた命令のうち同一の処理過程
を経て実行処理されるメモリオペランドを有する処理の
複雑な高機能命令をマイクロプログラム制御により実行
処理する第1の実行処理手段と、前記第1の種類の命令
と処理内容が異なるメモリオペランドを持たない基本命
令をハードワイヤード制御により実行処理する第2の実
行処理手段と、デコードされた命令をプログラムシーケ
ンスの順序で発行して、発行した命令を前記第1の実行
処理手段および前記第2の実行処理手段のどちらで実行
処理するかを選択決定し、前記第1の実行処理手段と前
記第2の実行処理手段を独立にしかも並行して動作させ
る制御手段とを有している。
そして、この発明に従うマイクロプロセッサは、さらに
、前記第1の実行処理手段あるいは前記第2の実行処理
手段により命令の実行が終了すると、前記第1の実行処
理手段あるいは前記第2の実行処理手段よりの実行結果
を直ちに書込むための第1の情報保持手段と、前記制御
手段のプログラムシーケンス順序に従って前記第1の実
行処理手段および前記第2の実行処理手段よりの実行結
果を順序正しく書込むための第2の情報保持手段と、前
記制御手段により発行された命令に関する情報及びプロ
グラムシーケンスにおける命令の実行/終了状態に関す
る情報を保持し、前記制御手段のプログラムシーケンス
順序に従って順序正しく前記第2の情報保持手段を更新
するための第3の情報保持手段とを有している。
、前記第1の実行処理手段あるいは前記第2の実行処理
手段により命令の実行が終了すると、前記第1の実行処
理手段あるいは前記第2の実行処理手段よりの実行結果
を直ちに書込むための第1の情報保持手段と、前記制御
手段のプログラムシーケンス順序に従って前記第1の実
行処理手段および前記第2の実行処理手段よりの実行結
果を順序正しく書込むための第2の情報保持手段と、前
記制御手段により発行された命令に関する情報及びプロ
グラムシーケンスにおける命令の実行/終了状態に関す
る情報を保持し、前記制御手段のプログラムシーケンス
順序に従って順序正しく前記第2の情報保持手段を更新
するための第3の情報保持手段とを有している。
(作用)
上記構成のマイクロプロセッサによれば、高機能命令と
基本命令を、それぞれ独立して実行処理するようにして
、高機能命令と基本命令が並行しであるいは同時に実行
処理されることを可能にしている。
基本命令を、それぞれ独立して実行処理するようにして
、高機能命令と基本命令が並行しであるいは同時に実行
処理されることを可能にしている。
また、制御手段によって発行された命令の実行を、第1
の情報保持手段の更新にしたがって開始するようにして
いる。さらに、メインルーチンからはずれたサブルーチ
ンが実行された後、プログラムシーケンスがメインルー
チンに戻った時に、実行開始の命令を第2の情報保持手
段の保持内容にしたがって決定するようにして、命令を
再実行できるようにしている。
の情報保持手段の更新にしたがって開始するようにして
いる。さらに、メインルーチンからはずれたサブルーチ
ンが実行された後、プログラムシーケンスがメインルー
チンに戻った時に、実行開始の命令を第2の情報保持手
段の保持内容にしたがって決定するようにして、命令を
再実行できるようにしている。
また、発行された命令に関する情報及び命令の実行/終
了状態に関する情報にしたがって、第2の情報保持手段
の保持内容がプログラムシーケンス類に順序正しく更新
されるようにしている。
了状態に関する情報にしたがって、第2の情報保持手段
の保持内容がプログラムシーケンス類に順序正しく更新
されるようにしている。
(実施例)
以下図面を用いてこの発明の詳細な説明する。
第1図は、この発明を実施したマイクロプロセッサの内
部全体の構成を示すブロック図である。
部全体の構成を示すブロック図である。
このマイクロプロセッサは、主記憶からの命令データの
フェッチを行う命令フェッチユニット(IFU)1と、
上記命令フェッチユニット1よりの命令データの解読を
行うためのデコードユニット(DCU)2と、上記デコ
ードユニット2から送られてきた命令情報をその種類す
なわち、メモリオペランドを持たない基本命令およびメ
モリオペランドを持つ基本命令ないしは処理の複雑な高
機能命令に従って発行するための命令発行ユニット(I
IU)3と、命令の実行を上記種類に従ってハードワイ
ヤード制御またはマイクロプログラム制御で行うための
命令実行ユニット(EXU)4と、メモリオペランドの
アドレスを生成するためのメモリ管理ユニット(MMU
)5と、オペランドデータを管理するためのキャッシュ
制御ユニット(CCU)6と、上記マイクロプロセッサ
と外部とのデータ入出力を制御するための入出力部(I
lo)7とを有している。
フェッチを行う命令フェッチユニット(IFU)1と、
上記命令フェッチユニット1よりの命令データの解読を
行うためのデコードユニット(DCU)2と、上記デコ
ードユニット2から送られてきた命令情報をその種類す
なわち、メモリオペランドを持たない基本命令およびメ
モリオペランドを持つ基本命令ないしは処理の複雑な高
機能命令に従って発行するための命令発行ユニット(I
IU)3と、命令の実行を上記種類に従ってハードワイ
ヤード制御またはマイクロプログラム制御で行うための
命令実行ユニット(EXU)4と、メモリオペランドの
アドレスを生成するためのメモリ管理ユニット(MMU
)5と、オペランドデータを管理するためのキャッシュ
制御ユニット(CCU)6と、上記マイクロプロセッサ
と外部とのデータ入出力を制御するための入出力部(I
lo)7とを有している。
上記命令フェッチユニット(IFU)1は、主記憶上の
命令データ群の一部のコピーを保持する命令キャッシュ
・メモリ(I n5tructlon Cache)
8や命令キャッシュ・メモリ8への主記憶からの命令デ
ータのフェッチ等の制御を行うブリフェッチ制御回路(
P refetcher ) 9等から構成されるもの
で、従来と同様のものである。
命令データ群の一部のコピーを保持する命令キャッシュ
・メモリ(I n5tructlon Cache)
8や命令キャッシュ・メモリ8への主記憶からの命令デ
ータのフェッチ等の制御を行うブリフェッチ制御回路(
P refetcher ) 9等から構成されるもの
で、従来と同様のものである。
上記デコードユニット(DCU)2は、命令コードの解
読を行う命令デコーダ(Decoder) 10やデコ
ードした結果の命令情報を複数個、−時的に保持するデ
コード済命令ループバッファ(D ecoded I
n5truetion Loop Buffer
) 11等から構成される。本実施例ではデコードした
命令情報をデコード済命令ループバッファ11から一度
(1サイクル)に2命令分読みだし、命令発行ユニット
(IIU)3に転送てきる構成となっている。
読を行う命令デコーダ(Decoder) 10やデコ
ードした結果の命令情報を複数個、−時的に保持するデ
コード済命令ループバッファ(D ecoded I
n5truetion Loop Buffer
) 11等から構成される。本実施例ではデコードした
命令情報をデコード済命令ループバッファ11から一度
(1サイクル)に2命令分読みだし、命令発行ユニット
(IIU)3に転送てきる構成となっている。
ただし本発明には、デコード済命令ループバッファ11
や一度に2命令分読みだす機能は必ずしも必要ではない
。
や一度に2命令分読みだす機能は必ずしも必要ではない
。
上記命令発行ユニット(IIU)3は、上記デコードユ
ニット2から送られてきた命令情報を、上記種類にした
がって、命令実行ユニット(EXU)4ないしメモリ管
理ユニット(MMU)5に対して発行する命令発行制御
回路(I n5tructiorlI 5sue L
ogic) 12や汎用レジスタ値を保持するカレン
トファイル(Current File) 13゜フ
ユーチ+7yイル(F uture F ile )
14、およびリオーダ−バッフy (Reorder
B u「rer )15等から構成される。
ニット2から送られてきた命令情報を、上記種類にした
がって、命令実行ユニット(EXU)4ないしメモリ管
理ユニット(MMU)5に対して発行する命令発行制御
回路(I n5tructiorlI 5sue L
ogic) 12や汎用レジスタ値を保持するカレン
トファイル(Current File) 13゜フ
ユーチ+7yイル(F uture F ile )
14、およびリオーダ−バッフy (Reorder
B u「rer )15等から構成される。
上記命令発行制御回路(I IL)12は通常のバイブ
ライン処理を行なうマイクロプロセッサがもつバイブラ
イン制御回路の機能(ハザードの検出などを行ない、各
バイブライン・ステージの状態制御を行なう)のほかに
、上記送られてきた命令情報が、メモリオペランドを持
たない基本命令であるかメモリオペランドを持つ基本命
令ある(は処理の複雑な高機能命令であるかを選択決定
し、後述する複数の命令実行部において上記各命令が並
行して実行される様に制御する機能、後述する複数の命
令実行部でプログラムシーケンス類とは異って終了する
命令実行結果の情報をプログラムシーケンス類に戻すた
めリオーダ−バッファ15の制御(情報設定/解除)を
行なう機能を有する。
ライン処理を行なうマイクロプロセッサがもつバイブラ
イン制御回路の機能(ハザードの検出などを行ない、各
バイブライン・ステージの状態制御を行なう)のほかに
、上記送られてきた命令情報が、メモリオペランドを持
たない基本命令であるかメモリオペランドを持つ基本命
令ある(は処理の複雑な高機能命令であるかを選択決定
し、後述する複数の命令実行部において上記各命令が並
行して実行される様に制御する機能、後述する複数の命
令実行部でプログラムシーケンス類とは異って終了する
命令実行結果の情報をプログラムシーケンス類に戻すた
めリオーダ−バッファ15の制御(情報設定/解除)を
行なう機能を有する。
上記カレントファイル13はプログラムシーケンス類に
従って更新されるが、ツユ−チャフアイル14はプログ
ラムシーケンス類とは無関係に後述する命令実行ユニッ
ト(EXU)4で実行終了後、その実行結果によってた
だちに更新される。上記リオーダ−バッファ15は命令
実行ユニット(EXU)4の複数の命令実行部でプログ
ラムシーケンス類とは異って終了する命令実行結果の情
報を一時保持し、プログラムシーケンス類にカレントフ
ァイル13を更新するためのバッファである。
従って更新されるが、ツユ−チャフアイル14はプログ
ラムシーケンス類とは無関係に後述する命令実行ユニッ
ト(EXU)4で実行終了後、その実行結果によってた
だちに更新される。上記リオーダ−バッファ15は命令
実行ユニット(EXU)4の複数の命令実行部でプログ
ラムシーケンス類とは異って終了する命令実行結果の情
報を一時保持し、プログラムシーケンス類にカレントフ
ァイル13を更新するためのバッファである。
すなわち、上記基本命令と高機能命令とは実行に要する
サイクルが異なり、ここでは、実行に要するサイクルが
異なる命令をそれぞれに対応した命令実行部で実行する
ようにしているため、プログラムシーケンスの順序で発
行される命令は、そ実行が必ずしもプログラムのシーケ
ンスの順序にしたがって終了するとは必らず、順序が逆
転することがある。
サイクルが異なり、ここでは、実行に要するサイクルが
異なる命令をそれぞれに対応した命令実行部で実行する
ようにしているため、プログラムシーケンスの順序で発
行される命令は、そ実行が必ずしもプログラムのシーケ
ンスの順序にしたがって終了するとは必らず、順序が逆
転することがある。
したがって、リオーダバッファ15は、プログラムシー
ケンスの順序でカレントファイル13の中のレジスタの
内容を更新して、上記の逆転した順序をプログラムシー
ケンスの順序に戻すようにしている。すなわち、Out
ororderで終了した命令をReorderする
働きをする。
ケンスの順序でカレントファイル13の中のレジスタの
内容を更新して、上記の逆転した順序をプログラムシー
ケンスの順序に戻すようにしている。すなわち、Out
ororderで終了した命令をReorderする
働きをする。
これにより、割込み等のメインルーチンからはずれたプ
ログラムが実行された場合には、カレントファイル13
の内容を参照することにより、命令を再実行することが
可能となる。
ログラムが実行された場合には、カレントファイル13
の内容を参照することにより、命令を再実行することが
可能となる。
また、上記命令発行ユニット(IIU)3は、分岐命令
の高速実行を行うための分岐予測回路(B ranch
P redlctlon L oglc) 16等
も有する。
の高速実行を行うための分岐予測回路(B ranch
P redlctlon L oglc) 16等
も有する。
上記命令発行制御回路12、カレントファイル13、ツ
ユ−チャフアイル14、およびリオーダ−バッファ15
は本発明の目的を達成するために必要な構成要件である
。ただし、リオーダ−バッファ15を用いないで本発明
の目的を達成する方法もあり、それについては他の実施
例ということで後述する。また上記カレントファイル1
3とツユ−チャフアイル14は物理的には必ずしも別の
ものではなくても良く、ひとつのレジスタファイルを2
つの部分に分けた場合の一方と他方でも良く、それにつ
いても他の実施例ということで後述する。
ユ−チャフアイル14、およびリオーダ−バッファ15
は本発明の目的を達成するために必要な構成要件である
。ただし、リオーダ−バッファ15を用いないで本発明
の目的を達成する方法もあり、それについては他の実施
例ということで後述する。また上記カレントファイル1
3とツユ−チャフアイル14は物理的には必ずしも別の
ものではなくても良く、ひとつのレジスタファイルを2
つの部分に分けた場合の一方と他方でも良く、それにつ
いても他の実施例ということで後述する。
上記命令実行ユニット(EXU)4は、命令の実行をハ
ードワイヤー制御またはマイクロプログラム制御で並行
して行なうユニットである。この実施例では、メモリオ
ペランドを持たない基本命・令(比較・転送命令・算術
・論理演算命令など)をハードワイヤード制御で行なう
基本命令実行部(S imple Execution
processor ) 17、メモリオペランド
を持つ基本命令や処理の複雑な高機能命令をマイクロプ
ログラム制御で実行する命令実行部(I nteger
E xecution P rocessor)
18、および浮動小数点演算命令を実行する浮動小数
点実行部(F loatlng E xecutlon
P rocessor)19の3つの実行部から構
成される。
ードワイヤー制御またはマイクロプログラム制御で並行
して行なうユニットである。この実施例では、メモリオ
ペランドを持たない基本命・令(比較・転送命令・算術
・論理演算命令など)をハードワイヤード制御で行なう
基本命令実行部(S imple Execution
processor ) 17、メモリオペランド
を持つ基本命令や処理の複雑な高機能命令をマイクロプ
ログラム制御で実行する命令実行部(I nteger
E xecution P rocessor)
18、および浮動小数点演算命令を実行する浮動小数
点実行部(F loatlng E xecutlon
P rocessor)19の3つの実行部から構
成される。
なお本発明は、命令の種類に対応した複数の命令実行部
を持つことが特徴であり、必ずしも3つの実行部から構
成されなくても良い。また本発明の変形として、メモリ
オペランドを持たない基本命令の実行部とオペランドの
実効アドレス計算を行なう部分を共通化した構成も考え
られる。
を持つことが特徴であり、必ずしも3つの実行部から構
成されなくても良い。また本発明の変形として、メモリ
オペランドを持たない基本命令の実行部とオペランドの
実効アドレス計算を行なう部分を共通化した構成も考え
られる。
上記メモリ管理ユニット(MMU)5は、メモリオペラ
ンドの実効アドレスを生成する実効アドレス生成部(O
perand A ddress G enera
tor)20、実効アドレス(論理アドレス)を物理ア
ドレスに変換するアドレス変換バッファ(T rans
lation Lookaslde Buffer
) 21、メモリ保護のチエツクを行う保護チエツク
回路(P rotecti。
ンドの実効アドレスを生成する実効アドレス生成部(O
perand A ddress G enera
tor)20、実効アドレス(論理アドレス)を物理ア
ドレスに変換するアドレス変換バッファ(T rans
lation Lookaslde Buffer
) 21、メモリ保護のチエツクを行う保護チエツク
回路(P rotecti。
n Logic) 22等から構成されるもので、従来
と同様のものである。
と同様のものである。
上記キャッシュ制御ユニット(CCU)6は、主記憶上
のオペランド群の一部のコピーを保持す6y’−9*+
ッシュ−メモリ(D ata Cache) 23や書
き込みオペランドデータを一時保持するストア・バッフ
y (S tore B uffer ) 24等か
ら構成されるもので、従来と同様のものである。
のオペランド群の一部のコピーを保持す6y’−9*+
ッシュ−メモリ(D ata Cache) 23や書
き込みオペランドデータを一時保持するストア・バッフ
y (S tore B uffer ) 24等か
ら構成されるもので、従来と同様のものである。
上記入出力部(Ilo)7は、マイクロプロセッサと外
部とのデータ人出力を制御する部分でドライバ/レシー
バ(D river / Recelver ) 25
やバス制御部(Bus Control) 26等か
ら構成されるもので、従来と同様のものである。
部とのデータ人出力を制御する部分でドライバ/レシー
バ(D river / Recelver ) 25
やバス制御部(Bus Control) 26等か
ら構成されるもので、従来と同様のものである。
第2図は、第1図に示したマイクロプロセッサの内部ブ
ロックにおいて本発明に特に関連する要部ブロックを示
したものである。
ロックにおいて本発明に特に関連する要部ブロックを示
したものである。
第2図において、バスは2重線で示し、データ線は直線
で示しており、制御線は省略している。。
で示しており、制御線は省略している。。
そして、第2図における各ブロックの内部をさらに詳細
に示すと第3図の如くになる。
に示すと第3図の如くになる。
第3図において、前記命令発行制御回路(IIL)12
は、パイプラインの各ステージで実行中の命令に関する
情報を保持するパイプライン・レジスタ(,0AGR3
0、MMUR31、CCUR32、夏EPR33および
5EPR34)と、それらの情報を元にパイプラインの
流れを制御するコントロール回路(Control)
35から構成される。パイプラインの流れについては第
7図、第8図を参照して後述する。コントロール回路3
5はまたリオーダバッファRB15の制御(データの登
録・削除等)も行う。
は、パイプラインの各ステージで実行中の命令に関する
情報を保持するパイプライン・レジスタ(,0AGR3
0、MMUR31、CCUR32、夏EPR33および
5EPR34)と、それらの情報を元にパイプラインの
流れを制御するコントロール回路(Control)
35から構成される。パイプラインの流れについては第
7図、第8図を参照して後述する。コントロール回路3
5はまたリオーダバッファRB15の制御(データの登
録・削除等)も行う。
本実施例では前記命令発行制御回路12は、1サイクル
で2命令分の情報をデコードユニット2のデコード済命
令ループバッファ(DILB)11から受けることがで
きる。(ただしそのうち1つはメモリ・オペランドを持
たない基本命令。)SEPR34は現在基本命令実行部
17で実行中の命令に関する情報を保持するレジスタで
ある。
で2命令分の情報をデコードユニット2のデコード済命
令ループバッファ(DILB)11から受けることがで
きる。(ただしそのうち1つはメモリ・オペランドを持
たない基本命令。)SEPR34は現在基本命令実行部
17で実行中の命令に関する情報を保持するレジスタで
ある。
0AGR30は現在0AG20で実効アドレス計算中の
命令に関する情報を保持するレジスタである。
命令に関する情報を保持するレジスタである。
MMUR31は現在MMU5でアドレス変換中の命令に
関する情報を保持するレジスタである。
関する情報を保持するレジスタである。
CCUR32は現在CCU6でメモリ・アクセス(オペ
ランドリード)中の命令に関する情報を保持するレジス
タである。
ランドリード)中の命令に関する情報を保持するレジス
タである。
I EPR33は現在IEP18で実行中の命令に関す
る情報を保持するレジスタである。
る情報を保持するレジスタである。
なおオペランド・ライトに関する情報は、CCU6のス
トアバッファ24に保持されるためllL12にはオペ
ランド・ライトに関する情報を保持するレジスタは存在
しない。
トアバッファ24に保持されるためllL12にはオペ
ランド・ライトに関する情報を保持するレジスタは存在
しない。
llL12の詳細ブロックは第4図参照。
基本命令実行部(SEP)17はメモリ・オペランドを
持たない基本命令をハードワイヤー制御で実行する為の
演算器(Adder) 36を持つブロックである。演
算器36はllL12中の5EPR34によって直接制
御される。
持たない基本命令をハードワイヤー制御で実行する為の
演算器(Adder) 36を持つブロックである。演
算器36はllL12中の5EPR34によって直接制
御される。
高機能命令実行部(IEP)18は、高機能命令をマイ
クロプログラム制御で実行するための演算器(ALU3
7、B arrel S hlfter38、M ul
t]pHer39 )および、マイクロプログラムを保
持するμROM40およびシーケンサから構成−される
。
クロプログラム制御で実行するための演算器(ALU3
7、B arrel S hlfter38、M ul
t]pHer39 )および、マイクロプログラムを保
持するμROM40およびシーケンサから構成−される
。
RAL41はμROM40のアドレスを保持するための
レジスタ、MIR42はマイクロ命令を保持するための
レジスタ、E rrA dr43はエラー発生時のμR
OM40のアドレスを保持するためのレジスタである。
レジスタ、MIR42はマイクロ命令を保持するための
レジスタ、E rrA dr43はエラー発生時のμR
OM40のアドレスを保持するためのレジスタである。
また5EL44はRAL41、ErrA dr43およ
びllL12のCCUR32のopフィールド88に保
持されている値(次にIEPI8で実行する命令の先頭
マイクロ命令のアドレス)のうちの一つを選択するため
のセレクタである。
びllL12のCCUR32のopフィールド88に保
持されている値(次にIEPI8で実行する命令の先頭
マイクロ命令のアドレス)のうちの一つを選択するため
のセレクタである。
実行アドレス生成部(OAG)20は、メモリ・オペラ
ンドの実効アドレスを算出するための加算器(A dd
ress G enerator) 47から構成さ
れる。
ンドの実効アドレスを算出するための加算器(A dd
ress G enerator) 47から構成さ
れる。
メモリ管理ユニット(MMU)5は、論理アドレス(実
効アドレス)を物理アドレスに変換するためのアドレス
対を保持するアドレス変換バッフy (Trans
lation Lookaslde Bu
ffer : T LB)21およびメモリ・
アクセス権をチエツクするためのアクセス権チエツク回
路(P rotectionLogic)22から構成
される。
効アドレス)を物理アドレスに変換するためのアドレス
対を保持するアドレス変換バッフy (Trans
lation Lookaslde Bu
ffer : T LB)21およびメモリ・
アクセス権をチエツクするためのアクセス権チエツク回
路(P rotectionLogic)22から構成
される。
キャッシュ制御ユニット(CCU)6は、メイン・メモ
リのデータの一部のコピーを保持するデータ・キャッシ
ュ(Cache) 23およびライト・データの情報を
一時的に保持するストア・バッフy (Store
Buffer ) 24より構成される。データ・キャ
ッシュ23はデータを保持するデータ部(DATA)4
8とアドレスや属性を保持するタグ部(TAG)49か
ら成る。またストア・バッファ24もデータを保持する
データ部(DATA)50とアドレスを保持するアドレ
ス部(ADDRESS)51より成る。1EP18より
送られてきたライト・データはいったんストア・バッフ
ァ24に格納され、その後データ・キャッシュ23およ
び主記憶に書き込まれる。
リのデータの一部のコピーを保持するデータ・キャッシ
ュ(Cache) 23およびライト・データの情報を
一時的に保持するストア・バッフy (Store
Buffer ) 24より構成される。データ・キャ
ッシュ23はデータを保持するデータ部(DATA)4
8とアドレスや属性を保持するタグ部(TAG)49か
ら成る。またストア・バッファ24もデータを保持する
データ部(DATA)50とアドレスを保持するアドレ
ス部(ADDRESS)51より成る。1EP18より
送られてきたライト・データはいったんストア・バッフ
ァ24に格納され、その後データ・キャッシュ23およ
び主記憶に書き込まれる。
第4図は、第3図中のllL12、RB15、CF13
、FF14の部分の詳細図である。
、FF14の部分の詳細図である。
DCU2のデコード済命令ループバッファ11から送ら
れてきた命令の情報は、5EPR34または0AGR3
0に格納される。5EPR34にはメモリ・オペランド
をもたない基本命令の情報のみ格納することができる。
れてきた命令の情報は、5EPR34または0AGR3
0に格納される。5EPR34にはメモリ・オペランド
をもたない基本命令の情報のみ格納することができる。
一方0AGR30には全ての命令の情報を格納すること
ができる。
ができる。
5EPR34は次のフィールドから構成される。
0P60・・・基本命令の種類を示しく比較、転送、加
算など)、SEPの演算器の機能を制御する。
算など)、SEPの演算器の機能を制御する。
R/161・・・ソース・オペランドがレジスタかイミ
ディエイト・データかを区別する。
ディエイト・データかを区別する。
#5rc62・・・ソース・オペランドのレジスタ番号
を指定する。
を指定する。
#dest63・・・デスティネーション・オペランド
のレジスタ番号を指定する。
のレジスタ番号を指定する。
I mm64・・・イミディエイト・データ。
PC65・・・命令の先頭アドレス
V66・・・有効ビット
0AGR30は次のフィールドから構成される。
0P67・・・命令の種類を示す。
R/M16g・・・ソース・オペランドがレジスタかメ
モリかを区別する。
モリかを区別する。
#5rc69・・・ソース・オペランドのレジスタ番号
を指定する。
を指定する。
R/M70・・・デスティネーション・オペランドがレ
ジスタかメモリかを区別する。
ジスタかメモリかを区別する。
#dest71・・・デスティネーション・オペランド
が・レジスタかメモリかを区別する。
が・レジスタかメモリかを区別する。
Ius72・・・イミディエイト・データ。
Aa+ode73・・・メモリ・オペランドのアドレッ
シング・モードを指定する。
シング・モードを指定する。
Areg74・・・メモリ・オペランドのアドレッシン
グ・モードで使用するレジスタ番号を指定する。
グ・モードで使用するレジスタ番号を指定する。
Dlsp75・・・メモリ・オペランドのアドレッシン
グ・モードで使用するディスプレースメント。
グ・モードで使用するディスプレースメント。
Ex、76・・・その他。
PC77・・・命令の先頭アドレス。
V78・・・有効ビット。
QAGR30に格納された命令の情報は、命令がパイプ
ラインの各ステージでの処理が進むにつれて、0AGR
30−−>MMUR31−−>CCUR32−−> I
EPR3Bと転送される。
ラインの各ステージでの処理が進むにつれて、0AGR
30−−>MMUR31−−>CCUR32−−> I
EPR3Bと転送される。
0AGR30−−>MMUR31では、0AG20で、
Aa+ode73、Areg74、Disp75の情報
に基づいて実効アドレス(論理アドレス)の計算が行わ
れる。
Aa+ode73、Areg74、Disp75の情報
に基づいて実効アドレス(論理アドレス)の計算が行わ
れる。
MMUR31関雪>CCUR32では、MMU5で、論
理アドレスが物理アドレスに変換される。
理アドレスが物理アドレスに変換される。
またメモリ・アクセス権のチエツクが行われる。
CCUR32−−>IEPR33では、OPフィールド
88で、μROM40のアクセス(命令を実行する先頭
マイクロ命令の読みだし)が行われる。
88で、μROM40のアクセス(命令を実行する先頭
マイクロ命令の読みだし)が行われる。
図中の制御回路(Control) 35は、5EPR
34,0AGR30、MMUR31、CCUR32、I
EPR33に保持されている命令の情報および、以下の
信号を入力してパイプラインの状態制御、ハザード検出
、リオーダ・バッファ(RB)15の制御信号を生成す
る回路である。制御回路35の詳細については第5図、
第6図を参照して後述する。
34,0AGR30、MMUR31、CCUR32、I
EPR33に保持されている命令の情報および、以下の
信号を入力してパイプラインの状態制御、ハザード検出
、リオーダ・バッファ(RB)15の制御信号を生成す
る回路である。制御回路35の詳細については第5図、
第6図を参照して後述する。
ストアバッファ・ビジー信号(S tore B u
rrerBusy)102 μプログラム終了信号(μEND)103キヤツシユ・
ミス信号(Cache n+1ss) 104μ命令で
のGRへのライト信号(μmv −GR)カレント・フ
ァイル(CF)13はプログラムシーケンス類に従って
更新される汎用レジスタ値を保持するレジスタ・ファイ
ルであり、ツユ−チャ・ファイル(FF)14は5EP
17/IEP18での命令終了によりただちに更新され
る汎用レジスタ値を保持するレジスタ・ファイルである
。
rrerBusy)102 μプログラム終了信号(μEND)103キヤツシユ・
ミス信号(Cache n+1ss) 104μ命令で
のGRへのライト信号(μmv −GR)カレント・フ
ァイル(CF)13はプログラムシーケンス類に従って
更新される汎用レジスタ値を保持するレジスタ・ファイ
ルであり、ツユ−チャ・ファイル(FF)14は5EP
17/IEP18での命令終了によりただちに更新され
る汎用レジスタ値を保持するレジスタ・ファイルである
。
リオーダ・バッファ(RB)15は、5EPI7とIE
P18の2つの命令実行部でプログラムシーケンス類と
は異なって終了する命令実行結果を一時保持し、プログ
ラムシーケンス類にCFI3を更新するためのバッファ
である。本実施例ではRB15は8エントリであり、以
下のフィールドから構成される。
P18の2つの命令実行部でプログラムシーケンス類と
は異なって終了する命令実行結果を一時保持し、プログ
ラムシーケンス類にCFI3を更新するためのバッファ
である。本実施例ではRB15は8エントリであり、以
下のフィールドから構成される。
S tate 106・・・エントリの有効/無効お
よび実行中/実行終了を示す。
よび実行中/実行終了を示す。
R/M 107・・・命令のデスティネーションがレジ
スタかメモリかを示す。
スタかメモリかを示す。
# dest 108・・・デスティネーションがレ
ジスタの場合のレジスタ番号を示す。
ジスタの場合のレジスタ番号を示す。
Re5ult 109・・・命令の実行結果を保持する
。
。
FlgllO・・・命令の実行結果のフラグを保持する
。
。
E rror 111・・・命令の実行結果てエラー
があった場合のエラー情報を示す。
があった場合のエラー情報を示す。
PC112・・・命令の先頭アドレス。
RB15への情報の登録は、5EPR34に保持されて
いる命令が5EP34て実行されるタイミングないしは
、0AGR30に保持されている命令がMMUR31に
転送されるタイミングで行われる。図中のtail
11 B、headl14は各々RB15に登録された
最も新しい命令情報を保持するエントリ+1、および最
も旧い命令情報を保持するエントリをポイントするレジ
スタである。
いる命令が5EP34て実行されるタイミングないしは
、0AGR30に保持されている命令がMMUR31に
転送されるタイミングで行われる。図中のtail
11 B、headl14は各々RB15に登録された
最も新しい命令情報を保持するエントリ+1、および最
も旧い命令情報を保持するエントリをポイントするレジ
スタである。
RB15へは1サイクルでtail 113がポイン
トするエントリおよびtail+ 1がポイントするエ
ントリに2命令分の情報を同時に登録できる。またRB
15からは、headl14がポイントするエントリの
S tate 106が実行終了状態であれば、その
エントリのRe5ult 109、FlgllOに保持
されている実行結果にしたがってCFI3およびF1g
レジスタ115の値が更新される。
トするエントリおよびtail+ 1がポイントするエ
ントリに2命令分の情報を同時に登録できる。またRB
15からは、headl14がポイントするエントリの
S tate 106が実行終了状態であれば、その
エントリのRe5ult 109、FlgllOに保持
されている実行結果にしたがってCFI3およびF1g
レジスタ115の値が更新される。
またError 111にエラー情報がある場合には
、μプログラム、シーケンス制御部にエラー信号を発生
し、エラー処理のμプログラム・ルーチンを起動する。
、μプログラム、シーケンス制御部にエラー信号を発生
し、エラー処理のμプログラム・ルーチンを起動する。
RB15からのデータ読み出しは1サイクルで最大1命
令分行うことができる。
令分行うことができる。
RB15へ命令情報を登録した時にはtail 11
3は+1ないし+2カウントアツプされる。またRB1
5のデータ読みだしが行われたときはheadl14は
一1カウントダウンされる。
3は+1ないし+2カウントアツプされる。またRB1
5のデータ読みだしが行われたときはheadl14は
一1カウントダウンされる。
第5図は、第4図中の制御回路135の内部ブロックを
しめしたものである。制御回路135は、パイプライン
・レジスタのレジスタに関する情報を基にハザード・チ
エツクを行う部分と、パイプライン・レジスタの有効信
号、ハザード・チエツク信号等を基にパイプラインの状
態制御を行う状態制御回路(S tate Cont
rol C1rcuit) 120から構成される。
しめしたものである。制御回路135は、パイプライン
・レジスタのレジスタに関する情報を基にハザード・チ
エツクを行う部分と、パイプライン・レジスタの有効信
号、ハザード・チエツク信号等を基にパイプラインの状
態制御を行う状態制御回路(S tate Cont
rol C1rcuit) 120から構成される。
図中のハーザード F/F 121は、16ビツトのレ
ジスタで、パイプライン・レジスタ(MMUR31、C
CUR32、IEPR33)の命令が汎用レジスタに結
果を書き込むとき、対応するビットに1がセットされて
いて、この情報を基にハザード検出を行う。ハザード
F/F 121は、0AGR3QのR/M70、#de
st71をデコーダ 124でデコードした結果でセッ
トされ、IEPR33のR/M97、#dest98を
デコーダ127でデコードした結果でリセットされる。
ジスタで、パイプライン・レジスタ(MMUR31、C
CUR32、IEPR33)の命令が汎用レジスタに結
果を書き込むとき、対応するビットに1がセットされて
いて、この情報を基にハザード検出を行う。ハザード
F/F 121は、0AGR3QのR/M70、#de
st71をデコーダ 124でデコードした結果でセッ
トされ、IEPR33のR/M97、#dest98を
デコーダ127でデコードした結果でリセットされる。
5EPR34に保持されている命令が5EPI7で実行
できる条件は、ソース/ディスティネーションに使用す
るレジスタともに書き変わる可能性がないときである。
できる条件は、ソース/ディスティネーションに使用す
るレジスタともに書き変わる可能性がないときである。
(すなわちハザード F/F121の対応するビットに
1がたっていないとき)この条件の検出は、デコーダ
122、デコーダ 123で5EPR34のR/ I
61、#s「c62および# dest63をデコード
した結果とハザード F/F 121値とを比較回路C
MP 1128、CMP2 129で比較しその結果の
OR出力信号(ハザード(SEP)>133で行う。
1がたっていないとき)この条件の検出は、デコーダ
122、デコーダ 123で5EPR34のR/ I
61、#s「c62および# dest63をデコード
した結果とハザード F/F 121値とを比較回路C
MP 1128、CMP2 129で比較しその結果の
OR出力信号(ハザード(SEP)>133で行う。
この条件が満足されるときハザード(SEP)133が
0となり、満足されないときはハザード(SEP)13
3が1となる。
0となり、満足されないときはハザード(SEP)13
3が1となる。
同様にして0AGR30のAmode7B、A reg
74をデコーダ4125でデコードした結果とハザード
F/F 121の値を比較回路CMP 3130で比
較し、その出力信号(hazard (OAG))13
4が0のとき0AG20で実効アドレスの計算が可能と
なる。
74をデコーダ4125でデコードした結果とハザード
F/F 121の値を比較回路CMP 3130で比
較し、その出力信号(hazard (OAG))13
4が0のとき0AG20で実効アドレスの計算が可能と
なる。
またCCUR32のR/M89、#5re90をデコー
ダ5126でデコードした結果とハザード F/F 1
21の値とを比較回路CMP4 131で比較し、その
出力信号(ハザード(CCU))135が0のときソー
ス・オペランド(レジスタ)の読み出しが可能となる。
ダ5126でデコードした結果とハザード F/F 1
21の値とを比較回路CMP4 131で比較し、その
出力信号(ハザード(CCU))135が0のときソー
ス・オペランド(レジスタ)の読み出しが可能となる。
状態制御回路(S tate Control C
1rcuit)120は、上でのべた3つのハザード信
号(hazard(SEP)133、hazard (
OA G) 134、hazard (CCU) 13
5) 、パイプライン・レジスタノ有効信号(V (I
EP)101、V(CCU)96、V (MMU)87
、V (OAG)78)やレジスタ/メモリ信号(R/
M (IEP)97、R/Ml (MMU)89、R/
M2 (MMU)91)およびllL12外部からの信
号(ストア・バッファビジー信号102、μEND 1
03、Cache m1ss 104、μmv−GR1
05)を入力して、パイプラインの状態制御を行う以下
の信号を出力する。
1rcuit)120は、上でのべた3つのハザード信
号(hazard(SEP)133、hazard (
OA G) 134、hazard (CCU) 13
5) 、パイプライン・レジスタノ有効信号(V (I
EP)101、V(CCU)96、V (MMU)87
、V (OAG)78)やレジスタ/メモリ信号(R/
M (IEP)97、R/Ml (MMU)89、R/
M2 (MMU)91)およびllL12外部からの信
号(ストア・バッファビジー信号102、μEND 1
03、Cache m1ss 104、μmv−GR1
05)を入力して、パイプラインの状態制御を行う以下
の信号を出力する。
5EP−136・・・5EPHに保持されている命令が
SEPで実行可能なとき1になる。
SEPで実行可能なとき1になる。
OAG−MMUl 37・・・0AGRに保持されてい
る命令が次サイクルでMMURに進めるとき1になる。
る命令が次サイクルでMMURに進めるとき1になる。
MMU−CCU138・・・MMURに保持されている
命令が次サイクルでCCUHに進めるとき1になる。
命令が次サイクルでCCUHに進めるとき1になる。
CCU−IEP139・・・CCURに保持されている
命令が次サイクルでIEPHに進めるとき1になる。
命令が次サイクルでIEPHに進めるとき1になる。
IEP−3B140・・・IEPRに保持されている命
令が次サイクルでストアバッファに情報を転送゛すると
き1になる。
令が次サイクルでストアバッファに情報を転送゛すると
き1になる。
第6図は、第5図中のステートコントロール回路の具体
的な回路例である。
的な回路例である。
次に、第1図を参照して上記、本発明に従うマイクロプ
ロセッサのパイプライン処理動作の概略について説明す
る。
ロセッサのパイプライン処理動作の概略について説明す
る。
すなわち、パイプライン処理動作の概略は以下の様にな
る。
る。
(以下余白)
(1)IF(命令フェッチ)ステージ
IFUにおいて、命令キャッシュメモリ8からの命令の
フェッチを行うステージ。
フェッチを行うステージ。
(2)ID(命令デコード)ステ゛−ジDCUにおいて
、命令デコーダ10で命令のデコードを行い、内部命令
フォーマットに変換する。
、命令デコーダ10で命令のデコードを行い、内部命令
フォーマットに変換する。
なお内部命令フォーマットに変換された命令はデコード
済命令ループバッファ11に格納される。
済命令ループバッファ11に格納される。
そして、内部命令フォーマットはメモリ・オペランドを
持たない基本命令とメモリ・オペランドを持つ基本命令
ないしは高機能命令の2種類あり、命令発行制御回路(
、IIL)12によってそれぞれ発行される。
持たない基本命令とメモリ・オペランドを持つ基本命令
ないしは高機能命令の2種類あり、命令発行制御回路(
、IIL)12によってそれぞれ発行される。
(3) 0AG(オペランド実効アドレス算出)ステ
ージ 0AG20のアドレス発生回路47で、命令発行制御回
路(IIL)12によって発行されたメモリオペランド
を持つ命令のメモリ・オペランド実効アドレス(論理ア
ドレス)を算出するステージ。
ージ 0AG20のアドレス発生回路47で、命令発行制御回
路(IIL)12によって発行されたメモリオペランド
を持つ命令のメモリ・オペランド実効アドレス(論理ア
ドレス)を算出するステージ。
(4) MMU(アドレス変換)ステージMMU5の
アドレス変換バッファ21で、メモリ・オペランドの論
理アドレスを物理アドレスに変換するステージ。また保
護チエツク回路22でメモリ保護のチツエツクも行われ
る。
アドレス変換バッファ21で、メモリ・オペランドの論
理アドレスを物理アドレスに変換するステージ。また保
護チエツク回路22でメモリ保護のチツエツクも行われ
る。
(5)OF(オペランド・フェッチ)ステージCCU6
のデータ中キャッシュメモリ23がらメモリ・オペラン
ドを読み出すステージ。また、レジスタオペランドの読
み出しも行われる。
のデータ中キャッシュメモリ23がらメモリ・オペラン
ドを読み出すステージ。また、レジスタオペランドの読
み出しも行われる。
(6) LEP(命令実行)ステージEXU4の高機
能命令実行部(IEP)18において、μプログラム制
御でメモリオペランドを持つ基本命令あるいは高機能命
令を実行するステージ。
能命令実行部(IEP)18において、μプログラム制
御でメモリオペランドを持つ基本命令あるいは高機能命
令を実行するステージ。
(7)OS(オペランド・ストア)ステージIEP18
での実行結果をCCU6のストア・バッファ24に書き
込むステージ。ただしこのステージがあるのは、命令の
ディスティネーションがメモリの場合のみ。なお演算結
果はストア・バッファ24を介して、データ・キャッシ
ュメモリ6とマイクロプロセッサ外部の主記憶に、パイ
プライン処理とは非同期に書き込みが行われる。
での実行結果をCCU6のストア・バッファ24に書き
込むステージ。ただしこのステージがあるのは、命令の
ディスティネーションがメモリの場合のみ。なお演算結
果はストア・バッファ24を介して、データ・キャッシ
ュメモリ6とマイクロプロセッサ外部の主記憶に、パイ
プライン処理とは非同期に書き込みが行われる。
(8) 5EP(命令実行)ステージEXU4の基本
命令実行部(SEP)17において、ハードワイヤード
制御で命令発行制御回路(IIL)12によって発行さ
れた基本命令を実行するステージ。なお5EP17で実
行される命令は、メモリ・オペランドを持たない基本命
令のみ。
命令実行部(SEP)17において、ハードワイヤード
制御で命令発行制御回路(IIL)12によって発行さ
れた基本命令を実行するステージ。なお5EP17で実
行される命令は、メモリ・オペランドを持たない基本命
令のみ。
(9)RE(リオーダ)ステージ
IEP18および5EP17よりの実行結果をリオーダ
バッファ(RB)15によりリオーダしてカレントファ
イル(CF)13に書込むステージ。
バッファ(RB)15によりリオーダしてカレントファ
イル(CF)13に書込むステージ。
以上のパイプライン処理のうち、(8)IEPを除く他
のステージは、基本的には1サイクルでその処理が終了
する。ただしキャッシュ・ミス、TLBミスが生じたと
きには、(1) I F、 (4) MMU、(5)
OFのステージの処理も複数サイクル必要となる。また
、ハザード(例えば、IEPステージの実行結果を実効
アドレス算出に使用する等)が生じたときには、いわゆ
る“待ち”が生じて1サイクルで処理が終了しなくなる
。
のステージは、基本的には1サイクルでその処理が終了
する。ただしキャッシュ・ミス、TLBミスが生じたと
きには、(1) I F、 (4) MMU、(5)
OFのステージの処理も複数サイクル必要となる。また
、ハザード(例えば、IEPステージの実行結果を実効
アドレス算出に使用する等)が生じたときには、いわゆ
る“待ち”が生じて1サイクルで処理が終了しなくなる
。
本発明の特徴は、複数の命令実行部を持ち命令の並列実
行を可能とすることである。すなわち本実施例では、主
に、SEPステージおよびREステージが新らたに加わ
った点が従来技術と比べて新しい。
行を可能とすることである。すなわち本実施例では、主
に、SEPステージおよびREステージが新らたに加わ
った点が従来技術と比べて新しい。
次に、第7図および第8図を参照して、上記本発明の特
徴的な処理動作をさらに詳細に説明する。
徴的な処理動作をさらに詳細に説明する。
第7図および第8図は、本発明の実施例(すなわち、基
本命令実行部5EP17がある場合)のパイプラインタ
イミング例をそれぞれ示し、第7図のタイミング例は、
第12図に示した従来のタイミング例に対応し、第8図
の例は、第13図の従来のタイミング例に対応する。
本命令実行部5EP17がある場合)のパイプラインタ
イミング例をそれぞれ示し、第7図のタイミング例は、
第12図に示した従来のタイミング例に対応し、第8図
の例は、第13図の従来のタイミング例に対応する。
ただし第7図、第8図では簡単のために、デコード済命
令ループバッファ(DILB)11以降の部分のみ示し
、命令はDILBll中に有るものと仮定する。
令ループバッファ(DILB)11以降の部分のみ示し
、命令はDILBll中に有るものと仮定する。
第7図は、命令シーケンスが
1ml −−> IR2−−> 1m3−− > IR
4−−冒>lm5=−>IRB の場合のパイプライン・タイミング例−1である(1m
)と基本命令(IR)は(DILB)から1サイクルで
同時に読み出されたものとする。また1mlと1m3は
ディスティネーションがレジスタ、1m5はディスティ
ネーションがメモリとし、ハザードは生じないものとす
る。 サイクル1では1ml、IR2の2命令分の情報
がDILBllから読み出され、llL12の0AGR
30および5EPR34レジスタにセットされる。
4−−冒>lm5=−>IRB の場合のパイプライン・タイミング例−1である(1m
)と基本命令(IR)は(DILB)から1サイクルで
同時に読み出されたものとする。また1mlと1m3は
ディスティネーションがレジスタ、1m5はディスティ
ネーションがメモリとし、ハザードは生じないものとす
る。 サイクル1では1ml、IR2の2命令分の情報
がDILBllから読み出され、llL12の0AGR
30および5EPR34レジスタにセットされる。
命令1mlは、サイクル2で命令発行制御部12によっ
て発行され、実行アドレス生成部(OAG)20によっ
て実行アドレス算出が行われ、サイクル3でアドレス変
換バッファ(TLB)21によってアドレス変換が行わ
れ、サイクル4てメモリ管理ユニット(MMU)5によ
ってオペランドフェッチが行われ、サイクル5で高機能
命令実行部(IEP)18によって実行され、サイクル
6でディスティネーションがレジスタのためツユ−チャ
ーファイル(FF)14へその実行結果が書き込まれる
(第7図のFFの欄の↑1mlを参照)。
て発行され、実行アドレス生成部(OAG)20によっ
て実行アドレス算出が行われ、サイクル3でアドレス変
換バッファ(TLB)21によってアドレス変換が行わ
れ、サイクル4てメモリ管理ユニット(MMU)5によ
ってオペランドフェッチが行われ、サイクル5で高機能
命令実行部(IEP)18によって実行され、サイクル
6でディスティネーションがレジスタのためツユ−チャ
ーファイル(FF)14へその実行結果が書き込まれる
(第7図のFFの欄の↑1mlを参照)。
一方、これと並行して、基本命令IR2は、サイクル2
で命令発行制御部12によって発行され、基本命令実行
部(SEP)17によって実行され、サイクル3でツユ
−チャーファイル14へその実行結果が書き込まれる(
第7図FFの欄の↑IR2を参照)。
で命令発行制御部12によって発行され、基本命令実行
部(SEP)17によって実行され、サイクル3でツユ
−チャーファイル14へその実行結果が書き込まれる(
第7図FFの欄の↑IR2を参照)。
ここで、リオーダバッファ(RB)15への命令情報の
登録は、高機能命令Imは、実行アドレス算出ステージ
で行われ、基本命令IRは、基本命令実行部17での実
行ステージで行われるため、1mlおよびIR2の情報
は、図示する如くサイクル3で登録される。第7図のR
Bの欄の命令の上の“×”および“・”印は、命令が各
々“実行中”および“実行終了”であることを示してい
る。
登録は、高機能命令Imは、実行アドレス算出ステージ
で行われ、基本命令IRは、基本命令実行部17での実
行ステージで行われるため、1mlおよびIR2の情報
は、図示する如くサイクル3で登録される。第7図のR
Bの欄の命令の上の“×”および“・”印は、命令が各
々“実行中”および“実行終了”であることを示してい
る。
一方、リオーダバッファ15からカレントファイル(C
F)13への命令実行結果の書き込みは、リオーダバッ
ファ(RB)15において命令情報が削除されたサイク
ルで行われる。従って、1m1の場合は、その命令情報
がサイクル7でリオーダバッファ15から削除されてい
るため、サイクル7で、その実行結果が、カレントファ
イル(CF)13へ書き込まれる。また、lR2の場合
は、その命令情報が、サイクル8でリオーダバッファ1
5から削除されているため、サイクル8でその実行結果
が、カレントファイル(CF)13へ書き込まれること
となる。
F)13への命令実行結果の書き込みは、リオーダバッ
ファ(RB)15において命令情報が削除されたサイク
ルで行われる。従って、1m1の場合は、その命令情報
がサイクル7でリオーダバッファ15から削除されてい
るため、サイクル7で、その実行結果が、カレントファ
イル(CF)13へ書き込まれる。また、lR2の場合
は、その命令情報が、サイクル8でリオーダバッファ1
5から削除されているため、サイクル8でその実行結果
が、カレントファイル(CF)13へ書き込まれること
となる。
すなわち、ツユ−チャーファイル(FF)14は、命令
実行後ただちに更新(書込み)されるため、プログラム
シーケンス類とはなっていないが、カレントファイル(
CF)13は、リオーダバッファ15から命令情報が削
除されるタイミングで′更新されるためプログラムシー
ケンス類に命令実行結果がファイルされている。
実行後ただちに更新(書込み)されるため、プログラム
シーケンス類とはなっていないが、カレントファイル(
CF)13は、リオーダバッファ15から命令情報が削
除されるタイミングで′更新されるためプログラムシー
ケンス類に命令実行結果がファイルされている。
命令1m3、lR4、Im5、lR6の場合も、上述し
たと同様に処理されるものである。
たと同様に処理されるものである。
第8図は、命令シーケンスが
Icl −−> lR2−−> lR3−−> lR4
−−> 1a+5の場合のパイプライン・タイミング例
−2である。
−−> 1a+5の場合のパイプライン・タイミング例
−2である。
この例の場合もIclの実行に時間がかかっているが、
その間にlR2、lR3、lR4の実行は基本命令実行
部(SEP)17で先に終了している。
その間にlR2、lR3、lR4の実行は基本命令実行
部(SEP)17で先に終了している。
すなわち、高機能命令IcIは、サイクル2〜4で、実
行アドレス算出、アドレス変換、およびオペランドフェ
ッチが行われ、サイクル5〜8で高機能命令実行部(I
EP)18によって実行され、サイクル9でツユ−チャ
フアイル(FF)14へその結果が書き込まれる。
行アドレス算出、アドレス変換、およびオペランドフェ
ッチが行われ、サイクル5〜8で高機能命令実行部(I
EP)18によって実行され、サイクル9でツユ−チャ
フアイル(FF)14へその結果が書き込まれる。
一方、これと並行して、基本命令IR2は、サイクル2
で基本命令実行部(SEP)1°7によって実行され、
サイクル3でツユ−チャフアイル(FF)14へその実
行結果が書き込まれる。
で基本命令実行部(SEP)1°7によって実行され、
サイクル3でツユ−チャフアイル(FF)14へその実
行結果が書き込まれる。
ここで、リオーダバッファ(RB)15からカレントフ
ァイル(CF)13への命令実行結果の書き込みは、リ
オーダバッファ(RB)15において命令情報が削除さ
れたサイクルで行われる。
ァイル(CF)13への命令実行結果の書き込みは、リ
オーダバッファ(RB)15において命令情報が削除さ
れたサイクルで行われる。
従って、第7図に示した例と同様に、カレントファイル
(CF)13には、プログラムシーケンス類に命令実行
結果がファイルされるものである。
(CF)13には、プログラムシーケンス類に命令実行
結果がファイルされるものである。
以上、第7図および第8図の例かられかるように、本発
明では複数の命令実行部を持ち命令の並列実行すること
により、従来例で生じていたパイプラインの乱れを押さ
え、また各パイプライン・ステージの稼働率の低下を押
さえることができ、結果として大幅な性能向上を得るこ
とができる。
明では複数の命令実行部を持ち命令の並列実行すること
により、従来例で生じていたパイプラインの乱れを押さ
え、また各パイプライン・ステージの稼働率の低下を押
さえることができ、結果として大幅な性能向上を得るこ
とができる。
また、通常の命令実行状態において、ツユ−チャーファ
イル(FF)14に保持されている汎用レジスタ値は、
カレントファイル(CF)13に保持される汎用レジス
タ値と異なっている。これはプログラム・シーケンス類
では後のメモリ・オペランドを持たない基本命令が、プ
ログラム・シーケンス類では前の高機能命令実行部(I
EP)18で実行されるメモリ・オペランドを持つ高機
能命令より先に基本命令実行部(SEP)17で実行さ
れ、ツユ−チャーファイル(FF)14を更新するため
である。ただし、高機能命令実行部(IEP)18で実
行した命令でエラー(割込み)が発生した場合には、命
令の再実行を保証するためにツユ−チャーファイル(F
F)14の値をカレントファイル(CF)13の値に戻
さなければならない。このためにカウンタ119が用意
されている。割込み処理μプログラム・ルーチンではカ
ウンタ119を利用してカレントファイル(CF)13
の値をツユ−チャーファイル(FF)14にコピーする
ことができる。
イル(FF)14に保持されている汎用レジスタ値は、
カレントファイル(CF)13に保持される汎用レジス
タ値と異なっている。これはプログラム・シーケンス類
では後のメモリ・オペランドを持たない基本命令が、プ
ログラム・シーケンス類では前の高機能命令実行部(I
EP)18で実行されるメモリ・オペランドを持つ高機
能命令より先に基本命令実行部(SEP)17で実行さ
れ、ツユ−チャーファイル(FF)14を更新するため
である。ただし、高機能命令実行部(IEP)18で実
行した命令でエラー(割込み)が発生した場合には、命
令の再実行を保証するためにツユ−チャーファイル(F
F)14の値をカレントファイル(CF)13の値に戻
さなければならない。このためにカウンタ119が用意
されている。割込み処理μプログラム・ルーチンではカ
ウンタ119を利用してカレントファイル(CF)13
の値をツユ−チャーファイル(FF)14にコピーする
ことができる。
第9図に発明の実施例を適用したMPUと周辺LSIか
ら成るシステム構成例を示す。この例はVMEバス20
0につながる比較的簡単なシステムであり、以下のLS
I、ICから構成される。
ら成るシステム構成例を示す。この例はVMEバス20
0につながる比較的簡単なシステムであり、以下のLS
I、ICから構成される。
PU201
1CT202・・・割込みコントローラCG203・・
・クロック・ジェネレータメモリ・・・SRAM (0
ウエイト 32にバイト)EFROM (0ウエイト
32にバイト)DRAM (3ウエイト 4Mバイト)
通信インタフェース・・・セントロニクス 1チヤネル
207 R3232C2チヤネル その他・・・T/R)ランシード/レシーバ209Bu
r バッファ210,211 D ecode アドレス・デコーダ212本発明を
使用したMPUを使用したシステム構成は、従来のMP
Uを使用したシステム構成と何ら変わるところはない。
・クロック・ジェネレータメモリ・・・SRAM (0
ウエイト 32にバイト)EFROM (0ウエイト
32にバイト)DRAM (3ウエイト 4Mバイト)
通信インタフェース・・・セントロニクス 1チヤネル
207 R3232C2チヤネル その他・・・T/R)ランシード/レシーバ209Bu
r バッファ210,211 D ecode アドレス・デコーダ212本発明を
使用したMPUを使用したシステム構成は、従来のMP
Uを使用したシステム構成と何ら変わるところはない。
すなわち本発明を使用したMPUを使用することにより
システム・レベルで必要な付加回路は無く、高性能なシ
ステムを構築することができる。
システム・レベルで必要な付加回路は無く、高性能なシ
ステムを構築することができる。
次に、第10図および第11図を参照して本発明に従う
マイクロプロセッサの第2実施例について説明する。
マイクロプロセッサの第2実施例について説明する。
前述した本発明の第一の実施例では、リオーダバッファ
(RB)15を用いることにより、本発明の目的を達成
したが、第2実施例ではリオーダバッファ(RB)15
を用いないで本発明の目的を達成するようにしている。
(RB)15を用いることにより、本発明の目的を達成
したが、第2実施例ではリオーダバッファ(RB)15
を用いないで本発明の目的を達成するようにしている。
第10図は、第一の実施例の第4図に対応するものであ
り、第一の実施例と同じ要素には同じ番号をつけである
。第一の実施例と第二の実施例の違いは、次の通りであ
る。
り、第一の実施例と同じ要素には同じ番号をつけである
。第一の実施例と第二の実施例の違いは、次の通りであ
る。
まず、第二実施例は、第一の実施例の構成要素であるリ
ーダバッファ(RB)15を削除した構成となっている
。そして、第一の実施例のカレントファイル(CF)1
Bとツユ−チャフアイル(FF)14は、第二の実施例
では一つの汎用レジスタファイル302になっている。
ーダバッファ(RB)15を削除した構成となっている
。そして、第一の実施例のカレントファイル(CF)1
Bとツユ−チャフアイル(FF)14は、第二の実施例
では一つの汎用レジスタファイル302になっている。
ただしそのエントリ数は16の<X>パートおよび16
のくY〉パートの合計32エントリからなる。第二の実
施例では、フラグ(PLGO−FLG3)、エラー情報
(Erroro−3) 、プログラムカウンタ(PCO
−3)を−時的に保持する4エントリのステータスファ
イル301および汎用レジスタファイル(GR)302
への書込み/読み出し信号を生成するGRコントロール
回路(G RControl) 303を新たに加えて
いる。
のくY〉パートの合計32エントリからなる。第二の実
施例では、フラグ(PLGO−FLG3)、エラー情報
(Erroro−3) 、プログラムカウンタ(PCO
−3)を−時的に保持する4エントリのステータスファ
イル301および汎用レジスタファイル(GR)302
への書込み/読み出し信号を生成するGRコントロール
回路(G RControl) 303を新たに加えて
いる。
以下、第二の実施例の特徴について説明する。
第2の実施例の汎用レジスタ302は先に述べたように
、16の<X>パートおよび16のくY〉パートの合計
32エントリからなる。<X>パートおよび<y>パー
トは、第1の実施例のカレントファイル(CF)13と
ツユ−チャフアイル(FF)14のように、一つの汎用
レジスタRiに対して2本のレジスタ(Xi、Yi)を
用意している。ただし第一の実施例と異なる点は、〈X
〉パートがカレントファイル、くY〉パートがツユ−チ
ャフアイルと固定的でなく、〈X〉パートのXiがカレ
ントの値を保持しているレジスタなら、対応するくY〉
パートのYiがツユ−チャの値を保持しているレジスタ
、あるいはYiがカレントの値を保持しているレジスタ
なら、対応するXiがツユ−チャの値を保持しているレ
ジスタ、と言う様に、各汎用レジスタRiに対し2本の
レジスタ(Xi、Yi)がダイナミックにその役割が切
り替わることである。
、16の<X>パートおよび16のくY〉パートの合計
32エントリからなる。<X>パートおよび<y>パー
トは、第1の実施例のカレントファイル(CF)13と
ツユ−チャフアイル(FF)14のように、一つの汎用
レジスタRiに対して2本のレジスタ(Xi、Yi)を
用意している。ただし第一の実施例と異なる点は、〈X
〉パートがカレントファイル、くY〉パートがツユ−チ
ャフアイルと固定的でなく、〈X〉パートのXiがカレ
ントの値を保持しているレジスタなら、対応するくY〉
パートのYiがツユ−チャの値を保持しているレジスタ
、あるいはYiがカレントの値を保持しているレジスタ
なら、対応するXiがツユ−チャの値を保持しているレ
ジスタ、と言う様に、各汎用レジスタRiに対し2本の
レジスタ(Xi、Yi)がダイナミックにその役割が切
り替わることである。
例えば、ある瞬間の<X>のパート、<y>パートのX
1SYiの役割は次のようになっている。
1SYiの役割は次のようになっている。
カレントレジスタ値: XOXi X2 Y3 X4
XS YOY7 Y8 X9 XIOXll X12
X13 YI4 YI57 ニー ’r + Iiレ
ジスタ値 YOYI Y2 XOY4 Y5 XS X
7 XOY9 YIOYll YI2 YI3 X14
X15第11図は、第10図中のGRコントロール回
路(CRControl)303の内部ブロックを示し
たものである。第11図中には4つのIDレジスタ(3
04〜307)、+1回路308およびGRアドレス生
成回路(G Raddress generat。
XS YOY7 Y8 X9 XIOXll X12
X13 YI4 YI57 ニー ’r + Iiレ
ジスタ値 YOYI Y2 XOY4 Y5 XS X
7 XOY9 YIOYll YI2 YI3 X14
X15第11図は、第10図中のGRコントロール回
路(CRControl)303の内部ブロックを示し
たものである。第11図中には4つのIDレジスタ(3
04〜307)、+1回路308およびGRアドレス生
成回路(G Raddress generat。
r)309から構成される。GRアドレス生成回路30
9は、バイブラインレジスタの汎用レジスタのアクセス
に関する情報(310〜313)およびIDレジスタの
値(314〜316)を人力して汎用レジスタファイル
302の読み出し/書込みアドレス信号(318〜32
1)を出力するブロックである。GRアドレス生成回路
309には汎用レジスタファイル302の状態を示す3
つのフリップフロップ群(322〜324)がある。
9は、バイブラインレジスタの汎用レジスタのアクセス
に関する情報(310〜313)およびIDレジスタの
値(314〜316)を人力して汎用レジスタファイル
302の読み出し/書込みアドレス信号(318〜32
1)を出力するブロックである。GRアドレス生成回路
309には汎用レジスタファイル302の状態を示す3
つのフリップフロップ群(322〜324)がある。
いま、第一の実施例で示した様なパイプライン構成の場
合には、プログラムの命令シーケンスと命令実行順序が
逆転するのは、“Ic命令に続くIR命令列”であるた
だしIcはメモリオペランドを持つ命令ないしは実行ス
テージに数サイクル要する複雑な命令(高機能命令)を
示し、IRはメモリオペランドを持たない基本命令を示
す。またこの様なパイプライン構成の場合には、IR命
令は最大4つのIc命令を飛び越して先に終了する可能
性がある。例えばいま命令シーケンスが(先頭) ・let IRI IR21c2 1R31cJ
−IR4Ic4 1R51R81c5 1
R7の場合で、Iclの命令実行ステージのサイクル数
が大きい場合、IRI、IR2はIclより先に実行が
終了し、IR3はIcl、Ic2より先に実行が終了し
、IR4はIcl〜Ic3より先に実行が終了し、IR
5、IR6はIcl〜Ic4より先に実行が終了するこ
とになる(ただしハザードが生じない場合)。またIR
7はIclの実行が終了するまで実行されない。
合には、プログラムの命令シーケンスと命令実行順序が
逆転するのは、“Ic命令に続くIR命令列”であるた
だしIcはメモリオペランドを持つ命令ないしは実行ス
テージに数サイクル要する複雑な命令(高機能命令)を
示し、IRはメモリオペランドを持たない基本命令を示
す。またこの様なパイプライン構成の場合には、IR命
令は最大4つのIc命令を飛び越して先に終了する可能
性がある。例えばいま命令シーケンスが(先頭) ・let IRI IR21c2 1R31cJ
−IR4Ic4 1R51R81c5 1
R7の場合で、Iclの命令実行ステージのサイクル数
が大きい場合、IRI、IR2はIclより先に実行が
終了し、IR3はIcl、Ic2より先に実行が終了し
、IR4はIcl〜Ic3より先に実行が終了し、IR
5、IR6はIcl〜Ic4より先に実行が終了するこ
とになる(ただしハザードが生じない場合)。またIR
7はIclの実行が終了するまで実行されない。
この場合問題となるのは、例えばIcl命令実行中に例
外が発生した場合、IRI〜IR6の実行により更新さ
れる汎用レジスタおよびフラグ、PCなどのステータス
を元に戻す必要があることである。このためにIRI〜
IR6の実行結果は、まず汎用レジスタファイル302
のカレントの値を保持しているレジスタ(例えばXi)
の対のレジスタ(例えばYi)に書込み、またフラグ、
PCなどのステータスもステータスファイル301に一
時書き込む。そしてIR命令直前のIc命令が実行ステ
ージを終了するサイクルでIR命令の結果を保持してい
るXiとYiの役割を切り替える。例えばこの例の場合
、Iclが実行ステージを終了するサイクルでIRIと
IR2の結果を保持しているXiとYiの役割を切り替
える。
外が発生した場合、IRI〜IR6の実行により更新さ
れる汎用レジスタおよびフラグ、PCなどのステータス
を元に戻す必要があることである。このためにIRI〜
IR6の実行結果は、まず汎用レジスタファイル302
のカレントの値を保持しているレジスタ(例えばXi)
の対のレジスタ(例えばYi)に書込み、またフラグ、
PCなどのステータスもステータスファイル301に一
時書き込む。そしてIR命令直前のIc命令が実行ステ
ージを終了するサイクルでIR命令の結果を保持してい
るXiとYiの役割を切り替える。例えばこの例の場合
、Iclが実行ステージを終了するサイクルでIRIと
IR2の結果を保持しているXiとYiの役割を切り替
える。
この方法の利点はIc命令に後続するIR命令はハザー
ドが生じないかぎり、いくつでも先行して実行すること
ができ、第一の実施例に見られた様なリオーダバッファ
15のエントリ数による制限が生じないことである。ま
たカレントの値を保持しているレジスタは、GRアドレ
ス生成回路309中のF/F群によってXiまたはYi
の切り替えを行うため、Ic命令の実行終了時に複数命
令のIRの実行が終了している場合にその結果を1サイ
クルで更新する(すなわちXiとYiの役割を1サイク
ルで切り替える)ことができる。
ドが生じないかぎり、いくつでも先行して実行すること
ができ、第一の実施例に見られた様なリオーダバッファ
15のエントリ数による制限が生じないことである。ま
たカレントの値を保持しているレジスタは、GRアドレ
ス生成回路309中のF/F群によってXiまたはYi
の切り替えを行うため、Ic命令の実行終了時に複数命
令のIRの実行が終了している場合にその結果を1サイ
クルで更新する(すなわちXiとYiの役割を1サイク
ルで切り替える)ことができる。
次に具体的にどのようにしてXiとYiの役割を切り替
え、汎用レジスタファイル302の読み出し/書込みを
制御するかについて説明する。
え、汎用レジスタファイル302の読み出し/書込みを
制御するかについて説明する。
Ic命令とそれに続<IR命令に対して0〜3のID番
号を割当てる(前述の命令シーケンス列参照)。第11
図中のIDレジスタ(304〜307)は各々パイプラ
インレジスタ(30〜33)中に保持されている命令の
ID番号を保持している。また汎用レジスタに対して以
下の3つのフリップフロップ(F/F)X16のF/F
群を設ける。
号を割当てる(前述の命令シーケンス列参照)。第11
図中のIDレジスタ(304〜307)は各々パイプラ
インレジスタ(30〜33)中に保持されている命令の
ID番号を保持している。また汎用レジスタに対して以
下の3つのフリップフロップ(F/F)X16のF/F
群を設ける。
すなわち、フユーチャF/F群322と、有効F/F群
323と、ID F/F群324とである。
323と、ID F/F群324とである。
フユーチャF/F群(F uture F / F群)
322は、16個のF/Fで、汎用レジスタファイル3
02のXiがカレントの値を保持しているとき対応する
ツユ−チャF / F iは1、Yiがカレントの値を
保持しているときツユ−チャF / F iは0となる
。
322は、16個のF/Fで、汎用レジスタファイル3
02のXiがカレントの値を保持しているとき対応する
ツユ−チャF / F iは1、Yiがカレントの値を
保持しているときツユ−チャF / F iは0となる
。
有効F/F群(Valid F/F)323は、16
個のF/Fで、ツユ−チャの値(フユーチャF/Fiの
値が1の時Yi、Oの時Xiの値)が有効な時1、そう
でないとき0となる。
個のF/Fで、ツユ−チャの値(フユーチャF/Fiの
値が1の時Yi、Oの時Xiの値)が有効な時1、そう
でないとき0となる。
ID F/F群324は、16個で2ビツトのF/F
で、ツユ−チャの値が有効なとき、その値を書き込んだ
命令のID番号を示す。
で、ツユ−チャの値が有効なとき、その値を書き込んだ
命令のID番号を示す。
GRアドレス生成回路309は、これらF/F群(32
2〜324)の値、バイブラインレジスタの汎用レジス
タのアクセス情報(310〜313)およびIDレジス
タの値(314〜316)をもとに汎用レジスタファイ
ル302の読み出し/書込み信号(318〜321)や
F/F群の値の更新の制御を次のようにして行う。
2〜324)の値、バイブラインレジスタの汎用レジス
タのアクセス情報(310〜313)およびIDレジス
タの値(314〜316)をもとに汎用レジスタファイ
ル302の読み出し/書込み信号(318〜321)や
F/F群の値の更新の制御を次のようにして行う。
1.5EP17で実行されるIR全命令実行に必要なソ
ースオペランドのレジスタRi (SEPR34の#
5rc62で指定される)は、対応する有効F/Fi−
1の時は、ツユ−チャの値(ツユ−チャF / F i
の値が1の時Yi、Qの時Xiの値)、有効F/F i
−0の時は、カレントの値(ツユ−チャF / F i
の値が1の時Xi、0の時Yiの値)とする。
ースオペランドのレジスタRi (SEPR34の#
5rc62で指定される)は、対応する有効F/Fi−
1の時は、ツユ−チャの値(ツユ−チャF / F i
の値が1の時Yi、Qの時Xiの値)、有効F/F i
−0の時は、カレントの値(ツユ−チャF / F i
の値が1の時Xi、0の時Yiの値)とする。
2.5EP17で実行されるIR全命令実行結果を格納
するディスティネーションのレジスタRi(SEPR3
4の#dest6Bで指定される)は、先行命令が無い
(実行が終了している。V7g−VS2−V96−VI
OI−0)場合には、カレント(ツユ−チャF/Fiの
値が1の時Xi、Qの時Yi) 、そうでないときには
ツユ−チャ(ツユ−チャF/Fiの値が1の時Yi、
0の時Xi)とする。
するディスティネーションのレジスタRi(SEPR3
4の#dest6Bで指定される)は、先行命令が無い
(実行が終了している。V7g−VS2−V96−VI
OI−0)場合には、カレント(ツユ−チャF/Fiの
値が1の時Xi、Qの時Yi) 、そうでないときには
ツユ−チャ(ツユ−チャF/Fiの値が1の時Yi、
0の時Xi)とする。
3.0AG (実行アドレス算出)ステージに必要な汎
用レジスタRi (OAGR30のAiode73、
Areg74で指定される)は、対応する有効F/Fi
−1の時は、ツユ−チャの値(ツユ−チャF/ F i
)値が1の時Yi、、oの時Xiの値)、有効F/F
i−0の時は、カレントの値(ツユ−チャF / F
iの値が1の時Xi、Qの時Yiの値)とする。
用レジスタRi (OAGR30のAiode73、
Areg74で指定される)は、対応する有効F/Fi
−1の時は、ツユ−チャの値(ツユ−チャF/ F i
)値が1の時Yi、、oの時Xiの値)、有効F/F
i−0の時は、カレントの値(ツユ−チャF / F
iの値が1の時Xi、Qの時Yiの値)とする。
4、IEP(命令実行)ステージに必要なソースオペラ
ンド(CCUR3のR/M189、# 5RC90で指
定される)は、対応する有効F / F i −1の時
は、ツユ−チャの値(ツユ−チャF / F iの値が
1の時Yi、Qの時Xiの値)、有効F/Fi−Qの時
は、カレントの値(ツユ−チャF/Fiの値が1の時X
i、Qの時Yiの値)とする。
ンド(CCUR3のR/M189、# 5RC90で指
定される)は、対応する有効F / F i −1の時
は、ツユ−チャの値(ツユ−チャF / F iの値が
1の時Yi、Qの時Xiの値)、有効F/Fi−Qの時
は、カレントの値(ツユ−チャF/Fiの値が1の時X
i、Qの時Yiの値)とする。
ただし有効F/Fi=1の時でも対応するIDF/F〜
ID4 307の時は、ソースオペラ・ンドの読み出し
は待たされる。
ID4 307の時は、ソースオペラ・ンドの読み出し
は待たされる。
5、IEP(命令実行)ステージでIc命令が終了する
時には、そのIC命令と同じID番号を持ち、なおかつ
有効F / F i −1の汎用レジスタR1のツユ−
チャF / F iの値を反転し、また有効F/Fiを
0にリセットする。
時には、そのIC命令と同じID番号を持ち、なおかつ
有効F / F i −1の汎用レジスタR1のツユ−
チャF / F iの値を反転し、また有効F/Fiを
0にリセットする。
6.5EP17で実行されるIR全命令実行結果のレジ
スタRi (SEPR34の#dest63で指定され
る)のツユ−チャ(ツユ−チャF / F iの値が1
の時Yi、Oの時Xi)が、このIR全命令異なるID
番号〜IDF/Fiの場合)には、この1r命令の実行
は待たされる。
スタRi (SEPR34の#dest63で指定され
る)のツユ−チャ(ツユ−チャF / F iの値が1
の時Yi、Oの時Xi)が、このIR全命令異なるID
番号〜IDF/Fiの場合)には、この1r命令の実行
は待たされる。
7.5EP17で実行されるIR全命令実行結果のフラ
グ(Flg)、エラー情報(E rror)およびPC
は、ステータスファイル301のIDIレジスタ304
の値317で示されるエントリーに一時書き込まれる。
グ(Flg)、エラー情報(E rror)およびPC
は、ステータスファイル301のIDIレジスタ304
の値317で示されるエントリーに一時書き込まれる。
そのエントリ番号と同じID番号のIc命令の実行終了
時にそれらの値がFlgll 5、 E rrorl
16、PC117にセットされ、更新される。
時にそれらの値がFlgll 5、 E rrorl
16、PC117にセットされ、更新される。
以上のようにして汎用レジスタファイル302の読み出
し/書込み信号(318〜321)やF/F群の更新の
制御を行うことにより、比較的簡単なハードウェアで、
本発明の目的を達成することができる。
し/書込み信号(318〜321)やF/F群の更新の
制御を行うことにより、比較的簡単なハードウェアで、
本発明の目的を達成することができる。
従って、第一実施例の場合、割込みが発生した場合に、
ツユ−チャフアイル14の値をカレントファイル13の
値に戻す必要があり、これに最低16サイクルを必要で
(汎用レジスタが16本の場合)、これがオーバーヘッ
ドとなり性能低下の原因となっていたが、第二実施例の
場合、1つの汎用レジスタ302で行っているため、割
り込みの発生に対しても、値の移し換えの必要がないも
のであり、性能低下は起こらない。
ツユ−チャフアイル14の値をカレントファイル13の
値に戻す必要があり、これに最低16サイクルを必要で
(汎用レジスタが16本の場合)、これがオーバーヘッ
ドとなり性能低下の原因となっていたが、第二実施例の
場合、1つの汎用レジスタ302で行っているため、割
り込みの発生に対しても、値の移し換えの必要がないも
のであり、性能低下は起こらない。
また、第一実施例の場合、プログラムシーケンス順で後
続する命令が先行する命令を飛び越して実行できる命令
数は、リオーダバッファ15のエントリ数によって制限
される。すなわちエントリ数が小さければ性能が低下し
、またエントリ数を大きくするとハード量が増加してし
まう。
続する命令が先行する命令を飛び越して実行できる命令
数は、リオーダバッファ15のエントリ数によって制限
される。すなわちエントリ数が小さければ性能が低下し
、またエントリ数を大きくするとハード量が増加してし
まう。
それに対し、第二実施例の場合は、一つの汎用レジスタ
302においてXパートとYパートの役割を切り替えて
書込み読み出しを制御しているため、飛び越して実行で
きる命令数を大きくすることができる。
302においてXパートとYパートの役割を切り替えて
書込み読み出しを制御しているため、飛び越して実行で
きる命令数を大きくすることができる。
また、第一実施例の場合、高速分岐の手法として分岐予
測を行う場合には、分岐予測が失敗した場合に汎用レジ
スタの値を元に戻すのに最低16サイクルを必要で、こ
れがオーバーヘッドとなり性能低下の原因となっていた
が、第二実施例の場合、汎用レジスタの値を元に戻す必
要がないものである。
測を行う場合には、分岐予測が失敗した場合に汎用レジ
スタの値を元に戻すのに最低16サイクルを必要で、こ
れがオーバーヘッドとなり性能低下の原因となっていた
が、第二実施例の場合、汎用レジスタの値を元に戻す必
要がないものである。
[発明の効果]
以上説明したように、この発明によれば、第1の種類の
命令と第2の種類の命令を、パイプライン方式によりそ
れぞれ独立して並列実行処理するようにしたので、バイ
ブラインにおける所定のステージでの稼働率の低下を防
止するとともに、バイブラインの乱れを抑制することが
可能となる。
命令と第2の種類の命令を、パイプライン方式によりそ
れぞれ独立して並列実行処理するようにしたので、バイ
ブラインにおける所定のステージでの稼働率の低下を防
止するとともに、バイブラインの乱れを抑制することが
可能となる。
これにより、性能を大幅に向上させたマイクロプロセッ
サを提供することができる。
サを提供することができる。
第1図は、本発明を実施したマイクロプロセッサの内部
全体構造を示すブロック図、 第2図は、第1図に示したマイクロプロセッサにおける
要部ブロック図、 第3図は、第2図に示すブロック図の各ブロックの内部
をさらに詳細に示したブロック図、第4図は、第3図に
おけるI IL、RB、CF。 FFの詳細図、 第5図は、第4図における制御回路の詳細図、第6図は
、第5図に示す状態制御回路の詳細図、第7図および第
8図は、本発明の実施例におけるパイプライン処理動作
のタイミング図、第9図は、本発明の実施例を適用した
MPUと周辺LSIから成るシステム構成図、 第10図は、本発明に従うマイクロプロセッサの第二実
施例の要部構成図、 第11図は、第10図におけるGRコントロール回路の
詳細図、 第12図および第13図は、従来例におけるバイブライ
ン処理動作のタイミング図である。 1・・・命令フェッチユニット(IFU)2・・・デコ
ードユニット(D CU)3・・・命令発行ユニット(
IIU) 4・・・命令実行ユニット(EXU) 5・・・メモリ管理ユニット(MMU)6・・・キャッ
シュ制御ユニット(CCU)7・・・人出力部(I 1
0) 10・・・命令デコーダ 11・・・デコード済命令ループバッファ(D I L
)12・・・命令発行制御回路(IIL)13・・・カ
レントファイル(CF) 14・・・ツユ−チャフアイル(F F)15・・・リ
オーダバッファ(RB) 17・・・基本命令実行部(S E P)18・・・高
機能命令実行部(IEP)20・・・実行アドレス生成
部(OAG)21・・・アドレス変換バッファ(TLB
)23・・・データキャッシュメモリ
全体構造を示すブロック図、 第2図は、第1図に示したマイクロプロセッサにおける
要部ブロック図、 第3図は、第2図に示すブロック図の各ブロックの内部
をさらに詳細に示したブロック図、第4図は、第3図に
おけるI IL、RB、CF。 FFの詳細図、 第5図は、第4図における制御回路の詳細図、第6図は
、第5図に示す状態制御回路の詳細図、第7図および第
8図は、本発明の実施例におけるパイプライン処理動作
のタイミング図、第9図は、本発明の実施例を適用した
MPUと周辺LSIから成るシステム構成図、 第10図は、本発明に従うマイクロプロセッサの第二実
施例の要部構成図、 第11図は、第10図におけるGRコントロール回路の
詳細図、 第12図および第13図は、従来例におけるバイブライ
ン処理動作のタイミング図である。 1・・・命令フェッチユニット(IFU)2・・・デコ
ードユニット(D CU)3・・・命令発行ユニット(
IIU) 4・・・命令実行ユニット(EXU) 5・・・メモリ管理ユニット(MMU)6・・・キャッ
シュ制御ユニット(CCU)7・・・人出力部(I 1
0) 10・・・命令デコーダ 11・・・デコード済命令ループバッファ(D I L
)12・・・命令発行制御回路(IIL)13・・・カ
レントファイル(CF) 14・・・ツユ−チャフアイル(F F)15・・・リ
オーダバッファ(RB) 17・・・基本命令実行部(S E P)18・・・高
機能命令実行部(IEP)20・・・実行アドレス生成
部(OAG)21・・・アドレス変換バッファ(TLB
)23・・・データキャッシュメモリ
Claims (7)
- (1)デコードされた命令のうち同一の処理過程を経て
実行処理される第1の種類の命令をマイクロプログラム
制御により実行処理する第1の実行処理手段と、 前記第1の種類の命令と処理過程が異なる第2の種類の
命令をハードワイヤード制御により実行処理する第2の
実行処理手段と、 デコードされた命令をプログラムシーケンスの順序で発
行して、発行した命令を前記第1の実行処理手段および
前記第2の実行処理手段のどちらで実行処理するかを選
択決定し、前記第1の実行処理手段と前記第2の実行処
理手段を独立にしかも並行して動作させる制御手段と を有することを特徴とするマイクロプロセッサ。 - (2)前記第1の実行処理手段あるいは前記第2の実行
処理手段により命令の実行が終了すると、前記第1の実
行処理手段あるいは前記第2の実行処理手段よりの実行
結果を直ちに書込むための第1の情報保持手段と、 前記制御手段のプログラムシーケンス順序に従って前記
第1の実行処理手段および前記第2の実行処理手段より
の実行結果を順序正しく書込むための第2の情報保持手
段と をさらに有することを特徴とする請求項(1)記載のマ
イクロプロセッサ。 - (3)前記制御手段により発行された命令に関する情報
及びプログラムシーケンスにおける命令の実行/終了状
態に関する情報を保持し、前記制御手段のプログラムシ
ーケンス順序に従って順次正しく前記第2の情報保持手
段を更新するための第3の情報保持手段を さらに有することを特徴とする請求項(2)記載のマイ
クロプロセッサ。 - (4)前記第1の種類の命令が、メモリオペランドを有
する処理の複雑な高機能命令であり、前記第2の種類の
命令が、メモリオペランドを持たない基本命令であるこ
とを特徴とする請求項(1)に記載のマイクロプロセッ
サ。 - (5)プログラムシーケンスでは先の前記第一の命令実
行処理手段で実行処理される第1の種類の命令より、プ
ログラムシーケンスでは後の前記第二の命令実行処理手
段で実行処理される第2の種類の命令の方が先に実行処
理を終了することを特徴とする請求項(1)に記載のマ
イクロプロセッサ。 - (6)前記第一の情報保持手段および前記第二の情報保
持手段の役割が固定的ではなく、前記第一の情報保持手
段の記憶要素および前記第二の情報保持手段の記憶要素
対ごとに、ダイナミックにその役割が切替わることを特
徴とする請求項(2)に記載のマイクロプロセッサ。 - (7)前記第一の命令実行処理手段で実行処理される命
令および、その命令にプログラムシーケンス上で後続す
る前記第二の命令実行処理手段で実行処理される命令(
列)に対して、同一の認識番号を付加する手段と、 前記第一の命令実行処理手段で実行処理中の命令の認識
番号を保持する第四の情報保持手段と、前記第一の情報
保持手段の記憶要素および前記第二の情報保持手段の記
憶要素の役割等の情報を保持する第五の情報保持手段と
、 前記第一の情報保持手段および前記第二の情報保持手段
の読み出し/書き込み信号および前記第五の情報保持手
段の更新を行う更新手段と をさらに有することを特徴とする請求項(6)に記載の
マイクロプロセッサ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1083243A JPH07120283B2 (ja) | 1988-04-01 | 1989-03-31 | マイクロプロセッサ |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63-78207 | 1988-04-01 | ||
| JP7820788 | 1988-04-01 | ||
| JP1083243A JPH07120283B2 (ja) | 1988-04-01 | 1989-03-31 | マイクロプロセッサ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0242534A true JPH0242534A (ja) | 1990-02-13 |
| JPH07120283B2 JPH07120283B2 (ja) | 1995-12-20 |
Family
ID=26419293
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1083243A Expired - Fee Related JPH07120283B2 (ja) | 1988-04-01 | 1989-03-31 | マイクロプロセッサ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH07120283B2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5469552A (en) * | 1990-11-21 | 1995-11-21 | Matsushita Electric Industrial Co., Ltd. | Pipelined data processor having combined operand fetch and execution stage to reduce number of pipeline stages and penalty associated with branch instructions |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5110746A (ja) * | 1974-07-17 | 1976-01-28 | Hitachi Ltd | |
| JPS6349843A (ja) * | 1986-08-18 | 1988-03-02 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 縮小命令セット・コンピュ−タ |
-
1989
- 1989-03-31 JP JP1083243A patent/JPH07120283B2/ja not_active Expired - Fee Related
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5110746A (ja) * | 1974-07-17 | 1976-01-28 | Hitachi Ltd | |
| JPS6349843A (ja) * | 1986-08-18 | 1988-03-02 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | 縮小命令セット・コンピュ−タ |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5469552A (en) * | 1990-11-21 | 1995-11-21 | Matsushita Electric Industrial Co., Ltd. | Pipelined data processor having combined operand fetch and execution stage to reduce number of pipeline stages and penalty associated with branch instructions |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH07120283B2 (ja) | 1995-12-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5155817A (en) | Microprocessor | |
| JP2616182B2 (ja) | データ処理装置 | |
| US4648034A (en) | Busy signal interface between master and slave processors in a computer system | |
| EP4209915A1 (en) | Register file prefetch | |
| US12028094B2 (en) | Application programming interface for fine grained low latency decompression within processor core | |
| US20250117329A1 (en) | Instruction and Micro-Architecture Support for Decompression on Core | |
| JPH07281896A (ja) | 情報処理装置 | |
| JPH0215369A (ja) | ベクター処理システムの命令を実行する方法及び装置 | |
| EP4020231B1 (en) | Speculative decompression within processor core caches | |
| EP4020223B1 (en) | Increasing per core memory bandwidth by using forget stores | |
| US6378023B1 (en) | Interrupt descriptor cache for a microprocessor | |
| JP2847974B2 (ja) | データ処理装置 | |
| US20210089305A1 (en) | Instruction executing method and apparatus | |
| JP2669158B2 (ja) | データ処理装置 | |
| US7721074B2 (en) | Conditional branch execution in a processor having a read-tie instruction and a data mover engine that associates register addresses with memory addresses | |
| US7721073B2 (en) | Conditional branch execution in a processor having a data mover engine that associates register addresses with memory addresses | |
| JP2668456B2 (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
| JPH04109339A (ja) | レジスタ番地指定回路及びそれを備えたデータ処理装置 | |
| JP2504312B2 (ja) | プライオリティエンコ―ダ及びそれを備えたデ―タ処理装置 | |
| JPH0242534A (ja) | マイクロプロセッサ | |
| EP0385136A2 (en) | Microprocessor cooperating with a coprocessor | |
| US12147707B2 (en) | Buffer circuitry for store to load forwarding | |
| US7721075B2 (en) | Conditional branch execution in a processor having a write-tie instruction and a data mover engine that associates register addresses with memory addresses | |
| JPS6160459B2 (ja) | ||
| JP2646855B2 (ja) | データ処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |