JPH06149568A - サブルーチンリターン制御方法及び命令処理装置 - Google Patents
サブルーチンリターン制御方法及び命令処理装置Info
- Publication number
- JPH06149568A JPH06149568A JP4294512A JP29451292A JPH06149568A JP H06149568 A JPH06149568 A JP H06149568A JP 4294512 A JP4294512 A JP 4294512A JP 29451292 A JP29451292 A JP 29451292A JP H06149568 A JPH06149568 A JP H06149568A
- Authority
- JP
- Japan
- Prior art keywords
- general
- instruction
- return
- purpose register
- address
- 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)
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【目的】 命令処理装置のサブルーチンリターンの制御
方法に関し、従来は、サブルーチンコール時に、リター
ンアドレスを汎用レジスタに格納し、該汎用レジスタの
内容を分岐アドレスとしてサブルーチンリターンする方
法を用いており、汎用レジスタへのアクセス時間のた
め、パイプライン制御にペナルテイガ生じる問題の解決
を目的とする。 【構成】 命令フェッチ制御回路部10中に、リターン
アドレスレジスタ(RREG)18を設け、サブルーチ
ンコール時に、リターンアドレスを汎用レジスタ(GR
1)61とRREG18の両方に格納する。サブルーチ
ンリターン時にはRREG18の内容により分岐アドレ
スを得る構成とする。
方法に関し、従来は、サブルーチンコール時に、リター
ンアドレスを汎用レジスタに格納し、該汎用レジスタの
内容を分岐アドレスとしてサブルーチンリターンする方
法を用いており、汎用レジスタへのアクセス時間のた
め、パイプライン制御にペナルテイガ生じる問題の解決
を目的とする。 【構成】 命令フェッチ制御回路部10中に、リターン
アドレスレジスタ(RREG)18を設け、サブルーチ
ンコール時に、リターンアドレスを汎用レジスタ(GR
1)61とRREG18の両方に格納する。サブルーチ
ンリターン時にはRREG18の内容により分岐アドレ
スを得る構成とする。
Description
【0001】
【産業上の利用分野】本発明は、パイプライン制御等を
用いた命令処理装置において、サブルーチンコールさ
れ、所定の処理の実行後に、サブルーチンリターンを行
う場合の制御方法に関し、特に、サブルーチンリターン
の場合に、パイプラインインターロック(パイプライン
ペナルティ)を生じさせることのないサブルーチンリタ
ーンの制御方法及び該方法を用いた命令処理装置に関す
る。
用いた命令処理装置において、サブルーチンコールさ
れ、所定の処理の実行後に、サブルーチンリターンを行
う場合の制御方法に関し、特に、サブルーチンリターン
の場合に、パイプラインインターロック(パイプライン
ペナルティ)を生じさせることのないサブルーチンリタ
ーンの制御方法及び該方法を用いた命令処理装置に関す
る。
【0002】
【従来の技術】図3は、従来の命令処理装置のシステム
構成の一例を示すブロック図である。図3において、5
0はパイプライン制御における命令フェッチ及び分岐処
理を行う命令フェッチ制御回路部(内部の詳細は図1の
実施例の項で説明される)、60は複数の汎用レジスタ
(GR)が内蔵された汎用レジスタ回路部、61は汎用
レジスタ回路部中の1つの汎用レジスタ(GR1)、6
2は汎用レジスタ回路部中の1つの汎用レジスタ(GR
2)、70は命令及びデータが格納されたメモリを表し
ている。なお、本例は、命令フェッチ制御回路部50と
汎用レジスタ回路部60が別ブロックで実装されている
場合の例である。例えば、それぞれが別の回路チップ上
に構成されている場合である。
構成の一例を示すブロック図である。図3において、5
0はパイプライン制御における命令フェッチ及び分岐処
理を行う命令フェッチ制御回路部(内部の詳細は図1の
実施例の項で説明される)、60は複数の汎用レジスタ
(GR)が内蔵された汎用レジスタ回路部、61は汎用
レジスタ回路部中の1つの汎用レジスタ(GR1)、6
2は汎用レジスタ回路部中の1つの汎用レジスタ(GR
2)、70は命令及びデータが格納されたメモリを表し
ている。なお、本例は、命令フェッチ制御回路部50と
汎用レジスタ回路部60が別ブロックで実装されている
場合の例である。例えば、それぞれが別の回路チップ上
に構成されている場合である。
【0003】図4は、パイプライン制御の一構成例を示
す図であり、命令フェッチ制御ブロック50で処理され
るパイプライン制御について説明するための図である。
すなわち、パイプライン各命令は、4つのステージに分
けて処理され、各ステージの処理内容は以下の通りであ
る。 ・IFステージ 前の命令のDC(IA)ステージで要求された命令デー
タの応答ステージ。 ・DC(IA)ステージ 命令デコード及び次に実行する命令の命令アドレス生
成、フェッチ要求ステージ。 ・EXステージ 演算実行ステージ。 ・WBステージ 演算結果書き込みステージ。
す図であり、命令フェッチ制御ブロック50で処理され
るパイプライン制御について説明するための図である。
すなわち、パイプライン各命令は、4つのステージに分
けて処理され、各ステージの処理内容は以下の通りであ
る。 ・IFステージ 前の命令のDC(IA)ステージで要求された命令デー
タの応答ステージ。 ・DC(IA)ステージ 命令デコード及び次に実行する命令の命令アドレス生
成、フェッチ要求ステージ。 ・EXステージ 演算実行ステージ。 ・WBステージ 演算結果書き込みステージ。
【0004】このような、パイプライン制御の命令処理
装置において、サブルーチンコールを行う場合は、命令
フェッチ制御回路部50が、多数の汎用レジスタからな
る汎用レジスタ回路部60中の1つの汎用レジスタ、例
えば汎用レジスタ(GR1)61にリターンアドレスを
格納してサブルーチンに分岐する。
装置において、サブルーチンコールを行う場合は、命令
フェッチ制御回路部50が、多数の汎用レジスタからな
る汎用レジスタ回路部60中の1つの汎用レジスタ、例
えば汎用レジスタ(GR1)61にリターンアドレスを
格納してサブルーチンに分岐する。
【0005】サブルーチンリターンする場合は、上記汎
用レジスタ(GR)61の内容を分岐アドレスとして、
リターンする。このように、従来のサブルーチンリター
ン時には、汎用レジスタ(GR)61をアクセスして、
その内容を分岐アドレスとして命令フェッチを実行す
る。
用レジスタ(GR)61の内容を分岐アドレスとして、
リターンする。このように、従来のサブルーチンリター
ン時には、汎用レジスタ(GR)61をアクセスして、
その内容を分岐アドレスとして命令フェッチを実行す
る。
【0006】
【発明が解決しようとする課題】図2は、本発明の実施
例と従来例のパイプライン動作を比較するための図であ
り、図2(a)は、従来例のパイプライン制御される命
令処理装置におてる、サブルーチンコール/リターン時
の処理動作のタイムチャートを示したものである。
例と従来例のパイプライン動作を比較するための図であ
り、図2(a)は、従来例のパイプライン制御される命
令処理装置におてる、サブルーチンコール/リターン時
の処理動作のタイムチャートを示したものである。
【0007】以下、本タイムチャートについて説明す
る。 (1)時刻t1でコール命令(CALL)がフェッチさ
れたとする。 (2)コール命令のDC(IA)ステージで分岐先のア
ドレスが生成され、1ディレイ(delay)命令を間
にはさんで、時刻t3で、分岐先のアドレスがフェッチ
され実行処理される。また、汎用レジスタ(GR1)6
1に分岐先アドレスが格納される。ディレイ命令につい
ては、実施例の前提条件(2)が説明する。
る。 (1)時刻t1でコール命令(CALL)がフェッチさ
れたとする。 (2)コール命令のDC(IA)ステージで分岐先のア
ドレスが生成され、1ディレイ(delay)命令を間
にはさんで、時刻t3で、分岐先のアドレスがフェッチ
され実行処理される。また、汎用レジスタ(GR1)6
1に分岐先アドレスが格納される。ディレイ命令につい
ては、実施例の前提条件(2)が説明する。
【0008】(3)時刻t5で、リターン命令がフェッ
チされ、命令の実行が開始されると、汎用レジスタ(G
R1)61の内容を読みに行く。しかし、汎用レジスタ
回路部60は命令フェッチ制御回路部50とは別ブロッ
クであり、配線距離等の物理的制約条件により汎用レジ
スタ(GR1)61からデータを読み出すには時間がか
かる。従って、汎用レジスタ(GR1)61からのアド
レスデータの読み出しのために、1マシンサイクルの
間、パイプライン制御にインタロックをかける(図中の
1τのペナルティ)。
チされ、命令の実行が開始されると、汎用レジスタ(G
R1)61の内容を読みに行く。しかし、汎用レジスタ
回路部60は命令フェッチ制御回路部50とは別ブロッ
クであり、配線距離等の物理的制約条件により汎用レジ
スタ(GR1)61からデータを読み出すには時間がか
かる。従って、汎用レジスタ(GR1)61からのアド
レスデータの読み出しのために、1マシンサイクルの
間、パイプライン制御にインタロックをかける(図中の
1τのペナルティ)。
【0009】(4)そして、ディレイ命令を間にはさん
で、時刻t8で、分岐先アドレスの命令がフェッチされ
実行される。このように、従来例の命令処理装置では、
サブルーチンリターン時に1τのパイプラインペナルテ
ィが生じ、サブルーチンコールが頻発する場合にはパイ
プライン動作が乱され、大幅に効率を低下させていた。
で、時刻t8で、分岐先アドレスの命令がフェッチされ
実行される。このように、従来例の命令処理装置では、
サブルーチンリターン時に1τのパイプラインペナルテ
ィが生じ、サブルーチンコールが頻発する場合にはパイ
プライン動作が乱され、大幅に効率を低下させていた。
【0010】上記、パイプラインペナルティをなくすこ
と、すなわち汎用レジスタ(GR1)61から分岐先ア
ドレスをDC(IA)ステージで得るためには、いくつ
かの方法が考えられる。
と、すなわち汎用レジスタ(GR1)61から分岐先ア
ドレスをDC(IA)ステージで得るためには、いくつ
かの方法が考えられる。
【0011】(1)分岐アドレスの読み出し用に、汎用
レジスタ回路部60に専用の読み出しポートを設ける方
法。しかしながらこの方法では、汎用レジスタの読み出
しポートに多くの負荷をかけることになり、パイプライ
ンのステージの中で、クリティカルパス(critic
al path)となり易いDCステージ(例えば、D
Cステージで、演算ソースを汎用レジスタから読み出す
場合等)、EXステージ(例えば、EXステージで演算
ソースを汎用レジスタから読み出す場合)の設計がより
困難なものとなる。
レジスタ回路部60に専用の読み出しポートを設ける方
法。しかしながらこの方法では、汎用レジスタの読み出
しポートに多くの負荷をかけることになり、パイプライ
ンのステージの中で、クリティカルパス(critic
al path)となり易いDCステージ(例えば、D
Cステージで、演算ソースを汎用レジスタから読み出す
場合等)、EXステージ(例えば、EXステージで演算
ソースを汎用レジスタから読み出す場合)の設計がより
困難なものとなる。
【0012】(2)マイクロプロセッサのように、1チ
ップ上に命令フェッチ制御回路部50と汎用レジスタ回
路部60を内蔵する方法。しかし、この方法では、汎用
レジスタからの分岐処理回路までの配線パスのため、信
号伝達の遅延時間増加や配線性の低下を招くことにな
り、不利益が多くなる。
ップ上に命令フェッチ制御回路部50と汎用レジスタ回
路部60を内蔵する方法。しかし、この方法では、汎用
レジスタからの分岐処理回路までの配線パスのため、信
号伝達の遅延時間増加や配線性の低下を招くことにな
り、不利益が多くなる。
【0013】(3)また、複数のチップを用いてシステ
ムを構成する場合は、同一チップ上に、命令フェッチ制
御回路部50と汎用レジスタ回路部60を実装する方法
が考えられるが。しかし、演算器等との関連を考慮する
と困難な場合が多く、また、このような場合は、命令フ
ェッチ/分岐処理回路と汎用レジスタ間のインタフェー
ス回路が必要となり、遅延時間や配線ピン数の制限が問
題となる。
ムを構成する場合は、同一チップ上に、命令フェッチ制
御回路部50と汎用レジスタ回路部60を実装する方法
が考えられるが。しかし、演算器等との関連を考慮する
と困難な場合が多く、また、このような場合は、命令フ
ェッチ/分岐処理回路と汎用レジスタ間のインタフェー
ス回路が必要となり、遅延時間や配線ピン数の制限が問
題となる。
【0014】以上、従来の技術では、種々の理由によ
り、サブルーチンリターンの分岐処理でパイプラインペ
ナルティを生じることは避け難かった。本発明は上記問
題点に鑑みなされたものであり、サブルーチンリターン
の時パイプラインペナルティを、効果的に削減し得るサ
ブルーチンリターン制御方法及び該方法を用いた命令処
理装置を提供することを目的とする。
り、サブルーチンリターンの分岐処理でパイプラインペ
ナルティを生じることは避け難かった。本発明は上記問
題点に鑑みなされたものであり、サブルーチンリターン
の時パイプラインペナルティを、効果的に削減し得るサ
ブルーチンリターン制御方法及び該方法を用いた命令処
理装置を提供することを目的とする。
【0015】
【課題を解決するための手段】本発明によれば、上述の
目的は前記特許請求の範囲に記載した手段により達成さ
れる。
目的は前記特許請求の範囲に記載した手段により達成さ
れる。
【0016】すなわち、請求項1記載の発明について
は、複数の汎用レジスタを内蔵する汎用レジスタ回路部
有し、上記汎用レジスタ回路部中の汎用レジスタを特定
し、リターンアドレスを格納してサブルーチンに分岐す
るサブルーチンコール命令と、上記特定した汎用レジス
タの内容を分岐アドレスとしてサブルーチンからリター
ンするサブルーチンリターン命令を有する命令処理装置
において、サブルーチンコール命令で汎用レジスタを特
定して、リターンアドレスを格納する際に、同時に、該
リターンアドレスを、上記汎用レジスタ回路部外に設け
たリターンアドレスレジスタに格納するリターンアドレ
ス格納手段と、上記リターンアドレスレジスタにデータ
を格納する際に、同時に該リターンアドレスが有効であ
ることをフラグにより指標する手段と、上記サブルーチ
ンコール命令以降に実行される命令により、上記特定し
た汎用レジスタの内容が変更された場合には、上記フラ
グに無効を指標させる手段と、サブルーチンリターン命
令実行時に、指定された汎用レジスタが上記特定した汎
用レジスタであり、かつ上記フラグが有効を指標してい
る場合には、上記リターンアドレスレジスタの内容を分
岐先アドレスとして分岐を実行する手段とを用いるサブ
ルーチンリターン制御方法である。
は、複数の汎用レジスタを内蔵する汎用レジスタ回路部
有し、上記汎用レジスタ回路部中の汎用レジスタを特定
し、リターンアドレスを格納してサブルーチンに分岐す
るサブルーチンコール命令と、上記特定した汎用レジス
タの内容を分岐アドレスとしてサブルーチンからリター
ンするサブルーチンリターン命令を有する命令処理装置
において、サブルーチンコール命令で汎用レジスタを特
定して、リターンアドレスを格納する際に、同時に、該
リターンアドレスを、上記汎用レジスタ回路部外に設け
たリターンアドレスレジスタに格納するリターンアドレ
ス格納手段と、上記リターンアドレスレジスタにデータ
を格納する際に、同時に該リターンアドレスが有効であ
ることをフラグにより指標する手段と、上記サブルーチ
ンコール命令以降に実行される命令により、上記特定し
た汎用レジスタの内容が変更された場合には、上記フラ
グに無効を指標させる手段と、サブルーチンリターン命
令実行時に、指定された汎用レジスタが上記特定した汎
用レジスタであり、かつ上記フラグが有効を指標してい
る場合には、上記リターンアドレスレジスタの内容を分
岐先アドレスとして分岐を実行する手段とを用いるサブ
ルーチンリターン制御方法である。
【0017】請求項2記載の発明については、リターン
アドレスを格納するリターンアドレスレジスタと、上記
リターンアドレスレジスタに格納されたアドレスデータ
の有効性を指標するフラグとを命令フェッチ及び分岐処
理を行う命令フェッチ制御回路部内に設けた請求項1記
載のサブルーチンリターン制御方法である。
アドレスを格納するリターンアドレスレジスタと、上記
リターンアドレスレジスタに格納されたアドレスデータ
の有効性を指標するフラグとを命令フェッチ及び分岐処
理を行う命令フェッチ制御回路部内に設けた請求項1記
載のサブルーチンリターン制御方法である。
【0018】請求項3記載の発明については、請求項1
または2記載のサブルーチンリターン制御方法を用いた
命令処理装置である。
または2記載のサブルーチンリターン制御方法を用いた
命令処理装置である。
【0019】
【作用】請求項1記載のサブルーチンリターン制御方法
では、汎用レジスタ回路部とは別の場所に、リターンア
ドレスのコピーを取るリターンアドレスレジスタを設け
ておく、そして、そのリターンアドレスレジスタに格納
されたデータの有効性を指標するフラグも同時に設け
る。
では、汎用レジスタ回路部とは別の場所に、リターンア
ドレスのコピーを取るリターンアドレスレジスタを設け
ておく、そして、そのリターンアドレスレジスタに格納
されたデータの有効性を指標するフラグも同時に設け
る。
【0020】そして、サブルーチンコール/リターン時
に下記のような動作を行わせる。 (1)サブルーチンコール時には、リターンアドレス
を、汎用レジスタ回路部内の特定した汎用レジスタに格
納すると共に、さらに、汎用レジスタ回路部外に設けた
リターンアドレスレジスタに同時に格納する。
に下記のような動作を行わせる。 (1)サブルーチンコール時には、リターンアドレス
を、汎用レジスタ回路部内の特定した汎用レジスタに格
納すると共に、さらに、汎用レジスタ回路部外に設けた
リターンアドレスレジスタに同時に格納する。
【0021】(2)そして、リターンアドレスレジスタ
に格納されたデータの有効性を指標するフラグを立て
る。 (3)サブルーチンリターン時に、リターン命令により
指定された汎用レジスタが特定した汎用レジスタであ
り、かつ、フラグが有効を指標している場合には、リタ
ーンアドレスレジスタの内容を分岐アドレスとして、サ
ブルーチンリターンする。
に格納されたデータの有効性を指標するフラグを立て
る。 (3)サブルーチンリターン時に、リターン命令により
指定された汎用レジスタが特定した汎用レジスタであ
り、かつ、フラグが有効を指標している場合には、リタ
ーンアドレスレジスタの内容を分岐アドレスとして、サ
ブルーチンリターンする。
【0022】(4)なお、サブルーチンコール命令より
以降に実行された命令により、特定した汎用レジスタの
内容が書き換えられた場合には、フラグに無効を指標さ
せ、リターンアドレスレジスタの内容は使用しない。
以降に実行された命令により、特定した汎用レジスタの
内容が書き換えられた場合には、フラグに無効を指標さ
せ、リターンアドレスレジスタの内容は使用しない。
【0023】したがって、本発明では、通常の場合は、
サブルーチンリターン時の分岐アドレスを得るのに、汎
用レジスタにアクセスすることなく、リターンアドレス
レジスタから直接分岐アドレスが得られる。
サブルーチンリターン時の分岐アドレスを得るのに、汎
用レジスタにアクセスすることなく、リターンアドレス
レジスタから直接分岐アドレスが得られる。
【0024】従って、高速な命令フェッチが可能とな
り、従来例のようなパイプラインペナルティを生じるこ
とがなくなる。請求項2記載の発明については、リター
ンアドレスレジスタとフラグの設置場所を、命令フェッ
チ及び分岐処理を行う回路部の内部に配置し、分岐アド
レスの読み出し動作を極力高速化するものである。
り、従来例のようなパイプラインペナルティを生じるこ
とがなくなる。請求項2記載の発明については、リター
ンアドレスレジスタとフラグの設置場所を、命令フェッ
チ及び分岐処理を行う回路部の内部に配置し、分岐アド
レスの読み出し動作を極力高速化するものである。
【0025】請求項3記載の発明については、請求項1
または2記載の方法を用いた命令処理装置である。
または2記載の方法を用いた命令処理装置である。
【0026】
【実施例】図1は、本発明の一実施例のシステム構成を
示すブロック図である。請求項1,2及び3記載の発明
に共通に対応する実施例である。
示すブロック図である。請求項1,2及び3記載の発明
に共通に対応する実施例である。
【0027】図1において、10はパイプライン制御に
おける命令フェッチ及び分岐処理を行う命令フェッチ制
御回路部、11は命令データが格納される命令バッファ
(IB)、12は命令の内容を解読するデコーダ(DE
C)、13は命令フェッチの制御を行うIF制御回路、
14はプログラムカウンタ(PC)、15はコール命令
実行時にPCとIBの該当フィールドから抜き出された
相対アドレス値を加算する分岐アドレス生成加算器(T
G)、16はPCの内容をインクリメント(+1)して
更新するためのインクリメンタ(INC)、17はPC
に書き込むデータを選択するためのセレクタ(PC−S
EL)、18はコール命令実行時のPCの内容をインク
リメント(+1)したデータを格納するリターンアドレ
スレジスタ(RREG)、19はRREGの内容の有効
/無効を指標するフラグ(RVAL)、20は命令アド
レスを選択するためのセレクタ(IFA−sel)、2
1は命令先取りを行うためのプリフェッチプログラムカ
ウンタ(PFPC)、22はPFPCへの書き込みデー
タを選択するためのセレクタ(PFPC−sel)、2
3は入力データをインクリメント(+1)して出力する
インクリメンタ(INC)、24はINC23への入力
データを選択するセレクタ(PFPC−INC−se
l)を表している。
おける命令フェッチ及び分岐処理を行う命令フェッチ制
御回路部、11は命令データが格納される命令バッファ
(IB)、12は命令の内容を解読するデコーダ(DE
C)、13は命令フェッチの制御を行うIF制御回路、
14はプログラムカウンタ(PC)、15はコール命令
実行時にPCとIBの該当フィールドから抜き出された
相対アドレス値を加算する分岐アドレス生成加算器(T
G)、16はPCの内容をインクリメント(+1)して
更新するためのインクリメンタ(INC)、17はPC
に書き込むデータを選択するためのセレクタ(PC−S
EL)、18はコール命令実行時のPCの内容をインク
リメント(+1)したデータを格納するリターンアドレ
スレジスタ(RREG)、19はRREGの内容の有効
/無効を指標するフラグ(RVAL)、20は命令アド
レスを選択するためのセレクタ(IFA−sel)、2
1は命令先取りを行うためのプリフェッチプログラムカ
ウンタ(PFPC)、22はPFPCへの書き込みデー
タを選択するためのセレクタ(PFPC−sel)、2
3は入力データをインクリメント(+1)して出力する
インクリメンタ(INC)、24はINC23への入力
データを選択するセレクタ(PFPC−INC−se
l)を表している。
【0028】また、図3の従来例と同じ部分には、同じ
符号を付してあり、その説明は省略する。なお、図1中
のリターンアドレスレジスタ(RREG)18と、フラ
グ(RVAL)19が、本発明を実現するために新たに
追加された部分であり、その他の部分は、従来例の命令
フェッチ制御回路部50(図3)と同じである。
符号を付してあり、その説明は省略する。なお、図1中
のリターンアドレスレジスタ(RREG)18と、フラ
グ(RVAL)19が、本発明を実現するために新たに
追加された部分であり、その他の部分は、従来例の命令
フェッチ制御回路部50(図3)と同じである。
【0029】また、本実施例の命令処理装置のパイプラ
イン構成は、図4に示した構成例を用いる。まず最初
に、図1の実施例のパイプラインの動作部の前提条件を
以下に示す。なお、この前提条件は単に、実施例の前提
条件であり、本発明の前提条件となるものではない。
イン構成は、図4に示した構成例を用いる。まず最初
に、図1の実施例のパイプラインの動作部の前提条件を
以下に示す。なお、この前提条件は単に、実施例の前提
条件であり、本発明の前提条件となるものではない。
【0030】(1)DC(IA)ステージで、DC(デ
コード)と同時に実行されるIA(IFアドレス供給ス
テージ)において、命令アドレスをメモリに供給し、I
Fステージにおいて命令データを得るものとする。な
お、EXステージ、WBステージは、本発明と直接関係
しないのでその詳細は省略する。
コード)と同時に実行されるIA(IFアドレス供給ス
テージ)において、命令アドレスをメモリに供給し、I
Fステージにおいて命令データを得るものとする。な
お、EXステージ、WBステージは、本発明と直接関係
しないのでその詳細は省略する。
【0031】(2)(1)のパイプライン制御方式で
は、コール/リターン命令等の分岐命令実行時には、命
令フェッチのためのペナルティが生じるが、一般的な手
法として遅延分岐によるペナルティの削減が行われ、本
実施例でもこの手法を採用している。
は、コール/リターン命令等の分岐命令実行時には、命
令フェッチのためのペナルティが生じるが、一般的な手
法として遅延分岐によるペナルティの削減が行われ、本
実施例でもこの手法を採用している。
【0032】(3)分岐アドレスを格納する汎用レジス
タ(GR1)61は、命令セットをアーキテクチャで固
定してもよく、またコンパイラが生成するコール/リタ
ーン命令で使用頻度の高い汎用レジスタを特定したもの
でもよい。本実施例では、汎用レジスタ(GR1)61
を当該特定汎用レジスタとする。
タ(GR1)61は、命令セットをアーキテクチャで固
定してもよく、またコンパイラが生成するコール/リタ
ーン命令で使用頻度の高い汎用レジスタを特定したもの
でもよい。本実施例では、汎用レジスタ(GR1)61
を当該特定汎用レジスタとする。
【0033】(4)リターン命令実行時、汎用レジスタ
回路部の実装位置や遅延時間等の物理的制約から、汎用
レジスタ(GR1)61の内容の読み出し、命令アドレ
スの生成、命令フェッチの一連の処理が、パイプライン
の1マシンサイクル(τ)で実行できないと仮定し、そ
の時の処理として、汎用レジスタ(GR1)61へのア
クセスのため1τのパイプラインインターロックをかけ
る制御を行う。
回路部の実装位置や遅延時間等の物理的制約から、汎用
レジスタ(GR1)61の内容の読み出し、命令アドレ
スの生成、命令フェッチの一連の処理が、パイプライン
の1マシンサイクル(τ)で実行できないと仮定し、そ
の時の処理として、汎用レジスタ(GR1)61へのア
クセスのため1τのパイプラインインターロックをかけ
る制御を行う。
【0034】(5)コールを含む分岐命令は、プログラ
ムカウンタ(PC)14からの相対アドレスにより分岐
を行うものとする。 (6)プログラムカウンタ(PC)14は、IFステー
ジで更新される。よって、例外等(割込等)の発生によ
り命令を無効化するようなケースではPCの特殊制御が
必要であるが、本発明には直接関係しないので省略す
る。
ムカウンタ(PC)14からの相対アドレスにより分岐
を行うものとする。 (6)プログラムカウンタ(PC)14は、IFステー
ジで更新される。よって、例外等(割込等)の発生によ
り命令を無効化するようなケースではPCの特殊制御が
必要であるが、本発明には直接関係しないので省略す
る。
【0035】(7)図1の実施例においては、本発明に
関係する部分のみを示したものであり、コール/リター
ン命令制御以外の詳細は省略する。また、IB(命令バ
ッファ)11の構成や数量等のインクリメントに依存す
る部分も特に規定するものではない。
関係する部分のみを示したものであり、コール/リター
ン命令制御以外の詳細は省略する。また、IB(命令バ
ッファ)11の構成や数量等のインクリメントに依存す
る部分も特に規定するものではない。
【0036】以上の前提条件から、本発明の動作を説明
する。 (1)コールや、リターン命令等のフロー制御命令以外
の命令フェッチの場合には、セレクタ(IFA−se
l)20の選択により、プリフェッチプログラムカウン
タ(PFPC)21の内容を命令アドレスとし命令フェ
ッチを行う。またPFPC21のデータは、セレクタ
(PFPC−INC−sel)24を介してインクリメ
ンタ(INC)23に送られる。そして、PFPC21
には、命令フェッチ毎に、インクリメンタ(INC)2
3により現在の内容をインクリメント(+1)したデー
タが格納される。
する。 (1)コールや、リターン命令等のフロー制御命令以外
の命令フェッチの場合には、セレクタ(IFA−se
l)20の選択により、プリフェッチプログラムカウン
タ(PFPC)21の内容を命令アドレスとし命令フェ
ッチを行う。またPFPC21のデータは、セレクタ
(PFPC−INC−sel)24を介してインクリメ
ンタ(INC)23に送られる。そして、PFPC21
には、命令フェッチ毎に、インクリメンタ(INC)2
3により現在の内容をインクリメント(+1)したデー
タが格納される。
【0037】同様に、プログラムカウンタ(PC)14
にも、インクリメンタ(INC)16及びセレクタ(P
C−sel)17により、現在の内容をインクリメント
(+1)したデータが格納される。
にも、インクリメンタ(INC)16及びセレクタ(P
C−sel)17により、現在の内容をインクリメント
(+1)したデータが格納される。
【0038】以上の、PFPC21及びPC14へのイ
ンクリメント値の格納許可条件は、パイプラインのDC
(IA)ステージのリリース信号(パイプラインインタ
ーロック等がなく、次のステージに進むことができる許
可信号)である。
ンクリメント値の格納許可条件は、パイプラインのDC
(IA)ステージのリリース信号(パイプラインインタ
ーロック等がなく、次のステージに進むことができる許
可信号)である。
【0039】(2)コール命令実行時は、PC14と、
命令バッファ(IB)11の該当するフィールドから抜
粋された相対値を、ターゲットアドレスレジスタ(T
G)15で加算したデータを命令アドレス(サブルーチ
ン呼び出しアドレス)として、セレクタ(IFA−se
l)20を介して出力する。
命令バッファ(IB)11の該当するフィールドから抜
粋された相対値を、ターゲットアドレスレジスタ(T
G)15で加算したデータを命令アドレス(サブルーチ
ン呼び出しアドレス)として、セレクタ(IFA−se
l)20を介して出力する。
【0040】この時、セレクタ(PFPC−INC−s
el)24もTG15の出力を選択し、PFPC21に
は、INC23及びセレクタ(PFPC−sel)22
を介して、サブルーチンの呼び出しアドレス(TG15
の出力データ)の次のアドレスがセットされる。
el)24もTG15の出力を選択し、PFPC21に
は、INC23及びセレクタ(PFPC−sel)22
を介して、サブルーチンの呼び出しアドレス(TG15
の出力データ)の次のアドレスがセットされる。
【0041】同時に、現在のPC14の内容をインクリ
メント(+1)した値、すなわちコール命令の次のアド
レス(サブルーチンからのリターンアドレス)をパイプ
ラインの以降のステージを通して、命令で指定された汎
用レジスタ(GR)に書き込む。
メント(+1)した値、すなわちコール命令の次のアド
レス(サブルーチンからのリターンアドレス)をパイプ
ラインの以降のステージを通して、命令で指定された汎
用レジスタ(GR)に書き込む。
【0042】コール命令で指定された汎用レジスタ(G
R)が特定汎用レジスタ(GR1)61の場合は、現在
のPC14の値をインクリメント(+1)した値(リタ
ーンアドレス)をRREG21に格納すると共に、フラ
グ(RVAL)19をセットし、RREG18に特定汎
用レジスタ(GR1)と同じ内容のデータが有効に存在
することを示す(図1中のCALL−GR1信号ONの
時)。
R)が特定汎用レジスタ(GR1)61の場合は、現在
のPC14の値をインクリメント(+1)した値(リタ
ーンアドレス)をRREG21に格納すると共に、フラ
グ(RVAL)19をセットし、RREG18に特定汎
用レジスタ(GR1)と同じ内容のデータが有効に存在
することを示す(図1中のCALL−GR1信号ONの
時)。
【0043】コール命令で指定された汎用レジスタ(G
R)が特定汎用レジスタ(GR1)61以外の場合は、
RREG18及びフラグ(RVAL)19の内容は変更
されない。
R)が特定汎用レジスタ(GR1)61以外の場合は、
RREG18及びフラグ(RVAL)19の内容は変更
されない。
【0044】(3)コール命令以外で、デストネーショ
ンレジスタに特定汎用レジスタ(GR1)61が指定さ
れた命令が実行されると、フラグ(RVAL)19をリ
セットし、RREG18の内容が無効化されたことを示
す(図1中のDEST−GR1信号ONの時)。
ンレジスタに特定汎用レジスタ(GR1)61が指定さ
れた命令が実行されると、フラグ(RVAL)19をリ
セットし、RREG18の内容が無効化されたことを示
す(図1中のDEST−GR1信号ONの時)。
【0045】(4)リターン命令実行時、指定された汎
用レジスタ(GR)が特定汎用レジスタ(GR1)61
であり、かつフラグ(RVAL)19がオン(セット状
態)の場合は、命令アドレスとして、RREG18の内
容を選択する。この時、セレクタ(PFPC−INC−
sel)24もRREG18の出力を選択することによ
り、PFPC21には、サブルーチンの戻りアドレスの
次のアドレスが格納される。
用レジスタ(GR)が特定汎用レジスタ(GR1)61
であり、かつフラグ(RVAL)19がオン(セット状
態)の場合は、命令アドレスとして、RREG18の内
容を選択する。この時、セレクタ(PFPC−INC−
sel)24もRREG18の出力を選択することによ
り、PFPC21には、サブルーチンの戻りアドレスの
次のアドレスが格納される。
【0046】さらに、PC14にも、セレクタ(PC−
sel)17を介して、リターン命令のアドレスを格納
する。以上説明したように、本実施例では、サブルーチ
ンリターン時に、汎用レジスタ(GR)へのアクセスは
ない。
sel)17を介して、リターン命令のアドレスを格納
する。以上説明したように、本実施例では、サブルーチ
ンリターン時に、汎用レジスタ(GR)へのアクセスは
ない。
【0047】リターン命令実行時、指定された汎用レジ
スタ(GR)が特定汎用レジスタ(GR1)61である
が、フラグ(RVAL)19がオフ(リセット状態)で
あるか、あるいは、特定汎用レジスタ(GR1)61以
外の汎用レジスタが指定された場合は、パイプラインの
DC(IA)ステージをインターロックし、その間に指
定された汎用レジスタ(GR)をアクセスし、PFPC
21及びPC14に読み出した値を格納する。
スタ(GR)が特定汎用レジスタ(GR1)61である
が、フラグ(RVAL)19がオフ(リセット状態)で
あるか、あるいは、特定汎用レジスタ(GR1)61以
外の汎用レジスタが指定された場合は、パイプラインの
DC(IA)ステージをインターロックし、その間に指
定された汎用レジスタ(GR)をアクセスし、PFPC
21及びPC14に読み出した値を格納する。
【0048】なお、この場合、セレクタ(PFPC−s
el)22及びセレクタ(PC−sel)17が汎用レ
ジスタ(GR)の読み出しデータを選択する。以降の動
作は、(1)と同様である。
el)22及びセレクタ(PC−sel)17が汎用レ
ジスタ(GR)の読み出しデータを選択する。以降の動
作は、(1)と同様である。
【0049】また、図2は、本発明の実施例と従来例の
パイプライン動作を比較するための図であり、図2
(a)は従来例の場合を示し、図2(b)は本発明の場
合を示している。
パイプライン動作を比較するための図であり、図2
(a)は従来例の場合を示し、図2(b)は本発明の場
合を示している。
【0050】図2(a)の従来例の場合の動作は、リタ
ーン命令実行時に汎用レジスタ(GR1)61の読み出
しのために、インターロックがかかり、1τのパイプラ
インペナルティが生じる(時刻t6)。
ーン命令実行時に汎用レジスタ(GR1)61の読み出
しのために、インターロックがかかり、1τのパイプラ
インペナルティが生じる(時刻t6)。
【0051】図2(b)は、本発明の実施例での、RV
ALが有効を指標している場合の、パイプライン動作で
ある。リターン命令のDC(IA)ステージでRREG
18の内容を読み取り、リターンアドレスを得ることが
できるため(時刻t7の時点)、従来例のごとく1τの
パイプラインペナルティは生じない。ただし、RVAL
が無効を指標している場合は従来例の場合と同様であ
る。
ALが有効を指標している場合の、パイプライン動作で
ある。リターン命令のDC(IA)ステージでRREG
18の内容を読み取り、リターンアドレスを得ることが
できるため(時刻t7の時点)、従来例のごとく1τの
パイプラインペナルティは生じない。ただし、RVAL
が無効を指標している場合は従来例の場合と同様であ
る。
【0052】
【発明の効果】本発明のサブルーチンリターン制御方法
及び該方法を用いた命令処理装置によれば、リターンア
ドレスレジスタ(RREG)18と、フラグ(RVA
L)19なる単純なハードウエアを追加するだけで、サ
ブルーチンリターン時のパイプラインペナルティを削減
することができる。
及び該方法を用いた命令処理装置によれば、リターンア
ドレスレジスタ(RREG)18と、フラグ(RVA
L)19なる単純なハードウエアを追加するだけで、サ
ブルーチンリターン時のパイプラインペナルティを削減
することができる。
【0053】スーパスカラやVLIW等の並列命令を実
行する命令処理装置においては、マシンサイクルに対す
る分岐命令の出現頻度が高く、本発明による性能の向上
は極めて大きい。
行する命令処理装置においては、マシンサイクルに対す
る分岐命令の出現頻度が高く、本発明による性能の向上
は極めて大きい。
【0054】しかも、本ハードウエアは、汎用レジスタ
の実装位置には依存せず、命令フェッチ制御回路の内
部、またはその近傍に実装すればよく、柔軟なチップ設
計及び分割を可能にする。
の実装位置には依存せず、命令フェッチ制御回路の内
部、またはその近傍に実装すればよく、柔軟なチップ設
計及び分割を可能にする。
【図1】本発明の一実施例のシステム構成を示すブロッ
ク図である。
ク図である。
【図2】本発明の実施例と従来例のパイプライン動作を
比較するための図である。
比較するための図である。
【図3】従来の命令処理装置のシステム構成の一例を示
すブロック図である。
すブロック図である。
【図4】パイプライン制御の一構成例を示す図である。
10 命令フェッチ制御回路部 11 命令バッファ(IB) 12 デコーダ(DEC) 13 IF制御回路 14 プログラムカウンタ(PC) 15 分岐アドレス生成加算器(TG) 16 インクリメンタ(INC) 17 セレクタ(PC−SEL) 18 レジスタ(RREG) 19 フラグ(RVAL) 20 セレクタ(IFA−sel) 21 プリフェッチプログラムカウンタ(PFPC) 22 セレクタ(PFPC−sel) 23 インクリメンタ(INC) 24 セレクタ(PFOC−INC−sel) 60 汎用レジスタ回路部 61 汎用レジスタ(GR1)
Claims (3)
- 【請求項1】 複数の汎用レジスタを内蔵する汎用レジ
スタ回路部を有し、上記汎用レジスタ回路部中の汎用レ
ジスタを特定し、リターンアドレスを格納してサブルー
チンに分岐するサブルーチンコール命令と、上記特定し
た汎用レジスタの内容を分岐アドレスとしてサブルーチ
ンからリターンするサブルーチンリターン命令を有する
命令処理装置において、 サブルーチンコール命令で汎用レジスタを特定して、リ
ターンアドレスを格納する際に、同時に、該リターンア
ドレスを、上記汎用レジスタ回路部外に設けたリターン
アドレスレジスタに格納するリターンアドレス格納手段
と、 上記リターンアドレスレジスタにデータを格納する際
に、同時に該リターンアドレスが有効であることをフラ
グにより指標する手段と、 上記サブルーチンコール命令以降に実行される命令によ
り、上記特定した汎用レジスタの内容が変更された場合
には、上記フラグに無効を指標させる手段と、 サブルーチンリターン命令実行時に、指定された汎用レ
ジスタが上記特定した汎用レジスタであり、かつ上記フ
ラグが有効を指標している場合には、上記リターンアド
レスレジスタの内容を分岐アドレスとして分岐を実行す
る手段とを用いることを特徴とするサブルーチンリター
ン制御方法。 - 【請求項2】 リターンアドレスを格納するリターンア
ドレスレジスタと、 上記リターンアドレスレジスタに格納されたアドレスデ
ータの有効性を指標するフラグとを命令フェッチ及び分
岐処理を行う命令フェッチ制御回路部内に設けたことを
特徴とする請求項1記載のサブルーチンリターン制御方
法。 - 【請求項3】 請求項1または2記載のサブルーチンリ
ターン制御方法を用いたことを特徴とする命令処理装
置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29451292A JP3325309B2 (ja) | 1992-11-02 | 1992-11-02 | サブルーチンリターン命令処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29451292A JP3325309B2 (ja) | 1992-11-02 | 1992-11-02 | サブルーチンリターン命令処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH06149568A true JPH06149568A (ja) | 1994-05-27 |
| JP3325309B2 JP3325309B2 (ja) | 2002-09-17 |
Family
ID=17808742
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP29451292A Expired - Fee Related JP3325309B2 (ja) | 1992-11-02 | 1992-11-02 | サブルーチンリターン命令処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3325309B2 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08212075A (ja) * | 1995-01-31 | 1996-08-20 | Nec Corp | 情報処理装置 |
-
1992
- 1992-11-02 JP JP29451292A patent/JP3325309B2/ja not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08212075A (ja) * | 1995-01-31 | 1996-08-20 | Nec Corp | 情報処理装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3325309B2 (ja) | 2002-09-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
| US5961637A (en) | Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers | |
| US7065632B1 (en) | Method and apparatus for speculatively forwarding storehit data in a hierarchical manner | |
| KR0160602B1 (ko) | 데이터 처리장치 | |
| KR20040016829A (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
| US6725359B2 (en) | Address stage logic for generating speculative address operand interim results of preceding instruction by arithmetic operations and configuring | |
| US5522084A (en) | Method and system for invalidating instructions utilizing validity and write delay flags in parallel processing apparatus | |
| EP1190305B1 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
| US6263424B1 (en) | Execution of data dependent arithmetic instructions in multi-pipeline processors | |
| US7134000B2 (en) | Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information | |
| US7020769B2 (en) | Method and system for processing a loop of instructions | |
| JP3325309B2 (ja) | サブルーチンリターン命令処理装置 | |
| JPH08272611A (ja) | マイクロプロセッサ | |
| KR100278136B1 (ko) | 데이타처리장치 및 데이타처리방법 | |
| US20070260857A1 (en) | Electronic Circuit | |
| US4853889A (en) | Arrangement and method for speeding the operation of branch instructions | |
| US20030061468A1 (en) | Forwarding the results of operations to dependent instructions quickly | |
| JPH10124312A (ja) | 中央処理装置 | |
| JP2000029696A (ja) | プロセッサおよびパイプライン処理制御方法 | |
| US6442673B1 (en) | Update forwarding cache for address mode | |
| US20060168431A1 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
| JP3520372B2 (ja) | メモリ制御ユニット並びに入出力制御ユニットの動作におけるクリティカル・パスの削除 | |
| US20050071830A1 (en) | Method and system for processing a sequence of instructions | |
| US20050033939A1 (en) | Address generation | |
| JP3147884B2 (ja) | 記憶装置及び情報処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20020618 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |