JP2987311B2 - プロセッサ及び翻訳装置 - Google Patents

プロセッサ及び翻訳装置

Info

Publication number
JP2987311B2
JP2987311B2 JP7114520A JP11452095A JP2987311B2 JP 2987311 B2 JP2987311 B2 JP 2987311B2 JP 7114520 A JP7114520 A JP 7114520A JP 11452095 A JP11452095 A JP 11452095A JP 2987311 B2 JP2987311 B2 JP 2987311B2
Authority
JP
Japan
Prior art keywords
instruction
branch
address
destination information
branch destination
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
JP7114520A
Other languages
English (en)
Other versions
JPH08314719A (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 JP7114520A priority Critical patent/JP2987311B2/ja
Priority to US08/588,051 priority patent/US5850551A/en
Priority to DE69614917T priority patent/DE69614917T2/de
Priority to EP96301228A priority patent/EP0742518B1/en
Priority to TW085102242A priority patent/TW294802B/zh
Priority to CNB96103713XA priority patent/CN1143213C/zh
Priority to KR1019960015748A priority patent/KR100253655B1/ko
Publication of JPH08314719A publication Critical patent/JPH08314719A/ja
Application granted granted Critical
Publication of JP2987311B2 publication Critical patent/JP2987311B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、パイプライン処理によ
って機械語命令列を実行するプロセッサと、プログラム
を機械語命令列に翻訳する翻訳装置に関し、特にループ
処理を高速に実行するプロセッサ及びそのための翻訳装
置に関する。
【0002】
【従来の技術】CPU(以下「プロセッサ」という。)
での処理の高速化の基本技術の一つにパイプライン処理
がある。パイプライン処理は、1個の命令の処理過程を
複数の小さな処理単位(パイプラインステージ)に分割
し、各ステージを同時に処理を行うことにより処理速度
を向上させる技術である。ところが、ループ処理等にお
いて分岐命令を実行した場合には、パイプラインストー
ル(乱れ)が生じ、パイプライン処理の実効性能が理想
性能を下回ることになる。この現象を、分岐ハザードと
いう。
【0003】図17は、図18に示されるC言語プログ
ラムを翻訳して得られる実行命令列であり、分岐ハザー
ドが生じる場合の命令列を示している。ここで用いられ
ている各命令列の意味は以下の通りである。 mov 0,i ; 0をiに転送する。 L: ;ラベル add a,b,c ;aとbの和をcに転送する。 mul a,b,d ;aとbの積をdに転送する。 add i,1,i ;iに1を加算する。 cmp i,3 ;iと3を比較する。 bcc L ;cmpの比較結果がi<3なら
ばLへ分岐する。
【0004】図17の命令列においては、命令add
a,b,cから命令bcc Lまでのループ処理が3回
繰り返される。図19は、図17の命令列を実行した場
合のプロセッサでのパイプラインの流れをクロックサイ
クルごとに示した図である。パイプラインは、3個のス
テージ(IF:命令フェッチ、DEC:命令デコード、
EX:実行及び実効アドレス生成)からなる。IFステ
ージに取り込まれた命令は、2クロックサイクル後にE
Xステージに送られて実行される。プロセッサは、クロ
ック8において分岐命令bcc Lを実行することによ
って初めて、次に実行すべき命令がadd a,b,c
であることを知り、クロック9において命令add
a,b,cをフェッチする。従って、クロック8におい
て分岐命令bcc Lを実行した後は、2クロック分の
命令の実行を無効化し、次に命令add a,b,cを
実行する。このように、1回のループ処理を終える度に
2クロック分のパイプラインストールを生じている。
【0005】このような分岐ハザードを回避する従来技
術として、(a)遅延分岐と呼ばれる方法(例えば、
「ヘネシー&パターソンコンピュータ・アーキテクチ
ャ」、第265頁から第270頁、日経BP出版センタ
ー)、(b)ループリピートと呼ばれる方法及び(c)
分岐ターゲットバッファと呼ばれる方法がある。 (a)遅延分岐 遅延分岐においては、コンパイラがプログラムをコンパ
イルする際にスケジューリングを行い、有効な命令を分
岐命令の後続にあたる命令の位置(分岐遅延スロット)
に予め移動させておくという方法が採られる。これによ
って、分岐命令を実行した場合であってもパイプライン
を無効化する必要が無くなるというものである。分岐遅
延スロットに移動しておく対象となる命令として、分岐
命令の先行命令、分岐先命令、分岐命令の後続命令とい
う3種類が挙げられている。 (b)ループリピート ループリピートにおいては、ループ処理を実行する前
に、予めループ処理の入口及び出口のアドレスとループ
回数等の情報をプロセッサが有する専用のレジスタに格
納しておくという方法が採られる。これによって、ルー
プ処理を繰り返す際の戻り先アドレスを算出する必要が
無くなり、分岐ハザードを解消できるというものであ
る。 (c)分岐ターゲットバッファ 分岐ターゲットバッファにおいては、プロセッサが新た
なアドレスに初めて分岐した場合に、分岐先アドレスや
分岐先命令列等を分岐ターゲットバッファと呼ばれるプ
ロセッサが有する専用のバッファメモリに格納してお
き、次に同じアドレスに分岐する際には分岐ターゲット
バッファに格納されている分岐先命令列を取り出して実
行するという方法が採られる。これによって、同じアド
レスから始まる命令列を繰り返し実行する場合であれ
ば、2回目以降の実行においては、プロセッサの内部に
有する分岐ターゲットバッファにアクセスするだけでよ
いので、外部メモリから命令列をフェッチする必要がな
くなり、分岐ハザードを解消できるというものである。
【0006】
【発明が解決しようとする課題】しかしながら、これら
の従来技術による方法は、以下の問題点を有している。 (a)遅延分岐 分岐命令の先行命令を分岐遅延スロットに移動する方法
では、分岐命令とその先行命令との間に依存関係が存在
しないことが条件とされるが、このような条件を有する
先行命令が必ずしも存在するとも限らない。また、たと
え、このような先行命令が存在している場合であって静
的なスケジューリングが完了しているときであっても、
実行時において、分岐遅延スロットに入れられた命令や
分岐後に実行すべき命令をフェッチする際に待ち時間が
発生することがある。例えば、これらの命令が置かれて
いる外部メモリが高速に動作できない素子であったり、
この命令をフェッチするための外部バスが他の処理のた
めに占有されている場合などが該当する。
【0007】また、分岐先命令や分岐命令の後続命令を
分岐遅延スロットに移動する方法では、性能向上が分岐
の成否に依存するという問題点や、上述と同様の待ち時
間が発生するという問題点がある。 (b)ループリピート ループリピートによる方法では、ループ処理を実行する
前の段階において、ループ回数が既に判明していること
が条件とされる。即ち、ループ処理を実行することによ
って初めてループ回数が決定されるような場合には、こ
の方法を適用することができない。従って、定型的な繰
り返し数値演算などの用途に限定されるという問題点が
ある。 (c)分岐ターゲットバッファ 分岐ターゲットバッファによる方法では、分岐する度
に、その分岐先アドレスが分岐ターゲットバッファに格
納されているかどうかを調べる必要がある。そのため
に、1クロックサイクルにおいて行うべき処理が多くな
るので、クロック速度の高速化が妨げられるという問題
点がある。
【0008】そこで、本発明はかかる問題点に鑑みてな
されたものであり、プログラムのループ処理で使用され
る分岐命令とその先行命令や分岐先命令との依存関係や
外部バスの動作速度の影響を受けることなく、分岐ハザ
ードを生じないでループ処理を高速に実行できるプロセ
ッサ及びそのための翻訳装置を提供することを第1の目
的とする。
【0009】本発明の第2の目的は、ループ処理の実行
前においてループ回数が判明していない場合であって
も、ループ処理の入口に戻る度に分岐先アドレスを算出
する必要がなくループ処理を高速に実行できるプロセッ
サ及びそのための翻訳装置を提供することである。本発
明の第3の目的は、分岐命令を実行する度にループ処理
の高速化を適用できるか否かを判断する必要がなく、ル
ープ処理を高速に実行できるプロセッサ及びそのための
翻訳装置を提供することである。
【0010】
【課題を解決するための手段】上記目的を達成するため
に請求項1〜3記載のプロセッサは、パイプライン処理
によって機械語命令列を実行するプロセッサであって、
分岐先情報記憶手段と、前記機械語命令列の命令を逐一
に解読する命令解読手段と、前記命令解読手段によって
前記命令が分岐先情報登録命令であると解読された場合
は、この命令に後続する命令に関する所定の分岐先情報
を前記分岐先情報記憶手段に登録する登録手段と、前記
命令解読手段によって前記命令がループ専用分岐命令で
あると解読された場合は、所定の手順に従ってループ処
理を繰り返すべきかどうかを判断し、ループ処理を繰り
返すと判断したときは、前記分岐先情報記憶手段に登録
された前記分岐先情報を読み出してその情報に基づいて
分岐する分岐実行手段とを備えることを特徴とする。
【0011】請求項4記載のプロセッサは、請求項3記
載のプロセッサにおいてさらに、前記命令解読手段によ
って前記命令が分岐先情報消去命令であると解読された
場合は、前記分岐先情報記憶手段に登録された前記分岐
先情報を消去する手段を備えることを特徴とする。請求
項5記載のプロセッサは、請求項3又は4記載のプロセ
ッサにおいて、前記登録手段は、前記命令解読手段によ
って前記命令が分岐先情報登録命令であると解読された
場合は、前記命令に後続する命令が置かれているアドレ
スを前記分岐先情報記憶手段に登録し、前記分岐実行手
段は、ループ処理を繰り返すと判断したときは、前記分
岐先情報記憶手段に登録された前記アドレスを読み出
し、そのアドレスに分岐することを特徴とする。
【0012】請求項6記載のプロセッサは、請求項3又
は4記載のプロセッサにおいて、前記登録手段は、前記
命令解読手段によって前記命令が分岐先情報登録命令で
あると解読された場合は、前記命令に後続する命令が置
かれているアドレスと前記命令に後続する所定数の命令
列とを前記分岐先情報記憶手段に登録し、前記分岐実行
手段は、ループ処理を繰り返すと判断したときは、前記
分岐先情報記憶手段に登録された前記アドレスと命令列
とを読み出し、そのアドレスに分岐すると共にその命令
列を実行し、前記ループ専用分岐命令によって指定され
ているアドレスから始まる命令列をフェッチすることを
特徴とする。
【0013】請求項7記載のプロセッサは、請求項3又
は4記載のプロセッサにおいて、前記登録手段は、前記
命令解読手段によって前記命令が分岐先情報登録命令で
あると解読された場合は、前記命令に後続する命令が置
かれているアドレスと前記命令に後続する所定数の命令
列とを前記分岐先情報記憶手段に登録し、前記分岐実行
手段は、ループ処理を繰り返すと判断したときは、前記
分岐先情報記憶手段に登録された前記アドレスと命令列
とを読み出し、そのアドレスに分岐すると共にその命令
列を実行し、そのアドレスに所定の演算を行うことによ
って得られるアドレスから始まる命令列をフェッチする
ことを特徴とする。
【0014】請求項8記載のプロセッサは、請求項3又
は4記載のプロセッサにおいて、前記登録手段は、前記
命令解読手段によって前記命令が分岐先情報登録命令で
あると解読された場合は、前記命令に後続する命令が置
かれている第1のアドレスと前記命令に後続する所定数
の命令列とその命令列の次に実行すべき命令が置かれて
いる第2のアドレスとを前記分岐先情報記憶手段に登録
し、前記分岐実行手段は、ループ処理を繰り返すと判断
したときは、前記分岐先情報記憶手段に登録された前記
第1のアドレスと命令列と第2のアドレスとを読み出
し、第1のアドレスに分岐すると共にその命令列を実行
し、第2のアドレスから始まる命令列をフェッチするこ
とを特徴とする。
【0015】請求項9記載のプロセッサは、請求項3又
は4記載のプロセッサにおいて、前記登録手段は、前記
命令解読手段によって前記命令が分岐先情報登録命令で
あると解読された場合は、前記命令に後続する所定数の
命令列とその命令列の次に実行すべき命令が置かれてい
るアドレスとを前記分岐先情報記憶手段に登録し、前記
分岐実行手段は、ループ処理を繰り返すと判断したとき
は、前記分岐先情報記憶手段に登録された前記命令列と
アドレスとを読み出し、前記ループ専用分岐命令によっ
て指定されているアドレスに分岐すると共に前記命令列
を実行し、前記分岐先情報記憶手段から読み出したアド
レスから始まる命令列をフェッチすることを特徴とす
る。
【0016】請求項10記載のプロセッサは、請求項3
又は4記載のプロセッサにおいて、前記登録手段は、前
記命令解読手段によって前記命令が分岐先情報登録命令
であると解読された場合は、前記命令に後続する所定数
の命令列とその命令列の次に実行すべき命令が置かれて
いるアドレスとを前記分岐先情報記憶手段に登録し、前
記分岐実行手段は、ループ処理を繰り返すと判断したと
きは、前記分岐先情報記憶手段に登録された前記命令列
とアドレスとを読み出し、そのアドレスに所定の演算を
行うことによって得られるアドレスに分岐すると共に前
記命令列を実行し、前記分岐先情報記憶手段から読み出
したアドレスから始まる命令列をフェッチすることを特
徴とする。
【0017】請求項11記載のプロセッサは、請求項3
又は4記載のプロセッサにおいて、前記登録手段は、前
記命令解読手段によって前記命令が分岐先情報登録命令
であると解読された場合は、前記命令に後続する命令が
置かれているアドレスと前記命令に後続する所定数の命
令列を解読した結果であるマイクロ命令列とを前記分岐
先情報記憶手段に登録し、前記分岐実行手段は、ループ
処理を繰り返すと判断したときは、前記分岐先情報記憶
手段に登録された前記アドレスとマイクロ命令列とを読
み出し、そのアドレスに分岐すると共にそのマイクロ命
令列を実行し、前記ループ専用分岐命令によって指定さ
れているアドレスから始まる命令列をフェッチすること
を特徴とする。
【0018】請求項12記載のプロセッサは、請求項3
又は4記載のプロセッサにおいて、前記登録手段は、前
記命令解読手段によって前記命令が分岐先情報登録命令
であると解読された場合は、前記命令に後続する命令が
置かれているアドレスと前記命令に後続する所定数の命
令列を解読した結果であるマイクロ命令列とを前記分岐
先情報記憶手段に登録し、前記分岐実行手段は、ループ
処理を繰り返すと判断したときは、前記分岐先情報記憶
手段に登録された前記アドレスとマイクロ命令列とを読
み出し、そのアドレスに分岐すると共にそのマイクロ命
令列を実行し、そのアドレスに所定の演算を行うことに
よって得られるアドレスから始まる命令列をフェッチす
ることを特徴とする。
【0019】請求項13記載のプロセッサは、請求項3
又は4記載のプロセッサにおいて、前記登録手段は、前
記命令解読手段によって前記命令が分岐先情報登録命令
であると解読された場合は、前記命令に後続する命令が
置かれている第1のアドレスと前記命令に後続する所定
数の命令列を解読した結果であるマイクロ命令列とその
命令列の次に実行すべき命令が置かれている第2のアド
レスとを前記分岐先情報記憶手段に登録し、前記分岐実
行手段は、ループ処理を繰り返すと判断したときは、前
記分岐先情報記憶手段に登録された前記第1のアドレス
とマイクロ命令列と第2のアドレスとを読み出し、第1
のアドレスに分岐すると共にそのマイクロ命令列を実行
し、第2のアドレスから始まる命令列をフェッチするこ
とを特徴とする。
【0020】請求項14記載のプロセッサは、請求項3
又は4記載のプロセッサにおいて、前記登録手段は、前
記命令解読手段によって前記命令が分岐先情報登録命令
であると解読された場合は、前記命令に後続する所定数
の命令列を解読した結果であるマイクロ命令列とその命
令列の次に実行すべき命令が置かれているアドレスとを
前記分岐先情報記憶手段に登録し、前記分岐実行手段
は、ループ処理を繰り返すと判断したときは、前記分岐
先情報記憶手段に登録された前記マイクロ命令列とアド
レスとを読み出し、前記ループ専用分岐命令によって指
定されているアドレスに分岐すると共に前記マイクロ命
令列を実行し、前記分岐先情報記憶手段から読み出した
アドレスから始まる命令列をフェッチすることを特徴と
する。
【0021】請求項15記載のプロセッサは、請求項3
又は4記載のプロセッサにおいて、前記登録手段は、前
記命令解読手段によって前記命令が分岐先情報登録命令
であると解読された場合は、前記命令に後続する所定数
の命令列を解読した結果であるマイクロ命令列とその命
令列の次に実行すべき命令が置かれているアドレスとを
前記分岐先情報記憶手段に登録し、前記分岐実行手段
は、ループ処理を繰り返すと判断したときは、前記分岐
先情報記憶手段に登録された前記マイクロ命令列とアド
レスとを読み出し、そのアドレスに所定の演算を行うこ
とによって得られるアドレスに分岐すると共に前記マイ
クロ命令列を実行し、前記分岐先情報記憶手段から読み
出したアドレスから始まる命令列をフェッチすることを
特徴とする。
【0022】請求項16記載の翻訳装置は、プログラム
を翻訳して請求項3記載のプロセッサを対象とする機械
語命令列を生成する翻訳装置であって、ループ情報記憶
手段と、前記プログラムに存在する所定のループ処理を
検出し、そのループ処理を特定するための情報を前記ル
ープ情報記憶手段に格納するループ検出手段と、前記ル
ープ情報記憶手段に格納された情報に基づいて、ループ
処理の入口の直前に前記分岐先情報登録命令を生成し、
ループ処理の入口に分岐する位置に前記ループ専用分岐
命令を生成するループ高速化適用手段とを備えることを
特徴とする。
【0023】請求項17記載の翻訳装置は、請求項16
記載の翻訳装置において、前記ループ高速化適用手段は
さらに、前記ループ情報記憶手段に格納された情報に基
づいて、ループ処理の出口の直後に前記分岐先情報消去
命令を生成することを特徴とする。
【0024】
【作用】上記のように構成された請求項1〜3記載のプ
ロセッサによれば、機械語命令列は命令解読手段によっ
て逐一に命令が解読される。解読された命令が分岐先情
報登録命令であると判断された場合は、ループ処理の先
頭アドレスや先頭命令等のループ情報が登録手段によっ
て分岐先情報記憶手段に登録される。また、解読された
命令がループ専用分岐命令であると判断された場合は、
所定の手順に従ってループ処理を繰り返すべきかどうか
が判断され、ループ処理を繰り返すと判断されたとき
は、前記分岐先情報記憶手段に登録された前記分岐先情
報が読み出され、その情報に基づいて分岐処理が行われ
る。
【0025】請求項4記載のプロセッサによれば、請求
項3記載のプロセッサにおいてさらに、命令解読手段に
よって解読された命令が分岐先情報消去命令であると判
断された場合は、分岐先情報記憶手段に登録されていた
分岐先情報は消去される。請求項5記載のプロセッサに
よれば、請求項3又は4記載のプロセッサにおいて、実
行時において、命令が分岐先情報登録命令であると解読
された場合は、ループ処理の先頭アドレスが分岐先情報
記憶手段に登録される。また、命令がループ専用分岐命
令であると解読された場合は、分岐先情報記憶手段に登
録されていた先頭アドレスを読み出し、そのアドレスに
分岐する。
【0026】請求項6記載のプロセッサによれば、請求
項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理の先頭アドレス及び先頭命令が分岐先情
報記憶手段に登録される。また、命令がループ専用分岐
命令であると解読された場合は、分岐先情報記憶手段に
登録されていた先頭アドレス及び先頭命令を読み出し、
そのアドレスに分岐すると共にその命令を実行し、ルー
プ専用分岐命令によって指定されているアドレスから始
まる命令をフェッチする。
【0027】請求項7記載のプロセッサによれば、請求
項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理の先頭アドレス及び先頭命令が分岐先情
報記憶手段に登録される。また、命令がループ専用分岐
命令であると解読された場合は、分岐先情報記憶手段に
登録されていた先頭アドレス及び先頭命令を読み出し、
そのアドレスに分岐すると共にその命令を実行し、その
アドレスに所定の演算を行うことによって得られるアド
レスから始まる命令をフェッチする。
【0028】請求項8記載のプロセッサによれば、請求
項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理の先頭アドレス、フェッチアドレス及び
先頭命令が分岐先情報記憶手段に登録される。また、命
令がループ専用分岐命令であると解読された場合は、分
岐先情報記憶手段に登録されていた先頭アドレス、フェ
ッチアドレス及び先頭命令を読み出し、その先頭アドレ
スに分岐すると共にその命令を実行し、そのフェッチア
ドレスから始まる命令をフェッチする。
【0029】請求項9記載のプロセッサによれば、請求
項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理のフェッチアドレス及び先頭命令が分岐
先情報記憶手段に登録される。また、命令がループ専用
分岐命令であると解読された場合は、分岐先情報記憶手
段に登録されていたフェッチアドレス及び先頭命令を読
み出し、ループ専用分岐命令によって指定されているア
ドレスに分岐すると共に読み出した先頭命令を実行し、
読み出したフェッチアドレスから始まる命令をフェッチ
する。
【0030】請求項10記載のプロセッサによれば、請
求項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理のフェッチアドレス及び先頭命令が分岐
先情報記憶手段に登録される。また、命令がループ専用
分岐命令であると解読された場合は、分岐先情報記憶手
段に登録されていたフェッチアドレス及び先頭命令を読
み出し、そのアドレスに所定の演算を行うことによって
得られるアドレスに分岐すると共に読み出した先頭命令
を実行し、読み出したフェッチアドレスから始まる命令
をフェッチする。
【0031】請求項11記載のプロセッサによれば、請
求項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理の先頭アドレス及び先頭マイクロ命令が
分岐先情報記憶手段に登録される。また、命令がループ
専用分岐命令であると解読された場合は、分岐先情報記
憶手段に登録されていた先頭アドレス及び先頭マイクロ
命令を読み出し、そのアドレスに分岐すると共にそのマ
イクロ命令を実行し、ループ専用分岐命令によって指定
されているアドレスから始まる命令をフェッチする。
【0032】請求項12記載のプロセッサによれば、請
求項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理の先頭アドレス及び先頭マイクロ命令が
分岐先情報記憶手段に登録される。また、命令がループ
専用分岐命令であると解読された場合は、分岐先情報記
憶手段に登録されていた先頭アドレス及び先頭マイクロ
命令を読み出し、そのアドレスに分岐すると共にそのマ
イクロ命令を実行し、そのアドレスに所定の演算を行う
ことによって得られるアドレスから始まる命令をフェッ
チする。
【0033】請求項13記載のプロセッサによれば、請
求項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理の先頭アドレス、フェッチアドレス及び
先頭マイクロ命令が分岐先情報記憶手段に登録される。
また、命令がループ専用分岐命令であると解読された場
合は、分岐先情報記憶手段に登録されていた先頭アドレ
ス、フェッチアドレス及び先頭マイクロ命令を読み出
し、その先頭アドレスに分岐すると共にそのマイクロ命
令を実行し、そのフェッチアドレスから始まる命令をフ
ェッチする。
【0034】請求項14記載のプロセッサによれば、請
求項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理のフェッチアドレス及び先頭マイクロ命
令が分岐先情報記憶手段に登録される。また、命令がル
ープ専用分岐命令であると解読された場合は、分岐先情
報記憶手段に登録されていたフェッチアドレス及び先頭
マイクロ命令を読み出し、ループ専用分岐命令によって
指定されているアドレスに分岐すると共に読み出したマ
イクロ命令列を実行し、読み出したフェッチアドレスか
ら始まる命令をフェッチする。
【0035】請求項15記載のプロセッサによれば、請
求項3又は4記載のプロセッサにおいて、実行時におい
て、命令が分岐先情報登録命令であると解読された場合
は、ループ処理のフェッチアドレス及び先頭マイクロ命
令が分岐先情報記憶手段に登録される。また、命令がル
ープ専用分岐命令であると解読された場合は、分岐先情
報記憶手段に登録されていたフェッチアドレス及び先頭
マイクロ命令を読み出し、そのフェッチアドレスに所定
の演算を行うことによって得られるアドレスに分岐する
と共に読み出したマイクロ命令列を実行し、読み出した
フェッチアドレスから始まる命令をフェッチする。
【0036】請求項16記載の翻訳装置によれば、プロ
グラムが機械後命令列に翻訳される際に、そのプログラ
ムに存在するループ処理が検出され、そのループ処理を
特定するための情報がループ情報記憶手段に格納され
る。ループ情報記憶手段に格納された情報に基づき、ル
ープ処理の入口の直前には分岐先情報登録命令が生成さ
れ、ループ処理の入口に分岐する位置にはループ専用分
岐命令が生成される。生成された機械後命令列は、請求
項1〜3記載のプロセッサによって実行される。
【0037】請求項17記載の翻訳装置によれば、請求
項16記載の翻訳装置においてさらに、ループ情報記憶
手段に格納された情報に基づき、ループ処理の出口の直
後には分岐先情報消去命令が生成される。生成された機
械後命令列は、請求項1〜3記載のプロセッサによって
実行される。
【0038】
【実施例】以下、本発明の実施例について図面を用いて
詳細に説明する。 (第1実施例)図1は、本発明の第1実施例に係る情報
処理装置の構成を示すブロック図である。尚、図1に
は、本装置の構成の他に、本装置の処理の対象となるプ
ログラム101及び本装置によって中間的に生成される
実行命令列106も同時に示している。
【0039】本装置は、大きく分けて翻訳装置102と
プロセッサ107から構成される。翻訳装置102は、
高級言語で書かれたプログラム101を機械語命令列に
翻訳し、実行命令列106として出力する。翻訳装置1
02は、さらにループ検出部103、ループ情報記憶部
104及びループ高速化適用部105からなる。ループ
検出部103は、与えられたプログラムに存在する所定
の条件に該当する全てのループ処理を検出し、検出した
ループ処理の入口及び出口を特定する位置情報をループ
情報としてループ情報記憶部104に格納する。ここ
で、ループ処理とは、繰り返し処理を行う可能性のある
プログラム中の一部をいい、1個の入口と1個以上の出
口を有する。従って、ループ処理どうしが交差すること
はあり得ない。また、ループ処理の入口とは、そのルー
プ処理を実行する際に最初に実行される命令が置かれて
いる位置をいい、ループ処理の出口とは1回のループ処
理において最後に実行される命令が置かれている位置を
いう。
【0040】ループ検出部103は、プログラムに使用
されているインストラクションがdoやwhileなど
の特定の命令かどうかによって検出を行う。また、制御
の流れを解析することによってループを検出する方法で
あってもよい(A.Vエイホ他、原田賢一訳「コンパイ
ラ原理・技法・ツールII」サイエンス社参照)。尚、
所定の条件に該当する全てのループ処理とは、次のいず
れかに該当する全てのループ処理をいう。 (a)他のループ処理と包含関係にない独立したループ
処理 (b)包含関係にあるループ処理が存在する場合には、
それらのループ処理の中で最も内側から2個を超えない
ループ処理 ここで、包含関係にある最大2個を超えないループ処理
に限定しているのは、後述する分岐先情報記憶部114
の記憶容量によって制限されるためである。
【0041】ループ情報記憶部104は、RAMなどか
らなり、ループ検出部103から送られてくるループ情
報を各ループ毎に一時的に記憶する。ループ情報は、ル
ープの入口と出口に対応するプログラムのステートメン
トを特定する位置情報からなる。ループ高速化適用部1
05は、ループ情報記憶部104に格納されたループ情
報に基づいて、ループ処理の高速化のための次の3種類
の機械語命令(以下、「ループ高速化命令」という。)
を生成する。具体的には、ループの入口の直前に分岐先
情報登録命令を、ループの出口の直後に分岐先情報消去
命令を、ループの入口に分岐すべき箇所にループ専用分
岐命令を生成する。ここで、ループの出口の直後とは、
ループ処理を終えてループ処理から抜け出た直後に実行
されるべき命令が置かれる位置をいう。また、ループの
入口に分岐すべき箇所とは、ループ処理を繰り返すため
にループの入口に制御を戻す可能性のあるすべての箇所
をいい、1箇所に限定されない。
【0042】尚、ループ処理を除く他の全てのプログラ
ム中のステートメントもループ処理と同様に翻訳装置1
02によって機械語命令に翻訳されるが、その動作は通
常のプログラム言語翻訳装置と異ならないのでその説明
は省略する。プロセッサ107は、翻訳装置102から
実行命令列106を与えられると、そこから逐一に命令
を取り出して解釈し実行する。プロセッサ107は、さ
らに命令フェッチ部108、命令解読部109、実行部
110、分岐先情報登録部111、分岐先情報消去部1
12、分岐実行部113及び分岐先情報記憶部114か
らなる。プロセッサ107の各構成部は、図示されてい
ないクロック発生器からのクロック信号に同期して動作
している。命令フェッチ部108、命令解読部109及
び実行部110は、命令パイプラインを構成しており、
クロック信号に同期して順次に命令を図示されている方
向に送り出す。
【0043】命令フェッチ部108は、外部メモリに置
かれている実行命令列106から逐一に命令をフェッチ
し、次のクロックサイクルでその命令を命令解読部10
9に送る。命令フェッチ部108は、さらにフェッチ用
カウンタ108a及びフェッチ命令バッファ108bか
らなる。フェッチ用カウンタ108aは、次にフェッチ
すべき命令が置かれているアドレスを示しており、実行
命令列106が置かれている外部メモリに出力される。
フェッチ用カウンタ108aの値は、通常はフェッチし
終えると図示されていないインクリメンタによって1だ
け加算され次にフェッチすべきアドレスに更新される。
しかし、分岐実行部113からの指示がある場合には、
これを優先し、フェッチ用カウンタ108aの値は、分
岐実行部113から送られてくるアドレスに更新され
る。
【0044】フェッチ命令バッファ108bは、レジス
タからなり、実行命令列106からフェッチした1個の
命令を保持している。命令解読部109は、さらに解読
命令用カウンタ109a及び解読命令バッファ109b
からなり、解読命令バッファ109bに格納された命令
をデコードする。その結果、解読命令バッファ109b
に格納された命令がループ高速化命令のいずれかの命令
であると判断した場合には、命令解読部109は、それ
ぞれの命令に対応して分岐先情報登録部111、分岐先
情報消去部112又は分岐実行部113を起動する。一
方、解読命令バッファ109bに格納された命令がルー
プ高速化命令を除く他の命令であると判断した場合に
は、命令解読部109は、その命令のデコード結果(以
下、「マイクロ命令」という。)を実行部110に送
る。
【0045】解読命令用カウンタ109aは、解読命令
バッファ109bに格納されている命令が置かれていた
外部メモリ106上のアドレスを保持している。ここに
は、通常はフェッチ用カウンタ108aから送られてく
るアドレスが格納されるが、分岐実行部113からの指
示がある場合には、分岐実行部113から送られてくる
アドレスに更新される。
【0046】解読命令バッファ109bは、フェッチ命
令バッファ108b又は分岐実行部113から送られて
きた1個の命令を保持している。実行部110は、さら
に実行命令用カウンタ110a及び実行制御部110b
からなる。実行命令用カウンタ110aは、実行部11
0が実行しているマイクロ命令に該当する命令が置かれ
ていた外部メモリ106上のアドレスを保持している。
ここには、通常は解読命令用カウンタ109aから送ら
れてくるアドレスが格納されるが、分岐実行部113か
らの指示がある場合には、分岐実行部113から送られ
てくるアドレスに更新される。
【0047】実行制御部110bは、算術演算回路(A
LU)やシフタなどからなり、命令解読部109や分岐
実行部113から送られてきたマイクロ命令に従ってプ
ロセッサ107の各構成部を制御したり、プロセッサ1
07に接続された図示されていない制御信号の入出力を
行ったりする。分岐先情報登録部111は、解読命令バ
ッファ109bに格納された命令が分岐先情報登録命令
であると判断された場合に命令解読部109によって起
動される。起動された分岐先情報登録部111は、次の
クロックサイクル時に格納された解読命令用カウンタ1
09aのアドレス及び解読命令バッファ109bの命令
を読み取って一組の分岐先情報として分岐先情報記憶部
114に登録する。
【0048】分岐先情報消去部112は、解読命令バッ
ファ109bに格納された命令が分岐先情報消去命令で
あると判断された場合に命令解読部109によって起動
される。起動された分岐先情報消去部112は、分岐先
情報記憶部114に登録されている最新の一組の分岐先
情報を消去する。分岐実行部113は、解読命令バッフ
ァ109bに格納された命令がループ専用分岐命令であ
ると判断された場合に命令解読部109によって起動さ
れる。起動された分岐実行部113は、分岐先情報記憶
部114に登録された一組の分岐先情報を読み取り、読
み取ったアドレスをフェッチ用カウンタ108aに格納
すると共に読み取った命令を次のクロックサイクル時に
解読命令バッファ109bに格納する。
【0049】分岐先情報記憶部114は、LIFO(La
st In First Out)形式のラッチからなり、最大で2組
の分岐先情報を記憶する記憶容量を有する。分岐先情報
は、分岐先情報登録部111によって書き込まれ、分岐
先情報消去部112によって消去される。次に、以上の
ように構成された情報処理装置の動作について具体例に
基づいて説明する。図2及び図3は、それぞれ本装置の
翻訳装置102及びプロセッサ107の動作手順を示す
フローチャートである。
【0050】今、図17に示されたプログラムが翻訳装
置102に与えられた場合について説明する。プログラ
ムが翻訳装置102に入力されると(ステップS20
1)、ループ検出部103は、プログラムに存在するル
ープ処理を検出する(ステップS202)。図17に示
されたプログラムにおいては、for文がループ処理で
あるので、ループ検出部103は、そのループ処理の入
口と出口を特定する位置情報をループ情報記憶部104
に格納する(ステップS203)。
【0051】ループ高速化適用部105は、ループ情報
記憶部104に格納されたループ情報を読み取り、ルー
プ処理の入口の直前には分岐先情報登録命令setを出
力する(ステップS204)。同様にして、ループ高速
化適用部105は、ループ処理の出口の直後には分岐先
情報消去命令clrを出力し(ステップS205)、ル
ープ処理の入口への分岐にループ専用分岐命令lcc
Lを出力する(ステップS206)。尚、プログラムの
ループ処理を除く他の部分については、通常の手順に従
って翻訳装置102によって対応する実行命令が出力さ
れる。
【0052】外部メモリなどに出力された実行命令列1
06は、プロセッサ107によって実行される(ステッ
プS301〜309)。命令フェッチ部108は、実行
命令列106から命令を逐一にフェッチする(ステップ
S301)。フェッチされた命令は、次クロックサイク
ルにおいて命令解読部109に転送され解読される(ス
テップS302〜307)。解読の結果、命令がループ
高速化命令set、clr、lccのいずれかである場
合には、それぞれの命令に応じた処理(ステップS30
3、S305、S307)が行われる。命令がループ高
速化命令でない場合には、その解読結果は、次のクロッ
クサイクルにおいて実行部110に転送されて実行され
る(ステップS308)。
【0053】上記の処理(ステップS301〜S30
8)は、実行命令列106の最後の命令が実行されるま
で繰り返される(ステップS309)。ここで、ループ
高速化命令set、clr、lccが実行された場合の
プロセッサ107の各部の動作についてさらに詳細に説
明する。図5は、図4に示された実行命令列が実行され
た場合におけるプロセッサ107の命令パイプライン1
08〜110の流れを示す。ここで、IF、DEC、E
Xは、それぞれ命令フェッチ部108、命令解読部10
9、実行部110に取り込まれた命令を表している。
【0054】クロックサイクル2においてフェッチされ
た分岐先情報登録命令setがクロックサイクル3にお
いて解読命令バッファ109bに転送されると、命令解
読部109は、解読命令バッファ109bに転送されて
きた命令が分岐先情報登録命令setであると認識し、
分岐先情報登録部111を起動する。起動された分岐先
情報登録部111は、次のクロックサイクルに解読命令
バッファ109b及び解読命令用カウンタ109aに転
送されてきた命令及びアドレス、即ち命令add a,
b,c及びその命令が置かれていた外部メモリ上のアド
レスを読み取って分岐先情報記憶部114に登録する。
尚、分岐先情報記憶部114は、最大2組の分岐先情報
を登録するだけの記憶容量を有しているので、ここでの
1組の分岐先情報の登録により、残る記憶容量は1組分
の分岐先情報となる。
【0055】また、クロックサイクル7においてフェッ
チされたループ専用分岐命令lccがクロックサイクル
8において解読命令バッファ109bに転送されると、
命令解読部109は、解読命令バッファ109bに転送
されてきた命令がループ専用分岐命令lccであると認
識し、分岐実行部113を起動する。起動された分岐実
行部113は、分岐先情報記憶部114に登録されてい
たアドレスに命令add a,b,cのサイズである4
を加算した値、即ち命令add a,b,cの次に格納
されている命令のアドレスをフェッチ用カウンタ108
aに転送し、次のクロックサイクルにおいて分岐先情報
記憶部114に登録されていたアドレス及び命令をそれ
ぞれ解読命令用カウンタ109a及び解読命令バッファ
109bに転送する。
【0056】その結果、クロックサイクル9において
は、命令フェッチ部108には外部メモリから命令mu
l a,b,dがフェッチされ、命令解読部109には
分岐先情報記憶部114から命令add a,b,c及
びそのアドレスが格納されて解読され、さらに実行部1
10において命令lcc Lが実行される。命令lcc
Lが実行されると、命令bcc Lと同様の判断が行わ
れ、ここでは、直前に実行された命令cmp i,3の
結果に基づき、ループ処理を繰り返すと判断される。そ
の結果、クロックサイクル10〜14において、2回目
のループ処理が繰り返される。
【0057】以上に説明したクロックサイクル8〜10
における命令パイプラインの動きを記号で表現したもの
が図6に示された表である。なお、図6の下部に示した
図は、参照のためであり、図5におけるクロックサイク
ル8〜10におけるパイプラインの流れと同一である。
図6におけるIR,IC,DR,DC,ER,ECは、
図1に示されるように、命令パイプライン108〜11
0の各構成部の略称である。BR1,BR2は、分岐先
情報記憶部114に登録されている内容であり、それぞ
れ命令adda,b,cのアドレス及び命令add
a,b,cを示している。尚、ループ専用分岐命令lc
cに起因する本装置に特徴的な動作は、点線で囲まれて
いる。
【0058】クロックサイクル8における各記号の意味
は以下の通りである。 [IFステージ] IR←(IC):アドレスICが示す命令をIRに転送
する。 IC←BR1+4:アドレスBR1に4を加算した値を
ICに転送する。 ここで、上記の2個の転送は図6において2行で表記さ
れているが、上段の動作は1クロックサイクルの前半時
に行われ、一方、下段の動作は1クロックサイクルの後
半時に行われることを意味している。従って、ここで
は、転送IR←(IC)を終えた後に、転送IC←BR
1+4が行なわれることを意味する。 [DECステージ] DR←IR:命令IRをDRに転送する。 DC←IC:アドレスICをDCに転送する。
【0059】ここで、上記の2個の転送は、1行で表記
しているので、上段の転送DR←IRと下段の転送DC
←ICは同時に行われることを意味する。 [EXステージ] ER←DR:命令DRをERに転送する。 EC←DC:アドレスDCをECに転送する。
【0060】以上のクロックサイクル8でのパイプライ
ンの動きは、クロックサイクル13及び18での動きと
同様である。図5のクロックサイクル15〜18におい
て3回目のループ処理が実行されると、クロックサイク
ル19での命令lcc Lの実行によってループ処理を
終了すると判断され、クロックサイクル20においては
ループ処理の出口の直後に置かれた分岐先情報消去命令
clrがフェッチされる。フェッチされた分岐先情報消
去命令clrは、次のクロックサイクル21において解
読命令バッファ109bに転送されると、命令解読部1
09は、転送されてきた命令が分岐先情報消去命令cl
rであると認識し、分岐先情報消去部112を起動す
る。
【0061】起動された分岐先情報消去部112は、分
岐先情報記憶部114に登録されていた命令add
a,b,c及びそのアドレスを消去する。尚、1組の分
岐先情報が消去されたことにより、この時点での分岐先
情報記憶部114の記憶容量は2組分の分岐先情報に戻
る。以上の説明から明らかなように、本装置によれば、
プログラムを翻訳する際にループ高速化命令が生成さ
れ、1回目のループ処理が実行される際に、ループ処理
の先頭命令及びそのアドレスがプロセッサ107内部の
専用バッファである分岐先情報記憶部114に登録され
る。そして、ループ処理を繰り返す分岐命令を解読した
プロセッサ107は、分岐先アドレスを計算したり、低
速の外部メモリから分岐先命令をフェッチしたりする必
要はなく、分岐先アドレス及び分岐先命令を分岐先情報
記憶部114から得ることができる。
【0062】その結果、図19と図5に示されたパイプ
ラインの流れを比較して明らかなように、従来の装置も
本装置も図18に示されたプログラムを翻訳して実行し
ているにも拘らず、従来の装置によればループ処理の繰
り返し時に分岐ハザードが生じ、一方、本装置によれば
分岐ハザードが生じない。即ち、本装置によれば、ルー
プ処理が高速化される。 (第2実施例)次に、ループ処理の先頭アドレスのみを
登録しておくことによってループ処理を高速化した本発
明の第2実施例に係る情報処理装置について説明する。
【0063】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭アドレスのみを登録する。本実施例
に係る情報処理装置の構成は、図1に示された第1実施
例の装置と同一である。但し、本装置における分岐先情
報記憶部114は、ループ処理の先頭アドレスのみを記
憶する。また、本装置の動作の概要は、図2及び図3に
示された第1実施例の場合のフローチャートの通りであ
るが、分岐先情報登録命令setとループ専用命令lc
cの実行時における詳細な動作だけが第1実施例の場合
と異なるので、異なる点だけを説明する。
【0064】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109aに転送されて
きたアドレス、即ち命令add a,b,cが置かれて
いる外部メモリ上のアドレスを読み取って分岐先情報記
憶部114に登録する。
【0065】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたアドレスをフェッチ用カウンタ
108aに転送する。その結果、次のクロックサイクル
において、フェッチ用カウンタ108aのアドレスに該
当する外部メモリ106上の命令、即ち命令add
a,b,cがフェッチされる。
【0066】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図7に示す。図7は、第
1実施例における図6に対応するものである。ここで、
BR1は、分岐先情報記憶部114に登録されていたア
ドレスを意味する。クロックサイクル8のIFステージ
においては、命令(IC)がフェッチされた後に、アド
レスBR1が分岐先情報記憶部114からICに転送さ
れる。また、本実施例においては、図7に示される通
り、1クロックサイクル分のパイプラインストールが生
じるので、クロックサイクル9のDECステージにおい
て分岐実行部113はDR及びDCに0を転送し、パイ
プラインの無効化を行っている。
【0067】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭アドレスがプロセッサ107内部の専用バ
ッファである分岐先情報記憶部114に登録される。そ
して、ループ処理を繰り返す分岐命令を解読したプロセ
ッサ107は、分岐先アドレスを計算する必要はなく、
分岐先アドレスを分岐先情報記憶部114から得ること
ができる。
【0068】その結果、従来の装置によって生じていた
2クロック分の分岐ハザードが、1クロックサイクルに
減少している。これによって、ループ処理が高速化され
る。 (第3実施例)次に、ループ処理の先頭アドレスと先頭
命令とを登録しておき、ループ専用分岐命令で指定され
たフェッチアドレスを用いることによってループ処理を
高速化した本発明の第3実施例に係る情報処理装置につ
いて説明する。
【0069】本実施例に係る情報処理装置の構成は、図
1に示された第1実施例の装置と同一である。また、本
装置の動作の概要は、図2及び図3に示された第1実施
例の場合のフローチャートの通りであるが、ループ専用
命令lccの実行時における詳細な動作だけが第1実施
例の場合と異なるので、異なる点だけを説明する。ルー
プ専用分岐命令lccが解読命令バッファ109bに取
り込まれて分岐実行部113が起動されると、分岐実行
部113は、命令lcc Lによって指定されていたフ
ェッチアドレス、即ちラベルLをフェッチ用カウンタ1
08aに転送し、次のクロックサイクルにおいて、分岐
先情報記憶部114に登録されていたアドレス及び命令
add a,b,cをそれぞれ解読命令用カウンタ10
9a及び解読命令バッファ109bに転送する。
【0070】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図8に示す。図8は、第
1実施例における図6に対応するものである。ここで、
BR1及びBR2は、それぞれ分岐先情報記憶部114
に登録されていた分岐先アドレス及び命令add a,
b,cを意味する。[DR]は、命令DRの一部分、即
ちラベルLに該当するアドレスを意味する。
【0071】クロックサイクル8のIFステージにおい
ては、命令(IC)がフェッチされた後に、命令DRの
一部がICに転送される。さらに、クロックサイクル9
のDECステージにおいては、アドレスDR1及び命令
DRがそれぞれ分岐先情報記憶部114からDRに転送
される。その結果、図8のパイプラインの流れに示され
るように、第1実施例と同様の動作になる。
【0072】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭命令及び先頭アドレスがプロセッサ107
内部の専用バッファである分岐先情報記憶部114に登
録される。そして、ループ処理を繰り返す分岐命令を解
読したプロセッサ107は、分岐先アドレスやフェッチ
アドレスを計算したり、低速の外部メモリから分岐先命
令をフェッチしたりする必要はなく、分岐先命令、分岐
先アドレス及びフェッチアドレスを分岐先情報記憶部1
14及びループ専用分岐命令lcc Lから得ることが
できる。
【0073】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第4実施例)次に、ループ処理の先頭アドレスと先頭
命令とフェッチアドレスとを登録しておくことによって
ループ処理を高速化した本発明の第4実施例に係る情報
処理装置について説明する。
【0074】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においてはさらに先頭命令の次にフェッチすべき命
令が置かれている外部メモリ106上のアドレスを登録
する。本実施例に係る情報処理装置の構成は、図1に示
された第1実施例の装置と同一である。但し、本装置に
おける分岐先情報記憶部114は、ループ処理の先頭ア
ドレスと先頭命令とフェッチアドレスを記憶する。ま
た、本装置の動作の概要は、図2及び図3に示された第
1実施例の場合のフローチャートの通りであるが、分岐
先情報登録命令setとループ専用命令lccの実行時
における詳細な動作だけが第1実施例の場合と異なるの
で、異なる点だけを説明する。
【0075】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cを読み取り、それらの情報とそのアド
レスに4を加算したフェッチアドレスとを分岐先情報記
憶部114に登録する。
【0076】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたフェッチアドレスをフェッチ用
カウンタ108aに転送し、次のクロックサイクルにお
いて分岐先情報記憶部114に登録されていたアドレス
及び命令add a,b,cをそれぞれ解読命令用カウ
ンタ109a及び解読命令バッファ109bに転送す
る。
【0077】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図9に示す。図9は、第
1実施例における図6に対応するものである。ここで、
BR1、BR2及びBR3は、それぞれ分岐先情報記憶
部114に登録されていたアドレス、命令及びフェッチ
アドレスを意味する。クロックサイクル8のIFステー
ジにおいては、命令(IC)がフェッチされた後に、ア
ドレスBR3が分岐先情報記憶部114からICに転送
される。さらに、クロックサイクル9のDECステージ
においては、命令BR2及びアドレスBR1がそれぞれ
分岐先情報記憶部114からDR及びDCに転送され
る。その結果、図9のパイプラインの流れに示されるよ
うに、第1実施例と同様の動作になる。
【0078】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭命令、先頭アドレス及びフェッチアドレス
がプロセッサ107内部の専用バッファである分岐先情
報記憶部114に登録される。そして、ループ処理を繰
り返す分岐命令を解読したプロセッサ107は、分岐先
アドレスやフェッチアドレスを計算したり、低速の外部
メモリから分岐先命令をフェッチしたりする必要はな
く、分岐先命令、分岐先アドレス及びフェッチアドレス
を分岐先情報記憶部114から得ることができる。
【0079】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第5実施例)次に、ループ処理の先頭命令とフェッチ
アドレスとを登録しておき、ループ専用分岐命令で指定
された分岐先アドレスを用いることによってループ処理
を高速化した本発明の第5実施例に係る情報処理装置に
ついて説明する。
【0080】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭命令とフェッチアドレスを登録す
る。本実施例に係る情報処理装置の構成は、図1に示さ
れた第1実施例の装置と同一である。但し、本装置にお
ける分岐先情報記憶部114は、ループ処理の先頭アド
レスとフェッチアドレスを記憶する。また、本装置の動
作の概要は、図2及び図3に示された第1実施例の場合
のフローチャートの通りであるが、分岐先情報登録命令
setとループ専用命令lccの実行時における詳細な
動作だけが第1実施例の場合と異なるので、異なる点だ
けを説明する。
【0081】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cを読み取り、そのアドレスに4を加算
したフェッチアドレスとその命令add a,b,cを
分岐先情報記憶部114に登録する。
【0082】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたフェッチアドレスをフェッチ用
カウンタ108aに転送し、次のクロックサイクルにお
いて、命令lccによって指定されていたアドレス、即
ちラベルLを解読命令バッファ109bから解読命令用
カウンタ109aに転送した後に分岐先情報記憶部11
4に登録されていた命令add a,b,cを解読命令
バッファ109bに転送する。
【0083】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図10に示す。図10
は、第1実施例における図6に対応するものである。こ
こで、BR2及びBR3は、それぞれ分岐先情報記憶部
114に登録されていた命令add a,b,c及びフ
ェッチアドレスを意味する。クロックサイクル8のIF
ステージにおいては、命令(IC)がフェッチされた後
に、アドレスBR3が分岐先情報記憶部114からIC
に転送される。さらに、クロックサイクル9のDECス
テージにおいては、命令DRの一部分がDCに転送され
てから命令BR2が分岐先情報記憶部114からDRに
転送される。その結果、図10のパイプラインの流れに
示されるように、第1実施例と同様の動作になる。
【0084】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭命令及びフェッチアドレスがプロセッサ1
07内部の専用バッファである分岐先情報記憶部114
に登録される。そして、ループ処理を繰り返す分岐命令
を解読したプロセッサ107は、分岐先アドレスやフェ
ッチアドレスを計算したり、低速の外部メモリから分岐
先命令をフェッチしたりする必要はなく、分岐先命令、
フェッチアドレス及び分岐先アドレスを分岐先情報記憶
部114及びループ専用分岐命令lcc Lから得るこ
とができる。
【0085】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第6実施例)次に、ループ処理の先頭命令とフェッチ
アドレスとを登録しておき、分岐先アドレスを所定の演
算によって求めることによってループ処理を高速化した
本発明の第6実施例に係る情報処理装置について説明す
る。
【0086】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭命令とフェッチアドレスを登録す
る。本実施例に係る情報処理装置の構成は、図1に示さ
れた第1実施例の装置と同一である。但し、本装置にお
ける分岐先情報記憶部114は、ループ処理の先頭アド
レスとフェッチアドレスを記憶する。また、本装置の動
作の概要は、図2及び図3に示された第1実施例の場合
のフローチャートの通りであるが、分岐先情報登録命令
setとループ専用命令lccの実行時における詳細な
動作だけが第1実施例の場合と異なるので、異なる点だ
けを説明する。
【0087】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cを読み取り、そのアドレスに4を加算
したフェッチアドレスとその命令add a,b,cを
分岐先情報記憶部114に登録する。
【0088】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたフェッチアドレスをフェッチ用
カウンタ108aに転送し、次のクロックサイクルにお
いて、分岐先情報記憶部114に登録されていたアドレ
ス及び命令add a,b,cを読み取り、そのアドレ
スに4を減算したアドレスとその命令add a,b,
cを解読命令用カウンタ109a及び解読命令バッファ
109bに転送する。
【0089】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図11に示す。図11
は、第1実施例における図6に対応するものである。こ
こで、BR2及びBR3は、それぞれ分岐先情報記憶部
114に登録されていた命令add a,b,c及びフ
ェッチアドレスを意味する。クロックサイクル8のIF
ステージにおいては、命令(IC)がフェッチされた後
に、アドレスBR3が分岐先情報記憶部114からIC
に転送される。さらに、クロックサイクル9のDECス
テージにおいては、命令BR2及びフェッチアドレスB
R3が分岐先情報記憶部114から読み出され、命令B
R2はDRに転送され、フェッチアドレスBR3は4を
減算してDCに転送される。その結果、図11のパイプ
ラインの流れに示されるように、第1実施例と同様の動
作になる。
【0090】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭命令及びフェッチアドレスがプロセッサ1
07内部の専用バッファである分岐先情報記憶部114
に登録される。そして、ループ処理を繰り返す分岐命令
を解読したプロセッサ107は、フェッチアドレスを計
算したり、低速の外部メモリから分岐先命令をフェッチ
したりする必要はなく、分岐先命令及びフェッチアドレ
スを分岐先情報記憶部114から得ることができる。
【0091】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第7実施例)次に、ループ処理の先頭アドレスと先頭
マイクロ命令とを登録しておくことによってループ処理
を高速化した本発明の第7実施例に係る情報処理装置に
ついて説明する。
【0092】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭アドレスと先頭命令のデコード結果
であるマイクロ命令を登録する。本実施例に係る情報処
理装置の構成は、図1に示された第1実施例の装置と同
一である。但し、本装置における分岐先情報記憶部11
4は、ループ処理の先頭アドレスと先頭マイクロ命令を
記憶する。また、本装置の動作の概要は、図2及び図3
に示された第1実施例の場合のフローチャートの通りで
あるが、分岐先情報登録命令setとループ専用命令l
ccの実行時における詳細な動作だけが第1実施例の場
合と異なるので、異なる点だけを説明する。
【0093】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cのデコード結果を読み取り、分岐先情
報記憶部114に登録する。
【0094】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、命令lcc Lに
よって指定されていたフェッチアドレス、即ちラベルL
をフェッチ用カウンタ108aに転送し、次のクロック
サイクルにおいて解読命令用カウンタ109a及び解読
命令バッファ109bに0を転送することによって無効
化し、さらに次のクロックサイクルにおいて分岐先情報
記憶部114に登録されていたアドレス及び命令add
a,b,cのデコード結果をそれぞれ実行命令用カウ
ンタ110a及び実行制御部110bに転送する。
【0095】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図12に示す。図12
は、第1実施例における図6に対応するものである。こ
こで、BR1及びBR4は、それぞれ分岐先情報記憶部
114に登録されていたアドレス及びマイクロ命令を意
味する。クロックサイクル8のIFステージにおいて
は、命令(IC)がフェッチされた後に、命令DRの一
部がICに転送される。クロックサイクル9のDECス
テージにおいては、DR及びDCに0が転送される。さ
らに、クロックサイクル10のEXステージにおいて
は、命令BR4及びアドレスBR1がそれぞれ分岐先情
報記憶部114からER及びECに転送される。その結
果、図12のパイプラインの流れに示されるように、第
1実施例と同様の動作になる。
【0096】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭マイクロ命令及び分岐先アドレスがプロセ
ッサ107内部の専用バッファである分岐先情報記憶部
114に登録される。そして、ループ処理を繰り返す分
岐命令を解読したプロセッサ107は、分岐先アドレス
やフェッチアドレスを計算したり、低速の外部メモリか
ら分岐先命令をフェッチして解読したりする必要はな
く、分岐先マイクロ命令、分岐先アドレス及びフェッチ
アドレスを分岐先情報記憶部114及びループ専用分岐
命令lcc Lから得ることができる。
【0097】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第8実施例)次に、ループ処理の先頭アドレスと先頭
マイクロ命令とを登録しておくことによってループ処理
を高速化した本発明の第8実施例に係る情報処理装置に
ついて説明する。
【0098】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭アドレスと先頭命令のデコード結果
であるマイクロ命令を登録する。本実施例に係る情報処
理装置の構成は、図1に示された第1実施例の装置と同
一である。但し、本装置における分岐先情報記憶部11
4は、ループ処理の先頭アドレスと先頭マイクロ命令を
記憶する。また、本装置の動作の概要は、図2及び図3
に示された第1実施例の場合のフローチャートの通りで
あるが、分岐先情報登録命令setとループ専用命令l
ccの実行時における詳細な動作だけが第1実施例の場
合と異なるので、異なる点だけを説明する。
【0099】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cのデコード結果を読み取り、分岐先情
報記憶部114に登録する。
【0100】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたアドレスに4を加算してフェッ
チ用カウンタ108aに転送し、次のクロックサイクル
において解読命令用カウンタ109a及び解読命令バッ
ファ109bに0を転送することによって無効化し、さ
らに次のクロックサイクルにおいて分岐先情報記憶部1
14に登録されていたアドレス及び命令adda,b,
cのデコード結果をそれぞれ実行命令用カウンタ110
a及び実行制御部110bに転送する。
【0101】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図13に示す。図13
は、第1実施例における図6に対応するものである。こ
こで、BR1及びBR4は、それぞれ分岐先情報記憶部
114に登録されていたアドレス及びマイクロ命令を意
味する。クロックサイクル8のIFステージにおいて
は、命令(IC)がフェッチされた後に、分岐先情報記
憶部114から読み出されたアドレスBR1に4が加算
されてICに転送される。クロックサイクル9のDEC
ステージにおいては、DR及びDCに0が転送される。
さらに、クロックサイクル10のEXステージにおいて
は、命令BR4及びアドレスBR1がそれぞれ分岐先情
報記憶部114からER及びECに転送される。その結
果、図13のパイプラインの流れに示されるように、第
1実施例と同様の動作になる。
【0102】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭マイクロ命令及び分岐先アドレスがプロセ
ッサ107内部の専用バッファである分岐先情報記憶部
114に登録される。そして、ループ処理を繰り返す分
岐命令を解読したプロセッサ107は、分岐先アドレス
を計算したり、低速の外部メモリから分岐先命令をフェ
ッチして解読したりする必要はなく、分岐先マイクロ命
令及び分岐先アドレスを分岐先情報記憶部114から得
ることができる。
【0103】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第9実施例)次に、ループ処理の先頭アドレスと先頭
マイクロ命令とフェッチアドレスとを登録しておくこと
によってループ処理を高速化した本発明の第9実施例に
係る情報処理装置について説明する。
【0104】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭アドレスと先頭マイクロ命令とフェ
ッチアドレスを登録する。本実施例に係る情報処理装置
の構成は、図1に示された第1実施例の装置と同一であ
る。但し、本装置における分岐先情報記憶部114は、
ループ処理の先頭アドレスと先頭マイクロ命令とフェッ
チアドレスを記憶する。また、本装置の動作の概要は、
図2及び図3に示された第1実施例の場合のフローチャ
ートの通りであるが、分岐先情報登録命令setとルー
プ専用命令lccの実行時における詳細な動作だけが第
1実施例の場合と異なるので、異なる点だけを説明す
る。
【0105】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cのデコード結果を読み取り、それらの
情報とそのアドレスに4を加算したフェッチアドレスと
を分岐先情報記憶部114に登録する。
【0106】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたフェッチアドレスをフェッチ用
カウンタ108aに転送し、次のクロックサイクルにお
いて解読命令用カウンタ109a及び解読命令バッファ
109bに0を転送することによって無効化し、さらに
次のクロックサイクルにおいて分岐先情報記憶部114
に登録されていたアドレス及び命令add a,b,c
のデコード結果をそれぞれ実行命令用カウンタ110a
及び実行制御部110bに転送する。
【0107】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図14に示す。図14
は、第1実施例における図6に対応するものである。こ
こで、BR1、BR3及びBR4は、それぞれ分岐先情
報記憶部114に登録されていたアドレス、フェッチア
ドレス及びマイクロ命令を意味する。クロックサイクル
8のIFステージにおいては、命令(IC)がフェッチ
された後に、アドレスBR3が分岐先情報記憶部114
からICに転送される。クロックサイクル9のDECス
テージにおいては、DR及びDCに0が転送される。さ
らに、クロックサイクル10のEXステージにおいて
は、命令BR4及びアドレスBR1がそれぞれ分岐先情
報記憶部114からER及びECに転送される。その結
果、図14のパイプラインの流れに示されるように、第
1実施例と同様の動作になる。
【0108】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭マイクロ命令、分岐先アドレス及びフェッ
チアドレスがプロセッサ107内部の専用バッファであ
る分岐先情報記憶部114に登録される。そして、ルー
プ処理を繰り返す分岐命令を解読したプロセッサ107
は、分岐先アドレスやフェッチアドレスを計算したり、
低速の外部メモリから分岐先命令をフェッチして解読し
たりする必要はなく、分岐先マイクロ命令、分岐先アド
レス及びフェッチアドレスを分岐先情報記憶部114か
ら得ることができる。
【0109】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第10実施例)次に、ループ処理の先頭マイクロ命令
とフェッチアドレスとを登録しておき、ループ専用分岐
命令で指定された分岐先アドレスを用いることによって
ループ処理を高速化した本発明の第10実施例に係る情
報処理装置について説明する。
【0110】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭マイクロ命令とフェッチアドレスを
登録する。本実施例に係る情報処理装置の構成は、図1
に示された第1実施例の装置と同一である。但し、本装
置における分岐先情報記憶部114は、ループ処理の先
頭マイクロ命令とフェッチアドレスを記憶する。また、
本装置の動作の概要は、図2及び図3に示された第1実
施例の場合のフローチャートの通りであるが、分岐先情
報登録命令setとループ専用命令lccの実行時にお
ける詳細な動作だけが第1実施例の場合と異なるので、
異なる点だけを説明する。
【0111】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cのデコード結果を読み取り、そのアド
レスに4を加算したフェッチアドレスとその命令add
a,b,cのデコード結果を分岐先情報記憶部114
に登録する。
【0112】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたフェッチアドレスをフェッチ用
カウンタ108aに転送し、次のクロックサイクルにお
いて解読命令用カウンタ109a及び解読命令バッファ
109bに0を転送することによって無効化し、さらに
次のクロックサイクルにおいて命令lccによって指定
されていたアドレス、即ちラベルLを実行制御部110
bから実行命令用カウンタ110aに転送した後に分岐
先情報記憶部114に登録されていた命令add a,
b,cのデコード結果を実行制御部110bに転送す
る。
【0113】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図15に示す。図15
は、第1実施例における図6に対応するものである。こ
こで、BR3及びBR4は、それぞれ分岐先情報記憶部
114に登録されていたフェッチアドレス及びマイクロ
命令を意味する。クロックサイクル8のIFステージに
おいては、命令(IC)がフェッチされた後に、アドレ
スBR3が分岐先情報記憶部114からICに転送され
る。クロックサイクル9のDECステージにおいては、
DR及びDCに0が転送される。さらに、クロックサイ
クル10のEXステージにおいては、命令ERの一部分
がECに転送されてから命令BR4が分岐先情報記憶部
114からERに転送される。その結果、図15のパイ
プラインの流れに示されるように、第1実施例と同様の
動作になる。
【0114】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭マイクロ命令及びフェッチアドレスがプロ
セッサ107内部の専用バッファである分岐先情報記憶
部114に登録される。そして、ループ処理を繰り返す
分岐命令を解読したプロセッサ107は、分岐先アドレ
スやフェッチアドレスを計算したり、低速の外部メモリ
から分岐先命令をフェッチして解読したりする必要はな
く、分岐先マイクロ命令、フェッチアドレス及び分岐先
アドレスを分岐先情報記憶部114及びループ専用分岐
命令lcc Lから得ることができる。
【0115】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。 (第11実施例)次に、ループ処理の先頭マイクロ命令
とフェッチアドレスとを登録しておき、分岐先アドレス
を所定の演算によって求めることによってループ処理を
高速化した本発明の第11実施例に係る情報処理装置に
ついて説明する。
【0116】第1実施例においてはループ処理の先頭ア
ドレスと先頭命令とをプロセッサ107内部の専用バッ
ファである分岐先情報記憶部114に登録したが、本実
施例においては先頭マイクロ命令とフェッチアドレスを
登録する。本実施例に係る情報処理装置の構成は、図1
に示された第1実施例の装置と同一である。但し、本装
置における分岐先情報記憶部114は、ループ処理の先
頭マイクロ命令とフェッチアドレスを記憶する。また、
本装置の動作の概要は、図2及び図3に示された第1実
施例の場合のフローチャートの通りであるが、分岐先情
報登録命令setとループ専用命令lccの実行時にお
ける詳細な動作だけが第1実施例の場合と異なるので、
異なる点だけを説明する。
【0117】分岐先情報登録命令setが解読命令バッ
ファ109bに取り込まれて分岐先情報登録部111が
起動されると、分岐先情報登録部111は、次のクロッ
クサイクルに解読命令用カウンタ109a及び解読命令
バッファ109bに転送されてきたアドレス及び命令a
dd a,b,cのデコード結果を読み取り、そのアド
レスに4を加算したフェッチアドレスとその命令add
a,b,cのデコード結果を分岐先情報記憶部114
に登録する。
【0118】一方、ループ専用分岐命令lccが解読命
令バッファ109bに取り込まれて分岐実行部113が
起動されると、分岐実行部113は、分岐先情報記憶部
114に登録されていたフェッチアドレスをフェッチ用
カウンタ108aに転送し、次のクロックサイクルにお
いて解読命令用カウンタ109a及び解読命令バッファ
109bに0を転送することによって無効化し、さらに
次のクロックサイクルにおいて、分岐先情報記憶部11
4に登録されていたアドレス及び命令adda,b,c
のデコード結果を読み取り、そのアドレスに4を減算し
たアドレスとそのデコード結果を実行命令用カウンタ1
10a及び実行制御部110bに転送する。
【0119】ループ専用分岐命令lccの実行時におけ
るパイプラインの動きと流れを図16に示す。図16
は、第1実施例における図6に対応するものである。こ
こで、BR3及びBR4は、それぞれ分岐先情報記憶部
114に登録されていたフェッチアドレス及びマイクロ
命令を意味する。クロックサイクル8のIFステージに
おいては、命令(IC)がフェッチされた後に、アドレ
スBR3が分岐先情報記憶部114からICに転送され
る。クロックサイクル9のDECステージにおいては、
DR及びDCに0が転送される。さらに、クロックサイ
クル10のEXステージにおいては、命令BR4及びフ
ェッチアドレスBR3が分岐先情報記憶部114から読
み出され、命令BR4はERに転送され、フェッチアド
レスBR3は4を減算してECに転送される。その結
果、図16のパイプラインの流れに示されるように、第
1実施例と同様の動作になる。
【0120】以上の説明から明らかなように、本装置に
よれば、プログラムを翻訳する際にループ高速化命令が
生成され、1回目のループ処理が実行される際に、ルー
プ処理の先頭マイクロ命令及びフェッチアドレスがプロ
セッサ107内部の専用バッファである分岐先情報記憶
部114に登録される。そして、ループ処理を繰り返す
分岐命令を解読したプロセッサ107は、フェッチアド
レスを計算したり、低速の外部メモリから分岐先命令を
フェッチして解読したりする必要はなく、分岐先マイク
ロ命令及びフェッチアドレスを分岐先情報記憶部114
から得ることができる。
【0121】その結果、本装置によれば、従来の装置に
よって生じていた2クロック分の分岐ハザードが解消さ
れる。これによって、ループ処理が高速化される。以
上、本発明に係る情報処理装置について、実施例に基づ
いて説明したが、本発明はこれら実施例に限られないこ
とは勿論である。即ち、 (1)上記実施例における翻訳装置102は、1種類の
ループ高速化命令set,clr,lccを出力した
が、これに限定されるものではない。例えば、ループの
位置や種類に応じた2種類のループ高速化命令set
1,set2,clr1,clr2,lcc1,lcc
2を出力し、その種類を分岐先情報記憶部114への分
岐先情報の格納場所に対応させてもよい。これによっ
て、分岐先情報記憶部114へのアクセス時間を短縮す
ることができる。 (2)上記実施例における分岐先情報記憶部114は、
LIFO形式のラッチからなるが、この形式に限定され
るものではない。例えば、リング形式のラッチであって
もよい。これによって、柔軟で高速な分岐先情報の入出
力が可能になる。
【0122】また、分岐先情報記憶部114は、最大2
組の分岐先情報を記憶するが、この記憶容量に限定され
るものではない。例えば、1組の分岐先情報を記憶する
ものであってもよい。この場合には、起動された分岐先
情報登録部111が常に分岐先情報を分岐先情報記憶部
114に上書きして登録することにより、分岐先情報消
去部112を設ける必要がなくなる。
【0123】さらに、分岐先情報記憶部114が命令列
を記憶する場合には、記憶する命令の個数を一定とする
のではなく、記憶する命令の合計サイズ数を一定とする
ものであってもよい。これによって、可変長な命令に対
しても、分岐先情報記憶部114の記憶容量を有効に活
用できる。 (3)上記実施例におけるループ検出部103は、包含
関係にある複数のループ処理が存在する場合には、それ
らのループ処理の中で最も内側から2個を超えないルー
プ処理を検出しているが、このような条件に限定される
ものではない。最も頻繁に実行されるループ処理を検出
するものであってもよい。 (4)上記実施例における命令フェッチ部108は、1
個の命令を保持するものであるが、例えば、複数個の命
令を保持するFIFO(First In First Out)形式のバ
ッファであってもよい。 (5)上記実施例におけるプロセッサ107は、ループ
高速化命令set,clrを逐一に実行しているが、こ
のような実行形態に限られない。これらの命令と前後の
命令とを並列に実行するものであってもよい。これらの
命令set,clrは、分岐先情報記憶部114にアク
セスするだけであるので、他の命令に依存することなく
独立して実行することができるからである。
【0124】また、上記実施例においては、分岐先情報
登録部111、分岐先情報消去部112及び分岐実行部
113を起動する命令は、それぞれset,clr及び
lccという単独の命令であったが、他の命令がこれら
を起動する機能を有していてもよい。これによって、こ
れらのループ高速化命令と他の命令との並列実行が可能
となる。 (6)第1及び第8実施例において、分岐実行部113
は、分岐先情報記憶部114に登録されていたアドレス
を読み出して4を加算する際に、分岐実行部113が有
する図1には示されていない専用のインクリメンタを使
用するものであってもよい。
【0125】また、第3、第5、第7及び第10実施例
において、分岐実行部113は、ラベルLに該当するア
ドレスを算出する際に、分岐実行部113が有する図1
には示されていない専用の演算器を使用するものであっ
てもよい。さらに、第6及び第11実施例において、分
岐実行部113は、分岐先情報記憶部114に登録され
ていたアドレスを読み出して4を減算する際に、分岐実
行部113が有する図1には示されていない専用のデク
リメンタを使用するものであってもよい。
【0126】分岐実行部113がこれら専用のインクリ
メンタ、演算器及びデクリメンタを有することによっ
て、プロセッサの動作の高速化を図ることができる。
【0127】
【発明の効果】以上の説明から明らかなように、本発明
に係るプロセッサ及び翻訳装置によれば、プログラムを
翻訳する際にループ高速化命令が生成され、1回目のル
ープ処理が実行される際に、ループ処理の先頭命令や先
頭アドレス等がプロセッサ内部の専用バッファに登録さ
れる。そして、ループ処理を繰り返す分岐命令を解読し
たプロセッサは、既に登録されたプロセッサ内部の専用
バッファから分岐先命令や分岐先アドレス等を得ること
ができる。
【0128】従って、ループ処理を繰り返す度に、パイ
プラインを無効化したり、分岐先アドレスを計算した
り、低速の外部メモリから分岐先命令をフェッチしたり
する必要がなく、高速にループ処理を繰り返すことがで
きるという効果がある。また、独自のループ高速化命令
とその実行部を有するので、分岐命令との依存関係の影
響を受けることなく分岐先命令を専用バッファに登録し
ておくことができる。さらに、ループ処理専用命令によ
って1回のループ処理を終える毎にループ処理を繰り返
すかどうかが判断されるので、ループ処理の回数が予め
判明している必要はなく、ループ処理を繰り返すと判断
された場合にのみ、専用バッファに登録された命令やア
ドレスが実行に用いられる。
【0129】従って、ループ処理の内容や回数の属性に
依存することなく、ループ処理の高速化が図られるとい
う効果がある。
【図面の簡単な説明】
【図1】本発明の第1〜第11実施例に係る情報処理装
置の構成を示すブロック図である。
【図2】同実施例に係る翻訳装置102の動作手順を示
すフローチャートである。
【図3】同実施例に係るプロセッサ107の動作手順を
示すフローチャートである。
【図4】同実施例に係る実行命令列106のリストであ
る。
【図5】図4に示された実行命令列が実行された場合に
おける、第1実施例に係るプロセッサ107の命令パイ
プライン108〜110の流れを示す図である。
【図6】図5に示されたクロックサイクル8〜10にお
ける命令パイプラインの動きを記号で表現した図であ
る。
【図7】本発明の第2実施例に係る情報処理装置におい
て、ループ専用分岐命令lccが実行された場合におけ
るパイプラインの動きと流れを示す図である。
【図8】本発明の第3実施例に係る情報処理装置におい
て、ループ専用分岐命令lccが実行された場合におけ
るパイプラインの動きと流れを示す図である。
【図9】本発明の第4実施例に係る情報処理装置におい
て、ループ専用分岐命令lccが実行された場合におけ
るパイプラインの動きと流れを示す図である。
【図10】本発明の第5実施例に係る情報処理装置にお
いて、ループ専用分岐命令lccが実行された場合にお
けるパイプラインの動きと流れを示す図である。
【図11】本発明の第6実施例に係る情報処理装置にお
いて、ループ専用分岐命令lccが実行された場合にお
けるパイプラインの動きと流れを示す図である。
【図12】本発明の第7実施例に係る情報処理装置にお
いて、ループ専用分岐命令lccが実行された場合にお
けるパイプラインの動きと流れを示す図である。
【図13】本発明の第8実施例に係る情報処理装置にお
いて、ループ専用分岐命令lccが実行された場合にお
けるパイプラインの動きと流れを示す図である。
【図14】本発明の第9実施例に係る情報処理装置にお
いて、ループ専用分岐命令lccが実行された場合にお
けるパイプラインの動きと流れを示す図である。
【図15】本発明の第10実施例に係る情報処理装置に
おいて、ループ専用分岐命令lccが実行された場合に
おけるパイプラインの動きと流れを示す図である。
【図16】本発明の第11実施例に係る情報処理装置に
おいて、ループ専用分岐命令lccが実行された場合に
おけるパイプラインの動きと流れを示す図である。
【図17】従来の翻訳装置により、C言語プログラムを
翻訳して得られる実行命令列のリストである。
【図18】翻訳の対象となるC言語プログラムのリスト
である。
【図19】従来のプロセッサにより、図17に示された
命令列を実行した場合のパイプラインの流れを示す図で
ある。
【符号の説明】
102 翻訳装置 103 ループ検出部 104 ループ情報記憶部 105 ループ高速化適用部 107 プロセッサ 108 命令フェッチ部 109 命令解読部 110 実行部 111 分岐先情報登録部 112 分岐先情報消去部 113 分岐実行部 114 分岐先情報記憶部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 宮地 信哉 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (20)

    (57)【特許請求の範囲】
  1. 【請求項1】 パイプライン処理によって機械語命令列
    を実行するプロセッサであって、 分岐先情報記憶手段と、 前記機械語命令列の命令を解読する命令解読手段と、 前記命令解読手段によって前記命令が分岐先情報登録命
    令であると解読された場合は、前記分岐先情報登録命令
    の前記機械語命令列における配置位置によって特定され
    る命令に関する所定の分岐先情報を前記分岐先情報記憶
    手段に登録する登録手段と、 前記命令解読手段によって前記命令がループ専用分岐命
    令であると解読され、かつ分岐する場合は、前記分岐先
    情報記憶手段に登録された前記分岐先情報を読み出して
    その情報に基づいて分岐する分岐実行手段とを備えるこ
    とを特徴とするプロセッサ。
  2. 【請求項2】 前記登録手段は、前記命令解読手段によ
    って前記命令が分岐先情報登録命令であると解読された
    場合は、前記命令に後続する命令に関する前記分岐先情
    報を前記分岐先情報記憶手段に登録することを特徴とす
    請求項1記載のプロセッサ。
  3. 【請求項3】 前記分岐実行手段は、前記命令解読手段
    によって前記命令がループ専用分岐命令であると解読さ
    れた場合は、ループ処理を繰り返すべきかどうかを判断
    し、ループ処理を繰り返すと判断したときは、前記分岐
    先情報記憶手段に登録された前記分岐先情報を読み出し
    てその情報に基づいて分岐することを特徴とする請求項
    1または2記載のプロセッサ。
  4. 【請求項4】 前記プロセッサはさらに、 前記命令解読手段によって前記命令が分岐先情報消去命
    令であると解読された場合は、前記分岐先情報記憶手段
    に登録された前記分岐先情報を消去する手段を備えるこ
    とを特徴とする請求項記載のプロセッサ。
  5. 【請求項5】 前記登録手段は、前記命令解読手段によ
    って前記命令が分岐先情報登録命令であると解読された
    場合は、前記命令に後続する命令が置かれているアドレ
    スを前記分岐先情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記アド
    レスを読み出し、そのアドレスに分岐することを特徴と
    する請求項又は記載のプロセッサ。
  6. 【請求項6】 前記登録手段は、前記命令解読手段によ
    って前記命令が分岐先情報登録命令であると解読された
    場合は、前記命令に後続する命令が置かれているアドレ
    スと前記命令に後続する所定数の命令列とを前記分岐先
    情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記アド
    レスと命令列とを読み出し、そのアドレスに分岐すると
    共にその命令列を実行し、前記ループ専用分岐命令によ
    って指定されているアドレスから始まる命令列をフェッ
    チすることを特徴とする請求項又は記載のプロセッ
    サ。
  7. 【請求項7】 前記登録手段は、前記命令解読手段によ
    って前記命令が分岐先情報登録命令であると解読された
    場合は、前記命令に後続する命令が置かれているアドレ
    スと前記命令に後続する所定数の命令列とを前記分岐先
    情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記アド
    レスと命令列とを読み出し、そのアドレスに分岐すると
    共にその命令列を実行し、そのアドレスに所定の演算を
    行うことによって得られるアドレスから始まる命令列を
    フェッチすることを特徴とする請求項又は記載のプ
    ロセッサ。
  8. 【請求項8】 前記登録手段は、前記命令解読手段によ
    って前記命令が分岐先情報登録命令であると解読された
    場合は、前記命令に後続する命令が置かれている第1の
    アドレスと前記命令に後続する所定数の命令列とその命
    令列の次に実行すべき命令が置かれている第2のアドレ
    スとを前記分岐先情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記第1
    のアドレスと命令列と第2のアドレスとを読み出し、第
    1のアドレスに分岐すると共にその命令列を実行し、第
    2のアドレスから始まる命令列をフェッチすることを特
    徴とする請求項又は記載のプロセッサ。
  9. 【請求項9】 前記登録手段は、前記命令解読手段によ
    って前記命令が分岐先情報登録命令であると解読された
    場合は、前記命令に後続する所定数の命令列とその命令
    列の次に実行すべき命令が置かれているアドレスとを前
    記分岐先情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記命令
    列とアドレスとを読み出し、前記ループ専用分岐命令に
    よって指定されているアドレスに分岐すると共に前記命
    令列を実行し、前記分岐先情報記憶手段から読み出した
    アドレスから始まる命令列をフェッチすることを特徴と
    する請求項又は記載のプロセッサ。
  10. 【請求項10】 前記登録手段は、前記命令解読手段に
    よって前記命令が分岐先情報登録命令であると解読され
    た場合は、前記命令に後続する所定数の命令列とその命
    令列の次に実行すべき命令が置かれているアドレスとを
    前記分岐先情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記命令
    列とアドレスとを読み出し、そのアドレスに所定の演算
    を行うことによって得られるアドレスに分岐すると共に
    前記命令列を実行し、前記分岐先情報記憶手段から読み
    出したアドレスから始まる命令列をフェッチすることを
    特徴とする請求項又は記載のプロセッサ。
  11. 【請求項11】 前記登録手段は、前記命令解読手段に
    よって前記命令が分岐先情報登録命令であると解読され
    た場合は、前記命令に後続する命令が置かれているアド
    レスと前記命令に後続する所定数の命令列を解読した結
    果であるマイクロ命令列とを前記分岐先情報記憶手段に
    登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記アド
    レスとマイクロ命令列とを読み出し、そのアドレスに分
    岐すると共にそのマイクロ命令列を実行し、前記ループ
    専用分岐命令によって指定されているアドレスから始ま
    る命令列をフェッチすることを特徴とする請求項又は
    記載のプロセッサ。
  12. 【請求項12】 前記登録手段は、前記命令解読手段に
    よって前記命令が分岐先情報登録命令であると解読され
    た場合は、前記命令に後続する命令が置かれているアド
    レスと前記命令に後続する所定数の命令列を解読した結
    果であるマイクロ命令列とを前記分岐先情報記憶手段に
    登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記アド
    レスとマイクロ命令列とを読み出し、そのアドレスに分
    岐すると共にそのマイクロ命令列を実行し、そのアドレ
    スに所定の演算を行うことによって得られるアドレスか
    ら始まる命令列をフェッチすることを特徴とする請求項
    又は記載のプロセッサ。
  13. 【請求項13】 前記登録手段は、前記命令解読手段に
    よって前記命令が分岐先情報登録命令であると解読され
    た場合は、前記命令に後続する命令が置かれている第1
    のアドレスと前記命令に後続する所定数の命令列を解読
    した結果であるマイクロ命令列とその命令列の次に実行
    すべき命令が置かれている第2のアドレスとを前記分岐
    先情報記憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記第1
    のアドレスとマイクロ命令列と第2のアドレスとを読み
    出し、第1のアドレスに分岐すると共にそのマイクロ命
    令列を実行し、第2のアドレスから始まる命令列をフェ
    ッチすることを特徴とする請求項又は記載のプロセ
    ッサ。
  14. 【請求項14】 前記登録手段は、前記命令解読手段に
    よって前記命令が分岐先情報登録命令であると解読され
    た場合は、前記命令に後続する所定数の命令列を解読し
    た結果であるマイクロ命令列とその命令列の次に実行す
    べき命令が置かれているアドレスとを前記分岐先情報記
    憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記マイ
    クロ命令列とアドレスとを読み出し、前記ループ専用分
    岐命令によって指定されているアドレスに分岐すると共
    に前記マイクロ命令列を実行し、前記分岐先情報記憶手
    段から読み出したアドレスから始まる命令列をフェッチ
    することを特徴とする請求項又は記載のプロセッ
    サ。
  15. 【請求項15】 前記登録手段は、前記命令解読手段に
    よって前記命令が分岐先情報登録命令であると解読され
    た場合は、前記命令に後続する所定数の命令列を解読し
    た結果であるマイクロ命令列とその命令列の次に実行す
    べき命令が置かれているアドレスとを前記分岐先情報記
    憶手段に登録し、 前記分岐実行手段は、ループ処理を繰り返すと判断した
    ときは、前記分岐先情報記憶手段に登録された前記マイ
    クロ命令列とアドレスとを読み出し、そのアドレスに所
    定の演算を行うことによって得られるアドレスに分岐す
    ると共に前記マイクロ命令列を実行し、前記分岐先情報
    記憶手段から読み出したアドレスから始まる命令列をフ
    ェッチすることを特徴とする請求項又は記載のプロ
    セッサ。
  16. 【請求項16】 プログラムを翻訳して請求項記載の
    プロセッサを対象とする機械語命令列を生成する翻訳装
    置であって、 ループ情報記憶手段と、 前記プログラムに存在する所定のループ処理を検出し、
    そのループ処理を特定するための情報を前記ループ情報
    記憶手段に格納するループ検出手段と、 前記ループ情報記憶手段に格納された情報に基づいて、
    ループ処理の入口の直前に前記分岐先情報登録命令を生
    成し、ループ処理の入口に分岐する位置に前記ループ専
    用分岐命令を生成するループ高速化適用手段とを備える
    ことを特徴とする翻訳装置。
  17. 【請求項17】 前記ループ高速化適用手段はさらに、 前記ループ情報記憶手段に格納された情報に基づいて、
    ループ処理の出口の直後に前記分岐先情報消去命令を生
    成することを特徴とする請求項16記載の翻訳装置。
  18. 【請求項18】 パイプライン処理によって機械語命令
    列を実行するプロセッサであって、 分岐先情報記憶手段と、 前記機械語命令列の命令を解読する命令解読手段と、 前記命令解読手段によって前記命令が分岐先情報登録命
    令であると解読された場合は、少なくともこの命令に
    って特定される所定数の命令列を含む分岐先情報を前記
    分岐先情報記憶手段に登録する登録手段と、 前記命令解読手段によって前記命令がループ専用分岐命
    令であると解読された場合は、前記分岐先情報記憶手段
    に登録された前記分岐先情報を読み出してその情報に基
    づいて分岐する分岐実行手段とを備えることを特徴とす
    るプロセッサ。
  19. 【請求項19】 前記分岐実行手段は、前記命令解読手
    段によって前記命令がループ専用分岐命令であると解読
    された場合は、ループ処理を繰り返すべきかどうかを判
    断し、ループ処理を繰り返すと判断したときは、前記分
    岐先情報記憶手段に登録された前記分岐先情報を読み出
    してその情報に基づいて分岐することを特徴とする請求
    項18記載のプロセッサ。
  20. 【請求項20】 前記プロセッサはさらに、 前記命令解読手段によって前記命令が分岐先情報消去命
    令であると解読された場合は、前記分岐先情報記憶手段
    に登録された前記分岐先情報を消去する手段を備えるこ
    とを特徴とする請求項19記載のプロセッサ。
JP7114520A 1995-05-12 1995-05-12 プロセッサ及び翻訳装置 Expired - Lifetime JP2987311B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP7114520A JP2987311B2 (ja) 1995-05-12 1995-05-12 プロセッサ及び翻訳装置
US08/588,051 US5850551A (en) 1995-05-12 1996-01-22 Compiler and processor for processing loops at high speed
EP96301228A EP0742518B1 (en) 1995-05-12 1996-02-23 Compiler and processor for processing loops at high speed
DE69614917T DE69614917T2 (de) 1995-05-12 1996-02-23 Kompiler und Prozessor zur schnellen Verarbeitung von Schleifen
TW085102242A TW294802B (ja) 1995-05-12 1996-02-27
CNB96103713XA CN1143213C (zh) 1995-05-12 1996-03-22 高速处理循环的编译器和处理器
KR1019960015748A KR100253655B1 (ko) 1995-05-12 1996-05-13 프로세서및번역장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7114520A JP2987311B2 (ja) 1995-05-12 1995-05-12 プロセッサ及び翻訳装置

Publications (2)

Publication Number Publication Date
JPH08314719A JPH08314719A (ja) 1996-11-29
JP2987311B2 true JP2987311B2 (ja) 1999-12-06

Family

ID=14639814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7114520A Expired - Lifetime JP2987311B2 (ja) 1995-05-12 1995-05-12 プロセッサ及び翻訳装置

Country Status (7)

Country Link
US (1) US5850551A (ja)
EP (1) EP0742518B1 (ja)
JP (1) JP2987311B2 (ja)
KR (1) KR100253655B1 (ja)
CN (1) CN1143213C (ja)
DE (1) DE69614917T2 (ja)
TW (1) TW294802B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7836289B2 (en) 2007-08-24 2010-11-16 Panasonic Corporation Branch predictor for setting predicate flag to skip predicated branch instruction execution in last iteration of loop processing

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214203A (ja) * 1997-01-29 1998-08-11 Nec Corp 情報処理装置
US6189092B1 (en) * 1997-06-30 2001-02-13 Matsushita Electric Industrial Co., Ltd. Pipeline processor capable of reducing branch hazards with small-scale circuit
US6076159A (en) * 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
US20020087851A1 (en) * 2000-12-28 2002-07-04 Matsushita Electric Industrial Co., Ltd. Microprocessor and an instruction converter
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7457936B2 (en) * 2003-11-19 2008-11-25 Intel Corporation Memory access instruction vectorization
WO2011065145A1 (ja) * 2009-11-24 2011-06-03 日本電気株式会社 プロセッサ、プロセッサによるループ回数制御方法
EP2519876A1 (en) 2009-12-28 2012-11-07 Hyperion Core, Inc. Optimisation of loops and data flow sections
US10241793B2 (en) * 2013-03-15 2019-03-26 Analog Devices Global Paralleizing loops in the presence of possible memory aliases

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463422A (en) * 1982-07-12 1984-07-31 Csp, Inc. Method of processing an iterative program loop
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
JP2708405B2 (ja) * 1986-03-03 1998-02-04 株式会社日立製作所 コンパイラにおけるループ展開方法
US4933837A (en) * 1986-12-01 1990-06-12 Advanced Micro Devices, Inc. Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
JP3102027B2 (ja) * 1990-11-20 2000-10-23 日本電気株式会社 ループ制御のネスティング管理機構
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7836289B2 (en) 2007-08-24 2010-11-16 Panasonic Corporation Branch predictor for setting predicate flag to skip predicated branch instruction execution in last iteration of loop processing
US8015391B2 (en) 2007-08-24 2011-09-06 Panasonic Corporation Simultaneous multiple thread processor increasing number of instructions issued for thread detected to be processing loop

Also Published As

Publication number Publication date
KR960042425A (ko) 1996-12-21
DE69614917D1 (de) 2001-10-11
TW294802B (ja) 1997-01-01
EP0742518B1 (en) 2001-09-05
KR100253655B1 (ko) 2000-04-15
EP0742518A3 (en) 1997-05-28
DE69614917T2 (de) 2002-01-17
CN1138175A (zh) 1996-12-18
JPH08314719A (ja) 1996-11-29
US5850551A (en) 1998-12-15
EP0742518A2 (en) 1996-11-13
CN1143213C (zh) 2004-03-24

Similar Documents

Publication Publication Date Title
US7458069B2 (en) System and method for fusing instructions
JP5904993B2 (ja) マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム
US7620802B2 (en) Instruction execution device, debugging method, debugging device, and debugging program
JP2987311B2 (ja) プロセッサ及び翻訳装置
JP2000330790A (ja) コンピュータシステム動作方法、コンピュータシステムにおける命令スケジューリング方法およびコンピュータシステム
JPH06236268A (ja) 命令の長さを判定する装置と方法
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
JPH10124315A (ja) 分岐処理方法およびそのための情報処理装置
JP3130446B2 (ja) プログラム変換装置及びプロセッサ
EP1050811A1 (en) Branching in a computer system
US6871343B1 (en) Central processing apparatus and a compile method
JP2535252B2 (ja) 並列処理装置
EP0482200A1 (en) Interrupt processing system
JPH09152973A (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US7836282B2 (en) Method and apparatus for performing out of order instruction folding and retirement
EP1050805B1 (en) Transfer of guard values in a computer system
JPH0876997A (ja) パイプライン・プロセッサ
JP2856784B2 (ja) 電子計算機
JP2835179B2 (ja) 並列処理計算機
JP2806093B2 (ja) ロード・ストア処理装置
JP3547562B2 (ja) マイクロプロセッサ
JP3739556B2 (ja) 情報処理装置
JPH04268928A (ja) エミュレーション装置及び半導体装置
Tomisawa et al. Design Considerations of the GMICRO/100
JP2545594B2 (ja) オペランドデータ先取り方式

Legal Events

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

Free format text: PAYMENT UNTIL: 20081001

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20091001

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20101001

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20111001

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20121001

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 14

EXPY Cancellation because of completion of term