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

データ処理装置 Download PDF

Info

Publication number
JP3578883B2
JP3578883B2 JP01940197A JP1940197A JP3578883B2 JP 3578883 B2 JP3578883 B2 JP 3578883B2 JP 01940197 A JP01940197 A JP 01940197A JP 1940197 A JP1940197 A JP 1940197A JP 3578883 B2 JP3578883 B2 JP 3578883B2
Authority
JP
Japan
Prior art keywords
instruction
data
executed
register
pipeline
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 - Fee Related
Application number
JP01940197A
Other languages
English (en)
Other versions
JPH10222368A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP01940197A priority Critical patent/JP3578883B2/ja
Priority to US08/857,461 priority patent/US5941984A/en
Publication of JPH10222368A publication Critical patent/JPH10222368A/ja
Application granted granted Critical
Publication of JP3578883B2 publication Critical patent/JP3578883B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、単一命令内に含まれる複数個の副命令をそれぞれ独立に実行するための命令実行パイプラインを備え、データ干渉が発生した場合でも効率良く動作可能なデータ処理装置であるマイクロプロセッサに関するものである。
【0002】
【従来の技術】
データ処理装置としてのマイクロプロセッサ内の複数の実行ユニットにおいて実行する副命令を複数個含んだ単一命令をVLIW(Very Long Instruction Word)と呼び、このようなVLIWアーキテクチャに基づいた単一命令を実行可能なマイクロプロセッサを、VLIWマイクロプロセッサと呼ぶ。
【0003】
このVLIWマイクロプロセッサは、実行ユニットとしての複数の演算装置で実行される副命令からなる単一命令を実行することで、複数の演算装置を同時に制御する。これにより、マイクロプロセッサ内で命令コードを生成した時点で、確実にそれぞれの演算装置で実行される副命令を単一命令に組み込むことが可能である。これにより、各演算装置の利用効率を向上させることが可能となり、また副命令を実行するための演算装置を特定するデコード回路が不要であり、その結果、命令のデコード処理を高速に実行可能であるという利点を有する。
【0004】
従来のVLIWマイクロプロセッサの一例としては、1996年10月22〜23日に開催されたマイクロプロセッサ・フォーラム(Microprocessor Forum)で発表されたMMAマイクロプロセッサがある。
図34は、MMAのVLIWアーキテクチャ命令を実行する従来のマイクロプロセッサのコアの概略図であり、図において、900はMMAのマイクロプロセッサコア、901はMMAのVLIW命令を実行する一つの実行ユニット、902はMMAのVLIW命令を実行する他の実行ユニット、904はデータRAMである。このように、MMAのマイクロプロセッサでは、一つのVLIW単一命令内に格納されている2つのサブ命令を2つの実行ユニット901、902で同時に実行可能な機能を有している。
【0005】
実行ユニット901は、乗算器910と、アキュムレータ911と、シフタ912と、ALU913より構成されている。また、実行ユニット902は、ALU914と、ロード/ストアユニット915より構成されている。920、921は、実行ユニット901内に含まれる演算器のためのソースデータバスであり、これらのソースデータバス920,921を通じて演算のために必要なデータが汎用レジスタ903より読み出される。また、930,931は、実行ユニット902内に含まれる演算器等のためのソースデータバスであり、これらのソースデータバス930,931を介して演算のために必要なデータが汎用レジスタ903より読み出される。
【0006】
925は、実行ユニット901内に含まれる演算結果を汎用レジスタ903に書き戻すためのライトバックバスである。932、933は、実行ユニット902内に含まれる演算結果等を汎用レジスタ903内に書き戻すためのライトバックバスである。922、923は、乗算器910とアキュムレータ911間を結ぶバスであり、この経路を用いることにより、ペナルティなしに累積加算が可能である。940は、ロード/ストアユニット915とデータRAM904を結ぶ双方向バスであり、オペランドデータのロード/ストアの制御に使用される。
【0007】
図35は、図34に示したMMAマイクロプロセッサコア900内に含まれる実行ユニット901の一部の回路をパイプライン的に配置したブロック図であり、図において、903は汎用レジスタ、913はALU、910a、910bは乗算を行なうための部品であり、それぞれワレス(Wallace)のツリー回路とCPAである。
【0008】
実行ユニット901において、乗算はパイプラインの2ステージで実行することが可能である。921は、汎用レジスタ903からソースデータを読み出すソースデータバス、925は、汎用レジスタ903内に演算結果を書き戻すためのライトバックバス、970、971、972は、ソースデータバス921にデータをドライブする3ステートバッファである。980は、ALU913の演算結果をソースデータバス921に出力するためのバイパス経路、981は、乗算結果をソースデータバス921に出力するためのバイパス経路である。
【0009】
図35に示すように、実行ユニット901内での1つの命令の実行は、F、D、R、E、M、Wの6ステージが必要とされ、これらの各ステージはパイプラインで実行される。このように、1命令を6段のパイプラインで実行するために、データパス用レジスタ(DR)950、951、952,953,954,955、956等が組込まれている。
【0010】
960は命令デコーダである。制御信号もパイプライン的に生成されており、制御パス用レジスタ(CR)961、962、963、964が組込まれている。制御パス用レジスタ962の出力信号は、データパス用レジスタ950のライトイネーブル信号である。制御パス用レジスタ963の出力信号は、3ステートバッファ971、972のイネーブル信号である。制御パス用レジスタ964の出力信号は、3ステートバッファ970のイネーブル信号である。
【0011】
図36は、図35に示した実行ユニット901がサポートしているバイパス処理のタイミングをパイプラインに基づいて説明した図であり、このパイプラインでは、1命令を6段のパイプラインで実行する。図において、1000、1001、1002は、実行ユニット901で実行される連続した3命令のパイプラインを示す。
【0012】
図35で説明したように、ALU913及び乗算器の結果がバイパス経路980、981へ出力されるのはMステージである。Mステージで出力されたバイパスデータは、Rステージにおいてソースデータバス921へ出力される。このようにパイプライン1000で実行される命令コードのデスティネーション指定フィールドとパイプライン1002で実行される命令コードのソース指定フィールドが同じ場合は、パイプライン1000のMステージからパイプライン1002のRステージへのデータのバイパス処理が実行される。このバイパス処理が実行される命令の組合せは、ALU演算命令間、乗算命令間、そしてALU演算命令−乗算命令間である。
【0013】
図37は、図34に示した実行ユニット901と実行ユニット902との間でデータ干渉が発生した場合のパイプラインを説明する図であり、図において、1010、1011、1012は、実行ユニット901で実行される命令のパイプライン、1020、1021、1022は、実行ユニット902で実行される命令のパイプラインである。
【0014】
パイプライン1010で実行される命令コードのデスティネーション指定フィールドとパイプライン1022で実行される命令コードのソース指定フィールドが同じ場合は、図37内の斜線部分に示すように、パイプライン1010の実行結果がWステージで汎用レジスタ903内に書き込まれた後に、パイプライン1022のRステージでそのデータが汎用レジスタ903から読み出される。
【0015】
この場合、2ステージ間パイプライン1022のRステージの実行を、パイプライン1010のWステージが完了するまで停止させる必要がある。パイプライン1012もパイプライン1022に同期してステージが進行していく。
【0016】
【発明が解決しようとする課題】
複数の実行パイプラインを内蔵する従来のVLIWアーキテクチャのマイクロプロセッサは、以上のように構成されているので、異なるパイプラインで各々実行される命令コード間でデータ干渉が発生した場合、データの整合性を保証するため数クロックの間パイプラインの動作を停止する必要があり、結果としてマイクロプロセッサの命令処理動作の速度が低下するという課題があった。
この発明は上記のような課題を解決するためになされたもので、複数のパイプラインを備えるVLIWアーキテクチャのデータ処理装置(マイクロプロセッサ)において、異なるパイプライン間に専用のバイパス経路を設けて、命令処理を高速で実行可能なVLIWアーキテクチャのデータ処理装置を得ることを目的とする。
【0017】
【課題を解決するための手段】
請求項1記載の発明に係るデータ処理装置は、単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記命令実行手段は2つの命令実行手段を備え、前記選択手段は3ステートバッファおよびセレクタから構成され、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、命令実行手段に接続されたソースバスへドライブさせるものである。
【0018】
請求項2記載の発明に係るデータ処理装置は、単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記選択手段は3ステートバッファおよびセレクタからなり、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、複数の命令実行手段に接続されたソースバスへドライブさせるものである。
【0019】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
参考例1
VLIWマイクロプロセッサの基本構成
この発明のデータ処理装置であるVLIWアーキテクチャに基づくVLIWマイクロプロセッサ(以下、VLIWアーキテクチャのマイクロプロセッサあるいはVLIWマイクロプロセッサという)は、少なくとも2つ以上の命令実行パイプラインを備えるものであり、ここでは先ず、後述する各実施の形態のVLIWマイクロプロセッサの構成に関して説明する。
【0020】
ハードウエア構成
図1は、この発明のVLIWマイクロプロセッサの基本的な全体構成を示すブロック図であり、図において、マイクロプロセッサ(データ処理装置)1は、命令デコードユニット(命令デコード手段)2、メモリアクセスユニット(命令実行手段)3、整数演算ユニット(命令実行手段)4、汎用レジスタ5、命令RAM6、データRAM7から構成されている。
【0021】
また、後述する各実施の形態で詳細に説明するが、この発明のVLIWマイクロプロセッサ1は、クロスバイパス処理において各演算ユニット間でのデータの転送を行うバイパス経路(データ転送経路)21〜25、40、41およびクロスバイパス処理の動作を制御するバイパス処理制御回路(制御手段)28、バイパス処理制御回路28の制御のもとでバイパス経路21〜23でのデータの転送を選択する3ステートバッファ(選択手段)29〜31およびセレクタ等が設けられており、バイパス処理制御回路28はそれぞれMUデコーダ8、IUデコーダ9内に設けられている。
【0022】
命令デコードユニット2は、命令RAM6から64ビット幅のIDバスを通じて送られる命令コードをMUデコーダ8、IUデコーダ9を用いてデコードする。命令デコードユニット2は、MUデコーダ8のデコード結果とプロセッサ状態語(PSW)10よりメモリアクセスユニット3への制御信号11を生成し、また、IUデコーダ9のデコード結果とプロセッサ状態語10の値に基づいて整数演算ユニット4への制御信号12を生成する。
【0023】
メモリアクセスユニット3は、PC制御部13、メモリ制御部14、ALU15、シフタ16から構成されている。PC制御部13は、有効なジャンプ演算や分岐演算を含まない命令では、実行した命令のPC値に8を加えて次に実行する命令のPC値を計算し、ジャンプ演算や分岐演算の実行では、実行した命令のPC値に分岐変位を加算したり、演算で指定されたアドレッシングモードに従う計算をしてジャンプ先命令のPC値を計算する。
【0024】
メモリ制御部14は、PC制御部13で計算されたPC値をもとにIAバスを用いて命令RAM6を起動する。また、命令実行に必要なデータをデータメモリのアドレスを転送するOAバス、データを転送するODバスを通じてデータRAM7にアクセスし、汎用レジスタ5にデータ転送する。
メモリアクセスユニット3内のALU15およびシフタ16では、汎用レジスタ5から32ビット幅のS1バス、S2バス、S6バスを通じて転送された最大3ワードのデータを用いて算術論理演算もしくはシフト演算を行い、演算結果はW1バスを介して汎用レジスタ5へ転送される。
【0025】
汎用レジスタ5から読み出された32ビット長のデータは、最大4ワードのデータとしてS1、S2、S6、S5のバスを介してメモリアクセスユニット3へ転送される。これにより、汎用レジスタ5からデータRAM7への2ワードストア命令の実行が実現される。
【0026】
2ワードストア命令では、2つのオペランドを使用しメモリアドレスを計算し、データRAM7に2ワードデータを転送する。また、メモリアクセスユニット3は、W1,W3E,W3Oバスを通じて、メモリアクセスユニット3内での演算結果およびデータRAM7から転送された2ワードのロードデータを、汎用レジスタ5に転送する。
【0027】
整数演算ユニット4は、乗算器17、アキュムレータ18、ALU19、シフタ20から構成されている。乗算器17、ALU19、シフタ20では、汎用レジスタ5から32ビット幅のS3,S4,S5バスを通じて転送された最大3ワードのデータを用いて、算術論理演算もしくはシフト演算を行い、演算結果をW2,W3E,W3Oバスを通じて汎用レジスタ5へ転送する。
【0028】
また、アキュムレータ18は、乗算の結果を累積加算または累積減算して保持する。汎用レジスタ5は、最大6種類のレジスタ値を同時に読み出すことが可能で、読み出されたデータは、それぞれS1、S2、S3、S4、S5、S6バスに接続されている。また、汎用レジスタ5は、W1、W2、W3E、W3Oバスに接続され、最大4種類のレジスタ値を同時に書き込むことが可能である。
【0029】
命令RAM6は、32ビット幅のIAバスと64ビット幅のIDバスに接続されている。IAバスで転送されるアドレスに対応する64ビット長の命令データが命令RAM6から読み出される。データRAM7は、32ビット幅のOAバスと64ビット幅のODバスに接続されている。OAバスで転送されるアドレスに対応する64ビット長のデータが、データRAM7へ書き込まれ、またデータRAM7から読み出される。
【0030】
命令セットとレジスタ
図2は、図1に示したVLIWマイクロプロセッサで用いられる命令フォーマットを示す説明図であり、図において、101は1つの命令で2つの演算を指示する2副命令のフォーマット、102は1つの命令で1つの演算を指示する1演算命令のフォーマットである。
【0031】
2副命令のフォーマット101にはフィールド103とフィールド104からなるフォーマットフィールド、2つの演算フィールド106、107及び各演算フィールドに1つずつ付属する実行条件フィールド105がある。1演算命令のフォーマット102にはフィールド103とフィールド104からなるフォーマットフィールド、フィールド108とフィールド109とフィールド110とからなる演算フィールド及びこの演算フィールドに付属する実行条件フィールド105がある。
【0032】
図3は、図2に示したフィールド103と104からなるフォーマットフィールド(FM)の詳細を示す説明図であり、図において、FM=00の場合、この命令は2演算命令であり、演算フィールド106で指示されたoperation_0 の演算と演算フィールド107で指示されたoperation_1 の演算が、デコード直後のクロックサイクルで並列に実行される。
【0033】
フォーマットフィールドの値がFM=01の場合、この命令は2演算命令であり、演算フィールド106で指示されたoperation_0 の演算がデコード直後のクロックサイクルに実行され、演算フィールド107で指示されたoperation_1 の演算がoperation_0 の演算に対して1クロックサイクル遅れて実行される。
【0034】
フォーマットフィールドの値がFM=10の場合、この命令は2演算命令であり、演算フィールド107で指示されたoperation_1 の演算がデコード直後のクロックサイクルに実行され、演算フィールド106で指示されたoperation_0 の演算がoperation_1 の演算に対して1クロックサイクル遅れて実行される。
【0035】
FM=11の場合、この命令は1演算命令であり、フィールド108、109、110からなる演算フィールドで指示された1つの演算がデコード直後のクロックサイクルで実行される。
【0036】
図4は、図2に示した実行条件フィールド(CC)105の詳細を示す説明図であり、図において、実行条件フィールド105は後述するマイクロプロセッサ1の状態フラグF0及びF1の値に依存して演算フィールド106、107でそれぞれ示されたoperation_0 の演算やoperation_1 の演算及び演算フィールド108、109、110で示された演算が有効であるか無効であるかを定める。
【0037】
演算が有効であるとは、演算結果がレジスタ、メモリ、フラグに反映され、その演算により定義された動作結果が残ることを意味し、演算が無効であるとは演算結果がレジスタ、メモリ、フラグに反映されず、定められた演算の種類には関わらずその演算により無効演算(NOP:no operation)と同じ結果がレジスタやフラグに残ることを意味する。
【0038】
実行条件フィールド105の値CC=000のとき、演算はフラグF0、F1の値に関わらず常に有効である。CC=001のとき、演算はF1の値には関係なくF0=真のときのみ有効である。CC=010のとき、演算はF1の値には関わらずF0=偽のときのみ有効である。CC=011のとき、演算はF0の値には関係なくF1=真のときのみ有効である。CC=100のとき、演算はF0の値には関係なくF1=偽のときのみ有効である。CC=101のとき、演算はF0=真かつF1=真のときのみ有効である。CC=110のとき、演算はF0=真かつF1=偽のときのみ有効である。CC=111のときの演算結果は未定義であり、この値が命令で用いられることはない。
【0039】
図5は、28ビット長で表現される短型の演算フィールド106、107と54ビット長で表現される長型の演算フィールド(図2に示した演算フィールド108、109、110で構成される)の詳細を示す説明図であり、図において111、112、113、114、115、116、117で示される7つのフォーマットは短型の演算フィールド、118、119で示される2つのフォーマットは長型の演算フィールドである。
【0040】
フォーマット111は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、レジスタ番号または6ビット長の即値を指定するフィールド123、フィールド123がレジスタ番号を示すか即値を示すかを指定するフィールド124から構成される。このフォーマット111は、レジスタ間接アドレッシングのメモリアクセス演算に使用される。
【0041】
フォーマット112は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、レジスタ番号または6ビット長の即値を指定するフィールド123、フィールド123がレジスタ番号を示すか即値を示すかを指定するフィールド125から構成される。このフォーマット112は算術演算、論理演算、シフト演算、ビット演算に使用される。
【0042】
フォーマット113は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド126から構成される。このフォーマット113はレジスタ指定によるジャンプ、分岐命令に使用される。
【0043】
フォーマット114は、演算内容を指定するフィールド120、18ビット長のディスプレイスメント(displacement)のフィールド127から構成される。このフォーマット114は、ジャンプ、分岐命令に使用される。
【0044】
フォーマット115は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド121、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129、フィールド121がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド130から構成される。このフォーマット115は、条件ジャンプ、条件分岐命令に使用される。
【0045】
フォーマット116は、演算内容を指定するフィールド120、レジスタの番号を指定するフィールド121、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129から構成される。このフォーマット116は、条件ジャンプ、条件分岐命令、リピート命令に使用される。
【0046】
フォーマット117は、演算内容を指定するフィールド120、レジスタ番号または12ビット長の即値を指定するフィールド128、フィールド128がレジスタ番号を示すか即値を示すかを指定するフィールド129、ディレイド命令のディレイ値を指定するフィールド131から構成される。このフォーマット117は、ディレイドジャンプ、ディレイド分岐命令に使用される。
【0047】
フォーマット118は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、32ビット長の即値を指定するフィールド132から構成される。このフォーマット118は、複雑な算術演算、大きな即値を用いる算術演算、大きなディスプレースメント付きレジスタ間接アドレッシングのメモリアクセス演算や大きな分岐変位の分岐演算、絶対番地へのジャンプ演算などに用いられる。
【0048】
フォーマット119は、演算内容を指定するフィールド120、レジスタの番号を指定する2つのフィールド121、122、32ビット長の即値を指定するフィールド132、フィールド132がゼロ判定による条件ジャンプおよび条件分岐を行うか否かを指定するフィールド133から構成される。このフォーマット119は、大きな分岐変位をもつ条件ジャンプ、条件分岐命令に使用される。
【0049】
図6は、図1に示したマイクロプロセッサのレジスタ構成を示す説明図であり、図において、マイクロプロセッサは、64本の32ビット長の汎用レジスタ5、12本の制御レジスタ150、および2本のアキュムレータ18を備えている。
【0050】
汎用レジスタ5内のレジスタ(R0)140から読み出されたデータ値は、常に0で、汎用レジスタ5内のレジスタ(R0)140への書き込みは無視される。
【0051】
汎用レジスタ5内のレジスタ(R63)は、スタックポインタ(SPU、SPI)であり、図7で後述するように、プロセッサ状態語(PSW)10のSMフィールドの値に依存してユーザスタックポインタ(SPU)141または割り込みスタックポインタ(SPI)142が動作する。
【0052】
制御レジスタ150には、プログラムカウンタ151、プロセッサ状態語10や各種の専用レジスタが含まれている。フォーマット112を用いた演算では、64本の汎用レジスタ5の各レジスタを、上位16ビットと下位16ビットに分けてそれぞれ別々にアクセスできる。また、2本のアキュムレータ18の各々は、上位32ビットと下位32ビットを別々にアクセスできる。
【0053】
図7は、プロセッサ状態語(PSW)10内のフィールドの詳細な構造を示す説明図であり、図において、プロセッサ状態語10の上位16ビットフィールド170は、スタックポインタを切り替えるSMフィールド171、ソフトウェアデバッガトラップ(SDBT)の検出を示すEAフィールド172、SDBTの許可を指定するDBフィールド173、割り込み許可を指定するIEフィールド174、リピート動作の許可を指定するRPフィールド175、モジュロアドレシングの許可を指定するMDフィールド176を備えている。
【0054】
下位16ビットフィールドは、フラグフィールド180である。フラグフィールド180は、8個のフラグフィールドを備えており、その中のF0フラグ181とF1フラグ182は演算の有効/無効を制御する。各フラグの値は、比較演算や算術演算の結果に依存して変化する他、フラグ初期化演算で初期化したり、フラグ値書き込み演算において、任意の値をフラグフィールド180内に書き込むことにより変化する。また、フラグ値読み出し演算を実行することで、フラグフィールド180内の値を読み出すこともできる。
【0055】
以下に、図1に示したVLIWマイクロプロセッサ1で用いられる命令一覧を示す。
【0056】
Figure 0003578883
【0057】
Figure 0003578883
【0058】
Figure 0003578883
【0059】
Figure 0003578883
【0060】
Figure 0003578883
【0061】
Figure 0003578883
【0062】
Figure 0003578883
【0063】
Figure 0003578883
【0064】
Figure 0003578883
【0065】
Figure 0003578883
【0066】
Figure 0003578883
【0067】
Figure 0003578883
【0068】
パイプライン動作
図8は、図1に示したVLIWマイクロプロセッサの並列2命令実行時(FM=00)のパイプライン動作を示す説明図である。パイプラインは、命令フェッチ(F)ステージ191、デコード/アドレス演算(D/A)ステージ192、実行/メモリアクセス(E/M)ステージ193、ライトバック(W)ステージ194から構成される。
【0069】
並列2命令実行時には、メモリアクセスユニット3で実行されるパイプライン190と整数演算ユニット4で実行されるパイプライン195(斜線の部分)が並列に実行される。
【0070】
図9は、一つの命令実行でなされる各処理を4段のパイプラインに割当てた場合の説明図である。まず、Fステージで命令フェッチが実行され、D/Aステージでその命令のデコードが実行される。そして、同じくD/Aステージの前半から汎用レジスタ5に対する読み出し動作が開始され、後半でアドレス計算がなされる。E/Mステージでは、演算及びメモリアクセスが実行される。そして、Wステージの後半で、汎用レジスタ5への書き込みが実行される。これが1命令を実行する際のパイプライン的な処理の概要である。
【0071】
また図9において、パイプラインの下に示しているように、4つのステージの前半(I1、D1、E1、W1)と後半(I2、D2、E2、W2)で行なわれる処理は、それぞれクロックのハイ(High)とロウ(Low)に同期して行なわれている。Fステージの前半と後半での処理を、それぞれI1,I2期間中の処理と呼ぶ。また、Dステージの前半と後半の処理をそれぞれD1,D2期間中の処理と呼ぶ。また、Eステージの前半と後半の処理をそれぞれE1,E2期間中の処理と呼ぶ。また、Wステージの前半と後半の処理をそれぞれW1,W2期間中の処理と呼ぶ。
【0072】
マイクロプロセッサの詳細なブロック図
図10〜図13は、図1に示したVLIWマイクロプロセッサ1のメモリアクセスユニット3と整数演算ユニット4を中心とした詳細な構成を示すブロック図であり、図において、命令デコードユニット2、メモリアクセスユニット3、整数演算ユニット4、汎用レジスタ5、命令RAM6、データRAM7から構成されている。
【0073】
メモリアクセスユニット3は、図1と同様に、ALU15、シフタ16を備えている。またメモリアクセスユニット3は、ALU15、シフタ16の他にメモリ制御、PC制御、演算制御等を行なうための各種演算器やレジスタ等が含まれている。290は、命令フェッチ処理の実行の際に、命令RAM6へのアドレスを保持するための命令アドレスレジスタである。
【0074】
300はメモリへのストア処理を行なう際に、ストアデータの整値を行なうための制御部、330はメモリからのロードデータの符合拡張を行なうための符合拡張部、310はロードとストア命令実行時のポストインクリメント/デクリメントアドレッシングを行なうためのインクリメンタ、320はロード/ストア及び分岐命令等を実行する際にアドレス計算を行なうための加算器、50は、ALU15、シフタ16の結果を保持するレジスタである。
【0075】
またCR0〜CR11は、図6で示した制御レジスタ150、34は、制御レジスタ150内のプログラムカウンタ(PC)CR0をインクリメントするためのインクリメンタ、35はリピート命令やディレイド分岐命令を実行する際に、リピートカウントレジスタCR6の値やリピートエンドアドレスレジスタCR8の値を計算するための加算器である。
【0076】
36は、リピートカウントレジスタCR6の値をデクリメントするためのデクリメンタ、37は命令アドレスレジスタ290の値をインクリメントするためのインクリメンタ、400は命令ブレークアドレスレジスタCR11の値とプログラムカウンタCR0との値を比較し、同じ値であれば一致信号を出力する32ビット比較器である。410は、リピートカウントレジスタCR6の値が0以上であれば有効となる信号を出力する32ビット比較器、42はリピートエンドアドレスレジスタCR8の値と命令アドレスレジスタ290の値を比較し、同じ値であれば一致信号を出力する32ビットの比較器である。
【0077】
43は、モジュロエンドアドレスレジスタCR10の値とインクリメンタ310の値が同じであれば一致信号を出力する32ビット比較器、44は、D1S6BUS バスの値が0であれば有効となる信号を出力するための32ビット比較器である。
【0078】
また整数演算ユニット4は、図1に示す乗算器17としての17a〜17d、ALU19、シフタ20、および図1には図示しなかった飽和演算をするための演算器213を備えている。また、A0、A1は積和演算等を行なう際の累積加算等を行なうためのアキュムレータであり、図1では18に対応する構成要素である。
【0079】
55は、ALU19、シフタ20、飽和演算器の結果を保持するレジスタである。また、図1に示したS1、S2、S3、S4、S5、S6バスは、図10〜図13では、D1S1BUS 、D1S2BUS 、D1S3BUS 、D1S4BUS 、D1S5BUS 、D1S6BUS に対応する。
D1S1BUS のD1は、図9に示すD1期間中にバスがドライブされることを示している。これらのバスの参照文字の先頭がD1であるバスをD1同期バス群と呼ばれる。
【0080】
また、図1上のW1、W2、W3E、W3Oバスは、図10〜図13ではW1W1BUS 、W1W2BUS 、W1W3EBUS、W1W3OBUSとなっている。参照文字W1W1BUS の先頭の文字であるW1は、図9に示すW1期間中にバスがドライブされることを意味する。これら先頭にW1の付いているバスは、W1同期バス群と呼ばれる。また、D2S1BUS 、D2S2BUS 、D2S3BUS 、D2S4BUS 、D2S5MBUS、D2S5IBUS、D2S6BUS の各バスでは、D1同期バス群上のデータを、ラッチを介して半クロック遅らせて、D2の期間中にバスがドライブされる。そのタイミングを変更するラッチは40a、40bである。
【0081】
また41a、41b、41cは、命令デコーダ部より出力された即値データである。これらの即値データは、バスドライバ42a、42b、42c、42dを介して、D1,D2同期バス群に出力される。
【0082】
またE2D1BUS 、E2D3BUS 、E2D4BUS の各バスは、制御レジスタの値や演算器の値を保持するレジスタの値をE2期間中に出力するバスである。また51は、E2D1BUS バス上のデータをW1W1BUS バスに出力するためのライトバックレジスタである。53は、ロードデータの値をW1W3EBUS, W1W3OBUSバス上に出力するためのレジスタである。
【0083】
54は、演算結果保持レジスタ55の値をW1W2BUS バス上に出力するためのライトバックレジスタである。また、60は命令デコードユニット内のPSWレジスタの値をE2D1BUS バスに読み出すための経路である。61はE1CRBUS の値を命令デコードユニット2内のPSWレジスタ内に書き込むための経路である。62は、ALU15から命令デコードユニット2に出力されるフラグの伝搬経路である。
【0084】
63は、ALU19から命令デコードユニットに出力されるフラグの伝搬経路である。64は、飽和演算器213から命令デコードユニット2へ出力されるフラグの伝搬経路である。
【0085】
201は、ロードデータバスM2ODBUS バスの値を符合拡張するための符合拡張部である。200は、ロードデータバスM2ODBUS バスの値を符合拡張部201に取り込むための伝搬経路である。202は、符合拡張部201の値をD2同期バス群に出力するための経路である。また、211は、ライトバックレジスタ55内の値が出力されたバスW1W3EBUS、W1W3OBUSバスの値を取り込むレジスタである。210は、バスW1W3EBUS, W1W3OBUSの値をレジスタ211に取り込むための経路である。
【0086】
212は、レジスタ211の値をD2同期バス群に出力するための経路である。225は、符合拡張部330の値をD2同期バス群に出力するための経路である。226は、ライトバックレジスタ53の値をD1同期バス群に出力するための経路である。221は、ライトバックレジスタ54の値をD1同期バス群に出力するためのバイパス経路(データ転送経路)である。また、500、501、502、503、504は、ダブルワードのデータの内、どちらかのワードデータを選択するためのセレクタ(選択手段)である。
【0087】
以下に、この発明の参考例1のVLIWマイクロプロセッサにおけるクロスバイパス処理を説明する。
【0088】
図9のパイプラインに示されたように、汎用レジスタ5からのデータの読み出しはD1ステージ期間中に実行される。この場合、汎用レジスタ5への書き込み動作はW2ステージ期間中に実行される。このことから、例えば先行する命令の書き込み先(ディスティネーション)レジスタから、直後に実行される命令がデータの読み出し動作を実行したい場合、バイパス経路(データ転送経路)で先行命令の実行結果をパイプラインの前段に渡してやる必要がある。このデータの関係をデータ干渉と呼んでおり、汎用レジスタ5からのデータの読み出し、汎用レジスタ5へのデータの書き込みのタイミングにより、連続する3命令間にデータ干渉が発生することがわかる。
【0089】
このデータ干渉の発生を回避するためのバイパス経路をクロスバイパス(データ転送経路)と呼び、図1に示したこの発明のVLIWマイクロプロセッサにおけるバイパス経路21〜25、40、41に対応するものである。
この参考例1のVLIWマイクロプロセッサ1では、クロスバイパス21をメモリアクセスユニット3および整数演算ユニット4間に設け、クロスバイパス21の途中に3ステートバッファ30を設けている。この3ステートバッファ30は、IUデコーダ9内のバイパス処理制御回路28の制御で動作する。即ち、クロスバイパス21を介して、メモリアクセスユニット3および整数演算ユニット4との間のデータの転送をIUデコーダ9内に設けられたバイパス処理制御回路28で制御することで、メモリアクセスユニット3および整数演算ユニット4で実行される各命令の実行時に発生するデータ干渉を回避させ、マイクロプロセッサ1のパイプライン動作の効率を向上させるものである。
【0090】
次に動作について説明する。
図14は、この参考例1のVLIWマイクロプロセッサで実行される命令コード間のデータ干渉を示す説明図であり、図において、600a、600b、600cはそれぞれメモリアクセスユニットで実行されるWステージ、E/Mステージ、Dステージで実行される命令コードを示す。また、601a、601b、601cはそれぞれ整数演算ユニット4で実行されるWステージ、E/Mステージ、Dステージの命令コードを示す。
【0091】
また、各命令コードの4つのフィールドは、先頭からオペコードとディスティネーションレジスタ指定フィールドと、2つのソースレジスタ指定フィールドを示している。各フィールドに書かれた記号の先頭の2文字は、それぞれのステージとそれぞれの演算ユニットでの実行を示している。すなわち、WMはWステージのメモリアクセスユニットでの実行であることを示している。
【0092】
図14に示すように、連続する3命令間のデータ干渉は、メモリアクセスユニット3で実行される命令コード600a、600b、600cと、整数演算ユニット4で実行される命令コード601a、601b、601cとの間においても発生する。この参考例1では、図14内の矢印で示しているように、メモリアクセスユニット3で実行される命令と、整数演算ユニット4で実行される命令間で発生するデータ干渉を、バイパス経路としてのクロスバイパス21を介して、データをダイレクトに目的とする整数演算ユニット4へ転送することで、解消するものである。
【0093】
図14では、Dステージのメモリアクセスユニット3で実行される命令コードのソースレジスタ指定フィールドdmrb、dmrcと、Wステージ、Eステージの整数演算ユニット4で実行される命令コードのディスティネーション指定フィールドwira、eira間でデータ干渉が発生することを示している。
【0094】
また、Dステージの整数演算ユニット4のソースレジスタ指定フィールドdirbと、E/Mステージのメモリアクセスユニット3で実行されるディスティネーション指定フィールドemra間で、データ干渉が発生することを示している。
【0095】
図15は、クロスバイパス経路21でのデータ転送を制御するための経路選択信号を生成する制御回路28−1の構成を示すブロック図であり、図において、701はソースレジスタ指定フィールドdmrb[0:5]を保持するレジスタ、702はディスティネーションレジスタ指定フィールドwira[0:5]を保持するレジスタ、703はオペコードDMopcを保持するレジスタ、704はオペコードWIopcを保持するレジスタである。
【0096】
705はレジスタ701のソースレジスタ指定フィールドとレジスタ702のディスティネーション指定フィールドとを比較し、各レジスタ値が等しければ一致信号を出力する比較器、706はレジスタ703のオペコードをデコードし、メモリアクセスユニット3のDステージで実行されている命令が何であるかを特定する信号を生成するデコード回路、707はレジスタ704のオペコードをデコードし、整数演算ユニット4のWステージで実行されている命令が何であるかを特定する信号を生成するデコード回路、708は、比較器705からの一致信号とデコード回路706、707からの命令特定信号を基に、たとえば、比較器705、デコード回路706、707から出力される信号値が一致した場合、バイパス経路選択信号を生成する組合せ回路である。
【0097】
この制御回路28−1は、バイパス経路選択信号を生成し、それぞれのクロスバイパス21〜23毎に設けられている3ステートバッファ29、30へ送られる。3ステートバッファ30はこのバイパス経路選択信号を入力し、メモリアクセスユニット3、整数演算ユニット4間に接続されているクロスバイパスを導通させる。
【0098】
図16は、図15に示した経路選択信号を生成する制御回路28−1を備えたバイパス処理制御回路28を示すブロック図であり、図において、28−1は、メモリアクセスユニット3、整数演算ユニット4で実行される副命令のコードから所定のデータを入力してバイパス経路選択信号を生成し出力する制御回路であり、その構成は図15に示したものである。28−2は、メモリアクセスユニット3、整数演算ユニット4で実行される副命令のコードから所定のデータを入力してフラグ経路選択信号を生成し出力する制御回路であり、その構成は図15に示したものである。28−3は、メモリアクセスユニット3、整数演算ユニット4で実行される副命令のコードから所定のデータを入力してセレクタ制御信号を生成し出力するセレクタ制御回路である。既に記載したように、このバイパス処理制御回路28は、MUデコーダ8、IUデコーダ9内にそれぞれ組み込まれている。
【0099】
以上のように、この参考例1によれば、図14に示すようなデータ干渉の発生が予測される演算ユニット間にクロスバイパスを設け、クロスバイパスを介して各演算ユニット間のデータ転送を図15および図16に示す構成の制御回路および3ステートバッファにより制御するように構成したので、例えば、データ干渉が発生した場合であっても、演算ユニット間でクロスバイパスを介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しながら命令を効率良く実行することができる。
【0100】
参考例2
図17は、この発明の参考例2によるVLIWマイクロプロセッサにおけるロード副命令実行のタイミングを示す。なお、参考例2のVLIWマイクロプロセッサの構成は、参考例1のものと同じなのでここでは説明を省略する。
【0101】
この参考例2では、ロード副命令に関する異なるパイプライン間で専用のバイパス経路(データ転送経路)を設けることで、データ干渉を回避させ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行するものである。
【0102】
次に動作について説明する。
ロード副命令はメモリアクセスユニット3でのみ実行される。メモリアクセスユニット3で実行されるロード副命令によりフェッチされたデータは、クロスバイパス経路を介して整数演算ユニット4にクロスバイパスされる。
【0103】
ロード副命令のタイミングは、図17に示すパイプラインのように、D1で命令のデコードを行ない、D2でデータメモリ計算のためのアドレス計算を行なう。Mステージでデータメモリのアクセスを行なう。W2でロードしてきたデータを汎用レジスタ5に書き込む。M2でロードデータのクロスバイパスを行なう。
【0104】
図18は、ロードデータのクロスバイパスの行なわれるタイミングを示すタイミング図であり、図中の白で示すパイプラインが、メモリアクセスユニット3で実行されているパイプラインである。斜線部分のパイプラインは、整数演算ユニット4で実行されているパイプラインである。
【0105】
800は、メモリアクセスユニット3で実行されたロード副命令(ld2w r10, r2, r3)のパイプラインである。ロード副命令は、図17のパイプライン図で説明したようなタイミングで各種処理が実行される。801は、ロード副令からクロスバイパス経由でデータをもらう、整数演算ユニット4で実行される加算命令(add r21, r10, r5)のパイプラインである。パイプライン800のM2からパイプライン801のD2へ、汎用レジスタR10へ書き込まれるロードデータがクロスバイパスされている。
【0106】
図10〜図13に示すマイクロプロセッサ1の詳細な構成を示すブロック図で、図18で説明したロードデータのクロスバイパス処理の説明を行なう。
図10〜図13において、ロードデータのクロスバイパスを行なう経路は、経路200→符合拡張部201→経路202である。
【0107】
パイプライン800のMステージでメモリアクセスユニット3はメモリアクセス処理を開始する。M1からデータメモリアクセス用のアドレスをアドレスバスM1OABUS に出力する。それに対して、データRAM7はロードデータをM2期間中にバスM2ODBUS に出力する。ロードデータバスM2ODBUS 上のデータは、経路200を通って符合拡張部201に入力される。符合拡張部201のデータは、クロスバイパス経路202を通って整数演算ユニット4のD2同期バス群に出力される。この出力タイミングは、バイパス処理制御回路28が、3ステートバッファ30を制御して行い、図18のパイプライン801のDステージのタイミングに相当する。ゆえに、パイプライン800のMステージからパイプライン801のDステージへのバイパス処理が実行されたことになる。
【0108】
このバイパス処理制御回路28は、ロード副命令のデスティネーションレジスタ指定フィールドの値と、他のパイプラインで実行される前記ロード副命令のソースレジスタ指定フィールドの値とを比較し、比較結果に基づいてクロスバイパス経路を導通させる。
【0109】
以上のように、この参考例2によれば、図18に示すように、ロード副命令のパイプライン間でデータ干渉の発生が予測される演算ユニット間にクロスバイパス経路を設け、クロスバイパス経路を介して各演算ユニット間のデータ転送を図15および図16に示す構成の制御回路および3ステートバッファにより制御するように構成したので、例えば、ロード命令のパイプライン間でデータ干渉が発生した場合であっても、演算ユニット間でクロスバイパス経路を介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【0110】
参考例3
図19は、この発明の参考例3によるVLIWマイクロプロセッサにおける乗算命令実行のタイミングを示す。なお、参考例3のVLIWマイクロプロセッサの構成は、参考例1のものと同じなのでここではその説明を省略する。
【0111】
この参考例3では、乗算副命令に関する異なるパイプライン間で専用のバイパス経路(データ転送経路)を設けることで、データ干渉を回避させ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行するものである。
【0112】
次に動作について説明する。
乗算副命令は整数演算ユニット4でのみ実行される。バイパス処理制御回路28が3ステートバッファ29を制御し、これにより整数演算ユニット4で実行される乗算副命令により生成された演算結果は、バイパス処理制御回路28の制御のもとで動作する3ステートバッファ29により、クロスバイパス経路22を介してメモリアクセスユニット3へクロスバイパスされる。
【0113】
乗算副命令のタイミングは、図19に示すように、まずD1で命令のデコードを行なう。そして、それと並行してD1,D2期間中に、汎用レジスタ5から乗算器17の入力ラッチまでソースデータの読み出しを行なう。そして、E1,E2期間中に乗算を行なう。そしてその乗算結果をW1期間中にライトバックバスに出力し、W2期間中に汎用レジスタ5に書き込みを行なう。
【0114】
乗算結果のクロスバイパス処理はW2期間中に行なわれる。すなわち乗算演算は処理に多くの時間を必要とし、乗算結果が生成されるのはW1であるため、E2期間中のバイパス処理は不可能であり、W2期間中にクロスバイパスを行なっている。
【0115】
クロスバイパスの動作タイミングは、バイパス処理制御回路28の制御のもとで動作する3ステートバッファ29の制御のもとに実行され、クロスバイパス22を通じてデータが転送される。
【0116】
図20は、乗算結果のクロスバイパスの行なわれるタイミングを示すタイミング図であり、図において、白の部分がメモリアクセスユニット3で実行されているパイプラインであり、斜線部分が整数演算ユニット4で実行されているパイプラインである。
【0117】
802は、整数演算ユニット4で実行された乗算副命令(mul2hr10, r2, r3)のパイプラインである。乗算副命令は、図19に示すパイプライン図で説明したタイミングで各種処理が実行される。803は、乗算副命令からクロスバイパス経路22を経由してデータを受け取るメモリアクセスユニット3で実行される加算命令(add r20, r10, r4)のパイプラインである。
【0118】
パイプライン802のW2からパイプライン803のD2へ乗算結果がクロスバイパスされている。このように、W2期間中にバイパス処理を行なうために、それを最高速でバイパスしたとしても、2命令後にしかクロスバイパスすることができない。
【0119】
次に、図10〜図13に示すVLIWマイクロプロセッサの詳細な構成を示すブロック図を用いて、図20で説明した乗算結果のクロスバイパス処理の説明を行なう。
【0120】
図10〜図13において、乗算結果のクロスバイパスを行なう経路は、クロスバイパス21→レジスタ211→経路212である。パイプライン802のEステージで行なった乗算結果はレジスタ57に保持される。レジスタ57内に格納された結果は、E2D3BUS, E2D4BUSを通してW1期間中にライトバックレジスタ56に取り込まれる。
【0121】
そして、同じW1期間中にライトバックレジスタ56の値は、W1W3EBUS, W1W3OBUSバスに出力され、W2期間中に汎用レジスタ5に書き込まれる。乗算結果は、汎用レジスタ5に書き込まれるのと同じタイミングで、レジスタ211内に取り込まれる。レジスタ211の値は、クロスバイパス212を通してメモリアクセスユニット3のD2同期バス群に出力される。この出力タイミングは、図20に示したパイプライン803のDステージのタイミングに相当する。
【0122】
ゆえに、パイプライン802のWステージからパイプライン803のDステージへのバイパス処理が実行されたことになる。
【0123】
以上のように、この参考例3によれば、乗算副命令のパイプライン間でデータ干渉の発生が予測される演算ユニット間にクロスバイパス経路を設け、クロスバイパス経路を介して各演算ユニット間のデータ転送を図15および図16に示す構成の制御回路および3ステートバッファにより制御するように構成したので、例えば、乗算副命令のパイプライン間でデータ干渉が発生した場合であっても、演算ユニット間でクロスバイパス経路を介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【0124】
参考例4
図21は、参考例4のVLIWマイクロプロセッサにおけるALU演算副命令(または、ALU算術副命令ともいう)の実行を示すタイミング図である。なお、参考例4のVLIWマイクロプロセッサの構成は、参考例1に示したものと同じなので、ここでは説明を省略する。
【0125】
参考例4では、ALU算術副命令に関する異なるパイプライン間で専用のバイパス経路を設けることで、データ干渉を回避させ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行するものである。
【0126】
次に動作について説明する。
ALU演算命令は、メモリアクセスユニット3および整数演算ユニット4双方のALU15,19で実行される。この参考例4では、整数演算ユニット4で実行されるALU演算命令により生成された演算結果を、メモリアクセスユニット3にクロスバイパスする場合について説明する。なお、メモリアクセスユニット3で実行されるALU演算命令により生成された演算結果を、整数演算ユニット4にクロスバイパスする場合も同様の動作で行われるので、ここでは説明を省略する。
【0127】
ALU演算副命令のパイプラインのタイミングは、図に示すように、まずD1でALU演算副命令のデコードを行なう。そして、それと並行してD1,D2期間中に、汎用レジスタ5からALU19の入力ラッチまでソースデータの読み出しを行なう。そして、E1,E2期間中にALU演算を行なう。その後、演算結果は、W1期間中にライトバックバスに出力し、W2期間中に汎用レジスタ5に書き込みを行なう。演算結果のクロスバイパス処理はW2期間中に行なわれる。
【0128】
図22は、ALU演算副命令の演算結果のクロスバイパスが行なわれるタイミングを示す。図中の白の部分はメモリアクセスユニット3で実行されているパイプラインを示し、斜線部分は整数演算ユニット4で実行されているパイプラインを示す。
【0129】
804は、整数演算ユニット4で実行されたALU演算副命令(add r10, r2, r3) のパイプラインである。ALU演算副命令は、図21に示したパイプラインで説明したようなタイミングで各種処理が実行される。805は、ALU演算副命令からクロスバイパス経由でデータをもらう、メモリアクセスユニット3で実行される加算命令(add r20, r10, r4)のパイプラインである。
【0130】
パイプライン804のW2からパイプライン805のD2へALU演算副命令の演算結果がクロスバイパスされている。このように、W2期間中にバイパス処理を行なうために、たとえ最高速でバイパスしたとしても、2命令の実行後にしか演算結果をクロスバイパスすることができない。
【0131】
次に、図10〜図13に示したマイクロプロセッサの詳細な構成を示すブロック図で、図22で説明した乗算結果のクロスバイパス処理の説明を行なう。
【0132】
図10〜図13において、そのロードデータのクロスバイパスを行なう経路は、経路221である。パイプライン804のEステージで行なったALU演算副命令の演算結果はレジスタ55内に保持される。レジスタ55の結果は、W1期間中にライトバックレジスタ54に取り込まれる。
【0133】
そして、同じW1期間中にライトバックレジスタ54の値は、W1W2BUS バスに出力され、W2期間中に汎用レジスタ5に書き込まれる。ALU演算副命令の演算結果は、W1W2BUS バスに出力されるのと同じタイミングで経路221を通してD1S5BUS に出力される。
【0134】
D1S5BUS は、メモリアクセスユニット3と整数演算ユニット4で共通のバスであるので、D1S5BUS 上のデータはメモリアクセスユニット3で使用可能である。この出力タイミングは、図22のパイプライン804のWステージのタイミングに相当する。ゆえに、パイプライン804のWステージからパイプライン805のDステージへのバイパス処理が実行される。
【0135】
以上のように、この参考例4によれば、図22に示すように、ALU演算副命令のパイプライン間でデータ干渉の発生が予測される演算ユニット間にクロスバイパス経路(データ転送経路)を設け、クロスバイパス経路を介して各演算ユニット間のデータ転送を図15および図16に示す構成のバイパス処理制御回路および3ステートバッファにより制御するように構成したので、例えば、ALU演算副命令のパイプライン間でデータ干渉が発生した場合であっても、演算ユニット間でクロスバイパス経路を介してダイレクトにデータの受け渡しを行うことができ、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【0136】
参考例5
図23は、参考例5のVLIWマイクロプロセッサにおけるフラグ操作命令を実行する回路を示すブロック図であり、このフラグ操作命令を実行する回路710〜713、732、733は、図1および図10〜図13に示す命令デコードユニット2内のプロセッサ状態語10内に含まれている。その他の構成は参考例1のものと同じなので、ここでは説明を省略する。
【0137】
図において、710,712は、それぞれプロセッサ状態フラグレジスタの下位8ビットのマスターとスレーブのレジスタである。図7で示したプロセッサ状態語(PSW)で既に説明したように、この下位8ビットにはF0からF7のフラグが保持されている。図1に示すVLIWマイクロプロセッサでは、これらF0からF7のフラグに対してフラグ操作命令が実行される。フラグ操作命令には、フラグ間のAND処理を行なうANDFGと、OR処理を行なうORFGと、排他的論理和処理を行なうXORFGと、フラグの反転を行なうNOTFG命令を実行することが可能である。
【0138】
711はレジスタ712にフラグの値を書き込むためのフラグ選択用のセレクタ(選択手段)、740はフラグ操作命令で生成したフラグ値以外のフラグ値をレジスタ712に書き込むためのバイパス経路(データ転送経路)、741、742は、後で述べるフラグ操作命令の実行結果をレジスタ712に書き込むためのバイパス経路(データ転送経路)であり図1に示したバイパス経路40、41に対応する。713はレジスタ712の値を取り込みW2期間中に出力するレジスタである。
【0139】
714、715、716、717は、8ビットあるレジスタ713の値の内1ビットを選択するための8−to−1のセレクタ(選択手段)、718、719、720、721は、それぞれセレクタ714、715、716、717の値を取り込みE1期間中に出力するレジスタである。
【0140】
722、723、724、725は、レジスタ718、719、720、721の値か、バイパス経路(データ転送経路)751、752、753の値を選択して出力するセレクタ(選択手段)、726、727、728、729は、セレクタ722、723、724、725の出力を取り込みE2期間中に出力するレジスタである。
【0141】
730、731は、前述したフラグ操作命令を実行する組合せ回路であり、組合せ回路730は、機能的にはメモリアクセスユニット3内に位置し、レジスタ726、727の2ビットの値からフラグ操作命令を実行する。組合せ回路731は、機能的には整数演算ユニット4内に位置し、レジスタ728、729の2ビットの値からフラグ操作命令を実行する。フラグ操作の組合せ回路730、731の出力は、それぞれバイパス経路741、742とセレクタ711を通過してレジスタ712に書き込まれる。
【0142】
732、733はそれぞれフラグ操作命令を実行する組合せ回路730、731の出力結果を取り込みW1期間中に出力するためのレジスタ、751、752、753はバイパス経路である。751は、フラグ操作命令で生成したフラグ値以外のフラグ値をバイパスするための経路である。752はメモリアクセスユニット3で実行されたフラグ操作命令の結果をバイパスするための経路である。753は整数演算ユニット4で実行されたフラグ操作命令をバイパスするための経路である。
【0143】
この参考例5では、フラグ操作命令の実行において異なる演算ユニットのパイプライン間で専用のクロスバイパス経路を設け、フラグの受け渡しを行うことで、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しながらフラグ操作副命令を効率良く実行するものである。
【0144】
次に動作について説明する。
図24は、VLIWマイクロプロセッサ1におけるパイプラインにおけるフラグ操作命令実行を示すタイミング図である。
【0145】
図24において、フラグ操作命令の実行では、まずD1でフラグ操作命令のデコードを行なう。そして、D2期間中に、プロセッサ状態フラグレジスタ710、712からフラグ操作命令実行ユニットの入力ラッチまでソースデータの読み出しを行なう。そして、E2期間中にフラグ操作命令を実行する。そしてこの演算結果をW1期間中にプロセッサ状態フラグレジスタ710、712内に書き込む。演算結果のクロスバイパス処理はW1期間中に行なわれる。このようなフラグ操作命令は、メモリアクセスユニット3および整数演算ユニット4の双方の演算ユニットで実行される。
【0146】
図25は、フラグ操作命令の結果のクロスバイパスの実行を示すタイミング図である。図中の白い部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は整数演算ユニット4で実行されているパイプラインである。
【0147】
806は、メモリアクセスユニット3で実行されたフラグ操作命令(andfg f0, f2, f3)のパイプラインである。807は、整数演算ユニット4で実行されたフラグ操作命令(andfg f1, f4, f5)のパイプラインである。フラグ操作命令は、図24のパイプライン図で説明したようなタイミングで各種処理が実行される。
【0148】
808は、フラグ操作命令からクロスバイパス経由でフラグ値をもらう、メモリアクセスユニット3で実行されるフラグ操作命令(orfg f6, f1, f5) のパイプラインである。809は、フラグ操作命令からクロスバイパス経由でフラグ値をもらう、整数演算ユニット4で実行されるフラグ操作命令(xorfg f7, f0, f3)のパイプラインである。
【0149】
パイプライン806のW1からパイプライン809のE1と、パイプライン807のW1からパイプライン808のE1へフラグ操作命令の結果がクロスバイパスされている。このように、フラグ操作命令のクロスバイパスでは、双方の演算ユニットで実行したフラグ操作命令の結果を他方のユニットにそれぞれ同時にバイパスできる。
【0150】
次に、フラグ操作命令間のクロスバイパス処理について図23を用いて説明する。図23でそのフラグ操作命令間のクロスバイパスを行なう経路は、経路752、753である。すなわちメモリアクセスユニット3で実行されたフラグ操作命令の実行結果を整数演算ユニット4にバイパスするバイパス経路が752である。
【0151】
また、整数演算ユニット4で実行されたフラグ操作命令の実行結果をメモリアクセスユニット3にバイパスする経路が753である。これは、図1のバイパス経路41に相当する。パイプライン806のEステージで実行されたフラグ操作命令の結果はレジスタ732内に保持される。そして、W1期間中にクロスバイパス経路752とセレクタ724、725を経由してレジスタ728あるいは729内に取り込まれる。この取り込まれるタイミングは、パイプライン809のEステージに相当する。
【0152】
また、パイプライン807のEステージで実行されたフラグ操作命令の結果はレジスタ733内に保持される。そして、W1期間中に経路753とセレクタ722、723を経由してレジスタ726あるいは727内に取り込まれる。この取り込まれるタイングは、パイプライン808のEステージに相当する。
【0153】
以上のように、この参考例5によれば、フラグ操作命令の実行において異なる演算ユニットのパイプライン間で専用のクロスバイパス経路を設け、フラグの受け渡しを行うことで、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【0154】
参考例6
参考例6のVLIWマイクロプロセッサは、メモリアクセスユニット3内のALU15および整数演算ユニット4内のALU19での演算結果のフラグ値のバイパス処理に関するものである。参考例6のVLIWマイクロプロセッサの構成は、参考例5のものと同様なのでここではその説明を省略する。
【0155】
次に動作について説明する。
参考例5で説明したフラグ操作命令間のバイパス処理と同様に、ALU15、19等で実行された演算結果のフラグ値をフラグ操作命令へバイパスする処理について説明する。
【0156】
ALU演算のフラグ値のクロスバイパス処理のタイミングは、参考例5の説明で用いた図24、図25のタイミング図と同様である。
【0157】
参考例6におけるALU演算結果のフラグ値のクロスバイパス処理を図10〜図13及び図23を用いて説明する。
【0158】
図10〜図13のブロック図で示されるように、メモリアクセスユニット3内のALU15でのフラグ操作命令の演算はE1,E2期間中に実行される。この演算により生成されたフラグは、バイパス経路(データ転送経路)62を経由して命令デコードユニット2へ出力される。また、同様に整数演算ユニット4内のALU19や飽和演算器213では、フラグ操作命令の演算がE1、E2期間中に実行される。この演算により生成されたフラグは、それぞれ経路63、64を経由して命令デコードユニット2へ出力される。
【0159】
図23に示したフラグ操作命令を実行する回路のブロック図では、ALU15、19から出力されたフラグ値をバイパス経路751およびセレクタ722〜725を経由してレジスタ726、727、728、729内に取り込む。その後の動作は、参考例5と同様である。
【0160】
以上のように、この参考例6によれば、各演算ユニット内のALUで実行されるフラグ副操作命令の実行結果を専用のクロスバイパス経路を設け、命令デコーダへのフラグの受け渡しを行うことで、パイプライン動作の停止といったペナルティ無しに、データの整合性を保証しつつ命令を効率良く実行することができる。
【0161】
実施の形態1
図26は、実施の形態1のVLIWマイクロプロセッサにおいてロードデータをクロスバイパスする詳細経路を示すブロック回路であり、図において、201は、ロードデータの符合拡張を行なう符合拡張部、200は、オペランドデータバスM2ODBUS と符合拡張部201を接続する経路、761、762、763は、符合拡張部201の出力の上位ワードと下位ワードのいずれかを選択するセレクタ(選択手段)である。これらのセレクタ761、762、763は、バイパス処理制御回路28から出力されるセレクタ制御信号により制御される。なお、実施の形態1のVLIWマイクロプロセッサのその他の構成は参考例1のものと同じなのでここでは説明を省略する。
【0162】
755、756、757は、セレクタ761、762、763の出力を、D1同期バス群に出力するための3ステートバッファ(選択手段)である。3ステートバッファ755、756、757はバイパス経路選択信号が有効である時に、バスD2S3BUS, D2S4BUS, D2S5IBUSにロードデータを出力する。図10〜図13に示すセレクタ503は、これらダブルワードデータをワードデータとして出力するためのセレクタに相当する。図10〜図13に示すセレクタ500、501、502、504もこれと同様な機能を有するセレクタである。
【0163】
図27は、図26に示すバイパス経路を制御する制御回路を示すブロック図であり、図において、771はソースレジスタ指定フィールドdirb[0:5] を保持するレジスタである。722はディスティネーションレジスタ指定フィールドemra[0:5] を保持するレジスタである。773はオペコードEMopc を保持するレジスタである。774はオペコードDIopc を保持するレジスタである。780は、レジスタ771のソースレジスタ指定フィールドとレジスタ772のディスティネーション指定フィールドを比較し、各レジスタ値が等しければ一致信号を出力する比較器(比較手段)である。781は、レジスタ771のソースレジスタ指定フィールドの上位5ビットとレジスタ772のデスティネーション指定フィールドの上位5ビットとを比較し、両者の値が等しければ一致信号を出力する比較器(比較手段)、775は、レジスタ773のオペコードをデコードし、メモリアクセスユニット3のEステージで実行されている命令が何であるかを特定する信号を生成するデコード回路である。
【0164】
776は、レジスタ774のオペコードをデコードし、整数演算ユニット4のDステージで実行されている命令が何であるかを特定する信号を生成するデコード回路、782は、比較器780からの一致信号と、デコード回路775、776からの命令特定信号と、レジスタ772の最下位ビットからバイパス経路選択信号を生成する組合せ回路である。
【0165】
783は、比較器781からの一致信号と、デコード回路775、776からの命令特定信号と、レジスタ771の最下位ビットからセレクタ制御信号を生成する組合せ回路である。
【0166】
図27に示す構成のバイパス制御回路28−3が、ダブルワードサイズのデータをワードサイズのバスに出力するクロスバイパス経路(データ転送経路)の動作を制御する。
【0167】
この実施の形態1では、異なるオペランドサイズ命令の実行の為のクロスバイパス経路を設けることで、ダブルワードデータ(64ビット)からワードデータ(32ビット)バスへのバイパス処理を行い、例えば、異なる演算ユニットで実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、両方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し異なるユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとクロスバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【0168】
次に動作について説明する。
以下では、ロード命令が実行される場合について説明する。
図28に異なるオペランドサイズ間の異なるパイプへのクロスバイパス処理のタイミングを示す。図中の白い部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分のパイプラインは整数演算ユニット4で実行されているパイプラインである。
【0169】
811は、メモリアクセスユニット3で実行されたダブルワードデータをロードする命令(ld2w r10, r2, r3)のパイプラインである。ロード命令の実行タイミングは図17に示すメモリアクセスユニット3のパイプラインの様に実行される。
【0170】
ロードされたダブルワードデータは、汎用レジスタ5内のレジスタR10、R11内に取り込まれる。812は、そのロード命令実行ユニットからクロスバイパス経由でロードデータをもらう、整数演算ユニット4で実行される加算命令(add r21, r11, r5)のパイプラインである。
【0171】
クロスバイパスのタイミング(図中の矢印)は、図18に示すロード命令のクロスバイパスの動作と同じタイミングである。すなわち、パイプライン811のM2からパイプライン812のD2へクロスバイパスがなされている。但し、バイパス処理で受渡しされているデータは、ロードしたダブルワードデータの下位ワードデータである。すなわちロード命令によりレジスタR11内に取り込まれるデータがクロスバイパスされて、加算命令のソースデータとして使用される。
【0172】
以上のように、この実施の形態1によれば、異なるオペランドサイズ間でのデータの受け渡しの為のクロスバイパス経路を設けることで、ダブルワードデータ(64ビット)からワードデータ(32ビット)バスへのバイパス処理を行い、例えば、上記説明したように、異なる演算ユニット間で実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、両方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し異なるユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとクロスバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【0173】
参考例7
図29は、参考例7によるVLIWマイクロプロセッサにおける複数のパイプラインへのバイパス処理を発生させる命令コード間のデータの干渉を示す説明図である。参考例7のVLIWマイクロプロセッサの構成は、参考例1および実施の形態1のものと同じなので、ここでは説明を省略する。
【0174】
ここで、複数のパイプラインへのバイパス処理とは自身のパイプラインと異なるパイプラインへのバイパス処理であることを示す。図において、600a、600b、600cはそれぞれメモリアクセスユニット3内のWステージ、E/Mステージ、Dステージで実行される命令コードを示す。
【0175】
601a、601b、601cはそれぞれ整数演算ユニット4で実行されるWステージ、E/Mステージ、Dステージの命令コードを示している。各命令コードの4つのフィールドは先頭からオペコードとディスティネーションレジスタ指定フィールドと、2つのソースレジスタ指定フィールドを示している。各フィールドに記載の記号の先頭の2文字は、それぞれのステージとそれぞれの演算ユニットでの実行を示している。すなわち、WMはWステージのメモリアクセスユニット3での実行であることを示している。
【0176】
この参考例7では、両方の演算ユニット、即ちメモリアクセスユニット3および整数演算ユニット4で実行される先行命令のデスティネーションレジスタ指定フィールドと、双方の演算ユニットで実行される後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【0177】
次に動作について説明する。
図29に示すように、Eステージのメモリアクセスユニット3で実行される命令コードのデスティネーションレジスタ指定フィールドemraと、2つのソースレジスタ指定フィールドdmrb, dirbが等しい為に、データ干渉が発生することを示している。また、Wステージの整数演算ユニット4で実行される命令コードのデスティネーションレジスタ指定フィールドwiraと、2つのソースレジスタ指定フィールドdmrc, dircが等しいために、データ干渉が発生することを示している。
【0178】
このようなデータ干渉を回避する為のバイパス処理をマルチバイパスと呼ぶ。マルチバイパス処理では、一つのデータを異なるバイパス経路(データ転送経路)で複数のパイプラインへバイパス処理する。
【0179】
以上のように、この参考例7によれば、メモリアクセスユニットおよび整数演算ユニットで実行される先行命令のデスティネーションレジスタ指定フィールドと、双方の演算ユニットで実行される後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【0180】
参考例8
図30は、この発明の参考例8によるVLIWマイクロプロセッサにおけるロードデータの複数のパイプラインへのクロスバイパス処理を示すタイミングを示す図であり、図において、白い部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は整数演算ユニット4で実行されているパイプラインである。参考例8のVLIWマイクロプロセッサの構成は、参考例1および2のものと同じものなのでここではその説明を省略する。
【0181】
820は、メモリアクセスユニット3で実行されたロード命令 (ldw r10, r2, r3)のパイプラインであり、ロード命令の実行を示すタイミングは図17に示すタイミングと同じである。821は、そのメモリアクセスユニット3からバイパス経由でロードデータをもらい、メモリアクセスユニット3で実行される加算命令(add r20, r10, r4)のパイプラインである。
【0182】
822は、同じくメモリアクセスユニット3からクロスバイパス経由でロードデータをもらう、整数演算ユニット4で実行される加算命令(add r21, r10, r5)のパイプラインである。図中の矢印で示すように、パイプライン820のM2からパイプライン821のD2とパイプライン822のD2へ同時に同じデータがバイパス処理される。そして、パイプライン821、822では、そのバイパスされたデータを用いて後続ステージの処理が実行される。
【0183】
この参考例8では、メモリアクセスユニット3で実行される先行のロード命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニット3および整数演算ユニット4の双方のユニットでその直後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路を経由してデータの受け渡しを実施し、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【0184】
次に動作について説明する。
図10〜図13に示すVLIWマイクロプロセッサの詳細な構成を示すブロック図を用いて、図30に示したロードデータの複数のパイプラインへのバイパス処理の説明を行なう。
【0185】
図10〜図13でそのロードデータのマルチバイパスを行なう経路は、符合拡張部330→バイパス経路(データ転送経路)225と、バイパス経路(データ転送経路)200→符合拡張部201→バイパス経路(データ転送経路)202である。
また、パイプライン820のロード命令処理では、Mステージでメモリアクセス処理を開始する。M1からデータメモリアクセス用のアドレスをアドレスバスM1OABUS に出力する。それに対して、データメモリはロードデータをM2期間中にバスM2ODBUSに出力する。ロードデータバスM2ODBUS上のデータは、経路200等を通って、符合拡張部201、330内に入力される。
【0186】
符合拡張部201、330の出力は、クロスバイパス経路202とバイパス経路225を通過して、それぞれメモリアクセスユニット3のD2同期バス群と整数演算ユニット4のD2同期バス群に出力される。この出力タイミングは、図30に示したパイプライン821、822のD2のタイミングに相当する。ゆえに、パイプライン820のM2からパイプライン821、822のD2へのマルチバイパス処理が実行されたことになる。
【0187】
以上のように、この参考例8によれば、メモリアクセスユニットで実行される先行のロード命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニットおよび整数演算ユニットの双方のユニットでその直後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路を経由してデータの受け渡しを実施し、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【0188】
参考例9
図31は、参考例9によるVLIWマイクロプロセッサにおける乗算結果のマルチバイパスの実行を示すタイミング図であり、この参考例9のVLIWマイクロプロセッサでは、複数のパイプラインへの乗算結果のマルチバイパス処理を行う。参考例9のVLIWマイクロプロセッサの構成は参考例1および3のものと同じなのでここではその説明を省略する。
【0189】
図31において、白い部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は整数演算ユニット4で実行されているパイプラインである。
【0190】
823は、整数演算ユニット4で実行された乗算副命令(mul2hr10, r2, r3)のパイプラインである。乗算副命令は、図19に示したパイプラインのタイミングで各種処理が実行される。824は、乗算副命令からクロスバイパス経由でデータを受け、メモリアクセスユニット3で実行される加算命令(add r20, r10, r4)のパイプラインである。
【0191】
825は、同じく乗算副命令からバイパス経由でデータを受け、整数演算ユニットで4実行される加算副命令(add r21, r10, r5)のパイプラインである。パイプライン823のW2からパイプライン824のD2へ乗算結果がクロスバイパスされている。
【0192】
また、パイプライン823のW1からパイプライン825のD1へ乗算結果がバイパスされている。このように、乗算結果のマルチバイパス処理の場合、異なるタイミングで同一データのバイパス処理が実行されている。また、乗算副命令の実行に時間が必要とされるので、たとえ最高速でバイパスした場合であっても、2命令後にしかマルチバイパスすることができない。
【0193】
この参考例9では、整数演算ユニット4で実行される先行する乗算副命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニット3および整数演算ユニット4の双方のユニットで2クロック後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【0194】
次に動作について説明する。
図10〜図13に示すこの発明のVLIWマイクロプロセッサの詳細な構成を示すブロック図で、図31に示す乗算結果のマルチバイパス処理の説明を行なう。図10〜図13において、この参考例9での乗算結果のクロスバイパスを行なう経路は、レジスタ55→マルチバイパス経路(データ転送経路)227と、マルチバイパス経路(データ転送経路)210→レジスタ211→マルチバイパス経路(データ転送経路)212である。
【0195】
パイプライン823のEステージで行なった乗算結果は、レジスタ57に保持される。レジスタ57の結果は、E2D3BUS, E2D4BUSを通してW1期間中にライトバックレジスタ56に取り込まれる。ライトバックレジスタ56の結果は、同じW1期間中にW1W3EBUS, W1W3OBUSバスに出力されると共に、マルチバイパス経路227を通過して整数演算ユニット4内のD1同期バス群に出力される。このD1同期バス群への出力タイミングは、図31のパイプライン825のD1のタイミングに相当する。
【0196】
また、W1W3EBUS, W1W3OBUSバスの値は、W2期間中に汎用レジスタ5内に書き込まれ場合と同じタイミングで、レジスタ211に取り込まれる。レジスタ211の値は、クロスバイパス経路212を通してメモリアクセスユニット3のD2同期バス群に出力される。この出力タイミングは、図31のパイプライン823のD2のタイミングに相当する。このようにパイプライン823のW1、W2からパイプライン824、825のD1、D2へそれぞれ異なるタイミングで、同じ乗算結果のマルチバイパス処理が実行される。
【0197】
以上のように、この参考例9によれば、整数演算ユニットで実行される先行する乗算命令のデスティネーションレジスタ指定フィールドと、メモリアクセスユニットおよび整数演算ユニットの双方のユニットで2クロック後に実行される命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、マルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【0198】
参考例10
図32は、参考例10によるVLIWマイクロプロセッサにおけるフラグ演算結果のマルチバイパス処理の実行を示すタイミング図であり、この参考例9のVLIWマイクロプロセッサでは、複数のパイプラインへのフラグ演算結果を、マルチバイパス経路(データ転送経路)を介してマルチバイパス処理を行う。なお、参考例10のVLIWマイクロプロセッサの構成は参考例1および5のものと同じなのでここではその説明を省略する。
【0199】
図32において、白い部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は整数演算ユニット4で実行されているパイプラインである。
【0200】
826は、メモリアクセスユニット3で実行されたフラグ操作命令(andfg f0, f1, f2)のパイプラインである。827は、メモリアクセスユニット3で実行されたフラグ操作命令(orfg f4, f0, f6) のパイプラインである。828は整数演算ユニット4で実行されたフラグ操作命令(orfg f5,f0, f7)のパイプラインである。
【0201】
この参考例10では、メモリアクセスユニット3および整数演算ユニット4の双方のユニットで実行される先行するフラグ操作副命令のデスティネーションフラグ指定フィールドと、双方のユニットでその直後に実行されるフラグ操作命令のソースフラグ指定フィールドが一致し、複数のユニット間でフラグ値の干渉が発生した場合、マルチバイパス経路によりフラグの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【0202】
次に動作について説明する。
この参考例10におけるVLIWマイクロプロセッサでのフラグ操作命令は、図24のパイプライン図で説明したものと同様なタイミングで各種処理が実行される。パイプライン827、828は、パイプライン826のフラグ操作命令からクロスバイパス経由でフラグ値をもらう。パイプライン826のW1から、パイプライン827のE1とパイプライン828のE1へフラグ操作命令の結果がマルチバイパス処理されている。
【0203】
次に、フラグ操作命令間のマルチバイパス処理について、図23に示すフラグ操作回路を示すブロック図を用いて説明する。
図23に示すフラグ操作回路において、フラグ操作命令間のマルチバイパスを行なうマルチバイパス経路は、マルチバイパス経路752及び753である。すなわち、メモリアクセスユニット3で実行されたフラグ操作命令の結果は、マルチバイパス経路752を経由して双方のユニットにマルチバイパスを行う。また、整数演算ユニット4で実行されたフラグ操作命令の実行結果は、マルチバイパス経路753を経由して双方のユニットへマルチバイパスされる。
【0204】
パイプライン826のEステージで実行されたフラグ操作命令の結果は、レジスタ733内に保持される。そして、W1期間中にマルチバイパス経路753とセレクタ722、724を経由してレジスタ722、724内に取り込まれる。この取り込まれるタイミングは、パイプライン827、828のEステージに相当する。
【0205】
以上のように、この参考例10によれば、メモリアクセスユニットおよび整数演算ユニットの双方のユニットで実行される先行するフラグ操作副命令のデスティネーションフラグ指定フィールドと、双方のユニットでその直後に実行されるフラグ操作副命令のソースフラグ指定フィールドが一致し、複数のユニット間でフラグ値の干渉が発生した場合、マルチバイパス経路によりフラグの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【0206】
実施の形態2
図33は、実施の形態2によるVLIWマイクロプロセッサにおける複数のパイプラインへの異なるオペランドサイズのバイパス処理を示すタイミング図であり、図において、白い部分はメモリアクセスユニット3で実行されているパイプライン、斜線部分は整数演算ユニット4で実行されているパイプライン、831は、メモリアクセスユニット3で実行されたダブルワードデータをロードする命令(ld2w r10, r2, r3)のパイプラインである。ロード命令の実行タイミングは図17に示すパイプラインと同様である。なお、実施の形態2のVLIWマイクロプロセッサの構成は参考例1のものと同じなのでここではその説明を省略する。
【0207】
この実施の形態2では、メモリアクセスユニット3および整数演算ユニット4の両方のユニットで実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、双方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとマルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうものである。
【0208】
次に動作について説明する。
ロードされたダブルワードデータは、汎用レジスタ5内のレジスタR10、R11内に取り込まれる。832は、メモリアクセスユニット3で実行される加算命令(add r20, r10, r4)のパイプラインである。この加算命令は、ロード命令のフェッチで得られたダブルワードデータの上位ワードをバイパス経路を経由して受け取る。
【0209】
833は、整数演算ユニット4で実行される加算命令(add r21, r11, r5)のパイプラインである。この加算命令は、ロード命令のフェッチで得られたダブルワードデータの下位ワードをバイパス経路を経由して受けとる。
【0210】
図中の矢印で示すように、パイプライン831のM2からパイプライン832、833のD2へ、ダブルワードデータの異なるワードデータがマルチバイパス処理されている。
【0211】
以上のように、この実施の形態2によれば、メモリアクセスユニットおよび整数演算ユニットの両方のユニットで実行されるダブルワードデータを扱う先行命令のデスティネーションレジスタ指定フィールドと、双方のユニットで実行されるワードデータを扱う後続命令のソースレジスタ指定フィールドが一致し、複数のユニット間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとマルチバイパス経路によりデータの受け渡しを行なうことにより、パイプライン停止というペナルティなしにデータの整合性を保証して命令実行を行なうことができる。
【0212】
【発明の効果】
請求項記載の発明によれば、2つの命令実行手段で実行されるダブルワードデータを扱う先行副命令のデスティネーションレジスタ指定フィールドと、両方の命令実行手段で実行されるワードデータを扱う後続の副命令のソースレジスタ指定フィールドが一致し、異なる命令実行手段間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択する選択手段とクロスバイパス経路を介してデータの受け渡しを行なうように構成したので、パイプライン停止というペナルティなしにデータの整合性を保ち命令を実行できる効果がある。
【0213】
請求項記載の発明によれば、両方の命令実行手段で実行されるダブルワードデータを扱う先行副命令のデスティネーションレジスタ指定フィールドと、双方の命令実行手段で実行されるワードデータを扱う後続の副命令のソースレジスタ指定フィールドが一致し、複数の命令実行手段間でデータ干渉が発生した場合、ダブルワードデータの上位と下位のワードデータを選択するセレクタとデータ転送経路によりデータの受け渡しを行なうように構成したので、パイプライン停止というペナルティなしにデータの整合性を保ち、命令を実行できる効果がある。
【図面の簡単な説明】
【図1】この発明におけるVLIWマイクロプロセッサの基本構成を示すブロック図である。
【図2】図1に示したこの発明におけるVLIWマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図3】図1に示したこの発明におけるVLIWマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図4】図1に示したこの発明におけるVLIWマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図5】図1に示したこの発明におけるVLIWマイクロプロセッサで用いられる命令フォーマットを示す説明図である。
【図6】図1に示したこの発明におけるVLIWマイクロプロセッサのレジスタの構成を示す説明図である。
【図7】図1に示したこの発明におけるVLIWマイクロプロセッサのレジスタの構成を示す説明図である。
【図8】図1に示したこの発明におけるVLIWマイクロプロセッサのパイプライン動作を示す説明図である。
【図9】図1に示したこの発明におけるVLIWマイクロプロセッサのパイプライン動作を示す説明図である。
【図10】図1に示したこの発明におけるVLIWマイクロプロセッサの実行ユニットを中心とした詳細な構成を示すブロック図であり、図10〜図13で一つのブロック図を示す。
【図11】図10の右側に連続した部分のブロック図である。
【図12】図11の右側に連続した部分のブロック図である。
【図13】図12の右側に連続した部分のブロック図である。
【図14】複数の実行ユニットで実行される命令コード間のデータ干渉を示す説明図である。
【図15】クロスバイパス経路を選択する制御信号を生成し出力する制御回路のブロック図である。
【図16】図1に示すデコーダ内に組み込まれ、また図15および図27に示す制御回路を含むバイパス処理制御回路の構成を示すブロック図である。
【図17】メモリアクセスユニットでのみ実行されるロード命令の実行タイミングを示すパイプラインの説明図である。
【図18】ロードデータのクロスバイパスのタイミングをパイプラインで示した説明図である。
【図19】整数演算ユニットでのみ実行される乗算副命令の実行タイミングのパイプラインを示した説明図である。
【図20】乗算副命令の実行結果をクロスバイパスするタイミングのパイプラインを示す説明図である。
【図21】双方の演算ユニットで実行されるALU命令の実行タイミングのパイプラインを示す説明図である。
【図22】ALU演算結果のクロスバイパスのタイミングのパイプラインを示す説明図である。
【図23】フラグ操作副命令をクロスバイパス処理を実行するための制御回路のブロック図である。
【図24】フラグ操作副命令の実行タイミングのパイプラインを示した説明図である。
【図25】フラグ操作副命令のクロスバイパスのタイミングのパイプラインを示す説明図である。
【図26】ロードデータをバイパスするバイパス経路の詳細な構成を示すブロック図である。
【図27】異なるオペランドサイズ間のバイパス処理を行うためのバイパス制御回路を示すブロック図である。
【図28】異なるオペランドサイズ間の異なるパイプラインへのバイパス処理を示すタイミング図である。
【図29】一つのパイプラインで実行される命令コードと複数のパイプラインで実行される命令コード間のデータ干渉を示す説明図である。
【図30】ロードデータのマルチバイパス処理を示すタイミング図である。
【図31】乗算結果のマルチバイパス処理を示すタイミング図である。
【図32】フラグ操作副命令の実行結果のマルチバイパス処理を示すタイミング図である。
【図33】異なるオペランドサイズ間の複数のパイプラインへのバイパス処理を示すタイミング図である。
【図34】従来のVLIWマイクロプロセッサの構成を示すブロック図である。
【図35】従来のVLIWマイクロプロセッサに内蔵される一つの実行ユニットの詳細な構成を示すブロック図である。
【図36】図35に示す実行ユニットで実行されるバイパス処理を示すタイミング図である。
【図37】図34に示す従来のVLIWマイクロプロセッサ内の異なる実行ユニットで実行される命令間で、データ干渉が発生した際のパイプライン処理を示す説明図である。
【符号の説明】
2 命令デコードユニット(命令デコード手段)、3 メモリアクセスユニット(命令実行手段)、4 整数演算ユニット(命令実行手段)、21,22,23,24,25,40,41,200,202,210,212,221,225,227,740,741,742,751,752,753 バイパス経路(データ転送経路)、28 バイパス処理制御回路(制御手段)、29,30,31,755,756,757 3ステートバッファ(選択手段)、500,501,502,503,504,711,714,715,716,717,722,723,724,725,761,762,763 セレクタ(選択手段)。

Claims (2)

  1. 単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記命令実行手段は2つの命令実行手段を備え、前記選択手段は3ステートバッファおよびセレクタから構成され、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、他のパイプラインで実行される前記副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、命令実行手段に接続されたソースバスへドライブさせることを特徴とするデータ処理装置。
  2. 単一の命令コード内に含まれる複数個の副命令を有する命令やデータを格納するメモリへ接続され前記命令をデコードする命令デコード手段と、前記命令デコード手段へ接続され前記命令デコード手段から出力されるデコード結果に従って前記命令の実行を制御するデータを格納する制御レジスタと複数個のレジスタおよび前記命令に基づく算術演算を行う演算回路を有する複数個の命令実行手段と、前記複数個の命令実行手段間に設けられ、異なるパイプライン間でデータの転送を行うデータ転送経路と、前記データ転送経路を経由して前記データの転送動作を制御する前記命令デコード手段内に組込まれた制御手段と、前記データ転送経路の一部に設けられ、前記制御手段からの制御信号に従って前記データ転送経路を介したデータ転送の可否を選択する選択手段とを備え、前記複数個のレジスタを経由することなく、前記複数個の命令実行手段間で直接にデータ転送を実行し、前記選択手段は3ステートバッファおよびセレクタからなり、前記制御手段は、先行副命令のデスティネーションレジスタ指定フィールドの値と、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドの値とを比較する比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、先行副命令のデスティネーションレジスタ指定フィールドと、複数のパイプラインで実行される副命令のソースレジスタ指定フィールドのオペランドサイズに対応した比較手段を有し、前記比較手段の比較結果に基づいて前記選択手段を制御し、データ転送経路および前記データ転送経路に接続され所定データを選択するセレクタを経由したデータを、複数の命令実行手段に接続されたソースバスへドライブさせることを特徴とするデータ処理装置。
JP01940197A 1997-01-31 1997-01-31 データ処理装置 Expired - Fee Related JP3578883B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP01940197A JP3578883B2 (ja) 1997-01-31 1997-01-31 データ処理装置
US08/857,461 US5941984A (en) 1997-01-31 1997-05-16 Data processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01940197A JP3578883B2 (ja) 1997-01-31 1997-01-31 データ処理装置

Publications (2)

Publication Number Publication Date
JPH10222368A JPH10222368A (ja) 1998-08-21
JP3578883B2 true JP3578883B2 (ja) 2004-10-20

Family

ID=11998255

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01940197A Expired - Fee Related JP3578883B2 (ja) 1997-01-31 1997-01-31 データ処理装置

Country Status (2)

Country Link
US (1) US5941984A (ja)
JP (1) JP3578883B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219779B1 (en) * 1997-06-16 2001-04-17 Matsushita Electric Industrial Co., Ltd. Constant reconstructing processor which supports reductions in code size
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
JP3881763B2 (ja) * 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US6237083B1 (en) 1998-02-13 2001-05-22 Advanced Micro Devices, Inc. Microprocessor including multiple register files mapped to the same logical storage and inhibiting sychronization between the register files responsive to inclusion of an instruction in an instruction sequence
WO2003056968A1 (en) * 2001-12-27 2003-07-17 Playtex Products, Inc. Bag system
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
US20040128572A1 (en) * 2002-12-31 2004-07-01 Nadav Bonen Apparatus and method for driving and routing source operands to execution units in layout stacks
US8074056B1 (en) * 2005-02-02 2011-12-06 Marvell International Ltd. Variable length pipeline processor architecture
US7774582B2 (en) * 2005-05-26 2010-08-10 Arm Limited Result bypassing to override a data hazard within a superscalar processor
WO2007069000A1 (en) * 2005-12-16 2007-06-21 Freescale Semiconductor, Inc. Device and method for processing instructions
US8443030B1 (en) * 2007-03-09 2013-05-14 Marvell International Ltd. Processing of floating point multiply-accumulate instructions using multiple operand pathways
US9678754B2 (en) * 2010-03-03 2017-06-13 Qualcomm Incorporated System and method of processing hierarchical very long instruction packets
US9081581B2 (en) * 2010-11-16 2015-07-14 Arm Limited Size mis-match hazard detection
WO2013080289A1 (ja) * 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
JP3745450B2 (ja) * 1996-05-13 2006-02-15 株式会社ルネサステクノロジ 並列処理プロセッサ

Also Published As

Publication number Publication date
US5941984A (en) 1999-08-24
JPH10222368A (ja) 1998-08-21

Similar Documents

Publication Publication Date Title
EP0789297B1 (en) Data processor loading data and performing multiply-add operation in parallel
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
US6016543A (en) Microprocessor for controlling the conditional execution of instructions
JP3745039B2 (ja) 遅延命令を有するマイクロプロセッサ
US7487338B2 (en) Data processor for modifying and executing operation of instruction code according to the indication of other instruction code
EP1102163A2 (en) Microprocessor with improved instruction set architecture
JP2000227858A (ja) プロセッサおよびその命令処理方法
KR100254007B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타프로세서
JP3578883B2 (ja) データ処理装置
JP2507638B2 (ja) デ―タ処理装置
JP3543181B2 (ja) データ処理装置
JPH03218523A (ja) データプロセッサ
JPH0766324B2 (ja) データ処理装置
JPH081602B2 (ja) データ処理装置
JP3789583B2 (ja) データ処理装置
US6055628A (en) Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
JPH05150979A (ja) 即値オペランド拡張方式
JPH07120284B2 (ja) データ処理装置
JPH09237184A (ja) 命令実行方法および命令実行装置
JP3841967B2 (ja) マイクロプロセッサ
JP3640855B2 (ja) プロセッサ
JP3568737B2 (ja) 条件実行命令を備えるマイクロプロセッサ
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JPH0997180A (ja) プログラマブルコントローラ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040323

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040513

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: 20040615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040714

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: 20070723

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20080723

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090723

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees