JP2668987B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JP2668987B2
JP2668987B2 JP63248108A JP24810888A JP2668987B2 JP 2668987 B2 JP2668987 B2 JP 2668987B2 JP 63248108 A JP63248108 A JP 63248108A JP 24810888 A JP24810888 A JP 24810888A JP 2668987 B2 JP2668987 B2 JP 2668987B2
Authority
JP
Japan
Prior art keywords
instruction
execution
operand
memory
register
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 - Lifetime
Application number
JP63248108A
Other languages
English (en)
Other versions
JPH0296234A (ja
Inventor
正人 鈴木
雅士 出口
幸伸 西川
隆 坂尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP63248108A priority Critical patent/JP2668987B2/ja
Publication of JPH0296234A publication Critical patent/JPH0296234A/ja
Application granted granted Critical
Publication of JP2668987B2 publication Critical patent/JP2668987B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、コンピュータの高速化を目的としたデータ
処理装置に関するものである。
従来の技術 従来のデータ処理装置としては、例えば、元岡達「計
算機システム技術」,(昭48.4.20),オーム社,P93〜9
9に示されている。
第10図はこの従来のデータ処理装置の構成図を示すも
のである。第10図において、11は命令コードの先読みを
行なう命令先読み装置、12は命令解読装置、13はオペラ
ンドのアドレス計算を行なうアドレス計算装置、14はオ
ペランドの先読みを行なうオペランド先読み装置、15は
演算装置、16はメモリ・I/Oなどを接続する入出力バ
ス、17は命令先読み装置11、オペランド先読み装置14、
およびオペランドの書込み時の演算装置15からの要求を
調停し入出力バス16を制御を行なうバス制御装置であ
る。
命令解読装置12は、命令先読み装置11により先読みさ
れた命令コードを解読し、命令実行に関する制御情報
と、メモリオペランドのフェッチを伴う場合はオペラン
ドのアドレス計算および先読みのための制御情報を、ま
たメモリへの書込みを伴う場合はオペランドのアドレス
計算のための制御情報を、アドレス計算装置13に発行す
る。
アドレス計算装置13は、オペランドのアドレス計算を
行ない、オペランドアドレスとメモリ参照に伴う制御情
報と命令実行に関する制御情報をオペランド先読み装置
14に送出する。
オペランド先読み装置14は、メモリオペランドのフェ
ッチが必要な場合はバス制御装置17へ要求を出し、アド
レス計算装置13より受け取ったオペランドアドレスに従
ってオペランドの先読みを行なう。バス制御装置17より
受け取ったオペランドの先読みデータ、アドレス計算装
置13より受け取ったメモリへの書込みを伴う場合のオペ
ランドの書込みアドレスおよび命令実行に関する制御情
報は、演算装置15に送出する。
演算装置15は、オペランド先読み装置14より受け取っ
た先読みデータおよび命令実行に関する制御情報に従っ
て演算を実行する。また、演算結果のメモリへの書込み
を必要とする場合は、バス制御装置17へ要求を出し、オ
ペランド先読み装置14より受け取った書込みアドレスに
従って演算結果のメモリへの書込みを行なう。
以上のように構成された従来のデータ処理装置につい
て、以下その動作を説明する。
第11図は動作タイミング図を示すものである。命令先
読み装置11、命令解読装置12、アドレス計算装置13、オ
ペランド先読み装置14、および演算装置15において実行
されている命令をクロック単位で示している。ここで、
命令先読み装置11は内部にキャッシュメモリを持ち、各
装置の必要クロック数が、命令先読み装置11(1クロッ
ク)、命令解読装置12(1クロック)、アドレス計算装
置13(1クロック)、オペランド先読み装置14(3クロ
ック)、および演算装置15(1クロック)の場合を示し
ている。実行している命令シーケンスは、メモリオペラ
ンドのフェッチが必要な命令に続いて2命令のメモリオ
ペランドのフェッチが不要な命令を実行し、この3命令
の繰り返しとなっている。具体的には、命令1,4がメモ
リオペランドのフェッチが必要な命令であり、命令2,3,
5,6がメモリオペランドのフェッチが不要な命令であ
る。またパイプラインの初期状態は空状態(例えば条件
分岐時)としている。命令1は、クロックt1に命令先読
み装置11で命令コードの先読みが行なわれ、命令コード
を命令解読装置12に発行する。クロックt2に命令解読装
置12で命令解読が行なわれ、命令実行に関する制御情報
とオペランドのアドレス計算および先読みのための制御
情報をアドレス計算装置13へ発行する。クロックt3にア
ドレス計算装置13でオペランドのアドレス計算および先
読みのための制御情報に従ってオペランドのアドレス計
算が行なわれ、オペランドアドレスとメモリ参照に伴う
制御情報と命令実行に関する制御情報をオペランド先読
み装置14へ送出する。クロックt4〜t6にオペランド先読
み装置14でオペランドアドレスおよびメモリ参照に伴う
制御情報に従ってオペランドの先読みが行なわれ、先読
みデータと命令実行に関する制御情報を演算装置15へ送
出する。クロックt7に演算装置15において命令実行に関
する制御装置に従って演算を実行する、命令2は、クロ
ックt2に命令先読み装置11で命令コードの先読みが行な
われ、クロックt3に命令解読装置12で命令解読が行なわ
れ、メモリオペランドのフェッチが不要な命令のため命
令実行に関する制御情報だけをアドレス計算装置13へ発
行する。クロックt4にアドレス計算装置13のステージを
通るが、オペランドのアドレス計算および先読みのため
の制御情報が無いため何も行なわず、命令実行に関する
制御情報をオペランド先読み装置14へ送出しようとす
る。しかし、命令1のオペランド先読み装置14での実行
が完了していないために、命令実行に関する命令2の制
御情報の送出はクロックt7まで遅延される。クロックt7
にオペランド先読み装置t4のステージを通るが、オペラ
ンドのアドレス計算および先読みのための制御情報が無
いため何も行なわず、命令実行に関する制御情報を演算
装置15へ送出する。クロックt8に演算装置15において命
令実行に関する制御情報に従って演算を実行する。
しかしながら上記のような構成では、メモリオペラン
ドのフェッチが不要なレジスタ間演算等の命令において
も、オペランドのアドレス計算や先読み等のパイプライ
ンステージの不必要な通過が必要となり、このため分岐
時等のパイプラインの乱れが発生した場合、パイプライ
ンの充填のためのオーバーヘッドが発生する。また、メ
モリオペランドのフェッチが不要な命令のパイプライン
ステージの不必要な通過により本来オペランドのフェッ
チが必要な命令のオペランドアクセスのためのバス帯域
を制限するという課題を有していた。
そこで上記の課題を解決するために例えば次のような
特許(特開昭63−167935)が出願されている。
第12図はそのデータ処理装置の構成図を示すものであ
る。第12図において、18は命令コードの先読みを行なう
命令先読み装置、19は命令解読装置、20はオペランドの
アドレス計算を行なうアドレス計算装置、21はオペラン
ドの先読みを行なうオペランド先読み装置、22は演算制
御装置、23は演算装置、24はメモリ・I/Oなどを接続す
る入出力バス、25は命令先読み装置18、オペランド先読
み装置21およびオペランドの書込み時の演算装置23から
の要求を調停し入出力バス24の制御を行なうバス制御装
置である。
命令解読装置19は、命令先読み装置18により先読みさ
れた命令コードを解読し、メモリオペランドのフェッチ
を伴う場合はオペランドのアドレス計算および先読みの
ための制御情報を、またメモリへの書込みを伴う場合は
オペランドのアドレス計算のための制御情報をアドレス
計算装置20に発行する。また、命令実行に関する制御情
報は演算制御装置22に発行する。
アドレス計算装置20は、オペランドのアドレス計算を
行ない、オペランドアドレスとメモリ参照に伴う制御情
報をオペランド先読み装置21に送出する。
オペランド先読み装置21は、メモリオペランドのフェ
ッチが必要な場合はバス制御装置25へ要求を出し、アド
レス計算装置20より受け取ったオペランドアドレスに従
ってメモリの先読みを行ない、読出したデータのキュー
イングを行う。また、メモリへの書込みが必要な場合は
オペランドアドレスのキューイングを行う。先読みデー
タおよび書込みアドレスのキューイングの状態は演算制
御装置22に通知される。
演算制御装置22は、命令解読装置19より受け取った演
算装置23の制御情報のキューイングを行うう。また、演
算装置23からの要求に従って制御情報を発行する。この
時、発行する制御情報が先読みデータまたは書込みアド
レスを必要とする場合は、オペランド先読み装置21の先
読みデータおよび書込みアドレスのキューイングの状態
の確認を行なう。準備が完了していない場合、演算装置
23への制御情報の発行は先読みデータまたは書込みアド
レスの準備が完了するまで遅延させる。
演算装置23は、演算制御装置22より受け取った制御情
報およびオペランド先読み装置21より受け取った先読み
データに従って演算を実行する。また、演算結果のメモ
リへの書込みを必要とする場合はバス制御装置25へ要求
を出し、オペランド先読み装置21より受け取った書込み
アドレスに従って演算結果のメモリへの書込みを行う。
以上のように構成された第2の従来のデータ処理装置
について、以下その動作を説明する。
第13図は動作タイミング図を示すものである。命令先
読み装置18、命令解読装置19、アドレス計算装置20、オ
ペランド先読み装置21、および演算装置23におい実行さ
れている命令をクロック単位で示している。ここで、命
令先読み装置18は内部にキャッシュメモリを持ち、各装
置の必要クロック数が、命令先読み装置18(1クロッ
ク)、命令解読装置19(1クロック)、アドレス計算装
置20(1クロック)、オペランド先読み装置21(3クロ
ック)、および演算装置23(1クロック)の場合を示し
ている。実行している命令シーケンスは、第11図の動作
タイミング図に示した命令シーケンスと同じであり、メ
モリオペランドのフェッチが必要な命令に続いて2命令
のメモリオペランドのフェッチが不要な命令を実行し、
この3命令の繰り返しとなっている。具体的には、命令
1,4がメモリオペランドのフェッチが必要な命令であ
り、命令2,3,5,6がメモリオペランドのフェッチが不要
な命令である。また、パイプラインの初期状態は空状態
(例えば条件分岐時)としている。命令1は、クロック
t1に命令先読み装置18で命令コードの先読みが行なわ
れ、命令コードを命令解読装置19に発行する。クロック
t2に命令解読装置19で命令解読が行なわれ、オペランド
のアドレス計算および先読みのための制御情報をアドレ
ス計算装置20へ発行し、命令実行に関する制御情報を演
算制御装置22へ発行する。しかし、データの準備が完了
していないために、命令実行に関する制御情報は演算制
御装置22にキューイングされた状態で演算装置23への発
行は遅延される。オペランドのアドレス計算および先読
みのための制御情報に従って、クロックt3にアドレス計
算装置20でオペランドのアドレス計算が行なわれ、クロ
ックt4〜t6にオペラド先読み装置21でオペランドの先読
みが行なわれる。データの準備が完了したことにより演
算制御装置22においてキューイングされている命令実行
に関する制御情報が発行され、クロックt7に演算装置23
において実行される。命令2は、クロックt2に命令先読
み装置18で命令コードの先読みが行なわれ、クロックt3
に命令解読装置19で命令解読が行なわれ、メモリオペラ
ンドのフェッチが不要な命令のため命令実行に関する制
御情報だけを演算制御装置22へ発行する。しかし、命令
1のための制御情報の発行が完了していないために、命
令実行に関する命令2の制御情報は演算制御装置22にキ
ューイングされた状態で演算装置23への発行はクロック
t8まで遅延される。
以上に示す第2の従来例によれば、メモリオペランド
のフェッチが不要なレジスタ間演算等の命令において
は、オペランドのアドレス計算や先読み等のパイプライ
ンステージの不必要な通過が不要となり、このため分岐
等のパイプラインの乱れが発生した場合においても、パ
イプラインの充填のためのオーバヘッドは発生しない。
また、メモリオペランドのフェッチが不要な命令のパイ
プラインステージの不必要な通気により生じる本来オペ
ランドのフェッチが必要な命令のオペランドアクセスの
ためのバス帯域の制限も解消される。
発明が解決しようとする課題 しかしながら上記のような構成では、オペランドフェ
ッチの必要な命令の次にメモリへの書込みを必要とする
命令が続く場合、後者の命令の演算ステージは、たとえ
その演算に前者の命令の実行結果を用いなくても、前者
の命令のオペランド先読みステージと演算ステージが完
了するまで待たなければならない。さらに、オペランド
フェッチもメモリへの書込みも必要としない命令が続く
場合、その命令の演算ステージは、オペランドフェッチ
の必要な命令の実行結果を用いなくても、先行するオペ
ランドフェッチの必要な命令のオペランド先読みステー
ジおよび演算ステージと、先行するメモリへの書込みを
必要とする命令の演算ステージが完了するまで待たなけ
ればならない。また、メモリへの書込みを必要とする命
令にオペランドフェッチの必要な命令が続く場合、後者
の命令の演算ステージは、たとえその演算に前者の命令
の実行結果を用いなくても、前者の命令のオペランド先
読みステージと演算ステージが完了するまで待たなけれ
ばならない。さらに、オペランドフェッチもメモリへの
書込みも必要としない命令が続く場合、その命令の演算
ステージは、オペランドフェッチの必要な命令の実行結
果を用いなくても、先行するメモリへの書込みを必要と
する命令の演算ステージと、先行するオペランドフェッ
チの必要な命令のオペランド先読みステージおよび演算
ステージが完了するまで待たなければならない。このよ
うに、プログラム中に頻出するオペランドフェッチの必
要な命令とメモリへの書込みを必要とする命令が連続す
ると実行クロック数が増大し、後続するレジスタ間演算
命令等のオペランドフェッチもメモリへの書込みも必要
としない命令の実行が遅れてしまうという第1の課題を
有していた。この課題を第14図の動作タイミング図で説
明する。各装置の必要クロック数は第13図に示すものと
同じである。ただし、オペランド先読み装置21における
書込みアドレスのキューイングは1クロック、演算装置
23における演算とメモリへの書込みは4クロックとす
る。第14図は命令のシーケンスとして、オペランドフェ
ッチの必要な命令(命令1)、レジスタのメモリへの書
込みを行なう命令(命令2)、オペランドフェッチもメ
モリへの書込みも必要としない命令(命令3)が続く場
合を示している、命令1はクロックt3でアドレスが計算
され、クロックt4〜t6でオペランドをフェッチし、クロ
ックt7で演算される。しかし、命令2はクロックt4でア
ドレスが計算された後、命令1の演算ステージの完了を
待たねばならず、クロックt8〜t11で演算とメモリへの
書込みが行なわれる。命令3の演算はクロックt12まで
遅れる。
本発明はかかる点に鑑み、オペランドフェッチの必要
な命令とメモリへの書込みを必要とする命令が連続して
も両命令が並列に実行でき、後続するレジスタ間演算命
令等のオペランドフェッチもメモリへの書込みも必要と
しない命令の実行が遅れることのないデータ処理装置を
提供することを目的とする。
また従来の構成では、オペランドフェッチの必要な命
令が一度実行されると、以降の命令の演算ステージはそ
の命令がオペランドフェッチの不要な命令であっても、
命令先読みステージから時間的に離れてしまう。そのた
めに、演算ステージに空きが生じ、空状態のパイプライ
ンから最初に出現するオペランドフェッチの必要な命令
の実行クロック数は1クロックとはならず、アドレス計
算装置20とオペランド先読み装置21と演算装置23の必要
クロック数の和になるという第2の課題を有していた。
さらに、条件分岐命令が後続する場合は、分岐先命令の
命令先読みステージが遅れるためパイプラインのインタ
ロック時間が長くなり、パイプラインの効率が大きく低
下するという第3の課題を有していた。第2の課題を第
15図の動作タイミング図で、第3の課題を第16図の動作
タイミング図で説明する。両図とも各装置の必要なクロ
ック数は第13図に示すものと同じである。第15図は命令
のシーケンスとして、オペランドフェッチの不要な2つ
の命令(命令1、命令2)に続いて、オペランドフェッ
チの必要な1つの命令(命令3)、さらにオペランドフ
ェッチの不要な2つの命令(命令4、命令5)が続く場
合を示している。命令1および命令2はそれぞれクロッ
クt3、クロックt4で演算されるが、命令3はアドレス計
算ステージとオペランド先読みステージのため、クロッ
クt9で演算される。そのため、クロックt5〜t8の期間は
演算ステージに空きが生じ、空状態のパイプラインから
最初に出現するオペランドフェッチの必要な命令3の実
行クロック数は5クロックとなり、また命令4および命
令5の演算ステージは命令先読みステージから6クロッ
クだけ離れてしまう。第16図は命令のシーケンスとし
て、オペランドフェッチの必要な1つの命令(命令1)
とオペランドフェッチの不要な4つの命令(命令2〜命
令5)の後に、条件分岐命令(命令6)が続き、条件分
岐命令6では分岐が成立し、オペランドフェッチの不要
な命令(命令n)に分岐する場合を示している。命令1
がアドレス計算ステージとオペランド先読みステージを
必要とするため、以降の命令2から命令6の演算ステー
ジは命令先読みステージから6クロックだけ離れてしま
う。従って、分岐先命令nの命令先読みステージはクロ
ックt13となり、命令先読みステージにおいてパイプラ
インは、クロックt7〜t12の6クロックものインタロッ
クが発生することになる。このように従来の構成では、
プログラム中の頻度が20パーセントもある条件分岐命令
の出現は、パイプラインの効率の大きな低下を招くこと
になる。
本発明はかかる点に鑑み、オペランドフェッチの必要
な命令にオペランドフェッチの不要な命令が続く場合で
も、演算ステージに空きが生じず、空状態のパイプライ
ンから最初に出現するオペランドフェッチの必要な命令
の実行クロック数が1クロックとなり、さらに、条件分
岐命令が後続する場合も、パイプラインのインタロック
時間をオペランドフェッチの必要な命令がない場合と等
しく、パイプラインの効率の低下を最小にするデータ処
理装置を提供することを目的とする。
また従来の構成では、オペランドフェッチの不要な命
令の演算で書換えられるレジスタを後続するオペランド
フェッチの必要な命令のアドレス計算で読出す場合、そ
のアドレス計算ステージは、オペランドフェッチの不要
な命令の演算ステージが完了するまでインタロックし
(これをアドレス計算干渉という)、パイプラインの効
率が低下するという第4の課題を有していた。この課題
を第17図の動作タイミング図で説明する。各装置の必要
クロック数は第13図に示すものと同じである。第17図は
命令のシーケンスとして、オペランドフェッチの必要な
命令(命令1)に続いて、オペランドフェッチの不要な
2つの命令(命令2、命令3)、さらにオペランドフェ
ッチの必要な命令(命令4)が続き、かつ、命令3の演
算結果を命令4のアドレス計算で用いる場合を示してい
る。命令4のアドレス計算はアドレス計算干渉がなけれ
ばクロックt6で行なうことができるが、干渉のための命
令3の演算が完了する次のクロックt10まで待たされ
る。このように、アドレス計算ステージにおいてパイプ
ラインはクロックt6〜t9の4クロックものインタロック
が発生し、アドレス計算干渉はパイプラインの効率の低
下を招くことになる。
本発明はかかる点に鑑み、オペランドフェッチの不要
な命令の演算で書換えられるレジスタを後続するオペラ
ンドフェッチの必要な命令のアドレス計算で読出す場合
でも、インタロックが発生せず、従ってパイプラインの
効率が低下しないデータ処理装置を提供することを目的
とする。
また従来の構成では、複数のオペランドフェッチを必
要とする命令あるいは複数のオペランドのメモリへの書
込みを伴う場合が実行されると、その後に続く命令がた
とえオペランドフェッチが不要であり、かつ、複数のオ
ペランドフェッチを必要とする命令あるいは複数のオペ
ランドのメモリへの書込みを伴う命令の実行結果を必要
としない場合であっても、その命令の演算は、複数のオ
ペランドフェッチを必要とする命令あるいは複数のオペ
ランドのメモリへの書込みを伴う命令が完了するまでの
長い時間を待たなければならず、パイプラインの効率が
低下するという第5の課題を有していた。また、従来の
構成では、複数のオペランドフェッチを必要とする命令
あるいは複数のオペランドのメモリへの書込みを伴う命
令に続く命令が、複数のオペランドフェッチを必要とす
る命令あるいは複数のオペランドのメモリへの書込みを
伴う命令の実行結果を必要としないようにプログラムを
最適化するソフトウェアの性能を発揮させることができ
ないという第6の課題を有していた。第5、第6の課題
を第18図の動作タイミング図で説明する。各装置の必要
クロック数は第13図に示すものと同じである。第18図は
命令のシーケンスとして、3つのオペランドフェッチを
行なう命令(命令1)に、オペランドフェッチの不要な
2つの命令(命令2、命令3)が続き、かつ、命令2、
命令3はいずれも命令1の実行結果を必要としない場合
を示している。命令1はクロックt4〜t6で第1のオペラ
ンドの先読みを行ないクロックt7でそのオペランドをレ
ジスタR1に格納し、クロックt7〜t9で第2のオペランド
の先読みを行ないクロックt10でそのオペランドをレジ
スタR2に格納し、クロックt10〜t12で第3のオペランド
の先読みを行ないクロックt13でそのオペランドをレジ
スタR3に格納する。命令2の演算は、演算装置23がクロ
ックt4において使われておらず、かつ、命令2が命令1
の実行結果であるレジスタR1,R2,R3を用いないにもかか
わらず、命令1の第3の演算ステージの次のクロックt1
4まで待たされる。また、命令3の演算は、演算装置23
がクロックt5において使われておわず、命令3が命令1
の実行結果であるレジスタR1,R2,R3を用いないにもかか
わらず、クロックt15まで待たされる。このように、演
算装置23の長大な空き時間が生じ、パイプラインの効率
が著しく低下する。
本発明はかかる点に鑑み、複数のオペランドフェッチ
を必要とする命令あるいは複数のオペランドのメモリへ
の書込みを伴う命令が実行されても、その後に続く命令
がオペランドフェッチが不要であり、かつ、複数のオペ
ランドフェッチを必要とする命令あるいは複数のオペラ
ンドのメモリへの書込みを伴う命令の実行結果を必要と
しない場合であれば、その命令の演算を、複数のオペラ
ンドフェッチを必要とする命令あるいは複数のオペラン
ドのメモリへの書込みを伴う命令の演算と並行または先
行して行ない、パイプラインの効率を低下させないデー
タ処理装置を提供することを目的とする。また本発明
は、複数のオペランドフェッチを必要とする命令あるい
は複数のオペランドのメモリへの書込みを伴う命令に続
く命令が、複数のオペランドフェッチを必要とする命令
あるいは複数のオペランドのメモリへの書込みを伴う命
令の実行結果を必要としないようにプログラムを最適化
するソフトウェアの性能を発揮させるデータ処理装置を
提供するうことを目的とする。
以上に示した課題は、いずれもオペランド先読み装置
21の必要クロック数が増加するほど顕著になる。従っ
て、従来の構成において、オペランド先読み装置21にデ
ータ用のキャッシュメモリを備え、オペランド先読み装
置21のキャッシュヒット時の必要クロック数を減少させ
ることにより、第1から第6の課題をより軽少なものに
することは可能である。しかしながら、内蔵するキャッ
シュメモリの容量が増加するほどそのヒット率は向上す
るが、キャッシュメモリのアクセス時間が大きくなり、
オペランド先読み装置21のキャッシュヒット時の必要ク
ロック数を減少させることが困難になるという新たな第
7の課題を有していた。
本発明はかかる点に鑑み、キャッシュッモリの内蔵の
有無、キャッシュメモリのヒット率、キャッシュメモリ
の容量などによるオペランドの読出しや書込みに必要な
クロック数の増減に関わりなく、第1から第6の課題を
解決することができ、またオペランドの読出しや書込み
に必要なクロック数をレジスタ間演算の実行クロック数
とは独立に設定できるデータ処理装置を提供することを
目的とする。
また従来の構成では、演算制御装置22における先読み
データの待ち合わせ時間を短縮するために、命令解読装
置19は演算制御装置22に命令実行に関する制御情報を送
出するよりもできるだけ早い時点にアドレス計算装置20
にアドレス計算および先読みのための制御情報を送出す
る必要がある。そのため、命令解読装置19は制御が複雑
になる。また上記のような構成では、演算制御装置22に
おける先読みデータまたは書込みアドレスの待ち合わせ
のための複雑な制御が必要になる。このように、各装置
の制御が複雑化することに伴い制御回路の遅延時間が増
大し、プロセッサが動作するクロック周波数を向上させ
ることが容易ではないという第8の課題を有していた。
本発明はかかる点に鑑み、プロセッサが動作するクロ
ック周波数を容易に向上できるデータ処理装置を提供す
ることを目的とする。
また本発明は、本来逐次的に実行される先行命令と後続
命令とが並列に実行されたときでも逐次的に実行された
場合と何ら矛盾することなくフラグを更新することがで
きるデータ処理装置を提供することを目的とする。
さらに本発明は、本来正順に完了される先行例と接続
命令とが逆順に完了されたときでも正順に完了された場
合と何ら矛盾することなくフラグを更新することができ
るデータ処理装置を提供することを目的とする。
課題を解決するための手段 請求項1記載の発明は、少なくとも読出しステージと
解読ステージと実行ステージとからなり、前記実行ステ
ージはさらに直列な第一の実行ステージと第二の実行ス
テージとを含むパイプライン方式のデータ処理装置にお
いて、読出しステージとして作用する命令先読み手段
と、解読ステージとして作用する命令解読手段と、少な
くとも、第一の実行ステーとして作用する第一の命令実
行手段と、第二の実行ステージとして作用する第二の命
令実行手段とからなる命令実行手段とを備え、第一の命
令が、少なくとも前記第一の命令実行手段と前記第二の
命令実行手段においてこの順に処理される命令であっ
て、第一の命令に後続する第二の命令が、少なくとも前
記第一の命令実行手段において処理され、かつ前記第二
の命令実行手段での処理を必要としない命令であると
き、前記命令実行手段は、前記第二の命令実行手段が前
記第一の命令に係る処理を実行中であっても、前記第一
の命令実行手段において前記第二の命令に係る処理を行
い、かつ該処理で前記第二の命令のすべての処理を完了
することを特等とするデータ処理装置である。
請求項2記載の発明は、命令の先読みを行なう命令先
読み手段と、前記命令先読み手段によって読出された命
令の解読を行う命令解読手段と、前記命令解読手段の解
読結果に応じて命令の実行の処理を行う命令実行手段
と、命令実行手段の実行結果の状態を表すフラグを生成
するフラグ生成手段と、ステータスレジスタとを備え、
前記命令実行手段は、第一の命令に係る処理と、第一の
命令に後続する第二の命令に係る処理とを並列に行い、
前記フラグ生成手段は、前記命令実行手段において、前
記第一の命令に係る処理と前記第二の命令に係る処理と
が並列に実行される場合に、前記ステータスレジスタに
含まれるフラグのうち、前記第一の命令の実行により更
新され、かつ前記第二の命令の実行により更新されない
第一のフラグと、前記第二の命令の実行により更新され
る第二のフラグとを識別し、前記第一の命令の実行結果
に基づいて前記第一のフラグを生成し、前記第二の命令
の実行結果に基づいて前記第二のフラグを生成して、そ
れぞれ前記ステータスレジスタに反映することを特徴と
するデータ処理装置である。
請求項3記載の発明は、命令の先読みを行う命令先読
み手段と、前記命令先読み手段によって読出された命令
の解読を行う命令解読手段と、前記命令解読手段の解読
結果に応じて命令の実行の処理を行う命令実行手段と、
命令実行手段の実行結果の状態を表すフラグを生成する
フラグ生成手段と、ステータスレジスタとを備え、前記
命令実行手段は、第一の命令に係る処理と前記第一の命
令に後続する第二の命令に係る処理とをプログラムの順
序と関係ない順序で完了し、前記フラグ生成手段は、前
記命令実行手段において、前記第一の命令に係る処理が
前記第二の命令に係る処理の完了後に完了される場合
に、前記第一の命令の実行により更新され、かつ前記第
二の命令の実行により更新されなかったフラグを生成し
て前記ステータスレジスタに反映することを特徴とする
データ処理装置である。
作用 請求項1記載の発明は前記した構成により、第二の命
令実行手段における第一の命令に係る処理の完了を持つ
ことなく、第一の命令実行手段において第二の命令に係
るすべての処理を完了する。請求項2記載の発明は前記
した構成により、先行する第一の命令の実行により更新
されかつ後続する第二の命令の実行によって更新されな
い第一のフラグを識別した場合は、第一のフラグを第一
の命令の実行結果に基づいて生成してステータスレジス
タに反映し、先行する第一の命令の実行によって更新さ
れるかされないかに関わらず後続する第二の命令の実行
によって更新される第二のフラグを識別した場合は、第
二のフラグを第二の命令の実行結果に基づいて生成して
ステータスレジスタに反映する。
請求項3記載の発明は前記した構成により、前記第二
の命令に係る処理が完了される時点で、前記第二の命令
の実行により更新されるフラグを生成して前記ステータ
スレジスタに反映し、その後に前記第一の命令に係る処
理が完了される時点で、前記第一の命令の実行により更
新され、かつ前記第二の命令の実行により更新されなか
ったフラグを生成して前記ステータスレジスタに反映す
る。
実施例 第1図は本発明の実施例におけるデータ処理装置の構
成図を示すものである。第1図において、1は命令コー
ドの先読みを行なう命令先読み装置、2は命令解読装
置、3は第1演算装置、4はオペランドの読出しを行な
うオペランド読出し装置、5は第2演算装置、6はオペ
ランドのメモリへの書込みを行なうオペランド書込み装
置、7はメモリ・I/Oなどを接続する入出力バス、8は
命令先読み装置1およびオペランド読出し装置4からの
要求を調停し入出力バス7の制御を行なうバス制御装置
である。
命令解読装置2は、命令先読み装置1により先読みさ
れた命令コードを解読し、命令実行に関する制御情報、
メモリオペランドのフェッチを伴う場合のオペランドの
アドレス計算および読出しのための制御情報、メモリへ
の書込みを伴う場合のオペランドのアドレス計算および
書込みのための制御情報を第1演算装置3に発行する。
第1演算装置3は、命令がレジスタ間演算またはレジ
スタ・即値間演算の時は命令解読装置2より受け取った
制御情報に従って演算を実行する。命令がメモリオペラ
ンドのフェッチを伴う時は命令解読装置2より受け取っ
た制御情報に従ってオペランドのアドレス計算を行な
い、オペランドアドレスとメモリ参照に伴う制御情報と
命令実行に関する制御情報をオペランド読出し装置4に
送出する。また、命令がメモリへの書込みを伴う時は命
令解読装置21より受け取った制御情報に従って書込みア
ドレスの計算を行ない、書込みアドレスとメモリ書込み
に伴う制御情報をオペランド書込み装置6に送出する。
オペランド読出し装置4は、バス制御装置8へ要求を
出し、第1演算装置3より受け取ったオペランドアドレ
スに従ってメモリの読出しを行なう。読出したデータは
命令実行に関する制御情報とともに第2演算装置5に送
られる。
第2演算装置5は、オペランド読出し装置4より受け
取ったデータと命令実行に関する制御情報に従って演算
を実行する。演算結果は、第1演算装置3に返される。
オペランド書込み装置6は、第1演算装置3から書込
みデータを取りこみ、オペランド読出し装置4を通して
バス制御装置8へ要求を出し、第1演算装置3より受け
取った書込みアドレスに従って、メモリへの書込みを行
なう。
第2図は第1図に示す第1演算装置3、オペランド読
出し装置4、第2演算装置5およびオペランド書込み装
置6の詳細構成図を示すものである。第2図において、
301は命令解読装置2より受け取った命令実行に関する
制御情報やオペランドのアドレス計算のための制御情報
に従って第1演算装置3の制御を行なう演算制御回路、
302は汎用レジスタ、303は汎用レジスタ302の制御を行
なうレジスタ制御回路、304は汎用レジスタ302に格納さ
れたデータを演算する第1算術論理演算回路、305はス
テータレジスタ、306はステータレジスタ305が示す演算
結果のフラグ情報を生成するフラグ生成回路で、以上は
第1演算装置3に実装される。401はメモリの読出しを
行なうアドレスを保持する読出しアドレスレジスタ、40
2は複数のオペランド読出しの際の結果を格納するレジ
スタを指定する情報(レジスタリスト)を含メモリ読出
しに伴う制御情報を演算制御回路301より受け取り、オ
ペランド読出し装置4とレジスタ制御回路303の制御を
行なう読出し制御回路、403はバス制御装置8より受け
取った読出しデータを保持する読出しデータバッファ、
404は読出しアドレスレジスタ401の内容を一定値増加さ
せる読出しアドレス増分回路で、以上はオペランド読出
し装置4に実装される。501は読出しデータバッファ403
と汎用レジスタ302に格納されたデータの演算を行なう
第2算術論理演算回路で、第2演算装置5に実装され
る。601はメモリの書込みを行なうアドレスを保持する
書込みアドレスレジスタ、602は複数のオペランド書込
みの際のオペランドを格納しているレジスタを指定する
情報(レジスタリスト)を含めメモリ書込みに伴う制御
情報を演算制御回路301より受け取り、オペランド書込
み装置6とレジスタ制御回路303の制御を行なう書込み
制御回路、603は汎用レジスタ302から取りこんだ書込み
データまたは第2算術論理演算回路501より受け取った
書込みデータを保持する書込みデータバッファ、604は
書込みアドレスレジスタ601の内容を一定値増加させる
書込みアドレス増分回路で、以上はオペランド書込み装
置6に実装される。フラグ生成回路306は第1算術論理
演ざ回路304および第2算術論理演算回路501よりフラグ
生成に関する情報を受け取り、フラグを生成する。
以上のように構成された本実施例のデータ処理装置に
ついて、以下その動作を説明する。
第3図は命令の型と、パイプラインステージの流れの
関係を示したものである。ここで、IFは命令先素み装置
1における命令先読みステージ、DECは命令解読装置2
における命令解読ステージ、EX1は第1演算装置3にお
ける第1演算ステージ、OFはオペランド読出し装置4に
おけるオペランド読出しステージ、EX2は第2演算装置
5における第2演算ステージ、OSはオペランド書込み装
置6におけるオペランド書込みステージを表す。命令は
命令先読み装置1で先読みされ、命令解読装置2で解読
される。その後の処理の流れは命令の型によって異な
る。
(a)はレジスタ間演算命令またはレジスタ・即値間
演算命令の場合である。処理は第1演算装置3での演算
で終わる。即ち、第1演算装置3は、汎用レジスタ302
のデータまたは演算制御回路301から得られる即値を第
1算術論理演算回路304で演算し、汎用レジスタ302に格
納する。
(b)はメモリ・レジスタ間演算を行ない結果をレジ
スタに格納する命令の場合である。演算の伴わない(ロ
ード)命令も含まれる。処理は第1演算装置3でのオペ
ランドのアドレス計算、オペランド読出し装置4でのオ
ペランドの読出し、第2演算装置5での演算と流れて終
わる。即ち、第1演算装置3は、第1算術論理演算回路
304でオペランドの読出しアドレスを計算し、読出しア
ドレスレジスタ401に送る。オペランド読出し装置4
は、読出しアドレスレジスタ401に保持された読出しア
ドレスをバス制御装置8に渡し、バス制御装置8から受
け取った読出しデータを一旦読出しデータバッファ403
に保持する。第2演算装置5は、読出しデータバッファ
403に保持された読出しデータを一方のオペランドであ
る汎用レジスタ302の内容とともに第2算術論理演算回
路501で演算し、結果を汎用レジスタ302に格納する。命
令が演算を伴わない時は、第2算術論理演算回路501は
読出しデータバッファ403の内容をそのまま通過させる
働きをする。
(c)はレジスタの内容をメモリに書込む(ストア)
命令の場合である。処理は第1演算装置3での書込みア
ドレスの計算、オペランド書込み装置6でのメモリへの
書込みと流れて終わる。即ち、第1演算装置3は、第1
算術論理演算回路304でオペランドの書込みアドレスを
計算し、書込みアドレスレジスタ601に送る。オペラン
ド書込み装置6は、汎用レジスタ302から書込みデータ
を取りこみ、書込みデータバッファ603に一旦保持した
後、書込みアドレスレジスタ601に保持された書込みア
ドレスと共にバス制御装置8に送り、メモリへの書込み
を行なう。
(d)はレジスタ・メモリ間演算を行ない結果をメモ
リに書込む命令の場合である。この場合のメモリオペラ
ンドは読出し→更新→書込みとなる。処理は第1演算装
置3でのオペランドのアドレス計算、オペランド読出し
装置4でのオペランドの読出し、第2演算装置5での演
算、オペランド書込み装置6での演算結果のメモリへの
書込みと流れで終わる。即ち、第1演算装置3は、第1
算術論理演算回路304でオペランドの読出し・書込みア
ドレスを計算し、読出しアドレスレジスタ401と書込み
アドレスレジスタ601に送る。オペランド読出し装置4
は、読出しアドレスレジスタ401に保持された読出しア
ドレスをバス制御装置8に渡し、バス制御装置8から受
け取った読出しデータを一旦読出しデータバッファ403
に保持する。第2演算装置5は、読出しデータバッファ
403に保持された読出しデータを一方のオペランドであ
る汎用レジスタ302の内容とともに第2算術論理演算回
路501で演算し、結果を書込みデータバッファ603に格納
する。オペランド書込み装置6は、書込みアドレスレジ
スタ601に保持された書込みアドレスと書込みデータバ
ッファ603に保持された書込みデータを共にバス制御装
置8に送り、メモリへの書込みを行なう。
(e)はアドレスが連続する複数のメモリオペランド
とレジスタ間の演算を行ない複数の結果を複数のレジス
タに格納する命令の場合である。演算の伴わない(マル
チプルロード)命令も含まれる。処理は第1演算装置3
での第1のメモリオペランドのアドレス計算の後、オペ
ランド読出し装置4でのオペランドの読出しと第2演算
装置5での演算とを繰返して終わる。ただし、オペラン
ド読出し装置4での次のオペランドの読出しと第2演算
装置5での演算は並列に実行する。即ち、第1演算装置
3は、第1算術論理演算回路304で最初のオペランドの
読出しアドレスを計算し、読出しアドレスレジスタ401
に送るとともに、結果を格納するレジスタ群を示すレジ
スタリストを演算制御回路301から読出し制御回路402に
送る。またこの時、レジスタ制御回路303は汎用レジス
タ302の結果を格納するレジスタ群の読出しを禁止す
る。オペランド読出し装置4は、読出しアドレスレジス
タ401に保持された読出しアドレスをバス制御装置8に
渡すと同時に、読出しアドレス増分回路404で一定値増
加し、再び読出しアドレスレジスタ401に保持する。バ
ス制御装置8から受け取った読出しデータを一旦読出し
データバッファ403に保持する。第2演算装置5は、読
出しデータバッファ403に保持された読出しデータを一
方のオペランドである汎用レジスタ302の内容とともに
第2算術論理演算回路501で演算し、結果を汎用レジス
タ302に格納する。命令が演算を伴わない時は、第2算
術論理演算回路501は読出しデータバッファ403の内容を
そのまま通過させる働きをする。同時に、読出し制御回
路402はレジスタ制御回路303に対して結果の1つが汎用
レジスタ302に格納されたことを通知し、レジスタ制御
回路303はこれを受けて汎用レジスタ302の当該レジスタ
の読出しの禁止を解除する。第2以降のオペランドにつ
いては、オペランド読出し装置4と第2演算装置5が第
1演算装置3とは独立に、オペランドアドレスの増分加
算、メモリオペランドの読出し、演算、結果の格納、当
該レジスタの読出しの禁止の解除を繰返して行なう。こ
の時、オペランド読出し装置4と第2演算装置5は、パ
イプラインを形成し並列に実行する。
(f)は複数のレジスタの内容をアドレスが連続する
メモリに書込む(マルチプルストア)命令の場合であ
る。処理は第1演算装置3での第1のレジスタの書込み
アドレス計算の後、オペランド書込み装置6でのメモリ
への書込みを繰返して終わる。即ち、第1演算装置3
は、第1算術論理演算回路304で最初のオペランドの書
込みアドレスを計算し、書込みアドレスレジスタ601に
送るとともに、メモリに書込むレジスタ群を示すレジス
タリストを演算制御回路301から書込み制御回路602に送
る。またこの時、レジスタ制御回路303は汎用レジスタ3
02のメモリに書込むレジスタ群の書込みを禁止する。オ
ペランド書込み装置6は、書込み制御回路602に従い汎
用レジスタ302から書込みデータを取りこみ、書込みデ
ータバッファ603に一旦保持した後、書込みアドレスレ
ジスタ601に保持された書込みアドレスと共にバス制御
装置8に送り、メモリへの書込みを行なうと同時に、書
込みアドレス増分回路604で一定値増加し、再び書込み
アドレスレジスタ601に保持する。同時に、書込み制御
回路602はレジスタ制御回路303に対してレジスタの1つ
が書込みデータバッファ603に保持されたことを通知
し、レジスタ制御回路303はこれを受けて汎用レジスタ3
02の当該レジスタの書込みの禁止を解除する。第2以降
のオペランドについては、オペランド書込み装置6が第
1演算装置3とは独立に、レジスタの読出し、オペラン
ドアドレスの増分加算、メモリへの書込み、当該レジス
タの書込みの禁止の解除を繰返して行なう。
以上のように本実施例のデータ処理装置は、第1演算
装置3が以降の処理を切り離し、オペランド読出し装置
4と第2演算装置5、あるいはオペランド書込み装置6
が命令先読み装置1、命令解読装置2、第1演算装置3
とは独立に命令の以降の処理を実行するものである。
第4図は動作タイミング図を示すものである。命令先
読み装置1、命令解読装置2、第1演算装置3、オペラ
ンド読出し装置4、および第2演算装置5において実行
されている命令とステータスレジスタ305の内容の変化
をクロック単位で示している。ここで、命令先読み装置
18は内部にキャッシュメモリを持ち、各装置の必要クロ
ック数が、命令先読み装置1(1クロック)、命令解読
装置2(1クロック)、第1演算装置3(1クロッ
ク)、オペランド読出し装置4(3クロック)、および
第2演算装置5(1クロック)の場合を示している。実
行している命令シーケンスは、第13図の動作タイミング
図に示した命令シーケンスと同じであり、メモリ・レジ
スタ間演算レジスタ格納命令に続いて2命令のレジスタ
間演算命令を実行し、この3命令の繰り返しとなってい
る。具体的には、命令1,4がメモリ・レジスタ間演算レ
ジスタ格納命令であり、命令2,3,5,6がレジスタ間演算
命令である。またパイプラインの初期状態は空状態(例
えば条件分岐時)としている。命令1は、クロックt1に
命令先読み装置1で命令コードの先読みが行なわれ、命
令コードを命令解読装置2に発行する。クロックt2に命
令解読装置2で命令解読が行なわれ、オペランドのアド
レス計算および読出しのための制御情報と命令実行に関
する制御情報を第1演算装置3に発行する。オペランド
のアドレス計算および読出しのための制御情報に従っ
て、クロックt3に第1演算装置3でオペランドのアドレ
ス計算が行なわれ、クロックt4〜t6にオペランド読出し
装置4でオペランドの読出しが行なわれる。読出しデー
タと命令実行に関する制御情報は第2演算装置5に送出
され、クロックt7に第2演算装置5で演算される。命令
2は、クロックt2に命令先読み装置1で命令コードの先
読みが行なわれ、クロックt3に命令解読装置2で命令解
読が行なわれ、命令実行に関する制御情報のみを第1演
算装置3に発行する。クロックt4に第1演算装置3で演
算される。同様に命令3はクロックt5に第1演算装置3
で演算される。
このように、命令2,命令3は命令1より先行的に演算
され、命令5は命令1と並列に演算される。フラグ生成
回路306はクロックt4において第1算術論理演算回路304
から得られる情報に基づいて命令2のフラグを生成し、
クロックt5にステータスレジスタ305に反映する。この
時、更新したフラグを記憶しておく。また、クロックt5
において第1算術論理演算回路304から得られる情報に
基づいて命令3のフラグを生成し、クロックt6にステー
タスレジスタ305に反映する。この時も更新したフラグ
を記憶しておく。次に、フラグ生成回路306はクロックt
7において第1算術論理演算回路304から得られる情報に
基づいて命令5のフラグを、第2算術論理演算回路501
から得られる情報に基づいて命令1のフラグを生成す
る。しかしこの時、命令1で更新されるフラグのうち、
クロックt5,t6で更新したフラグと同一のものについて
は新たにフラグを生成しない。また、命令5で更新され
るフラグのうち、命令1で更新されるフラグと同一のも
のがある場合は、クロックt5,t6で更新したフラグと同
一であっても命令5を優先して生成する。生成されたフ
ラグはクロックt8にステータスレジスタ305に反映す
る。
以上のように本実施例によれば、命令の演算される順
序は、必ずしもプログラムの順序とは一致しない。しか
し、ステータスレジスタ305へのフラグ反映は、フラグ
生成回路306において生成するフラグの調停を行なうこ
とにより、命令がプログラムの順序で演算された場合と
矛盾なく行なわれることができる。
第5図は、本実施例が第1の課題を解決することを説
明する動作タイミング図を示したものである。各装置の
必要クロック数は第4図に示すものと同じである。ただ
し、オペランド書込み装置6におけるメモリへの書込み
に要するクロック数は3クロックとする。実行している
命令シーケンスは、第14図の動作タイミング図に示した
命令シーケンスと同じである。メモリ・レジスタ間演算
レジスタ格納命令(命令1)、レジスタをメモリへ転送
する(ストア)命令(命令2)、レジスタ間演算命令
(命令3)が続く場合を示している。命令1はクロック
t3でアドレスが計算され、クロックt4〜t6でオペランド
をフェッチし、クロックt7で演算される。しかし、命令
2はクロックt4に第1演算装置3でアドレスが計算され
た後、以降の処理は切り離され、レジスタのメモリへの
転送はオペランド書込み装置6が第1演算装置3とは独
立に行なう。即ち、オペランド書込み装置6はクロック
t5において汎用レジスタ302から書込みデータを書込み
データバッファ603に取りこみ、クロックt7〜t9におい
て書込みアドレスレジスタ601に保持された書込みアド
レスと書込みデータバッファ603に保持された書込みデ
ータをバス制御装置8に送り、メモリへの書込みを行な
う。命令3は命令1のメモリ読出しや命令2のメモリ書
込みと並列にクロックt5で演算される。
以上のように本実施例によれば、オペランドフェッチ
の必要な命令と後続するオペランドフェッチもメモリへ
の書込みも必要としない命令、メモリへの書込みを必要
とする命令と後続するオペランドフェッチもメモリへの
書込みも必要としない命令、オペラドフェッチの必要な
命令と後続するメモリへの書込みを必要とする命令、メ
モリへの書込みを必要とする命令と後続するオペランド
フェッチの必要な命令をそれぞれ並列に実行することが
でき、命令列の実行時間を短縮することができる。
第6図は、本実施例が第2の課題を解決することを説
明する動作タイミング図を示したものである。各装置の
必要クロック数は第4図に示すものと同じである。実行
している命令シーケンスは、第15図の動作タイミング図
に示した命令シーケンスと同じであり、2つのレジスタ
間演算命令(命令1,命令2)に続いて、1つのメモリ・
レジスタ間演算レジスタ格納命令(命令3)、さらに2
つのレジスタ間演算命令(命令4,命令5)が続く場合を
示している。命令3はクロックt5でアドレス計算を行な
い、クロックt6〜t8でオペランドがメモリから読出さ
れ、クロックt9で演算される。しかしオペランド読出し
装置4、第2演算装置5は、第1演算装置3と独立に動
作するため、命令4,命令5は、命令3のメモリの読出し
と並列に第1演算装置3においてそれぞれクロックt6,
クロックt7で演算することができ、パイプラインステー
ジの空きが発生しない。
以上のように本実施例によれば、オペランドフェッチ
の必要な命令にオペランドフェッチの不要な命令が続く
場合でも、演算ステージに空きが生じず、空状態のパイ
プラインから最初に出現するオペランドフェッチの必要
な命令の実行クロック数を1クロックとすることができ
る。
第7図は、本実施例が第3の課題を解決することを説
明する動作タイミング図を示したものである。各装置の
必要クロック数は第4図に示すものと同じである。実行
している命令シーケンスは、第16図の動作タイミング図
に示した命令シーケンスと同じであり、1つのメモリ・
レジスタ間演算レジスタ格納命令(命令1)と4つのレ
ジスタ間演算命令(命令2〜命令5)の後に、条件分岐
命令(命令6)が続き、条件分岐命令6では分岐が成立
し、レジスタ間演算命令(命令n)に分岐する場合を示
している。命令1がオペランドのアドレス計算とメモリ
からのオペランドの読出しを必要とするが、オペランド
読出し装置4、第2演算装置5は、第1演算装置3と独
立に動作するため、以降の命令2から命令6は、命令1
のメモリの読出しと並列に第1演算装置3においてクロ
ックt4からクロックt8で演算することができる。従っ
て、分岐先命令nの命令先読みステージはクロックt9ま
で早まり、命令先読みステージにおいてパイプライン
は、クロックt7〜t8の2クロックのインクロックしか発
生しない。
以上のように本実施例によれば、オペランドフェッチ
の必要な命令に条件分岐命令が後続する場合も、パイプ
ラインのインタロック時間をオペランドフェッチの必要
な命令がない場合と等しくし、パイプラインの効率の低
下を最小にすることができる。
第8図は、本実施例が第4の課題を解決することを説
明する動作タイミング図を示したものである。各装置の
必要クロック数は第4図に示すものと同じである。実行
している命令シーケンスは、第17図の動作タイミング図
に示した命令シーケンスと同じであり、メモリ・レジス
タ間演算レジスタ格納命令(命令1)に続いて、2つの
レジスタ間演算命令(命令2,命令3)、さらにメモリ・
レジスタ間演算レジスタ格納命令(命令4)が続き、か
つ、命令3の演算結果を命令4のアドレス計算で用いる
場合を示している。アドレス計算とレジスタ間演算をと
もに第1演算装置3で行なうため、命令4のアドレス計
算は命令3の演算が完了する次のクロックt6で行なうこ
とができ、アドレス計算干渉によるパイプラインのイン
タロックは発生しない。
以上のように本実施例によれば、オペランドフェッチ
の不要な命令の演算で書換えらるレジスタを後続するオ
ペランドフェッチの必要な命令のアドレス計算で読出す
場合でも、インタロックが発生せず、従ってパイプライ
ンの効率が低下しないようにすることができる。
第9図は、本実施例が第5,第6の課題を解決すること
を説明する動作タイミング図を示したものである。各装
置の必要クロック数は第4図に示すものと同じである。
実行している命令シーケンスは、第18図の動作タイミン
グ図に示した命令シーケンスと同じであり、アドレスが
連続する3つのメモリオペランドを3つのレジスタに転
送する(マルチプルロード)命令(命令1)に、2つの
レジスタ間演算命令(命令2、命令3)が続き、かつ、
命令2,命令3はいずれも命令1の実行結果を必要としな
い場合を示している。命令1はクロックt4〜t6で第1の
オペランドの読出しを行ないクロックt7でそのオペラン
ドをレジスタR1に格納し、クロックt7〜t9で第2のオペ
ランドの読出しを行ないクロックt10でそのオペランド
をレジスタR2に格納し、クロックt10〜t12で第3のオペ
ランドの読出しを行ないクロックt13でそのオペランド
をレジスタR3に格納する。しかし、クロックt3で第1演
算装置3が第1オペランドのアドレス計算を行なった
後、オペランド読出し装置4、第2演算装置5は、第1
演算装置3と独立に動作するため、以降の命令2、命令
3は、命令1のメモリの読出しおよびレジスタ格納と並
列に第1演算装置3においてクロックt4、クロックt5で
演算することができる。従って、第1演算装置3にメモ
リ読出しにかかる長大な空き時間が生じることがない。
また、複数のレジスタの内容をアドレスが連続するメ
モリに書込む(マルチプルストア)命令の場合も同様
で、第1演算装置3が第1オペランドのアドレス計算を
行なった後、オペランド書込み装置6は、第1演算装置
3と独立に動作するため、以降の命令は、複数のレジス
タの内容をアドレスが連続するメモリに書込む命令のメ
モリの書込みと並列に第1演算装置3において演算する
ことができる。従って、第1演算装置3にメモリ書込み
にかかる長大な空き時間が生じることがない。
以上のように本実施例によれば、複数のオペランドフ
ェッチを必要とする命令あるいは複数のオペランドのメ
モリへの書込みを伴う命令が実行されても、その後に続
く命令がオペランドフェッチが不要であり、かつ、複数
のオペランドフェッチを必要とする命令あるいは複数の
オペランドのメモリへの書込みを伴う命令の実行結果を
必要としない場合であれば、その命令の演算を、複数の
オペランドフェッチを必要とする命令あるいは複数のオ
ペランドのメモリへの書込みを伴う命令の演算と並行ま
たは先行して行なうことにより、パイプラインの効率を
低下させないようにすることができる。
また本実施例によれば、複数のオペランドフェッチを
必要とする命令あるいは複数のオペランドのメモリへの
書込みを伴う命令に続く命令が、複数のオペランドフェ
ッチを必要とする命令あるいは複数のオペランドのメモ
リへの書込みを伴う命令の実行結果を必要としないよう
にプログラムを最適化するソフトウェアの性能を発揮さ
せることができる。
次に、本実施例が第7の課題を解決することを説明す
る。以上のように構成された本実施例のデータ処理装置
は、第1演算装置3がオペランドのアドレス計算を行な
った後、以降の処理を切り離し、オペランド読出し装置
4、第2演算装置5、オペランド書込み装置6を、第1
演算装置3と独立に動作させるため、後続する命令はメ
モリの読出しや書込みと並列に第1演算装置3において
演算することができる。このことにより、たとえオペラ
ンド読出し装置4またはオペランド書込み装置6の必要
クロック数が増加しても、メモリ読出しあるいは書込み
を伴う命令に続く命令の演算ステージが遅れるようなこ
とはない。また、データ用のキャッシュメモリを内蔵
し、オペランド読出し装置4またはオペランド書込み装
置6の必要クロック数が減少しても、メモリ読出しある
いは書込みを伴う命令に続く命令の演算ステージの時間
的位置は変化しない。
以上のように本実施例によれば、キャッシュメモリの
内蔵の有無、キャッシュメモリのヒット率、キャッシュ
メモリの容量などによるオペランドの読出しや書込みに
必要なクロック数の増減に関わりなく、第1から第6の
課題を解決することができ、またオペランドの読出しや
書込みに必要なクロック数をレジスタ間演算の実行クロ
ック数とは独立に設定できる。
最後に、本実施例が第8の課題を解決することを説明
する。以上のように構成された本実施例のデータ処理装
置は、メモリオペランドの先読みを行なわない。そのた
め命令解読装置2は、アドレス計算のための制御情報を
命令実行に関する制御情報に先行して発行する必要がな
く、すべての制御情報を同時に第1演算装置3に発行す
ればよい。従って、命令解読装置2の制御は簡単にな
る。また、先読みデータや書込みアドレスの待ち合わせ
のための複雑な制御も必要としない。
以上のように本実施例によれば、各装置の制御の簡単
化に伴い制御回路の遅延時間が短縮され、プロセッサが
動作するクロック周波数を容易に向上することができ
る。
なお本実施例は、単一または複数のオペランドをメモ
リから読出して演算を施さずにレジスタに格納する(ロ
ードまたはマルチプルロード)命令を実行する場合、読
出しデータバッファ403の内容のそのまま第2算術論理
演算回路501を通過させて汎用レジスタ302に格納してい
るが、読出しデータバッファ403から直接汎用レジスタ3
02に通じるデータ線を設けて汎用レジスタ302に格納し
てもよい。このようにすることにより、プログラム中に
頻出するロード命令やマルチプルロード命令は第2演算
ステージが不要になり、これらの命令の実行結果を後続
する命令で用いる場合に発生するパイプラインのインタ
ロックを軽減でき、パイプラインの効率が向上するとい
う効果がある。ただしロード命令やマルチプルロード命
令によりフラグを変化させる場合、読出しデータバッフ
ァ403からフラグ生成回路306にフラグ生成に関する情報
を送出する必要がある。
また、本実施例は実記憶対応としてアドレス変換機構
を考慮しなかったが、仮想記憶対応の場合は命令先読み
装置1とオペランド読出し装置4、またはバス制御装置
8にアドレス変換機構を組み込んでもよい。
また、本実施例はオペランド読出し装置4と第2演算
装置5を分離したが、オペランド読出し装置としてひと
つの装置として実現してもよい。
また、本実施例は各装置をひとつのパイプラインステ
ージとして説明したが、複数のパプラインステージを持
つ装置として実現してもよい。
発明の効果 以上説明したように、請求項1記載の発明によれば、
第二の命令実行手段による先行命令の処理時間が長くと
も後続命令が第二の命令実行手段での処理を必要としな
い場合は後続命令を処理し完了することができる。その
上、第一の命令実行手段と第二の命令実行手段とはこの
順に直列に結合するパイプラインを形成するに過ぎない
ため、複雑な並列ステージ制御を必要としない。
請求項2記載の発明によれば、本来逐次的に実行され
る第一の命令と第二の命令とが並列に実行されたときで
も逐次的に実行された場合と何ら矛盾することなくフラ
グを更新することができる。
請求項3記載の発明によれば、本来正順に完了される
第一の命令と第二の命令とが逆順に完了されたときでも
正順に完了された場合と何ら矛盾することなくフラグを
更新することができる。
以上に示すように、本発明の実用的効果はきわめて大
きい。
【図面の簡単な説明】
第1図は本発明の実施例におけるデータ処理装置の構成
図、第2図は同実施例の第1演算装置3、オペランド読
出し装置4、第2演算装置5およびオペランド書込み装
置6の詳細構成図、第3図は同実施例の命令の型とパイ
プラインステージの関係図、第4図は同実施例の動作タ
イミング図、第5図は第1の課題を解決することを説明
する同実施例の動作タイミング図、第6図は第2の課題
を解決することを説明する同実施例の動作タイミング
図、第7図は第3の課題を解決することを説明する同実
施例の動作タイミング図、第8図は第4の課題を解決す
ることを説明する同実施例の動作タイミング図、第9図
は第5および第6の課題を解決することを説明する同実
施例の動作タイミング図、第10図は第1の従来のデータ
処理装置の構成図、第11図は同第1の従来例の動作タイ
ミング図、第12図は第2の従来のデータ処理装置の構成
図、第13図は同第2の従来例の動作タイミング図、第14
図は第1の課題を説明する同第2の従来例の動作タイミ
ング図、第15図は第2の課題を説明する同第2の従来例
の動作タイミング図、第16図は第3の課題を説明する同
第2の従来例の動作タイミング図、第17図は第4の課題
を説明する同第2の従来例の動作タイミング図、第18図
は第5および第6の課題を説明する同第2の従来例の動
作タイミング図である。 1……命令先読み装置、2……命令解読装置、3……第
1演算装置、4……オペランド読出し装置、5……第2
演算装置、6……オペランド書込み装置、7……入出力
バス、8……バス制御装置、301……演算制御回路、302
……汎用レジスタ、303……レジスタ制御回路、304……
第1算術論理演算回路、305……ステータスレジスタ、3
06……フラグ生成回路、401……読出しアドレスレジス
タ、402……読出し制御回路、403……読出しデータバッ
ファ、404……読出しアドレス増分回路、501……第2算
術論理演算回路、601……書込みアドレスレジスタ、602
……書込み制御回路、603……書込みデータバッファ、6
04……書込みアドレス増分回路。
フロントページの続き (72)発明者 坂尾 隆 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 昭62−262141(JP,A) 特開 昭63−261428(JP,A) 特開 昭58−90247(JP,A) 特開 昭58−106641(JP,A) 特開 昭57−168350(JP,A) 特開 昭54−67348(JP,A) 特開 昭58−189738(JP,A) 特開 昭54−47438(JP,A)

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも読出しステージと解読ステージ
    と実行ステージとからなり、前記実行ステージはさらに
    直列な第一の実行ステージと第二の実行ステージとを含
    むパイプライン方式のデータ処理装置において、 読出しステージとして作用する命令先読み手段と、 解読ステージとして使用する命令解読手段と、 少なくとも、 第一の実行ステージとして作用する第一の命令実行手段
    と、 第二の実行ステージとして作用する第二の命令実行手段
    とからなる命令実行手段とを備え、 第一の命令が、 少なくとも前記第一の命令実行手段と前記第二の命令実
    行手段とにおいてこの順に処理される命名であって、 第一の命令に後続する第二の命令が、 少なくとも前記第一の命令実行手段において処理され、
    かつ 前記第二の命令実行手段での処理を必要としない命令で
    あるとき、 前記命令実行手段は、 前記第二の命令実行手段が前記第一の命令に係る処理を
    実行中であっても、 前記第一の命令実行手段において前記第二の命令に係る
    処理を行い、かつ該処理で前記第二の命名のすべての処
    理を完了する ことを特徴とするデータ処理装置。
  2. 【請求項2】命令の先読みを行う命令先読み手段と、 前記命令先読み手段によって読出された命令の解読を行
    う命令解読手段と、 前記命令解読手段の解読結果に応じて命令の実行の処理
    を行う命令実行手段と、 命令実行手段の実行結果の状態を表すフラグを生成する
    フラグ生成手段と、 ステータスレジスタとを備え、 前記命令実行手段は、 第一の命令に係る処理と、第一の命令に後続する第二の
    命令に係る処理とを並列に行い、 前記フラグ生成手段は、 前記命令実行手段において、前記第一の命令に係る処理
    と前記第二の命令に係る処理とが並列に実行される場合
    に、前記ステータスレジスタに含まれるフラグのうち、 前記第一の命令の実行により更新され、かつ前記第二の
    命令の実行により更新されない第一のフラグと、 前記第二の命令の実行により更新される第二のフラグと
    を識別し、 前記第一の命令の実行結果に基づいて前記第一のフラグ
    を生成し、 前記第二の命令の実行結果に基づいて前記第二のフラグ
    を生成して、それぞれ前記ステータスレジスタに反映す
    ることを特徴とするデータ処理装置。
  3. 【請求項3】命令の先読みを行う命令先読み手段と、 前記命令先読み手段によって読出された命令の解読を行
    う命令解読手段と、 前記命令解読手段の解読結果に応じて命令の実行の処理
    を行う命令実行手段と、 命令実行手段の実行結果の状態を表すフラグを生成する
    フラグ生成手段と、 ステータスレジスタとを備え、 前記命令実行手段は、 第一の命令に係る処理と前記第一の命令に後続する第二
    の命令に係る処理とをプログラムの順序と関係ない順序
    で完了し、 前記フラグ生成手段は、 前記命令実行手段において、前記第一の命令に係る処理
    が前記第二の命令に係る処理の完了後に完了される場合
    に、 前記第一の命令の実行により更新され、かつ前記第二の
    命令の実行により更新されなかったフラグを生成して前
    記ステータスレジスタに反映することを特徴とするデー
    タ処理装置。
JP63248108A 1988-09-30 1988-09-30 データ処理装置 Expired - Lifetime JP2668987B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63248108A JP2668987B2 (ja) 1988-09-30 1988-09-30 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63248108A JP2668987B2 (ja) 1988-09-30 1988-09-30 データ処理装置

Publications (2)

Publication Number Publication Date
JPH0296234A JPH0296234A (ja) 1990-04-09
JP2668987B2 true JP2668987B2 (ja) 1997-10-27

Family

ID=17173347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63248108A Expired - Lifetime JP2668987B2 (ja) 1988-09-30 1988-09-30 データ処理装置

Country Status (1)

Country Link
JP (1) JP2668987B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2507638B2 (ja) * 1989-12-01 1996-06-12 三菱電機株式会社 デ―タ処理装置
JP3638831B2 (ja) * 1999-10-07 2005-04-13 コベルコ建機株式会社 油圧ショベル
JP5185478B2 (ja) * 2000-02-29 2013-04-17 富士通セミコンダクター株式会社 パイプライン処理方法並びにその方法を利用するパイプライン処理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5447438A (en) * 1977-09-21 1979-04-14 Mitsubishi Electric Corp Control system for scratch memory
JPS5467348A (en) * 1977-11-09 1979-05-30 Hitachi Ltd Microprogram control system
JPS57168350A (en) * 1981-04-09 1982-10-16 Mitsubishi Electric Corp Information processor
JPS58106641A (ja) * 1981-12-18 1983-06-25 Fujitsu Ltd パイプライン命令実行制御方式
JPS58189738A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム

Also Published As

Publication number Publication date
JPH0296234A (ja) 1990-04-09

Similar Documents

Publication Publication Date Title
JP2701179B2 (ja) データ処理システム
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
US4967338A (en) Loosely coupled pipeline processor
JP2004171573A (ja) 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ
JP3510729B2 (ja) 命令実行方法および命令実行装置
US20050102659A1 (en) Methods and apparatus for setting up hardware loops in a deeply pipelined processor
JPH0673105B2 (ja) 命令パイプライン方式のマイクロプロセッサ
JP2668987B2 (ja) データ処理装置
JPH096614A (ja) データ処理装置
US7155718B1 (en) Method and apparatus to suspend and resume on next instruction for a microcontroller
US5623685A (en) Vector register validity indication to handle out-of-order element arrival for a vector computer with variable memory latency
US7313674B2 (en) Instruction control device and method therefor
JP3490005B2 (ja) 命令制御装置及びその方法
US7389405B2 (en) Digital signal processor architecture with optimized memory access for code discontinuity
JPH0512751B2 (ja)
JP3520372B2 (ja) メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除
JP4680340B2 (ja) プロセッサ
JP2689914B2 (ja) 情報処理装置
JPH0769825B2 (ja) 並列処理装置
JP3668643B2 (ja) 情報処理装置
JP3743155B2 (ja) パイプライン制御型計算機
JPH05173778A (ja) データ処理装置
JPS63157235A (ja) コンピユータ・システムの制御装置
JP2806690B2 (ja) マイクロプロセッサ
JPH08110901A (ja) マイクロプロセッサ

Legal Events

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

Free format text: PAYMENT UNTIL: 20070704

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20080704

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20090704

Year of fee payment: 12

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090704

Year of fee payment: 12