JP3130446B2 - プログラム変換装置及びプロセッサ - Google Patents

プログラム変換装置及びプロセッサ

Info

Publication number
JP3130446B2
JP3130446B2 JP07111701A JP11170195A JP3130446B2 JP 3130446 B2 JP3130446 B2 JP 3130446B2 JP 07111701 A JP07111701 A JP 07111701A JP 11170195 A JP11170195 A JP 11170195A JP 3130446 B2 JP3130446 B2 JP 3130446B2
Authority
JP
Japan
Prior art keywords
instruction
subroutine
branch
machine language
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP07111701A
Other languages
English (en)
Other versions
JPH08305581A (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 Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP07111701A priority Critical patent/JP3130446B2/ja
Priority to US08/589,802 priority patent/US5758162A/en
Priority to DE69614183T priority patent/DE69614183T2/de
Priority to EP96301214A priority patent/EP0742517B1/en
Priority to TW085102244A priority patent/TW289812B/zh
Priority to CN96103712A priority patent/CN1099074C/zh
Priority to KR1019960015311A priority patent/KR100247900B1/ko
Publication of JPH08305581A publication Critical patent/JPH08305581A/ja
Priority to US08/959,386 priority patent/US5978905A/en
Application granted granted Critical
Publication of JP3130446B2 publication Critical patent/JP3130446B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4451Avoiding pipeline stalls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムを機械語命
令列に翻訳して連結するプログラム変換装置及びプログ
ラム変換装置によって得られた機械語命令列を実行する
プロセッサに関し、特にサブルーチンへの分岐命令の実
行時に生じるパイプラインの乱れを回避するプログラム
変換装置及びプロセッサに関する。
【0002】
【従来の技術】CPU(以下「プロセッサ」という。)
での処理の高速化の基本技術の一つにパイプライン処理
がある。パイプライン処理は、1個の命令の処理過程を
複数の小さな処理単位(パイプラインステージ)に分割
し、各ステージを同時に処理を行うことにより処理速度
を向上させる技術である。ところが、分岐命令を実行し
た場合には、パイプラインストール(乱れ)が生じ、パ
イプライン処理の実効性能が理想性能を下回ることにな
る。この現象を、分岐ハザードという。
【0003】図10は、分岐ハザードが生じる場合の命
令列を示す図である。図11は、図10の命令列を実行
した場合のパイプラインの流れをクロックサイクルごと
に示した図である。パイプラインは、3個のステージ
(IF:命令フェッチ、DEC:命令デコード、EX:
実行及び実効アドレス生成)からなる。今、命令1は、
番地Aから始まるサブルーチンへの分岐命令とする。ク
ロック1においてIFステージにフェッチされた命令1
はクロック3においてEXステージで実行されるので、
クロック4において初めて番地Aの命令AがIFステー
ジにフェッチされる。この命令Aが実行されるのは、ク
ロック6である。即ち、この例では、既にパイプライン
に取り込まれた命令2、3を無効化しなければならず、
命令1が実行されてから命令Aが実行されるまでに3ク
ロックを要している。図11において、パイプラインス
トールは灰色で示している。
【0004】このような分岐ハザードを回避する従来技
術として、遅延分岐と呼ばれる方法がある(例えば、ヘ
ネシー&パターソンコンピュータ・アーキテクチャ、第
265頁から第270頁、日経BP出版センター)。こ
の遅延分岐では、コンパイラがコンパイル時に命令のス
ケジューリングを行い、例えば、分岐先の命令を分岐命
令の後続にあたる命令の位置(分岐遅延スロット)に予
め移動させておくという方法が採られる。
【0005】分岐先命令が分岐遅延スロットに置かれた
場合の命令列を図12に示す。分岐先命令である命令
A、Bは、分岐命令である命令1の後続命令として番地
2、3に移動して置かれている。図13は、図12に示
された命令列を実行した場合のパイプラインの流れを示
す図である。この図から判るように、遅延分岐の方法に
よれば無駄な命令をフェッチしてしまうことが無くなる
ので、図11で示されたようなパイプラインストールは
生じない。従って、図12に示される遅延分岐によるス
ケジューリングによって、分岐ハザードの問題は解消さ
れている。
【0006】
【発明が解決しようとする課題】しかしながら、遅延分
岐による方法では、必ずしも分岐先の命令を分岐遅延ス
ロットに移動できない場合があり、常に分岐ハザードを
解消できるとは限らないという問題点を有している。具
体的には、図10に示された例において、番地Aから始
まるサブルーチンがコンパイラからは認識できない場合
がある。通常、コンパイラは、プログラムが納められた
ファイルごとに翻訳を行うが、命令1を含むプログラム
と命令A、Bを含むサブルーチンとが別のファイルに納
められている場合がある。従って、命令1を含むプログ
ラムを納めたファイルのみが与えられた場合には、コン
パイラは、分岐先命令である命令A、Bを移動させて分
岐遅延スロットに入れるというスケジューリングを行う
ことができない。そのために、別のファイルに納められ
た命令に分岐する場合には、依然として分岐ハザードが
生じるという問題点があった。
【0007】この問題を回避するために、別のファイル
に納められたサブルーチンには分岐しないようにプログ
ラムを作成しておいたり、プログラムの分岐箇所を予め
調べることによって関連するサブルーチンを1つのファ
イルに納める処理を行った後に翻訳させるという方法も
考えられる。しかし、このような方法では、プログラム
の設計時において常に分岐先のサブルーチンの配置を意
識しなければならず、プログラムの設計や開発の作業効
率が低下する。さらに、翻訳単位であるファイルのサイ
ズが大きくなるために、翻訳に多大な時間を要する。
【0008】そこで、本発明はかかる問題点に鑑みてな
されたものであり、サブルーチンを呼び出す命令と呼ば
れるサブルーチンとが異なるファイルに配置されている
ソースプログラムであっても、パイプラインの乱れを生
じることなくサブルーチンを呼び出すことができる実行
オブジェクトを生成するプログラム変換装置及びその実
行オブジェクトを実行するプロセッサを提供することを
目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するため
に請求項1記載のプログラム変換装置は、プログラムを
機械語命令列に翻訳しファイルとして出力する翻訳装置
と、複数の前記ファイルに納められた機械語命令列を連
結する連結装置とからなるプログラム変換装置であっ
て、前記翻訳装置は、プログラムに含まれるサブルーチ
ンについて、各サブルーチンごとに必要とされるスタッ
クサイズを抽出してサブルーチンの機械語命令列と共に
前記ファイルに格納するスタックサイズ抽出手段を備
え、前記連結装置は、前記機械語命令列の中からサブル
ーチンへの分岐命令を検出する分岐命令検出手段と、検
出された分岐命令が指定している分岐先サブルーチンを
納めたファイルを特定するファイル検索手段と、前記分
岐先サブルーチンで必要とされるスタックサイズを前記
ファイル検索手段によって特定されたファイルから読み
出すスタックサイズ獲得手段と、前記分岐命令を、前記
分岐先サブルーチンに分岐する処理と、その処理の遅延
スロットを利用して行われる処理であって前記スタック
サイズ獲得手段で読み出されたスタックサイズ分のスタ
ックを確保する処理とを実行することを内容とする機械
語命令に置き換える置換手段とを備えることを特徴とす
る。
【0010】請求項2記載のプログラム変換装置は、請
求項1記載のプログラム変換装置において、前記置換手
段は、前記分岐命令を、前記分岐先サブルーチンに分岐
する処理と、その処理の遅延スロットを利用して行われ
る処理であって前記スタックサイズ獲得手段で読み出さ
れたスタックサイズ分のスタックを確保する処理とを実
行することを内容とする単一の機械語命令に置き換える
ことを特徴とする。
【0011】請求項3記載のプロセッサは、機械語命令
列を解釈して実行するプロセッサであって、与えられた
機械語命令が所定のサブルーチンコール命令かどうかを
判断する命令デコード手段と、前記命令デコード手段に
より所定のサブルーチンコール命令であると判断された
場合には、そのサブルーチンコール命令によって特定さ
れる分岐先番地に分岐する処理と、その処理の遅延スロ
ットを利用して行う処理であってそのサブルーチンコー
ル命令に含まれるスタックサイズのスタックを確保する
処理とを実行する手段とを備えることを特徴とする。
【0012】請求項4記載のプログラム変換装置は、プ
ログラムを機械語命令列に翻訳し、ファイルとして出力
する翻訳装置と、複数の前記ファイルに納められた機械
語命令列を連結する連結装置とからなるプログラム変換
装置であって、前記翻訳装置は、前記プログラムに含ま
れるサブルーチンについて、各サブルーチンでの処理に
おいて退避すべきレジスタ名を抽出してサブルーチンの
機械語命令列と共に前記ファイルに格納する退避レジス
タ抽出手段を備え、前記連結装置は、前記機械語命令列
の中からサブルーチンへの分岐命令を検出する分岐命令
検出手段と、検出された分岐命令が指定している分岐先
サブルーチンを納めたファイルを特定するファイル検索
手段と、前記分岐先サブルーチンでの処理において退避
すべきレジスタ名を前記ファイル検索手段によって特定
されたファイルから読み出す退避レジスタ獲得手段と、
前記分岐命令を、前記分岐先サブルーチンに分岐する処
理と、その処理の遅延スロットを利用して行われる処理
であって前記退避レジスタ獲得手段で読み出されたレジ
スタの内容を退避する処理とを実行することを内容とす
る機械語命令に置き換える置換手段とを備えることを特
徴とする。
【0013】請求項5記載のプログラム変換装置は、請
求項4記載のプログラム変換装置において、前記置換手
段は、前記分岐命令を、前記分岐先サブルーチンに分岐
する処理と、その処理の遅延スロットを利用して行われ
る処理であって前記スタックサイズ獲得手段で読み出さ
れたスタックサイズ分のスタックを確保する処理とを実
行することを内容とする単一の機械語命令に置き換える
ことを特徴とする。
【0014】請求項6記載のプロセッサは、機械語命令
列を解釈して実行するプロセッサであって、与えられた
機械語命令が所定のサブルーチンコール命令かどうかを
判断する命令デコード手段と、前記命令デコード手段に
より所定のサブルーチンコール命令であると判断された
場合には、そのサブルーチンコール命令によって特定さ
れる分岐先番地に分岐する処理と、その処理の遅延スロ
ットを利用して行う処理であってそのサブルーチンコー
ル命令で指定されるレジスタの内容を退避する処理とを
実行する手段とを備えることを特徴とする。また、請求
項3の特徴(分岐処理とスタック確保とを行う)と請求
項6の特徴(分岐処理とレジスタ退避とを行う)とを併
せ持つプロセッサとしたり、請求項1に係るプログラム
変換装置によって生成された機械語命令を実行する請求
項3に係るプロセッサとしたり、請求項4に係るプログ
ラム変換装置によって生成された機械語命令を実行する
請求項6に係るプロセッサとすることもできる。
【0015】
【作用】上記のように構成された請求項1記載のプログ
ラム変換装置によれば、プログラムが与えられると、機
械語命令列に翻訳されると共に、プログラム中のサブル
ーチンについて、各サブルーチンごとに必要とされるス
タックサイズが検出され機械語命令列と共にファイルに
格納される。
【0016】続いて、複数のファイルに納められた機械
語命令列が連結される際に、機械語命令列の中からサブ
ルーチンへの分岐命令が検出される。分岐命令が検出さ
れると、その分岐先サブルーチンを納めたファイルが特
定され、そのファイルから、分岐先サブルーチンで必要
とされるスタックサイズがスタックサイズ獲得手段によ
って読み出される。
【0017】検出された分岐命令は、分岐先サブルーチ
ンに分岐する処理と前記スタックサイズ獲得手段で読み
出されたスタックサイズ分のスタックを確保する処理と
を実行することを内容とする機械語命令に置き換えられ
る。請求項2記載のプログラム変換装置によれば、請求
項1記載のプログラム変換装置において、前記分岐命令
は、前記分岐先サブルーチンに分岐する処理と、その処
理の遅延スロットを利用して行われる処理であって前記
スタックサイズ獲得手段で読み出されたスタックサイズ
分のスタックを確保する処理とを実行することを内容と
する単一の機械語命令に置き換えられる。
【0018】請求項3記載のプロセッサによれば、与え
られた機械語命令は、所定のサブルーチンコール命令か
どうかが判断される。所定のサブルーチンコール命令で
あると判断された場合には、プロセッサは、そのサブル
ーチンコール命令によって特定される分岐先番地に分岐
する処理と、その処理の遅延スロットを利用して行う処
理であってそのサブルーチンコール命令に含まれるスタ
ックサイズのスタックを確保する処理とを実行する。
【0019】請求項4記載のプログラム変換装置によれ
ば、プログラムが与えられると、機械語命令列に翻訳さ
れると共に、プログラム中のサブルーチンについて、各
サブルーチンでの処理において退避すべきレジスタ名が
検出され機械語命令列と共にファイルに格納される。続
いて、複数のファイルに納められた機械語命令列が連結
される際に、機械語命令列の中からサブルーチンへの分
岐命令が検出される。分岐命令が検出されると、その分
岐先サブルーチンを納めたファイルが特定され、そのフ
ァイルから、分岐先サブルーチンでの処理において退避
すべきレジスタ名が退避レジスタ獲得手段によって読み
出される。
【0020】検出された分岐命令は、分岐先サブルーチ
ンに分岐する処理と、その処理の遅延スロットを利用し
て行われる処理であって前記退避レジスタ獲得手段で読
み出されたレジスタの内容を退避する処理とを実行する
ことを内容とする機械語命令に置き換えられる。請求項
5記載のプログラム変換装置は、請求項4記載のプログ
ラム変換装置において、前記分岐命令は、前記分岐先サ
ブルーチンに分岐する処理と、その処理の遅延スロット
を利用して行われる処理であって前記スタックサイズ獲
得手段で読み出されたスタックサイズ分のスタックを確
保する処理とを実行することを内容とする単一の機械語
命令に置き換えられる。
【0021】請求項6記載のプロセッサによれば、与え
られた機械語命令は、所定のサブルーチンコール命令か
どうかが判断される。所定のサブルーチンコール命令で
あると判断された場合には、プロセッサは、そのサブル
ーチンコール命令によって特定される分岐先番地に分岐
する処理と、その処理の遅延スロットを利用して行う処
理であってそのサブルーチンコール命令で指定されるレ
ジスタの内容を退避する処理とを実行する。
【0022】
【実施例】以下、本発明の実施例について図面を用いて
詳細に説明する。 (第1実施例)図1は、本発明の第1実施例に係るプロ
グラム変換装置の構成を示すブロック図である。尚、図
1には、本装置の処理の対象となる入力ファイル10
1、102、出力ファイル106、107、処理の結果
生成される実行ファイル113も同時に示している。
【0023】本装置は、大きく分けて翻訳部103と連
結部108から構成される。翻訳部103は、主に高級
言語で書かれたソースプログラムを機械語命令列に翻訳
する。翻訳部103には、ソースプログラムが納められ
た入力ファイル101、102が与えられ、処理を終え
た翻訳部103は、出力ファイル106、107として
出力する。ここで、ファイルとは、翻訳部103の入出
力の単位となるプログラムや機械語命令列の集まりをい
う。翻訳部103は、ファイル単位で翻訳を行う。例え
ば、1個の入力ファイルA101だけが与えられると、
翻訳部103は、自動的に入力ファイルA101に対応
する名前を決定し、出力ファイルA106を出力する。
【0024】翻訳部103は、さらに機械語命令生成部
104と抽出部105からなる。機械語命令生成部10
4は、与えられたソースプログラムを構文解析等を行っ
て機械語命令列に変換する。抽出部105は、さらにス
タックサイズ抽出部105aと退避レジスタ抽出部10
5bからなる。スタックサイズ抽出部105aは、ソー
スプログラムに存在するサブルーチンについて、各サブ
ルーチンでの処理のために必要とされるスタックサイズ
を算出し、算出したスタックサイズを明示する疑似命令
を生成してそのサブルーチンの機械語命令列の先頭箇所
に置く。ここで、スタックサイズとは、サブルーチンで
の処理で使用される局所的な作業領域の大きさのことで
ある。疑似命令とは、ここで算出したスタックサイズに
ついての情報を後述する連結部108に引き渡すための
ものであり、連結部108によって使用される。
【0025】退避レジスタ抽出部105bは、ソースプ
ログラムに存在するサブルーチンについて、各サブルー
チンでの処理に先立って退避すべきレジスタを検出し、
検出したレジスタを明示する疑似命令を生成してそのサ
ブルーチンの機械語命令列の先頭箇所に置く。退避すべ
きレジスタは、サブルーチンの中の処理によって破壊さ
れるものが該当する。疑似命令は、スタックサイズ抽出
部105aが生成する疑似命令と同種のものであり、退
避すべきレジスタについての情報を連結部108に引き
渡すために使用される。
【0026】連結部108は、主に機械語命令列を連結
してプロセッサが実行できる実行オブジェクトを生成す
るが、その際に、翻訳部103によって生成された疑似
命令についての処理も行う。尚、上述の連結作業は、通
常のリンカー等が行う処理と異ならないので、その処理
を行う構成部分は図示していない。連結部108には、
機械語命令列が納められた複数の出力ファイル106、
107が与えられ、処理を終えた連結部108は、実行
ファイル113を出力する。
【0027】連結部108は、さらに分岐命令検出部1
09、ファイル検索部110、獲得部111及びサブル
ーチンコール命令生成部112からなる。分岐命令検出
部109は、与えられた全ての出力ファイルの中から分
岐命令を探し出し、発見された分岐命令をファイル検索
部110に通知する。尚、ここでいう分岐命令とは、サ
ブルーチンへの分岐命令をいう。
【0028】ファイル検索部110は、通知された分岐
命令について、その分岐命令によって指定されている分
岐先のサブルーチンが存在するファイルの名前を特定
し、そのファイル名を分岐先サブルーチン名と共に獲得
部111のスタックサイズ獲得部111a及び退避レジ
スタ獲得部111bに通知する。スタックサイズ獲得部
111aは、通知されたファイルの分岐先サブルーチン
の先頭箇所に置かれている疑似命令を解釈することによ
って、そのサブルーチンでの処理に必要とされるスタッ
クサイズをサブルーチンコール命令生成部112に通知
する。
【0029】同様に、退避レジスタ獲得部111bは、
通知されたファイルの分岐先サブルーチンの先頭箇所に
置かれている疑似命令を解釈することによって、そのサ
ブルーチンでの処理のために退避すべきレジスタの種類
をサブルーチンコール命令生成部112に通知する。サ
ブルーチンコール命令生成部112は、獲得部111か
ら通知されたスタックサイズとレジスタの種類に基づい
て、サブルーチンを呼び出す専用のサブルーチンコール
命令を生成する。この専用のサブルーチンコール命令と
は、プロセッサが、分岐処理、スタックの確保及びレジ
スタの値の退避という3つの処理をパイプラインストー
ルを発生することなく一連で行う機械語命令のことであ
る。
【0030】最後に、連結部108は、サブルーチンコ
ール命令生成部112によって生成されたサブルーチン
コール命令を、そのサブルーチンへの分岐元である分岐
命令と置き換えると共に、そのサブルーチンの中に配置
されていた、スタックを確保する機械語命令やレジスタ
を退避する機械語命令を削除した実行オブジェクトを生
成し、実行ファイル113として出力する。
【0031】以上の連結部108での処理は、分岐命令
検出部109が検出した全ての分岐命令について繰り返
し行われる。次に、以上のように構成された本装置の動
作について、具体的なプログラムを用いて説明する。入
力ファイルA101には、図2に示されたメインプログ
ラムf()が納められている。メインプログラムf()
は、サブルーチンg()を2つの引き数を伴って呼び出
している。
【0032】一方、入力ファイルB102には、図3に
示されたサブルーチンg()が納められている。サブル
ーチンg()は、与えられた2つの引き数の和と差を算
出する。図2に示された入力ファイルA101が与えら
れた翻訳部103は、メインプログラムf()を機械語
命令に翻訳すると共に、このメインプログラムf()で
必要とされるスタックサイズや退避すべきレジスタの情
報を抽出した後、図4に示される出力ファイルA106
を生成して出力する。
【0033】同様にして、図3に示された入力ファイル
B102が与えられた翻訳部103は、サブルーチンg
()を機械語命令に翻訳すると共に、このサブルーチン
g()で必要とされるスタックサイズや退避すべきレジ
スタの情報を抽出した後、図5に示される出力ファイル
B107を生成して出力する。尚、ここで用いられてい
る機械語命令の意味は、以下の通りである。 _f : その関数のラベルを示す。 .STACKSIZE s : その関数での処理に必
要とされるスタックサイズがsバイトである。 .REGLIST r1,r2 : その関数での処理
に先立ち退避すべきレジスタがr1,r2である。 sp : スタックポインタ #xxxx : 即値xxxxを表す。 (sp+xxxx) : sp+xxxxをアドレスと
するメモリの内容 add src,dst : dst+srcの値をd
stに転送する。 sub src,dst : dst−srcの値をd
stに転送する。 mov src,dst : srcをdstに転送す
る。 jsr label : spを4減少させ、次の命令
のアドレス(戻り先)を(sp)に転送し、label
に制御を移す。 rts : (sp)の値の命令に制御を移し、spを
4増加させる。
【0034】ここで、図4に示される出力ファイルA1
06のリストの下部42は機械語命令生成部104によ
って生成されたものであり、リストの上部41は抽出部
105によって生成されたものである。スタックサイズ
抽出部105aは、このメインプログラムf()で必要
とされるスタックサイズは8バイトであると判断し、疑
似命令.STACKSIZE8を生成している。これ
は、メインプログラムf()が2個の引き数1、2をス
タックに格納した後にサブルーチンg()を呼び出して
いるが、1個の引き数を格納するのに4バイトのスタッ
クが必要となるからである。
【0035】また、退避レジスタ抽出部105bは、こ
のメインプログラムf()での処理に先立って退避すべ
きレジスタは無いので、疑似命令.REGLISTだけ
を生成している。同様に、図5に示される出力ファイル
B107のリストの下部52は機械語命令生成部104
によって生成されたものであり、リストの上部51は抽
出部105によって生成されたものである。
【0036】スタックサイズ抽出部105aは、このサ
ブルーチンg()で必要とされるスタックサイズは16
バイトであると判断し、疑似命令.STACKSIZE
16を生成している。これは、サブルーチンg()で
の処理において、2個のレジスタの値を退避させる領域
と2個の演算結果a、bを格納する領域の合計として、
16バイトのスタックが必要となるからである。
【0037】また、退避レジスタ抽出部105bは、こ
のサブルーチンg()での処理に先立って退避すべきレ
ジスタはr1及びr2であると判断し、疑似命令.RE
GLIST r1,r2を生成している。続いて、翻訳
部103によって生成された出力ファイルA106及び
出力ファイルB107が連結部108に入力されると、
分岐命令検出部109は、これらのファイルに存在する
分岐命令を検出する。図4に示された出力ファイルA1
06には、分岐命令jsr _gが用いられているの
で、この分岐命令が分岐命令検出部109によって検出
され、ファイル検索部110に通知される。
【0038】ファイル検索部110は、与えられたファ
イル106、107を検索することによって、分岐先サ
ブルーチン_gが出力ファイルB107で定義されてい
ることを知り、その旨をスタックサイズ獲得部111a
及び退避レジスタ獲得部111bに通知する。スタック
サイズ獲得部111a及び退避レジスタ獲得部111b
は、通知を受けた出力ファイルB107のサブルーチン
_gの先頭箇所51に置かれた疑似命令から、必要なス
タックサイズ(16)及び退避すべきレジスタ(r1、
r2)を知り、その情報をサブルーチンコール命令生成
部112に通知する。
【0039】サブルーチンコール命令生成部112は、
通知された情報に基づいて、サブルーチンコール命令c
all _g,#16,r1,r2を生成する。ここ
で、命令call label,lsz,rn,rm
は、spを4減少させ、次の命令のアドレス(戻り先)
を(sp)に転送して_labelに制御を移した後、
分岐ハザードのサイクルでレジスタrn,rmをそれぞ
れ(sp−4)、(sp−8)に退避し、spをlsz
減少させる処理を一連で行う単一の機械語命令を意味す
る。即ち、サブルーチンコール命令call _g,#
16,r1,r2は、以下の命令を分岐ハザードを生じ
ることなく一連で実行することに等しい。 jsr _g mov r1,(sp−4) mov r2,(sp−8) add #−16,sp 最後に、連結部108は、生成されたサブルーチンコー
ル命令call _g,#16,r1,r2を、サブル
ーチン_gへの分岐元である図4に示された出力ファイ
ルA106の分岐命令jsr _gと置き換えると共
に、サブルーチン_gの中に配置されていた、レジスタ
を退避する機械語命令mov r1,(sp−4)、m
ov r2,(sp−8)やスタックを確保する機械語
命令add#−16,spを削除した実行オブジェクト
を生成し、図6に示される実行ファイル113として出
力する。
【0040】図6に示された実行ファイル113のリス
トから判るように、メインプログラム_fからサブルー
チン_gを呼び出す命令には、サブルーチンコール命令
call _g,#16,r1,r2が用いられ、一
方、サブルーチン_gの先頭箇所には、レジスタを退避
したりスタック領域を確保したりする命令が削除されて
いる。
【0041】以上の説明から明らかなように、本装置に
よれば、ソースプログラムが機械語命令に翻訳される際
に、翻訳部103によって各サブルーチンごとに必要な
スタックサイズや退避レジスタに関する情報が疑似命令
として各サブルーチンの機械語命令列の先頭箇所に付加
される。続いて、連結部108は、各機械語命令を連結
する際に、別のファイルに存在するサブルーチンへの分
岐命令であっても、各サブルーチンの先頭箇所に置かれ
ている疑似命令を参照することによって、サブルーチン
への分岐とレジスタの退避とスタックの確保とを分岐ス
トールを生じることなく一連で実行できる単一のサブル
ーチンコール命令に置換する。従って、連結部108が
生成したプログラムを実行するプロセッサは、異なるフ
ァイルで定義されたサブルーチンへの分岐であっても、
分岐ハザードを生じることなく高速に分岐処理を行うこ
とができる。 (第2実施例)次に、高速に分岐処理を行う第2実施例
に係るプロセッサについて説明する。
【0042】図7は、本発明の第2実施例に係るプロセ
ッサの構成を示すブロック図である。本プロセッサは、
命令バッファ701、命令デコーダ702、実行ユニッ
ト703、レジスタ704、スタックポインタ705、
プログラムカウンタ706、演算回路707、データバ
ッファ708、アドレスバッファ709及び内部バス7
10から構成される。
【0043】データバッファ708及びアドレスバッフ
ァ709は、それぞれ外部データバス711及び外部ア
ドレスバス712と内部バス710とのデータの中継を
行う。レジスタ704は、演算を行うためのデータや図
示されていない主記憶のアドレスを一時的に格納する。
スタックポインタ705は、主記憶に設けられたスタッ
ク領域を示すアドレスを格納する。プログラムカウンタ
706は、次にフェッチすべき主記憶の命令が置かれて
いるアドレスを格納する。演算回路707は、入力され
た2個のデータを論理演算する回路である。
【0044】命令バッファ701は、フェッチした命令
を格納するFIFO方式の命令バッファである。命令バ
ッファ701に取り込まれた命令は、順次に押し出さ
れ、通常は、最も古い命令が命令デコーダ702に送ら
れる。命令デコーダ702は、命令バッファ701から
送られてきた命令を、逐一にデコードし、その結果を実
行ユニット703に通知する。尚、命令デコーダ702
は、所定の全ての命令をデコードし、各命令に固有の情
報を実行ユニット703に送る機能を有するが、特にサ
ブルーチンコール命令をデコードする機能を有する部分
をサブルーチンコール命令デコーダ702aとして図7
に示している。
【0045】実行ユニット703は、命令デコーダ70
2からの情報に応じて、図示されていない内部制御信号
を通じて各構成部701〜709を制御したり、図示さ
れていない外部制御信号との入出力を行う。尚、実行ユ
ニット703は、所定の全ての命令に対応した制御を行
う機能を有するが、特にサブルーチンコール命令を実行
する部分をサブルーチンコール実行ユニット703aと
して図7に示している。
【0046】命令バッファ701、命令デコーダ702
及び実行ユニット703は、パイプラインを構成し、そ
れぞれパイプラインのIFステージ、DECステージ及
びEXステージの機能を果たす。次に、以上のように構
成された本プロセッサの動作について説明する。先ず、
本プロセッサが、通常の分岐命令jsrを実行する際の
動作を説明する。図8には、通常の分岐命令jsrを含
む命令列と、その命令列を実行した場合のパイプライン
の流れを示している。
【0047】クロック1において命令バッファ701に
取り込まれた分岐命令jsr _gは、クロック2にお
いて命令デコーダ702によってデコードされ、クロッ
ク3において実行ユニット703によって実行される。
クロック3において、実行ユニット703は、プログラ
ムカウンタ706を分岐先のアドレス_gに更新する。
従って、クロック4において、アドレス_gに置かれて
いる命令mov r1,(sp−4)が命令バッファ7
01に取り込まれる。
【0048】実行ユニット703は、命令jsr _g
の次に命令mov r1,(sp−4)を実行するため
に、それらの命令の間、即ち分岐ハザードに存在する命
令(図8において灰色で示された部分)の実行を無視す
る。従って、実行ユニット703は、命令jsr _g
を実行した後で2クロックを置いた後に次の命令mov
r1,(sp−4)を実行する。
【0049】以上の動作は、従来のプロセッサが上記と
同様の分岐命令を実行する場合の動作と変わるところは
ない。次に、本プロセッサが、サブルーチンコール命令
callを実行する際の動作を説明する。図9には、サ
ブルーチンコール命令callを含む命令列と、その命
令列を実行した場合の等価的なパイプラインの流れを示
している。
【0050】サブルーチンコール命令call _g,
#16,r1,r2は1個の命令であるが、この命令を
サブルーチンコール命令デコーダ702aがデコード
し、サブルーチンコール実行ユニット703aが実行す
ると、本プロセッサは、以下の4つの命令を一連で実行
することに等しい動作を行う。即ち、先ず、 jsr _g を実行し、続いて分岐ハザードのサイクルにおいて、 mov r1,(sp−4) mov r2,(sp−8) add #−16,sp を実行する。
【0051】従って、図9のパイプパインの流れ図は、
実行ユニット703がサブルーチンコール命令call
_g,#16,r1,r2を実行した場合の等価的な
パイプラインの流れを示している。クロック1において
命令バッファ701に取り込まれた分岐命令jsr _
gは、クロック2において命令デコーダ702によって
デコードされ、クロック3において実行ユニット703
によって実行される。
【0052】クロック3においてjsr _gを実行し
た実行ユニット703は、次のクロック4において命令
mov r1,(sp−4)を実行する。図8に示され
たパイプラインの流れと比較して明らかなように、全く
同じ内容の処理を行っているにも拘らず、図9における
パイプラインの流れにおいては、分岐ハザードは生じて
いない。即ち、本プロセッサがcall _g,#1
6,r1,r2を実行する場合には、分岐ハザードは解
消され、図8に示された命令列を実行する場合よりも2
クロック分だけ実行時間が短縮される。
【0053】以上、本発明に係るプログラム変換装置及
びプロセッサについて、実施例に基づいて説明したが、
本発明はこれら実施例に限られないことは勿論である。
即ち、 (1)第1実施例において、サブルーチンコール命令生
成部112は、単一の機械後命令call _g,#1
6,r1,r2を生成したが、生成される機械後命令は
単一の命令に限定されるものではない。例えば、 call _g mov r1,(sp−4) mov r2,(sp−8) add #−16,sp の4つの機械後命令を生成するものであってもよい。即
ち、命令call _gは、_gに制御を移行させると
共に続く3つの命令を分岐ハザードを生じることなく一
連で実行させる命令となる。 (2)第1実施例において生成されたサブルーチンコー
ル命令は、スタックの確保とレジスタの退避という2つ
の処理を伴う分岐命令であったが、常にこれら2つの処
理を伴う分岐命令に限定されない。例えば、レジスタを
退避する必要がないサブルーチンへの分岐の場合には、
call _g,#16のごとく、スタックの確保だけ
を行う分岐命令が生成されるものであってもよい。 (3)第1実施例における機械語命令生成部104を、
プログラムを再配置可能オブジェクトに変換する一般的
なコンパイル手段に、また、連結部108が有するリン
ク機能を、再配置可能オブジェクトをリンクして実行オ
ブジェクトを作成する一般的なリンク手段に置き換えて
もよい。これによって、第1実施例のプログラム変換装
置に対応するC言語コンパイラを実現することができ
る。 (4)第1実施例においては、連結部108のみがサブ
ルーチンコール命令を生成しているが、このような構成
に限定されるものではない。例えば、翻訳部103がさ
らに、連結部108が有する構成部109〜112を備
えていてもよい。これによって、同一ファイル内のサブ
ルーチンへの分岐命令であれば、翻訳部103がサブル
ーチンコール命令を生成することができる。 (5)第2実施例においては、分岐命令jsrによる2
クロック分のパイプラインストールを回避できたが、こ
のようなパイプラインストールに限定されるものではな
い。例えば、サブルーチン_gが格納されているROM
のアクセスタイムが大きいために、図8のパイプライン
の流れにおいて3クロック分のパイプラインストールが
生じていても、本実施例によって図9に示されたパイプ
ラインの流れと同様の結果が得られることは明らかであ
る。この場合には、図8に示された命令列を実行する場
合よりも3クロック分だけ実行時間が短縮されたことに
なる。即ち、本実施例によって、分岐命令の実行に伴う
パイプラインストールだけでなく、分岐先命令のフェッ
チ時の障害に伴うパイプラインストールも同時に回避で
きる。
【0054】
【発明の効果】請求項1及び2記載のプログラム変換装
置によれば、サブルーチンを呼び出す命令と呼ばれるサ
ブルーチンとが同一のファイルのみならず異なるファイ
ルに配置されているソースプログラムであっても、パイ
プラインの乱れを生じることなくサブルーチンを呼び出
すと共に必要なスタックサイズを確保する実行オブジェ
クトが生成される。
【0055】生成された実行オブジェクトは、請求項3
記載のプロセッサによって実行される。請求項4及び5
記載のプログラム変換装置によれば、サブルーチンを呼
び出す命令と呼ばれるサブルーチンとが同一のファイル
のみならず異なるファイルに配置されているソースプロ
グラムであっても、パイプラインの乱れを生じることな
くサブルーチンを呼び出すと共に必要なレジスタの値を
退避する実行オブジェクトが生成される。
【0056】生成された実行オブジェクトは、請求項6
記載のプロセッサによって実行される。従って、本発明
に係るプログラム変換装置及びプロセッサにより、分岐
命令の実行や分岐先命令のフェッチ時の障害に伴うパイ
プラインの乱れの発生を回避し、高速に分岐処理を行う
ことができるという効果がある。
【図面の簡単な説明】
【図1】本発明の第1実施例に係るプログラム変換装置
の構成を示すブロック図である。
【図2】同実施例における入力ファイルA101に納め
られているメインプログラムf()のソースプログラム
のリストである。
【図3】同実施例における入力ファイルB102に納め
られているサブルーチンg()のソースプログラムのリ
ストである。
【図4】同実施例における出力ファイルA106に納め
られたメインプログラムf()の機械語命令のリストで
ある。
【図5】同実施例における出力ファイルB107に納め
られたサブルーチンg()の機械語命令のリストであ
る。
【図6】同実施例における実行ファイル113に納めら
れた実行オブジェクトのリストである。
【図7】本発明の第2実施例に係るプロセッサの構成を
示すブロック図である。
【図8】同実施例に係るプロセッサが通常の分岐命令j
srを実行する際の動作を説明する図である。
【図9】同実施例に係るプロセッサがサブルーチンコー
ル命令callを実行する際の動作を説明する図であ
る。
【図10】従来のプロセッサの実行において、分岐ハザ
ードが生じる場合の命令列を示す図である。
【図11】図10に示された命令列を従来のプロセッサ
が実行した場合のパイプラインの流れを示す図である。
【図12】図10に示された命令列において、分岐先命
令が分岐遅延スロットに置かれた場合の命令列を示す図
である。
【図13】図12に示された命令列を従来のプロセッサ
が実行した場合のパイプラインの流れを示す図である。
【符号の説明】
103 翻訳部 105a スタックサイズ抽出部 105b 退避レジスタ抽出部 108 連結部 109 分岐命令検出部 110 ファイル検索部 111a スタックサイズ獲得部 111b 退避レジスタ獲得部 112 サブルーチンコール命令生成部 702a サブルーチンコール命令デコーダ 703a サブルーチンコール実行ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 宮地 信哉 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 漆原 誠一 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平6−19721(JP,A) 特開 平4−304527(JP,A) 特開 平2−259928(JP,A) 特開 昭62−205431(JP,A) 米国特許5375242(US,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/45 G06F 9/30 - 9/42

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】 プログラムを機械語命令列に翻訳しファ
    イルとして出力する翻訳装置と、複数の前記ファイルに
    納められた機械語命令列を連結する連結装置とからなる
    プログラム変換装置であって、 前記翻訳装置は、 プログラムに含まれるサブルーチンについて、各サブル
    ーチンごとに必要とされるスタックサイズを抽出してサ
    ブルーチンの機械語命令列と共に前記ファイルに格納す
    るスタックサイズ抽出手段を備え、 前記連結装置は、 前記機械語命令列の中からサブルーチンへの分岐命令を
    検出する分岐命令検出手段と、 検出された分岐命令が指定している分岐先サブルーチン
    を納めたファイルを特定するファイル検索手段と、 前記分岐先サブルーチンで必要とされるスタックサイズ
    を前記ファイル検索手段によって特定されたファイルか
    ら読み出すスタックサイズ獲得手段と、 前記分岐命令を、前記分岐先サブルーチンに分岐する処
    理と、その処理の遅延スロットを利用して行われる処理
    であって前記スタックサイズ獲得手段で読み出されたス
    タックサイズ分のスタックを確保する処理とを実行する
    ことを内容とする機械語命令に置き換える置換手段とを
    備えることを特徴とするプログラム変換装置。
  2. 【請求項2】 前記置換手段は、前記分岐命令を、前記
    分岐先サブルーチンに分岐する処理と、その処理の遅延
    スロットを利用して行われる処理であって前記スタック
    サイズ獲得手段で読み出されたスタックサイズ分のスタ
    ックを確保する処理とを実行することを内容とする単一
    の機械語命令に置き換えることを特徴とする請求項1記
    載のプログラム変換装置。
  3. 【請求項3】 機械語命令を解釈して実行するプロセッ
    サであって、 与えられた機械語命令が所定のサブルーチンコール命令
    かどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、その処理の遅延スロットを利用して行う処理であっ
    てそのサブルーチンコール命令に含まれるスタックサイ
    ズのスタックを確保する処理とを実行する手段とを備え
    ることを特徴とするプロセッサ。
  4. 【請求項4】 プログラムを機械語命令に翻訳し、ファ
    イルとして出力する翻訳装置と、複数の前記ファイルに
    納められた機械語命令列を連結する連結装置とからなる
    プログラム変換装置であって、 前記翻訳装置は、 前記プログラムに含まれるサブルーチンについて、各サ
    ブルーチンでの処理において退避すべきレジスタ名を抽
    出してサブルーチンの機械語命令列と共に前記ファイル
    に格納する退避レジスタ抽出手段を備え、 前記連結装置は、 前記機械語命令列の中からサブルーチンへの分岐命令を
    検出する分岐命令検出手段と、 検出された分岐命令が指定している分岐先サブルーチン
    を納めたファイルを特定するファイル検索手段と、 前記分岐先サブルーチンでの処理において退避すべきレ
    ジスタ名を前記ファイル検索手段によって特定されたフ
    ァイルから読み出す退避レジスタ獲得手段と、 前記分岐命令を、前記分岐先サブルーチンに分岐する処
    理と、その処理の遅延スロットを利用して行われる処理
    であって前記退避レジスタ獲得手段で読み出されたレジ
    スタの内容を退避する処理とを実行することを内容とす
    る機械語命令に置き換える置換手段とを備えることを特
    徴とするプログラム変換装置。
  5. 【請求項5】 前記置換手段は、前記分岐命令を、前記
    分岐先サブルーチンに分岐する処理と、その処理の遅延
    スロットを利用して行われる処理であって前記退避レジ
    スタ獲得手段で読み出されたレジスタの内容を退避する
    処理とを実行することを内容とする単一の機械語命令に
    置き換えることを特徴とする請求項4記載のプログラム
    変換装置。
  6. 【請求項6】 機械語命令を解釈して実行するプロセッ
    サであって、 与えられた機械語命令が所定のサブルーチンコール命令
    かどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、その処理の遅延スロットを利用して行う処理であっ
    てそのサブルーチンコール命令で指定されるレジスタの
    内容を退避する処理とを実行する手段とを備えることを
    特徴とするプロセッサ。
  7. 【請求項7】 機械語命令を解釈して実行するプロセッ
    サであって、 与えられた機械語命令が所定のサブルーチンコール命令
    かどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、その処理の遅延スロットを利用して行う処理であっ
    てそのサブルーチンコール命令に含まれるスタックサイ
    ズのスタックを確保し、確保したスタックにそのサブル
    ーチンコール命令で指定されるレジスタの内容を退避す
    る処理とを実行する手段とを備えることを特徴とするプ
    ロセッサ。
  8. 【請求項8】 請求項1記載のプログラム変換装置によ
    り生成された機械語命令を実行するプロセッサであっ
    て、 与えられた機械語命令が所定のサブルーチンコール命令
    かどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、その処理の遅延スロットを利用して行う処理であっ
    てそのサブルーチンコール命令に含まれるスタックサイ
    ズのスタックを確保する処理とを実行する手段とを備え
    ることを特徴とするプロセッサ。
  9. 【請求項9】 請求項4記載のプログラム変換装置によ
    り生成された機械語命令を実行するプロセッサであっ
    て、 与えられた機械語命令が所定のサブルーチンコール命令
    かどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、その処理の遅延スロットを利用して行う処理であっ
    てそのサブルーチンコール命令で指定されるレジスタの
    内容を退避する処理とを実行する手段とを備えることを
    特徴とするプロセッサ。
  10. 【請求項10】 機械語命令列を解釈して実行するプロ
    セッサであって、 与えられた機械語命令が、分岐に伴って確保すべきスタ
    ックのサイズの指定を含む所定のサブルーチンコール命
    令であるかどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、そのサブルーチンコール命令によって特定される前
    記サイズのスタックを確保する処理とを実行する手段と
    を備えることを特徴とするプロセッサ。
  11. 【請求項11】 機械語命令列を解釈して実行するプロ
    セッサであって、 与えられた機械語命令が、分岐に伴って退避すべきレジ
    スタの指定を含む所定のサブルーチンコール命令である
    かどうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、そのサブルーチンコール命令によって特定される前
    記レジスタの内容を退避する処理とを実行する手段とを
    備えることを特徴とするプロセッサ。
  12. 【請求項12】 機械語命令列を解釈して実行するプロ
    セッサであって、 与えられた機械語命令が、分岐に伴って確保すべきスタ
    ックのサイズの指定と分岐に伴って退避すべきレジスタ
    の指定とを含む所定のサブルーチンコール命令であるか
    どうかを判断する命令デコード手段と、 前記命令デコード手段により所定のサブルーチンコール
    命令であると判断された場合には、そのサブルーチンコ
    ール命令によって特定される分岐先番地に分岐する処理
    と、そのサブルーチンコール命令によって特定される前
    記サイズのスタックを確保する処理と、そのサブルーチ
    ンコール命令によって特定される前記レジスタの内容を
    退避する処理とを実行する手段とを備えることを特徴と
    するプロセッサ。
JP07111701A 1995-05-10 1995-05-10 プログラム変換装置及びプロセッサ Expired - Lifetime JP3130446B2 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP07111701A JP3130446B2 (ja) 1995-05-10 1995-05-10 プログラム変換装置及びプロセッサ
US08/589,802 US5758162A (en) 1995-05-10 1996-01-22 Program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
EP96301214A EP0742517B1 (en) 1995-05-10 1996-02-23 A program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
DE69614183T DE69614183T2 (de) 1995-05-10 1996-02-23 Programmübersetzungsgerät und Prozessor, die eine schnelle Ausführung von Unterprogrammsprungbefehlen erreichen
TW085102244A TW289812B (ja) 1995-05-10 1996-02-27
CN96103712A CN1099074C (zh) 1995-05-10 1996-03-22 高速执行子程序转移指令的程序变换装置和处理器
KR1019960015311A KR100247900B1 (ko) 1995-05-10 1996-05-10 프로그램변환장치 및 프로세서
US08/959,386 US5978905A (en) 1995-05-10 1997-11-18 Program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP07111701A JP3130446B2 (ja) 1995-05-10 1995-05-10 プログラム変換装置及びプロセッサ

Publications (2)

Publication Number Publication Date
JPH08305581A JPH08305581A (ja) 1996-11-22
JP3130446B2 true JP3130446B2 (ja) 2001-01-31

Family

ID=14567971

Family Applications (1)

Application Number Title Priority Date Filing Date
JP07111701A Expired - Lifetime JP3130446B2 (ja) 1995-05-10 1995-05-10 プログラム変換装置及びプロセッサ

Country Status (7)

Country Link
US (2) US5758162A (ja)
EP (1) EP0742517B1 (ja)
JP (1) JP3130446B2 (ja)
KR (1) KR100247900B1 (ja)
CN (1) CN1099074C (ja)
DE (1) DE69614183T2 (ja)
TW (1) TW289812B (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
JP3130446B2 (ja) * 1995-05-10 2001-01-31 松下電器産業株式会社 プログラム変換装置及びプロセッサ
US6021273A (en) 1997-06-30 2000-02-01 Sun Microsystems, Inc. Interpreter generation and implementation utilizing interpreter states and register caching
US6513156B2 (en) 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US6016556A (en) * 1997-07-17 2000-01-18 Tektronix, Inc. System for identifying an acquisition sample corresponding to a source code statement
EP1645956A3 (en) * 1997-08-29 2008-02-13 Matsushita Electric Industrial Co., Ltd. Instruction conversion apparatus for reducing the number of types of instructions
US6317796B1 (en) * 1997-10-06 2001-11-13 Sun Microsystems, Inc. Inline database for receiver types in object-oriented systems
US6212630B1 (en) 1997-12-10 2001-04-03 Matsushita Electric Industrial Co., Ltd. Microprocessor for overlapping stack frame allocation with saving of subroutine data into stack area
JP4041248B2 (ja) * 1999-07-09 2008-01-30 松下電器産業株式会社 コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法
US7421572B1 (en) * 1999-09-01 2008-09-02 Intel Corporation Branch instruction for processor with branching dependent on a specified bit in a register
JP3664473B2 (ja) * 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
JP2004362086A (ja) * 2003-06-03 2004-12-24 Matsushita Electric Ind Co Ltd 情報処理装置および機械語プログラム変換装置
US7788638B2 (en) * 2003-11-21 2010-08-31 Citigroup Global Markets Inc. Method and system for data file processing
EP2106584A1 (en) * 2006-12-11 2009-10-07 Nxp B.V. Pipelined processor and compiler/scheduler for variable number branch delay slots
US8813057B2 (en) * 2007-03-31 2014-08-19 Intel Corporation Branch pruning in architectures with speculation support

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5375242A (en) 1993-09-29 1994-12-20 Hewlett-Packard Company Compiler architecture for cross-module optimization

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321823A (en) * 1988-07-20 1994-06-14 Digital Equipment Corporation Digital processor with bit mask for counting registers for fast register saves
US5274820A (en) * 1989-08-14 1993-12-28 International Business Machines Corporation Method and system for eliminating operation codes from intermediate prolog instructions
US5222220A (en) * 1989-11-16 1993-06-22 Mehta Hemang S Microprocessor stack built-in guards
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
JPH0619721A (ja) * 1991-02-21 1994-01-28 Oki Electric Ind Co Ltd 機械語翻訳最適化方式
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching
JPH0744419A (ja) * 1993-08-03 1995-02-14 Nec Ic Microcomput Syst Ltd マイコン開発支援装置
JP3130446B2 (ja) * 1995-05-10 2001-01-31 松下電器産業株式会社 プログラム変換装置及びプロセッサ

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5375242A (en) 1993-09-29 1994-12-20 Hewlett-Packard Company Compiler architecture for cross-module optimization

Also Published As

Publication number Publication date
KR100247900B1 (ko) 2000-03-15
DE69614183D1 (de) 2001-09-06
KR960042340A (ko) 1996-12-21
EP0742517A2 (en) 1996-11-13
JPH08305581A (ja) 1996-11-22
DE69614183T2 (de) 2001-11-29
TW289812B (ja) 1996-11-01
CN1138174A (zh) 1996-12-18
CN1099074C (zh) 2003-01-15
EP0742517A3 (en) 1997-05-28
US5978905A (en) 1999-11-02
EP0742517B1 (en) 2001-08-01
US5758162A (en) 1998-05-26

Similar Documents

Publication Publication Date Title
JP3130446B2 (ja) プログラム変換装置及びプロセッサ
US7458069B2 (en) System and method for fusing instructions
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
JPH11327918A (ja) 動的変換システム
KR100253655B1 (ko) 프로세서및번역장치
US6243786B1 (en) Apparatus and method for generating an interrupt prohibited zone in pipelined data processors
JPH07120284B2 (ja) データ処理装置
US7120905B2 (en) System and method for transformation of assembly code for conditional execution
JP3335735B2 (ja) 演算処理装置
JP3547562B2 (ja) マイクロプロセッサ
JP3739556B2 (ja) 情報処理装置
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
JP3130421B2 (ja) プログラム解析方法および装置
JP2835179B2 (ja) 並列処理計算機
JP2545594B2 (ja) オペランドデータ先取り方式
JP3102846B2 (ja) ロードアドレスキャッシュ装置及び方法
JPS60198640A (ja) パイプライン型情報処理装置
JPS5875256A (ja) 実行命令遂行状態のモニタ方式
JP2856703B2 (ja) プロセッサ
JPH0827717B2 (ja) ミスアライメント処理方式
JPH07191845A (ja) 即値データ転送装置
JPH0535493A (ja) アセンブラにおける汎用逆アセンブラ処理方式
JPH10214187A (ja) 高速分岐処理装置及びその分岐処理方法
JPS60179844A (ja) 命令再読出し制御方式
JPH0895784A (ja) 演算処理装置及び方法

Legal Events

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

Free format text: PAYMENT UNTIL: 20071117

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20081117

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20091117

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20091117

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20101117

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20111117

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20121117

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20121117

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20131117

Year of fee payment: 13

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

EXPY Cancellation because of completion of term
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371