JP2002024008A - データ処理装置およびプログラム変換装置 - Google Patents

データ処理装置およびプログラム変換装置

Info

Publication number
JP2002024008A
JP2002024008A JP2000202674A JP2000202674A JP2002024008A JP 2002024008 A JP2002024008 A JP 2002024008A JP 2000202674 A JP2000202674 A JP 2000202674A JP 2000202674 A JP2000202674 A JP 2000202674A JP 2002024008 A JP2002024008 A JP 2002024008A
Authority
JP
Japan
Prior art keywords
instruction
subsequent
condition
conditional
program
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
Application number
JP2000202674A
Other languages
English (en)
Other versions
JP3532835B2 (ja
Inventor
Kazuji Kurata
和司 蔵田
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 JP2000202674A priority Critical patent/JP3532835B2/ja
Priority to US09/894,205 priority patent/US7010670B2/en
Publication of JP2002024008A publication Critical patent/JP2002024008A/ja
Application granted granted Critical
Publication of JP3532835B2 publication Critical patent/JP3532835B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

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

Abstract

(57)【要約】 【課題】 条件付き実行命令の実行にあたり、条件指定
フィールドを付加した場合の命令割り付けやメモリ少量
化の弊害を防止し、相反する条件付き命令が連続した場
合でも条件不成立によるパイプラインハザードの発生を
抑制するデータ処理装置を提供する。 【解決手段】 パイプライン処理するデータ処理装置で
あって、実行するための条件が明示されない命令1と、
その直後に配置された同じく実行するための条件が明示
されない命令2と、命令1の直前に配置され命令1と命
令2を実行するための条件が互いに相反することを明示
した指示命令と、指示命令が実行され条件が確定すると
同時に命令1と命令2のどちらか一方を無効化する条件
付き実行制御手段を備える。さらに後方に配置された命
令が無効化されるとき命令先読み手段から無効化すべき
命令をスキップして命令解読手段に命令を転送させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、条件付きで命令を
実行するデータ処理装置に関し、特に、命令の割り付け
に対する自由度の低下および命令コード長の増大に伴う
プログラムメモリ容量の増加などの問題を発生すること
なく、パイプラインによる処理効率の高いデータ処理装
置およびプログラム変換装置を提供する技術に関する。
【0002】
【従来の技術】データ処理は、科学技術計算や制御など
その用途に関わらず、実行時に成立する条件に応じて処
理を選択する場合が多い。図32に場合分け処理のフロ
ーチャートを示す。同図は、プロセッサの状態によって
処理が選択される例であり、頻繁に出現するデータ処理
である。まず、ステップ1001で算術演算を実行し、
次にステップ1002で前ステップ1001による演算
結果がゼロか否かを判定する。その判定結果、ゼロでな
い場合にはステップ1004に移り処理2を実行する
が、ステップ1002による判定結果がゼロの場合には
ステップ1003で処理1を実行した後、ステップ10
05に移る。
【0003】図33は、条件分岐命令によって図32の
処理を実施するアセンブリ言語プログラムの例である。
まず第1行目では減算を行う。同時にプロセッサは演算
結果の性質を表すプロセッサステータスを生成する。例
えば、プロセッサステータスには桁上がりが生じたこと
を示すキャリーフラグ、結果が正か負かを示すネガティ
ブフラグ、結果が表現できるデータの範囲を超えたこと
を示すオーバフローフラグ、結果がゼロかを示すゼロフ
ラグがある。次に第2行目では、ゼロフラグによる条件
分岐命令が書かれており、もしゼロフラグが1なら、第
3行目の命令1を実行し、第4行目で無条件にlabel2に
分岐して第6行目の命令3を実行する。もしゼロフラグ
が0ならlabel1である第5行目に分岐することで第3行
目の命令は実行せずにスキップして命令2、命令3を順
番に実行する。
【0004】上記従来技術のように、条件に応じて分岐
する場合、処理性能を向上させる一般的な手法であるパ
イプライン処理を行っているプロセッサでは分岐による
パイプラインの乱れにより処理効率が低下するという問
題がある。そこで分岐命令を削減するために条件付き実
行命令が用いられることがある。
【0005】図34は、条件付き実行命令によって図3
2の処理フローを実施するアセンブリ言語プログラムで
ある。アセンブラ的なニーモニックで記述している。第
1行目の[SUB R0,R1]は、R0レジスタの値からR1のレジ
スタの値を減算して結果をR1レジスタに格納する。この
とき演算結果がゼロであればゼロフラグは1に、そうで
なければ0になる。第2行目の[MOVIFZF R2,R4]は、ゼ
ロフラグが1であれば、R2レジスタの値をR4レジスタに
格納する。第3行目の[MOVIFNZF R3,R4]は、ゼロフラグ
が0であれば、R3レジスタの値をR4レジスタに格納す
る。第4行目の[ADDR5,R6]はR6レジスタの値にR5レジス
タの値を加算して結果をR6レジスタに格納する。ここで
第2行目と第3行目の命令は条件付き実行命令である。
図35に条件付き実行命令の命令フォーマットを示す。
命令コード41と条件指定フィールド40で条件付き実
行命令が表されている。例えば、条件指定フィールド4
0は、4種類のステータスの真、偽を実行の条件とする
なら3ビットで表されるものとなる。条件付き実行命令
は条件指定フィールド40の条件と一致するときのみ命
令を実行し、不一致するときは実行しない。ここで、常
に無条件で実行されるのか、条件付き実行命令である
か、どの条件を使用するかという情報は、その個々の命
令が解読された時点で判明する。そのため、プロセッサ
は結局実行されない命令であっても解読することとな
る。
【0006】
【発明が解決しようとする課題】上記従来技術における
条件付き実行命令によるデータ処理に関しては以下の問
題があった。
【0007】ある条件に応じて処理を選択する場合、相
反する条件付き実行命令が連続してプログラム中に配置
されることが多く、それらは互いに排他的な関係にある
ことが多い。このようにある条件に応じて後続する処理
のいずれか一方を実行し、他方を実行しない場合分けの
プログラムはマイクロプロセッサ制御などあらゆる場面
で広く見られる処理内容であるが、このとき必ず一方の
条件付き実行命令は不成立となり実行されないものであ
る。また、ある条件が成立するときのみ後続の一連の処
理を実行し、当該条件が成立しないときには後続の一連
の処理をスキップするという条件付き実行命令がプログ
ラム中に配置されている場合、その条件が不成立となれ
ば後続の一連の処理は実行されない。これらの場合、マ
イクロプロセッサ内ではパイプライン・フラッシュが発
生することとなり、データ処理効率の低下を引き起こし
ていた。
【0008】また、条件付き実行する処理に自由度をも
たせるためには、数多くの種類からなる個々の命令を条
件付き実行命令としてコード割付けし定義しておく必要
があり、必然的にコード長を抑えることが難しくなって
しまう。
【0009】本発明は、係る問題点を鑑みてなされたも
のであり、その目的とするところは、条件付きで命令を
実行するデータ処理装置に関して、命令の割り付けに対
する自由度の低下および命令コード長の増大に伴うプロ
グラムメモリ容量の増加の問題を発生することなく、処
理効率の向上を図ることができるデータ処理装置および
プログラム変換装置を提供することにある。
【0010】
【課題を解決するための手段】上記課題を解決するた
め、本発明の第1のデータ処理装置は、命令をシーケン
スに従って順に読み込んで実行するデータ処理装置であ
って、演算命令を読み込むフェッチ部と、読み込んだ前
記演算命令を解読する解読部と、解読した前記演算命令
を実行する実行部と、前記演算命令の実行結果に従っ
て、前記シーケンスにおいて前記演算命令に後続し前記
演算命令に伴う一つまたは複数の後続命令のうちいずれ
か一つの後続命令以外の後続命令を無効化する命令無効
化制御回路を備えたことを特徴とする。
【0011】上記構成により、先行する演算命令の演算
結果に基づいて後続する命令のうち実行すべき1つの命
令以外の命令を無効化することができ、実行しない命令
の解読処理を行う必要がなく、処理効率の向上を図るこ
とができる。また、個々の命令を条件付き実行命令とし
てコード割付けし定義しておく必要がなくなり、命令の
割り付けに対する自由度の低下および命令コード長の増
大に伴うプログラムメモリ容量の増加の問題を発生する
ことがない。
【0012】上記本発明の第1のデータ処理装置におい
て、前記後続命令のうちの一つまたは複数の後続命令が
複数の命令列からなる後続命令群であることが好まし
い。
【0013】上記構成により、後続命令のうちの幾つか
が複数の命令が一群となったモジュールであっても本発
明を適用することが可能となる。
【0014】また、上記課題を解決するため、本発明の
第1のプログラム変換装置は、記述プログラムを読み込
んで機械語プログラムに変換するプログラム変換装置で
あって、入力された記述プログラムの命令列から条件・
判断を伴う命令を検出する命令検出手段と、前記命令検
出手段によって検出された条件・判断命令を、演算命令
と、該演算命令に後続し該演算命令に伴う一つまたは複
数の後続命令との命令列に書き換える命令書き換え手段
を備えたことを特徴とする。
【0015】上記構成により、普及しているプログラム
記述により記述されたプログラムを書き換えて、本発明
のデータ処理装置に適用する機械語プログラムを得るこ
とができる。
【0016】上記本発明の第1のプログラム変換装置に
おいて、前記後続命令のうちの一つまたは複数の後続命
令が複数の命令列からなる後続命令群であることが好ま
しい。
【0017】上記構成により、後続命令のうちの幾つか
が複数の命令が一群となったモジュールとなる場合であ
っても本発明のデータ処理装置に用いる機械語プログラ
ムを得ることができる。
【0018】また、本発明の第2のデータ処理装置は、
命令をシーケンスに従って順に読み込んで実行するデー
タ処理装置であって、命令メモリとフェッチ部と解読部
と命令実行部と命令無効化制御部とを備え、前記命令メ
モリに、第1の条件付き命令から当該第1の条件の記述
を除いた第1の後続命令と、第2の条件付き命令から当
該第2の条件の記述を除いた第2の後続命令と、命令シ
ーケンス上、前記第1の後続命令および第2の後続命令
の前に配置され、前記第1の後続命令と第2の後続命令
とが相反する実行条件を持つことおよび前記第1の条件
と第2の条件から生成された相反実行条件とを明示する
指示命令とを記憶し、前記フェッチ部が、前記命令メモ
リから前記指示命令をフェッチし、前記解読部が、前記
フェッチされた指示命令を解読し、前記命令実行部が、
前記解読した指示命令を実行し、前記命令無効化制御部
が、前記指示命令の実行結果より前記第1の条件と第2
の条件のいずれが成立しているかを検知し、前記第1の
後続命令と第2の後続命令のうち条件が成立していない
一方の命令を無効化することを特徴とする。
【0019】上記構成により、指示命令の実行結果に基
づいて、無効化制御部が後続する2命令の一方のみを実
行し、他方を無効化するという排他制御を実現すること
ができる。
【0020】上記本発明の第2のデータ処理装置におい
て、前記第1の条件付き命令、前記第2の条件付き命
令、前記第1の後続命令、前記第2の後続命令のそれぞ
れが、一つの命令であるかまたは複数の命令列からなる
命令群であることが好ましい。
【0021】上記構成により、第1の条件付き命令、第
2の条件付き命令、第1の後続命令、第2の後続命令
が、一つの命令であったり複数の命令からなる命令群と
なったモジュールであったりなどいずれの組み合わせで
あっても本発明を適用することが可能となる。
【0022】また、本発明の第2のプログラム変換装置
は、記述プログラムを読み込んで機械語プログラムに変
換するプログラム変換装置であって、入力された記述プ
ログラムの命令列からプロセッサの状態を更新する可能
性がある命令を検出する第1の命令検出手段と、前記入
力された命令列からプロセッサの状態に応じて実行する
か否か決定される条件付きの命令を検出する第2の命令
検出手段と、前記第1の命令検出手段により検出された
命令に後続して、前記第2の命令検出手段により検出さ
れた命令である第1の条件付き命令と第2の条件付き命
令の2つの命令が連続しているかを判定する第1の判定
手段と、前記第1の条件付き命令と前記第2の条件付き
命令の実行条件同士が互いに相反するものであるかを判
定する第2の判定手段と、機械語命令コードの中から、
前記第1の命令検出手段により検出された命令と同一の
処理実行を示し、かつ、後続する前記第1の条件付き命
令および前記第2の条件付き命令が互いに相反する条件
で実行されるものであることを示す指示命令を検索する
指示命令検索手段と、前記第1の命令検出手段と前記第
2の命令検出手段によって検出された命令列を、前記第
1の条件付き命令から当該第1の条件記述を除いた第1
の後続命令と、前記第2の条件付き命令から当該第2の
条件記述を除いた第2の後続命令と、前記指示命令とに
書き換える命令書き換え手段とを備えたことを特徴とす
る。
【0023】上記構成により、普及しているプログラム
記述により記述されたプログラムを、指示命令と後続す
る第1の後続命令と第2の後続命令に書き換えることが
でき、本発明のデータ処理装置に適用する機械語プログ
ラムを得ることができる。
【0024】上記本発明の第2のプログラム変換装置に
おいて、前記第1の条件付き命令、前記第2の条件付き
命令、前記第1の後続命令、前記第2の後続命令のそれ
ぞれが、一つの命令であるかまたは複数の命令列からな
る命令群であることが好ましい。
【0025】上記構成により、第1の条件付き命令、第
2の条件付き命令、第1の後続命令、第2の後続命令
が、一つの命令であったり一群となったモジュールとな
る場合であったりなどいずれの組み合わせであっても本
発明のデータ処理装置に用いる機械語プログラムを得る
ことができる。
【0026】次に、本発明の第3のデータ処理装置は、
命令をシーケンスに従って順に読み込んで実行するデー
タ処理装置であって、演算命令を読み込むフェッチ部
と、読み込んだ前記演算命令を解読する解読部と、解読
した前記演算命令を実行する実行部と、前記演算命令の
実行結果に従って、前記シーケンスにおいて前記演算命
令に後続し前記演算命令に伴う後続命令を無効化するか
否か判断し、該判断に従って該後続命令を無効化する命
令無効化制御回路を備えたことを特徴とする。
【0027】上記構成により、先行する演算命令の演算
結果に基づいて後続する命令を無効化するか否かを制御
することができ、実行しない命令の解読処理を行う必要
がなく、処理効率の向上を図ることができる。また、個
々の命令を条件付き実行命令としてコード割付けし定義
しておく必要がなくなり、命令の割り付けに対する自由
度の低下および命令コード長の増大に伴うプログラムメ
モリ容量の増加の問題を発生することがない。
【0028】上記本発明の第3のデータ処理装置におい
て、前記後続命令が複数の命令列からなる後続命令群で
あることが好ましい。
【0029】上記構成により、後続命令が複数の命令が
一群となったモジュールであっても本発明を適用するこ
とが可能となる。
【0030】次に、本発明の第3のプログラム変換装置
は、記述プログラムを読み込んで機械語プログラムに変
換するプログラム変換装置であって、入力された記述プ
ログラムの命令列から条件・判断を伴う命令を検出する
命令検出手段と、前記命令検出手段によって検出された
条件・判断命令を、演算命令と、該演算命令に後続し該
演算命令に伴う後続命令の命令列に書き換えることを特
徴とする。
【0031】上記構成により、普及しているプログラム
記述により記述されたプログラムを書き換えて、本発明
の第3のデータ処理装置に適用する機械語プログラムを
得ることができる。
【0032】上記本発明の第3のプログラム変換装置に
おいて、前記後続命令が複数の命令列からなる後続命令
群であることが好ましい。
【0033】上記構成により、後続命令が複数の命令が
一群となったモジュールとなる場合であっても本発明の
データ処理装置に用いる機械語プログラムを得ることが
できる。
【0034】次に、本発明の第4のデータ処理装置は、
命令をシーケンスに従って読み込んで実行するデータ処
理装置であって、命令メモリとフェッチ部と解読部と命
令実行部と命令無効化制御部とを備え、前記命令メモリ
が、条件付き命令から当該条件の記述を除いた後続命令
と、命令シーケンス上、前記後続命令の前に配置され、
前記後続命令が実行条件を持つことおよび前記実行条件
を明示する後続実行条件指示命令とを記憶し、前記フェ
ッチ部が、前記命令メモリから前記後続実行条件指示命
令をフェッチし、前記解読部が、前記フェッチされた後
続実行条件指示命令を解読し、前記命令実行部が、前記
解読した後続実行条件指示命令を実行し、前記命令無効
化制御部が、前記後続実行条件指示命令の実行結果より
前記実行条件が成立しているかを検知し、前記実行条件
が成立していない場合、前記後続命令を無効化すること
を特徴とする。
【0035】上記構成により、指示命令の実行結果に基
づいて、無効化制御部が後続命令を実行するか無効化す
るという排他制御を実現することができる。
【0036】上記本発明の第4のデータ処理装置におい
て、前記条件付き命令、前記後続命令それぞれが、複数
の命令列からなる命令群であることが好ましい。
【0037】上記構成により、後続命令が複数の命令か
らなる命令群となったモジュールであっても本発明を適
用することが可能となる。
【0038】次に、本発明の第4のプログラム変換装置
は、記述プログラムを読み込んで機械語プログラムに変
換するプログラム変換装置であって、入力された記述プ
ログラムの命令列からプロセッサの状態を更新する可能
性がある命令を検出する第1の命令検出手段と、前記入
力された命令列からプロセッサの状態に応じて実行する
か否か決定される条件付きの命令を検出する第2の命令
検出手段と、前記第1の命令検出手段により検出された
命令に後続して、前記第2の命令検出手段により検出さ
れた命令があるかを判定する第1の判定手段と、機械語
命令コードの中から、前記第1の命令検出手段により検
出された命令と同一の処理実行を示し、かつ、後続の条
件付き命令の実行条件を示す後続実行条件指示命令を検
索する指示命令検索手段と、前記第1の命令検出手段と
第2の命令検出手段によって検出された命令列を、前記
条件付き命令から当該条件記述を除いた条件隠し命令と
前記後続実行条件指示命令に書き換える命令書き換え手
段とを備えたことを特徴とする。
【0039】上記構成により、普及しているプログラム
記述により記述されたプログラムを、指示命令と、当該
指示命令の演算結果によりその実行、無効化が制御され
る後続命令に書き換えることができ、本発明のデータ処
理装置に適用する機械語プログラムを得ることができ
る。
【0040】上記本発明の第4のプログラム変換装置に
おいて、前記条件付き命令、前記後続命令のそれぞれ
が、複数の命令列からなる命令群であることが好まし
い。
【0041】上記構成により、後続命令が一群となった
モジュールとなる場合であっても本発明のデータ処理装
置に用いる機械語プログラムを得ることができる。
【0042】なお、上記本発明のデータ処理装置におい
て、前記命令読み込み制御部が、前記フェッチ部に対し
て無効化した前記後続命令の読み込みをスキップさせる
ことが好ましい。
【0043】上記構成により、命令無効化制御部の制御
に基づいて、無効化された命令をスキップさせることが
でき、当該無効化命令が解読部に送られて解読処理が実
行されないのでデータ処理装置の処理効率の低下を防止
することができる。
【0044】
【発明の実施の形態】以下、本発明の実施形態につい
て、図面を参照しながら説明する。
【0045】(実施形態1)実施形態1のデータ処理装
置は、本発明の第1および第2のデータ処理装置の実施
形態を示したものである。本実施形態1のデータ処理装
置は、命令無効化制御回路を用いて、演算命令に後続す
る2つの命令のうちいずれか1つの後続命令を無効化す
るものである。
【0046】以下、本発明の実施の形態1について、図
1、図2、図3、図4、図5を用いて説明する。なお、
以下数値を“x'00”、“x'01”などと表すことがある
が、これは16進数による表記である。
【0047】図1はデータ処理装置の概略構成図であ
る。データ処理装置60は、アセンブリ言語プログラム
61を入力し機械語プログラム63に変換するプログラ
ム変換装置62と、機械語プログラム63に基づいて動
作するプロセッサ64とから構成されている。プロセッ
サ64は、命令フェッチステージ(以下、IFステージと
略記する)、解読およびレジスタ読出しステージ(以
下、DECステージと略記する)、演算およびメモリアク
セスおよびレジスタ書き戻しからなる複数の処理を実行
する実行ステージ(以下、EXステージと略記する)の3
つのステージからなる3段パイプライン構造をもつもの
とする。
【0048】図2はプロセッサ64の構成を示すブロッ
ク図である。717は機械語プログラム63が格納され
たROMである。706はROMに格納された命令をフ
ェッチする命令フェッチ回路706である。714はフ
ェッチした命令を格納しておく命令ラッチである。70
5は命令フェッチ回路706により取り込まれる命令を
解読しプロセッサ64の各部を制御する命令解読器70
5である。715はパイプラインの制御を司るパイプラ
イン制御信号である。708は命令の実行と無効化を制
御し、パイプラインの動作を制御する命令無効化制御回
路708である。709は条件付き実行の動作状態を表
す条件付き実行ステータスである。707は命令を無効
化する命令無効化信号である。716は条件付き実行ス
テータスを命令解読動作に応じて更新するシーケンサで
ある。704はオペランドデータまたはオペランドを指
定するためのアドレスを格納するレジスタファイル70
4であり、例えば、8本のレジスタR0からR7で構成され
ているとする。また、レジスタ長は32ビットであるも
のとする。703は算術論理演算を行う演算器である。
712は算術論理演算の結果、反映されるプロセッサ状
態を表すプロセッサステータスワード(PSW)であ
る。702は本発明の指示命令によって先行的にプロセ
ッサステータスの1つを選択し、命令無効化制御回路7
08に転送するためのセレクタ702である。701は
セレクタ702により選択された排他的条件である。7
10、711は演算の対象となるデータをラッチするD
1ラッチおよびD2ラッチである。713は命令の先読
みを制御する命令先読み制御信号713である。
【0049】図3は、本発明の第1実施形態における命
令無効化制御処理と条件付き実行ステータス遷移図であ
る。まず、条件付き実行ステータス709の遷移につい
て図3を用いて説明する。図3(a)は、命令無効化制
御回路708がEXステージの処理を無効化するか実行す
るかを表している(命令無効化信号707)。同図の排
他的条件701とは、本発明の指示命令によって選択さ
れたプロセッサステータスの状態であり、0か1の2値
をとる。同図の条件付き実行ステータス709とは、同
じく本発明の指示命令によって後続の命令の条件付き実
行中の状態を表している。例えば、排他的条件701が
“1”で条件付き実行ステータス709が“x'01”のと
きは命令無効化信号707を生成して、EXステージの処
理を無効化する。ここで、命令無効化信号707は
“1”のときEXステージの処理を無効化し、“0”のと
きEXステージの処理を実行するものとする。
【0050】図3(b)は、条件付き実行ステータス7
09の遷移図であり、シーケンサ716により制御され
る。条件付き実行ステータス709は、指示命令が解読
された時点で“x'00”から“x'11”にセットされ、パイ
プライン処理を進めるクロックに応じて、次のDECステ
ージで後続の命令が解読され次のDECステージに移ると
き“x'10”に更新される。さらに前記の条件付き実行ス
テータス709は、後続の命令を解読するに応じて、
“x'10”から“x'01”に、“x'01”から“x'00”に更新
される。つまり、このシーケンサ716は条件付き実行
ステータス709を初期値“x'00”から前記の指示命令
が解読された後“x'11”にセットし、次命令が解読され
ると“x'1”デクリメントし、最終的に“x'00”に遷移
させる。
【0051】つまり、図3(b)のように条件付き実行
ステータスが“x'11”、“x'10”、“x'01”、“x'00”
と順に遷移して行くことにより、排他的条件が“0”で
ある場合には、条件付き実行ステータスが“x'10”にあ
る第2行目の命令2が無効化されて実行されず、逆に排
他的条件が“0”である場合には、条件付き実行ステー
タスが“x'01”にある第3行目の命令3の実行が無効化
されて実行されないこととなり、排他的条件と条件付き
実行ステータスに応じて命令2か命令3のいずれか一方
が無効化されることとなる。
【0052】以上が本発明の第1および第2のデータ処
理装置の構成例である。
【0053】以下に本発明の第1および第2のデータ処
理装置の動作の例を説明する。一例として図5に示す機
械語プログラム1を実行処理する場合の動作を説明す
る。図4は機械語プログラム1を表しており、ここでは
説明の便宜上、ニーモニック表記している。その機械語
プログラム1の各命令について簡単な説明を付する。
【0054】(機械語プログラム1) 第1行目:SUBIFEZF R0,R1(R0レジスタの値からR1のレ
ジスタの値を減算して結果をR1レジスタに格納する。さ
らに後続の2命令をプロセッサステータスのゼロフラグ
を条件として排他的な条件付き実行命令として指示す
る) 第2行目:MOV R2,R4(R2レジスタの値をR4レジスタに
格納する) 第3行目:MOV R3,R4(R3レジスタの値をR4レジスタに
格納する) 第4行目:ADD R5,R6(R6レジスタの値にR5レジスタの
値を加算して結果をR6レジスタに格納する) 上記の機械語プログラム1において、第1行目の指示命
令SUBIFEZFは、後続する2つの命令の一方のみが実行さ
れるという排他的な条件付き命令となっている。後述す
るようにSUBIFEZFの演算実行結果に基づいてゼロフラグ
の状態が決定され、当該ゼロフラグが示す排他的条件7
01の状態と条件付き実行ステータス709の状態に応
じて、後続する第2行目の命令2と第3行目の命令3の
一方のみが排他的に実行される。
【0055】図5は、プロセッサ64の動作タイミング
を示す図である。図5は、図4の機械語プログラム1を
実行する場合の動作を、パイプラインのIFステージ、DE
Cステージ、EXステージで処理される命令をマシンサイ
クルと呼ばれるタイミング毎に示している。例えば、図
5の命令1は、タイミングt1からt3までを順次パイ
プラインステージを経て処理される。このような命令の
流れを、一般にパイプラインストリームと呼ぶ。また、
図5に示すようにステージの前半(例えばタイミングt
11)と後半(タイミングt12)を表すタイミングに
より命令無効化制御回路708は動作するものとする。
特にDECステージではタイミングの後半で命令無効化制
御回路708により条件付き実行ステータス709を更
新するものとする。またEXステージではタイミングの前
半で命令無効化信号707に応じて、このステージで命
令実行を開始するか、命令を無効化するか決定されるも
のとする。以下、時間が経過する順にタイミング毎にそ
の動作を説明する。なお、レジスタR0とR1には同値であ
る“x'0001”が格納され、R2には“x'0002”、R3には
“x'0003”が格納されていたとする。
【0056】(タイミングt1) IFステージ:命令1[SUBIFEZF R0,R1] タイミングt11:命令1がROM717から読出さ
れ、命令ラッチ714に格納される。
【0057】(タイミングt2) DECステージ:命令1[SUBIFEZF R0,R1] タイミングt21:命令ラッチ714に格納された命令
1が命令解読器705で解読され、R0レジスタから値が
読み出されD1ラッチ710に“x'0001”が格納され
る。R1レジスタから値が読み出されD2ラッチ711に
“x'0001”が格納される。
【0058】タイミングt22:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”から
“x'11”にセットする。排他的条件701の値を表わす
レジスタとしてゼロフラグがセレクタ702により選択
される。
【0059】IFステージ:命令2[MOV R2,R4] タイミングt21:命令2がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0060】(タイミングt3) EXステージ:命令1[SUBIFEZF R0,R1] タイミングt31:命令無効化信号707は初期状態の
まま“0”となっており、EXステージの実行が行われ、
命令1の実行が開始される。D1ラッチ710とD2ラ
ッチ711に格納された値が演算器703で減算され
る。ここではD1ラッチ710とD2ラッチ711には
同値“x'0001”が格納されているので、減算結果として
R1レジスタに“x'0000”が格納される。この結果ゼロフ
ラグには“1”が格納され、排他的条件701が“0”
から“1”となる。
【0061】DECステージ:命令2[MOV R2,R4] タイミングt31:命令ラッチ714に格納された命令
2が命令解読器705で解読され、R2レジスタから値が
読出されD1ラッチ710に“x'0002”が格納される。
【0062】タイミングt32:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'11”から
“x'10”に更新する。
【0063】IFステージ:命令3[MOV R3,R4] タイミングt31:命令3がROM717から読出さ
れ、命令ラッチ714に格納される。
【0064】(タイミングt4) EXステージ:命令2[MOV R2,R4] タイミングt41:命令無効化信号707は“0”であ
るので、命令2の実行が開始される。D1ラッチ710
に格納された値が読み出され演算器703をスルーして
R4レジスタに格納される。つまり、この例では後続命令
のうち命令2が実行された。
【0065】DECステージ:命令3[MOV R3,R4] タイミングt41:命令ラッチ714に格納された命令
3が命令解読器705で解読され、R3レジスタから値が
読出されD1ラッチ710に“x'0003”が格納される。
【0066】タイミングt42:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'10”から
“x'01”に更新する。ここで、命令無効化制御回路70
8は、図3(a)に従って、条件付き実行ステータスが
“x'01”であり、排他的条件が“1”であるので命令無
効化信号707を生成し、命令無効化信号707を
“0”から“1”に更新する。
【0067】IFステージ:命令4[ADD R5,R6] タイミングt41:命令4がROM717から読出さ
れ、命令ラッチ714に格納される。
【0068】(タイミングt5) EXステージ:命令3[MOV R2,R4] タイミングt51:命令無効化信号707が“1”とな
っているEXステージは実行されず、命令3は無効化され
て実行されない。つまり、この例では後続する命令のう
ち、命令2は実行され、命令3は無効化されて実行され
ない。
【0069】DECステージ:命令4[ADD R5,R6] タイミングt51:命令ラッチ714に格納された命令
4が命令解読器705で解読され、R5レジスタから値が
読出されD1ラッチ710に“x'0005”が格納される。
R6レジスタから値が読み出されD2ラッチ711に“x'
0006”が格納される。
【0070】タイミングt52:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'01”から
“x'00”に更新する。ここで、命令無効化制御回路70
8は図3(a)に従って、条件付き実行ステータスが
“x'00”であり、排他的条件が“1”であるので、命令
無効化信号707を“1”から“0”に更新する。
【0071】IFステージ:命令5[NOP] タイミングt51:命令5がROM717から読出さ
れ、命令ラッチ714に格納される。
【0072】(タイミングt6) EXステージ:命令4[ADD R5,R6] タイミングt61:命令無効化信号707は“0”であ
るので、EXステージが実行されることとなり、命令4が
実行される。D1ラッチ710とD2ラッチ711に格
納された値が演算器703で加算された後、R1レジスタ
に加算値が格納される。
【0073】DECステージ:命令5[NOP] タイミングt61:命令ラッチ714に格納された命令
5が命令解読器705で解読される。NOP命令なので何
も実行されない。
【0074】タイミングt62:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”で保
持する。
【0075】IFステージ:命令6[NOP] タイミングt61:命令6がROM717から読出さ
れ、命令ラッチ714に格納される。
【0076】以上のように本実施形態1によれば、命令
1[SUBIFEZF R0,R1]により排他的条件701としてゼロ
フラグを選択し、条件付き実行ステータス709をセッ
トすることで後続の命令が特別な条件指定フィールドを
付加することなく条件付き実行される。さらに後続の命
令2と命令3を排他的な条件付き実行命令として指示す
ることで、分岐によるパイプラインの乱れを生じること
なく場合分けの処理が実現できる。
【0077】なお、上記の説明ではR0レジスタとR1レジ
スタの値を同値として、ゼロフラグの値が“1”となる
場合を示したが、R0レジスタとR1レジスタの値が同値で
はなく“0”となる場合も、命令無効化制御回路708
は図3に従って命令無効化信号707を制御することに
より命令無効化制御を実行することができる。この場合
は後続命令のうち命令2が無効化されて実行されず、命
令3が実行される。
【0078】また、上記に示した例では、命令1はプロ
セッサステータスワード712のうちゼロフラグを命令
無効化信号707として選択する命令としたが、限定さ
れるものではなく、他のプロセッサステータスワード7
12を選択しても良い。
【0079】(実施形態2)実施形態2として、本発明
の第1および第2のプログラム変換装置を図6、図7、
図8、図9、図10を参照しつつ説明する。
【0080】図6は、本発明のプログラム変換装置構成
例である。201は、命令列を記憶する命令列記憶装置
である。204は命令検出手段であり、第1の命令検出
手段202および第2の命令検出手段203を備えてい
る。第1の命令検出手段202は、入力された命令がプ
ロセッサステータスを更新する命令かどうか検出するも
のである。第2の命令検出手段203は、入力された命
令があるプロセッサの状態に応じて実行される条件付き
の命令か否か検出するものである。208は、第1命令
検出手段により検出されたある命令に対して、第2命令
検出手段により検出された命令がその直後に配置されて
いるか判定し記憶する第1判定手段である。209は、
第1判定手段により記憶された命令の条件を判定する第
2判定手段である。210は、第1命令検出手段による
検出された命令と同一の処理を実行可能であって、かつ
第2判定手段で判定された条件を明示する指示命令を検
索する命令検索手段である。命令検索手段210では、
プロセッサ64が実行できる全命令を記憶しているもの
とする。205は、命令列を書き換える命令書き換え手
段である。なお、本実施形態2におけるプログラム変換
装置は、206に示された第1の処理と207に示され
た第2の処理でアセンブリ言語プログラムを変換するも
のである。211は、第2の処理207の前半部であ
る。
【0081】以上が、本発明の第1および第2のプログ
ラム変換装置の構成例である。
【0082】次に、本実施形態2のプログラム変換装置
によるプログラムの書き換え動作の例を説明する。図7
は書き換え前のアセンブリ言語プログラム例であり、ニ
ーモニック表記してある。図8は、本実施形態2のプロ
グラム変換装置によって図7に示したプログラムを書き
換えた機械語プログラムである。ただし、図8では、機
械語プログラムの説明を簡単にするためにニーモニック
表記してある。ここで、ニーモニック表記された両プロ
グラムは、すでに前述したアセンブリ言語プログラムや
機械語プログラムで説明されており、ADD命令、MOV命令
などで使用しているオペランド(即値、レジスタ)が異
なるだけであるのでここでは説明を省略する。
【0083】図9は、本発明の第2実施形態におけるプ
ログラム変換装置による第1の処理を示す図である。こ
の第1の処理206は、命令検出手段204により実行
され、命令検出手段204により記述プログラムの命令
列から条件・判断を伴う命令を検出することができる。
命令検出手段204の処理は、第1命令検出手段202
と第2命令検出手段203によって実現される。
【0084】ステップ231は、命令列記憶装置201
からI番目の命令を読み出す操作である。ステップ23
2とステップ2320は、第1の命令検出手段202に
おいて実行され、プロセッサステータスを更新する可能
性がある命令を検出し、それに相当する命令番号Iを配
列1に検出された順番に従って格納する操作である。つ
まり、このステップ232とステップ2320の処理に
より、記述プログラムの命令列からプロセッサの状態を
更新する可能性がある命令を検出する第1の命令検出手
段が実行される。
【0085】次に、ステップ233とステップ2330
は、第2の命令検出手段203において実行され、条件
付きで実行される命令か検出し、それに相当する命令番
号Iを配列2に検出された順番に従って格納する操作で
ある。つまり、このステップ233とステップ2330
の処理により、記述プログラムの命令列からプロセッサ
の状態に応じて実行するか否か決定される条件付きの命
令を検出する第2の命令検出手段が実行される。
【0086】次に、ステップ234は、すべての命令が
処理されたか判定する操作である。ステップ235は、
次の命令番号Iを処理するためにIを1増分する操作で
ある。この第1の処理は、ステップ230でI=1の命
令番号から操作を開始し、すべての命令を処理した時点
で完了する(ステップ236に相当)ものとする。
【0087】上記の第1の処理により、第1の命令検出
手段および第2の命令検出手段を実行することができ
る。
【0088】図10は、本発明の第2実施形態における
プログラム変換装置による第2の処理207を示す図で
ある。この第2の処理207は、上記の第1の処理20
6において検出された条件・判断命令を、演算命令と該
演算命令に後続し該演算命令に伴う一つまたは複数の後
続命令との命令列に書き換える命令書き換え手段を実行
する処理である。この第2の処理207は、第1の判定
手段208と第2の判定手段209と命令検索手段21
0と命令書き換え手段205によって実現される。
【0089】ステップ241は、配列1から1つの命令
番号Jを読み出す操作である。
【0090】ステップ242は、第1の判定手段208
で実行され、配列2からJ+1とJ+2の命令番号を検
索する操作である。つまり、ステップ242は第1の命
令検出手段202により検出された命令に後続して、第
2の命令検出手段203により検出された命令である第
1の条件付き命令と第2の条件付き命令の2つの命令が
連続しているかを判定する第1の判定手段を実行する処
理である。
【0091】ステップ243は、命令列記憶装置から命
令番号Jとステップ242で検索した命令を読み出し記
憶する操作である(ここでは命令A、命令B、命令
C)。
【0092】ステップ244は、第2の判定手段209
で実行され、前記命令Bと命令Cの条件が排他的な条件
か判定する操作である(以下、条件1と条件2とす
る)。つまり、第1の条件付き命令と前記第2の条件付
き命令の実行条件同士が互いに相反するものであるかを
判定する第2の判定手段を実行する処理である。
【0093】ステップ245は、命令検索手段210で
実行され、命令Aと同じ処理を実行可能で、かつ条件1
と条件2を後続に配置可能で、かつ後続の2命令を対象
とする指示命令が存在するか判定する操作である。つま
り、このステップ245は、機械語命令コードの中か
ら、第1の命令検出手段202により検出された命令と
同一の処理実行を示し、かつ、後続する前記第1の条件
付き命令および前記第2の条件付き命令が互いに相反す
る条件で実行されるものであることを示す指示命令を検
索する指示命令検索手段を実行する処理である。
【0094】ステップ246は、命令書き換え手段20
5で実行され、ステップ242で読み出した命令を指示
命令と無条件実行命令に置き換える操作である。
【0095】ステップ247は、ステップ246で置き
換えた命令列で命令列記憶装置を書き換える操作であ
る。つまり、このステップ246とステップ247は、
第1の命令検出手段202と第2の命令検出手段203
によって検出された命令列を、第1の条件付き命令から
当該第1の条件記述を除いた第1の後続命令と、第2の
条件付き命令から当該第2の条件記述を除いた第2の後
続命令と、指示命令とに書き換える命令書き換え手段を
実行する処理である。
【0096】ステップ248は、配列1に格納されたす
べての命令番号Jを処理したか判定する操作である。ス
テップ249は、次の命令番号Jを対象とするために配
列1の要素を1増分して、ステップ241に移る。ステ
ップ250で処理を終了する。
【0097】以下、図7の書き換え前プログラムが本実
施形態2のプログラム変換装置により書き換えられてい
く流れを第1の処理206および第2の処理207の順
に説明する。なお、1行目の命令を命令(1)、2行目
の命令を命令(2)というように括弧づけにより表現す
る。
【0098】(第1の処理206)ステップ230で
は、I=1として命令(1)(ADD R5,R1)が設定され
る。ステップ231では、命令(1)(ADD R5,R1)が
命令列記憶装置201から読み出される。ステップ23
2では、第1の命令検出手段202において命令(1)
(ADD R5,R1)がプロセッサステータスを更新する可能
性がある命令であると検出され、ステップ2320に移
り配列1の1番目に1が格納される。ステップ233で
は、第2の命令検出手段203において命令(1)(AD
D R5,R1)が条件付きの命令であるとは検出されないの
で配列2は操作されない。
【0099】ステップ234では、まだすべての命令を
処理していないので、命令番号を1増やして(ステップ
235)、ステップ231に戻り、命令(2)(SUB R
0,R1)が命令列記憶装置201から読み出される。ステ
ップ232では、第1の命令検出手段202において命
令(2)(SUB R0,R1)がプロセッサステータスを更新
する可能性がある命令であると検出され、ステップ23
20に移り配列1の2番目に2が格納される。ステップ
233では、第2の命令検出手段203において命令
(2)(SUB R0,R1)が条件付き実行命令とは検出され
ないので配列2は操作されない。
【0100】ステップ234では、まだすべての命令を
処理していないので、命令番号を1増やして(ステップ
235)、ステップ231に戻り、命令(3)(MOVIFZF
R2,R4)が命令列記憶装置201から読み出される。ス
テップ232では、第1の命令検索手段202において
命令(3)(MOVIFZF R2,R4)がプロセッサステータスを
更新する可能性がある命令とは検出されないので配列1
は操作されない。ステップ233では、第2の命令検索
手段203において命令(3)(MOVIFZF R2,R4)が条件
付きの命令であると検出され、ステップ2330に移り
配列2の1番目に3が格納される。
【0101】ステップ234では、まだすべての命令を
処理していないので、命令番号を1増やして(ステップ
235)、ステップ231に戻り、命令(4)(MOVIFN
ZF R3,R4)が命令列記憶装置201から読み出される。
ステップ232では、第1の命令検索手段202におい
て命令(4)(MOVIFNZF R3,R4)がプロセッサステータ
スを更新する可能性がある命令でないので配列1は操作
されない。ステップ233では、第2の命令検出手段2
03において命令(4)(MOVIFNZF R3,R4)が条件付き
の命令であると検出され、ステップ2330に移り配列
2の2番目に4が格納される。
【0102】以降、同様のステップを踏んで配列1の3
番目には5が、配列2の3番目には7が格納される。そ
の後、命令(8)(MOV R6,R0)に対してステップ23
2、ステップ233と進み、ステップ234ですべての
命令を処理した後、第1の処理206が完了する。この
とき、配列1には1、2、5が、配列2には3、4、7
が格納されており、それらは第2の処理207で使用さ
れる。
【0103】(第2の処理207) ステップ240:配列1の1番目の要素から処理を開始
する。
【0104】ステップ241:配列1から1番目の命令
番号である1を読み出し変数Jに格納する。
【0105】ステップ242:第1の判定手段208に
おいて、配列2からJ+1とJ+2の命令番号を検索す
る。いまJ=1であるので命令(2)と命令(3)の命
令番号の有無が調べられる。ここではJ+1、つまり、
命令(2)の命令番号が存在しないので第1の判定手段
では条件成立が検出されず、ステップ248に移る。
【0106】ステップ248:配列1のすべての命令番
号を処理したか判定する。まだ残っているのでステップ
249に移る。
【0107】ステップ249:配列1における次の命令
番号を処理するように、配列1の要素を1増分する。
【0108】ステップ241:配列1から2番目の命令
番号である2を読み出し変数Jに格納する。
【0109】ステップ242:第1の判定手段208に
おいて、配列2から変数J+1と変数J+2の命令番号
を検索する。いま、J=2であり、配列2に命令(3)
と命令(4)の命令番号が存在するか調べることとな
る。ここではどちらも存在するのでステップ243に移
る。
【0110】ステップ243:命令列記憶装置から変数
J、変数J+1、変数J+2に対応する命令を読み出
し、それぞれ命令A(SUB)、命令B(MOVIFZF)、命令C(M
OVIFNZF)として記憶する。
【0111】ステップ244:第2の判定手段209に
おいて、命令Bの条件1と命令Cの条件2が排他的な条
件か判定する。ここではゼロフラグの状態が1のとき命
令Bが実行され、ゼロフラグの状態が0のとき命令Cが
実行されることを検出し、命令Bと命令Cがゼロフラグ
の状態において相反するとき実行されるので排他的な条
件と判定する。また、条件1を「排他的条件が1であ
る」として、条件2を「排他的条件が0である」として
記憶する。次に、ステップ245に移る。
【0112】ステップ245:命令検索手段210にお
いて、命令Aと同じ処理を実行可能で、かつ条件1と条
件2を後続に配置可能で、かつ後続の2命令を対象とす
る指示命令が存在するか判定する。ここではSUBIFEZFが
候補として存在するので、ステップ246に移る。
【0113】ステップ246:命令書き換え手段205
において、命令AをSUBIFEZFに置き換える。また命令B
および命令Cに対応する処理を無条件に実行する命令に
置き換える。ここでは命令BをMOVに、命令CをMOVに置
き換える。次にステップ247に移る。
【0114】ステップ247:命令書き換え手段205
において、命令列記憶装置の変数J、変数J+1、変数
J+2に対応する命令を、それぞれ命令A(SUBIFEZ
F)、命令B(MOV)、命令C(MOV)に書き換える。
【0115】ステップ248:配列1のすべての命令番
号を処理したか判定する。まだ残っているのでステップ
249に移る。
【0116】ステップ249:配列1における次の命令
番号を処理するように、配列1の要素を1増分する。
【0117】ステップ241:配列1から3番目の命令
番号である5を読み出し変数Jに格納する。
【0118】ステップ242:第1の命令検出手段20
2において、配列2から変数J+1と変数J+2の命令
番号を検索する。いまJ=5であり、命令(6)と命令
(7)の命令番号が存在するか否かを調べる。ここでは
7の命令番号は存在するが6の命令番号が存在しないの
で、次にステップ248に移る。
【0119】ステップ248:配列1のすべての命令番
号を処理したか判定する。配列1にもう命令番号は存在
しないのでステップ250に移る。
【0120】ステップ250:第2の処理207を完了
する。
【0121】以上のように、本実施形態2によれば、命
令列記憶装置201に格納された書き換え前のプログラ
ムである図7の命令(2)と命令(3)と命令(4)
が、図8の命令(2)と命令(3)と命令(4)によう
に書き換えられる。
【0122】なお、本実施形態2によるプログラム変換
装置は、ステップ244で2つの条件が排他的か否か判
定し、ステップ245で2命令の1つ前の命令を、後続
の2命令を排他的な条件付き実行を指示する指示命令に
置き換えることが可能か判定している。このように、プ
ログラム変換装置62は、命令列記憶装置201に最終
的に格納される命令列を、後続の命令1とその後に配置
された命令2を互いに相反する条件が成立するとき実行
する命令として指示する指示命令を含む命令列によって
書き換えることが可能である。
【0123】なお、本実施形態2のプログラム変換装置
にはアセンブリ言語プログラムを入力するものとした
が、機械語プログラムを入力として新たな機械語プログ
ラムを生成するプログラム変換装置としてもよい。
【0124】(実施形態3)本実施形態3のデータ処理
装置は、本発明の第1および第2のデータ処理装置の例
である。実施形態1では後続命令が1つの命令であった
が、本実施形態3は、後続命令が複数の命令列からなる
後続命令群である。
【0125】以下、本発明の実施形態3について図1、
図2、図11、図12、図13を用いて説明する。本実
施形態3は、条件付き実行ステータス709の更新を操
作することで、実行するための条件が明示されない複数
の命令列を条件付き実行するものである。なお、実施の
形態1と同様の部分については、同一図と符号を付与し
て説明を省略する。
【0126】本実施形態3のデータ処理装置の全体構成
例に関しては図1、プロセッサの構成例に関しては図2
で良く、実施形態1と同様であるのでここでの説明は省
略する。
【0127】本実施形態における命令無効化制御方法と
条件付き実行ステータス709の遷移について図11を
用いて説明する。図11(a)は、命令無効化制御回路
708が排他的条件と条件付き実行ステータスに応じた
EXステージの無効化処理を表している(命令無効化信号
707)。図11の排他的条件701とは、指示命令に
よって選択されたプロセッサステータスの状態であり
“0”か“1”の2値をとる。図11の条件付き実行ス
テータス709とは、同じく指示命令によって後続の命
令を条件付き実行している状態を表している。図11
(a)に従えば、例えば、排他的条件701が“1”で
条件付き実行ステータス709が“x'100”のときはEX
ステージの処理が無効化される。図11(b)は、条件
付き実行ステータス709の遷移図であり、シーケンサ
716により制御される。条件付き実行ステータス70
9は、初期値“x'000”から前記の指示命令が解読され
た後“x'101”にセットされ、次命令が解読されると
“x'1”ずつデクリメントしてゆき、“x'000”まで順に
更新される。
【0128】以上が本実施形態3のデータ処理装置の構
成例である。以下に本実施形態3のデータ処理装置の動
作の例を説明する。一例として図12に示す機械語プロ
グラム2を実行処理する場合の動作を説明する。図12
は機械語プログラム2を表しており、ニーモニック表記
である。その命令について簡単な説明を付する。
【0129】(機械語プログラム2) 1行目:SUBIFEXZF R0,R1(R0レジスタの値からR1のレ
ジスタの値を減算して結果をR1レジスタに格納する。さ
らに後続の4命令をプロセッサステータスのゼロフラグ
を条件として排他的な条件付き実行命令として指示す
る) 2行目:MOV R2,R6(R2レジスタの値をR6レジスタに格
納する) 3行目:MOV R3,R7(R3レジスタの値をR7レジスタに格
納する) 4行目:MOV R4,R6(R4レジスタの値をR6レジスタに格
納する) 5行目:MOV R5,R7(R5レジスタの値をR7レジスタに格
納する) 6行目:MOV x'0001,R0(即値x'0001をR6レジスタに格
納する) 7行目:ADD R0,R6(R0レジスタの値とR6レジスタの値
を加算して結果をR6レジスタに格納する) 8行目:NOP (何も実行しない) このように、上記の機械語プログラム2において、1行
目の指示命令SUBIFEXZFは、後続する2行目から5行目
に配置された命令群の一方のみの命令群を実行するとい
う排他的な条件付き命令となっている。指示命令SUBIFE
XZFの演算実行結果に基づいてゼロフラグの状態が決定
され、当該ゼロフラグが示す排他的条件701の状態と
条件付き実行ステータス709に応じて、後続する2行
目、3行目の命令群と4行目、5行目の命令群の一方の
命令群のみが排他的に実行され、他方は無効化されるこ
ととなる。
【0130】図13はプロセッサ64の動作タイミング
図を示すものである。また、図13に示すようにステー
ジの前半(例えばタイミングt11)と後半(タイミン
グt12)を表すタイミングにより命令無効化制御回路
708は動作するものとする。特にDECステージではタ
イミングの後半で命令無効化制御回路708により条件
付き実行ステータス709を更新するものとする。ここ
で、時間が経過する順にタイミング毎に図12の機械語
プログラムを実行する場合の動作を説明する。以下、時
間が経過する順にタイミング毎にその動作を説明する。
なお、R0とR1には同値である“x'0001”が格納され、R2
には“x'0002”、R3には“x'0003”、R4には“x'000
4”、R5には“x'0005”が格納されていたとする。
【0131】(タイミングt1) IFステージ:命令1[SUBIFEXZF R0,R1] タイミングt11:命令1がROMから読み出され、命
令ラッチ714に格納される。
【0132】(タイミングt2) DECステージ:命令1[SUBIFEXZF R0,R1] タイミングt21:命令ラッチ714に格納された命令
1が命令解読器705で解読され、R0レジスタから値が
読出されD1ラッチ710に“x'0001”が格納される。
R1レジスタから値が読み出されD2ラッチ711に“x'
0001”が格納される。
【0133】タイミングt22:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'000”か
ら“x'101”にセットする。排他的条件701の値を表
わすレジスタとしてゼロフラグがセレクタ702により
選択される。
【0134】IFステージ:命令2[MOV R2,R6] タイミングt21:命令2がROM717から読出さ
れ、命令ラッチ714に格納される。
【0135】(タイミングt3) EXステージ:命令1[SUBIFEXZF R0,R1] タイミングt31:命令無効化信号707は初期状態の
まま“0”となっており、EXステージの実行が行われ、
命令1の実行が開始される。D1ラッチ710とD2ラ
ッチ711に格納された値が演算器703で減算され
る。ここではD1ラッチ710とD2ラッチ711には
同値“x'0001”が格納されているので、減算結果として
R1レジスタに“x'0000”が格納される。この結果ゼロフ
ラグには“1”が格納される。
【0136】DECステージ:命令2[MOV R2,R6] タイミングt31:命令ラッチ714に格納された命令
2が命令解読器705で解読され、R2レジスタから値が
読み出されD1ラッチ710に“x'0002”が格納され
る。
【0137】タイミングt32:命令無効化制御回路7
08は、条件付き実行ステータス709が“x'101”か
ら“x'100”に更新する。いま、排他的条件は“1”で
あり、条件付き実行ステータスが“x'100”であるの
で、図11(a)に従い、命令無効化信号707は
“0”のままとなる。
【0138】IFステージ:命令3[MOV R3,R7] タイミングt31:命令3がROM717から読出さ
れ、命令ラッチ714に格納される。
【0139】(タイミングt4) EXステージ:命令2[MOV R2,R6] タイミングt41:命令無効化信号707は“0”であ
るので、命令2の実行が開始される。D1ラッチ710
に格納された値“x'0002”が読み出され演算器703を
スルーしてR6レジスタに格納される。つまり、この例で
は後続命令のうち命令2が実行された。
【0140】DECステージ:命令3[MOV R3,R7] タイミングt41:命令ラッチ714に格納された命令
3が命令解読器705で解読され、R3レジスタから値が
読出されD1ラッチ710に“x'0003”が格納される。
R7レジスタから値が読み出されD2ラッチ711に格納
される。
【0141】タイミングt42:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'100”か
ら“x'011”に更新する。いま、排他的条件は“1”で
あり、条件付き実行ステータスが“x'011”であるの
で、図11(a)に従い、命令無効化信号707は
“0”のままとなる。
【0142】IFステージ:命令4[MOV R4,R6] タイミングt41:命令4がROM717から読出さ
れ、命令ラッチ714に格納される。
【0143】(タイミングt5) EXステージ:命令3[MOV R3,R7] タイミングt51:命令無効化信号707は“0”であ
るので命令3の実行が開始される。D1ラッチ710に
格納された値“x'0003”が読み出され演算器703をス
ルーしてR7レジスタに格納される。つまり、この例では
後続する命令のうち命令3は実行される。
【0144】DECステージ:命令4[MOV R4,R6] タイミングt51:命令ラッチ714に格納された命令
4が命令解読器705で解読され、R4レジスタから値
“x'0004”が読み出されD1ラッチ710に格納され
る。
【0145】タイミングt52:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'011”か
ら“x'010”に更新する。ここで、命令無効化制御回路
708は、図11(a)に従って、条件付き実行ステー
タスが“x'010”であり、排他的条件が“1”であるの
で命令無効化信号707を生成し、命令無効化信号70
7を“0”から“1”に更新する。
【0146】IFステージ:命令5[MOV R5,R7] タイミングt51:命令5がROM717から読出さ
れ、命令ラッチ714に格納される。
【0147】(タイミングt6) EXステージ:命令4[MOV R4,R6] タイミングt61:命令無効化信号707が“1”であ
るので命令4は無効化される。つまり、この例では後続
する命令のうち、命令2と命令3は実行されたが、命令
4は無効化されて実行されない。
【0148】DECステージ:命令5[MOV R5,R7] タイミングt61:命令ラッチ714に格納された命令
5が命令解読器705で解読され、R5レジスタから値
“x'0005”が読み出されD1ラッチ710に格納され
る。
【0149】タイミングt62:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'010”か
ら“x'001”に更新する。ここで、命令無効化制御回路
708は、図11(a)に従って、条件付き実行ステー
タスが“x'001”であり、排他的条件が“1”であるの
で命令無効化信号707を生成し、命令無効化信号70
7“1”のままとなる。
【0150】IFステージ:命令6[MOV x'0001,R6] タイミングt61:命令6がROMから読出され、命令
ラッチ714に格納される。
【0151】(タイミングt7) EXステージ:命令5 [MOV R5,R7] タイミングt71:命令無効化信号707が“1”であ
るので命令5は無効化される。つまり、この例では後続
する命令のうち、命令2と命令3は実行されたが、命令
4と命令5は無効化されて実行されない。
【0152】DECステージ:命令6[MOV x'0001,R6] タイミングt71:命令ラッチ714に格納された命令
6が命令解読器705で解読され、D1ラッチ710に
即値であるx'0001が格納される。
【0153】タイミングt72:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'001”か
ら“x'000”に更新する。ここで、命令無効化制御回路
708は図11(a)に従って、条件付き実行ステータ
スが“x'000”であり、排他的条件が“1”であるの
で、命令無効化信号707を“1”から“0”に更新す
る。
【0154】IFステージ:命令7[ADD R0,R6] タイミングt71:命令7がROM717から読出さ
れ、命令ラッチ714に格納される。
【0155】(タイミングt8) EXステージ:命令6 [MOV x'0001,R6] タイミングt81:命令無効化信号707は“0”であ
るので命令6の実行を開始する。D1ラッチ710に格
納された値が読み出され、演算器703をスルーしてR6
レジスタに格納される。
【0156】DECステージ:命令7[ADD R0,R6] タイミングt81:命令ラッチ714に格納された命令
7が命令解読器705で解読される。R0レジスタから値
“x'0001”が読み出されD1ラッチ710に格納され
る。R6レジスタから値“x'0001”が読み出されD2ラッ
チ711に格納される。
【0157】IFステージ:命令8[NOP] タイミングt81:命令8がROM717から読出さ
れ、命令ラッチ714に格納される。
【0158】以上のように本実施の形態によれば、命令
1[SUBIFEXZF R0,R1]により排他的な条件としてゼロフ
ラグを選択し、条件付き実行ステータス709をセット
することで条件付き実行されるので、複数の命令からな
る命令群1(命令2と命令3)と命令群2(命令4と命
令5)には特別な条件指定フィールドを付加する必要が
無く、いずれか一方の命令群のみが実行され、他方は無
効化されて実行されない。
【0159】なお、上記の説明ではR0レジスタとR1レジ
スタの値を同値として、ゼロフラグの値が“1”となる
場合を示したが、R0レジスタとR1レジスタの値が同値で
はなく“0”となる場合も、命令無効化制御回路708
は図11(a)に従って命令無効化信号707を制御す
ることにより命令無効化制御を実行することができる。
この場合は後続命令のうち命令2と命令3が無効化され
て実行されず、命令4と命令5が実行される。
【0160】また、上記に示した例では、命令1はプロ
セッサステータスワード712のうちゼロフラグを命令
無効化信号707として選択する命令としたが、限定さ
れるものではなく、他のプロセッサステータスワード7
12を選択しても良い。
【0161】(実施形態4)実施形態4として、本発明
の第1および第2のプログラム変換装置の例を示す。実
施形態2では後続命令が1つの命令であったが、本実施
形態4は、後続命令が複数の命令列からなる後続命令群
である。
【0162】本発明のプログラム変換装置を図6、図1
2、図14、図15、図16によって説明する。既に説
明した図には同一番号を付して説明を省略する。
【0163】本実施形態4のデータ処理装置の全体構成
例に関しては図6で良く、実施形態2と同様であるので
ここでの説明は省略する。
【0164】本実施形態4のプログラム変換装置による
プログラムの書き換え動作の例を説明する。以下に2つ
の書き換え例を示す。1つ目は、図14の書き換え前の
アセンブリ言語プログラムを図12の機械語プログラム
に書き換える例を示す。図12の機械語プログラムは、
実施形態3で用いたプログラムと同様である。2つ目
は、図15の書き換え前のアセンブリ言語プログラムを
図12に書き換える例である。図12、図14、図15
のニーモニック表記した命令はすでに説明されており、
ADD命令、MOV命令などで使用しているオペランド(即
値、レジスタ)が異なるだけであるのでここでは説明を
省略する。
【0165】図16は、本実施形態4におけるプログラ
ム変換装置による第2の処理207の前半部を示す図で
ある。この第2の処理207は、第1の処理206にお
いて検出された条件・判断命令を、演算命令と該演算命
令に後続し該演算命令に伴う一つまたは複数の後続命令
群との命令列に書き換える命令書き換え手段を実行する
処理である。この第2の処理207は、第1の判定手段
208と第2の判定手段209と命令検索手段210と
命令書き換え手段205によって実現される。なお、同
図の211aは図10の211に該当する部分を示して
おり、それ以外は図10と同様であるとしてここでの説
明を省略する。
【0166】ステップ242aは、第1の判定手段20
8で実行され、配列2からJ+1、J+2、J+3、J
+4の命令番号を検索する操作である。つまり、ステッ
プ242aは第1の命令検出手段202により検出され
た命令に後続して、第2の命令検出手段203により検
出された命令である第1の条件付き命令と第2の条件付
き命令の2つの命令が連続しているかを判定する第1の
判定手段を実行する処理である。
【0167】ステップ243aは、命令番号に相当する
命令を読み出し記憶する操作である(以下、命令A、命
令B、命令C、命令D、命令Eとする)。
【0168】ステップ244aは、第2の判定手段20
9で実行され、命令Aと命令Bの条件1と命令Cと命令
Dの条件2が排他的な条件か判定する操作である。つま
り、第1の条件付き命令と前記第2の条件付き命令の実
行条件同士が互いに相反するものであるかを判定する第
2の判定手段を実行する処理である。
【0169】ステップ245aは、命令検索手段210
において、命令Aと同じ処理を実行可能で、かつ条件1
と条件2を後続に配置可能で、かつ後続の4命令を対象
とする指示命令が存在するか判定する操作である。つま
り、このステップ245aは、機械語命令コードの中か
ら、第1の命令検出手段202により検出された命令と
同一の処理実行を示し、かつ、後続する前記第1の条件
付き命令および前記第2の条件付き命令が互いに相反す
る条件で実行されるものであることを示す指示命令を検
索する指示命令検索手段を実行する処理である。
【0170】以上が本実施形態4の211aの処理であ
る。
【0171】まず、始めに、図14の書き換え前アセン
ブリ言語プログラムを図12の機械語プログラムに書き
換える動作を第1の処理206と第2の処理207の順
番に説明する。なお、1行目の命令を命令(1)、2行
目の命令を命令(2)のように括弧で以下表現する。
【0172】(第1の処理206)実施形態2と同様に
処理され、最終的に、配列1には1、7が、配列2には
2、3、4、5が格納されており、それらは第2の処理
207で使用される。
【0173】(第2の処理207) ステップ240:配列1の1番目の要素から処理を開始
する。
【0174】ステップ241:配列1から1番目の命令
番号である1を読み出し変数Jに格納する。
【0175】ステップ242a:第1の判定手段208
において、配列2からJ+1とJ+2とJ+3とJ+4
の命令番号を検索する。いまJ=1であるので、命令
(2)、命令(3)、命令(4)、命令(5)のすべて
が存在するのでステップ243に移る。
【0176】ステップ243a:命令列記憶装置から変
数JからJ+4に対応する命令を読み出し、それぞれ命
令A(SUB)、命令B(MOVIFZF)、命令C(MOVIFZF)、命令
D(MOVIFNZF)、命令E(MOVIFNZF)として記憶する。
【0177】ステップ244a:第2の判定手段209
において、4命令のうち、2命令の条件が条件1であ
り、他の2命令の条件が条件2であり、条件1と条件2
が排他的な条件か判定する。ここではゼロフラグの状態
が1のとき命令Bと命令Cが実行され、ゼロフラグの状
態が0のとき命令Dと命令Eが実行されることを検出
し、ゼロフラグの状態において相反するとき実行される
ので排他的な条件と判定する。また、条件1を「排他的
条件が1である」として、条件2を「排他的条件が0で
ある」として記憶する。
【0178】ステップ245a:命令検索手段210に
おいて、命令Aと同じ処理を実行可能で、かつ条件1と
条件2を後続に配置可能で、かつ後続の4命令を対象と
する指示命令が存在するか判定する。ここではSUBEXIFZ
Fが候補として存在するので、ステップ246に移る。
【0179】ステップ246:命令書き換え手段205
において、命令AをSUBEXIFZFに置き換える。また命令
B、命令C、命令D、命令Eに対応する処理を無条件に
実行する命令に置き換える。次にステップ247に移
る。
【0180】ステップ247:命令書き換え手段205
において、命令列記憶装置の変数JからJ+4に対応す
る命令を、それぞれ命令A(SUBIFEZF)、命令B(MO
V)、命令C(MOV)、命令D(MOV)、命令E(MOV)に書き換
える。
【0181】ステップ248:配列1のすべての命令番
号を処理したか判定する。まだ残っているのでステップ
249に移る。
【0182】ステップ249:配列1における次の命令
番号を処理するように、配列1の要素を1増分する。
【0183】ステップ241:配列1から2番目の命令
番号である7を読み出し変数Jに格納する。
【0184】ステップ242:第1の命令検出手段20
2において、配列2から変数J+1からJ+4の命令番
号を検索する。いまJ=7であり、命令(8)から命令
(11)の命令番号が存在するか否かを調べる。ここで
は存在しないので、次にステップ248に移る。
【0185】ステップ248:配列1のすべての命令番
号を処理したか判定する。配列1にもう命令番号は存在
しないのでステップ250に移る。
【0186】ステップ250:第2の処理207を完了
する。
【0187】以上のように、本実施形態4によれば、命
令列記憶装置201に格納された書き換え前のプログラ
ムである図14の命令(1)から命令(5)が、図12
の命令(1)から命令(5)に書き換えられる。なお、
本実施形態4によるプログラム変換装置は、ステップ2
44で2つの条件が排他的か否か判定し、ステップ24
5で4命令の1つ前の命令を、後続の4命令を排他的な
条件付き実行を指示する指示命令に置き換えることが可
能か判定している。このように、プログラム変換装置6
2は、命令列記憶装置201に最終的に格納される命令
列を、後続の命令列1とその後に配置された命令列2を
互いに相反する条件が成立するとき実行する命令として
指示する指示命令を含む命令列に書き換えることが可能
である。
【0188】なお、本実施形態4のプログラム変換装置
にはアセンブリ言語プログラムを入力するものとした
が、機械語プログラムを入力として新たな機械語プログ
ラムを生成するプログラム変換装置としてもよい。
【0189】次に、図15の書き換え前アセンブリ言語
プログラムを図12の機械語プログラムに書き換える動
作を説明する。図15では、条件付きの実行命令が2行
目、3行目、4行目、5行目は条件付きの実行命令であ
るが、2行目と5行目の条件1と、3行目と4行目の条
件2が、互いに排他的な条件となっている。
【0190】以下に、第1の処理206と第2の処理2
07の順番に説明する。なお、1行目の命令を命令
(1)、2行目の命令を命令(2)のように括弧で以下
表現する。
【0191】(第1の処理206)実施形態2と同様に
処理され、最終的に、配列1には1、7が、配列2には
2、3、4、5が格納されており、それらは第2の処理
207で使用される。
【0192】(第2の処理207) ステップ240:配列1の1番目の要素から処理を開始
する。
【0193】ステップ241:配列1から1番目の命令
番号である1を読み出し変数Jに格納する。
【0194】ステップ242a:第1の判定手段208
において、配列2からJ+1とJ+2とJ+3とJ+4
の命令番号を検索する。いまJ=1であるので、命令
(2)、命令(3)、命令(4)、命令(5)のすべて
が存在するのでステップ243に移る。
【0195】ステップ243a:命令列記憶装置から変
数JからJ+4に対応する命令を読み出し、それぞれ命
令A(SUB)、命令B(MOVIFNZF)、命令C(MOVIFZF)、命令
D(MOVIFZF)、命令E(MOVIFNZF)として記憶する。
【0196】ステップ244a:第2の判定手段209
において、4命令のうち、2命令の条件が条件1であ
り、他の2命令の条件が条件2であり、条件1と条件2
が排他的な条件か判定する。ここではゼロフラグの状態
が1のとき命令Cと命令Dが実行され、ゼロフラグの状
態が0のとき命令Bと命令Eが実行されることを検出
し、ゼロフラグの状態において相反するとき実行される
ので排他的な条件と判定する。また、条件1を「排他的
条件が1である」として、条件2を「排他的条件が0で
ある」として記憶する。
【0197】ステップ245a:命令検索手段210に
おいて、命令Aと同じ処理を実行可能で、かつ条件1と
条件2を後続に配置可能で、かつ後続の4命令を対象と
する指示命令が存在するか判定する。ここではSUBEXIFZ
Fが候補として存在するので、ステップ246に移る。
【0198】ステップ246:命令書き換え手段205
において、命令AをSUBEXIFZFに置き換える。また命令
B、命令C、命令D、命令Eに対応する処理を無条件に
実行する命令に置き換える。さらに条件1に対応する命
令を先に実行するよう並べ替える。ここでは、命令Cが
命令Bに、命令Dが命令Cに、命令Bが命令Dに並べ替
えられる。
【0199】ステップ247:命令書き換え手段205
において、命令列記憶装置の変数JからJ+4に対応す
る命令を、それぞれ命令A(SUBIFEZF)、命令B(MO
V)、命令C(MOV)、命令D(MOV)、命令E(MOV)に書き換
える。
【0200】ステップ248:配列1のすべての命令番
号を処理したか判定する。まだ残っているのでステップ
249に移る。
【0201】ステップ249:配列1における次の命令
番号を処理するように、配列1の要素を1増分する。
【0202】ステップ241:配列1から2番目の命令
番号である7を読み出し変数Jに格納する。
【0203】ステップ242:第1の命令検出手段20
2において、配列2から変数J+1からJ+4の命令番
号を検索する。いまJ=7であり、命令(8)から命令
(11)の命令番号が存在するか否かを調べる。ここで
は存在しないので、次にステップ248に移る。
【0204】ステップ248:配列1のすべての命令番
号を処理したか判定する。配列1にもう命令番号は存在
しないのでステップ250に移る。
【0205】ステップ250:第2の処理207を完了
する。
【0206】以上のように、本実施の形態によれば、命
令列記憶装置201に格納された図15の命令(1)か
ら命令(5)が、図12の命令(1)から命令(5)に
書き換えられる。ここで、先に示したステップ246で
は、まず条件1に対応する命令(命令C、命令D)を、
その相対的な位置を変えずに命令番号Jの直後に並べ替
えている。次に条件2に対応する命令(命令B、命令
E)を、その相対的な位置を変えずに後方に並べ替えて
いる。このとき条件1に対応する命令の実行順序は変更
されていない。また、条件2に対応する命令の実行順序
も変更されていない。このように、プログラム変換装置
62は、指示命令により実行する条件が明示される命令
列を、実現される処理には影響を及ぼさずに並べ替える
ことが可能であり、最終的に命令列記憶装置201に格
納される命令列は、後続の命令列1とその後に配置され
た命令列2を互いに相反する条件が成立するとき実行す
る命令として指示する指示命令を含む命令列に書き換え
られる。
【0207】(実施形態5)実施形態5として、本発明
の第3および第4のデータ処理装置の例を示す。本実施
形態5は、条件付き実行ステータス709の更新を操作
することで、実行するための条件が明示されない命令を
条件付き実行するものである。
【0208】実施形態5のデータ処理装置について図
1、図2、図17、図18、図19を用いて説明する。
なお、実施形態1などと同様の部分については、同一図
と符号を付与して説明を省略する。
【0209】本実施形態5のデータ処理装置の全体構成
例に関しては図1、プロセッサの構成例に関しては図2
で良く、実施形態1と同様であるのでここでの説明は省
略する。
【0210】本実施形態5における命令無効化制御方法
と条件付き実行ステータス709の遷移について図17
を用いて説明する。図17(a)は、命令無効化制御回
路708が排他的条件と条件付き実行ステータスに応じ
たEXステージの無効化処理を表している(命令無効化信
号707)。同図の排他的条件701とは、指示命令に
よって選択されたプロセッサステータスの状態であり
“0”か“1”の2値をとる。同図の条件付き実行ステ
ータス709とは、同じく指示命令によって後続の命令
を条件付き実行している状態を表している。例えば、図
17(a)に従えば、排他的条件701が“1”で条件
付き実行ステータス709が“x'01”のときはEXステー
ジの処理が無効化される。図17(b)は、条件付き実
行ステータス709の遷移図であり、シーケンサ716
により制御される。条件付き実行ステータス709は、
初期値“x'00”から前記の指示命令が解読された後“x'
10”にセットされ、次命令が解読されると“x'1”ずつ
デクリメントしてゆき、“x'00”まで順に更新される。
【0211】以上が本実施形態5のデータ処理装置の構
成例である。以下に本実施形態5のデータ処理装置の動
作の例を説明する。一例として図18に示す機械語プロ
グラム3を実行処理する場合の動作を説明する。図18
は機械語プログラム3を表しており、ニーモニック表記
である。その命令について簡単な説明を付する。
【0212】(機械語プログラム3) 1行目:SUBIFXZF R0,R1(R0レジスタの値からR1のレジ
スタの値を減算して結果をR1レジスタに格納する。さら
に後続の命令をプロセッサステータスのゼロフラグが0
のとき実行する条件付き実行命令として指示する) 2行目:MOV R2,R3(R2レジスタの値をR3レジスタに格
納する) 3行目:ADD R3,R6(R3レジスタの値とR6レジスタの値
を加算して結果をR6レジスタに格納する) 4行目:MOV R4,R7 (R4レジスタの値をR7レジスタに格
納する) このように、上記機械語プログラム3において、1行目
の指示命令SUBIFXZFは後続する2行目に配置された命令
がゼロフラグの状態に応じて実行される条件付き命令で
あることを指示するものとなっている。後述するように
指示命令SUBIFEXZFの演算実行結果に基づいてゼロフラ
グの状態が決定され、当該ゼロフラグが示す排他的条件
701の状態と条件付き実行ステータス709に応じ
て、後続する2行目の命令が実行されるか無効化される
かが決められることとなる。
【0213】図19はプロセッサ64の動作タイミング
図を示すものである。また、図19に示すようにステー
ジの前半(例えばタイミングt11)と後半(タイミン
グt12)を表すタイミングにより命令無効化制御回路
708は動作するものとする。特にDECステージではタ
イミングの後半で命令無効化制御回路708により条件
付き実行ステータス709を更新するものとする。ここ
で、時間が経過する順にタイミング毎に図19を実行す
る場合の動作を説明する。以下、時間が経過する順にタ
イミング毎にその動作を説明する。なお、R0とR1には同
値である“x'0001”が格納され、R2には“x'0002”、R3
には“x'0003”、R4には“x'0004”が格納されていたと
する。
【0214】(タイミングt1) IFステージ:命令1[SUBIFXZF R0,R1] タイミングt11:命令1がROM717から読出さ
れ、命令ラッチ714に格納される。
【0215】(タイミングt2) DECステージ:命令1[SUBIFXZF R0,R1] タイミングt21:命令ラッチ714に格納された命令
1が命令解読器705で解読され、R0レジスタから値が
読出されD1ラッチ710に“x'0001”が格納される。
R1レジスタから値が読み出されD2ラッチ711に“x'
0001”が格納される。
【0216】タイミングt22:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”から
“x'10”にセットする。排他的条件701の値を表わす
レジスタとしてゼロフラグがセレクタ702により選択
される。
【0217】IFステージ:命令2[MOV R2,R3] タイミングt21:命令2がROM717から読出さ
れ、命令ラッチ714に格納される。
【0218】(タイミングt3) EXステージ:命令1[SUBIFXZF R0,R1] タイミングt31:命令無効化信号707は初期状態の
まま“0”となっており、EXステージの実行が行われ、
命令1の実行が開始される。D1ラッチ710とD2ラ
ッチ711に格納された値が演算器703で減算され
る。ここではD1ラッチ710とD2ラッチ711には
同値“x'0001”が格納されているので、減算結果として
R1レジスタに“x'0000”が格納される。この結果、ゼロ
フラグには“1”が格納される。
【0219】DECステージ:命令2[MOV R2,R3] タイミングt31:命令ラッチ714に格納された命令
2が命令解読器705で解読され、R2レジスタから値が
読出されD1ラッチ710“x'0002”が格納される。
【0220】タイミングt32:命令無効化制御回路7
08は、条件付き実行ステータス709が“x'10”から
“x'01”に更新する。いま、排他的条件は“1”であ
り、条件付き実行ステータスが“x'01”であるので、図
17(a)に従い、命令無効化信号707が生成され、
“0”から“1”に更新される。
【0221】IFステージ:命令3[ADD R3,R6] タイミングt31:命令3がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0222】(タイミングt4) EXステージ:命令2[MOV R2,R3] タイミングt41:命令無効化信号707が“1”とな
っているので命令2は無効化され実行されない。つま
り、この例では後続する命令2が無効化された。
【0223】DECステージ:命令3[ADD R3,R6] タイミングt41:命令ラッチ714に格納された命令
3が命令解読器705で解読され、R3レジスタから値が
読出されD1ラッチ710に格納される。R6レジスタか
ら値が読み出されD2ラッチ711に格納される。
【0224】タイミングt42:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'01”から
“x'00”に更新する。いま、排他的条件は“1”であ
り、条件付き実行ステータスが“x'00”であるので、図
17(a)に従い、命令無効化信号707は“0”とな
る。
【0225】IFステージ:命令4[MOV R4,R6] タイミングt41:命令4がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0226】(タイミングt5) EXステージ:命令3[ADD R3,R6] タイミングt51:命令無効化信号707は“0”であ
るので命令3の実行を開始する。D1ラッチ710に格
納された値とD2ラッチ711に格納された値が演算器
703で加算されR6レジスタに格納される。この例では
後続命令(2)は無効化されたが、後続命令(2)以後
の後続命令(3)は実行された。
【0227】DECステージ:命令4[MOV R4,R7] タイミングt51:命令ラッチ714に格納された命令
4が命令解読器705で解読され、R4レジスタから値が
読出されD1ラッチ710に格納される。
【0228】タイミングt52:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”で保
持する。
【0229】IFステージ:命令5[NOP] タイミングt51:命令5がROM5から読出され、命令
ラッチ714に格納される。
【0230】以上のように本実施の形態によれば、命令
1[SUBIFXZF R0,R1]により条件としてゼロフラグを選択
し、条件付き実行ステータス709をセットすることで
条件付き実行されるので、後続の命令には特別な条件指
定フィールドを付加する必要が無く、後続命令の実行、
無効化を指定することができる。
【0231】なお、上記の説明ではR0レジスタとR1レジ
スタの値を同値として、ゼロフラグの値が“1”となる
場合を示したが、R0レジスタとR1レジスタの値が同値で
はなく“0”となる場合も、命令無効化制御回路708
は図17(a)に従って命令無効化信号707を制御す
ることにより命令無効化制御を実行することができる。
この場合は後続命令(2)が無効化されずに実行され
る。
【0232】(実施形態6)実施形態6として、本発明
の第3および第4のプログラム変換装置の例を示す。実
施形態6のプログラム変換装置を図18、図20、図2
1、図22によって説明する。なお、既に説明した図に
は同一番号を付して説明を省略する。
【0233】本実施形態6のプログラム変換装置の全体
構成例を図20に示す。図20に示すように本実施形態
6のプログラム変換装置は、実施形態2などで示した図
6に比べ、第2の判定手段を備えていない構成となって
いる。他の部分は同様で良く、ここでの説明は省略す
る。
【0234】本実施形態6のプログラム変換装置による
プログラムの書き換え動作の例を説明する。図21の書
き換え前のアセンブリ言語プログラムを図18の機械語
プログラムに書き換える例を示す。図18の機械語プロ
グラムは、実施形態5で用いたプログラムと同様であ
る。図18、図21のニーモニック表記した命令は既に
説明したプログラムとADD命令、MOV命令などで使用して
いるオペランド(即値、レジスタ)が異なるだけである
ので説明を省略する。
【0235】図22は、本実施形態6におけるプログラ
ム変換装置による第2の処理207の前半部を示す図で
ある。この第2の処理207は、第1の処理206にお
いて検出された条件・判断命令を、演算命令と、該演算
命令に後続し該演算命令に伴う後続命令の命令列に書き
換える命令書き換え手段を実行する処理である。この第
2の処理207は、第1の判定手段208と命令検索手
段210と命令書き換え手段205によって実現され
る。
【0236】なお、図22の211bは図10の211
に該当する部分を示しており、それ以外は図10と同様
であるとして、ここでは説明を省略する。
【0237】ステップ242bは、第1の判定手段20
8で実行され、配列2からJ+1の命令番号を検索する
操作である。つまり、ステップ242bは、第1の命令
検出手段により検出された命令に後続して、第2の命令
検出手段により検出された命令があるかを判定する第1
の判定手段を実行する。
【0238】ステップ243bは命令番号に相当する命
令を読み出し記憶する操作である(以下、命令A、命令
B)。
【0239】ステップ244bは、命令Bの条件を条件
1として記憶する。
【0240】ステップ245bは、命令検索手段210
において、命令Aと同じ処理を実行可能で、かつ条件1
を後続に配置可能で、かつ後続の命令を対象とする指示
命令が存在するか判定する操作である。つまり、ステッ
プ245bは、機械語命令コードの中から、第1の命令
検出手段により検出された命令と同一の処理実行を示
し、かつ、後続の条件付き命令の実行条件を示す指示命
令を検索する指示命令検索手段を実行する処理である。
【0241】以上が本実施形態6の211bの処理であ
る。
【0242】以下、図21の書き換え前アセンブリ言語
プログラムを図18の機械語プログラムに書き換える動
作を第1の処理206と第2の処理207の順番に説明
する。なお、1行目の命令を命令(1)、2行目の命令
を命令(2)のように括弧で以下表現する。
【0243】(第1の処理206)実施形態2と同様に
処理され、最終的に、配列1には1、3が、配列2には
2が格納されており、それらは第2の処理207で使用
される。
【0244】(第2の処理207) ステップ240:配列1の1番目の要素から処理を開始
する。
【0245】ステップ241:配列1から1番目の命令
番号である1を読み出し変数Jに格納する。
【0246】ステップ242b:第1の判定手段208
において、配列2からJ+1の命令番号を検索する。い
まJ=1であり、命令(2)が存在するのでステップ2
43bに移る。
【0247】ステップ243b:命令列記憶装置から変
数JからJ+1に対応する命令を読み出し、それぞれ命
令A(SUB)、命令B(MOVIFNZF)として記憶する。
【0248】ステップ244b:命令Bの条件を条件1
として、次のステップに移る。
【0249】ステップ245b:命令検索手段210に
おいて、命令Aと同じ処理を実行可能で、かつ条件1を
後続に配置可能で、かつ後続の命令を対象とする指示命
令が存在するか判定する。ここではSUBIFXZFが候補とし
て存在するので、ステップ246に移る。
【0250】ステップ246:命令書き換え手段205
において、命令AをSUBIFXZFに置き換える。また命令B
に対応する処理を無条件に実行する命令に置き換える。
次にステップ247に移る。
【0251】ステップ247:命令書き換え手段205
において、命令列記憶装置の変数JからJ+1に対応す
る命令を、それぞれ命令A(SUBIFXZF)、命令B(MOV)
に書き換える。
【0252】ステップ248:配列1のすべての命令番
号を処理したか判定する。まだ残っているのでステップ
249に移る。
【0253】ステップ249:配列1における次の命令
番号を処理するように、配列1の要素を1増分する。
【0254】ステップ241:配列1から2番目の命令
番号である3を読み出し変数Jに格納する。
【0255】ステップ242:第1の命令検出手段20
2において、配列2から変数J+1の命令番号を検索す
る。いまJ=3であり、配列2に命令(4)が存在する
か否かを調べる。ここでは存在しないので、次にステッ
プ248に移る。
【0256】ステップ248:配列1のすべての命令番
号を処理したか判定する。配列1にもう命令番号は存在
しないのでステップ250に移る。
【0257】ステップ250:第2の処理207を完了
する。
【0258】以上のように、本実施形態6によれば、命
令列記憶装置201に格納された図21の命令(1)と
命令(2)が、図18の命令(1)と命令(2)に書き
換えられる。このように、プログラム変換装置62は、
命令列記憶装置201に最終的に格納される命令列を、
実行するための条件を明示した指示命令と、実行するた
めの条件が明示されない命令とからなる命令列で書き換
えることが可能である。
【0259】なお、本実施形態6のプログラム変換装置
にはアセンブリ言語プログラムを入力するものとした
が、機械語プログラムを入力として新たな機械語プログ
ラムを生成するプログラム変換装置としてもよい。
【0260】(実施形態7)実施形態7として、本発明
の第3および第4のデータ処理装置の例を示す。本実施
形態7は、条件付き実行ステータス709の更新を操作
することで、実行するための条件が明示されない複数か
らなる命令を条件付き実行するものである。本実施形態
5のデータ処理装置では後続命令が1つの命令であった
が、本実施形態7は、後続命令が複数の命令列からなる
後続命令群である。
【0261】以下、本発明の実施形態7のデータ処理装
置について図1、図2、図23、図24、図25を用い
て説明する。なお、実施形態1などと同様の部分につい
ては、同一図と符号を付与して説明を省略する。
【0262】本実施形態7のデータ処理装置の全体構成
例に関しては図1、プロセッサの構成例に関しては図2
で良く、実施形態1と同様であるのでここでの説明は省
略する。
【0263】本実施形態7における命令無効化制御方法
と条件付き実行ステータス709の遷移について図23
を用いて説明する。図23(a)は、命令無効化制御回
路708がEXステージの処理を無効化するか表している
(命令無効化信号707)。同図の排他的条件701と
は、本実施形態の指示命令によって選択されたプロセッ
サステータスの状態であり“0”か“1”の2値をと
る。同図の条件付き実行ステータス709とは、同じく
本実施形態の指示命令によって後続の命令を条件付き実
行している状態を表している。図23(a)に従えば、
例えば、排他的条件701が“1”で条件付き実行ステ
ータス709が“x'01”および“x'10”の両ケースの場
合はEXステージの処理が無効化される。図23(b)
は、条件付き実行ステータス709の遷移図であり、シ
ーケンサ716により制御される。条件付き実行ステー
タス709は、初期値“x'00”から前記の指示命令が解
読された後“x'11”にセットされ、次命令が解読される
と“x'1”デクリメントしてゆき、“x'00”まで順に更
新される。
【0264】以上が本実施形態7のデータ処理装置の構
成例である。以下に本実施形態7のデータ処理装置の動
作の例を説明する。一例として図24に示す機械語プロ
グラム4を実行処理する場合の動作を説明する。図24
は機械語プログラム4を表しており、ニーモニック表記
である。その命令について簡単な説明を付する。
【0265】(機械語プログラム4) 1行目:SUBIFNXZF R0,R1(R0レジスタの値からR1のレ
ジスタの値を減算して結果をR1レジスタに格納する。さ
らに後続の2命令をプロセッサステータスのゼロフラグ
が0のとき実行する条件付き実行命令として指示する) 2行目:MOV R2,R3(R2レジスタの値をR3レジスタに格
納する。) 3行目:MOV R5,R4(R5レジスタの値をR4レジスタに格
納する。) 4行目:ADD R3,R6 (R3レジスタの値とR6レジスタの値
を加算して結果をR6レジスタに格納する) 5行目:MOV R4,R7 (R4レジスタの値をR7レジスタに格
納する) このように、機械語プログラム4において、1行目の指
示命令SUBIFNXZFは、後続する2行目から3行目に配置
された命令群を実行するかしないかを決める条件付き命
令となっている。指示命令SUBIFNXZFの演算結果に基づ
いてゼロフラグの状態が決定され、当該ゼロフラグの状
態に応じて後続の命令群が実行されるか否かが決まる。
【0266】図25はプロセッサ64の動作タイミング
図を示すものである。また、図25に示すようにステー
ジの前半(例えばタイミングt11)と後半(タイミン
グt12)を表すタイミングにより命令無効化制御回路
708は動作するものとする。特にDECステージではタ
イミングの後半で命令無効化制御回路708により条件
付き実行ステータス709を更新するものとする。ここ
で、時間が経過する順にタイミング毎に図24の機械語
プログラムを実行する場合の動作を説明する。以下、時
間が経過する順にタイミング毎にその動作を説明する。
なお、R0とR1には同値である“x'0001”が格納され、R2
には“x'0002”、R3には“x'0003”、R4には“x'000
4”、R5には“x'0005”が格納されていたとする。
【0267】(タイミングt1) IFステージ:命令1[SUBIFNXZF R0,R1] タイミングt11:命令1がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0268】(タイミングt2) DECステージ:命令1[SUBIFNXZF R0,R1] タイミングt21:命令ラッチ714に格納された命令
1が命令解読器705で解読され、R0レジスタから値が
読出されD1ラッチ710に“x'0001”が格納される。
R1レジスタから値が読み出されD2ラッチ711に“x'
0001”が格納される。
【0269】タイミングt22:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”から
“x'11”にセットする。排他的条件701の値を表わす
レジスタとしてゼロフラグがセレクタ702により選択
される。
【0270】IFステージ:命令2[MOV R2,R3] タイミングt21:命令2がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0271】(タイミングt3) EXステージ:命令1[SUBIFNXZF R0,R1] タイミングt31:命令無効化信号707は初期状態の
まま“0”となっており、EXステージの実行が行われ、
命令1の実行が開始される。D1ラッチ710とD2ラ
ッチ711に格納された値が演算器703で減算され
る。ここではD1ラッチ710とD2ラッチ711には
同値“x'0001”が格納されているので、減算結果として
R1レジスタに“x'0000”が格納される。この結果ゼロフ
ラグには“1”が格納される。
【0272】DECステージ:命令2[MOV R2,R3] タイミングt31:命令ラッチ714に格納された命令
2が命令解読器705で解読され、R2レジスタから値が
読み出されD1ラッチ710に“x'0002”が格納され
る。
【0273】タイミングt32:命令無効化制御回路7
08は、条件付き実行ステータス709が“x'11”から
“x'10”に更新する。いま、排他的条件は“1”であ
り、条件付き実行ステータスが“x'10”であるので、図
23(a)に従い、命令無効化信号707が生成され
“0”から“1”に更新される。
【0274】IFステージ:命令3[MOV R5,R4] タイミングt31:命令3がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0275】(タイミングt4) EXステージ:命令2[MOV R2,R3] タイミングt41:命令無効化信号707が“1”であ
るので命令2は無効化され実行されない。つまり、この
例では後続命令のうち命令2は無効化された。
【0276】DECステージ:命令3[MOV R5,R4] タイミングt41:命令ラッチ714に格納された命令
3が命令解読器705で解読され、R5レジスタから値が
読み出されD1ラッチ710に“x'0005”が格納され
る。
【0277】タイミングt42:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'10”から
“x'01”に更新する。いま、排他的条件は“1”であ
り、条件付き実行ステータスが“x'01”であるので、図
23(a)に従い、命令無効化信号707が生成され
“1”が維持される。
【0278】IFステージ:命令4[ADD R3,R6] タイミングt41:命令4がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0279】(タイミングt5) EXステージ:命令3[MOV R5,R4] タイミングt51:命令無効化信号707が“1”であ
るので命令3は無効化される。つまり、この例では後続
命令のうち命令2と命令3が無効化された。
【0280】DECステージ:命令4[ADD R3,R6] タイミングt51:命令ラッチ714に格納された命令
4が命令解読器705で解読され、R3レジスタから値が
読み出されD1ラッチ710に格納される。R6レジスタ
から値が読み出されD2ラッチ711に格納される。
【0281】タイミングt52:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'01”から
“x'00”に更新する。いま、排他的条件は“1”であ
り、条件付き実行ステータスが“x'00”であるので、図
23(a)に従い、命令無効化信号707は生成されず
“1”から“0”に更新される。
【0282】IFステージ:命令5[MOV R4,R7] タイミングt51:命令5がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0283】(タイミングt6) EXステージ:命令4[ADD R3,R6] タイミングt61:命令無効化信号707が“0”であ
るので命令4は実行される。D1ラッチ710に格納さ
れた値とD2ラッチ711に格納された値が演算器70
3で加算されR6レジスタに格納される。
【0284】DECステージ:命令5[MOV R4,R7] タイミングt61:命令ラッチ714に格納された命令
5が命令解読器705で解読され、R4レジスタから値が
読み出されD1ラッチ710に格納される。
【0285】タイミングt62:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”で保
持する。
【0286】IFステージ:命令6[NOP] タイミングt61:命令6がROM717から読み出さ
れ、命令ラッチ714に格納される。
【0287】以上のように本実施の形態によれば、命令
1[SUBIFNXZF R0,R1]により条件としてゼロフラグを選
択し、条件付き実行ステータス709をセットすること
で条件付き実行されるので、後続の命令群には条件指定
フィールドを付加する必要が無く、後続命令群の実行、
無効化を指定することができる。
【0288】なお、上記の説明ではR0レジスタとR1レジ
スタの値を同値として、ゼロフラグの値が“1”となる
場合を示したが、R0レジスタとR1レジスタの値が同値で
はなく“0”となる場合も、命令無効化制御回路708
は図23(a)に従って命令無効化信号707を制御す
ることにより命令無効化制御を実行することができる。
この場合は後続命令のうち命令2と命令3の両方が実行
される。
【0289】また、上記に示した例では、命令1はプロ
セッサステータスワード712のうちゼロフラグを命令
無効化信号707として選択する命令としたが、限定さ
れるものではなく、他のプロセッサステータスワード7
12を選択しても良い。
【0290】(実施形態8)実施形態8として、本発明
の第1および第2のプログラム変換装置の例を示す。実
施形態6では後続命令が1つの命令であったが、本実施
形態8は、後続命令が複数の命令列からなる後続命令群
である。
【0291】本発明のプログラム変換装置を図20、図
24、図26、図27によって説明する。既に説明した
図には同一番号を付して説明を省略する。
【0292】本実施形態8のデータ処理装置の全体構成
例に関しては図20で良く、実施形態6と同様であるの
でここでの説明は省略する。
【0293】本実施形態4のプログラム変換装置による
プログラムの書き換え動作の例を説明する。図26の書
き換え前のアセンブリ言語プログラムを図24の機械語
プログラムに書き換える例を示す。図24の機械語プロ
グラムは、実施形態7で用いたプログラムと同様であ
る。図24、図26のニーモニック表記した命令はすで
に説明しており、ADD命令、MOV命令などで使用している
オペランド(即値、レジスタ)が異なるだけであるので
ここでは説明を省略する。
【0294】図27は、本実施形態8におけるプログラ
ム変換装置による第2の処理207の前半部を示す図で
ある。この第2の処理207は、第1の処理206にお
いて検出された条件・判断命令を、演算命令と、該演算
命令に後続し該演算命令に伴う後続命令群の命令列に書
き換える命令書き換え手段を実行する処理である。この
第2の処理207は、第1の判定手段208と命令検索
手段210と命令書き換え手段205によって実現され
る。
【0295】なお、図27の211cは図10の211
に該当する部分を示しており、それ以外は図10と同様
であるとして、ここでは説明を省略する。
【0296】ステップ242cは、第1の判定手段20
8で実行され、配列2からJ+1、J+2の命令番号を
検索する操作である。つまり、ステップ242cは、第
1の命令検出手段により検出された命令に後続して、第
2の命令検出手段により検出された命令群があるかを判
定する第1の判定手段を実行する。
【0297】ステップ243cは、命令番号に相当する
命令を読み出し記憶する操作である(以下、命令A、命
令B、命令C)。
【0298】ステップ244cは、命令Bの条件と命令
Cの条件が同一の条件1であるか判定する操作である。
【0299】ステップ245cは、命令Aと同じ処理を
実行可能で、かつ条件1を後続に配置可能で、かつ後続
の2命令を対象とする指示命令が存在するか判定する操
作である。つまり、ステップ245cは、機械語命令コ
ードの中から、第1の命令検出手段により検出された命
令と同一の処理実行を示し、かつ、後続の条件付き命令
群の実行条件を示す指示命令を検索する指示命令検索手
段を実行する処理である。
【0300】以上が本実施形態8の211cの処理であ
る。
【0301】以下、図26の書き換え前アセンブリ言語
プログラムを図24の機械語プログラムに書き換える動
作を第1の処理206と第2の処理207の順番に説明
する。なお、1行目の命令を命令(1)、2行目の命令
を命令(2)のように括弧で以下表現する。
【0302】(第1の処理206)実施形態1と同様に
処理され、最終的に、配列1には1、4が、配列2には
2、3が格納されており、それらは第2の処理207で
使用される。
【0303】(第2の処理207) ステップ240:配列1の1番目の要素から処理を開始
する。
【0304】ステップ241:配列1から1番目の命令
番号である1を読み出し変数Jに格納する。
【0305】ステップ242c:第1の判定手段208
において、配列2からJ+1、J+2の命令番号を検索
する。いまJ=1であり、命令(2)および命令(3)
は存在するのでステップ243cに移る。
【0306】ステップ243c:命令列記憶装置から変
数JからJ+2に対応する命令を読み出し、それぞれ命
令A(SUB)、命令B(MOVIFNZF)、命令C(MOVIFNZF)と
して記憶する。
【0307】ステップ244c:命令Bの条件と命令C
の条件が同一の条件であるか判定する。ここでは同一で
あるのでそれを条件1として次の操作に移る。
【0308】ステップ245c:命令検索手段210に
おいて、命令Aと同じ処理を実行可能で、かつ条件1を
後続に配置可能で、かつ後続の2つの命令を対象とする
指示命令が存在するか判定する。ここではSUBIFNXZFが
候補として存在するので、ステップ246に移る。
【0309】ステップ246:命令書き換え手段205
において、命令AをSUBIFNXZFに置き換える。また命令
Bと命令Cに対応する処理を無条件に実行する命令に置
き換える。次にステップ247に移る。
【0310】ステップ247:命令書き換え手段205
において、命令列記憶装置の変数JからJ+2に対応す
る命令を、それぞれ命令A(SUBIFXZF)、命令B(MO
V)、命令C(MOV)に書き換える。
【0311】ステップ248:配列1のすべての命令番
号を処理したか判定する。まだ残っているのでステップ
249に移る。
【0312】ステップ249:配列1における次の命令
番号を処理するように、配列1の要素を1増分する。
【0313】ステップ241:配列1から2番目の命令
番号である4を読み出し変数Jに格納する。
【0314】ステップ242:第1の命令検出手段20
2において、配列2から変数J+1、J+2の命令番号
を検索する。いまJ=4であり、配列2に命令(5)お
よび命令(6)が存在するか否かを調べる。ここでは存
在しないので、次にステップ248に移る。
【0315】ステップ248:配列1のすべての命令番
号を処理したか判定する。配列1にもう命令番号は存在
しないのでステップ250に移る。
【0316】ステップ250:第2の処理207を完了
する。
【0317】以上のように、本実施形態8によれば、命
令列記憶装置201に格納された図26の命令(1)と
命令(2)と命令(3)が、図24の命令(1)と命令
(2)と命令(3)に書き換えられる。
【0318】以上、説明したように、プログラム変換装
置62は、命令列記憶装置201に最終的に格納される
命令群を、実行するための条件を明示した指示命令と、
実行するための条件が明示されない命令群とからなる命
令列で書き換えることが可能である。上記の手法をとれ
ば、従来の技術と比べ、多種多様な無条件実行命令を、
新たにコード割付けすることなく、プロセッサの状態に
応じて条件付き実行する命令として処理することが可能
となる。
【0319】なお、本実施形態8のプログラム変換装置
にはアセンブリ言語プログラムを入力するものとした
が、機械語プログラムを入力として新たな機械語プログ
ラムを生成するプログラム変換装置としてもよい。
【0320】(実施形態9)本発明の実施形態9のデー
タ処理装置は、命令をフェッチ、解読、実行からなる少
なくとも3段以上のパイプラインによって処理するデー
タ処理装置であって、命令を先読みし記憶しておく命令
先読み手段と、命令を解読する命令解読手段と、命令を
実行する命令実行手段と、後方に配置された命令あるい
は命令列が無効化されるとき前記命令先読み手段から無
効化すべき命令をスキップするものである。実施形態
1、3、5、7のデータ処理装置では、無効化される命
令はEXステージにおいて実行されないという方式を採っ
ているが、実施形態9のデータ処理装置は、無効化され
る命令はIFステージにおいてその読み込みがスキップさ
れるものである。
【0321】実施形態9のデータ処理装置を図1、図
2、図28、図29、図30、図31によって説明す
る。なお、実施形態1と同様の部分については、同一図
と符号を付与して説明を省略する。
【0322】本実施形態9のデータ処理装置の全体構成
例に関しては図1、プロセッサの構成例に関しては図2
で良く、実施形態1と同様であるのでここでの説明は省
略する。
【0323】図28は命令フェッチ回路706の構成例
を示す図である。141はROM717からの命令であ
る。142は命令先読み制御信号713に応じてバッフ
ァ0とバッファ1に格納された命令を選択する命令セレ
クタである。143は命令解読の対象となる命令であ
る。本実施形態9における命令フェッチ回路706は一
般的な命令キューにより構成されており、ROM717
からの命令141を先読みして記憶するための5つのバ
ッファ0〜バッファ4には、パイプラインを制御するタ
イミングに連動して命令が取り込まれる。先読みされた
命令は、常に番号の小さいバッファ0を先頭に記憶され
るものとする。もし4つの命令が記憶されているときに
はバッファ0からバッファ3に命令は格納されているこ
ととなる。また、命令フェッチ回路706は、IFステー
ジで解読器に必要な命令が存在しない場合には命令をフ
ェッチするために他のステージ(DEC、EXステージ)の
処理を停止させ、他のステージ(DEC、EXステージ)の
処理が伸張(数ステージを要する)された場合には命令
を命令キューが埋まるまで先読みするものとする。な
お、実施の形態1の命令ラッチ714は、本実施の形態
ではバッファ0とバッファ1と命令セレクタ142によ
り構成されている。
【0324】ここで、本実施形態9における命令フェッ
チ回路706の制御方法について図29により説明す
る。命令キューの動作は2通りあり命令先読み制御信号
713により選択され切り替えられる。
【0325】第1の読み方は、図29(a)に示したも
ので、ROM717からの命令はバッファ4に、バッフ
ァ4に記憶された命令はバッファ3へ、バッファ3に記
憶された命令はバッファ2へ、バッファ2に記憶された
命令はバッファ1へ、バッファ1に記憶された命令はバ
ッファ0へ、バッファ0に記憶された命令は解読器へ転
送されるものである。この読み方によれば、命令はシー
ケンス通りに順に読み込まれて行くこととなる。
【0326】第2の読み方は、図29(b)に示したも
ので、ROM717からの命令はバッファ3へ、バッフ
ァ4に記憶された命令はバッファ2へ、バッファ3に記
憶された命令はバッファ1へ、バッファ2に記憶された
命令はバッファ0へ、バッファ1に記憶された命令は解
読器へ転送されるものである。この読み方によれば、命
令は図29(a)に示したバッファよりも時系列的に一
つ進んだバッファに転送され、バッファ1に格納された
命令が解読器に転送されることとなり、一つ分の命令が
スキップされた効果が生じる。
【0327】つまり、命令先読み制御信号713により
バッファ0かバッファ1の命令を選択して命令解読の対
象となる命令143として解読器へ転送することができ
る。つまり、命令セレクタ142は、命令先読み制御信
号713が“0”のとき図29(a)を、“1”のとき
図29(b)を選択するものとする。
【0328】ここで、本実施形態9における命令無効化
制御方法と条件付き実行ステータス709の遷移図を図
30に示す。図30の排他的条件701とは、本発明の
指示命令によって選択されたプロセッサステータスの状
態であり、“0”か“1”の2値をとる。図30の条件
付き実行ステータス709とは、同じく本発明の指示命
令によって後続の命令を条件付き実行している状態を表
している。図30(a)は、命令無効化制御回路708
がEXステージの処理を無効化するか実行するかを表し
ている。ここで、図3(a)と異なり、排他的条件70
1が“1”で条件付き実行ステータス709が“x'01”
の場合は存在しない。
【0329】図30(b)は、条件付き実行ステータス
709の遷移図であり、シーケンサ716により制御さ
れる。条件付き実行ステータス709は、指示命令が解
読された時点で“x'00”から“x'11”にセットされ、次
のDECステージで後続の命令が解読され“x'10”に更新
される。次にシーケンサ716は、排他的条件701が
“1”ならば“x'10”から“x'00”に、排他的条件70
1が“0”ならば“x'10”から“x'01”に条件付き実行
ステータス709を更新する。つまり、シーケンサ71
6は条件付き実行ステータス709が“x'10”のときの
み、排他的条件701に応じて次の値を更新する。
【0330】図30(c)は、命令先読み制御信号71
3の状態表を示す図である。本実施形態9では、排他的
条件と条件付き実行ステータスの状態に応じて命令先読
み制御信号713の状態が決められる。命令先読み制御
信号713が切り替えられることにより先読み方法が図
29(a)となるか図29(b)が決まる。図30
(c)に見るように、排他的条件701が“1”かつ条
件付き実行ステータス709が“x'10”のときのみ命令
先読み制御信号713が“1”となる。
【0331】以上のように構成された本実施形態9によ
るデータ処理装置について、以下その動作を説明する。
なお、以下の説明では実施形態1で用いた、図5の機械
語プログラム1を実行させる。
【0332】図31は、プロセッサ64の動作タイミン
グ図を示すものである。図31は、図5を実行する場合
の動作をパイプラインのIFステージ、DECステージ、EX
ステージで処理される命令をマシンサイクルと呼ばれる
タイミング毎に示している。また、図31に示すように
ステージの前半(例えばタイミングt11)と後半(タ
イミングt12)を表すタイミングにより命令無効化制
御回路708は動作するものとする。特にDECステージ
ではタイミングの後半で命令無効化制御回路708によ
り条件付き実行ステータス709と命令先読み制御信号
713を更新するものとする。また、EXステージでは
タイミングの前半で命令無効化信号707に応じて、こ
のステージで命令を実行するか、命令を無効化するか決
定されるものとする。また、IFステージとDECステー
ジでは、タイミングの前半で命令先読み制御信号713
に応じて、命令フェッチ回路706から命令を読み込む
ものとする。以下、時間が経過する順にタイミング毎に
その動作を説明する。なお、R0とR1には同値である“x'
0001”が格納され、R2には“x'0002”、R3には“x'000
3”、R4には“x'0004”、R5には“x'0005”が格納され
ていたとする。
【0333】(タイミングt1) IFステージ:命令1[SUBIFEZF R0,R1] タイミングt11:命令先読み制御信号713が“0”
であるので、命令1がバッファ1からバッファ0に、命
令2がバッファ2からバッファ1に、それぞれ格納され
る。
【0334】(タイミングt2) DECステージ:命令1[SUBIFEZF R0,R1] タイミングt21:命令先読み制御信号713が“0”
であるので、命令セレクタ142によりタイミングt1
でバッファ0に格納された命令1が命令解読器705に
転送され解読される。R0レジスタから値が読み出されD
1ラッチ710に“x'0001”が格納される。R1レジスタ
から値が読み出されD2ラッチ711にx'0001が格納さ
れる。
【0335】タイミングt22:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'11”にセ
ットする。ゼロフラグが排他的条件701としてセレク
タ702により選択される。
【0336】IFステージ:命令2[MOV R2,R4] タイミングt21:命令先読み制御信号713が“0”
であるので、命令2がバッファ1からバッファ0に、命
令3がバッファ2からバッファ1に、それぞれ格納され
る。
【0337】(タイミングt3) EXステージ:命令1[SUBIFEZF R0,R1] タイミングt31:命令無効化信号707は初期状態の
まま“0”であるので命令1の実行を開始する。D1ラ
ッチ710とD2ラッチ711に格納された値が演算器
703で減算される。ここではD1ラッチ710とD2
ラッチ711には同値“x'0001”が格納されているの
で、減算結果としてR1レジスタ“x'0000”が格納され
る。この結果、ゼロフラグには“1”が格納される。
【0338】DECステージ:命令2[MOV R2,R4] タイミングt31:命令先読み制御信号713が“0”
であるので、命令セレクタ142によりタイミングt2
のバッファ0から命令2が命令解読器705に転送され
解読される。R2レジスタから値が読み出されD1ラッチ
710に“x'0002”が格納される。
【0339】タイミングt32:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'11”から
“x'10”に更新する。ここで、条件付き実行ステータス
709が“x'10”で排他的条件701が“1”であるの
で命令先読み制御信号713は“0”から“1”に更新
される。
【0340】IFステージ:命令3[MOV R3,R4] タイミングt31:命令先読み制御信号713が“0”
であるので、図29(a)の先読み方法に従い、命令3
がバッファ1からバッファ0に、命令4がバッファ2か
らバッファ1に、それぞれ格納される。
【0341】(タイミングt4) EXステージ:命令2[MOV R2,R4] タイミングt41:命令無効化信号707は“0”であ
るので命令2の実行を開始する。D1ラッチ710に格
納された値が演算器703をスルーしてR4レジスタに格
納される。
【0342】DECステージ:命令4[ADD R5,R6] タイミングt41:命令先読み制御信号713が“1”
であるので、図29(b)の先読み方法に従い、命令セ
レクタ142によりタイミングt3のバッファ1から命
令4が命令解読器705に転送され解読される。R5レジ
スタから値が読み出されD1ラッチ710に、R6レジス
タから値が読み出されD2ラッチ711に格納される。
【0343】タイミングt42:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'10”から
“x'00”に更新する。図30(a)に従い、命令無効化
信号707は生成されず、“0”となる。ここで、条件
付き実行ステータス709が“x'00”で排他的条件70
1が“1”であるので命令先読み制御信号713は
“1”から“0”に更新される。
【0344】IFステージ:命令5[NOP] タイミングt41:命令先読み制御信号713が“1”
であるので、図29(b)の先読み方法に従い、命令5
がバッファ2からバッファ0に、命令6がバッファ3か
らバッファ1に、それぞれ格納される。
【0345】(タイミングt5) EXステージ:命令4[ADD R5,R6] タイミングt51:命令無効化信号707は“0”であ
るので、命令4の実行を開始する。D1ラッチ710と
D2ラッチ711の値が加算され結果がR6レジスタに格
納される。
【0346】DECステージ:命令5[NOP] タイミングt51:命令先読み制御信号713が“0”
であるので、命令セレクタ142によりタイミングt4
のバッファ0から命令5が命令解読器705に転送され
解読される。ここではNOP命令のため何もしない。
【0347】タイミングt52:命令無効化制御回路7
08は、条件付き実行ステータス709を“x'00”、命
令先読み制御信号713を“0”として保持する。
【0348】IFステージ:命令6[NOP] タイミングt51:命令先読み制御信号713が“0”
であるので、図29(a)の先読み方法に従い、命令6
がバッファ1からバッファ0に、命令7がバッファ2か
らバッファ1に、それぞれ格納される。
【0349】以上のように、先に示した実施形態1では
命令3をタイミングt5で無効化して命令4をタイミン
グt6で実行していたが、本実施形態9では命令4をタ
イミングt5で実行可能となる。これはタイミングt3
2で命令先読み制御信号713が生成され、タイミング
t42では命令無効化信号707を生成しないように命
令無効化制御回路708が構成されているからである。
【0350】つまり、本実施形態9によれば、本発明に
おける指示命令によりセットされた条件付き実行ステー
タス709がDECステージで更新され、条件付き実行ス
テータス709と排他的条件701に基づき無効化すべ
き命令を確実にスキップさせるために、命令先読み制御
信号713と命令無効化信号707を制御しているの
で、指示命令が解読され排他的条件701に応じて後方
に配置された命令あるいは命令列が無効化されるときに
は、命令先読み手段から無効化すべき命令をスキップし
て前記命令解読手段に命令を転送させることができパイ
プラインハザードを低減できる。
【0351】以上の構成により、分岐命令を削減しパイ
プラインの乱れを低減させる条件付き実行命令を備えた
データ処理装置でも、ある二つの処理のいずれか一方を
条件に従って実行させるような場合分けのプログラムで
は、必ず無効化される命令によってパイプラインの乱れ
が生じていたが、本発明によるデータ処理装置は後方に
配置された命令あるいは命令列が無効化されるときにパ
イプラインの乱れを生じさせること無くデータ処理がで
きる。
【0352】また、本実施形態9では、実施形態1に示
した単一の命令を排他的な条件付き実行命令として実行
する場合であったが、実施の形態2に示した条件の明示
されない2つの命令列を排他的な条件付き実行命令とし
て実行する場合に適用してもよい。このとき後方に配置
された命令列が無効化される場合には、複数の命令(実
施の形態2では2つ)が無効化の対象となるので、パイ
プライン・フラッシュを回避されるステージが多く、よ
り効果的である。このとき、本実施の形態のように単一
の命令をスキップするのに代えて、命令キューは複数の
命令をスキップする機構を備えればよい。また、実施形
態8に示した条件の明示されない1つの命令群を条件付
き実行命令として指示する場合にも、命令列が無効化さ
れる場合には、指示命令のすぐ後に配置された1つの命
令を除いた命令をスキップさせるように構成してもよ
い。
【0353】また、実施形態9ではパイプライン段数を
3段としたが、MEMステージ(メモリアクセス)、W
Bステージ(レジスタ書き戻し)を加えた5段パイプラ
インであってもよく、本実施の形態によりパイプライン
段数を制限するものではない。
【0354】
【発明の効果】本発明のデータ処理装置およびプログラ
ム変換装置によれば、後続の命令列を条件付き実行命令
として先行的に指示する指示命令によって無条件実行命
令を条件付きとして実行できるので、データ処理装置の
命令の種類や割付けの自由度を増やしプログラムメモリ
の小容量化に貢献する。
【0355】さらに、ある条件に応じて二つの処理のど
ちらか一方を実行したり、ある条件が成立するときのみ
決められた処理を実行したりする条件付き実行によるデ
ータ処理を、無効化される処理により本来なら発生する
パイプラインハザードを抑えることによって、データ処
理効率の向上を図ることができるのでその実用的効果は
大きい。
【図面の簡単な説明】
【図1】 本発明のデータ処理装置の概略構成図
【図2】 本発明のプロセッサの構成を示すブロック図
【図3】 本発明の実施形態1における命令無効化制御
方法と条件付き実行ステータス遷移図
【図4】 本発明の実施形態1におけるプロセッサの動
作タイミング図
【図5】 本発明の実施形態1の指示命令を用いた機械
語プログラム1を示す図
【図6】 本発明のプログラム変換装置の概略構成図
【図7】 本発明の実施形態2の書き換え前のアセンブ
リ言語プログラムを示す図
【図8】 本発明の実施形態2の書き換え後の機械語プ
ログラムを示す図
【図9】 本発明の実施形態2のプログラム変換装置に
よる第1の処理を示す図
【図10】 本発明の実施形態2のプログラム変換装置
による第2の処理を示す図
【図11】 本発明の実施形態3の命令無効化制御方法
と条件付き実行ステータス遷移図
【図12】 本発明の実施形態3の指示命令を用いた機
械語プログラム2を示す図
【図13】 本発明の実施形態3のプロセッサの動作タ
イミング図
【図14】 本発明の実施形態3の第1の書き換え前の
アセンブリ言語プログラムを示す図
【図15】 本発明の実施形態3の第2の書き換え前の
アセンブリ言語プログラムを示す図
【図16】 本発明の実施形態4のプログラム変換装置
による第2の処理207の前半部を示す図
【図17】 本発明の実施形態5の命令無効化制御方法
と条件付き実行ステータス遷移図
【図18】 本発明の実施形態5の指示命令を用いた機
械語プログラム3を示す図
【図19】 本発明の実施形態5のプロセッサの動作タ
イミング図
【図20】 本発明の実施形態6のプログラム変換装置
の概略構成図
【図21】 本発明の実施形態6の書き換え前のアセン
ブリ言語プログラムを示す図
【図22】 本発明の実施形態6のプログラム変換装置
による第2の処理207の前半部を示す図
【図23】 本発明の実施形態7の命令無効化制御方法
と条件付き実行ステータス遷移図
【図24】 本発明の実施形態7の指示命令を用いた機
械語プログラム4を示す図
【図25】 本発明の実施形態7のプロセッサの動作タ
イミング図
【図26】 本発明の実施形態8の書き換え前のアセン
ブリ言語プログラムを示す図
【図27】 本発明の実施形態8のプログラム変換装置
による第2の処理207の前半部を示す図
【図28】 本発明の実施形態9の命令フェッチ回路7
06の構成例を示す図
【図29】 本発明の本実施形態9の命令フェッチ回路
706の制御方法を示す図
【図30】 本発明の本実施形態9の命令無効化制御方
法と条件付き実行ステータス709の遷移図
【図31】 本発明の実施形態9のプロセッサの動作タ
イミング図
【図32】 従来の分岐処理を示すフローチャート
【図33】 従来の分岐命令によるアセンブリ言語プロ
グラムを示す図
【図34】 従来の条件付き実行命令によるアセンブリ
言語プログラムを示す図
【図35】 従来の3ビットの条件指定フィールドの具
体例を示す図
【符号の説明】
40 条件指定フィールド 41 命令コード 60 データ処理装置 61 アセンブリ言語プログラム 62 プログラム変換装置 63 機械語プログラム 64 プロセッサ 141 ROMからの命令 142 命令セレクタ 143 命令解読の対象となる命令 201 命令列記憶装置 202 第1命令検出手段 203 第2命令検出手段 205 命令列書き換え手段 206 第1の処理 207 第2の処理 208 第1判定手段 209 第2判定手段 210 命令検索手段 211 第2の処理の前半部 701 排他的条件 702 セレクタ 703 演算器 704 レジスタファイル 705 命令解読器 706 命令フェッチ回路 707 命令無効化信号 708 命令無効化制御回路 709 条件付き実行ステータス 710 D1ラッチ 711 D2ラッチ 712 プロセッサステータスワード 713 命令先読み制御信号 714 命令ラッチ 715 パイプライン制御信号 716 シーケンサ 717 ROM
【手続補正書】
【提出日】平成13年6月27日(2001.6.2
7)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0068
【補正方法】変更
【補正内容】
【0068】(タイミングt5) EXステージ:命令3[MOV R3,R4] タイミングt51:命令無効化信号707が“1”とな
っているEXステージは実行されず、命令3は無効化され
て実行されない。つまり、この例では後続する命令のう
ち、命令2は実行され、命令3は無効化されて実行され
ない。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0168
【補正方法】変更
【補正内容】
【0168】ステップ244aは、第2の判定手段20
9で実行され、命令と命令の条件1と命令と命令
の条件2が排他的な条件か判定する操作である。つま
り、第1の条件付き命令と前記第2の条件付き命令の実
行条件同士が互いに相反するものであるかを判定する第
2の判定手段を実行する処理である。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0187
【補正方法】変更
【補正内容】
【0187】以上のように、本実施形態4によれば、命
令列記憶装置201に格納された書き換え前のプログラ
ムである図14の命令(1)から命令(5)が、図12
の命令(1)から命令(5)に書き換えられる。なお、
本実施形態4によるプログラム変換装置は、ステップ2
44で2つの条件が排他的か否か判定し、ステップ2
45で4命令の1つ前の命令を、後続の4命令を排他
的な条件付き実行を指示する指示命令に置き換えること
が可能か判定している。このように、プログラム変換装
置62は、命令列記憶装置201に最終的に格納される
命令列を、後続の命令列1とその後に配置された命令列
2を互いに相反する条件が成立するとき実行する命令と
して指示する指示命令を含む命令列に書き換えることが
可能である。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0225
【補正方法】変更
【補正内容】
【0225】IFステージ:命令4[MOV R4,R7] タイミングt41:命令4がROM717から読み出さ
れ、命令ラッチ714に格納される。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0290
【補正方法】変更
【補正内容】
【0290】(実施形態8)実施形態8として、本発明
の第および第のプログラム変換装置の例を示す。実
施形態6では後続命令が1つの命令であったが、本実施
形態8は、後続命令が複数の命令列からなる後続命令群
である。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0352
【補正方法】変更
【補正内容】
【0352】また、本実施形態9では、実施形態1に示
した単一の命令を排他的な条件付き実行命令として実行
する場合であったが、実施の形態に示した条件の明示
されない2つの命令列を排他的な条件付き実行命令とし
て実行する場合に適用してもよい。このとき後方に配置
された命令列が無効化される場合には、複数の命令(実
施の形態では2つ)が無効化の対象となるので、パイ
プライン・フラッシュを回避されるステージが多く、よ
り効果的である。このとき、本実施の形態のように単一
の命令をスキップするのに代えて、命令キューは複数の
命令をスキップする機構を備えればよい。また、実施形
に示した条件の明示されない1つの命令群を条件付
き実行命令として指示する場合にも、命令列が無効化さ
れる場合には、指示命令のすぐ後に配置された1つの命
令を除いた命令をスキップさせるように構成してもよ
い。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】図14
【補正方法】変更
【補正内容】
【図14】 本発明の実施形態の第1の書き換え前の
アセンブリ言語プログラムを示す図
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】図15
【補正方法】変更
【補正内容】
【図15】 本発明の実施形態の第2の書き換え前の
アセンブリ言語プログラムを示す図

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 命令をシーケンスに従って順に読み込ん
    で実行するデータ処理装置であって、 演算命令を読み込むフェッチ部と、 読み込んだ前記演算命令を解読する解読部と、 解読した前記演算命令を実行する実行部と、 前記演算命令の実行結果に従って、前記シーケンスにお
    いて前記演算命令に後続し前記演算命令に伴う一つまた
    は複数の後続命令のうちいずれか一つの後続命令以外の
    後続命令を無効化する命令無効化制御回路を備えたこと
    を特徴とするデータ処理装置。
  2. 【請求項2】 前記後続命令のうちの一つまたは複数の
    後続命令が複数の命令列からなる後続命令群である請求
    項1に記載のデータ処理装置。
  3. 【請求項3】 記述プログラムを読み込んで機械語プロ
    グラムに変換するプログラム変換装置であって、 入力された記述プログラムの命令列から条件・判断を伴
    う命令を検出する命令検出手段と、 前記命令検出手段によって検出された条件・判断命令
    を、演算命令と、該演算命令に後続し該演算命令に伴う
    一つまたは複数の後続命令との命令列に書き換える命令
    書き換え手段を備えたことを特徴とするプログラム変換
    装置。
  4. 【請求項4】 前記後続命令のうちの一つまたは複数の
    後続命令が複数の命令列からなる後続命令群である請求
    項3に記載のプログラム変換装置。
  5. 【請求項5】 命令をシーケンスに従って順に読み込ん
    で実行するデータ処理装置であって、 命令メモリとフェッチ部と解読部と命令実行部と命令無
    効化制御部とを備え、 前記命令メモリに、第1の条件付き命令から当該第1の
    条件の記述を除いた第1の後続命令と、第2の条件付き
    命令から当該第2の条件の記述を除いた第2の後続命令
    と、命令シーケンス上、前記第1の後続命令および第2
    の後続命令の前に配置され、前記第1の後続命令と第2
    の後続命令とが相反する実行条件を持つことおよび前記
    第1の条件と第2の条件から生成された相反実行条件と
    を明示する指示命令とを記憶し、 前記フェッチ部が、前記命令メモリから前記指示命令を
    フェッチし、 前記解読部が、前記フェッチされた指示命令を解読し、 前記命令実行部が、前記解読した指示命令を実行し、 前記命令無効化制御部が、前記指示命令の実行結果より
    前記第1の条件と第2の条件のいずれが成立しているか
    を検知し、前記第1の後続命令と第2の後続命令のうち
    条件が成立していない一方の命令を無効化することを特
    徴とするデータ処理装置。
  6. 【請求項6】 前記第1の条件付き命令、前記第2の条
    件付き命令、前記第1の後続命令、前記第2の後続命令
    のそれぞれが、一つの命令であるかまたは複数の命令列
    からなる命令群である請求項5に記載のデータ処理装
    置。
  7. 【請求項7】 記述プログラムを読み込んで機械語プロ
    グラムに変換するプログラム変換装置であって、 入力された記述プログラムの命令列からプロセッサの状
    態を更新する可能性がある命令を検出する第1の命令検
    出手段と、 前記入力された命令列からプロセッサの状態に応じて実
    行するか否か決定される条件付きの命令を検出する第2
    の命令検出手段と、 前記第1の命令検出手段により検出された命令に後続し
    て、前記第2の命令検出手段により検出された命令であ
    る第1の条件付き命令と第2の条件付き命令の2つの命
    令が連続しているかを判定する第1の判定手段と、 前記第1の条件付き命令と前記第2の条件付き命令の実
    行条件同士が互いに相反するものであるかを判定する第
    2の判定手段と、 機械語命令コードの中から、前記第1の命令検出手段に
    より検出された命令と同一の処理実行を示し、かつ、後
    続する前記第1の条件付き命令および前記第2の条件付
    き命令が互いに相反する条件で実行されるものであるこ
    とを示す指示命令を検索する指示命令検索手段と、 前記第1の命令検出手段と前記第2の命令検出手段によ
    って検出された命令列を、前記第1の条件付き命令から
    当該第1の条件記述を除いた第1の後続命令と、前記第
    2の条件付き命令から当該第2の条件記述を除いた第2
    の後続命令と、前記指示命令とに書き換える命令書き換
    え手段とを備えたことを特徴とするプログラム変換装
    置。
  8. 【請求項8】 前記第1の条件付き命令、前記第2の条
    件付き命令、前記第1の後続命令、前記第2の後続命令
    のそれぞれが、一つの命令であるかまたは複数の命令列
    からなる命令群である請求項7に記載のプログラム変換
    装置。
  9. 【請求項9】 命令をシーケンスに従って順に読み込ん
    で実行するデータ処理装置であって、 演算命令を読み込むフェッチ部と、 読み込んだ前記演算命令を解読する解読部と、 解読した前記演算命令を実行する実行部と、 前記演算命令の実行結果に従って、前記シーケンスにお
    いて前記演算命令に後続し前記演算命令に伴う後続命令
    を無効化するか否か判断し、該判断に従って該後続命令
    を無効化する命令無効化制御回路を備えたことを特徴と
    するデータ処理装置。
  10. 【請求項10】 前記後続命令が複数の命令列からなる
    後続命令群である請求項9に記載のデータ処理装置。
  11. 【請求項11】 記述プログラムを読み込んで機械語プ
    ログラムに変換するプログラム変換装置であって、 入力された記述プログラムの命令列から条件・判断を伴
    う命令を検出する命令検出手段と、 前記命令検出手段によって検出された条件・判断命令
    を、演算命令と、該演算命令に後続し該演算命令に伴う
    後続命令の命令列に書き換える命令書き換え手段を備え
    たことを特徴とするプログラム変換装置。
  12. 【請求項12】 前記後続命令が複数の命令列からなる
    後続命令群である請求項11に記載のプログラム変換装
    置。
  13. 【請求項13】 命令をシーケンスに従って読み込んで
    実行するデータ処理装置であって、 命令メモリとフェッチ部と解読部と命令実行部と命令無
    効化制御部とを備え、 前記命令メモリが、条件付き命令から当該条件の記述を
    除いた後続命令と、命令シーケンス上、前記後続命令の
    前に配置され、前記後続命令が実行条件を持つことおよ
    び前記実行条件を明示する後続実行条件指示命令とを記
    憶し、 前記フェッチ部が、前記命令メモリから前記後続実行条
    件指示命令をフェッチし、 前記解読部が、前記フェッチされた後続実行条件指示命
    令を解読し、 前記命令実行部が、前記解読した後続実行条件指示命令
    を実行し、 前記命令無効化制御部が、前記後続実行条件指示命令の
    実行結果より前記実行条件が成立しているかを検知し、
    前記実行条件が成立していない場合、前記後続命令を無
    効化することを特徴とするデータ処理装置。
  14. 【請求項14】 前記条件付き命令、前記後続命令それ
    ぞれが、複数の命令列からなる命令群である請求項13
    に記載のデータ処理装置。
  15. 【請求項15】 記述プログラムを読み込んで機械語プ
    ログラムに変換するプログラム変換装置であって、 入力された記述プログラムの命令列からプロセッサの状
    態を更新する可能性がある命令を検出する第1の命令検
    出手段と、 前記入力された命令列からプロセッサの状態に応じて実
    行するか否か決定される条件付きの命令を検出する第2
    の命令検出手段と、 前記第1の命令検出手段により検出された命令に後続し
    て、前記第2の命令検出手段により検出された命令があ
    るかを判定する第1の判定手段と、 機械語命令コードの中から、前記第1の命令検出手段に
    より検出された命令と同一の処理実行を示し、かつ、後
    続の条件付き命令の実行条件を示す後続実行条件指示命
    令を検索する指示命令検索手段と、 前記第1の命令検出手段と第2の命令検出手段によって
    検出された命令列を、前記条件付き命令から当該条件記
    述を除いた条件隠し命令と前記後続実行条件指示命令に
    書き換える命令書き換え手段とを備えたことを特徴とす
    るプログラム変換装置。
  16. 【請求項16】 前記条件付き命令、前記後続命令のそ
    れぞれが、複数の命令列からなる命令群である請求項1
    5に記載のプログラム変換装置。
  17. 【請求項17】 前記命令無効化制御部が、前記フェッ
    チ部に対して無効化した前記後続命令の読み込みをスキ
    ップさせる請求項1、2、5、6、9、10、13、1
    4のいずれかに記載のデータ処理装置。
JP2000202674A 2000-07-04 2000-07-04 データ処理装置およびプログラム変換装置 Expired - Fee Related JP3532835B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000202674A JP3532835B2 (ja) 2000-07-04 2000-07-04 データ処理装置およびプログラム変換装置
US09/894,205 US7010670B2 (en) 2000-07-04 2001-06-28 Data processing device that controls an overriding of a subsequent instruction in accordance with a conditional execution status updated by a sequencer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000202674A JP3532835B2 (ja) 2000-07-04 2000-07-04 データ処理装置およびプログラム変換装置

Publications (2)

Publication Number Publication Date
JP2002024008A true JP2002024008A (ja) 2002-01-25
JP3532835B2 JP3532835B2 (ja) 2004-05-31

Family

ID=18700167

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000202674A Expired - Fee Related JP3532835B2 (ja) 2000-07-04 2000-07-04 データ処理装置およびプログラム変換装置

Country Status (2)

Country Link
US (1) US7010670B2 (ja)
JP (1) JP3532835B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7178011B2 (en) 2003-06-05 2007-02-13 Arm Limited Predication instruction within a data processing system

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988187B2 (en) * 2002-03-21 2006-01-17 Sony Computer Entertainment Inc. Counting instructions to skip in superscaler processor
US9003376B2 (en) * 2002-08-09 2015-04-07 Texas Instruments Incorporated Software breakpoints with tailoring for multiple processor shared memory or multiple thread systems
US7793079B2 (en) * 2007-06-27 2010-09-07 Qualcomm Incorporated Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US8244739B2 (en) * 2009-01-23 2012-08-14 Nec Corporation Data retrieval device using a skip table
US9195466B2 (en) * 2012-05-16 2015-11-24 Qualcomm Incorporated Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US10255074B2 (en) 2015-09-11 2019-04-09 Qualcomm Incorporated Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3577190A (en) * 1968-06-26 1971-05-04 Ibm Apparatus in a digital computer for allowing the skipping of predetermined instructions in a sequence of instructions, in response to the occurrence of certain conditions
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
US4539635A (en) * 1980-02-11 1985-09-03 At&T Bell Laboratories Pipelined digital processor arranged for conditional operation
JPS62262140A (ja) 1986-05-08 1987-11-14 Nec Ic Microcomput Syst Ltd マイクロコンピユ−タ
JPH0269826A (ja) 1988-09-06 1990-03-08 Fujitsu Ltd 条件付命令制御方式
JPH03269728A (ja) 1990-03-20 1991-12-02 Fujitsu Ltd パイプライン計算機における命令実行制御方式
JPH06242948A (ja) 1993-02-16 1994-09-02 Fujitsu Ltd パイプライン処理計算機
US5761467A (en) * 1993-09-28 1998-06-02 Mitsubishi Denki Kabushiki Kaisha System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JPH1196006A (ja) 1997-09-19 1999-04-09 Hitachi Ltd 情報処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7178011B2 (en) 2003-06-05 2007-02-13 Arm Limited Predication instruction within a data processing system
KR101016713B1 (ko) 2003-06-05 2011-02-25 에이알엠 리미티드 데이터 처리 시스템 내의 예측 명령

Also Published As

Publication number Publication date
US7010670B2 (en) 2006-03-07
US20020019929A1 (en) 2002-02-14
JP3532835B2 (ja) 2004-05-31

Similar Documents

Publication Publication Date Title
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
JP2816248B2 (ja) データプロセッサ
US6615333B1 (en) Data processing device, method of executing a program and method of compiling
CN106681695B (zh) 提前取出分支目标缓冲器
JPH0785223B2 (ja) デジタル・コンピュータ及び分岐命令実行方法
JP3558163B2 (ja) 拡張命令語縮約装置
JP4228241B2 (ja) 演算処理装置
JP5335440B2 (ja) オペランドの早期の条件付き選択
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US7793078B2 (en) Multiple instruction set data processing system with conditional branch instructions of a first instruction set and a second instruction set sharing a same instruction encoding
JP3532835B2 (ja) データ処理装置およびプログラム変換装置
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
JP2008071061A (ja) 情報処理装置
JP3708022B2 (ja) プロセッサ
JP2004334773A (ja) 情報処理装置
US6862680B2 (en) Microprocessor processing specified instructions as operands
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP5105359B2 (ja) 中央処理装置、選択回路および選択方法
JPH03269728A (ja) パイプライン計算機における命令実行制御方式
JP4002288B2 (ja) 情報処理装置
JP2591325B2 (ja) 分岐制御装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20031210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040304

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080312

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090312

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100312

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110312

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110312

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees